Jump to content

Search the Community

Showing results for tags 'correctly'.



More search options

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


Forums

  • RuneLocus
    • News & Announcements
    • Information Booth
    • Website Support
    • Introductions
    • Chat
    • Forum Games
  • RuneScape Development
    • RSPS General
    • RuneScape Private Server (RS2)
    • RuneScape Private Server (503+)
    • RuneScape Private Server (EoC 742+)
  • Other
    • Digital Art
    • Gaming
    • Webdevelopment
    • Computers
  • Marketplace
    • RuneScape Market
    • RSPS Market
    • Others Market
    • Freelance Middleman Services
  • Super Secret Club's Topics

Find results in...

Find results that contain...


Date Created

  • Start

    End


Last Updated

  • Start

    End


Filter by number of...

Joined

  • Start

    End


Group


Found 14 results

  1. However when I open it nothing happens?
  2. I am looking through this base I found for PI and I found out that you are allowed to wear all items, even though your skill is 1. I was wondering how can I accurately check the players skill level? In ItemAssistant for level req: [CODE] synchronized(c) { int targetSlot=0; boolean canWearItem = true; if(c.playerItems[slot] == wearID+1) { getRequirements(getItemName(wearID).toLowerCase(), wearID); targetSlot = Item.targetSlots[wearID]; if(itemType(wearID).equalsIgnoreCase("cape")) { targetSlot=1; } else if(itemType(wearID).equalsIgnoreCase("hat")) { targetSlot=0; } else if(itemType(wearID).equalsIgnoreCase("amulet")) { targetSlot=2; } else if(itemType(wearID).equalsIgnoreCase("arrows")) { targetSlot=13; } else if(itemType(wearID).equalsIgnoreCase("body")) { targetSlot=4; } else if(itemType(wearID).equalsIgnoreCase("shield")) { targetSlot=5; } else if(itemType(wearID).equalsIgnoreCase("legs")) { targetSlot=7; } else if(itemType(wearID).equalsIgnoreCase("gloves")) { targetSlot=9; } else if(itemType(wearID).equalsIgnoreCase("boots")) { targetSlot=10; } else if(itemType(wearID).equalsIgnoreCase("ring")) { targetSlot=12; } else { targetSlot = 3; } if(c.duelRule[11] && targetSlot == 0) { c.sendMessage("Wearing hats has been disabled in this duel!"); return false; } if(c.duelRule[12] && targetSlot == 1) { c.sendMessage("Wearing capes has been disabled in this duel!"); return false; } if(c.duelRule[13] && targetSlot == 2) { c.sendMessage("Wearing amulets has been disabled in this duel!"); return false; } if(c.duelRule[14] && targetSlot == 3) { c.sendMessage("Wielding weapons has been disabled in this duel!"); return false; } if(c.duelRule[15] && targetSlot == 4) { c.sendMessage("Wearing bodies has been disabled in this duel!"); return false; } if(c.duelRule[16] && targetSlot == 5 || c.duelRule[16] && is2handed(getItemName(wearID).toLowerCase(), wearID)) { c.sendMessage("Wearing shield has been disabled in this duel!"); return false; } if(c.duelRule[17] && targetSlot == 7) { c.sendMessage("Wearing legs has been disabled in this duel!"); return false; } if(c.duelRule[18] && targetSlot == 9) { c.sendMessage("Wearing gloves has been disabled in this duel!"); return false; } if(c.duelRule[19] && targetSlot == 10) { c.sendMessage("Wearing boots has been disabled in this duel!"); return false; } if(c.duelRule[20] && targetSlot == 12) { c.sendMessage("Wearing rings has been disabled in this duel!"); return false; } if(c.duelRule[21] && targetSlot == 13) { c.sendMessage("Wearing arrows has been disabled in this duel!"); return false; } if(Config.itemRequirements) { if(targetSlot == 10 || targetSlot == 7 || targetSlot == 5 || targetSlot == 4 || targetSlot == 0 || targetSlot == 9 || targetSlot == 10) { if(c.defenceLevelReq > 0) { if(c.getPA().getLevelForXP(c.playerXP[1]) < c.defenceLevelReq) { c.sendMessage("You need a defence level of "+c.defenceLevelReq+" to wear this item."); canWearItem = false; } } if(c.rangeLevelReq > 0) { if(c.getPA().getLevelForXP(c.playerXP[4]) < c.rangeLevelReq) { c.sendMessage("You need a range level of "+c.rangeLevelReq+" to wear this item."); canWearItem = false; } } if(c.magicLevelReq > 0) { if(c.getPA().getLevelForXP(c.playerXP[6]) < c.magicLevelReq) { c.sendMessage("You need a magic level of "+c.magicLevelReq+" to wear this item."); canWearItem = false; } } } if(targetSlot == 3) { if(c.attackLevelReq > 0) { if(c.getPA().getLevelForXP(c.playerXP[0]) < c.attackLevelReq) { c.sendMessage("You need an attack level of "+c.attackLevelReq+" to wield this weapon."); canWearItem = false; } } if(c.rangeLevelReq > 0) { if(c.getPA().getLevelForXP(c.playerXP[4]) < c.rangeLevelReq) { c.sendMessage("You need a range level of "+c.rangeLevelReq+" to wield this weapon."); canWearItem = false; } } if(c.magicLevelReq > 0) { if(c.getPA().getLevelForXP(c.playerXP[6]) < c.magicLevelReq) { c.sendMessage("You need a magic level of "+c.magicLevelReq+" to wield this weapon."); canWearItem = false; } } } } if(!canWearItem) { return false; } final int wearAmount = c.playerItemsN[slot]; if (wearAmount < 1) { return false; } if (targetSlot == c.playerWeapon) { c.autocasting = false; c.autocastId = 0; c.getPA().sendFrame36(108, 0); } if(slot >= 0 && wearID >= 0) { final int toEquip = c.playerItems[slot]; final int toEquipN = c.playerItemsN[slot]; int toRemove = c.playerEquipment[targetSlot]; int toRemoveN = c.playerEquipmentN[targetSlot]; if (toEquip == toRemove + 1 && Item.itemStackable[toRemove]) { deleteItem(toRemove, getItemSlot(toRemove), toEquipN); c.playerEquipmentN[targetSlot] += toEquipN; } else if (targetSlot != 5 && targetSlot != 3) { c.playerItems[slot] = toRemove + 1; c.playerItemsN[slot] = toRemoveN; c.playerEquipment[targetSlot] = toEquip - 1; c.playerEquipmentN[targetSlot] = toEquipN; } else if (targetSlot == 5) { final boolean wearing2h = is2handed(getItemName(c.playerEquipment[c.playerWeapon]).toLowerCase(), c.playerEquipment[c.playerWeapon]); if (wearing2h) { toRemove = c.playerEquipment[c.playerWeapon]; toRemoveN = c.playerEquipmentN[c.playerWeapon]; c.playerEquipment[c.playerWeapon] = -1; c.playerEquipmentN[c.playerWeapon] = 0; updateSlot(c.playerWeapon); } c.playerItems[slot] = toRemove + 1; c.playerItemsN[slot] = toRemoveN; c.playerEquipment[targetSlot] = toEquip - 1; c.playerEquipmentN[targetSlot] = toEquipN; } else if (targetSlot == 3) { final boolean is2h = is2handed(getItemName(wearID).toLowerCase(), wearID); final boolean wearingShield = c.playerEquipment[c.playerShield] > 0; final boolean wearingWeapon = c.playerEquipment[c.playerWeapon] > 0; if (is2h) { if (wearingShield && wearingWeapon) { if (freeSlots() > 0) { c.playerItems[slot] = toRemove + 1; c.playerItemsN[slot] = toRemoveN; c.playerEquipment[targetSlot] = toEquip - 1; c.playerEquipmentN[targetSlot] = toEquipN; removeItem(c.playerEquipment[c.playerShield], c.playerShield); } else { c.sendMessage("You do not have enough inventory space to do this."); return false; } } else if (wearingShield && !wearingWeapon) { c.playerItems[slot] = c.playerEquipment[c.playerShield] + 1; c.playerItemsN[slot] = c.playerEquipmentN[c.playerShield]; c.playerEquipment[targetSlot] = toEquip - 1; c.playerEquipmentN[targetSlot] = toEquipN; c.playerEquipment[c.playerShield] = -1; c.playerEquipmentN[c.playerShield] = 0; updateSlot(c.playerShield); } else { c.playerItems[slot] = toRemove + 1; c.playerItemsN[slot] = toRemoveN; c.playerEquipment[targetSlot] = toEquip - 1; c.playerEquipmentN[targetSlot] = toEquipN; } } else { c.playerItems[slot] = toRemove + 1; c.playerItemsN[slot] = toRemoveN; c.playerEquipment[targetSlot] = toEquip - 1; c.playerEquipmentN[targetSlot] = toEquipN; } } resetItems(3214); } if(targetSlot == 3) { c.usingSpecial = false; addSpecialBar(wearID); } if(c.getOutStream() != null && c != null ) { c.getOutStream().createFrameVarSizeWord(34); c.getOutStream().writeWord(1688); c.getOutStream().writeByte(targetSlot); c.getOutStream().writeWord(wearID+1); if (c.playerEquipmentN[targetSlot] > 254) { c.getOutStream().writeByte(255); c.getOutStream().writeDWord(c.playerEquipmentN[targetSlot]); } else { c.getOutStream().writeByte(c.playerEquipmentN[targetSlot]); } c.getOutStream().endFrameVarSizeWord(); c.flushOutStream(); } sendWeapon(c.playerEquipment[c.playerWeapon], getItemName(c.playerEquipment[c.playerWeapon])); resetBonus(); getBonus(); writeBonus(); c.getCombat().getPlayerAnimIndex(c.getItems().getItemName(c.playerEquipment[c.playerWeapon]).toLowerCase()); c.getPA().requestUpdates(); return true; } else { return false; } } [/CODE] For attack level specifically its [CODE]if(targetSlot == 3) { if(c.attackLevelReq > 0) { if(c.getPA().getLevelForXP(c.playerXP[0]) < c.attackLevelReq) { c.sendMessage("You need an attack level of "+c.attackLevelReq+" to wield this weapon."); canWearItem = false; } }[/CODE] So I looked into the if check statement for player.xp[0] and this is what that class had: [CODE]package game.player; import engine.util.ISAACRandomGen; import engine.util.Misc; import engine.util.Stream; import game.Client; import game.Config; import game.item.Item; import game.npc.NPC; import game.npc.NPCHandler; import java.util.ArrayList; import java.util.HashMap; import java.util.Map; /* * Project Insanity - Evolved v.3 * Player.java */ public abstract class Player { public Map<String, Integer> killedPlayers = new HashMap<String, Integer>(); public ArrayList <Integer>attackedPlayers = new ArrayList<Integer> (); public long lastButton; public ArrayList<String> lastKilledPlayers = new ArrayList<String>(); public long lastCast = 0; public boolean initialized = false, disconnected = false, ruleAgreeButton = false, RebuildNPCList = false, isActive = false, isKicked = false, isSkulled = false, friendUpdate = false, newPlayer = false, hasMultiSign = false, saveCharacter = false, mouseButton = false, splitChat = false, chatEffects = true, acceptAid = false, nextDialogue = false, autocasting = false, usedSpecial = false, mageFollow = false, dbowSpec = false, craftingLeather = false, properLogout = false, secDbow = false, maxNextHit = false, ssSpec = false, vengOn = false, addStarter = false, accountFlagged = false, msbSpec = false ; public int saveDelay, playerKilled, pkPoints, totalPlayerDamageDealt, killedBy, lastChatId = 1, privateChat, friendSlot = 0, dialogueId, randomCoffin, newLocation, specEffect, specBarId, attackLevelReq, defenceLevelReq, strengthLevelReq, rangeLevelReq, magicLevelReq, followId, skullTimer, nextChat = 0, talkingNpc = -1, dialogueAction = 0, autocastId, followDistance, followId2, barrageCount = 0, delayedDamage = 0, delayedDamage2 = 0, pcPoints = 0, magePoints = 0, desertTreasure = 0, lastArrowUsed = -1, clanId = -1, autoRet = 0, pcDamage = 0, xInterfaceId = 0, xRemoveId = 0, xRemoveSlot = 0, tzhaarToKill = 0, tzhaarKilled = 0, waveId, frozenBy = 0, poisonDamage = 0, teleAction = 0, bonusAttack = 0, lastNpcAttacked = 0, killCount = 0 ; public String clanName, properName; public int[] voidStatus = new int[5]; public int[] itemKeptId = new int [4]; public int[] pouches = new int[4]; public final int[] POUCH_SIZE = {3,6,9,12}; public boolean[] invSlot = new boolean[28], equipSlot = new boolean[14]; public long friends[] = new long[200]; public double specAmount = 0; public double specAccuracy = 1; public double specDamage = 1; public double prayerPoint = 1.0; public long ignores[] = new long[200]; public boolean usingbook = false; public boolean sarabook = false; public boolean zambook = false; public boolean guthbook = false; public int teleGrabItem, teleGrabX, teleGrabY, duelCount, underAttackBy, underAttackBy2, wildLevel, teleTimer, respawnTimer, saveTimer = 0, teleBlockLength, poisonDelay ; public long lastPlayerMove, lastPoison, lastPoisonSip, poisonImmune, lastSpear, lastProtItem, dfsDelay, lastVeng, lastYell, teleGrabDelay, protMageDelay, protMeleeDelay, protRangeDelay, lastAction, lastThieve, lastLockPick, alchDelay, specDelay = System.currentTimeMillis(), duelDelay, teleBlockDelay, godSpellDelay, singleCombatDelay, singleCombatDelay2, reduceStat, restoreStatsDelay, logoutDelay, buryDelay, foodDelay, potDelay, restoreDelay ; public boolean canChangeAppearance = false; public boolean mageAllowed; public byte poisonMask = 0; public final int[] BOWS = {9185,839,845,847,851,855,859,841,843,849,853,857,861,4212,4214,4215,11235,4216,4217,4218,4219,4220,4221,4222,4223,6724,4734,4934,4935,4936,4937}; public final int[] ARROWS = {882,884,886,888,890,892,4740,11212,9140,9141,4142,9143,9144,9240,9241,9242,9243,9244,9245}; public final int[] NO_ARROW_DROP = {4212,4214,4215,4216,4217,4218,4219,4220,4221,4222,4223,4734,4934,4935,4936,4937}; public final int[] OTHER_RANGE_WEAPONS = {863,864,865,866,867,868,869,806,807,808,809,810,811,825,826,827,828,829,830,800,801,802,803,804,805,6522}; public final int[][] MAGIC_SPELLS = { // {magicId,level req,animation,startGFX,projectile Id,endGFX,maxhit,exp gained,rune 1,rune 1 amount,rune 2,rune 2 amount,rune 3,rune 3 amount,rune 4,rune 4 amount} // Modern Spells {1152,1,711,90,91,92,2,5,556,1,558,1,0,0,0,0}, //wind strike {1154,5,711,93,94,95,4,7,555,1,556,1,558,1,0,0}, // water strike {1156,9,711,96,97,98,6,9,557,2,556,1,558,1,0,0},// earth strike {1158,13,711,99,100,101,8,11,554,3,556,2,558,1,0,0}, // fire strike {1160,17,711,117,118,119,9,13,556,2,562,1,0,0,0,0}, // wind bolt {1163,23,711,120,121,122,10,16,556,2,555,2,562,1,0,0}, // water bolt {1166,29,711,123,124,125,11,20,556,2,557,3,562,1,0,0}, // earth bolt {1169,35,711,126,127,128,12,22,556,3,554,4,562,1,0,0}, // fire bolt {1172,41,711,132,133,134,13,25,556,3,560,1,0,0,0,0}, // wind blast {1175,47,711,135,136,137,14,28,556,3,555,3,560,1,0,0}, // water blast {1177,53,711,138,139,140,15,31,556,3,557,4,560,1,0,0}, // earth blast {1181,59,711,129,130,131,16,35,556,4,554,5,560,1,0,0}, // fire blast {1183,62,711,158,159,160,17,36,556,5,565,1,0,0,0,0}, // wind wave {1185,65,711,161,162,163,18,37,556,5,555,7,565,1,0,0}, // water wave {1188,70,711,164,165,166,19,40,556,5,557,7,565,1,0,0}, // earth wave {1189,75,711,155,156,157,20,42,556,5,554,7,565,1,0,0}, // fire wave {1153,3,716,102,103,104,0,13,555,3,557,2,559,1,0,0}, // confuse {1157,11,716,105,106,107,0,20,555,3,557,2,559,1,0,0}, // weaken {1161,19,716,108,109,110,0,29,555,2,557,3,559,1,0,0}, // curse {1542,66,729,167,168,169,0,76,557,5,555,5,566,1,0,0}, // vulnerability {1543,73,729,170,171,172,0,83,557,8,555,8,566,1,0,0}, // enfeeble {1562,80,729,173,174,107,0,90,557,12,555,12,556,1,0,0}, // stun {1572,20,711,177,178,181,0,30,557,3,555,3,561,2,0,0}, // bind {1582,50,711,177,178,180,2,60,557,4,555,4,561,3,0,0}, // snare {1592,79,711,177,178,179,4,90,557,5,555,5,561,4,0,0}, // entangle {1171,39,724,145,146,147,15,25,556,2,557,2,562,1,0,0}, // crumble undead {1539,50,708,87,88,89,25,42,554,5,560,1,0,0,0,0}, // iban blast {12037,50,1576,327,328,329,19,30,560,1,558,4,0,0,0,0}, // magic dart {1190,60,811,0,0,76,20,60,554,2,565,2,556,4,0,0}, // sara strike {1191,60,811,0,0,77,20,60,554,1,565,2,556,4,0,0}, // cause of guthix {1192,60,811,0,0,78,20,60,554,4,565,2,556,1,0,0}, // flames of zammy {12445,85,1819,0,344,345,0,65,563,1,562,1,560,1,0,0}, // teleblock {-1,80,811,301,0,0,0,0,554,3,565,3,556,3,0,0}, // charge {-1,21,712,112,0,0,0,10,554,3,561,1,0,0,0,0}, // low alch {-1,55,713,113,0,0,0,20,554,5,561,1,0,0,0,0}, // high alch {-1,33,728,142,143,144,0,35,556,1,563,1,0,0,0,0}, // telegrab // Ancient Spells {12939,50,1978,0,384,385,13,30,560,2,562,2,554,1,556,1}, // smoke rush {12987,52,1978,0,378,379,14,31,560,2,562,2,566,1,556,1}, // shadow rush {12901,56,1978,0,0,373,15,33,560,2,562,2,565,1,0,0}, // blood rush {12861,58,1978,0,360,361,16,34,560,2,562,2,555,2,0,0}, // ice rush {12963,62,1979,0,0,389,19,36,560,2,562,4,556,2,554,2}, // smoke burst {13011,64,1979,0,0,382,20,37,560,2,562,4,556,2,566,2}, // shadow burst {12919,68,1979,0,0,376,21,39,560,2,562,4,565,2,0,0}, // blood burst {12881,70,1979,0,0,363,22,40,560,2,562,4,555,4,0,0}, // ice burst {12951,74,1978,0,386,387,23,42,560,2,554,2,565,2,556,2}, // smoke blitz {12999,76,1978,0,380,381,24,43,560,2,565,2,556,2,566,2}, // shadow blitz {12911,80,1978,0,374,375,25,45,560,2,565,4,0,0,0,0}, // blood blitz {12871,82,1978,366,0,367,26,46,560,2,565,2,555,3,0,0}, // ice blitz {12975,86,1979,0,0,391,27,48,560,4,565,2,556,4,554,4}, // smoke barrage {13023,88,1979,0,0,383,28,49,560,4,565,2,556,4,566,3}, // shadow barrage {12929,92,1979,0,0,377,29,51,560,4,565,4,566,1,0,0}, // blood barrage {12891,94,1979,0,0,369,30,52,560,4,565,2,555,6,0,0} // ice barrage }; public int[] autocastIds = { 51133,32,51185,33,51091,34,24018,35,51159,36,51211,37,51111,38,51069,39,51146,40,51198,41,51102,42,51058,43,51172,44,51224,45,51122,46,51080,47,7038,0,7039,1, 7040,2,7041,3,7042,4,7043,5,7044,6,7045,7,7046,8,7047,9,7048,10,7049,11,7050,12,7051,13,7052,14,7053,15,47019,27,47020,25,47021,12,47022,13,47023,14,47024,15 }; public int[][] barrowsNpcs = { {2030, 0}, //verac {2029, 0}, //toarg {2028, 0}, // karil {2027, 0}, // guthan {2026, 0}, // dharok {2025, 0} // ahrim }; public int barrowsKillCount; public int reduceSpellId; public final int[] REDUCE_SPELL_TIME = {250000, 250000, 250000, 500000,500000,500000}; // how long does the other player stay immune to the spell public long[] reduceSpellDelay = new long[6]; public final int[] REDUCE_SPELLS = {1153,1157,1161,1542,1543,1562}; public boolean[] canUseReducingSpell = {true, true, true, true, true, true}; public int slayerTask,taskAmount; public int prayerId = -1; public int headIcon = -1; public int bountyIcon = 0; public long stopPrayerDelay, prayerDelay; public boolean usingPrayer; public final int[] PRAYER_DRAIN_RATE = {500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500}; public final int[] PRAYER_LEVEL_REQUIRED = {1,4,7,8,9,10,13,16,19,22,25,26,27,28,31,34,37,40,43,44,45,46,49,52,60,70}; public final int[] PRAYER = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25}; public final String[] PRAYER_NAME = { "Thick Skin", "Burst of Strength", "Clarity of Thought", "Sharp Eye", "Mystic Will", "Rock Skin", "Superhuman Strength", "Improved Reflexes","Rapid Restore", "Rapid Heal", "Protect Item", "Hawk Eye", "Mystic Lore", "Steel Skin", "Ultimate Strength", "Incredible Reflexes","Protect from Magic", "Protect from Missiles", "Protect from Melee","Eagle Eye", "Mystic Might", "Retribution", "Redemption", "Smite", "Chivalry", "Piety"}; public final int[] PRAYER_GLOW = {83,84,85,601,602,86,87,88,89,90,91,603,604,92,93,94,95,96,97,605,606,98,99,100,607,608}; public final int[] PRAYER_HEAD_ICONS = {-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,2,1,0,-1,-1,3,5,4,-1,-1}; public boolean[] prayerActive = {false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false}; public int duelTimer, duelTeleX, duelTeleY, duelSlot, duelSpaceReq, duelOption, duelingWith, duelStatus ; public int headIconPk = -1, headIconHints; public boolean duelRequested; public boolean[] duelRule = new boolean[22]; public final int[] DUEL_RULE_ID = {1, 2, 16, 32, 64, 128, 256, 512, 1024, 4096, 8192, 16384, 32768, 65536, 131072, 262144, 524288, 2097152, 8388608, 16777216, 67108864, 134217728}; public boolean doubleHit, usingSpecial, npcDroppingItems, usingRangeWeapon, usingBow, usingMagic, castingMagic ; public int specMaxHitIncrease, freezeDelay, freezeTimer = -6, killerId, playerIndex, oldPlayerIndex, lastWeaponUsed, projectileStage, crystalBowArrowCount, playerMagicBook, teleGfx, teleEndAnimation, teleHeight, teleX, teleY, rangeItemUsed, killingNpcIndex, totalDamageDealt, oldNpcIndex, fightMode, attackTimer, npcIndex, npcClickIndex, npcType, castingSpellId, oldSpellId, spellId, hitDelay ; public int bowSpecShot, clickNpcType, clickObjectType, objectId, objectX, objectY, objectXOffset, objectYOffset, objectDistance ; public int pItemX, pItemY, pItemId; public boolean isMoving, walkingToItem; public boolean isShopping, updateShop; public int myShopId; public int tradeStatus, tradeWith; public boolean magicFailed, oldMagicFailed; public boolean forcedChatUpdateRequired, inDuel, tradeAccepted, goodTrade, inTrade, tradeRequested, tradeResetNeeded, tradeConfirmed, tradeConfirmed2, canOffer, acceptTrade, acceptedTrade ; public int attackAnim, animationRequest = -1,animationWaitCycles; public int[] playerBonus = new int[12]; public boolean isRunning2 = true; public boolean takeAsNote; public int combatLevel; public boolean saveFile = false; public int playerAppearance[] = new int[13]; public int apset; public int actionID; public int wearItemTimer, wearId, wearSlot, interfaceId; public int XremoveSlot, XinterfaceID, XremoveID, Xamount; public int tutorial = 15; public boolean usingGlory = false; public boolean isOperate; public int itemUsing; public long muteEnd; public long banStart; public long banEnd; public boolean antiFirePot = false; /** * Skill Variables */ public boolean stopPlayerSkill; public boolean isWc; public boolean wcing; public int treeX, treeY; public boolean isMining; public boolean mining; public int rockX, rockY; public boolean fishing = false; public int fishTimer = 0; public boolean playerIsFishing; public int[] fishingProp = new int[3]; public int smeltType; public int smeltAmount; public int smeltTimer = 0; public boolean smeltInterface; public boolean patchCleared; public int[] farm = new int[2]; /** * Mini-Ga,e Variables */ //Castle Wars public int castleWarsTeam; public boolean inCwGame; public boolean inCwWait; //Fight Pits public boolean inPits = false; public int pitsStatus = 0; public String connectedFrom=""; public String globalMessage=""; public int playerId = -1; public String playerName = null; public String playerName2 = null; public String playerPass = null; public int playerRights; public PlayerHandler handler = null; public int playerItems[] = new int[28]; public int playerItemsN[] = new int[28]; public int bankItems[] = new int[Config.BANK_SIZE]; public int bankItemsN[] = new int[Config.BANK_SIZE]; public boolean bankNotes = false; public int playerStandIndex = 0x328; public int playerTurnIndex = 0x337; public int playerWalkIndex = 0x333; public int playerTurn180Index = 0x334; public int playerTurn90CWIndex = 0x335; public int playerTurn90CCWIndex = 0x336; public int playerRunIndex = 0x338; public int playerHat=0; public int playerCape=1; public int playerAmulet=2; public int playerWeapon=3; public int playerChest=4; public int playerShield=5; public int playerLegs=7; public int playerHands=9; public int playerFeet=10; public int playerRing=12; public int playerArrows=13; public int playerAttack = 0; public int playerDefence = 1; public int playerStrength = 2; public int playerHitpoints = 3; public int playerRanged = 4; public int playerPrayer = 5; public int playerMagic = 6; public int playerCooking = 7; public int playerWoodcutting = 8; public int playerFletching = 9; public int playerFishing = 10; public int playerFiremaking = 11; public int playerCrafting = 12; public int playerSmithing = 13; public int playerMining = 14; public int playerHerblore = 15; public int playerAgility = 16; public int playerThieving = 17; public int playerSlayer = 18; public int playerFarming = 19; public int playerRunecrafting = 20; public int[] playerEquipment = new int[14]; public int[] playerEquipmentN = new int[14]; public int[] playerLevel = new int[25]; public int[] playerXP = new int[25]; public static final int maxPlayerListSize = Config.MAX_PLAYERS; public Player playerList[] = new Player[Player.maxPlayerListSize]; public int playerListSize = 0; public byte playerInListBitmap[] = new byte[Config.MAX_PLAYERS+7 >> 3]; public static final int maxNPCListSize = NPCHandler.maxNPCs; public NPC npcList[] = new NPC[Player.maxNPCListSize]; public int npcListSize = 0; public byte npcInListBitmap[] = new byte[NPCHandler.maxNPCs+7 >> 3]; public int mapRegionX, mapRegionY; public int absX, absY; public int currentX, currentY; public static int heightLevel; public int playerSE = 0x328; public int playerSEW = 0x333; public int playerSER = 0x334; public boolean updateRequired = true; public final int walkingQueueSize = 50; public int walkingQueueX[] = new int[walkingQueueSize], walkingQueueY[] = new int[walkingQueueSize]; public int wQueueReadPtr = 0; public int wQueueWritePtr = 0; public boolean isRunning = true; public int teleportToX = -1, teleportToY = -1; public boolean didTeleport = false; public boolean mapRegionDidChange = false; public int dir1 = -1, dir2 = -1; public boolean createItems = false; public int poimiX = 0, poimiY = 0; public byte cachedPropertiesBitmap[] = new byte[Config.MAX_PLAYERS+7 >> 3]; public int DirectionCount = 0; private boolean appearanceUpdateRequired = true; public int hitDiff2; private int hitDiff = 0; public boolean hitUpdateRequired2; private boolean hitUpdateRequired = false; public boolean isDead = false; protected static Stream playerProps; static { Player.playerProps = new Stream(new byte[100]); } private boolean chatTextUpdateRequired = false; private byte chatText[] = new byte[4096]; private byte chatTextSize = 0; private int chatTextColor = 0; private int chatTextEffects = 0; public String forcedText = "null"; /** *Graphics **/ public int mask100var1 = 0; public int mask100var2 = 0; protected boolean mask100update = false; /** *Face Update **/ protected boolean faceUpdateRequired = false; public int face = -1; public int FocusPointX = -1, FocusPointY = -1; private int newWalkCmdX[] = new int[walkingQueueSize]; private int newWalkCmdY[] = new int[walkingQueueSize]; public int newWalkCmdSteps = 0; private boolean newWalkCmdIsRunning = false; protected int travelBackX[] = new int[walkingQueueSize]; protected int travelBackY[] = new int[walkingQueueSize]; protected int numTravelBackSteps = 0; public int[] damageTaken = new int[Config.MAX_PLAYERS]; public Player(final int _playerId) { playerId = _playerId; playerRights = Config.START_PLAYER_RIGHT; for (int i=0; i<playerItems.length; i++) { playerItems[i] = 0; } for (int i=0; i<playerItemsN.length; i++) { playerItemsN[i] = 0; } for (int i=0; i<playerLevel.length; i++) { if (i == 3) { playerLevel[i] = 10; } else { playerLevel[i] = 1; } } for (int i=0; i<playerXP.length; i++) { if (i == 3) { playerXP[i] = 1300; } else { playerXP[i] = 0; } } for (int i=0; i < Config.BANK_SIZE; i++) { bankItems[i] = 0; } for (int i=0; i < Config.BANK_SIZE; i++) { bankItemsN[i] = 0; } playerAppearance[0] = 0; // gender playerAppearance[1] = 7; // head playerAppearance[2] = 25;// Torso playerAppearance[3] = 29; // arms playerAppearance[4] = 35; // hands playerAppearance[5] = 39; // legs playerAppearance[6] = 44; // feet playerAppearance[7] = 14; // beard playerAppearance[8] = 7; // hair colour playerAppearance[9] = 8; // torso colour playerAppearance[10] = 9; // legs colour playerAppearance[11] = 5; // feet colour playerAppearance[12] = 0; // skin colour apset = 0; actionID = 0; playerEquipment[playerHat]=-1; playerEquipment[playerCape]=-1; playerEquipment[playerAmulet]=-1; playerEquipment[playerChest]=-1; playerEquipment[playerShield]=-1; playerEquipment[playerLegs]=-1; playerEquipment[playerHands]=-1; playerEquipment[playerFeet]=-1; playerEquipment[playerRing]=-1; playerEquipment[playerArrows]=-1; playerEquipment[playerWeapon]=-1; Player.heightLevel = Config.START_HIGHT_LEVEL; teleportToX = Config.START_LOCATION_X; teleportToY = Config.START_LOCATION_Y; absX = absY = -1; mapRegionX = mapRegionY = -1; currentX = currentY = 0; resetWalkingQueue(); } public void addNewNPC(final NPC npc, final Stream str, final Stream updateBlock) { synchronized(this) { final int id = npc.npcId; npcInListBitmap[id >> 3] |= 1 << (id&7); npcList[npcListSize++] = npc; str.writeBits(14, id); int z = npc.absY-absY; if(z < 0) { z += 32; } str.writeBits(5, z); z = npc.absX-absX; if(z < 0) { z += 32; } str.writeBits(5, z); str.writeBits(1, 0); str.writeBits(12, npc.npcType); final boolean savedUpdateRequired = npc.updateRequired; npc.updateRequired = true; npc.appendNPCUpdateBlock(updateBlock); npc.updateRequired = savedUpdateRequired; str.writeBits(1, 1); } } /*public void addNewPlayer(Player plr, Stream str, Stream updateBlock) { synchronized(this) { if(playerListSize >= 255) { return; } int id = plr.playerId; playerInListBitmap[id >> 3] |= 1 << (id&7); playerList[playerListSize++] = plr; str.writeBits(11, id); str.writeBits(1, 1); boolean savedFlag = plr.isAppearanceUpdateRequired(); boolean savedUpdateRequired = plr.updateRequired; plr.setAppearanceUpdateRequired(true); plr.updateRequired = true; plr.appendPlayerUpdateBlock(updateBlock); plr.setAppearanceUpdateRequired(savedFlag); plr.updateRequired = savedUpdateRequired; str.writeBits(1, 1); int z = plr.absY-absY; if(z < 0) z += 32; str.writeBits(5, z); z = plr.absX-absX; if(z < 0) z += 32; str.writeBits(5, z); } }*/ public void addNewPlayer(final Player plr, final Stream str, final Stream updateBlock) { // memory // lea // fixed synchronized (this) { final int id = plr.playerId; playerInListBitmap[id >> 3] |= 1 << (id & 7); playerList[playerListSize++] = plr; str.writeBits(11, id); str.writeBits(1, 1); final boolean savedFlag = plr.isAppearanceUpdateRequired(); final boolean savedUpdateRequired = plr.updateRequired; plr.setAppearanceUpdateRequired(true); plr.updateRequired = true; plr.appendPlayerUpdateBlock(updateBlock); plr.setAppearanceUpdateRequired(savedFlag); plr.updateRequired = savedUpdateRequired; str.writeBits(1, 1); int z = plr.absY - absY; if (z < 0) { z += 32; } str.writeBits(5, z); z = plr.absX - absX; if (z < 0) { z += 32; } str.writeBits(5, z); } } public void addToWalkingQueue(final int x, final int y) { //if (VirtualWorld.I(heightLevel, absX, absY, x, y, 0)) { final int next = (wQueueWritePtr+1) % walkingQueueSize; if(next == wQueueWritePtr) { return; } walkingQueueX[wQueueWritePtr] = x; walkingQueueY[wQueueWritePtr] = y; wQueueWritePtr = next; //} } public void appendAnimationRequest(final Stream str) { synchronized(this) { str.writeWordBigEndian(animationRequest==-1 ? 65535 : animationRequest); str.writeByteC(animationWaitCycles); } } public void appendFaceUpdate(final Stream str) { synchronized(this) { str.writeWordBigEndian(face); } } public void appendForcedChat(final Stream str) { synchronized(this) { str.writeString(forcedText); } } /** *Hit Update **/ protected void appendHitUpdate(final Stream str) { synchronized(this) { str.writeByte(getHitDiff()); // What the perseon got 'hit' for if (poisonMask == 1) { str.writeByteA(2); } else if (getHitDiff() > 0) { str.writeByteA(1); // 0: red hitting - 1: blue hitting } else { str.writeByteA(0); // 0: red hitting - 1: blue hitting } if (playerLevel[3] <= 0) { playerLevel[3] = 0; isDead = true; } str.writeByteC(playerLevel[3]); // Their current hp, for HP bar str.writeByte(getLevelForXP(playerXP[3])); // Their max hp, for HP bar } } protected void appendHitUpdate2(final Stream str) { synchronized(this) { str.writeByte(hitDiff2); // What the perseon got 'hit' for if (poisonMask == 2) { str.writeByteS(2); poisonMask = -1; } else if (hitDiff2 > 0) { str.writeByteS(1); // 0: red hitting - 1: blue hitting } else { str.writeByteS(0); // 0: red hitting - 1: blue hitting } if (playerLevel[3] <= 0) { playerLevel[3] = 0; isDead = true; } str.writeByte(playerLevel[3]); // Their current hp, for HP bar str.writeByteC(getLevelForXP(playerXP[3])); // Their max hp, for HP bar } } public void appendMask100Update(final Stream str) { synchronized(this) { str.writeWordBigEndian(mask100var1); str.writeDWord(mask100var2); } } protected void appendPlayerAppearance(final Stream str) { synchronized(this) { Player.playerProps.currentOffset = 0; Player.playerProps.writeByte(playerAppearance[0]); Player.playerProps.writeByte(headIcon); Player.playerProps.writeByte(headIconPk); //playerProps.writeByte(headIconHints); //playerProps.writeByte(bountyIcon); if (playerEquipment[playerHat] > 1) { Player.playerProps.writeWord(0x200 + playerEquipment[playerHat]); } else { Player.playerProps.writeByte(0); } if (playerEquipment[playerCape] > 1) { Player.playerProps.writeWord(0x200 + playerEquipment[playerCape]); } else { Player.playerProps.writeByte(0); } if (playerEquipment[playerAmulet] > 1) { Player.playerProps.writeWord(0x200 + playerEquipment[playerAmulet]); } else { Player.playerProps.writeByte(0); } if (playerEquipment[playerWeapon] > 1) { Player.playerProps.writeWord(0x200 + playerEquipment[playerWeapon]); } else { Player.playerProps.writeByte(0); } if (playerEquipment[playerChest] > 1) { Player.playerProps.writeWord(0x200 + playerEquipment[playerChest]); } else { Player.playerProps.writeWord(0x100+playerAppearance[2]); } if (playerEquipment[playerShield] > 1) { Player.playerProps.writeWord(0x200 + playerEquipment[playerShield]); } else { Player.playerProps.writeByte(0); } if (!Item.isFullBody(playerEquipment[playerChest])) { Player.playerProps.writeWord(0x100+playerAppearance[3]); } else { Player.playerProps.writeByte(0); } if (playerEquipment[playerLegs] > 1) { Player.playerProps.writeWord(0x200 + playerEquipment[playerLegs]); } else { Player.playerProps.writeWord(0x100+playerAppearance[5]); } if (!Item.isFullHelm(playerEquipment[playerHat]) && !Item.isFullMask(playerEquipment[playerHat])) { Player.playerProps.writeWord(0x100 + playerAppearance[1]); } else { Player.playerProps.writeByte(0); } if (playerEquipment[playerHands] > 1) { Player.playerProps.writeWord(0x200 + playerEquipment[playerHands]); } else { Player.playerProps.writeWord(0x100+playerAppearance[4]); } if (playerEquipment[playerFeet] > 1) { Player.playerProps.writeWord(0x200 + playerEquipment[playerFeet]); } else { Player.playerProps.writeWord(0x100+playerAppearance[6]); } if (playerAppearance[0] != 1 && !Item.isFullMask(playerEquipment[playerHat])) { Player.playerProps.writeWord(0x100 + playerAppearance[7]); } else { Player.playerProps.writeByte(0); } Player.playerProps.writeByte(playerAppearance[8]); Player.playerProps.writeByte(playerAppearance[9]); Player.playerProps.writeByte(playerAppearance[10]); Player.playerProps.writeByte(playerAppearance[11]); Player.playerProps.writeByte(playerAppearance[12]); Player.playerProps.writeWord(playerStandIndex); // standAnimIndex Player.playerProps.writeWord(playerTurnIndex); // standTurnAnimIndex Player.playerProps.writeWord(playerWalkIndex); // walkAnimIndex Player.playerProps.writeWord(playerTurn180Index); // turn180AnimIndex Player.playerProps.writeWord(playerTurn90CWIndex); // turn90CWAnimIndex Player.playerProps.writeWord(playerTurn90CCWIndex); // turn90CCWAnimIndex Player.playerProps.writeWord(playerRunIndex); // runAnimIndex Player.playerProps.writeQWord(Misc.playerNameToInt64(playerName)); final int mag = (int) (getLevelForXP(playerXP[6]) * 1.5); final int ran = (int) (getLevelForXP(playerXP[4]) * 1.5); final int attstr = (int) ((double) getLevelForXP(playerXP[0]) + (double) getLevelForXP(playerXP[2])); combatLevel = 0; if (ran > attstr) { combatLevel = (int) (getLevelForXP(playerXP[1]) * 0.25 + getLevelForXP(playerXP[3]) * 0.25 + getLevelForXP(playerXP[5]) * 0.125 + getLevelForXP(playerXP[4]) * 0.4875); } else if (mag > attstr) { combatLevel = (int) (getLevelForXP(playerXP[1]) * 0.25 + getLevelForXP(playerXP[3]) * 0.25 + getLevelForXP(playerXP[5]) * 0.125 + getLevelForXP(playerXP[6]) * 0.4875); } else { combatLevel = (int) (getLevelForXP(playerXP[1]) * 0.25 + getLevelForXP(playerXP[3]) * 0.25 + getLevelForXP(playerXP[5]) * 0.125 + getLevelForXP(playerXP[0]) * 0.325 + getLevelForXP(playerXP[2]) * 0.325); } Player.playerProps.writeByte(combatLevel); // combat level Player.playerProps.writeWord(0); str.writeByteC(Player.playerProps.currentOffset); str.writeBytes(Player.playerProps.buffer, Player.playerProps.currentOffset, 0); } } protected void appendPlayerChatText(final Stream str) { synchronized(this) { str.writeWordBigEndian(((getChatTextColor()&0xFF) << 8) + (getChatTextEffects()&0xFF)); str.writeByte(playerRights); str.writeByteC(getChatTextSize()); str.writeBytes_reverse(getChatText(), getChatTextSize(), 0); } } public void appendPlayerUpdateBlock(final Stream str){ synchronized(this) { if(!updateRequired && !isChatTextUpdateRequired()) { return; // nothing required } int updateMask = 0; if(mask100update) { updateMask |= 0x100; } if(animationRequest != -1) { updateMask |= 8; } if(forcedChatUpdateRequired) { updateMask |= 4; } if(isChatTextUpdateRequired()) { updateMask |= 0x80; } if(isAppearanceUpdateRequired()) { updateMask |= 0x10; } if(faceUpdateRequired) { updateMask |= 1; } if(FocusPointX != -1) { updateMask |= 2; } if (isHitUpdateRequired()) { updateMask |= 0x20; } if(hitUpdateRequired2) { updateMask |= 0x200; } if(updateMask >= 0x100) { updateMask |= 0x40; str.writeByte(updateMask & 0xFF); str.writeByte(updateMask >> 8); } else { str.writeByte(updateMask); } // now writing the various update blocks itself - note that their order crucial if(mask100update) { appendMask100Update(str); } if(animationRequest != -1) { appendAnimationRequest(str); } if(forcedChatUpdateRequired) { appendForcedChat(str); } if(isChatTextUpdateRequired()) { appendPlayerChatText(str); } if(faceUpdateRequired) { appendFaceUpdate(str); } if(isAppearanceUpdateRequired()) { appendPlayerAppearance(str); } if(FocusPointX != -1) { appendSetFocusDestination(str); } if(isHitUpdateRequired()) { appendHitUpdate(str); } if(hitUpdateRequired2) { appendHitUpdate2(str); } } } private void appendSetFocusDestination(final Stream str) { synchronized(this) { str.writeWordBigEndianA(FocusPointX); str.writeWordBigEndian(FocusPointY); } } public boolean arenas() { if(absX > 3331 && absX < 3391 && absY > 3242 && absY < 3260) { return true; } return false; } public void assignAutocast(final int button) { for (int j = 0; j < autocastIds.length; j++) { if (autocastIds[j] == button) { Client c = (Client) PlayerHandler.players[playerId]; autocasting = true; autocastId = autocastIds[j+1]; c.getPA().sendFrame36(108, 1); c.setSidebarInterface(0, 328); c = null; break; } } } public void clearUpdateFlags(){ updateRequired = false; setChatTextUpdateRequired(false); setAppearanceUpdateRequired(false); setHitUpdateRequired(false); hitUpdateRequired2 = false; forcedChatUpdateRequired = false; mask100update = false; animationRequest = -1; FocusPointX = -1; FocusPointY = -1; poisonMask = -1; faceUpdateRequired = false; face = 65535; } public void dealDamage(final int damage) { if (teleTimer <= 0) { playerLevel[3] -= damage; } else { if (hitUpdateRequired) { hitUpdateRequired = false; } if (hitUpdateRequired2) { hitUpdateRequired2 = false; } } } public void destruct() { playerListSize = 0; for(int i = 0; i < Player.maxPlayerListSize; i++) { playerList[i] = null; } absX = absY = -1; mapRegionX = mapRegionY = -1; currentX = currentY = 0; resetWalkingQueue(); } public int distanceToPoint(final int pointX,final int pointY) { return (int) Math.sqrt(Math.pow(absX - pointX, 2) + Math.pow(absY - pointY, 2)); } public void faceUpdate(final int index) { face = index; faceUpdateRequired = true; updateRequired = true; } public void forcedChat(final String text) { forcedText = text; forcedChatUpdateRequired = true; updateRequired = true; setAppearanceUpdateRequired(true); } public boolean fullVoidMage() { return playerEquipment[playerHat] == 11663 && playerEquipment[playerLegs] == 8840 && playerEquipment[playerChest] == 8839 && playerEquipment[playerHands] == 8842; } public boolean fullVoidMelee() { return playerEquipment[playerHat] == 11665 && playerEquipment[playerLegs] == 8840 && playerEquipment[playerChest] == 8839 && playerEquipment[playerHands] == 8842; } public boolean fullVoidRange() { return playerEquipment[playerHat] == 11664 && playerEquipment[playerLegs] == 8840 && playerEquipment[playerChest] == 8839 && playerEquipment[playerHands] == 8842; } public byte[] getChatText() { return chatText; } public int getChatTextColor() { return chatTextColor; } public int getChatTextEffects() { return chatTextEffects; } public byte getChatTextSize() { return chatTextSize; } public int getHitDiff() { return hitDiff; } public boolean getHitUpdateRequired() { return hitUpdateRequired; } public boolean getHitUpdateRequired2() { return hitUpdateRequired2; } public int getId() { return playerId; } public int getLevelForXP(final int exp) { int points = 0; int output = 0; for (int lvl = 1; lvl <= 99; lvl++) { points += Math.floor(lvl + 300.0 * Math.pow(2.0, lvl / 7.0)); output = (int)Math.floor(points / 4); if (output >= exp) { return lvl; } } return 99; } public int getLocalX() { return getX() - 8 * getMapRegionX(); } public int getLocalY() { return getY() - 8 * getMapRegionY(); } public int getMapRegionX() { return mapRegionX; } public int getMapRegionY() { return mapRegionY; } public int[] getNewWalkCmdX() { return newWalkCmdX; } public int[] getNewWalkCmdY() { return newWalkCmdY; } public synchronized void getNextPlayerMovement() { mapRegionDidChange = false; didTeleport = false; dir1 = dir2 = -1; if(teleportToX != -1 && teleportToY != -1) { mapRegionDidChange = true; if(mapRegionX != -1 && mapRegionY != -1) { final int relX = teleportToX-mapRegionX*8, relY = teleportToY-mapRegionY*8; if(relX >= 2*8 && relX < 11*8 && relY >= 2*8 && relY < 11*8) { mapRegionDidChange = false; } } if(mapRegionDidChange) { mapRegionX = (teleportToX>>3)-6; mapRegionY = (teleportToY>>3)-6; } currentX = teleportToX - 8*mapRegionX; currentY = teleportToY - 8*mapRegionY; absX = teleportToX; absY = teleportToY; resetWalkingQueue(); teleportToX = teleportToY = -1; didTeleport = true; } else { dir1 = getNextWalkingDirection(); if(dir1 == -1) { return; } if(isRunning) { dir2 = getNextWalkingDirection(); } //c.sendMessage("Cycle Ended"); int deltaX = 0, deltaY = 0; if(currentX < 2*8) { deltaX = 4*8; mapRegionX -= 4; mapRegionDidChange = true; } else if(currentX >= 11*8) { deltaX = -4*8; mapRegionX += 4; mapRegionDidChange = true; } if(currentY < 2*8) { deltaY = 4*8; mapRegionY -= 4; mapRegionDidChange = true; } else if(currentY >= 11*8) { deltaY = -4*8; mapRegionY += 4; mapRegionDidChange = true; } if(mapRegionDidChange/* && VirtualWorld.I(heightLevel, currentX, currentY, currentX + deltaX, currentY + deltaY, 0)*/) { currentX += deltaX; currentY += deltaY; for(int i = 0; i < walkingQueueSize; i++) { walkingQueueX[i] += deltaX; walkingQueueY[i] += deltaY; } } //CoordAssistant.processCoords(this); } } public int getNextWalkingDirection() { if(wQueueReadPtr == wQueueWritePtr) { return -1; } int dir; do { dir = Misc.direction(currentX, currentY, walkingQueueX[wQueueReadPtr], walkingQueueY[wQueueReadPtr]); if(dir == -1) { wQueueReadPtr = (wQueueReadPtr+1) % walkingQueueSize; } else if((dir&1) != 0) { println_debug("Invalid waypoint in walking queue!"); resetWalkingQueue(); return -1; } } while(dir == -1 && wQueueReadPtr != wQueueWritePtr); if(dir == -1) { return -1; } dir >>= 1; currentX += Misc.directionDeltaX[dir]; currentY += Misc.directionDeltaY[dir]; absX += Misc.directionDeltaX[dir]; absY += Misc.directionDeltaY[dir]; return dir; } public String getSpellName(final int id) { switch (id) { case 0: return "Air Strike"; case 1: return "Water Strike"; case 2: return "Earth Strike"; case 3: return "Fire Strike"; case 4: return "Air Bolt"; case 5: return "Water Bolt"; case 6: return "Earth Bolt"; case 7: return "Fire Bolt"; case 8: return "Air Blast"; case 9: return "Water Blast"; case 10: return "Earth Blast"; case 11: return "Fire Blast"; case 12: return "Air Wave"; case 13: return "Water Wave"; case 14: return "Earth Wave"; case 15: return "Fire Wave"; case 32: return "Shadow Rush"; case 33: return "Smoke Rush"; case 34: return "Blood Rush"; case 35: return "Ice Rush"; case 36: return "Shadow Burst"; case 37: return "Smoke Burst"; case 38: return "Blood Burst"; case 39: return "Ice Burst"; case 40: return "Shadow Blitz"; case 41: return "Smoke Blitz"; case 42: return "Blood Blitz"; case 43: return "Ice Blitz"; case 44: return "Shadow Barrage"; case 45: return "Smoke Barrage"; case 46: return "Blood Barrage"; case 47: return "Ice Barrage"; default: return "Select Spell"; } } public int getX() { return absX; } public int getY() { return absY; } public void gfx0(final int gfx) { mask100var1 = gfx; mask100var2 = 65536; mask100update = true; updateRequired = true; } public void gfx100(final int gfx) { mask100var1 = gfx; mask100var2 = 6553600; mask100update = true; updateRequired = true; } public boolean goodDistance(final int objectX, final int objectY, final int playerX, final int playerY, final int distance) { for (int i = 0; i <= distance; i++) { for (int j = 0; j <= distance; j++) { if (objectX + i == playerX && (objectY + j == playerY || objectY - j == playerY || objectY == playerY)) { return true; } else if (objectX - i == playerX && (objectY + j == playerY || objectY - j == playerY || objectY == playerY)) { return true; } else if (objectX == playerX && (objectY + j == playerY || objectY - j == playerY || objectY == playerY)) { return true; } } } return false; } public void handleHitMask(final int damage) { if (!hitUpdateRequired) { hitUpdateRequired = true; hitDiff = damage; } else if (!hitUpdateRequired2) { hitUpdateRequired2 = true; hitDiff2 = damage; } updateRequired = true; } public boolean inArea(final int x, final int y, final int x1, final int y1) { if (absX > x && absX < x1 && absY < y && absY > y1) { return true; } return false; } public boolean inBarrows() { if(absX > 3520 && absX < 3598 && absY > 9653 && absY < 9750) { return true; } return false; } public boolean inDuelArena() { if(absX > 3322 && absX < 3394 && absY > 3195 && absY < 3291 || absX > 3311 && absX < 3323 && absY > 3223 && absY < 3248) { return true; } return false; } public boolean inFightCaves() { return absX >= 2360 && absX <= 2445 && absY >= 5045 && absY <= 5125; } public abstract void initialize(); public boolean inMulti() { if(absX >= 3136 && absX <= 3327 && absY >= 3519 && absY <= 3607 || absX >= 3190 && absX <= 3327 && absY >= 3648 && absY <= 3839 || absX >= 3200 && absX <= 3390 && absY >= 3840 && absY <= 3967 || absX >= 2992 && absX <= 3007 && absY >= 3912 && absY <= 3967 || absX >= 2946 && absX <= 2959 && absY >= 3816 && absY <= 3831 || absX >= 3008 && absX <= 3199 && absY >= 3856 && absY <= 3903 || absX >= 3008 && absX <= 3071 && absY >= 3600 && absY <= 3711 || absX >= 3072 && absX <= 3327 && absY >= 3608 && absY <= 3647 || absX >= 2624 && absX <= 2690 && absY >= 2550 && absY <= 2619 || absX >= 2371 && absX <= 2422 && absY >= 5062 && absY <= 5117 || absX >= 2896 && absX <= 2927 && absY >= 3595 && absY <= 3630 || absX >= 2892 && absX <= 2932 && absY >= 4435 && absY <= 4464 || absX >= 2256 && absX <= 2287 && absY >= 4680 && absY <= 4711) { return true; } return false; } public boolean inPcBoat() { return absX >= 2660 && absX <= 2663 && absY >= 2638 && absY <= 2643; } public boolean inPcGame() { return absX >= 2624 && absX <= 2690 && absY >= 2550 && absY <= 2619; } public boolean inPirateHouse() { return absX >= 3038 && absX <= 3044 && absY >= 3949 && absY <= 3959; } public boolean inWild() { if(absX > 2941 && absX < 3392 && absY > 3518 && absY < 3966 || absX > 2941 && absX < 3392 && absY > 9918 && absY < 10366) { return true; } return false; } public boolean isAppearanceUpdateRequired() { return appearanceUpdateRequired; } public boolean isAutoButton(final int button) { for (int j = 0; j < autocastIds.length; j += 2) { if (autocastIds[j] == button) { return true; } } return false; } public boolean isChatTextUpdateRequired() { return chatTextUpdateRequired; } public boolean isHitUpdateRequired() { return hitUpdateRequired; } /** * SouthWest, NorthEast, SouthWest, NorthEast */ public boolean isInTut() { if(absX >= 2625 && absX <= 2687 && absY >= 4670 && absY <= 4735) { return true; } return false; } public boolean isNewWalkCmdIsRunning() { return newWalkCmdIsRunning; } public synchronized void postProcessing() { if(newWalkCmdSteps > 0) { final int firstX = getNewWalkCmdX()[0], firstY = getNewWalkCmdY()[0]; int lastDir = 0; boolean found = false; numTravelBackSteps = 0; int ptr = wQueueReadPtr; int dir = Misc.direction(currentX, currentY, firstX, firstY); if(dir != -1 && (dir&1) != 0) { do { lastDir = dir; if(--ptr < 0) { ptr = walkingQueueSize-1; } travelBackX[numTravelBackSteps] = walkingQueueX[ptr]; travelBackY[numTravelBackSteps++] = walkingQueueY[ptr]; dir = Misc.direction(walkingQueueX[ptr], walkingQueueY[ptr], firstX, firstY); if(lastDir != dir) { found = true; break; } } while(ptr != wQueueWritePtr); } else { found = true; } if(!found) { println_debug("Fatal: couldn't find connection vertex! Dropping packet."); } else { wQueueWritePtr = wQueueReadPtr; addToWalkingQueue(currentX, currentY); if(dir != -1 && (dir&1) != 0) { for(int i = 0; i < numTravelBackSteps-1; i++) { addToWalkingQueue(travelBackX[i], travelBackY[i]); } final int wayPointX2 = travelBackX[numTravelBackSteps-1], wayPointY2 = travelBackY[numTravelBackSteps-1]; int wayPointX1, wayPointY1; if(numTravelBackSteps == 1) { wayPointX1 = currentX; wayPointY1 = currentY; } else { wayPointX1 = travelBackX[numTravelBackSteps-2]; wayPointY1 = travelBackY[numTravelBackSteps-2]; } dir = Misc.direction(wayPointX1, wayPointY1, wayPointX2, wayPointY2); if(dir == -1 || (dir&1) != 0) { println_debug("Fatal: The walking queue is corrupt! wp1=("+wayPointX1+", "+wayPointY1+"), "+"wp2=("+wayPointX2+", "+wayPointY2+")"); } else { dir >>= 1; found = false; int x = wayPointX1, y = wayPointY1; while(x != wayPointX2 || y != wayPointY2) { x += Misc.directionDeltaX[dir]; y += Misc.directionDeltaY[dir]; if((Misc.direction(x, y, firstX, firstY)&1) == 0) { found = true; break; } } if(!found) { println_debug("Fatal: Internal error: unable to determine connection vertex!"+ " wp1=("+wayPointX1+", "+wayPointY1+"), wp2=("+wayPointX2+", "+wayPointY2+"), "+ "first=("+firstX+", "+firstY+")"); } else { addToWalkingQueue(wayPointX1, wayPointY1); } } } else { for(int i = 0; i < numTravelBackSteps; i++) { addToWalkingQueue(travelBackX[i], travelBackY[i]); } } for(int i = 0; i < newWalkCmdSteps; i++) { addToWalkingQueue(getNewWalkCmdX()[i], getNewWalkCmdY()[i]); } } isRunning = isNewWalkCmdIsRunning() || isRunning2; } } public void preProcessing() { newWalkCmdSteps = 0; } public void println(final String str) { System.out.println("[player-"+playerId+"]: "+str); } public void println_debug(final String str) { System.out.println("[player-"+playerId+"]: "+str); } public abstract void process(); public abstract boolean processQueuedPackets(); public void putInCombat(final int attacker) { underAttackBy = attacker; logoutDelay = System.currentTimeMillis(); singleCombatDelay = System.currentTimeMillis(); } public void resetWalkingQueue() { wQueueReadPtr = wQueueWritePtr = 0; for(int i = 0; i < walkingQueueSize; i++) { walkingQueueX[i] = currentX; walkingQueueY[i] = currentY; } } public boolean samePlayer() { for (int j = 0; j < PlayerHandler.players.length; j++) { if (j == playerId) { continue; } if (PlayerHandler.players[j] != null) { if (PlayerHandler.players[j].playerName.equalsIgnoreCase(playerName)) { disconnected = true; return true; } } } return false; } public void setAppearanceUpdateRequired(final boolean appearanceUpdateRequired) { this.appearanceUpdateRequired = appearanceUpdateRequired; } public void setChatText(final byte chatText[]) { this.chatText = chatText; } public void setChatTextColor(final int chatTextColor) { this.chatTextColor = chatTextColor; } public void setChatTextEffects(final int chatTextEffects) { this.chatTextEffects = chatTextEffects; } public void setChatTextSize(final byte chatTextSize) { this.chatTextSize = chatTextSize; } public void setChatTextUpdateRequired(final boolean chatTextUpdateRequired) { this.chatTextUpdateRequired = chatTextUpdateRequired; } public void setHitDiff(final int hitDiff) { this.hitDiff = hitDiff; } public void setHitDiff2(final int hitDiff2) { this.hitDiff2 = hitDiff2; } public void setHitUpdateRequired(final boolean hitUpdateRequired) { this.hitUpdateRequired = hitUpdateRequired; } public void setHitUpdateRequired2(final boolean hitUpdateRequired2) { this.hitUpdateRequired2 = hitUpdateRequired2; } public void setInStreamDecryption(final ISAACRandomGen inStreamDecryption) { } public void setNewWalkCmdIsRunning(final boolean newWalkCmdIsRunning) { this.newWalkCmdIsRunning = newWalkCmdIsRunning; } public void setNewWalkCmdX(final int newWalkCmdX[]) { this.newWalkCmdX = newWalkCmdX; } public void setNewWalkCmdY(final int newWalkCmdY[]) { this.newWalkCmdY = newWalkCmdY; } public void setOutStreamDecryption(final ISAACRandomGen outStreamDecryption) { } /** *Animations **/ public void startAnimation(final int animId) { if (wearing2h() && animId == 829) { return; } animationRequest = animId; animationWaitCycles = 0; updateRequired = true; } public void startAnimation(final int animId, final int time) { animationRequest = animId; animationWaitCycles = time; updateRequired = true; } public void stopMovement() { if(teleportToX <= 0 && teleportToY <= 0) { teleportToX = absX; teleportToY = absY; } newWalkCmdSteps = 0; getNewWalkCmdX()[0] = getNewWalkCmdY()[0] = travelBackX[0] = travelBackY[0] = 0; getNextPlayerMovement(); } public void turnPlayerTo(final int pointX, final int pointY){ FocusPointX = 2*pointX+1; FocusPointY = 2*pointY+1; updateRequired = true; } public abstract void update(); public void updatePlayerMovement(final Stream str) { synchronized(this) { if(dir1 == -1) { if(updateRequired || isChatTextUpdateRequired()) { str.writeBits(1, 1); str.writeBits(2, 0); } else { str.writeBits(1, 0); } } else if(dir2 == -1) { str.writeBits(1, 1); str.writeBits(2, 1); str.writeBits(3, Misc.xlateDirectionToClient[dir1]); str.writeBits(1, updateRequired || isChatTextUpdateRequired() ? 1: 0); } else { str.writeBits(1, 1); str.writeBits(2, 2); str.writeBits(3, Misc.xlateDirectionToClient[dir1]); str.writeBits(3, Misc.xlateDirectionToClient[dir2]); str.writeBits(1, updateRequired || isChatTextUpdateRequired() ? 1: 0); } } } public void updateshop(final int i){ final Client p = (Client) PlayerHandler.players[playerId]; p.getShops().resetShop(i); } public void updateThisPlayerMovement(final Stream str) { synchronized(this) { if(mapRegionDidChange) { str.createFrame(73); str.writeWordA(mapRegionX+6); str.writeWord(mapRegionY+6); } if(didTeleport) { str.createFrameVarSizeWord(81); str.initBitAccess(); str.writeBits(1, 1); str.writeBits(2, 3); str.writeBits(2, Player.heightLevel); str.writeBits(1, 1); str.writeBits(1, updateRequired ? 1 : 0); str.writeBits(7, currentY); str.writeBits(7, currentX); return ; } if(dir1 == -1) { // don't have to update the character position, because we're just standing str.createFrameVarSizeWord(81); str.initBitAccess(); isMoving = false; if(updateRequired) { // tell client there's an update block appended at the end str.writeBits(1, 1); str.writeBits(2, 0); } else { str.writeBits(1, 0); } if (DirectionCount < 50) { DirectionCount++; } } else { DirectionCount = 0; str.createFrameVarSizeWord(81); str.initBitAccess(); str.writeBits(1, 1); if(dir2 == -1) { isMoving = true; str.writeBits(2, 1); str.writeBits(3, Misc.xlateDirectionToClient[dir1]); if(updateRequired) { str.writeBits(1, 1); } else { str.writeBits(1, 0); } } else { isMoving = true; str.writeBits(2, 2); str.writeBits(3, Misc.xlateDirectionToClient[dir1]); str.writeBits(3, Misc.xlateDirectionToClient[dir2]); if(updateRequired) { str.writeBits(1, 1); } else { str.writeBits(1, 0); } } } } } public boolean wearing2h() { final Client c = (Client)this; final String s = c.getItems().getItemName(c.playerEquipment[c.playerWeapon]); if (s.contains("2h")) { return true; } else if (s.contains("godsword")) { return true; } return false; } public boolean withinDistance(final NPC npc) { if (Player.heightLevel != npc.heightLevel) { return false; } if (npc.needRespawn == true) { return false; } final int deltaX = npc.absX-absX, deltaY = npc.absY-absY; return deltaX <= 15 && deltaX >= -16 && deltaY <= 15 && deltaY >= -16; } public boolean withinDistance(final Player otherPlr) { if(Player.heightLevel != Player.heightLevel) { return false; } final int deltaX = otherPlr.absX-absX, deltaY = otherPlr.absY-absY; return deltaX <= 15 && deltaX >= -16 && deltaY <= 15 && deltaY >= -16; } } [/CODE] Im too new at this to know what to fix so the level shows correctly, so any help with some explanation would be appreciated!
  3. title says it all. boosts on players but not on npcs. the code is [CODE]public void increaseTurmoilBonus(Player p2) { leechBonuses[8] = (int) ((100 * Math.floor(0.15 * p2.getSkills() .getLevelForXp(Skills.ATTACK))) / p2.getSkills().getLevelForXp( Skills.ATTACK)); leechBonuses[9] = (int) ((100 * Math.floor(0.15 * p2.getSkills() .getLevelForXp(Skills.DEFENCE))) / p2.getSkills() .getLevelForXp(Skills.DEFENCE)); leechBonuses[10] = (int) ((100 * Math.floor(0.1 * p2.getSkills() .getLevelForXp(Skills.STRENGTH))) / p2.getSkills() .getLevelForXp(Skills.STRENGTH)); adjustStat(0, leechBonuses[8]); adjustStat(1, leechBonuses[10]); adjustStat(2, leechBonuses[9]); } [/CODE]
  4. [CODE]#Nex 5248:35 995:1000000 560:10 9185:1 9185:1 555:150 565:150 805:20 830:20 1079:1 1303:1 1373:1 4131:1 1213:1 1147:1 1113:1 13362:1 1359:1 892:150 1185:1 1249:1 1616:2 50:20 560:199 555:150 565:150 805:20 830:20 1079:1 1303:1 1373:1 4131:1 1213:1 1147:1 1113:1 560:250 1359:1 892:150 1185:1 1249:1 1616:2 1149:1 1187:1 2366:1 4585:1 2366:1 892:999 2366:1 2366:1 15241:1 1149:1 1187:1 2366:1 4585:1 2366:1 11335:1 2366:1 2366:1 562:100 [/CODE] my nex is dropping all nex armours, Torva,PErnix,And Virtus. I don't see those codes in the drop though? Please help.
  5. Hello i have downloaded NRS3Server v4 and i have portdfowarded correctly and i can connect on 127.0.0.1, and 0.0.0.0 but when i try to connect on my NO-IP ip it dosent let me connect. I know i have portfowaded correctly because i have done it before and it worked. -thanks
  6. well i changed my barrows minigame from the killcount then click chest to where they are just spawned ontop of the hills and u kill for drops, but it wont drop anything but charms, does anyone know what might be causing this? NPCDrops.TSM [CODE]#dharok 2026:55 995:15000 12158:1 12159:1 12160:1 12163:1 995:15000 4716:1 4718:1 4720:1 4722:1 #guthan 2027:55 995:15000 12158:1 12159:1 12160:1 12163:1 995:15000 4724:1 4726:1 4728:1 4730:1 #verac 2030:55 995:15000 12158:1 12159:1 12160:1 12163:1 995:15000 4716:1 4718:1 4720:1 4722:1 #karil 2028:55 995:15000 12158:1 12159:1 12160:1 12163:1 995:15000 4732:1 4734:1 4736:1 4738:1 #ahrim 2025:55 995:15000 12158:1 12159:1 12160:1 12163:1 995:15000 4708:1 4710:1 4712:1 4714:1 #torag 2029:55 995:15000 12158:1 12159:1 12160:1 12163:1 995:15000 4745:1 4747:1 4749:1 4751:1[/CODE] spawn-config.cfg [CODE]spawn = 2026 3576 3300 0 0 35 100 150 dharok spawn = 2026 3574 3299 0 0 35 100 150 dharok spawn = 2026 3575 3297 0 0 35 100 150 dharok spawn = 2026 3577 3297 0 0 35 100 150 dharok spawn = 2026 3578 3299 0 0 35 100 150 dharok spawn = 2027 3577 3285 0 0 35 100 150 guthan spawn = 2027 3579 3283 0 0 35 100 150 guthan spawn = 2027 3578 3281 0 0 35 100 150 guthan spawn = 2027 3576 3281 0 0 35 100 150 guthan spawn = 2027 3575 3283 0 0 35 100 150 guthan spawn = 2028 3566 3278 0 0 35 100 150 karil spawn = 2028 3567 3277 0 0 35 100 150 karil spawn = 2028 3565 3274 0 0 35 100 150 karil spawn = 2028 3564 3275 0 0 35 100 150 karil spawn = 2028 3563 3277 0 0 35 100 150 karil spawn = 2025 3563 3289 0 0 35 100 150 ahrim spawn = 2025 3565 3287 0 0 35 100 150 ahrim spawn = 2025 3567 3289 0 0 35 100 150 ahrim spawn = 2025 3567 3291 0 0 35 100 150 ahrim spawn = 2025 3564 3292 0 0 35 100 150 ahrim spawn = 2029 3555 3281 0 0 35 100 150 torag spawn = 2029 3552 3281 0 0 35 100 150 torag spawn = 2029 3552 3283 0 0 35 100 150 torag spawn = 2029 3553 3285 0 0 35 100 150 torag spawn = 2029 3555 3284 0 0 35 100 150 torag spawn = 2030 3556 3295 0 0 35 100 150 verac spawn = 2030 3558 3297 0 0 35 100 150 verac spawn = 2030 3557 3299 0 0 35 100 150 verac spawn = 2030 3555 3299 0 0 35 100 150 verac spawn = 2030 3555 3297 0 0 35 100 150 verac[/CODE]
  7. I am not sure which cache to use as the base to pack new info into. I have tried packing new data in my 729 cache (730+ RS Cache packing into a 729 cache) and it works on packing but when trying to start server or dump the lists such as item npc and object lists it says something invalid like an NPC or so. So I was wondering should i use the first 667 cache to pack the new cache into or what?
  8. When i start my server, everything works perfectly. But when i edit the cfg files (While the server is offline ofcourse) It does not update, everything i edit just stays the same in-game while it says differently in the cfg files. Do i have to compile the cfg files or something ? Any help would be appreciated !
  9. Alright, so I jarred, and signed my client, but it always happens like this. It works fine for me, and a few other people, and now all of a sudden there are a large amount of Errors. If somene could make me a good client, that would be great :) Please and thanks, I can transfer the client however.
  10. [code] if(command[0].equals("open")) {//iron set if(!player.getInventory().contains(11818)) { return; } if(player.getInventory().contains(11818)) { player.getInventory().deleteItem(11818, 1); player.getInventory().addItem(1153, 1); player.getInventory().addItem(1115, 1); player.getInventory().addItem(1067, 1); player.getInventory().addItem(1191, 1); }[/code]
  11. I downloaded eclipse today, and I'm having trouble. I can access eclipse, but I don't know where my saved files go. I want the eclipse shortcut on my desktop, and when I open it, I want all my saved files there, but whenever I extract to desktop, it just makes a beep noise, and nothing interesting happens. I'm using windows 7 64 bit operating system.
  12. Well first what do i Change the Run.bat's in the client to because some people cannot run it because they dont have jre7 or whatever. Thats about it
  13. Misspelled Compiler soz So ive been coding for a few months on my server and i never coded the client. So yea im gona try to change some sprites so i i tried to fix my compiler since it didnt have the right jdk so i copy pasted the text i had in my source's compiler. I got this: ------------------------------------------ javac: file not found: src\server\event Usage: javac <options> <source files> use -help for a list of possible option Press any key to continue . . . ------------------------------------------ Thanks
×