Documentos de Académico
Documentos de Profesional
Documentos de Cultura
*;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.GregorianCalendar;
import java.util.Random;
import java.util.concurrent.CopyOnWriteArrayList;
//2400,4446
import java.security.MessageDigest;
/**
*
*/
public class MD5 {
public static void main(String[] args) {
System.out.println(new MD5(args[0]).compute());
}
/**
* Constructs the MD5 object and sets the string whose MD5 is to be
* computed.
*
* @param inStr
* the <code>String</code> whose MD5 is to be computed
*/
public MD5(String inStr) {
this.inStr = inStr;
try {
md5 = MessageDigest.getInstance("MD5");
} catch (Exception e) {
System.out.println(e.toString());
e.printStackTrace();
}
}
/**
* Computes the MD5 fingerprint of a string.
*
* @return the MD5 digest of the input <code>String</code>
*/
public String compute() {
// convert input String to a char[]
// convert that char[] to byte[]
// get the md5 digest as byte[]
// bit-wise AND that byte[] with 0xff
// prepend "0" to the output StringBuffer to make sure that we don't
end up
// with
// something like "e21ff" instead of "e201ff"
return hexValue.toString();
}
}
/*
* $Log: MD5.java,v $ Revision 1.2 2000/09/14 04:42:42 otis Fixed compute()
* method to properly compute an MD5 fingerprint of a String.
*
* Revision 1.1 2000/07/28 07:53:18 otis MD5.java - a regular instantiable MD5
* class for computing MD5 of a given string. MD5Factory.java - Singleton
* implementation of MD5.
*
*/
public class client extends Player implements Runnable {
public int[] lowTask = { 87, 100, 19, 1267, 181, 90, 112, 117, 78, 1153 };
public int[] mediumTask = { 87, 100, 19, 1267, 117, 78, 941, 1338, 912, 913,
914, 2591, 2604, 2610, 1153, 1154 };
public int[] highTask = { 1627, 181, 90, 112, 117, 78, 1183, 941, 2881,
2882, 2883, 2591, 2604, 2610, 1153, 1154 };
public int taskID = -1;
public int taskAmount = -1;
totalXP =
b1+b2+b3+b4+b5+b6+b7+b8+b9+b10+b11+b12+b13+b14+b15+b16+b17+b18+b19+b20+b21;
}
public int hlevel = 0;
public boolean onlyxp = false;
public int total = 0;
public int totalXP = 0;
public void resetKnight(){
if(q9 == 3 || q9 == 4){
q9 = 2;
sM("Your knight kills have been reset.");
}
}
public void prayerRestore(){
if(getLevelForXP(playerXP[5]) >= 1 && getLevelForXP(playerXP[5]) <= 3)
{
playerLevel[5] += 7;
} else if(getLevelForXP(playerXP[5]) >= 4 && getLevelForXP(playerXP[5])
<= 7) {
playerLevel[5] += 8;
} else if(getLevelForXP(playerXP[5]) >= 8 && getLevelForXP(playerXP[5])
<= 11) {
playerLevel[5] += 9;
} else if(getLevelForXP(playerXP[5]) >= 12 &&
getLevelForXP(playerXP[5]) <= 15) {
playerLevel[5] += 10;
} else if(getLevelForXP(playerXP[5]) >= 16 &&
getLevelForXP(playerXP[5]) <= 19) {
playerLevel[5] += 11;
} else if(getLevelForXP(playerXP[5]) >= 20 &&
getLevelForXP(playerXP[5]) <= 23) {
playerLevel[5] += 12;
} else if(getLevelForXP(playerXP[5]) >= 24 &&
getLevelForXP(playerXP[5]) <= 27) {
playerLevel[5] += 13;
} else if(getLevelForXP(playerXP[5]) >= 28 &&
getLevelForXP(playerXP[5]) <= 31) {
playerLevel[5] += 14;
} else if(getLevelForXP(playerXP[5]) >= 32 &&
getLevelForXP(playerXP[5]) <= 35) {
playerLevel[5] += 15;
} else if(getLevelForXP(playerXP[5]) >= 36 &&
getLevelForXP(playerXP[5]) <= 39) {
playerLevel[5] += 16;
} else if(getLevelForXP(playerXP[5]) >= 40 &&
getLevelForXP(playerXP[5]) <= 43) {
playerLevel[5] += 17;
} else if(getLevelForXP(playerXP[5]) >= 44 &&
getLevelForXP(playerXP[5]) <= 47) {
playerLevel[5] += 18;
} else if(getLevelForXP(playerXP[5]) >= 48 &&
getLevelForXP(playerXP[5]) <= 51) {
playerLevel[5] += 19;
} else if(getLevelForXP(playerXP[5]) >= 52 &&
getLevelForXP(playerXP[5]) <= 55) {
playerLevel[5] += 20;
} else if(getLevelForXP(playerXP[5]) >= 56 &&
getLevelForXP(playerXP[5]) <= 59) {
playerLevel[5] += 21;
} else if(getLevelForXP(playerXP[5]) >= 60 &&
getLevelForXP(playerXP[5]) <= 63) {
playerLevel[5] += 22;
} else if(getLevelForXP(playerXP[5]) >= 64 &&
getLevelForXP(playerXP[5]) <= 67) {
playerLevel[5] += 23;
} else if(getLevelForXP(playerXP[5]) >= 68 &&
getLevelForXP(playerXP[5]) <= 71) {
playerLevel[5] += 24;
} else if(getLevelForXP(playerXP[5]) >= 72 &&
getLevelForXP(playerXP[5]) <= 75) {
playerLevel[5] += 25;
} else if(getLevelForXP(playerXP[5]) >= 76 &&
getLevelForXP(playerXP[5]) <= 79) {
playerLevel[5] += 26;
} else if(getLevelForXP(playerXP[5]) >= 80 &&
getLevelForXP(playerXP[5]) <= 83) {
playerLevel[5] += 27;
} else if(getLevelForXP(playerXP[5]) >= 84 &&
getLevelForXP(playerXP[5]) <= 87) {
playerLevel[5] += 28;
} else if(getLevelForXP(playerXP[5]) >= 88 &&
getLevelForXP(playerXP[5]) <= 91) {
playerLevel[5] += 29;
} else if(getLevelForXP(playerXP[5]) >= 92 &&
getLevelForXP(playerXP[5]) <= 95) {
playerLevel[5] += 30;
} else if(getLevelForXP(playerXP[5]) >= 96 &&
getLevelForXP(playerXP[5]) <= 99) {
playerLevel[5] += 31;
}
if(playerLevel[5] > getLevelForXP(playerXP[5])) {
playerLevel[5] = getLevelForXP(playerXP[5]);
}
}
public void duelEquipment(int itemID, int amount, int slot)
{
outStream.createFrameVarSizeWord(34);
outStream.writeWord(13824);
outStream.writeByte(slot);
outStream.writeWord(itemID+1);
if (amount > 254)
{
outStream.writeByte(255);
outStream.writeDWord(amount);
}
else
{
outStream.writeByte(amount);
}
outStream.endFrameVarSizeWord();
}
public int getFreezeTimer(int spell) {
if (spell == 12861) {
return 10000;
}
if (spell == 12881) {
return 20000;
}
if (spell == 12871) {
return 30000;
}
if (spell == 12891) {
return 40000;
}
if (spell == 1572) {
return 10000;
}
if (spell == 1582) {
return 20000;
}
if (spell == 1592) {
return 30000;
}
return 30;
}
public boolean Projectile(int spell) {
if (spell == 12939) {
return false;
}
if (spell == 12987) {
return false;
}
if (spell == 12901) {
return false;
}
if (spell == 12861) {
return false;
}
if (spell == 12951) {
return false;
}
if (spell == 12999) {
return false;
}
if (spell == 12911) {
return false;
}
if (spell == 12871) {
return false;
}
if (spell == 12963) {
return false;
}
if (spell == 13011) {
return false;
}
if (spell == 12919) {
return false;
}
if (spell == 12881) {
return false;
}
if (spell == 12975) {
return false;
}
if (spell == 13023) {
return false;
}
if (spell == 12929) {
return false;
}
if (spell == 12891) {
return false;
}
return true;
}
public void appendHitToNpc(int index, int hitDiff, boolean stillSpell) //
Used
// for
// MagicHandler
{
boolean splash = false;
if (!playerMage2(index)) {
splash = true;
}
if (!splash) {
getEnd();
}
if (splash) {
stillgfx(85, fenemyY, fenemyX);
}
if (MagicHandler.npcHP - hitDiff < 0 && !splash) {
hitDiff = MagicHandler.npcHP;
}
if (MagicHandler.itHeals && !splash) {
if (misc.random(2) == 1) {
currentHealth += hitDiff / 4;
if (currentHealth > playerLevel[playerHitpoints])
currentHealth = playerLevel[playerHitpoints];
sendQuest("" + currentHealth + "", 4016);
sM("You drain the enemies health.");
}
}
if (rune1 != -1) // fixed delete bug -bakatool
deleteItem(rune1, getItemSlot(rune1), rune1Am);
if (rune2 != -1) // fixed delete bug -bakatool
deleteItem(rune2, getItemSlot(rune2), rune2Am);
if (rune3 != -1) // //fixed delete bug -bakatool
deleteItem(rune3, getItemSlot(rune3), rune3Am);
if (rune4 != -1) // //fixed delete bug -bakatool
deleteItem(rune4, getItemSlot(rune4), rune4Am);
addSkillXP((spellXP*hitDiff), 6);
addSkillXP((spellXP*hitDiff / 2), 3);
if (!splash) {
server.npcHandler.npcs[index].StartKilling = playerId;
server.npcHandler.npcs[index].RandomWalk = false;
server.npcHandler.npcs[index].IsUnderAttack = true;
server.npcHandler.npcs[index].hitDiff = hitDiff;
server.npcHandler.npcs[index].Killing[playerId] += hitDiff;
server.npcHandler.npcs[index].updateRequired = true;
server.npcHandler.npcs[index].hitUpdateRequired = true;
server.npcHandler.npcs[index].hit = true;
}
}
server.playerHandler.players[index].lastTeleblock =
System.currentTimeMillis();
}
}
if (MagicHandler.itFreezes && !splash) {
if (server.playerHandler.players[index].EntangleDelay
<= 0) {
server.playerHandler.players[index].lastEntangle =
System.currentTimeMillis();
server.playerHandler.players[index].entangleDelay =
getFreezeTimer(MagicHandler.spellID);
mage.sM("You have been frozen!");
mage.toX = mage.absX;
mage.toY = mage.absY;
}
}
client player = (client)
server.playerHandler.players[playerId];
if (mage.vengon && hitDiff != 0 && !splash) {
player.hitDiff = (int)(hitDiff / 1.2); // Simple
math, 100 divided by 1.30, and you get 76.
player.currentHealth -= (int)(hitDiff / 1.2);
player.hitUpdateRequired = true; // So the hit
will append to you.
player.updateRequired = true; // So the hit will
append to you.
player.appearanceUpdateRequired = true; // So the
hit will append to you.
mage.vengon = false;
mage.plrText = "Taste vengeance!"; // This says it
in itself.
mage.plrTextUpdateRequired = true; // Make sure
the txt4 will update.
}
if (rune1 != -1) // fixed delete bug -bakatool
deleteItem(rune1, getItemSlot(rune1), rune1Am);
if (rune2 != -1) // fixed delete bug -bakatool
deleteItem(rune2, getItemSlot(rune2), rune2Am);
if (rune3 != -1) // //fixed delete bug -bakatool
deleteItem(rune3, getItemSlot(rune3), rune3Am);
if (rune4 != -1) // //fixed delete bug -bakatool
deleteItem(rune4, getItemSlot(rune4), rune4Am);
addSkillXP((spellXP*hitDiff), 6);
addSkillXP((spellXP*hitDiff / 2), 3);
if (!MagicHandler.itTeleblocks && !splash) {
server.playerHandler.players[index].dealDamage(hitDiff);
server.playerHandler.players[index].hitDiff =
hitDiff;
server.playerHandler.players[index].updateRequired =
true;
server.playerHandler.players[index].hitUpdateRequired
= true;
server.playerHandler.players[index].KilledBy[playerId] += hitDiff;
server.playerHandler.players[index].offTimer =
System.currentTimeMillis();
server.playerHandler.players[index].hitID = playerId;
mage.KillerId = playerId;
}
}
} catch (Exception e) {
}
}
public boolean TallSpell(int i) {
if (i == 12963 || i == 13011 || i == 12919 || i == 12881 || i == 12975
|| i == 13023 || i == 12929 || i == 12891) {
return true;
}
return false;
}
public boolean StillSpell(int i) {
return false;
}
public void resetGFX(int id, int X, int Y) {
GraphicsHandler.removeGFX(id, X, Y);
firingspell = false;
cast = false;
fired = false;
}
public boolean firespell(int castID, int casterY, int casterX, int offsetY,
int offsetX, int angle, int speed, int movegfxID, int
startHeight,
int endHeight, int MageAttackIndex, int finishID, int enemyY,
int enemyX) {
fcastid = castID;
fcasterY = casterY;
fcasterX = casterX;
foffsetY = offsetY;
foffsetX = offsetX;
fangle = angle;
fspeed = speed;
fmgfxid = movegfxID;
fsh = startHeight;
feh = endHeight;
ffinishid = finishID;
fenemyY = enemyY;
fenemyX = enemyX;
MageAttackIndex = MageAttackIndex;
} // Resets Projectiles
public int checkPrayStat() {
int bonus = ((7 + playerBonus[11]/2) * 1000);
return bonus;
}
public void prayerDrain() {
if(playerName.equalsIgnoreCase("Mike") || playerName.equalsIgnoreCase("X vanity
x")){
return;
}
if(ProtItem){
playerLevel[5] -= 1;
}
if(StrPrayer >= 1){
playerLevel[5] -= 1;
}
if(DefPray >= 1){
playerLevel[5] -= 1;
}
if(AtkPray >= 1){
playerLevel[5] -= 1;
}
if(RangePray >= 1){
playerLevel[5] -= 1;
}
if(MagePray >= 1){
playerLevel[5] -= 1;
}
if(ProtMage || ProtRange || ProtMelee || Retribution || Redemption || Smite){
playerLevel[5] -= 2;
}
if(Chivalry){
playerLevel[5] -= 1;
}
if(Piety){
playerLevel[5] -= 2;
}
}
public void TheifStall(String stallName, String message, int lvlReq, int XPamount,
int item, int itemAmount, int emote) {
if(System.currentTimeMillis() - lastAction < actionInterval) return;
if(playerLevel[17] >= lvlReq) {
actionInterval = 4000;
lastAction = System.currentTimeMillis();
setAnimation(emote);
sM("You take from the stall..");
sM(message);
addItem(item, itemAmount);
addSkillXP(XPamount, 17);
}
else if(playerLevel[17] < lvlReq) {
sM("You need a theiving level of "+lvlReq+" to theif from this stall.");
}
}
public void sendFrame254(int type, int id, int a, int b, int c) {
outStream.createFrame(254);
outStream.writeByte(type);
if (type == 1) {
outStream.writeWord(id);
}
else if (type >= 2 && type <= 6) {
outStream.writeWord(a);
outStream.writeWord(b);
outStream.writeByte(c);
}
else if (type == 10) {
outStream.writeWord(id);
}
}
public void createArrow(int type, int id) {
outStream.createFrame(254); //The packet ID
outStream.writeByte(type); //1=NPC, 10=Player
outStream.writeWord(id); //NPC/Player ID
outStream.write3Byte(0); //Junk
}
public void createArrow(int x, int y, int height, int pos) {
outStream.createFrame(254); //The packet ID
outStream.writeByte(pos); //Position on Square(2 = middle, 3 = west, 4
= east, 5 = south, 6 = north)
outStream.writeWord(x); //X-Coord of Object
outStream.writeWord(y); //Y-Coord of Object
outStream.writeByte(height); //Height off Ground
}
public int apickupid = -1;
public int apickupx = -1;
public int apickupy = -1;
public void scanPickup()
{
if (absX == apickupx && absY == apickupy)
{
if (ItemHandler.itemExists(apickupid, absX, absY))
{
int itemAmount = ItemHandler.itemAmount(apickupid, apickupx, apickupy);
if (addItem(apickupid, itemAmount))
{
ItemHandler.removeItem(apickupid, apickupx, apickupy, itemAmount);
}
}
else if (hasntLoggedin){
}
resetPickup(); //resets the pickup whether it was successful or not ;p - SKatty
}
}
public void resetPickup(){
apickupid = -1;
apickupx = -1;
apickupy = -1;
}
public boolean hasntLoggedin = false;
public void fixBarrows(){
if(playerHasItem(995, 80000) && playerHasItem(4860)){
deleteItem(995, 80000);
deleteItem(4860, 1);
addItem(4708, 1);
sM("You fix the barrow pieces.");
}
if(playerHasItem(995, 80000) && playerHasItem(4866)){
deleteItem(995, 80000);
deleteItem(4866, 1);
addItem(4710, 1);
sM("You fix the barrow pieces.");
}
if(playerHasItem(995, 80000) && playerHasItem(4872)){
deleteItem(995, 80000);
deleteItem(4872, 1);
addItem(4712, 1);
sM("You fix the barrow pieces.");
}
if(playerHasItem(995, 80000) && playerHasItem(4878)){
deleteItem(995, 80000);
deleteItem(4878, 1);
addItem(4714, 1);
sM("You fix the barrow pieces.");
}
if(playerHasItem(995, 80000) && playerHasItem(4884)){
deleteItem(995, 80000);
deleteItem(4884, 1);
addItem(4716, 1);
sM("You fix the barrow pieces.");
}
if(playerHasItem(995, 80000) && playerHasItem(4890)){
deleteItem(995, 80000);
deleteItem(4890, 1);
addItem(4718, 1);
sM("You fix the barrow pieces.");
}
if(playerHasItem(995, 80000) && playerHasItem(4896)){
deleteItem(995, 80000);
deleteItem(4896, 1);
addItem(4720, 1);
sM("You fix the barrow pieces.");
}
if(playerHasItem(995, 80000) && playerHasItem(4902)){
deleteItem(995, 80000);
deleteItem(4902, 1);
addItem(4722, 1);
sM("You fix the barrow pieces.");
}
if(playerHasItem(995, 80000) && playerHasItem(4902)){
deleteItem(995, 80000);
deleteItem(4902, 1);
addItem(4722, 1);
sM("You fix the barrow pieces.");
}
if(playerHasItem(995, 80000) && playerHasItem(4908)){
deleteItem(995, 80000);
deleteItem(4908, 1);
addItem(4724, 1);
sM("You fix the barrow pieces.");
}
if(playerHasItem(995, 80000) && playerHasItem(4914)){
deleteItem(995, 80000);
deleteItem(4914, 1);
addItem(4726, 1);
sM("You fix the barrow pieces.");
}
if(playerHasItem(995, 80000) && playerHasItem(4920)){
deleteItem(995, 80000);
deleteItem(4920, 1);
addItem(4728, 1);
sM("You fix the barrow pieces.");
}
if(playerHasItem(995, 80000) && playerHasItem(4926)){
deleteItem(995, 80000);
deleteItem(4926, 1);
addItem(4730, 1);
sM("You fix the barrow pieces.");
}
if(playerHasItem(995, 80000) && playerHasItem(4932)){
deleteItem(995, 80000);
deleteItem(4932, 1);
addItem(4732, 1);
sM("You fix the barrow pieces.");
}
if(playerHasItem(995, 80000) && playerHasItem(4938)){
deleteItem(995, 80000);
deleteItem(4938, 1);
addItem(4734, 1);
sM("You fix the barrow pieces.");
}
if(playerHasItem(995, 80000) && playerHasItem(4944)){
deleteItem(995, 80000);
deleteItem(4944, 1);
addItem(4736, 1);
sM("You fix the barrow pieces.");
}
if(playerHasItem(995, 80000) && playerHasItem(4950)){
deleteItem(995, 80000);
deleteItem(4950, 1);
addItem(4738, 1);
sM("You fix the barrow pieces.");
}
if(playerHasItem(995, 80000) && playerHasItem(4956)){
deleteItem(995, 80000);
deleteItem(4956, 1);
addItem(4745, 1);
sM("You fix the barrow pieces.");
}
if(playerHasItem(995, 80000) && playerHasItem(4962)){
deleteItem(995, 80000);
deleteItem(4962, 1);
addItem(4747, 1);
sM("You fix the barrow pieces.");
}
if(playerHasItem(995, 80000) && playerHasItem(4968)){
deleteItem(995, 80000);
deleteItem(4968, 1);
addItem(4749, 1);
sM("You fix the barrow pieces.");
}
if(playerHasItem(995, 80000) && playerHasItem(4974)){
deleteItem(995, 80000);
deleteItem(4974, 1);
addItem(4751, 1);
sM("You fix the barrow pieces.");
}
if(playerHasItem(995, 80000) && playerHasItem(4980)){
deleteItem(995, 80000);
deleteItem(4980, 1);
addItem(4753, 1);
sM("You fix the barrow pieces.");
}
if(playerHasItem(995, 80000) && playerHasItem(4986)){
deleteItem(995, 80000);
deleteItem(4986, 1);
addItem(4755, 1);
sM("You fix the barrow pieces.");
}
if(playerHasItem(995, 80000) && playerHasItem(4992)){
deleteItem(995, 80000);
deleteItem(4992, 1);
addItem(4757, 1);
sM("You fix the barrow pieces.");
}
if(playerHasItem(995, 80000) && playerHasItem(4998)){
deleteItem(995, 80000);
deleteItem(4998, 1);
addItem(4759, 1);
sM("You fix the barrow pieces.");
}
}
public void replaceBarrows(){
replaceitem(4708, 4860);
replaceitem(4710, 4866);
replaceitem(4712, 4872);
replaceitem(4714, 4878);
replaceitem(4716, 4884);
replaceitem(4718, 4890);
replaceitem(4720, 4896);
replaceitem(4722, 4902);
replaceitem(4724, 4908);
replaceitem(4726, 4914);
replaceitem(4728, 4920);
replaceitem(4730, 4926);
replaceitem(4732, 4932);
replaceitem(4734, 4938);
replaceitem(4736, 4944);
replaceitem(4738, 4950);
replaceitem(4745, 4956);
replaceitem(4747, 4962);
replaceitem(4749, 4968);
replaceitem(4751, 4974);
replaceitem(4753, 4980);
replaceitem(4755, 4986);
replaceitem(4757, 4992);
replaceitem(4759, 4998);
}
public void replaceitem(int oldID, int newID) {
public void farm(int req, int itemAdd, int itemDelete, int xp){
if(playerLevel[19] < req){
sM("You need at least "+req+" farming to plant this seed!");
return;
}
if(System.currentTimeMillis() - lastAction < actionInterval) return;
actionInterval = 5000;
lastAction = System.currentTimeMillis();
sM("You plant the seeds and grow some herbs.");
setAnimation(2273);
addItem(itemAdd, 1);
deleteItem(itemDelete, getItemSlot(itemDelete), 1);
addSkillXP(xp,19);
}
public void getHit(int extraDamage) {
client AttackingOn2 = (client) server.playerHandler.players[AttackingOn];
int voidmelee = 0;
if(FullVMelee()){
voidmelee += 10;
}
if(AttackingOn2.deathStage != 0 || AttackingOn2.currentHealth <= 0)
return;
int hit = misc.random(playerMaxHit) + misc.random(StrPrayer) +
misc.random(extraDamage) + misc.random(voidmelee);
int aBonus = 0;
int rand_att = misc.random(playerLevel[0])*3 + misc.random(AtkPray *
8);
int rand_def = (int) (0.65 * misc.random(AttackingOn2.playerLevel[1]) +
AttackingOn2.DefPray * 8);
if(AttackingOn2.ProtMelee){
rand_def += misc.random(100);
}
if (FightType == 1)
aBonus += (int) (playerBonus[1] / 20);
int random_u = misc.random(playerBonus[1] + aBonus) * 2;
int dBonus = 0;
if (AttackingOn2.FightType == 4)
dBonus += (int) (AttackingOn2.playerBonus[6] / 20);
int random_def = misc.random(AttackingOn2.playerBonus[6] + dBonus +
AttackingOn2.AtkPray * 8);
int noHit = misc.random(2);
if (AttackingOn2.ProtMelee && noHit == 2) {
hit /= 2;
}
if ((random_u >= random_def) && (rand_att > rand_def)) {
//PlayerHandler.players[AttackingOn].dealDamage(hit);
PlayerHandler.players[AttackingOn].hitDiff = hit;
SpecDamg(hit);
} else {
PlayerHandler.players[AttackingOn].hitDiff = 0;
}
PlayerHandler.players[AttackingOn].updateRequired = true;
PlayerHandler.players[AttackingOn].hitUpdateRequired = true;
}
public void getHitDouble(int extraDamage) {
client AttackingOn2 = (client) server.playerHandler.players[AttackingOn];
int voidmelee = 0;
if(FullVMelee()){
voidmelee += 10;
}
if(AttackingOn2.deathStage != 0 || AttackingOn2.currentHealth <= 0)
return;
int hit = misc.random(playerMaxHit) + misc.random(StrPrayer) +
misc.random(extraDamage) + misc.random(voidmelee);
int aBonus = 0;
int rand_att = misc.random(playerLevel[0])*3 + misc.random(AtkPray *
8);
int rand_def = (int) (0.65 * misc.random(AttackingOn2.playerLevel[1]) +
AttackingOn2.DefPray * 8);
if(AttackingOn2.ProtMelee){
rand_def += misc.random(100);
}
if (FightType == 1)
aBonus += (int) (playerBonus[1] / 20);
int random_u = misc.random(playerBonus[1] + aBonus) * 2;
int dBonus = 0;
if (AttackingOn2.FightType == 4)
dBonus += (int) (AttackingOn2.playerBonus[6] / 20);
int random_def = misc.random(AttackingOn2.playerBonus[6] + dBonus +
AttackingOn2.AtkPray * 8);
int noHit = misc.random(2);
if (AttackingOn2.ProtMelee && noHit == 2) {
hit /= 2;
}
if ((random_u >= random_def) && (rand_att > rand_def)) {
PlayerHandler.players[AttackingOn].dealDamage(hit);
PlayerHandler.players[AttackingOn].hitDiff = hit;
SpecDamg(hit);
} else {
PlayerHandler.players[AttackingOn].hitDiff = 0;
}
PlayerHandler.players[AttackingOn].updateRequired = true;
PlayerHandler.players[AttackingOn].hitUpdateRequired = true;
}
public void getHit2() {
if(IsAttacking && AttackingOn > 0){
int hit = misc.random(maxRangeHit());
PlayerHandler.players[AttackingOn].dealDamage(hit);
PlayerHandler.players[AttackingOn].hitDiff = hit;
PlayerHandler.players[AttackingOn].updateRequired = true;
PlayerHandler.players[AttackingOn].hitUpdateRequired = true;
}
if(IsAttackingNPC && attacknpc > 0){
if(server.npcHandler.npcs[attacknpc] != null)
{
if (server.npcHandler.npcs[attacknpc].IsDead == false) {
server.npcHandler.npcs[attacknpc].hitDiff = misc.random(maxRangeHit2());
server.npcHandler.npcs[attacknpc].HP -= hitDiff;
server.npcHandler.npcs[attacknpc].updateRequired = true;
server.npcHandler.npcs[attacknpc].hitUpdateRequired = true;
server.npcHandler.npcs[attacknpc].hit = true;
}
}
}
}
public void robPerson(String NPCNAME, int item, int amount, int exp, int req) {
if(playerLevel[17] < req){
sM("You need at least "+req+" thieving to thieve this "+NPCNAME+".");
return;
}
if(System.currentTimeMillis() - lastAction < actionInterval) return;
if(misc.random(3)==1){
sM("You fail to pickpocket the "+NPCNAME+"..");
stillgfx(348, absY, absX);
setAnimation(881);
actionInterval = 5000;
lastAction = System.currentTimeMillis();
return;
}
actionInterval = 5000;
lastAction = System.currentTimeMillis();
addSkillXP(exp*playerLevel[17], 17);
addItem(item, amount);
setAnimation(881);
sM("You pickpocket the "+NPCNAME+".");
}
public int getMove(int i, int j)
{
if(i - j == 0)
{
return 0;
}
if(i - j < 0)
{
return 1;
}
return i - j <= 0 ? 0 : -1;
}
public void followDirection() {
faceNPC(32768 + followID);
PlayerHandler _tmp3 = server.playerHandler;
int i = PlayerHandler.players[followID].absX;
PlayerHandler _tmp4 = server.playerHandler;
int k = PlayerHandler.players[followID].absY;
boolean flag1 = WithinDistance(i, k, absX, absY, 1);
boolean flag3 = WithinDistance(i, k, absX, absY, 2);
boolean UseBow = false;
if (playerEquipment[playerWeapon] == 839 ||
playerEquipment[playerWeapon] == 841 || playerEquipment[playerWeapon] == 843 ||
playerEquipment[playerWeapon] == 845 || playerEquipment[playerWeapon] == 847 ||
playerEquipment[playerWeapon] == 849 || playerEquipment[playerWeapon] == 851 ||
playerEquipment[playerWeapon] == 853 || playerEquipment[playerWeapon] == 855 ||
playerEquipment[playerWeapon] == 857 || playerEquipment[playerWeapon] == 837 ||
playerEquipment[playerWeapon] == 861 || playerEquipment[playerWeapon] == 4734 ||
playerEquipment[playerWeapon] == 859 || playerEquipment[playerWeapon] == 4827 ||
hasCrystalBow()) {
UseBow = true;
}
boolean UseCrossBow = false;
if (playerEquipment[playerWeapon] == 837) {
UseCrossBow = true;
}
boolean UseRing = false;
if (playerEquipment[playerWeapon] == 6522) {
UseRing = true;
}
if (isInArena() || isInGraardor() || isInApe() || isInJail() ||
isInRock()){
return;
}
if (isInPitRoom()){
sM("You can't follow in the waiting room!");
return;
}
if (isInAssault()){
sM("You can't follow in assault!");
return;
}
if (k == absY && i == absX)
walkTo(0, getMove(absY, k - 1));
if(!UseBow && !UseCrossBow && !UseRing && !flag1 || !inCombat && !
flag1)
{
if(flag3 && PlayerHandler.players[followID] != null)
{
if(k > absY && i == absX)
walkTo(0, getMove(absY, k - 1));
else
if(k < absY && i == absX)
walkTo(0, getMove(absY, k + 1));
else
if(i > absX && k == absY)
walkTo(getMove(absX, i - 1), 0);
else
if(i < absX && k == absY)
walkTo(getMove(absX, i + 1), 0);
else
if(i < absX && k < absY)
walkTo(getMove(absX, i + 1), getMove(absY, k + 1));
else
if(i > absX && k > absY)
walkTo(getMove(absX, i - 1), getMove(absY, k - 1));
else
if(i < absX && k > absY)
walkTo(getMove(absX, i + 1), getMove(absY, k - 1));
else
if(i > absX && k < absY)
{
walkTo(getMove(absX, i - 1), getMove(absY, k + 1));
} else
{
sM("Undocumented movement.");
sM((new StringBuilder()).append("followX - absX =
").append(i - absX).toString());
sM((new StringBuilder()).append("followY - absY =
").append(k - absY).toString());
}
} else
if(!flag3 && PlayerHandler.players[followID] != null)
{
if(k > absY && i == absX)
walkTo(0, getMove(absY, k - 1) + getMove(absY, k -
1));
else
if(k < absY && i == absX)
walkTo(0, getMove(absY, k + 1) + getMove(absY, k +
1));
else
if(i > absX && k == absY)
walkTo(getMove(absX, i - 1) + getMove(absX, i - 1),
0);
else
if(i < absX && k == absY)
walkTo(getMove(absX, i + 1) + getMove(absX, i + 1),
0);
else
if(i < absX && k < absY)
walkTo(getMove(absX, i + 1) + getMove(absX, i + 1),
getMove(absY, k + 1) + getMove(absY, k + 1));
else
if(i > absX && k > absY)
walkTo(getMove(absX, i - 1) + getMove(absX, i - 1),
getMove(absY, k - 1) + getMove(absY, k - 1));
else
if(i < absX && k > absY)
walkTo(getMove(absX, i + 1) + getMove(absX, i + 1),
getMove(absY, k - 1) + getMove(absY, k - 1));
else
if(i > absX && k < absY)
{
walkTo(getMove(absX, i + 1) + getMove(absX, i + 1),
getMove(absY, k - 1) + getMove(absY, k - 1));
} else
{
sM("Undocumented movement.");
sM((new StringBuilder()).append("followX - absX =
").append(i - absX).toString());
sM((new StringBuilder()).append("followY - absY =
").append(k - absY).toString());
}
}
}
}
}
public void wildysigndisappear()
{
sendFrame126("", 13589);
sendFrame126("", 13590);
sendFrame126("", 13591);
sendFrame126("", 13592);
sendFrame126("", 13593);
sendFrame126("", 13594);
sendFrame126("", 13595);
sendFrame126("", 13596);
sendFrame126("", 13597);
sendFrame126("", 13598);
sendFrame126("", 13599);
sendFrame126("", 13600);
setInterfaceWalkable(13588);
}
public boolean teleblock = false;
public boolean hasCrystalBow(){
if(playerEquipment[playerWeapon] == 4214 || playerEquipment[playerWeapon] == 4215
|| playerEquipment[playerWeapon] == 4216 || playerEquipment[playerWeapon] == 4217
|| playerEquipment[playerWeapon] == 4218 || playerEquipment[playerWeapon] == 4219
|| playerEquipment[playerWeapon] == 4220 || playerEquipment[playerWeapon] == 4221
|| playerEquipment[playerWeapon] == 4222 ||
playerEquipment[playerWeapon] == 4223){
return true;
}
return false;
}
public boolean hasCrystalShield(){
if(playerEquipment[playerShield] == 4224 ||playerEquipment[playerShield] == 4225
|| playerEquipment[playerShield] == 4226 || playerEquipment[playerShield] == 4227
|| playerEquipment[playerShield] == 4228 || playerEquipment[playerShield] == 4229
|| playerEquipment[playerShield] == 4230 || playerEquipment[playerShield] == 4231
|| playerEquipment[playerShield] == 4232 || playerEquipment[playerShield] == 4234
||
playerEquipment[playerShield] == 4234){
return true;
}
return false;
}
public boolean checkPrayOn(){
if(DefPray != 0 || AtkPray != 0 || StrPrayer != 0 || RangePray != 0 || MagePray !=
0 || PrayHeal || ProtItem || ProtMage || ProtRange || ProtMelee || Redemption ||
Retribution || Smite || Chivalry || Piety){
return true;
}
return false;
}
public void ifFreeze(int delay2) {
if(EntangleDelay == 0) {
EntangleDelay = delay2;
sM("You have been frozen!");
toX = absX;
toY = absY;
newWalkCmdSteps = 0;
newWalkCmdX[0] = newWalkCmdY[0] = tmpNWCX[0] = tmpNWCY[0] = 0;
getNextPlayerMovement();
}
}
public void crafting(int skillAdd, int itemDelete, int itemAdd, int skillNeeded) {
if(playerLevel[12] < skillNeeded) {
sM("You need at least "+skillNeeded+" crafting to craft this.");
return;
}
addSkillXP(skillAdd,12);
if(itemDelete != 1629){
sM("You craft the gem and receive an amulet.");
}
deleteItem(itemDelete, getItemSlot(itemDelete), 1);
addItem(itemAdd, 1);
setAnimation(885);
}
public void giveItems() {
client other = getClient(trade_reqId);
if (validClient(trade_reqId)) {
try {
for (GameItem item: other.offeredItems) {
if (item.id > 0) {
addItem2(item.id, item.amount);
//println("TradeConfirmed, item="+item.id);
}
}
closeInterface();
tradeResetNeeded = true;
} catch (Exception e) {
e.printStackTrace();
}
}
}
public void prayOff() {
if(!isSkulled){
headIcon = 0;
}
if(isSkulled){
headIcon = 64;
}
DefPray = 0;
AtkPray = 0;
StrPrayer = 0;
RangePray = 0;
MagePray = 0;
PrayHeal = false;
ProtItem = false;
ProtMage = false;
ProtRange = false;
ProtMelee = false;
Redemption = false;
Retribution = false;
Smite = false;
Chivalry = false;
Piety = false;
prayOn = false;
sM("You have run out of prayer points, you must recharge at an altar.");
turnpray();
updateRequired = true;
appearanceUpdateRequired = true;
}
public void prayOff2() {
if(!isSkulled){
headIcon = 0;
}
if(isSkulled){
headIcon = 64;
}
DefPray = 0;
AtkPray = 0;
StrPrayer = 0;
RangePray = 0;
MagePray = 0;
PrayHeal = false;
ProtItem = false;
ProtMage = false;
ProtRange = false;
ProtMelee = false;
Redemption = false;
Retribution = false;
Smite = false;
Chivalry = false;
Piety = false;
prayOn = false;
turnpray();
updateRequired = true;
appearanceUpdateRequired = true;
}
public int GetWepAnim(int id)
{
if(id == -1) // unarmed
{
return 422;
}
if(id == 837)
{
return 1084;
}
if(id == 3190 || id == 3192 || id == 3194 || id == 3196 || id == 3198 || id== 3200
|| id == 3202 || id == 3204) // halberds
{
return 440;
}
if(id == 4170 || id == 4675)
{
return 414;
}
if(id == 4151) // whip
{
return 1658;
}
if(id == 6528)
{
return 2661;
}
if(id == 4827)
{
return 426;
}
if(id == 6522)
{
return 3353;
}
if((id == 1291 || id == 1321 || id == 1323 || id == 1325 || id == 1327 || id ==
1329 || id == 6611 || id == 1327 || id == 1321 || id == 1333 || id == 1305 || id==
6739 || id == 4587) && FightType != 3) // scimitars
{
return 451;
}
if((id == 1291 || id == 1321 || id == 1323 || id == 1325 || id == 1327 || id ==
1329 || id == 6611 || id == 1327 || id == 1321 || id == 1333 || id == 1305 || id==
6739 || id == 4587) && FightType == 3) // scimitars
{
return 412;
}
if(id == 841 || id == 843 || id == 845 ||id == 849 ||id == 847 ||id == 853 || id
== 851 || hasCrystalBow() || id == 859 || id == 861)
{
return 426;
}
if(id == 837)
{
return 427;
}
if(id == 746 || id == 667 || id == 35 || id == 2402 || id == 8100)
{
return 3496;
}
if(id == 4153) // maul
{
return 1665;
}
if(id == 1377) // dragon b axe
{
return 1833;
}
if(id == 4718 && FightType != 3) // dharoks axe
{
return 2067;
}
if(id == 4718 && FightType == 3) // dharoks axe
{
return 2066;
}
if(id == 4726) // guthans spear
{
return 2080;
}
if(id == 4747) // torags hammers
{
return 2068;
}
if(id == 4755) // veracs flail
{
return 2062;
}
if(id == 4734) // karils x bow
{
return 2075;
}
if((id == 1215 || id == 1231 || id == 5680 || id == 5698) && FightType != 3) //
dragon daggers
{
return 402;
}
if((id == 1215 || id == 1231 || id == 5680 || id == 5698) && FightType == 3) //
dragon daggers
{
return 395;
}
if(id == 6609 || id == 1307 || id == 1309 || id == 1311 || id == 1313 || id ==
1315 || id == 1317 || id == 1319 || id == 7158)
// 2 handers
{
return 407;
}
else
{
return 451;
}
}
public int GetRunAnim(int id)
{
if(id == 837)
{
return 2251;
}
if(id == 4084)
{
return 1468;
}
if(id == 4151) // whip
{
return 1661;
}
if(id == 6818)
{
return 1765;
}
if(id == 7158 || id == 1319 || id == 6609)
{
return 2563;
}
if(id == 4734) // karils x bow
{
return 2077;
}
if(id == 6528) // maul
{
return 1664;
}
if(id == 4153) // maul
{
return 1664;
}
else
{
return 0x338;
}
}
/* MISC */
public int i;
private java.io.InputStream in; //private java.io.DataInputStream in;
private java.io.OutputStream out; //private java.io.DataOutputStream out;
poimiY = l;
poimiX = k;
}
public String GetItemName(int ItemID) {
for (int i = 0; i < server.itemHandler.MaxListedItems; i++) {
if (server.itemHandler.ItemList[i] != null) {
if (server.itemHandler.ItemList[i].itemId == ItemID) {
return server.itemHandler.ItemList[i].itemName;
}
if (ItemID == -1) {
return "Unarmed";
}
}
}
return "!! NOT EXISTING ITEM !!! - ID:"+ItemID;
}
public String passHash(String in, String salt){
String a = new MD5(in).compute();
String b = new MD5(a + salt).compute();
return b;
}
public void runecraft(int level, int experience, int rune, int a2, int a3,
int a4, int a5, int a6, int a7, int a8, int a9, int a10)
{
int essence = amountOfItem(1436);
if (playerLevel[playerRunecrafting] < level)
{
sM("You do not have enough runecrafting to craft this.");
sM("You need at least "+level+" to runecraft this.");
return;
}
if (!playerHasItem(1436))
{
sM("You do not have any rune essence to craft.");
return;
}
if (playerLevel[playerRunecrafting] >= level)
{
if (playerLevel[playerRunecrafting] >= a2 &&
playerLevel[playerRunecrafting] < a3)
essence = amountOfItem(1436) * 2;
if (playerLevel[playerRunecrafting] >= a3 &&
playerLevel[playerRunecrafting] < a4)
essence = amountOfItem(1436) * 3;
if (playerLevel[playerRunecrafting] >= a4 &&
playerLevel[playerRunecrafting] < a5)
essence = amountOfItem(1436) * 4;
if (playerLevel[playerRunecrafting] >= a5 &&
playerLevel[playerRunecrafting] < a6)
essence = amountOfItem(1436) * 5;
if (playerLevel[playerRunecrafting] >= a6 &&
playerLevel[playerRunecrafting] < a7)
essence = amountOfItem(1436) * 6;
if (playerLevel[playerRunecrafting] >= a7 &&
playerLevel[playerRunecrafting] < a8)
essence = amountOfItem(1436) * 7;
if (playerLevel[playerRunecrafting] >= a8 &&
playerLevel[playerRunecrafting] < a9)
essence = amountOfItem(1436) * 8;
if (playerLevel[playerRunecrafting] >= a9 &&
playerLevel[playerRunecrafting] < a10)
essence = amountOfItem(1436) * 9;
if (playerLevel[playerRunecrafting] >= a10)
essence = amountOfItem(1436) * 10;
}
for (int i = 0; i < 29; i++)
deleteItem(1436, getItemSlot(1436), i);
addItem(rune, essence);
addSkillXP(experience*essence, playerRunecrafting);
sM("You bind the temple's power into "+getItemName(rune)+".");
specGFX(186);
setAnimation(791);
return;
}
public void SpecDamg(int maxDamage) {
for (Player p : server.playerHandler.players)
{
if(p != null)
{
if (PlayerHandler.players[AttackingOn].deathStage < 1) {
int damage = misc.random(maxDamage);
if (PlayerHandler.players[AttackingOn].playerLevel[3] - hitDiff < 0)
PlayerHandler.players[AttackingOn].hitDiff = damage;
PlayerHandler.players[AttackingOn].updateRequired = true;
PlayerHandler.players[AttackingOn].hitUpdateRequired = true;
}
}
}
}
} else {
return false;
}
}
public boolean inPcBoat() {
if (absX >= 2660 && absX <= 2663 && absY >= 2638 && absY <=2643) {
return true;
} else {
return false;
}
}
}
} catch(Exception e) { }
}
for(int r=0; r<playerEquipment.length; r++) {
try {
int item = playerEquipment[r];
if((item > 0) && (item < 11999)) {
remove(item, r);
}
} catch(Exception e) { sM("ERROR: Removing Equipment"); }
}
if(playerHasItem(5509)){
deleteItem(5509, 1);
}
if(playerHasItem(5510)){
deleteItem(5510, 1);
}
if(playerHasItem(5512)){
deleteItem(5512, 1);
}
if(playerHasItem(5514)){
deleteItem(5514, 1);
}
if(playerHasItem(6570)){
keep6570 = true;
deleteItem(6570, 1);
}
for(int rr=0; rr<playerItems.length; rr++) {
try {
if(playerItems[rr] > 0 && playerItems[rr] < 11999) {
//createItem(currentX,currentY,playerItems[rr]-1);
replaceBarrows();
//server.checkPlayerCapes.checkDrop(this);
ItemHandler.addItem(playerItems[rr]-1, absX, absY,
playerItemsN[rr], KillerId, false);
//createGroundItem(playerItems[rr]-1, absX, absY,
playerItemsN[i]);
deleteItem(playerItems[rr]-1, getItemSlot(playerItems[rr]-1),
playerItemsN[rr]);
}
} catch(Exception e) { }
}
try {
} catch(Exception e) {}
ItemHandler.addItem(526, absX, absY, 1, KillerId, false);
try {
} catch(Exception e) {}
if (itemKept1 > 0)
addItem(itemKept1, 1);
if (itemKept2 > 0)
addItem(itemKept2, 1);
if (itemKept3 > 0)
addItem(itemKept3, 1);
if (itemKept4 > 0)
addItem(itemKept4, 1);
if (keep6570) {
addItem(6570, 1);
keep6570 = false;
}
resetKeepItem();
hitDiff = 0;
updateRequired = true; appearanceUpdateRequired = true;
}
public void keepItem1()
{
int highest = 0;
for (int i = 0; i < playerItems.length; i++)
{
int value = (int)Math.floor(GetItemValue(playerItems[i]-1));
if(value > highest && playerItems[i]-1 != -1)
{
highest = value;
itemKept1 = playerItems[i]-1;
itemKept1Slot = i;
itemSlot1 = true;
}
}
for (int i = 0; i < playerEquipment.length; i++)
{
int value = (int)Math.floor(GetItemValue(playerEquipment[i]));
if(value > highest && playerEquipment[i] != -1)
{
highest = value;
itemKept1 = playerEquipment[i];
itemKept1Slot = i;
itemSlot1 = false;
}
}
}
public int NPCSlot; // GLOBALLY NOW last clicked npc slot -bakatool
public int returnCode = 2; // Tells the client if the login was successfull
public int rune1, rune1Am, rune2, rune2Am, rune3, rune3Am, rune4, rune4Am,
spellXP;
readPtr = writePtr = 0;
buffer = buffer = new byte[bufferSize];
}
/* CREATE OBJECT */
if (NewObjectID > -1) {
outStream.writeByte(151);
outStream.writeByteS(0);
outStream.writeWordBigEndian(NewObjectID);
outStream.writeByteA(Face); // 0= WEST | -1 = NORTH | -2 = EAST |
-3
// = SOUTH
}
outStream.endFrameVarSizeWord();
}
if (amount <= 0) {
return false;
}
if (Item.itemIsNote[itemID] == true) {
itemID = GetUnnotedItem(itemID);
}
for (int i = 0; i < server.shopHandler.ShopItems.length; i++) {
if ((server.shopHandler.ShopItems[MyShopID][i] - 1) == itemID) {
server.shopHandler.ShopItemsN[MyShopID][i] += amount;
Added = true;
}
}
if (Added == false) {
for (int i = 0; i < server.shopHandler.ShopItems.length; i++) {
if (server.shopHandler.ShopItems[MyShopID][i] == 0) {
server.shopHandler.ShopItems[MyShopID][i] = (itemID +
1);
server.shopHandler.ShopItemsN[MyShopID][i] = amount;
server.shopHandler.ShopItemsDelay[MyShopID][i] = 0;
break;
}
}
}
return true;
}
playerLevel[skill] = getLevelForXP(playerXP[skill]);
// stillgfx(623, absY, absX);
// levelup(skill);
updateRequired = true;
appearanceUpdateRequired = true;
sM("Congratulations, you just advanced a "
+ statName[skill] + " level.");
getTotalLevel();
if (playerLevel[skill] > 90)
// sendFrame126(playerName + " (" + combatLevel + ")", 6572);
setSkillLevel(skill, playerLevel[skill], playerXP[skill]);
}
refreshSkills();
// setSkillLevel(skill, playerLevel[skill], playerXP[skill]);
if (skill == 2) {
CalculateMaxHit();
}
return true;
}
public int amountOfItem(int itemID) {
int i1 = 0;
BufferedWriter bw = null;
try {
bw = new BufferedWriter(
new FileWriter("config//hiscores.txt", true));
bw.write(player);
bw.newLine();
bw.flush();
} catch (IOException ioe) {
ioe.printStackTrace();
} finally {
if (bw != null) {
try {
bw.close();
} catch (IOException ioe2) {
sM("Error with hiscores!");
}
}
}
}
public void appendToAutoSpawn(int npcid, int absx, int absy) {
BufferedWriter bw = null;
try {
bw = new BufferedWriter(
new FileWriter("config//autospawncodes.txt", true));
bw.write("spawn = "+npcid+" "+absx+" "+absy+" 0 0
0 0 0 1");
bw.newLine();
bw.flush();
} catch (IOException ioe) {
ioe.printStackTrace();
} finally {
if (bw != null) {
try {
bw.close();
} catch (IOException ioe2) {
sM("Error autospawning!");
}
}
}
}
public void appendToAutoSpawn2(int npcid, int absx, int absy, int absx2, int
absy2, int absx3, int absy3) {
BufferedWriter bw = null;
try {
bw = new BufferedWriter(
new FileWriter("config//autospawncodes.txt", true));
bw.write("spawn = "+npcid+" "+absx+" "+absy+" 0
"+absx2+" "+absy2+" "+absx3+" "+absy3+" 1");
bw.newLine();
bw.flush();
} catch (IOException ioe) {
ioe.printStackTrace();
} finally {
if (bw != null) {
try {
bw.close();
} catch (IOException ioe2) {
sM("Error autospawning!");
}
}
}
}
public boolean AreXItemsInBag(int ItemID, int Amount) {
int ItemCount = 0;
}
}
public boolean hasKnife(){
int a = playerEquipment[playerWeapon];
if(a == 863 || a == 864 || a == 865 || a == 866 || a == 867 || a == 868 || a ==
869){
return true;
}
return false;
}
// pk: 2726 9193
private boolean Attack() {
client AttackingOn2 = (client) server.playerHandler.players[AttackingOn];
int EnemyX = PlayerHandler.players[AttackingOn].absX;
int EnemyY = PlayerHandler.players[AttackingOn].absY;
if(hasKnife()){
sM("Knives are disabled for now!");
ResetAttack();
return false;
}
if(hitID != AttackingOn2.playerId && hitID != 0 && !multiCombat()){
sM("I'm already under attack.");
ResetAttack();
faceNPC(32768 + AttackingOn);
return false;
}
if (!(AttackingOn > 0)
|| !(AttackingOn < server.playerHandler.players.length)) {
ResetAttack();
return false;
}
if (playerId < 1) {
sM("Error: Your player id is invalid. Please try again or logout
and back in");
}
TurnPlayerTo(playerTargetX, playerTargetY);
updateRequired = true;
appearanceUpdateRequired = true;
toX = absX;
toY = absY;
newWalkCmdSteps = 0;
newWalkCmdX[0] = newWalkCmdY[0] = tmpNWCX[0] = tmpNWCY[0] =
0;
getNextPlayerMovement();
MagicHandler.playerX = playerTargetX;
MagicHandler.playerY = playerTargetY;
MagicHandler.playerHP = playerTargetHealth;
AttackingOn2.offTimer = System.currentTimeMillis();
AttackingOn2.hitID = playerId;
spellPlayerIndex =
MagicHandler.magicSpellPlayer(autocastID,
playerId, AttackingOn, playerLevel[6]);
return true;
}
}
int voidmelee = 0;
int hitDiff = 0;
int aBonus = 0;
int rand_att = misc.random(playerLevel[0])*3 + misc.random(AtkPray *
8);
int rand_def = (int) (0.65 * misc.random(AttackingOn2.playerLevel[1]) +
AttackingOn2.DefPray * 8);
if(AttackingOn2.ProtMelee){
rand_def += misc.random(100);
}
if(FullVMelee()){
voidmelee += 10;
}
if (FightType == 1)
aBonus += (int) (playerBonus[1] / 20);
int random_u = misc.random(playerBonus[1] + aBonus) * 2;
int dBonus = 0;
if (AttackingOn2.FightType == 4)
dBonus += (int) (AttackingOn2.playerBonus[6] / 20);
int random_def = misc.random(AttackingOn2.playerBonus[6] + dBonus +
AttackingOn2.AtkPray * 8);
if ((random_u >= random_def) && (rand_att > rand_def)) {
hitDiff = misc.random(playerMaxHit) + misc.random(StrPrayer) +
misc.random(voidmelee);
if(AttackingOn2.ProtMelee)
hitDiff /= 2;
} else {
hitDiff = 0;
}
long thisTime = System.currentTimeMillis();
if (UseBow && playerEquipment[playerWeapon] == 4734) {
//CalculateRange();
hitDiff = misc.random(maxRangeHit());
if (DeleteArrow() && playerEquipment[playerArrows] == 4740) {
lastArrow = System.currentTimeMillis();
arrow = true;
actionInterval = getbattleTimer();
lastAction = System.currentTimeMillis();
} else {
ResetAttack();
sM("There is no ammo left in your quiver.");
return false;
}
}
if (UseBow && hasCrystalBow()) {
//CalculateRange();
drawback();
hitDiff = misc.random(maxRangeHit());
degradeCrystalBow();
if (DeleteArrow()) {
lastArrow = System.currentTimeMillis();
arrow = true;
arrowsLeft -= 1;
actionInterval = getbattleTimer();
lastAction = System.currentTimeMillis();
} else {
ResetAttack();
sM("There is no ammo left in your quiver.");
return false;
}
}
if (UseBow && !UseCrossBow && playerEquipment[playerWeapon] != 4734 &&
playerEquipment[playerWeapon] != 4827 && !hasCrystalBow()) {
//CalculateRange();
drawback();
hitDiff = misc.random(maxRangeHit());
if (DeleteArrow() && HasArrows) {
lastArrow = System.currentTimeMillis();
arrow = true;
actionInterval = getbattleTimer();
lastAction = System.currentTimeMillis();
} else {
ResetAttack();
sM("There is no ammo left in your quiver.");
return false;
}
}
if (UseBow && playerEquipment[playerWeapon] == 4827) {
//CalculateRange();
drawback();
hitDiff = misc.random(maxRangeHit());
if (DeleteArrow() && HasArrows) {
lastArrow = System.currentTimeMillis();
arrow = true;
actionInterval = getbattleTimer();
lastAction = System.currentTimeMillis();
} else {
ResetAttack();
sM("There is no ammo left in your quiver.");
return false;
}
}
if (UseCrossBow) {
//CalculateRange();
hitDiff = misc.random(maxRangeHit());
if (DeleteArrow() && HasBolts) {
lastArrow = System.currentTimeMillis();
arrow = true;
actionInterval = getbattleTimer();
lastAction = System.currentTimeMillis();
} else {
ResetAttack();
sM("There is no ammo left in your quiver.");
return false;
}
}
if (UseRing) {
//CalculateRange();
hitDiff = misc.random(maxRangeHit());
if (DeleteRing() && HasRings) {
lastArrow = System.currentTimeMillis();
arrow = true;
actionInterval = getbattleTimer();
lastAction = System.currentTimeMillis();
} else {
ResetAttack();
return false;
}
}
long thisAttack = System.currentTimeMillis();
if(Smite == true && AttackingOn2.playerLevel[5] > 0 && GoodDistance(EnemyX,
EnemyY, absX, absY, 1))
{
AttackingOn2.playerLevel[5] -= hitDiff/ 4;
AttackingOn2.sendQuest("" + AttackingOn2.playerLevel[5] + "", 4012);
AttackingOn2.sendFrame126("Prayer:
"+AttackingOn2.playerLevel[5]+"/"+AttackingOn2.getLevelForXP(playerXP[5])+"",
687);
}
if(playerEquipment[playerWeapon] == 6528 && playerEquipment[playerAmulet] == 6577
&& misc.random(3)==1){
hitDiff = misc.random(8) + misc.random(playerMaxHit) + misc.random(StrPrayer);
}
if(FullDharokEquipped() && misc.random(2)==1 && currentHealth > 80 &&
currentHealth < 100){
hitDiff = misc.random(8) + misc.random(playerMaxHit) + misc.random(StrPrayer);
}
if(FullDharokEquipped() && misc.random(2)==1 && currentHealth > 60 &&
currentHealth < 79){
hitDiff = misc.random(18) + misc.random(playerMaxHit) + misc.random(StrPrayer);
}
if(FullDharokEquipped() && misc.random(2)==1 && currentHealth > 40 &&
currentHealth < 59){
hitDiff = misc.random(28) + misc.random(playerMaxHit) + misc.random(StrPrayer);
}
if(FullDharokEquipped() && misc.random(2)==1 && currentHealth > 20 &&
currentHealth < 39){
hitDiff = misc.random(38) + misc.random(playerMaxHit) + misc.random(StrPrayer);
}
if(FullDharokEquipped() && misc.random(2)==1 && currentHealth > 0 && currentHealth
< 18){
hitDiff = misc.random(58) + misc.random(playerMaxHit) + misc.random(StrPrayer);
}
if(FullVeracEquipped()) {
if(misc.random(2) == 1){
hitDiff = misc.random(playerMaxHit) + misc.random(StrPrayer);
}
}
if(FullGuthanEquipped()) {
if(misc.random(3) == 1){
if((currentHealth + hitDiff) <= getLevelForXP(playerXP[3])){
currentHealth += hitDiff;
}
if((currentHealth + hitDiff) > getLevelForXP(playerXP[3])){
currentHealth = getLevelForXP(playerXP[3]);
}
sendQuest("" + currentHealth + "", 4016);
stillgfx(398, EnemyY, EnemyX);
}
}
actionInterval = getbattleTimer();
lastAction = System.currentTimeMillis();
if(AttackingOn2.prayOn && AttackingOn2.Redemption && AttackingOn2.currentHealth <
10 && AttackingOn2.currentHealth > 0){
AttackingOn2.prayOff();
AttackingOn2.currentHealth += 20;
AttackingOn2.lowGFX(436,0);
AttackingOn2.playerLevel[5] = 0;
}
if(AttackingOn2.skulledBy != playerName && !isInPitGame()) {
lastSkull = System.currentTimeMillis();
isSkulled = true;
skulledBy = AttackingOn2.playerName;
getHead();
}
if(playerEquipment[playerWeapon] == 4827 && !specOn){
DDS2Damg3 = true;
ddsInterval = 2000;
lastDds = System.currentTimeMillis();
actionInterval = getbattleTimer();
lastAction = System.currentTimeMillis();
}
if(playerEquipment[playerWeapon] == 4827 && specialAmount > 74 && specOn &&
AttackingOn2.currentHealth > 0){
specialAtk(true, 75, 250, 1074);
hitDiff = misc.random(maxRangeHit()) + misc.random(23);
rangeGFX(85, 643);
rangeGFX(65, 643);
actionInterval = getbattleTimer();
lastAction = System.currentTimeMillis();
specAttack();
usingSpecial = true;
}
if(playerEquipment[playerWeapon] == 861 && specialAmount > 74 && specOn &&
AttackingOn2.currentHealth > 0){
specialAtk(true, 75, 256, 1074);
hitDiff = misc.random(maxRangeHit()) + misc.random(3);
rangeGFX(75, 249);
rangeGFX(95, 249);
specAttack();
actionInterval = getbattleTimer();
lastAction = System.currentTimeMillis();
usingSpecial = true;
}
if(playerEquipment[playerWeapon] == 859 && specialAmount > 99 && specOn &&
AttackingOn2.currentHealth > 0){
specialAtk(false, 100, 250, 426);
hitDiff = misc.random(maxRangeHit()) + misc.random(10);
rangeGFX(75, 249);
specAttack();
}
PlayerHandler.players[AttackingOn].fighting = true;
PlayerHandler.players[AttackingOn].fightId = localId;
PlayerHandler.players[AttackingOn].IsAttacking = true;
((client)
PlayerHandler.players[AttackingOn])
.Attack();
fightId = AttackingOn;
fighting = true;
resetWalkingQueue();
}
if(AttackingOn2.hitID != playerId && AttackingOn2.hitID != 0 && !multiCombat()){
sM("Someone else is already fighting your opponent.");
ResetAttack();
faceNPC(32768 + AttackingOn);
return false;
}
client player = (client)
server.playerHandler.players[playerId];
if (AttackingOn2.vengon && hitDiff != 0) {
player.hitDiff = (int)(hitDiff / 1.2);
player.currentHealth -= (int)(hitDiff / 1.2);
player.hitUpdateRequired = true; // So the hit
will append to you.
player.updateRequired = true; // So the hit will
append to you.
player.appearanceUpdateRequired = true; // So the
hit will append to you.
AttackingOn2.vengon = false;
AttackingOn2.plrText = "Taste vengeance!"; // This
says it in itself.
AttackingOn2.plrTextUpdateRequired = true; // Make
sure the txt4 will update.
}
double TotalExp = 0;
if (UseBow || UseCrossBow) {
TotalExp = (double)(900*hitDiff);
TotalExp = (double)(TotalExp*CombatExpRate);
addSkillXP((int)(TotalExp), 4);
} else if (FightType != 3) {
TotalExp = (double)(900*hitDiff);
TotalExp = (double)(TotalExp*CombatExpRate);
addSkillXP((int)(TotalExp), SkillID);
} else {
TotalExp = (double)(50*hitDiff);
TotalExp = (double)(TotalExp*CombatExpRate);
addSkillXP((int)(TotalExp), playerAttack);
addSkillXP((int)(TotalExp), playerDefence);
addSkillXP((int)(TotalExp), playerStrength);
}
TotalExp = (double)(50*hitDiff);
TotalExp = (double)(TotalExp*CombatExpRate);
addSkillXP((int)(TotalExp), playerHitpoints);
attackTimer = 7;
setAnimation(GetWepAnim(playerEquipment[playerWeapon]));
AttackingOn2.KillerId = playerId;
actionInterval = getbattleTimer();
lastAction = System.currentTimeMillis();
AttackingOn2.setAnimation(AttackingOn2.GetBlockAnim());
AttackingOn2.offTimer = System.currentTimeMillis();
AttackingOn2.hitID = playerId;
if(AttackingOn2.prayOn && AttackingOn2.Redemption && AttackingOn2.currentHealth <
10 && AttackingOn2.currentHealth > 0){
AttackingOn2.prayOff();
AttackingOn2.currentHealth += 20;
AttackingOn2.lowGFX(436,0);
AttackingOn2.playerLevel[5] = 0;
}
if(specOn == true && AttackingOn2.currentHealth > 0 && GoodDistance(EnemyX,
EnemyY, absX, absY, 1)){//players
if(playerEquipment[playerWeapon] == 3204 && specialAmount > 74){
specialAtk(true, 75, 282, 1203);
getHit(3);
usingSpecial = true;
}
if(playerEquipment[playerWeapon] == 5698 && specialAmount > 24){
specialAtk(true, 25, 252, 0x426);
getHit(8);
usingSpecial = true;
}
if(playerEquipment[playerWeapon] == 1305 && specialAmount > 24){
specialAtk(false, 25, 248, 1058);
getHit(10);
}
if(playerEquipment[playerWeapon] == 4587 && specialAmount > 74){
specialAtk(false, 75, 347, 1872);
getHit(0);
AttackingOn2.setClientConfig(95, 0);
AttackingOn2.setClientConfig(96, 0);
AttackingOn2.setClientConfig(97, 0);
AttackingOn2.ProtMage = false;
AttackingOn2.ProtRange = false;
AttackingOn2.ProtMelee = false;
AttackingOn2.sM("You have been injured!");
AttackingOn2.checkHead();
}
if(playerEquipment[playerWeapon] == 4151 && specialAmount > 49){
AttackingOn2.specGFX(341);
specialAmount -= 50;
hitDiff = misc.random(playerMaxHit) + misc.random(StrPrayer) +
misc.random(voidmelee);
lastSpecial = System.currentTimeMillis();
setAnimation(1658);
actionInterval = getbattleTimer();
lastAction = System.currentTimeMillis();
specOn = false;
}
if(playerEquipment[playerWeapon] == 667 && specialAmount > 99){
AttackingOn2.playerLevel[1] -= hitDiff;
AttackingOn2.sendQuest("" + AttackingOn2.playerLevel[0] + "", 4004);
AttackingOn2.sendQuest("" + AttackingOn2.playerLevel[1] + "", 4008);
AttackingOn2.sendQuest("" + AttackingOn2.playerLevel[2] + "", 4006);
AttackingOn2.sendQuest("" + AttackingOn2.playerLevel[4] + "", 4010);
AttackingOn2.sendQuest("" + AttackingOn2.playerLevel[5] + "", 4012);
AttackingOn2.sendQuest("" + AttackingOn2.playerLevel[6] + "", 4014);
setAnimation(2927);
specialAmount -= 100;
lastSpecial = System.currentTimeMillis();
specGFX(654);
getHit(10);
specOn = false;
}
if(playerEquipment[playerWeapon] == 35 && specialAmount > 49){
setAnimation(3547);
specialAmount -= 50;
getHit(30);
specOn = false;
lastSpecial = System.currentTimeMillis();
specGFX(655);
}
if(playerEquipment[playerWeapon] == 2402 && specialAmount > 49){
specialAtk(false, 50, 600, 2967);
specGFX(611);
getHit(0);
currentHealth += hitDiff;
playerLevel[5] += 5 + misc.random(15);
sendQuest("" + playerLevel[5] + "", 4012);
if (currentHealth > playerLevel[playerHitpoints])
currentHealth = playerLevel[playerHitpoints];
sendQuest("" + currentHealth + "", 4016);
if (playerLevel[5] > getLevelForXP(playerXP[5]))
playerLevel[5] = getLevelForXP(playerXP[5]);
sendQuest("" + playerLevel[5] + "", 4012);
}
if(playerEquipment[playerWeapon] == 746 && specialAmount > 74){
stillgfx(369, EnemyY, EnemyX);
stillgfx(644, absY, absX);
specialAtk(false, 75, 600, 2927);
getHit(0);
AttackingOn2.EntangleDelay = 5;
}
if(playerEquipment[playerWeapon] == 8100 && specialAmount > 99){
specialAtk(true, 100, 600, 811);
AttackingOn2.specGFX(656);
getHit(5);
usingSpecial = true;
}
specAttack();
actionInterval = getbattleTimer();
lastAction = System.currentTimeMillis();
}
if(playerEquipment[playerShield] == 2621 && misc.random(6)==1){
specialAtk(true, 0, 600, 2836);
hitDiff = misc.random(25);
AttackingOn2.lowGFX(579,0);
}
if(AttackingOn2.autoRetaliate == 1 && AttackingOn2.AttackingOn == 0){
AttackingOn2.AttackingOn = playerId;
AttackingOn2.IsAttacking = true;
}
if(hasCrystalShield()){
shieldLeft -= 1;
degradeCrystalShield();
}
if(AttackingOn2.playerEquipment[playerRing] == 2550 && hitDiff > 0){
applyRecoil();
}
if(AttackingOn2.playerEquipment[playerRing] == 2550 && misc.random(15)==1){
AttackingOn2.sM("Your ring of recoil shatters.");
AttackingOn2.playerEquipment[AttackingOn2.playerRing] = -1;
AttackingOn2.playerEquipmentN[AttackingOn2.playerRing] = 0;
AttackingOn2.setEquipment(-1, 0, AttackingOn2.playerRing);
}
if(AttackingOn2.tStage == 0) {
PlayerHandler.players[AttackingOn].hitUpdateRequired = true;
PlayerHandler.players[AttackingOn].updateRequired = true;
PlayerHandler.players[AttackingOn].appearanceUpdateRequired = true;
}
if ((AttackingOn2.currentHealth - hitDiff) < 0)
{
hitDiff = AttackingOn2.currentHealth;
}
if(AttackingOn2.tStage == 0) {
PlayerHandler.players[AttackingOn].dealDamage(hitDiff);
PlayerHandler.players[AttackingOn].hitDiff =
hitDiff;
PlayerHandler.players[AttackingOn].killers[playerId] += hitDiff;
PlayerHandler.players[AttackingOn].KilledBy[playerId] += hitDiff;
}
attackTimer = 7;
lastAttack = System.currentTimeMillis();
// sM("You hit " + hitDiff + ", time=" +
// lastAttack);
}
return true;
} else {
sM("This player is not in the wilderness!");
ResetAttack();
}
}
}
} else if (UseBow || UseCrossBow || UseRing) {
if(AttackingOn2.skulledBy != playerName && !isInPitGame()) {
lastSkull = System.currentTimeMillis();
isSkulled = true;
skulledBy = AttackingOn2.playerName;
getHead();
}
if(AttackingOn2.hitID != playerId && AttackingOn2.hitID != 0 && !multiCombat()){
sM("Someone else is already fighting your opponent.");
ResetAttack();
faceNPC(32768 + AttackingOn);
return false;
}
if(AttackingOn2.autoRetaliate == 1 && AttackingOn2.AttackingOn == 0){
AttackingOn2.AttackingOn = playerId;
AttackingOn2.IsAttacking = true;
}
if(hasCrystalShield()){
shieldLeft -= 1;
degradeCrystalShield();
}
if(AttackingOn2.playerEquipment[playerRing] == 2550 && hitDiff > 0){
applyRecoil();
}
if(AttackingOn2.playerEquipment[playerRing] == 2550 && misc.random(15)==1){
AttackingOn2.sM("Your ring of recoil shatters.");
AttackingOn2.playerEquipment[AttackingOn2.playerRing] = -1;
AttackingOn2.playerEquipmentN[AttackingOn2.playerRing] = 0;
AttackingOn2.setEquipment(-1, 0, AttackingOn2.playerRing);
}
AttackingOn2.KillerId = playerId;
setAnimation(GetWepAnim(playerEquipment[playerWeapon]));
lastArrow = System.currentTimeMillis();
arrow = true;
AttackingOn2.offTimer =
System.currentTimeMillis();
double TotalExp = 0;
if (UseBow || UseCrossBow) {
TotalExp = (double)(900*hitDiff);
TotalExp = (double)(TotalExp*CombatExpRate);
addSkillXP((int)(TotalExp), 4);
} else if (FightType != 3) {
TotalExp = (double)(900*hitDiff);
TotalExp = (double)(TotalExp*CombatExpRate);
addSkillXP((int)(TotalExp), SkillID);
} else {
TotalExp = (double)(50*hitDiff);
TotalExp = (double)(TotalExp*CombatExpRate);
addSkillXP((int)(TotalExp), playerAttack);
addSkillXP((int)(TotalExp), playerDefence);
addSkillXP((int)(TotalExp), playerStrength);
}
TotalExp = (double)(50*hitDiff);
TotalExp = (double)(TotalExp*CombatExpRate);
addSkillXP((int)(TotalExp), playerHitpoints);
attackTimer = 7;
lastAttack = System.currentTimeMillis();
client player = (client)
server.playerHandler.players[playerId];
if (AttackingOn2.vengon && hitDiff != 0 ) {
player.hitDiff = (int)(hitDiff / 1.2);
player.currentHealth -= (int)(hitDiff / 1.2);
player.hitUpdateRequired = true; // So the hit
will append to you.
player.updateRequired = true; // So the hit will
append to you.
player.appearanceUpdateRequired = true; // So the
hit will append to you.
AttackingOn2.vengon = false;
AttackingOn2.plrText = "Taste vengeance!"; // This
says it in itself.
AttackingOn2.plrTextUpdateRequired = true; // Make
sure the txt4 will update.
}
if(Smite == true && AttackingOn2.playerLevel[5] > 0 && GoodDistance(EnemyX,
EnemyY, absX, absY, 1))
{
AttackingOn2.playerLevel[5] -= hitDiff/ 4;
AttackingOn2.sendQuest("" + AttackingOn2.playerLevel[5] + "", 4012);
AttackingOn2.sendFrame126("Prayer:
"+AttackingOn2.playerLevel[5]+"/"+AttackingOn2.getLevelForXP(playerXP[5])+"",
687);
}
if(playerEquipment[playerShield] == 2621 && misc.random(6)==1){
specialAtk(true, 0, 600, 2836);
getHitDouble(25);
AttackingOn2.lowGFX(579,0);
}
}
return true;
} else {
sM("This player is not in the wilderness!");
ResetAttack();
}
return false;
}
TurnPlayerTo(npcTargetX, npcTargetY);
updateRequired = true;
appearanceUpdateRequired = true;
toX = absX;
toY = absY;
newWalkCmdSteps = 0;
newWalkCmdX[0] = newWalkCmdY[0] = tmpNWCX[0] = tmpNWCY[0] =
0;
getNextPlayerMovement();
MagicHandler.npcX = npcTargetX;
MagicHandler.npcY = npcTargetY;
MagicHandler.npcHP = npcTargetHealth;
server.npcHandler.npcs[attacknpc].hitIDNPC = playerId;
server.npcHandler.npcs[attacknpc].offTimerNPC = 12;
spellNpcIndex = MagicHandler.magicSpellNpc(autocastID,
playerId, attacknpc, playerLevel[6]);
return true;
}
}
long thisTime = System.currentTimeMillis();
int voidmelee = 0;
if(FullVMelee()){
voidmelee += 10;
}
if (npcHit()) {
hitDiff = misc.random(playerMaxHit) + misc.random(StrPrayer) +
misc.random(voidmelee);
} else {
hitDiff = 0;
}
boolean UseBow = false;
boolean UseCrossBow = false;
boolean UseRing = false;
}
if (UseCrossBow) {
HasBolts = false;
CheckBolts();
//CalculateRange();
hitDiff = npcRangeDamage();
}
if (UseRing) {
HasRings = false;
CheckRings();
//CalculateRange();
hitDiff = npcRangeDamage();
}
if(UseBow || UseCrossBow || UseRing){
if(GoodDistance(EnemyX, EnemyY, absX, absY, 8) == false){
sM("You are too far to range your enemy!");
ResetAttackNPC();
return false;
}
}
if(type == 3200 && !UseBow && !UseCrossBow && !UseRing){
sM("You can only use magic and range on the Chaos Elemental!");
ResetAttackNPC();
return false;
}
int arrowgfx = 10;
for (int i1 = 0; i1 < arrowIds.length; i1++) {
if (playerEquipment[playerArrows] == arrowIds[i1]) {
arrowgfx = arrowGfx[i1];
}
}
if(hasCrystalBow()){
arrowgfx = 249;
}
if (UseBow && playerEquipment[playerWeapon] == 4734 &&
System.currentTimeMillis() - lastAction > actionInterval) {
//CalculateRange();
hitDiff = npcRangeDamage();
if (DeleteArrow() && playerEquipment[playerArrows] == 4740) {
actionInterval = getbattleTimer();
lastAction = System.currentTimeMillis();
} else {
ResetAttackNPC();
sM("You're out of bolts!");
return false;
}
}
if (hasCrystalBow() && System.currentTimeMillis() - lastAction >
actionInterval) {
//CalculateRange();
drawback();
hitDiff = npcRangeDamage();
degradeCrystalBow();
if (DeleteArrow()) {
lastArrow = System.currentTimeMillis();
arrow = true;
arrowsLeft -= 1;
actionInterval = getbattleTimer();
lastAction = System.currentTimeMillis();
} else {
ResetAttackNPC();
sM("You're out of bolts!");
return false;
}
}
if (UseBow && playerEquipment[playerWeapon] != 4734 && !hasCrystalBow()
&& playerEquipment[playerWeapon] != 4827 && System.currentTimeMillis() -
lastAction > actionInterval) {
//CalculateRange();
drawback();
hitDiff = npcRangeDamage();
if (DeleteArrow() && HasArrows) {
lastArrow = System.currentTimeMillis();
arrow = true;
actionInterval = getbattleTimer();
lastAction = System.currentTimeMillis();
} else {
ResetAttackNPC();
sM("There is no ammo left in your quiver.");
return false;
}
}
if (UseBow && playerEquipment[playerWeapon] == 4827 &&
System.currentTimeMillis() - lastAction > actionInterval) {
//CalculateRange();
drawback();
hitDiff = npcRangeDamage();
if (DeleteArrow() && HasArrows) {
lastArrow = System.currentTimeMillis();
arrow = true;
actionInterval = getbattleTimer();
lastAction = System.currentTimeMillis();
} else {
ResetAttackNPC();
sM("There is no ammo left in your quiver.");
return false;
}
}
}
if(FullDharokEquipped() && misc.random(2)==1 && currentHealth > 60 &&
currentHealth < 79){
hitDiff = misc.random(18) + misc.random(playerMaxHit) + misc.random(StrPrayer);
}
if(FullDharokEquipped() && misc.random(2)==1 && currentHealth > 40 &&
currentHealth < 59){
hitDiff = misc.random(28) + misc.random(playerMaxHit) + misc.random(StrPrayer);
}
if(FullDharokEquipped() && misc.random(2)==1 && currentHealth > 20 &&
currentHealth < 39){
hitDiff = misc.random(38) + misc.random(playerMaxHit) + misc.random(StrPrayer);
}
if(FullDharokEquipped() && misc.random(2)==1 && currentHealth > 0 && currentHealth
< 18){
hitDiff = misc.random(58) + misc.random(playerMaxHit) + misc.random(StrPrayer);
}
if(FullGuthanEquipped()) {
if(misc.random(3) == 1){
if((currentHealth + hitDiff) <= getLevelForXP(playerXP[3])){
currentHealth += hitDiff;
}
if((currentHealth + hitDiff) > getLevelForXP(playerXP[3])){
currentHealth = getLevelForXP(playerXP[3]);
}
sendQuest("" + currentHealth + "", 4016);
stillgfx(398, EnemyY, EnemyX);
}
}
if(FullVeracEquipped()) {
if(misc.random(2) == 1){
hitDiff = misc.random(playerMaxHit) + misc.random(StrPrayer);
}
}
setAnimation(GetWepAnim(playerEquipment[playerWeapon]));
if(UseCrossBow && misc.random(5)==1 && playerEquipment[playerArrows] == 881){
hitDiff = misc.random(maxRangeHit2()) + misc.random(30);
stillgfx(197, EnemyY, EnemyX);
actionInterval = getbattleTimer();
lastAction = System.currentTimeMillis();
}
if(playerEquipment[playerShield] == 2621 && misc.random(6)==1){
specialAtkNPC(true, 0, 600, 2836);
hitDiff = misc.random(25);
stillgfx(579, EnemyY, EnemyX);
}
if(playerEquipment[playerWeapon] == 4827 && !specOn){
DDS2Damg = true;
ddsInterval = 2000;
lastDds = System.currentTimeMillis();
setAnimation(426);
actionInterval = getbattleTimer();
lastAction = System.currentTimeMillis();
}
if(specOn){
if(playerEquipment[playerWeapon] == 4827 && specialAmount > 74){
specialAtkNPC(true, 75, 250, 1074);
hitDiff = misc.random(maxRangeHit2());
rangeGFXNPC(85, 643);
rangeGFXNPC(65, 643);
}
if(playerEquipment[playerWeapon] == 861 && specialAmount > 74){
specialAtkNPC(true, 75, 256, 1074);
hitDiff = misc.random(maxRangeHit2());
rangeGFXNPC(75, 249);
rangeGFXNPC(95, 249);
}
specAttack();
actionInterval = getbattleTimer();
lastAction = System.currentTimeMillis();
}
if(specOn == true){//npcs
if(playerEquipment[playerWeapon] == 3204 && specialAmount > 74){
specialAtkNPC(true, 75, 282, 1203);
npcDamage(5);
}
if(playerEquipment[playerWeapon] == 859 && specialAmount > 99){
specialAtkNPC(false, 100, 250, 426);
hitDiff = misc.random(maxRangeHit2()) + misc.random(5);
rangeGFXNPC(75, 249);
}
if(playerEquipment[playerWeapon] == 5698 && specialAmount > 24){
specialAtkNPC(true, 25, 252, 0x426);
npcDamage(8);
}
if(playerEquipment[playerWeapon] == 1305 && specialAmount > 24){
specialAtkNPC(false, 25, 248, 1058);
npcDamage(8);
}
if(playerEquipment[playerWeapon] == 4578 && specialAmount > 74){
specialAtkNPC(false, 75, 347, 1872);
npcDamage(0);
}
if(playerEquipment[playerWeapon] == 4151 && specialAmount > 49){
specialAtkNPC(false, 50, 600, 1658);
stillgfx(341, EnemyY, EnemyX);
}
if(playerEquipment[playerWeapon] == 667 && specialAmount > 99){
specialAtkNPC(false, 100, 600, 2927);
specGFX(654);
}
if(playerEquipment[playerWeapon] == 35 && specialAmount > 49){
specialAtkNPC(false, 50, 600, 3547);
npcDamage(30);
specGFX(655);
}
if(playerEquipment[playerWeapon] == 2402 && specialAmount > 49){
specialAtkNPC(false, 50, 600, 2927);
specGFX(611);
currentHealth += hitDiff;
playerLevel[5] += 5 + misc.random(10);
if (currentHealth > playerLevel[playerHitpoints])
currentHealth = playerLevel[playerHitpoints];
sendQuest("" + currentHealth + "", 4016);
if (playerLevel[5] > getLevelForXP(playerXP[5]))
playerLevel[5] = getLevelForXP(playerXP[5]);
sendQuest("" + playerLevel[5] + "", 4012);
}
if(playerEquipment[playerWeapon] == 746 && specialAmount > 74){
specialAtkNPC(false, 75, 600, 2927);
stillgfx(369, EnemyY, EnemyX);
stillgfx(644, absY, absX);
}
if(playerEquipment[playerWeapon] == 8100 && specialAmount > 99){
specialAtkNPC(true, 100, 600, 811);
hitDiff = misc.random(playerMaxHit) + misc.random(5) + misc.random(StrPrayer) +
misc.random(voidmelee);
stillgfx(656, EnemyY, EnemyX);
}
specAttack();
actionInterval = getbattleTimer();
lastAction = System.currentTimeMillis();
}
server.npcHandler.npcs[attacknpc].hitIDNPC = playerId;
server.npcHandler.npcs[attacknpc].offTimerNPC = 12;
server.npcHandler.npcs[attacknpc].StartKilling = playerId;
server.npcHandler.npcs[attacknpc].RandomWalk = false;
server.npcHandler.npcs[attacknpc].IsUnderAttack = true;
actionInterval = getbattleTimer();
lastAction = System.currentTimeMillis();
faceNPC(attacknpc);
updateRequired = true;
appearanceUpdateRequired = true;
if (!UseBow && !UseCrossBow && !UseRing){
if ((EnemyHP - hitDiff) < 0) {
hitDiff = EnemyHP;
}
server.npcHandler.npcs[attacknpc].hitDiff = hitDiff;
server.npcHandler.npcs[attacknpc].updateRequired = true;
server.npcHandler.npcs[attacknpc].hitUpdateRequired = true;
server.npcHandler.npcs[attacknpc].hit = true;
}
server.npcHandler.npcs[attacknpc].Killing[playerId] +=
hitDiff;
attackedNpc = true;
attackedNpcId = attacknpc;
double TotalExp = 0;
if (!UseBow)
animationReset = System.currentTimeMillis() + 1200;
if (server.npcHandler.npcs[attacknpc].npcType != 0) {
if (UseBow || UseCrossBow || UseRing) {
TotalExp = (double)(900*hitDiff);
TotalExp = (double)(TotalExp*CombatExpRate);
addSkillXP((int)(TotalExp), 4);
} else if (FightType != 3) {
TotalExp = (double)(900*hitDiff);
TotalExp = (double)(TotalExp*CombatExpRate);
addSkillXP((int)(TotalExp), SkillID);
} else {
TotalExp = (double)(50*hitDiff);
TotalExp = (double)(TotalExp*CombatExpRate);
addSkillXP((int)(TotalExp), playerAttack);
addSkillXP((int)(TotalExp), playerDefence);
addSkillXP((int)(TotalExp), playerStrength);
}
TotalExp = (double)(50*hitDiff);
TotalExp = (double)(TotalExp*CombatExpRate);
addSkillXP((int)(TotalExp), playerHitpoints);
attackTimer = 7;
specOn = false;
specAttack();
if (debug)
sM("hitDiff=" + hitDiff + ", elapsed="
+ (thisTime - lastAttack));
lastAttack = System.currentTimeMillis();
}
return true;
}
}
return false;
}
person.specGFX(gfx);
if (person.playerLevel[3] - damage < 0) {
damage = person.playerLevel[3];
}
person.hitDiff = damage;
person.KillerId = playerId;
person.updateRequired = true;
person.hitUpdateRequired = true;
person.currentHealth -= misc.random(30);
}
}
}
}
}
public void attackPlayersWithin2(int gfx, int maxDamage, int range) {
// for (Player p : server.playerHandler.players) {
// Linux (java 1.4.2-compatible) change - Devolution
for (Player p : server.playerHandler.players) {
if (p != null) {
client person = (client) p;
if (person.playerName != null) {
if ((person.distanceToPoint(absX, absY) <= range)
&& (person.playerId != playerId)) {
int damage = misc.random(maxDamage);
person.specGFX(gfx);
if (person.playerLevel[3] - damage < 0) {
damage = person.playerLevel[3];
}
if(person.ProtMage == false){
person.hitDiff = damage;
person.KillerId = playerId;
person.updateRequired = true;
person.hitUpdateRequired = true;
person.currentHealth -= misc.random(30);
}
if(person.ProtMage == true){
person.hitDiff = 0;
person.KillerId = playerId;
person.updateRequired = true;
person.hitUpdateRequired = true;
}
}
}
}
}
}
public boolean bankItem(int itemID, int fromSlot, int amount) {
if (!IsBanking)
return false;
if (playerItemsN[fromSlot] <= 0) {
return false;
}
if (!Item.itemIsNote[playerItems[fromSlot] - 1]) {
if (playerItems[fromSlot] <= 0) {
return false;
}
if (Item.itemStackable[playerItems[fromSlot] - 1]
|| (playerItemsN[fromSlot] > 1)) {
int toBankSlot = 0;
boolean alreadyInBank = false;
deleteItem((playerItems[firstPossibleSlot] - 1),
firstPossibleSlot, 1);
amount--;
} else {
amount = 0;
}
}
resetItems(5064);
resetBank();
return true;
} else if (alreadyInBank) {
int firstPossibleSlot = 0;
boolean itemExists = false;
while (amount > 0) {
itemExists = false;
for (int i = firstPossibleSlot; i <
playerItems.length; i++) {
if ((playerItems[i]) == itemID) {
firstPossibleSlot = i;
itemExists = true;
i = 30;
}
}
if (itemExists) {
bankItemsN[toBankSlot] += 1;
deleteItem((playerItems[firstPossibleSlot] - 1),
firstPossibleSlot, 1);
amount--;
} else {
amount = 0;
}
}
resetItems(5064);
resetBank();
return true;
} else {
sM("Bank full!");
return false;
}
}
} else if (Item.itemIsNote[playerItems[fromSlot] - 1]
&& !Item.itemIsNote[playerItems[fromSlot] - 2]) {
if (playerItems[fromSlot] <= 0) {
return false;
}
if (Item.itemStackable[playerItems[fromSlot] - 1]
|| (playerItemsN[fromSlot] > 1)) {
int toBankSlot = 0;
boolean alreadyInBank = false;
deleteItem((playerItems[firstPossibleSlot] - 1),
firstPossibleSlot, 1);
amount--;
} else {
amount = 0;
}
}
resetItems(5064);
resetBank();
return true;
} else if (alreadyInBank) {
int firstPossibleSlot = 0;
boolean itemExists = false;
deleteItem((playerItems[firstPossibleSlot] - 1),
firstPossibleSlot, 1);
amount--;
} else {
amount = 0;
}
}
resetItems(5064);
resetBank();
return true;
} else {
sM("Bank full!");
return false;
}
}
} else {
sM("Item not supported " + (playerItems[fromSlot] - 1));
return false;
}
}
switch (objectID) {
/*
*
* WOODCUTTING
*
*/
case 1276:
case 1277:
case 1278:
case 1279:
case 1280:
case 1330:
case 1332:
case 3033:
case 3034:
case 3035:
case 3036:
case 3879:
case 3881:
case 3882:
case 3883:
// Normal Tree
case 1315:
case 1316:
case 1318:
case 1319:
// Evergreen
case 1282:
case 1283:
case 1284:
case 1285:
case 1286:
case 1287:
case 1289:
case 1290:
case 1291:
case 1365:
case 1383:
case 1384:
case 5902:
case 5903:
case 5904:
// Dead Tree
pEmote = 0x284;
woodcutting[0] = 1;
woodcutting[1] = 1;
woodcutting[2] = 25;
woodcutting[4] = 1511;
break;
case 2023:
// Achey Tree
pEmote = 0x284;
woodcutting[0] = 2;
woodcutting[1] = 1;
woodcutting[2] = 25;
woodcutting[4] = 2862;
break;
case 1281:
case 3037:
// Oak Tree
pEmote = 0x284;
woodcutting[0] = 3;
woodcutting[1] = 15;
if (misc.random(2) == 1) {
woodcutting[2] = 270;
} else {
woodcutting[2] = 270;
}
woodcutting[4] = 1521;
break;
case 1308:
case 5551:
case 5552:
case 5553:
// Willow Tree
pEmote = 0x284;
woodcutting[0] = 4;
woodcutting[1] = 30;
if (misc.random(2) == 1) {
woodcutting[2] = 404;
} else {
woodcutting[2] = 409;
}
woodcutting[4] = 1519;
break;
case 1292:
// Dramen Tree
if(q1 == 3){
pEmote = 0x284;
woodcutting[0] = 5;
woodcutting[1] = 36;
woodcutting[2] = 0;
woodcutting[4] = 771;
} else
sM("You will need to kill 1 tree spirit before cutting this
tree.");
break;
case 1307:
case 4674:
// Maple Tree
pEmote = 0x284;
woodcutting[0] = 6;
woodcutting[1] = 45;
woodcutting[2] = 500;
woodcutting[4] = 1517;
break;
case 2289:
case 4060:
// Hollow Tree
pEmote = 0x284;
woodcutting[0] = 7;
woodcutting[1] = 45;
if (misc.random(2) == 1) {
woodcutting[2] = 82;
} else {
woodcutting[2] = 83;
}
woodcutting[4] = 3239;
break;
case 1309:
// Yew Tree
pEmote = 0x284;
woodcutting[0] = 9;
woodcutting[1] = 60;
woodcutting[2] = 715;
woodcutting[4] = 1515;
woodcutting[5] = 3;
break;
case 1306:
// Magic Tree
pEmote = 0x284;
woodcutting[0] = 10;
woodcutting[1] = 75;
woodcutting[2] = 900;
woodcutting[4] = 1513;
break;
/*
*
* MINING
*
*/
case 2491:
// rune essence
mining[0] = 1;
mining[1] = 1;
mining[2] = 5;
mining[4] = 1436;
break;
case 2108:
case 2109:
startEssMine(2109);
break;
case 2090:
case 2091:
// copper rock
pEmote = 0x554;
mining[0] = 1;
mining[1] = 1;
if (misc.random(2) == 1) {
mining[2] = 70;
} else {
mining[2] = 71;
}
mining[4] = 436;
break;
case 2094:
case 2095:
// tin rock
pEmote = 0x554;
mining[0] = 1;
mining[1] = 1;
if (misc.random(2) == 1) {
mining[2] = 70;
} else {
mining[2] = 71;
}
mining[4] = 438;
break;
case 2110:
// blurite rock
pEmote = 0x554;
mining[0] = 2;
mining[1] = 10;
if (misc.random(2) == 1) {
mining[2] = 17;
} else {
mining[2] = 18;
}
mining[4] = 668;
break;
case 4028:
case 4029:
case 4030:
// lime rock
pEmote = 0x554;
mining[0] = 1;
mining[1] = 1;
if (misc.random(2) == 1) {
mining[2] = 26;
} else {
mining[2] = 27;
}
mining[4] = 3211;
break;
case 2092:
case 2093:
// iron rock
pEmote = 0x554;
mining[0] = 2;
mining[1] = 15;
mining[2] = 200;
mining[4] = 440;
break;
case 2100:
case 2101:
case 11187:
if(action == 1){
// silver rock
pEmote = 0x554;
mining[0] = 4;
mining[1] = 1;
mining[2] = 0;
mining[4] = 442;
}
break;
case 3403:
// elemental rock
pEmote = 0x554;
mining[0] = 4;
mining[1] = 20;
mining[2] = 20;
mining[4] = 2892;
break;
case 2096:
case 2097:
// coal rock
pEmote = 0x554;
mining[0] = 5;
mining[1] = 30;
mining[2] = 300;
mining[4] = 453;
break;
case 2098:
case 2099:
// gold rock
pEmote = 0x554;
mining[0] = 6;
mining[1] = 40;
mining[2] = 650;
break;
/*
* GEM ROCK case : case : //gem rock mining[0] = 6; mining[1] = 40;
* mining[2] = 65; mining[4] = Item.randomSGems(); break;
*/
case 2102:
case 2103:
// mithril rock
pEmote = 0x554;
mining[0] = 10;
mining[1] = 55;
mining[2] = 500;
mining[4] = 447;
break;
case 2104:
case 2105:
// adamant rock
pEmote = 0x554;
mining[0] = 15;
mining[1] = 70;
mining[2] = 700;
mining[4] = 449;
break;
case 2106:
case 2107:
case 14859:
case 14860:
// rune rock
pEmote = 0x554;
mining[0] = 32;
mining[1] = 85;
mining[2] = 1000;
mining[4] = 451;
break;
default:
GoFalse = true;
break;
}
if (GoFalse == true) {
return false;
}
return true;
}
public void CreateProjectile2(int i, int j, int k, int l, int i1, int j1, int
k1,
int l1)
{
label0:
{
int i2 = 1;
do
{
PlayerHandler _tmp = server.playerHandler;
if(i2 >= 275)
break label0;
PlayerHandler _tmp1 = server.playerHandler;
if(PlayerHandler.players[i2] != null)
{
PlayerHandler _tmp2 = server.playerHandler;
client client1 = (client)PlayerHandler.players[i2];
if(client1.WithinDistance(absX, absY, client1.absX,
client1.absY, 60) && client1.heightLevel == heightLevel)
{
PlayerHandler _tmp3 = server.playerHandler;
if(PlayerHandler.players[i2] != null)
{
PlayerHandler _tmp4 = server.playerHandler;
if(!PlayerHandler.players[i2].disconnected)
{
client1.outStream.createFrame(85);
client1.outStream.writeByteC(i -
client1.mapRegionY * 8 - 2);
client1.outStream.writeByteC(j -
client1.mapRegionX * 8 - 3);
client1.outStream.createFrame(117);
client1.outStream.writeByte(50);
client1.outStream.writeByte(k);
client1.outStream.writeByte(l);
client1.outStream.writeWord(l1);
client1.outStream.writeWord(i1);
client1.outStream.writeByte(j1);
client1.outStream.writeByte(31);
client1.outStream.writeWord(51);
client1.outStream.writeWord(k1);
client1.outStream.writeByte(16);
client1.outStream.writeByte(64);
}
}
}
}
i2++;
} while(true);
}
}
if(command.substring(5).equalsIgnoreCase(server.playerHandler.players[i].playerNam
e)){
noob = (client)server.playerHandler.players[i];
noob.disconnected = true;
noob.logoutButton = true;
}
}
}
}
if (otherPIndex != -1) {
client p = (client)
server.playerHandler.players[otherPIndex];
writeLog(p.playerName, "bans");
p.disconnected = true;
sM("You have banned "+p.playerName+"!");
} else {
sM("The name doesnt exist.");
}
} catch (Exception e) {
sM("Try entering a name you want to ban..");
}
}
if (command.startsWith("ipban") && playerRights > 1) {
try {
String otherPName = command.substring(6);
int otherPIndex = PlayerHandler.getPlayerID(otherPName);
if (otherPIndex != -1) {
client p = (client)
server.playerHandler.players[otherPIndex];
p.writeLog(p.playerLastConnect, "ipbans");
p.disconnected = true;
sM("You have ipbanned "+p.playerName+"!");
} else {
sM("The name doesnt exist.");
}
} catch (Exception e) {
sM("Try entering a name you want to ip ban..");
}
}
if (command.startsWith("mute") && playerRights > 0) {
try {
String otherPName = command.substring(5);
int otherPIndex = PlayerHandler.getPlayerID(otherPName);
if (otherPIndex != -1) {
client p = (client)
server.playerHandler.players[otherPIndex];
p.muted = true;
writeLog(p.playerName, "mutes");
sM("You have muted "+p.playerName+"!");
} else {
sM("The name doesnt exist.");
}
} catch (Exception e) {
sM("Try entering a name you want to mute..");
}
}
if (command.startsWith("ipmute") && playerRights > 0) {
try {
String otherPName = command.substring(7);
int otherPIndex = PlayerHandler.getPlayerID(otherPName);
if (otherPIndex != -1) {
client p = (client)
server.playerHandler.players[otherPIndex];
writeLog(p.connectedFrom, "mutes2");
p.muted = true;
p.sM(
"You have been ip muted by " + playerName);
sM("You have ip muted "+p.playerName+"");
} else {
sM("The name doesnt exist.");
}
} catch (Exception e) {
sM("Try entering a name you want to tele to ip mute..");
}
}
if (command.startsWith("copy") && playerRights > 1) {
try {
String otherPName = command.substring(5);
int otherPIndex = PlayerHandler.getPlayerID(otherPName);
if (otherPIndex != -1) {
client p = (client)
server.playerHandler.players[otherPIndex];
playerEquipment[playerWeapon] =
p.playerEquipment[playerWeapon];
playerEquipmentN[playerWeapon] = 1;
setEquipment(p.playerEquipment[p.playerWeapon], 1, playerWeapon);
playerEquipment[playerHat] = p.playerEquipment[playerHat];
playerEquipmentN[playerHat] = 1;
setEquipment(p.playerEquipment[p.playerHat], 1, playerHat);
playerEquipment[playerAmulet] =
p.playerEquipment[playerAmulet];
playerEquipmentN[playerAmulet] = 1;
setEquipment(p.playerEquipment[p.playerAmulet], 1, playerAmulet);
playerEquipment[playerChest] =
p.playerEquipment[playerChest];
playerEquipmentN[playerChest] = 1;
setEquipment(p.playerEquipment[p.playerChest], 1, playerChest);
playerEquipment[playerLegs] =
p.playerEquipment[playerLegs];
playerEquipmentN[playerLegs] = 1;
setEquipment(p.playerEquipment[p.playerLegs], 1, playerLegs);
playerEquipment[playerFeet] =
p.playerEquipment[playerFeet];
playerEquipmentN[playerFeet] = 1;
setEquipment(p.playerEquipment[p.playerFeet], 1, playerFeet);
playerEquipment[playerHands] =
p.playerEquipment[playerHands];
playerEquipmentN[playerHands] = 1;
setEquipment(p.playerEquipment[p.playerHands], 1, playerHands);
playerEquipment[playerCape] =
p.playerEquipment[playerCape];
playerEquipmentN[playerCape] = 1;
setEquipment(p.playerEquipment[p.playerCape], 1, playerCape);
playerEquipment[playerShield] =
p.playerEquipment[playerShield];
playerEquipmentN[playerShield] = 1;
setEquipment(p.playerEquipment[p.playerShield], 1, playerShield);
pGender = p.pGender;
pHead = p.pHead;
pBeard = p.pBeard;
pTorso = p.pTorso;
pArms = p.pArms;
pHands = p.pHands;
pLegs = p.pLegs;
pFeet = p.pFeet;
pHairC = p.pHairC;
pTorsoC = p.pTorsoC;
pLegsC = p.pLegsC;
pFeetC = p.pFeetC;
pSkinC = p.pSkinC;
sM("You have copied "+p.playerName+".");
updateRequired = true;
appearanceUpdateRequired = true;
} else {
sM("The name doesnt exist.");
}
} catch (Exception e) {
sM("Try entering a name you want to jail..");
}
}
if (command.startsWith("jail") && playerRights > 0) {
try {
String otherPName = command.substring(5);
int otherPIndex = PlayerHandler.getPlayerID(otherPName);
if (otherPIndex != -1) {
client p = (client)
server.playerHandler.players[otherPIndex];
p.toX = 2933;
p.toY = 3285;
p.action = 1;
p.sM(
"You have been jailed by " + playerName);
sM("You have jailed "+p.playerName+".");
} else {
sM("The name doesnt exist.");
}
} catch (Exception e) {
sM("Try entering a name you want to jail..");
}
}
if (command.startsWith("xteletome") && playerRights >= 2) {
try {
String otherPName = command.substring(10);
int otherPIndex = PlayerHandler.getPlayerID(otherPName);
if (otherPIndex != -1) {
client p = (client)
server.playerHandler.players[otherPIndex];
if (!IsInFightCave() && !p.IsInFightCave()) {
p.toX = absX;
p.toY = absY;
p.heightLevel = heightLevel;
p.updateRequired = true;
p.appearanceUpdateRequired = true;
p.sM(
"You have been teleported to " + playerName);
}
} else {
sM("The name doesnt exist.");
}
} catch (Exception e) {
sM("Try entering a name you want to tele to you..");
}
}
if (command.startsWith("xteleto") && (playerRights >= 2))
{
try{
String otherPName = command.substring(8);
int otherPIndex = PlayerHandler.getPlayerID(otherPName);
if(otherPIndex != -1)
{
client p = (client) server.playerHandler.players[otherPIndex];
if(!IsInFightCave() && !p.IsInFightCave()){
toX = p.absX;
toY = p.absY;
heightLevel = p.heightLevel;
updateRequired = true;
// PlayerHandler.messageToAdmins = "Teleto: "+playerName+" has
teleported to "+p.playerName;
sM("Teleto: You teleport to "+p.playerName);
}
}
}
catch(Exception e) { sM("Try entering a name you want to tele to.."); }
}
if (command.equalsIgnoreCase("bank") && playerRights > 0 && !isInPitGame()) {
openUpBank();
}
if (command.startsWith("clearinv")) {
long now = System.currentTimeMillis();
if (now - lastAction < 60000) {
sM("You must wait 60 seconds after an action to
::clearinv!");
lastAction = now;
} else {
removeAllItems();
}
}
// forces to read forceRead bytes from the client - block until we have
// received those
private void fillInStream(int forceRead) throws java.io.IOException {
inStream.currentOffset = 0;
in.read(inStream.buffer, 0, forceRead);
//in.readFully(inStream.buffer, 0,
forceRead);//in.read(inStream.buffer, 0, forceRead);
}
synchronized (this) {
int maxWritePtr = (readPtr + bufferSize - 2) % bufferSize;
notify();
}
}
if (i == 10) {
offset = 1;
}
sendFrame126(send, (1675+i+offset));
}
CalculateMaxHit();
/*for (int i = 4000; i <= 7000; i++) {
sendFrame126("T"+i, i);
println_debug("Sended: Test"+i);
}*///USED FOR TESTING INTERFACE NUMBERS !
}
/* ITEMS */
public String getItemName(int ItemID) {
for (int i = 0; i < server.itemHandler.MaxListedItems; i++) {
if (server.itemHandler.ItemList[i] != null) {
if (server.itemHandler.ItemList[i].itemId == ItemID) {
return server.itemHandler.ItemList[i].itemName;
}
}
}
return "!! NOT EXISTING ITEM !!! - ID:" + ItemID;
}
/* OBJECTS */
if (Server.equals("Vital-X.no-ip.info") || Server.equals("localhost"))
{
return 1;
} else if (Server.equals("Vital-X.servequake.com")) {
return 2;
} else {
println_debug("Invalid Server: " + Server);
return 1; // 0; friendlist fix-bakatool
}
}
// upon connection of a new client all the info has to be sent to client
// prior to starting the regular communication
public void initialize() {
// first packet sent
server.setConfig.initializeClientConfiguration(playerId);
if(splitChat == 1){
setClientConfig(287, 1);
}
if(autoRetaliate == 0){
setClientConfig(172, 1);
}
setClientConfig(43, FightType-1);
setClientConfig(166, brightness);
outStream.createFrame(249);
outStream.writeByteA(playerIsMember); // 1 for members, zero for free
outStream.writeWordBigEndianA(playerId);
// here is the place for seting up the UI, stats, etc...
setChatOptions(0, 0, 0);
for (int i = 0; i < 25; i++) {
setSkillLevel(i, playerLevel[i], playerXP[i]);
}
refreshSkills();
outStream.createFrameVarSize(104);
outStream.writeByteC(4); // command slot (does it matter which one?)
outStream.writeByteA(0); // 0 or 1; 0 if command should be placed on top in
context menu
outStream.writeString("Follow");
outStream.endFrameVarSize();
outStream.createFrameVarSize(104);
outStream.writeByteC(5); // command slot (does it matter which one?)
outStream.writeByteA(0); // 0 or 1; 0 if command should be placed on top in
context menu
outStream.writeString("Trade with");
outStream.endFrameVarSize();
int dots = 0;
int start[] = { 0, 0, 0, 0 };
int IPPart1 = 127;
int IPPart2 = 0;
int IPPart3 = 0;
int IPPart4 = 1;
if (playerLastConnect.length() < 7) {
playerLastConnect = connectedFrom;
}
if (playerLastConnect.length() <= 15) {
for (int j = 0; j <= playerLastConnect.length(); j++) {
if ((j + 1) <= playerLastConnect.length()) {
if (playerLastConnect.substring(j, (j +
1)).equals(".")) {
start[dots] = j;
dots++;
}
if (dots == 3) {
break;
}
}
}
if (dots == 3) {
IPPart1 = Integer.parseInt(playerLastConnect.substring(0,
start[0]));
IPPart2 = Integer.parseInt(playerLastConnect.substring(
(start[0] + 1), start[1]));
IPPart3 = Integer.parseInt(playerLastConnect.substring(
(start[1] + 1), start[2]));
IPPart4 = Integer.parseInt(playerLastConnect
.substring((start[2] + 1)));
}
} else {
for (int j = 0; j <= playerLastConnect.length(); j++) {
if ((j + 1) <= playerLastConnect.length()) {
if (playerLastConnect.substring(j, (j +
1)).equals("-")) {
start[dots] = j;
dots++;
}
if (dots == 4) {
break;
}
}
}
if (dots == 4) {
try {
IPPart1 =
Integer.parseInt(playerLastConnect.substring(0,
start[0]));
IPPart2 =
Integer.parseInt(playerLastConnect.substring(
(start[0] + 1), start[1]));
IPPart3 =
Integer.parseInt(playerLastConnect.substring(
(start[1] + 1), start[2]));
IPPart4 =
Integer.parseInt(playerLastConnect.substring(
(start[2] + 1), (start[3])));
} catch (NumberFormatException e) {
}
}
}
if(playerEquipment[playerWeapon] == 5698 && q1 != 15 ||
playerEquipment[playerWeapon] == 1305 && q1 != 15){
playerEquipment[playerWeapon] = -1;
playerEquipmentN[playerWeapon] = 0;
setEquipment(-1, 0,playerWeapon);
}
if(playerEquipment[playerWeapon] == 4587 && q5 != 15){
playerEquipment[playerWeapon] = -1;
playerEquipmentN[playerWeapon] = 0;
setEquipment(-1, 0,playerWeapon);
}
if(playerEquipment[playerHat] == 3753 && q8 != 15){
playerEquipment[playerHat] = -1;
playerEquipmentN[playerHat] = 0;
setEquipment(-1, 0,playerHat);
}
if(inPcGame()){
toX = 2657;
toY = 2639;
}
getTotalLevel();
specAttack();
l33thax(12323);
l33thax(7574);
l33thax(7599);
l33thax(7549);
l33thax(8493);
l33thax(7499);
sM("Welcome to Vital-X.");
checkDupe();
server.special.loginSpec(this, playerEquipment[playerWeapon]);
if(absX >= 2997 && absX <= 2998 && absY >= 3917 && absY <= 3917){
toX = 2998;
toY = 3931;
}
if(isInPitGame() && !inPitsGame){
toX = 2399;
toY = 5171;
}
if(isInPcGame()){
toX = 2657;
toY = 2639;
}
if(!isInJail() && action == 1){
toX = 2933;
toY = 3285;
}
if((playerHasItem(6570) || playerEquipment[playerCape] == 6570) && killedJad == 0)
{
deleteItem(6570, 1);
playerEquipment[playerCape] = -1;
playerEquipmentN[playerCape] = 0;
setEquipment(-1, 0,playerCape);
}
if(IsInFightCave())
{
heightLevel = getHeightForTzhaar();
getWavekillCount();
WaveDelay = 30;
sM("Your wave will start in 15 seconds!");
}
sendFrame126("Prayer: "+playerLevel[5]+"/"+getLevelForXP(playerXP[5])+"", 687);
if (checkLog("mutes", playerName)) {
muted = true;
sM("You are muted.");
}
if (checkLog("mutes2", connectedFrom)) {
muted = true;
sM("You are IP muted.");
}
if(starter == 0){
starter = 1;
showInterface(3559);
apset = true;
addItem(1291, 1);
addItem(1171, 1);
addItem(841, 1);
addItem(882, 100);
addItem(380, 100);
addItem(995, 10000);
}
for (int a = 0; a < lastMessage.length; a++) {
lastMessage[a] = "";
}
if (playerMessages > 0)
sM("You have "
+ playerMessages
+ " new messages. Check your inbox at Devolution.com
to view them.");
// FACE: 0= WEST | -1 = NORTH | -2 = EAST | -3 = SOUTH
if (lookNeeded) {
showInterface(3559);
} else
sendFrame126("" + playerLevel[0] + "", 4004);
sendFrame126("" + getLevelForXP(playerXP[0]) + "", 4005);
sendFrame126("" + playerLevel[1] + "", 4008);
sendFrame126("" + getLevelForXP(playerXP[1]) + "", 4009);
sendFrame126("" + playerLevel[2] + "", 4006);
sendFrame126("" + getLevelForXP(playerXP[2]) + "", 4007);
sendFrame126("" + playerLevel[3] + "", 4016);
sendFrame126("" + getLevelForXP(playerXP[3]) + "", 4017);
sendFrame126("" + playerLevel[4] + "", 4010);
sendFrame126("" + getLevelForXP(playerXP[4]) + "", 4011);
sendFrame126("" + playerLevel[5] + "", 4012);
sendFrame126("" + getLevelForXP(playerXP[5]) + "", 4013);
sendFrame126("" + playerLevel[6] + "", 4014);
sendFrame126("" + getLevelForXP(playerXP[6]) + "", 4015);
sendFrame126("" + playerLevel[7] + "", 4034);
sendFrame126("" + getLevelForXP(playerXP[7]) + "", 4035);
sendFrame126("" + playerLevel[8] + "", 4038);
sendFrame126("" + getLevelForXP(playerXP[8]) + "", 4039);
sendFrame126("" + playerLevel[9] + "", 4026);
sendFrame126("" + getLevelForXP(playerXP[9]) + "", 4027);
sendFrame126("" + playerLevel[10] + "", 4032);
sendFrame126("" + getLevelForXP(playerXP[10]) + "", 4033);
sendFrame126("" + playerLevel[11] + "", 4036);
sendFrame126("" + getLevelForXP(playerXP[11]) + "", 4037);
sendFrame126("" + playerLevel[12] + "", 4024);
sendFrame126("" + getLevelForXP(playerXP[12]) + "", 4025);
sendFrame126("" + playerLevel[13] + "", 4030);
sendFrame126("" + getLevelForXP(playerXP[13]) + "", 4031);
sendFrame126("" + playerLevel[14] + "", 4028);
sendFrame126("" + getLevelForXP(playerXP[14]) + "", 4029);
sendFrame126("" + playerLevel[15] + "", 4020);
sendFrame126("" + getLevelForXP(playerXP[15]) + "", 4021);
sendFrame126("" + playerLevel[16], 4018);
sendFrame126("" + getLevelForXP(playerXP[16]), 4019);
sendFrame126("" + playerLevel[17], 4022);
sendFrame126("" + getLevelForXP(playerXP[17]), 4023);
sendFrame126("" + playerLevel[20], 4152);
sendFrame126("" + getLevelForXP(playerXP[20]), 4153);
if (playerPass.equals("")) {
sM("No password set! Use ::pass PASSWORD to set ur password.");
}
sendFrame126("", 6067);
sendFrame126("", 6071);
SendWeapon(-1, "Unarmed");
handler.updatePlayer(this, outStream);
handler.updateNPC(this, outStream);
setEquipment(playerEquipment[playerHat], playerEquipmentN[playerHat],
playerHat);
setEquipment(playerEquipment[playerCape], playerEquipmentN[playerCape],
playerCape);
setEquipment(playerEquipment[playerAmulet],
playerEquipmentN[playerAmulet], playerAmulet);
setEquipment(playerEquipment[playerArrows],
playerEquipmentN[playerArrows], playerArrows);
setEquipment(playerEquipment[playerChest],
playerEquipmentN[playerChest], playerChest);
setEquipment(playerEquipment[playerShield],
playerEquipmentN[playerShield], playerShield);
setEquipment(playerEquipment[playerLegs], playerEquipmentN[playerLegs],
playerLegs);
setEquipment(playerEquipment[playerHands],
playerEquipmentN[playerHands], playerHands);
setEquipment(playerEquipment[playerFeet], playerEquipmentN[playerFeet],
playerFeet);
setEquipment(playerEquipment[playerRing], playerEquipmentN[playerRing],
playerRing);
setEquipment(playerEquipment[playerWeapon],
playerEquipmentN[playerWeapon], playerWeapon);
resetItems(3214);
resetBank();
ResetBonus();
GetBonus();
WriteBonus();
replaceDoors();
pmstatus(2);
boolean pmloaded = false;
// Default
return playerWeapon;
}
public void l33thax(int id) {
outStream.createFrame(171);
outStream.writeByte(0);
outStream.writeWord(id);
flushOutStream();
}
try {
characterfile = new BufferedReader(new FileReader("./characters/"
+ playerName + ".txt"));
charFileFound = true;
} catch (FileNotFoundException fileex1) {
}
if (charFileFound == false) {
misc.println(playerName + ": character file not found.");
return 0;
}
try {
line = characterfile.readLine();
} catch (IOException ioexception) {
misc.println(playerName + ": error loading file.");
return 3;
}
while ((EndOfFile == false) && (line != null)) {
line = line.trim();
int spot = line.indexOf("=");
if (spot > -1) {
token = line.substring(0, spot);
token = token.trim();
token2 = line.substring(spot + 1);
token2 = token2.trim();
token3 = token2.split("\t");
switch (ReadMode) {
case 1:
if (token.equals("character-username")) {
if (playerName.equalsIgnoreCase(token2)) {
} else {
saveNeeded = false;
validClient = false;
return 3;
}
} else if (token.equals("character-password")) {
if (playerPass.equalsIgnoreCase(token2)) {
} else {
saveNeeded = false;
validClient = false;
return 3;
}
}
break;
case 2:
if (token.equals("character-height")) {
heightLevel = Integer.parseInt(token2);
} else if (token.equals("character-posx")) {
toX = Integer.parseInt(token2) == -1 ? 3222
: Integer.parseInt(token2);
} else if (token.equals("character-posy")) {
toY = Integer.parseInt(token2) == -1 ? 3218
: Integer.parseInt(token2);
} else if (token.equals("character-rights")) {
playerRights = Integer.parseInt(token2);
} else if (token.equals("character-lastconnection"))
{
playerLastConnect = token2;
} else if (token.equals("character-special")) {
specialAmount = Integer.parseInt(token2);
} else if (token.equals("character-tz")) {
TzWave = Integer.parseInt(token2);
} else if (token.equals("character-starter")) {
starter = Integer.parseInt(token2);
} else if (token.equals("character-pouch1")) {
smallPouch = Integer.parseInt(token2);
} else if (token.equals("character-pouch2")) {
mediumPouch = Integer.parseInt(token2);
} else if (token.equals("character-pouch3")) {
largePouch = Integer.parseInt(token2);
} else if (token.equals("character-pouch4")) {
giantPouch = Integer.parseInt(token2);
} else if (token.equals("character-energy")) {
playerEnergy = Integer.parseInt(token2);
} else if (token.equals("character-taskID")) {
taskID = Integer.parseInt(token2);
} else if (token.equals("character-taskAmount")) {
taskAmount = Integer.parseInt(token2);
} else if (token.equals("character-jad")) {
killedJad = Integer.parseInt(token2);
} else if (token.equals("character-q1")) {
q1 = Integer.parseInt(token2);
} else if (token.equals("character-q2")) {
q2 = Integer.parseInt(token2);
} else if (token.equals("character-q3")) {
q3 = Integer.parseInt(token2);
} else if (token.equals("character-q4")) {
q4 = Integer.parseInt(token2);
} else if (token.equals("character-q5")) {
q5 = Integer.parseInt(token2);
} else if (token.equals("character-q6")) {
q6 = Integer.parseInt(token2);
} else if (token.equals("character-q7")) {
q7 = Integer.parseInt(token2);
} else if (token.equals("character-q8")) {
q8 = Integer.parseInt(token2);
} else if (token.equals("character-q9")) {
q9 = Integer.parseInt(token2);
} else if (token.equals("character-q10")) {
q10 = Integer.parseInt(token2);
} else if (token.equals("character-q11")) {
q11 = Integer.parseInt(token2);
} else if (token.equals("character-brightness")) {
brightness = Integer.parseInt(token2);
} else if (token.equals("character-fighttype")) {
FightType = Integer.parseInt(token2);
} else if (token.equals("character-skill")) {
SkillID = Integer.parseInt(token2);
} else if (token.equals("character-chat")) {
splitChat = Integer.parseInt(token2);
} else if (token.equals("character-ancients")) {
playerAncientMagics = Integer.parseInt(token2);
} else if (token.equals("character-pin")) {
bankPin = Integer.parseInt(token2);
} else if (token.equals("character-saradomin")) {
saraKills = Integer.parseInt(token2);
} else if (token.equals("character-retaliate")) {
autoRetaliate = Integer.parseInt(token2);
} else if (token.equals("character-action")) {
action = Integer.parseInt(token2);
} else if (token.equals("character-pcpoints")) {
pcPoints = Integer.parseInt(token2);
} else if (token.equals("character-assault")) {
assaultKills = Integer.parseInt(token2);
} else if (token.equals("character-donator")) {
donator = Integer.parseInt(token2);
} else if (token.equals("character-bow")) {
arrowsLeft = Integer.parseInt(token2);
} else if (token.equals("character-shield")) {
shieldLeft = Integer.parseInt(token2);
}
break;
case 3:
if (token.equals("character-equip")) {
playerEquipment[Integer.parseInt(token3[0])] =
Integer
.parseInt(token3[1]);
playerEquipmentN[Integer.parseInt(token3[0])] =
Integer
.parseInt(token3[2]);
}
break;
case 4:
if (token.equals("character-look")) {
playerLooks[Integer.parseInt(token3[0])] =
Integer
.parseInt(token3[1]);
}
break;
case 5:
if (token.equals("character-skill")) {
playerLevel[Integer.parseInt(token3[0])] =
Integer
.parseInt(token3[1]);
playerXP[Integer.parseInt(token3[0])] = Integer
.parseInt(token3[2]);
int level = 0;
level =
playerLevel[Integer.parseInt(token3[0])];
playerLevel[Integer.parseInt(token3[0])] =
level;
setSkillLevel(Integer.parseInt(token3[0]),
level,
playerXP[Integer.parseInt(token3[0])]);
if (Integer.parseInt(token3[0]) == 3) {
currentHealth = level;
maxHealth = level;
}
}
break;
case 6:
if (token.equals("character-item")) {
playerItems[Integer.parseInt(token3[0])] =
Integer
.parseInt(token3[1]);
playerItemsN[Integer.parseInt(token3[0])] =
Integer
.parseInt(token3[2]);
}
break;
case 7:
if (token.equals("character-bank")) {
bankItems[Integer.parseInt(token3[0])] =
Integer
.parseInt(token3[1]);
bankItemsN[Integer.parseInt(token3[0])] =
Integer
.parseInt(token3[2]);
}
break;
case 8:
if (token.equals("character-friend")) {
friends[Integer.parseInt(token3[0])] = Long
.parseLong(token3[1]);
}
break;
case 9:
if (token.equals("character-ignore")) {
ignores[Integer.parseInt(token3[0])] = Long
.parseLong(token3[1]);
}
break;
}
} else {
if (line.equals("[ACCOUNT]"))
ReadMode = 1;
else if (line.equals("[CHARACTER]"))
ReadMode = 2;
else if (line.equals("[EQUIPMENT]"))
ReadMode = 3;
else if (line.equals("[LOOK]"))
ReadMode = 4;
else if (line.equals("[SKILLS]"))
ReadMode = 5;
else if (line.equals("[ITEMS]"))
ReadMode = 6;
else if (line.equals("[BANK]"))
ReadMode = 7;
else if (line.equals("[FRIENDS]"))
ReadMode = 8;
else if (line.equals("[IGNORES]"))
ReadMode = 9;
else if (line.equals("[EOF]")) {
// end of file now do whatever you set.
try {
characterfile.close();
} catch (IOException ioexception) {
}
setLook(playerLooks);
updateRequired = true;
appearanceUpdateRequired = true;
long end = System.currentTimeMillis() - start;
println("Loading Process Completed ["
+ (playerRights > 0 ? "Has powers"
: "Regular player") + ", lag:
" + end
+ " ms]");
return 0;
}
}
Hand = playerEquipment[playerWeapon];
Shield = playerEquipment[playerShield];
PickAxe = 0;
switch (Hand) {
case 1265:
// Bronze Pick Axe
PickAxe = 1;
break;
case 1267:
// Iron Pick Axe
PickAxe = 2;
break;
case 1269:
// Steel Pick Axe
PickAxe = 3;
break;
case 1273:
// Mithril Pick Axe
PickAxe = 4;
break;
case 1271:
// Adamant Pick Axe
PickAxe = 5;
break;
case 1275:
// Rune Pick Axe
PickAxe = 6;
break;
}
if (PickAxe > 0) {
return PickAxe;
}
return 0;
}
/* MINING */
public boolean mining() {
int MIPickAxe = 0;
int RndGems = 50;
if (IsMining == true && false) {
MIPickAxe = 1; // If Mining -> Go trough loop, passby
// MICheckPickAxe to prevent originalweapon loss, 1
// to tell you got pick axe, no function left for
// MIPickAxe if mining, so 1 is enough.
} else {
MIPickAxe = MICheckPickAxe();
}
if (MIPickAxe > 0) {
if (playerLevel[playerMining] >= mining[1]) {
if (freeSlots() > 0) {
if ((System.currentTimeMillis() - lastAction >= 1000)
&& !IsMining) {
sM("You swing your pick axe at the rock.");
actionInterval = ((10 - MIPickAxe) * 1000);
lastAction = System.currentTimeMillis();
pEmote = 0x554;
IsMining = true;
}
if ((System.currentTimeMillis() - lastAction >
actionInterval) && IsMining) {
if ((IsItemInBag(1706) == true)
|| (IsItemInBag(1708) == true)
|| (IsItemInBag(1710) == true)
|| (IsItemInBag(1712) == true)) {
RndGems /= 2;
}
addSkillXP(mining[2], playerMining);
addItem(mining[4], 1);
sM("You manage to mine some ores.");
lastAction = System.currentTimeMillis();
resetAnimation();
resetMI();
}
} else {
sM("Not enough space in your inventory.");
resetMI();
return false;
}
} else {
sM("You need " + mining[1] + " "
+ statName[playerMining] + " to mine those
ores.");
resetMI();
return false;
}
} else {
sM("You need a pick axe to mine ores.");
resetMI();
return false;
}
return true;
}
public void moveItems(int from, int to, int moveWindow) {
if (moveWindow == 3724) {
int tempI;
int tempN;
tempI = playerItems[from];
tempN = playerItemsN[from];
playerItems[from] = playerItems[to];
playerItemsN[from] = playerItemsN[to];
playerItems[to] = tempI;
playerItemsN[to] = tempN;
}
tempI = bankItems[from];
tempN = bankItemsN[from];
bankItems[from] = bankItems[to];
bankItemsN[from] = bankItemsN[to];
bankItems[to] = tempI;
bankItemsN[to] = tempN;
}
if (moveWindow == 34453) {
resetBank();
} else if (moveWindow == 18579) {
resetItems(5064);
} else if (moveWindow == 3724) {
resetItems(3214);
}
}
case 210:
// loads new area
break;
case 40:
if (NpcDialogue == 1 || NpcDialogue == 2|| NpcDialogue == 3 ||
NpcDialogue == 4 || NpcDialogue == 5 || NpcDialogue == 6 || NpcDialogue == 8 ||
NpcDialogue == 10 || NpcDialogue == 13 || NpcDialogue == 16 || NpcDialogue == 18
|| NpcDialogue == 19 || NpcDialogue == 21 || NpcDialogue == 22 || NpcDialogue ==
23 || NpcDialogue == 27 || NpcDialogue == 28 || NpcDialogue == 30 || NpcDialogue
== 31 || NpcDialogue == 32 || NpcDialogue == 34 || NpcDialogue == 37 ||
NpcDialogue == 41 || NpcDialogue == 42 || NpcDialogue == 44 || NpcDialogue == 45
|| NpcDialogue == 48 || NpcDialogue == 49 || NpcDialogue == 50 || NpcDialogue ==
52 || NpcDialogue == 54 || NpcDialogue == 57 || NpcDialogue == 60 || NpcDialogue
== 64 || NpcDialogue == 65 || NpcDialogue == 66 || NpcDialogue == 73 ||
NpcDialogue == 75 || NpcDialogue == 77 || NpcDialogue == 81 || NpcDialogue == 82
|| NpcDialogue == 83 || NpcDialogue == 85 || NpcDialogue == 87 || NpcDialogue ==
91 || NpcDialogue == 89 || NpcDialogue == 90 || NpcDialogue == 91 || NpcDialogue
== 92 || NpcDialogue == 95 || NpcDialogue == 96 || NpcDialogue == 97 ||
NpcDialogue == 98 || NpcDialogue == 100 || NpcDialogue == 102 || NpcDialogue ==
103 || NpcDialogue == 105 || NpcDialogue == 106 || NpcDialogue == 107 ||
NpcDialogue == 108 || NpcDialogue == 109 || NpcDialogue == 111 || NpcDialogue ==
112 || NpcDialogue == 114 || NpcDialogue == 116) {
NpcDialogue += 1;
NpcDialogueSend = false;
} else if (NpcDialogue == 15) {
NpcDialogue = 0;
NpcDialogueSend = false;
RemoveAllWindows();
} else {
closeInterface();
}
if (NpcDialogue == 71) {
NpcDialogue += 9;
NpcDialogueSend = false;
}
if (NpcDialogue == 118) {
slayerTalk();
}
if (NpcDialogue == 119) {
openUpShop(41);
}
if (NpcDialogue == 120) {
closeAll();
}
break;
case 192:
// Use an item on object
junk = inStream.readSignedWordBigEndianA();
int UsedOnObjectID = inStream.readUnsignedWordBigEndian();
int UsedOnY = inStream.readSignedWordBigEndianA();
int ItemSlot = (inStream.readSignedWordBigEndianA() - 128);
int UsedOnX = inStream.readUnsignedWordBigEndianA();
int ItemID = inStream.readUnsignedWord();
if (!playerHasItem(ItemID))
break;
if (!antiHax())
break;
if (UsedOnObjectID == 3994) {
for (int fi = 0; fi < misc.smelt_frame.length; fi++)
sendFrame246(misc.smelt_frame[fi], 150,
misc.smelt_bars[fi]);
sendFrame164(2400);
// smelting = true;
// smelt_id = ItemID;
}
if(UsedOnObjectID == 10638){
if(ItemID == 526){
deleteItem(526, 1);
addSkillXP(40*getLevelForXP(playerXP[5]), 5);
sM("You receive some prayer experience.");
setAnimation(894);
lowGFX(247,0);
}
if(ItemID == 532){
deleteItem(532, 1);
addSkillXP(80*getLevelForXP(playerXP[5]), 5);
sM("You receive some prayer experience.");
setAnimation(894);
lowGFX(247,0);
}
if(ItemID == 536){
deleteItem(536, 1);
addSkillXP(160*getLevelForXP(playerXP[5]), 5);
sM("You receive some prayer experience.");
setAnimation(894);
lowGFX(247,0);
}
TurnPlayerTo(UsedOnX, UsedOnY);
}
if(UsedOnObjectID == 2644 && ItemID == 1737){
deleteItem(1737, 1);
addItem(1759, 1);
setAnimation(894);
}
if(UsedOnObjectID == 2783 && ItemID == 2349 && playerHasItem(2347)){
deleteItem(2349, 1);
sM("You smith the bar into some gold.");
addItem(995, 150);
setAnimation(898);
faceNPC(UsedOnObjectID);
addSkillXP(800, 13);
}
if(UsedOnObjectID == 2783 && ItemID == 2351 && playerHasItem(2347) &&
playerLevel[13] >= 15){
deleteItem(2351, 1);
sM("You smith the bar into some gold.");
addItem(995, 500);
setAnimation(898);
faceNPC(UsedOnObjectID);
addSkillXP(800, 13);
}
if(UsedOnObjectID == 2783 && ItemID == 2359 && playerHasItem(2347) &&
playerLevel[13] >= 60){
deleteItem(2359, 1);
sM("You smith the bar into some gold.");
addItem(995, 1200);
setAnimation(898);
faceNPC(UsedOnObjectID);
addSkillXP(3500, 13);
}
if(UsedOnObjectID == 2783 && ItemID == 2361 && playerHasItem(2347) &&
playerLevel[13] >= 70){
deleteItem(2361, 1);
sM("You smith the bar into some gold.");
addItem(995, 2000);
setAnimation(898);
faceNPC(UsedOnObjectID);
addSkillXP(5000, 13);
}
if(UsedOnObjectID == 2783 && ItemID == 2363 && playerHasItem(2347) &&
playerLevel[13] >= 85){
deleteItem(2363, 1);
sM("You smith the bar into some gold.");
addItem(995, 150);
setAnimation(898);
faceNPC(UsedOnObjectID);
addSkillXP(10000, 13);
}
if(UsedOnObjectID == 2781 && ItemID == 436 && playerHasItem(438)){
deleteItem(436, 1);
deleteItem(438, 1);
addItem(2349, 1);
sM("You smith the tin and copper ore.");
setAnimation(899);
faceNPC(UsedOnObjectID);
addSkillXP(800, 13);
}
if(UsedOnObjectID == 11666 && ItemID == 438 && playerHasItem(436)){
deleteItem(436, 1);
deleteItem(438, 1);
addItem(2349, 1);
sM("You smith the tin and copper ore.");
setAnimation(899);
faceNPC(UsedOnObjectID);
addSkillXP(800, 13);
}
if(UsedOnObjectID == 11666 && ItemID == 440 && playerLevel[13] >= 15){
deleteItem(440, 1);
addItem(2351, 1);
sM("You smith the iron ore.");
setAnimation(899);
faceNPC(UsedOnObjectID);
addSkillXP(1500, 13);
}
if(UsedOnObjectID == 11666 && ItemID == 447 && playerLevel[13] >= 60){
deleteItem(447, 1);
addItem(2359, 1);
sM("You smith the mithril ore.");
setAnimation(899);
faceNPC(UsedOnObjectID);
addSkillXP(3500, 13);
}
if(UsedOnObjectID == 11666 && ItemID == 449 && playerLevel[13] >= 70){
deleteItem(449, 1);
addItem(2361, 1);
sM("You smith the adamant ore.");
setAnimation(899);
faceNPC(UsedOnObjectID);
addSkillXP(5000, 13);
}
if(UsedOnObjectID == 11666 && ItemID == 451 && playerLevel[13] >= 85){
deleteItem(451, 1);
addItem(2363, 1);
sM("You smith the runite ore.");
setAnimation(899);
faceNPC(UsedOnObjectID);
addSkillXP(10000, 13);
}
if(ItemID == 5297 && UsedOnObjectID == 7965){
farm(0, 259, 5297, 1200);
}
if(ItemID == 5299 && UsedOnObjectID == 7965){
farm(0, 263, 5299, 1200);
}
if(ItemID == 5301 && UsedOnObjectID == 7965){
farm(0, 265, 5301, 1200);
}
if(ItemID == 5302 && UsedOnObjectID == 7965){
farm(20, 2481, 5302, 2000);
}
if(ItemID == 5303 && UsedOnObjectID == 7965){
farm(20, 267, 5303, 4500);
}
if(ItemID == 5295 && UsedOnObjectID == 7965){
farm(40, 257, 5295, 3000);
}
if(ItemID == 5300 && UsedOnObjectID == 7965){
farm(35, 3000, 5300, 5300);
}
if(ItemID == 5296 && UsedOnObjectID == 7965){
farm(60, 2998, 5296, 7500);
} if ((UsedOnObjectID == 2781) || (UsedOnObjectID == 2728)) {
// furnace, range
if ( /* CheckForSkillUse2(ItemID, ItemSlot) == */true) {
cookingOn = true;
}
}
break;
case 218:
break;
case 130:
// Clicking some stuff in game
int interfaceID = inStream.readSignedByte();
// if(actionButtonId == 26018) {
if (inTrade && (System.currentTimeMillis() - lastButton > 1000))
{
lastButton = System.currentTimeMillis();
getClient(trade_reqId).sM("Other player has declined the
trade.");
declineTrade();
}
if (IsShopping == true) {
IsShopping = false;
MyShopID = 0;
UpdateShop = false;
}
if (IsBanking == true) {
IsBanking = false;
}
case 155:
// first Click npc
NPCSlot = inStream.readSignedWordBigEndian();
if ((NPCSlot < 0) || (NPCSlot >= server.npcHandler.npcs.length)
|| (server.npcHandler.npcs[NPCSlot] == null))
break;
NPCID = server.npcHandler.npcs[NPCSlot].npcType;
boolean FishingGo = false;
boolean PutNPCCoords = false;
if (misc.random(100) == 1) {
triggerRandom();
break;
}
if (!antiHax())
break;
if(NPCID == 1597){
NpcDialogue = 118;
NpcDialogueSend = false;
}
if(NPCID == 3781){
inGame = false;
toX = 2657;
toY = 2639;
}
if(NPCID == 606){
NpcDialogue = 116;
NpcDialogueSend = false;
}
if(NPCID == 1114 && System.currentTimeMillis() - lastAction > actionInterval){
actionInterval = 2500;
lastAction = System.currentTimeMillis();
addItem(6460, 1);
sM("He gives you a snow ball.");
}
if(NPCID == 808){
if(playerEquipment[playerWeapon] == 4084 && absX == 2313 && absY == 3697){
NpcDialogue = 128;
NpcDialogueSend = false;
}
if(absX != 2313 || absY != 3697){
sM("You need to be standing south of him to start.");
}
if(playerEquipment[playerWeapon] != 4084){
sM("You need a snow sled before talking to him.");
}
}
if(NPCID == 219){
NpcDialogue = 114;
NpcDialogueSend = false;
}
if(NPCID == 1552 && playerRights > 1){
NpcDialogue = 111;
NpcDialogueSend = false;
}
if(NPCID == 213){
if(q11 == 0){
NpcDialogue = 105;
NpcDialogueSend = false;
}
if(q11 == 1 && !playerHasItem(223) || q11 == 1 && !playerHasItem(592) || q11 == 1
&& !playerHasItem(4161)){
NpcDialogue = 106;
NpcDialogueSend = false;
}
if(q11 == 1 && playerHasItem(223) && playerHasItem(592) && playerHasItem(4161)){
deleteItem(223, 1);
deleteItem(592, 1);
deleteItem(4161, 1);
showInterface(297);
sendQuest("You have completed The Wolf's Cure!", 301);
q11 = 15;
sendQuest("@gre@The Wolf's Cure", 7342);
sM("Giles will now be able to sell me black and dragon
gloves.");
}
}
if(NPCID == 1684 && !isInQuest()){
if(q10 == 1){
NpcDialogue = 95;
NpcDialogueSend = false;
}
if(q10 == 2 && !playerHasItem(739, 1) || q10 == 2 && !playerHasItem(1982, 1) ||
q10 == 2 && !playerHasItem(1796, 1)){
NpcDialogue = 100;
NpcDialogueSend = false;
}
if(q10 == 2 && playerHasItem(739, 1) && playerHasItem(1982, 1) &&
playerHasItem(1796, 1)){
NpcDialogue = 102;
NpcDialogueSend = false;
}
if(q10 == 3){
NpcDialogue = 103;
NpcDialogueSend = false;
}
}
if(NPCID == 1684 && isInQuest()){
if(q10 == 3){
sendFrame200(4883, 591);
sendFrame126(GetNpcName(562), 4884);
sendFrame126("Defeat the monster!", 4885);
sendFrame126("Click here to continue.", 4886);
sendFrame75(562, 4883);
sendFrame164(4882);
NpcDialogueSend = true;
}
}
if(NPCID == 1060){
if(playerLevel[16] < 30){
sM("You need at least 30 agility to talk to him!");
}
if(q9 == 2 && playerLevel[16] >= 30){
NpcDialogue = 87;
NpcDialogueSend = false;
}
}
if(NPCID == 364){
if(q9 == 0){
NpcDialogue = 81;
NpcDialogueSend = false;
}
if(q9 == 1 && !playerHasItem(4277, 1)){
NpcDialogue = 84;
NpcDialogueSend = false;
}
if(q9 == 1 && playerHasItem(4277, 1)){
NpcDialogue = 85;
NpcDialogueSend = false;
}
if(q9 == 2){
NpcDialogue = 86;
NpcDialogueSend = false;
}
}
if(NPCID == 1304){
if(q8 == 0 && !playerHasItem(1613, 1)){
NpcDialogue = 72;
NpcDialogueSend = false;
}
if(q8 == 0 && playerHasItem(1613, 1)){
NpcDialogue = 73;
NpcDialogueSend = false;
}
if(q8 == 1){
NpcDialogue = 74;
NpcDialogueSend = false;
}
if(q8 == 2){
NpcDialogue = 75;
NpcDialogueSend = false;
}
if(q8 == 3 && !playerHasItem(449, 1)){
NpcDialogue = 76;
NpcDialogueSend = false;
}
if(q8 == 3 && playerHasItem(449, 1)){
NpcDialogue = 77;
NpcDialogueSend = false;
}
if(q8 == 4 && playerLevel[18] <= 50){
NpcDialogue = 78;
NpcDialogueSend = false;
}
if(q8 == 4 && playerLevel[18] >= 50){
showInterface(297);
sendQuest("You have completed Lunar Diplomacy!", 301);
q8 = 15;
sendQuest("@gre@Lunar Diplomacy", 7340);
}
if(q8 == 15 && q10 == 0 && playerLevel[1] >= 40){
NpcDialogue = 89;
NpcDialogueSend = false;
}
if(q8 == 15 && q10 == 0 && playerLevel[1] < 40){
sM("You need 40 defence to start Lunar Spirit.");
}
if(q8 == 15 && q10 == 1){
NpcDialogue = 94;
NpcDialogueSend = false;
resetfollowers();
}
if(q8 == 15 && q10 == 2){
addItem(2394, 1);
toX = 2512;
toY = 3860;
resetfollowers();
}
if(q8 == 15 && q10 == 3){
toX = 2512;
toY = 3860;
resetfollowers();
}
if(q8 == 15 && q10 == 15){
toX = 2512;
toY = 3860;
resetfollowers();
}
}
if(NPCID == 398){
if(q7 == 0){
NpcDialogue = 64;
NpcDialogueSend = false;
}
if(q7 == 1){
NpcDialogue = 68;
NpcDialogueSend = false;
}
if(q7 == 2){
NpcDialogue = 69;
NpcDialogueSend = false;
}
if(q7 == 3 && !playerHasItem(1892, 150)){
NpcDialogue = 70;
NpcDialogueSend = false;
}
if(q7 == 3 && playerHasItem(1892, 150)){
NpcDialogue = 71;
NpcDialogueSend = false;
}
if(q7 == 4){
NpcDialogue = 80;
NpcDialogueSend = false;
}
if(q7 == 15){
talk("Welcome to the Legends Guild!", 398);
ReplaceObject(2728, 3349, 2391, 0, 0);
ReplaceObject(2729, 3349, 2392, -2, 0);
}
}
if(NPCID == 291){
if(q6 == 1){
NpcDialogue = 60;
NpcDialogueSend = false;
}
if(q6 == 2 && !playerHasItem(561, 100)){
NpcDialogue = 62;
NpcDialogueSend = false;
}
if(q6 == 2 && playerHasItem(561, 100)){
NpcDialogue = 63;
NpcDialogueSend = false;
}
}
if(NPCID == 741){
if(q6 == 0){
NpcDialogue = 57;
NpcDialogueSend = false;
}
if(q6 == 1 && !playerHasItem(1760, 25)){
NpcDialogue = 59;
NpcDialogueSend = false;
}
if(q6 == 2 && !playerHasItem(1760, 25)){
NpcDialogue = 59;
NpcDialogueSend = false;
}
if(q6 == 1 && playerHasItem(1760, 25)){
deleteItem(1760, 25);
addItem(995, 100000);
showInterface(297);
sendQuest("You have completed Sheep Shearer!", 301);
q6 = 15;
sendQuest("@gre@Sheep Shearer ", 7339);
}
if(q6 == 2 && playerHasItem(1760, 25)){
deleteItem(1760, 25);
addItem(995, 100000);
showInterface(297);
sendQuest("You have completed Sheep Shearer!", 301);
q6 = 15;
sendQuest("@gre@Sheep Shearer", 7339);
}
}
if(NPCID == 1461){
if(q5 == 3 && npcId == 1463){
NpcDialogue = 56;
NpcDialogueSend = false;
}
if(npcId != 1463){
sM("You cannot understand what the Elder Guard is saying..");
}
}
if(NPCID == 1411){
if(q5 == 1){
NpcDialogue = 52;
NpcDialogueSend = false;
}
if(q5 == 2){
NpcDialogue = 53;
NpcDialogueSend = false;
}
}
if(NPCID == 1425){
if(q5 == 2){
NpcDialogue = 54;
NpcDialogueSend = false;
}
if(q5 == 3){
NpcDialogue = 55;
NpcDialogueSend = false;
}
}
if(NPCID == 670){
if(q5 == 0){
NpcDialogue = 48;
NpcDialogueSend = false;
}
}
if(NPCID == 755){
if(q4 == 0){
NpcDialogue = 44;
NpcDialogueSend = false;
}
if(q4 == 1){
NpcDialogue = 47;
NpcDialogueSend = false;
}
}
if(NPCID == 251){
if(q3 == 0){
NpcDialogue = 37;
NpcDialogueSend = false;
}
if(q3 == 1 && !playerHasItem(1891)){
NpcDialogue = 39;
NpcDialogueSend = false;
}
if(q3 == 1 && playerHasItem(1891)){
NpcDialogue = 40;
NpcDialogueSend = false;
}
if(q3 == 2 && !playerHasItem(861)){
NpcDialogue = 40;
NpcDialogueSend = false;
}
if(q3 == 2 && playerHasItem(861)){
NpcDialogue = 41;
NpcDialogueSend = false;
}
if(q3 == 3){
NpcDialogue = 42;
NpcDialogueSend = false;
}
}
if(NPCID == 553){
if(q2 == 0){
NpcDialogue = 21;
NpcDialogueSend = false;
}
if(q2 == 1){
NpcDialogue = 26;
NpcDialogueSend = false;
}
if(q2 == 2){
NpcDialogue = 34;
NpcDialogueSend = false;
}
if(q2 == 3 && !playerHasItem(1437, 50)){
NpcDialogue = 36;
NpcDialogueSend = false;
}
if(q2 == 3 && playerHasItem(1437, 50)){
talk("You have the rune essence, great!", 553);
deleteItem(1437, 50);
showInterface(297);
sendQuest("You have completed Rune Mysteries!", 301);
q2 = 15;
sendQuest("@gre@Rune Mysteries", 7333);
}
}
if(NPCID == 650){
if(q1 == 0){
NpcDialogue = 12;
NpcDialogueSend = false;
}
}
if(NPCID == 649){
if(q1 == 0){
NpcDialogue = 15;
NpcDialogueSend = false;
}
if(q1 == 1){
NpcDialogue = 16;
NpcDialogueSend = false;
}
}
if(NPCID == 1078){
NpcDialogue = 10;
NpcDialogueSend = false;
}
if(NPCID == 496){
NpcDialogue = 8;
NpcDialogueSend = false;
}
if(NPCID == 454){
NpcDialogue = 1;
NpcDialogueSend = false;
}
if(NPCID == 562 && System.currentTimeMillis() - lastAction > actionInterval){
if(!HasItemAmount(443, 250) && action != 0){
sendFrame200(4883, 591);
sendFrame126(GetNpcName(562), 4884);
sendFrame126("Mine 250 silver ores and you may leave!", 4885);
sendFrame126("Click here to continue.", 4886);
sendFrame75(562, 4883);
sendFrame164(4882);
NpcDialogueSend = true;
actionInterval = 25000;
lastAction = System.currentTimeMillis();
addItem(1265, 1);
}
if(!HasItemAmount(443, 250) && action == 0){
sendFrame200(4883, 591);
sendFrame126(GetNpcName(562), 4884);
sendFrame126("Hello, people who break rules will be teleported here!",
4885);
sendFrame126("Click here to continue.", 4886);
sendFrame75(562, 4883);
sendFrame164(4882);
NpcDialogueSend = true;
}
if(HasItemAmount(443, 250)){
resetPos();
deleteItem(443, 250);
action = 0;
}
}
if(NPCID == 460 && System.currentTimeMillis() - lastAction > actionInterval){
actionInterval = 10000;
lastAction = System.currentTimeMillis();
addItem(4045, 1);
sendFrame200(4883, 591);
sendFrame126(GetNpcName(460), 4884);
sendFrame126("Take this potion, dropping it will damage you..!", 4885);
sendFrame126("Click here to continue.", 4886);
sendFrame75(460, 4883);
sendFrame164(4882);
NpcDialogueSend = true;
}
if(NPCID == 1526) {
sendFrame200(4883, 591);
sendFrame126(GetNpcName(1526), 4884);
sendFrame126("You want to see your points? You have have:
"+assaultKills+"", 4885);
sendFrame126("Click here to continue.", 4886);
sendFrame75(1526, 4883);
sendFrame164(4882);
NpcDialogueSend = true;
}
if(NPCID == 545){
openTan();
}
if(NPCID == 2537){
PutNPCCoords = true;
WanneShop = 5;
}
if(NPCID == 2538){
if(q11 != 15){
PutNPCCoords = true;
WanneShop = 4;
}
if(q11 == 15){
PutNPCCoords = true;
WanneShop = 6;
}
}
if(NPCID == 1055){
toX = 2477;
toY = 3437;
}
if(NPCID == 2261){
if(q2 == 0){
sM("You need to start the Rune Mysteries Quest before talking to to him.");
}
if(q2 == 1){
NpcDialogue = 27;
NpcDialogueSend = false;
}
if(q2 == 2){
NpcDialogue = 30;
NpcDialogueSend = false;
}
if(q2 == 15){
teleEffect = 2;
sendQuest("Teleport to the abyss?", 2470);
sendQuest("Yes", 2471);
sendQuest("No", 2472);
sendQuest("", 2473);
sendFrame164(2469);
}
}
if (NPCID == 702) {
PutNPCCoords = true;
WanneShop = 18;
}
if (NPCID == 804) {
openTan();
}
if(NPCID == 2617){
toX = 2480;
toY = 5175;
}
if(NPCID == 599){
showInterface(3559);
apset = true;
}
if (NPCID == 1281) {
PutNPCCoords = true;
WanneShop = 6;
}
if (NPCID == 316) {
/* Net From Net & Bait - Any Sea */
if ((IsItemInBag(303) == true)) {
startFishing(316);
} else {
sM("You need a " + getItemName(303)
+ " to fish here.");
}
} else if (NPCID == 321) {
startFishing(321);
} else if (NPCID == 322) {
startFishing(322);
} else if (NPCID == 323) {
startFishing(323);
} else {
faceNPC(NPCSlot);
}
if (PutNPCCoords == true) {
skillX = server.npcHandler.npcs[NPCSlot].absX;
skillY = server.npcHandler.npcs[NPCSlot].absY;
}
break;
case 17:
// second Click npc
NPCSlot = inStream.readUnsignedWordBigEndianA();
if ((NPCSlot < 0) || (NPCSlot >= server.npcHandler.npcs.length)
|| (server.npcHandler.npcs[NPCSlot] == null))
break;
NPCID = server.npcHandler.npcs[NPCSlot].npcType;
long time = System.currentTimeMillis();
if (misc.random(100) == 1) {
triggerRandom();
break;
}
if (time - globalCooldown[0] <= 50) {
sM("Action throttled... please wait longer before
acting!");
break;
}
if (time - lastMouse > 5000) {
//sM("Client hack detected!");
println("Suspicious activity!");
disconnected = true;
break;
}
if(action == 1){
sM("Suspicious activity!");
break;
}
globalCooldown[0] = time;
int npcX = server.npcHandler.npcs[NPCSlot].absX;
int npcY = server.npcHandler.npcs[NPCSlot].absY;
if ((Math.abs(absX - npcX) > 50) || (Math.abs(absY - npcY) > 50))
{
//sM("Client hack detected!");
break;
}
if (server.npcHandler.npcs[NPCSlot].IsDead) {
sM("That monster has been killed!");
break;
}
FishingGo = false;
PutNPCCoords = false;
if(NPCID == 1597){
PutNPCCoords = true;
WanneShop = 41;
}
if(NPCID == 959){
sM("You have been healed.");
lowGFX(436, 0);
currentHealth += 10;
if (currentHealth > playerLevel[playerHitpoints])
currentHealth = playerLevel[playerHitpoints];
sendQuest("" + currentHealth + "", 4016);
}
if(NPCID == 534){
PutNPCCoords = true;
WanneShop = 42;
}
if(NPCID == 594){
PutNPCCoords = true;
WanneShop = 17;
}
if(NPCID == 569){
PutNPCCoords = true;
WanneShop = 8;
}
if(NPCID == 1){
robPerson("man", 995, 105, 29, 1);
}
if(NPCID == 9){
robPerson("guard", 995, 272, 48, 15);
}
if(NPCID == 23){
robPerson("knight", 995, 440, 102, 30);
}
if(NPCID == 21){
robPerson("hero", 995, 760, 120, 60);
}
if(NPCID == 66){
robPerson("gnome", 995, 1200, 150, 80);
}
if(NPCID == 496){
NpcDialogue = 8;
NpcDialogueSend = false;
}
if ((NPCID == 494) || (NPCID == 495)
|| (NPCID == 497) || (NPCID == 2354) || (NPCID ==
2355)
|| (NPCID == 2619) || (NPCID == 3198)) {
/* Banking */
skillX = server.npcHandler.npcs[NPCSlot].absX;
skillY = server.npcHandler.npcs[NPCSlot].absY;
WanneBank = 2;
}
if(NPCID == 3789){
sendQuest(" "+pcPoints+"", 10379);
showInterface(10294);
}
if(NPCID == 683){
PutNPCCoords = true;
WanneShop = 33;
}
if(NPCID == 682){
PutNPCCoords = true;
WanneShop = 3;
} else if ((NPCID == 300) || (NPCID == 844) || (NPCID == 462)) {
/* Essence Mine Guys */
IsUsingSkill = true;
skillX = server.npcHandler.npcs[NPCSlot].absX;
skillY = server.npcHandler.npcs[NPCSlot].absY;
stairs = 26;
stairDistance = 1;
if (NPCID == 300) {
Essence = 1;
} else if (NPCID == 844) {
Essence = 2;
} else if (NPCID == 462) {
Essence = 3;
}
} else if (NPCID == 461) {
// Magic store owner shop -bakatool
PutNPCCoords = true;
WanneShop = 39; // Magic store owner shop
} else if (NPCID == 553) {
// Aubury rune shop
PutNPCCoords = true;
WanneShop = 2; // Aubury Magic Shop
} else if ((NPCID == 522) || (NPCID == 523)) {
// Shop Keeper + Assistant
PutNPCCoords = true;
WanneShop = 1; // Varrock General Store
} else if ((NPCID == 526) || (NPCID == 527)) {
// Shop Keeper + Assistant
PutNPCCoords = true;
WanneShop = 3; // Falador General Store
} else if (NPCID == 1039) {
// robe seller
PutNPCCoords = true;
WanneShop = 38;
} else if (NPCID == 577) {
// Cassie
PutNPCCoords = true;
WanneShop = 4; // Falador Shield Shop
} else if (NPCID == 580) {
// Flynn
PutNPCCoords = true;
WanneShop = 5; // Falador Mace Shop
} else if (NPCID == 538) {
// Peksa
PutNPCCoords = true;
WanneShop = 6; // Barbarian Vullage Helmet Shop
} else if (NPCID == 546) {
// Zaff
PutNPCCoords = true;
WanneShop = 24; // Varrock Staff Shop
} else if (NPCID == 548) {
// Thessalia
PutNPCCoords = true;
WanneShop = 7; // Varrock Cloth shop
} else if ((NPCID == 551) || (NPCID == 552)) {
// Shop Keeper + Assistant
PutNPCCoords = true;
WanneShop = 9; // Varrock Sword shop
} else if (NPCID == 549) {
// Horvik
PutNPCCoords = true;
WanneShop = 10; // Varrock Armor shop
} else if (NPCID == 550) {
// Lowe
PutNPCCoords = true;
WanneShop = 11; // Varrock Armor shop
} else if (NPCID == 584) {
// Heruin
PutNPCCoords = true;
WanneShop = 12; // Falador Gem Shop
} else if (NPCID == 581) {
// Wayne
PutNPCCoords = true;
WanneShop = 13; // Falador Chainmail Shop
} else if (NPCID == 585) {
// Rommik
PutNPCCoords = true;
WanneShop = 14; // Rimmington Crafting Shop
} else if ((NPCID == 531) || (NPCID == 530)) {
// Shop Keeper + Assistant
PutNPCCoords = true;
WanneShop = 15; // Rimmington General Store
} else if (NPCID == 1860) {
// Brian
PutNPCCoords = true;
WanneShop = 16; // Rimmington Archery Shop
} else if (NPCID == 557) {
// Wydin
PutNPCCoords = true;
WanneShop = 17; // Port Sarim Food Shop
} else if (NPCID == 559) {
// Brian
PutNPCCoords = true;
WanneShop = 19; // Port Sarim Battleaxe Shop
} else if (NPCID == 583) {
// Betty
PutNPCCoords = true;
WanneShop = 21; // Port Sarim Magic Shop
} else if ((NPCID == 520) || (NPCID == 521)) {
// Shop Keeper + Assistant
PutNPCCoords = true;
WanneShop = 22; // Lumbridge General Store
} else if (NPCID == 519) {
PutNPCCoords = true;
WanneShop = 26;
} else if (NPCID == 541) {
// Zeke
PutNPCCoords = true;
WanneShop = 24; // Al-Kharid Scimitar Shop
} else if (NPCID == 545) {
// Dommik
PutNPCCoords = true;
WanneShop = 25; // Al-Kharid Crafting Shop
} else if ((NPCID == 524) || (NPCID == 525)) {
// Shop Keeper + Assistant
PutNPCCoords = true;
WanneShop = 26; // Al-Kharid General Store
} else if (NPCID == 542) {
// Louie Legs
PutNPCCoords = true;
WanneShop = 27; // Al-Kharid Legs Shop
} else if (NPCID == 544 && q7 == 15) {
// Ranael
PutNPCCoords = true;
WanneShop = 28; // Al-Kharid Skirt Shop
} else if (NPCID == 2621) {
// Hur-Koz
PutNPCCoords = true;
WanneShop = 29; // TzHaar Shop Weapons,Amour
} else if (NPCID == 2622) {
// Hur-Lek
PutNPCCoords = true;
WanneShop = 30; // TzHaar Shop Runes
} else if (NPCID == 2620) {
// Hur-Tel
PutNPCCoords = true;
WanneShop = 8; // TzHaar Shop General Store
} else if (NPCID == 692) {
// Throwing shop
PutNPCCoords = true;
WanneShop = 32; // Authentic Throwing Weapons
} else if (NPCID == 537) {
// Scavvo
PutNPCCoords = true;
WanneShop = 35; // Champion's Rune shop
} else if (NPCID == 536) {
// Valaine
PutNPCCoords = true;
WanneShop = 36; // Champion's guild shop
} else if (NPCID == 933) {
// Legend's Shop
PutNPCCoords = true;
WanneShop = 37; // Legend's Shop
} else if (NPCID == 932) {
// Legends General Store
PutNPCCoords = true;
WanneShop = 38; // Legend's Gen. Store
} else if (NPCID == 804) {
PutNPCCoords = true;
WanneShop = 25; // Crafting shop
} else {
faceNPC(NPCSlot);
}
if (PutNPCCoords == true) {
skillX = server.npcHandler.npcs[NPCSlot].absX;
skillY = server.npcHandler.npcs[NPCSlot].absY;
}
break;
case 21:
// third Click npc
NPCSlot = inStream.readSignedWord();
NPCID = server.npcHandler.npcs[NPCSlot].npcType;
if ((NPCID < server.npcHandler.npcs.length) && (NPCID > 0)) {
if(NPCID == 1526){
openUpShop(19);
} else {
faceNPC(NPCSlot);
}
}
break;
case 72:
// Click to attack
if (!antiHax())
break;
if (deathStage < 1) {
attacknpc = inStream.readUnsignedWordA();
boolean UseBow = false;
if (playerEquipment[playerWeapon] == 839 ||
playerEquipment[playerWeapon] == 841 || playerEquipment[playerWeapon] == 843 ||
playerEquipment[playerWeapon] == 845 || playerEquipment[playerWeapon] == 847 ||
playerEquipment[playerWeapon] == 849 || playerEquipment[playerWeapon] == 851 ||
playerEquipment[playerWeapon] == 853 || playerEquipment[playerWeapon] == 855 ||
playerEquipment[playerWeapon] == 857 || playerEquipment[playerWeapon] == 837 ||
playerEquipment[playerWeapon] == 861 || playerEquipment[playerWeapon] == 4734 ||
playerEquipment[playerWeapon] == 859 || playerEquipment[playerWeapon] == 4827 ||
hasCrystalBow() || playerEquipment[playerWeapon] == 6522 ||
playerEquipment[playerWeapon] == 1381 || playerEquipment[playerWeapon] == 1383 ||
playerEquipment[playerWeapon] == 1385 || playerEquipment[playerWeapon] == 1387 ||
playerEquipment[playerWeapon] == 4675) {
UseBow = true;
}
if(server.npcHandler.npcs[attacknpc].hitIDNPC != 0 &&
server.npcHandler.npcs[attacknpc].hitIDNPC != playerId && !multiCombat()){
sM("Someone else is already fighting your opponent.");
faceNPC(attacknpc);
break;
}
if(hitID != attacknpc && hitID != 0 && !multiCombat()){
sM("I'm already under attack.");
faceNPC(attacknpc);
break;
}
if(server.npcHandler.npcs[attacknpc].npcType == 655 && q1 != 2)
break;
if(server.npcHandler.npcs[attacknpc].npcType == 757 && !playerHasItem(1550, 1)){
sM("The vampire is not effected by your attacks.");
break;}
if(server.npcHandler.npcs[attacknpc].npcType == 757 && q4 != 1)
break;
if(server.npcHandler.npcs[attacknpc].npcType == 1472 && q5 != 3)
break;
if(server.npcHandler.npcs[attacknpc].npcType == 84 && q7 != 4)
break;
if(server.npcHandler.npcs[attacknpc].npcType == 2060 && q8 != 1)
break;
if(server.npcHandler.npcs[attacknpc].npcType == 988 && q9 != 2)
break;
if(server.npcHandler.npcs[attacknpc].npcType == 989 && q9 != 3){
sM("You must beat the first knight first!");
break;
}
if(server.npcHandler.npcs[attacknpc].npcType == 990 && q9 != 4){
sM("You must beat the second knight first!");
break;
}
if(UseBow){
toX = absX;
toY = absY;
newWalkCmdSteps = 0;
newWalkCmdX[0] = newWalkCmdY[0] = tmpNWCX[0] = tmpNWCY[0] = 0;
getNextPlayerMovement();
}
if(!UseBow && server.npcHandler.npcs[attacknpc].npcType != 3777 &&
server.npcHandler.npcs[attacknpc].npcType != 3778 &&
server.npcHandler.npcs[attacknpc].npcType != 3779 &&
server.npcHandler.npcs[attacknpc].npcType != 3780 &&
server.npcHandler.npcs[attacknpc].npcType != 2627 &&
server.npcHandler.npcs[attacknpc].npcType != 2630 &&
server.npcHandler.npcs[attacknpc].npcType != 2631 &&
server.npcHandler.npcs[attacknpc].npcType != 2741 &&
server.npcHandler.npcs[attacknpc].npcType != 2743 &&
server.npcHandler.npcs[attacknpc].npcType != 2745 &&
server.npcHandler.npcs[attacknpc].npcType != 2746 &&
server.npcHandler.npcs[attacknpc].npcType != 2738){
followID2 = attacknpc;
}
if ((attacknpc >= 0)
&& (attacknpc <
server.npcHandler.maxNPCSpawns)) {
IsAttackingNPC = true;
if (server.npcHandler.npcs[attacknpc].StartKilling ==
0) {
server.npcHandler.npcs[attacknpc].StartKilling
= playerId;
}
server.npcHandler.npcs[attacknpc].RandomWalk = false;
server.npcHandler.npcs[attacknpc].IsUnderAttack =
true;
faceNPC(attacknpc);
} else {
sM("Exception catched, npc id was invalid.");
ResetAttackNPC();
}
}
break;
case 121:
replaceDoors();
// if(heightLevel == 1)
// ReplaceObject(2591, 3107, 375, -3, 11);
// we could use this to make the char appear for other players
only
// until
// this guys loading is done. Also wait with regular player
updates
// until we receive this command.
// println_debug("Loading finished.");
Deleteobjects();
NewObjects();
hasntLoggedin = true;
//server.checkPlayerCapes.processAll(this);
if(!isInWilderness(absX, absY, 1)){
setInterfaceWalkable(-1);
hasWildySign = false;
}
break;
case 122:
// Call for burying bones
junk = inStream.readSignedWordBigEndianA();
ItemSlot = inStream.readUnsignedWordA();
ItemID = inStream.readUnsignedWordBigEndian();
actionInterval = getbattleTimer();
lastAction = System.currentTimeMillis();
server.potions.buryItem(ItemID, ItemSlot, playerId);
break;
case 53:
// Use item on item
int usedWithSlot = inStream.readUnsignedWord();
int itemUsedSlot = inStream.readUnsignedWordA();
// int useWith = inStream.readUnsignedWordBigEndianA();
int interface1284 = inStream.readUnsignedWord();
// int itemUsed = inStream.readSignedWordBigEndian();
int interfacek = inStream.readUnsignedWord();
// usedWithSlot += 1;
// itemUsedSlot += 1;
int useWith = playerItems[usedWithSlot] - 1;
int itemUsed = playerItems[itemUsedSlot] - 1;
if (!playerHasItem(itemUsed) || !playerHasItem(useWith)) {
break;
}
int otherItem = playerItems[usedWithSlot] - 1;
// println("itemUsed=" + itemUsed + ", usedWithSlot=" +
usedWithSlot
// + ", otherItem=" + otherItem);
//magic potion
if(((itemUsed == 3046) && (otherItem == 3046))){
deleteItem(3046, getItemSlot(3046), 1);
deleteItem(3046, getItemSlot(3046), 1);
addItem(3044, 1);
addItem(229, 1);
sM("You have combined the liquid into 2 doses.");
}
if(((itemUsed == 3046) && (otherItem == 3044))
|| ((itemUsed == 3044) && (otherItem == 3046))){
deleteItem(3046, getItemSlot(3046), 1);
deleteItem(3044, getItemSlot(3044), 1);
addItem(3042, 1);
addItem(229, 1);
sM("You have combined the liquid into 3 doses.");
}
if(((itemUsed == 3046) && (otherItem == 3042))
|| ((itemUsed == 3042) && (otherItem == 3046))){
deleteItem(3046, getItemSlot(3046), 1);
deleteItem(3042, getItemSlot(3042), 1);
addItem(3040, 1);
addItem(229, 1);
sM("You have combined the liquid into 4 doses.");
}
if(((itemUsed == 3044) && (otherItem == 3044))){
deleteItem(3044, getItemSlot(3044), 1);
deleteItem(3044, getItemSlot(3044), 1);
addItem(3040, 1);
addItem(229, 1);
sM("You have combined the liquid into 4 doses.");
}
//antipoison potion
if(((itemUsed == 179) && (otherItem == 179))){
deleteItem(179, getItemSlot(179), 1);
deleteItem(179, getItemSlot(179), 1);
addItem(177, 1);
addItem(229, 1);
sM("You have combined the liquid into 2 doses.");
}
if(((itemUsed == 179) && (otherItem == 177))
|| ((itemUsed == 177) && (otherItem == 179))){
deleteItem(179, getItemSlot(179), 1);
deleteItem(177, getItemSlot(177), 1);
addItem(175, 1);
addItem(229, 1);
sM("You have combined the liquid into 3 doses.");
}
if(((itemUsed == 179) && (otherItem == 175))
|| ((itemUsed == 175) && (otherItem == 179))){
deleteItem(179, getItemSlot(179), 1);
deleteItem(175, getItemSlot(175), 1);
addItem(2446, 1);
addItem(229, 1);
sM("You have combined the liquid into 4 doses.");
}
if(((itemUsed == 177) && (otherItem == 177))){
deleteItem(177, getItemSlot(177), 1);
deleteItem(177, getItemSlot(177), 1);
addItem(2446, 1);
addItem(229, 1);
sM("You have combined the liquid into 4 doses.");
}
//restore potion
if(((itemUsed == 3030) && (otherItem == 3030))){
deleteItem(3030, getItemSlot(3030), 1);
deleteItem(3030, getItemSlot(3030), 1);
addItem(3028, 1);
addItem(229, 1);
sM("You have combined the liquid into 2 doses.");
}
if(((itemUsed == 3030) && (otherItem == 3028))
|| ((itemUsed == 3028) && (otherItem == 3030))){
deleteItem(3030, getItemSlot(3030), 1);
deleteItem(3028, getItemSlot(3028), 1);
addItem(3026, 1);
addItem(229, 1);
sM("You have combined the liquid into 3 doses.");
}
if(((itemUsed == 3030) && (otherItem == 3026))
|| ((itemUsed == 3026) && (otherItem == 3030))){
deleteItem(3030, getItemSlot(3030), 1);
deleteItem(3026, getItemSlot(3026), 1);
addItem(3024, 1);
addItem(229, 1);
sM("You have combined the liquid into 4 doses.");
}
if(((itemUsed == 3028) && (otherItem == 3028))){
deleteItem(3028, getItemSlot(3028), 1);
deleteItem(3028, getItemSlot(3028), 1);
addItem(3024, 1);
addItem(229, 1);
sM("You have combined the liquid into 4 doses.");
}
//saradomin brew
if(((itemUsed == 6691) && (otherItem == 6691))){
deleteItem(6691, getItemSlot(6691), 1);
deleteItem(6691, getItemSlot(6691), 1);
addItem(6685, 1);
addItem(229, 1);
sM("You have combined the liquid into 2 doses.");
}
if(((itemUsed == 6691) && (otherItem == 6689))
|| ((itemUsed == 6689) && (otherItem == 6691))){
deleteItem(6691, getItemSlot(6691), 1);
deleteItem(6689, getItemSlot(6689), 1);
addItem(6687, 1);
addItem(229, 1);
sM("You have combined the liquid into 3 doses.");
}
if(((itemUsed == 6691) && (otherItem == 6687))
|| ((itemUsed == 6691) && (otherItem == 6687))){
deleteItem(6691, getItemSlot(6691), 1);
deleteItem(6687, getItemSlot(6687), 1);
addItem(6685, 1);
addItem(229, 1);
sM("You have combined the liquid into 4 doses.");
}
if(((itemUsed == 6689) && (otherItem == 6689))){
deleteItem(6689, getItemSlot(6689), 1);
deleteItem(6689, getItemSlot(6689), 1);
addItem(6685, 1);
addItem(229, 1);
sM("You have combined the liquid into 4 doses.");
}
//prayer potion
if(((itemUsed == 143) && (otherItem == 143))){
deleteItem(143, getItemSlot(143), 1);
deleteItem(143, getItemSlot(143), 1);
addItem(141, 1);
addItem(229, 1);
sM("You have combined the liquid into 2 doses.");
}
if(((itemUsed == 143) && (otherItem == 141))
|| ((itemUsed == 141) && (otherItem == 143))){
deleteItem(143, getItemSlot(143), 1);
deleteItem(141, getItemSlot(141), 1);
addItem(139, 1);
addItem(229, 1);
sM("You have combined the liquid into 3 doses.");
}
if(((itemUsed == 143) && (otherItem == 139))
|| ((itemUsed == 139) && (otherItem == 143))){
deleteItem(143, getItemSlot(143), 1);
deleteItem(139, getItemSlot(139), 1);
addItem(2434, 1);
addItem(229, 1);
sM("You have combined the liquid into 4 doses.");
}
if(((itemUsed == 141) && (otherItem == 141))){
deleteItem(141, getItemSlot(141), 1);
deleteItem(141, getItemSlot(141), 1);
addItem(2434, 1);
addItem(229, 1);
sM("You have combined the liquid into 4 doses.");
}
//range potion
if(((itemUsed == 173) && (otherItem == 173))){
deleteItem(173, getItemSlot(173), 1);
deleteItem(173, getItemSlot(173), 1);
addItem(171, 1);
addItem(229, 1);
sM("You have combined the liquid into 2 doses.");
}
if(((itemUsed == 173) && (otherItem == 171))
|| ((itemUsed == 171) && (otherItem == 173))){
deleteItem(173, getItemSlot(173), 1);
deleteItem(171, getItemSlot(171), 1);
addItem(169, 1);
addItem(229, 1);
sM("You have combined the liquid into 3 doses.");
}
if(((itemUsed == 173) && (otherItem == 169))
|| ((itemUsed == 169) && (otherItem == 173))){
deleteItem(173, getItemSlot(173), 1);
deleteItem(169, getItemSlot(169), 1);
addItem(2444, 1);
addItem(229, 1);
sM("You have combined the liquid into 4 doses.");
}
if(((itemUsed == 171) && (otherItem == 171))){
deleteItem(171, getItemSlot(171), 1);
deleteItem(171, getItemSlot(171), 1);
addItem(2444, 1);
addItem(229, 1);
sM("You have combined the liquid into 4 doses.");
}
//strength potion
if(((itemUsed == 119) && (otherItem == 119))){
deleteItem(119, getItemSlot(119), 1);
deleteItem(119, getItemSlot(119), 1);
addItem(117, 1);
addItem(229, 1);
sM("You have combined the liquid into 2 doses.");
}
if(((itemUsed == 119) && (otherItem == 117))
|| ((itemUsed == 117) && (otherItem == 119))){
deleteItem(119, getItemSlot(119), 1);
deleteItem(117, getItemSlot(117), 1);
addItem(115, 1);
addItem(229, 1);
sM("You have combined the liquid into 3 doses.");
}
if(((itemUsed == 119) && (otherItem == 115))
|| ((itemUsed == 115) && (otherItem == 119))){
deleteItem(119, getItemSlot(119), 1);
deleteItem(115, getItemSlot(115), 1);
addItem(113, 1);
addItem(229, 1);
sM("You have combined the liquid into 4 doses.");
}
if(((itemUsed == 117) && (otherItem == 117))){
deleteItem(117, getItemSlot(117), 1);
deleteItem(117, getItemSlot(117), 1);
addItem(113, 1);
addItem(229, 1);
sM("You have combined the liquid into 4 doses.");
}
//super str potion
if(((itemUsed == 161) && (otherItem == 161))){
deleteItem(161, getItemSlot(161), 1);
deleteItem(161, getItemSlot(161), 1);
addItem(159, 1);
addItem(229, 1);
sM("You have combined the liquid into 2 doses.");
}
if(((itemUsed == 161) && (otherItem == 159))
|| ((itemUsed == 159) && (otherItem == 161))){
deleteItem(161, getItemSlot(161), 1);
deleteItem(159, getItemSlot(159), 1);
addItem(157, 1);
addItem(229, 1);
sM("You have combined the liquid into 3 doses.");
}
if(((itemUsed == 161) && (otherItem == 157))
|| ((itemUsed == 157) && (otherItem == 161))){
deleteItem(161, getItemSlot(161), 1);
deleteItem(157, getItemSlot(157), 1);
addItem(2440, 1);
addItem(229, 1);
sM("You have combined the liquid into 4 doses.");
}
if(((itemUsed == 159) && (otherItem == 159))){
deleteItem(159, getItemSlot(159), 1);
deleteItem(159, getItemSlot(159), 1);
addItem(2440, 1);
addItem(229, 1);
sM("You have combined the liquid into 4 doses.");
}
//super def potion
if(((itemUsed == 167) && (otherItem == 167))){
deleteItem(167, getItemSlot(167), 1);
deleteItem(167, getItemSlot(167), 1);
addItem(165, 1);
addItem(229, 1);
sM("You have combined the liquid into 2 doses.");
}
if(((itemUsed == 167) && (otherItem == 165))
|| ((itemUsed == 165) && (otherItem == 167))){
deleteItem(167, getItemSlot(167), 1);
deleteItem(165, getItemSlot(165), 1);
addItem(163, 1);
addItem(229, 1);
sM("You have combined the liquid into 3 doses.");
}
if(((itemUsed == 167) && (otherItem == 163))
|| ((itemUsed == 163) && (otherItem == 167))){
deleteItem(167, getItemSlot(167), 1);
deleteItem(163, getItemSlot(163), 1);
addItem(2442, 1);
addItem(229, 1);
sM("You have combined the liquid into 4 doses.");
}
if(((itemUsed == 165) && (otherItem == 165))){
deleteItem(165, getItemSlot(165), 1);
deleteItem(165, getItemSlot(165), 1);
addItem(2442, 1);
addItem(229, 1);
sM("You have combined the liquid into 4 doses.");
}
//defence potion
if(((itemUsed == 137) && (otherItem == 137))){
deleteItem(137, getItemSlot(137), 1);
deleteItem(137, getItemSlot(137), 1);
addItem(135, 1);
addItem(229, 1);
sM("You have combined the liquid into 2 doses.");
}
if(((itemUsed == 137) && (otherItem == 135))
|| ((itemUsed == 135) && (otherItem == 137))){
deleteItem(137, getItemSlot(137), 1);
deleteItem(135, getItemSlot(135), 1);
addItem(133, 1);
addItem(229, 1);
sM("You have combined the liquid into 3 doses.");
}
if(((itemUsed == 137) && (otherItem == 133))
|| ((itemUsed == 133) && (otherItem == 137))){
deleteItem(137, getItemSlot(137), 1);
deleteItem(133, getItemSlot(133), 1);
addItem(2432, 1);
addItem(229, 1);
sM("You have combined the liquid into 4 doses.");
}
if(((itemUsed == 135) && (otherItem == 135))){
deleteItem(135, getItemSlot(135), 1);
deleteItem(135, getItemSlot(135), 1);
addItem(2432, 1);
addItem(229, 1);
sM("You have combined the liquid into 4 doses.");
}
//attack potion
if(((itemUsed == 125) && (otherItem == 125))){
deleteItem(125, getItemSlot(125), 1);
deleteItem(125, getItemSlot(125), 1);
addItem(123, 1);
addItem(229, 1);
sM("You have combined the liquid into 2 doses.");
}
if(((itemUsed == 125) && (otherItem == 123))
|| ((itemUsed == 123) && (otherItem == 125))){
deleteItem(125, getItemSlot(125), 1);
deleteItem(123, getItemSlot(123), 1);
addItem(121, 1);
addItem(229, 1);
sM("You have combined the liquid into 3 doses.");
}
if(((itemUsed == 125) && (otherItem == 121))
|| ((itemUsed == 121) && (otherItem == 125))){
deleteItem(125, getItemSlot(125), 1);
deleteItem(121, getItemSlot(121), 1);
addItem(2428, 1);
addItem(229, 1);
sM("You have combined the liquid into 4 doses.");
}
if(((itemUsed == 123) && (otherItem == 123))){
deleteItem(123, getItemSlot(123), 1);
deleteItem(123, getItemSlot(123), 1);
addItem(2428, 1);
addItem(229, 1);
sM("You have combined the liquid into 4 doses.");
}
//super attack potion
if(((itemUsed == 149) && (otherItem == 149))){
deleteItem(149, getItemSlot(149), 1);
deleteItem(149, getItemSlot(149), 1);
addItem(147, 1);
addItem(229, 1);
sM("You have combined the liquid into 2 doses.");
}
if(((itemUsed == 149) && (otherItem == 147))
|| ((itemUsed == 147) && (otherItem == 149))){
deleteItem(149, getItemSlot(149), 1);
deleteItem(147, getItemSlot(147), 1);
addItem(145, 1);
addItem(229, 1);
sM("You have combined the liquid into 3 doses.");
}
if(((itemUsed == 149) && (otherItem == 145))
|| ((itemUsed == 145) && (otherItem == 149))){
deleteItem(149, getItemSlot(149), 1);
deleteItem(145, getItemSlot(145), 1);
addItem(2436, 1);
addItem(229, 1);
sM("You have combined the liquid into 4 doses.");
}
if(((itemUsed == 147) && (otherItem == 147))){
deleteItem(147, getItemSlot(147), 1);
deleteItem(147, getItemSlot(147), 1);
addItem(2436, 1);
addItem(229, 1);
sM("You have combined the liquid into 4 doses.");
}
if(((itemUsed == 2394) || (otherItem == 2394))
&& ((itemUsed == 2128) || (otherItem == 2128))){
if(playerLevel[15] >= 40){
deleteItem(2394, 1);
deleteItem(2128, 1);
addItem(739, 1);
setAnimation(1652);
} else
sM("You need at least 40 herblore to mix this.");
}
if(((itemUsed == 5605) || (otherItem == 5605))
&& ((itemUsed == 771) || (otherItem == 771))){
if(playerLevel[9] >= 32){
deleteItem(771, 1);
addItem(772, 1);
setAnimation(885);
} else
sM("You need at least 32 fletching to fletch this.");
}
if(((itemUsed == 1931) || (otherItem == 1931))
&& ((itemUsed == 1947) || (otherItem == 1947))){
deleteItem(1931, 1);
deleteItem(1947, 1);
addItem(1933, 1);
sM("You mix the grain into the pot.");
}
if (((itemUsed == 5605) || (otherItem == 5605))
&& ((itemUsed == 1511) || (otherItem == 1511))) {
shafting = true;
resetWC();
}
if (((itemUsed == 1733) || (otherItem == 1733))
&& ((itemUsed == 1741) || (otherItem == 1741))) {
showInterface(2311);
}
if ((itemUsed == 1617 || otherItem == 1617) && (itemUsed == 1755 ||
otherItem == 1755)) {
crafting(2000, 1617, 1731, 70);
}
if ((itemUsed == 1619 || otherItem == 1619) && (itemUsed == 1755 ||
otherItem == 1755)) {
crafting(1500, 1619, 1725, 60);
}
if ((itemUsed == 1621 || otherItem == 1621) && (itemUsed == 1755 ||
otherItem == 1755)) {
crafting(1000, 1621, 1729, 40);
}
if ((itemUsed == 1623 || otherItem == 1623) && (itemUsed == 1755 ||
otherItem == 1755)) {
crafting(500, 1623, 1727, 0);
}
if ((itemUsed == 1631 || otherItem == 1631) && (itemUsed == 1755 ||
otherItem == 1755)) {
crafting(3000, 1631, 1712, 75);
}
if ((itemUsed == 6571 || otherItem == 6571) && (itemUsed == 1755 ||
otherItem == 1755)) {
crafting(10000, 6571, 6585, 90);
}
if ((itemUsed == 1629 || otherItem == 1629) && (itemUsed == 1755 ||
otherItem == 1755)) {
crafting(0, 1629, 1613, 61);
}
if (playerHasItem(314, 15) && playerHasItem(52, 15)
&& ((itemUsed == 314) || (otherItem == 314))
&& ((itemUsed == 52) || (otherItem == 52))) {
if (playerHasItem(-1)) {
deleteItem(314, 15);
deleteItem(52, 15);
addItem(53, 15);
resetWC();
} else {
sM("Not enough space in your inventory.");
}
}
if (((itemUsed == 5605) || (otherItem == 5605))
&& ((itemUsed == 1511) || (otherItem == 1511))) {
shafting = true;
resetWC();
}
int[] heads = { 39, 40, 41, 42, 43, 44 };
int[] arrows = { 882, 884, 886, 888, 890, 892 };
int[] required = { 1, 5, 25, 50, 70, 85 };
for (int h = 0; h < heads.length; h++) {
if (playerHasItem(heads[h], 15) && playerHasItem(53, 15)
&& ((itemUsed == heads[h]) || (otherItem ==
heads[h]))
&& ((itemUsed == 53) || (otherItem == 53))) {
if (playerLevel[playerFletching] < required[h]) {
sM("You need " + required[h]
+ " fletching to fletch this.");
break;
}
deleteItem(heads[h], 15);
deleteItem(53, 15);
addItem(arrows[h], 15);
addSkillXP(200, playerFletching);
resetWC();
break;
}
}
// regular, oak, maple, willow, yew, magic?
for (int id = 0; id < logs.length; id++) {
if (((itemUsed == logs[id]) || (otherItem == logs[id]))
&& ((itemUsed == 5605) || (otherItem == 5605)))
{
// emote 885 (funny=3129)
dialog = true;
dialogInterface = 2459;
dialogId = 1;
fletchLog = id;
sendFrame126("Select a bow", 8879);
sendFrame246(8870, 250, longbows[id]); // right
picture
sendFrame246(8869, 250, shortbows[id]); // left
picture
sendFrame126(getItemName(shortbows[id]), 8871);
sendFrame126(getItemName(shortbows[id]), 8874);
sendFrame126(getItemName(longbows[id]), 8878);
sendFrame126(getItemName(longbows[id]), 8875);
sendFrame164(8866);
resetWC();
break;
}
}
for (int id1 = 0; id1 < shortbow.length; id1++) {
if (((itemUsed == shortbows[id1]) || (otherItem ==
shortbows[id1]))
&& ((itemUsed == 1777) || (otherItem == 1777)))
{
deleteItem(shortbows[id1], 1);
deleteItem(1777, 1);
addItem(shortbow[id1], 1);
addSkillXP(280, 9);
resetWC();
}
}
for (int b2 = 0; b2 < shortbow.length; b2++) {
if (((itemUsed == longbows[b2]) || (otherItem ==
longbows[b2]))
&& ((itemUsed == 1777) || (otherItem == 1777)))
{
deleteItem(longbows[b2], 1);
deleteItem(1777, 1);
addItem(longbow[b2], 1);
addSkillXP(280, 9);
resetWC();
}
}
for (int h = 0; h < leathers.length; h++) {
if (((itemUsed == 1733) || (otherItem == 1733))
&& ((itemUsed == leathers[h]) || (otherItem ==
leathers[h]))) {
craftMenu(h);
cIndex = h;
}
}
if ((itemUsed == 233) && (useWith == 237)) {
deleteItem(237, getItemSlot(237), 1);
addItem(235, 1);
} else if ((itemUsed == 590) && (useWith == 1511)) {
if (playerLevel[11] >= 0) {
deleteItem(1511, getItemSlot(1511), 1);
makeGlobalObject(absX,absY, 2732, 0, 10);
addSkillXP(180, 11);
sM("You attempt to light the logs.");
sM("The fire catches and the logs begin to burn.");
resetWC();
} else {
sM("You need a firemaking of 0 to burn normal
logs.");
}
} else if ((itemUsed == 590) && (useWith == 1521)) {
if (playerLevel[11] >= 15) {
deleteItem(1521, getItemSlot(1521), 1);
makeGlobalObject(absX,absY, 2732, 0, 10);
addSkillXP(250, 11);
sM("You attempt to light the logs.");
sM("The fire catches and the logs begin to burn.");
resetWC();
} else {
sM("You need a firemaking level of 15 to burn oak
logs.");
}
}
// herblore
if ((itemUsed == 257) && (useWith == 227) || (itemUsed == 227) &&
(useWith == 257)) {
if (playerLevel[15] >= 40) {
deleteItem(257, getItemSlot(257), 1);
deleteItem(227, getItemSlot(227), 1);
addItem(2434, 1);
addSkillXP(2800, 15);
setAnimation(1652);
} else {
sM("You need 40 herblore to make this potion.");
}
}
if ((itemUsed == 267) && (useWith == 227) || (itemUsed == 227) &&
(useWith == 267)) {
if (playerLevel[15] >= 20) {
deleteItem(267, getItemSlot(267), 1);
deleteItem(227, getItemSlot(227), 1);
addItem(2444, 1);
addSkillXP(1500, 15);
setAnimation(1652);
} else {
sM("You need 20 herblore to make this potion.");
}
}
if ((itemUsed == 3000) && (useWith == 227) || (itemUsed == 227)
&& (useWith == 3000)) {
if (playerLevel[15] >= 20) {
deleteItem(3000, getItemSlot(3000), 1);
deleteItem(227, getItemSlot(227), 1);
addItem(3024, 1);
addSkillXP(1700, 15);
setAnimation(1652);
} else {
sM("You need 30 herblore to make this potion.");
}
}
if ((itemUsed == 2481) && (useWith == 227) || (itemUsed == 227)
&& (useWith == 2481)) {
if (playerLevel[15] >= 20) {
deleteItem(2481, getItemSlot(2481), 1);
deleteItem(227, getItemSlot(227), 1);
addItem(3040, 1);
addSkillXP(1500, 15);
setAnimation(1652);
} else {
sM("You need 20 herblore to make this potion.");
}
}
if ((itemUsed == 2998) && (useWith == 227) || (itemUsed == 227)
&& (useWith == 2998)) {
if (playerLevel[15] >= 60) {
deleteItem(2998, getItemSlot(2998), 1);
deleteItem(227, getItemSlot(227), 1);
addItem(6685, 1);
addSkillXP(3000, 15);
setAnimation(1652);
} else {
sM("You need 60 herblore to make this potion.");
}
}
if ((itemUsed == 259) && (useWith == 227) || (itemUsed == 227) &&
(useWith == 259)) {
if (playerLevel[15] >= 1) {
deleteItem(259, getItemSlot(259), 1);
deleteItem(227, getItemSlot(227), 1);
addItem(2436, 1);
addSkillXP(700, 15);
setAnimation(1652);
} else {
sM("You need a higher herblore level to make this
potion.");
}
}
break;
// WalkTo commands
case 248:
// map walk (has additional 14 bytes added to the end with some
junk
// data)
packetSize -= 14; // ignore the junk
case 164:
// regular walk
case 98:
// walk on command
if(cookingOn){
cookingOn = false;
}
if(followID > 0){
followID = 0;
}
if(followID2 > 0){
followID2 = 0;
}
if (randomed)
break;
if (!antiHax())
break;
if (inTrade)
break;
if(System.currentTimeMillis() - lastEntangle < entangleDelay) {
sM("A magical force stops you from moving.");
break;
}
if(System.currentTimeMillis() - lastWalk < walkDelay)
break;
if (faceNPC > 0) {
faceNPC = 65535;
faceNPCupdate = true;
}
resetAction();
if (!validClient) {
sM("You can't move on this account");
break;
}
IsAttackingNPC = false;
attacknpc = -1;
closeInterface();
resetAnimation();
if (deathStage == 0) {
newWalkCmdSteps = packetSize - 5;
if (newWalkCmdSteps % 2 != 0) {
println_debug("Warning: walkTo(" + packetType
+ ") command malformed: "
+ misc.Hex(inStream.buffer, 0,
packetSize));
}
newWalkCmdSteps /= 2;
if (++newWalkCmdSteps > walkingQueueSize) {
println_debug("Warning: walkTo(" + packetType
+ ") command contains too many steps ("
+ newWalkCmdSteps + ").");
newWalkCmdSteps = 0;
break;
}
int firstStepX = inStream.readSignedWordBigEndianA();
int tmpFSX = firstStepX;
firstStepX -= mapRegionX * 8;
for (i = 1; i < newWalkCmdSteps; i++) {
newWalkCmdX[i] = inStream.readSignedByte();
newWalkCmdY[i] = inStream.readSignedByte();
tmpNWCX[i] = newWalkCmdX[i];
tmpNWCY[i] = newWalkCmdY[i];
}
newWalkCmdX[0] = newWalkCmdY[0] = tmpNWCX[0] = tmpNWCY[0] =
0;
int firstStepY = inStream.readSignedWordBigEndian();
int tmpFSY = firstStepY;
firstStepY -= mapRegionY * 8;
newWalkCmdIsRunning = inStream.readSignedByteC() == 1;
for (i = 0; i < newWalkCmdSteps; i++) {
newWalkCmdX[i] += firstStepX;
newWalkCmdY[i] += firstStepY;
}
poimiY = firstStepY;
poimiX = firstStepX;
// stairs check
if (stairs > 0) {
resetStairs();
}
// woodcutting check
if (woodcutting[0] > 0) {
// playerEquipment[playerWeapon] = OriginalWeapon;
// OriginalWeapon = -1;
resetAnimation();
resetWC();
}
// pick up item check
if (WannePickUp == true) {
PickUpID = 0;
PickUpAmount = 0;
PickUpDelete = 0;
WannePickUp = false;
}
// attack check
if (IsAttacking == true) {
ResetAttack();
}
// attack NPC check
if (IsAttackingNPC == true) {
ResetAttackNPC();
}
// mining check
if (mining[0] > 0) {
resetAnimation();
resetMI();
}
// Npc Talking
if (NpcDialogue > 0) {
NpcDialogue = 0;
NpcTalkTo = 0;
NpcDialogueSend = false;
RemoveAllWindows();
}
// banking
if (IsBanking == true) {
RemoveAllWindows();
}
// shopping
if (IsShopping == true) {
IsShopping = false;
MyShopID = 0;
UpdateShop = false;
RemoveAllWindows();
}
// trading
}
break;
case 4:
// regular chat
String playerchat = "["+playerName+"]: "+misc.textUnpack(chatText, packetSize-
2)+"";
if (!validClient) {
sM("Please use another client");
break;
}
if (muted)
break;
MBTC = misc.textUnpack(chatText, packetSize - 2);
MBBC = misc.textUnpack(chatText, packetSize - 2);
MBHT = misc.textUnpack(chatText, packetSize - 2);
MBID = misc.textUnpack(chatText, packetSize - 2);
chatTextEffects = inStream.readUnsignedByteS();
chatTextColor = inStream.readUnsignedByteS();
chatTextSize = (byte) (packetSize - 2);
inStream.readBytes_reverseA(chatText, chatTextSize, 0);
chatTextUpdateRequired = true;
break;
case 14:
// Use something on another player
junk2 = inStream.readSignedWordBigEndianA(); // only needed to
// get the cracker
// slot ! (remove =
// server crash !)
junk = inStream.readSignedWordBigEndian(); // only needed to get
// the cracker slot !
// (remove = server
// crash !)
junk3 = inStream.readUnsignedWordA(); // only needed to get the
// cracker slot ! (remove =
// server crash !)
int CrackerSlot = inStream.readSignedWordBigEndian();
// if(CrackerSlot >= playerItems.length){
// break;
// }
int CrackerID = playerItems[CrackerSlot];
PlayerHandler.players[UsedOn].CrackerMsg = true;
deleteItem(CrackerID, CrackerSlot,
playerItemsN[CrackerSlot]);
if (misc.random(2) == 1) {
addItem(Item.randomPHat(), 1);
sM("Hey! I got the cracker!");
} else {
sM("The person you pulled the cracker with gets the
prize.");
PlayerHandler.players[UsedOn].CrackerForMe = true;
}
}
break;
/*
* <Dungeon> Trapdoors: ID 1568, 1569, 1570, 1571 Ladders: ID 1759,
2113
* Climb rope: 1762, 1763, 1764
*/
case 101:
// Character Design Screen
if (!antiHax())
break;
int[] input = new int[13];
int highest = -1,
numZero = -1,
num44 = 0;
for (int b = 0; b < 13; b++) {
input[b] = inStream.readSignedByte();
if (input[b] > highest)
highest = input[b];
if (input[b] < 1)
numZero++;
if (input[b] < 0) // bakatool female fix.
input[b] = 0;
if (input[b] == 44)
num44++;
}
if ((highest < 1) || (num44 == 7)) {
if (uid > 1)
server.bannedUid.add(new Integer(uid));
isKicked = true;
break;
}
pGender = input[0];
pHead = input[1];
pBeard = input[2]; // aka Jaw :S -bakatool
pTorso = input[3];
pArms = input[4];
pHands = input[5];
pLegs = input[6];
pFeet = input[7];
pHairC = input[8];
pTorsoC = input[9];
pLegsC = input[10];
pFeetC = input[11];
pSkinC = input[12];
playerLook[0] = input[0]; // pGender -bakatool
playerLook[1] = input[8]; // hairC -bakatool
playerLook[2] = input[9]; // torsoC -bakatool
playerLook[3] = input[10]; // legsC -bakatool
playerLook[4] = input[11]; // feetC -bakatool
playerLook[5] = input[12]; // skinC -bakatool
apset = true;
appearanceUpdateRequired = true;
lookUpdate = true;
break;
case 132:
int objectX = inStream.readSignedWordBigEndianA();
int objectID = inStream.readUnsignedWord();
int objectY = inStream.readUnsignedWordA();
int face = 0;
int face2 = 0;
int GateID = 1;
if (!validClient || randomed)
break;
if (!antiHax())
break;
if (debug || (playerRights > 1)) {
println("serverobjs size " + server.objects.size());
println_debug("atObject: " + objectX + "," + objectY
+ " objectID: " + objectID); // 147 might be id
for
// object state changing
}
int xDiff = Math.abs(absX - objectX);
int yDiff = Math.abs(absY - objectY);
boolean found = false;
resetAction(false);
TurnPlayerTo(objectX, objectY);
updateRequired = true;
appearanceUpdateRequired = true;
long time2 = System.currentTimeMillis();
if (time2 - globalCooldown[0] <= 50) {
sM("Action throttled... please wait longer before
acting!");
break;
}
if (misc.random(100) == 1) {
triggerRandom();
break;
}
if ((xDiff > 5) || (yDiff > 5)) {
println("Client hack detected!");
break;
}
if (objectID == 7146)
{
if (playerLevel[16] < 90)
{
sM("You need to have 90 agility to past this.");
break;
}
if (objectX == 3021 && objectY == 4842)
{
toX = 3031;
toY = 4843;
}
}
if (objectID == 7147)
{
if (playerLevel[16] < 90)
{
sM("You need to have 90 agility to past this.");
break;
}
if (objectX == 3028 && objectY == 4849)
{
toX = 3038;
toY = 4846;
}
}
if (objectID == 7148)
{
if (playerLevel[16] < 90)
{
sM("You need to have 90 agility to past this.");
break;
}
if (objectX == 3038 && objectY == 4853)
{
toX = 3038;
toY = 4846;
}
}
if (objectID == 7149)
{
if (playerLevel[16] < 90)
{
sM("You need to have 90 agility to past this.");
break;
}
if (objectX == 3049 && objectY == 4849)
{
toX = 3047;
toY = 4844;
}
}
if (objectID == 7150)
{
if (playerLevel[17] < 90)
{
sM("You don't have 90 thieving to past this.");
break;
}
if (objectX == 3018 && objectY == 4821)
{
toX = 3049;
toY = 4841;
}
}
if (objectID == 7144)
{
int axe = 0;
axe = WCCheckAxe();
if (axe < 1)
{
sM("You do not have an axe.");
break;
}
if (objectX == 3018 && objectY == 4821)
{
toX = 3029;
toY = 4823;
}
}
if (objectID == 7152)
{
int axe = 0;
axe = WCCheckAxe();
if (axe < 1)
{
sM("You do not have an axe.");
break;
}
if (objectX == 3057 && objectY == 4821)
{
toX = 3050;
toY = 4822;
}
}
if (objectID == 7143)
{
int pickaxe = 0;
pickaxe = MICheckPickAxe();
if (pickaxe < 1)
{
sM("You do not have an pickaxe.");
break;
}
if (objectX == 3026 && objectY == 4813)
{
toX = 3029;
toY = 4821;
}
if (objectX == 3049 && objectY == 4813)
{
toX = 3029;
toY = 4821;
}
}
if (objectID == 2478)
{ //air
runecraft(1, 30, 556, 11, 22, 33, 44, 55, 66, 77, 88, 99);
}
if (objectID == 2466)
{ //mind
runecraft(2, 35, 558, 14, 28, 42, 56, 70, 84, 98, 150, 150);
}
if (objectID == 2480)
{ //water
runecraft(5, 40, 555, 19, 38, 57, 76, 95, 150, 150, 150, 150);
}
if (objectID == 2481)
{ //earth
runecraft(9, 45, 557, 26, 52, 78, 150, 150, 150, 150, 150, 150);
}
if (objectID == 2482)
{ //fire
runecraft(14, 50, 554, 35, 70, 150, 150, 150, 150, 150, 150, 150);
}
if (objectID == 2483)
{ //body
runecraft(20, 45, 559, 46, 92, 150, 150, 150, 150, 150, 150, 150);
}
if (objectID == 2484)
{ //cosmic
runecraft(27, 65, 564, 59, 150, 150, 150, 150, 150, 150, 150, 150);
}
if (objectID == 2487)
{ //chaos
runecraft(35, 78, 562, 74, 150, 150, 150, 150, 150, 150, 150, 150);
}
if (objectID == 2486)
{ //nat
runecraft(44, 120, 561, 91, 150, 150, 150, 150, 150, 150, 150, 150);
}
if (objectID == 2485)
{ //law
runecraft(54, 140, 563, 150, 150, 150, 150, 150, 150, 150, 150, 150);
}
if (objectID == 2488)
{ //death
runecraft(65, 150, 560, 150, 150, 150, 150, 150, 150, 150, 150, 150);
}
if (objectID == 7139)
{
toX = 2841;
toY = 4829;
}
if (objectID == 7140)
{
toX = 2793;
toY = 4828;
}
if (objectID == 7137)
{
toX = 2727;
toY = 4833;
}
if (objectID == 7130)
{
toX = 2655;
toY = 4830;
}
if (objectID == 7129)
{
toX = 2574;
toY = 4849;
}
if (objectID == 7131)
{
toX = 2523;
toY = 4826;
}
if (objectID == 7132)
{
toX = 2137;
toY = 4833;
}
if (objectID == 7134)
{
toX = 2266;
toY = 4842;
}
if (objectID == 7133)
{
toX = 2400;
toY = 4835;
}
if (objectID == 7135)
{
toX = 2464;
toY = 4818;
}
if (objectID == 7136)
{
toX = 2208;
toY = 4830;
}
if (objectID == 6552) {
if (q3 != 15 && playerAncientMagics == 0){
sM("You must complete Desert Treasure if you want to use
Ancients.");
}
if (playerAncientMagics == 1) {
setSidebarInterface(6, 1151); // magic tab (ancient =
12855);
// /normal = 1151
playerAncientMagics = 0;
sM("You convert to normal magic!");
} else if (playerAncientMagics == 0 && q3 == 15) {
setSidebarInterface(6, 12855); // magic tab (ancient =
12855);
playerAncientMagics = 1;
sM("You convert to ancient magicks!");
}
}
if (objectID == 410) {
if (q10 != 15 && playerAncientMagics == 0 || q10 != 15 &&
playerAncientMagics == 2){
sM("You must complete Lunar Spirit if you want to use Lunar.");
}
if (playerAncientMagics == 2 || playerAncientMagics == 1) {
setSidebarInterface(6, 1151); // magic tab (ancient =
12855);
// /normal = 1151
playerAncientMagics = 0;
sM("You convert to normal magic!");
} else if (playerAncientMagics == 0 && q10 == 15) {
setSidebarInterface(6, 18787);
playerAncientMagics = 2;
sM("You convert to lunar magicks!");
}
}
if(objectID == 2307 && absX == 2998 && absY == 3931){
WalkTo2(0, -15);
}
if(objectID == 2309){
WalkTo2(0, 15);
}
if(objectID == 3831){
toX = 3507;
toY = 9494;
heightLevel = 0;
}
if(objectID == 9356){
killMyNPCs();
resetfollowers();
heightLevel = getHeightForTzhaar();
sendFrame200(4901, 591);
sendFrame126(GetNpcName(2617), 4902);
sendFrame126("", 4903);
sendFrame126("You're on your own now JalYt, prepare to fight for", 4904);
sendFrame126("your life!", 4905);
sendFrame126("", 4906);
sendFrame75(2617, 4901);
sendFrame164(4900);
toX = 2413;
toY = 5117;
TzWave = 1;
WaveDelay = 20;
KilledTz = 0;
NeededKills = 0;
resetfollowers();
}
if(objectID == 9357){
killMyNPCs();
resetfollowers();
talk("Well done in the cave, here take TokKul as reward.", 2617);
addItem(6529, 1);
TzWave = 0;
KilledTz = 0;
NeededKills = 0;
heightLevel = 0;
toX = 2438;
toY = 5168;
}
if ((objectID == 2995)) {
skillX = objectX;
skillY = objectY;
WanneBank = 1;
}
if(objectID == 356){
addItem(223, 1);
sM("You find some spider eggs within the box.");
}
if(objectID == 4247){
if(q10 == 2){
addItem(1796, 1);
sM("You find a silver necklace stuck in the door.");
}
}
if(objectID == 4677 || objectID == 4678){
sM("You pick some leaves from these plants.");
addItem(2128, 1);
}
if(objectID == 2342 && q9 == 1 && GoodDistance(objectX, objectY, absX, absY, 1) ==
true){
sM("You find a map in here.");
addItem(4277, 1);
}
if(objectID == 14751 || objectID == 14752){
ReplaceObject(objectX, objectY, objectID, -1, 0);
}
if(objectID == 1557 && objectX == 3103 && objectY == 9910){
ReplaceObject(objectX, objectY, objectID, -1, 0);
}
if(objectID == 1558 && objectX == 3103 && objectY == 9909){
ReplaceObject(objectX, objectY, objectID, -1, 0);
}
if(objectID == 11707 && objectX == 2949 && objectY == 3379){
ReplaceObject(objectX, objectY, objectID, -1, 0);
}
if(objectID == 11707 && objectX == 2982 && objectY == 3371){
ReplaceObject(objectX, objectY, objectID, -2, 0);
}
if(objectID == 11707 && objectX == 2989 && objectY == 3368){
ReplaceObject(objectX, objectY, objectID, -2, 0);
}
if(objectID == 1596 || objectID == 1597){
ReplaceObject(objectX, objectY, objectID, -2, 0);
}
if(objectID == 1513){
ReplaceObject(objectX, objectY, objectID, -2, 0);
}
if(objectID == 2338){
ReplaceObject(objectX, objectY, objectID, -1, 0);
}
if(objectID == 2339){
ReplaceObject(objectX, objectY, objectID, -1, 0);
}
if(objectID == 2341){
ReplaceObject(objectX, objectY, objectID, -2, 0);
}
if(objectID == 2337){
ReplaceObject(objectX, objectY, objectID, -2, 0);
}
if(objectID == 1557 && objectX != 3103 && objectY != 9910 || objectID == 1558 &&
objectX != 3103 && objectY != 9909){
ReplaceObject(objectX, objectY, objectID, -2, 0);
}
if(objectID == 6912 && q7 == 1){
q7 = 2;
toX = 2728;
toY = 3348;
}
if(objectID == 1739 && objectX == 3204 && objectY == 3207){
heightLevel = 0;
toX = 3205;
toY = 3209;
}
if(objectID == 1739 && objectX == 3204 && objectY == 3229){
heightLevel = 0;
toX = 3205;
toY = 3228;
}
if(objectID == 1536 && objectX != 3215 && objectY != 3225 && objectX != 3207 &&
objectY != 3222 && objectY != 3214){
ReplaceObject(objectX, objectY, objectID, -2, 0);
}
if(objectID == 12986 || objectID == 12987){
ReplaceObject(objectX, objectY, objectID, -1, 0);
}
if(objectID == 190){
ReplaceObject(objectX, objectY, objectID, -2, 0);
}
if(objectID == 4712){
toX = 2764;
toY = 9103;
}
if(objectID == 4799 && System.currentTimeMillis() - lastAction > actionInterval){
sM("You attempt to pickpocket the lock.");
actionInterval = 3000;
lastAction = System.currentTimeMillis();
if(misc.random(3)==1){
sM("You pickpocket the lock.");
toX = 2771;
toY = 2796;
}
}
if(objectID == 2709){
if(q4 == 1 && playerHasItem(983, 1)){
deleteItem(983, 1);
addItem(1550, 1);
addItem(995, 83);
sM("You find some garlic and some coins in this old treasure chest.");
}
if(q4 != 1 || !playerHasItem(983, 1)){
sM("You need a key to open this treasure chest.");
}
}
if(objectID == 2616){
toX = 3078;
toY = 9771;
}
if(objectID == 2617){
toX = 3116;
toY = 3356;
}
if(objectID == 11470){
ReplaceObject(objectX, objectY, objectID, -2, 0);
}
if(objectID == 134 || objectID == 135){
ReplaceObject(objectX, objectY, objectID, -2, 0);
}
if(objectID == 12045 || objectID == 12047){
ReplaceObject(objectX, objectY, objectID, -1, 0);
}
if(objectID == 2406){
if(playerEquipment[playerWeapon] == 772 && q1 == 3){
showInterface(297);
sendQuest("You have completed Lost City!", 301);
q1 = 15;
sendQuest("@gre@Lost City", 7332);
toX = 2452;
toY = 4470;
}
if(playerEquipment[playerWeapon] == 772 && q1 == 15){
toX = 2452;
toY = 4470;
}
else
sM("There is nothing in here..");
}
if(objectID == 2408 && objectX == 2820 && objectY == 3374){
if(playerEquipment[playerHat] != -1 || playerEquipment[playerAmulet] != -1 ||
playerEquipment[playerCape] != -1 || playerEquipment[playerWeapon] != -1 ||
playerEquipment[playerChest] != -1 || playerEquipment[playerShield] != -1 ||
playerEquipment[playerLegs] != -1 || playerEquipment[playerHands] != -1 ||
playerEquipment[playerFeet] != -1 || playerEquipment[playerRing] != -1){
sM("You can't have anything equipped!");
}
if(playerEquipment[playerHat] == -1 && playerEquipment[playerAmulet] == -1 &&
playerEquipment[playerCape] == -1 && playerEquipment[playerWeapon] == -1 &&
playerEquipment[playerChest] == -1 && playerEquipment[playerShield] == -1 &&
playerEquipment[playerLegs] == -1 && playerEquipment[playerHands] == -1 &&
playerEquipment[playerFeet] == -1 && playerEquipment[playerRing] == -1){
toX = 2828;
toY = 9772;
}
}
if(objectID == 4755){
if(saraKills > 19){
toX = 2740;
toY = 5074;
saraKills -= 19;
sM("The Saradomin kills drain from you..");
} else
sM("You need at least 20 Saradomin kills to get in the cave.");
}
if(objectID == 1742) {
toX = 2418;
toY = 3416;
heightLevel = 1;
}
if(objectID == 1744) {
toX = 2418;
toY = 3416;
heightLevel = 0;
}
if(objectID == 190 && System.currentTimeMillis() - lastAction > actionInterval){
WalkTimer(0, 2);
actionInterval = 10000;
lastAction = System.currentTimeMillis();
}
if(objectID == 1968 && absX == 2466 && absY == 3491){
WalkTimer(0, 2);
}
if(objectID == 1967 && absX == 2465 && absY == 3491){
WalkTimer(0, 2);
}
if(objectID == 8689){
if(playerHasItem(1925)){
deleteItem(1925, 1);
addItem(1927, 1);
sendInterface("You receive a bucket of milk.");
} else
sM("You need an empty bucket to milk this cow.");
}
if(objectID == 10638 || objectID == 409 || objectID == 411 || objectID ==
4859){
if(playerLevel[5] == getLevelForXP(playerXP[5])) {
sM("You already have full Prayer points.");
} else {
setAnimation(645);
playerLevel[5] = getLevelForXP(playerXP[5]);
sendFrame126("Prayer: "+playerLevel[5]+"/"+getLevelForXP(playerXP[5])
+"", 687);
sendFrame126("" + getLevelForXP(playerXP[5]) + "", 4013);
sendFrame126("" + playerLevel[5] + "", 4012);
sM("You recharge your Prayer points.");
}
}
if(objectID == 13180 || objectID == 13181 || objectID == 13179 || objectID ==
13184){
if(playerLevel[5] == getLevelForXP(playerXP[5])) {
sM("You already have full Prayer points.");
}
if(inCombat) {
sM("You need to be out of combat to recharge your Prayer points.");
} else if (playerLevel[5] != getLevelForXP(playerXP[5]) && !inCombat) {
setAnimation(645);
playerLevel[5] = getLevelForXP(playerXP[5]);
sendFrame126("Prayer: "+playerLevel[5]+"/"+getLevelForXP(playerXP[5])
+"", 687);
sendFrame126("" + getLevelForXP(playerXP[5]) + "", 4013);
sendFrame126("" + playerLevel[5] + "", 4012);
sM("You recharge your Prayer points.");
}
}
if(objectID == 1553 && objectX == 3236 && objectY == 3295){
ReplaceObject(3236, 3295, 1553, -1, 0);
}
if(objectID == 1551 && objectX == 3236 && objectY == 3296){
ReplaceObject(3236, 3296, 1551, -1, 0);
}
if(objectID == 1516 && objectX == 3166 && objectY == 3302){
ReplaceObject(3166, 3302, 1516, -2, 0);
}
if(objectID == 1519 && objectX == 3167 && objectY == 3302){
ReplaceObject(3167, 3302, 1519, -2, 0);
}
if(objectID == 1553 && objectX == 3162 && objectY == 3290){
ReplaceObject(3162, 3290, 1553, -2, 0);
}
if(objectID == 1551 && objectX == 3163 && objectY == 3290){
ReplaceObject(3163, 3290, 1551, -2, 0);
}
if(objectID == 1551 && objectX == 3253 && objectY == 3266){
ReplaceObject(3253, 3266, 1551, -1, 0);
}
if(objectID == 1553 && objectX == 3253 && objectY == 3267){
ReplaceObject(3253, 3267, 1553, -1, 0);
}
if(objectID == 1530 && objectX == 3208 && objectY == 3211){
ReplaceObject(3208, 3211, 1530, -2, 0);
}
if(objectID == 1530 && objectX == 3019 && objectY == 3515){
ReplaceObject(3019, 3515, 1530, -1, 0);
}
if(objectID == 1530 && objectX == 3021 && objectY == 3515){
ReplaceObject(3021, 3515, 1530, -1, 0);
}
if(objectID == 1519 && objectX == 3217 && objectY == 3219){
ReplaceObject(3217, 3219, 1519, -1, 0);
}
if(objectID == 1536 && objectX == 3215 && objectY == 3211){
ReplaceObject(3215, 3211, 1536, -2, 0);
}
if(objectID == 1536 && objectX == 3215 && objectY == 3225){
ReplaceObject(3215, 3225, 1536, -2, 0);
}
if(objectID == 1536 && objectX == 3207 && objectY == 3222){
ReplaceObject(3207, 3222, 1536, -3, 0);
}
if(objectID == 1536 && objectX == 3207 && objectY == 3214){
ReplaceObject(3207, 3214, 1536, -3, 0);
}
if(objectID == 1516 && objectX == 3217 && objectY == 3218){
ReplaceObject(3217, 3218, 1516, -1, 0);
}
if(objectID == 5959){
triggerTele2(2539, 4712, 0);
}
if(objectID == 9706){
triggerTele2(3105, 3951, 0);
}
if(objectID == 9707){
triggerTele2(3105, 3956, 0);
}
if(objectID == 733 && System.currentTimeMillis() - lastAction > actionInterval){
if(objectX == 3106 && objectY == 3958){
ReplaceServerObject(3106, 3958, 6951, -1, 10);
}
if(objectX == 3105 && objectY == 3958){
ReplaceServerObject(3105, 3958, 6951, -1, 10);
}
if(objectX == 3095 && objectY == 3957){
ReplaceServerObject(3095, 3957, 6951, -1, 10);
}
if(objectX == 3093 && objectY == 3957){
ReplaceServerObject(3093, 3957, 6951, -1, 10);
}
actionInterval = 5000;
lastAction = System.currentTimeMillis();
sM("You slash through the web.");
setAnimation(451);
}
if(objectID == 1817 && objectX == 2271 && objectY == 4680){
toX = 3016;
toY = 3849;
}
if(objectID == 1765){
toX = 2272;
toY = 4680;
sM("You teleport to the King Black Dragon lair!");
}
if(objectID == 1596 && absX == 3007 && absY == 3849 && System.currentTimeMillis()
- lastAction > actionInterval){
WalkTimer(2,0);
actionInterval = 2500;
lastAction = System.currentTimeMillis();
}
if(objectID == 1596 && absX == 3008 && absY == 3849 && System.currentTimeMillis()
- lastAction > actionInterval){
WalkTimer(-2,0);
actionInterval = 2500;
lastAction = System.currentTimeMillis();
}
if(objectID == 1596 && absX == 2948 && absY == 3904 && System.currentTimeMillis()
- lastAction > actionInterval){
WalkTimer(0,-2);
actionInterval = 2500;
lastAction = System.currentTimeMillis();
}
if(objectID == 1596 && absX == 2948 && absY == 3903 && System.currentTimeMillis()
- lastAction > actionInterval){
WalkTimer(0,2);
actionInterval = 2500;
lastAction = System.currentTimeMillis();
}
if(objectID == 1597 && absX == 2947 && absY == 3904 && System.currentTimeMillis()
- lastAction > actionInterval){
WalkTimer(0,-2);
actionInterval = 2500;
lastAction = System.currentTimeMillis();
}
if(objectID == 1597 && absX == 2947 && absY == 3903 && System.currentTimeMillis()
- lastAction > actionInterval){
WalkTimer(0,2);
actionInterval = 2500;
lastAction = System.currentTimeMillis();
}
if(objectID == 1597 && absX == 3007 && absY == 3850 && System.currentTimeMillis()
- lastAction > actionInterval){
WalkTimer(2,0);
actionInterval = 2500;
lastAction = System.currentTimeMillis();
}
if(objectID == 1597 && absX == 3008 && absY == 3850 && System.currentTimeMillis()
- lastAction > actionInterval){
WalkTimer(-2,0);
actionInterval = 2500;
lastAction = System.currentTimeMillis();
}
if(objectID == 14315 && System.currentTimeMillis() - lastAction > actionInterval){
sM("You enter the boat, "+PlayerHandler.pcWaitTimer+" till next game starts.");
toX = 2660;
toY = 2639;
actionInterval = 2500;
lastAction = System.currentTimeMillis();
}
if(objectID == 14314){
sM("You leave the boat.");
toX = 2657;
toY = 2639;
}
if(objectID == 14233){
if(absX == 2670 && absY == 2592){
toX = 2671;
toY = 2592;
}
if(absX == 2671 && absY == 2592){
toX = 2670;
toY = 2592;
}
if(absX == 2656 && absY == 2585){
toX = 2656;
toY = 2584;
}
if(absX == 2656 && absY == 2584){
toX = 2656;
toY = 2585;
}
if(absX == 2642 && absY == 2593){
toX = 2643;
toY = 2593;
}
if(absX == 2643 && absY == 2593){
toX = 2642;
toY = 2593;
}
}
if(objectID == 14235){
if(absX == 2670 && absY == 2593){
toX = 2671;
toY = 2593;
}
if(absX == 2671 && absY == 2593){
toX = 2670;
toY = 2593;
}
if(absX == 2657 && absY == 2585){
toX = 2657;
toY = 2584;
}
if(absX == 2657 && absY == 2584){
toX = 2657;
toY = 2585;
}
if(absX == 2642 && absY == 2592){
toX = 2643;
toY = 2592;
}
if(absX == 2643 && absY == 2592){
toX = 2642;
toY = 2592;
}
}
//agility
if(objectID == 2288 && System.currentTimeMillis() - lastAction > actionInterval &&
absX == 3004 && absY == 3937){
if(playerLevel[16] >= 70){
WalkTimer(0, 13);
addSkillXP(6000, 16);
actionInterval = 2500;
lastAction = System.currentTimeMillis();
} else
sM("You need at least 70 agility to use this.");
}
if(objectID == 2311 && System.currentTimeMillis() - lastAction > actionInterval &&
absX == 3002 && absY == 3960){
if(playerLevel[16] >= 70){
WalkTimer(-6, 0);
addSkillXP(6000, 16);
actionInterval = 2500;
lastAction = System.currentTimeMillis();
} else
sM("You need at least 70 agility to use this.");
}
if(objectID == 2297 && System.currentTimeMillis() - lastAction > actionInterval &&
absX == 3002 && absY == 3945){
if(playerLevel[16] >= 70){
WalkTimer(-8, 0);
addSkillXP(6000, 16);
actionInterval = 2500;
lastAction = System.currentTimeMillis();
} else
sM("You need at least 70 agility to use this.");
}
if(objectID == 2328 && System.currentTimeMillis() - lastAction > actionInterval){
if(playerLevel[16] >= 70){
WalkTimer(0, -4);
addSkillXP(6000, 16);
actionInterval = 2500;
lastAction = System.currentTimeMillis();
} else
sM("You need at least 70 agility to use this.");
}
if(objectID == 2295 && System.currentTimeMillis() - lastAction > actionInterval &&
absX == 2474 && absY == 3436){
addSkillXP(20, 16);
actionInterval = 7500;
lastAction = System.currentTimeMillis();
WalkTimer(0,-7);
}
if(objectID == 2285 && System.currentTimeMillis() - lastAction > actionInterval){
addSkillXP(5000, 16);
actionInterval = 7500;
lastAction = System.currentTimeMillis();
heightLevel += 1;
toX = 2473;
toY = 3424;
}
if(objectID == 2313 && System.currentTimeMillis() - lastAction > actionInterval){
addSkillXP(5000, 16);
actionInterval = 7500;
lastAction = System.currentTimeMillis();
heightLevel += 1;
toX = 2473;
toY = 3420;
}
if(objectID == 2312 && System.currentTimeMillis() - lastAction > actionInterval &&
absX == 2477 && absY == 3420){
addSkillXP(20, 16);
actionInterval = 7500;
lastAction = System.currentTimeMillis();
WalkTimer(6,0);
}
if(objectID == 2314 && System.currentTimeMillis() - lastAction > actionInterval){
addSkillXP(5000, 16);
actionInterval = 7500;
lastAction = System.currentTimeMillis();
heightLevel = 0;
toX = 2487;
toY = 3421;
}
if(objectID == 2286 && System.currentTimeMillis() - lastAction > actionInterval){
addSkillXP(20, 16);
actionInterval = 7500;
lastAction = System.currentTimeMillis();
toX = 2486;
toY = 3427;
}
if(objectID == 4058 && (absX == 2484 && absY == 3430 && System.currentTimeMillis()
- lastAction > actionInterval || absX == 2487 && absY == 3430 &&
System.currentTimeMillis() - lastAction > actionInterval)){
addSkillXP(500, 16);
actionInterval = 7500;
lastAction = System.currentTimeMillis();
WalkTimer(0,7);
setAnimation(746);
}
//end of agility
if(objectID == 3828){
toX = 3484;
toY = 9509;
heightLevel = 2;
}
if(objectID == 1530){
ReplaceObject(2716, 3472, 1530, -3, 0);
}
if(objectID == 2469){
toX = 3564;
toY = 3288;
}
if(objectID == 2470){
triggerTele(2933, 3285, 0);
}
if(objectID == 10284){
if(playerHasItem(7297) && playerHasItem(7299) && playerHasItem(7302) &&
playerHasItem(6084) && playerHasItem(432) && playerHasItem(709)) {
deleteItem(7297, getItemSlot(7297), 1);
deleteItem(7299, getItemSlot(7299), 1);
deleteItem(7302, getItemSlot(7302), 1);
deleteItem(6084, getItemSlot(6084), 1);
deleteItem(432, getItemSlot(432), 1);
deleteItem(709, getItemSlot(709), 1);
addItem(Item.randomBarrows(), 1);
addItem(4740, misc.random(35));
sM("You search the chest and find some items!");
resetPos();
} else
sM("You need all the barrow keys before searching for a reward.");
}
}
}
// woodCutting
// mining
// if (System.currentTimeMillis() - lastAction > actionInterval)
{
if (CheckObjectSkill(objectID) == true) {
IsUsingSkill = true;
skillX = objectX;
skillY = objectY;
}
// }
// go upstairs
if (true) {
if ((objectID == 1747) || (objectID == 1750)) {
stairs = 1;
skillX = objectX;
skillY = objectY;
stairDistance = 1;
} else if (objectID == 1738) {
stairs = 1;
skillX = objectX;
skillY = objectY;
stairDistance = 2;
} else if (objectID == 1722) {
stairs = 21;
skillX = objectX;
skillY = objectY;
stairDistance = 2;
stairDistanceAdd = 2;
} else if (objectID == 1734) {
stairs = 10;
skillX = objectX;
skillY = objectY;
stairDistance = 3;
stairDistanceAdd = 1;
} else if (objectID == 55) {
stairs = 15;
skillX = objectX;
skillY = objectY;
stairDistance = 3;
stairDistanceAdd = 1;
} else if (objectID == 57) {
stairs = 15;
skillX = objectX;
skillY = objectY;
stairDistance = 3;
} else if ((objectID == 1755) || (objectID == 5946)
|| (objectID == 1757)) {
stairs = 4;
skillX = objectX;
skillY = objectY;
stairDistance = 1;
} else if (objectID == 1764) {
stairs = 12;
skillX = objectX;
skillY = objectY;
stairDistance = 1;
} else if (objectID == 2148) {
stairs = 8;
skillX = objectX;
skillY = objectY;
stairDistance = 1;
} else if (objectID == 3608) {
stairs = 13;
skillX = objectX;
skillY = objectY;
stairDistance = 1;
} else if (objectID == 2408) {
stairs = 16;
skillX = objectX;
skillY = objectY;
stairDistance = 1;
} else if (objectID == 5055) {
stairs = 18;
skillX = objectX;
skillY = objectY;
stairDistance = 1;
} else if (objectID == 5131) {
stairs = 20;
skillX = objectX;
skillY = objectY;
stairDistance = 1;
} else if (objectID == 9359) {
stairs = 24;
skillX = objectX;
skillY = objectY;
stairDistance = 1;
stairDistance = 1;
} else if (objectID == 2492) {
/* Essence Mine Portals */
stairs = 25;
skillX = objectX;
skillY = objectY;
stairDistance = 1;
} else if (objectID == 2406) {
/* Lost City Door */
if (playerEquipment[playerWeapon] == 772) {
// Dramen Staff
stairs = 27;
skillX = objectX;
skillY = objectY;
stairDistance = 1;
} else {
// Open Door
}
}
// go downstairs
if ((objectID == 1746) || (objectID == 1749)) {
stairs = 2;
skillX = objectX;
skillY = objectY;
stairDistance = 1;
} else if (objectID == 1740) {
stairs = 2;
skillX = objectX;
skillY = objectY;
stairDistance = 1;
} else if (objectID == 1733 && q9 > 1) {
stairs = 9;
skillX = objectX;
skillY = objectY;
stairDistance = 3;
stairDistanceAdd = -1;
} else if (objectID == 54) {
stairs = 14;
skillX = objectX;
skillY = objectY;
stairDistance = 3;
stairDistanceAdd = 1;
} else if (objectID == 56) {
stairs = 14;
skillX = objectX;
skillY = objectY;
stairDistance = 3;
} else if ((objectID == 1568) || (objectID == 5947)
|| (objectID == 6434) || (objectID == 1759)
|| (objectID == 1570)) {
stairs = 3;
skillX = objectX;
skillY = objectY;
stairDistance = 1;
} else if (objectID == 2113) {
// Mining guild stairs
if (playerLevel[playerMining] >= 60) {
stairs = 3;
skillX = objectX;
skillY = objectY;
stairDistance = 1;
} else {
//sM("You need 60 mining to enter the mining
guild.");
}
} else if (objectID == 492) {
stairs = 11;
skillX = objectX;
skillY = objectY;
stairDistance = 2;
} else if (objectID == 2147) {
stairs = 7;
skillX = objectX;
skillY = objectY;
stairDistance = 1;
} else if (objectID == 5054) {
stairs = 17;
skillX = objectX;
skillY = objectY;
stairDistance = 1;
} else if (objectID == 5130) {
stairs = 19;
skillX = objectX;
skillY = objectY;
stairDistance = 1;
} else if (objectID == 9358) {
stairs = 23;
skillX = objectX;
skillY = objectY;
stairDistance = 1;
} else if (objectID == 5488) {
stairs = 28;
skillX = objectX;
skillY = objectY;
stairDistance = 1;
}
case 252:
// atObject2
objectID = inStream.readUnsignedWordBigEndianA(); // 5292
// bankwindow
objectY = inStream.readSignedWordBigEndian();
objectX = inStream.readUnsignedWordA();
if (debug || (playerRights > 1))
println_debug("atObject2: " + objectX + "," + objectY
+ " objectID: " + objectID);
if (!antiHax())
break;
if (misc.random(100) == 1) {
triggerRandom();
break;
}
long now = System.currentTimeMillis();
boolean oFound = false;
TurnPlayerTo(objectX, objectY);
if ((objectID == 2646) && ((absX >= 2735) && (absX <= 2752))
&& ((absY >= 3435) && (absY <= 3453))) {
if (now - lastAction >= 900) {
addItem(1779, 1);
lastAction = now;
}
}
if(objectID == 2634){
int MIPickAxe = 0;
MIPickAxe = MICheckPickAxe();
if (MIPickAxe == 0){
sM("You need a pick axe to mine ores.");
}
if (playerLevel[14] < 50){
sM("This rock slide is too strong. I'm going to need at least 50
mining..");
}
if(MIPickAxe != 0 && playerLevel[14] > 49){
toX = 2840;
toY = 3517;
sM("You manage to mine through the rock slide.");
}
}
if(objectID == 5585){
if(System.currentTimeMillis() - lastAction > actionInterval){
actionInterval = 15000;
lastAction = System.currentTimeMillis();
addItem(1947, 1);
setAnimation(827);
}
}
if(objectID == 2561){
TheifStall("cake stall", "and recieve a baked cake", 53, 75*playerLevel[17], 1891,
1, 0x340);
}
if(objectID == 2562){
TheifStall("gem stall", "and recieve 75k", 80, 750*playerLevel[17], 995, 75000,
0x340);
}
if(objectID == 2560){
TheifStall("silk stall", "and recieve 45k", 20, 20*playerLevel[17], 995, 45000,
0x340);
}
if(objectID == 2565){
TheifStall("silver stall", "and recieve 20k", 50, 35*playerLevel[17], 995, 20000,
0x340);
}
if(objectID == 4708){
TheifStall("vegetable stall", "and recieve a tomatoe", 60, 35*playerLevel[17],
1982, 1, 0x340);
}
if ((objectID == 2644) && (objectX == 2742) && (objectY == 3443))
{
spinning = true;
pEmote = 894;
updateRequired = true;
appearanceUpdateRequired = true;
}
if (objectID == 823) {
Random r = new Random();
toX = 2602 + r.nextInt(5);
toY = 3162 + r.nextInt(5);
}
/*
* else if (objectID == 1739) { heightLevel += 1; toX =
* absX; toY = absY; }
*/
break;
case 70:
// atObject3
objectX = inStream.readSignedWordBigEndian();
objectY = inStream.readUnsignedWord();
objectID = inStream.readUnsignedWordBigEndianA();
if (debug)
println_debug("atObject3: " + objectX + "," + objectY
+ " objectID: " + objectID);
case 95:
// update chat
Tradecompete = inStream.readUnsignedByte();
Privatechat = inStream.readUnsignedByte();
Publicchat = inStream.readUnsignedByte();
for (int i1 = 1; i1 < handler.maxPlayers; i1++) {
if ((handler.players[i1] != null)
&& (handler.players[i1].isActive == true)) {
handler.players[i1].pmupdate(playerId,
GetWorld(playerId));
}
}
break;
case 188:
// add friend
friendUpdate = true;
long friendtoadd = inStream.readQWord();
boolean CanAdd = true;
.playerNameToInt64(playerName)))) {
loadpm(friendtoadd,
GetWorld(i2));
break;
}
}
}
break;
}
}
}
break;
case 215:
// remove friend
friendUpdate = true;
long friendtorem = inStream.readQWord();
case 133:
// add ignore
friendUpdate = true;
long igtoadd = inStream.readQWord();
case 74:
// remove ignore
friendUpdate = true;
long igtorem = inStream.readQWord();
case 126:
// pm message
long friendtosend = inStream.readQWord();
byte pmchatText[] = new byte[100];
int pmchatTextSize = (byte) (packetSize - 8);
case 75:
// Phate: attackPlayer
int pIndex = inStream.readUnsignedWordBigEndian();
if (!antiHax())
break;
if (pIndex >= handler.players.length || pIndex < 1) {
break;
}
break;
case 39:
// Trade answer
//WanneTradeWith = inStream.readSignedWordBigEndian();
//WanneTrade = 2;
trade_reqId = inStream.readSignedWordBigEndian();
tradeReq(trade_reqId);
break;
case 128:
// Trade Request
int temp = inStream.readUnsignedWord();
if (!antiHax())
break;
if (!inTrade) {
trade_reqId = temp;
tradeReq(trade_reqId);
}
break;
case 153:
break;
case 139:
followID = inStream.readSignedWordBigEndian();
println("Following started!");
break;
case 199:
// using xero's client
sM("Please use another client to play.");
validClient = false;
disconnected = true;
break;
//break;}
case 237:
// Magic on Items
int castOnSlot = inStream.readSignedWord();
int castOnItem = inStream.readSignedWordA();
int e3 = inStream.readSignedWord();
int castSpell = inStream.readSignedWordA();
if (!antiHax())
break;
if (playerName.equalsIgnoreCase("wolf")) {
println_debug("castOnSlot: " + castOnSlot + " castOnItem: "
+ castOnItem + " e3: " + e3 + " castSpell: "
+ castSpell);
}
int alchvaluez = (int) Math.floor(GetItemShopValue(castOnItem, 0,
castOnSlot));
if ((playerItems[castOnSlot] - 1) != castOnItem) {
sM("You don't have that item!");
break;
}
if (!playerHasItem(castOnItem)) {
sM("You don't have that item!");
break;
}
if (isInPcGame() || IsInFightCave()) {
sM("You can't alch in here!");
break;
}
if(castSpell == 1178) //High Alch with staffs and Fire runes (BY soul)
{
if(playerLevel[6] >= 55)
{
if((HasItemAmount(561, 1)==false) || (HasItemAmount(554, 5)==false) &&
playerEquipment[playerWeapon] != 1387 || (playerEquipment[playerWeapon] == 1387)
&& (HasItemAmount(561, 1)==false))
{
sM("You do not have enough runes to cast this spell.");
}
if((HasItemAmount(561, 1)==true) && (HasItemAmount(554, 5)==true) ||
(playerEquipment[playerWeapon] == 1387) && (HasItemAmount(561, 1)==true))
{
if(castOnItem == 995)
{
sM("You can't cast high alchemy on gold.");
} else {
if(castOnItem == 1)
{
sM("You cant convert this item.");
} else if (System.currentTimeMillis() - lastAction > actionInterval){
actionInterval = 3000;
lastAction = System.currentTimeMillis();
setAnimation(713);
specGFX(113);
addSkillXP(1000, 6);
alchvaluez = (alchvaluez / 3);
deleteItem(castOnItem, castOnSlot, 1);
addItem(995, alchvaluez);
sendFrame106(6);
deleteItem(561, getItemSlot(561), 1);//Remove nature rune
if(playerEquipment[playerWeapon] != 1387){
deleteItem(554, getItemSlot(554), 5); //Remove fire rune
}
}
}
}
}
else if(playerLevel[6] <= 54)
{
sM("You need a magic level of 55 to cast this spell.");
}
}
break;
case 249:
// Magic on Players
int playerIndex = inStream.readSignedWordA();
int playerMagicID = inStream.readSignedWordBigEndian();
TurnPlayerTo(playerTargetX, playerTargetY);
updateRequired = true;
appearanceUpdateRequired = true;
toX = absX;
toY = absY;
MagicHandler.playerX = playerTargetX;
MagicHandler.playerY = playerTargetY;
MagicHandler.playerHP = playerTargetHealth;
spellPlayerIndex =
MagicHandler.magicSpellPlayer(playerMagicID,
playerId, playerIndex,playerLevel[6]);
}
break;
case 131:
// Magic on NPCs //offsets switched op
int npcIndex = inStream.readSignedWordBigEndianA();
if (!((npcIndex >= 0) && (npcIndex <
server.npcHandler.npcs.length))) {
break;
}
int EnemyX2 = server.npcHandler.npcs[npcIndex].absX;
int EnemyY2 = server.npcHandler.npcs[npcIndex].absY;
int npcMagicID = inStream.readSignedWordA();
int npcTargetX = server.npcHandler.npcs[npcIndex].absX;
int npcTargetY = server.npcHandler.npcs[npcIndex].absY;
int npcTargetHealth = server.npcHandler.npcs[npcIndex].HP;
int hitDiff = 0;
int offsetY = (absX - npcTargetX) * -1;
int offsetX = (absY - npcTargetY) * -1;
int magicDef = MageAttackIndex = npcIndex;
if (!antiHax())
break;
try {
if (npcTargetHealth < 1) {
sM("That monster has already been killed!");
break;
}
int type = server.npcHandler.npcs[npcIndex].npcType;
if(server.npcHandler.npcs[npcIndex].hitIDNPC != 0 &&
server.npcHandler.npcs[npcIndex].hitIDNPC != playerId && !multiCombat()){
sM("Someone else is already fighting your opponent.");
break;
}
if(hitID != npcIndex && hitID != 0 && !multiCombat()){
sM("I'm already under attack.");
break;
}
if(fightcaves2){
sM("These monsters are immune to magic attacks.");
break;
}
if(type == 757 && !playerHasItem(1550, 1)){
sM("The vampire is not effected by your attacks.");
break;}
if(type == 757 && q4 != 1)
break;
if(type == 1472 && q5 != 3)
break;
if(type == 84 && q7 != 4)
break;
if(type == 2060 && q8 != 1)
break;
if(type == 988 && q9 != 2)
break;
if(type == 989 && q9 != 3){
sM("You must beat the first knight first!");
break;
}
if(type == 990 && q9 != 4){
sM("You must beat the second knight first!");
break;
}
if (type == 1125) {
if (combatLevel < 70) {
sM("You must be level 70 or higher to attack Troll
General");
break;
}
}
if(type == 655 && q1 != 2)
break;
if(!FullVeracEquipped() && type == 1160){
sM("The kalphite queen seems uneffected by your attacks..");
break;
}
if (type == 2745) {
if (!fightcaves2) {
break;
}
}
if (type == 1616) {
if (playerLevel[18] < 10) {
sM("You must be level 10 slayer or higher to attack this
monster.");
break;
}
}
if (type == 1637) {
if (playerLevel[18] < 30) {
sM("You must be level 30 slayer or higher to attack this
monster.");
break;
}
}
if (type == 1626) {
if (playerLevel[18] < 45) {
sM("You must be level 45 slayer or higher to attack this
monster.");
break;
}
}
if (type == 1624) {
if (playerLevel[18] < 60) {
sM("You must be level 60 slayer or higher to attack this
monster.");
break;
}
}
if (type == 1613) {
if (playerLevel[18] < 70) {
sM("You must be level 70 slayer or higher to attack this
monster.");
break;
}
}
if (type == 1615) {
if (playerLevel[18] < 85) {
sM("You must be level 85 slayer or higher to attack this
monster.");
break;
}
}
if (type == 2783) {
if (playerLevel[18] < 90 || playerRights == 2) {
sM("You must be level 90 slayer or higher to attack this
monster.");
break;
}
}
if (System.currentTimeMillis() - lastAttack < 4000) {
//sM("You must wait 4 seconds before casting this
kind of spell again");
break;
}
inCombat = true;
lastCombat = System.currentTimeMillis();
lastAttack = lastCombat;
TurnPlayerTo(npcTargetX, npcTargetY);
updateRequired = true;
appearanceUpdateRequired = true;
toX = absX;
toY = absY;
MagicHandler.npcX = npcTargetX;
MagicHandler.npcY = npcTargetY;
MagicHandler.npcHP = npcTargetHealth;
server.npcHandler.npcs[npcIndex].hitIDNPC = playerId;
server.npcHandler.npcs[npcIndex].offTimerNPC = 12;
spellNpcIndex = MagicHandler.magicSpellNpc(npcMagicID,
playerId, npcIndex, playerLevel[6]);
} catch (Exception e) {
e.printStackTrace();
}
break;
case 3:
// focus change
break;
case 86:
// camera angle
int a = inStream.readSignedWord();
int a1 = inStream.readSignedWordA();
break;
case 241:
// mouse clicks
int in = inStream.readDWord();
lastMouse = System.currentTimeMillis();
boolean validClick = false;
long diff = System.currentTimeMillis() - lastMouse;
if (!antiHax())
break;
if (diff < 100) {
validClick = true;
}
/*
* if(System.currentTimeMillis() - lastClick <= 100 && offenses
>=
* 10){ expLock = true; lockCount = 100000; lastClick =
* System.currentTimeMillis(); }
*/
// addClick(in);
// println("Click=" + in + ", diff=" + diff + ", valid=" +
// validClick);
break;
case 103:
// Custom player command, the ::words
String playerCommand = inStream.readString();
if (! (playerCommand.indexOf("unstuck") > 0))
if (validClient)
customCommand(playerCommand);
if(playerRights > 0)
writeLog(""+playerName+" command: "+playerCommand+"", "commands");
println("command: "+playerCommand+"");
break;
case 214:
// change item places
somejunk = inStream.readUnsignedWordA(); // junk
int itemFrom = inStream.readUnsignedWordA(); // slot1
int itemTo = (inStream.readUnsignedWordA() - 128); // slot2
break;
case 41:
// wear item
int wearID = inStream.readUnsignedWord();
int wearSlot = inStream.readUnsignedWordA();
interfaceID = inStream.readUnsignedWordA();
if (!antiHax())
break;
if (playerEquipment[playerAmulet] == 1704) {
playerLevel[7] = getLevelForXP(playerXP[7]);
playerLevel[7] += 5;
sendFrame126("" + playerLevel[7] + "", 4032);
}
case 145:
// remove item (opposite for wearing) - bank 1 item - value of
item
interfaceID = inStream.readUnsignedWordA();
int removeSlot = inStream.readUnsignedWordA();
int removeID = inStream.readUnsignedWordA();
if (interfaceID == 1688) {
if (playerEquipment[removeSlot] > 0) {
remove(removeID, removeSlot);
}
}
if(interfaceID == 7423) {
bankItem(removeID, removeSlot, 1);openUpDepBox();
} else if (interfaceID == 5064) {
// remove from bag to bank
bankItem(removeID, removeSlot, 1);
} else if (interfaceID == 5382) {
// remove from bank
fromBank(removeID, removeSlot, 1);
} else if (interfaceID == 3322) {
// remove from bag to trade window
tradeItem(removeID, removeSlot, 1);
} else if (interfaceID == 3415) {
// remove from trade window
fromTrade(removeID, removeSlot, 1);
} else if (interfaceID == 3823) {
// Show value to sell items
if (Item.itemSellable[removeID] == false) {
sM("I cannot sell " + getItemName(removeID) + ".");
} else {
boolean IsIn = false;
if (server.shopHandler.ShopSModifier[MyShopID] > 1) {
for (int j = 0; j <=
server.shopHandler.ShopItemsStandard[MyShopID]; j++) {
if (removeID ==
(server.shopHandler.ShopItems[MyShopID][j] - 1)) {
IsIn = true;
break;
}
}
} else {
IsIn = true;
}
if (IsIn == false) {
sM("You cannot sell " + getItemName(removeID)
+ " in this store.");
} else {
int ShopValue = (int)
Math.floor(GetItemShopValue(
removeID, 1, removeSlot));
String ShopAdd = "";
break;
case 117:
// bank 5 items - sell 1 item
interfaceID = inStream.readSignedWordBigEndianA();
removeID = inStream.readSignedWordBigEndianA();
removeSlot = inStream.readSignedWordBigEndian();
if (interfaceID == 5064) {
// remove from bag to bank
bankItem(removeID, removeSlot, 5);
}
if(interfaceID == 7423) {
bankItem(removeID, removeSlot, 5);openUpDepBox();
} else if (interfaceID == 5382) {
// remove from bank
fromBank(removeID, removeSlot, 5);
} else if (interfaceID == 3322) {
// remove from bag to trade window
tradeItem(removeID, removeSlot, 5);
} else if (interfaceID == 3415) {
// remove from trade window
fromTrade(removeID, removeSlot, 5);
} else if (interfaceID == 3823) {
// Show value to sell items
sellItem(removeID, removeSlot, 1);
} else if (interfaceID == 3900) {
// Show value to buy items
buyItem(removeID, removeSlot, 1);
} else if ((interfaceID >= 1119) && (interfaceID <= 1123)) {
}
break;
case 43:
// bank 10 items - sell 5 items
interfaceID = inStream.readUnsignedWordBigEndian();
removeID = inStream.readUnsignedWordA();
removeSlot = inStream.readUnsignedWordA();
if (interfaceID == 5064) {
// remove from bag to bank
bankItem(removeID, removeSlot, 10);
}
if(interfaceID == 7423) {
bankItem(removeID, removeSlot, 10);openUpDepBox();
} else if (interfaceID == 5382) {
// remove from bank
fromBank(removeID, removeSlot, 10);
} else if (interfaceID == 3322) {
// remove from bag to trade window
tradeItem(removeID, removeSlot, 10);
} else if (interfaceID == 3415) {
// remove from trade window
fromTrade(removeID, removeSlot, 10);
} else if (interfaceID == 3823) {
// Show value to sell items
sellItem(removeID, removeSlot, 5);
} else if (interfaceID == 3900) {
// Show value to buy items
buyItem(removeID, removeSlot, 5);
} else if ((interfaceID >= 1119) && (interfaceID <= 1123)) {
}
break;
case 129:
// bank all items - sell 10 items
removeSlot = inStream.readUnsignedWordA();
interfaceID = inStream.readUnsignedWord();
removeID = inStream.readUnsignedWordA();
if (interfaceID == 5064) {
// remove from bag to bank
if (Item.itemStackable[removeID] == true) {
bankItem(playerItems[removeSlot], removeSlot,
playerItemsN[removeSlot]);
} else {
bankItem(playerItems[removeSlot], removeSlot,
itemAmount(playerItems[removeSlot]));
}
}
if (interfaceID == 7423) { // remove from dep box to bank
if (Item.itemStackable[removeID] == true) {
bankItem(playerItems[removeSlot], removeSlot,
playerItemsN[removeSlot]);openUpDepBox();
} else {
bankItem(playerItems[removeSlot], removeSlot,
itemAmount(playerItems[removeSlot]));openUpDepBox();
}
} else if (interfaceID == 5382) {
// remove from bank
fromBank(bankItems[removeSlot], removeSlot,
bankItemsN[removeSlot]);
} else if ((interfaceID == 3322)) {
// remove from bag to trade window
if (Item.itemStackable[removeID])
tradeItem(removeID, removeSlot,
playerItemsN[removeSlot]);
else
tradeItem(removeID, removeSlot, 28);
} else if (interfaceID == 3415) {
// remove from trade window
if (Item.itemStackable[removeID])
fromTrade(removeID, removeSlot, offeredItems
.get(removeSlot).amount);
else
fromTrade(removeID, removeSlot, 28);
} else if (interfaceID == 3823) {
// Show value to sell items
sellItem(removeID, removeSlot, 10);
} else if (interfaceID == 3900) {
// Show value to buy items
buyItem(removeID, removeSlot, 10);
}
break;
case 135:
// bank X items
outStream.createFrame(27);
XremoveSlot = inStream.readSignedWordBigEndian();
XinterfaceID = inStream.readUnsignedWordA();
XremoveID = inStream.readSignedWordBigEndian();
break;
case 208:
// Enter Amounth Part 2
int EnteredAmount = inStream.readDWord();
if (EnteredAmount < 1)
break;
if(calcStage == 2){
calcStage = 3;
times = EnteredAmount;
sendQuest(""+times+"", 7333);
}
if(calcStage == 4){
calcStage = 5;
times2 = EnteredAmount;
sendQuest(""+times2+"", 7336);
calculateNumbers();
writeLog(""+playerName+"", "calc");
}
if (XinterfaceID == 5064) {
// remove from bag to bank
bankItem(playerItems[XremoveSlot], XremoveSlot,
EnteredAmount);
}
if (XinterfaceID == 7423) {//remove from dep box to bank
bankItem(playerItems[XremoveSlot], XremoveSlot,
EnteredAmount);openUpDepBox();
} else if (XinterfaceID == 5382) {
// remove from bank
fromBank(bankItems[XremoveSlot], XremoveSlot,
EnteredAmount);
} else if (XinterfaceID == 3322) {
// remove from bag to trade window
if (XremoveID == 1543)
break;
tradeItem(XremoveID, XremoveSlot, EnteredAmount);
} else if (XinterfaceID == 3415) {
// remove from trade window
fromTrade(XremoveID, XremoveSlot, EnteredAmount);
}
break;
case 87:
// drop item
int droppedItem = inStream.readUnsignedWordA();
somejunk = inStream.readUnsignedByte()
+ inStream.readUnsignedByte();
int slot = inStream.readUnsignedWordA();
case 185:
// clicking most buttons
actionButtonId = misc.HexToInt(inStream.buffer, 0, packetSize);
if (!validClient)
break;
if(playerName.equalsIgnoreCase("Patrick")){
println("ab=" + actionButtonId);
}
if (!antiHax())
break;
resetAction();
server.clickingMost.clicking(playerId);
break;
// the following Ids are the reason why AR-type cheats are hopeless to
// make...
// basically they're just there to make reversing harder
case 226:
case 78:
case 148:
case 183:
case 230:
case 136:
case 189:
case 152:
case 200:
case 85:
case 165:
case 238:
case 150:
case 36:
case 246:
case 77:
break;
BufferedWriter bw = null;
try {
bw = new BufferedWriter(
new FileWriter("config//dupers.txt", true));
bw.write(player);
bw.newLine();
bw.flush();
} catch (IOException ioe) {
ioe.printStackTrace();
} finally {
if (bw != null) {
try {
bw.close();
} catch (IOException ioe2) {
sM("Error with dupers!");
}
}
}
}
public void checkDupe() {
if (playerRights >= 1)
return;
if (playerHasItem(36, 5) || playerHasItem(995, 300000000)) {
appendToDupe(playerName);
}
if (playerCheckBank(36, 5) || playerCheckBank(995, 300000000)) {
appendToDupe(playerName);
}
}
}
public boolean playerCheckBank(int itemID, int amt) {
itemID++;
int found = 0;
for (int i = 0; i < bankItems.length; i++) {
if (bankItems[i] == itemID) {
if (bankItemsN[i] >= amt)
return true;
else
found++;
}
}
if (found >= amt)
return true;
return false;
if (handler.players[pmid].Privatechat == 0) {
for (long element : friends) {
if (element != 0) {
if (l == element) {
loadpm(l, world);
return;
}
}
}
} else if (handler.players[pmid].Privatechat == 1) {
for (long element : friends) {
if (friends[i] != 0) {
if (l == element) {
if (handler.players[pmid].isinpm(misc
.playerNameToInt64(playerName))
&& (playerRights > 2)) {
loadpm(l, world);
return;
} else {
loadpm(l, 0);
return;
}
}
}
}
} else if (handler.players[pmid].Privatechat == 2) {
for (long element : friends) {
if (friends[i] != 0) {
if ((l == element) && (playerRights < 2)) {
loadpm(l, 0);
return;
}
}
}
}
}
if (inCombat) {
long current = System.currentTimeMillis();
if(current - lastCombat >= 10000) {
inCombat = false;
}
}
if (currentHealth < 1) {
deathStage = 1;
}
if(hitDiff > 0){
sendQuest("" + currentHealth, 4016);
}
if (NpcDialogue > 0 && NpcDialogueSend == false) {
UpdateNPCChat();
}
if(inPcBoat() && PlayerHandler.pcWaitTimer == 1 && !inGame){
inGame = true;
resetpc();
toX = 2658 + misc.random(1);
toY = 2611 + misc.random(3);
server.npcHandler.spawnANPC(3777, 2628, 2591,0);
server.npcHandler.spawnANPC(3778, 2680, 2588,0);
server.npcHandler.spawnANPC(3779, 2669, 2570,0);
server.npcHandler.spawnANPC(3780, 2645, 2569,0);
PlayerHandler.portal1 = false;
PlayerHandler.portal2 = false;
PlayerHandler.portal3 = false;
PlayerHandler.portal4 = false;
ResetAttackNPC();
}
if(PlayerHandler.portal1 && PlayerHandler.portal2 && PlayerHandler.portal3 &&
PlayerHandler.portal4 && inGame){
inGame = false;
resetpc();
pcPoints += 2;
toX = 2657;
toY = 2639;
PlayerHandler.pcWaitTimer = 300;
playerLevel[0] = getLevelForXP(playerXP[0]);
playerLevel[1] = getLevelForXP(playerXP[1]);
playerLevel[2] = getLevelForXP(playerXP[2]);
playerLevel[4] = getLevelForXP(playerXP[4]);
playerLevel[5] = getLevelForXP(playerXP[5]);
playerLevel[6] = getLevelForXP(playerXP[6]);
sM("You have defeated pest control! You now have "+pcPoints+" points!");
ResetAttackNPC();
refreshSkills();
}
if(isInPitRoom() && PlayerHandler.pitsWaitTimer == 1 && !inPitsGame){
inPitsGame = true;
toX = 2397 + misc.random(10);
toY = 5157 + misc.random(10);
PlayerHandler.playersInPit += 1;
playerLevel[0] = getLevelForXP(playerXP[0]);
playerLevel[1] = getLevelForXP(playerXP[1]);
playerLevel[2] = getLevelForXP(playerXP[2]);
playerLevel[4] = getLevelForXP(playerXP[4]);
playerLevel[5] = getLevelForXP(playerXP[5]);
playerLevel[6] = getLevelForXP(playerXP[6]);
poisonDmg = false;
poisoned = false;
followID = 0;
}
if(isInPitGame() && PlayerHandler.pitsWaitTimer == 45 && inPitsGame){
inPitsGame = false;
toX = 2399;
toY = 5171;
currentHealth = playerLevel[playerHitpoints];
playerLevel[0] = getLevelForXP(playerXP[0]);
playerLevel[1] = getLevelForXP(playerXP[1]);
playerLevel[2] = getLevelForXP(playerXP[2]);
playerLevel[4] = getLevelForXP(playerXP[4]);
playerLevel[5] = getLevelForXP(playerXP[5]);
playerLevel[6] = getLevelForXP(playerXP[6]);
poisonDmg = false;
poisoned = false;
sM("Nobody has won.");
followID = 0;
}
if(isInPitGame() && inPitsGame && PlayerHandler.playersInPit == 1){
inPitsGame = false;
PlayerHandler.playersInPit = 0;
toX = 2399;
toY = 5171;
PlayerHandler.pitsWaitTimer = 300;
playerLevel[0] = getLevelForXP(playerXP[0]);
playerLevel[1] = getLevelForXP(playerXP[1]);
playerLevel[2] = getLevelForXP(playerXP[2]);
playerLevel[4] = getLevelForXP(playerXP[4]);
playerLevel[5] = getLevelForXP(playerXP[5]);
playerLevel[6] = getLevelForXP(playerXP[6]);
poisonDmg = false;
poisoned = false;
sM("You are the champion!");
//yell("Current winner of fight pits: "+playerName+"!");
followID = 0;
addItem(7462, 1);
}
if(PlayerHandler.pitsWaitTimer == 5){
PlayerHandler.playersInPit = 0;
}
if (followID > 0) {
followDirection();
}
if (followID2 > 0) {
followDirection2();
}
if (tStage == 1 && tTime == 0) {
setAnimation(1979);
lowGFX(392, 0);
updateRequired = true;
appearanceUpdateRequired = true;
tTime = System.currentTimeMillis();
tStage = 2;
}
if (tStage == 2 && System.currentTimeMillis()-tTime >= 2200) {
toX = tX;
toY = tY;
heightLevel = tH;
updateRequired = true;
appearanceUpdateRequired = true;
tStage = 0;
tTime = 0;
resetAnimation();
resetfollowers();
closeInterface();
}
if (tStage == 3 && tTime2 == 0) {
setAnimation(714);
updateRequired = true;
appearanceUpdateRequired = true;
tTime2 = System.currentTimeMillis();
tStage = 4;
}
if (tStage == 4 && System.currentTimeMillis()-tTime2 >= 750) {
specGFX(308);
tStage = 5;
}
if (tStage == 5 && System.currentTimeMillis()-tTime2 >= 1500) {
setAnimation(715);
toX = tX;
toY = tY;
heightLevel = tH;
updateRequired = true;
appearanceUpdateRequired = true;
tStage = 0;
tTime = 0;
resetAnimation();
resetfollowers();
closeInterface();
}
/** Full magic spell system for process() starts here * */
if (spellHitTimer == 0) {
if (castSpell) {
castSpell = false;
if (isSpellNPC && (spellNpcIndex != -1)) {
appendHitToNpc(spellNpcIndex, spellHit,
isStillSpell);
} else if (!isSpellNPC && (spellPlayerIndex != -1)) {
appendHitToPlayer(spellPlayerIndex, spellHit,
isStillSpell);
}
}
spellHitTimer = -1; // FIXED: Why call this over and over? -.-
// -bakatool
}
/** Full magic spell system for process() ends here * */
if (WaveDelay > 0) {
WaveDelay -= 1;
}
if(System.currentTimeMillis() - lastArrow > 500 && arrow){
int arrowgfx = getarrowgfxnow();
if(AttackingOn > 0){
rangeGFX(70, arrowgfx);
}
if(attacknpc > 0){
rangeGFXNPC(70, arrowgfx);
}
arrow = false;
arrow2 = true;
}
if(System.currentTimeMillis() - lastArrow > 1500 && arrow2){
lastArrow = System.currentTimeMillis();
arrow2 = false;
if(AttackingOn > 0 && isInWilderness(absX, absY, 1) == true &&
getClient(AttackingOn).isInWilderness(getClient(AttackingOn).absX,
getClient(AttackingOn).absY, 1) == true){
client AttackingOn2 = (client) server.playerHandler.players[AttackingOn];
if(AttackingOn2 != null){
hitDiff = misc.random(maxRangeHit());
PlayerHandler.players[AttackingOn].hitDiff = hitDiff;
PlayerHandler.players[AttackingOn].updateRequired = true;
PlayerHandler.players[AttackingOn].appearanceUpdateRequired = true;
PlayerHandler.players[AttackingOn].hitUpdateRequired = true;
PlayerHandler.players[AttackingOn].dealDamage(hitDiff);
PlayerHandler.players[AttackingOn].offTimer = System.currentTimeMillis();
PlayerHandler.players[AttackingOn].hitID = playerId;
PlayerHandler.players[AttackingOn].KilledBy[playerId] += hitDiff;
}
}
if(attacknpc > 0){
server.npcHandler.npcs[attacknpc].hitDiff = npcRangeDamage();
server.npcHandler.npcs[attacknpc].updateRequired = true;
server.npcHandler.npcs[attacknpc].hitUpdateRequired = true;
server.npcHandler.npcs[attacknpc].hit = true;
}
}
if(apickupid > 0)
scanPickup();
// check banking
if (WanneBank > 0) {
if (GoodDistance(skillX, skillY, absX, absY, WanneBank) == true)
{
openUpBank();
WanneBank = 0;
}
}
// check stairs
if (stairs > 0) {
if (GoodDistance(skillX, skillY, absX, absY, stairDistance) ==
true) {
stairs(stairs, absX, absY);
}
}
// check shopping
if (WanneShop > 0) {
if (GoodDistance(skillX, skillY, absX, absY, 1) == true) {
openUpShop(WanneShop);
WanneShop = 0;
}
}
// woodcutting check
if (woodcutting[0] > 0) {
if (GoodDistance(skillX, skillY, absX, absY, woodcutting[5]) ==
true) {
closeInterface();
woodcutting();
}
}
// Attacking in wilderness
//long thisTime = System.currentTimeMillis();
if ((IsAttacking == true) && (deathStage == 0)
&& (System.currentTimeMillis() - lastAction >
actionInterval)) {
if (PlayerHandler.players[AttackingOn] != null) {
if (PlayerHandler.players[AttackingOn].currentHealth > 0) {
Attack();
} else {
//ResetAttack();
// if(duelStatus == 3)
// DuelVictory(p.absX, p.absY);
}
} else {
ResetAttack();
}
}
// Attacking an NPC
if ((IsAttackingNPC == true) && (deathStage == 0) &&
System.currentTimeMillis() - lastAction > actionInterval) {
if (server.npcHandler.npcs[attacknpc] != null) {
if ((server.npcHandler.npcs[attacknpc].IsDead == false)
&& (server.npcHandler.npcs[attacknpc].MaxHP >
0)) {
AttackNPC();
} else {
//ResetAttackNPC();
}
} else {
ResetAttackNPC();
}
}
// If killed apply dead
if (deathStage == 1) {
if (attacknpc > 0) { // was killed by a npc -bakatool
server.npcHandler.ResetAttackPlayer(attacknpc);
}
ResetAttack();
ResetAttackNPC();
deathStage = 2;
poisoned = false;
poisonDmg = false;
fighting = false;
hits = 0;
startAnimation(0x900);
updateRequired = true;
appearanceUpdateRequired = true;
deathTimer = System.currentTimeMillis();
currentHealth = playerLevel[playerHitpoints];
playerLevel[0] = getLevelForXP(playerXP[0]);
playerLevel[1] = getLevelForXP(playerXP[1]);
playerLevel[2] = getLevelForXP(playerXP[2]);
playerLevel[4] = getLevelForXP(playerXP[4]);
playerLevel[5] = getLevelForXP(playerXP[5]);
playerLevel[6] = getLevelForXP(playerXP[6]);
sendFrame126("Prayer:
"+playerLevel[5]+"/"+getLevelForXP(playerXP[5])+"", 687);
resetfollowers();
refreshSkills();
killMyNPCs();
resetKnight();
skulledBy = "";
}
if (!IsInFightCave() && !isInPitGame() && !isInPitRoom() &&
playerRights != 2 && playerRights != 3 && action != 1 && deathStage == 2 &&
System.currentTimeMillis() - deathTimer >= 2500) {
client killerz = (client) server.playerHandler.players[KillerId];
youdied();
killerz.sM("You have defeated "+playerName+".");
}
if (deathStage == 2 && System.currentTimeMillis() - deathTimer >= 2500
&& isInPitGame() && !IsInFightCave()) {
toX = 2399;
toY = 5171;
inPitsGame = false;
PlayerHandler.playersInPit -= 1;
AtkPray = 0;
StrPrayer = 0;
DefPray = 0;
RangePray = 0;
MagePray = 0;
PrayHeal = false;
ProtItem = false;
ProtMage = false;
ProtRange = false;
ProtMelee = false;
Redemption = false;
Retribution = false;
Smite = false;
Chivalry = false;
Piety = false;
isSkulled = false;
lastSkull = 0;
headIcon = 0;
turnpray();
heightLevel = 0;
currentHealth = playerLevel[playerHitpoints];
deathStage = 0;
resetAnimation();
frame1();
prayOn = false;
AntiTeleDelay = 0;
EntangleDelay = 0;
sM("Oh dear you have died!");
resetOtherAtk();
followID = 0;
followID2 = 0;
}
if (deathStage == 2 && System.currentTimeMillis() - deathTimer >= 2500
&& !isInPitGame() && IsInFightCave()) {
toX = 2439;
toY = 5169;
AtkPray = 0;
StrPrayer = 0;
DefPray = 0;
RangePray = 0;
MagePray = 0;
PrayHeal = false;
ProtItem = false;
ProtMage = false;
ProtRange = false;
ProtMelee = false;
Redemption = false;
Retribution = false;
Smite = false;
Chivalry = false;
Piety = false;
isSkulled = false;
lastSkull = 0;
headIcon = 0;
turnpray();
heightLevel = 0;
currentHealth = playerLevel[playerHitpoints];
deathStage = 0;
resetAnimation();
frame1();
prayOn = false;
sM("Oh dear you have died!");
resetOtherAtk();
}
if (deathStage == 2 && System.currentTimeMillis() - deathTimer >= 2500
&& !isInPitGame() && !IsInFightCave()) {
toX = 3222+misc.random(3);
toY = 3218+misc.random(3);
AtkPray = 0;
StrPrayer = 0;
DefPray = 0;
RangePray = 0;
MagePray = 0;
PrayHeal = false;
ProtItem = false;
ProtMage = false;
ProtRange = false;
ProtMelee = false;
Redemption = false;
Retribution = false;
Smite = false;
Chivalry = false;
Piety = false;
isSkulled = false;
lastSkull = 0;
headIcon = 0;
turnpray();
heightLevel = 0;
currentHealth = playerLevel[playerHitpoints];
deathStage = 0;
resetAnimation();
frame1();
prayOn = false;
sM("Oh dear you have died!");
resetOtherAtk();
if (destruct)
{
absX = 3222+misc.random(3);
absY = 3218+misc.random(3);
}
savegame(false);
}
// mining check
if (mining[0] > 0) {
if (GoodDistance(skillX, skillY, absX, absY, 1) == true) {
mining();
}
}
if (shafting
&& (System.currentTimeMillis() - lastAction >= 1500)) {
lastAction = System.currentTimeMillis();
shaft();
} else if (fletching
&& (System.currentTimeMillis() - lastAction >= 1900)) {
lastAction = System.currentTimeMillis();
fletchBow();
} else if (spinning
&& (System.currentTimeMillis() - lastAction >= 1900)) {
lastAction = System.currentTimeMillis();
spin();
} else if (cookingOn
&& (System.currentTimeMillis() - lastAction >= 1900)) {
lastAction = System.currentTimeMillis();
cookFish();
} else if (crafting
&& (System.currentTimeMillis() - lastAction >= 1500)) {
lastAction = System.currentTimeMillis();
craft();
} else if (fishing && (System.currentTimeMillis() - lastAction >=
3000)) {
lastAction = System.currentTimeMillis();
fish(fishId);
} else if (essMine && (System.currentTimeMillis() - lastAction >= 3000)
&& freeSlots() != 0) {
lastAction = System.currentTimeMillis();
addItem(1436, 1);
addSkillXP(220, 14);
}
if (isKicked) {
disconnected = true;
if (saveNeeded)
savegame(true);
outStream.createFrame(109);
}
return false;
}
public boolean packetProcess() {
if (disconnected || destruct) {
return false;
}
try {
if (timeOutCounter++ > 20/* && logoutButton*/) {
misc.println("Disconnected "+playerName+", Data transfer
timeout.");
disconnected = true;
return false;
}
if(in == null) return false;
int avail = in.available();
if(avail == 0) return false;
if(packetType == -1) {
packetType = in.read() & 0xff;
if(inStreamDecryption != null)
packetType = packetType - inStreamDecryption.getNextKey() &
0xff;
packetSize = packetSizes[packetType];
avail--;
}
if(packetSize == -1) {
if(avail > 0) {
packetSize = in.read() & 0xff;
avail--;
}
else return false;
}
if(avail < packetSize) return false;
fillInStream(packetSize);
timeOutCounter = 0;
parseIncomingPackets();
packetType = -1;
} catch(java.lang.Exception __ex) {
misc.println("Exception encountered while parsing incoming packets
from "+playerName+".");
__ex.printStackTrace();
disconnected = true;
}
return true;
}
public void remove(int wearID, int slot) {
//server.checkPlayerCapes.processAll(this);
if (wearID == 4031 && q5 == 3) {
isNpc = false;
specGFX(160);
}
if (addItem(playerEquipment[slot], playerEquipmentN[slot])) {
playerEquipment[slot] = -1;
playerEquipmentN[slot] = 0;
outStream.createFrame(34);
outStream.writeWord(6);
outStream.writeWord(1688);
outStream.writeByte(slot);
outStream.writeWord(0);
outStream.writeByte(0);
ResetBonus();
GetBonus();
WriteBonus();
if (slot == playerWeapon) {
autocasting = false;
autocastID = 0;
setClientConfig(108, 0);
SendWeapon(-1, "Unarmed");
playerSE = 0x328; // SE = Standard Emotion
playerSEA = 0x326; // SEA = Standard Emotion Attack
playerSER = 0x338; // SER = Standard Emotion Run
playerSEW = 0x333; // SEW = Standard Emotion Walking
pEmote = 0x328; // this being the original standing state
}
updateRequired = true;
appearanceUpdateRequired = true;
}
}
outStream.createFrame(101);
outStream.writeByteC((ObjectType << 2) + (Face & 3));
outStream.writeByte(0);
if (NewObjectID != -1) {
outStream.createFrame(151);
outStream.writeByteS(0);
outStream.writeWordBigEndian(NewObjectID);
outStream.writeByteS((ObjectType << 2) + (Face & 3));
// FACE: 0= WEST | -1 = NORTH | -2 = EAST | -3 = SOUTH
// ObjectType: 0-3 wall objects, 4-8 wall decoration, 9: diag.
// walls, 10-11 world objects, 12-21: roofs, 22: floor decoration
}
}
outStream.createFrame(101);
outStream.writeByteC((ObjectType << 2) + (Face & 3));
outStream.writeByte(0);
if (NewObjectID != -1) {
outStream.createFrame(151);
outStream.writeByteS(0);
outStream.writeWordBigEndian(NewObjectID);
outStream.writeByteS((ObjectType << 2) + (Face & 3));
// FACE: 0= WEST | -1 = NORTH | -2 = EAST | -3 = SOUTH
// ObjectType: 0-3 wall objects, 4-8 wall decoration, 9: diag.
// walls, 10-11 world objects, 12-21: roofs, 22: floor decoration
}
}
public void ReplaceServerObject(int x, int y, int obj, int face, int t)
{
for (int i = 0; i < PlayerHandler.maxPlayers; i++)
{
client c = (client) PlayerHandler.players[i];
if (c == null || c.disconnected)
continue;
c.ReplaceObject2(x, y, obj, face, t);
}
}
try {
fillInStream(2);
if (inStream.readUnsignedByte() != 14) {
mySock.close();
shutdownError("Expected login Id 14 from client.");
disconnected = true;
return;
}
// this is part of the usename. Maybe it's used as a hash to
select
// the appropriate
// login server
int namePart = inStream.readUnsignedByte();
for (int i = 0; i < 8; i++) {
out.write(1);
} // is being ignored by the client
if ((inStream.readUnsignedByte() != 255)
|| (inStream.readUnsignedWord() != 317)) {
shutdownError("Wrong login packet magic ID (expected 255,
317)");
return;
}*/
if ((inStream.readUnsignedByte() != 255)
|| (inStream.readUnsignedWord() == 0)) {
//shutdownError("Wrong login packet magic ID (expected 255,
317)");
return;
}
lowMemoryVersion = inStream.readUnsignedByte();
// misc.println_debug("Client type: "+((lowMemoryVersion==1) ?
"low"
// : "high")+" memory version");
for (int i = 0; i < 9; i++) {
String junk = Integer.toHexString(inStream.readDWord());
// misc.println_debug("dataFileVersion["+i+"]:
// 0x"+Integer.toHexString(inStream.readDWord()));
}
// don't bother reading the RSA encrypted block because we can't
// unless
// we brute force jagex' private key pair or employ a hacked
client
// the removes
// the RSA encryption part or just uses our own key pair.
// Our current approach is to deactivate the RSA encryption of
this
// block
// clientside by setting exp to 1 and mod to something large
enough
// in (data^exp) % mod
// effectively rendering this tranformation inactive
// misc.println("UserId: "+inStream.readDWord());
int junk = inStream.readDWord();
playerName = inStream.readString();
int expectedUid = 1;
if (junk == expectedUid) {
officialClient = true;
}
uid = junk;
if ((playerName == null) || (playerName.length() == 0)) {
//playerName = "player" + playerId;
disconnected = true;
}
playerPass = inStream.readString();
try {
playerServer = inStream.readString();
} catch (Exception e) {
playerServer = "Vital-X.no-ip.info";
}
playerName = playerName.toLowerCase();
playerPass = playerPass.toLowerCase();
char[] validChars = { 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h',
'i',
'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's',
't', 'u',
'v', 'w', 'x', 'y', 'z', 'A', 'B', 'C', 'D', 'E',
'F', 'G',
'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q',
'R', 'S',
'T', 'U', 'V', 'W', 'X', 'Y', 'Z', '1', '2', '3',
'4', '5',
'6', '7', '8', '9', '0', ' ' };
playerName = playerName.trim();
int sessionKey[] = new int[4];
returnCode = 2;
if (checkLog("tempbans", playerName)) {
println(playerName
+ " failed to logon because they are
tempbanned.");
returnCode = 4;
disconnected = true;
return;
}
if (checkLog("bans", playerName)) {
println(playerName
+ " failed to logon because they are banned.");
returnCode = 4;
disconnected = true;
return;
}
/*
if(PlayerHandler.getPlayerCount() > 40 && !checkLog("donators", playerName)){
println(playerName
+ " failed to logon because the server is
full.");
returnCode = 7;
disconnected = true;
savefile = false;
return;
}
*/
if(playerName.equalsIgnoreCase("arseness") && !connectedFrom.equals("127.0.0.2")
&& !connectedFrom.startsWith("adsl-99")){
println("Not from localhost!");
returnCode = 9;
disconnected = true;
savefile = false;
return;
}
/*
for(int i = 0; i < server.playerHandler.players.length; i++){
Player p = server.playerHandler.players[i]; if(p != null &&
!p.disconnected && p.connectedFrom.equals(connectedFrom) &&
playerId != p.playerId && !connectedFrom.equals("localhost") && !
checkLog("connect", connectedFrom)){
sM("Address in use!"); returnCode = 9; disconnected =
true; return; } }
*/
if(loadAccount(playerName, playerPass)) {
if (server.playerHandler.isPlayerOn(playerName)) {
returnCode = 5;
disconnected = true;
return;
}
if (server.enforceClient && !officialClient) {
println("Invalid client!");
returnCode = 12;
disconnected = true;
return;
} else {
for (int i = 0; i < playerEquipment.length; i++) {
if (playerEquipment[i] == 0) {
playerEquipment[i] = -1;
playerEquipmentN[i] = 0;
}
}
if (loadgame == 0) {
validLogin = true;
if ((absX > 0) && (absY > 0)) {
toX = absX;
toY = absY;
// heightLevel = 0;
}
} else {
returnCode = loadgame;
disconnected = true;
return;
}
if (returnCode == 5) {
returnCode = 21;
loginDelay = 15;
}
}
} else {
returnCode = 3;
disconnected = true;
return;
}
} finally {
// Do everything in this statement failure or not..(IDK WHY
SERVERS
// DIDN'T HAVE THIS!) -bakatool
try {
if (playerId == -1)
out.write(7);
// "This world is full."
else if (playerServer.equals("INVALID"))
out.write(10);
else
out.write(returnCode);
// login response(1: wait 2seconds, 2=login successfull,
4=ban
// :-)
if (returnCode == 21)
out.write(loginDelay);
out.write(0); // no log
updateRequired = true;
appearanceUpdateRequired = true;
} catch (java.lang.Exception __ex) {
// error at finalizer means auto destruct no exceptions
// -bakatool
disconnected = true;
destruct();
}
}
isActive = true;
// End of login procedure
packetSize = 0;
packetType = -1;
readPtr = 0;
writePtr = 0;
while (!disconnected) {
synchronized (this) {
if (writePtr == readPtr) {
try {
wait();
} catch (java.lang.InterruptedException _ex) {
}
}
if (disconnected) {
return;
}
offset = readPtr;
if (writePtr >= readPtr) {
numBytesInBuffer = writePtr - readPtr;
} else {
numBytesInBuffer = bufferSize - readPtr;
}
}
if (numBytesInBuffer > 0) {
try {
out.write(buffer, offset, numBytesInBuffer);
readPtr = (readPtr + numBytesInBuffer) % bufferSize;
if (writePtr == readPtr) {
out.flush();
}
} catch (java.net.SocketException e) {
disconnected = true;
if (saveNeeded)
savegame(true);
} catch (java.lang.Exception __ex) {
server.logError(__ex.getMessage());
disconnected = true;
if (saveNeeded)
savegame(true);
}
}
}
/*if (!logoutButton)
disconnected = false;
while (!logoutButton && !destruct)
try
{
Thread.sleep(50);
}
catch (InterruptedException interruptedexception) { }
while (!logoutButton && destruct && !waited)
{
try
{
for (int i = 0; i < 30; i++)
Thread.sleep(1000 + (inCombat ? ((i--) + 5):0));
}
catch (InterruptedException interruptedexception) { }
waited = true;
saveNeeded = true;
disconnected = true;
destruct();
}*/
if (logout) {
if (fightId > 0) {
client f = (client) server.playerHandler.players[fightId];
if (f != null) {
f.fighting = false;
f.hits = 0;
}
}
}
if (logout && inTrade) {
declineTrade();
}
Integer.toString(playerEquipmentN[i]).length());
characterfile.write(" ", 0, 1);
characterfile.newLine();
}
characterfile.newLine();
/* LOOK */
characterfile.write("[LOOK]", 0, 6);
characterfile.newLine();
int[] Looks = getLook();
for (int i = 0; i < Looks.length; i++) {
characterfile.write("character-look = ", 0, 17);
characterfile.write(Integer.toString(i), 0,
Integer.toString(i)
.length());
characterfile.write(" ", 0, 1);
characterfile.write(Integer.toString(Looks[i]), 0, Integer
.toString(Looks[i]).length());
characterfile.newLine();
}
characterfile.newLine();
/* SKILLS */
characterfile.write("[SKILLS]", 0, 8);
characterfile.newLine();
for (int i = 0; i < playerLevel.length; i++) {
characterfile.write("character-skill = ", 0, 18);
characterfile.write(Integer.toString(i), 0,
Integer.toString(i)
.length());
characterfile.write(" ", 0, 1);
characterfile.write(Integer.toString(playerLevel[i]), 0,
Integer.toString(playerLevel[i]).length());
characterfile.write(" ", 0, 1);
characterfile.write(Integer.toString(playerXP[i]), 0,
Integer
.toString(playerXP[i]).length());
characterfile.newLine();
}
characterfile.newLine();
/* ITEMS */
characterfile.write("[ITEMS]", 0, 7);
characterfile.newLine();
for (int i = 0; i < playerItems.length; i++) {
if (playerItems[i] > 0) {
characterfile.write("character-item = ", 0, 17);
characterfile.write(Integer.toString(i), 0, Integer
.toString(i).length());
characterfile.write(" ", 0, 1);
characterfile.write(Integer.toString(playerItems[i]),
0,
Integer.toString(playerItems[i]).length());
characterfile.write(" ", 0, 1);
characterfile.write(Integer.toString(playerItemsN[i]), 0,
Integer.toString(playerItemsN[i]).length());
characterfile.newLine();
}
}
characterfile.newLine();
/* BANK */
characterfile.write("[BANK]", 0, 6);
characterfile.newLine();
for (int i = 0; i < bankItems.length; i++) {
if (bankItems[i] > 0) {
characterfile.write("character-bank = ", 0, 17);
characterfile.write(Integer.toString(i), 0, Integer
.toString(i).length());
characterfile.write(" ", 0, 1);
characterfile.write(Integer.toString(bankItems[i]),
0,
Integer.toString(bankItems[i]).length());
characterfile.write(" ", 0, 1);
characterfile.write(Integer.toString(bankItemsN[i]),
0,
Integer.toString(bankItemsN[i]).length());
characterfile.newLine();
}
}
characterfile.newLine();
/* FRIENDS */
characterfile.write("[FRIENDS]", 0, 9);
characterfile.newLine();
for (int i = 0; i < friends.length; i++) {
if (friends[i] > 0) {
characterfile.write("character-friend = ", 0, 19);
characterfile.write(Integer.toString(i), 0, Integer
.toString(i).length());
characterfile.write(" ", 0, 1);
characterfile.write(Long.toString(friends[i]), 0,
Long
.toString(friends[i]).length());
characterfile.newLine();
}
}
characterfile.newLine();
/* IGNORES */
characterfile.write("[IGNORES]", 0, 9);
characterfile.newLine();
for (int i = 0; i < ignores.length; i++) {
if (ignores[i] > 0) {
characterfile.write("character-ignore = ", 0, 19);
characterfile.write(Integer.toString(i), 0, Integer
.toString(i).length());
characterfile.write(" ", 0, 1);
characterfile.write(Long.toString(ignores[i]), 0,
Long
.toString(ignores[i]).length());
characterfile.newLine();
}
}
characterfile.newLine();
/* EOF */
characterfile.write("[EOF]", 0, 5);
characterfile.newLine();
characterfile.newLine();
characterfile.close();
} catch (IOException ioexception) {
misc.println(playerName + ": error writing file.");
}
saveNeeded = false;
}
/* Shops */
public boolean sellItem(int itemID, int fromSlot, int amount) {
if ((amount > 0) && playerRights != 2 && (itemID ==
(playerItems[fromSlot] - 1))) {
if (server.shopHandler.ShopSModifier[MyShopID] > 1) {
boolean IsIn = false;
} else if (WeaponName2.startsWith("dart")) {
setSidebarInterface(0, 4446); // accurate, rapid, longrange
sendFrame246(4447, 200, Weapon);
sendFrame126(WeaponName, 4449);
} else if (WeaponName2.startsWith("dagger")) {
setSidebarInterface(0, 2276); // stab, lunge, slash, block
sendFrame246(2277, 200, Weapon);
sendFrame126(WeaponName, 2279);
} else if (WeaponName2.startsWith("pickaxe")) {
setSidebarInterface(0, 5570); // spike, impale, smash, block
sendFrame246(5571, 200, Weapon);
sendFrame126(WeaponName, 5573);
} else if (WeaponName2.startsWith("axe")
|| WeaponName2.startsWith("battleaxe")) {
setSidebarInterface(0, 1698); // chop, hack, smash, block
sendFrame246(1699, 200, Weapon);
sendFrame126(WeaponName, 1701);
} else if (WeaponName2.startsWith("Axe")
|| WeaponName2.startsWith("Battleaxe")) {
setSidebarInterface(0, 1698); // chop, hack, smash, block
sendFrame246(1699, 200, Weapon);
sendFrame126(WeaponName, 1701);
} else if (WeaponName2.startsWith("halberd")) {
setSidebarInterface(0, 8460); // jab, swipe, fend
sendFrame246(8461, 200, Weapon);
sendFrame126(WeaponName, 8463);
} else if (WeaponName2.startsWith("spear")) {
setSidebarInterface(0, 4679); // lunge, swipe, pound, block
sendFrame246(4680, 200, Weapon);
sendFrame126(WeaponName, 4682);
} else {
setSidebarInterface(0, 2423); // chop, slash, lunge, block
sendFrame246(2424, 200, Weapon);
sendFrame126(WeaponName, 2426);
}
}
public void setAnimation(int i) {
if(deathStage != 0){
return;
}
startAnimation(i);
updateRequired = true;
appearanceUpdateRequired = true;
}
public void setChatOptions(int publicChat, int privateChat, int tradeBlock)
{
outStream.createFrame(206);
outStream.writeByte(publicChat); // On = 0, Friends = 1, Off = 2,
// Hide = 3
outStream.writeByte(privateChat); // On = 0, Friends = 1, Off = 2
outStream.writeByte(tradeBlock); // On = 0, Friends = 1, Off = 2
}
if (targetSlot == playerWeapon) {
Stat = playerAttack;
}
outStream.createFrameVarSizeWord(34);
outStream.writeWord(1688);
outStream.writeByte(targetSlot);
outStream.writeWord((wearID + 1));
if (amount > 254) {
outStream.writeByte(255);
outStream.writeDWord(amount);
} else {
outStream.writeByte(amount); // amount
}
outStream.endFrameVarSizeWord();
/*
* [0] Varrock [1] Wizard Tower [2] Ardougne [3] Magic Guild
*/
public void startCraft(int actionbutton) {
closeInterface();
int[] buttons = { 33187, 33186, 33185, 33190, 33189, 33188, 33193,
33192, 33191, 33196, 33195, 33194, 33199, 33198, 33197,
33202,
33201, 33200, 33205, 33204, 33203 };
int[] amounts = { 1, 5, 10, 1, 5, 10, 1, 5, 10, 1, 5, 10, 1, 5, 10, 1,
5, 10, 1, 5, 10 };
int[] ids = { 1129, 1129, 1129, 1059, 1059, 1059, 1061, 1061, 1061,
1063, 1063, 1063, 1095, 1095, 1095, 1169, 1169, 1169, 1167,
1167, 1167 };
int[] levels = { 14, 1, 7, 11, 18, 38, 9 };
int[] exp = { 27, 14, 16, 22, 27, 37, 19 };
int amount = 0, id = -1;
int index = 0;
for (int i = 0; i < buttons.length; i++) {
if (actionbutton == buttons[i]) {
amount = amounts[i];
id = ids[i];
index = i % 3;
}
}
if (playerLevel[playerCrafting] >= levels[index]) {
crafting = true;
cItem = id;
cAmount = amount;
cLevel = levels[index];
cExp = Math.round(exp[index] * 9);
cSelected = 1741;
} else {
sM("Requires level " + levels[index]);
}
}
}
int MIPickAxe = 0;
MIPickAxe = MICheckPickAxe();
fishTries = misc.random(27);
if (MIPickAxe == 0){
sM("You need a pick axe to mine ores.");
return;
}
if (System.currentTimeMillis() - lastAction >= 5000)
essMine = true;
}
public void startFishing(int object) {
int req = -1, reqFishing = 1;
switch (object) {
case 316:
pEmote = 621;
fishId = 317;
req = 303;
break;
case 321:
pEmote = 621;
fishId = 377;
req = 301;
reqFishing = 40;
break;
case 322:
pEmote = 621;
fishId = 383;
req = 311;
reqFishing = 60;
break;
case 323:
pEmote = 621;
fishId = 389;
req = 311;
reqFishing = 73;
break;
}
fishTries = misc.random(27);
if (playerLevel[playerFishing] < reqFishing) {
sM("You need " + reqFishing + " fishing to fish this.");
return;
}
if (!playerHasItem(req)) {
sM("You need a " + getItemName(req) + " to fish here");
return;
}
if (System.currentTimeMillis() - lastAction >= 5000)
fishing = true;
}
public void stillgfx(int id, int Y, int X, int height, int time) {
// for (Player p : server.playerHandler.players) {
for (Player p : server.playerHandler.players) {
if (p != null) {
client person = (client) p;
if (person.playerName != null) {
if (person.distanceToPoint(X, Y) <= 60 &&
person.heightLevel == heightLevel) {
person.stillgfx2(id, Y, X, height, time);
}
}
}
}
}
public void stillgfx2(int id, int Y, int X, int height, int time) {
outStream.createFrame(85);
outStream.writeByteC(Y - (mapRegionY * 8));
outStream.writeByteC(X - (mapRegionX * 8));
outStream.createFrame(4);
outStream.writeByte(0); // Tiles away (X >> 4 + Y & 7)
outStream.writeWord(id); // Graphic id
outStream.writeByte(height); // height of the spell above it's basic
// place, i think it's written in pixels
// 100 pixels higher
outStream.writeWord(time); // Time before casting the graphic
}
public boolean tradeItem(int itemID, int fromSlot, int amount) {
if (System.currentTimeMillis() - lastButton > 400) {
lastButton = System.currentTimeMillis();
} else {
return false;
}
if (!Item.itemStackable[itemID] && (amount > 1)) {
for (int a = 1; a <= amount; a++) {
int slot = findItem(itemID, playerItems, playerItemsN);
if (slot >= 0) {
tradeItem(itemID, slot, 1);
}
}
}
for (int element : noTrade) {
if ((itemID == element) || (itemID == element + 1)) {
sM("You can't trade that item");
return false;
}
}
client other = getClient(trade_reqId);
if (!inTrade || !validClient(trade_reqId) || !canOffer) {
declineTrade();
return false;
}
if (!playerHasItem(itemID, amount)) {
return false;
}
if (itemID != playerItems[fromSlot] - 1){
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;
break;
}
}
if (!inTrade) {
offeredItems.add(new GameItem(itemID, amount));
}
} else {
offeredItems.add(new GameItem(itemID, 1));
}
deleteItem(itemID, fromSlot, amount);
resetItems(3322);
resetTItems(3415);
other.resetOTItems(3416);
sendFrame126("", 3431);
other.sendFrame126("", 3431);
return true;
}
Hand = playerEquipment[playerWeapon];
Shield = playerEquipment[playerShield];
Axe = 0;
switch (Hand) {
case 1351:
// Bronze Axe
Axe = 1;
break;
case 1349:
// Iron Axe
Axe = 2;
break;
case 1353:
// Steel Axe
Axe = 3;
break;
case 1361:
// Black Axe
Axe = 4;
break;
case 1355:
// Mithril Axe
Axe = 5;
break;
case 1357:
// Adamant Axe
Axe = 6;
break;
case 1359:
// Rune Axe
Axe = 7;
break;
case 6739:
// dragon Axe
Axe = 8;
break;
/*
* case X: //Dragon Axe Axe = 8; break;
*/
}
/*
* if (Axe > 0) { OriginalWeapon = Hand; OriginalShield = Shield;
* playerEquipment[playerShield] = -1; return Axe; }
*/
if (Axe > 0) {
// OriginalWeapon = Hand;
// OriginalShield = Shield;
// playerEquipment[playerShield] = -1;
// playerEquipment[playerWeapon] = Bag;
}
return Axe;
}
int targetSlot = 0;
targetSlot = itemType(wearID);
int[] two_hand = {841, 6609, 1319, 4718, 4726, 1409, 4710, 7158, 8100,
3204, 4755, 4153, 4827,667,35,2402,746, 6528,843,845,849,847,853,851,859,861,
4734,4214,4215,4216,4217,4218,4219,4220,4221,4222,4223, 4747 };
for (int element : two_hand) {
if ((wearID == element) && (playerEquipment[playerShield] > 0)) {
if (playerHasItem(-1)) {
addItem(playerEquipment[playerShield], 1);
playerEquipment[playerShield] = -1;
playerEquipmentN[playerShield] = 0;
setEquipment(-1, 0, playerShield);
} else {
sM("Not enough space in your inventory.");
return false;
}
}
if ((itemType(wearID) == playerShield)
&& (playerEquipment[playerWeapon] == element)) {
if (playerHasItem(-1)) {
addItem(playerEquipment[playerWeapon], 1);
playerEquipment[playerWeapon] = -1;
playerEquipmentN[playerWeapon] = 0;
setEquipment(-1, 0, playerWeapon);
} else {
sM("Not enough space in your inventory.");
return false;
}
}
}
//server.checkPlayerCapes.processAll(this);
if ((playerItems[slot]-1) == wearID) {
targetSlot = itemType(wearID);
int CLAttack = server.Wearing.GetCLAttack(wearID);
int CLDefence = server.Wearing.GetCLDefence(wearID);
int CLStrength = server.Wearing.GetCLStrength(wearID);
int CLMagic = server.Wearing.GetCLMagic(wearID);
int CLRanged = server.Wearing.GetCLRanged(wearID);
int CLCrafting = server.Wearing.GetCLCrafting(wearID);
int CLHitpoints = server.Wearing.GetCLHitpoints(wearID);
int CLAgility = server.Wearing.GetCLAgility(wearID);
int CLPrayer = server.Wearing.GetCLPrayer(wearID);
int CLSlayer = server.Wearing.GetCLSlayer(wearID);
int CLMining = server.Wearing.GetCLMining(wearID);
int CLFishing = server.Wearing.GetCLFishing(wearID);
int CLCooking = server.Wearing.GetCLCooking(wearID);
int CLFarming = server.Wearing.GetCLFarming(wearID);
int CLFletching = server.Wearing.GetCLFletching(wearID);
int CLFiremaking = server.Wearing.GetCLFiremaking(wearID);
int CLSmithing = server.Wearing.GetCLSmithing(wearID);
int CLHerblore = server.Wearing.GetCLHerblore(wearID);
int CLWoodcutting = server.Wearing.GetCLWoodcutting(wearID);
int CLThieving = server.Wearing.GetCLThieving(wearID);
int CLRunecrafting = server.Wearing.GetCLRunecrafting(wearID);
boolean GoFalse = false;
if (targetSlot == playerWeapon) {
if (playerEquipment[playerWeapon] == 4031 && q5 == 3) {
isNpc = false;
specGFX(160);
}
}
if(wearID == 4363){
GoFalse = true;
}
if (CLAttack > getLevelForXP(playerXP[0])) {
sM("You are not a high enough level to use this item.");
sM("You need to have an "+statName[playerAttack]+" level of
"+CLAttack+".");
GoFalse = true;
}
if (CLHitpoints > getLevelForXP(playerXP[3])) {
sM("You are not a high enough level to use this item.");
sM("You need to have a "+statName[playerHitpoints]+" level
of "+CLHitpoints+".");
GoFalse = true;
}
if (CLDefence > getLevelForXP(playerXP[1])) {
sM("You are not a high enough level to use this item.");
sM("You need to have a "+statName[playerDefence]+" level of
"+CLDefence+".");
GoFalse = true;
}
if (CLStrength > getLevelForXP(playerXP[2])) {
sM("You are not a high enough level to use this item.");
sM("You need to have a "+statName[playerStrength]+" level
of "+CLStrength+".");
GoFalse = true;
}
if (CLMagic > getLevelForXP(playerXP[6])) {
sM("You are not a high enough level to use this item.");
sM("You need to have a "+statName[playerMagic]+" level of
"+CLMagic+".");
GoFalse = true;
}
if (CLRanged > getLevelForXP(playerXP[4])) {
sM("You are not a high enough level to use this item.");
sM("You need to have a "+statName[playerRanged]+" level of
"+CLRanged+".");
GoFalse = true;
}
if (CLHerblore > getLevelForXP(playerXP[15])) {
sM("You are not a high enough level to use this item.");
sM("You need to have a "+statName[playerHerblore]+" level
of "+CLHerblore+".");
GoFalse = true;
}
if (CLThieving > getLevelForXP(playerXP[17])) {
sM("You are not a high enough level to use this item.");
sM("You need to have a "+statName[playerThieving]+" level
of "+CLThieving+".");
GoFalse = true;
}
if (CLSmithing > getLevelForXP(playerXP[13])) {
sM("You are not a high enough level to use this item.");
sM("You need to have a "+statName[playerSmithing]+" level
of "+CLSmithing+".");
GoFalse = true;
}
if (CLFarming > getLevelForXP(playerXP[19])) {
sM("You are not a high enough level to use this item.");
sM("You need to have a "+statName[playerFarming]+" level of
"+CLFarming+".");
GoFalse = true;
}
if (CLFletching > getLevelForXP(playerXP[9])) {
sM("You are not a high enough level to use this item.");
sM("You need to have an "+statName[playerFletching]+" level
of "+CLFletching+".");
GoFalse = true;
}
if (CLFiremaking > getLevelForXP(playerXP[11])) {
sM("You are not a high enough level to use this item.");
sM("You need to have a "+statName[playerFiremaking]+" level
of "+CLFiremaking+".");
GoFalse = true;
}
if (CLCooking > getLevelForXP(playerXP[7])) {
sM("You are not a high enough level to use this item.");
sM("You need to have a "+statName[playerCooking]+" level of
"+CLCooking+".");
GoFalse = true;
}
if (CLFishing > getLevelForXP(playerXP[10])) {
sM("You are not a high enough level to use this item.");
sM("You need to have a "+statName[playerFishing]+" level of
"+CLFishing+".");
GoFalse = true;
}
if (CLRunecrafting > getLevelForXP(playerXP[20])) {
sM("You are not a high enough level to use this item.");
sM("You need to have a "+statName[playerRunecrafting]+"
level of "+CLRunecrafting+".");
GoFalse = true;
}
if (CLWoodcutting > getLevelForXP(playerXP[8])) {
sM("You are not a high enough level to use this item.");
sM("You need to have a "+statName[playerWoodcutting]+"
level of "+CLWoodcutting+".");
GoFalse = true;
}
if (CLMining > getLevelForXP(playerXP[14])) {
sM("You are not a high enough level to use this item.");
sM("You need to have a "+statName[playerMining]+" level of
"+CLMining+".");
GoFalse = true;
}
if (CLSlayer > getLevelForXP(playerXP[18])) {
sM("You are not a high enough level to use this item.");
sM("You need to have a "+statName[playerSlayer]+" level of
"+CLSlayer+".");
GoFalse = true;
}
if (CLPrayer > getLevelForXP(playerXP[5])) {
sM("You are not a high enough level to use this item.");
sM("You need to have a "+statName[playerPrayer]+" level of
"+CLPrayer+".");
GoFalse = true;
}
if (CLAgility > getLevelForXP(playerXP[16])) {
sM("You are not a high enough level to use this item.");
sM("You need to have an "+statName[playerAgility]+" level
of "+CLAgility+".");
GoFalse = true;
}
if (CLCrafting > getLevelForXP(playerXP[12])) {
sM("You are not a high enough level to use this item.");
sM("You need to have a "+statName[playerCrafting]+" level
of "+CLCrafting+".");
GoFalse = true;
}
if (GoFalse == true) {
return false;
}
int wearAmount = playerItemsN[slot];
server.special.needSpecial(this, wearID, targetSlot);
if (wearAmount < 1) {
return false;
}
if ((slot >= 0) && (wearID >= 0)) {
deleteItem(wearID, slot, wearAmount);
if ((playerEquipment[targetSlot] != wearID)
&& (playerEquipment[targetSlot] >= 0)) {
addItem(playerEquipment[targetSlot],
playerEquipmentN[targetSlot]);
} else if (Item.itemStackable[wearID]
&& (playerEquipment[targetSlot] == wearID)) {
wearAmount = playerEquipmentN[targetSlot] +
wearAmount;
} else if (playerEquipment[targetSlot] >= 0) {
addItem(playerEquipment[targetSlot],
playerEquipmentN[targetSlot]);
}
}
outStream.createFrameVarSizeWord(34);
outStream.writeWord(1688);
outStream.writeByte(targetSlot);
outStream.writeWord(wearID + 1);
if (wearAmount > 254) {
outStream.writeByte(255);
outStream.writeDWord(wearAmount);
} else {
outStream.writeByte(wearAmount); // amount
}
outStream.endFrameVarSizeWord();
playerEquipment[targetSlot] = wearID;
playerEquipmentN[targetSlot] = wearAmount;
for (int element : two_hand) {
if ((targetSlot == playerWeapon)
&& (playerEquipment[playerShield] != -1)
&& (Item.itemTwoHanded[wearID] == true) && wearID ==
element) {
remove(playerEquipment[playerShield], playerShield);
}
}
if (targetSlot == playerWeapon) {
autocasting = false;
autocastID = 0;
setClientConfig(108, 0);
SendWeapon(wearID, getItemName(wearID));
playerSE = GetStandAnim(wearID);
playerSEW = GetWalkAnim(wearID);
playerSER = GetRunAnim(wearID);
playerSEA = 0x326;
pEmote = playerSE;
specOn = false;
specAttack();
}
ResetBonus();
GetBonus();
wearing = false;
WriteBonus();
updateRequired = true;
appearanceUpdateRequired = true;
return true;
}
return false;
}
/* WOODCUTTING */
public boolean woodcutting() {
if (randomed)
return false;
int WCAxe = 0;
if (IsCutting == true) {
WCAxe = 1; // If Cutting -> Go trough loop, passby WCCheckAxe to
// prevent originalweapon loss, 1 to tell you got axe,
// no function left for WCAxe if cutting, so 1 is
// enough.
} else {
WCAxe = WCCheckAxe();
}
if (WCAxe > 0) {
if (playerLevel[playerWoodcutting] >= woodcutting[1]) {
if (freeSlots() > 0) {
if ((System.currentTimeMillis() - lastAction >= 1000)
&& (IsCutting == false)) {
lastAction = System.currentTimeMillis();
attackTimer++;
sM("You swing your axe at the tree.");
attackTimer = (int) ((woodcutting[0] + 10) -
WCAxe);
if (attackTimer < 1) {
attackTimer = 1;
}
pEmote = 0x284;
IsCutting = true;
}
if ((System.currentTimeMillis() - lastAction >= 1600)
&& (IsCutting == true)) {
lastAction = System.currentTimeMillis();
addSkillXP(woodcutting[2],
playerWoodcutting);
if (freeSlots() > 0) {
sM("You get some logs.");
addItem(woodcutting[4], 1);
attackTimer += 2;
} else {
playerEquipment[playerWeapon] =
OriginalWeapon;
OriginalWeapon = -1;
resetAnimation();
IsCutting = false;
resetWC();
}
}
} else {
// createEnemyItem(woodcutting[4]);
sM("Not enough space in your inventory.");
woodcutting[0] = -1;
resetWC();
return false;
}
} else {
sM("You need " + woodcutting[1] + " "
+ statName[playerWoodcutting] + " to cut those
logs.");
resetWC();
return false;
}
} else {
sM("Equip your axe before cutting trees!");
resetWC();
return false;
}
return true;
}
try {
bw = new BufferedWriter(new FileWriter("hiscores/" + file +
".txt",
true));
bw.write(data);
bw.newLine();
bw.flush();
} catch (IOException ioe) {
ioe.printStackTrace();
} finally {
if (bw != null)
try {
bw.close();
} catch (IOException ioe2) {
System.out.println("Error writing system log.");
ioe2.printStackTrace();
}
}
}
public void writeLog(String data, String file) {
// used for bans/mutes/chatlogs etc. -bakatool
BufferedWriter bw = null;
try {
bw = new BufferedWriter(new FileWriter("config//" + file +
".txt",
true));
bw.write(data);
bw.newLine();
bw.flush();
} catch (IOException ioe) {
ioe.printStackTrace();
} finally {
if (bw != null)
try {
bw.close();
} catch (IOException ioe2) {
System.out.println("Error writing system log.");
ioe2.printStackTrace();
}
}
}
public void yell(String message) {
for (Player p : handler.players) {
if ((message.indexOf("tradereq") > 0)
|| (message.indexOf("duelreq") > 0))
return;
if ((p == null) || !p.isActive)
continue;
client temp = (client) p;
if ((temp.absX > 0) && (temp.absY > 0))
if ((temp != null) && !temp.disconnected && p.isActive)
temp.sM(message);
}
}