Noticias:

Debes de estar registrado para poder ver el contenido indicado. Registrate o Conectate

Menú Principal

[IMP] Clan Info and edit commands

Iniciado por Swarlog, Ago 05, 2022, 01:16 AM

Tema anterior - Siguiente tema

Swarlog




Index: sql/admin_command_access_rights.sql
===================================================================
--- sql/admin_command_access_rights.sql (revision 41)
+++ sql/admin_command_access_rights.sql (working copy)
@@ -573,4 +573,8 @@
 -- voice commands
 ('banchat','7'),
 ('unbanchat','7'),
-('debug','1');
\ No newline at end of file
+('debug','1'),
+
+-- admin clan info
+('admin_clan_info', '1'),
+('admin_clan_changeleader', '127');
\ No newline at end of file
Index: data/scripts/handlers/MasterHandler.java
===================================================================
--- data/scripts/handlers/MasterHandler.java (revision 41)
+++ data/scripts/handlers/MasterHandler.java (working copy)
@@ -38,6 +38,7 @@
 import handlers.admincommandhandlers.AdminCache;
 import handlers.admincommandhandlers.AdminCamera;
 import handlers.admincommandhandlers.AdminChangeAccessLevel;
+import handlers.admincommandhandlers.AdminClan;
 import handlers.admincommandhandlers.AdminCreateItem;
 import handlers.admincommandhandlers.AdminCursedWeapons;
 import handlers.admincommandhandlers.AdminDebug;
@@ -297,6 +298,7 @@
  AdminCommandHandler.getInstance().registerAdminCommandHandler(new AdminCache());
  AdminCommandHandler.getInstance().registerAdminCommandHandler(new AdminCamera());
  AdminCommandHandler.getInstance().registerAdminCommandHandler(new AdminChangeAccessLevel());
+ AdminCommandHandler.getInstance().registerAdminCommandHandler(new AdminClan());
  AdminCommandHandler.getInstance().registerAdminCommandHandler(new AdminCreateItem());
  AdminCommandHandler.getInstance().registerAdminCommandHandler(new AdminCursedWeapons());
  AdminCommandHandler.getInstance().registerAdminCommandHandler(new AdminDebug());
Index: data/scripts/handlers/admincommandhandlers/AdminEditChar.java
===================================================================
--- data/scripts/handlers/admincommandhandlers/AdminEditChar.java (revision 41)
+++ data/scripts/handlers/admincommandhandlers/AdminEditChar.java (working copy)
@@ -34,7 +34,6 @@
 import com.l2jserver.gameserver.communitybbs.Manager.RegionBBSManager;
 import com.l2jserver.gameserver.datatables.CharNameTable;
 import com.l2jserver.gameserver.datatables.CharTemplateTable;
-import com.l2jserver.gameserver.datatables.ClanTable;
 import com.l2jserver.gameserver.handler.IAdminCommandHandler;
 import com.l2jserver.gameserver.model.L2Object;
 import com.l2jserver.gameserver.model.L2World;
@@ -831,7 +830,7 @@
  adminReply.setFile(activeChar.getHtmlPrefix(), "data/html/admin/" + filename);
  adminReply.replace("%name%", player.getName());
  adminReply.replace("%level%", String.valueOf(player.getLevel()));
- adminReply.replace("%clan%", String.valueOf(ClanTable.getInstance().getClan(player.getClanId())));
+ adminReply.replace("%clan%", String.valueOf(player.getClan() != null ? "<a action=\"bypass -h admin_clan_info " + player.getObjectId() + "\">" + player.getClan().getName() + "</a>" : null));
  adminReply.replace("%xp%", String.valueOf(player.getExp()));
  adminReply.replace("%sp%", String.valueOf(player.getSp()));
  adminReply.replace("%class%", player.getTemplate().className);
Index: data/scripts/handlers/admincommandhandlers/AdminClan.java
===================================================================
--- data/scripts/handlers/admincommandhandlers/AdminClan.java (revision 0)
+++ data/scripts/handlers/admincommandhandlers/AdminClan.java (revision 0)
@@ -0,0 +1,184 @@
+/*
+ * This program 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.
+ *
+ * This program 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 <http://www.gnu.org/licenses/>.
+ */
+package handlers.admincommandhandlers;
+
+import java.util.StringTokenizer;
+
+import com.l2jserver.gameserver.cache.HtmCache;
+import com.l2jserver.gameserver.handler.IAdminCommandHandler;
+import com.l2jserver.gameserver.instancemanager.CastleManager;
+import com.l2jserver.gameserver.instancemanager.ClanHallManager;
+import com.l2jserver.gameserver.instancemanager.FortManager;
+import com.l2jserver.gameserver.instancemanager.SiegeManager;
+import com.l2jserver.gameserver.model.L2Clan;
+import com.l2jserver.gameserver.model.L2ClanMember;
+import com.l2jserver.gameserver.model.L2World;
+import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
+import com.l2jserver.gameserver.network.SystemMessageId;
+import com.l2jserver.gameserver.network.communityserver.CommunityServerThread;
+import com.l2jserver.gameserver.network.communityserver.writepackets.WorldInfo;
+import com.l2jserver.gameserver.network.serverpackets.NpcHtmlMessage;
+import com.l2jserver.gameserver.network.serverpackets.SystemMessage;
+
+/**
+ * @author ThE_PuNiSHeR a.k.a UnAfraid
+ */
+public class AdminClan implements IAdminCommandHandler
+{
+ private static final String[] ADMIN_COMMANDS =
+ {
+ "admin_clan_info",
+ "admin_clan_changeleader"
+ };
+
+ public boolean useAdminCommand(String command, L2PcInstance activeChar)
+ {
+ StringTokenizer st = new StringTokenizer(command, " ");
+ String cmd = st.nextToken();
+ if (cmd.startsWith("admin_clan_info"))
+ {
+ try
+ {
+ int objectId = Integer.parseInt(st.nextToken());
+ L2PcInstance player = L2World.getInstance().getPlayer(objectId);
+ if (player != null)
+ {
+ L2Clan clan = player.getClan();
+ if (clan != null)
+ {
+ try
+ {
+ NpcHtmlMessage msg = new NpcHtmlMessage(0);
+ String htm = HtmCache.getInstance().getHtm(activeChar.getHtmlPrefix(), "data/html/admin/claninfo.htm");
+ msg.setHtml(htm.toString());
+ msg.replace("%clan_name%", clan.getName());
+ msg.replace("%clan_leader%", clan.getLeaderName());
+ msg.replace("%clan_level%", String.valueOf(clan.getLevel()));
+ msg.replace("%clan_has_castle%", clan.getHasCastle() > 0 ? CastleManager.getInstance().getCastleById(clan.getHasCastle()).getName() : "No");
+ msg.replace("%clan_has_clanhall%", clan.getHasHideout() > 0 ? ClanHallManager.getInstance().getClanHallById(clan.getHasHideout()).getName() : "No");
+ msg.replace("%clan_has_fortress%", clan.getHasFort() > 0 ? FortManager.getInstance().getFortById(clan.getHasFort()).getName() : "No");
+ msg.replace("%clan_points%", String.valueOf(clan.getReputationScore()));
+ msg.replace("%clan_players_count%", String.valueOf(clan.getMembersCount()));
+ msg.replace("%clan_ally%", clan.getAllyId() > 0 ? clan.getAllyName() : "Not in ally");
+ msg.replace("%current_player_objectId%", String.valueOf(objectId));
+ msg.replace("%current_player_name%", player.getName());
+ activeChar.sendPacket(msg);
+
+ }
+ catch (NullPointerException npe)
+ {
+ npe.printStackTrace();
+ }
+
+ }
+ else
+ {
+ activeChar.sendMessage("Clan not found.");
+ return false;
+ }
+ }
+ else
+ {
+ activeChar.sendMessage("Player is offline!");
+ return false;
+ }
+ }
+ catch (NumberFormatException nfe)
+ {
+ activeChar.sendMessage("This shouldn't happening");
+ return false;
+ }
+ catch (Exception e)
+ {
+ e.printStackTrace();
+ }
+ }
+ else if (cmd.startsWith("admin_clan_changeleader"))
+ {
+ try
+ {
+ int objectId = Integer.parseInt(st.nextToken());
+
+ L2PcInstance player = L2World.getInstance().getPlayer(objectId);
+ if (player != null)
+ {
+ L2Clan clan = player.getClan();
+ if (clan == null)
+ {
+ activeChar.sendMessage("Player don't have clan");
+ return false;
+ }
+ for (L2ClanMember member : clan.getMembers())
+ {
+ if (member.getObjectId() == player.getObjectId())
+ {
+ L2PcInstance exLeader = clan.getLeader().getPlayerInstance();
+ if (exLeader != null)
+ {
+ SiegeManager.getInstance().removeSiegeSkills(exLeader);
+ exLeader.setClan(clan);
+ exLeader.setClanPrivileges(L2Clan.CP_NOTHING);
+ exLeader.broadcastUserInfo();
+ exLeader.setPledgeClass(exLeader.getClan().getClanMember(exLeader.getObjectId()).calculatePledgeClass(exLeader));
+ exLeader.broadcastUserInfo();
+ exLeader.checkItemRestriction();
+ }
+ else
+ {
+ // TODO: with query?
+ }
+
+ clan.setLeader(member);
+ clan.updateClanInDB();
+
+ L2PcInstance newLeader = member.getPlayerInstance();
+ newLeader.setClan(clan);
+ newLeader.setPledgeClass(member.calculatePledgeClass(newLeader));
+ newLeader.setClanPrivileges(L2Clan.CP_ALL);
+
+ if (clan.getLevel() >= SiegeManager.getInstance().getSiegeClanMinLevel())
+ SiegeManager.getInstance().addSiegeSkills(newLeader);
+
+ newLeader.broadcastUserInfo();
+
+ clan.broadcastClanStatus();
+
+ SystemMessage sm = new SystemMessage(SystemMessageId.CLAN_LEADER_PRIVILEGES_HAVE_BEEN_TRANSFERRED_TO_C1);
+ sm.addString(newLeader.getName());
+ clan.broadcastToOnlineMembers(sm);
+ activeChar.sendMessage("Clan leader has been changed!");
+ CommunityServerThread.getInstance().sendPacket(new WorldInfo(null, clan, WorldInfo.TYPE_UPDATE_CLAN_DATA));
+ }
+ }
+ }
+ else
+ {
+ activeChar.sendMessage("Player is offline");
+ }
+ }
+ catch (Exception e)
+ {
+ e.printStackTrace();
+ }
+ }
+
+ return true;
+ }
+
+ public String[] getAdminCommandList()
+ {
+ return ADMIN_COMMANDS;
+ }
+}
Index: data/html/admin/claninfo.htm
===================================================================
--- data/html/admin/claninfo.htm (revision 0)
+++ data/html/admin/claninfo.htm (revision 0)
@@ -0,0 +1,44 @@
+<html><title>Clan Information Panel: %clan_name%</title><body>
+<center>
+<table width=270>
+<tr>
+<td width=45><button value="Main" action="bypass -h admin_admin" width=45 height=21 back="L2UI_ct1.button_df" fore="L2UI_ct1.button_df"></td>
+<td width=180><center>Clan: %clan_name%</center></td>
+<td width=45><button value="Back" action="bypass -h admin_admin7" width=45 height=21 back="L2UI_ct1.button_df" fore="L2UI_ct1.button_df"></td>
+</tr>
+</table>
+<br>
+<br>
+<br>
+<table width=240 bgcolor="666666">
+<tr>
+<td>Clan Name:</td><td>%clan_name%</td>
+</tr>
+<tr>
+<td>Leader:</td><td>%clan_leader%</td>
+</tr>
+<tr>
+<td>Level:</td><td>%clan_level%</td>
+</tr>
+<tr>
+<td>Has Castle:</td><td>%clan_has_castle%</td>
+</tr>
+<tr>
+<td>Has Clan Hall:</td><td>%clan_has_clanhall%</td>
+</tr>
+<tr>
+<td>Has Fortress:</td><td>%clan_has_fortress%</td>
+</tr>
+<tr>
+<td>Rep. Points:</td><td>%clan_points%</td>
+</tr>
+<tr>
+<td>Players Count:</td><td>%clan_players_count%</td>
+</tr>
+<tr>
+<td>Ally :</td><td>%clan_ally%</td>
+</tr>
+<tr>
+<td>Change Leader:</td><td><a action="bypass -h admin_clan_changeleader %current_player_objectId%">%current_player_name%</a></td>
+</tr>
+</table>
\ No newline at end of file