Рейтинг темы:
  • 0 Голос(ов) - 0 в среднем
  • 1
  • 2
  • 3
  • 4
  • 5
Баффер для комьюнити L2Jserver Hive Five
#1
за эпохи фреи ставил бафера в комьюнити на чистые лижи, ставился он нормально, но теперь ругаеться на одну вещь
Код:
package l2death.gameserver.communitybbs.Manager;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;


import l2death.Config;
import l2death.L2DatabaseFactory;
import l2death.gameserver.cache.HtmCache;
import l2death.gameserver.datatables.SkillTable;
import l2death.gameserver.model.actor.instance.L2PcInstance;
import l2death.gameserver.model.effects.L2Effect;
import l2death.gameserver.model.entity.TvTEvent;
import l2death.gameserver.model.skills.L2Skill;
import l2death.gameserver.network.serverpackets.ExShowScreenMessage;

public class BuffBBSManager extends BaseBBSManager
{

  private static BuffBBSManager _instance = new BuffBBSManager();
  public int allskillid_1[][];

  public BuffBBSManager()
  {
Load();
  }

public static BuffBBSManager getInstance()
  {
      if(_instance == null)
          _instance = new BuffBBSManager();
      return _instance;
  }
public void Load()
{
      
      Connection connn = null;
      try
      {
          connn = L2DatabaseFactory.getInstance().getConnection();
          PreparedStatement count = connn.prepareStatement("SELECT COUNT(*) FROM communitybuff");
          ResultSet countt = count.executeQuery();
          countt.next();
          allskillid_1 = new int[countt.getInt(1)][4];
          PreparedStatement table = connn.prepareStatement("SELECT * FROM communitybuff");
          ResultSet skills = table.executeQuery();
          for(int i = 0; i < allskillid_1.length; i++)
          {
              skills.next();
              allskillid_1[i][0] = skills.getInt(2);
              allskillid_1[i][1] = skills.getInt(3);
              allskillid_1[i][2] = skills.getInt(4);
              allskillid_1[i][3] = skills.getInt(5);
          }

          count.close();
          countt.close();
          skills.close();
          table.close();
        connn.close();
      }
      catch(Exception ignored) { }
}
public void parsecmd(String command, L2PcInstance activeChar)
  {
    String[] parts = command.split("_");
    boolean petbuff = false;
      if(activeChar.isDead() || activeChar.isAlikeDead() || TvTEvent.isStarted() || activeChar.isInSiege() || activeChar.isCastingNow() || activeChar.isInCombat() || activeChar.isAttackingNow() || activeChar.isInOlympiadMode() || activeChar.isFlying() || activeChar.getKarma() > 0 || activeChar.isInDuel())
      {
          activeChar.sendMessage("В данных условиях бафф запрещен");
        return;
      }
    if (!(parts[2].startsWith("buff")))
        return;
    String content = HtmCache.getInstance().getHtm(activeChar.getHtmlPrefix(), "data/html/CommunityBoard/60.htm");
    separateAndSend(content, activeChar);
    
          if(parts[4] != null && parts[4].startsWith(" Player"))
              petbuff = false;
          if(parts[4] != null && parts[4].startsWith(" Pet"))
              petbuff = true;
          if(parts[3].startsWith("FIGHERLIST"))
              if(Config.BUFF_PEACE)
              {
                  if(activeChar.isInsideZone1((byte)2))
                      FIGHERLIST(activeChar, petbuff);
                  else
                      activeChar.sendPacket(new ExShowScreenMessage("Sorry, you not town!!", 3000));
              }
            else
              {
                  FIGHERLIST(activeChar, petbuff);
              }
          if(parts[3].startsWith("DANCEFIGHTERLIST"))
              {
                  if(Config.BUFF_PEACE)
              {
                  if(activeChar.isInsideZone1((byte)2))
                      DANCEFIGHTERLIST(activeChar, petbuff);
                  else
                      activeChar.sendPacket(new ExShowScreenMessage("Sorry, you not town!!", 3000));
              }
            else
              {
                  DANCEFIGHTERLIST(activeChar, petbuff);
              }
              }
          if(parts[3].startsWith("MAGELIST"))
              if(Config.BUFF_PEACE)
              {
                  if(activeChar.isInsideZone1((byte)2))
                      MAGELIST(activeChar, petbuff);
                  else
                      activeChar.sendPacket(new ExShowScreenMessage("Sorry, you not town!!", 3000));
              }
            else
              {
                  MAGELIST(activeChar, petbuff);
              }
          if(parts[3].startsWith("DANCEMAGELIST"))
              if(Config.BUFF_PEACE)
              {
                  if(activeChar.isInsideZone1((byte)2))
                      DANCEMAGELIST(activeChar, petbuff);
                  else
                      activeChar.sendPacket(new ExShowScreenMessage("Sorry, you not town!!", 3000));
              }
            else
              {
                  DANCEMAGELIST(activeChar, petbuff);
              }
          if(parts[3].startsWith("SAVE"))
              if(Config.BUFF_PEACE)
              {
                  if(activeChar.isInsideZone1((byte)2))
                      SAVE(activeChar, petbuff);
                  else
                      activeChar.sendPacket(new ExShowScreenMessage("Sorry, you not town!!", 3000));
              } else
              {
                  SAVE(activeChar, petbuff);
              }
          if(parts[3].startsWith("BUFF"))
              if(Config.BUFF_PEACE)
              {
                  if(activeChar.isInsideZone1((byte)2))
                      BUFF(activeChar, petbuff);
                  else
                      activeChar.sendPacket(new ExShowScreenMessage("Sorry, you not town!!", 3000));
              } else
              {
                  BUFF(activeChar, petbuff);
              }
          if(parts[3].startsWith("CANCEL"))
              if(Config.BUFF_PEACE)
              {
                  if(activeChar.isInsideZone1((byte)2))
                      CANCEL(activeChar, petbuff);
                  else
                      activeChar.sendPacket(new ExShowScreenMessage("Sorry, you not town!!", 3000));
              }
            else
              {
                  CANCEL(activeChar, petbuff);
              }
          if(parts[3].startsWith("REGMP"))
              if(Config.BUFF_PEACE)
              {
                  if(activeChar.isInsideZone1((byte)2))
                      REGMP(activeChar, petbuff);
                  else
                      activeChar.sendPacket(new ExShowScreenMessage("Sorry, you not town!!", 3000));
              }
            else
              {
                  REGMP(activeChar, petbuff);
              }
          for(int key = 0; key < allskillid_1.length; key++)
          {
              L2Skill skill;
              int skilllevel;
              if(Config.BUFF_PEACE)
              {
                  if(activeChar.isInsideZone1((byte)2))
                  {
                      skilllevel = SkillTable.getInstance().getMaxLevel(allskillid_1[key][0]);
                      skill = SkillTable.getInstance().getInfo(allskillid_1[key][0], skilllevel);
                      if(parts[3].startsWith(skill.getName()))
                          SKILL(activeChar, petbuff, key, skill);
                  } else
                  {
                      activeChar.sendPacket(new ExShowScreenMessage("Sorry, you not town!!", 3000));
                  }
                  continue;
              }
              skilllevel = SkillTable.getInstance().getMaxLevel(allskillid_1[key][0]);
              skill = SkillTable.getInstance().getInfo(allskillid_1[key][0], skilllevel);
              if(parts[3].startsWith(skill.getName()))
                  SKILL(activeChar, petbuff, key, skill);
          }
  }

  private void FIGHERLIST(L2PcInstance activeChar, boolean petbuff)
  {
      int arr$[][] = allskillid_1;
      int len$ = arr$.length;
      for(int i$ = 0; i$ < len$; i$++)
      {
          int aSkillid[] = arr$[i$];
          if(aSkillid[1] != 1 && aSkillid[1] != 3)
              continue;
          L2Skill skill;
          int skilllevel;
          if(Config.MANI_BUFF)
          {
              if(activeChar.destroyItemByItemId(null, aSkillid[3], aSkillid[2], activeChar, true))
              {
                  skilllevel = SkillTable.getInstance().getMaxLevel(aSkillid[0]);
                  skill = SkillTable.getInstance().getInfo(aSkillid[0], skilllevel);
                  if(!petbuff)
                      skill.getEffects(activeChar, activeChar);
              }
            else
              {
                  activeChar.sendPacket(new ExShowScreenMessage("Sorry, not item!!", 3000));
              }
              continue;
          }
          skilllevel = SkillTable.getInstance().getMaxLevel(aSkillid[0]);
          skill = SkillTable.getInstance().getInfo(aSkillid[0], skilllevel);
          if(!petbuff)
              skill.getEffects(activeChar, activeChar);
          
      }

  }

  private void DANCEFIGHTERLIST(L2PcInstance activeChar, boolean petbuff)
  {
      int arr$[][] = allskillid_1;
      int len$ = arr$.length;
      for(int i$ = 0; i$ < len$; i$++)
      {
          int aSkillid[] = arr$[i$];
          if(aSkillid[1] != 4 && aSkillid[1] != 6)
              continue;
          L2Skill skill;
          int skilllevel;
          if(Config.MANI_BUFF)
          {
              if(activeChar.destroyItemByItemId(null, aSkillid[3], aSkillid[2], activeChar, true))
              {
                  skilllevel = SkillTable.getInstance().getMaxLevel(aSkillid[0]);
                  skill = SkillTable.getInstance().getInfo(aSkillid[0], skilllevel);
                  if(!petbuff)
                      skill.getEffects(activeChar, activeChar);
                  
              }
            else
              {
                  activeChar.sendPacket(new ExShowScreenMessage("Sorry, not item!!", 3000));
              }
              continue;
          }
          skilllevel = SkillTable.getInstance().getMaxLevel(aSkillid[0]);
          skill = SkillTable.getInstance().getInfo(aSkillid[0], skilllevel);
          if(!petbuff)
              skill.getEffects(activeChar, activeChar);

      }

  }

  private void MAGELIST(L2PcInstance activeChar, boolean petbuff)
  {
      int arr$[][] = allskillid_1;
      int len$ = arr$.length;
      for(int i$ = 0; i$ < len$; i$++)
      {
          int aSkillid[] = arr$[i$];
          if(aSkillid[1] != 2 && aSkillid[1] != 3)
              continue;
          L2Skill skill;
          int skilllevel;
          if(Config.MANI_BUFF)
          {
              if(activeChar.destroyItemByItemId(null, aSkillid[3], aSkillid[2], activeChar, true))
              {
                  skilllevel = SkillTable.getInstance().getMaxLevel(aSkillid[0]);
                  skill = SkillTable.getInstance().getInfo(aSkillid[0], skilllevel);
                  if(!petbuff)
                      skill.getEffects(activeChar, activeChar);
                
              }
            else
              {
                  activeChar.sendPacket(new ExShowScreenMessage("Sorry, not item!!", 3000));
              }
              continue;
          }
          skilllevel = SkillTable.getInstance().getMaxLevel(aSkillid[0]);
          skill = SkillTable.getInstance().getInfo(aSkillid[0], skilllevel);
          if(!petbuff)
              skill.getEffects(activeChar, activeChar);

      }

  }

  private void DANCEMAGELIST(L2PcInstance activeChar, boolean petbuff)
  {
      int arr$[][] = allskillid_1;
      int len$ = arr$.length;
      for(int i$ = 0; i$ < len$; i$++)
      {
          int aSkillid[] = arr$[i$];
          if(aSkillid[1] != 5 && aSkillid[1] != 6)
              continue;
          L2Skill skill;
          int skilllevel;
          if(Config.MANI_BUFF)
          {
              if(activeChar.destroyItemByItemId(null, aSkillid[3], aSkillid[2], activeChar, true))
              {
                  skilllevel = SkillTable.getInstance().getMaxLevel(aSkillid[0]);
                  skill = SkillTable.getInstance().getInfo(aSkillid[0], skilllevel);
                  if(!petbuff)
                      skill.getEffects(activeChar, activeChar);
              
              }
            else
              {
                  activeChar.sendPacket(new ExShowScreenMessage("Sorry, not item!!", 3000));
              }
              continue;
          }
          skilllevel = SkillTable.getInstance().getMaxLevel(aSkillid[0]);
          skill = SkillTable.getInstance().getInfo(aSkillid[0], skilllevel);
          if(!petbuff)
              skill.getEffects(activeChar, activeChar);

      }

  }

  private void BUFF(L2PcInstance activeChar, boolean petbuff)
  {
      Connection con = null;
      try
      {
          con = L2DatabaseFactory.getInstance().getConnection();
          PreparedStatement statement = con.prepareStatement("SELECT * FROM community_skillsave WHERE charId=?;");
          statement.setInt(1, activeChar.getObjectId());
          ResultSet rcln = statement.executeQuery();
          rcln.next();
          if(!petbuff)
          {
              char allskills[] = rcln.getString(2).toCharArray();
              if(allskills.length == allskillid_1.length)
              {
                  for(int i = 0; i < allskillid_1.length; i++)
                      if(allskills[i] == '1')
                          if(Config.MANI_BUFF)
                          {
                              if(activeChar.destroyItemByItemId(null, allskillid_1[i][3], allskillid_1[i][2], activeChar, true))
                              {
                                  int skilllevel = SkillTable.getInstance().getMaxLevel(allskillid_1[i][0]);
                                  L2Skill skill = SkillTable.getInstance().getInfo(allskillid_1[i][0], skilllevel);
                                  skill.getEffects(activeChar, activeChar);
                                  activeChar.getLevel();
                              } else
                              {
                                  activeChar.sendPacket(new ExShowScreenMessage("Sorry, not item!!", 3000));
                              }
                          } else
                          {
                              int skilllevel = SkillTable.getInstance().getMaxLevel(allskillid_1[i][0]);
                              L2Skill skill = SkillTable.getInstance().getInfo(allskillid_1[i][0], skilllevel);
                              skill.getEffects(activeChar, activeChar);
                          }

              }
          }
        else
          {
              char petskills[] = rcln.getString(3).toCharArray();
              if(petskills.length == allskillid_1.length)
              {
                  for(int i = 0; i < allskillid_1.length; i++)
                  {
                      if(petskills[i] != '1')
                          continue;
                      if(Config.MANI_BUFF)
                      {
                          if(activeChar.destroyItemByItemId(null, allskillid_1[i][3], allskillid_1[i][2], activeChar, true))
                          {
                              int skilllevel = SkillTable.getInstance().getMaxLevel(allskillid_1[i][0]);
                              L2Skill skill = SkillTable.getInstance().getInfo(allskillid_1[i][0], skilllevel);
                              
                          } else
                          {
                              activeChar.sendPacket(new ExShowScreenMessage("Sorry, not item!!", 3000));
                          }
                      } else
                      {
                          int skilllevel = SkillTable.getInstance().getMaxLevel(allskillid_1[i][0]);
                          L2Skill skill = SkillTable.getInstance().getInfo(allskillid_1[i][0], skilllevel);
                        
                      }
                  }

              }
          }
          rcln.close();
          statement.close();
      }
      catch(Exception ignored)
      {
          try
          {
              if(con != null)
                  con.close();
          }
          catch(SQLException e)
          {
              e.printStackTrace();
          }

      }
      try
      {
          if(con != null)
              con.close();
      }
      catch(SQLException e)
      {
          e.printStackTrace();
      }
  }

  private void CANCEL(L2PcInstance activeChar, boolean petbuff)
  {
      if(!petbuff)
          activeChar.stopAllEffects();
  }

  private void REGMP(L2PcInstance activeChar, boolean petbuff)
  {
      if(!petbuff)
          activeChar.setCurrentMp(activeChar.getMaxMp());
      
  }

  private void SKILL(L2PcInstance activeChar, boolean petbuff, int key, L2Skill skill)
  {
      if(Config.MANI_BUFF)
      {
          if(activeChar.destroyItemByItemId(null, allskillid_1[key][3], allskillid_1[key][2], activeChar, true))
          {
              if(!petbuff)
                  skill.getEffects(activeChar, activeChar);

          }
        else
          {
              activeChar.sendPacket(new ExShowScreenMessage("Sorry, not item!!", 3000));
          }
      }
    else
      if(!petbuff)
          skill.getEffects(activeChar, activeChar);

  }

  private void SAVE(L2PcInstance activeChar, boolean petbuff)
  {
      Connection con = null;
      try
      {
          con = L2DatabaseFactory.getInstance().getConnection();
          PreparedStatement stat = con.prepareStatement("SELECT COUNT(*) FROM community_skillsave WHERE charId=?;");
          stat.setInt(1, activeChar.getObjectId());
          ResultSet rset = stat.executeQuery();
          rset.next();
          String allbuff = "";
          if(!petbuff)
          {
              [color=Red]L2Effect skill[] = activeChar.getAllEffects();[/color]
              boolean flag = true;
              int arr$[][] = allskillid_1;
              int len$ = arr$.length;
              for(int i$ = 0; i$ < len$; i$++)
              {
                  int aSkillid[] = arr$[i$];
                  for(int j = 0; j < skill.length; j++)
                  {
                      if(aSkillid[0] == skill[j].getId())
                      {
                          allbuff = (new StringBuilder()).append(allbuff).append(1).toString();
                          flag = false;
                      }
                      if(j == skill.length - 1 && flag)
                          allbuff = (new StringBuilder()).append(allbuff).append(0).toString();
                  }

                  flag = true;
              }

              if(rset.getInt(1) == 0)
              {
                  PreparedStatement statement1 = con.prepareStatement("INSERT INTO community_skillsave (charId,skills) values (?,?)");
                  statement1.setInt(1, activeChar.getObjectId());
                  statement1.setString(2, allbuff);
                  statement1.execute();
                  statement1.close();
              }
            else
              {
                  PreparedStatement statement = con.prepareStatement("UPDATE community_skillsave SET skills=? WHERE charId=?;");
                  statement.setString(1, allbuff);
                  statement.setInt(2, activeChar.getObjectId());
                  statement.execute();
                  statement.close();
              }
          }

          rset.close();
          stat.close();
      }
      catch(Exception ignored)
      {
          try
          {
              if(con != null)
                  con.close();
          }
          catch(SQLException e)
          {
              e.printStackTrace();
          }
      }
      try
      {
          if(con != null)
              con.close();
      }
      catch(SQLException e)
      {
          e.printStackTrace();
      }
  }

public void parsewrite(String s, String s1, String s2, String s3, String s4, L2PcInstance l2pcinstance)
  {
  }
}

кто не увидел напишу здесь
"L2Effect skill[] = activeChar.getAllEffects();"

кто нибудь может подсказать как его правильно изменить что бы оно не ругалось, и еще ругается на метод getPet, сдесь он вырезан, но может кто сталкивался с этой проблемой
Код:
[CODE][CODE][/CODE][/CODE]
Ответ
#2
Скиньте метод activeChar.getAllEffects()

Тут ванги нету, а качать сурсы лыжи никто не будет чтобы вам помоч.
Ответ
#3
Код:
public final List<L2Effect> getAllEffects()
    {
        return _effectList.getAllEffects();
    }
Ответ
#4
пробуйте

[SRC="java"]List<L2Effect> skill = activeChar.getAllEffects();[/SRC]

А лучше перепишите скрипт, очень много лишнего.
Ответ
#5
судя по коду - это походу вобще просто декомпил.
Ответ
#6
спасибо))
пожалуй прислушаюсь к вашему совету, по одной ошибке исправлять это долго сильно

Добавлено через 36 секунд
нет, это не декомпил
Ответ
#7
Что бы это не было но стиль написания мягко говоря отвратный.
К примеру возьмем этот кусок.

[SRC="java"]

if(parts[3].startsWith("DANCEFIGHTERLIST"))
{
if(Config.BUFF_PEACE)
{
if(activeChar.isInsideZone1((byte)2))
DANCEFIGHTERLIST(activeChar, petbuff);
else
activeChar.sendPacket(new ExShowScreenMessage("Sorry, you not town!!", 3000));
}
else
{
DANCEFIGHTERLIST(activeChar, petbuff);
}
}
[/SRC]
1. Зачем перебирать совпадения? если можно передать действие байпасом?
2. Зачем каждый раз писать одни и теже проверки? (С пис зоной к примеру), легче написать общую метод проверки состояния и делать проверку в самом начале действия.

Итог только эти 2 пункта сократят код в 2 раза, а таких чудо рыб у вас многовато в коде, удачи в переписке.
Ответ
#8
данный код писался не мной.
Спасибо
Ответ
#9
xArhangelSx, кто бы не писал стоит переписать.
Не за что и удачи Smile
Ответ
#10
проверки и прочее мелочи убрать будет легкоSmile а вот 1 пункт который вы написали для меня будет потяжелееSmile завтра выложу что получитсяSmile
Ответ


Возможно похожие темы ...
Тема Автор Ответы Просмотры Последний пост
  Проблемы с заливкой таблиц в бд l2jserver HF dbinst_gs a6y 3 1,902 10-08-2017, 11:01 PM
Последний пост: a6y
  проблема с npc сборка l2jserver HF p5 rufus666999 1 1,107 02-03-2016, 06:31 PM
Последний пост: rufus666999
  L2JServer High Five Ljucifer 4 3,529 05-10-2015, 11:31 AM
Последний пост: Donatte
  L2jServer Компиляция AirRebbit 6 2,039 09-21-2014, 09:04 AM
Последний пост: DRIAD
  Баффер kaloy 0 1,197 06-24-2014, 02:51 PM
Последний пост: kaloy
  Гмшоп и баффер для l2jFrozen AndruliKxD 0 1,075 03-14-2014, 10:29 PM
Последний пост: AndruliKxD
  L2jServer Gracia (CT2) 5970 не могу настроить клиент kalexi 12 11,630 02-25-2014, 01:27 PM
Последний пост: Jocker
  Пет Баффер Xuk 0 877 10-24-2013, 05:10 PM
Последний пост: Xuk
  Где находятся скрипты РБ в l2jserver Сантехник 8 2,676 08-14-2013, 02:19 PM
Последний пост: Scream
  компиляция l2jserver Skilz 0 1,259 07-28-2013, 02:34 PM
Последний пост: Skilz

Перейти к форуму:


Пользователи, просматривающие эту тему: 1 Гость(ей)