-
Shard - Eating Food
I am going to show you how to make 'Eating Food' work on Shards Revolution
Make a new Java class at 'com.rs.worldserver.model.player.packet' named EatFood.java
Add this code:
Code:
package com.rs.worldserver.model.player.packet;
import com.rs.worldserver.Server;
import com.rs.worldserver.model.player.Client;
import com.rs.worldserver.model.player.Packet;
import com.rs.worldserver.events.Event;
import com.rs.worldserver.events.EventContainer;
import com.rs.worldserver.events.EventManager;
import com.rs.worldserver.content.skill.SkillConstants;
public class EatFood {
public static boolean eatFood(final Client client, int itemSlot) {
final int eatItem = client.playerItems[itemSlot] - 1;
int eatHeal;
switch (eatItem) {
case 1942:
eatHeal = 4;
break;
case 2140:
case 2142:
case 1965:
case 1963:
case 1985:
case 1973:
case 1982:
case 4012:
case 1961:
case 325:
case 2114:
case 2120:
case 2108:
case 319:
case 1957:
case 6883:
case 1891: // cake
eatHeal = 4;
break;
case 1893: // 2/3 cake
eatHeal = 4;
break;
case 1895: // 1/4 cake
eatHeal = 4;
break;
case 2309: // bread
eatHeal = 2;
break;
case 1901: // 1/4 choc cake
case 1971:
eatHeal = 5;
break;
case 315: // shrimp
eatHeal = 3;
break;
case 355: // mackerel
eatHeal = 6;
break;
case 339: // cod
eatHeal = 7;
break;
case 333: // trout
eatHeal = 7;
break;
case 351: // pike
eatHeal = 8;
break;
case 329: // salmon
eatHeal = 9;
break;
case 2003:
case 361: // tuna
eatHeal = 10;
break;
case 379: // lobster
eatHeal = 12;
break;
case 365: // bass
eatHeal = 13;
break;
case 2289:
case 373: // swordfish
eatHeal = 14;
break;
case 6705:
case 7946:
case 395:
eatHeal = 16;
break;
case 385:
eatHeal = 20;
break;
case 391:
eatHeal = 22;
break;
default:
return false;
}
if (client.checkBusyHP() || client.isDeadWaiting) {
return true;
}
final int featHeal = eatHeal;
client.setBusyHP(true);
client.getActionAssistant().startAnimation(829);
client.getActionAssistant().sendMessage("You eat the "+ Server.getItemManager().getItemDefinition(eatItem).getName() +".");
if(client.playerLevel[3] + featHeal >= client.getActionAssistant().getLevelForXP(client.playerXP[3])) {
client.playerLevel[3] = client.getActionAssistant().getLevelForXP(client.playerXP[3]);
} else {
client.playerLevel[3] += featHeal;
client.getActionAssistant().sendMessage("It restores some health.");
}
client.getActionAssistant().deleteItem(eatItem, itemSlot, 1);
client.getActionAssistant().setSkillLevel(3, client.playerLevel[3], client.playerXP[3]);
client.getActionAssistant().refreshSkill(3);
client.updateRequired = true;
EventManager.getSingleton().addEvent(client, new Event() {
public void execute(EventContainer c) {
if (client.getActionAssistant().getItemSlot((eatItem)) == -1) {
c.stop();
return;
}
c.stop();
}
public void stop() {
client.setBusyHP(false);
}
}, 1800);
return true;
}
}
Again make a new Java class at 'com.rs.worldserver.model.player.packet' named ClickItem.java
Add this code:
Code:
package com.rs.worldserver.model.player.packet;
import com.rs.worldserver.content.skill.Prayer;
import com.rs.worldserver.model.player.Client;
import com.rs.worldserver.model.player.Packet;
/**
* Bury bones packet.
*
* @author Graham
*
*/
public class ClickItem implements Packet {
@Override
public void handlePacket(Client client, int packetType, int packetSize) {
@SuppressWarnings("unused")
int buryA = client.getInStream().readSignedWordBigEndianA();
int burySlot = (client.getInStream().readUnsignedWord() - 128);
@SuppressWarnings("unused")
int buryItemID = (client.getInStream().readSignedWordBigEndianA() - 128);
if (!(burySlot >= 0 && burySlot < client.playerItems.length))
return;
// bury bones hook
if (Prayer.buryBones(client, burySlot)) {
}
// eating hook
if (EatFood.eatFood(client, burySlot)) {
}
}
}
Now go to 'com.rs.worldserver.model.player' and open PacketManager.java
In PacketManager.java add this:
Code:
import com.rs.worldserver.model.player.packet.ClickItem;
and this:
Code:
packetMap.put(122, new ClickItem());
Once you've done this you can remove your class 'BuryBones' because it's not found as needed anymore.
If you get any errors feel free to post them.
-
Not trying to troll, but who uses Shard?
But yeah, if you do use it, nice release i guess.
-
-
-
A fix://makes sea turtles work, since there was a raw sea turtle added
go to EatFood packet, search for "case 395:", Delete it
search for "case 391:"
above it add:
Code:
case 397: // sea turtle
eatHeal = 21;
break;
You are done, u just made sea turtles work :P
-
Thanks ^
O yeah, must be my fault about making a raw sea turtle, thanks for pointing it out.
-
-
-
-
This actually would work faster then using an enum but it's messy either way :p lol
OT: Good job :p