deob: sync scriptopcode
This commit is contained in:
@@ -39,6 +39,7 @@ dependencies {
|
|||||||
|
|
||||||
implementation(project(":runelite-api"))
|
implementation(project(":runelite-api"))
|
||||||
implementation(project(":runescape-api"))
|
implementation(project(":runescape-api"))
|
||||||
|
implementation(project(":cache"))
|
||||||
implementation(group = "org.jetbrains", name = "annotations", version = "20.1.0")
|
implementation(group = "org.jetbrains", name = "annotations", version = "20.1.0")
|
||||||
implementation(group = "org.ow2.asm", name = "asm", version = "9.0")
|
implementation(group = "org.ow2.asm", name = "asm", version = "9.0")
|
||||||
implementation(group = "org.ow2.asm", name = "asm-util", version = "9.0")
|
implementation(group = "org.ow2.asm", name = "asm-util", version = "9.0")
|
||||||
|
|||||||
@@ -1,6 +1,9 @@
|
|||||||
package net.runelite.deob.deobfuscators.transformers;
|
package net.runelite.deob.deobfuscators.transformers;
|
||||||
|
|
||||||
|
import java.util.Comparator;
|
||||||
|
import java.util.HashMap;
|
||||||
import java.util.ListIterator;
|
import java.util.ListIterator;
|
||||||
|
import java.util.Map;
|
||||||
import net.runelite.asm.ClassFile;
|
import net.runelite.asm.ClassFile;
|
||||||
import net.runelite.asm.ClassGroup;
|
import net.runelite.asm.ClassGroup;
|
||||||
import net.runelite.asm.Field;
|
import net.runelite.asm.Field;
|
||||||
@@ -20,7 +23,6 @@ import net.runelite.asm.attributes.code.instructions.VReturn;
|
|||||||
import net.runelite.asm.pool.Class;
|
import net.runelite.asm.pool.Class;
|
||||||
import net.runelite.asm.signature.Signature;
|
import net.runelite.asm.signature.Signature;
|
||||||
import net.runelite.deob.Transformer;
|
import net.runelite.deob.Transformer;
|
||||||
import net.runelite.deob.deobfuscators.transformers.scriptopcodes.ScriptOpcode;
|
|
||||||
import org.objectweb.asm.Opcodes;
|
import org.objectweb.asm.Opcodes;
|
||||||
import static org.objectweb.asm.Opcodes.ACC_FINAL;
|
import static org.objectweb.asm.Opcodes.ACC_FINAL;
|
||||||
import static org.objectweb.asm.Opcodes.ACC_PUBLIC;
|
import static org.objectweb.asm.Opcodes.ACC_PUBLIC;
|
||||||
@@ -29,6 +31,32 @@ import static org.objectweb.asm.Opcodes.ACC_STATIC;
|
|||||||
public class ScriptOpcodesTransformer implements Transformer // robots in disguise
|
public class ScriptOpcodesTransformer implements Transformer // robots in disguise
|
||||||
{
|
{
|
||||||
private static final String SCRIPT_OPCODES = "net/runelite/rs/ScriptOpcodes";
|
private static final String SCRIPT_OPCODES = "net/runelite/rs/ScriptOpcodes";
|
||||||
|
private static final HashMap<Integer, String> OPCODE_MAP = new HashMap<>();
|
||||||
|
|
||||||
|
static
|
||||||
|
{
|
||||||
|
for (java.lang.reflect.Field opcodeField : net.runelite.cache.script.Opcodes.class.getDeclaredFields())
|
||||||
|
{
|
||||||
|
if (opcodeField.getType() != int.class || !opcodeField.canAccess(null))
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
String opcodeName = opcodeField.getName();
|
||||||
|
int opcode;
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
opcode = opcodeField.getInt(null);
|
||||||
|
}
|
||||||
|
catch (IllegalAccessException e)
|
||||||
|
{
|
||||||
|
throw new RuntimeException(e);
|
||||||
|
}
|
||||||
|
|
||||||
|
OPCODE_MAP.put(opcode, opcodeName);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void transform(ClassGroup group)
|
public void transform(ClassGroup group)
|
||||||
@@ -79,7 +107,7 @@ public class ScriptOpcodesTransformer implements Transformer // robots in disgui
|
|||||||
}
|
}
|
||||||
|
|
||||||
int val = ((Number) ((PushConstantInstruction) i).getConstant()).intValue();
|
int val = ((Number) ((PushConstantInstruction) i).getConstant()).intValue();
|
||||||
String name = ScriptOpcode.nameFromID(val);
|
String name = OPCODE_MAP.get(val);
|
||||||
|
|
||||||
i = it.next();
|
i = it.next();
|
||||||
|
|
||||||
@@ -113,6 +141,7 @@ public class ScriptOpcodesTransformer implements Transformer // robots in disgui
|
|||||||
scriptOpcodes.setName(SCRIPT_OPCODES);
|
scriptOpcodes.setName(SCRIPT_OPCODES);
|
||||||
scriptOpcodes.setSuperName(Type.OBJECT.getInternalName());
|
scriptOpcodes.setSuperName(Type.OBJECT.getInternalName());
|
||||||
scriptOpcodes.setAccess(Opcodes.ACC_PUBLIC);
|
scriptOpcodes.setAccess(Opcodes.ACC_PUBLIC);
|
||||||
|
scriptOpcodes.setVersion(Opcodes.V1_8);
|
||||||
group.addClass(scriptOpcodes);
|
group.addClass(scriptOpcodes);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@@ -134,18 +163,22 @@ public class ScriptOpcodesTransformer implements Transformer // robots in disgui
|
|||||||
Code code = clinit.getCode();
|
Code code = clinit.getCode();
|
||||||
Instructions ins = code.getInstructions();
|
Instructions ins = code.getInstructions();
|
||||||
|
|
||||||
for (ScriptOpcode opcode : ScriptOpcode.values())
|
ClassFile finalScriptOpcodes = scriptOpcodes;
|
||||||
|
OPCODE_MAP.entrySet().stream().sorted(Comparator.comparingInt(Map.Entry::getKey)).forEach((entry) ->
|
||||||
{
|
{
|
||||||
Field field = new Field(scriptOpcodes, opcode.name(), Type.INT);
|
Integer opcode = entry.getKey();
|
||||||
field.setAccessFlags(ACC_PUBLIC | ACC_STATIC | ACC_FINAL);
|
String opcodeName = entry.getValue();
|
||||||
field.setValue(opcode.opcode);
|
|
||||||
scriptOpcodes.addField(field);
|
|
||||||
|
|
||||||
LDC ldc = new LDC(ins, opcode.opcode);
|
Field field = new Field(finalScriptOpcodes, opcodeName, Type.INT);
|
||||||
|
field.setAccessFlags(ACC_PUBLIC | ACC_STATIC | ACC_FINAL);
|
||||||
|
field.setValue(opcode);
|
||||||
|
finalScriptOpcodes.addField(field);
|
||||||
|
|
||||||
|
LDC ldc = new LDC(ins, opcode);
|
||||||
PutStatic put = new PutStatic(ins, field);
|
PutStatic put = new PutStatic(ins, field);
|
||||||
ins.addInstruction(0, ldc);
|
ins.addInstruction(0, ldc);
|
||||||
ins.addInstruction(1, put);
|
ins.addInstruction(1, put);
|
||||||
}
|
});
|
||||||
|
|
||||||
ins.addInstruction(new VReturn(ins));
|
ins.addInstruction(new VReturn(ins));
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,540 +0,0 @@
|
|||||||
package net.runelite.deob.deobfuscators.transformers.scriptopcodes;
|
|
||||||
|
|
||||||
import com.google.common.collect.ImmutableMap;
|
|
||||||
import java.util.Map;
|
|
||||||
|
|
||||||
public enum ScriptOpcode
|
|
||||||
{
|
|
||||||
// This class is pretty much the same as net.runelite.cache.script.Opcodes, and should be updated alongside that
|
|
||||||
|
|
||||||
ICONST(0),
|
|
||||||
GET_VARP(1),
|
|
||||||
SET_VARP(2),
|
|
||||||
SCONST(3),
|
|
||||||
JUMP(6),
|
|
||||||
IF_ICMPNE(7),
|
|
||||||
IF_ICMPEQ(8),
|
|
||||||
IF_ICMPLT(9),
|
|
||||||
IF_ICMPGT(10),
|
|
||||||
RETURN(21),
|
|
||||||
GET_VARBIT(25),
|
|
||||||
SET_VARBIT(27),
|
|
||||||
IF_ICMPLE(31),
|
|
||||||
IF_ICMPGE(32),
|
|
||||||
ILOAD(33),
|
|
||||||
ISTORE(34),
|
|
||||||
SLOAD(35),
|
|
||||||
SSTORE(36),
|
|
||||||
JOIN_STRING(37),
|
|
||||||
POP_INT(38),
|
|
||||||
POP_STRING(39),
|
|
||||||
INVOKE(40),
|
|
||||||
GET_VARC_INT(42),
|
|
||||||
SET_VARC_INT(43),
|
|
||||||
DEFINE_ARRAY(44),
|
|
||||||
GET_ARRAY_INT(45),
|
|
||||||
SET_ARRAY_INT(46),
|
|
||||||
GET_VARC_STRING_OLD(47),
|
|
||||||
SET_VARC_STRING_OLD(48),
|
|
||||||
GET_VARC_STRING(49),
|
|
||||||
SET_VARC_STRING(50),
|
|
||||||
SWITCH(60),
|
|
||||||
CC_CREATE(100),
|
|
||||||
CC_DELETE(101),
|
|
||||||
CC_DELETEALL(102),
|
|
||||||
CC_FIND(200),
|
|
||||||
IF_FIND(201),
|
|
||||||
CC_SETPOSITION(1000),
|
|
||||||
CC_SETSIZE(1001),
|
|
||||||
CC_SETHIDE(1003),
|
|
||||||
CC_SETNOCLICKTHROUGH(1005),
|
|
||||||
CC_SETNOSCROLLTHROUGH(1006),
|
|
||||||
CC_SETSCROLLPOS(1100),
|
|
||||||
CC_SETCOLOUR(1101),
|
|
||||||
CC_SETFILL(1102),
|
|
||||||
CC_SETTRANS(1103),
|
|
||||||
CC_SETLINEWID(1104),
|
|
||||||
CC_SETGRAPHIC(1105),
|
|
||||||
CC_SET2DANGLE(1106),
|
|
||||||
CC_SETTILING(1107),
|
|
||||||
CC_SETMODEL(1108),
|
|
||||||
CC_SETMODELANGLE(1109),
|
|
||||||
CC_SETMODELANIM(1110),
|
|
||||||
CC_SETMODELORTHOG(1111),
|
|
||||||
CC_SETTEXT(1112),
|
|
||||||
CC_SETTEXTFONT(1113),
|
|
||||||
CC_SETTEXTALIGN(1114),
|
|
||||||
CC_SETTEXTSHADOW(1115),
|
|
||||||
CC_SETOUTLINE(1116),
|
|
||||||
CC_SETGRAPHICSHADOW(1117),
|
|
||||||
CC_SETVFLIP(1118),
|
|
||||||
CC_SETHFLIP(1119),
|
|
||||||
CC_SETSCROLLSIZE(1120),
|
|
||||||
CC_RESUME_PAUSEBUTTON(1121),
|
|
||||||
CC_SETFILLCOLOUR(1123),
|
|
||||||
CC_SETFILLMODE(1125),
|
|
||||||
CC_SETLINEDIRECTION(1126),
|
|
||||||
CC_SETMODELTRANSPARENT(1127),
|
|
||||||
CC_SETOBJECT(1200),
|
|
||||||
CC_SETNPCHEAD(1201),
|
|
||||||
CC_SETPLAYERHEAD_SELF(1202),
|
|
||||||
CC_SETOBJECT_NONUM(1205),
|
|
||||||
CC_SETOBJECT_ALWAYS_NUM(1212),
|
|
||||||
CC_SETOP(1300),
|
|
||||||
CC_SETDRAGGABLE(1301),
|
|
||||||
CC_SETDRAGGABLEBEHAVIOR(1302),
|
|
||||||
CC_SETDRAGDEADZONE(1303),
|
|
||||||
CC_SETDRAGDEADTIME(1304),
|
|
||||||
CC_SETOPBASE(1305),
|
|
||||||
CC_SETTARGETVERB(1306),
|
|
||||||
CC_CLEAROPS(1307),
|
|
||||||
CC_SETOPKEY(1350),
|
|
||||||
CC_SETOPTKEY(1351),
|
|
||||||
CC_SETOPKEYRATE(1352),
|
|
||||||
CC_SETOPTKEYRATE(1353),
|
|
||||||
CC_SETOPKEYIGNOREHELD(1354),
|
|
||||||
CC_SETOPTKEYIGNOREHELD(1355),
|
|
||||||
CC_SETONCLICK(1400),
|
|
||||||
CC_SETONHOLD(1401),
|
|
||||||
CC_SETONRELEASE(1402),
|
|
||||||
CC_SETONMOUSEOVER(1403),
|
|
||||||
CC_SETONMOUSELEAVE(1404),
|
|
||||||
CC_SETONDRAG(1405),
|
|
||||||
CC_SETONTARGETLEAVE(1406),
|
|
||||||
CC_SETONVARTRANSMIT(1407),
|
|
||||||
CC_SETONTIMER(1408),
|
|
||||||
CC_SETONOP(1409),
|
|
||||||
CC_SETONDRAGCOMPLETE(1410),
|
|
||||||
CC_SETONCLICKREPEAT(1411),
|
|
||||||
CC_SETONMOUSEREPEAT(1412),
|
|
||||||
CC_SETONINVTRANSMIT(1414),
|
|
||||||
CC_SETONSTATTRANSMIT(1415),
|
|
||||||
CC_SETONTARGETENTER(1416),
|
|
||||||
CC_SETONSCROLLWHEEL(1417),
|
|
||||||
CC_SETONCHATTRANSMIT(1418),
|
|
||||||
CC_SETONKEY(1419),
|
|
||||||
CC_SETONFRIENDTRANSMIT(1420),
|
|
||||||
CC_SETONCLANTRANSMIT(1421),
|
|
||||||
CC_SETONMISCTRANSMIT(1422),
|
|
||||||
CC_SETONDIALOGABORT(1423),
|
|
||||||
CC_SETONSUBCHANGE(1424),
|
|
||||||
CC_SETONSTOCKTRANSMIT(1425),
|
|
||||||
CC_SETONRESIZE(1427),
|
|
||||||
CC_GETX(1500),
|
|
||||||
CC_GETY(1501),
|
|
||||||
CC_GETWIDTH(1502),
|
|
||||||
CC_GETHEIGHT(1503),
|
|
||||||
CC_GETHIDE(1504),
|
|
||||||
CC_GETLAYER(1505),
|
|
||||||
CC_GETSCROLLX(1600),
|
|
||||||
CC_GETSCROLLY(1601),
|
|
||||||
CC_GETTEXT(1602),
|
|
||||||
CC_GETSCROLLWIDTH(1603),
|
|
||||||
CC_GETSCROLLHEIGHT(1604),
|
|
||||||
CC_GETMODELZOOM(1605),
|
|
||||||
CC_GETMODELANGLE_X(1606),
|
|
||||||
CC_GETMODELANGLE_Z(1607),
|
|
||||||
CC_GETMODELANGLE_Y(1608),
|
|
||||||
CC_GETTRANSTOP(1609),
|
|
||||||
CC_GETTRANSBOT(1610),
|
|
||||||
CC_GETCOLOUR(1611),
|
|
||||||
CC_GETFILLCOLOUR(1612),
|
|
||||||
CC_GETFILLMODE(1613),
|
|
||||||
CC_GETMODELTRANSPARENT(1614),
|
|
||||||
CC_GETINVOBJECT(1700),
|
|
||||||
CC_GETINVCOUNT(1701),
|
|
||||||
CC_GETID(1702),
|
|
||||||
CC_GETTARGETMASK(1800),
|
|
||||||
CC_GETOP(1801),
|
|
||||||
CC_GETOPBASE(1802),
|
|
||||||
CC_CALLONRESIZE(1927),
|
|
||||||
IF_SETPOSITION(2000),
|
|
||||||
IF_SETSIZE(2001),
|
|
||||||
IF_SETHIDE(2003),
|
|
||||||
IF_SETNOCLICKTHROUGH(2005),
|
|
||||||
IF_SETSCROLLPOS(2100),
|
|
||||||
IF_SETCOLOUR(2101),
|
|
||||||
IF_SETFILL(2102),
|
|
||||||
IF_SETTRANS(2103),
|
|
||||||
IF_SETLINEWID(2104),
|
|
||||||
IF_SETGRAPHIC(2105),
|
|
||||||
IF_SET2DANGLE(2106),
|
|
||||||
IF_SETTILING(2107),
|
|
||||||
IF_SETMODEL(2108),
|
|
||||||
IF_SETMODELANGLE(2109),
|
|
||||||
IF_SETMODELANIM(2110),
|
|
||||||
IF_SETMODELORTHOG(2111),
|
|
||||||
IF_SETTEXT(2112),
|
|
||||||
IF_SETTEXTFONT(2113),
|
|
||||||
IF_SETTEXTALIGN(2114),
|
|
||||||
IF_SETTEXTSHADOW(2115),
|
|
||||||
IF_SETOUTLINE(2116),
|
|
||||||
IF_SETGRAPHICSHADOW(2117),
|
|
||||||
IF_SETVFLIP(2118),
|
|
||||||
IF_SETHFLIP(2119),
|
|
||||||
IF_SETSCROLLSIZE(2120),
|
|
||||||
IF_RESUME_PAUSEBUTTON(2121),
|
|
||||||
IF_SETFILLCOLOUR(2123),
|
|
||||||
IF_SETTRANSBOT(2124),
|
|
||||||
IF_SETFILLMODE(2125),
|
|
||||||
IF_SETLINEDIRECTION(2126),
|
|
||||||
IF_SETOBJECT(2200),
|
|
||||||
IF_SETNPCHEAD(2201),
|
|
||||||
IF_SETPLAYERHEAD_SELF(2202),
|
|
||||||
IF_SETOBJECT_NONUM(2205),
|
|
||||||
IF_SETOBJECT_ALWAYS_NUM(2212),
|
|
||||||
IF_SETOP(2300),
|
|
||||||
IF_SETDRAGGABLE(2301),
|
|
||||||
IF_SETDRAGGABLEBEHAVIOR(2302),
|
|
||||||
IF_SETDRAGDEADZONE(2303),
|
|
||||||
IF_SETDRAGDEADTIME(2304),
|
|
||||||
IF_SETOPBASE(2305),
|
|
||||||
IF_SETTARGETVERB(2306),
|
|
||||||
IF_CLEAROPS(2307),
|
|
||||||
IF_SETOPKEY(2350),
|
|
||||||
IF_SETOPTKEY(2351),
|
|
||||||
IF_SETOPKEYRATE(2352),
|
|
||||||
IF_SETOPTKEYRATE(2353),
|
|
||||||
IF_SETOPKEYIGNOREHELD(2354),
|
|
||||||
IF_SETOPTKEYIGNOREHELD(2355),
|
|
||||||
IF_SETONCLICK(2400),
|
|
||||||
IF_SETONHOLD(2401),
|
|
||||||
IF_SETONRELEASE(2402),
|
|
||||||
IF_SETONMOUSEOVER(2403),
|
|
||||||
IF_SETONMOUSELEAVE(2404),
|
|
||||||
IF_SETONDRAG(2405),
|
|
||||||
IF_SETONTARGETLEAVE(2406),
|
|
||||||
IF_SETONVARTRANSMIT(2407),
|
|
||||||
IF_SETONTIMER(2408),
|
|
||||||
IF_SETONOP(2409),
|
|
||||||
IF_SETONDRAGCOMPLETE(2410),
|
|
||||||
IF_SETONCLICKREPEAT(2411),
|
|
||||||
IF_SETONMOUSEREPEAT(2412),
|
|
||||||
IF_SETONINVTRANSMIT(2414),
|
|
||||||
IF_SETONSTATTRANSMIT(2415),
|
|
||||||
IF_SETONTARGETENTER(2416),
|
|
||||||
IF_SETONSCROLLWHEEL(2417),
|
|
||||||
IF_SETONCHATTRANSMIT(2418),
|
|
||||||
IF_SETONKEY(2419),
|
|
||||||
IF_SETONFRIENDTRANSMIT(2420),
|
|
||||||
IF_SETONCLANTRANSMIT(2421),
|
|
||||||
IF_SETONMISCTRANSMIT(2422),
|
|
||||||
IF_SETONDIALOGABORT(2423),
|
|
||||||
IF_SETONSUBCHANGE(2424),
|
|
||||||
IF_SETONSTOCKTRANSMIT(2425),
|
|
||||||
IF_SETONRESIZE(2427),
|
|
||||||
IF_GETX(2500),
|
|
||||||
IF_GETY(2501),
|
|
||||||
IF_GETWIDTH(2502),
|
|
||||||
IF_GETHEIGHT(2503),
|
|
||||||
IF_GETHIDE(2504),
|
|
||||||
IF_GETLAYER(2505),
|
|
||||||
IF_GETSCROLLX(2600),
|
|
||||||
IF_GETSCROLLY(2601),
|
|
||||||
IF_GETTEXT(2602),
|
|
||||||
IF_GETSCROLLWIDTH(2603),
|
|
||||||
IF_GETSCROLLHEIGHT(2604),
|
|
||||||
IF_GETMODELZOOM(2605),
|
|
||||||
IF_GETMODELANGLE_X(2606),
|
|
||||||
IF_GETMODELANGLE_Z(2607),
|
|
||||||
IF_GETMODELANGLE_Y(2608),
|
|
||||||
IF_GETTRANSTOP(2609),
|
|
||||||
IF_GETTRANSBOT(2610),
|
|
||||||
IF_GETCOLOUR(2611),
|
|
||||||
IF_GETFILLCOLOUR(2612),
|
|
||||||
IF_GETFILLMODE(2613),
|
|
||||||
IF_GETMODELTRANSPARENT(2614),
|
|
||||||
IF_GETINVOBJECT(2700),
|
|
||||||
IF_GETINVCOUNT(2701),
|
|
||||||
IF_HASSUB(2702),
|
|
||||||
IF_GETTOP(2706),
|
|
||||||
IF_GETTARGETMASK(2800),
|
|
||||||
IF_GETOP(2801),
|
|
||||||
IF_GETOPBASE(2802),
|
|
||||||
IF_CALLONRESIZE(2927),
|
|
||||||
MES(3100),
|
|
||||||
ANIM(3101),
|
|
||||||
IF_CLOSE(3103),
|
|
||||||
RESUME_COUNTDIALOG(3104),
|
|
||||||
RESUME_NAMEDIALOG(3105),
|
|
||||||
RESUME_STRINGDIALOG(3106),
|
|
||||||
OPPLAYER(3107),
|
|
||||||
IF_DRAGPICKUP(3108),
|
|
||||||
CC_DRAGPICKUP(3109),
|
|
||||||
MOUSECAM(3110),
|
|
||||||
GETREMOVEROOFS(3111),
|
|
||||||
SETREMOVEROOFS(3112),
|
|
||||||
OPENURL(3113),
|
|
||||||
RESUME_OBJDIALOG(3115),
|
|
||||||
BUG_REPORT(3116),
|
|
||||||
SETSHIFTCLICKDROP(3117),
|
|
||||||
SETSHOWMOUSEOVERTEXT(3118),
|
|
||||||
RENDERSELF(3119),
|
|
||||||
SETSHOWMOUSECROSS(3125),
|
|
||||||
SETSHOWLOADINGMESSAGES(3126),
|
|
||||||
SETTAPTODROP(3127),
|
|
||||||
GETTAPTODROP(3128),
|
|
||||||
SETOCULUSORBSPEED(3129),
|
|
||||||
GETCANVASSIZE(3132),
|
|
||||||
MOBILE_SETFPS(3133),
|
|
||||||
MOBILE_OPENSTORE(3134),
|
|
||||||
MOBILE_OPENSTORECATEGORY(3135),
|
|
||||||
SETHIDEUSERNAME(3141),
|
|
||||||
GETHIDEUSERNAME(3142),
|
|
||||||
SETREMEMBERUSERNAME(3143),
|
|
||||||
GETREMEMBERUSERNAME(3144),
|
|
||||||
SETTITLEMUSICENABLED(3146),
|
|
||||||
GETTITLEMUSICENABLED(3147),
|
|
||||||
SOUND_SYNTH(3200),
|
|
||||||
SOUND_SONG(3201),
|
|
||||||
SOUND_JINGLE(3202),
|
|
||||||
CLIENTCLOCK(3300),
|
|
||||||
INV_GETOBJ(3301),
|
|
||||||
INV_GETNUM(3302),
|
|
||||||
INV_TOTAL(3303),
|
|
||||||
INV_SIZE(3304),
|
|
||||||
STAT(3305),
|
|
||||||
STAT_BASE(3306),
|
|
||||||
STAT_XP(3307),
|
|
||||||
COORD(3308),
|
|
||||||
COORDX(3309),
|
|
||||||
COORDZ(3310),
|
|
||||||
COORDY(3311),
|
|
||||||
MAP_MEMBERS(3312),
|
|
||||||
INVOTHER_GETOBJ(3313),
|
|
||||||
INVOTHER_GETNUM(3314),
|
|
||||||
INVOTHER_TOTAL(3315),
|
|
||||||
STAFFMODLEVEL(3316),
|
|
||||||
REBOOTTIMER(3317),
|
|
||||||
MAP_WORLD(3318),
|
|
||||||
RUNENERGY_VISIBLE(3321),
|
|
||||||
RUNWEIGHT_VISIBLE(3322),
|
|
||||||
PLAYERMOD(3323),
|
|
||||||
WORLDFLAGS(3324),
|
|
||||||
MOVECOORD(3325),
|
|
||||||
ENUM_STRING(3400),
|
|
||||||
ENUM(3408),
|
|
||||||
ENUM_GETOUTPUTCOUNT(3411),
|
|
||||||
FRIEND_COUNT(3600),
|
|
||||||
FRIEND_GETNAME(3601),
|
|
||||||
FRIEND_GETWORLD(3602),
|
|
||||||
FRIEND_GETRANK(3603),
|
|
||||||
FRIEND_SETRANK(3604),
|
|
||||||
FRIEND_ADD(3605),
|
|
||||||
FRIEND_DEL(3606),
|
|
||||||
IGNORE_ADD(3607),
|
|
||||||
IGNORE_DEL(3608),
|
|
||||||
FRIEND_TEST(3609),
|
|
||||||
CLAN_GETCHATDISPLAYNAME(3611),
|
|
||||||
CLAN_GETCHATCOUNT(3612),
|
|
||||||
CLAN_GETCHATUSERNAME(3613),
|
|
||||||
CLAN_GETCHATUSERWORLD(3614),
|
|
||||||
CLAN_GETCHATUSERRANK(3615),
|
|
||||||
CLAN_GETCHATMINKICK(3616),
|
|
||||||
CLAN_KICKUSER(3617),
|
|
||||||
CLAN_GETCHATRANK(3618),
|
|
||||||
CLAN_JOINCHAT(3619),
|
|
||||||
CLAN_LEAVECHAT(3620),
|
|
||||||
IGNORE_COUNT(3621),
|
|
||||||
IGNORE_GETNAME(3622),
|
|
||||||
IGNORE_TEST(3623),
|
|
||||||
CLAN_ISSELF(3624),
|
|
||||||
CLAN_GETCHATOWNERNAME(3625),
|
|
||||||
CLAN_ISFRIEND(3626),
|
|
||||||
CLAN_ISIGNORE(3627),
|
|
||||||
STOCKMARKET_GETOFFERTYPE(3903),
|
|
||||||
STOCKMARKET_GETOFFERITEM(3904),
|
|
||||||
STOCKMARKET_GETOFFERPRICE(3905),
|
|
||||||
STOCKMARKET_GETOFFERCOUNT(3906),
|
|
||||||
STOCKMARKET_GETOFFERCOMPLETEDCOUNT(3907),
|
|
||||||
STOCKMARKET_GETOFFERCOMPLETEDGOLD(3908),
|
|
||||||
STOCKMARKET_ISOFFEREMPTY(3910),
|
|
||||||
STOCKMARKET_ISOFFERSTABLE(3911),
|
|
||||||
STOCKMARKET_ISOFFERFINISHED(3912),
|
|
||||||
STOCKMARKET_ISOFFERADDING(3913),
|
|
||||||
TRADINGPOST_SORTBY_NAME(3914),
|
|
||||||
TRADINGPOST_SORTBY_PRICE(3915),
|
|
||||||
TRADINGPOST_SORTFILTERBY_WORLD(3916),
|
|
||||||
TRADINGPOST_SORTBY_AGE(3917),
|
|
||||||
TRADINGPOST_SORTBY_COUNT(3918),
|
|
||||||
TRADINGPOST_GETTOTALOFFERS(3919),
|
|
||||||
TRADINGPOST_GETOFFERWORLD(3920),
|
|
||||||
TRADINGPOST_GETOFFERNAME(3921),
|
|
||||||
TRADINGPOST_GETOFFERPREVIOUSNAME(3922),
|
|
||||||
TRADINGPOST_GETOFFERAGE(3923),
|
|
||||||
TRADINGPOST_GETOFFERCOUNT(3924),
|
|
||||||
TRADINGPOST_GETOFFERPRICE(3925),
|
|
||||||
TRADINGPOST_GETOFFERITEM(3926),
|
|
||||||
ADD(4000),
|
|
||||||
SUB(4001),
|
|
||||||
MULTIPLY(4002),
|
|
||||||
DIV(4003),
|
|
||||||
RANDOM(4004),
|
|
||||||
RANDOMINC(4005),
|
|
||||||
INTERPOLATE(4006),
|
|
||||||
ADDPERCENT(4007),
|
|
||||||
SETBIT(4008),
|
|
||||||
CLEARBIT(4009),
|
|
||||||
TESTBIT(4010),
|
|
||||||
MOD(4011),
|
|
||||||
POW(4012),
|
|
||||||
INVPOW(4013),
|
|
||||||
AND(4014),
|
|
||||||
OR(4015),
|
|
||||||
SCALE(4018),
|
|
||||||
APPEND_NUM(4100),
|
|
||||||
APPEND(4101),
|
|
||||||
APPEND_SIGNNUM(4102),
|
|
||||||
LOWERCASE(4103),
|
|
||||||
FROMDATE(4104),
|
|
||||||
TEXT_GENDER(4105),
|
|
||||||
TOSTRING(4106),
|
|
||||||
COMPARE(4107),
|
|
||||||
PARAHEIGHT(4108),
|
|
||||||
PARAWIDTH(4109),
|
|
||||||
TEXT_SWITCH(4110),
|
|
||||||
ESCAPE(4111),
|
|
||||||
APPEND_CHAR(4112),
|
|
||||||
CHAR_ISPRINTABLE(4113),
|
|
||||||
CHAR_ISALPHANUMERIC(4114),
|
|
||||||
CHAR_ISALPHA(4115),
|
|
||||||
CHAR_ISNUMERIC(4116),
|
|
||||||
STRING_LENGTH(4117),
|
|
||||||
SUBSTRING(4118),
|
|
||||||
REMOVETAGS(4119),
|
|
||||||
STRING_INDEXOF_CHAR(4120),
|
|
||||||
STRING_INDEXOF_STRING(4121),
|
|
||||||
UPPERCASE(4122),
|
|
||||||
OC_NAME(4200),
|
|
||||||
OC_OP(4201),
|
|
||||||
OC_IOP(4202),
|
|
||||||
OC_COST(4203),
|
|
||||||
OC_STACKABLE(4204),
|
|
||||||
OC_CERT(4205),
|
|
||||||
OC_UNCERT(4206),
|
|
||||||
OC_MEMBERS(4207),
|
|
||||||
OC_PLACEHOLDER(4208),
|
|
||||||
OC_UNPLACEHOLDER(4209),
|
|
||||||
OC_FIND(4210),
|
|
||||||
OC_FINDNEXT(4211),
|
|
||||||
OC_FINDRESET(4212),
|
|
||||||
CHAT_GETFILTER_PUBLIC(5000),
|
|
||||||
CHAT_SETFILTER(5001),
|
|
||||||
CHAT_SENDABUSEREPORT(5002),
|
|
||||||
CHAT_GETHISTORY_BYTYPEANDLINE(5003),
|
|
||||||
CHAT_GETHISTORY_BYUID(5004),
|
|
||||||
CHAT_GETFILTER_PRIVATE(5005),
|
|
||||||
CHAT_SENDPUBLIC(5008),
|
|
||||||
CHAT_SENDPRIVATE(5009),
|
|
||||||
CHAT_PLAYERNAME(5015),
|
|
||||||
CHAT_GETFILTER_TRADE(5016),
|
|
||||||
CHAT_GETHISTORYLENGTH(5017),
|
|
||||||
CHAT_GETNEXTUID(5018),
|
|
||||||
CHAT_GETPREVUID(5019),
|
|
||||||
DOCHEAT(5020),
|
|
||||||
CHAT_SETMESSAGEFILTER(5021),
|
|
||||||
CHAT_GETMESSAGEFILTER(5022),
|
|
||||||
DEBUGMES(5023),
|
|
||||||
GETWINDOWMODE(5306),
|
|
||||||
SETWINDOWMODE(5307),
|
|
||||||
GETDEFAULTWINDOWMODE(5308),
|
|
||||||
SETDEFAULTWINDOWMODE(5309),
|
|
||||||
CAM_FORCEANGLE(5504),
|
|
||||||
CAM_GETANGLE_XA(5505),
|
|
||||||
CAM_GETANGLE_YA(5506),
|
|
||||||
CAM_SETFOLLOWHEIGHT(5530),
|
|
||||||
CAM_GETFOLLOWHEIGHT(5531),
|
|
||||||
LOGOUT(5630),
|
|
||||||
VIEWPORT_SETFOV(6200),
|
|
||||||
VIEWPORT_SETZOOM(6201),
|
|
||||||
VIEWPORT_CLAMPFOV(6202),
|
|
||||||
VIEWPORT_GETEFFECTIVESIZE(6203),
|
|
||||||
VIEWPORT_GETZOOM(6204),
|
|
||||||
VIEWPORT_GETFOV(6205),
|
|
||||||
WORLDLIST_FETCH(6500),
|
|
||||||
WORLDLIST_START(6501),
|
|
||||||
WORLDLIST_NEXT(6502),
|
|
||||||
WORLDLIST_SPECIFIC(6506),
|
|
||||||
WORLDLIST_SORT(6507),
|
|
||||||
GETWORLDINFO(6511),
|
|
||||||
SETFOLLOWEROPSLOWPRIORITY(6512),
|
|
||||||
NC_PARAM(6513),
|
|
||||||
LC_PARAM(6514),
|
|
||||||
OC_PARAM(6515),
|
|
||||||
STRUCT_PARAM(6516),
|
|
||||||
ON_MOBILE(6518),
|
|
||||||
CLIENTTYPE(6519),
|
|
||||||
MOBILE_KEYBOARDHIDE(6521),
|
|
||||||
BATTERYLEVEL(6524),
|
|
||||||
BATTERYCHARGING(6525),
|
|
||||||
WIFIAVAILABLE(6526),
|
|
||||||
WORLDMAP_GETMAPNAME(6601),
|
|
||||||
WORLDMAP_SETMAP(6602),
|
|
||||||
WORLDMAP_GETZOOM(6603),
|
|
||||||
WORLDMAP_SETZOOM(6604),
|
|
||||||
WORLDMAP_ISLOADED(6605),
|
|
||||||
WORLDMAP_JUMPTODISPLAYCOORD(6606),
|
|
||||||
WORLDMAP_JUMPTODISPLAYCOORD_INSTANT(6607),
|
|
||||||
WORLDMAP_JUMPTOSOURCECOORD(6608),
|
|
||||||
WORLDMAP_JUMPTOSOURCECOORD_INSTANT(6609),
|
|
||||||
WORLDMAP_GETDISPLAYPOSITION(6610),
|
|
||||||
WORLDMAP_GETCONFIGORIGIN(6611),
|
|
||||||
WORLDMAP_GETCONFIGSIZE(6612),
|
|
||||||
WORLDMAP_GETCONFIGBOUNDS(6613),
|
|
||||||
WORLDMAP_GETCONFIGZOOM(6614),
|
|
||||||
WORLDMAP_GETCURRENTMAP(6616),
|
|
||||||
WORLDMAP_GETDISPLAYCOORD(6617),
|
|
||||||
WORLDMAP_COORDINMAP(6621),
|
|
||||||
WORLDMAP_GETSIZE(6622),
|
|
||||||
WORLDMAP_PERPETUALFLASH(6628),
|
|
||||||
WORLDMAP_FLASHELEMENT(6629),
|
|
||||||
WORLDMAP_FLASHELEMENTCATEGORY(6630),
|
|
||||||
WORLDMAP_STOPCURRENTFLASHES(6631),
|
|
||||||
WORLDMAP_DISABLEELEMENTS(6632),
|
|
||||||
WORLDMAP_DISABLEELEMENT(6633),
|
|
||||||
WORLDMAP_DISABLEELEMENTCATEGORY(6634),
|
|
||||||
WORLDMAP_GETDISABLEELEMENTS(6635),
|
|
||||||
WORLDMAP_GETDISABLEELEMENT(6636),
|
|
||||||
WORLDMAP_GETDISABLEELEMENTCATEGORY(6637),
|
|
||||||
WORLDMAP_LISTELEMENT_START(6639),
|
|
||||||
WORLDMAP_LISTELEMENT_NEXT(6640),
|
|
||||||
MEC_TEXT(6693),
|
|
||||||
MEC_TEXTSIZE(6694),
|
|
||||||
MEC_CATEGORY(6695),
|
|
||||||
MEC_SPRITE(6696),
|
|
||||||
WORLDMAP_ELEMENT(6697),
|
|
||||||
WORLDMAP_ELEMENTCOORD(6699);
|
|
||||||
|
|
||||||
public final int opcode;
|
|
||||||
|
|
||||||
ScriptOpcode(int opcode)
|
|
||||||
{
|
|
||||||
this.opcode = opcode;
|
|
||||||
}
|
|
||||||
|
|
||||||
private static final Map<Integer, ScriptOpcode> map;
|
|
||||||
|
|
||||||
static
|
|
||||||
{
|
|
||||||
ImmutableMap.Builder<Integer, ScriptOpcode> builder = ImmutableMap.builder();
|
|
||||||
|
|
||||||
for (ScriptOpcode value : values())
|
|
||||||
{
|
|
||||||
builder.put(value.opcode, value);
|
|
||||||
}
|
|
||||||
|
|
||||||
map = builder.build();
|
|
||||||
}
|
|
||||||
|
|
||||||
public static String nameFromID(int opcode)
|
|
||||||
{
|
|
||||||
ScriptOpcode op = map.get(opcode);
|
|
||||||
|
|
||||||
if (op == null)
|
|
||||||
{
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
return op.name();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Reference in New Issue
Block a user