Page 1 of 1

233 Data

Posted: Fri Mar 13, 2026 2:12 am
by DragonSmith
Image
Image
Image

You must be registered to view this Link
Items opcodes

Code: You must be registered to view this Link

    private void readValues(Buffer stream) {
        while (true) {
            int opcode = stream.readUnsignedByte();
            if (opcode == 0)
                return;
            if (opcode == 1)
                modelId = stream.readUShort();
            else if (opcode == 2)
                name = stream.readString();
            else if (opcode == 3)
                description = stream.readString();
            else if (opcode == 4)
                spriteScale = stream.readUShort();
            else if (opcode == 5)
                spritePitch = stream.readUShort();
            else if (opcode == 6)
                spriteCameraRoll = stream.readUShort();
            else if (opcode == 7) {
                spriteTranslateX = stream.readUShort();
                if (spriteTranslateX > 32767)
                    spriteTranslateX -= 0x10000;
            } else if (opcode == 8) {
                spriteTranslateY = stream.readUShort();
                if (spriteTranslateY > 32767)
                    spriteTranslateY -= 0x10000;
            } else if(opcode == 9){
                stream.readString();
            } else if (opcode == 11)
                stackable = true;
            else if (opcode == 12)
                value = stream.readDWord();
         else if(opcode == 13)
            this.field2142 = stream.readSignedByte();
         else if(opcode == 14)
            this.field2157 = stream.readSignedByte();
            else if (opcode == 16)
                membersObject = true;
            else if (opcode == 23) {
                primaryMaleModel = stream.readUShort();
                maleTranslation = stream.readSignedByte();
                if (primaryMaleModel == 65535)
                    primaryMaleModel = -1;
            } else if (opcode == 24)
                secondaryMaleModel = stream.readUShort();
            else if (opcode == 25) {
                primaryFemaleModel = stream.readUShort();
                femaleTranslation = stream.readSignedByte();
                if (primaryFemaleModel == 65535)
                    primaryFemaleModel = -1;
            } else if (opcode == 26)
                secondaryFemaleModel = stream.readUShort();
         else if(opcode == 27)
            this.field2158 = stream.readSignedByte();
            else if (opcode >= 30 && opcode < 35) {
                if (groundActions == null)
                    groundActions = new String[5];
                groundActions[opcode - 30] = stream.readString();
                if (groundActions[opcode - 30].equalsIgnoreCase("hidden"))
                    groundActions[opcode - 30] = null;
            } else if (opcode >= 35 && opcode < 40) {
                if (itemActions == null)
                    itemActions = new String[5];
                itemActions[opcode - 35] = stream.readString();
            } else if (opcode == 40) {
                int size = stream.readUnsignedByte();
                originalModelColors = new int[size];
                modifiedModelColors = new int[size];
                for (int index = 0; index < size; index++) {
                    originalModelColors[index] = stream.readUShort();
                    modifiedModelColors[index] = stream.readUShort();
                }
            } else if (opcode == 41) {
                int size = stream.readUnsignedByte();
                originalTextureColors = new short[size];
                modifiedTextureColors = new short[size];
                for (int index = 0; index < size; index++) {
                    originalTextureColors[index] = (short) stream.readUShort();
                    modifiedTextureColors[index] = (short) stream.readUShort();
                }
            }else if (opcode == 42) {
                    stream.readSignedByte();
            } else if (opcode == 43) {
                int var3 = stream.readUnsignedByte();
                if (this.subOps == null) {
                    this.subOps = new String[5][];
                }

                boolean var7 = var3 >= 0 && var3 < 5;
                if (var7 && this.subOps[var3] == null) {
                    this.subOps[var3] = new String[20];
                }

                while (true) {
                    int var5 = stream.readUnsignedByte() - 1;
                    if (var5 == -1) {
                        break;
                    }

                    String var6 = stream.readString();
                    if (var7 && var5 >= 0 && var5 < 20) {
                        this.subOps[var3][var5] = var6;
                    }
                }
            } else if (opcode == 65) {
                searchable = true;
            } else if (opcode == 75){
                this.field2182 = stream.readSignedWord();
            } else if (opcode == 78)
                tertiaryMaleEquipmentModel = stream.readUShort();
            else if (opcode == 79)
                tertiaryFemaleEquipmentModel = stream.readUShort();
            else if (opcode == 90)
                primaryMaleHeadPiece = stream.readUShort();
            else if (opcode == 91)
                primaryFemaleHeadPiece = stream.readUShort();
            else if (opcode == 92)
                secondaryMaleHeadPiece = stream.readUShort();
            else if (opcode == 93)
                secondaryFemaleHeadPiece = stream.readUShort();
            else if (opcode == 94)
                stream.readUShort();
            else if (opcode == 95)
                spriteCameraYaw = stream.readUShort();
            else if (opcode == 97)
                certID = stream.readUShort();
            else if (opcode == 98)
                certTemplateID = stream.readUShort();
            else if (opcode >= 100 && opcode < 110) {
                if (stackIDs == null) {
                    stackIDs = new int[10];
                    stackAmounts = new int[10];
                }
                stackIDs[opcode - 100] = stream.readUShort();
                stackAmounts[opcode - 100] = stream.readUShort();
            } else if (opcode == 110)
                groundScaleX = stream.readUShort();
            else if (opcode == 111)
                groundScaleY = stream.readUShort();
            else if (opcode == 112)
                groundScaleZ = stream.readUShort();
            else if (opcode == 113)
                ambient = stream.readSignedByte();
            else if (opcode == 114)
                contrast = stream.readSignedByte() * 5;
            else if (opcode == 115)
                team = stream.readUnsignedByte();
            else if (opcode == 139)
                unnotedId = stream.readUShort();
            else if (opcode == 140)
                notedId = stream.readUShort();
            else if (opcode == 148)
                placeholderId = stream.readUShort();
            else if (opcode == 149)
                placeholderTemplateId = stream.readUShort();
            else {
                // System.out.println("Error loading item " + id + ", opcode " + opcode);
            }
        }
    }
Object Opcodes

Code: You must be registered to view this Link

    public void readValues(Buffer stream) {
        int flag = -1;
        do {
            int type = stream.readUnsignedByte();
            if (type == 0)
                break;
            if (type == 1) {
                int var3 = stream.readUnsignedByte();
                if (var3 > 0) {
                    if (this.modelIds != null && !lowMem) {
                        stream.currentOffset += 3 * var3;
                    } else {
                        this.models = new int[var3];
                        this.modelIds = new int[var3];

                        for(int var4 = 0; var4 < var3; ++var4) {
                            this.modelIds[var4] = stream.readUShort();
                            this.models[var4] = stream.readUnsignedByte();
                        }
                    }
                }
            } else if (type == 2)
                name = stream.readString();
            else if (type == 3)
                description = stream.readString();
            else if (type == 5) {
            int var3 = stream.readUnsignedByte();
            if (var3 > 0) {
                if (this.modelIds != null && !lowMem) {
                    stream.currentOffset += 2 * var3;
                } else {
                    this.models = null;
                    this.modelIds = new int[var3];

                    for(int var4 = 0; var4 < var3; ++var4) {
                        this.modelIds[var4] = stream.readUShort();
                    }
                }
            }
            } else if (type == 14)
                xLength = stream.readUnsignedByte();
            else if (type == 15)
                yLength = stream.readUnsignedByte();
            else if (type == 17) {
                interactType = 0;
                aBoolean757 = false;
            } else if (type == 18)
                aBoolean757 = false;
            else if (type == 19)
                hasActions = stream.readUnsignedByte();
            else if (type == 21)
                aBoolean762 = true;
            else if (type == 22)
                mergeNormals = true;
            else if (type == 23)
                aBoolean764 = true;
            else if (type == 24) { // Object Animations
                animation = stream.readUShort();
                if (animation == 65535)
                    animation = -1;
            } else if (type == 27) { // L: 147
                interactType = 1;
            } else if (type == 28)
                anInt775 = stream.readUnsignedByte();
            else if (type == 29)
                aByte737 = stream.readSignedByte();
            else if (type == 39)
                aByte742 = stream.readSignedByte();
            else if (type >= 30 && type < 39) {
                actions[type - 30] = stream.readString();
                if (actions[type - 30].equalsIgnoreCase("hidden"))
                    actions[type - 30] = null;
            } else if (type == 40) {
                int i1 = stream.readUnsignedByte();
                modifiedModelColors = new int[i1];
                originalModelColors = new int[i1];
                for (int i2 = 0; i2 < i1; i2++) {
                    modifiedModelColors[i2] = stream.readUShort();
                    originalModelColors[i2] = stream.readUShort();
                }
            } else if (type == 41) {
                int i1 = stream.readUnsignedByte();
                originalTexture = new short[i1];
                modifiedTexture = new short[i1];
                for (int i2 = 0; i2 < i1; i2++) {
                    originalTexture[i2] = (short) stream.readUShort();
                    modifiedTexture[i2] = (short) stream.readUShort();
                }
            } else if (type == 61)
                    stream.readUShort();
            else if (type == 62)
                inverted = true;
            else if (type == 64)
                clipped = false;
            else if (type == 65)
                thickness = stream.readUShort();
            else if (type == 66)
                height = stream.readUShort();
            else if (type == 67)
                width = stream.readUShort();
            else if (type == 68) {
                mapSceneId = stream.readUShort();
            } else if (type == 69)
                anInt768 = stream.readUnsignedByte();
            else if (type == 70)
                anInt738 = stream.readSignedWord();
            else if (type == 71)
                anInt745 = stream.readSignedWord();
            else if (type == 72)
                anInt783 = stream.readSignedWord();
            else if (type == 73)
                aBoolean736 = true;
            else if (type == 74)
                aBoolean766 = true;
            else if (type == 75)
                supportItems = stream.readUnsignedByte();
            else if (type == 77 || type == 92) {
                varpId = stream.readUShort();
                if (varpId == 65535)
                    varpId = -1;
                configId = stream.readUShort();
                if (configId == 65535)
                    configId = -1;
                int var3 = -1;
                if(type == 92)
                    var3 = stream.readUShort();
                int j1 = stream.readUnsignedByte();
                childrenIDs = new int[j1 + 2];
                for (int j2 = 0; j2 <= j1; j2++) {
                    childrenIDs[j2] = stream.readUShort();
                    if (childrenIDs[j2] == 65535)
                        childrenIDs[j2] = -1;
                }
                childrenIDs[j1 + 1] = var3;
            } else if(type == 78) {//ambient sound
                ambientSoundID = stream.readUShort(); // ambient sound id
                anInt2083 = stream.readUnsignedByte();
                this.field2130 = ((stream.readUnsignedByte()) * 128);
            } else if (type == 79) {
                anInt2112 = stream.readUShort();
                anInt2113 = stream.readUShort();
                anInt2083 = stream.readUShort();
                this.field2130 = ((stream.readUnsignedByte()) * 128);
                int length = stream.readUnsignedByte();
                int[] anims = new int[length];

                for (int index = 0; index < length; ++index)
                {
                    anims[index] = stream.readUShort();
                }
                ambientSoundIds = anims;
            } else if(type == 81) {
                stream.readUnsignedByte();
            } else if(type == 82) {
                mapFunctionId = stream.readUShort();
            } else if (type == 89) {
                this.randomAnimStart = false;
            } else if (type == 249) {
                int length = stream.readUnsignedByte();

                for (int i = 0; i < length; i++) {
                    boolean isString = stream.readUnsignedByte() == 1;
                    int key = stream.read24BitInt();

                    if (isString) {
                        stream.readOSRSString();
                    } else {
                        stream.read24BitInt();
                    }
                }
            }
        } while (true);
    postDecode();
        if (aBoolean766) {
            interactType = 0;
            aBoolean757 = false;
        }
    }
    void postDecode() {
        if (this.hasActions == -1) {
            this.hasActions = 0;
            if (this.modelIds != null && (this.models == null || this.models[0] == 10)) {
                this.hasActions = 1;
            }

            for (int var1 = 0; var1 < 5; ++var1) {
                if (this.actions[var1] != null) {
                    this.hasActions = 1;
                }
            }
        }

        if (this.supportItems == -1) {
            this.supportItems = this.interactType != 0 ? 1 : 0;
        }

    }
Npc Opcodes

Code: You must be registered to view this Link

        private void readValues(Buffer stream) {
            while (true) {
                int opcode = stream.readUnsignedByte();
                if (opcode == 0)
                    return;
                if (opcode == 1) {
                    int j = stream.readUnsignedByte();
                    models = new int[j];
                    for (int j1 = 0; j1 < j; j1++)
                        models[j1] = stream.readUShort();

                } else if (opcode == 2)
                    name = stream.readString();
                else if (opcode == 3)
                    description = stream.readString();
                else if (opcode == 12)
                    size = stream.readSignedByte();
                else if (opcode == 13)
                    standAnimation = stream.readUShort();
                else if (opcode == 14)
                    walkAnimation = stream.readUShort();
                else if (opcode == 17) {
                    walkAnimation = stream.readUShort();
                    rotate180Animation = stream.readUShort();
                    rotate90RightAnimation = stream.readUShort();
                    rotate90LeftAnimation = stream.readUShort();
                    if (rotate180Animation == 65535) {
                        rotate180Animation = -1;
                    }
                    if (rotate90RightAnimation == 65535) {
                        rotate90RightAnimation = -1;
                    }
                    if (rotate90LeftAnimation == 65535) {
                        rotate90LeftAnimation = -1;
                    }
                } else if(opcode == 18){
                    stream.readUShort();
                } else if (opcode >= 30 && opcode < 40) {
                    if (actions == null)
                        actions = new String[10];
                    actions[opcode - 30] = stream.readString();
                    if (actions[opcode - 30].equalsIgnoreCase("hidden"))
                        actions[opcode - 30] = null;
                } else if (opcode == 40) {
                    int k = stream.readUnsignedByte();
                    recolorFrom = new short[k];
                    recolorTo = new short[k];
                    for (int k1 = 0; k1 < k; k1++) {
                        recolorFrom[k1] = (short) stream.readUShort();
                        recolorTo[k1] = (short) stream.readUShort();
                    }
                } else if (opcode == 41) {
                    int k = stream.readUnsignedByte();
                    retextureFrom = new short[k];
                    retextureTo = new short[k];
                    for (int k1 = 0; k1 < k; k1++) {
                        retextureFrom[k1] = (short) stream.readUShort();
                        retextureTo[k1] = (short) stream.readUShort();
                    }

                } else if (opcode == 60) {
                    int l = stream.readUnsignedByte();
                    dialogueModels = new int[l];
                    for (int l1 = 0; l1 < l; l1++)
                        dialogueModels[l1] = stream.readUShort();

                }else if(opcode == 74) {
                    this.field2032[0] = stream.readUShort();
                } else if(opcode == 75) {
                    this.field2032[1] = stream.readUShort();
                } else if(opcode == 76) {
                    this.field2032[2] = stream.readUShort();
                } else if(opcode == 77) {
                    this.field2032[3] = stream.readUShort();
                } else if(opcode == 78) {
                    this.field2032[4] = stream.readUShort();
                } else if(opcode == 79) {
                    this.field2032[5] = stream.readUShort();
                } else if (opcode == 93)
                    onMinimap = false;
                else if (opcode == 95)
                    combatLevel = stream.readUShort();
                else if (opcode == 97)
                    anInt91 = stream.readUShort();
                else if (opcode == 98)
                    anInt86 = stream.readUShort();
                else if (opcode == 99)
                    aBoolean93 = true;
                else if (opcode == 100)
                    anInt85 = stream.readSignedByte();
                else if (opcode == 101)
                    anInt92 = stream.readSignedByte();
                else if (opcode == 102)
                    anInt75 = stream.readUShort();
                else if (opcode == 103)
                    getDegreesToTurn = stream.readUShort();
                else if (opcode == 106 || opcode == 118) {
                    anInt57 = stream.readUShort();
                    if (anInt57 == 65535)
                        anInt57 = -1;
                    anInt59 = stream.readUShort();
                    if (anInt59 == 65535)
                        anInt59 = -1;
                    int var3 = -1;
                    if(opcode == 118)
                        var3 = stream.readUShort();
                    int i1 = stream.readUnsignedByte();
                    childrenIDs = new int[i1 + 2];
                    for (int i2 = 0; i2 <= i1; i2++) {
                        childrenIDs[i2] = stream.readUShort();
                        if (childrenIDs[i2] == 65535)
                            childrenIDs[i2] = -1;
                    }
                    childrenIDs[i1 + 1] = var3;
                } else if (opcode == 107){
                    aBoolean84 = false;
                } else if(opcode == 109) {
                    this.isClickable = false;
                } else if(opcode == 114) {
                    this.field1914 = stream.readUShort();
                    if(this.field1914 == '\uffff') {
                        this.field1914 = -1;
                    }
                } else if(opcode == 115) {
                    this.field1914 = stream.readUShort();
                    this.field1919 = stream.readUShort();
                    this.field1918 = stream.readUShort();
                    this.field1938 = stream.readUShort();
                    if(this.field1914 == '\uffff') {
                        this.field1914 = -1;
                    }
                    if(this.field1919 == '\uffff') {
                        this.field1919 = -1;
                    }
                    if(this.field1918 == '\uffff') {
                        this.field1918 = -1;
                    }
                    if(this.field1938 == '\uffff') {
                        this.field1938 = -1;
                    }
                } else if(opcode == 116) {
                    this.field1920 = stream.readUShort();
                    if(this.field1920 == '\uffff') {
                        this.field1920 = -1;
                    }
                } else if(opcode == 117) {
                    this.field1920 = stream.readUShort();
                    this.field1933 = stream.readUShort();
                    this.field1922 = stream.readUShort();
                    this.field1923 = stream.readUShort();
                    if(this.field1920 == '\uffff') {
                        this.field1920 = -1;
                    }
                    if(this.field1933 == '\uffff') {
                        this.field1933 = -1;
                    }
                    if(this.field1922 == '\uffff') {
                        this.field1922 = -1;
                    }
                    if(this.field1923 == '\uffff') {
                        this.field1923 = -1;
                    }
                } else if(opcode == 122) {
                    lowPriorityFollowerOps = true;
                } else if(opcode == 123){
                    aBool2190 = true;
                } else if(opcode == 124) {
                    field2030 = stream.readUShort();
                } else if(opcode == 126){
                    this.footprintSize = stream.readUShort();
                }
            }
        }