Thread: Proper utilization of packet 134

Page 1 of 2 12 LastLast
Results 1 to 10 of 14
  1. #1 Proper utilization of packet 134 
    Registered Member
    Cadillac's Avatar
    Join Date
    Jul 2014
    Age
    9
    Posts
    336
    Thanks given
    0
    Thanks received
    228
    Rep Power
    951
    For some reason the client uses some bullshit like strings...
    Packet 134 is the real skill packet, used to send a skill to the client. Of course my naming is shit because I have not refactored my client in any way. This is for 602 skilltab. This can also save you some networking, sending strings are far more expensive than integers.

    Code:
    private final int[] boxSkillIndexes = {0,3,14,2,16,13,1,15,10,4,17,7,5,12,11,6,9,8,20,18,19,21,22,23,24};
        
        protected String setMessage(final int boxId) {
            final int skillId = boxSkillIndexes[boxId];
            final int level = currentStats[skillId];
            final int realLevel = maxStats[skillId];
            final int experience = currentExp[skillId];
            final int nextLevelExp = getXPForLevel(level + 1);
            final int remainder = nextLevelExp - experience;
            return  ((realLevel > 98 && skillId != 24) || realLevel > 119) ?
                // Level is maxed (99 normal stats, 120 dung) so we just need to display experience.
                "Experience: " + NumberFormat.getIntegerInstance().format(experience) :
                // There are higher achievable levels so we must display:
                // Experience, Levelup remainder, next level.
                "Experience: " + NumberFormat.getIntegerInstance().format(experience) + "\\n" +
                "Remainder: " + NumberFormat.getIntegerInstance().format(remainder) + "\\n" +
                "Next Level: " + (level + 1);
        }
    Orbs:
    Code:
    int currentHP = currentStats[3];
    			int maxHP = maxStats[3];
    Code:
    int currentPray = currentStats[5];
    			int maxPray = maxStats[5];
    Same for summoning, but Idk skill Id

    If you need the packet decoding.

    Code:
    case 134:
    				int skillId = inStream.readUnsignedByte();
    				int level = inStream.method439();
    				int experience = inStream.readUnsignedByte();
    				int xp = currentExp[skillId];
    				currentExp[skillId] = level;
    				currentStats[skillId] = experience;
    				maxStats[skillId] = 1;
    				xpCounter += currentExp[skillId] - xp;
    				expAdded = currentExp[skillId] - xp;
    				for (int k20 = 0; k20 < 98; k20++)
    					if (level >= anIntArray1019[k20])
    						maxStats[skillId] = k20 + 2;
    				pktType = -1;
    				return true;


    back at it.
    Reply With Quote  
     

  2. #2  
    Donator


    Join Date
    Mar 2013
    Age
    24
    Posts
    1,767
    Thanks given
    335
    Thanks received
    386
    Rep Power
    318
    Quite a bit of redundant variable declarations, which would eventually lead to a heap. For example

    Code:
        protected String setMessage(final int boxId) {
            final int skillId = boxSkillIndexes[boxId];
            final int level = currentStats[skillId];
            final int realLevel = maxStats[skillId];
            final int experience = currentExp[skillId];
            final int nextLevelExp = getXPForLevel(level + 1);
            final int remainder = nextLevelExp - experience;
            return  ((realLevel > 98 && skillId != 24) || realLevel > 119) ?
                // Level is maxed (99 normal stats, 120 dung) so we just need to display experience.
                "Experience: " + NumberFormat.getIntegerInstance().format(experience) :
                // There are higher achievable levels so we must display:
                // Experience, Levelup remainder, next level.
                "Experience: " + NumberFormat.getIntegerInstance().format(experience) + "\\n" +
                "Remainder: " + NumberFormat.getIntegerInstance().format(remainder) + "\\n" +
                "Next Level: " + (level + 1);
        }
    can be shortened down to

    Code:
    protected String setMessage(int boxId) {
        final int realLevel = maxStats[skillId];
        final int experience = currentExp[skillId];
        return  ((realLevel > 98 && boxSkillIndexes[boxId] != 24) || realLevel > 119) ? "Experience: " + NumberFormat.getIntegerInstance().format(experience) : "Experience: " + NumberFormat.getIntegerInstance().format(experience) + "\\n" + "Remainder: " + NumberFormat.getIntegerInstance().format(getXPForLevel(level + 1) - experience) + "\\n" + "Next Level: " + (currentStats[skillId] + 1);
    }
    therefore increasing readability and decreasing the amount of heap.
    Reply With Quote  
     

  3. #3  
    Registered Member
    Cadillac's Avatar
    Join Date
    Jul 2014
    Age
    9
    Posts
    336
    Thanks given
    0
    Thanks received
    228
    Rep Power
    951
    Quote Originally Posted by Paramvir View Post
    Quite a bit of redundant variable declarations, which would eventually lead to a heap. For example

    Code:
        protected String setMessage(final int boxId) {
            final int skillId = boxSkillIndexes[boxId];
            final int level = currentStats[skillId];
            final int realLevel = maxStats[skillId];
            final int experience = currentExp[skillId];
            final int nextLevelExp = getXPForLevel(level + 1);
            final int remainder = nextLevelExp - experience;
            return  ((realLevel > 98 && skillId != 24) || realLevel > 119) ?
                // Level is maxed (99 normal stats, 120 dung) so we just need to display experience.
                "Experience: " + NumberFormat.getIntegerInstance().format(experience) :
                // There are higher achievable levels so we must display:
                // Experience, Levelup remainder, next level.
                "Experience: " + NumberFormat.getIntegerInstance().format(experience) + "\\n" +
                "Remainder: " + NumberFormat.getIntegerInstance().format(remainder) + "\\n" +
                "Next Level: " + (level + 1);
        }
    can be shortened down to

    Code:
    protected String setMessage(int boxId) {
        final int realLevel = maxStats[skillId];
        final int experience = currentExp[skillId];
        return  ((realLevel > 98 && boxSkillIndexes[boxId] != 24) || realLevel > 119) ? "Experience: " + NumberFormat.getIntegerInstance().format(experience) : "Experience: " + NumberFormat.getIntegerInstance().format(experience) + "\\n" + "Remainder: " + NumberFormat.getIntegerInstance().format(getXPForLevel(level + 1) - experience) + "\\n" + "Next Level: " + (currentStats[skillId] + 1);
    }
    therefore increasing readability and decreasing the amount of heap.
    As far as I'm concerned integers add little to no overhead, but then again I think this method is rapidly called, so it could indeed be. Will update main post, thanks.
    back at it.
    Reply With Quote  
     

  4. #4  
    Donator


    Join Date
    Sep 2007
    Age
    27
    Posts
    2,426
    Thanks given
    125
    Thanks received
    505
    Rep Power
    386
    Quote Originally Posted by Paramvir View Post
    Quite a bit of redundant variable declarations, which would eventually lead to a heap. For example

    Code:
        protected String setMessage(final int boxId) {
            final int skillId = boxSkillIndexes[boxId];
            final int level = currentStats[skillId];
            final int realLevel = maxStats[skillId];
            final int experience = currentExp[skillId];
            final int nextLevelExp = getXPForLevel(level + 1);
            final int remainder = nextLevelExp - experience;
            return  ((realLevel > 98 && skillId != 24) || realLevel > 119) ?
                // Level is maxed (99 normal stats, 120 dung) so we just need to display experience.
                "Experience: " + NumberFormat.getIntegerInstance().format(experience) :
                // There are higher achievable levels so we must display:
                // Experience, Levelup remainder, next level.
                "Experience: " + NumberFormat.getIntegerInstance().format(experience) + "\\n" +
                "Remainder: " + NumberFormat.getIntegerInstance().format(remainder) + "\\n" +
                "Next Level: " + (level + 1);
        }
    can be shortened down to

    Code:
    protected String setMessage(int boxId) {
        final int realLevel = maxStats[skillId];
        final int experience = currentExp[skillId];
        return  ((realLevel > 98 && boxSkillIndexes[boxId] != 24) || realLevel > 119) ? "Experience: " + NumberFormat.getIntegerInstance().format(experience) : "Experience: " + NumberFormat.getIntegerInstance().format(experience) + "\\n" + "Remainder: " + NumberFormat.getIntegerInstance().format(getXPForLevel(level + 1) - experience) + "\\n" + "Next Level: " + (currentStats[skillId] + 1);
    }
    therefore increasing readability and decreasing the amount of heap.
    Except for the fact that you've removed skillId and level which are both referenced.

    Also, you don't need to use the final modifier. It's not being used in any anonymous classes or lambdas, so it's entirely unnecessary.
    Reply With Quote  
     

  5. #5  
    Registered Member
    Cadillac's Avatar
    Join Date
    Jul 2014
    Age
    9
    Posts
    336
    Thanks given
    0
    Thanks received
    228
    Rep Power
    951
    Quote Originally Posted by RuneBeam View Post
    Except for the fact that you've removed skillId and level which are both referenced.

    Also, you don't need to use the final modifier. It's not being used in any anonymous classes or lambdas, so it's entirely unnecessary.
    I provided the properly working one in main post.

    Quote Originally Posted by This is an View Post
    "increasing readability"

    lol good one
    Right? lmao
    back at it.
    Reply With Quote  
     

  6. #6  
    Registered Member

    Join Date
    Aug 2008
    Posts
    2,823
    Thanks given
    362
    Thanks received
    448
    Rep Power
    965
    Quote Originally Posted by Paramvir View Post
    Quite a bit of redundant variable declarations, which would eventually lead to a heap. For example

    Code:
        protected String setMessage(final int boxId) {
            final int skillId = boxSkillIndexes[boxId];
            final int level = currentStats[skillId];
            final int realLevel = maxStats[skillId];
            final int experience = currentExp[skillId];
            final int nextLevelExp = getXPForLevel(level + 1);
            final int remainder = nextLevelExp - experience;
            return  ((realLevel > 98 && skillId != 24) || realLevel > 119) ?
                // Level is maxed (99 normal stats, 120 dung) so we just need to display experience.
                "Experience: " + NumberFormat.getIntegerInstance().format(experience) :
                // There are higher achievable levels so we must display:
                // Experience, Levelup remainder, next level.
                "Experience: " + NumberFormat.getIntegerInstance().format(experience) + "\\n" +
                "Remainder: " + NumberFormat.getIntegerInstance().format(remainder) + "\\n" +
                "Next Level: " + (level + 1);
        }
    can be shortened down to

    Code:
    protected String setMessage(int boxId) {
        final int realLevel = maxStats[skillId];
        final int experience = currentExp[skillId];
        return  ((realLevel > 98 && boxSkillIndexes[boxId] != 24) || realLevel > 119) ? "Experience: " + NumberFormat.getIntegerInstance().format(experience) : "Experience: " + NumberFormat.getIntegerInstance().format(experience) + "\\n" + "Remainder: " + NumberFormat.getIntegerInstance().format(getXPForLevel(level + 1) - experience) + "\\n" + "Next Level: " + (currentStats[skillId] + 1);
    }
    therefore increasing readability and decreasing the amount of heap.
    As soon as the method is returned, the garbage collector frees the variables on the stack...
    Reply With Quote  
     

  7. #7  
    Ex Rune-Scaper

    Join Date
    Jun 2008
    Posts
    3,534
    Thanks given
    457
    Thanks received
    1,257
    Rep Power
    990
    What would I have to do to this method to use the remainder?

    Code:
    		if (j == 117) {
    			int i3 = stream.readUnsignedByte();
    			int l5 = anInt1268 + (i3 >> 4 & 7);
    			int k8 = anInt1269 + (i3 & 7);
    			int j11 = l5 + stream.readSignedByte();
    			int skillId3 = k8 + stream.readSignedByte();
    			int experience = stream.readSignedWord();
    			int i17 = stream.readUnsignedWord();
    			int i18 = stream.readUnsignedByte() * 4;
    			int l18 = stream.readUnsignedByte() * 4;
    			int skillId9 = stream.readUnsignedWord();
    			int j20 = stream.readUnsignedWord();
    			int i21 = stream.readUnsignedByte();
    			int j21 = stream.readUnsignedByte();
    			if (l5 >= 0 && k8 >= 0 && l5 < 104 && k8 < 104 && j11 >= 0 && skillId3 >= 0 && j11 < 104 && skillId3 < 104 && i17 != 65535) {
    				l5 = l5 * 128 + 64;
    				k8 = k8 * 128 + 64;
    				j11 = j11 * 128 + 64;
    				skillId3 = skillId3 * 128 + 64;
    				Animable_Sub4 class30_sub2_sub4_sub4 = new Animable_Sub4(i21, l18, skillId9 + loopCycle, j20 + loopCycle, j21, plane, method42(plane, k8, l5) - i18, k8, l5, experience, i17);
    				class30_sub2_sub4_sub4.method455(skillId9 + loopCycle, skillId3, method42(plane, skillId3, j11) - l18, j11);
    				aClass19_1013.insertHead(class30_sub2_sub4_sub4);
    			}
    		}
    Attached image
    Reply With Quote  
     

  8. #8  
    Ex Rune-Scaper

    Join Date
    Jun 2008
    Posts
    3,534
    Thanks given
    457
    Thanks received
    1,257
    Rep Power
    990
    Quote Originally Posted by This is an View Post
    err what thats the projectile packet
    Where do you add the "remainder"? and "next level at"?
    Attached image
    Reply With Quote  
     

  9. #9  
    Community Veteran


    Join Date
    Sep 2007
    Posts
    370
    Thanks given
    127
    Thanks received
    170
    Rep Power
    417
    ur kidding right this is 2015 who the fuck hasnt been using this packet this shit was in whitescape
    Original founder of this site
    8 Year RSPS Veteran
    Java programmer of 7 years
    Advanced PHP Programmer
    Reply With Quote  
     

  10. Thankful users:


  11. #10  
    Registered Member
    Cadillac's Avatar
    Join Date
    Jul 2014
    Age
    9
    Posts
    336
    Thanks given
    0
    Thanks received
    228
    Rep Power
    951
    Quote Originally Posted by Gander View Post
    ur kidding right this is 2015 who the fuck hasnt been using this packet this shit was in whitescape
    well the 602 skill tab I had used 126!!!
    back at it.
    Reply With Quote  
     

Page 1 of 2 12 LastLast

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. Proper use of MySQL
    By AcidEx in forum Website Development
    Replies: 13
    Last Post: 02-06-2011, 03:25 AM
  2. Packet 134?
    By Dexter Morgan in forum Help
    Replies: 1
    Last Post: 08-28-2009, 12:48 AM
  3. [474] Lots Of Packets
    By digistr in forum Configuration
    Replies: 7
    Last Post: 07-13-2009, 03:32 PM
  4. A proper version of godwars.
    By Proffesor Oak in forum Show-off
    Replies: 9
    Last Post: 04-10-2009, 06:31 PM
  5. Replies: 9
    Last Post: 03-03-2009, 05:59 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
  •