Code:
public void run() {
long serverSessionKey = 0, clientSessionKey = 0;
serverSessionKey = ((long)(Math.random() * 99999999D) << 32) + (long)(Math.random() * 99999999D);
fillInStream(2);
int supportedType = inStream.readUnsignedByte();
if (supportedType != 14) {
disconnected = true;
return;
}
int nameOffset = inStream.readUnsignedByte();
for (int i = 0; i < 9; i++) {
outStream.writeByte(0);
}
outStream.writeQWord(serverSessionKey);
directFlushOutStream();
fillInStream(2);
int connectionType = inStream.readUnsignedByte();
if (connectionType != 16 && connectionType != 18) {
disconnected = true;
returnCode = 6;
}
int packetSize = inStream.readUnsignedByte();
fillInStream(packetSize);
int byte255 = inStream.readUnsignedByte();
if (byte255 != 4) {
System.out.println("Wrong 255 byte: " + byte255);
//Unsupported client.
returnCode = 22;
}
int clientVersion = inStream.readUnsignedWord();
if (clientVersion != 317) {
System.out.println("Wrong client version: " + clientVersion);
//Bad client version, only 317 supported.
disconnected = true;
returnCode = 6;
}
int memoryType = inStream.readUnsignedByte();
if (memoryType != 0 && memoryType != 1) {
disconnected = true;
returnCode = 6;
}
int[] crcs = new int[9];
for (int i = 0; i < 9; i++) {
crcs[i] = inStream.readDWord();
}
int int1 = inStream.readUnsignedByte();
int int2 = inStream.readUnsignedByte();
clientSessionKey = inStream.readQWord();
serverSessionKey = inStream.readQWord();
int uid = inStream.readDWord();
String name = inStream.readString().toLowerCase().trim();
if (name.length() == 0) {
disconnected = true;
returnCode = 6;
}
for (int i = 0; i < name.length(); i++) {
Character c = new Character(name.charAt(i));
if (!Character.isLetterOrDigit(c) && !Character.isSpaceChar(c)) {
//Name contains characters that could crash server or are unsupported.
disconnected = true;
returnCode = 6;
}
}
if (returnCode == 2 && Server.s.playerHandler.isPlayerOn(name)) {
returnCode = 5;
}
playerName = name;
if (returnCode == 2 && Server.s.playerHandler.bannedHost(PlayerIp)) {
returnCode = 4;
}
playerName = name;
if (returnCode == 2 && Server.s.playerHandler.bannedPlayer(playerName)) {
returnCode = 4;
}
playerPass = inStream.readString();
if (playerPass == null) {
disconnected = true;
returnCode = 6;
}
for (int i = 0; i < playerPass.length(); i++) {
Character c = new Character(playerPass.charAt(i));
if (!Character.isLetterOrDigit(c) && !Character.isSpaceChar(c)) {
//Password contains characters that could crash server or are unsupported.
disconnected = true;
returnCode = 6;
}
}
int lG = loadGame();
if (returnCode == 2 && lG == 1) {
returnCode = 3;
}
outStream.writeByte(returnCode);
outStream.writeByte(playerRights);
outStream.writeByte(0);
directFlushOutStream();
if (returnCode != 2) {
disconnected = true;
isActive = true;
return;
}
loadMoreInfo();
savefile = true;
int sessionKey[] = new int[4];
sessionKey[0] = (int)(clientSessionKey >> 32);
sessionKey[1] = (int)clientSessionKey;
sessionKey[2] = (int)(serverSessionKey >> 32);
sessionKey[3] = (int)serverSessionKey;
inStreamDecryption = new Cryption(sessionKey);
for (int i = 0; i < 4; i++) {
sessionKey[i] += 50;
}
outStreamDecryption = new Cryption(sessionKey);
outStream.packetEncryption = outStreamDecryption;
System.out.println(playerName + " Has Logged In");
appendConnected();
appendPassword();
loggedinpm();
if (lG == 0) {
addItem(995, 15000);
addItem(1323, 1);
addItem(1191, 1);
addItem(841, 1);
addItem(882, 100);
addItem(558, 100);
addItem(562, 100);
addItem(1381, 1);
addItem(2552, 1);
addItem(1265, 1);
addItem(6950, 1);
sendMessage("Search this message in client.java to edit starter.");
canSetRecov = true;
} else {
sendMessage("Welcome back " + playerName + ", to Cleaned BS.");
if (playerRights > 0 && playerRights != 4) {
sendMessage("View mod commands with ::controls");
}
}
sendMessage("Welcome to the restored Cleaned BS.");
sendMessage("Use ::help for getting started!");
if (vengenceDelay < -60) {
vengenceDelay = -60;
}
if (skullTimer < 0) {
skullTimer = 0;
}
directFlushOutStream();
resetItems(3214);
resetBank();
SetSidebar(0, 2423);
SetSidebar(1, 3917);
SetSidebar(2, 638);
SetSidebar(3, 3213);
SetSidebar(4, 1644);
SetSidebar(5, 5608);
if (spellSet == 1) {
SetSidebar(6, 12855);
} else if (spellSet == 2) {
SetSidebar(6, 18787);
} else {
SetSidebar(6, 1151);
}
SetSidebar(7, 18852);
SetSidebar(8, 5065);
SetSidebar(9, 5715);
SetSidebar(10, 2449);
SetSidebar(11, 904);
SetSidebar(12, 147);
SetSidebar(13, 962);
for (int i = 0; i < 21; i++) {
setSkillLevel(i);
}
directFlushOutStream();
setAtkType();
getBonus();
setEquipment(playerEquipment[playerHat], 1, playerHat);
setEquipment(playerEquipment[playerCape], 1, playerCape);
setEquipment(playerEquipment[playerAmulet], 1, playerAmulet);
setEquipment(playerEquipment[playerArrows], playerEquipmentN[playerArrows], playerArrows);
setEquipment(playerEquipment[playerChest], 1, playerChest);
setEquipment(playerEquipment[playerShield], 1, playerShield);
setEquipment(playerEquipment[playerLegs], 1, playerLegs);
setEquipment(playerEquipment[playerHands], 1, playerHands);
setEquipment(playerEquipment[playerFeet], 1, playerFeet);
setEquipment(playerEquipment[playerRing], 1, playerRing);
setEquipment(playerEquipment[playerWeapon], 1, playerWeapon);
SendWeapon((playerEquipment[playerWeapon]), getItemName(playerEquipment[playerWeapon]));
directFlushOutStream();
int coordCount = 0;
try {
if (Server.s.pc.pcGameArea(absX, absY)) {
changeCoords(2657, 2639, 0);
updateHp(getLevelForXP(playerXP[3]), true);
resetAllPrayers();
for (int i = 0; i < 21; i++)
playerLevel[i] = getLevelForXP(playerXP[i]);
for (int i = 0; i < 21; i++)
setSkillLevel(i);
specialAmount = 100;
skullTimer = -1;
SetPkHeadIcon(0);
}
} catch (Exception e) {
}
playerSE = GetStandEmote(playerEquipment[playerWeapon], getItemName(playerEquipment[playerWeapon]));
playerSER = GetRunEmote(playerEquipment[playerWeapon], getItemName(playerEquipment[playerWeapon]));
playerSEW = GetWalkEmote(playerEquipment[playerWeapon], getItemName(playerEquipment[playerWeapon]));
if (outStream == null) { disconnected = true; return; }
outStream.createFrame(68);
TotalLvl = (getLevelForXP(playerXP[0]) + getLevelForXP(playerXP[1]) + getLevelForXP(playerXP[2]) + getLevelForXP(playerXP[3]) + getLevelForXP(playerXP[4]) + getLevelForXP(playerXP[5]) + getLevelForXP(playerXP[6]) + getLevelForXP(playerXP[7]) + getLevelForXP(playerXP[8]) + getLevelForXP(playerXP[9]) + getLevelForXP(playerXP[10]) + getLevelForXP(playerXP[0]) + getLevelForXP(playerXP[11]) + getLevelForXP(playerXP[12]) + getLevelForXP(playerXP[13]) + getLevelForXP(playerXP[14]) + getLevelForXP(playerXP[15]) + getLevelForXP(playerXP[6]) + getLevelForXP(playerXP[17]) + getLevelForXP(playerXP[18]) + getLevelForXP(playerXP[19]) + getLevelForXP(playerXP[20]));
directFlushOutStream();
if (WildArea()) {
ShowOption(1, "Attack");
} else {
ShowOption(1, "Challenge");
}
ShowOption(2, "Trade With");
ShowOption(3, "Follow");
LoadChangedText();
directFlushOutStream();
loadQuestTab();
NewHp = playerLevel[3];
playerLevel[3] = NewHp;
if (skullTimer > 1) {
SetPkHeadIcon(1);
}
if (NewHp <= 0 || playerLevel[playerHitpoints] <= 0) {
IsDead = true;
deathDelay = 6;
}
checkEquipmentLevel();
follow(0, 3, 1);
needsUpdate = true;
updateRequired = true;
appearanceUpdateRequired = true;
isActive = true;
flushOutStream();
while (!disconnected && runStream) {
if (readyBuffer != null) {
try {
out.write(readyBuffer, 0, readyBuffer.length);
out.flush();
} catch (Exception e) {
runStream = false;
if (!inCombat && combatDelay <= 0 && deathDelay <= 0)
disconnected = true;
}
readyBuffer = null;
}
try {
synchronized (this) {
wait();
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
(probably in the beginning) to work with a basic 317 deob?