Compare commits

...

7 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
16 changed files with 174 additions and 105 deletions
+5 -1
View File
@@ -5,7 +5,11 @@
import javax.swing.*;
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.io.ByteArrayInputStream;
import java.io.DataInputStream;
-12
View File
@@ -3,18 +3,6 @@
* 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
* THIS IS TO ALLOW LOCAL PARABOT TO CONTINUE TO WORK
+7 -1
View File
@@ -4,7 +4,13 @@
import javax.swing.*;
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.FocusListener;
import java.awt.event.KeyEvent;
+9 -1
View File
@@ -2,7 +2,15 @@
// Jad home page: http://www.kpdus.com/jad.html
// 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")
final class RSFrame extends Frame {
@@ -25,16 +25,15 @@ public class Smelting extends SkillHandler {
* Handles Smelting data.
*/
public static int[][] data = {
// index ,lvl required, XP, item required, item2, COAL AMOUNT,
// Final item(BAR)
{ 1, 1, 6, COPPER, TIN, -1, 2349 }, // Bronze
// index ,lvl required, XP, primary item required, secondary item required, secondary item amount, output item(BAR)
{ 1, 1, 6, COPPER, TIN, 1, 2349 }, // Bronze
{ 2, 15, 12, IRON, -1, -1, 2351 }, // iron
{ 3, 20, 17, IRON, COAL, 2, 2353 }, // Steel
{ 4, 50, 30, MITH, COAL, 4, 2359 }, // Mith
{ 5, 70, 37, ADDY, COAL, 6, 2361 }, // Addy
{ 6, 85, 50, RUNE, COAL, 8, 2363 }, // Rune
{ 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) {
for (int j = 0; j < SMELT_FRAME.length; j++) {
c.getPacketSender().sendFrame246(SMELT_FRAME[j], 150,
SMELT_BARS[j]);
c.getPacketSender().sendFrame246(SMELT_FRAME[j], 150, SMELT_BARS[j]);
}
c.getPacketSender().sendChatInterface(2400);
c.isSmelting = true;
@@ -70,30 +68,22 @@ public class Smelting extends SkillHandler {
private static void smeltBar(final Player c, int bartype) {
for (int i = 0; i < data.length; i++) {
if (bartype == data[i][0]) {
// Check player has the correct 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.");
return;
}
if (data[i][3] > 0 && data[i][4] > 0) { // All OTHER bars
if (!c.getItemAssistant().playerHasItem(data[i][3]) || !c.getItemAssistant().playerHasItem(data[i][4])) {
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
// Check the player has all required items
if (data[i][4] <= 0) { // Bars with only a primary requirement
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();
return;
}
}
if (data[i][5] > 0) { // Bars with more than 1 coal requirement
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.");
} else { // Bars with a secondary requirement
if (!c.getItemAssistant().playerHasItem(data[i][3]) || !c.getItemAssistant().playerHasItem(data[i][4], data[i][5])) {
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.");
c.getPacketSender().closeAllWindows();
return;
}
@@ -109,10 +99,10 @@ public class Smelting extends SkillHandler {
c.playerSkillProp[13][0] = data[i][0];// index
c.playerSkillProp[13][1] = data[i][1];// Level required
c.playerSkillProp[13][2] = data[i][2];// XP
c.playerSkillProp[13][3] = data[i][3];// item required
c.playerSkillProp[13][4] = data[i][4];// item required 2
c.playerSkillProp[13][5] = data[i][5];// coal amount
c.playerSkillProp[13][6] = data[i][6];// Final Item
c.playerSkillProp[13][3] = data[i][3];// primary item required
c.playerSkillProp[13][4] = data[i][4];// secondary item required
c.playerSkillProp[13][5] = data[i][5];// secondary item amount
c.playerSkillProp[13][6] = data[i][6];// output item
c.getPacketSender().closeAllWindows();
c.startAnimation(899);
@@ -122,45 +112,40 @@ public class Smelting extends SkillHandler {
@Override
public void execute(CycleEventContainer container) {
deleteTime(c);
// Remove primary item
c.getItemAssistant().deleteItem(c.playerSkillProp[13][3], 1);
if (c.playerSkillProp[13][5] == -1) {
c.getItemAssistant().deleteItem(c.playerSkillProp[13][4], 1);
}
if (c.playerSkillProp[13][5] > 0) {// if coal amount is > 0
// Check if required and remove secondary items
if (c.playerSkillProp[13][4] > 0 && c.playerSkillProp[13][5] > 0) {
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) {
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] == IRON && c.playerSkillProp[13][4] == -1) {
// Ring of forging
if (c.playerEquipment[c.playerRing] == 2568) {
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) {
c.getPacketSender().sendMessage("You receive an " + ItemAssistant.getItemName(c.playerSkillProp[13][6]).toLowerCase() + ".");
} else {
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.getItemAssistant().addItem(c.playerSkillProp[13][6], 1);// item
} else {
if (c.playerSkillProp[13][3] != IRON) {
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 a " + 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
}
// ///////////////////////////////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();
}
}
////////////////////// CHECKING //////////////////////
if (c.doAmount <= 0) {
resetSmelting(c);
container.stop();
@@ -173,6 +158,18 @@ public class Smelting extends SkillHandler {
resetSmelting(c);
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();
}
}
}
@@ -13,7 +13,7 @@ import com.rebotted.world.GlobalDropsHandler;
public class PlayerHandler {
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 boolean updateAnnounced;
public static boolean updateRunning;
@@ -54,18 +54,18 @@ public class PlayerHandler {
return playerCount;
}
public static int getPlayerBotCount() {
return playerBotCount;
public static int getPlayerShopCount() {
return playerShopCount;
}
public void updatePlayerNames() {
playerBotCount = 0;
playerShopCount = 0;
playerCount = 0;
for (int i = 0; i < GameConstants.MAX_PLAYERS; i++) {
if (players[i] != null) {
playersCurrentlyOn[i] = players[i].playerName;
if (players[i].isBot)
playerBotCount++;
playerShopCount++;
else
playerCount++;
} else {
@@ -276,32 +276,32 @@ public class ShopAssistant {
String itemName = ItemAssistant.getItemName(unNotedItemID);
for (int i : GameConstants.ITEM_SELLABLE) {
if (unNotedItemID == i) {
player.getPacketSender().sendMessage("You can't sell " + ItemAssistant.getItemName(removeId).toLowerCase() + ".");
player.getPacketSender().sendMessage("You can't sell " + itemName + ".");
return;
}
}
boolean IsIn = false;
boolean canSellItem = false;
switch (ShopHandler.shopSModifier[player.shopId]) {
// Only buys what is in stock
case 2:
for (int j = 0; j <= ShopHandler.shopItemsStandard[player.shopId]; j++) {
if (unNotedItemID == (ShopHandler.shopItems[player.shopId][j] - 1)) {
IsIn = true;
canSellItem = true;
break;
}
}
break;
// General store
case 1:
IsIn = true;
canSellItem = true;
break;
// Player owns this store
case 0:
IsIn = ShopHandler.playerOwnsStore(player.shopId, player);
canSellItem = ShopHandler.playerOwnsStore(player.shopId, player);
break;
}
if (IsIn == false) {
if (canSellItem == false) {
player.getPacketSender().sendMessage("You can't sell " + ItemAssistant.getItemName(removeId).toLowerCase() + " to this store.");
} else {
int ShopValue = (int) Math.floor(getItemShopValue(unNotedItemID, 1, true));
@@ -468,7 +468,7 @@ public class ShopAssistant {
private static int getUnNoted(int itemID){
String itemName = ItemAssistant.getItemName(itemID).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.
}
return itemID;
@@ -477,7 +477,7 @@ public class ShopAssistant {
private static int getNoted(int itemID){
String itemName = ItemAssistant.getItemName(itemID).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.
}
return itemID;
@@ -16,9 +16,9 @@ public class ShopHandler {
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;
@@ -106,11 +106,13 @@ public class ShopHandler {
shopItemsN[shopID][ArrayID] -= 1;
if (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) {
if (shopItemsStandard[shopID] > ArrayID) return;
shopItems[shopID][ArrayID] = 0;
shopItemsN[shopID][ArrayID] = 0;
shopItemsDelay[shopID][ArrayID] = 0;
@@ -143,19 +145,19 @@ public class ShopHandler {
token = line.substring(0, spot);
token = token.trim();
token2 = line.substring(spot + 1);
token2 = token2.trim();
token2_2 = token2.replaceAll("\t+", "\t");
token3 = token2_2.split("\t");
token3 = token2.trim().split("\t+");
if (token.equals("shop")) {
int shopID = Integer.parseInt(token3[0]);
shopName[shopID] = token3[1].replaceAll("_", " ");
shopSModifier[shopID] = Integer.parseInt(token3[2]);
shopBModifier[shopID] = Integer.parseInt(token3[3]);
for (int i = 0; i < ((token3.length - 4) / 2); i++) {
if (token3[(4 + (i * 2))] != null) {
shopItems[shopID][i] = (Integer.parseInt(token3[(4 + (i * 2))]) + 1);
shopItemsN[shopID][i] = Integer.parseInt(token3[(5 + (i * 2))]);
shopItemsSN[shopID][i] = Integer.parseInt(token3[(5 + (i * 2))]);
int itemID = Integer.parseInt(token3[(4 + (i * 2))]);
int itemAmount = Integer.parseInt(token3[(5 + (i * 2))]);
if (itemID > 0) {
shopItems[shopID][i] = itemID + 1;
shopItemsN[shopID][i] = itemAmount;
shopItemsSN[shopID][i] = itemAmount;
shopItemsStandard[shopID]++;
} else {
break;
@@ -164,7 +166,7 @@ public class ShopHandler {
totalshops++;
}
} else {
if (line.equals("[ENDOFshopLIST]")) {
if (line.equalsIgnoreCase("[ENDOFSHOPLIST]")) {
try {
characterfile.close();
} catch (IOException ioexception) {
@@ -74,6 +74,7 @@ public class Commands implements PacketType {
case "coords":
case "coord":
case "pos":
case "loc":
player.getPacketSender().sendMessage("Your coords are [" + player.absX + ", " + player.absY + ", " + player.heightLevel + "]");
break;
case "password":
@@ -91,13 +92,38 @@ public class Commands implements PacketType {
player.logout(true);
}
break;
case "null":
break;
case "players":
if (PlayerHandler.getPlayerCount() != 1) {
player.getPacketSender().sendMessage("There are currently " + PlayerHandler.getPlayerCount() + " players online.");
case "playershops":
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 {
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;
case "shop":
@@ -151,10 +177,49 @@ public class Commands implements PacketType {
player.getPacketSender().closeAllWindows();
break;
case "commands":
player.getPacketSender().sendMessage("::players, ::highscores, ::loc, ::stuck, ::randomtoggle, ::debug, ::togglegfx, ::shop");
break;
case "loc":
player.getPacketSender().sendMessage(player.absX + "," + player.absY);
String[] commands = new String[]{
"::players",
"Show how many players are online",
"",
"::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;
case "stuck":
player.getPlayerAssistant().startTeleport(LUMBRIDGE_X, LUMBRIDGE_Y, 0, "modern");
@@ -211,10 +276,9 @@ public class Commands implements PacketType {
player.getPacketSender().sendFrame126("@dre@Highscores", 8144);
int lineNumber = 8147;
int highscoresLineNumber = 8147;
for (String line : highscores){
System.out.println(line + " - " + lineNumber);
player.getPacketSender().sendFrame126(line, lineNumber++);
player.getPacketSender().sendFrame126(line, highscoresLineNumber++);
}
player.getPacketSender().showInterface(8134);