Thread: RS3 NXT Item Definition OpCodes

Results 1 to 6 of 6
  1. #1 RS3 NXT Item Definition OpCodes 
    Registered Member
    Join Date
    May 2014
    Posts
    8
    Thanks given
    0
    Thanks received
    0
    Rep Power
    0
    Hello, I'm developing a item list dupmer for the latest NXT cache but I've ran into a problem with missing opcodes. I've used the readOpcode method taken from Nocturne source:
    https://www.rune-server.ee/runescape...ne-source.html
    and modified it a bit to work with NXT cache while assuming that each index contains 255 entries.

    I was able to export the list with properties and according to real data (RuneScape3 inventory item id), most of them are correct (itemId : itemDef), especially the newer ones (relics, pof animals, artefacts)
    After testing I noticed problem with some item, for example Dragon Rider amulet. The id supposed to be 30929, but somehow the id is for Dragon Rider body (30933) in my case.


    Does anyone have a newer item definition opcode specification (900+)? Or at least the data types of following opcodes for proper skip?

    opCode is 3 or 9 or 15 or 28 or 43 or 46 or 48 or 49 or 50 or 51 or 53 or 61 or 62 or 70 or 71 or 73 or 74 or 80 or 81 or 82 or 83 or 86 or 87 or 99 or 116 or 117 or 119 or 149 or 158 or 168 or 169 or 171 or 167 or 175 or 182 or 187 or 192 or 197 or 198 or 202 or 225 or 228 or 230 or 232 or 234 or 235 or 240 or 250 or 254 or 255
    and 69.

    The first problematic ones are 15 and 69, but their incorrect handling may result to non existing opcodes because of invalid data reading.

    Thanks in advance.
    Reply With Quote  
     

  2. #2  
    Registered Member
    Incendiary's Avatar
    Join Date
    Jul 2009
    Posts
    348
    Thanks given
    94
    Thanks received
    43
    Rep Power
    160
    These should be all the item def opcodes for current rs unless something changed since last week. It's still stored as 256 items per archive and getting the archive & file ids for an item id has remained the same.

    Code:
                int opcode = buffer.get() & 0xFF;
                if (opcode == 0) {
                    break;
                } else if (opcode == 1) {
                    groundModel = BufferUtil.getSmartInt(buffer);
                } else if (opcode == 2) {
                    name = BufferUtil.readString(buffer);
                } else if (opcode == 4) {
                    modelZoom = buffer.getShort() & 0xFFFF;
                } else if (opcode == 5) {
                    modelAngleX = buffer.getShort() & 0xFFFF;
                } else if (opcode == 6) {
                    modelAngleY = buffer.getShort() & 0xFFFF;
                } else if (opcode == 7) {
                    modelOffsetX = buffer.getShort() & 0xFFFF;
                    if (modelOffsetX > 32767) {
                        modelOffsetX -= 65536;
                    }
                } else if (opcode == 8) {
                    modelOffsetY = buffer.getShort() & 0xFFFF;
                    if (modelOffsetY > 32767) {
                        modelOffsetY -= 65536;
                    }
                } else if (opcode == 11) {
                    stackable = 1;
                } else if (opcode == 12) {
                    price = buffer.getInt();
                } else if (opcode == 13) {
                    equipmentSlot = buffer.get();
                } else if (opcode == 14) {
                    equipmentType = buffer.get();
                } else if (opcode == 15) {
                    //TODO
                } else if (opcode == 16) {
                    members = true;
                } else if (opcode == 18) {
                    unused = buffer.getShort() & 0xFFFF;
                } else if (opcode == 23) {
                    maleModel1 = BufferUtil.getSmartInt(buffer);
                } else if (opcode == 24) {
                    maleModel2 = BufferUtil.getSmartInt(buffer);
                } else if (opcode == 25) {
                    femaleModel1 = BufferUtil.getSmartInt(buffer);
                } else if (opcode == 26) {
                    femaleModel2 = BufferUtil.getSmartInt(buffer);
                } else if (opcode == 27) {
                    equipmentType2 = buffer.get();
                } else if (opcode >= 30 && opcode < 35) {
                    groundActions[opcode - 30] = BufferUtil.readString(buffer);
                } else if (opcode >= 35 && opcode < 40) {
                    inventoryActions[opcode - 35] = BufferUtil.readString(buffer);
                } else if (opcode == 40) {
                    int count = buffer.get() & 0xFF;
                    originalColors = new short[count];
                    replacementColors = new short[count];
                    for (int idx = 0; idx < count; idx++) {
                        originalColors[idx] = (short) (buffer.getShort() & 0xFFFF);
                        replacementColors[idx] = (short) (buffer.getShort() & 0xFFFF);
                    }
                } else if (opcode == 41) {
                    int count = buffer.get() & 0xFF;
                    originalTextures = new short[count];
                    replacementTextures = new short[count];
                    for (int idx = 0; idx < count; idx++) {
                        originalTextures[idx] = (short) (buffer.getShort() & 0xFFFF);
                        replacementTextures[idx] = (short) (buffer.getShort() & 0xFFFF);
                    }
                } else if (opcode == 42) {
                    int count = buffer.get() & 0xFF;
                    recolorPalette = new byte[count];
                    for (int index = 0; index < count; index++) {
                        recolorPalette[index] = buffer.get();
                    }
                } else if (opcode == 43) {
                    buffer.getInt();
                } else if (opcode == 44) {
                    buffer.getShort();
                } else if (opcode == 45) {
                    buffer.getShort();
                } else if (opcode == 65) {
                    stockMarket = true;
                } else if (opcode == 69) {
                    buffer.getInt();
                } else if (opcode == 78) {
                    maleModel3 = BufferUtil.getSmartInt(buffer);
                } else if (opcode == 79) {
                    femaleModel3 = BufferUtil.getSmartInt(buffer);
                } else if (opcode == 90) {
                    maleHeadModel1 = BufferUtil.getSmartInt(buffer);
                } else if (opcode == 91) {
                    femaleHeadModel1 = BufferUtil.getSmartInt(buffer);
                } else if (opcode == 92) {
                    maleHeadModel2 = BufferUtil.getSmartInt(buffer);
                } else if (opcode == 93) {
                    femaleHeadModel2 = BufferUtil.getSmartInt(buffer);
                } else if (opcode == 94) {
                    buffer.getShort();
                } else if (opcode == 95) {
                    modelAngleZ = buffer.getShort() & 0xFFFF;
                } else if (opcode == 96) {
                    searchable = buffer.get() & 0xFF;
                } else if (opcode == 97) {
                    notedItemId = buffer.getShort() & 0xFFFF;
                } else if (opcode == 98) {
                    notedTemplate = buffer.getShort() & 0xFFFF;
                } else if (opcode >= 100 && opcode < 110) {
                    if (stackIds == null) {
                        stackAmounts = new int[10];
                        stackIds = new int[10];
                    }
                    stackIds[opcode - 100] = buffer.getShort() & 0xFFFF;
                    stackAmounts[opcode - 100] = buffer.getShort() & 0xFFFF;
                } else if (opcode == 110) {
                    resizeX = buffer.getShort() & 0xFFFF;
                } else if (opcode == 111) {
                    resizeY = buffer.getShort() & 0xFFFF;
                } else if (opcode == 112) {
                    resizeZ = buffer.getShort() & 0xFFFF;
                } else if (opcode == 113) {
                    ambient = buffer.get();
                } else if (opcode == 114) {
                    contrast = buffer.get() * 5;
                } else if (opcode == 115) {
                    teamId = buffer.get() & 0xFF;
                } else if (opcode == 121) {
                    lentItemId = buffer.getShort() & 0xFFFF;
                } else if (opcode == 122) {
                    lendTemplate = buffer.getShort() & 0xFFFF;
                } else if (opcode == 125) {
                    maleModelOffsetX = buffer.get() << 2;
                    maleModelOffsetY = buffer.get() << 2;
                    maleModelOffsetZ = buffer.get() << 2;
                } else if (opcode == 126) {
                    femaleModelOffsetX = buffer.get() << 2;
                    femaleModelOffsetY = buffer.get() << 2;
                    femaleModelOffsetZ = buffer.get() << 2;
                } else if (opcode == 127) {
                    if (groundCursors == null) {
                        groundCursors = new int[6];
                        Arrays.fill(groundCursors, -1);
                    }
                    int groundCursorIdx1 = buffer.get() & 0xFF;
                    int groundCursorId1 = buffer.getShort() & 0xFFFF;
                    groundCursors[groundCursorIdx1] = groundCursorId1;
                } else if (opcode == 128) {
                    if (groundCursors == null) {
                        groundCursors = new int[6];
                        Arrays.fill(groundCursors, -1);
                    }
                    int groundCursorIdx2 = buffer.get() & 0xFF;
                    int groundCursorId2 = buffer.getShort() & 0xFFFF;
                    groundCursors[groundCursorIdx2] = groundCursorId2;
                } else if (opcode == 129) {
                    if (inventoryCursors == null) {
                        inventoryCursors = new int[5];
                        Arrays.fill(inventoryCursors, -1);
                    }
                    int invCursorIdx1 = buffer.get() & 0xFF;
                    int invCursorId1 = buffer.getShort() & 0xFFFF;
                    inventoryCursors[invCursorIdx1] = invCursorId1;
                } else if (opcode == 130) {
                    if (inventoryCursors == null) {
                        inventoryCursors = new int[5];
                        Arrays.fill(inventoryCursors, -1);
                    }
                    int invCursorIdx2 = buffer.get() & 0xFF;
                    int invCursorId2 = buffer.getShort() & 0xFFFF;
                    inventoryCursors[invCursorIdx2] = invCursorId2;
                } else if (opcode == 132) {
                    int count = buffer.get() & 0xFF;
                    questIds = new int[count];
                    for (int index = 0; index < count; index++) {
                        questIds[index] = buffer.getShort() & 0xFFFF;
                    }
                } else if (opcode == 134) {
                    anInt1919 = buffer.get() & 0xFF;
                } else if (opcode == 139) {
                    boughtItemId = buffer.getShort() & 0xFFFF;
                } else if (opcode == 140) {
                    boughtTemplate = buffer.getShort() & 0xFFFF;
                } else if (opcode >= 142 && opcode < 147) {
                    if (groundCursors == null) {
                        groundCursors = new int[6];
                        Arrays.fill(groundCursors, -1);
                    }
                    groundCursors[opcode - 142] = buffer.getShort() & 0xFFFF;
                } else if (opcode == 147) {
                    buffer.getShort();
                } else if (opcode >= 150 && opcode < 155) {
                    if (inventoryCursors == null) {
                        inventoryCursors = new int[5];
                        Arrays.fill(inventoryCursors, -1);
                    }
                    inventoryCursors[opcode - 150] = buffer.getShort() & 0xFFFF;
                } else if (opcode == 161) {
                    shardItemId = buffer.getShort() & 0xFFFF;
                } else if (opcode == 162) {
                    shardTemplateId = buffer.getShort() & 0xFFFF;
                } else if (opcode == 163) {
                    buffer.getShort();//shard amount
                } else if (opcode == 164) {
                    BufferUtil.readString(buffer);//cs shard name
                } else if (opcode == 165) {
                    //TODO
                } else if (opcode == 242) {
                    BufferUtil.getSmartInt(buffer);
                    BufferUtil.getSmartInt(buffer);
                } else if (opcode >= 243 && opcode < 249) {
                    BufferUtil.getSmartInt(buffer);
                } else if (opcode == 249) {
                    int size = buffer.get() & 0xFF;
                    if (params == null) {
                        params = new LinkedHashMap<>(size);
                    }
                    for (int index = 0; index < size; index++) {
                        boolean bool = (buffer.get() & 0xFF) == 1;
                        int key = BufferUtil.readTriByte(buffer);
                        Object value = bool ? BufferUtil.readString(buffer) : buffer.getInt();
                        params.put(key, value);
                    }
                } else if (opcode == 250) {
                    buffer.get();
                }
    Reply With Quote  
     

  3. #3  
    Registered Member
    Join Date
    May 2014
    Posts
    8
    Thanks given
    0
    Thanks received
    0
    Rep Power
    0
    @Incendiary
    Thank you for the response. I've tried the snippet, but unfortunatelly I get missing opcode exception on the latest cache (current RS3):


    EDIT:
    Appears I had math problem in indexing items. Doing it "one-by-one" instead of "per-index" works fine. But there are some missing opcodes in higher ids:
    After fixing, only those problems remain:

    Code:
    MISSING OPCODE 3 FOR ITEM 26283
    MISSING OPCODE 3 FOR ITEM 26284
    MISSING OPCODE 3 FOR ITEM 26285
    MISSING OPCODE 3 FOR ITEM 26286
    MISSING OPCODE 3 FOR ITEM 26287
    MISSING OPCODE 3 FOR ITEM 26288
    MISSING OPCODE 3 FOR ITEM 26289
    MISSING OPCODE 3 FOR ITEM 26290
    MISSING OPCODE 3 FOR ITEM 26291
    MISSING OPCODE 3 FOR ITEM 26292
    MISSING OPCODE 3 FOR ITEM 26293
    MISSING OPCODE 3 FOR ITEM 26294
    MISSING OPCODE 3 FOR ITEM 26295
    MISSING OPCODE 3 FOR ITEM 26296
    MISSING OPCODE 3 FOR ITEM 26297
    MISSING OPCODE 3 FOR ITEM 26298
    MISSING OPCODE 3 FOR ITEM 26299
    MISSING OPCODE 3 FOR ITEM 26300
    MISSING OPCODE 3 FOR ITEM 26301
    MISSING OPCODE 3 FOR ITEM 26302
    MISSING OPCODE 3 FOR ITEM 26303
    MISSING OPCODE 3 FOR ITEM 26304
    MISSING OPCODE 3 FOR ITEM 26305
    MISSING OPCODE 3 FOR ITEM 26306
    MISSING OPCODE 3 FOR ITEM 26307
    MISSING OPCODE 3 FOR ITEM 26308
    MISSING OPCODE 3 FOR ITEM 26309
    MISSING OPCODE 3 FOR ITEM 26310
    MISSING OPCODE 3 FOR ITEM 26311
    MISSING OPCODE 3 FOR ITEM 26312
    MISSING OPCODE 168 FOR ITEM 29492
    MISSING OPCODE 168 FOR ITEM 29492
    MISSING OPCODE 168 FOR ITEM 29494
    MISSING OPCODE 3 FOR ITEM 33892
    MISSING OPCODE 3 FOR ITEM 33893
    MISSING OPCODE 3 FOR ITEM 33894
    MISSING OPCODE 3 FOR ITEM 33895
    MISSING OPCODE 3 FOR ITEM 33896
    MISSING OPCODE 3 FOR ITEM 33898
    MISSING OPCODE 3 FOR ITEM 33899
    MISSING OPCODE 3 FOR ITEM 33900
    MISSING OPCODE 3 FOR ITEM 33901
    MISSING OPCODE 3 FOR ITEM 33903
    MISSING OPCODE 3 FOR ITEM 33904
    MISSING OPCODE 3 FOR ITEM 33905
    MISSING OPCODE 3 FOR ITEM 33909
    MISSING OPCODE 3 FOR ITEM 33910
    MISSING OPCODE 3 FOR ITEM 33911
    MISSING OPCODE 3 FOR ITEM 33912
    MISSING OPCODE 3 FOR ITEM 33913
    MISSING OPCODE 3 FOR ITEM 33914
    MISSING OPCODE 3 FOR ITEM 35767
    MISSING OPCODE 3 FOR ITEM 35768
    MISSING OPCODE 3 FOR ITEM 35769
    MISSING OPCODE 3 FOR ITEM 35770
    MISSING OPCODE 3 FOR ITEM 35771
    MISSING OPCODE 3 FOR ITEM 35772
    MISSING OPCODE 157 FOR ITEM 36230
    MISSING OPCODE 3 FOR ITEM 38823
    MISSING OPCODE 3 FOR ITEM 38825
    MISSING OPCODE 3 FOR ITEM 38826
    MISSING OPCODE 3 FOR ITEM 38827
    MISSING OPCODE 3 FOR ITEM 38828
    MISSING OPCODE 3 FOR ITEM 38830
    MISSING OPCODE 3 FOR ITEM 38831
    MISSING OPCODE 3 FOR ITEM 38832
    MISSING OPCODE 3 FOR ITEM 43175
    MISSING OPCODE 3 FOR ITEM 43176
    MISSING OPCODE 3 FOR ITEM 43177
    MISSING OPCODE 3 FOR ITEM 43178
    MISSING OPCODE 3 FOR ITEM 43179
    MISSING OPCODE 3 FOR ITEM 43180
    Most of those items:
    • Opcode 3 : Scrimshaws?
    • Opcode 157: ??
    • Opcode 168: Bonds
    Reply With Quote  
     

  4. #4  
    Registered Member
    Incendiary's Avatar
    Join Date
    Jul 2009
    Posts
    348
    Thanks given
    94
    Thanks received
    43
    Rep Power
    160
    Quote Originally Posted by zwrtron View Post
    Most of those items:
    • Opcode 3 : Scrimshaws?
    • Opcode 157: ??
    • Opcode 168: Bonds
    Seems I forgot to double check that, opcode 3 should be the only relevant one to read the other data correctly.
    Checked a 912 client & 919 nxt cache this time to make sure, should be fine now.

    Code:
                int opcode = buffer.get() & 0xFF;
                if (opcode == 0) {
                    break;
                } else if (opcode == 1) {
                    groundModel = BufferUtil.getSmartInt(buffer);
                } else if (opcode == 2) {
                    name = BufferUtil.readString(buffer);
                } else if (opcode == 3) {
                    BufferUtil.readString(buffer);//examine
                } else if (opcode == 4) {
                    modelZoom = buffer.getShort() & 0xFFFF;
                } else if (opcode == 5) {
                    modelAngleX = buffer.getShort() & 0xFFFF;
                } else if (opcode == 6) {
                    modelAngleY = buffer.getShort() & 0xFFFF;
                } else if (opcode == 7) {
                    modelOffsetX = buffer.getShort() & 0xFFFF;
                    if (modelOffsetX > 32767) {
                        modelOffsetX -= 65536;
                    }
                } else if (opcode == 8) {
                    modelOffsetY = buffer.getShort() & 0xFFFF;
                    if (modelOffsetY > 32767) {
                        modelOffsetY -= 65536;
                    }
                } else if (opcode == 11) {
                    stackable = 1;
                } else if (opcode == 12) {
                    price = buffer.getInt();
                } else if (opcode == 13) {
                    equipmentSlot = buffer.get();
                } else if (opcode == 14) {
                    equipmentType = buffer.get();
                } else if (opcode == 15) {
                    //TODO bool
                } else if (opcode == 16) {
                    members = true;
                } else if (opcode == 18) {
                    unused = buffer.getShort() & 0xFFFF;
                } else if (opcode == 23) {
                    maleModel1 = BufferUtil.getSmartInt(buffer);
                } else if (opcode == 24) {
                    maleModel2 = BufferUtil.getSmartInt(buffer);
                } else if (opcode == 25) {
                    femaleModel1 = BufferUtil.getSmartInt(buffer);
                } else if (opcode == 26) {
                    femaleModel2 = BufferUtil.getSmartInt(buffer);
                } else if (opcode == 27) {
                    equipmentType2 = buffer.get();
                } else if (opcode >= 30 && opcode < 35) {
                    groundActions[opcode - 30] = BufferUtil.readString(buffer);
                } else if (opcode >= 35 && opcode < 40) {
                    inventoryActions[opcode - 35] = BufferUtil.readString(buffer);
                } else if (opcode == 40) {
                    int count = buffer.get() & 0xFF;
                    originalColors = new short[count];
                    replacementColors = new short[count];
                    for (int idx = 0; idx < count; idx++) {
                        originalColors[idx] = (short) (buffer.getShort() & 0xFFFF);
                        replacementColors[idx] = (short) (buffer.getShort() & 0xFFFF);
                    }
                } else if (opcode == 41) {
                    int count = buffer.get() & 0xFF;
                    originalTextures = new short[count];
                    replacementTextures = new short[count];
                    for (int idx = 0; idx < count; idx++) {
                        originalTextures[idx] = (short) (buffer.getShort() & 0xFFFF);
                        replacementTextures[idx] = (short) (buffer.getShort() & 0xFFFF);
                    }
                } else if (opcode == 42) {
                    int count = buffer.get() & 0xFF;
                    recolorPalette = new byte[count];
                    for (int index = 0; index < count; index++) {
                        recolorPalette[index] = buffer.get();
                    }
                } else if (opcode == 43) {
                    buffer.getInt();
                } else if (opcode == 44) {
                    buffer.getShort();
                } else if (opcode == 45) {
                    buffer.getShort();
                } else if (opcode == 65) {
                    stockMarket = true;
                } else if (opcode == 69) {
                    buffer.getInt();
                } else if (opcode == 78) {
                    maleModel3 = BufferUtil.getSmartInt(buffer);
                } else if (opcode == 79) {
                    femaleModel3 = BufferUtil.getSmartInt(buffer);
                } else if (opcode == 90) {
                    maleHeadModel1 = BufferUtil.getSmartInt(buffer);
                } else if (opcode == 91) {
                    femaleHeadModel1 = BufferUtil.getSmartInt(buffer);
                } else if (opcode == 92) {
                    maleHeadModel2 = BufferUtil.getSmartInt(buffer);
                } else if (opcode == 93) {
                    femaleHeadModel2 = BufferUtil.getSmartInt(buffer);
                } else if (opcode == 94) {
                    buffer.getShort();
                } else if (opcode == 95) {
                    modelAngleZ = buffer.getShort() & 0xFFFF;
                } else if (opcode == 96) {
                    searchable = buffer.get() & 0xFF;
                } else if (opcode == 97) {
                    notedItemId = buffer.getShort() & 0xFFFF;
                } else if (opcode == 98) {
                    notedTemplate = buffer.getShort() & 0xFFFF;
                } else if (opcode >= 100 && opcode < 110) {
                    if (stackIds == null) {
                        stackAmounts = new int[10];
                        stackIds = new int[10];
                    }
                    stackIds[opcode - 100] = buffer.getShort() & 0xFFFF;
                    stackAmounts[opcode - 100] = buffer.getShort() & 0xFFFF;
                } else if (opcode == 110) {
                    resizeX = buffer.getShort() & 0xFFFF;
                } else if (opcode == 111) {
                    resizeY = buffer.getShort() & 0xFFFF;
                } else if (opcode == 112) {
                    resizeZ = buffer.getShort() & 0xFFFF;
                } else if (opcode == 113) {
                    ambient = buffer.get();
                } else if (opcode == 114) {
                    contrast = buffer.get() * 5;
                } else if (opcode == 115) {
                    teamId = buffer.get() & 0xFF;
                } else if (opcode == 121) {
                    lentItemId = buffer.getShort() & 0xFFFF;
                } else if (opcode == 122) {
                    lendTemplate = buffer.getShort() & 0xFFFF;
                } else if (opcode == 125) {
                    maleModelOffsetX = buffer.get() << 2;
                    maleModelOffsetY = buffer.get() << 2;
                    maleModelOffsetZ = buffer.get() << 2;
                } else if (opcode == 126) {
                    femaleModelOffsetX = buffer.get() << 2;
                    femaleModelOffsetY = buffer.get() << 2;
                    femaleModelOffsetZ = buffer.get() << 2;
                } else if (opcode == 127 || opcode == 128 || opcode == 129 || opcode == 130) {
                    buffer.get();
                    buffer.getShort();
                } else if (opcode == 132) {
                    int count = buffer.get() & 0xFF;
                    questIds = new int[count];
                    for (int index = 0; index < count; index++) {
                        questIds[index] = buffer.getShort() & 0xFFFF;
                    }
                } else if (opcode == 134) {
                    anInt1919 = buffer.get() & 0xFF;
                } else if (opcode == 139) {
                    boughtItemId = buffer.getShort() & 0xFFFF;
                } else if (opcode == 140) {
                    boughtTemplate = buffer.getShort() & 0xFFFF;
                } else if (opcode >= 142 && opcode < 147) {
                    if (groundCursors == null) {
                        groundCursors = new int[6];
                        Arrays.fill(groundCursors, -1);
                    }
                    groundCursors[opcode - 142] = buffer.getShort() & 0xFFFF;
                } else if (opcode == 147) {
                    buffer.getShort();
                } else if (opcode >= 150 && opcode < 155) {
                    if (inventoryCursors == null) {
                        inventoryCursors = new int[5];
                        Arrays.fill(inventoryCursors, -1);
                    }
                    inventoryCursors[opcode - 150] = buffer.getShort() & 0xFFFF;
                } else if (opcode == 157) {
                    //TODO bool
                } else if (opcode == 161) {
                    shardItemId = buffer.getShort() & 0xFFFF;
                } else if (opcode == 162) {
                    shardTemplateId = buffer.getShort() & 0xFFFF;
                } else if (opcode == 163) {
                    buffer.getShort();//shard amount
                } else if (opcode == 164) {
                    BufferUtil.readString(buffer);//cs shard name
                } else if (opcode == 165) {
                    //TODO bool
                } else if (opcode == 167) {
                    //TODO bool
                } else if (opcode == 168) {
                    //TODO bool
                } else if (opcode == 242) {
                    BufferUtil.getSmartInt(buffer);
                    BufferUtil.getSmartInt(buffer);
                } else if (opcode >= 243 && opcode < 249) {
                    BufferUtil.getSmartInt(buffer);
                } else if (opcode == 249) {
                    int size = buffer.get() & 0xFF;
                    if (params == null) {
                        params = new LinkedHashMap<>(size);
                    }
                    for (int index = 0; index < size; index++) {
                        boolean bool = (buffer.get() & 0xFF) == 1;
                        int key = BufferUtil.readTriByte(buffer);
                        Object value = bool ? BufferUtil.readString(buffer) : buffer.getInt();
                        params.put(key, value);
                    }
                }
    Reply With Quote  
     

  5. Thankful user:


  6. #5  
    Registered Member
    Melvin's Avatar
    Join Date
    Aug 2011
    Posts
    1,150
    Thanks given
    546
    Thanks received
    418
    Rep Power
    1561
    opcode 3 isnt examine..
    edit: I take that back its literally just examine text specifically for scrimshaws. Nothing else.
    Code:
    26283 - Log-splitting scrimshaw, 15% chance to split a log as you chop it, gaining additional Woodcutting experience and not collecting the log. Lasts 3 hours.
    26284 - Log-splitting scrimshaw (worn), 15% chance to split a log as you chop it, earning additional Woodcutting experience and not collecting the log. Lasts 3 hours.
    26285 - Superior log-splitting scrimshaw, 20% chance to split a log as you chop it, earning additional Woodcutting experience and not collecting the log. Lasts 4 hours.
    26286 - Rock-crushing scrimshaw, +2% critical chance when mining. Lasts 3 hours.
    26287 - Rock-crushing scrimshaw (worn), +2% critical chance when mining. Lasts 3 hours.
    26288 - Superior rock-crushing scrimshaw, +3% critical chance when mining. Lasts 4 hours.
    26289 - Tree-shaking scrimshaw, Increases the drop rate of bird nests by 300%. Lasts 3 hours.
    26290 - Tree-shaking scrimshaw (worn), Increases the drop rate of bird nests by 300%. Lasts 3 hours.
    26291 - Superior tree-shaking scrimshaw, Increases the drop rate of bird nests by 400%. Lasts 4 hours.
    26292 - Gem-finding scrimshaw, +2% geode chance when mining. Lasts 3 hours.
    26293 - Gem-finding scrimshaw (worn), +2% geode chance when mining. Lasts 3 hours.
    26294 - Superior gem-finding scrimshaw, +3% geode chance when mining. Lasts 4 hours.
    26295 - Scrimshaw of vampyrism, For every successful melee attack, this scrimshaw absorbs a small amount of the enemy's health, giving it to the scrimshaw bearer. Lasts 3 hours.
    26296 - Scrimshaw of vampyrism (worn), For every successful melee attack, this scrimshaw absorbs a small amount of the enemy's health, giving it to the scrimshaw bearer. Lasts 3 hours.
    26297 - Superior scrimshaw of vampyrism, For every successful melee attack, this scrimshaw absorbs a moderate amount of the enemy's health, giving it to the scrimshaw bearer. Lasts 4 hours.
    26298 - Scrimshaw of attack, Adds 2% to melee accuracy. Lasts 3 hours.
    26299 - Scrimshaw of attack (worn), Adds 2% to melee accuracy. Lasts 3 hours.
    26300 - Superior scrimshaw of attack, Adds 4% to melee accuracy. Lasts 4 hours.
    26301 - Scrimshaw of the elements, Every magic attack hits with a small amount of elemental damage. Lasts 3 hours.
    26302 - Scrimshaw of the elements (worn), Every magic attack hits with a small amount of elemental damage. Lasts 3 hours.
    26303 - Superior scrimshaw of the elements, Every magic attack hits with a moderate amount of elemental damage. Lasts 4 hours.
    26304 - Scrimshaw of magic, Adds 2% to magic accuracy. Lasts 3 hours.
    26305 - Scrimshaw of magic (worn), Adds 2% to magic accuracy. Lasts 3 hours.
    26306 - Superior scrimshaw of magic, Adds 4% to magic accuracy. Lasts 4 hours.
    26307 - Scrimshaw of cruelty, Ranged attacks deal increased damage. Lasts 3 hours.
    26308 - Scrimshaw of cruelty (worn), Ranged attacks deal increased damage. Lasts 3 hours.
    26309 - Superior scrimshaw of cruelty, Ranged attacks deal increased damage. Lasts 4 hours.
    26310 - Scrimshaw of ranging, Adds 2% to ranged accuracy. Lasts 3 hours.
    26311 - Scrimshaw of ranging (worn), Adds 2% to ranged accuracy. Lasts 3 hours.
    26312 - Superior scrimshaw of ranging, Adds 4% to ranged accuracy. Lasts 4 hours.
    33892 - Superior log-splitting scrimshaw, 20% chance to split a log as you chop it, earning additional Woodcutting experience and not collecting the log. Lasts 4 hours.
    33893 - Superior rock-crushing scrimshaw, +3% critical chance when mining. Lasts 4 hours.
    33894 - Superior tree-shaking scrimshaw, Increases the drop rate of bird nests by 400%. Lasts 4 hours.
    33895 - Superior gem-finding scrimshaw, +3% geode chance when mining. Lasts 4 hours.
    33896 - Whopper-baiting scrimshaw, 15% chance to bait a whopper fish, gaining additional Fishing experience even though you won't land it. Lasts 3 hours.
    33898 - Whopper-baiting scrimshaw (worn), 15% chance to bait a whopper fish, gaining additional Fishing experience even though you won't land it. Lasts 3 hours.
    33899 - Superior whopper-baiting scrimshaw, 20% chance to bait a whopper fish, gaining additional Fishing experience even though you won't land it. Lasts 4 hours.
    33900 - Superior whopper-baiting scrimshaw, 20% chance to bait a whopper fish, gaining additional Fishing experience even though you won't land it. Lasts 4 hours.
    33901 - Casket-salvaging scrimshaw, Successful fishing catches have a chance of finding various caskets. Higher-level fishing provides better chances. Lasts 3 hours.
    33903 - Casket-salvaging scrimshaw (worn), Successful fishing catches have a chance of finding various caskets. Higher-level fishing provides better chances. Lasts 3 hours.
    33904 - Superior casket-salvaging scrimshaw, Successful fishing catches have a chance of finding various caskets. Higher-level fishing provides better chances. Lasts 4 hours.
    33905 - Superior casket-salvaging scrimshaw, Successful fishing catches have a chance of finding various caskets. Higher-level fishing provides better chances. Lasts 4 hours.
    33909 - Superior scrimshaw of vampyrism, For every successful melee attack, this scrimshaw absorbs a moderate amount of the enemy's health, giving it to the scrimshaw bearer. Lasts 4 hours.
    33910 - Superior scrimshaw of attack, Adds 4% to melee accuracy. Lasts 4 hours.
    33911 - Superior scrimshaw of the elements, Every magic attack hits with a moderate amount of elemental damage. Lasts 4 hours.
    33912 - Superior scrimshaw of magic, Adds 4% to magic accuracy. Lasts 4 hours.
    33913 - Superior scrimshaw of cruelty, Ranged attacks deal increased damage. Lasts 4 hours.
    33914 - Superior scrimshaw of ranging, Adds 4% to ranged accuracy. Lasts 4 hours.
    35767 - Scrimshaw of aggression (inactive), An unpowered scrimshaw twisted with corrupt power, when worn these compel most enemies to become aggressive towards you.  Lasts 1 hour.
    35768 - Scrimshaw of aggression, A scrimshaw twisted with corrupt power, when worn these compel most enemies to become aggressive towards you.  Lasts 1 hour.
    35769 - Scrimshaw of sacrifice (inactive), An unpowered scrimshaw twisted with corrupt power, when worn you will receive no drops but will receive more Combat and Slayer XP. Lasts 1 hour.
    35770 - Scrimshaw of sacrifice, A scrimshaw twisted with corrupt power, when worn you will receive no drops but will receive more Combat and Slayer XP. Lasts 1 hour.
    35771 - Scrimshaw of corruption (inactive), An unpowered scrimshaw twisted with corrupt power, these compel most enemies to become aggressive towards you and you will receive no drops but will receive more Combat and Slayer XP. Lasts 1 hour.
    35772 - Scrimshaw of corruption, A scrimshaw twisted with corrupt power, these compel most enemies to become aggressive towards you and you will receive no drops but will receive more Combat and Slayer XP. Lasts 1 hour.
    38823 - Memory-crushing scrimshaw, 15% chance to instantly convert memories as you obtain them, gaining Divination experience. Lasts 3 hours.
    38825 - Memory-crushing scrimshaw (worn), 15% chance to instantly convert memories as you obtain them, gaining Divination experience. Lasts 3 hours.
    38826 - Superior memory-crushing scrimshaw, 20% chance to instantly convert memories as you obtain them, gaining Divination experience. Lasts 4 hours.
    38827 - Superior memory-crushing scrimshaw, 20% chance to instantly convert memories as you obtain them, gaining Divination experience. Lasts 4 hours.
    38828 - Energy-gathering scrimshaw, 15% chance to double the energy received when gathering memories. Lasts 3 hours.
    38830 - Energy-gathering scrimshaw (worn), 15% chance to double the energy received when gathering memories. Lasts 3 hours.
    38831 - Superior energy-gathering scrimshaw, 20% chance to double the energy received when gathering memories. Lasts 4 hours.
    38832 - Superior energy-gathering scrimshaw, 20% chance to double the energy received when gathering memories. Lasts 4 hours.
    43175 - Superior scrimshaw of sacrifice, A scrimshaw twisted with corrupt power, when worn you will receive no drops but will receive more Combat and Slayer XP. Lasts 4 hours.
    43176 - Superior scrimshaw of sacrifice, A scrimshaw twisted with corrupt power, when worn you will receive no drops but will receive more Combat and Slayer XP. Lasts 4 hours.
    43177 - Superior scrimshaw of aggression, A scrimshaw twisted with corrupt power, when worn these compel most enemies to become aggressive towards you. Lasts 4 hours.
    43178 - Superior scrimshaw of aggression, A scrimshaw twisted with corrupt power, when worn these compel most enemies to become aggressive towards you. Lasts 4 hours.
    43179 - Superior scrimshaw of corruption, A scrimshaw twisted with corrupt power, when worn these compel most enemies to become aggressive towards you and you will receive no drops but will receive more Combat and Slayer XP. Lasts 4 hours.
    43180 - Superior scrimshaw of corruption, A scrimshaw twisted with corrupt power, when worn these compel most enemies to become aggressive towards you and you will receive no drops but will receive more Combat and Slayer XP. Lasts 4 hours.


    A creative man is motivated by the desire to achieve, not by the desire to beat others.”


    ― Ayn Rand
    Reply With Quote  
     

  7. #6  
    Registered Member
    Join Date
    May 2014
    Posts
    8
    Thanks given
    0
    Thanks received
    0
    Rep Power
    0
    Yes, now everything works fine. Thank you @Incendiary & @Melvin.
    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. [RS3] [NXT] OpenNXT - Open-source RS3 NXT framework
    By techdaan in forum Projects
    Replies: 18
    Last Post: 02-05-2022, 02:57 PM
  2. [RS3] 851+ item definitions
    By Aliases in forum Requests
    Replies: 8
    Last Post: 08-06-2020, 12:11 PM
  3. New Item Definition Opcodes
    By _jordan in forum Configuration
    Replies: 5
    Last Post: 04-03-2018, 02:34 PM
  4. Item Definition Opcodes for 718/734+
    By Ben_U in forum Tutorials
    Replies: 26
    Last Post: 02-22-2013, 04:06 PM
  5. [HYPERION] Adding new item definition's
    By AlexMason in forum Tutorials
    Replies: 15
    Last Post: 04-09-2011, 02:23 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
  •