Thread: Certain Characters Crashing on Login[667]

Results 1 to 4 of 4
  1. #1 Certain Characters Crashing on Login[667] 
    Registered Member
    Join Date
    Nov 2011
    Posts
    23
    Thanks given
    2
    Thanks received
    0
    Rep Power
    11
    Hey, so I've been trying to help some people on my RSPS because every-time they log in they can't do anything and in like 1 minute they log out. I've jailed unjailled, teleted to home ECT. I can't really see what would be wrong with their character files because they're all encrypted.

    Here is my Misc.java although I have been coding for years I really don't know much about encrypting. Is this where I should be looking to decrypt the character files in order to see whats wrong with them ?


    Code:
    package server.util;
    
    import java.text.NumberFormat;
    
    public class Misc {
    public static int getCurrentHP(int i, int i1, int i2) {
    	double x = (double)i / (double)i1;
    	return (int)Math.round(x*i2);
    }
    	public static String formatPlayerName(String str) {
    		str = ucFirst(str);
    		str.replace("_", " ");
    		return str;
    	}
    	
    	public static String longToPlayerName(long l) {
    		int i = 0;
    		char ac[] = new char[12];
    		while(l != 0L) {
    			long l1 = l;
    			l /= 37L;
    			ac[11 - i++] = playerNameXlateTable[(int)(l1 - l * 37L)];
    		}
    		return new String(ac, 12 - i, i);
    	}
    
    	public static String basicEncrypt(String s) {
    		String toReturn = "";
    		for (int j = 0; j < s.length(); j++) {
    			toReturn += (int)s.charAt(j);
    		}
    		//System.out.println("Encrypt: " + toReturn);
    		return toReturn;	
    	}
    	
    	public static String longToPlayerName2(long l) {
          int i = 0;
          char ac[] = new char[99];
          while(l != 0L) {
             long l1 = l;
             l /= 37L;
             ac[11 - i++] = playerNameXlateTable[(int)(l1 - l * 37L)];
          }
          return new String(ac, 12 - i, i);
    	}
    	
    	public static final char playerNameXlateTable[] = { 
    		'_', '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', '0', '1', '2',
    		'3', '4', '5', '6', '7', '8', '9' 
    	};
    
    	public static String longToString(long l) {
    		int i = 0;
    		char ac[] = new char[12];
    		while (l != 0L) {
    			long l1 = l;
    			l /= 37L;
    			ac[11 - i++] = playerNameXlateTable[(int) (l1 - l * 37L)];
    		}
    		return new String(ac, 12 - i, i);
    	}
    	
    	public static String format(int num) {
    		return NumberFormat.getInstance().format(num);
    	}
    	
    	public static String ucFirst(String str) {
    		str = str.toLowerCase();
    		if(str.length() > 1) {
    			str = str.substring(0,1).toUpperCase() + str.substring(1);
    		} else {
    			return str.toUpperCase();
    		}
    		return str;
    	}
    	
    	public static void print_debug(String str)
    	{
    		System.out.print(str);				
    	}
    	public static void println_debug(String str)
    	{
    		System.out.println(str);
    	}
    	public static void print(String str)
    	{
    		System.out.print(str);
    	}
    	public static void println(String str)
    	{
    		System.out.println(str);
    	}
    
    	public static String Hex(byte data[])
    	{
    		return Hex(data, 0, data.length);
    	}
    	public static String Hex(byte data[], int offset, int len)
    	{
    		String temp = "";
    		for(int cntr = 0; cntr < len; cntr++) {
    			int num = data[offset+cntr] & 0xFF;
    			String myStr;
    			if(num < 16) myStr = "0";
    			else myStr = "";
    			temp += myStr + Integer.toHexString(num) + " ";
    		}
    		return temp.toUpperCase().trim();
    	}
    
    	public static int hexToInt(byte data[], int offset, int len)
    	{
    		int temp = 0;
                    int i = 1000;
    		for(int cntr = 0; cntr < len; cntr++) {
    			int num = (data[offset+cntr] & 0xFF) * i;
    			temp += (int)num;
                            if (i > 1)
    			  i=i/1000;
    		}
    		return temp;
    	}
    
    	public static int random2(int range) { 
    		return (int)((java.lang.Math.random() * range) + 1);
    	}
    
    	public static int random(int range) {
    		return (int)(java.lang.Math.random() * (range+1));
    	}
    
    	public static long playerNameToInt64(String s)
    	{
    		long l = 0L;
    		for(int i = 0; i < s.length() && i < 12; i++) {
    			char c = s.charAt(i);
    			l *= 37L;
    			if(c >= 'A' && c <= 'Z') l += (1 + c) - 65;
    			else if(c >= 'a' && c <= 'z') l += (1 + c) - 97;
    			else if(c >= '0' && c <= '9') l += (27 + c) - 48;
    		}
    		while(l % 37L == 0L && l != 0L) l /= 37L;
    		return l;
    	}
    
    
        private static char decodeBuf[] = new char[4096];
    	public static String textUnpack(byte packedData[], int size)
    	{
    		int idx = 0, highNibble = -1;
    		for(int i = 0; i < size*2; i++) {
    			int val = packedData[i/2] >> (4-4*(i%2)) & 0xf;
    			if(highNibble == -1) {
    				if(val < 13) decodeBuf[idx++] = xlateTable[val];
    				else highNibble = val;
    			}
    			else {
    				decodeBuf[idx++] = xlateTable[((highNibble<<4) + val) - 195];
    				highNibble = -1;
    			}
    		}
    
    
    		return new String(decodeBuf, 0, idx);
        }
    
    	public static String optimizeText(String text)
    	{
    		char buf[] = text.toCharArray();
    		boolean endMarker = true;	
    		for(int i = 0; i < buf.length; i++) {
                char c = buf[i];
                if(endMarker && c >= 'a' && c <= 'z') {
    				buf[i] -= 0x20;	
    				endMarker = false;
    			}
    			if(c == '.' || c == '!' || c == '?') endMarker = true;
    		}
    		return new String(buf, 0, buf.length);
    	}
    
    	public static void textPack(byte packedData[], java.lang.String text)
    	{
    		if(text.length() > 80) text = text.substring(0, 80);
    		text = text.toLowerCase();
    
    		int carryOverNibble = -1;
    		int ofs = 0;
    		for(int idx = 0; idx < text.length(); idx++) {
    			char c = text.charAt(idx);
    			int tableIdx = 0;
    			for(int i = 0; i < xlateTable.length; i++) {
    				if(c == xlateTable[i]) {
    					tableIdx = i;
    					break;
    				}
    			}
    			if(tableIdx > 12) tableIdx += 195;
    			if(carryOverNibble == -1) {
    				if(tableIdx < 13) carryOverNibble = tableIdx;
    				else packedData[ofs++] = (byte)(tableIdx);
    			}
    			else if(tableIdx < 13) {
    				packedData[ofs++] = (byte)((carryOverNibble << 4) + tableIdx);
    				carryOverNibble = -1;
    			}
    			else {
    				packedData[ofs++] = (byte)((carryOverNibble << 4) + (tableIdx >> 4));
    				carryOverNibble = tableIdx & 0xf;
    			}
    		}
    
    		if(carryOverNibble != -1) packedData[ofs++] = (byte)(carryOverNibble << 4);
    	}
    
    	public static char xlateTable[] = {
    		' ', 'e', 't', 'a', 'o', 'i', 'h', 'n', 's', 'r', 
    		'd', 'l', 'u', 'm', 'w', 'c', 'y', 'f', 'g', 'p', 
    		'b', 'v', 'k', 'x', 'j', 'q', 'z', '0', '1', '2', 
    		'3', '4', '5', '6', '7', '8', '9', ' ', '!', '?', 
    		'.', ',', ':', ';', '(', ')', '-', '&', '*', '\\', 
    		'\'', '@', '#', '+', '=', '\243', '$', '%', '"', '[', 
    		']'
    	};
    
    
    
    	
    	public static int direction(int srcX, int srcY, int destX, int destY)
    	{
    		int dx=destX-srcX, dy=destY-srcY;
    		
    		if(dx < 0) {
    			if(dy < 0) {
    				if(dx < dy) return 11;
    				else if(dx > dy) return 9;
    				else return 10;		
    			}
    			else if(dy > 0) {
    				if(-dx < dy) return 15;
    				else if(-dx > dy) return 13;
    				else return 14;		
    			}
    			else {	
    				return 12;
    			}
    		}
    		else if(dx > 0) {
    			if(dy < 0) {
    				if(dx < -dy) return 7;
    				else if(dx > -dy) return 5;
    				else return 6;		
    			}
    			else if(dy > 0) {
    				if(dx < dy) return 1;
    				else if(dx > dy) return 3;
    				else return 2;	
    			}
    			else {	
    				return 4;
    			}
    		}
    		else {		
    			if(dy < 0) {
    				return 8;
    			}
    			else if(dy > 0) {
    				return 0;
    			}
    			else {	
    				return -1;		
    			}
    		}
    	}
    
    	public static byte directionDeltaX[] = new byte[]{ 0, 1, 1, 1, 0,-1,-1,-1 };
    	public static byte directionDeltaY[] = new byte[]{ 1, 1, 0,-1,-1,-1, 0, 1 };
    
    	
    	public static byte xlateDirectionToClient[] = new byte[]{ 1, 2, 4, 7, 6, 5, 3, 0 };
    }

    Anything else to help get my players playing again will be appreciated !
    Skype tiny30210
    Reply With Quote  
     

  2. #2  
    Registered Member
    Join Date
    Nov 2011
    Posts
    23
    Thanks given
    2
    Thanks received
    0
    Rep Power
    11
    Bump
    Reply With Quote  
     

  3. #3  
    Registered Member Cygnui's Avatar
    Join Date
    Nov 2011
    Posts
    47
    Thanks given
    4
    Thanks received
    1
    Rep Power
    11
    Character files aren't encrypted, they're serialized. However, passwords are usually stored in hashed formats.
    Reply With Quote  
     

  4. #4  
    Lost Redemption Owner & Founder
    Lost Redemption's Avatar
    Join Date
    Jan 2013
    Age
    27
    Posts
    915
    Thanks given
    212
    Thanks received
    60
    Rep Power
    0
    Have you simply tried to unnull them? I do assume you have some sort of un-nulling command available to you. This has happened to me before and all I did was un-null them and it was fine afterwards. Good luck with your fix though.
    Reply With Quote  
     


Thread Information
Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)


User Tag List

Similar Threads

  1. Random t2 Crashing On Login [PI]
    By Scott Perretta in forum Help
    Replies: 1
    Last Post: 04-16-2012, 09:06 PM
  2. Replies: 3
    Last Post: 04-19-2011, 03:33 PM
  3. Replies: 1
    Last Post: 07-09-2010, 08:13 PM
  4. [562][RS2HD]Client crashing on login...
    By i pwn u hard in forum Help
    Replies: 3
    Last Post: 05-27-2010, 04:42 AM
  5. [Z508] Client crash on login
    By mixutti in forum Help
    Replies: 3
    Last Post: 12-23-2009, 05:39 PM
Posting Permissions
  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •