public void execute(Player player, string[] arguments) { player.getPackets().sendMessage("Spawning all possible objects please wait.."); for (int i = 0; i < 50000; i++) player.getPackets().createObject(i, player.getLocation(), 0, 10); player.getPackets().sendMessage("Dumping complete, now add dump to server."); }
public void execute(Player player, string[] arguments) { if (arguments.Length == 0) { player.getPackets().sendMessage("[Switch magic command]: ::switch type (example ::switch 1)"); return; } int type = 0; if (!int.TryParse(arguments[0], out type)) { player.getPackets().sendMessage("[Switch magic command]: ::switch type (example ::switch 1)"); return; } switch (type) { case 3: player.setMagicType(3); player.getPackets().sendTab(player.isHd() ? 99 : 89, 430); break; case 2: player.setMagicType(2); player.getPackets().sendTab(player.isHd() ? 99 : 89, 193); break; case 1: player.setMagicType(1); player.getPackets().sendTab(player.isHd() ? 99 : 89, 192); break; } }
public void execute(Player player, string[] arguments) { //TODO: Possible TODO. //I guess this command is for testing where object should be placed to spawnedObjects.cfg / objectLocations.cfg? //Err I don't like this command too much as the objects spawned are fake.. //gotta maybe add to WorldObjects, like SpawnNPC :S later. if (arguments.Length < 2) { player.getPackets().sendMessage("[SpawnObject command]: ::obj objectId face"); return; } int objectId = 0; int face = 0; if (!int.TryParse(arguments[0], out objectId)) { player.getPackets().sendMessage("[SpawnObject command]: objectId is not a number ::obj objectId face"); return; } if (!int.TryParse(arguments[1], out face)) { player.getPackets().sendMessage("[SpawnObject command]: face is not a number ::obj objectId face"); return; } foreach (Player p in Server.getPlayerList()) { p.getPackets().createObject(objectId, player.getLocation(), face, 10); } }
public static void displayItemsInterface(Player p) { int amountToKeep = p.isSkulled() ? 0 : 3; if (p.getPrayers().isProtectItem()) { amountToKeep = p.isSkulled() ? 1 : 4; } int item1 = getProtectedItem1(p)[0]; int item2 = getProtectedItem2(p)[0]; int item3 = getProtectedItem3(p)[0]; int item4 = amountToKeep == 4 ? getProtectedItem4(p)[0] : -1; if (amountToKeep == 1) { item2 = 65535; item3 = 65535; item3 = item1; } if (amountToKeep == 0) { item1 = 65535; item2 = 65535; item3 = 65535; item4 = 65535; } object[] opts = new object[] { 17598720, 20221838, "You're marked with a <col=ff3333>skull<col=ff981f>.", 0, 1, item4, item1, item2, item3, /* Items to keep */ amountToKeep /* Items to keep */, 0 }; p.getPackets().displayInterface(102); p.getPackets().sendClientScript2(204, 118, opts, "iiooooiisii"); p.getPackets().setRightClickOptions(1278, (102 * 65536) + 21, 0, 40); p.getPackets().setRightClickOptions(1278, (102 * 65536) + 18, 0, 4); }
public static void displayWildernessLeverOptions(Player p, int leverIndex) { int dialogueIndex = 140 + leverIndex; p.setTemporaryAttribute("dialogue", dialogueIndex); string option1 = leverIndex == 0 ? "Edgeville" : "Home"; p.getPackets().modifyText(option1, 230, 2); p.getPackets().modifyText("Mage bank", 230, 3); p.getPackets().modifyText("Nowhere", 230, 4); p.getPackets().sendChatboxInterface2(230); }
public void execute(Player player, string[] arguments) { if (arguments.Length == 0) { player.getPackets().sendMessage("[Reload Ladders & Stairs XML File]: This command is only for server developers."); player.getPackets().sendMessage("Reloading... [Could crash server if populated, as all ladders get erased]"); LaddersAndStairs.load(); player.getPackets().sendMessage("Reloaded."); } }
public void displayFightPitsInterface(Player p) { if (p.getTemporaryAttribute("cantDoAnything") != null) { return; } p.getPackets().sendConfig(560, playersPlaying.Count - 1); p.getPackets().modifyText("Current champion: " + getLastWinnerName(), 373, 0); p.getPackets().sendOverlay(373); }
public static void openInterface(Player p) { p.getPackets().displayInterface(771); p.getPackets().sendPlayerHead(771, 79); p.getPackets().animateInterface(9804, 771, 79); p.getPackets().sendConfig(1262, p.getAppearance().getGender() == 2 ? 1 : 8); p.getAppearance().setTemporaryAppearance(new Appearance()); p.getAppearance().getTemporaryAppearance().setColoursArray(p.getAppearance().getColoursArray()); p.getAppearance().getTemporaryAppearance().setLookArray(p.getAppearance().getLookArray()); p.getAppearance().getTemporaryAppearance().setGender(p.getAppearance().getGender()); p.removeTemporaryAttribute("hairToggle"); }
private void handleExamineObject(Player player, Packet packet) { ushort id = (ushort)packet.readLEShortA(); if (player.getTemporaryAttribute("unmovable") != null) { return; } SkillHandler.resetAllSkills(player); player.getPackets().closeInterfaces(); player.getPackets().sendMessage("[Id: " + id + "] " + ObjectData.forId(id).getExamine()); }
public void refreshDoorsForPlayer(Player p) { foreach (Door door in doors) { if (door.getDoorLocation().withinDistance(p.getLocation(), 60)) { int id = door.isDoorOpen() ? door.getOpenDoorId() : door.getClosedDoorId(); Location loc = door.isDoorOpen() ? door.getOpenDoorLocation() : door.getClosedDoorLocation(); int direction = door.isDoorOpen() ? door.getOpenDirection() : door.getClosedDirection(); Location loc1 = door.isDoorOpen() ? door.getClosedDoorLocation() : door.getOpenDoorLocation(); int direction1 = door.isDoorOpen() ? door.getClosedDirection() : door.getOpenDirection(); p.getPackets().removeObject(loc1, direction1, 0); p.getPackets().createObject(id, loc, direction, 0); } } }
public static bool dialogue(Player p, Npc npc, bool rightClickPay) { if ((npc.getId() != 1055 && npc.getId() != 437) || (rightClickPay && npc.getId() != 437)) { return false; } p.setEntityFocus(npc.getClientIndex()); AreaEvent dialogueAreaEvent = new AreaEvent(p, npc.getLocation().getX() - 1, npc.getLocation().getY() - 1, npc.getLocation().getX() + 1, npc.getLocation().getY() + 1); dialogueAreaEvent.setAction(() => { npc.setFaceLocation(p.getLocation()); int status = npc.getId() == 1055 ? 43 : 1; if (rightClickPay) { if (!p.getInventory().hasItemAmount(995, AGILITY_ARENA_PRICE)) { p.getPackets().sendMessage("You don't have enough money to pay the entrance fee."); return; } status = 29; } doDialogue(p, status); }); Server.registerCoordinateEvent(dialogueAreaEvent); return true; }
public void execute(Player player, string[] arguments) { if (arguments.Length == 0) { player.getPackets().sendMessage("[Animation command]: ::t emote_number"); return; } int animation = 0; if (!int.TryParse(arguments[0], out animation)) { player.getPackets().sendMessage("[Animation command]: ::emote emote_number"); return; } //1179 flash + skill icon , 1230 = make box player.getPackets().playSoundEffect(animation, 1, 0); }
private void handleScreenSettings(Player player, Packet packet) { int windowType = packet.readByte() & 0xff; int windowWidth = packet.readUShort(); int windowHeight = packet.readUShort(); int junk = packet.readByte() & 0xff; player.getPackets().configureGameScreen(windowType); }
public void execute(Player player, string[] arguments) { if (arguments.Length == 0) { player.getPackets().sendMessage("[Animation command]: ::emote emote_number"); return; } int animation = 0; if (!int.TryParse(arguments[0], out animation)) { player.getPackets().sendMessage("[Animation command]: ::emote emote_number"); return; } player.setLastAnimation(new model.Animation(animation)); }
private void handleExamineNPC(Player player, Packet packet) { int npcId = packet.readUShort(); if (npcId < 0 || npcId > NpcData.getTotalNpcDefinitions() || player.isDead() || player.getTemporaryAttribute("cantDoAnything") != null) return; player.getPackets().sendMessage(NpcData.forId(npcId).getExamine()); }
public void execute(Player player, string[] arguments) { if (arguments.Length == 0) { player.getPackets().sendMessage("[Height command]: ::height 0 [0,1,2,3] are possible"); return; } int heightLevel = 0; if (!int.TryParse(arguments[0], out heightLevel)) { player.getPackets().sendMessage("[Height command]: ::height 0 [0,1,2,3] are possible"); return; } player.teleport(new Location(player.getLocation().getX(), player.getLocation().getY(), heightLevel)); }
public void execute(Player player, string[] arguments) { if (arguments.Length == 0) { player.getPackets().sendMessage("[Interface command]: ::inter interface_number"); return; } int intreface = 0; if (!int.TryParse(arguments[0], out intreface)) { player.getPackets().sendMessage("[Interface command]: ::inter interface_number"); return; } player.getPackets().displayInterface(intreface); }
public void execute(Player player, string[] arguments) { if (!Server.isUpdateInProgress()) { //could of hardcoded the Event right inside this command :S player.getPackets().sendMessage("Started a system update, this cannot be stopped!"); Server.registerEvent(new SystemUpdateEvent()); Server.setUpdateInProgress(true); } }
public void execute(Player player, string[] arguments) { if (arguments.Length == 0) { player.getPackets().sendMessage("[PlayerAsNpc command]: ::pnpc npcId"); return; } int npcId = 0; if (!int.TryParse(arguments[0], out npcId)) { player.getPackets().sendMessage("[PlayerAsNpc command]: ::pnpc npcId [npcId is not a number error]"); return; } player.getAppearance().setNpcId(npcId); player.getUpdateFlags().setAppearanceUpdateRequired(true); }
public void execute(Player player, string[] arguments) { if (arguments.Length < 2) { player.getPackets().sendMessage("[Config command]: ::config id value (example ::config 1 1)"); return; } int id = 0; int value = 0; if (!int.TryParse(arguments[0], out id) && !int.TryParse(arguments[1], out value)) { player.getPackets().sendMessage("[Config command]: ::config id value (example ::config 1 1)"); return; } player.getPackets().sendConfig(id, value); }
public void execute(Player player, string[] arguments) { if (arguments.Length < 2) { player.getPackets().sendMessage("[Teleport command]: ::tele x y or even ::tele x y z"); return; } int x, y, z = 0; if (!int.TryParse(arguments[0], out x) || !int.TryParse(arguments[1], out y)) { player.getPackets().sendMessage("Bad x,y coordinate, teleporting home, You entered:[x=" + arguments[0] + ", y=" + arguments[1] + "]"); player.teleport(Constants.HOME_SPAWN_LOCATION); return; } if (arguments.Length >= 3) int.TryParse(arguments[2], out z); player.teleport(new Location(x, y, z)); }
public void execute(Player player, string[] arguments) { foreach (Skills.SKILL skill in Enum.GetValues(typeof(Skills.SKILL))) { player.getSkills().setCurLevel(skill, 99); player.getSkills().setXp(skill, Skills.getXpForLevel(99)); } player.getPackets().sendSkillLevels(); player.getUpdateFlags().setAppearanceUpdateRequired(true); }
public void execute(Player player, string[] arguments) { if (arguments.Length == 0) { player.getPackets().sendMessage("[SpawnNpc command]: ::npc npc_id"); return; } int npcId = 0; if (!int.TryParse(arguments[0], out npcId)) { player.getPackets().sendMessage("[SpawnNpc command]: ::npc npc_id"); return; } Npc npc = new Npc(npcId, player.getLocation()); npc.setMinimumCoords(new Location(player.getLocation().getX() - 5, player.getLocation().getY() - 5, player.getLocation().getZ())); npc.setMaximumCoords(new Location(player.getLocation().getX() + 5, player.getLocation().getY() + 5, player.getLocation().getZ())); Server.getNpcList().Add(npc); }
public void execute(Player player, string[] arguments) { if (arguments.Length > 0) { int shopIndex = 0; if (!int.TryParse(arguments[0], out shopIndex)) { player.getPackets().sendMessage("[OpenShop command]: ::shop shop_number or just ::shop to open first one."); return; } Shop shop = Server.getShopManager().getShop(shopIndex); if (shop == null) { player.getPackets().sendMessage("[OpenShop command]: shop #" + shopIndex + " doesn't exist on server"); return; } player.setShopSession(new ShopSession(player, shopIndex)); } player.setShopSession(new ShopSession(player, 1)); }
public static void antiTeleportMessage(Player p) { p.getPackets().sendNPCHead(2617, 242, 1); p.getPackets().modifyText("TzHaar-Mej-Jal", 242, 3); p.getPackets().modifyText("I cannot allow you to teleport from the fight cave.", 242, 4); p.getPackets().modifyText("In Tzhaar, you either win, or die!", 242, 5); p.getPackets().animateInterface(9827, 242, 1); p.getPackets().sendChatboxInterface2(242); p.getPackets().sendMessage("You are unable to teleport from the fight cave."); }
public bool addToStack(int id, int amount, Location location, Player p) { if (!ItemData.forId(id).isStackable()) { return false; } foreach (GroundItem i in items) { if (i.getLocation().Equals(location) && i.getItemId() == id) { if (!i.isGlobal() && i.getOwner().Equals(p)) { i.setItemAmount(i.getItemAmount() + amount); p.getPackets().clearGroundItem(i); p.getPackets().createGroundItem(i); return true; } } } return false; }
public void execute(Player player, string[] arguments) { if (arguments.Length == 0) { player.getPackets().sendMessage("[Info command]: ::info npcId (example ::info 1)"); return; } int npcId = 0; if (!int.TryParse(arguments[0], out npcId)) { player.getPackets().sendMessage("[Info command]: ::info npcId (example ::info 1)"); return; } if (npcId < 0 || npcId > NpcData.getTotalNpcDefinitions()) return; player.getPackets().sendMessage("ATT = " + (int)CombatFormula.getMeleeAttack(player) + " DEF = " + (int)CombatFormula.getMeleeDefence(player, player) + " SPEC = " + (int)CombatFormula.getMeleeAttack(player) * CombatFormula.getSpecialAttackBonus(player.getEquipment().getItemInSlot(ItemData.EQUIP.WEAPON))); player.getPackets().sendMessage("NPC ATT = " + (int)CombatFormula.getNPCMeleeAttack(new Npc(npcId)) + " NPC DEF = " + (int)CombatFormula.getNPCMeleeDefence(new Npc(npcId))); }
public static void enterCave(Player p) { AreaEvent enterCaveAreaEvent = new AreaEvent(p, 2438, 5168, 2439, 5168); enterCaveAreaEvent.setAction(() => { /* * Fight cave is 20k squares from the original place, then another (200 * playerIndex) squares west. */ Location instanceLocation = new Location((20000 + 2413) + (200 * p.getIndex()), 20000 + 5116, 0); p.teleport(instanceLocation); p.setFightCave(new FightCaveSession(p)); Event caveNpcEvent = new Event(600); caveNpcEvent.setAction(() => { caveNpcEvent.stop(); p.getPackets().sendNPCHead(2617, 242, 1); p.getPackets().modifyText("TzHaar-Mej-Jal", 242, 3); p.getPackets().modifyText("You're on your own now, JalYt.", 242, 4); p.getPackets().modifyText("Pepare to fight for your life!", 242, 5); p.getPackets().animateInterface(9827, 242, 1); p.getPackets().sendChatboxInterface2(242); }); Server.registerEvent(caveNpcEvent); }); Server.registerCoordinateEvent(enterCaveAreaEvent); }
public void execute(Player player, string[] arguments) { if (arguments.Length < 2) { player.getPackets().sendMessage("[SetLevel command]: ::setLevel skillId level or ::setLevel skillName level"); return; } int skillId = -1; int newLevel = 1; if (!int.TryParse(arguments[1], out newLevel)) { player.getPackets().sendMessage("[SetLevel command]: ::setLevel skillId level or ::setLevel skillName level"); return; } if (newLevel > 99) newLevel = 99; if (!int.TryParse(arguments[0], out skillId)) { //string based skills arguments[0] = arguments[0].ToUpper(); if (!Enum.IsDefined(typeof(Skills.SKILL), arguments[0])) { player.getPackets().sendMessage("[SetLevel command]: wrong.. try like ::setlevel attack 99 or ::setlevel 0 99"); return; } try { Skills.SKILL skillName = (Skills.SKILL)Enum.Parse(typeof(Skills.SKILL), arguments[0], true); player.getSkills().setXp(skillName, 0); player.getSkills().setCurLevel(skillName, newLevel); player.getSkills().addXp(skillName, Skills.getXpForLevel(newLevel)); player.getPackets().sendSkillLevel(skillName); } catch (ArgumentException) { player.getPackets().sendMessage("[SetLevel command]: wrong.. try like ::setlevel attack 99 or ::setlevel 0 99"); } } else { if (!Enum.IsDefined(typeof(Skills.SKILL), skillId)) { player.getPackets().sendMessage("[SetLevel command]: wrong.. try like ::setlevel attack 99 or ::setlevel 0 99"); return; } Skills.SKILL skillName = (Skills.SKILL)skillId; player.getSkills().setXp(skillName, 0); player.getSkills().setCurLevel(skillName, newLevel); player.getSkills().addXp(skillName, Skills.getXpForLevel(newLevel)); player.getPackets().sendSkillLevel(skillName); } }
public GESession(Player p) { this.p = p; //Load offers. GEItem load; for (int i = 0; i < 6; i++) { load = Server.getGrandExchange().getOfferForSlot(p, i); if (load != null) p.getPackets().updateGEProgress(load); } openExchange(); }
public GESession(Player p) { this.p = p; //Load offers. GEItem load; for (int i = 0; i < 6; i++) { load = Server.getGrandExchange().getOfferForSlot(p, i); if (load != null) { p.getPackets().updateGEProgress(load); } } openExchange(); }
public static void levelUp(Player player, SKILL skill) { int skillIndex = Convert.ToInt32(skill); String s = "<br><br><br>"; String s1 = "<br><br><br><br>"; if (player.getTemporaryAttribute("teleporting") == null) { player.setLastGraphics(new Graphics(199, 0, 100)); } int skillFlashFlags = (int)(player.getTemporaryAttribute("skillFlashFlags") == null ? 0 : (int)player.getTemporaryAttribute("skillFlashFlags")); skillFlashFlags |= SKILL_FLASH_BITMASKS[skillIndex]; player.setTemporaryAttribute("skillFlashFlags", skillFlashFlags); player.getPackets().sendMessage("You've just advanced a " + SKILL_NAME[skillIndex] + " level! You have reached level " + player.getSkills().getMaxLevel(skillIndex) + "."); player.getPackets().modifyText(s + "Congratulations, you have just advanced a " + SKILL_NAME[skillIndex] + " level!", 740, 0); player.getPackets().modifyText(s1 + "You have now reached level " + player.getSkills().getMaxLevel(skillIndex) + ".", 740, 1); player.getPackets().modifyText("", 740, 2); player.getPackets().sendConfig(1179, SKILL_ICON_BITMASKS[skillIndex] | skillFlashFlags); //start flashing appropriate skill icons player.getPackets().sendChatboxInterface2(740); player.getUpdateFlags().setAppearanceUpdateRequired(true); }
public void getNextPlayerMovement() { //Does a walking action such as new player movement direction (if any) or new coordinates when teleporting. player.getUpdateFlags().setDidMapRegionChange(false); player.getUpdateFlags().setTeleporting(false); player.getSprites().setSprites(-1, -1); if (player.getTeleportTo() != null) { player.getUpdateFlags().setDidMapRegionChange(true); Location lastRegion = player.getUpdateFlags().getLastRegion(); if (lastRegion != null) { int rX = player.getTeleportTo().getLocalX(lastRegion); int rY = player.getTeleportTo().getLocalY(lastRegion); if (rX >= 2 * 8 && rX < 11 * 8 && rY >= 2 * 8 && rY < 11 * 8) { player.getUpdateFlags().setDidMapRegionChange(false); } } if (player.getUpdateFlags().didMapRegionChange()) { player.getUpdateFlags().setLastRegion(player.getTeleportTo()); } player.setLocation(player.getTeleportTo()); player.setDistanceEvent(null); resetWalkingQueue(); player.getUpdateFlags().setTeleporting(true); player.resetTeleportTo(); } else { if (player.getUpdateFlags().getLastRegion() == null) { return; } Location oldLocation = (Location)player.getLocation().Clone(); int walkDir = getNextWalkingDirection(); int runDir = -1; if (running || runToggled) { if (player.getRunEnergy() > 0) { runDir = getNextWalkingDirection(); if (runDir != -1) { player.setRunEnergy(player.getRunEnergy() - 1); } } else { if (runToggled) { player.getPackets().sendConfig(173, 0); runToggled = running = false; } running = false; } } Location lastRegion = player.getUpdateFlags().getLastRegion(); int rX = oldLocation.getLocalX(lastRegion); int rY = oldLocation.getLocalY(lastRegion); if ((rX < 2 * 8 || rX >= 11 * 8 || rY < 2 * 8 || rY >= 11 * 8)) { player.getUpdateFlags().setDidMapRegionChange(true); if (walkDir != -1) { waypointReadOffset--; } if (runDir != -1) { waypointReadOffset--; } walkDir = -1; runDir = -1; player.setLocation(oldLocation); } player.getSprites().setSprites(walkDir, runDir); } }
public void openBank() { player.getWalkingQueue().resetWalkingQueue(); player.getPackets().clearMapFlag(); //int items = 20 * 1024^0 + 3 * 1024^1 + 4 * 1024^2; // Used with config2 1246 if (!banking) { if (!pinCorrect && bankPin != null) { if (isPinPending()) { verifyPin(false); return; } if (!isPinPending()) { pinStatus = 0; tempPin1 = new int[4]; openEnterPin(); return; } } player.getPackets().sendConfig(563, 4194304); player.getPackets().sendConfig(1248, -2013265920); player.getPackets().sendConfig(1249, lastXAmount); player.getPackets().sendBankOptions(); refreshBank(); player.getPackets().displayInventoryInterface(763); player.getPackets().displayInterface(762); player.getPackets().showChildInterface(762, 18, false); player.getPackets().showChildInterface(762, 19, false); player.getPackets().showChildInterface(762, 23, false); //setTabConfig(); banking = true; } }
public bool tradeItem(int slot, int amount) { int itemId = player.getInventory().getItemInSlot(slot); bool stackable = ItemData.forId(itemId).isStackable(); int tradeSlot = findItem(itemId); if (amount <= 0 || itemId == -1 || status > 2) { return(false); } if (ItemData.forId(itemId).isPlayerBound()) { player.getPackets().sendMessage("You cannot trade that item."); return(false); } if (!stackable) { tradeSlot = findFreeSlot(); if (tradeSlot == -1) { player.getPackets().sendMessage("An error occured whilst trying to find free a trade slot."); return(false); } if (amount > player.getInventory().getItemAmount(itemId)) { amount = player.getInventory().getItemAmount(itemId); } for (int i = 0; i < amount; i++) { tradeSlot = findFreeSlot(); if (!player.getInventory().deleteItem(itemId) || tradeSlot == -1) { break; } items[tradeSlot] = new Item(itemId, 1); } if (status == 2 || player2.getTrade().getStatus() == 2) { this.status = 1; player2.getTrade().setStatus(1); player.getPackets().modifyText("", 335, 36); player2.getPackets().modifyText("", 335, 36); } refreshTrade(); return(true); } else if (stackable) { tradeSlot = findItem(itemId); if (tradeSlot == -1) { tradeSlot = findFreeSlot(); if (tradeSlot == -1) { player.getPackets().sendMessage("An error occured whilst trying to find free a trade slot."); return(false); } } if (amount > player.getInventory().getAmountInSlot(slot)) { amount = player.getInventory().getAmountInSlot(slot); } if (player.getInventory().deleteItem(itemId, amount)) { if (items[tradeSlot] == null) { items[tradeSlot] = new Item(itemId, amount); } else { if (items[tradeSlot].getItemId() == itemId) { items[tradeSlot].setItemId(itemId); items[tradeSlot].setItemAmount(items[tradeSlot].getItemAmount() + amount); } } if (status == 2 || player2.getTrade().getStatus() == 2) { this.status = 1; player2.getTrade().setStatus(1); player.getPackets().modifyText("", 335, 36); player2.getPackets().modifyText("", 335, 36); } refreshTrade(); return(true); } } return(false); }
private void openTrade() { player.getPackets().displayInterface(335); player.getPackets().displayInventoryInterface(336); player.getPackets().setRightClickOptions(1278, (335 * 65536) + 30, 0, 27); player.getPackets().setRightClickOptions(1026, (335 * 65536) + 32, 0, 27); player.getPackets().setRightClickOptions(1278, (336 * 65536), 0, 27); player.getPackets().setRightClickOptions(2360446, (336 * 65536), 0, 27); object[] opts1 = new object[] { "", "", "", "Value", "Remove X", "Remove All", "Remove 10", "Remove 5", "Remove 1", -1, 0, 7, 4, 90, 21954590 }; object[] opts2 = new object[] { "", "", "Lend", "Value", "Offer X", "Offer All", "Offer 10", "Offer 5", "Offer 1", -1, 0, 7, 4, 93, 22020096 }; object[] opts3 = new object[] { "", "", "", "", "", "", "", "", "Value", -1, 0, 7, 4, 90, 21954592 }; player.getPackets().sendClientScript(150, opts1, "IviiiIsssssssss"); player.getPackets().sendClientScript(150, opts2, "IviiiIsssssssss"); player.getPackets().sendClientScript(695, opts3, "IviiiIsssssssss"); player.getPackets().modifyText("Trading with: " + player2.getLoginDetails().getUsername(), 335, 15); player.getPackets().modifyText(player2.getLoginDetails().getUsername() + " has " + player2.getInventory().getTotalFreeSlots() + " free inventory slots.", 335, 21); player.getPackets().modifyText("", 335, 36); refreshTrade(); }
public bool doSpecialAttack(Entity killer, Entity target) { int weapon = ((Player)killer).getEquipment().getItemInSlot(ItemData.EQUIP.WEAPON); int currentPower = specialAmount; int neededPower = getRequiredAmount(weapon); bool rangeWeapon = false; if (!usingSpecial) { return(false); } if (p.getDuel() != null) { if (p.getDuel().ruleEnabled(DuelSession.RULE.NO_SPECIAL_ATTACKS)) { p.getPackets().sendMessage("Special attacks have been disabled for this duel!"); usingSpecial = false; refreshBar(); return(false); } } if (neededPower > currentPower) { ((Player)killer).getPackets().sendMessage("You don't have enough special power left."); usingSpecial = false; refreshBar(); return(false); } double damage = -1; double damage2 = -1; double damage3 = -1; double damage4 = -1; bool doubleHit = false; int increasedMaxHit = 0; damage = CombatFormula.getSpecialMeleeHit((Player)killer, target, weapon); damage2 = CombatFormula.getSpecialMeleeHit((Player)killer, target, weapon); int hitDelay = killer.getHitDelay(); //int totalDamage = 0; int usingBow = ((Player)killer).getEquipment().getItemInSlot(ItemData.EQUIP.WEAPON); int usingArrows = ((Player)killer).getEquipment().getItemInSlot(ItemData.EQUIP.ARROWS); bool usingRangePrayer = false; if (target is Player) { usingRangePrayer = ((Player)target).getPrayers().getHeadIcon() == PrayerData.RANGE; } switch (weapon) { case 4151: // Whip. killer.setLastAnimation(new Animation(1658)); target.setLastGraphics(new Graphics(341, 0, 100)); if (Misc.random(3) == 0 && damage > 0) { damage = p.getMaxHit(); } else { damage = 0; } if (target is Player) { int energy = ((Player)target).getRunEnergy() / 4; ((Player)killer).setRunEnergy(((Player)killer).getRunEnergy() + energy); ((Player)target).setRunEnergy(((Player)target).getRunEnergy() - energy); if (((Player)killer).getRunEnergy() > 100) { ((Player)killer).setRunEnergy(100); } if (((Player)target).getRunEnergy() < 0) { ((Player)target).setRunEnergy(0); } } break; case 1215: // Dragon daggers. case 1231: case 5680: case 5698: if (damage > 0) { damage = p.getMaxHit(20); damage2 = p.getMaxHit(20); } killer.setLastAnimation(new Animation(1062)); killer.setLastGraphics(new Graphics(252, 0, 100)); doubleHit = true; /*if (misc.random(3) == 0 && CombatFormula.getMeleeHit(p, target) > 0) { * if (damage <= (CombatFormula.getMaxHit(p, 20) / 2) && damage2 <= (CombatFormula.getMaxHit(p, 20) / 2)) { * damage = (CombatFormula.getMaxHit(p, 20) / 2) + (misc.randomDouble() * CombatFormula.getMaxHit(p, 20)) / 2); * damage2 = (CombatFormula.getMaxHit(p, 20) / 2) + (misc.randomDouble() * CombatFormula.getMaxHit(p, 20)) / 2); * } * } else if (misc.random(2) == 0) { * damage = 0; * damage2 = 0; * }*/ double a = damage + damage2; if (damage > target.getHp()) { damage = target.getHp(); } a -= damage; if (damage2 > a) { damage2 = a; } /*if (damage > target.getHp()) { * int randomHp = misc.random(target.getHp()); * damage = randomHp; * damage2 = target.getHp() - randomHp; * } else { * int hpRemaining = target.getHp() - damage; * if (damage2 > hpRemaining) { * damage2 = hpRemaining; * } * }*/ break; case 1305: // Dragon longsword. killer.setLastAnimation(new Animation(1058)); killer.setLastGraphics(new Graphics(248, 0, 100)); damage = p.getMaxHit(30); break; case 11694: // Armadyl godsword. killer.setLastGraphics(new Graphics(1222, 0, 100)); killer.setLastAnimation(new Animation(7074)); damage += p.getMaxHit() * 0.25; break; case 11696: // Bandos godsword. killer.setLastGraphics(new Graphics(1223, 0, 100)); killer.setLastAnimation(new Animation(7073)); damage += p.getMaxHit() * 0.10; break; case 11698: // Saradomin godsword. killer.setLastGraphics(new Graphics(1220, 0, 100)); killer.setLastAnimation(new Animation(7071)); int newHp = (int)(damage * 0.50); int newPrayer = (int)(damage * 0.25); if (newHp < 10) { newHp = 10; } if (newPrayer < 5) { newPrayer = 5; } ((Player)killer).heal(newHp); ((Player)killer).getSkills().setCurLevel(Skills.SKILL.PRAYER, ((Player)killer).getSkills().getCurLevel(Skills.SKILL.PRAYER) + newPrayer); if (((Player)killer).getSkills().getCurLevel(Skills.SKILL.PRAYER) > ((Player)killer).getSkills().getMaxLevel(Skills.SKILL.PRAYER)) { ((Player)killer).getSkills().setCurLevel(Skills.SKILL.PRAYER, ((Player)killer).getSkills().getMaxLevel(Skills.SKILL.PRAYER)); } break; case 11700: // Zamorak godsword killer.setLastGraphics(new Graphics(1221, 0, 100)); killer.setLastAnimation(new Animation(7070)); target.setLastGraphics(new Graphics(369)); MagicCombat.freezeTarget(31, target); break; case 11730: // Saradomin sword target.setLastGraphics(new Graphics(1207, 0, 100)); killer.setLastAnimation(new Animation(7072)); increasedMaxHit = 16; break; case 1434: // Dragon mace hitDelay = 700; killer.setLastGraphics(new Graphics(251, 0, 75)); killer.setLastAnimation(new Animation(1060)); damage = p.getMaxHit(60); break; case 3204: // Dragon halberd // TODO halberd break; case 4587: // Dragon scimitar killer.setLastGraphics(new Graphics(347, 0, 100)); killer.setLastAnimation(new Animation(451)); if (target is Player) { if (((Player)target).getPrayers().getOverheadPrayer() >= 1 && ((Player)target).getPrayers().getOverheadPrayer() <= 3) { ((Player)target).getPrayers().setOverheadPrayer(0); ((Player)target).getPrayers().setHeadIcon(-1); ((Player)target).getPackets().sendMessage("The Dragon scimitar slashes through your prayer protection!"); ((Player)target).getPackets().sendConfig(95, 0); ((Player)target).getPackets().sendConfig(97, 0); ((Player)target).getPackets().sendConfig(98, 0); ((Player)target).getPackets().sendConfig(99, 0); ((Player)target).getPackets().sendConfig(100, 0); ((Player)target).getPackets().sendConfig(96, 0); } } break; case 14484: // Dragon claws doubleHit = true; killer.setLastGraphics(new Graphics(1950)); killer.setLastAnimation(new Animation(10961)); if (Misc.random(1) == 0 && damage > 0) { if (damage < p.getMaxHit(20) * 0.75) { damage = (p.getMaxHit(20) * 0.75 + (Misc.randomDouble() * (p.getMaxHit(20) * 0.25))); } } damage = (int)Math.Floor(damage); damage2 = (int)Math.Floor(damage * 0.50); damage3 = (int)Math.Floor(damage2 * 0.50); damage4 = (int)Math.Floor(damage3 + 1); break; case 1249: // Dragon spear //TODO leave due to noclipping? break; case 6739: // Dragon axe //TODO find emote and graphic break; case 7158: // Dragon 2h killer.setLastAnimation(new Animation(3157)); killer.setLastGraphics(new Graphics(559)); //TODO multi combat break; case 3101: // Rune claws killer.setLastGraphics(new Graphics(274)); break; case 4153: // Granite maul killer.setLastAnimation(new Animation(1667)); killer.setLastGraphics(new Graphics(340, 0, 100)); //doubleHit = true; break; case 10887: // Barrelchest anchor break; case 11061: // Ancient mace break; case 13902: // Statius' warhammer killer.setLastAnimation(new Animation(10505)); killer.setLastGraphics(new Graphics(1840)); damage += killer.getMaxHit() * 0.25; if (target is Player) { int defenceLevel = ((Player)target).getSkills().getCurLevel(Skills.SKILL.DEFENCE); int newDefence = (int)(defenceLevel * 0.30); if (newDefence < 1) { newDefence = 1; } ((Player)target).getSkills().setCurLevel(Skills.SKILL.DEFENCE, defenceLevel - newDefence); ((Player)target).getPackets().sendSkillLevel(Skills.SKILL.DEFENCE); } break; case 13899: // Vesta's longsword killer.setLastAnimation(new Animation(10502)); damage += killer.getMaxHit() * 0.20; break; case 13905: // Vesta's spear killer.setLastAnimation(new Animation(10499)); killer.setLastGraphics(new Graphics(1835)); break; case 13883: // Morrigans throwing axe break; case 13879: // Morrigans javelin case 8880: // Dorgeshuun crossbow break; case 861: // Magic shortbow case 859: // Magic longbow case 10284: // Magic composite bow rangeWeapon = true; if (p.getEquipment().getAmountInSlot(ItemData.EQUIP.ARROWS) < 2) { p.getPackets().sendMessage("You need 2 arrows to use the Magic bow special attack!"); return(false); } damage = (int)CombatFormula.getRangeHit((Player)killer, target, usingBow, usingArrows); damage2 = (int)CombatFormula.getRangeHit((Player)killer, target, usingBow, usingArrows); damage *= 1.05; damage2 *= 1.05; if (usingRangePrayer) { damage *= 0.60; damage2 *= 0.60; } double a1 = damage + damage2; if (damage > target.getHp()) { damage = target.getHp(); } a1 -= damage; if (damage2 > a1) { damage2 = a1; } /*if (damage >= target.getHp()) { * int randomHp = misc.random(target.getHp()); * damage = randomHp; * damage2 = target.getHp() - randomHp; * } else { * int hpRemaining = target.getHp() - damage; * if (damage2 > hpRemaining) { * damage2 = hpRemaining; * } * }*/ p.setLastAnimation(new Animation(1074)); p.setLastGraphics(new Graphics(256, 0, 90)); RangeCombat.deductArrow(killer); RangeCombat.deductArrow(killer); int arrowType = RangeCombat.getArrowType(killer); hitDelay = 1000; int MSpecCounter = 0; Event displayMSpecProjectileEvent = new Event(0); displayMSpecProjectileEvent.setAction(() => { RangeCombat.displayMSpecProjectile(killer, target); MSpecCounter++; if (MSpecCounter == 1) { displayMSpecProjectileEvent.setTick(500); p.setLastGraphics(new Graphics(256, 0, 90)); Event doMSpecHitEvent = new Event(900); doMSpecHitEvent.setAction(() => { doMSpecHitEvent.stop(); target.hit((int)damage2); RangeCombat.createGroundArrow(killer, target, arrowType); }); Server.registerEvent(doMSpecHitEvent); } else { displayMSpecProjectileEvent.stop(); return; } MSpecCounter++; }); Server.registerEvent(displayMSpecProjectileEvent); break; case 805: // Rune thrownaxe rangeWeapon = true; break; case 6724: // Seercull rangeWeapon = true; break; case 11235: // Dark bow rangeWeapon = true; if (p.getEquipment().getAmountInSlot(ItemData.EQUIP.ARROWS) < 2) { p.getPackets().sendMessage("You need 2 arrows to use the Dark bow!"); return(false); } int minHit = 8; damage = (int)CombatFormula.getRangeHit((Player)killer, target, usingBow, usingArrows); damage2 = (int)CombatFormula.getRangeHit((Player)killer, target, usingBow, usingArrows); if (usingBow == 11235) { // Dark bow if (usingArrows == 11212) { // Dragon arrows minHit = usingRangePrayer ? 4 : 8; damage *= 1.50; damage2 *= 1.50; if (damage < minHit) { damage = minHit; } if (damage2 < minHit) { damage2 = minHit; } } else { // Other arrow minHit = usingRangePrayer ? 3 : 5; damage *= 1.30; damage2 *= 1.30; if (damage < minHit) { damage = minHit; } if (damage2 < minHit) { damage2 = minHit; } } } if (usingRangePrayer) { damage *= 0.60; damage2 *= 0.60; } double a2 = damage + damage2; if (damage > target.getHp()) { damage = target.getHp(); } a2 -= damage; if (damage2 > a2) { damage2 = a2; } /*if (damage >= target.getHp()) { * int randomHp = misc.random(target.getHp()); * damage = randomHp; * damage2 = target.getHp() - randomHp; * } else { * int hpRemaining = target.getHp() - damage; * if (damage2 > hpRemaining) { * damage2 = hpRemaining; * } * }*/ p.setLastGraphics(new Graphics(RangeCombat.getDrawbackGraphic(killer), 0, 90)); RangeCombat.deductArrow(killer); RangeCombat.deductArrow(killer); hitDelay = RangeCombat.getHitDelay(killer, target); int delayHit = hitDelay; hitDelay = 1200; int arrowType1 = RangeCombat.getArrowType(killer); int DBSpecCounter = 0; Event DBSpecProjectile = new Event(0); DBSpecProjectile.setAction(() => { RangeCombat.displayDBSpecProjectile(killer, target); DBSpecCounter++; if (DBSpecCounter == 1) { DBSpecProjectile.setTick(200); Event rangeHitEvent = new Event(delayHit + 600); rangeHitEvent.setAction(() => { target.hit((int)damage2); rangeHitEvent.stop(); RangeCombat.createGroundArrow(killer, target, arrowType1); }); Server.registerEvent(rangeHitEvent); } else { DBSpecProjectile.stop(); return; } DBSpecCounter++; }); Server.registerEvent(DBSpecProjectile); break; } specialAmount -= neededPower; p.setSpecialAmount(specialAmount); usingSpecial = false; refreshBar(); killer.resetCombatTurns(); bool hitDouble = doubleHit; if (target is Player) { if (!rangeWeapon) { if (((Player)target).getPrayers().getHeadIcon() == PrayerData.MELEE) { damage = (int)(damage * 0.60); } } else { if (((Player)target).getPrayers().getHeadIcon() == PrayerData.RANGE) { damage = (int)(damage * 0.60); } } } damage = ((weapon == 4151) ? damage : (Misc.randomDouble() * damage)); damage2 = Misc.randomDouble() * damage2; int d = (int)((damage == 0 && weapon != 11730) ? 0 : (damage + increasedMaxHit)); int d2 = (int)damage2; int d3 = (int)damage3; // only used for d claws int d4 = (int)damage4; // only used for d claws if (canPoison(weapon)) { if (!target.isPoisoned() && Misc.random(5) == 0 && (hitDouble ? (d2 > 0 || d > 0) : d > 0)) { Server.registerEvent(new PoisonEvent(target, POISON_AMOUNT)); } } int hhitDelay = hitDelay; int totDamage = Convert.ToInt32(damage + damage2 + damage3 + damage4); Combat.checkIfWillDie(target, totDamage); Event hitEvent = new Event(hhitDelay); hitEvent.setAction(() => { hitEvent.stop(); if (!target.isDead()) { target.setLastAnimation(new Animation(target.getDefenceAnimation())); } target.hit(d); if (hitDouble) { target.hit(d2); } if (d3 != -1 || d4 != -1) { target.hit(d3); target.hit(d4); } Combat.checkRecoil(killer, target, totDamage); Combat.checkSmite(killer, target, totDamage); Combat.checkVengeance(killer, target, totDamage); Combat.addXp(killer, target, totDamage); }); Server.registerEvent(hitEvent); return(true); }
public void openExchange() { p.getPackets().sendConfig(1109, -1); p.getPackets().sendConfig(1110, 0); p.getPackets().sendConfig(1111, 0); p.getPackets().sendConfig(1112, -1); p.getPackets().sendConfig(1113, -1); p.getPackets().sendConfig(1114, 0); p.getPackets().sendConfig(1115, 0); p.getPackets().sendConfig(1116, 0); p.getPackets().displayInterface(105); p.getPackets().setRightClickOptions(6, 6881491, 65535, 65535); p.getPackets().setRightClickOptions(6, 6881489, 65535, 65535); }
public void clearAll() { for (int i = 0; i < slots.Length; i++) { slots[i].setItemId(-1); slots[i].setItemAmount(0); } p.getPackets().refreshInventory(); }
public void refresh() { player.getPackets().setPrivacyOptions(); player.getPackets().setFriendsListStatus(); foreach (long friend in friends) { player.getPackets().sendFriend(friend, getWorld(friend)); } long[] array = new long[ignores.Count]; int i = 0; foreach (long ignore in ignores) { array[i++] = ignore; } player.getPackets().sendIgnores(array); }
public bool equipItem(int itemID, int slot) { ItemData.EQUIP equipType = ItemData.getItemType(itemID); int amount = player.getInventory().getAmountInSlot(slot); bool stackable = ItemData.forId(itemID).isStackable(); bool twoHanded = ItemData.isTwoHanded(itemID); if (equipType == ItemData.EQUIP.NOTHING) { player.getPackets().sendMessage("Unable to find an item slot for item : " + itemID + " , please report this to a staff member."); return(false); } if (duelRuleActive(equipType)) { return(true); } if (twoHanded) { if (player.getInventory().getTotalFreeSlots() < getNeeded2HSlots()) { player.getPackets().sendMessage("Not enough space in your inventory."); return(false); } } if (!player.getInventory().deleteItem(itemID, slot, amount)) { return(false); } if (twoHanded && getItemInSlot(ItemData.EQUIP.SHIELD) != -1) { if (!unequipItem(ItemData.EQUIP.SHIELD)) { return(false); } } if (equipType == ItemData.EQUIP.SHIELD) { if (getItemInSlot(ItemData.EQUIP.WEAPON) != -1) { if (ItemData.isTwoHanded(slots[3].getItemId())) { if (!unequipItem(ItemData.EQUIP.WEAPON)) { return(false); } } } } int equipSlot = Convert.ToInt32(equipType); if (slots[equipSlot].getItemId() != itemID && slots[equipSlot].getItemId() > 0) { if (!player.getInventory().addItem(slots[equipSlot].getItemId(), slots[equipSlot].getItemAmount(), slot)) { return(false); } if (equipType == ItemData.EQUIP.HAT) { RuneCraft.toggleRuin(player, slots[equipSlot].getItemId(), false); if (RuneCraft.getTiaraIndex(itemID) != -1) { // switching from tiara to tiara. RuneCraft.toggleRuin(player, itemID, true); } } } else if (stackable && slots[equipSlot].getItemId() == itemID) { amount = slots[equipSlot].getItemAmount() + amount; } else if (slots[equipSlot].getItemId() != -1) { player.getInventory().addItem(slots[equipSlot].getItemId(), slots[equipSlot].getItemAmount(), slot); } slots[equipSlot].setItemId(itemID); slots[equipSlot].setItemAmount(amount); player.getPackets().refreshEquipment(); player.getUpdateFlags().setAppearanceUpdateRequired(true); if (equipType == ItemData.EQUIP.HAT) { RuneCraft.toggleRuin(player, itemID, RuneCraft.wearingTiara(player)); } if (equipType == ItemData.EQUIP.WEAPON) { setWeapon(); MagicData.cancelAutoCast(player, true); } refreshBonuses(); player.setEntityFocus(65535); return(true); }
public void newCannon() { setupTime = Environment.TickCount; Event setupNewCannonEvent = new Event(1000); setupNewCannonEvent.setAction(() => { string prefixMsg = (constructionStage == 0) ? "You place the " : "You add the "; string suffixMsg = (constructionStage == 0) ? " on the ground." : "."; if (p.getInventory().deleteItem(CANNON_PIECES[constructionStage])) { p.getPackets().createObject(CANNON_OBJECTS[constructionStage], cannonLocation, 0, 10); p.getPackets().sendMessage(prefixMsg + CONSTRUCTION_MESSAGE[constructionStage] + suffixMsg); if (++constructionStage >= 4) { constructionStage--; setupNewCannonEvent.stop(); return; } p.setLastAnimation(new Animation(827)); } else { setupNewCannonEvent.stop(); } }); Server.registerEvent(setupNewCannonEvent); }