Thread: A quick tutorial to add any osrs data ( client sided ).

Results 1 to 8 of 8
  1. #1 A quick tutorial to add any osrs data ( client sided ). 
    Registered Member
    Join Date
    Dec 2016
    Posts
    62
    Thanks given
    25
    Thanks received
    14
    Rep Power
    35
    Hello guys today i'm gonna make a quick guide how to add Osrs data to your client.

    First download any osrs data you would like i suggest the 148 release by Ian on ************.net

    then download a good cache suite like this one here.


    Warning: make a backup of your current client and cache incase something goes wrong.


    Step 1: open your cache editor and load your cache by clicking on this button.
    Attached image


    Step 2: open the archive folder then right click open Config.
    Replace these files with the ones you just downloaded.
    npc.dat
    npc.idx
    obj.idx
    obj.dat
    loc.dat
    loc.idx
    flo.dat
    seq.dat
    spotanim.dat
    varbit.dat


    Step 3: now close this and Right click open Version list and replace the map_index.dat and close this.

    Step 4: open the model folder and clear on the botton right corner.

    Attached image

    Step 5: do the same for Animations and the maps folder.

    Step 6: now repack index 1, 2 and 4 in your cache this can be done by following this tutorial by galkon.
    https://www.rune-server.ee/runescape...repacking.html


    Step 7: now we need to edit our read values.

    Spoiler for All Read Values:
    For Itemdef.java

    Spoiler for Read values:
    Code:
    	private void readValues(Stream stream) {
            do {
                int i = stream.readUnsignedByte();
                if (i == 0)
                    return;
                if (i == 1)
                    modelID = stream.readUnsignedWord();
                else if (i == 2)
                    name = stream.readString();
                else if(i == 3)
                    description = stream.readString();
                else if (i == 4)
                    modelZoom = stream.readUnsignedWord();
                else if (i == 5)
                    modelRotationY = stream.readUnsignedWord();
                else if (i == 6)
                    modelRotationX = stream.readUnsignedWord();
                else if (7 == i) {
                    modelOffset1 = stream.readUnsignedWord();
                    if (modelOffset1 > 32767)
                        modelOffset1 -= 0x10000;
                } else if (8 == i) {
                    modelOffset2 = stream.readUnsignedWord();
                    if (modelOffset2 > 32767)
                        modelOffset2 -= 0x10000;
                } else if (11 == i)
                    stackable = true;
                else if (i == 12)
                    value = stream.readDWord();
                else if (i == 16)
                    membersObject = true;
                else if (i == 23) {
                    maleEquip1 = stream.readUnsignedWord();
                    aByte205 = stream.readSignedByte();
                } else if (i == 24)
                    maleEquip2 = stream.readUnsignedWord();
                else if (25 == i) {
                    femaleEquip1 = stream.readUnsignedWord();
                    aByte154 = stream.readSignedByte();
                } else if (26 == i)
                    femaleEquip2 = stream.readUnsignedWord();
                else if (i >= 30 && i < 35) {
                    if (groundActions == null)
                        groundActions = new String[5];
                    groundActions[i - 30] = stream.readString();
                    if (groundActions[i - 30].equalsIgnoreCase("hidden"))
                        groundActions[i - 30] = null;
                } else if (i >= 35 && i < 40) {
                    if (actions == null)
                        actions = new String[5];
                    actions[i - 35] = stream.readString();
                } else if (i == 40) {
                    int j = stream.readUnsignedByte();
                    newModelColor = new int[j];
                    editedModelColor = new int[j];
                    for (int k = 0; k < j; k++) {
                        newModelColor[k] = stream.readUnsignedWord();
                        editedModelColor[k] = stream.readUnsignedWord();
                    }
                } else if (i == 41) {
                    int length = stream.readSignedByte();
                    short[] textureFind = new short[length];
                    short[] textureReplace = new short[length];
     
                    for (int idx = 0; idx < length; ++idx) {
                        textureFind[idx] = (short) (stream.readUnsignedWord());
                        textureReplace[idx] = (short) (stream.readUnsignedWord());
                    }
                } else if (i == 42) { // #138
                    byte anInt2173 = stream.readSignedByte();
                } else if (i == 65) {
                    boolean stockMarket = true;
                } else if (i == 78)
                    anInt185 = stream.readUnsignedWord();
                else if (i == 79)
                    anInt162 = stream.readUnsignedWord();
                else if (i == 90)
                    anInt175 = stream.readUnsignedWord();
                else if (i == 91)
                    anInt197 = stream.readUnsignedWord();
                else if (i == 92)
                    anInt166 = stream.readUnsignedWord();
                else if (i == 93)
                    anInt173 = stream.readUnsignedWord();
                else if (i == 95)
                    anInt204 = stream.readUnsignedWord();
                else if (i == 97)
                    certID = stream.readUnsignedWord();
                else if (i == 98)
                    certTemplateID = stream.readUnsignedWord();
                else if (i >= 100 && i < 110) {
                    if (stackIDs == null) {
                        stackIDs = new int[10];
                        stackAmounts = new int[10];
                    }
                    stackIDs[i - 100] = stream.readUnsignedWord();
                    stackAmounts[i - 100] = stream.readUnsignedWord();
                } else if (i == 110)
                    anInt167 = stream.readUnsignedWord();
                else if (i == 111)
                    anInt192 = stream.readUnsignedWord();
                else if (i == 112)
                    anInt191 = stream.readUnsignedWord();
                else if (i == 113)
                    brightness = stream.readSignedByte();
                else if (114 == i)
                    anInt184 = stream.readSignedByte();
                else if (115 == i) {
                    team = stream.readUnsignedByte();
                } else if (i == 139) {
                    int boughtLink = stream.readUnsignedWord();
                } else if (i == 140) {
                    int boughtTemplate = stream.readUnsignedWord();
    //            } else if (i == 148) {
    //                int anInt1879 = stream.readUnsignedWord();
    //            } else if (i == 149) {
    //                int anInt1833 = stream.readUnsignedWord();
                } else if (i == 249) {
                    int length = stream.readUnsignedByte();
     
                    for (int i1 = 0; i1 < length; i1++) {
                        boolean isString = (stream.readUnsignedByte()) == 1;
                        int key = stream.read3Bytes();
                        Object value;
     
                        if (isString) {
                            value = stream.readString();
                        }
     
                        else {
                            value = stream.readDWord();      
                        }
     
                        //params.put(key, value);
                    }
                }
            } while (true);
        }


    Objectdef.java

    Spoiler for Read values:
    Code:
    public void readValues(Stream stream) {
    				int flag = -1;
    				do {
    					int opcode = stream.readUnsignedByte();
    					if (opcode == 0)
    						break;
    					if (opcode == 1) {
    						int len = stream.readUnsignedByte();
    						if (len > 0) {
    							if (anIntArray773 == null || lowMem) {
    								anIntArray776 = new int[len];
    								anIntArray773 = new int[len];
    								for (int k1 = 0; k1 < len; k1++) {
    									anIntArray773[k1] = stream.readUnsignedWord();
    									anIntArray776[k1] = stream.readUnsignedByte();
    								}
    							} else {
    								stream.currentOffset += len * 3;
    							}
    						}
    					} else if (opcode == 2)
    						name = stream.readString();
    					else if (opcode == 3)
    						description = stream.readBytes();
    					else if (opcode == 5) {
    						int len = stream.readUnsignedByte();
    						if (len > 0) {
    							if (anIntArray773 == null || lowMem) {
    								anIntArray776 = null;
    								anIntArray773 = new int[len];
    								for (int l1 = 0; l1 < len; l1++)
    									anIntArray773[l1] = stream.readUnsignedWord();
    							} else {
    								stream.currentOffset += len * 2;
    							}
    						}
    					} else if (opcode == 14)
    						anInt744 = stream.readUnsignedByte();
    					else if (opcode == 15)
    						anInt761 = stream.readUnsignedByte();
    					else if (opcode == 17)
    						aBoolean767 = false;
    					else if (opcode == 18)
    						aBoolean757 = false;
    					else if (opcode == 19)
    						hasActions = (stream.readUnsignedByte() == 1);
    					else if (opcode == 21)
    						aBoolean762 = true;
    					else if (opcode == 22)
    						aBoolean769 = true;
    					else if (opcode == 23)
    						aBoolean764 = true;
    					else if (opcode == 24) {
    						anInt781 = stream.readUnsignedWord();
    						if (anInt781 == 65535)
    							anInt781 = -1;
    					} else if (opcode == 28)
    						anInt775 = stream.readUnsignedByte();
    					else if (opcode == 29)
    						aByte737 = stream.readSignedByte();
    					else if (opcode == 39)
    						aByte742 = stream.readSignedByte();
    					else if (opcode >= 30 && opcode < 39) {
    						if (actions == null)
    							actions = new String[5];
    						actions[opcode - 30] = stream.readString();
    						if (actions[opcode - 30].equalsIgnoreCase("hidden"))
    							actions[opcode - 30] = null;
    					} else if (opcode == 40) {
    						int i1 = stream.readUnsignedByte();
    						modifiedModelColors = new int[i1];
    						originalModelColors = new int[i1];
    						for (int i2 = 0; i2 < i1; i2++) {
    							modifiedModelColors[i2] = stream.readUnsignedWord();
    							originalModelColors[i2] = stream.readUnsignedWord();
    						}
    					} else if (opcode == 60)
    						anInt746 = stream.readUnsignedWord();
    					else if (opcode == 62)
    						aBoolean751 = true;
    					else if (opcode == 64)
    						aBoolean779 = false;
    					else if (opcode == 65)
    						anInt748 = stream.readUnsignedWord();
    					else if (opcode == 66)
    						anInt772 = stream.readUnsignedWord();
    					else if (opcode == 67)
    						anInt740 = stream.readUnsignedWord();
    					else if (opcode == 68)
    						anInt758 = stream.readUnsignedWord();
    					else if (opcode == 69)
    						anInt768 = stream.readUnsignedByte();
    					else if (opcode == 70)
    						anInt738 = stream.readSignedWord();
    					else if (opcode == 71)
    						anInt745 = stream.readSignedWord();
    					else if (opcode == 72)
    						anInt783 = stream.readSignedWord();
    					else if (opcode == 73)
    						aBoolean736 = true;
    					else if (opcode == 74)
    						aBoolean766 = true;
    					else if (opcode == 75)
    						anInt760 = stream.readUnsignedByte();
    					else if (opcode == 77) {
    						anInt774 = stream.readUnsignedWord();
    						if (anInt774 == 65535)
    							anInt774 = -1;
    						anInt749 = stream.readUnsignedWord();
    						if (anInt749 == 65535)
    							anInt749 = -1;
    						int j1 = stream.readUnsignedByte();
    						childrenIDs = new int[j1 + 1];
    						for (int j2 = 0; j2 <= j1; j2++) {
    							childrenIDs[j2] = stream.readUnsignedWord();
    							if (childrenIDs[j2] == 65535)
    								childrenIDs[j2] = -1;
    						}
    					}
    				} while (true);
    				if (flag == -1  && name != "null" && name != null) {
    					hasActions = anIntArray773 != null && (anIntArray776 == null || anIntArray776[0] == 10);
    					if (actions != null)
    						hasActions = true;
    				}
    				if (aBoolean766) {
    					aBoolean767 = false;
    					aBoolean757 = false;
    				}
    				if (anInt760 == -1)
    					anInt760 = aBoolean767 ? 1 : 0;
    			}


    EntityDef.java

    Spoiler for Read Values:
    Code:
    public void readValues(Stream stream) {
    		do {
    			int i = stream.readUnsignedByte();
    			if (i == 0)
    				return;
    			if (i == 1) {
    				int j = stream.readUnsignedByte();
    				anIntArray94 = new int[j];
    				for (int j1 = 0; j1 < j; j1++) {
    					anIntArray94[j1] = stream.readUnsignedWord();
    				}
    			} else if (i == 2) {
    				name = stream.readString();
    			} else if (i == 3)
    				description = stream.readBytes();
    			else if (i == 12)
    				aByte68 = stream.readSignedByte();
    			else if (i == 13)
    				standAnim = stream.readUnsignedWord();
    			else if (i == 14)
    				walkAnim = stream.readUnsignedWord();
    			else if (i == 17) {
    				walkAnim = stream.readUnsignedWord();
    				anInt58 = stream.readUnsignedWord();
    				anInt83 = stream.readUnsignedWord();
    				anInt55 = stream.readUnsignedWord();
    				if (walkAnim == 65535)
    					walkAnim = -1;
    				if (anInt58 == 65535)
    					anInt58 = -1;
    				if (anInt83 == 65535)
    					anInt83 = -1;
    				if (anInt55 == 65535)
    					anInt55 = -1;
    			} else if (i >= 30 && i < 40) {
    				if (actions == null)
    					actions = new String[5];
    				actions[i - 30] = stream.readString();
    				if (actions[i - 30].equalsIgnoreCase("hidden"))
    					actions[i - 30] = null;
    			} else if (i == 40) {
    				int k = stream.readUnsignedByte();
    				anIntArray76 = new int[k];
    				anIntArray70 = new int[k];
    				for (int k1 = 0; k1 < k; k1++) {
    					anIntArray76[k1] = stream.readUnsignedWord();
    					anIntArray70[k1] = stream.readUnsignedWord();
    				}
    			} else if (i == 60) {
    				int l = stream.readUnsignedByte();
    				anIntArray73 = new int[l];
    				for (int l1 = 0; l1 < l; l1++) {
    					anIntArray73[l1] = stream.readUnsignedWord();
    				}
    			} else if (i == 90)
    				stream.readUnsignedWord();
    			else if (i == 91)
    				stream.readUnsignedWord();
    			else if (i == 92)
    				stream.readUnsignedWord();
    			else if (i == 93)
    				aBoolean87 = false;
    			else if (i == 95)
    				combatLevel = stream.readUnsignedWord();
    			else if (i == 97)
    				anInt91 = stream.readUnsignedWord();
    			else if (i == 98)
    				anInt86 = stream.readUnsignedWord();
    			else if (i == 99)
    				aBoolean93 = true;
    			else if (i == 100)
    				anInt85 = stream.readSignedByte();
    			else if (i == 101)
    				anInt92 = stream.readSignedByte() * 5;
    			else if (i == 102)
    				anInt75 = stream.readUnsignedWord();
    			else if (i == 103)
    				anInt79 = stream.readUnsignedWord();
    			else if (i == 106) {
    				anInt57 = stream.readUnsignedWord();
    				if (anInt57 == 65535)
    					anInt57 = -1;
    				anInt59 = stream.readUnsignedWord();
    				if (anInt59 == 65535)
    					anInt59 = -1;
    				int i1 = stream.readUnsignedByte();
    				childrenIDs = new int[i1 + 1];
    				for (int i2 = 0; i2 <= i1; i2++) {
    					childrenIDs[i2] = stream.readUnsignedWord();
    					if (childrenIDs[i2] == 65535)
    						childrenIDs[i2] = -1;
    				}
    			} else if (i == 107)
    				aBoolean84 = false;
    			else if (i == 127)
    				render = stream.readUnsignedWord();
    		} while (true);
    	}


    Animation.java ( not everyone need this part.
    Spoiler for Read values:
    Code:
    private void readValues2(Stream stream) {
    		int i;
    		while ((i = stream.readUnsignedByte()) != 0){
    			if (i == 1) {
    				anInt352 = stream.readUnsignedWord();
    				anIntArray353 = new int[anInt352];
    				anIntArray354 = new int[anInt352];
    				anIntArray355 = new int[anInt352];
    				for (int j = 0; j < anInt352; j++) {
    					anIntArray353[j] = stream.readDWord();
    					anIntArray354[j] = -1;
    				}
    
    				for (int j = 0; j < anInt352; j++)
    					anIntArray355[j] = stream.readUnsignedByte();
    
    			} else if (i == 2)
    				anInt356 = stream.readUnsignedWord();
    			else if (i == 3) {
    				int k = stream.readUnsignedByte();
    				anIntArray357 = new int[k + 1];
    				for (int l = 0; l < k; l++)
    					anIntArray357[l] = stream.readUnsignedByte();
    				anIntArray357[k] = 9999999;
    			} else if (i == 4)
    				aBoolean358 = true;
    			else if (i == 5)
    				anInt359 = stream.readUnsignedByte();
    			else if (i == 6)
    				anInt360 = stream.readUnsignedWord();
    			else if (i == 7)
    				anInt361 = stream.readUnsignedWord();
    			else if (i == 8)
    				anInt362 = stream.readUnsignedByte();
    			else if (i == 9)
    				anInt363 = stream.readUnsignedByte();
    			else if (i == 10)
    				anInt364 = stream.readUnsignedByte();
    			else if (i == 11)
    				anInt365 = stream.readUnsignedByte();
    			else if (i == 12)
    				stream.readDWord();
    			else
    				System.out.println("Error unrecognised seq config code: " + i);
    		}
    		if (anInt352 == 0) {
    			anInt352 = 1;
    			anIntArray353 = new int[1];
    			anIntArray353[0] = -1;
    			anIntArray354 = new int[1];
    			anIntArray354[0] = -1;
    			anIntArray355 = new int[1];
    			anIntArray355[0] = -1;
    		}
    		if (anInt363 == -1)
    			if (anIntArray357 != null)
    				anInt363 = 2;
    			else
    				anInt363 = 0;
    		if (anInt364 == -1) {
    			if (anIntArray357 != null) {
    				anInt364 = 2;
    				return;
    			}
    			anInt364 = 0;
    		}
    	}




    Step 8: Fix the errors you get in client.java and other classes its probably renaming modelrotation1 and modelrotation2
    to modelrotationY and modelrotationX But that is left for you.

    If you have any questions just ask.


    Step 9: Hit that juicy Thanks button and rep++ if this helped you in any way.
    Reply With Quote  
     

  2. Thankful users:


  3. #2  
    Ex Rune-Scaper

    Join Date
    Jun 2008
    Posts
    3,534
    Thanks given
    457
    Thanks received
    1,257
    Rep Power
    990
    This tutorial is a lot better than the other one I seen by Provider. A suggestion though. When you're repacking the indexes you can use rsam too instead of following galkons tutorial. All you have to do is make sure the data is gzipped. (models, animations, midis or maps) Lets say your data is gzipped and you want to replace models. (Right click on models in rsam and hit repack. If you don't see repack button you need rsam version 1.05)

    For windows use CTRL + A to select all files.

    rsam releases



    Also you gotta include the init method for all the config files because many people still have the bad format (where the offsets is increased by 50k) and the total items is increased by 21 for e.g
    Attached image
    Reply With Quote  
     

  4. Thankful users:


  5. #3  
    Registered Member
    Join Date
    Dec 2016
    Posts
    62
    Thanks given
    25
    Thanks received
    14
    Rep Power
    35
    Quote Originally Posted by nshusa View Post
    This tutorial is a lot better than the other one I seen by Provider. A suggestion though. When you're repacking the indexes you can use rsam too instead of following galkons tutorial. All you have to do is make sure the data is gzipped. (models, animations, midis or maps) Lets say your data is gzipped and you want to replace models. (Right click on models in rsam and hit repack. If you don't see repack button you need rsam version 1.05)

    For windows use CTRL + A to select all files.

    rsam releases



    Also you gotta include the init method for all the config files because many people still have the bad format (where the offsets is increased by 50k) and the total items is increased by 21 for e.g
    i'm new to adding data myself to and since there wasn't any good tutorial on how to add osrs data to a client i thought i made one quickly!
    thanks for your feedback
    Reply With Quote  
     

  6. #4  
    Registered Member
    Join Date
    Mar 2012
    Posts
    710
    Thanks given
    19
    Thanks received
    5
    Rep Power
    37
    Where did you get that data from? It won't show the website.
    Reply With Quote  
     

  7. #5  
    Registered Member
    Join Date
    Dec 2018
    Posts
    17
    Thanks given
    1
    Thanks received
    0
    Rep Power
    11
    veryyy bad .. your gonna get very fucking bad rep lmaoo

    Step 4: open the model folder and clear on the botton right corner.



    Step 5: do the same for Animations and the maps folder.


    WTF!!!! BE MORE SPECIFIC .. are you a dumb hoe . what about others that doesn't know how to code or doesn't use that cache editor with all expired links . your such a dumbass
    Reply With Quote  
     

  8. #6  
    Registered Member

    Join Date
    Oct 2011
    Posts
    2,084
    Thanks given
    0
    Thanks received
    1,043
    Rep Power
    3608
    Quote Originally Posted by tjmegre View Post
    veryyy bad .. your gonna get very fucking bad rep lmaoo

    Step 4: open the model folder and clear on the botton right corner.



    Step 5: do the same for Animations and the maps folder.


    WTF!!!! BE MORE SPECIFIC .. are you a dumb hoe . what about others that doesn't know how to code or doesn't use that cache editor with all expired links . your such a dumbass
    sounds like u is da dumb hoe.
    Reply With Quote  
     

  9. Thankful users:


  10. #7  
    Interfacing with your sister

    Streax's Avatar
    Join Date
    Jun 2009
    Posts
    2,308
    Thanks given
    784
    Thanks received
    175
    Rep Power
    229
    Quote Originally Posted by Omelete View Post
    sounds like u is da dumb hoe.
    Agreed
    Attached image
    Reply With Quote  
     

  11. #8  
    Registered Member
    Selseus's Avatar
    Join Date
    Aug 2017
    Posts
    386
    Thanks given
    11
    Thanks received
    73
    Rep Power
    84
    Quote Originally Posted by tjmegre View Post
    veryyy bad .. your gonna get very fucking bad rep lmaoo

    Step 4: open the model folder and clear on the botton right corner.


    Step 5: do the same for Animations and the maps folder.


    WTF!!!! BE MORE SPECIFIC .. are you a dumb hoe . what about others that doesn't know how to code or doesn't use that cache editor with all expired links . your such a dumbass
    You’re have to be the most blatantly ignorant, punk-ass person I’ve seen on these forums in hot minute.

    It’s unfortunate to see some people, like yourself, that are born without critical thinking skills or have no incentive to learn anything on their own.

    OT: Thanks for the tutorial, it’ll help some out!
    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. Looking For Someone to add some OSRS Data
    By insinuation in forum Buying
    Replies: 1
    Last Post: 02-02-2016, 04:51 AM
  2. Replies: 2
    Last Post: 09-05-2013, 12:29 AM
  3. Requesting a Tutorial to Add Newer Build?
    By Mastermrz in forum Requests
    Replies: 6
    Last Post: 10-12-2011, 02:41 AM
  4. how to add all 474 data renamed
    By Flippy in forum Requests
    Replies: 1
    Last Post: 05-13-2011, 11:15 PM
  5. Replies: 0
    Last Post: 05-01-2010, 06:15 AM
Posting Permissions
  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •