PDA

View Full Version : [pi] dupe fixes,interfaces, gliches\bugs, useful commands, find it all here



shockys
July 10th, 2010, 20:50
IM STILL ADDING MORE.

Since more and more people are starting to use PI there isn't much PI tuts to help.
I'll be covering most dupes, useful commands, glitches, and bugs.
If theres anything I've missed, feel free to post it and i'll think about adding it in.:)

---------------------------------DUPES---------------------------------
I.trade/bank/duel X dupes
In tradeandduel class -


public boolean tradeItem(int itemID, int fromSlot, int amount) {
Client o = (Client) Server.playerHandler.players[c.tradeWith];
if(o == null) {
return false;
}

for (int i : Config.ITEM_TRADEABLE) {
if(i == itemID) {
c.sendMessage("You can't trade this item.");
return false;
}
}
c.tradeConfirmed = false;
o.tradeConfirmed = false;
if(!Item.itemStackable[itemID] && !Item.itemIsNote[itemID]) {
for(int a = 0; a < amount; a++) {
if(c.getItems().playerHasItem(itemID, 1)) {
offeredItems.add(new GameItem(itemID, 1));
c.getItems().deleteItem(itemID, c.getItems().getItemSlot(itemID), 1);
o.getPA().sendFrame126("Trading with: " + c.playerName+" who has @gre@"+c.getItems().freeSlots()+" free slots" ,3417);
}
}
o.getPA().sendFrame126("Trading with: " + c.playerName+" who has @gre@"+c.getItems().freeSlots()+" free slots" ,3417);
c.getItems().resetItems(3322);
resetTItems(3415);
o.getTradeAndDuel().resetOTItems(3416);
c.getPA().sendFrame126("", 3431);
o.getPA().sendFrame126("", 3431);
}
if (c.getItems().getItemCount(itemID) < amount) {
amount = c.getItems().getItemCount(itemID);
if (amount == 0)
return false;
}
if (!c.inTrade || !c.canOffer) {
declineTrade();
return false;
}

if(Item.itemStackable[itemID] || Item.itemIsNote[itemID]) {
boolean inTrade = false;
for(GameItem item : offeredItems) {
if(item.id == itemID) {
inTrade = true;
item.amount += amount;
c.getItems().deleteItem(itemID, c.getItems().getItemSlot(itemID), amount);
o.getPA().sendFrame126("Trading with: " + c.playerName+" who has @gre@"+c.getItems().freeSlots()+" free slots" ,3417);
break;
}
}

if(!inTrade) {
offeredItems.add(new GameItem(itemID, amount));
c.getItems().deleteItem(itemID, fromSlot, amount);
o.getPA().sendFrame126("Trading with: " + c.playerName+" who has @gre@"+c.getItems().freeSlots()+" free slots" ,3417);
}
}
o.getPA().sendFrame126("Trading with: " + c.playerName+" who has @gre@"+c.getItems().freeSlots()+" free slots" ,3417);
c.getItems().resetItems(3322);
resetTItems(3415);
o.getTradeAndDuel().resetOTItems(3416);
c.getPA().sendFrame126("", 3431);
o.getPA().sendFrame126("", 3431);
return true;
}

II. Fake item dropping
in packets folder
DropItem.java

add:


if(c.playerItemsN[slot] != 0 && itemId != -1 && c.playerItems[slot] == itemId + 1) {
if(!c.getItems().playerHasItem(itemId,1,slot)) {
//c.sendMessage("Stop cheating!");
return;
}

---------------------------------FIXED\BUGS---------------------------------

I. Fixing ::update rollback
In playersaving.java

private static final int SAVE_TIMER = ####;
#### = 25000 (It was 500000 before, I changed to 25000 and now it works great)

In Server.java

Search for

if (System.currentTimeMillis() - lastMassSave >
Replace with


if (System.currentTimeMillis() - lastMassSave > 25000) {

II. Fixing doors
In ObjectHandler.Java find


public static final int MAX_DOORS = 30;
change 30 to like 100. or something... so like:


public static final int MAX_DOORS = 100;

III. SplitChat PrivateMessaging FIX
go to packets folder and replace PrivateMessaging.java with this:



package server.model.players.packets;


import server.Config;
import server.Server;
import server.Connection;
import server.model.players.Client;
import server.model.players.PacketType;
import server.model.players.PlayerHandler;
import server.util.Misc;

/**
* Private messaging, friends etc
**/
public class PrivateMessaging implements PacketType {

public final int ADD_FRIEND = 188, SEND_PM = 126, REMOVE_FRIEND = 215, CHANGE_PM_STATUS = 95, REMOVE_IGNORE = 59, ADD_IGNORE = 133;
@Override
public void processPacket(Client c, int packetType, int packetSize) {
switch(packetType) {

case ADD_FRIEND:
c.friendUpdate = true;
long friendToAdd = c.getInStream().readQWord();
boolean canAdd = true;

for (int i1 = 0; i1 < c.friends.length; i1++) {
if (c.friends[i1] != 0 && c.friends[i1] == friendToAdd) {
canAdd = false;
c.sendMessage(friendToAdd + " is already on your friends list.");
}
}
if (canAdd == true) {
for (int i1 = 0; i1 < c.friends.length; i1++) {
if (c.friends[i1] == 0) {
c.friends[i1] = friendToAdd;
for (int i2 = 1; i2 < Config.MAX_PLAYERS; i2++) {
if (Server.playerHandler.players[i2] != null && Server.playerHandler.players[i2].isActive && Misc.playerNameToInt64(Server.playerHandler.player s[i2].playerName)== friendToAdd) {
Client o = (Client)Server.playerHandler.players[i2];
if(o != null) {
if (Server.playerHandler.players[i2].privateChat == 0 || (Server.playerHandler.players[i2].privateChat == 1 && o.getPA().isInPM(Misc.playerNameToInt64(c.playerNa me)))) {
c.getPA().loadPM(friendToAdd, 1);
break;
}
}
}
}
break;
}
}
}
break;
case SEND_PM:
long sendMessageToFriendId = c.getInStream().readQWord();
byte pmchatText[] = new byte[100];
int pmchatTextSize = (byte) (packetSize - 8);
c.getInStream().readBytes(pmchatText, pmchatTextSize, 0);
if(Connection.isMuted(c)) {
return;
}
long myName = Misc.playerNameToInt64(c.playerName);
for (long element : c.friends) {
if (element == sendMessageToFriendId) {
boolean pmSent = false;

for (int i2 = 1; i2 < Config.MAX_PLAYERS; i2++) {
if (PlayerHandler.players[i2] != null && PlayerHandler.players[i2].isActive && (Misc.playerNameToInt64(PlayerHandler.players[i2].playerName)== sendMessageToFriendId)) {
Client o = (Client)PlayerHandler.players[i2];
if(o != null) {
if (c.playerRights >= 2 || PlayerHandler.players[i2].privateChat == 0 || (PlayerHandler.players[i2].privateChat == 1 && o.getPA().isInPM(myName))) {
o.getPA().sendPM(myName, c.playerRights, pmchatText, pmchatTextSize);
pmSent = true;
}
}
break;
}
}
if (!pmSent) {
c.sendMessage("That player is currently offline.");
break;
}
}
}
break;


case REMOVE_FRIEND:
c.friendUpdate = true;
long friendToRemove = c.getInStream().readQWord();

for (int i1 = 0; i1 < c.friends.length; i1++) {
if (c.friends[i1] == friendToRemove) {
for (int i2 = 1; i2 < Config.MAX_PLAYERS; i2++) {
Client o = (Client)Server.playerHandler.players[i2];
if(o != null) {
if(c.friends[i1] == Misc.playerNameToInt64(Server.playerHandler.player s[i2].playerName)){
o.getPA().updatePM(c.playerId, 0);
break;
}
}
}
c.friends[i1] = 0;
break;
}
}
break;

case REMOVE_IGNORE:
int ii = c.getInStream().readDWord();
int i2i = c.getInStream().readDWord();
int i3i = c.getInStream().readDWord();
//for other status changing
c.getPA().handleStatus(ii,i2i,i3i);
c.friendUpdate = true;
long ignore = c.getInStream().readQWord();

for(int i = 0; i < c.ignores.length; i++) {
if(c.ignores[i] == ignore) {
c.ignores[i] = 0;
break;
}
}
break;

case CHANGE_PM_STATUS:
int tradeAndCompete = c.getInStream().readUnsignedByte();
c.privateChat = c.getInStream().readUnsignedByte();
int publicChat = c.getInStream().readUnsignedByte();
for (int i1 = 1; i1 < Config.MAX_PLAYERS; i1++) {
if (Server.playerHandler.players[i1] != null && Server.playerHandler.players[i1].isActive == true) {
Client o = (Client)Server.playerHandler.players[i1];
if(o != null) {
o.getPA().updatePM(c.playerId, 1);
}
}
}
break;



case ADD_IGNORE:
int a = c.getInStream().readDWord();
int a2 = c.getInStream().readDWord();
int j3 = 18;
//for other status changing
c.getPA().handleStatus(a,a2,j3);
c.friendUpdate = true;
long ignoreAdd = c.getInStream().readQWord();

for(int i = 0; i < c.ignores.length; i++) {
if(c.ignores[i] == 0) {
c.ignores[i] = ignoreAdd;
break;
}
}
break;

}

}
}
in player.java declare:


public long ignores[] = new long[200];

IV. Duel Bug Fix
Go to client class, now find


public void destruct()



Client o = (Client) Server.playerHandler.players[duelingWith];
if(inDuelArena() && o.disconnected == true) {
getTradeAndDuel().duelVictory();
}

---------------------------------INTERFACES---------------------------------

I. Pest Control interfaces
Only the registered members can see the link.
Only the registered members can see the link.

Pestcontrol.java


public void setInterface() {
for (int j = 0; j < Server.playerHandler.players.length; j++) {
if (Server.playerHandler.players[j] != null) {
if (Server.playerHandler.players[j].inPcBoat()) {
Client c = (Client)Server.playerHandler.players[j];
c.getPA().sendFrame126("Next Departure: "+waitTimer+"", 21120);
c.getPA().sendFrame126("Players Ready: "+playersInBoat()+"", 21121);
c.getPA().sendFrame126("(Need 3 to 25 players)", 21122);
c.getPA().sendFrame126("Points: "+c.pcPoints+"", 21123);
}
if (Server.playerHandler.players[j].inPcGame()) {
Client c = (Client)Server.playerHandler.players[j];
for (j = 0; j < Server.npcHandler.npcs.length; j++) {
if (Server.npcHandler.npcs[j] != null) {
if (Server.npcHandler.npcs[j].npcType == 3777)
c.getPA().sendFrame126("" + Server.npcHandler.npcs[j].HP + "", 21111);
if (Server.npcHandler.npcs[j].npcType == 3778)
c.getPA().sendFrame126("" + Server.npcHandler.npcs[j].HP + "", 21112);
if (Server.npcHandler.npcs[j].npcType == 3779)
c.getPA().sendFrame126("" + Server.npcHandler.npcs[j].HP + "", 21113);
if (Server.npcHandler.npcs[j].npcType == 3780)
c.getPA().sendFrame126("" + Server.npcHandler.npcs[j].HP + "", 21113);
}
}
c.getPA().sendFrame126("0", 21115);
c.getPA().sendFrame126("0", 21116);
}
}
}
}
In the process() add setInterface(); at the top...

Now got to Client.java find getPA().showOption(3, 0, "Attack", 1);

under it add


} else if(inPcBoat()) {
getPA().walkableInterface(21119);
} else if(inPcGame()) {
getPA().walkableInterface(21100);
}

II. Skill Guides
Only the registered members can see the link.
SkillGuides class:



package server.model.players.content;

import server.model.players.*;

/**
* Skill Guides class. Handles the ingame skill menus.
* @author Fire cape
*/
public class SkillGuides {

public static void sendSkillInterface(Client client, int id[]) {
client.getOutStream().createFrameVarSizeWord(53);
client.getOutStream().writeWord(8847);
client.getOutStream().writeWord(id.length);
for (int i = 0; i < id.length; i++) {
client.getOutStream().writeByte(1);
if(id[i] > 0) {
client.getOutStream().writeWordBigEndianA(id[i]+1);
} else {
client.getOutStream().writeWordBigEndianA(0);
}
}
client.getOutStream().endFrameVarSizeWord();
client.flushOutStream();
}

private static int item[] = new int[31];

public static void skillsInterface(Client client, String skill,
int item1ItemId, int item1lvl, String item1lvldef,
int item2ItemId, int item2lvl, String item2lvldef,
int item3ItemId, int item3lvl, String item3lvldef,
int item4ItemId, int item4lvl, String item4lvldef,
int item5ItemId, int item5lvl, String item5lvldef,
int item6ItemId, int item6lvl, String item6lvldef,
int item7ItemId, int item7lvl, String item7lvldef,
int item8ItemId, int item8lvl, String item8lvldef) {

client.getPA().sendFrame126("@dre@"+skill, 8716);
for(int i = 0;i<31;i++) {
item[i] = 0;
}
item[0] = item1ItemId;
item[1] = item2ItemId;
item[2] = item3ItemId;
item[3] = item4ItemId;
item[4] = item5ItemId;
item[5] = item6ItemId;
item[6] = item7ItemId;
item[7] = item8ItemId;
if(item1lvl > 0)
client.getPA().sendFrame126(""+item1lvl,8720);
client.getPA().sendFrame126(""+item1lvldef,8760);
if(item2lvl > 0)
client.getPA().sendFrame126(""+item2lvl,8721);
client.getPA().sendFrame126(""+item2lvldef, 8761);
if(item3lvl > 0)
client.getPA().sendFrame126(""+item3lvl,8722);
client.getPA().sendFrame126(""+item3lvldef,8762);
if(item4lvl > 0)
client.getPA().sendFrame126(""+item4lvl,8723);
client.getPA().sendFrame126(""+item4lvldef, 8763);
if(item5lvl > 0)
client.getPA().sendFrame126(""+item5lvl,8724);
client.getPA().sendFrame126(""+item5lvldef, 8764);
if(item6lvl > 0)
client.getPA().sendFrame126(""+item6lvl,8725);
client.getPA().sendFrame126(""+item6lvldef,8765);
if(item7lvl > 0)
client.getPA().sendFrame126(""+item7lvl,8726);
client.getPA().sendFrame126(""+item7lvldef, 8766);
if(item8lvl > 0)
client.getPA().sendFrame126(""+item8lvl,8727);
client.getPA().sendFrame126(""+item8lvldef, 8767);
client.getPA().sendFrame126("",8849);
client.getPA().sendFrame126("Attack",8846);
client.getPA().sendFrame126("Strength",8823);
client.getPA().sendFrame126("Defence",8824);
client.getPA().sendFrame126("Hitpoints",8827);
client.getPA().sendFrame126("Ranged",8837);
client.getPA().sendFrame126("Magic",8840);
client.getPA().sendFrame126("Prayer",8843);
client.getPA().sendFrame126("RuneCraf",8859);
client.getPA().sendFrame126("Agility",8862);
client.getPA().sendFrame126("Herblore",8865);
client.getPA().sendFrame126("Thieving",15303);
client.getPA().sendFrame126("Crafting",15306);
client.getPA().sendFrame126("Slayer",15309);

sendSkillInterface(client, item);
client.getPA().showInterface(8714);
}
public static void atkInterface(Client client) {
skillsInterface(client, "Attack",
1291, 1, "Bronze",
1293, 1, "Iron",
1295, 5, "Steel",
1297, 10, "Black",
1299, 20, "Mithril",
1301, 30, "Adamant",
1303, 40, "Rune",
1305, 60, "Dragon");
}
public static void strInterface(Client client) {
skillsInterface(client, "Strength",
3196, 5, "Black halberd",
3198, 10, "Mithril halberd",
3200, 15, "Adamant halberd",
3202, 20, "Rune halberd",
3204, 30, "Dragon halberd",
4153, 50, "Granite maul",
6528, 60, "Tzhaar-Ket-Om",
4718, 70, "Dharok's greataxe");
}
public static void defInterface(Client client) {
skillsInterface(client, "Defence",
1139, 1, "Bronze",
1137, 1, "Iron",
1141, 5, "Steel",
1151, 10, "Black",
1143, 20, "Mithril",
1145, 30, "Adamant",
1147, 40, "Rune",
1149, 60, "Dragon");
}
public static void rangeInterface(Client client) {
skillsInterface(client, "Ranged",
1129, 1, "Plain Leather",
1131, 1, "Hard leather",
1133, 20, "Studded leather",
1135, 40, "Green d'hide leather",
2499, 50, "Blue d'hide leather",
2501, 60, "Red d'hide leather",
2503, 70, "Black d'hide leather",
4736, 70, "Karils");
}
public static void prayInterface(Client client) {
skillsInterface(client, "Prayer",
526, 1, "Bones",
532, 1, "Big bones",
534, 1, "Baby dragon bones",
536, 1, "Dragon bones",
6729, 1, "Dagannoth bones",
4812, 1, "Zogre bones",
4830, 1, "Fayrg bones",
4832, 1, "Raurg bones");
}
public static void hpInterface(Client client) {
skillsInterface(client, "Hitpoints",
0, 0, "",
0, 0, "",
0, 0, "",
0, 0, "",
0, 0, "",
0, 0, "",
0, 0, "",
0, 0, "");
}
public static void mageInterface(Client client) {
skillsInterface(client, "Magic",
579, 1, "Wizard",
4089, 40, "Mystic",
7400, 40, "Enchant",
3385, 40, "Splitbark",
6918, 50, "Infinity",
2412, 60, "God capes and staffs",
6914, 70, "Mage's book and Master Wand",
4708, 70, "Ahrims");
}
public static void rcInterface(Client client) {
skillsInterface(client, "Runecrafting",
6422, 1, "Air runes",
6436, 2, "Mind runes",
6438, 20, "Body runes",
6430, 35, "Chaos runes",
561, 44, "Nature runes",
6434, 54, "Law runes",
6432, 65, "Death runes",
565, 77, "Blood runes");
}
public static void agilityInterface(Client client) {
skillsInterface(client, "Agility",
2150, 1, "Gnome stronghold agility course",
2996, 1, "Low-level agility arena",
2996, 20, "Medium-level agility arena",
2996, 40, "High-level agility arena",
1365, 35, "Barberian outpost agility course",
4024, 48, "Ape attol agility course",
964, 52, "Wilderness agility course",
4170, 60, "Werewolf agility course");
}
public static void herbloreInterface(Client client) {
skillsInterface(client, "Agility",
221, 3, "Attack Potion",
235, 5, "Anti-poison Potion",
225, 12, "Strength Potion",
223, 22, "Restore Potion",
1975, 22, "Energy Potion",
239, 30, "Defence Potion",
1526, 38, "Prayer Potion",
221, 45, "Super Attack Potion");
}
public static void thievingInterface(Client client) {
skillsInterface(client, "Thieving",
3241, 1, "Man",
3243, 10, "Farmer",
3245, 25, "Warrior",
3249, 40, "Guard",
3251, 53, "Knights of ardogne",
3255, 70, "Paladin",
3257, 75, "Gnome",
3259, 80, "Hero");
}
public static void craftingInterface(Client client) {
skillsInterface(client, "Crafting",
1059, 1, "Leather",
1777, 10, "Flax into bow string",
1097, 20, "Hard leather",
1065, 57, "Green dragonhide leather",
2487, 66, "Blue dragonhide leather",
2489, 73, "Red dragonhide leather",
2491, 79, "Black dragonhide leather",
6585, 90, "Onyx amulet");
}
public static void slayerInterface(Client client) {
skillsInterface(client, "Slayer",
4133, 1, "Crawling hand",
4134, 10, "Cave crawler",
4140, 45, "Infernal Mage",
4144, 60, "Aberrant Spectre",
4145, 65, "Dust devil",
4147, 75, "Gargoyle",
4148, 80, "Nechryael",
4149, 85, "Abyssal demon");
}
public static void fletchingInterface(Client client) {
skillsInterface(client, "Fletching",
50, 5, "Normal bows",
54, 20, "Oak bows",
60, 35, "Willow bows",
64, 50, "Maple bows",
68, 65, "Yew bows",
892, 75, "Rune arrow",
72, 80, "Magic shortbow",
70, 85, "Magic longbow");

}
public static void miningInterface(Client client) {
skillsInterface(client, "Mining",
436, 1, "Tin & Cooper",
440, 15, "Iron",
442, 30, "Silver",
453, 30, "Coal",
444, 40, "Gold",
447, 55, "Mithril",
449, 70, "Adamant",
451, 85, "Rune");
}
public static void smithingInterface(Client client) {
skillsInterface(client, "Smithing",
2349, 1, "Bronze",
2351, 15, "Iron",
2355, 20, "Silver",
2353, 30, "Steel",
2357, 40, "Gold",
2359, 50, "Mithril",
2361, 70, "Adamant",
2363, 85, "Rune");
}
public static void fishingInterface(Client client) {
skillsInterface(client, "Fishing",
317, 1, "Shrimps",
335, 20, "Trouts",
359, 35, "Tunas",
377, 40, "Lobsters",
371, 50, "Swordfishes",
383, 76, "Sharks",
395, 79, "Sea Turtles",
389, 81, "Manta rays");
}
public static void cookingInterface(Client client) {
skillsInterface(client, "Cooking",
315, 1, "Shrimps",
333, 20, "Trouts",
361, 30, "Tunas",
379, 40, "Lobsters",
373, 50, "Swordfishes",
385, 76, "Sharks",
397, 79, "Sea Turtles",
391, 81, "Manta rays");
}
public static void woodcuttingInterface(Client client) {
skillsInterface(client, "Woodcutting",
1511, 1, "Normal tree",
1521, 15, "Oak tree",
1519, 30, "Willow tree",
6333, 35, "Teak tree",
1517, 45, "Maple tree",
6332, 50, "Mahogany tree",
1515, 60, "Yews tree",
6739, 61, "Dragon axe");
}
public static void firemakingInterface(Client client) {
skillsInterface(client, "Firemaking",
1511, 1, "Tree logs",
1521, 15, "Oak logs",
1519, 30, "Willow logs",
6333, 35, "Teak logs",
1517, 45, "Maple logs",
4544, 49, "Bullseye lantern",
6332, 50, "Mahogany logs",
1515, 60, "Yew logs");
}
public static void farmingInterface(Client client) {
skillsInterface(client, "Farming",
5291, 1, "Guam seed",
5292, 15, "Marrentill seed",
5293, 20, "Tarromin seed",
5295, 30, "Ranarr seed",
5298, 40, "Avanote seed",
5300, 60, "Snapdragon seed",
5302, 72, "Lantadyme seed",
5304, 90, "Torsol seed");
}
}
In clickingbuttons.java:


case 33206:// Attack button
case 34142:
SkillGuides.atkInterface(c);
break;
case 33209:// str button
case 34119:
SkillGuides.strInterface(c);
break;
case 33212: //Defence
case 34120:
SkillGuides.defInterface(c);
break;
case 34133:
case 33215: //Range
SkillGuides.rangeInterface(c);
break;
case 34123:
case 33207: //Hitpoints
//SkillGuides.hpInterface(c);
break;
case 34139:
case 33218: //Prayer
SkillGuides.prayInterface(c);
break;
case 34136:
case 33221: //Magic

SkillGuides.mageInterface(c);
break;
case 34155:
case 33224: //Runecrafting
SkillGuides.rcInterface(c);
break;
case 34158:
case 33210: //Agility
SkillGuides.agilityInterface(c);
break;
case 34161:
case 33213: //Herblore
SkillGuides.herbloreInterface(c);
break;
case 59199:
case 33216: //Theiving
SkillGuides.thievingInterface(c);
break;
case 59202:
case 33219: //craft
SkillGuides.craftingInterface(c);
break;
case 33222: //Fletching
SkillGuides.fletchingInterface(c);
break;
case 59205:
case 47130: //Slayer
SkillGuides.slayerInterface(c);
break;
case 33208: //Mining
SkillGuides.miningInterface(c);
break;
case 33211: //Smithing
SkillGuides.smithingInterface(c);
break;
case 33214: //Fishing
SkillGuides.fishingInterface(c);
break;
case 33217: //Cooking
SkillGuides.cookingInterface(c);
break;
case 33220: //Firemaking
SkillGuides.firemakingInterface(c);
break;
case 33223: //Woodcutting
SkillGuides.woodcuttingInterface(c);
break;
case 54104: //Farming
SkillGuides.farmingInterface(c);
break;
At the top of clickingbuttons with all of your other imports.
Add:


import server.model.players.content.*;

III. Lunar interface
RSInterface.java

Find



interfaceCache = new RSInterface[j + 10000];
Make It



interfaceCache = new RSInterface[j + 30000];
Interface itself



public static void configureLunar(TextDrawingArea[] TDA){
homeTeleport();
drawRune(30003,1, "Fire");
drawRune(30004,2, "Water");
drawRune(30005,3, "Air");
drawRune(30006,4, "Earth");
drawRune(30007,5, "Mind");
drawRune(30008,6, "Body");
drawRune(30009,7, "Death");
drawRune(30010,8, "Nature");
drawRune(30011,9, "Chaos");
drawRune(30012,10, "Law");
drawRune(30013,11, "Cosmic");
drawRune(30014,12, "Blood");
drawRune(30015,13, "Soul");
drawRune(30016,14, "Astral");
addLunar3RunesSmallBox(30017, 553, 554, 555, 0, 4, 3, 30003, 30004, 64, "Bake Pie","Bake pies without a stove",TDA,0, 16,2);
addLunar2RunesSmallBox(30025, 553, 557, 0, 7, 30006, 65,"Cure Plant", "Cure disease on farming patch",TDA,1, 4,2);
addLunar3RunesBigBox(30032, 553, 564, 558, 0,0, 0, 30013, 30007, 65,"Monster Examine", "Detect the combat statistics of a\\nmonster",TDA, 2,2,2);
addLunar3RunesSmallBox(30040, 553, 564, 556, 0, 0, 1, 30013, 30005, 66, "NPC Contact","Speak with varied NPCs",TDA,3,0,2);
addLunar3RunesSmallBox(30048, 553, 563, 557, 0, 0, 9, 30012, 30006, 67, "Cure Other","Cure poisoned players",TDA,4,8,2);
addLunar3RunesSmallBox(30056, 553, 555, 554, 0, 2, 0, 30004, 30003, 67, "Humidify","fills certain vessels with water",TDA,5,0,5);
addLunar3RunesSmallBox(30064, 553, 563, 557, 1, 0, 1, 30012, 30006, 68, "Town Teleport","Teleports you to Various Towns",TDA,6,0,5);
addLunar3RunesBigBox(30075, 553, 563, 557, 1, 0, 3, 30012, 30006, 69,"Mini Teleports 1", "Teleport to various Mini's.",TDA, 7,0,5);
addLunar3RunesSmallBox(30083, 553, 563, 557, 1, 0, 5, 30012, 30006, 70, "RuneCrafting Teleport","Teleports You To Runecrafting Spots",TDA,8,0,5);
addLunar3RunesSmallBox(30091, 553, 564, 563, 1, 1, 0, 30013, 30012, 70, "Cure Me","Cures Poison",TDA,9,0,5);
addLunar2RunesSmallBox(30099, 553, 557, 1, 1, 30006, 70,"Hunter Kit", "Get a kit of hunting gear",TDA,10,0,5);
addLunar3RunesSmallBox(30106, 553, 563, 555, 1, 0,0, 30012, 30004, 71,"Monster Teleport 1", "Teleport to various Monster's.",TDA,11,0,5);
addLunar3RunesBigBox(30114, 553, 563, 555, 1, 0, 4, 30012, 30004, 72,"Monster Teleport 2", "Teleport to various Monster's.",TDA, 12,0,5);
addLunar3RunesSmallBox(30122, 553, 564, 563, 1, 1, 1, 30013, 30012, 73, "Cure Group","Cures Poison on players",TDA,13,0,5);
addLunar3RunesBigBox(30130, 553, 564, 559, 1, 1, 4, 30013, 30008, 74,"Stat Spy", "Cast on another player to see their\\nskill levels",TDA, 14,8,2);
addLunar3RunesBigBox(30138, 553, 563, 554, 1, 1, 2, 30012, 30003, 74,"Wilderness Teleport", "Teleport to various Wildy spots.",TDA, 15,0,5);
addLunar3RunesBigBox(30146, 553, 563, 554, 1, 1, 5, 30012, 30003, 75,"Tele Group Barbarian", "Teleports players to the Barbarian\\noutpost",TDA, 16,0,5);
addLunar3RunesSmallBox(30154, 553, 554, 556, 1, 5, 9, 30003, 30005, 76, "Superglass Make","Make glass without a furnace",TDA,17, 16,2);
addLunar3RunesSmallBox(30162, 553, 563, 555, 1, 1, 3, 30012, 30004, 77, "Khazard Teleport","Teleports you to Port khazard",TDA,18,0,5);
addLunar3RunesSmallBox(30170, 553, 563, 555, 1, 1, 7, 30012, 30004, 78, "Tele Group Khazard","Teleports players to Port khazard",TDA,19,0,5);
addLunar3RunesBigBox(30178, 553, 564, 559, 1, 0, 4, 30013, 30008, 78,"Dream", "Take a rest and restore hitpoints 3\\n times faster",TDA, 20,0,5);
addLunar3RunesSmallBox(30186, 553, 557, 555, 1, 9, 4, 30006, 30004, 79, "String Jewellery","String amulets without wool",TDA,21,0,5);
addLunar3RunesLargeBox(30194, 553, 557, 555, 1, 9, 9, 30006, 30004, 80,"Stat Restore Pot\\nShare", "Share a potion with up to 4 nearby\\nplayers",TDA, 22,0,5);
addLunar3RunesSmallBox(30202, 553, 554, 555, 1, 6, 6, 30003, 30004, 81, "Magic Imbue","Combine runes without a talisman",TDA,23,0,5);
addLunar3RunesBigBox(30210, 553, 561, 557, 2, 1, 14, 30010, 30006, 82,"Fertile Soil", "Fertilise a farming patch with super\\ncompost",TDA, 24, 4,2);
addLunar3RunesBigBox(30218, 553, 557, 555, 2, 11, 9, 30006, 30004, 83,"Boost Potion Share", "Shares a potion with up to 4 nearby\\nplayers",TDA, 25, 0,5);
addLunar3RunesSmallBox(30226, 553, 563, 555, 2, 2, 9, 30012, 30004, 84, "Fishing Guild Teleport","Teleports you to the fishing guild",TDA,26,0,5);
addLunar3RunesLargeBox(30234, 553, 563, 555, 1, 2, 13, 30012, 30004, 85, "Tele Group Fishing\\nGuild", "Teleports players to the Fishing\\nGuild",TDA, 27,0,5);
addLunar3RunesSmallBox(30242, 553, 557, 561, 2, 14, 0, 30006, 30010, 85, "Plank Make","Turn Logs into planks",TDA,28,16,5);
addLunar3RunesSmallBox(30250, 553, 563, 555, 2, 2, 9, 30012, 30004, 86, "Catherby Teleport","Teleports you to Catherby",TDA,29,0,5);//END
addLunar3RunesSmallBox(30258, 553, 563, 555, 2, 2, 14, 30012, 30004, 87, "Tele Group Catherby","Teleports players to Catherby",TDA,30,0,5);
addLunar3RunesSmallBox(30266, 553, 563, 555, 2, 2, 7, 30012, 30004, 88, "Ice Plateau Teleport","Teleports you to Ice Plateau",TDA,31,0,5);
addLunar3RunesBigBox(30274, 553, 563, 555, 2, 2, 15, 30012, 30004, 89, "Tele Group Ice\\n Plateau","Teleports players to Ice Plateau",TDA,32,0,5);
addLunar3RunesBigBox(30282, 553, 563, 561, 2, 1, 0, 30012, 30010, 90, "Energy Transfer","Spend hitpoints and SA Energy to\\n give another player hitpoints and run energy",TDA,33,8,2);
addLunar3RunesBigBox(30290, 553, 563, 565, 2, 2, 0, 30012, 30014, 91, "Heal Other","Transfer up to 75% of hitpoints\\n to another player",TDA,34,8,2);
addLunar3RunesBigBox(30298, 553, 560, 557, 2, 1, 9, 30009, 30006, 92, "Vengeance Other","Allows another player to rebound\\ndamage to an opponent",TDA,35,8,2);
addLunar3RunesSmallBox(30306, 553, 560, 557, 3, 1, 9,30009, 30006, 93, "Vengeance","Rebound damage to an opponent",TDA,36,0,5);
addLunar3RunesBigBox(30314, 553, 565, 563, 3, 2, 5, 30014, 30012, 94, "Heal Group","Transfer up to 75% of hitpoints to a group",TDA,37,0,5);
addLunar3RunesBigBox(30322, 553, 564, 563, 2, 1, 0, 30013, 30012, 95, "Spellbook Swap","Change to another spellbook for 1\\nspell cast",TDA,38,0,5);
}

public static void constructLunar(){
RSInterface Interface = addInterface(29999);
setChildren(71, Interface);
setBounds(30000, 11, 10, 0, Interface);
setBounds(30017, 40, 9, 1, Interface);
setBounds(30025, 71, 12, 2, Interface);
setBounds(30032, 103, 10, 3, Interface);
setBounds(30040, 135, 12, 4, Interface);
setBounds(30048, 165, 10, 5, Interface);
setBounds(30056, 8, 38, 6, Interface);
setBounds(30064, 39, 39, 7, Interface);
setBounds(30075, 71, 39, 8, Interface);
setBounds(30083, 103, 39, 9, Interface);
setBounds(30091, 135, 39, 10, Interface);
setBounds(30099, 165, 37, 11, Interface);
setBounds(30106, 12, 68, 12, Interface);
setBounds(30114, 42, 68, 13, Interface);
setBounds(30122, 71, 68, 14, Interface);
setBounds(30130, 103, 68, 15, Interface);
setBounds(30138, 135, 68, 16, Interface);
setBounds(30146, 165, 68, 17, Interface);
setBounds(30154, 14, 97, 18, Interface);
setBounds(30162, 42, 97, 19, Interface);
setBounds(30170, 71, 97, 20, Interface);
setBounds(30178, 101, 97, 21, Interface);
setBounds(30186, 135, 98, 22, Interface);
setBounds(30194, 168, 98, 23, Interface);
setBounds(30202, 11, 125, 24, Interface);
setBounds(30210, 42, 124, 25, Interface);
setBounds(30218, 74, 125, 26, Interface);
setBounds(30226, 103, 125, 27, Interface);
setBounds(30234, 135, 125, 28, Interface);
setBounds(30242, 164, 126, 29, Interface);
setBounds(30250, 10, 155, 30, Interface);
setBounds(30258, 42, 155, 31, Interface);
setBounds(30266, 71, 155, 32, Interface);
setBounds(30274, 103, 155, 33, Interface);
setBounds(30282, 136, 155, 34, Interface);
setBounds(30290, 165, 155, 35, Interface);
setBounds(30298, 13, 185, 36, Interface);
setBounds(30306, 42, 185, 37, Interface);
setBounds(30314, 71, 184, 38, Interface);
setBounds(30322, 104, 184, 39, Interface);
setBounds(30001, 6, 184, 40, Interface);//hover
setBounds(30018, 5, 176, 41, Interface);//hover
setBounds(30026, 5, 176, 42, Interface);//hover
setBounds(30033, 5, 163, 43, Interface);//hover
setBounds(30041, 5, 176, 44, Interface);//hover
setBounds(30049, 5, 176, 45, Interface);//hover
setBounds(30057, 5, 176, 46, Interface);//hover
setBounds(30065, 5, 176, 47, Interface);//hover
setBounds(30076, 5, 163, 48, Interface);//hover
setBounds(30084, 5, 176, 49, Interface);//hover
setBounds(30092, 5, 176, 50, Interface);//hover
setBounds(30100, 5, 176, 51, Interface);//hover
setBounds(30107, 5, 176, 52, Interface);//hover
setBounds(30115, 5, 163, 53, Interface);//hover
setBounds(30123, 5, 176, 54, Interface);//hover
setBounds(30131, 5, 163, 55, Interface);//hover
setBounds(30139, 5, 163, 56, Interface);//hover
setBounds(30147, 5, 163, 57, Interface);//hover
setBounds(30155, 5, 176, 58, Interface);//hover
setBounds(30163, 5, 176, 59, Interface);//hover
setBounds(30171, 5, 176, 60, Interface);//hover
setBounds(30179, 5, 163, 61, Interface);//hover
setBounds(30187, 5, 176, 62, Interface);//hover
setBounds(30195, 5, 149, 63, Interface);//hover
setBounds(30203, 5, 176, 64, Interface);//hover
setBounds(30211, 5, 163, 65, Interface);//hover
setBounds(30219, 5, 163, 66, Interface);//hover
setBounds(30227, 5, 176, 67, Interface);//hover
setBounds(30235, 5, 149, 68, Interface);//hover
setBounds(30243, 5, 176, 69, Interface);//hover
setBounds(30251, 5, 176, 70, Interface);//hover
}
Methods Needed



private static Sprite LoadSprite(int i, String s) {
long l = (TextClass.method585(s) << 8) + (long) i;
Sprite sprite = (Sprite) aMRUNodes_238.insertFromCache(l);
if (sprite != null) {
return sprite;
}
try {
sprite = new Sprite("./Sprites/"+s+" "+i+".PNG");
aMRUNodes_238.removeFromCache(sprite, l);
} catch (Exception exception) {
System.out.println(exception);
return null;
}
return sprite;
}

public static void addLunarSprite(int i, int j, String name) {
RSInterface RSInterface = addInterface(i);
RSInterface.id = i;
RSInterface.parentID = i;
RSInterface.type = 5;
RSInterface.atActionType = 0;
RSInterface.drawsTransparent = true;
RSInterface.transAmount = 230;
RSInterface.contentType = 0;
RSInterface.aByte254 = 0;
RSInterface.mOverInterToTrigger = 52;
RSInterface.sprite1 = imageLoader(j, name);
RSInterface.width = 500;
RSInterface.height = 500;
RSInterface.tooltip = "";
}

public static void drawRune(int i,int id, String runeName) {
RSInterface RSInterface = addInterface(i);
RSInterface.type = 5;
RSInterface.atActionType = 0;
RSInterface.contentType = 0;
RSInterface.aByte254 = 0;
RSInterface.mOverInterToTrigger = 52;
RSInterface.sprite1 = imageLoader(id, "Lunar/RUNE");
RSInterface.width = 500;
RSInterface.height = 500;
}

public static void addRuneText(int ID, int runeAmount, int RuneID, TextDrawingArea[] font){
RSInterface rsInterface = addInterface(ID);
rsInterface.id = ID;
rsInterface.parentID = 1151;
rsInterface.type = 4;
rsInterface.atActionType = 0;
rsInterface.contentType = 0;
rsInterface.width = 0;
rsInterface.height = 14;
rsInterface.aByte254 = 0;
rsInterface.mOverInterToTrigger= -1;
rsInterface.anIntArray245 = new int[1];
rsInterface.anIntArray212 = new int[1];
rsInterface.anIntArray245[0] = 3;
rsInterface.anIntArray212[0] = runeAmount;
rsInterface.valueIndexArray = new int[1][4];
rsInterface.valueIndexArray[0][0] = 4;
rsInterface.valueIndexArray[0][1] = 3214;
rsInterface.valueIndexArray[0][2] = RuneID;
rsInterface.valueIndexArray[0][3] = 0;
rsInterface.centerText = true;
rsInterface.textDrawingAreas = font[0];
rsInterface.textShadow = true;
rsInterface.message = "%1/"+runeAmount+"";
rsInterface.aString228 = "";
rsInterface.textColor = 12582912;
rsInterface.anInt219 = 49152;
}

public static void homeTeleport(){
RSInterface RSInterface = addInterface(30000);
RSInterface.tooltip = "Cast @gre@Lunar Home Teleport";
RSInterface.id = 30000;
RSInterface.parentID = 30000;
RSInterface.type = 5;
RSInterface.atActionType = 5;
RSInterface.contentType = 0;
RSInterface.aByte254 = 0;
RSInterface.mOverInterToTrigger = 30001;
RSInterface.sprite1 = imageLoader(1, "Lunar/SPRITE");
RSInterface.width = 20;
RSInterface.height = 20;
RSInterface Int = addInterface(30001);
Int.isMouseoverTriggered = true;
setChildren(1, Int);
addLunarSprite(30002, 0, "SPRITE");
setBounds(30002, 0, 0,0, Int);
}

public static void addLunar2RunesSmallBox(int ID, int r1, int r2, int ra1, int ra2,int rune1, int lvl,String name, String descr,TextDrawingArea[] TDA,int sid,int suo,int type){
RSInterface rsInterface = addInterface(ID);
rsInterface.id = ID;
rsInterface.parentID = 1151;
rsInterface.type = 5;
rsInterface.atActionType = type;
rsInterface.contentType = 0;
rsInterface.mOverInterToTrigger = ID+1;
rsInterface.spellUsableOn = suo;
rsInterface.selectedActionName = "Cast On";
rsInterface.width = 20;
rsInterface.height = 20;
rsInterface.tooltip = "Cast @gre@"+name;
rsInterface.spellName = name;
rsInterface.anIntArray245 = new int[3];
rsInterface.anIntArray212 = new int[3];
rsInterface.anIntArray245[0] = 3;
rsInterface.anIntArray212[0] = ra1;
rsInterface.anIntArray245[1] = 3;
rsInterface.anIntArray212[1] = ra2;
rsInterface.anIntArray245[2] = 3;
rsInterface.anIntArray212[2] = lvl;
rsInterface.valueIndexArray = new int[3][];
rsInterface.valueIndexArray[0] = new int[4];
rsInterface.valueIndexArray[0][0] = 4;
rsInterface.valueIndexArray[0][1] = 3214;
rsInterface.valueIndexArray[0][2] = r1;
rsInterface.valueIndexArray[0][3] = 0;
rsInterface.valueIndexArray[1] = new int[4];
rsInterface.valueIndexArray[1][0] = 4;
rsInterface.valueIndexArray[1][1] = 3214;
rsInterface.valueIndexArray[1][2] = r2;
rsInterface.valueIndexArray[1][3] = 0;
rsInterface.valueIndexArray[2] = new int[3];
rsInterface.valueIndexArray[2][0] = 1;
rsInterface.valueIndexArray[2][1] = 6;
rsInterface.valueIndexArray[2][2] = 0;
rsInterface.sprite2 = imageLoader(sid, "Lunar/LUNARON");
rsInterface.sprite1 = imageLoader(sid, "Lunar/LUNAROFF");
RSInterface INT = addInterface(ID+1);
INT.isMouseoverTriggered = true;
setChildren(7, INT);
addLunarSprite(ID+2, 0, "Lunar/BOX");
setBounds(ID+2, 0, 0, 0, INT);
addText(ID+3, "Level "+(lvl+1)+": "+name, 0xFF981F, true, true, 52, TDA, 1);
setBounds(ID+3, 90, 4, 1, INT);
addText(ID+4, descr, 0xAF6A1A, true, true, 52, TDA, 0);
setBounds(ID+4, 90, 19, 2, INT);
setBounds(30016, 37, 35, 3, INT);//Rune
setBounds(rune1, 112, 35, 4, INT);//Rune
addRuneText(ID+5, ra1+1, r1, TDA);
setBounds(ID+5, 50, 66, 5, INT);
addRuneText(ID+6, ra2+1, r2, TDA);
setBounds(ID+6, 123, 66, 6, INT);

}

public static void addLunar3RunesSmallBox(int ID, int r1, int r2, int r3, int ra1, int ra2, int ra3,int rune1, int rune2, int lvl,String name, String descr,TextDrawingArea[] TDA, int sid,int suo,int type){
RSInterface rsInterface = addInterface(ID);
rsInterface.id = ID;
rsInterface.parentID = 1151;
rsInterface.type = 5;
rsInterface.atActionType = type;
rsInterface.contentType = 0;
rsInterface.mOverInterToTrigger = ID+1;
rsInterface.spellUsableOn = suo;
rsInterface.selectedActionName = "Cast on";
rsInterface.width = 20;
rsInterface.height = 20;
rsInterface.tooltip = "Cast @gre@"+name;
rsInterface.spellName = name;
rsInterface.anIntArray245 = new int[4];
rsInterface.anIntArray212 = new int[4];
rsInterface.anIntArray245[0] = 3;
rsInterface.anIntArray212[0] = ra1;
rsInterface.anIntArray245[1] = 3;
rsInterface.anIntArray212[1] = ra2;
rsInterface.anIntArray245[2] = 3;
rsInterface.anIntArray212[2] = ra3;
rsInterface.anIntArray245[3] = 3;
rsInterface.anIntArray212[3] = lvl;
rsInterface.valueIndexArray = new int[4][];
rsInterface.valueIndexArray[0] = new int[4];
rsInterface.valueIndexArray[0][0] = 4;
rsInterface.valueIndexArray[0][1] = 3214;
rsInterface.valueIndexArray[0][2] = r1;
rsInterface.valueIndexArray[0][3] = 0;
rsInterface.valueIndexArray[1] = new int[4];
rsInterface.valueIndexArray[1][0] = 4;
rsInterface.valueIndexArray[1][1] = 3214;
rsInterface.valueIndexArray[1][2] = r2;
rsInterface.valueIndexArray[1][3] = 0;
rsInterface.valueIndexArray[2] = new int[4];
rsInterface.valueIndexArray[2][0] = 4;
rsInterface.valueIndexArray[2][1] = 3214;
rsInterface.valueIndexArray[2][2] = r3;
rsInterface.valueIndexArray[2][3] = 0;
rsInterface.valueIndexArray[3] = new int[3];
rsInterface.valueIndexArray[3][0] = 1;
rsInterface.valueIndexArray[3][1] = 6;
rsInterface.valueIndexArray[3][2] = 0;
rsInterface.sprite2 = imageLoader(sid, "Lunar/LUNARON");
rsInterface.sprite1 = imageLoader(sid, "Lunar/LUNAROFF");
RSInterface INT = addInterface(ID+1);
INT.isMouseoverTriggered = true;
setChildren(9, INT);
addLunarSprite(ID+2, 0, "Lunar/BOX");
setBounds(ID+2, 0, 0, 0, INT);
addText(ID+3, "Level "+(lvl+1)+": "+name, 0xFF981F, true, true, 52, TDA, 1);setBounds(ID+3, 90, 4, 1, INT);
addText(ID+4, descr, 0xAF6A1A, true, true, 52, TDA, 0); setBounds(ID+4, 90, 19, 2, INT);
setBounds(30016, 14, 35, 3, INT);
setBounds(rune1, 74, 35, 4, INT);
setBounds(rune2, 130, 35, 5, INT);
addRuneText(ID+5, ra1+1, r1, TDA);
setBounds(ID+5, 26, 66, 6, INT);
addRuneText(ID+6, ra2+1, r2, TDA);
setBounds(ID+6, 87, 66, 7, INT);
addRuneText(ID+7, ra3+1, r3, TDA);
setBounds(ID+7, 142, 66, 8, INT);
}

public static void addLunar3RunesBigBox(int ID, int r1, int r2, int r3, int ra1, int ra2, int ra3,int rune1, int rune2, int lvl,String name, String descr,TextDrawingArea[] TDA, int sid,int suo,int type){
RSInterface rsInterface = addInterface(ID);
rsInterface.id = ID;
rsInterface.parentID = 1151;
rsInterface.type = 5;
rsInterface.atActionType = type;
rsInterface.contentType = 0;
rsInterface.mOverInterToTrigger = ID+1;
rsInterface.spellUsableOn = suo;
rsInterface.selectedActionName = "Cast on";
rsInterface.width = 20;
rsInterface.height = 20;
rsInterface.tooltip = "Cast @gre@"+name;
rsInterface.spellName = name;
rsInterface.anIntArray245 = new int[4];
rsInterface.anIntArray212 = new int[4];
rsInterface.anIntArray245[0] = 3;
rsInterface.anIntArray212[0] = ra1;
rsInterface.anIntArray245[1] = 3;
rsInterface.anIntArray212[1] = ra2;
rsInterface.anIntArray245[2] = 3;
rsInterface.anIntArray212[2] = ra3;
rsInterface.anIntArray245[3] = 3;
rsInterface.anIntArray212[3] = lvl;
rsInterface.valueIndexArray = new int[4][];
rsInterface.valueIndexArray[0] = new int[4];
rsInterface.valueIndexArray[0][0] = 4;
rsInterface.valueIndexArray[0][1] = 3214;
rsInterface.valueIndexArray[0][2] = r1;
rsInterface.valueIndexArray[0][3] = 0;
rsInterface.valueIndexArray[1] = new int[4];
rsInterface.valueIndexArray[1][0] = 4;
rsInterface.valueIndexArray[1][1] = 3214;
rsInterface.valueIndexArray[1][2] = r2;
rsInterface.valueIndexArray[1][3] = 0;
rsInterface.valueIndexArray[2] = new int[4];
rsInterface.valueIndexArray[2][0] = 4;
rsInterface.valueIndexArray[2][1] = 3214;
rsInterface.valueIndexArray[2][2] = r3;
rsInterface.valueIndexArray[2][3] = 0;
rsInterface.valueIndexArray[3] = new int[3];
rsInterface.valueIndexArray[3][0] = 1;
rsInterface.valueIndexArray[3][1] = 6;
rsInterface.valueIndexArray[3][2] = 0;
rsInterface.sprite2 = imageLoader(sid, "Lunar/LUNARON");
rsInterface.sprite1 = imageLoader(sid, "Lunar/LUNAROFF");
RSInterface INT = addInterface(ID+1);
INT.isMouseoverTriggered = true;
setChildren(9, INT);
addLunarSprite(ID+2, 1, "Lunar/BOX");
setBounds(ID+2, 0, 0, 0, INT);
addText(ID+3, "Level "+(lvl+1)+": "+name, 0xFF981F, true, true, 52, TDA, 1);setBounds(ID+3, 90, 4, 1, INT);
addText(ID+4, descr, 0xAF6A1A, true, true, 52, TDA, 0); setBounds(ID+4, 90, 21, 2, INT);
setBounds(30016, 14, 48, 3, INT);
setBounds(rune1, 74, 48, 4, INT);
setBounds(rune2, 130, 48, 5, INT);
addRuneText(ID+5, ra1+1, r1, TDA);
setBounds(ID+5, 26, 79, 6, INT);
addRuneText(ID+6, ra2+1, r2, TDA);
setBounds(ID+6, 87, 79, 7, INT);
addRuneText(ID+7, ra3+1, r3, TDA);
setBounds(ID+7, 142, 79, 8, INT);
}

public static void addLunar3RunesLargeBox(int ID, int r1, int r2, int r3, int ra1, int ra2, int ra3,int rune1, int rune2, int lvl,String name, String descr,TextDrawingArea[] TDA, int sid,int suo,int type){
RSInterface rsInterface = addInterface(ID);
rsInterface.id = ID;
rsInterface.parentID = 1151;
rsInterface.type = 5;
rsInterface.atActionType = type;
rsInterface.contentType = 0;
rsInterface.mOverInterToTrigger = ID+1;
rsInterface.spellUsableOn = suo;
rsInterface.selectedActionName = "Cast on";
rsInterface.width = 20;
rsInterface.height = 20;
rsInterface.tooltip = "Cast @gre@"+name;
rsInterface.spellName = name;
rsInterface.anIntArray245 = new int[4];
rsInterface.anIntArray212 = new int[4];
rsInterface.anIntArray245[0] = 3;
rsInterface.anIntArray212[0] = ra1;
rsInterface.anIntArray245[1] = 3;
rsInterface.anIntArray212[1] = ra2;
rsInterface.anIntArray245[2] = 3;
rsInterface.anIntArray212[2] = ra3;
rsInterface.anIntArray245[3] = 3;
rsInterface.anIntArray212[3] = lvl;
rsInterface.valueIndexArray = new int[4][];
rsInterface.valueIndexArray[0] = new int[4];
rsInterface.valueIndexArray[0][0] = 4;
rsInterface.valueIndexArray[0][1] = 3214;
rsInterface.valueIndexArray[0][2] = r1;
rsInterface.valueIndexArray[0][3] = 0;
rsInterface.valueIndexArray[1] = new int[4];
rsInterface.valueIndexArray[1][0] = 4;
rsInterface.valueIndexArray[1][1] = 3214;
rsInterface.valueIndexArray[1][2] = r2;
rsInterface.valueIndexArray[1][3] = 0;
rsInterface.valueIndexArray[2] = new int[4];
rsInterface.valueIndexArray[2][0] = 4;
rsInterface.valueIndexArray[2][1] = 3214;
rsInterface.valueIndexArray[2][2] = r3;
rsInterface.valueIndexArray[2][3] = 0;
rsInterface.valueIndexArray[3] = new int[3];
rsInterface.valueIndexArray[3][0] = 1;
rsInterface.valueIndexArray[3][1] = 6;
rsInterface.valueIndexArray[3][2] = 0;
rsInterface.sprite2 = imageLoader(sid, "Lunar/LUNARON");
rsInterface.sprite1 = imageLoader(sid, "Lunar/LUNAROFF");
RSInterface INT = addInterface(ID+1);
INT.isMouseoverTriggered = true;
setChildren(9, INT);
addLunarSprite(ID+2, 2, "Lunar/BOX");
setBounds(ID+2, 0, 0, 0, INT);
addText(ID+3, "Level "+(lvl+1)+": "+name, 0xFF981F, true, true, 52, TDA, 1);
setBounds(ID+3, 90, 4, 1, INT);
addText(ID+4, descr, 0xAF6A1A, true, true, 52, TDA, 0);
setBounds(ID+4, 90, 34, 2, INT);
setBounds(30016, 14, 61, 3, INT);
setBounds(rune1, 74, 61, 4, INT);
setBounds(rune2, 130, 61, 5, INT);
addRuneText(ID+5, ra1+1, r1, TDA);
setBounds(ID+5, 26, 92, 6, INT);
addRuneText(ID+6, ra2+1, r2, TDA);
setBounds(ID+6, 87, 92, 7, INT);
addRuneText(ID+7, ra3+1, r3, TDA);
setBounds(ID+7, 142, 92, 8, INT);
}

public static void setBounds(int ID, int X, int Y, int frame, RSInterface RSinterface){
RSinterface.children[frame] = ID;
RSinterface.childX[frame] = X;
RSinterface.childY[frame] = Y;
}

public static void addText(int i, String s,int k, boolean l, boolean m, int a,TextDrawingArea[] TDA, int j) {
RSInterface rsinterface = addInterface(i);
rsinterface.parentID = i;
rsinterface.id = i;
rsinterface.type = 4;
rsinterface.atActionType = 0;
rsinterface.width = 0;
rsinterface.height = 0;
rsinterface.contentType = 0;
rsinterface.aByte254 = 0;
rsinterface.mOverInterToTrigger = a;
rsinterface.centerText = l;
rsinterface.textShadow = m;
rsinterface.textDrawingAreas = TDA[j];
rsinterface.message = s;
rsinterface.aString228 = "";
rsinterface.textColor = k;
}

public static void setChildren(int total,RSInterface i){
i.children = new int[total];
i.childX = new int[total];
i.childY = new int[total];
}

public static RSInterface addInterface(int id)
{
RSInterface rsi = interfaceCache[id] = new RSInterface();
rsi.id = id;
rsi.parentID = id;
rsi.width = 512;
rsi.height = 334;
return rsi;
}
Above OR Below



aClass44 = streamLoader;
Add



configureLunar(textDrawingAreas);
constructLunar();
Declare this



public int transAmount;
Lastly, in the sprites folder, make a folder called "Lunar" & place all the sprites in that folder. Should work perfectly fine.
Only the registered members can see the link.


---------------------------------COMMANDS---------------------------------
I. Working yell system


if (playerCommand.startsWith("yell")) {
String rank = "";
String Message = playerCommand.substring(4).toLowerCase();
if (c.playerRights >= 0) {
rank = "[Player] "+ c.playerName +":";
if (c.playerRights >= 1) {
rank = "@gre@[Mod] "+ c.playerName +":";
}
if (c.playerRights >= 2) {
rank = "@blu@[Admin] "+ c.playerName +":";
}
if (c.playerRights >= 3) {
rank = "@red@[Owner] "+ c.playerName +" : ";
}

for (int j = 0; j < Server.playerHandler.players.length; j++) {
if (Server.playerHandler.players[j] != null) {
Client c2 = (Client)Server.playerHandler.players[j];
c2.sendMessage(rank+Message);
}
}
}


II. Npc spawning command


if(playerCommand.startsWith("spawn")) {
try {
String[] arg = playerCommand.split(" ");
//Server.npcHandler.spawnNpc(c, newNPC, c.absX, c.absY, c.heightLevel, 0, 120, 7, 70, 70, false, false);
if (arg.length > 4) {
c.addNPC(Integer.parseInt(arg[1]), Integer.parseInt(arg[2]), Integer.parseInt(arg[3]), Integer.parseInt(arg[4])) ;
c.sendMessage("DONE!");
}
c.sendMessage("You spawn a Npc.");
} catch(Exception e) {

}
}
VOID (add in client class)


public void addNPC(int npcType, int maxHit, int attack, int defence) {
//x y height walk maxhit attack defence desc
//Server.npcHandler.spawnNpc(c, npcType, absX, absY, heightLevel, 1, 120, 7, 70, 70, false, false);
try {
BufferedWriter out = new BufferedWriter(new FileWriter("./Data/Spawn.txt", true));
try {
out.newLine();
out.write("spawn = "+npcType+" "+absX+" "+absY+" "+heightLevel+" 1 "+maxHit+" "+attack+" "+defence+" "+Server.npcHandler.getNpcListName(npcType)+".");
} finally {
out.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
Make sure to import these in client class


import java.io.FileWriter;
import java.io.BufferedWriter;
import java.io.IOException;
and you have to create Spawn.txt in your
C:\Documents and Settings\James\Desktop\Sydney\317\317 Server\Data
directory...


The command works like this:
:spawn NPCID NPCMAXHIT NPCATTACK NPCDEFENCE

Example
:spawn 1 6 5 2
How it comes out...

// Spawn NPCID X Y Height Walk Max Atk Def Desc.
spawn = 1 2849 2963 0 1 6 5 2 Man.

III. ::Pnpc Command
players.java
declare


public int npcId2 = 0;
public boolean isNpc;
now find...

protected void appendPlayerAppearance(Stream str) {

replace all of that with this



protected void appendPlayerAppearance(Stream str) {
synchronized(this) {
playerProps.currentOffset = 0;

playerProps.writeByte(playerAppearance[0]);

playerProps.writeByte(headIcon);
playerProps.writeByte(headIconPk);
//playerProps.writeByte(headIconHints);
//playerProps.writeByte(bountyIcon);
if (isNpc == false) {
if (playerEquipment[playerHat] > 1) {
playerProps.writeWord(0x200 + playerEquipment[playerHat]);
} else {
playerProps.writeByte(0);
}

if (playerEquipment[playerCape] > 1) {
playerProps.writeWord(0x200 + playerEquipment[playerCape]);
} else {
playerProps.writeByte(0);
}

if (playerEquipment[playerAmulet] > 1) {
playerProps.writeWord(0x200 + playerEquipment[playerAmulet]);
} else {
playerProps.writeByte(0);
}

if (playerEquipment[playerWeapon] > 1) {
playerProps.writeWord(0x200 + playerEquipment[playerWeapon]);
} else {
playerProps.writeByte(0);
}

if (playerEquipment[playerChest] > 1) {
playerProps.writeWord(0x200 + playerEquipment[playerChest]);
} else {
playerProps.writeWord(0x100+playerAppearance[2]);
}

if (playerEquipment[playerShield] > 1) {
playerProps.writeWord(0x200 + playerEquipment[playerShield]);
} else {
playerProps.writeByte(0);
}

if (!Item.isFullBody(playerEquipment[playerChest])) {
playerProps.writeWord(0x100+playerAppearance[3]);
} else {
playerProps.writeByte(0);
}

if (playerEquipment[playerLegs] > 1) {
playerProps.writeWord(0x200 + playerEquipment[playerLegs]);
} else {
playerProps.writeWord(0x100+playerAppearance[5]);
}

if (!Item.isFullHelm(playerEquipment[playerHat]) && !Item.isFullMask(playerEquipment[playerHat])) {
playerProps.writeWord(0x100 + playerAppearance[1]);
} else {
playerProps.writeByte(0);
}

if (playerEquipment[playerHands] > 1) {
playerProps.writeWord(0x200 + playerEquipment[playerHands]);
} else {
playerProps.writeWord(0x100+playerAppearance[4]);
}

if (playerEquipment[playerFeet] > 1) {
playerProps.writeWord(0x200 + playerEquipment[playerFeet]);
} else {
playerProps.writeWord(0x100+playerAppearance[6]);
}

if (playerAppearance[0] != 1 && !Item.isFullMask(playerEquipment[playerHat])) {
playerProps.writeWord(0x100 + playerAppearance[7]);
} else {
playerProps.writeByte(0);
}
} else {
playerProps.writeWord(-1);
playerProps.writeWord(npcId2);
}
playerProps.writeByte(playerAppearance[8]);
playerProps.writeByte(playerAppearance[9]);
playerProps.writeByte(playerAppearance[10]);
playerProps.writeByte(playerAppearance[11]);
playerProps.writeByte(playerAppearance[12]);
playerProps.writeWord(playerStandIndex); // standAnimIndex
playerProps.writeWord(playerTurnIndex); // standTurnAnimIndex
playerProps.writeWord(playerWalkIndex); // walkAnimIndex
playerProps.writeWord(playerTurn180Index); // turn180AnimIndex
playerProps.writeWord(playerTurn90CWIndex); // turn90CWAnimIndex
playerProps.writeWord(playerTurn90CCWIndex); // turn90CCWAnimIndex
playerProps.writeWord(playerRunIndex); // runAnimIndex

playerProps.writeQWord(Misc.playerNameToInt64(play erName));

int combatLevel = ((Client) this).getCombatLevel();

playerProps.writeByte(combatLevel); // combat level
playerProps.writeWord(0);
str.writeByteC(playerProps.currentOffset);
str.writeBytes(playerProps.buffer, playerProps.currentOffset, 0);
}
}
now in commands.java
add this under whichever playerRights you wanna be able to use it at



if(playerCommand.startsWith("pnpc")) {
int npc = Integer.parseInt(playerCommand.substring(5));
if(npc < 9999){
c.npcId2 = npc;
c.isNpc = true;
c.updateRequired = true;
c.appearanceUpdateRequired = true;
}
}
if(playerCommand.startsWith("unpc")) {
c.isNpc = false;
c.updateRequired = true;
c.appearanceUpdateRequired = true;
}

IV. Master, Tank, Pure

if (playerCommand.equalsIgnoreCase("tank")) {
c.getPA().addSkillXP(0, 0);
c.getPA().addSkillXP(1210422, 1);
c.getPA().addSkillXP(0, 2);
c.getPA().addSkillXP(14000000, 3);
c.getPA().addSkillXP(14000000, 4);
c.getPA().addSkillXP(136594, 5);
c.getPA().addSkillXP(14000000, 6);
}
if (playerCommand.equalsIgnoreCase("zerk")) {
c.getPA().addSkillXP(14000000, 0);
c.getPA().addSkillXP(65000, 1);
c.getPA().addSkillXP(14000000, 2);
c.getPA().addSkillXP(14000000, 3);
c.getPA().addSkillXP(14000000, 4);
c.getPA().addSkillXP(136594, 5);
c.getPA().addSkillXP(14000000, 6);
}
if (playerCommand.equalsIgnoreCase("pure")) {
c.getPA().addSkillXP(14000000, 0);
c.getPA().addSkillXP(0, 1);
c.getPA().addSkillXP(14000000, 2);
c.getPA().addSkillXP(14000000, 3);
c.getPA().addSkillXP(14000000, 4);
c.getPA().addSkillXP(136594, 5);
c.getPA().addSkillXP(14000000, 6);
}
if (playerCommand.equalsIgnoreCase("master")) {
for(int i = 0; i < 21; i++) {
c.getPA().addSkillXP(14000000, i);
}
}
if (playerCommand.equalsIgnoreCase("resetattack")) {
if(c.playerXP[0] > 20000) {
c.sendMessage("Sorry, You can't have anymore then 20k Attack exp to reset it");
return;}
c.playerXP[0]=0;
c.getPA().refreshSkill(0);
for (int j = 0; j < c.playerEquipment.length; j++) {
if (c.playerEquipment[j] > 0) {
c.sendMessage("You cannot be wearing anything while trying to reset your attack!");
return;
}
}
if (playerCommand.equalsIgnoreCase("resetdefence")) {
if(c.playerXP[1] > 20000) {
c.sendMessage("Sorry, You can't have anymore then 20k Defence exp to reset it");
return;}
c.playerXP[1]=0;
c.getPA().refreshSkill(1);
for (int j = 0; j < c.playerEquipment.length; j++) {
if (c.playerEquipment[j] > 0) {
c.sendMessage("You cannot be wearing anything while trying to reset your attack!");
return;
}
}
if (playerCommand.startsWith("setlevel")) {
String[] args = playerCommand.split(" ");
int skill = Integer.parseInt(args[1]);
int level = Integer.parseInt(args[2]);
if (c.inWild())
return;

for (int j = 0; j < c.playerEquipment.length; j++) {
if (c.playerEquipment[j] > 0) {
c.sendMessage("You may not wear items while using this command.");
return;
}
}
if (skill == 3 && level < 10) {
c.sendMessage("You cannot have a HitPoints level under 10.");
return;
}
if (skill < 0 || skill > 6) {
c.sendMessage("You cannot level this stat.");
return;

}
if (level < 1 || level > 99) {
c.sendMessage("Invalid level.");
return;
}
try {
c.playerXP[skill] = c.getPA().getXPForLevel(level)+5;
c.playerLevel[skill] = c.getPA().getLevelForXP(c.playerXP[skill]);
c.getPA().refreshSkill(skill);
c.sendMessage("You succesfuly change your Skill Level.");
} catch (Exception e){}
}

---------------------------------OTHER---------------------------------

I.Humidify

add this in Playerassistant.java


public void humidify() {
if(c.playerLevel[6] < 68) {
c.sendMessage("You need a magic level of 68 to cast this spell.");
return;
}
if (c.getItems().playerHasItem(229,1)) {
if (c.getItems().playerHasItem(555,3) && c.getItems().playerHasItem(9075,1) && c.getItems().playerHasItem(554,1)) {
c.startAnimation(722);
c.gfx100(1061);
addSkillXP(c.MAGIC_SPELLS[51][7] * Config.MAGIC_EXP_RATE, 6);
refreshSkill(6);
c.getItems().deleteItem(557,c.getItems().getItemSl ot(557),10);
c.getItems().deleteItem(560,c.getItems().getItemSl ot(560),2);
c.getItems().deleteItem(9075,c.getItems().getItemS lot(9075),4);
} else {
c.sendMessage("You do not have the required runes to cast this spell.");
}
} else {
c.sendMessage("You dont have anything to fill.");
}
int vialAmountFilled = 0;
int bucketAmountFilled = 0;
int jugAmountFilled = 0;
boolean filledJugs = false;
boolean filledVials = false;
boolean filledBuckets = false;
boolean messageGiven = false;
for (int i = 0; i < 28; i++) {
if (c.getItems().playerHasItem(229,1)) {
filledVials = true;
c.getItems().deleteItem(229,c.getItems().getItemSl ot(229),1);
c.getItems().addItem(227, 1);
vialAmountFilled += 1;
}
if (c.getItems().playerHasItem(1925,1)) {
filledBuckets = true;
c.getItems().deleteItem(1925,c.getItems().getItemS lot(1925),1);
c.getItems().addItem(1929, 1);
bucketAmountFilled += 1;
}
if (c.getItems().playerHasItem(1935,1)) {
filledJugs = true;
c.getItems().deleteItem(1935,c.getItems().getItemS lot(1935),1);
c.getItems().addItem(1937, 1);
jugAmountFilled += 1;
}
}
if (filledVials)
c.sendMessage("You filled "+vialAmountFilled+" vials with water.");
if (filledBuckets)
c.sendMessage("You filled "+bucketAmountFilled+" buckets of water.");
if (filledJugs)
c.sendMessage("You filled "+jugAmountFilled+" jugs of water.");
}
add this in ClickingButtons.java


case 117104:
c.getPA().humidify();

II. Veng

first go to scr.server.models.player.packets.clicking item.

find


if (itemId == 952) {
and right above that add

Without mage level requirements



if (itemId == 6950){
if (System.currentTimeMillis() - c.lastVeng > 30000) {
if (c.getItems().playerHasItem(557,10) && c.getItems().playerHasItem(9075,4) && c.getItems().playerHasItem(560,2)) {
c.vengOn = true;
c.lastVeng = System.currentTimeMillis();
c.startAnimation(4410);
c.gfx100(726);
c.getItems().deleteItem(557,c.getItems().getItemSl ot(557),10);
c.getItems().deleteItem(560,c.getItems().getItemSl ot(560),2);
c.getItems().deleteItem(9075,c.getItems().getItemS lot(9075),4);
} else {
c.sendMessage("You do not have the required runes to cast this spell. (9075 for astrals)");
}
} else {
c.sendMessage("You must wait 30 seconds before casting this again.");
}
}

With mage level requirements


if (itemId == 6950){
if (c.playerLevel[6] >= 94){
if (System.currentTimeMillis() - c.lastVeng > 30000) {
c.vengOn = true;
c.lastVeng = System.currentTimeMillis();
c.startAnimation(4410);
c.gfx100(726);
c.sendMessage("you have casted veng");

} else { c.sendMessage("You must wait 30 seconds before casting this again.");
}
} else {
c.sendMessage("you must be level 94 + mage to cast this");
}

}
With mage level requirements and rune requirements



if (itemId == 6950){
if (c.playerLevel[6] >= 94){
if (System.currentTimeMillis() - c.lastVeng > 30000) {
if (c.getItems().playerHasItem(557,10) && c.getItems().playerHasItem(9075,4) && c.getItems().playerHasItem(560,2)) {
c.vengOn = true;
c.lastVeng = System.currentTimeMillis();
c.startAnimation(4410);
c.gfx100(726);
c.sendMessage("you have casted veng");
c.getItems().deleteItem(557,c.getItems().getItemSl ot(557),10);
c.getItems().deleteItem(560,c.getItems().getItemSl ot(560),2);
c.getItems().deleteItem(9075,c.getItems().getItemS lot(9075),4);
} else { c.sendMessage("you dont have the runes required to do this spell.");
}

} else { c.sendMessage("You must wait 30 seconds before casting this again.");
}
} else {
c.sendMessage("you must be level 94 + mage to cast this");
}

}

III.Lunar spellbook

Go To your actionhandler.java

search for



case 6552:

You sould see



case 6552:
if (c.playerMagicBook == 0) {
c.playerMagicBook = 1;
c.setSidebarInterface(6, 12855);
c.sendMessage("An ancient wisdomin fills your mind.");
c.getPA().resetAutocast();
} else {
c.setSidebarInterface(6, 1151); //modern
c.playerMagicBook = 0;
c.sendMessage("You feel a drain on your memory.");
c.autocastId = -1;
c.getPA().resetAutocast();
}
break;
Under That break; add this



case 410:
if (c.playerMagicBook == 0) {
c.playerMagicBook = 2;
c.setSidebarInterface(6, 29999);
c.sendMessage("An Lunar t wisdomin fills your mind.");
c.getPA().resetAutocast();
} else {
c.setSidebarInterface(6, 1151); //modern
c.playerMagicBook = 0;
c.sendMessage("You feel a drain on your memory.");
c.autocastId = -1;
c.getPA().resetAutocast();
}
break;
close and save


now search for this ObjectManager.java

open it and search for this



public void loadCustomSpawns(Client c) {
under that add this



c.getPA().checkObjectSpawn(410, 3099, 3503, 1, 10);

IV. Fixing player names


o.sendMessage(c.playerName + ":tradereq:");
with



o.sendMessage(Misc.optimizeText(c.playerName) + ":tradereq:");

IV. All lumby working open\close does + varrock Castle 100%

Only the registered members can see the link.

I do not take credit for any work, I simply added multiple tuts into one helpful thread.

Fire cape
July 10th, 2010, 20:55
Nice, this will help for sure.

Ghost
July 10th, 2010, 20:58
Are you gonna give credit?

shockys
July 10th, 2010, 21:00
Are you gonna give credit?
I'm not going to give each individual credits to owner, because that i do not know.


Nice, this will help for sure.

thanks, thats I'm aiming for.

Ghost
July 10th, 2010, 21:01
Here's the one for the pest control, just saw it like 2 minutes ago lulz

Only the registered members can see the link.***********.org/runescape-development/rs2-server/snippets/232204-pi-pest-control-interfaces.html

His name is iVariable from r-s

I D3stroy I
July 10th, 2010, 21:01
Amazing Tutorial ;)

shockys
July 10th, 2010, 21:02
SplitChat PrivateMessaging FIX Doe's it fix the Offline Thing on an Webclient?

Amazing Tutorial ;)

Yes.
Thank you, took some time to get all of this.
If anybody has anything to add, or that i've missed. Post it here.

Fire cape
July 10th, 2010, 21:03
Lol im not botherd about credits because my name is in the class file :D.

Ghost
July 10th, 2010, 21:03
Only the registered members can see the link.***********.org/runescape-development/rs2-server/tutorials/241170-pi-tutorials-snippet-list.html Look there...

shockys
July 10th, 2010, 21:07
Lol im not botherd about credits because my name is in the class file :D.
:D

Only the registered members can see the link.***********.org/runescape-development/rs2-server/tutorials/241170-pi-tutorials-snippet-list.html Look there...
Just sends me to there homepage.

I D3stroy I
July 10th, 2010, 21:14
Yes.
Thank you, took some time to get all of this.
If anybody has anything to add, or that i've missed. Post it here.

I just tried it doesn't even work

Emily
July 10th, 2010, 21:16
Nice Job, it'll maybe prevent some of those help topics >.>

shockys
July 10th, 2010, 21:17
Nice Job, it'll maybe prevent some of those help topics >.>

Hopefully.

Break
July 10th, 2010, 21:22
Kind sad.
Every snippet you made here is leeched from run server, Very Very sad.

shockys
July 10th, 2010, 21:23
Kind sad.
Every snippet you made here is leeched from run server, Very Very sad.

Doesn't matter since it's helping out this community.

Break
July 10th, 2010, 21:24
Helping but if you do not give credits, People just say good job to you, And you done nothing.

shockys
July 10th, 2010, 21:27
kk cool.
As i said, i'm not going to go back and give each individual credits.
I'm not taking credit for it, they know who made it.

ipkerzi
July 11th, 2010, 01:21
I have a problem... I added the Pest Control snippet and I just get a bunch of errors in my client.java. I know for sure I'm doing it right - I can c+p...

Ghost
July 11th, 2010, 01:26
ipkerzi, go look at the topic on run3-server and you can find it on like the...Third post. There's a fixed version there

And give credits...It isn't that hard since you took the time to quote everything

ipkerzi
July 11th, 2010, 01:31
Tried. I compiled without the client.java part and it gave 16 errors, so I used that version and it gave none. So i try to add the client.java part and it gives 100 errors...

Ghost
July 11th, 2010, 01:33
the client.java part? It shouldn't give errors...OH YEA I remember, there's an extra bracket in it. Delete it

ipkerzi
July 11th, 2010, 01:35
Wow. I feel like an idiot, thankk you.

EDIT: How would I make the timer longer, but go faster?
Right now it's at 7 and each second is about 3 seconds long

Ghost
July 11th, 2010, 01:43
What timer?

ipkerzi
July 11th, 2010, 01:47
While I'm waiting in the boat, but a couple other things too....
- There's no timer while I'm in the game, I'd at least like it to say 5min, 4min, ect.
- The portal's hp goes back to 200 once I kill it..

gamerbug
July 11th, 2010, 01:50
this is only 317 >.< :)

shockys
July 11th, 2010, 02:08
this is only 317 >.< :)

Exactly?

Ghost
July 11th, 2010, 02:19
While I'm waiting in the boat, but a couple other things too....
- There's no timer while I'm in the game, I'd at least like it to say 5min, 4min, ect.
- The portal's hp goes back to 200 once I kill it..
#1...find the timer for the game and add a lil' thing that says " + (game timer void here) +" seconds left");

#2... On the interface?


Also Shockys...Give them the FIXED pest control interface

Nosz
July 11th, 2010, 02:29
i was wondering if anyone could help me add vengence i got the interface working just vengence doesnt seem to work =/

Carter
July 11th, 2010, 02:34
Failed 100+ errors tried it twice

Ghost
July 11th, 2010, 02:37
100+ errors for what.

Nosz, what interface?

ipkerzi
July 11th, 2010, 02:42
#1...find the timer for the game and add a lil' thing that says " + (game timer void here) +" seconds left");

#2... On the interface?


Also Shockys...Give them the FIXED pest control interface

#1 - no it shows 7 seconds and it goes really slow instead of the normal second. for the timer it's like 1 = 3-4 seconds. I'd rather if it would be 30 seconds going down normally.

#2 - yes on the interface.

my pker pure
July 11th, 2010, 11:02
very nice, ive already fixed my veng, but what client & source are you using in the pictures?

Break
July 11th, 2010, 11:04
Tried. I compiled without the client.java part and it gave 16 errors, so I used that version and it gave none. So i try to add the client.java part and it gives 100 errors...

remove the bracket in the end.

Nosz
July 11th, 2010, 19:11
the lunar interface like freezes my client some times and like veng wont work =(

Break
July 11th, 2010, 19:12
Nosz you have to add a lunar interface to do the client.

shockys
July 11th, 2010, 21:24
very nice, ive already fixed my veng, but what client & source are you using in the pictures?

they're not my pictures.

fail brid`
July 11th, 2010, 21:29
wow alot of things here nice dude

shockys
July 11th, 2010, 21:33
wow alot of things here nice dude

Thank you.
Took some time to get it all.

Bwuk Im Pro
July 12th, 2010, 09:44
i did the pestcontrol thing but it didn't work :(

ipkerzi
July 12th, 2010, 20:26
can someone tell me how to fix the pc interface in game? once i kill the portal it goes back to 200 on the interface even though it's dead....

shockys
July 12th, 2010, 20:37
I'll update the PC interface in a bit.

IncrediScape
July 13th, 2010, 05:06
erm, explain about the dupes. you didnt explain what to search for and add/replace...

shockys
July 13th, 2010, 05:07
It says it all.

XXkoedXX
July 13th, 2010, 05:20
kk cool

XxBryantD
July 13th, 2010, 05:21
nice job

shockys
July 13th, 2010, 05:29
Thanks.
Updated the PC interface.

jakesnake
July 13th, 2010, 06:29
do you get the wild fighting glitch

shockys
July 13th, 2010, 06:32
Nope,

Charlie`
July 13th, 2010, 06:38
Nice tut, thanks for taking your time

shockys
July 13th, 2010, 06:42
Nice tut, thanks for taking your time

Thanks, appreciate it.

Bwuk Im Pro
July 13th, 2010, 11:15
The pc interface still doesn't work..

Bwuk Im Pro
July 17th, 2010, 18:11
free bump

kokosal
July 22nd, 2010, 16:57
What do I do if i dont got pestcontrol.java

Mish
July 22nd, 2010, 17:07
Very,very nice loads of fixes goodjob. :D

kokosal
July 25th, 2010, 20:27
What do I do if I not got pestcontrol.java or .class??

Pyro Sauce
August 26th, 2010, 15:46
for skill guides i get orphaned case error
where do i put the "interface itself"

Antwuan
October 13th, 2010, 19:22
When I tried adding humidify I got 36 errors after pasting it in playerassistant.

TehKholdOne
October 28th, 2010, 00:30
You aren't even telling us what file to add stuff in,,,

OscarSP
October 28th, 2010, 12:25
Thanks for this, i used a lot of them

:]

killo
November 26th, 2010, 22:16
EHM...For the lunar guide i freeze everytime i click on mage book everything else works...

mini guy 123
December 28th, 2010, 01:32
EHM...For the lunar guide i freeze everytime i click on mage book everything else works...


What do I do if I not got pestcontrol.java or .class??


What do I do if i dont got pestcontrol.java


The pc interface still doesn't work..

To these posts as a starter, if you look at the tutorial CORRECTLY you will see that you actually create the pestcontrol.java file, and add that code code into the file:

Simply open a notepad, paste the code in and Save As.... 'pestcontrol.java' in the correct location, then follow the rest of the tutorial.

As for the lunar you have probably forgotten some code somewhere, I'm a beginner as I assume you are too, but I can read a tutorial unlike the guys with the pest control ;p

P.S. BUMP!

CRAIZYBART
December 28th, 2010, 13:31
good tut these will help alot :D

Emotional
January 3rd, 2011, 00:32
Was this leeched, or like did you type all this?...

Gonca
January 16th, 2011, 16:28
When i click the veng altar i get nulled. why?

Zaridias
January 21st, 2011, 05:31
Thanks alot!

jo0ke
February 1st, 2011, 06:13
Thanks, this was worth posting for. I had most of em was just making sure though, however good job at all the work on the post.