From f9acd64eb8d45177504760870b2ac331b94f263b Mon Sep 17 00:00:00 2001
From: mobius <8391001+MobiusDevelopment@users.noreply.github.com>
Date: Thu, 29 Jan 2015 20:50:25 +0000
Subject: [PATCH] Addition of PC points admin commands.
---
trunk/dist/game/config/adminCommands.xml | 7 +
trunk/dist/game/data/html/admin/main_menu.htm | 1 +
trunk/dist/game/data/html/admin/ncoins.htm | 2 +-
trunk/dist/game/data/html/admin/pcbang.htm | 38 +++
.../data/scripts/handlers/MasterHandler.java | 2 +
.../AdminPCBangPoints.java | 246 ++++++++++++++++++
.../instancemanager/PcCafePointsManager.java | 11 +-
.../model/actor/instance/L2PcInstance.java | 6 +-
8 files changed, 302 insertions(+), 11 deletions(-)
create mode 100644 trunk/dist/game/data/html/admin/pcbang.htm
create mode 100644 trunk/dist/game/data/scripts/handlers/admincommandhandlers/AdminPCBangPoints.java
diff --git a/trunk/dist/game/config/adminCommands.xml b/trunk/dist/game/config/adminCommands.xml
index a04acd944a..e021c445a4 100644
--- a/trunk/dist/game/config/adminCommands.xml
+++ b/trunk/dist/game/config/adminCommands.xml
@@ -273,6 +273,13 @@
+
+
+
+
+
+
+
diff --git a/trunk/dist/game/data/html/admin/main_menu.htm b/trunk/dist/game/data/html/admin/main_menu.htm
index 88d61954ee..8b0eb5cb1f 100644
--- a/trunk/dist/game/data/html/admin/main_menu.htm
+++ b/trunk/dist/game/data/html/admin/main_menu.htm
@@ -28,6 +28,7 @@
+
diff --git a/trunk/dist/game/data/html/admin/ncoins.htm b/trunk/dist/game/data/html/admin/ncoins.htm
index b1a0f098b1..103bd54686 100644
--- a/trunk/dist/game/data/html/admin/ncoins.htm
+++ b/trunk/dist/game/data/html/admin/ncoins.htm
@@ -15,7 +15,7 @@
NCoins is a type of currency used by L2Store.
-(You must have targeted the player that you are interested in modifing/count his NCoins.)
+(You must have targeted the player that you are interested in modifying/count his NCoins.)
diff --git a/trunk/dist/game/data/html/admin/pcbang.htm b/trunk/dist/game/data/html/admin/pcbang.htm
new file mode 100644
index 0000000000..30541e4c67
--- /dev/null
+++ b/trunk/dist/game/data/html/admin/pcbang.htm
@@ -0,0 +1,38 @@
+PC Cafe Points
+
+
+
+
+
+Player Commendation Points
+
+
+
+
+
+
+
+
+PC points is a type of currency gained by killing monsters.
+
+(You must have targeted the player that you are interested in modifying/count his PC points.)
+
+
+
+
+
+
\ No newline at end of file
diff --git a/trunk/dist/game/data/scripts/handlers/MasterHandler.java b/trunk/dist/game/data/scripts/handlers/MasterHandler.java
index 0e9fc45caf..198afa1d22 100644
--- a/trunk/dist/game/data/scripts/handlers/MasterHandler.java
+++ b/trunk/dist/game/data/scripts/handlers/MasterHandler.java
@@ -79,6 +79,7 @@ import handlers.admincommandhandlers.AdminMenu;
import handlers.admincommandhandlers.AdminMessages;
import handlers.admincommandhandlers.AdminMobGroup;
import handlers.admincommandhandlers.AdminMonsterRace;
+import handlers.admincommandhandlers.AdminPCBangPoints;
import handlers.admincommandhandlers.AdminPForge;
import handlers.admincommandhandlers.AdminPathNode;
import handlers.admincommandhandlers.AdminPcCondOverride;
@@ -375,6 +376,7 @@ public class MasterHandler
AdminMobGroup.class,
AdminMonsterRace.class,
AdminPathNode.class,
+ AdminPCBangPoints.class,
AdminPetition.class,
AdminPForge.class,
AdminPledge.class,
diff --git a/trunk/dist/game/data/scripts/handlers/admincommandhandlers/AdminPCBangPoints.java b/trunk/dist/game/data/scripts/handlers/admincommandhandlers/AdminPCBangPoints.java
new file mode 100644
index 0000000000..48fcdcae88
--- /dev/null
+++ b/trunk/dist/game/data/scripts/handlers/admincommandhandlers/AdminPCBangPoints.java
@@ -0,0 +1,246 @@
+/*
+ * Copyright (C) 2004-2015 L2J Server
+ *
+ * This file is part of L2J Server.
+ *
+ * L2J Server is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * L2J Server is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+package handlers.admincommandhandlers;
+
+import com.l2jserver.gameserver.handler.IAdminCommandHandler;
+import com.l2jserver.gameserver.model.L2Object;
+import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
+import com.l2jserver.gameserver.network.SystemMessageId;
+import com.l2jserver.gameserver.network.serverpackets.ExPCCafePointInfo;
+import com.l2jserver.gameserver.network.serverpackets.NpcHtmlMessage;
+
+/**
+ * Admin Player Commendation Point commands (PC Cafe/Bang).
+ * @author Mobius
+ */
+public class AdminPCBangPoints implements IAdminCommandHandler
+{
+ private static final String[] ADMIN_COMMANDS =
+ {
+ "admin_add_bang_points",
+ "admin_count_bang_points",
+ "admin_bangpoints",
+ "admin_set_bang_points",
+ "admin_subtract_bang_points"
+ };
+
+ @Override
+ public boolean useAdminCommand(String command, L2PcInstance activeChar)
+ {
+ if (command.startsWith("admin_add_bang_points"))
+ {
+ try
+ {
+ if ((activeChar.getTarget() != null) && activeChar.getTarget().isPlayer())
+ {
+ String val = command.substring(22);
+ if (!addGamePoints(activeChar, val))
+ {
+ activeChar.sendMessage("Usage: //add_bang_points count");
+ }
+ }
+ else
+ {
+ activeChar.sendMessage("You must select a player first.");
+ }
+ }
+ catch (StringIndexOutOfBoundsException e)
+ {
+ // Case of missing parameter
+ activeChar.sendMessage("Usage: //add_bang_points count");
+ }
+ }
+ else if (command.equals("admin_count_bang_points"))
+ {
+ if ((activeChar.getTarget() != null) && activeChar.getTarget().isPlayer())
+ {
+ L2PcInstance target = (L2PcInstance) activeChar.getTarget();
+ activeChar.sendMessage(target.getName() + " has a total of " + target.getPcBangPoints() + " PC points.");
+ }
+ else
+ {
+ activeChar.sendMessage("You must select a player first.");
+ }
+ }
+ else if (command.equals("admin_bangpoints"))
+ {
+ openGamePointsMenu(activeChar);
+ }
+ else if (command.startsWith("admin_set_bang_points"))
+ {
+ try
+ {
+ if ((activeChar.getTarget() != null) && activeChar.getTarget().isPlayer())
+ {
+ String val = command.substring(22);
+ if (!setPcBangPoints(activeChar, val))
+ {
+ activeChar.sendMessage("Usage: //set_bang_points count");
+ }
+ }
+ else
+ {
+ activeChar.sendMessage("You must select a player first.");
+ }
+ }
+ catch (StringIndexOutOfBoundsException e)
+ {
+ // Case of missing parameter
+ activeChar.sendMessage("Usage: //set_bang_points count");
+ }
+ }
+ else if (command.startsWith("admin_subtract_bang_points"))
+ {
+ try
+ {
+ if ((activeChar.getTarget() != null) && activeChar.getTarget().isPlayer())
+ {
+ String val = command.substring(27);
+ if (!subtractGamePoints(activeChar, val))
+ {
+ activeChar.sendMessage("Usage: //subtract_bang_points count");
+ }
+ }
+ else
+ {
+ activeChar.sendMessage("You must select a player first.");
+ }
+ }
+ catch (StringIndexOutOfBoundsException e)
+ {
+ // Case of missing parameter
+ activeChar.sendMessage("Usage: //subtract_bang_points count");
+ }
+ }
+ return true;
+ }
+
+ private void openGamePointsMenu(L2PcInstance activeChar)
+ {
+ final NpcHtmlMessage html = new NpcHtmlMessage();
+ html.setFile(activeChar.getHtmlPrefix(), "data/html/admin/pcbang.htm");
+ activeChar.sendPacket(html);
+ }
+
+ private boolean addGamePoints(L2PcInstance admin, String val)
+ {
+ L2Object target = admin.getTarget();
+ L2PcInstance player = null;
+ if (target.isPlayer())
+ {
+ player = (L2PcInstance) target;
+ }
+ else
+ {
+ admin.sendPacket(SystemMessageId.THAT_IS_AN_INCORRECT_TARGET);
+ return false;
+ }
+
+ final int points = Integer.valueOf(val);
+ if (points < 1)
+ {
+ admin.sendMessage("Invalid points count.");
+ return false;
+ }
+
+ final int currentPoints = player.getPcBangPoints();
+ if (currentPoints < 1)
+ {
+ player.setPcBangPoints(points);
+ }
+ else
+ {
+ player.setPcBangPoints(currentPoints + points);
+ }
+
+ player.sendPacket(new ExPCCafePointInfo(player.getPcBangPoints(), points, 1));
+ admin.sendMessage("Added " + points + " PC points to " + player.getName() + ".");
+ admin.sendMessage(player.getName() + " has now a total of " + player.getPcBangPoints() + " PC points.");
+ return true;
+ }
+
+ private boolean setPcBangPoints(L2PcInstance admin, String val)
+ {
+ L2Object target = admin.getTarget();
+ L2PcInstance player = null;
+ if (target.isPlayer())
+ {
+ player = (L2PcInstance) target;
+ }
+ else
+ {
+ admin.sendPacket(SystemMessageId.THAT_IS_AN_INCORRECT_TARGET);
+ return false;
+ }
+
+ final int points = Integer.valueOf(val);
+ if (points < 0)
+ {
+ admin.sendMessage("Invalid points count.");
+ return false;
+ }
+
+ player.setPcBangPoints(points);
+ player.sendPacket(new ExPCCafePointInfo(player.getPcBangPoints(), points, 1));
+ admin.sendMessage(player.getName() + " has now a total of " + points + " PC points.");
+ return true;
+ }
+
+ private boolean subtractGamePoints(L2PcInstance admin, String val)
+ {
+ L2Object target = admin.getTarget();
+ L2PcInstance player = null;
+ if (target.isPlayer())
+ {
+ player = (L2PcInstance) target;
+ }
+ else
+ {
+ admin.sendPacket(SystemMessageId.THAT_IS_AN_INCORRECT_TARGET);
+ return false;
+ }
+
+ final int points = Integer.valueOf(val);
+ if (points < 1)
+ {
+ admin.sendMessage("Invalid points count.");
+ return false;
+ }
+
+ final int currentPoints = player.getPcBangPoints();
+ if (currentPoints <= points)
+ {
+ player.setPcBangPoints(0);
+ player.sendPacket(new ExPCCafePointInfo(player.getPcBangPoints(), 0, 1));
+ }
+ else
+ {
+ player.setPcBangPoints(currentPoints - points);
+ player.sendPacket(new ExPCCafePointInfo(player.getPcBangPoints(), currentPoints - points, 1));
+ }
+ admin.sendMessage(player.getName() + " has now a total of " + player.getPcBangPoints() + " PC points.");
+ return true;
+ }
+
+ @Override
+ public String[] getAdminCommandList()
+ {
+ return ADMIN_COMMANDS;
+ }
+}
\ No newline at end of file
diff --git a/trunk/java/com/l2jserver/gameserver/instancemanager/PcCafePointsManager.java b/trunk/java/com/l2jserver/gameserver/instancemanager/PcCafePointsManager.java
index b9bc266666..88e4368adf 100644
--- a/trunk/java/com/l2jserver/gameserver/instancemanager/PcCafePointsManager.java
+++ b/trunk/java/com/l2jserver/gameserver/instancemanager/PcCafePointsManager.java
@@ -30,6 +30,10 @@ public class PcCafePointsManager
{
private static PcCafePointsManager _instance;
+ public PcCafePointsManager()
+ {
+ }
+
public static PcCafePointsManager getInstance()
{
if (_instance == null)
@@ -39,10 +43,6 @@ public class PcCafePointsManager
return _instance;
}
- public PcCafePointsManager()
- {
- }
-
public void givePcCafePoint(final L2PcInstance player, final long givedexp)
{
if (!Config.PC_BANG_ENABLED)
@@ -74,8 +74,6 @@ public class PcCafePointsManager
_points = Rnd.get(_points / 2, _points);
}
- @SuppressWarnings("unused")
- boolean doublepoint = false;
SystemMessage sm = null;
if (_points > 0)
{
@@ -83,7 +81,6 @@ public class PcCafePointsManager
{
_points *= 2;
sm = SystemMessage.getSystemMessage(SystemMessageId.DOUBLE_POINTS_YOU_EARNED_S1_PC_POINT_S);
- doublepoint = true;
}
else
{
diff --git a/trunk/java/com/l2jserver/gameserver/model/actor/instance/L2PcInstance.java b/trunk/java/com/l2jserver/gameserver/model/actor/instance/L2PcInstance.java
index 61087668d9..4e19cbf0dd 100644
--- a/trunk/java/com/l2jserver/gameserver/model/actor/instance/L2PcInstance.java
+++ b/trunk/java/com/l2jserver/gameserver/model/actor/instance/L2PcInstance.java
@@ -14173,11 +14173,11 @@ public final class L2PcInstance extends L2Playable
}
- public void setPcBangPoints(final int i)
+ public void setPcBangPoints(final int count)
{
- if (i < 200000)
+ if (count < 200000)
{
- _pcBangPoints = i;
+ _pcBangPoints = count;
}
else
{