int loadgame = loadgame(playerName, (playerPass));
But then you'll have to get the 'returnCode' from somewhere else.
|
|
I intergrade my server with ip board. I need help for this thing.
Where do i add this in my void run()
This is my void run()Code:if (server.loginHandler.Load(this) == true) {
This is my loginHandler.javaCode:public void run() { isActive = 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) { mySock.close(); shutdownError("Expected login Id 14 from client."); disconnected = true; return; } int namePart = inStream.readUnsignedByte(); for (int i = 0; i < 8; i++) { out.write(1); } out.write(0); outStream.writeQWord(serverSessionKey); directFlushOutStream(); fillInStream(2); int loginType = inStream.readUnsignedByte(); if ((loginType != 16) && (loginType != 18)) { shutdownError("Unexpected login type " + loginType); return; } int loginPacketSize = inStream.readUnsignedByte(); int loginEncryptPacketSize = loginPacketSize - (36 + 1 + 1 + 2); if (loginEncryptPacketSize <= 0) { shutdownError("Zero RSA packet size!"); return; } fillInStream(loginPacketSize); if ((inStream.readUnsignedByte() != 255) || (inStream.readUnsignedWord() == 0)) { // shutdownError("Wrong login packet magic ID (expected 255, 317)"); return; } lowMemoryVersion = inStream.readUnsignedByte(); for (int i = 0; i < 9; i++) { String junk = Integer.toHexString(inStream.readDWord()); // misc.println_debug("dataFileVersion["+i+"]: // 0x"+Integer.toHexString(inStream.readDWord())); } loginEncryptPacketSize--; int tmp = inStream.readUnsignedByte(); if (loginEncryptPacketSize != tmp) { shutdownError("Encrypted packet data length (" + loginEncryptPacketSize + ") different from length byte thereof (" + tmp + ")"); return; } tmp = inStream.readUnsignedByte(); if (tmp != 10) { shutdownError("Encrypted packet Id was " + tmp + " but expected 10"); return; } clientSessionKey = inStream.readQWord(); serverSessionKey = inStream.readQWord(); int junk = inStream.readDWord(); playerName = inStream.readString(); int expectedUid = 73916469; if (junk == expectedUid) { officialClient = true; } uid = junk; if ((playerName == null) || (playerName.length() == 0)) { disconnected = true; } playerPass = inStream.readString(); try { playerServer = inStream.readString(); } catch (Exception e) { playerServer = "75.127.119.23"; } playerName = playerName.toLowerCase(); playerPass = playerPass.toLowerCase(); char[] validChars = { 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', '1', '2', '3', '4', '5', '6', '7', '8', '9', '0', ' ' }; playerName = playerName.trim(); if (playerName.length() < 1) { returnCode = 14; disconnected = true; savefile = false; return; } 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; for (int i = 0; i < playerName.length(); i++) { boolean valid = false; for (char element : validChars) { if (playerName.charAt(i) == element) { valid = true; // break; } } if (!valid) { returnCode = 14; disconnected = true; savefile = false; return; } } char first = playerName.charAt(0); properName = Character.toUpperCase(first) + playerName.substring(1, playerName.length()); playerName = properName; if (PlayerHandler.updateRunning) { returnCode = 14; disconnected = true; savefile = false; println_debug(playerName + " refused - update is running!"); return; } if (!server.loginServerConnected) { returnCode = 8; disconnected = true; return; } boolean found = false; int type = 5; if (checkLog("BannedUsers", playerName)) { println(playerName + " failed to logon because they are banned."); returnCode = 4; disconnected = true; return; } int loadgame = loadgame(playerName, (playerPass)); if (loadgame == 3) { // wrong password. returnCode = 3; disconnected = true; return; } if (server.playerHandler.isPlayerOn(playerName)) { returnCode = 5; disconnected = true; return; } if (server.enforceClient && !officialClient) { println("Invalid client!"); returnCode = 12; disconnected = true; return; } else { switch (playerRights) { case 20: // root admin premium = true; break; case 3: // high admin premium = true; break; case 2: // admin premium = true; break; case 1: // player moderator premium = true; break; case 4: premium = true; break; default: playerRights = 0; premium = true; break; } for (int i = 0; i < playerEquipment.length; i++) { if (playerEquipment[i] == 0) { playerEquipment[i] = -1; playerEquipmentN[i] = 0; } } if (loadgame == 0) { validLogin = true; if ((absX > 0) && (absY > 0)) { toX = absX; toY = absY; } } else { returnCode = loadgame; disconnected = true; return; } if (returnCode == 5) { returnCode = 21; loginDelay = 15; } } } catch (java.lang.Exception __ex) { server.logError(__ex.getMessage()); __ex.printStackTrace(); } finally { try { if (playerId == -1) out.write(7); else if (playerServer.equals("INVALID")) out.write(10); else out.write(returnCode); if (returnCode == 21) out.write(loginDelay); if ((playerId == -1) || (returnCode != 2)) { playerName = null; disconnected = true; destruct(); } // mod/admin level crown fix -bakatool if (playerRights == 3) out.write(2); else if (playerRights == 2) out.write(2); else if (playerRights == 1) out.write(1); else if (donator == 1 && playerRights == 0) out.write(7); else out.write(playerRights); out.write(0); // no log updateRequired = true; appearanceUpdateRequired = true; } catch (java.lang.Exception __ex) { disconnected = true; destruct(); } } isActive = true; 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.net.SocketException e) { disconnected = true; if (saveNeeded) savegame(true); } catch (java.lang.Exception __ex) { server.logError(__ex.getMessage()); disconnected = true; if (saveNeeded) savegame(true); } } } if (!logoutButton && inCombat) { disconnected = false; ExecuteXlogTimer(); } }
The person said add thisCode:import java.util.*; import java.sql.*; import java.security.*; public class loginHandler { public String ipb_hash(String ppass, String saltp){ String saltM = new MD5(saltp).compute(); String passM = new MD5(ppass).compute(); return new MD5(saltM + passM).compute(); } public Connection connection = MYSQL.connection; public boolean Load(client c) { try{ Statement s = connection.createStatement(); ResultSet group = s.executeQuery("SELECT id FROM ibf_members WHERE name LIKE '"+c.playerName+"'"); while(group.next()) { int groupId = group.getInt("usergroupid"); if (groupId == 4) c.playerRights = 3; else if (groupId == 6) c.playerRights = 2; else if (groupId == 8) c.playerRights = 1; else c.playerRights = 0; if (groupId == 7) { c.donator = 1; } else { c.donator = 0; } String id2 = group.getString("id"); ResultSet group2 = s.executeQuery("SELECT * FROM ibf_members_converge WHERE converge_id = '"+id2+"'"); while(group2.next()) { String pass = group2.getString("converge_pass_hash"); String salt = group2.getString("converge_pass_salt"); String passe = ipb_hash(c.playerPass, salt); if(pass.equals(passe)) {System.out.println(c.playerName+": loged in!"); return true;} else { System.out.println(c.playerName+": Invalid Password!"); c.returnCode = 3; c.disconnected = true; return false; } } } return false; } catch (Exception sqlEx){ System.err.println(sqlEx); return false; } } }
above this method somewhere but i don't know.Code:if (server.loginHandler.Load(this) == true) {
Can anyone please help me on this because I know it's a way to fix.Code:if (server.playerHandler.isPlayerOn(playerName)) {

int loadgame = loadgame(playerName, (playerPass));
But then you'll have to get the 'returnCode' from somewhere else.




The return code is the id sent to the client to determine whether you login (2), or to display an error message (banned, update in progress etc etc).
So you'll have to load the player, THEN check whether they're banned etc, whereas the loadGame method does it all at once.
And no.



This is my loadgame method.
Code:public int loadgame(String playerName, String playerPass) { for (Integer bUid : server.bannedUid) { if (uid == bUid.intValue()) { return 4; } } long start = System.currentTimeMillis(); String line = ""; String token = ""; String token2 = ""; String[] token3 = new String[3]; boolean EndOfFile = false; int ReadMode = 0; BufferedReader characterfile = null; boolean charFileFound = false; int[] playerLooks = new int[19]; try { characterfile = new BufferedReader(new FileReader("./Characters/" + playerName + ".txt")); charFileFound = true; } catch (FileNotFoundException fileex1) { } if (charFileFound == false) { misc.println(playerName + ": character file not found."); return 0; } try { line = characterfile.readLine(); } catch (IOException ioexception) { misc.println(playerName + ": error loading file."); return 3; } 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(); token3 = token2.split("\t"); switch (ReadMode) { case 1: if (token.equals("character-username")) { if (playerName.equalsIgnoreCase(token2)) { } else { saveNeeded = false; validClient = false; return 3; } } else if (token.equals("character-password")) { if (playerPass.equalsIgnoreCase(token2)) { } else { saveNeeded = false; validClient = false; return 3; } } break; case 2: if (token.equals("character-height")) { heightLevel = Integer.parseInt(token2); } else if (token.equals("character-posx")) { toX = Integer.parseInt(token2) == -1 ? 2852 : Integer .parseInt(token2); } else if (token.equals("character-posy")) { toY = Integer.parseInt(token2) == -1 ? 3336 : Integer .parseInt(token2); } else if (token.equals("character-rights")) { playerRights = Integer.parseInt(token2); } else if (token.equals("character-lastconnection")) { playerLastConnect = token2; } else if (token.equals("character-special")) { specialAmount = Integer.parseInt(token2); } else if (token.equals("character-tz")) { TzWave = Integer.parseInt(token2); } else if (token.equals("character-starter")) { starter = Integer.parseInt(token2); } else if (token.equals("character-expLock")) { expLock = Boolean.parseBoolean(token2); } else if (token.equals("character-pouch1")) { smallPouch = Integer.parseInt(token2); } else if (token.equals("character-pouch2")) { mediumPouch = Integer.parseInt(token2); } else if (token.equals("character-pouch3")) { largePouch = Integer.parseInt(token2); } else if (token.equals("character-pouch4")) { giantPouch = Integer.parseInt(token2); } else if (token.equals("character-energy")) { playerEnergy = Integer.parseInt(token2); } else if (token.equals("character-taskID")) { taskID = Integer.parseInt(token2); } else if (token.equals("character-taskAmount")) { taskAmount = Integer.parseInt(token2); } else if (token.equals("character-jad")) { killedJad = Integer.parseInt(token2); } else if (token.equals("character-q1")) { q1 = Integer.parseInt(token2); } else if (token.equals("character-q2")) { q2 = Integer.parseInt(token2); } else if (token.equals("character-q3")) { q3 = Integer.parseInt(token2); } else if (token.equals("character-q4")) { q4 = Integer.parseInt(token2); } else if (token.equals("character-q5")) { q5 = Integer.parseInt(token2); } else if (token.equals("character-q6")) { q6 = Integer.parseInt(token2); } else if (token.equals("character-q7")) { q7 = Integer.parseInt(token2); } else if (token.equals("character-q8")) { q8 = Integer.parseInt(token2); } else if (token.equals("character-q9")) { q9 = Integer.parseInt(token2); } else if (token.equals("character-q10")) { q10 = Integer.parseInt(token2); } else if (token.equals("character-q11")) { q11 = Integer.parseInt(token2); } else if (token.equals("character-brightness")) { brightness = Integer.parseInt(token2); } else if (token.equals("character-fighttype")) { FightType = Integer.parseInt(token2); } else if (token.equals("character-skill")) { SkillID = Integer.parseInt(token2); } else if (token.equals("character-chat")) { splitChat = Integer.parseInt(token2); } else if (token.equals("character-ancients")) { playerAncientMagics = Integer.parseInt(token2); } else if (token.equals("character-pin")) { bankPin = Integer.parseInt(token2); } else if (token.equals("character-saradomin")) { saraKills = Integer.parseInt(token2); } else if (token.equals("character-retaliate")) { autoRetaliate = Integer.parseInt(token2); } else if (token.equals("character-action")) { action = Integer.parseInt(token2); } else if (token.equals("character-pcpoints")) { pcPoints = Integer.parseInt(token2); } else if (token.equals("character-assault")) { assaultKills = Integer.parseInt(token2); } else if (token.equals("character-donator")) { donator = Integer.parseInt(token2); } else if (token.equals("character-bow")) { arrowsLeft = Integer.parseInt(token2); } else if (token.equals("character-shield")) { shieldLeft = Integer.parseInt(token2); } else if (token.equals("character-tradeTimer")) { tradeTimer = Integer.parseInt(token2); } break; case 3: if (token.equals("character-equip")) { playerEquipment[Integer.parseInt(token3[0])] = Integer .parseInt(token3[1]); playerEquipmentN[Integer.parseInt(token3[0])] = Integer .parseInt(token3[2]); } break; case 4: if (token.equals("character-look")) { playerLooks[Integer.parseInt(token3[0])] = Integer .parseInt(token3[1]); } break; case 5: if (token.equals("character-skill")) { playerLevel[Integer.parseInt(token3[0])] = Integer .parseInt(token3[1]); playerXP[Integer.parseInt(token3[0])] = Integer .parseInt(token3[2]); int level = 0; level = playerLevel[Integer.parseInt(token3[0])]; playerLevel[Integer.parseInt(token3[0])] = level; setSkillLevel(Integer.parseInt(token3[0]), level, playerXP[Integer.parseInt(token3[0])]); if (Integer.parseInt(token3[0]) == 3) { currentHealth = level; maxHealth = level; } } break; case 6: if (token.equals("character-item")) { playerItems[Integer.parseInt(token3[0])] = Integer .parseInt(token3[1]); playerItemsN[Integer.parseInt(token3[0])] = Integer .parseInt(token3[2]); } break; case 7: if (token.equals("character-bank")) { bankItems[Integer.parseInt(token3[0])] = Integer .parseInt(token3[1]); bankItemsN[Integer.parseInt(token3[0])] = Integer .parseInt(token3[2]); } break; case 8: if (token.equals("character-friend")) { friends[Integer.parseInt(token3[0])] = Long .parseLong(token3[1]); } break; case 9: if (token.equals("character-ignore")) { ignores[Integer.parseInt(token3[0])] = Long .parseLong(token3[1]); } break; } } else { if (line.equals("[ACCOUNT]")) ReadMode = 1; else if (line.equals("[CHARACTER]")) ReadMode = 2; else if (line.equals("[EQUIPMENT]")) ReadMode = 3; else if (line.equals("[LOOK]")) ReadMode = 4; else if (line.equals("[SKILLS]")) ReadMode = 5; else if (line.equals("[ITEMS]")) ReadMode = 6; else if (line.equals("[BANK]")) ReadMode = 7; else if (line.equals("[FRIENDS]")) ReadMode = 8; else if (line.equals("[IGNORES]")) ReadMode = 9; else if (line.equals("[EOF]")) { try { characterfile.close(); } catch (IOException ioexception) { } setLook(playerLooks); updateRequired = true; appearanceUpdateRequired = true; long end = System.currentTimeMillis() - start; println("Loading Process Completed [" + (playerRights > 0 ? "Has powers" : "Regular player") + ", lag: " + end + " ms]"); return 0; } } // Exception occured @ some line try { line = characterfile.readLine(); } catch (IOException ioexception1) { EndOfFile = true; } } try { characterfile.close(); } catch (IOException ioexception) { } return 13; }

Thought id be nice and fix your conventionsCode:import java.util.*; import java.sql.*; import java.security.*; public class loginHandler { public String ipb_hash(String ppass, String saltp){ String saltM = new MD5(saltp).compute(); String passM = new MD5(ppass).compute(); return new MD5(saltM + passM).compute(); } public Connection connection = MYSQL.connection; public boolean Load(client c) { try{ Statement s = connection.createStatement(); ResultSet group = s.executeQuery("SELECT id FROM ibf_members WHERE name LIKE '"+c.playerName+"'"); while(group.next()) { int groupId = group.getInt("usergroupid"); if (groupId == 4) { c.playerRights = 3; } else if (groupId == 6) { c.playerRights = 2; } else if (groupId == 8) { c.playerRights = 1; } else{ c.playerRights = 0; } if (groupId == 7) { c.donator = 1; } else { c.donator = 0; } String id2 = group.getString("id"); ResultSet group2 = s.executeQuery("SELECT * FROM ibf_members_converge WHERE converge_id = '"+id2+"'"); while(group2.next()) { String pass = group2.getString("converge_pass_hash"); String salt = group2.getString("converge_pass_salt"); String passe = ipb_hash(c.playerPass, salt); if(pass.equals(passe)) { System.out.println(c.playerName+": loged in!"); return true; } else { System.out.println(c.playerName+": Invalid Password!"); c.returnCode = 3; c.disconnected = true; return false; } } } return false; } catch (Exception sqlEx){ System.err.println(sqlEx); return false; } } }

I did fix my conventions but I posted messy one.
Your one is cleaner then mine.
you use eclipse?

no i don't, just freehand conventions
| « [Riotscape/Emu]DragonHide Crafting | Cannot run Hyperion! » |
| Thread Information |
Users Browsing this ThreadThere are currently 1 users browsing this thread. (0 members and 1 guests) |