找回密码
 立即注册

QQ登录

只需一步,快速开始

Close
查看: 2163|回复: 0

[L2J] ClanBonus.java

[复制链接]
  • 打卡等级:尐伊娃
  • 打卡总天数:192
  • 打卡月天数:9
  • 打卡总奖励:1854
发表于 2015-10-25 15:13:09 | 显示全部楼层 |阅读模式
ClanBonus.java
  1. <blockquote>package services.community;

  2. import java.sql.Connection;
  3. import java.sql.PreparedStatement;
  4. import java.sql.ResultSet;
  5. import java.sql.SQLException;
  6. import java.util.ArrayList;
  7. import java.util.HashMap;
  8. import java.util.List;
  9. import java.util.Map;

  10. import l2ft.commons.dbutils.DbUtils;
  11. import l2ft.gameserver.Config;
  12. import l2ft.gameserver.database.DatabaseFactory;
  13. import l2ft.gameserver.handler.bbs.CommunityBoardManager;
  14. import l2ft.gameserver.handler.bbs.ICommunityBoardHandler;
  15. import l2ft.gameserver.model.Player;
  16. import l2ft.gameserver.model.pledge.Clan;
  17. import l2ft.gameserver.scripts.Functions;
  18. import l2ft.gameserver.scripts.ScriptFile;

  19. /**
  20. *
  21. * @author dislike
  22. */
  23. public class ClanBonus extends Functions implements ScriptFile, ICommunityBoardHandler
  24. {
  25.    
  26.     @Override
  27.     public void onLoad() {
  28.         if(Config.COMMUNITYBOARD_ENABLED)
  29.             CommunityBoardManager.getInstance().registerHandler(this);
  30.     }

  31.     @Override
  32.     public void onReload() {
  33.         if(Config.COMMUNITYBOARD_ENABLED)
  34.             CommunityBoardManager.getInstance().removeHandler(this);
  35.     }

  36.     @Override
  37.     public void onShutdown() {

  38.     }

  39.     @Override
  40.     public String[] getBypassCommands() {
  41.         return new String[] {"_bbsclanbonus"};
  42.     }

  43.     @Override
  44.     public void onBypassCommand(Player player, String bypass) {
  45.         if(bypass.startsWith("_bbsclanbonus"))
  46.         {
  47.             if(checkCondition(player))
  48.                 if(addReward(player.getClan()))
  49.                 {
  50.                     deletRecord(player.getClan());
  51.                     sendMessage("Ваш клан получил бонус", player);
  52.                 }
  53.         }
  54.     }
  55.    
  56.     private boolean checkCondition(Player player)
  57.     {
  58.         if(player == null)
  59.             return false;
  60.         
  61.         Clan clan  = player.getClan();
  62.         
  63.         if(clan == null)
  64.         {
  65.             sendMessage("Вы не состоите в клане.", player);
  66.             return false;
  67.         }
  68.         
  69.         if(!player.isClanLeader())
  70.         {
  71.             sendMessage("Вы не являетесь главой клана.", player);
  72.             return false;
  73.         }
  74.         
  75.         Connection con = null;
  76.         PreparedStatement statement = null;
  77.         ResultSet rset = null;
  78.         List<String> names = new ArrayList<String>();
  79.         try
  80.                 {
  81.             con = DatabaseFactory.getInstance().getConnection();
  82.             statement = con.prepareStatement("SELECT name FROM bbs_clanbonus");
  83.             rset = statement.executeQuery();
  84.             while(rset.next())
  85.                                 names.add(rset.getString("name"));
  86.                 }
  87.                 catch (SQLException e)
  88.                 {
  89.             e.printStackTrace();
  90.             return false;
  91.                 }
  92.                 finally
  93.                 {
  94.             DbUtils.closeQuietly(con, statement, rset);
  95.                 }
  96.         
  97.         if(!names.contains(clan.getName()))
  98.         {
  99.             sendMessage("Вашего клана нет в списке.",player);
  100.             return false;
  101.         }
  102.         
  103.         if(!checkPlayersCount(clan))
  104.         {
  105.             sendMessage("Условия не соблюдены.", player);
  106.             return false;
  107.         }
  108.         
  109.         return true;
  110.         
  111.     }
  112.    
  113.     private boolean checkPlayersCount(Clan clan)
  114.     {
  115.         Map<String, String> ips = new HashMap<String, String>();
  116.         int realOnline = clan.getOnlineMembers(0).size();
  117.         int need = 0;
  118.         //проверка на твинков
  119.         for(Player p : clan.getOnlineMembers(0))
  120.             ips.put(p.getIP(), p.getIP());
  121.         if(realOnline != ips.size())
  122.             return false;
  123.         
  124.         Connection con = null;
  125.                 PreparedStatement statement = null;
  126.                 ResultSet rset = null;
  127.                 try
  128.                 {
  129.             con = DatabaseFactory.getInstance().getConnection();
  130.             statement = con.prepareStatement("SELECT players_count FROM bbs_clanbonus WHERE name=? LIMIT 1");
  131.             statement.setString(1, clan.getName());
  132.             rset = statement.executeQuery();
  133.             if(rset.next())
  134.             {
  135.                 need = rset.getInt("players_count");

  136.             }
  137.                 }
  138.                 catch(SQLException e)
  139.                 {
  140.             e.printStackTrace();
  141.             return false;
  142.                 }
  143.                 finally
  144.                 {
  145.             DbUtils.closeQuietly(con, statement, rset);
  146.                 }
  147.         
  148.         if(need > realOnline)
  149.             return false;
  150.         
  151.         return true;
  152.         
  153.     }
  154.    
  155.     private boolean addReward(Clan clan)
  156.     {     
  157.         Connection con = null;
  158.                 PreparedStatement statement = null;
  159.                 ResultSet rset = null;
  160.         
  161.         int lvl = 0,rep = 0;
  162.         //Clan clan = player.getClan();
  163.    
  164.                 try
  165.                 {
  166.             con = DatabaseFactory.getInstance().getConnection();
  167.             statement = con.prepareStatement("SELECT reward_lvl, reward_rep FROM bbs_clanbonus WHERE name=? LIMIT 1");
  168.             statement.setString(1, clan.getName());
  169.             rset = statement.executeQuery();
  170.             if(rset.next())
  171.             {
  172.                 lvl = rset.getInt("reward_lvl");
  173.                 rep = rset.getInt("reward_rep");
  174.             }
  175.                 }
  176.                 catch(SQLException e)
  177.                 {
  178.             e.printStackTrace();
  179.             return false;
  180.                 }
  181.                 finally
  182.                 {
  183.             DbUtils.closeQuietly(con, statement, rset);
  184.                 }
  185.         
  186.         if(lvl > clan.getLevel())
  187.             clan.setLevel(lvl);
  188.         clan.incReputation(rep);
  189.         clan.broadcastClanStatus(true, true, false);
  190.         return true;
  191.         }
  192.    
  193.     private void deletRecord(Clan clan)
  194.     {
  195.         Connection con = null;
  196.                 PreparedStatement statement = null;
  197.                 try
  198.                 {
  199.                         con = DatabaseFactory.getInstance().getConnection();
  200.                         statement = con.prepareStatement("DELETE FROM bbs_clanbonus WHERE name = ?");
  201.                         statement.setString(1, clan.getName());
  202.                         statement.execute();
  203.                 }
  204.                 catch(SQLException e)
  205.                 {
  206.                         e.printStackTrace();
  207.                 }
  208.                 finally
  209.                 {
  210.                         DbUtils.closeQuietly(con, statement);
  211.                 }
  212.     }
  213.    
  214.     @Override
  215.     public void onWriteCommand(Player player, String bypass, String arg1, String arg2, String arg3, String arg4, String arg5) {
  216.         
  217.     }
  218.    
  219. }
复制代码


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表