Public feed #530660

DUNE OWNT BY GANDER

public text v1 · immutable
Raw Edit
·published 2007-06-02 05:35 UTC
rendered paste body

Quote:

RuneEngine is a new source created from scratch & coded in a totally different manner.


Yet, you sent me it, and I see Mythscape Client.java in there

If I may please correct some more of your lies?


1. New protocol? Rofl.

2. 455 client? Lol

3. Oh my god..


To correct some of you, i'm going to show you some of the source files to runeEngine


Code:

/***************************************************************************
 *                            weightHandler.java
 *                            -------------------
 *   begin                : April 30, 2007
 *   copyright            : (C) RuneEngine
 *   email                : animeinabox@hotmail.com
 *
 *   $Id: weightHandler.java 1.0 $
 *   $Author: Anime $
 *   $Date: 2007/04/30 5:30 pm $
 *
 *
 ***************************************************************************/

/***************************************************************************
 *
 *   This program is free software; you can redistribute it and/or modify
 *   it under the terms of the GNU General Public License as published by
 *   the Free Software Foundation; either version 2 of the License, or
 *   (at your option) any later version.
 *
 ***************************************************************************/

import java.io.*;

public class weightHandler {
	
	public int weight[] = new int[7500];

	public weightHandler(int playerID) {
		playerId = playerId;
	}

	weightHandler() {
		for(int i = 0; i < 7500; i++){
		readWeight("weight.cfg", i);
		}
	}

	public boolean readWeight(String FileName, int itemID) {
		String line = "";
		String token = "";
		String token2 = "";
		String token2_2 = "";
		String[] token3 = new String[10];
		boolean EndOfFile = false;
		int ReadMode = 0;
		BufferedReader ss = null;                    
			File file = null;
			file = new File ("./data/"+FileName);
			if (!file.canRead()){
				newWeight(itemID,0);
			}
		try {
			ss = new BufferedReader(new FileReader("./data/"+FileName));
		} catch(FileNotFoundException fileex) {
			misc.println(FileName+": file not found.");
			return false;
		}
		try {
			line = ss.readLine();
		} catch(IOException ioexception) {
			misc.println(FileName+": error loading file.");
			return false;
		}
		while(EndOfFile == false && line != null) {
			line = line.trim();
			int spot = line.indexOf("=");
			if (spot > -1) {
				token = line.substring(0, spot);
				token = token.trim();
				token2 = line.substring(spot + 1);
				token2 = token2.trim();
				token2_2 = token2.replaceAll("\t\t", "\t");
				token2_2 = token2_2.replaceAll("\t\t", "\t");
				token2_2 = token2_2.replaceAll("\t\t", "\t");
				token2_2 = token2_2.replaceAll("\t\t", "\t");
				token2_2 = token2_2.replaceAll("\t\t", "\t");
				token3 = token2_2.split("\t");
		if(token.startsWith("Weight")){
			if(Integer.parseInt(token3[0]) == itemID){
				weight[itemID] = Integer.parseInt(token3[1]);
			}
		}
			} else {
				if (line.equals("[END OF "+FileName+"]")) {
					try { ss.close(); } catch(IOException ioexception) { }
					return true;
				}
			}
			try {
				line = ss.readLine();
			} catch(IOException ioexception1) { EndOfFile = true; }
		}
		try { ss.close(); } catch(IOException ioexception) { }
		return false;
	}
	
		public void newWeight(int itemID, int weight){
			try {
			BufferedWriter ss = null;
			ss = new BufferedWriter(new FileWriter("./data/weight.txt", false));
			ss.write("Weight =	"+itemID+"	"+weight, 0, 19);
			ss.close();
			} catch(IOException ioexception) {
			misc.println("Error");
		}
	}

private int playerId;

}lel


Code:

/***************************************************************************
 *                               client.java
 *                            -------------------
 *   begin                : April 27, 2007
 *   copyright            : (C) RuneEngine
 *   email                : animeinabox@hotmail.com
 *
 *   $Id: client.java 1.0 $
 *   $Author: Anime $
 *   $Date: 2007/04/27 12:17 Am $
 *
 *
 ***************************************************************************/

/***************************************************************************
 *
 *   This program is free software; you can redistribute it and/or modify
 *   it under the terms of the GNU General Public License as published by
 *   the Free Software Foundation; either version 2 of the License, or
 *   (at your option) any later version.
 *
 ***************************************************************************/

import java.io.*;

public class client extends player implements Runnable 
{
    public client(java.net.Socket _socket, int _playerId)
    {
        super(_playerId);
        socket = _socket;

        try 
        {
                in = _socket.getInputStream();
                out = _socket.getOutputStream();
        }
        catch(java.io.IOException ioe) 
        {
            System.out.println("Server exception in client()");
            ioe.printStackTrace(); 
        }

        outStream = new packetWriter(new byte[bufferSize]);
        outStream.currentOffset = 0;

        inStream = new packetReader(new byte[bufferSize]);
        inStream.currentOffset = 0;

        readPtr = writePtr = 0;
        buffer = buffer = new byte[bufferSize];
    }

    public void shutdown(String error)
    {
        System.out.println("error: "+error);
        destruct();
    }

    public void destruct()
    {
        if(socket == null) return;

        try 
        {
            disconnected = true;

            if(in != null) in.close();
            if(out != null) out.close();

            socket.close();
            socket = null;

            in = null;
            out = null;

            inStream = null;
            outStream = null;

            active = false;

            synchronized(this) 
            { 
                notify(); 
            }
            buffer = null;
        } 
        catch(java.io.IOException ioe) 
        {
            ioe.printStackTrace();
        }
        super.destruct();
    }

    public void flushOutStream()
    {
        if(disconnected || outStream.currentOffset == 0) return;

        synchronized(this) 
        {
            int maxWritePtr = (readPtr+bufferSize-2) % bufferSize;

            for(int i = 0; i < outStream.currentOffset; i++) 
            {
                buffer[writePtr] = outStream.buffer[i];
                writePtr = (writePtr+1) % bufferSize;
                if(writePtr == maxWritePtr) 
                {
                    shutdown("overflow");
                    outStream.currentOffset = 0;
                    disconnected = true;
                    return;
                }
                    }
            outStream.currentOffset = 0;
            notify();
        }
    }

    private void directFlushOutStream() throws java.io.IOException
    {
        out.write(outStream.buffer, 0, outStream.currentOffset);
        outStream.currentOffset = 0;
    }

    private void fillInStream(int forceRead) throws java.io.IOException
    {
        inStream.currentOffset = 0;
        in.read(inStream.buffer, 0, forceRead);
    }

    public void run() 
    {
        active = false;

        long serverSessionKey = 0, clientSessionKey = 0;
        serverSessionKey = ((long)(java.lang.Math.random() * 99999999D) << 32) + (long)(java.lang.Math.random() * 99999999D);

        try 
        {
            fillInStream(2);
            if(inStream.readUnsignedByte() != 14) 
            {
                disconnected = true;
                return;
            }
            
            int namePart = inStream.readUnsignedByte();
            for(int i = 0; i < 8; i++) out.write(i);

            out.write(0);

            outStream.writeQWord(serverSessionKey);

            directFlushOutStream();
            fillInStream(2);

            int loginType = inStream.readUnsignedByte();

            if(loginType != 16 && loginType != 18) 
            {
                return;
            }

            int loginPacketSize = inStream.readUnsignedByte();
            int loginEncryptPacketSize = loginPacketSize-(36+1+1+2);
            
            if(loginEncryptPacketSize <= 0) 
            {
                return;
            }

            fillInStream(loginPacketSize);

            if(inStream.readUnsignedByte() != 255 || inStream.readUnsignedWord() != 317) 
            {
                return;
            }

            lowMemoryVersion = inStream.readUnsignedByte();
            
            for(int i = 0; i < 9; i++) 
            {
                                 String itos = Integer.toHexString(inStream.readDWord());
            }

            loginEncryptPacketSize--;    
    
            int tmp = inStream.readUnsignedByte();
            if(loginEncryptPacketSize != tmp) 
            {
                shutdown("Encrypted packet data length ("+loginEncryptPacketSize+") different from length byte thereof ("+tmp+")");
                return;
            }

            tmp = inStream.readUnsignedByte();
            if(tmp != 10) 
            {
                shutdown("Encrypted packet Id was "+tmp+" but expected 10");
                return;
            }

            clientSessionKey = inStream.readQWord();
            serverSessionKey = inStream.readQWord();
            
            playerName = inStream.readString();
                        playerName.toLowerCase();
            if(playerName == null || playerName.length() == 0) 
                        disconnected = true;
            playerPass = inStream.readString();
            misc.println(playerName+" is signing onto server.");
             
            int sessionKey[] = new int[4];
            sessionKey[0] = (int)(clientSessionKey >> 32);
            sessionKey[1] = (int)clientSessionKey;
            sessionKey[2] = (int)(serverSessionKey >> 32);
            sessionKey[3] = (int)serverSessionKey;

            for(int i = 0; i < 4; i++)
                

            inStreamDecryption = new cryption(sessionKey);
            for(int i = 0; i < 4; i++) sessionKey[i] += 50;

            for(int i = 0; i < 4; i++)
                

            outStreamDecryption = new cryption(sessionKey);
            outStream.packetEncryption = outStreamDecryption;

            returnCode = 2;

            if (playerHandler.playerOn(playerName))
            {
                returnCode = 5;
                playerName = "_";
                disconnected = true;
                moveToX = 0;
                moveToY = 0;
            }

            if(playerId == -1) out.write(7);
            else out.write(returnCode);
            out.write(playerRights);
            out.write(0);

        } 
        catch(java.lang.Exception __ex) 
        {
            __ex.printStackTrace(); 
            destruct();
            return;
        }

        active = true;
        if(playerId == -1 || returnCode != 2) return;

        packetSize = 0;
        packetType = -1;

        readPtr = 0;
        writePtr = 0;

        int numBytesInBuffer, offset;

        while(!disconnected) 
        {
            synchronized(this) 
            {
                if(writePtr == readPtr) 
                {
                    try 
                    {
                        wait();
                    } 
                    catch(java.lang.InterruptedException _ex) { }
                }

                if(disconnected) return;

                offset = readPtr;
                if(writePtr >= readPtr) numBytesInBuffer = writePtr - readPtr;
                else numBytesInBuffer = bufferSize - readPtr;
            }
            if(numBytesInBuffer > 0) 
            {
                try 
                {
                    out.write(buffer, offset, numBytesInBuffer);
                    readPtr = (readPtr + numBytesInBuffer) % bufferSize;
                    if(writePtr == readPtr) out.flush();
                } 
                catch(java.lang.Exception __ex) 
                {
                    __ex.printStackTrace(); 
                    disconnected = true;
                }
            }
        }
    }

    public void setSidebarInterface(int menuId, int form)
    {
        outStream.createFrame(71);
        outStream.writeWord(form);
        outStream.writeByteA(menuId);
    }
    
    public void logout()
    {
        outStream.createFrame(109);
    }

    public void setConfiguration(int id, int state)
    {
        outStream.createFrame(36);
        outStream.writeWordBigEndian(id);
        outStream.writeByte(state);
    }

    public void initializeConfiguration()
    {
        setConfiguration(19,0);
        setConfiguration(25,0);
        setConfiguration(43,0);
        setConfiguration(44,0);
        setConfiguration(75,0);
        setConfiguration(83,0);
        setConfiguration(84,0);
        setConfiguration(85,0);
        setConfiguration(86,0);
        setConfiguration(87,0);
        setConfiguration(88,0);
        setConfiguration(89,0);
        setConfiguration(90,0);
        setConfiguration(91,0);
        setConfiguration(92,0);
        setConfiguration(93,0);
        setConfiguration(94,0);
        setConfiguration(95,0);
        setConfiguration(96,0);
        setConfiguration(97,0);
        setConfiguration(98,0);
        setConfiguration(99,0);
        setConfiguration(100,0);
        setConfiguration(101,0);
        setConfiguration(104,0);
        setConfiguration(106,0);
        setConfiguration(108,0);
        setConfiguration(115,0);
        setConfiguration(143,0);
        setConfiguration(153,0);
        setConfiguration(156,0);
        setConfiguration(157,0);
        setConfiguration(158,0);
        setConfiguration(166,0);
        setConfiguration(167,0);
        setConfiguration(168,0);
        setConfiguration(169,0);
        setConfiguration(170,0);
        setConfiguration(171,0);
        setConfiguration(172,0);
        setConfiguration(173,0);
        setConfiguration(174,0);
        setConfiguration(203,0);
        setConfiguration(210,0);
        setConfiguration(211,0);
        setConfiguration(261,0);
        setConfiguration(262,0);
        setConfiguration(263,0);
        setConfiguration(264,0);
        setConfiguration(265,0);
        setConfiguration(266,0);
        setConfiguration(268,0);
        setConfiguration(269,0);
        setConfiguration(270,0);
        setConfiguration(271,0);
        setConfiguration(280,0);
        setConfiguration(286,0);
        setConfiguration(287,0);
        setConfiguration(297,0);
        setConfiguration(298,0);
        setConfiguration(301,01);
        setConfiguration(304,01);
        setConfiguration(309,01);
        setConfiguration(311,01);
        setConfiguration(312,01);
        setConfiguration(313,01);
        setConfiguration(330,01);
        setConfiguration(331,01);
        setConfiguration(342,01);
        setConfiguration(343,01);
        setConfiguration(344,01);
        setConfiguration(345,01);
        setConfiguration(346,01);
        setConfiguration(353,01);
        setConfiguration(354,01);
        setConfiguration(355,01);
        setConfiguration(356,01);
        setConfiguration(361,01);
        setConfiguration(362,01);
        setConfiguration(363,01);
        setConfiguration(377,01);
        setConfiguration(378,01);
        setConfiguration(379,01);
        setConfiguration(380,01);
        setConfiguration(383,01);
        setConfiguration(388,01);
        setConfiguration(391,01);
        setConfiguration(393,01);
        setConfiguration(399,01);
        setConfiguration(400,01);
        setConfiguration(406,01);
        setConfiguration(408,01);
        setConfiguration(414,01);
        setConfiguration(417,01);
        setConfiguration(423,01);
        setConfiguration(425,01);
        setConfiguration(427,01);
        setConfiguration(433,01);
        setConfiguration(435,01);
        setConfiguration(436,01);
        setConfiguration(437,01);
        setConfiguration(439,01);
        setConfiguration(440,01);
        setConfiguration(441,01);
        setConfiguration(442,01);
        setConfiguration(443,01);
        setConfiguration(445,01);
        setConfiguration(446,01);
        setConfiguration(449,01);
        setConfiguration(452,01);
        setConfiguration(453,01);
        setConfiguration(455,01);
        setConfiguration(464,01);
        setConfiguration(465,01);
        setConfiguration(470,01);
        setConfiguration(482,01);
        setConfiguration(486,01);
        setConfiguration(491,01);
        setConfiguration(492,01);
        setConfiguration(493,01);
        setConfiguration(496,01);
        setConfiguration(497,01);
        setConfiguration(498,01);
        setConfiguration(499,01);
        setConfiguration(502,01);
        setConfiguration(503,01);
        setConfiguration(504,01);
        setConfiguration(505,01);
        setConfiguration(506,01);
        setConfiguration(507,01);
        setConfiguration(508,01);
        setConfiguration(509,01);
        setConfiguration(510,01);
        setConfiguration(511,01);
        setConfiguration(512,01);
        setConfiguration(515,01);
        setConfiguration(518,01);
        setConfiguration(520,01);
        setConfiguration(521,01);
        setConfiguration(524,01);
        setConfiguration(525,01);
        setConfiguration(531,01);
    }

    public void initialize()
    {
        outStream.createFrame(249);
        outStream.writeByteA(0);
        outStream.writeWordBigEndianA(playerId);
        outStream.createFrame(107);

        initializeConfiguration();

        setSidebarInterface(1, 3917);
        setSidebarInterface(2, 638);
        setSidebarInterface(3, 3213);
        setSidebarInterface(4, 1644);
        setSidebarInterface(5, 5608);
        setSidebarInterface(6, 1151);
        setSidebarInterface(7, 1);
        setSidebarInterface(8, 5065);
        setSidebarInterface(9, 5715);
        setSidebarInterface(10, 2449);
        setSidebarInterface(11, 4445);
        setSidebarInterface(12, 147);
        setSidebarInterface(13, 6299);
        setSidebarInterface(0, 2423);

        /*outStream.createFrameVarSize(104);
        outStream.writeByteC(3);        // command slot (does it matter which one?)
        outStream.writeByteA(0);        // 0 or 1; 0 if command should be placed on top in context menu
        outStream.writeString("Trade with");
        outStream.endFrameVarSize();*/

        handler.updatePlayer(this, outStream);

        flushOutStream();
    }

    public void update()
    {
        handler.updatePlayer(this, outStream);

        flushOutStream();
    }

    public static final int packetSizes[] = {
        0, 0, 0, 1, -1, 0, 0, 0, 0, 0, //0
        0, 0, 0, 0, 8, 0, 6, 2, 2, 0,  //10
        0, 2, 0, 6, 0, 12, 0, 0, 0, 0, //20
        0, 0, 0, 0, 0, 8, 4, 0, 0, 2,  //30
        2, 6, 0, 6, 0, -1, 0, 0, 0, 0, //40
        0, 0, 0, 12, 0, 0, 0, 0, 8, 0, //50
        0, 8, 0, 0, 0, 0, 0, 0, 0, 0,  //60
        6, 0, 2, 2, 8, 6, 0, -1, 0, 6, //70
        0, 0, 0, 0, 0, 1, 4, 6, 0, 0,  //80
        0, 0, 0, 0, 0, 3, 0, 0, -1, 0, //90
        0, 13, 0, -1, 0, 0, 0, 0, 0, 0,//100
        0, 0, 0, 0, 0, 0, 0, 6, 0, 0,  //110
        1, 0, 6, 0, 0, 0, -1, 0, 2, 6, //120
        0, 4, 6, 8, 0, 6, 0, 0, 0, 2,  //130
        0, 0, 0, 0, 0, 6, 0, 0, 0, 0,  //140
        0, 0, 1, 2, 0, 2, 6, 0, 0, 0,  //150
        0, 0, 0, 0, -1, -1, 0, 0, 0, 0,//160
        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,  //170
        0, 8, 0, 3, 0, 2, 0, 0, 8, 1,  //180
        0, 0, 12, 0, 0, 0, 0, 0, 0, 0, //190
        2, 0, 0, 0, 0, 0, 0, 0, 4, 0,  //200
        4, 0, 0, 0, 7, 8, 0, 0, 10, 0, //210
        0, 0, 0, 0, 0, 0, -1, 0, 6, 0, //220
        1, 0, 0, 0, 6, 0, 6, 8, 1, 0,  //230
        0, 4, 0, 0, 0, 0, -1, 0, -1, 4,//240
        0, 0, 6, 6, 0, 0, 0            //250
    };

    public int packetSize = 0, packetType = -1;

    public boolean process()
    {
        if (actionAmount < 0)
        {
            actionAmount = 0;
        }
        if (actionTimer > 0)
        {
            actionTimer-=1;
        }
        if (actionAmount > 4)
        {
            // spam clicking
        }
        
        if(disconnected) return false;
        try {
            if(timeOutCounter++ > 20) {
                misc.println("Client lost connection: timeout");
                disconnected = true;
                return false;
            }
            if(in == null) return false;

            int avail = in.available();
            if(avail == 0) return false;

            if(packetType == -1) {
                packetType = in.read() & 0xff;
                if(inStreamDecryption != null)
                    packetType = packetType - inStreamDecryption.getNextKey() & 0xff;
                packetSize = packetSizes[packetType];
                avail--;
            }
            if(packetSize == -1) {
                if(avail > 0) {
                    // this is a variable size packet, the next byte containing the length of said
                    packetSize = in.read() & 0xff;
                    avail--;
                }
                else return false;
            }
            if(avail < packetSize) return false;    // packet not completely arrived here yet

            fillInStream(packetSize);
            timeOutCounter = 0;            // reset

            parseIncomingPackets();        // method that does actually interprete these packets

            packetType = -1;
        } catch(java.lang.Exception __ex) {
            misc.println("Server: Exception!");
            __ex.printStackTrace(); 
            disconnected = true;
        }
        return true;
    }


    public void parseIncomingPackets()
    {
        int i;
        switch(packetType) {
            case 0: break;

            case 202:
                break;

            case 121:
                break;

            // walkTo commands
            case 248:    // map walk (has additional 14 bytes added to the end with some junk data)
                packetSize -= 14;        // ignore the junk
            case 164:    // regular walk
            case 98:    // walk on command
                newWalkCmdSteps = packetSize - 5;
                if(newWalkCmdSteps % 2 != 0)
                    println_debug("Warning: walkTo("+packetType+") command malformed: "+misc.Hex(inStream.buffer, 0, packetSize));
                newWalkCmdSteps /= 2;
                if(++newWalkCmdSteps > walkingQueueSize) {
                    println_debug("Warning: walkTo("+packetType+") command contains too many steps ("+newWalkCmdSteps+").");
                    newWalkCmdSteps = 0;
                    break;
                }
                int firstStepX = inStream.readSignedWordBigEndianA()-mapRegionX*8;
                for(i = 1; i < newWalkCmdSteps; i++) {
                    newWalkCmdX[i] = inStream.readSignedByte();
                    newWalkCmdY[i] = inStream.readSignedByte();
                }
                newWalkCmdX[0] = newWalkCmdY[0] = 0;
                int firstStepY = inStream.readSignedWordBigEndian()-mapRegionY*8;
                newWalkCmdIsRunning = inStream.readSignedByteC() == 1;
                for(i = 0; i < newWalkCmdSteps; i++) {
                    newWalkCmdX[i] += firstStepX;
                    newWalkCmdY[i] += firstStepY;
                }
poimiY = firstStepY;
poimiX = firstStepX;
                break;

            case 4:            // regular chat
                chatTextEffects = inStream.readUnsignedByteS();
                chatTextColor = inStream.readUnsignedByteS();
                chatTextSize = (byte)(packetSize-2);
                inStream.readBytes_reverseA(chatText, chatTextSize, 0);
                chatTextUpdateRequired = true;
                println_debug("Text ["+chatTextEffects+","+chatTextColor+"]: "+misc.textUnpack(chatText, packetSize-2));
                break;


            case 3:            // focus change
                break;
            case 86:        // camera angle
                break;
            case 241:        // mouse clicks
                
                break;

                        case 185:               //clicking most buttons
                          int actionButtonId = misc.HexToInt(inStream.buffer, 0, packetSize);
                          switch(actionButtonId) {
                }

                            //Log out
                            case 9154:
                                logout();
                break;

            default:
                System.out.println("Unhandled packet ["+packetType+", size="+packetSize+"]: "+misc.Hex(inStream.buffer, 0, packetSize));
                break;
        }
    }

    public static final int bufferSize = 5000;
    private java.net.Socket socket;
    private java.io.InputStream in;
    private java.io.OutputStream out;
    public byte buffer[] = null;
    public int readPtr, writePtr;
    public packetReader inStream = null;
    public packetWriter outStream = null;
    public cryption inStreamDecryption = null, outStreamDecryption = null;
    public int lowMemoryVersion = 0;
    public int timeOutCounter = 0;
    public int returnCode = 2;

    private int bankXremoveSlot = 0;
    private int bankXinterfaceID = 0;
    private int bankXremoveID = 0;
    public int somejunk;
}

L33L

Leeched again.


I'll not show any more cause His Bw/Br being released may cause offense to him. Lel.