mirror of
https://github.com/2006-Scape/2006Scape.git
synced 2026-07-04 16:49:04 +00:00
Second World Setup (#518)
* Start Setting Up Second World Added World Number To Login Message Added World Number To Login Interface Made World 2 Listen On Different Port Made Client Connect To 43597 For World 2 * Small Cleanup For World 2 Support Calculate Port For World Based On World Number Use Existing World int For World In Server * Woops Wrong Ports * Set Server Port After Loading Config * Add xpRate Var & Include With XPRate Calculations * Add -w/-world arg to client * Add XP Rate Multiplier For Non-Bot Worlds * More Multi World Stuff Update Integrations(Discord Bot/Website Stuff) For Multiple Worlds Added More XP Rate Dialogue Stuff * Add Kick Command To Discord Bot & Fix Type In ConfigLoader * Create/Use commandPrefix Var For Discord Bot * Small Fixup For World 2 Renamed BOT_WORLD to VARIABLE_XP_RATE Fixed Dialogue/Message grammar Added a check for VARIABLE_XP_RATES to ::xprate command * More Discord Commands(GameKick, MoveHome & Update) *GameKick kicks A player if their client froze but acc stayed logged in *MoveHome removes the need for ::stuck which removes potential for abuse *Update schedules A server update * Minor fixup * 43597 → 43598 * Fix XP Rate Multiplier & add ::xprate to cooamnds list if enabled * Use Either VARIABLE_SKILL_RATE OR XP_RATE Not Both TODO(Convert Player.xpRate Into An Array For Easier Rate Changes) * Create/Use PLAYER_XP_RATES For Easier Rate Changes * Fixed Abusive Client Command Privileges & Added myxprate/checkxprate * Allow Loading VARIABLE_XP_RATES & PLAYER_XP_RATES From Config * Properly Update Client Title Logo If The Cache Has Already Been Downloaded You Will Need To Delete It & Let The Client ReDownload It * Fix Cache CRC Checks For The Client(Allows Cache To Actually Check For Updates) * Add -no-crc & -dev Arguments To Client * Fix Naming For Some Vars * Make CHECK_CRC Description More Descriptive * Fix More Var Descriptions * Cleanup Unused GameConstants Vars & Add More Vars To ConfigLoader Co-authored-by: Danial <admin@redsparr0w.com>
This commit is contained in:
@@ -6137,10 +6137,14 @@ public class DialogueHandler {
|
||||
break;
|
||||
|
||||
case 3116:
|
||||
player.getPacketSender().showInterface(3559);
|
||||
player.canChangeAppearance = true;
|
||||
player.closeTutorialInterface = true;
|
||||
player.nextChat = 0;
|
||||
if(GameConstants.VARIABLE_XP_RATE) {
|
||||
player.getDialogueHandler().sendDialogues(10001, -1);
|
||||
} else {
|
||||
player.getPacketSender().showInterface(3559);
|
||||
player.canChangeAppearance = true;
|
||||
player.closeTutorialInterface = true;
|
||||
player.nextChat = 0;
|
||||
}
|
||||
break;
|
||||
|
||||
case 3117:
|
||||
@@ -7594,6 +7598,34 @@ public class DialogueHandler {
|
||||
);
|
||||
player.dialogueAction = 10000;
|
||||
break;
|
||||
case 10001:
|
||||
sendNpcChat(2244, ChatEmotes.HAPPY_JOYFUL, "Please select the XP rate you'd like.", "this can be increased, but not decreased later on.");
|
||||
player.nextChat = 10002;
|
||||
break;
|
||||
case 10002:
|
||||
sendOption("x" + GameConstants.VARIABLE_XP_RATES[0], "x" + GameConstants.VARIABLE_XP_RATES[1], "x" + GameConstants.VARIABLE_XP_RATES[2], "x" + GameConstants.VARIABLE_XP_RATES[3]);
|
||||
player.dialogueAction = 10002;
|
||||
break;
|
||||
case 10003:
|
||||
sendNpcChat(2244, ChatEmotes.HAPPY_JOYFUL, "Are you sure x" + player.getXPRate() + " is the XP rate you'd like?");
|
||||
player.nextChat = 10004;
|
||||
break;
|
||||
case 10004:
|
||||
sendOption("Yes", "No");
|
||||
player.dialogueAction = 10004;
|
||||
break;
|
||||
case 10005:
|
||||
sendOption("x" + GameConstants.VARIABLE_XP_RATES[1], "x" + GameConstants.VARIABLE_XP_RATES[2], "x" + GameConstants.VARIABLE_XP_RATES[3]);
|
||||
player.dialogueAction = 10005;
|
||||
break;
|
||||
case 10006:
|
||||
sendOption("x" + GameConstants.VARIABLE_XP_RATES[2], "x" + GameConstants.VARIABLE_XP_RATES[3]);
|
||||
player.dialogueAction = 10006;
|
||||
break;
|
||||
case 10007:
|
||||
sendOption("x" + GameConstants.VARIABLE_XP_RATES[3], "Don't Change");
|
||||
player.dialogueAction = 10007;
|
||||
break;
|
||||
}
|
||||
}
|
||||
public void chatboxText(String text, String text1, String text2,
|
||||
|
||||
@@ -104,6 +104,12 @@ public class DialogueOptions {
|
||||
player.getDialogueHandler().sendStatement("You summoned your shop!");
|
||||
BotHandler.playerShop(player);
|
||||
return;
|
||||
case 10005:
|
||||
player.setXPRate(GameConstants.VARIABLE_XP_RATES[1]);
|
||||
player.getPacketSender().sendMessage("Your XP rate is now set to x" + player.getXPRate() + " you can increase your rate in the future by using");
|
||||
player.getPacketSender().sendMessage("::xprate");
|
||||
player.getPacketSender().closeAllWindows();
|
||||
return;
|
||||
}
|
||||
player.dialogueAction = 0;
|
||||
player.getPacketSender().closeAllWindows();
|
||||
@@ -192,6 +198,12 @@ public class DialogueOptions {
|
||||
player.getDialogueHandler().sendStatement("You close your shop!");
|
||||
BotHandler.closeShop(player);
|
||||
return;
|
||||
case 10005:
|
||||
player.setXPRate(GameConstants.VARIABLE_XP_RATES[2]);
|
||||
player.getPacketSender().sendMessage("Your XP rate is now set to x" + player.getXPRate() + " you can increase your rate in the future by using");
|
||||
player.getPacketSender().sendMessage("::xprate");
|
||||
player.getPacketSender().closeAllWindows();
|
||||
return;
|
||||
}
|
||||
player.dialogueAction = 0;
|
||||
player.getPacketSender().closeAllWindows();
|
||||
@@ -283,6 +295,11 @@ public class DialogueOptions {
|
||||
player.getDialogueHandler().sendStatement("You withdraw " + Bot.formatSellPrice(BotHandler.checkCoins(player)) + " from your shop!");
|
||||
BotHandler.takeCoins(player);
|
||||
return;
|
||||
case 10005:
|
||||
player.setXPRate(GameConstants.VARIABLE_XP_RATES[3]);
|
||||
player.getPacketSender().sendMessage("Your XP rate is now set to x" + player.getXPRate() + " you now have the highest XP rate.");
|
||||
player.getPacketSender().closeAllWindows();
|
||||
return;
|
||||
}
|
||||
player.dialogueAction = 0;
|
||||
player.getPacketSender().closeAllWindows();
|
||||
@@ -618,11 +635,37 @@ public class DialogueOptions {
|
||||
player.getDialogueHandler().sendDialogues(3586, player.npcType);
|
||||
return;
|
||||
}
|
||||
else if (player.dialogueAction == 7559)
|
||||
{
|
||||
else if (player.dialogueAction == 7559) {
|
||||
player.getDialogueHandler().sendDialogues(3864, player.npcType);
|
||||
return;
|
||||
}
|
||||
} else if (player.dialogueAction == 10004) {
|
||||
if(!player.closeTutorialInterface) {
|
||||
player.getPacketSender().sendMessage("Your XP rate is now set to x" + player.getXPRate() + " you can increase your rate in the future by using");
|
||||
player.getPacketSender().sendMessage("::xprate");
|
||||
player.getPacketSender().showInterface(3559);
|
||||
player.canChangeAppearance = true;
|
||||
player.closeTutorialInterface = true;
|
||||
return;
|
||||
} else if (player.getXPRate() != + GameConstants.VARIABLE_XP_RATES[3]) {
|
||||
player.getPacketSender().sendMessage("Your XP rate is now set to x" + player.getXPRate() + " you can increase your rate in the future by using");
|
||||
player.getPacketSender().sendMessage("::xprate");
|
||||
return;
|
||||
} else {
|
||||
player.getPacketSender().sendMessage("Your XP rate is now set to x" + player.getXPRate() + " you now have the highest XP rate.");
|
||||
return;
|
||||
}
|
||||
} else if(player.dialogueAction == 10006) {
|
||||
player.setXPRate(GameConstants.VARIABLE_XP_RATES[2]);
|
||||
player.getPacketSender().sendMessage("Your XP rate is now set to x" + player.getXPRate() + " you can increase your rate in the future by using");
|
||||
player.getPacketSender().sendMessage("::xprate");
|
||||
player.getPacketSender().closeAllWindows();
|
||||
return;
|
||||
} else if(player.dialogueAction == 10007) {
|
||||
player.setXPRate(GameConstants.VARIABLE_XP_RATES[3]);
|
||||
player.getPacketSender().sendMessage("Your XP rate is now set to x" + player.getXPRate() + " you now have the highest XP rate.");
|
||||
player.getPacketSender().closeAllWindows();
|
||||
return;
|
||||
}
|
||||
player.dialogueAction = 0;
|
||||
player.getPacketSender().closeAllWindows();
|
||||
break;
|
||||
@@ -848,6 +891,15 @@ public class DialogueOptions {
|
||||
{
|
||||
player.getDialogueHandler().sendDialogues(3865, player.npcType);
|
||||
return;
|
||||
} else if (player.dialogueAction == 10004) {
|
||||
player.getDialogueHandler().sendDialogues(10002, 2244);
|
||||
return;
|
||||
} else if(player.dialogueAction == 10006) {
|
||||
player.setXPRate(GameConstants.VARIABLE_XP_RATES[3]);
|
||||
player.getPacketSender().sendMessage("Your XP rate is now set to x" + player.getXPRate() + " you now have the highest XP rate.");
|
||||
player.getPacketSender().sendMessage("::xprate");
|
||||
player.getPacketSender().closeAllWindows();
|
||||
return;
|
||||
}
|
||||
player.dialogueAction = 0;
|
||||
player.getPacketSender().closeAllWindows();
|
||||
@@ -922,6 +974,10 @@ public class DialogueOptions {
|
||||
if (player.dialogueAction == 701) {
|
||||
player.getDialogueHandler().sendDialogues(3561, player.npcType);
|
||||
}
|
||||
if (player.dialogueAction == 10002) {
|
||||
player.setXPRate(GameConstants.VARIABLE_XP_RATES[0]);
|
||||
player.getDialogueHandler().sendDialogues(10003, player.npcType);
|
||||
}
|
||||
break;
|
||||
|
||||
case 9179:
|
||||
@@ -991,6 +1047,10 @@ public class DialogueOptions {
|
||||
if (player.dialogueAction == 701) {
|
||||
player.getDialogueHandler().sendDialogues(3562, player.npcType);
|
||||
}
|
||||
if (player.dialogueAction == 10002) {
|
||||
player.setXPRate(GameConstants.VARIABLE_XP_RATES[1]);
|
||||
player.getDialogueHandler().sendDialogues(10003, player.npcType);
|
||||
}
|
||||
break;
|
||||
|
||||
case 9180:
|
||||
@@ -1063,6 +1123,10 @@ public class DialogueOptions {
|
||||
if (player.dialogueAction == 701) {
|
||||
player.getDialogueHandler().sendDialogues(3563, player.npcType);
|
||||
}
|
||||
if (player.dialogueAction == 10002) {
|
||||
player.setXPRate(GameConstants.VARIABLE_XP_RATES[2]);
|
||||
player.getDialogueHandler().sendDialogues(10003, player.npcType);
|
||||
}
|
||||
break;
|
||||
|
||||
case 9181:
|
||||
@@ -1120,6 +1184,10 @@ public class DialogueOptions {
|
||||
if (player.dialogueAction == 701) {
|
||||
player.getDialogueHandler().sendDialogues(3564, player.npcType);
|
||||
}
|
||||
if (player.dialogueAction == 10002) {
|
||||
player.setXPRate(GameConstants.VARIABLE_XP_RATES[3]);
|
||||
player.getDialogueHandler().sendDialogues(10003, player.npcType);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -98,7 +98,8 @@ public abstract class Player {
|
||||
|
||||
public byte buffer[] = null;
|
||||
public String lastConnectedFrom;
|
||||
private Compost compost = new Compost(this);
|
||||
public static int xpRate = 1;
|
||||
private Compost compost = new Compost(this);
|
||||
private Allotments allotment = new Allotments(this);
|
||||
private Flowers flower = new Flowers(this);
|
||||
private Herbs herb = new Herbs(this);
|
||||
@@ -166,6 +167,10 @@ public abstract class Player {
|
||||
private DoubleGates doubleGates = new DoubleGates();
|
||||
public int lastMainFrameInterface = -1; //Possibly used in future to prevent packet exploits
|
||||
|
||||
public int getXPRate() { return xpRate; }
|
||||
|
||||
public void setXPRate(int xpRate) { this.xpRate = xpRate; }
|
||||
|
||||
public boolean isPreaching() {
|
||||
return preaching;
|
||||
}
|
||||
@@ -173,9 +178,9 @@ public abstract class Player {
|
||||
public void setPreaching(boolean preaching) {
|
||||
this.preaching = preaching;
|
||||
}
|
||||
|
||||
|
||||
public boolean preaching;
|
||||
|
||||
|
||||
public Compost getCompost() {
|
||||
return compost;
|
||||
}
|
||||
@@ -223,12 +228,12 @@ public abstract class Player {
|
||||
public ToolLeprechaun getFarmingTools() {
|
||||
return toolLeprechaun;
|
||||
}
|
||||
|
||||
|
||||
|
||||
public LogCuttingInterface getFletching() {
|
||||
return fletching;
|
||||
}
|
||||
|
||||
|
||||
public SingleGates getSingleGates() {
|
||||
return singleGates;
|
||||
}
|
||||
@@ -404,7 +409,7 @@ public abstract class Player {
|
||||
public MageTrainingArena getMageTrainingArena() {
|
||||
return mageArena;
|
||||
}
|
||||
|
||||
|
||||
public Trading getTrading() {
|
||||
return trading;
|
||||
}
|
||||
@@ -444,13 +449,13 @@ public abstract class Player {
|
||||
public Inventory getInventory() {
|
||||
return inventory;
|
||||
}
|
||||
|
||||
|
||||
private Inventory inventory = new Inventory(this);
|
||||
|
||||
|
||||
|
||||
|
||||
private int tempInteger;
|
||||
public boolean tempBoolean;
|
||||
|
||||
|
||||
public void setTempInteger(int tempInteger) {
|
||||
this.tempInteger = tempInteger;
|
||||
}
|
||||
@@ -460,17 +465,17 @@ public abstract class Player {
|
||||
}
|
||||
|
||||
public int totalShopItems;
|
||||
|
||||
|
||||
public boolean stopPlayer(boolean stop) {
|
||||
return (stop ? stopPlayerPacket == true : stopPlayerPacket == false);
|
||||
}
|
||||
|
||||
|
||||
public long objectDelay;
|
||||
|
||||
|
||||
public long getObjectDelay() {
|
||||
return (objectDelay);
|
||||
}
|
||||
|
||||
|
||||
public long setObjectDelay(long delay) {
|
||||
return (objectDelay = delay);
|
||||
}
|
||||
@@ -981,7 +986,7 @@ public abstract class Player {
|
||||
if (System.currentTimeMillis() - singleCombatDelay2 > 3300) {
|
||||
underAttackBy2 = 0;
|
||||
}
|
||||
|
||||
|
||||
if (System.currentTimeMillis() - restoreStatsDelay > 60000) {
|
||||
restoreStatsDelay = System.currentTimeMillis();
|
||||
for (int skill = 0; skill < playerLevel.length; skill++) {
|
||||
@@ -1398,20 +1403,20 @@ public abstract class Player {
|
||||
restoreStatsDelay, logoutDelay, buryDelay, foodDelay, potDelay,
|
||||
doorDelay, doubleDoorDelay, buySlayerTimer, lastIncrease,
|
||||
boneDelay, leverDelay = 0, searchObjectDelay = 0, clickDelay = 0;
|
||||
|
||||
|
||||
public boolean hideYell;
|
||||
|
||||
|
||||
private Npc specialTarget = null;
|
||||
|
||||
|
||||
public void setSpecialTarget(Npc target) {
|
||||
this.specialTarget = target;
|
||||
}
|
||||
|
||||
|
||||
public Npc getSpecialTarget() {
|
||||
return specialTarget;
|
||||
}
|
||||
|
||||
|
||||
public int miningAxe = -1, woodcuttingAxe = -1;
|
||||
|
||||
public boolean initialized, musicOn = true, luthas,
|
||||
@@ -1695,7 +1700,7 @@ public abstract class Player {
|
||||
4096, 8192, 16384, 32768, 65536, 131072, 262144, 524288, 2097152,
|
||||
8388608, 16777216, 67108864, 134217728 };
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Combat variables
|
||||
*/
|
||||
@@ -1713,7 +1718,7 @@ public abstract class Player {
|
||||
/**
|
||||
* End
|
||||
*/
|
||||
|
||||
|
||||
public int clickNpcType, clickObjectType, objectId, objectX,
|
||||
objectY, npcIndex, npcClickIndex, npcType;
|
||||
public int pItemX, pItemY, pItemId;
|
||||
@@ -2130,11 +2135,11 @@ public abstract class Player {
|
||||
walkingQueueY[wQueueWritePtr] = y;
|
||||
wQueueWritePtr = next;
|
||||
}
|
||||
|
||||
|
||||
public boolean checkRangeDistance() {
|
||||
return (usingRangeWeapon || usingBow);
|
||||
}
|
||||
|
||||
|
||||
public int gatherRangeDistance(int distance) {
|
||||
//dart (non long range)
|
||||
if (usingRangeWeapon && RangeData.usingDart(this) && fightMode != 3) {
|
||||
@@ -2148,7 +2153,7 @@ public abstract class Player {
|
||||
//dart, knife, throwing axe (long range)
|
||||
} else if (usingRangeWeapon && fightMode == 3) {
|
||||
distance = RangeData.usingDart(this) ? 5 : 6;
|
||||
//short bow
|
||||
//short bow
|
||||
} else if (usingBow && !RangeData.usingLongbow(this)) {
|
||||
distance = fightMode == 3 ? 7 : 9;
|
||||
}
|
||||
@@ -2507,74 +2512,74 @@ public abstract class Player {
|
||||
} else {
|
||||
playerProps.writeByte(0);
|
||||
}
|
||||
|
||||
|
||||
if (playerEquipment[ItemConstants.CAPE] > 1) {
|
||||
playerProps.writeWord(0x200 + playerEquipment[ItemConstants.CAPE]);
|
||||
} else {
|
||||
playerProps.writeByte(0);
|
||||
}
|
||||
|
||||
|
||||
if (playerEquipment[ItemConstants.AMULET] > 1) {
|
||||
playerProps.writeWord(0x200 + playerEquipment[ItemConstants.AMULET]);
|
||||
} else {
|
||||
playerProps.writeByte(0);
|
||||
}
|
||||
|
||||
|
||||
if (playerEquipment[ItemConstants.WEAPON] > 1) {
|
||||
playerProps.writeWord(0x200 + playerEquipment[ItemConstants.WEAPON]);
|
||||
} else {
|
||||
playerProps.writeByte(0);
|
||||
}
|
||||
|
||||
|
||||
if (playerEquipment[ItemConstants.CHEST] > 1) {
|
||||
playerProps.writeWord(0x200 + playerEquipment[ItemConstants.CHEST]);
|
||||
} else {
|
||||
playerProps.writeWord(0x100 + playerAppearance[2]);
|
||||
}
|
||||
|
||||
|
||||
if (playerEquipment[ItemConstants.SHIELD] > 1) {
|
||||
playerProps.writeWord(0x200 + playerEquipment[ItemConstants.SHIELD]);
|
||||
} else {
|
||||
playerProps.writeByte(0);
|
||||
}
|
||||
|
||||
|
||||
if (!ItemData.isFullBody(playerEquipment[ItemConstants.CHEST])) {
|
||||
playerProps.writeWord(0x100 + playerAppearance[3]);
|
||||
} else {
|
||||
playerProps.writeByte(0);
|
||||
}
|
||||
|
||||
|
||||
if (playerEquipment[ItemConstants.LEGS] > 1) {
|
||||
playerProps.writeWord(0x200 + playerEquipment[ItemConstants.LEGS]);
|
||||
} else {
|
||||
playerProps.writeWord(0x100 + playerAppearance[5]);
|
||||
}
|
||||
|
||||
|
||||
if (!ItemData.isFullHelm(playerEquipment[ItemConstants.HAT])
|
||||
&& !ItemData.isFullMask(playerEquipment[ItemConstants.HAT])) {
|
||||
playerProps.writeWord(0x100 + playerAppearance[1]);
|
||||
} else {
|
||||
playerProps.writeByte(0);
|
||||
}
|
||||
|
||||
|
||||
if (playerEquipment[ItemConstants.HANDS] > 1) {
|
||||
playerProps.writeWord(0x200 + playerEquipment[ItemConstants.HANDS]);
|
||||
} else {
|
||||
playerProps.writeWord(0x100 + playerAppearance[4]);
|
||||
}
|
||||
|
||||
|
||||
if (playerEquipment[ItemConstants.FEET] > 1) {
|
||||
playerProps.writeWord(0x200 + playerEquipment[ItemConstants.FEET]);
|
||||
} else {
|
||||
playerProps.writeWord(0x100 + playerAppearance[6]);
|
||||
}
|
||||
|
||||
|
||||
if (playerAppearance[0] != 1 && !ItemData.isFullMask(playerEquipment[ItemConstants.HAT])) {
|
||||
playerProps.writeWord(0x100 + playerAppearance[7]);
|
||||
} else {
|
||||
playerProps.writeByte(0);
|
||||
}
|
||||
|
||||
|
||||
} else {//send npc data
|
||||
playerProps.writeWord(-1);//Tells client that were being a npc
|
||||
playerProps.writeWord(npcId2);//send NpcID
|
||||
|
||||
@@ -17,7 +17,6 @@ import com.rs2.game.content.music.sound.SoundList;
|
||||
import com.rs2.game.content.randomevents.RandomEventHandler;
|
||||
import com.rs2.game.content.skills.SkillData;
|
||||
import com.rs2.game.content.skills.SkillHandler;
|
||||
import com.rs2.game.content.skills.smithing.Superheat;
|
||||
import com.rs2.game.items.GameItem;
|
||||
import com.rs2.game.items.ItemAssistant;
|
||||
import com.rs2.game.items.ItemConstants;
|
||||
@@ -95,7 +94,7 @@ public class PlayerAssistant {
|
||||
|
||||
public void loginScreen() {
|
||||
player.getPacketSender().showInterface(15244);
|
||||
player.getPacketSender().sendString("Welcome to " + GameConstants.SERVER_NAME + "\\n", 15257);
|
||||
player.getPacketSender().sendString("Welcome to " + GameConstants.SERVER_NAME + " World: " + GameConstants.WORLD + "\\n", 15257);
|
||||
int currentDay = player.getLastLogin() - player.lastLoginDate;
|
||||
|
||||
if (player.playerLevel[GameConstants.HERBLORE] < 3) {
|
||||
@@ -1833,7 +1832,7 @@ public class PlayerAssistant {
|
||||
player.getItemAssistant().clearBank();
|
||||
player.getPlayerAssistant().addStarter();
|
||||
player.getPlayerAssistant().movePlayer(3233, 3229, 0);
|
||||
player.getPacketSender().sendMessage("Welcome to @blu@" + GameConstants.SERVER_NAME + "@bla@ - we are currently in Server Stage v@blu@" + GameConstants.TEST_VERSION + "@bla@.");
|
||||
player.getPacketSender().sendMessage("Welcome to @blu@" + GameConstants.SERVER_NAME + " World: " + GameConstants.WORLD + "@bla@ - we are currently in Server Stage v@blu@" + GameConstants.TEST_VERSION + "@bla@.");
|
||||
player.getPacketSender().sendMessage("@red@Did you know?@bla@ We're open source and pull requests are welcome!");
|
||||
player.getPacketSender().sendMessage("Source code: github.com/2006-Scape/2006Scape");
|
||||
player.getPacketSender().sendMessage("Discord: https://discord.gg/hZ6VfWG");
|
||||
@@ -2033,7 +2032,11 @@ public class PlayerAssistant {
|
||||
if (player.tutorialProgress < 36 && player.playerLevel[skill] == 3 && GameConstants.TUTORIAL_ISLAND) {
|
||||
return false;
|
||||
}
|
||||
amount *= GameConstants.XP_RATE;
|
||||
if (GameConstants.VARIABLE_XP_RATE){
|
||||
amount *= player.getXPRate();
|
||||
} else {
|
||||
amount *= GameConstants.XP_RATE;
|
||||
}
|
||||
int oldLevel = getLevelForXP(player.playerXP[skill]);
|
||||
player.playerXP[skill] += amount;
|
||||
if (oldLevel < getLevelForXP(player.playerXP[skill])) {
|
||||
|
||||
@@ -92,6 +92,8 @@ public class PlayerSave {
|
||||
case "character-rights":
|
||||
player.playerRights = Integer.parseInt(token2);
|
||||
break;
|
||||
case "xp-rate":
|
||||
player.xpRate = Integer.parseInt(token2);
|
||||
case "last-ip":
|
||||
player.lastConnectedFrom = token2;
|
||||
break;
|
||||
@@ -593,6 +595,8 @@ public class PlayerSave {
|
||||
characterfile.newLine();
|
||||
characterfile.write("character-rights = " + player.playerRights);
|
||||
characterfile.newLine();
|
||||
characterfile.write("xp-rate = " + player.xpRate);
|
||||
characterfile.newLine();
|
||||
characterfile.write("last-ip = " + player.connectedFrom);
|
||||
characterfile.newLine();
|
||||
characterfile.write("isBot = " + player.isBot);
|
||||
|
||||
Reference in New Issue
Block a user