This will allow you to display what you see below in your client.
Purpose: To show a "Spec" option on items
Difficulty: 3/10
Files Used: Client.java, Sprite.java (Class30_sub2_sub1_sub1.java)
Base Used: Webbers renamed client
Part 1 "Class8.java" non renamed.
Find "itemDef.readValues(stream);" and below that add this
Code:
if(i == 1215 || i == 1231 || i == 5680 || i == 5698 || i == 861 || i == 1305 || i == 3204)
{
class8.aStringArray189[2] = "Spec";
}
Part 1 "ItemDef.java" renamed
Find "itemDef.readValues(stream);" and below that add this
Code:
if(i == 1215 || i == 1231 || i == 5680 || i == 5698 || i == 861 || i == 1305 || i == 3204)
{
itemDef.actions[2] = "Spec";
}
Part 2 "client.java non renamed
Find "if(l == 539)" and replace that packet with
Code:
if(l == 539)
{
if(checkSpec(i1))
{
sendPacket41(i1,j,k);
sendPacket185(7537,0,315);
} else {
aClass30_Sub2_Sub2_1192.method397((byte)6, 16);
aClass30_Sub2_Sub2_1192.method432(-431, i1);
aClass30_Sub2_Sub2_1192.method433(0, j);
aClass30_Sub2_Sub2_1192.method433(0, k);
anInt1243 = 0;
anInt1244 = k;
anInt1245 = j;
anInt1246 = 2;
if(Class9.aClass9Array210[k].anInt236 == anInt857)
anInt1246 = 1;
if(Class9.aClass9Array210[k].anInt236 == anInt1276)
anInt1246 = 3;
}
}
Now add these methods
Code:
public boolean checkSpec(int itemID)
{
switch(itemID)
{
case 1215: return true;//Dragon daggers
case 1231: return true;//Dragon_dagger(p)
case 5680: return true;//Dragon_dagger(p+)
case 5698: return true;//Dragon_dagger(p++)
case 861: return true;//Magic short bow
case 4827: return true;//Dark bow
case 1305: return true;//Dragon long
case 3204: return true;//Dragon hally
case 35: return true;//Armadyl Godsword
case 677: return true;//Bandos Godsword
}
return false;
}
public void sendPacket41(int itemID,int itemSlot,int interfaceID)
{
aClass30_Sub2_Sub2_1192.method397((byte)6, 41);
aClass30_Sub2_Sub2_1192.method399(itemID);
aClass30_Sub2_Sub2_1192.method432(-431, itemSlot);
aClass30_Sub2_Sub2_1192.method432(-431, interfaceID);
}
public void sendPacket185(int button,int toggle,int type)
{
switch(type)
{
case 646:
aClass30_Sub2_Sub2_1192.method397((byte)6, 185);
aClass30_Sub2_Sub2_1192.method399(button);
Class9 class9_2 = Class9.aClass9Array210[button];
if(class9_2.anIntArrayArray226 != null && class9_2.anIntArrayArray226[0][0] == 5)
{
int i2 = toggle;
if(anIntArray971[i2] != class9_2.anIntArray212[0])
{
anIntArray971[i2] = class9_2.anIntArray212[0];
method33(false, i2);
aBoolean1153 = true;
}
}
break;
case 315:
Class9 class9 = Class9.aClass9Array210[button];
boolean flag8 = true;
if(class9.anInt214 > 0)
flag8 = method48(505, class9);
if(flag8)
{
aClass30_Sub2_Sub2_1192.method397((byte)6, 185);
aClass30_Sub2_Sub2_1192.method399(button);
}
break;
}
}
Part 2 "client.java" renamed
Find "if(l == 539)" and replace that packet with
Code:
if(l == 539)
{
if(checkSpec(i1))
{
sendPacket41(i1,j,k);
sendPacket185(7537,0,315);
} else {
stream.createFrame(16);
stream.method432(i1);
stream.method433(j);
stream.method433(k);
atInventoryLoopCycle = 0;
atInventoryInterface = k;
atInventoryIndex = j;
atInventoryInterfaceType = 2;
if(RSInterface.interfaceCache[k].parentID == openInterfaceID)
atInventoryInterfaceType = 1;
if(RSInterface.interfaceCache[k].parentID == backDialogID)
atInventoryInterfaceType = 3;
}
}
Now add these methods
Code:
public boolean checkSpec(int itemID)
{
switch(itemID)
{
case 1215: return true;//Dragon daggers
case 1231: return true;//Dragon_dagger(p)
case 5680: return true;//Dragon_dagger(p+)
case 5698: return true;//Dragon_dagger(p++)
case 861: return true;//Magic short bow
case 4827: return true;//Dark bow
case 1305: return true;//Dragon long
case 3204: return true;//Dragon hally
case 35: return true;//Armadyl Godsword
case 677: return true;//Bandos Godsword
}
return false;
}
public void sendPacket41(int itemID,int itemSlot,int interfaceID)
{
stream.createFrame(41);
stream.writeWord(itemID);
stream.method432(itemSlot);
stream.method432(interfaceID);
}
public void sendPacket185(int button,int toggle,int type)
{
switch(type)
{
case 646:
stream.createFrame(185);
stream.writeWord(button);
RSInterface class9_2 = RSInterface.interfaceCache[button];
if(class9_2.valueIndexArray != null && class9_2.valueIndexArray[0][0] == 5)
{
int i2 = toggle;
if(variousSettings[i2] != class9_2.anIntArray212[0])
{
variousSettings[i2] = class9_2.anIntArray212[0];
method33(i2);
needDrawTabArea = true;
}
}
break;
case 315:
RSInterface class9 = RSInterface.interfaceCache[button];
boolean flag8 = true;
if(class9.anInt214 > 0)
flag8 = promptUserForInput(class9);
if(flag8)
{
stream.createFrame(185);
stream.writeWord(button);
}
break;
}
}
All done nothing else to do. If you get any errors (with renamed only) then post them. I will fix