Compare commits

..

12 Commits

Author SHA1 Message Date
dginovker 9efafdff47 Removed all java.awt.* 2019-12-13 12:30:07 -05:00
dginovker 37322d4874 Latest updates 2019-12-12 23:11:24 -05:00
Josh Shippam b94157f01b Remove Accidentally Added Import (#285) 2019-12-13 02:34:23 +00:00
Danial c1a5cf449c Shop fixes (#284)
* Update ShopAssistant.java

* Fixup fish selling/buying

* fixup

* tidy up

* fixup 0 stock items being removed
2019-12-13 01:07:44 +00:00
Josh Shippam 23951e9af6 Implement Ring Of Forging (#283) 2019-12-13 01:05:25 +00:00
Danial 2d58593be9 Fixup smelting (#281)
* Fixup smelting

* Move iron fail check, show message

* revert

* More smithing refactoring
2019-12-13 00:37:13 +00:00
Danial 9b160452ad Update Commands (#280)
* Show commands in interface

* Update players command, add playershops command

* Remove null command

* Update Commands.class
2019-12-13 00:36:18 +00:00
dginovker f39993e3d9 Latest compile + jars 2019-12-12 04:54:04 -05:00
Mr Extremez 6ad9d1f7e9 Random fixes (#273)
- Cant open nest if you do not have space
- Added working yo yo
- Added monks robe spawns
- Added ability to make god pages
- Removed a few warnings

closes #265
closes #262
closes #259
closes #243
2019-12-12 04:32:56 -05:00
Danial 8ec8a92d20 Fix for boots of lightness (#272) 2019-12-12 04:32:06 -05:00
Gptaqbc c891e4741e Added Winter theme and fixed couple items that werent wore in the correct slot (#271)
Added Winter theme and fixed couple items that werent wore in the correct slot
2019-12-12 04:31:21 -05:00
Daniel Ginovker 64ae22188f Small shop QoL (#267)
* Shop command clarification

* small syntax
2019-12-11 00:43:58 -05:00
56 changed files with 282 additions and 150 deletions
@@ -35,5 +35,6 @@ public class ClientSettings {
public static final BigInteger RSA_MODULUS = new BigInteger("91553247461173033466542043374346300088148707506479543786501537350363031301992107112953015516557748875487935404852620239974482067336878286174236183516364787082711186740254168914127361643305190640280157664988536979163450791820893999053469529344247707567448479470137716627440246788713008490213212272520901741443"); public static final BigInteger RSA_MODULUS = new BigInteger("91553247461173033466542043374346300088148707506479543786501537350363031301992107112953015516557748875487935404852620239974482067336878286174236183516364787082711186740254168914127361643305190640280157664988536979163450791820893999053469529344247707567448479470137716627440246788713008490213212272520901741443");
public static final BigInteger RSA_EXPONENT = new BigInteger("65537"); public static final BigInteger RSA_EXPONENT = new BigInteger("65537");
public final static Boolean SNOW = true;
} }
+3
View File
@@ -25,6 +25,9 @@ public final class Flo {
return; return;
} else if (i == 1) { } else if (i == 1) {
anInt390 = stream.read3Bytes(); anInt390 = stream.read3Bytes();
if (ClientSettings.SNOW) {
anInt390 = 0xffffff;
}
method262(anInt390); method262(anInt390);
} else if (i == 2) { } else if (i == 2) {
anInt391 = stream.readUnsignedByte(); anInt391 = stream.readUnsignedByte();
+5 -1
View File
@@ -5,7 +5,11 @@
import javax.swing.*; import javax.swing.*;
import java.applet.AppletContext; import java.applet.AppletContext;
import java.awt.*; //import java.awt.*;
import java.awt.Component;
import java.awt.Graphics;
import java.awt.Color;
import java.awt.Font;
import java.awt.event.KeyEvent; import java.awt.event.KeyEvent;
import java.io.ByteArrayInputStream; import java.io.ByteArrayInputStream;
import java.io.DataInputStream; import java.io.DataInputStream;
-12
View File
@@ -3,18 +3,6 @@
* THIS IS TO ALLOW LOCAL PARABOT TO CONTINUE TO WORK * THIS IS TO ALLOW LOCAL PARABOT TO CONTINUE TO WORK
*/ */
import java.applet.AppletContext;
import java.awt.*;
import java.awt.event.KeyEvent;
import java.io.*;
import java.net.InetAddress;
import java.net.Socket;
import java.net.URL;
import java.text.DecimalFormat;
import java.text.DecimalFormatSymbols;
import java.util.Calendar;
import java.util.Date;
/** /**
* NOTICE: IF YOU CHANGE ANYTHING IN GAME.JAVA, PLEASE COPY-PASTE THE WHOLE CLASS OVER TO LOCALGAME.JAVA * NOTICE: IF YOU CHANGE ANYTHING IN GAME.JAVA, PLEASE COPY-PASTE THE WHOLE CLASS OVER TO LOCALGAME.JAVA
* THIS IS TO ALLOW LOCAL PARABOT TO CONTINUE TO WORK * THIS IS TO ALLOW LOCAL PARABOT TO CONTINUE TO WORK
+7 -1
View File
@@ -4,7 +4,13 @@
import javax.swing.*; import javax.swing.*;
import java.applet.Applet; import java.applet.Applet;
import java.awt.*; //import java.awt.*;
import java.awt.Component;
import java.awt.Graphics;
import java.awt.Color;
import java.awt.Font;
import java.awt.Insets;
import java.awt.FontMetrics;
import java.awt.event.FocusEvent; import java.awt.event.FocusEvent;
import java.awt.event.FocusListener; import java.awt.event.FocusListener;
import java.awt.event.KeyEvent; import java.awt.event.KeyEvent;
+9 -1
View File
@@ -2,7 +2,15 @@
// Jad home page: http://www.kpdus.com/jad.html // Jad home page: http://www.kpdus.com/jad.html
// Decompiler options: packimports(3) // Decompiler options: packimports(3)
import java.awt.*; //import java.awt.*;
import java.awt.Component;
import java.awt.Graphics;
import java.awt.Color;
import java.awt.Font;
import java.awt.Insets;
import java.awt.FontMetrics;
import java.awt.Frame;
import java.awt.Dimension;
@SuppressWarnings("serial") @SuppressWarnings("serial")
final class RSFrame extends Frame { final class RSFrame extends Frame {
@@ -11,6 +11,8 @@
1935:1:3211:3212 1935:1:3211:3212
88:1:2654:9767 88:1:2654:9767
1931:1:3209:3214 1931:1:3209:3214
542:1:3059:3488:1
544:1:3059:3487:1
1923:1:3208:3214 1923:1:3208:3214
882:1:3205:3228 882:1:3205:3228
2313:1:3033:9849 2313:1:3033:9849
@@ -37,6 +37,8 @@ public class BotHandler {
return; return;
} }
player.getPacketSender().sendMessage("Shop commands- ::withdrawshop, ::closeshop");
Client playerShop = getPlayerShop(player); Client playerShop = getPlayerShop(player);
if (playerShop == null) { if (playerShop == null) {
@@ -25,16 +25,15 @@ public class Smelting extends SkillHandler {
* Handles Smelting data. * Handles Smelting data.
*/ */
public static int[][] data = { public static int[][] data = {
// index ,lvl required, XP, item required, item2, COAL AMOUNT, // index ,lvl required, XP, primary item required, secondary item required, secondary item amount, output item(BAR)
// Final item(BAR) { 1, 1, 6, COPPER, TIN, 1, 2349 }, // Bronze
{ 1, 1, 6, COPPER, TIN, -1, 2349 }, // Bronze
{ 2, 15, 12, IRON, -1, -1, 2351 }, // iron { 2, 15, 12, IRON, -1, -1, 2351 }, // iron
{ 3, 20, 17, IRON, COAL, 2, 2353 }, // Steel { 3, 20, 17, IRON, COAL, 2, 2353 }, // Steel
{ 4, 50, 30, MITH, COAL, 4, 2359 }, // Mith { 4, 50, 30, MITH, COAL, 4, 2359 }, // Mith
{ 5, 70, 37, ADDY, COAL, 6, 2361 }, // Addy { 5, 70, 37, ADDY, COAL, 6, 2361 }, // Addy
{ 6, 85, 50, RUNE, COAL, 8, 2363 }, // Rune { 6, 85, 50, RUNE, COAL, 8, 2363 }, // Rune
{ 7, 20, 13, SILVER, -1, -1, 2355 }, // Silver { 7, 20, 13, SILVER, -1, -1, 2355 }, // Silver
{ 8, 40, 22, GOLD, -1, -1, 2357 } // GOLD { 8, 40, 22, GOLD, -1, -1, 2357 }, // GOLD
}; };
/** /**
@@ -44,8 +43,7 @@ public class Smelting extends SkillHandler {
*/ */
public static void startSmelting(Player c, int object) { public static void startSmelting(Player c, int object) {
for (int j = 0; j < SMELT_FRAME.length; j++) { for (int j = 0; j < SMELT_FRAME.length; j++) {
c.getPacketSender().sendFrame246(SMELT_FRAME[j], 150, c.getPacketSender().sendFrame246(SMELT_FRAME[j], 150, SMELT_BARS[j]);
SMELT_BARS[j]);
} }
c.getPacketSender().sendChatInterface(2400); c.getPacketSender().sendChatInterface(2400);
c.isSmelting = true; c.isSmelting = true;
@@ -70,30 +68,22 @@ public class Smelting extends SkillHandler {
private static void smeltBar(final Player c, int bartype) { private static void smeltBar(final Player c, int bartype) {
for (int i = 0; i < data.length; i++) { for (int i = 0; i < data.length; i++) {
if (bartype == data[i][0]) { if (bartype == data[i][0]) {
// Check player has the correct smithing level
if (c.playerLevel[c.playerSmithing] < data[i][1]) { // Smithing level if (c.playerLevel[c.playerSmithing] < data[i][1]) { // Smithing level
c.getDialogueHandler().sendStatement("You need a smithing level of at least "+ data[i][1] + " in order smelt this bar."); c.getDialogueHandler().sendStatement("You need a smithing level of at least "+ data[i][1] + " in order smelt this bar.");
return; return;
} }
if (data[i][3] > 0 && data[i][4] > 0) { // All OTHER bars // Check the player has all required items
if (!c.getItemAssistant().playerHasItem(data[i][3]) || !c.getItemAssistant().playerHasItem(data[i][4])) { if (data[i][4] <= 0) { // Bars with only a primary requirement
c.getPacketSender().sendMessage("You need an " + ItemAssistant.getItemName(data[i][3]).toLowerCase() + " and " + data[i][5] + " " + ItemAssistant.getItemName(data[i][4]).toLowerCase() + " to make this bar.");
c.getPacketSender().closeAllWindows();
return;
}
}
if (data[i][4] < 0) { // Iron bar, Gold & Silver requirements
if (!c.getItemAssistant().playerHasItem(data[i][3])) { if (!c.getItemAssistant().playerHasItem(data[i][3])) {
c.getPacketSender().sendMessage("You need an " + ItemAssistant.getItemName(data[i][3]).toLowerCase() + " to make this bar."); c.getPacketSender().sendMessage("You need " + ItemAssistant.getItemName(data[i][3]).toLowerCase() + " to make this bar.");
c.getPacketSender().closeAllWindows(); c.getPacketSender().closeAllWindows();
return; return;
} }
} } else { // Bars with a secondary requirement
if (!c.getItemAssistant().playerHasItem(data[i][3]) || !c.getItemAssistant().playerHasItem(data[i][4], data[i][5])) {
if (data[i][5] > 0) { // Bars with more than 1 coal requirement c.getPacketSender().sendMessage("You need 1 " + ItemAssistant.getItemName(data[i][3]).toLowerCase() + " and " + data[i][5] + " " + ItemAssistant.getItemName(data[i][4]).toLowerCase() + " to make this bar.");
if (!c.getItemAssistant().playerHasItem(data[i][4], data[i][5])) {
c.getPacketSender().sendMessage("You need an " + ItemAssistant.getItemName(data[i][3]).toLowerCase() + " and " + data[i][5] + " coal ores to make this bar.");
c.getPacketSender().closeAllWindows(); c.getPacketSender().closeAllWindows();
return; return;
} }
@@ -109,10 +99,10 @@ public class Smelting extends SkillHandler {
c.playerSkillProp[13][0] = data[i][0];// index c.playerSkillProp[13][0] = data[i][0];// index
c.playerSkillProp[13][1] = data[i][1];// Level required c.playerSkillProp[13][1] = data[i][1];// Level required
c.playerSkillProp[13][2] = data[i][2];// XP c.playerSkillProp[13][2] = data[i][2];// XP
c.playerSkillProp[13][3] = data[i][3];// item required c.playerSkillProp[13][3] = data[i][3];// primary item required
c.playerSkillProp[13][4] = data[i][4];// item required 2 c.playerSkillProp[13][4] = data[i][4];// secondary item required
c.playerSkillProp[13][5] = data[i][5];// coal amount c.playerSkillProp[13][5] = data[i][5];// secondary item amount
c.playerSkillProp[13][6] = data[i][6];// Final Item c.playerSkillProp[13][6] = data[i][6];// output item
c.getPacketSender().closeAllWindows(); c.getPacketSender().closeAllWindows();
c.startAnimation(899); c.startAnimation(899);
@@ -122,45 +112,40 @@ public class Smelting extends SkillHandler {
@Override @Override
public void execute(CycleEventContainer container) { public void execute(CycleEventContainer container) {
deleteTime(c); deleteTime(c);
// Remove primary item
c.getItemAssistant().deleteItem(c.playerSkillProp[13][3], 1); c.getItemAssistant().deleteItem(c.playerSkillProp[13][3], 1);
if (c.playerSkillProp[13][5] == -1) { // Check if required and remove secondary items
c.getItemAssistant().deleteItem(c.playerSkillProp[13][4], 1); if (c.playerSkillProp[13][4] > 0 && c.playerSkillProp[13][5] > 0) {
}
if (c.playerSkillProp[13][5] > 0) {// if coal amount is > 0
c.getItemAssistant().deleteItem(c.playerSkillProp[13][4], c.playerSkillProp[13][5]); c.getItemAssistant().deleteItem(c.playerSkillProp[13][4], c.playerSkillProp[13][5]);
} }
if (c.playerSkillProp[13][3] == IRON && c.playerSkillProp[13][4] == -1 && Misc.random(100) >= 50) { if (c.playerSkillProp[13][3] == IRON && c.playerSkillProp[13][4] == -1) {
c.getPlayerAssistant().addSkillXP(c.playerSkillProp[13][2], c.playerSmithing); // Ring of forging
c.getItemAssistant().addItem(c.playerSkillProp[13][6], 1);// item if (c.playerEquipment[c.playerRing] == 2568) {
c.getPacketSender().sendMessage("You receive an " + ItemAssistant.getItemName(c.playerSkillProp[13][6]).toLowerCase() + "."); c.getPlayerAssistant().addSkillXP(c.playerSkillProp[13][2], c.playerSmithing);
} c.getItemAssistant().addItem(c.playerSkillProp[13][6], 1);// item
c.getPacketSender().sendMessage("You receive an " + ItemAssistant.getItemName(c.playerSkillProp[13][6]).toLowerCase() + ".");
if (c.playerSkillProp[13][3] == GOLD && c.playerSkillProp[13][4] == -1 && c.playerEquipment[c.playerHands] == 776) { } else {
c.getPacketSender().sendMessage("You receive an " + ItemAssistant.getItemName(c.playerSkillProp[13][6]).toLowerCase() + "."); if (Misc.random(100) >= 50) {
c.getPlayerAssistant().addSkillXP(c.playerSkillProp[13][2], c.playerSmithing);
c.getItemAssistant().addItem(c.playerSkillProp[13][6], 1);// item
c.getPacketSender().sendMessage("You receive an " + ItemAssistant.getItemName(c.playerSkillProp[13][6]).toLowerCase() + ".");
} else {
c.getPacketSender().sendMessage("You failed to smelt the iron bar.");
}
}
} else if (c.playerSkillProp[13][3] == GOLD && c.playerEquipment[c.playerHands] == 776) {
c.getPacketSender().sendMessage("You receive a " + ItemAssistant.getItemName(c.playerSkillProp[13][6]).toLowerCase() + ".");
c.getPlayerAssistant().addSkillXP(56.2, c.playerSmithing); c.getPlayerAssistant().addSkillXP(56.2, c.playerSmithing);
c.getItemAssistant().addItem(c.playerSkillProp[13][6], 1);// item c.getItemAssistant().addItem(c.playerSkillProp[13][6], 1);// item
} else { } else {
if (c.playerSkillProp[13][3] != IRON) { c.getPacketSender().sendMessage("You receive a " + ItemAssistant.getItemName(c.playerSkillProp[13][6]).toLowerCase() + ".");
c.getPacketSender().sendMessage("You receive an " + ItemAssistant.getItemName(c.playerSkillProp[13][6]).toLowerCase() + "."); c.getPlayerAssistant().addSkillXP(c.playerSkillProp[13][2], c.playerSmithing);
c.getPlayerAssistant().addSkillXP(c.playerSkillProp[13][2], c.playerSmithing); c.getItemAssistant().addItem(c.playerSkillProp[13][6], 1);// item
c.getItemAssistant().addItem(c.playerSkillProp[13][6], 1);// item
}
} }
// ///////////////////////////////CHECKING////////////////////// ////////////////////// CHECKING //////////////////////
if (!c.getItemAssistant().playerHasItem(c.playerSkillProp[13][3], 1)) {
c.getPacketSender().sendMessage("You don't have enough ores to continue smelting!");
resetSmelting(c);
container.stop();
}
if (c.playerSkillProp[13][4] > 0) {
if (!c.getItemAssistant().playerHasItem(c.playerSkillProp[13][4], 1)) {
c.getPacketSender().sendMessage("You don't have enough ores to continue smelting!");
resetSmelting(c);
container.stop();
}
}
if (c.doAmount <= 0) { if (c.doAmount <= 0) {
resetSmelting(c); resetSmelting(c);
container.stop(); container.stop();
@@ -173,6 +158,18 @@ public class Smelting extends SkillHandler {
resetSmelting(c); resetSmelting(c);
container.stop(); container.stop();
} }
if (!c.getItemAssistant().playerHasItem(c.playerSkillProp[13][3], 1)) {
c.getPacketSender().sendMessage("You don't have enough ores to continue smelting!");
resetSmelting(c);
container.stop();
}
if (c.playerSkillProp[13][4] > 0) {
if (!c.getItemAssistant().playerHasItem(c.playerSkillProp[13][4], c.playerSkillProp[13][5])) {
c.getPacketSender().sendMessage("You don't have enough ores to continue smelting!");
resetSmelting(c);
container.stop();
}
}
} }
@@ -141,11 +141,11 @@ public class Item {
private static String[] fullhat = { "med helm", "coif", "Dharok's helm", private static String[] fullhat = { "med helm", "coif", "Dharok's helm",
"hood", "Initiate helm", "Coif", "Helm of neitiznot", "hood", "Initiate helm", "Coif", "Helm of neitiznot",
"Armadyl helmet", "Berserker helm", "Archer helm", "Farseer helm", "Armadyl helmet", "Berserker helm", "Archer helm", "Farseer helm",
"Warrior helm", "Void" }; "Warrior helm", "Void"};
/* Fullmask covers your entire head. */ /* Fullmask covers your entire head. */
private static String[] fullmask = { "full helm(t)", "full helm(g)", "full helm", "mask", "Verac's helm", private static String[] fullmask = { "full helm(t)", "full helm(g)", "full helm", "mask", "Verac's helm",
"Guthan's helm", "Karil's coif", "mask", "Torag's helm", "Void", "helmet", "Guthan's helm", "Karil's coif", "mask", "Torag's helm", "Void", "helmet",
"sallet", "Facemask" }; "sallet", "Facemask", "Bearhead"};
public static boolean isFullBody(int itemId) { public static boolean isFullBody(int itemId) {
String weapon = getItemName(itemId); String weapon = getItemName(itemId);
@@ -276,6 +276,8 @@ public class Item {
case 1167: case 1167:
case 5525: case 5525:
case 4168: case 4168:
case 4502:
case 1037:
case 1025: case 1025:
case 7112: case 7112:
case 7124: case 7124:
@@ -1440,6 +1440,10 @@ public class ItemAssistant {
} }
} }
if (wearID == 4079) {
c.startAnimation(1458);
return false;
}
switch (wearID) { switch (wearID) {
// Dragon daggers/sword // Dragon daggers/sword
case 1215: case 1215:
@@ -13,6 +13,7 @@ import com.rebotted.game.content.skills.fletching.Stringing;
import com.rebotted.game.content.skills.herblore.GrindingAction; import com.rebotted.game.content.skills.herblore.GrindingAction;
import com.rebotted.game.content.skills.herblore.Herblore; import com.rebotted.game.content.skills.herblore.Herblore;
import com.rebotted.game.items.impl.CapeDye; import com.rebotted.game.items.impl.CapeDye;
import com.rebotted.game.items.impl.GodPages;
import com.rebotted.game.items.impl.WeaponPoison; import com.rebotted.game.items.impl.WeaponPoison;
import com.rebotted.game.npcs.impl.MilkCow; import com.rebotted.game.npcs.impl.MilkCow;
import com.rebotted.game.objects.impl.CrystalChest; import com.rebotted.game.objects.impl.CrystalChest;
@@ -98,7 +99,7 @@ public class UseItem {
} }
public static void ItemonItem(Player player, int itemUsed, int useWith) { public static void itemOnItem(Player player, int itemUsed, int useWith) {
LogCuttingInterface.handleItemOnItem(player, itemUsed, useWith); LogCuttingInterface.handleItemOnItem(player, itemUsed, useWith);
ArrowMaking.makeArrow(player, itemUsed, useWith); ArrowMaking.makeArrow(player, itemUsed, useWith);
Stringing.StringBow(player, itemUsed, useWith); Stringing.StringBow(player, itemUsed, useWith);
@@ -111,6 +112,7 @@ public class UseItem {
} }
GrindingAction.init(player, itemUsed, useWith); GrindingAction.init(player, itemUsed, useWith);
CapeDye.dyeItem(player, itemUsed, useWith); CapeDye.dyeItem(player, itemUsed, useWith);
GodPages.itemOnItemHandle(player, useWith, itemUsed);
if (Herblore.isIngredient(itemUsed) || Herblore.isIngredient(useWith)) { if (Herblore.isIngredient(itemUsed) || Herblore.isIngredient(useWith)) {
Herblore.setupPotion(player, itemUsed, useWith); Herblore.setupPotion(player, itemUsed, useWith);
} }
@@ -49,29 +49,18 @@ public class Weight extends ItemDefinitions {
*/ */
public static void updateWeight(Player player) { public static void updateWeight(Player player) {
if (player != null) { if (player != null) {
player.getPacketSender().writeWeight((int) player.weight); player.weight = 0;
// Inventory items // Inventory items
for (int playerItem : player.playerItems) { for (int playerItem : player.playerItems) {
if (playerItem > -1) {// inventory if (playerItem > -1) {// inventory
for (ItemList i1 : GameEngine.itemHandler.ItemList) { calcWeight(player, playerItem, "addItem");
if (i1 != null) {
if (i1.itemId == playerItem) {
calcWeight(player, playerItem, "addItem");
}
}
}
} }
} }
// Equiped items // Equiped items
for (int element : player.playerEquipment) { for (int element : player.playerEquipment) {
if (element > -1) {// equipment if (element > -1) {// equipment
for (ItemList i1 : GameEngine.itemHandler.ItemList) { if (element == 88) player.weight -= 4.5;
if (i1 != null) { else calcWeight(player, element, "addItem");
if (i1.itemId == element) {
calcWeight(player, element, "addItem");
}
}
}
} }
} }
} }
@@ -0,0 +1,40 @@
package com.rebotted.game.items.impl;
import com.rebotted.game.players.Player;
public class GodPages {
public static void fillBook(Player player, int oldBook, int newBook, int page1, int page2, int page3) {
if (player.getItemAssistant().playerHasItem(oldBook, 1) && player.getItemAssistant().playerHasItem(page1, 1) && player.getItemAssistant().playerHasItem(page2, 1) && player.getItemAssistant().playerHasItem(page3, 1)) {
player.getItemAssistant().deleteItem(oldBook, player.getItemAssistant().getItemSlot(oldBook), 1);
player.getItemAssistant().deleteItem(page1, player.getItemAssistant().getItemSlot(page1), 1);
player.getItemAssistant().deleteItem(page2, player.getItemAssistant().getItemSlot(page2), 1);
player.getItemAssistant().deleteItem(page3, player.getItemAssistant().getItemSlot(page3), 1);
player.getItemAssistant().addItem(newBook, 1);
} else {
player.getPacketSender().sendMessage("You need all 3 pages to fill the book!");
}
}
public static void itemOnItemHandle(Player player, int useWith, int itemUsed) {
if ((useWith == 3827) || (useWith == 3827) || (useWith == 3827) && (itemUsed == 3839)) { // sara
fillBook(player, 3839, 3840, 3827, 3828, 3829);
}
if ((itemUsed == 3827) || (itemUsed == 3828) || (itemUsed == 3829) || (useWith == 3839)) {// sara
fillBook(player, 3839, 3840, 3827, 3828, 3829);
}
if ((useWith == 3831) || (useWith == 3832) || (useWith == 3833) && (itemUsed == 3841)) { // zam
fillBook(player, 3841, 3842, 3831, 3832, 3833);
}
if ((itemUsed == 3831) || (itemUsed == 3832) || (itemUsed == 3833) || (useWith == 3841)) { // zam
fillBook(player, 3841, 3842, 3831, 3832, 3833);
}
if ((useWith == 3835) || (useWith == 3836) || (useWith == 3837) && (itemUsed == 3843)) { // guth
fillBook(player, 3843, 3844, 3835, 3836, 3837);
}
if ((itemUsed == 3835) || (itemUsed == 3836) || (itemUsed == 3837) || (useWith == 3843)) { // guth
fillBook(player, 3843, 3844, 3835, 3836, 3837);
}
}
}
@@ -13,7 +13,7 @@ import com.rebotted.world.GlobalDropsHandler;
public class PlayerHandler { public class PlayerHandler {
public static Player players[] = new Player[GameConstants.MAX_PLAYERS]; public static Player players[] = new Player[GameConstants.MAX_PLAYERS];
public static int playerCount = 0, playerBotCount = 0; public static int playerCount = 0, playerShopCount = 0;
public static String playersCurrentlyOn[] = new String[GameConstants.MAX_PLAYERS]; public static String playersCurrentlyOn[] = new String[GameConstants.MAX_PLAYERS];
public static boolean updateAnnounced; public static boolean updateAnnounced;
public static boolean updateRunning; public static boolean updateRunning;
@@ -54,18 +54,18 @@ public class PlayerHandler {
return playerCount; return playerCount;
} }
public static int getPlayerBotCount() { public static int getPlayerShopCount() {
return playerBotCount; return playerShopCount;
} }
public void updatePlayerNames() { public void updatePlayerNames() {
playerBotCount = 0; playerShopCount = 0;
playerCount = 0; playerCount = 0;
for (int i = 0; i < GameConstants.MAX_PLAYERS; i++) { for (int i = 0; i < GameConstants.MAX_PLAYERS; i++) {
if (players[i] != null) { if (players[i] != null) {
playersCurrentlyOn[i] = players[i].playerName; playersCurrentlyOn[i] = players[i].playerName;
if (players[i].isBot) if (players[i].isBot)
playerBotCount++; playerShopCount++;
else else
playerCount++; playerCount++;
} else { } else {
@@ -276,32 +276,32 @@ public class ShopAssistant {
String itemName = ItemAssistant.getItemName(unNotedItemID); String itemName = ItemAssistant.getItemName(unNotedItemID);
for (int i : GameConstants.ITEM_SELLABLE) { for (int i : GameConstants.ITEM_SELLABLE) {
if (unNotedItemID == i) { if (unNotedItemID == i) {
player.getPacketSender().sendMessage("You can't sell " + ItemAssistant.getItemName(removeId).toLowerCase() + "."); player.getPacketSender().sendMessage("You can't sell " + itemName + ".");
return; return;
} }
} }
boolean IsIn = false; boolean canSellItem = false;
switch (ShopHandler.shopSModifier[player.shopId]) { switch (ShopHandler.shopSModifier[player.shopId]) {
// Only buys what is in stock // Only buys what is in stock
case 2: case 2:
for (int j = 0; j <= ShopHandler.shopItemsStandard[player.shopId]; j++) { for (int j = 0; j <= ShopHandler.shopItemsStandard[player.shopId]; j++) {
if (unNotedItemID == (ShopHandler.shopItems[player.shopId][j] - 1)) { if (unNotedItemID == (ShopHandler.shopItems[player.shopId][j] - 1)) {
IsIn = true; canSellItem = true;
break; break;
} }
} }
break; break;
// General store // General store
case 1: case 1:
IsIn = true; canSellItem = true;
break; break;
// Player owns this store // Player owns this store
case 0: case 0:
IsIn = ShopHandler.playerOwnsStore(player.shopId, player); canSellItem = ShopHandler.playerOwnsStore(player.shopId, player);
break; break;
} }
if (IsIn == false) { if (canSellItem == false) {
player.getPacketSender().sendMessage("You can't sell " + ItemAssistant.getItemName(removeId).toLowerCase() + " to this store."); player.getPacketSender().sendMessage("You can't sell " + ItemAssistant.getItemName(removeId).toLowerCase() + " to this store.");
} else { } else {
int ShopValue = (int) Math.floor(getItemShopValue(unNotedItemID, 1, true)); int ShopValue = (int) Math.floor(getItemShopValue(unNotedItemID, 1, true));
@@ -468,7 +468,7 @@ public class ShopAssistant {
private static int getUnNoted(int itemID){ private static int getUnNoted(int itemID){
String itemName = ItemAssistant.getItemName(itemID).toLowerCase(); String itemName = ItemAssistant.getItemName(itemID).toLowerCase();
String ItemNameUnNotedItem = ItemAssistant.getItemName(itemID - 1).toLowerCase(); String ItemNameUnNotedItem = ItemAssistant.getItemName(itemID - 1).toLowerCase();
if (itemName.contains(ItemNameUnNotedItem)) { if (itemName.equalsIgnoreCase(ItemNameUnNotedItem)) {
itemID--; //Replace the noted item by it's un-noted version. itemID--; //Replace the noted item by it's un-noted version.
} }
return itemID; return itemID;
@@ -477,7 +477,7 @@ public class ShopAssistant {
private static int getNoted(int itemID){ private static int getNoted(int itemID){
String itemName = ItemAssistant.getItemName(itemID).toLowerCase(); String itemName = ItemAssistant.getItemName(itemID).toLowerCase();
String ItemNameUnNotedItem = ItemAssistant.getItemName(itemID + 1).toLowerCase(); String ItemNameUnNotedItem = ItemAssistant.getItemName(itemID + 1).toLowerCase();
if (itemName.contains(ItemNameUnNotedItem)) { if (itemName.equalsIgnoreCase(ItemNameUnNotedItem)) {
itemID++; //Replace the item by it's noted version. itemID++; //Replace the item by it's noted version.
} }
return itemID; return itemID;
@@ -16,9 +16,9 @@ public class ShopHandler {
public static int MAX_SHOP_ITEMS = 40; public static int MAX_SHOP_ITEMS = 40;
public static int SHOW_DELAY = 2; public static int SHOW_DELAY = 1; // Restock 1 item every tick
public static int SPECIAL_DELAY = 60; public static int SPECIAL_DELAY = 60; // Remove overstocked items after 60 ticks
public static int totalshops = 0; public static int totalshops = 0;
@@ -106,11 +106,13 @@ public class ShopHandler {
shopItemsN[shopID][ArrayID] -= 1; shopItemsN[shopID][ArrayID] -= 1;
if (shopItemsN[shopID][ArrayID] <= 0) { if (shopItemsN[shopID][ArrayID] <= 0) {
shopItemsN[shopID][ArrayID] = 0; shopItemsN[shopID][ArrayID] = 0;
ResetItem(shopID, ArrayID); if (shopItemsStandard[shopID] <= ArrayID)
ResetItem(shopID, ArrayID);
} }
} }
private static void ResetItem(int shopID, int ArrayID) { private static void ResetItem(int shopID, int ArrayID) {
if (shopItemsStandard[shopID] > ArrayID) return;
shopItems[shopID][ArrayID] = 0; shopItems[shopID][ArrayID] = 0;
shopItemsN[shopID][ArrayID] = 0; shopItemsN[shopID][ArrayID] = 0;
shopItemsDelay[shopID][ArrayID] = 0; shopItemsDelay[shopID][ArrayID] = 0;
@@ -143,19 +145,19 @@ public class ShopHandler {
token = line.substring(0, spot); token = line.substring(0, spot);
token = token.trim(); token = token.trim();
token2 = line.substring(spot + 1); token2 = line.substring(spot + 1);
token2 = token2.trim(); token3 = token2.trim().split("\t+");
token2_2 = token2.replaceAll("\t+", "\t");
token3 = token2_2.split("\t");
if (token.equals("shop")) { if (token.equals("shop")) {
int shopID = Integer.parseInt(token3[0]); int shopID = Integer.parseInt(token3[0]);
shopName[shopID] = token3[1].replaceAll("_", " "); shopName[shopID] = token3[1].replaceAll("_", " ");
shopSModifier[shopID] = Integer.parseInt(token3[2]); shopSModifier[shopID] = Integer.parseInt(token3[2]);
shopBModifier[shopID] = Integer.parseInt(token3[3]); shopBModifier[shopID] = Integer.parseInt(token3[3]);
for (int i = 0; i < ((token3.length - 4) / 2); i++) { for (int i = 0; i < ((token3.length - 4) / 2); i++) {
if (token3[(4 + (i * 2))] != null) { int itemID = Integer.parseInt(token3[(4 + (i * 2))]);
shopItems[shopID][i] = (Integer.parseInt(token3[(4 + (i * 2))]) + 1); int itemAmount = Integer.parseInt(token3[(5 + (i * 2))]);
shopItemsN[shopID][i] = Integer.parseInt(token3[(5 + (i * 2))]); if (itemID > 0) {
shopItemsSN[shopID][i] = Integer.parseInt(token3[(5 + (i * 2))]); shopItems[shopID][i] = itemID + 1;
shopItemsN[shopID][i] = itemAmount;
shopItemsSN[shopID][i] = itemAmount;
shopItemsStandard[shopID]++; shopItemsStandard[shopID]++;
} else { } else {
break; break;
@@ -164,7 +166,7 @@ public class ShopHandler {
totalshops++; totalshops++;
} }
} else { } else {
if (line.equals("[ENDOFshopLIST]")) { if (line.equalsIgnoreCase("[ENDOFSHOPLIST]")) {
try { try {
characterfile.close(); characterfile.close();
} catch (IOException ioexception) { } catch (IOException ioexception) {
@@ -794,6 +794,7 @@ public class PacketSender {
if (player.getOutStream() == null) return this; if (player.getOutStream() == null) return this;
player.outStream.createFrame(240); player.outStream.createFrame(240);
DecimalFormat twoDForm = new DecimalFormat("#.##"); DecimalFormat twoDForm = new DecimalFormat("#.##");
weight = Math.max(0, weight);
player.outStream.writeWord(Integer.valueOf(twoDForm.format(weight))); player.outStream.writeWord(Integer.valueOf(twoDForm.format(weight)));
return this; return this;
} }
@@ -1,6 +1,5 @@
package com.rebotted.net.packets.impl; package com.rebotted.net.packets.impl;
import com.rebotted.GameConstants;
import com.rebotted.game.content.random.PartyRoom; import com.rebotted.game.content.random.PartyRoom;
import com.rebotted.game.items.GameItem; import com.rebotted.game.items.GameItem;
import com.rebotted.game.items.Item; import com.rebotted.game.items.Item;
@@ -4,7 +4,6 @@ import com.rebotted.GameConstants;
import com.rebotted.GameEngine; import com.rebotted.GameEngine;
import com.rebotted.game.content.music.Music; import com.rebotted.game.content.music.Music;
import com.rebotted.game.globalworldobjects.Doors; import com.rebotted.game.globalworldobjects.Doors;
import com.rebotted.game.players.Client;
import com.rebotted.game.players.Player; import com.rebotted.game.players.Player;
import com.rebotted.net.packets.PacketType; import com.rebotted.net.packets.PacketType;
import com.rebotted.world.GlobalDropsHandler; import com.rebotted.world.GlobalDropsHandler;
@@ -72,7 +72,9 @@ public class ClickItem implements PacketType {
return; return;
} }
switch (itemId) { switch (itemId) {
case 4079:
player.startAnimation(1457);
break;
case 407: case 407:
if (Misc.random(1) == 0) { if (Misc.random(1) == 0) {
player.getItemAssistant().addItem(409, 1); player.getItemAssistant().addItem(409, 1);
@@ -182,25 +184,37 @@ public class ClickItem implements PacketType {
// break; // break;
case 5070: case 5070:
player.getPacketSender().sendMessage("You search the nest."); if (player.getItemAssistant().freeSlots() >= 2) {
player.getItemAssistant().addItem(5076, 1); player.getPacketSender().sendMessage("You search the nest.");
player.getItemAssistant().deleteItem(itemId, 1); player.getItemAssistant().addItem(5076, 1);
player.getItemAssistant().addItem(5075, 1); player.getItemAssistant().deleteItem(itemId, 1);
player.getItemAssistant().addItem(5075, 1);
} else {
player.getPacketSender().sendMessage("You do not have enough inventory space to do that.");
}
break; break;
case 5071: case 5071:
if (player.getItemAssistant().freeSlots() >= 2) {
player.getPacketSender().sendMessage("You search the nest."); player.getPacketSender().sendMessage("You search the nest.");
player.getItemAssistant().addItem(5078, 1); player.getItemAssistant().addItem(5078, 1);
player.getItemAssistant().deleteItem(itemId, 1); player.getItemAssistant().deleteItem(itemId, 1);
player.getItemAssistant().addItem(5075, 1); player.getItemAssistant().addItem(5075, 1);
break; } else {
player.getPacketSender().sendMessage("You do not have enough inventory space to do that.");
}
break;
case 5072: case 5072:
player.getPacketSender().sendMessage("You search the nest."); if (player.getItemAssistant().freeSlots() >= 2) {
player.getItemAssistant().addItem(5077, 1); player.getPacketSender().sendMessage("You search the nest.");
player.getItemAssistant().deleteItem(itemId, 1); player.getItemAssistant().addItem(5077, 1);
player.getItemAssistant().addItem(5075, 1); player.getItemAssistant().deleteItem(itemId, 1);
break; player.getItemAssistant().addItem(5075, 1);
} else {
player.getPacketSender().sendMessage("You do not have enough inventory space to do that.");
}
break;
case 5073: case 5073:
player.getItemAssistant().handleTreeSeeds(itemId); player.getItemAssistant().handleTreeSeeds(itemId);
@@ -74,6 +74,7 @@ public class Commands implements PacketType {
case "coords": case "coords":
case "coord": case "coord":
case "pos": case "pos":
case "loc":
player.getPacketSender().sendMessage("Your coords are [" + player.absX + ", " + player.absY + ", " + player.heightLevel + "]"); player.getPacketSender().sendMessage("Your coords are [" + player.absX + ", " + player.absY + ", " + player.heightLevel + "]");
break; break;
case "password": case "password":
@@ -91,23 +92,50 @@ public class Commands implements PacketType {
player.logout(true); player.logout(true);
} }
break; break;
case "null":
break;
case "players": case "players":
if (PlayerHandler.getPlayerCount() != 1) { case "playershops":
player.getPacketSender().sendMessage("There are currently " + PlayerHandler.getPlayerCount() + " players online."); int count = playerCommand.equalsIgnoreCase("players") ? PlayerHandler.getPlayerCount() : PlayerHandler.getPlayerShopCount();
if (count != 1) {
player.getPacketSender().sendMessage("There are currently " + count + " " + (playerCommand.equalsIgnoreCase("players") ? "players" : "player shops") + " online.");
} else { } else {
player.getPacketSender().sendMessage("There is currently " + PlayerHandler.getPlayerCount() + " player online."); player.getPacketSender().sendMessage("There is currently " + count + " " + (playerCommand.equalsIgnoreCase("players") ? "player" : "player shop") + " online.");
}
if (player.playerRights > 0) {
String[] players = new String[count];
int playerIndex = 0;
for(Player _player : PlayerHandler.players) {
if(_player != null) {
if (playerCommand.equalsIgnoreCase("players") ? !_player.isBot : _player.isBot)
players[playerIndex++] = _player.properName;
}
}
// Clear all lines
for (int i = 8144; i < 8195; i++) player.getPacketSender().sendFrame126("", i);
player.getPacketSender().sendFrame126("@dre@" + (playerCommand.equalsIgnoreCase("players") ? "Players" : "Player Shops"), 8144);
int playersLineNumber = 8147;
for (String line : players){
player.getPacketSender().sendFrame126(line, playersLineNumber++);
}
player.getPacketSender().showInterface(8134);
break;
} }
break; break;
case "shop": case "shop":
BotHandler.playerShop(player); BotHandler.playerShop(player);
break; break;
case "withdrawshop": case "withdrawshop":
player.getPacketSender().sendMessage("Shorter version: ::wshop");
case "wshop": case "wshop":
BotHandler.takeCoins(player); BotHandler.takeCoins(player);
break; break;
case "closeshop": case "closeshop":
player.getPacketSender().sendMessage("Shorter version: ::cshop");
case "cshop": case "cshop":
BotHandler.closeShop(player); BotHandler.closeShop(player);
break; break;
@@ -149,10 +177,49 @@ public class Commands implements PacketType {
player.getPacketSender().closeAllWindows(); player.getPacketSender().closeAllWindows();
break; break;
case "commands": case "commands":
player.getPacketSender().sendMessage("::players, ::highscores, ::loc, ::stuck, ::randomtoggle, ::debug, ::togglegfx, ::shop, ::withdrawshop, ::closeshop"); String[] commands = new String[]{
break; "::players",
case "loc": "Show how many players are online",
player.getPacketSender().sendMessage(player.absX + "," + player.absY); "",
"::highscores",
"Get a list of current highscores",
"",
"::loc, ::pos, ::coord",
"Get your current world position",
"",
"::stuck",
"Return to Lumbridge when stuck",
"",
"::randomtoggle",
"Enable/Disable random events",
"",
"::debug",
"Enable/Disable debug information",
"",
"::togglegfx",
"Enable/Disable graphics rendering",
"",
"::shop",
"Open/Move player owned shop to your location",
"",
"::closeshop",
"Close your player owned shop",
"",
"::withdrawshop",
"Withdraw profits from player owned shop",
};
// Clear all lines
for (int i = 8144; i < 8195; i++) player.getPacketSender().sendFrame126("", i);
player.getPacketSender().sendFrame126("@dre@Commands", 8144);
int commandsLineNumber = 8147;
for (String line : commands){
player.getPacketSender().sendFrame126(line, commandsLineNumber++);
}
player.getPacketSender().showInterface(8134);
break; break;
case "stuck": case "stuck":
player.getPlayerAssistant().startTeleport(LUMBRIDGE_X, LUMBRIDGE_Y, 0, "modern"); player.getPlayerAssistant().startTeleport(LUMBRIDGE_X, LUMBRIDGE_Y, 0, "modern");
@@ -209,10 +276,9 @@ public class Commands implements PacketType {
player.getPacketSender().sendFrame126("@dre@Highscores", 8144); player.getPacketSender().sendFrame126("@dre@Highscores", 8144);
int lineNumber = 8147; int highscoresLineNumber = 8147;
for (String line : highscores){ for (String line : highscores){
System.out.println(line + " - " + lineNumber); player.getPacketSender().sendFrame126(line, highscoresLineNumber++);
player.getPacketSender().sendFrame126(line, lineNumber++);
} }
player.getPacketSender().showInterface(8134); player.getPacketSender().showInterface(8134);
@@ -27,6 +27,9 @@ public class ItemClick2 implements PacketType {
} }
switch (itemId) { switch (itemId) {
case 4079:
c.startAnimation(1459);
break;
} }
} }
@@ -33,6 +33,9 @@ public class ItemClick3 implements PacketType {
player.endCurrentTask(); player.endCurrentTask();
switch (itemId) { switch (itemId) {
case 4079:
player.startAnimation(1460);
break;
case 2552: case 2552:
case 2554: case 2554:
@@ -16,7 +16,7 @@ public class ItemOnItem implements PacketType {
return; return;
} }
player.endCurrentTask(); player.endCurrentTask();
UseItem.ItemonItem(player, itemUsed, useWith); UseItem.itemOnItem(player, itemUsed, useWith);
} }
} }
@@ -11,7 +11,6 @@ import com.rebotted.game.content.skills.firemaking.Firemaking;
import com.rebotted.game.content.skills.firemaking.LogData; import com.rebotted.game.content.skills.firemaking.LogData;
import com.rebotted.game.items.ItemAssistant; import com.rebotted.game.items.ItemAssistant;
import com.rebotted.game.items.impl.RareProtection; import com.rebotted.game.items.impl.RareProtection;
import com.rebotted.game.players.Client;
import com.rebotted.game.players.Player; import com.rebotted.game.players.Player;
import com.rebotted.net.packets.PacketType; import com.rebotted.net.packets.PacketType;
import com.rebotted.util.GameLogger; import com.rebotted.util.GameLogger;
@@ -2,6 +2,7 @@ package com.rebotted.net.packets.impl;
import com.rebotted.game.content.random.PartyRoom; import com.rebotted.game.content.random.PartyRoom;
import com.rebotted.game.content.skills.crafting.JewelryMaking; import com.rebotted.game.content.skills.crafting.JewelryMaking;
import com.rebotted.game.items.Weight;
import com.rebotted.game.items.impl.RareProtection; import com.rebotted.game.items.impl.RareProtection;
import com.rebotted.game.players.Player; import com.rebotted.game.players.Player;
import com.rebotted.net.packets.PacketType; import com.rebotted.net.packets.PacketType;
@@ -16,16 +17,14 @@ public class RemoveItem implements PacketType {
int interfaceId = c.getInStream().readUnsignedWordA(); int interfaceId = c.getInStream().readUnsignedWordA();
int removeSlot = c.getInStream().readUnsignedWordA(); int removeSlot = c.getInStream().readUnsignedWordA();
int removeId = c.getInStream().readUnsignedWordA(); int removeId = c.getInStream().readUnsignedWordA();
if (removeId == 88) {
c.weight += 4.5;
c.getPacketSender().writeWeight((int) c.weight);
}
if (!RareProtection.removeItem(c, removeId)) { if (!RareProtection.removeItem(c, removeId)) {
return; return;
} }
c.endCurrentTask(); c.endCurrentTask();
Weight.updateWeight(c);
switch (interfaceId) { switch (interfaceId) {
case 4233: case 4233:
@@ -90,11 +89,11 @@ public class RemoveItem implements PacketType {
case 1121: case 1121:
case 1122: case 1122:
case 1123: case 1123:
c.getSmithing().readInput(c.playerLevel[c.playerSmithing], c.getSmithing().readInput(c.playerLevel[c.playerSmithing], Integer.toString(removeId), c, 1);
Integer.toString(removeId), c, 1);
break; break;
} }
Weight.updateWeight(c);
} }
} }
@@ -1,5 +1,6 @@
package com.rebotted.net.packets.impl; package com.rebotted.net.packets.impl;
import com.rebotted.game.items.Weight;
import com.rebotted.game.items.impl.RareProtection; import com.rebotted.game.items.impl.RareProtection;
import com.rebotted.game.players.Player; import com.rebotted.game.players.Player;
import com.rebotted.net.packets.PacketType; import com.rebotted.net.packets.PacketType;
@@ -14,6 +15,7 @@ public class WearItem implements PacketType {
player.wearId = player.getInStream().readUnsignedWord(); player.wearId = player.getInStream().readUnsignedWord();
player.wearSlot = player.getInStream().readUnsignedWordA(); player.wearSlot = player.getInStream().readUnsignedWordA();
player.interfaceId = player.getInStream().readUnsignedWordA(); player.interfaceId = player.getInStream().readUnsignedWordA();
Weight.updateWeight(player);
if (!RareProtection.equipItem(player)) { if (!RareProtection.equipItem(player)) {
return; return;
} }
@@ -47,16 +49,13 @@ public class WearItem implements PacketType {
player.getPlayerAssistant().emptyPouch(pouch); player.getPlayerAssistant().emptyPouch(pouch);
return; return;
} }
if (player.wearId == 88 && player.playerEquipment[10] != 88) {
player.weight -= 4.5;
player.getPacketSender().writeWeight((int) player.weight);
}
if (player.wearSlot == player.playerHat) { if (player.wearSlot == player.playerHat) {
player.getPacketSender().setConfig(491, 0); player.getPacketSender().setConfig(491, 0);
} }
player.getPlayerAssistant().handleTiara(); player.getPlayerAssistant().handleTiara();
player.getItemAssistant().wearItem(player.wearId, player.wearSlot); player.getItemAssistant().wearItem(player.wearId, player.wearSlot);
Weight.updateWeight(player);
} }
} }
Binary file not shown.