Ignore:
Timestamp:
Jan 16, 2012 7:56:19 AM (4 months ago)
Author:
MELERIX
Message:

STABLE: Sync with BETA [8629]

Location:
trunk/L2J_DataPack
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/L2J_DataPack

  • trunk/L2J_DataPack/dist/game/data/scripts/handlers/admincommandhandlers/AdminClan.java

    r7740 r8630  
    1515package handlers.admincommandhandlers; 
    1616 
    17 import java.util.NoSuchElementException; 
     17import java.sql.Connection; 
     18import java.sql.PreparedStatement; 
    1819import java.util.StringTokenizer; 
    1920 
     21import com.l2jserver.L2DatabaseFactory; 
    2022import com.l2jserver.gameserver.cache.HtmCache; 
    2123import com.l2jserver.gameserver.handler.IAdminCommandHandler; 
     
    2628import com.l2jserver.gameserver.model.L2Clan; 
    2729import com.l2jserver.gameserver.model.L2ClanMember; 
     30import com.l2jserver.gameserver.model.L2Object; 
    2831import com.l2jserver.gameserver.model.L2World; 
    2932import com.l2jserver.gameserver.model.actor.instance.L2PcInstance; 
     
    3336import com.l2jserver.gameserver.network.serverpackets.NpcHtmlMessage; 
    3437import com.l2jserver.gameserver.network.serverpackets.SystemMessage; 
     38import com.l2jserver.gameserver.util.Util; 
    3539 
    3640/** 
    37  * @author ThE_PuNiSHeR a.k.a UnAfraid 
     41 * @author UnAfraid, Zoey76 
    3842 */ 
    3943public class AdminClan implements IAdminCommandHandler 
     
    4145        private static final String[] ADMIN_COMMANDS = 
    4246        { 
    43                 "admin_clan_info", 
    44                 "admin_clan_changeleader" 
     47                "admin_clan_info", "admin_clan_changeleader" 
    4548        }; 
    4649         
     50        @Override 
    4751        public boolean useAdminCommand(String command, L2PcInstance activeChar) 
    4852        { 
    49                 StringTokenizer st = new StringTokenizer(command, " "); 
    50                 String cmd = st.nextToken(); 
     53                final StringTokenizer st = new StringTokenizer(command, " "); 
     54                final String cmd = st.nextToken(); 
    5155                if (cmd.startsWith("admin_clan_info")) 
    5256                { 
    53                         try 
    54                         { 
    55                int objectId = 0; 
    56                try 
    57                { 
    58                    objectId = Integer.parseInt(st.nextToken()); 
    59                } 
    60                catch (NoSuchElementException NSEE) 
    61                { 
    62                    objectId = activeChar.getTargetId(); 
    63                } 
    64                                 L2PcInstance player = L2World.getInstance().getPlayer(objectId); 
    65                                 if (player != null) 
    66                                 { 
    67                                         L2Clan clan = player.getClan(); 
    68                                         if (clan != null) 
    69                                         { 
    70                                                 try 
    71                                                 { 
    72                                                         NpcHtmlMessage msg = new NpcHtmlMessage(0); 
    73                                                         String htm = HtmCache.getInstance().getHtm(activeChar.getHtmlPrefix(), "data/html/admin/claninfo.htm"); 
    74                                                         msg.setHtml(htm.toString()); 
    75                                                         msg.replace("%clan_name%", clan.getName()); 
    76                                                         msg.replace("%clan_leader%", clan.getLeaderName()); 
    77                                                         msg.replace("%clan_level%", String.valueOf(clan.getLevel())); 
    78                                                         msg.replace("%clan_has_castle%", clan.getHasCastle() > 0 ? CastleManager.getInstance().getCastleById(clan.getHasCastle()).getName() : "No"); 
    79                                                         msg.replace("%clan_has_clanhall%", clan.getHasHideout() > 0 ? ClanHallManager.getInstance().getClanHallById(clan.getHasHideout()).getName() : "No"); 
    80                                                         msg.replace("%clan_has_fortress%", clan.getHasFort() > 0 ? FortManager.getInstance().getFortById(clan.getHasFort()).getName() : "No"); 
    81                                                         msg.replace("%clan_points%", String.valueOf(clan.getReputationScore())); 
    82                                                         msg.replace("%clan_players_count%", String.valueOf(clan.getMembersCount())); 
    83                                                         msg.replace("%clan_ally%", clan.getAllyId() > 0 ? clan.getAllyName() : "Not in ally"); 
    84                                                         msg.replace("%current_player_objectId%", String.valueOf(objectId)); 
    85                                                         msg.replace("%current_player_name%", player.getName()); 
    86                                                         activeChar.sendPacket(msg); 
    87                                                          
    88                                                 } 
    89                                                 catch (NullPointerException npe) 
    90                                                 { 
    91                                                         npe.printStackTrace(); 
    92                                                 } 
    93                                                  
    94                                         } 
    95                                         else 
    96                                         { 
    97                                                 activeChar.sendMessage("Clan not found."); 
    98                                                 return false; 
    99                                         } 
    100                                 } 
    101                                 else 
    102                                 { 
    103                                         activeChar.sendMessage("Player is offline!"); 
     57                        String val; 
     58                        L2PcInstance player = null; 
     59                        if (st.hasMoreTokens()) 
     60                        { 
     61                                val = st.nextToken(); 
     62                                // From the HTML we receive player's object Id. 
     63                                if (Util.isDigit(val)) 
     64                                { 
     65                                        player = L2World.getInstance().getPlayer(Integer.parseInt(val)); 
     66                                        if (player == null) 
     67                                        { 
     68                                                activeChar.sendPacket(SystemMessageId.TARGET_IS_NOT_FOUND_IN_THE_GAME); 
     69                                                return false; 
     70                                        } 
     71                                } 
     72                                else 
     73                                { 
     74                                        player = L2World.getInstance().getPlayer(val); 
     75                                        if (player == null) 
     76                                        { 
     77                                                activeChar.sendPacket(SystemMessageId.INCORRECT_NAME_TRY_AGAIN); 
     78                                                return false; 
     79                                        } 
     80                                } 
     81                        } 
     82                        else 
     83                        { 
     84                                L2Object targetObj = activeChar.getTarget(); 
     85                                if (targetObj instanceof L2PcInstance) 
     86                                { 
     87                                        player = targetObj.getActingPlayer(); 
     88                                } 
     89                                else 
     90                                { 
     91                                        activeChar.sendPacket(SystemMessageId.INCORRECT_TARGET); 
    10492                                        return false; 
    10593                                } 
    10694                        } 
    107                         catch (NumberFormatException nfe) 
    108                         { 
    109                                 activeChar.sendMessage("This shouldn't happening"); 
     95                         
     96                        final L2Clan clan = player.getClan(); 
     97                        if (clan == null) 
     98                        { 
     99                                activeChar.sendPacket(SystemMessageId.TARGET_MUST_BE_IN_CLAN); 
    110100                                return false; 
    111101                        } 
    112                         catch (Exception e) 
    113                         { 
    114                                 e.printStackTrace(); 
    115                         } 
     102                         
     103                        final NpcHtmlMessage html = new NpcHtmlMessage(0); 
     104                        final String htm = HtmCache.getInstance().getHtm(activeChar.getHtmlPrefix(), "data/html/admin/claninfo.htm"); 
     105                        html.setHtml(htm.toString()); 
     106                        html.replace("%clan_name%", clan.getName()); 
     107                        html.replace("%clan_leader%", clan.getLeaderName()); 
     108                        html.replace("%clan_level%", String.valueOf(clan.getLevel())); 
     109                        html.replace("%clan_has_castle%", clan.getHasCastle() > 0 ? CastleManager.getInstance().getCastleById(clan.getHasCastle()).getName() : "No"); 
     110                        html.replace("%clan_has_clanhall%", clan.getHasHideout() > 0 ? ClanHallManager.getInstance().getClanHallById(clan.getHasHideout()).getName() : "No"); 
     111                        html.replace("%clan_has_fortress%", clan.getHasFort() > 0 ? FortManager.getInstance().getFortById(clan.getHasFort()).getName() : "No"); 
     112                        html.replace("%clan_points%", String.valueOf(clan.getReputationScore())); 
     113                        html.replace("%clan_players_count%", String.valueOf(clan.getMembersCount())); 
     114                        html.replace("%clan_ally%", clan.getAllyId() > 0 ? clan.getAllyName() : "Not in ally"); 
     115                        html.replace("%current_player_objectId%", String.valueOf(player.getObjectId())); 
     116                        html.replace("%current_player_name%", player.getName()); 
     117                        activeChar.sendPacket(html); 
    116118                } 
    117119                else if (cmd.startsWith("admin_clan_changeleader")) 
    118120                { 
    119                         try 
    120                         { 
    121                                 int objectId = Integer.parseInt(st.nextToken()); 
    122                                  
    123                                 L2PcInstance player = L2World.getInstance().getPlayer(objectId); 
    124                                 if (player != null) 
    125                                 { 
    126                                         L2Clan clan = player.getClan(); 
    127                                         if (clan == null) 
    128                                         { 
    129                                                 activeChar.sendMessage("Player don't have clan"); 
    130                                                 return false; 
    131                                         } 
    132                                         for (L2ClanMember member : clan.getMembers()) 
    133                                         { 
    134                                                 if (member.getObjectId() == player.getObjectId()) 
     121                        String val; 
     122                        L2PcInstance player = null; 
     123                        if (st.hasMoreTokens()) 
     124                        { 
     125                                val = st.nextToken(); 
     126                                // From the HTML we receive player's object Id. 
     127                                if (Util.isDigit(val)) 
     128                                { 
     129                                        player = L2World.getInstance().getPlayer(Integer.parseInt(val)); 
     130                                        if (player == null) 
     131                                        { 
     132                                                activeChar.sendPacket(SystemMessageId.TARGET_IS_NOT_FOUND_IN_THE_GAME); 
     133                                                return false; 
     134                                        } 
     135                                } 
     136                                else 
     137                                { 
     138                                        player = L2World.getInstance().getPlayer(val); 
     139                                        if (player == null) 
     140                                        { 
     141                                                activeChar.sendPacket(SystemMessageId.INCORRECT_NAME_TRY_AGAIN); 
     142                                                return false; 
     143                                        } 
     144                                } 
     145                        } 
     146                        else 
     147                        { 
     148                                L2Object targetObj = activeChar.getTarget(); 
     149                                if (targetObj instanceof L2PcInstance) 
     150                                { 
     151                                        player = targetObj.getActingPlayer(); 
     152                                } 
     153                                else 
     154                                { 
     155                                        activeChar.sendPacket(SystemMessageId.INCORRECT_TARGET); 
     156                                        return false; 
     157                                } 
     158                        } 
     159                         
     160                        final L2Clan clan = player.getClan(); 
     161                        if (clan == null) 
     162                        { 
     163                                activeChar.sendPacket(SystemMessageId.TARGET_MUST_BE_IN_CLAN); 
     164                                return false; 
     165                        } 
     166                         
     167                        final L2ClanMember member = clan.getClanMember(player.getObjectId()); 
     168                        if (member != null) 
     169                        { 
     170                                if ((clan.getLeader() != null) && (clan.getLeader().getPlayerInstance() != null)) 
     171                                { 
     172                                        final L2PcInstance exLeader = clan.getLeader().getPlayerInstance(); 
     173                                        SiegeManager.getInstance().removeSiegeSkills(exLeader); 
     174                                        exLeader.setClan(clan); 
     175                                        exLeader.setClanPrivileges(L2Clan.CP_NOTHING); 
     176                                        exLeader.broadcastUserInfo(); 
     177                                        exLeader.setPledgeClass(exLeader.getClan().getClanMember(exLeader.getObjectId()).calculatePledgeClass(exLeader)); 
     178                                        exLeader.broadcastUserInfo(); 
     179                                        exLeader.checkItemRestriction(); 
     180                                } 
     181                                else if (clan.getLeaderId() > 0) 
     182                                { 
     183                                        Connection con = null; 
     184                                        try 
     185                                        { 
     186                                                con = L2DatabaseFactory.getInstance().getConnection(); 
     187                                                PreparedStatement statement = con.prepareStatement("UPDATE characters SET clan_privs = ? WHERE charId = ?"); 
     188                                                statement.setInt(1, L2Clan.CP_NOTHING); 
     189                                                statement.setInt(2, clan.getLeaderId()); 
     190                                                statement.execute(); 
     191                                                 
     192                                                if (statement.getUpdateCount() == 0) 
    135193                                                { 
    136                                                         L2PcInstance exLeader = clan.getLeader().getPlayerInstance(); 
    137                                                         if (exLeader != null) 
    138                                                         { 
    139                                                                 SiegeManager.getInstance().removeSiegeSkills(exLeader); 
    140                                                                 exLeader.setClan(clan); 
    141                                                                 exLeader.setClanPrivileges(L2Clan.CP_NOTHING); 
    142                                                                 exLeader.broadcastUserInfo(); 
    143                                                                 exLeader.setPledgeClass(exLeader.getClan().getClanMember(exLeader.getObjectId()).calculatePledgeClass(exLeader)); 
    144                                                                 exLeader.broadcastUserInfo(); 
    145                                                                 exLeader.checkItemRestriction(); 
    146                                                         } 
    147                                                         else 
    148                                                         { 
    149                                                                 // TODO: with query? 
    150                                                         } 
    151                                                          
    152                                                         clan.setLeader(member); 
    153                                                         clan.updateClanInDB(); 
    154                                                          
    155                                                         L2PcInstance newLeader = member.getPlayerInstance(); 
    156                                                         newLeader.setClan(clan); 
    157                                                         newLeader.setPledgeClass(member.calculatePledgeClass(newLeader)); 
    158                                                         newLeader.setClanPrivileges(L2Clan.CP_ALL); 
    159                                                          
    160                                                         if (clan.getLevel() >= SiegeManager.getInstance().getSiegeClanMinLevel()) 
    161                                                                 SiegeManager.getInstance().addSiegeSkills(newLeader); 
    162                                                          
    163                                                         newLeader.broadcastUserInfo(); 
    164                                                          
    165                                                         clan.broadcastClanStatus(); 
    166                                                          
    167                                                         SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.CLAN_LEADER_PRIVILEGES_HAVE_BEEN_TRANSFERRED_TO_C1); 
    168                                                         sm.addString(newLeader.getName()); 
    169                                                         clan.broadcastToOnlineMembers(sm); 
    170                                                         activeChar.sendMessage("Clan leader has been changed!"); 
    171                                                         CommunityServerThread.getInstance().sendPacket(new WorldInfo(null, clan, WorldInfo.TYPE_UPDATE_CLAN_DATA)); 
     194                                                        activeChar.sendPacket(SystemMessageId.ID_NOT_EXIST); 
    172195                                                } 
    173                                         } 
    174                                 } 
    175                                 else 
    176                                 { 
    177                                         activeChar.sendMessage("Player is offline"); 
    178                                 } 
    179                         } 
    180                         catch (Exception e) 
    181                         { 
    182                                 e.printStackTrace(); 
     196                                                statement.close(); 
     197                                        } 
     198                                        catch (Exception e) 
     199                                        { 
     200                                                activeChar.sendPacket(SystemMessageId.NOT_WORKING_PLEASE_TRY_AGAIN_LATER); 
     201                                        } 
     202                                        finally 
     203                                        { 
     204                                                L2DatabaseFactory.close(con); 
     205                                        } 
     206                                } 
     207                                 
     208                                clan.setLeader(member); 
     209                                clan.updateClanInDB(); 
     210                                 
     211                                player.setClan(clan); 
     212                                player.setPledgeClass(member.calculatePledgeClass(player)); 
     213                                player.setClanPrivileges(L2Clan.CP_ALL); 
     214                                 
     215                                if (clan.getLevel() >= SiegeManager.getInstance().getSiegeClanMinLevel()) 
     216                                { 
     217                                        SiegeManager.getInstance().addSiegeSkills(player); 
     218                                } 
     219                                 
     220                                player.broadcastUserInfo(); 
     221                                clan.broadcastClanStatus(); 
     222                                 
     223                                final SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.CLAN_LEADER_PRIVILEGES_HAVE_BEEN_TRANSFERRED_TO_C1); 
     224                                sm.addString(player.getName()); 
     225                                clan.broadcastToOnlineMembers(sm); 
     226                                activeChar.sendPacket(sm); 
     227                                CommunityServerThread.getInstance().sendPacket(new WorldInfo(null, clan, WorldInfo.TYPE_UPDATE_CLAN_DATA)); 
    183228                        } 
    184229                } 
    185                  
    186230                return true; 
    187231        } 
    188232         
     233        @Override 
    189234        public String[] getAdminCommandList() 
    190235        { 
Note: See TracChangeset for help on using the changeset viewer.