Ir para conteúdo
  • Cadastre-se

[aCis] NPC BUFFER - INTERLUDE


adm kalunga

Posts recomendados


  • 4 weeks later...

 

Área errada, movido para área correta.

Há algo errado aqui...

Este npc tem a parte dos efeitos e isso devia ser implementado com código java. Entretanto, no download disponível não há nada em relação a Java.

Procede?!

"And I now wait to shake the hand of fate

Like the dusk awaiting dawn"

Link para o comentário
Compartilhar em outros sites

  • 2 weeks later...

Otímo npc aqui vai o code java para quem tiver affim!

 

 

 

package net.sf.l2j.gameserver.model.actor.instance;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.StringTokenizer;
import net.sf.l2j.Config;
import net.sf.l2j.gameserver.ai.CtrlIntention;
import net.sf.l2j.gameserver.ai.L2CharacterAI;
import net.sf.l2j.gameserver.datatables.BufferTable;
import net.sf.l2j.gameserver.datatables.SkillTable;
import net.sf.l2j.gameserver.model.L2Skill;
import net.sf.l2j.gameserver.model.actor.L2Character;
import net.sf.l2j.gameserver.model.actor.L2Summon;
import net.sf.l2j.gameserver.model.actor.template.NpcTemplate;
import net.sf.l2j.gameserver.model.holder.BuffSkillHolder;
import net.sf.l2j.gameserver.model.itemcontainer.PcInventory;
import net.sf.l2j.gameserver.network.SystemMessageId;
import net.sf.l2j.gameserver.network.serverpackets.ActionFailed;
import net.sf.l2j.gameserver.network.serverpackets.MagicSkillUse;
import net.sf.l2j.gameserver.network.serverpackets.MyTargetSelected;
import net.sf.l2j.gameserver.network.serverpackets.NpcHtmlMessage;
import net.sf.l2j.gameserver.network.serverpackets.SocialAction;
import net.sf.l2j.gameserver.network.serverpackets.SystemMessage;
import net.sf.l2j.gameserver.network.serverpackets.ValidateLocation;
import net.sf.l2j.util.Rnd;

public class L2BufferInstance
  extends L2NpcInstance
{
  private static final int VOTE_COIN = 9517;
  
  public L2BufferInstance(int objectId, NpcTemplate template)
  {
    super(objectId, template);
  }
  
  public void onAction(L2PcInstance player)
  {
    if (this != player.getTarget())
    {
      player.setTarget(this);
      player.sendPacket(new MyTargetSelected(getObjectId(), player.getLevel() - getLevel()));
      player.sendPacket(new ValidateLocation(this));
    }
    else if (isInsideRadius(player, 150, false, false))
    {
      SocialAction sa = new SocialAction(this, Rnd.get(8));
      broadcastPacket(sa);
      player.setCurrentFolkNPC(this);
      showSubBufferWindow(player);
      player.sendPacket(ActionFailed.STATIC_PACKET);
    }
    else
    {
      player.getAI().setIntention(CtrlIntention.INTERACT, this);
      player.sendPacket(ActionFailed.STATIC_PACKET);
    }
  }
  
  public void onBypassFeedback(L2PcInstance player, String command)
  {
    StringTokenizer st = new StringTokenizer(command, " ");
    String currentCommand = st.nextToken();
    if (currentCommand.startsWith("menu"))
    {
      NpcHtmlMessage html = new NpcHtmlMessage(1);
      html.setFile(getHtmlPath(getNpcId(), 0));
      html.replace("%objectId%", getObjectId());
      player.sendPacket(html);
    }
    else if (currentCommand.equalsIgnoreCase("getbuff"))
    {
      int buffid = 0;
      int bufflevel = 1;
      String nextWindow = null;
      if (st.countTokens() == 3)
      {
        buffid = Integer.valueOf(st.nextToken()).intValue();
        bufflevel = Integer.valueOf(st.nextToken()).intValue();
        nextWindow = st.nextToken();
      }
      else if (st.countTokens() == 1)
      {
        buffid = Integer.valueOf(st.nextToken()).intValue();
      }
      if (buffid != 0)
      {
        player.broadcastPacket(new MagicSkillUse(this, player, buffid, bufflevel, 5, 0));
        
        player.sendPacket(SystemMessage.getSystemMessage(SystemMessageId.YOU_FEEL_S1_EFFECT).addSkillName(buffid, bufflevel));
        SkillTable.getInstance().getInfo(buffid, bufflevel).getEffects(this, player);
        showSubBufferWindow(player);
        showChatWindow(player, nextWindow);
      }
    }
    else if (currentCommand.equalsIgnoreCase("heroic_vote"))
    {
      if (player.getInventory().getInventoryItemCount(9517, 0) >= 1)
      {
        player.destroyItemByItemId("Consume", 9517, 1, player, true);
        player.broadcastPacket(new MagicSkillUse(this, player, 1374, 1, 5, 0));
        
        player.sendPacket(SystemMessage.getSystemMessage(SystemMessageId.YOU_FEEL_S1_EFFECT).addSkillName(1374, 1));
        SkillTable.getInstance().getInfo(1374, 1).getEffects(this, player);
      }
      else
      {
        NpcHtmlMessage html = new NpcHtmlMessage(getObjectId());
        html.setFile("data/html/mods/buffer/Vote-Coin.htm");
        
        player.sendPacket(html);
      }
    }
    else if (currentCommand.equalsIgnoreCase("fbuff"))
    {
      player.stopAllEffects();
      SkillTable.getInstance().getInfo(1204, 2).getEffects(player, player);
      SkillTable.getInstance().getInfo(1068, 3).getEffects(player, player);
      SkillTable.getInstance().getInfo(1040, 3).getEffects(player, player);
      SkillTable.getInstance().getInfo(1035, 2).getEffects(player, player);
      SkillTable.getInstance().getInfo(1036, 2).getEffects(player, player);
      SkillTable.getInstance().getInfo(1045, 6).getEffects(player, player);
      SkillTable.getInstance().getInfo(1086, 2).getEffects(player, player);
      SkillTable.getInstance().getInfo(1077, 3).getEffects(player, player);
      SkillTable.getInstance().getInfo(1240, 3).getEffects(player, player);
      SkillTable.getInstance().getInfo(1242, 3).getEffects(player, player);
      SkillTable.getInstance().getInfo(1062, 2).getEffects(player, player);
      SkillTable.getInstance().getInfo(264, 1).getEffects(player, player);
      SkillTable.getInstance().getInfo(267, 1).getEffects(player, player);
      SkillTable.getInstance().getInfo(268, 1).getEffects(player, player);
      SkillTable.getInstance().getInfo(269, 1).getEffects(player, player);
      SkillTable.getInstance().getInfo(304, 1).getEffects(player, player);
      SkillTable.getInstance().getInfo(364, 1).getEffects(player, player);
      SkillTable.getInstance().getInfo(349, 1).getEffects(player, player);
      SkillTable.getInstance().getInfo(271, 1).getEffects(player, player);
      SkillTable.getInstance().getInfo(272, 1).getEffects(player, player);
      SkillTable.getInstance().getInfo(274, 1).getEffects(player, player);
      SkillTable.getInstance().getInfo(275, 1).getEffects(player, player);
      SkillTable.getInstance().getInfo(310, 1).getEffects(player, player);
      SkillTable.getInstance().getInfo(1363, 1).getEffects(player, player);
      SkillTable.getInstance().getInfo(1389, 3).getEffects(player, player);
      SkillTable.getInstance().getInfo(4699, 13).getEffects(player, player);
      SkillTable.getInstance().getInfo(4703, 13).getEffects(player, player);
      player.setCurrentHpMp(player.getMaxHp(), player.getMaxMp());
      player.setCurrentCp(player.getMaxCp());
      player.sendMessage("You get a Fighter-buff complect.");
      showSubBufferWindow(player);
      player.broadcastUserInfo();
    }
    else if (currentCommand.equalsIgnoreCase("mbuff"))
    {
      player.stopAllEffects();
      SkillTable.getInstance().getInfo(1204, 2).getEffects(player, player);
      SkillTable.getInstance().getInfo(1040, 3).getEffects(player, player);
      SkillTable.getInstance().getInfo(1035, 2).getEffects(player, player);
      SkillTable.getInstance().getInfo(1045, 6).getEffects(player, player);
      SkillTable.getInstance().getInfo(1048, 6).getEffects(player, player);
      SkillTable.getInstance().getInfo(1036, 2).getEffects(player, player);
      SkillTable.getInstance().getInfo(1062, 2).getEffects(player, player);
      SkillTable.getInstance().getInfo(1078, 6).getEffects(player, player);
      SkillTable.getInstance().getInfo(1303, 2).getEffects(player, player);
      SkillTable.getInstance().getInfo(1059, 3).getEffects(player, player);
      SkillTable.getInstance().getInfo(1085, 3).getEffects(player, player);
      SkillTable.getInstance().getInfo(264, 1).getEffects(player, player);
      SkillTable.getInstance().getInfo(267, 1).getEffects(player, player);
      SkillTable.getInstance().getInfo(268, 1).getEffects(player, player);
      SkillTable.getInstance().getInfo(304, 1).getEffects(player, player);
      SkillTable.getInstance().getInfo(364, 1).getEffects(player, player);
      SkillTable.getInstance().getInfo(349, 1).getEffects(player, player);
      SkillTable.getInstance().getInfo(273, 1).getEffects(player, player);
      SkillTable.getInstance().getInfo(276, 1).getEffects(player, player);
      SkillTable.getInstance().getInfo(365, 1).getEffects(player, player);
      SkillTable.getInstance().getInfo(1413, 1).getEffects(player, player);
      SkillTable.getInstance().getInfo(4703, 13).getEffects(player, player);
      player.setCurrentHpMp(player.getMaxHp(), player.getMaxMp());
      player.setCurrentCp(player.getMaxCp());
      player.sendMessage("You get a Mage-buff complect.");
      showSubBufferWindow(player);
      player.broadcastUserInfo();
    }
    else if (currentCommand.startsWith("cleanup"))
    {
      player.broadcastPacket(new MagicSkillUse(this, player, 1056, 12, 100, 0));
      player.stopAllEffectsExceptThoseThatLastThroughDeath();
      
      L2Summon summon = player.getPet();
      if (summon != null) {
        summon.stopAllEffectsExceptThoseThatLastThroughDeath();
      }
      NpcHtmlMessage html = new NpcHtmlMessage(1);
      html.setFile(getHtmlPath(getNpcId(), 6));
      html.replace("%objectId%", getObjectId());
      player.sendPacket(html);
    }
    else if (currentCommand.startsWith("heal"))
    {
      player.broadcastPacket(new MagicSkillUse(this, player, 1218, 33, 100, 0));
      
      player.setCurrentHpMp(player.getMaxHp(), player.getMaxMp());
      player.setCurrentCp(player.getMaxCp());
      
      L2Summon summon = player.getPet();
      if (summon != null) {
        summon.setCurrentHpMp(summon.getMaxHp(), summon.getMaxMp());
      }
      NpcHtmlMessage html = new NpcHtmlMessage(1);
      html.setFile(getHtmlPath(getNpcId(), 6));
      html.replace("%objectId%", getObjectId());
      player.sendPacket(html);
    }
    else if (currentCommand.startsWith("support"))
    {
      showGiveBuffsWindow(player, st.nextToken());
    }
    else if (currentCommand.startsWith("givebuffs"))
    {
      String targetType = st.nextToken();
      String schemeName = st.nextToken();
      int cost = Integer.parseInt(st.nextToken());
      
      L2Character target = targetType.equalsIgnoreCase("pet") ? player.getPet() : player;
      Iterator i$;
      if (target == null) {
        player.sendMessage("You don't have a pet.");
      } else if ((cost == 0) || (player.reduceAdena("NPC Buffer", cost, this, true))) {
        for (i$ = BufferTable.getInstance().getScheme(player.getObjectId(), schemeName).iterator(); i$.hasNext();)
        {
          int skillId = ((Integer)i$.next()).intValue();
          SkillTable.getInstance().getInfo(skillId, SkillTable.getInstance().getMaxLevel(skillId)).getEffects(this, target);
        }
      }
      showGiveBuffsWindow(player, targetType);
    }
    else if (currentCommand.startsWith("editschemes"))
    {
      showEditSchemeWindow(player, st.nextToken(), st.nextToken());
    }
    else if (currentCommand.startsWith("editmyschemes"))
    {
      MyListWindow(player, st.nextToken(), st.nextToken());
    }
    else if (currentCommand.startsWith("skill"))
    {
      String groupType = st.nextToken();
      String schemeName = st.nextToken();
      
      int skillId = Integer.parseInt(st.nextToken());
      
      List<Integer> skills = BufferTable.getInstance().getScheme(player.getObjectId(), schemeName);
      if ((currentCommand.startsWith("skillselect")) && (!schemeName.equalsIgnoreCase("none")))
      {
        if (skills.size() < Config.BUFFER_MAX_SKILLS) {
          skills.add(Integer.valueOf(skillId));
        } else {
          player.sendMessage("This scheme has reached the maximum amount of buffs.");
        }
      }
      else if (currentCommand.startsWith("skillunselect"))
      {
        skills.remove(Integer.valueOf(skillId));
        MyListWindow(player, groupType, schemeName);
        return;
      }
      showEditSchemeWindow(player, groupType, schemeName);
    }
    else if (currentCommand.startsWith("subbuffer"))
    {
      showSubBufferWindow(player);
    }
    else if (currentCommand.startsWith("manageschemes"))
    {
      showManageSchemeWindow(player);
    }
    else
    {
      if (currentCommand.startsWith("createscheme")) {
        try
        {
          String schemeName = st.nextToken();
          if (schemeName.length() > 14)
          {
            player.sendMessage("Scheme's name must contain up to 14 chars. Spaces are trimmed.");
            showManageSchemeWindow(player);
            return;
          }
          Map<String, ArrayList<Integer>> schemes = BufferTable.getInstance().getPlayerSchemes(player.getObjectId());
          if (schemes != null)
          {
            if (schemes.size() == Config.BUFFER_MAX_SCHEMES)
            {
              player.sendMessage("Maximum schemes amount is already reached.");
              showManageSchemeWindow(player);
              return;
            }
            if (schemes.containsKey(schemeName))
            {
              player.sendMessage("The scheme name already exists.");
              showManageSchemeWindow(player);
              return;
            }
          }
          BufferTable.getInstance().setScheme(player.getObjectId(), schemeName.trim(), new ArrayList());
          showManageSchemeWindow(player);
        }
        catch (Exception e)
        {
          player.sendMessage("Scheme's name must contain up to 14 chars. Spaces are trimmed.");
          showManageSchemeWindow(player);
        }
      }
      if (currentCommand.startsWith("deletescheme"))
      {
        try
        {
          String schemeName = st.nextToken();
          Map<String, ArrayList<Integer>> schemes = BufferTable.getInstance().getPlayerSchemes(player.getObjectId());
          if ((schemes != null) && (schemes.containsKey(schemeName))) {
            schemes.remove(schemeName);
          }
        }
        catch (Exception e)
        {
          player.sendMessage("This scheme name is invalid.");
        }
        showManageSchemeWindow(player);
      }
      else if (currentCommand.startsWith("clearscheme"))
      {
        try
        {
          String schemeName = st.nextToken();
          Map<String, ArrayList<Integer>> schemes = BufferTable.getInstance().getPlayerSchemes(player.getObjectId());
          if ((schemes != null) && (schemes.containsKey(schemeName))) {
            ((ArrayList)schemes.get(schemeName)).clear();
          }
        }
        catch (Exception e)
        {
          player.sendMessage("This scheme name is invalid.");
        }
        showManageSchemeWindow(player);
      }
    }
    super.onBypassFeedback(player, command);
  }
  
  public String getHtmlPath(int npcId, int val)
  {
    String filename = "";
    if (val == 0) {
      filename = "" + npcId;
    } else {
      filename = npcId + "-" + val;
    }
    return "data/html/mods/buffer/" + filename + ".htm";
  }
  
  private void showGiveBuffsWindow(L2PcInstance player, String targetType)
  {
    StringBuilder sb = new StringBuilder();
    
    Map<String, ArrayList<Integer>> schemes = BufferTable.getInstance().getPlayerSchemes(player.getObjectId());
    if ((schemes == null) || (schemes.isEmpty())) {
      sb.append("<font color=\"LEVEL\">You haven't defined any scheme, please go to 'Manage my schemes' and create at least one valid scheme.</font>");
    } else {
      for (Map.Entry<String, ArrayList<Integer>> scheme : schemes.entrySet())
      {
        int cost = getFee((ArrayList)scheme.getValue());
        sb.append("<font color=\"LEVEL\"><a action=\"bypass -h npc_%objectId%_givebuffs " + targetType + " " + (String)scheme.getKey() + " " + cost + "\">" + (String)scheme.getKey() + " (" + ((ArrayList)scheme.getValue()).size() + " skill(s))</a>" + (cost > 0 ? " - Adena cost: " + cost : "") + "</font><br1>");
      }
    }
    NpcHtmlMessage html = new NpcHtmlMessage(1);
    html.setFile(getHtmlPath(getNpcId(), 1));
    html.replace("%schemes%", sb.toString());
    html.replace("%targettype%", targetType.equalsIgnoreCase("pet") ? " <a action=\"bypass -h npc_%objectId%_support player\">yourself</a> | your pet" : "yourself | <a action=\"bypass -h npc_%objectId%_support pet\">your pet</a>");
    html.replace("%objectId%", getObjectId());
    player.sendPacket(html);
  }
  
  private void showManageSchemeWindow(L2PcInstance player)
  {
    StringBuilder sb = new StringBuilder();
    
    Map<String, ArrayList<Integer>> schemes = BufferTable.getInstance().getPlayerSchemes(player.getObjectId());
    if ((schemes == null) || (schemes.isEmpty()))
    {
      sb.append("<font color=\"LEVEL\">You haven't created any scheme.</font>");
    }
    else
    {
      sb.append("<table>");
      for (Map.Entry<String, ArrayList<Integer>> scheme : schemes.entrySet())
      {
        sb.append("<tr><td width=140>" + (String)scheme.getKey() + " (" + ((ArrayList)scheme.getValue()).size() + " skill(s))</td>");
        sb.append("<td width=60><button value=\"Clear\" action=\"bypass -h npc_%objectId%_clearscheme " + (String)scheme.getKey() + "\" width=55 height=15 back=\"sek.cbui94\" fore=\"sek.cbui92\"></td>");
        sb.append("<td width=60><button value=\"Drop\" action=\"bypass -h npc_%objectId%_deletescheme " + (String)scheme.getKey() + "\" width=55 height=15 back=\"sek.cbui94\" fore=\"sek.cbui92\"></td></tr>");
      }
      sb.append("</table>");
    }
    NpcHtmlMessage html = new NpcHtmlMessage(1);
    html.setFile(getHtmlPath(getNpcId(), 2));
    html.replace("%schemes%", sb.toString());
    html.replace("%max_schemes%", Config.BUFFER_MAX_SCHEMES);
    html.replace("%objectId%", getObjectId());
    player.sendPacket(html);
  }
  
  private void showEditSchemeWindow(L2PcInstance player, String groupType, String schemeName)
  {
    NpcHtmlMessage html = new NpcHtmlMessage(1);
    if (schemeName.equalsIgnoreCase("none"))
    {
      html.setFile(getHtmlPath(getNpcId(), 3));
    }
    else
    {
      if (groupType.equalsIgnoreCase("none"))
      {
        html.setFile(getHtmlPath(getNpcId(), 4));
      }
      else
      {
        html.setFile(getHtmlPath(getNpcId(), 5));
        html.replace("%skilllistframe%", getGroupSkillList(player, groupType, schemeName));
      }
      html.replace("%schemename%", schemeName);
      html.replace("%myschemeframe%", getPlayerSchemeSkillList(player, groupType, schemeName));
      html.replace("%typesframe%", getTypesFrame(groupType, schemeName));
    }
    html.replace("%schemes%", getPlayerSchemes(player, schemeName));
    html.replace("%objectId%", getObjectId());
    player.sendPacket(html);
  }
  
  private void MyListWindow(L2PcInstance player, String groupType, String schemeName)
  {
    NpcHtmlMessage html = new NpcHtmlMessage(1);
    if (schemeName.equalsIgnoreCase("none"))
    {
      html.setFile(getHtmlPath(getNpcId(), 19));
    }
    else
    {
      if (groupType.equalsIgnoreCase("none"))
      {
        html.setFile(getHtmlPath(getNpcId(), 20));
      }
      else
      {
        html.setFile(getHtmlPath(getNpcId(), 21));
        html.replace("%skilllistframe%", getGroupSkillList(player, groupType, schemeName));
      }
      html.replace("%schemename%", schemeName);
      html.replace("%myschemeframe%", getPlayerSchemeSkillList(player, groupType, schemeName));
      html.replace("%typesframe%", getTypesFrame(groupType, schemeName));
    }
    html.replace("%schemes%", getPlayerMySchemes(player, schemeName));
    html.replace("%objectId%", String.valueOf(getObjectId()));
    player.sendPacket(html);
  }
  
  private void showSubBufferWindow(L2PcInstance player)
  {
    NpcHtmlMessage html = new NpcHtmlMessage(1);
    
    html.setFile(getHtmlPath(getNpcId(), 6));
    html.replace("%objectId%", getObjectId());
    player.sendPacket(html);
  }
  
  private static String getPlayerSchemes(L2PcInstance player, String schemeName)
  {
    Map<String, ArrayList<Integer>> schemes = BufferTable.getInstance().getPlayerSchemes(player.getObjectId());
    if ((schemes == null) || (schemes.isEmpty())) {
      return "Please create at least one scheme.";
    }
    StringBuilder tb = new StringBuilder();
    tb.append("<table>");
    for (Map.Entry<String, ArrayList<Integer>> scheme : schemes.entrySet()) {
      if (schemeName.equalsIgnoreCase((String)scheme.getKey())) {
        tb.append("<tr><td width=200>" + (String)scheme.getKey() + " (<font color=\"LEVEL\">" + ((ArrayList)scheme.getValue()).size() + "</font> / " + Config.BUFFER_MAX_SKILLS + " skill(s))</td></tr>");
      } else {
        tb.append("<tr><td width=200><a action=\"bypass -h npc_%objectId%_editschemes none " + (String)scheme.getKey() + "\">" + (String)scheme.getKey() + " (" + ((ArrayList)scheme.getValue()).size() + " / " + Config.BUFFER_MAX_SKILLS + " skill(s))</a></td></tr>");
      }
    }
    tb.append("</table>");
    
    return tb.toString();
  }
  
  private static String getPlayerMySchemes(L2PcInstance player, String schemeName)
  {
    Map<String, ArrayList<Integer>> schemes = BufferTable.getInstance().getPlayerSchemes(player.getObjectId());
    if ((schemes == null) || (schemes.isEmpty())) {
      return "Please create at least one scheme.";
    }
    StringBuilder tb = new StringBuilder();
    tb.append("<table>");
    for (Map.Entry<String, ArrayList<Integer>> scheme : schemes.entrySet()) {
      if (schemeName.equalsIgnoreCase((String)scheme.getKey())) {
        tb.append("<tr><td width=200>" + (String)scheme.getKey() + " (<font color=\"LEVEL\">" + ((ArrayList)scheme.getValue()).size() + "</font> / " + Config.BUFFER_MAX_SKILLS + " skill(s))</td></tr>");
      } else {
        tb.append("<tr><td width=200><a action=\"bypass -h npc_%objectId%_editmyschemes none " + (String)scheme.getKey() + "\">" + (String)scheme.getKey() + " (" + ((ArrayList)scheme.getValue()).size() + " / " + Config.BUFFER_MAX_SKILLS + " skill(s))</a></td></tr>");
      }
    }
    tb.append("</table>");
    
    return tb.toString();
  }
  
  private static String getGroupSkillList(L2PcInstance player, String groupType, String schemeName)
  {
    List<Integer> skills = new ArrayList();
    for (Iterator i$ = BufferTable.getSkillsIdsByType(groupType).iterator(); i$.hasNext();)
    {
      int skillId = ((Integer)i$.next()).intValue();
      if (!BufferTable.getInstance().getSchemeContainsSkill(player.getObjectId(), schemeName, skillId)) {
        skills.add(Integer.valueOf(skillId));
      }
    }
    if (skills.isEmpty()) {
      return "That group doesn't contain any skills.";
    }
    StringBuilder tb = new StringBuilder();
    
    tb.append("<table>");
    int count = 0;
    for (Iterator i$ = skills.iterator(); i$.hasNext();)
    {
      int skillId = ((Integer)i$.next()).intValue();
      if (!BufferTable.getInstance().getSchemeContainsSkill(player.getObjectId(), schemeName, skillId))
      {
        if (count == 0) {
          tb.append("<tr>");
        }
        if (skillId < 100) {
          tb.append("<td><img src=\"icon.skill00" + skillId + "\" width=32 height=13></td><td width=180><font color=\"6e6e6a\"><a action=\"bypass -h npc_%objectId%_skillselect " + groupType + " " + schemeName + " " + skillId + "\">" + SkillTable.getInstance().getInfo(skillId, 1).getName() + "</a></font></td>");
        } else if (skillId < 1000) {
          tb.append("<td><img src=\"icon.skill0" + skillId + "\" width=32 height=13></td><td width=180><font color=\"6e6e6a\"><a action=\"bypass -h npc_%objectId%_skillselect " + groupType + " " + schemeName + " " + skillId + "\">" + SkillTable.getInstance().getInfo(skillId, 1).getName() + "</a></font></td>");
        } else {
          tb.append("<td><img src=\"icon.skill" + skillId + "\" width=32 height=13></td><td width=180><font color=\"6e6e6a\"><a action=\"bypass -h npc_%objectId%_skillselect " + groupType + " " + schemeName + " " + skillId + "\">" + SkillTable.getInstance().getInfo(skillId, 1).getName() + "</a></font></td>");
        }
        count++;
        if (count == 2)
        {
          tb.append("</tr>");
          count = 0;
        }
      }
    }
    if (!tb.toString().endsWith("</tr>")) {
      tb.append("</tr>");
    }
    tb.append("</table>");
    
    return tb.toString();
  }
  
  private static String getPlayerSchemeSkillList(L2PcInstance player, String groupType, String schemeName)
  {
    List<Integer> skills = BufferTable.getInstance().getScheme(player.getObjectId(), schemeName);
    if (skills.isEmpty()) {
      return "That scheme is empty.";
    }
    StringBuilder tb = new StringBuilder();
    tb.append("<table>");
    int count = 0;
    for (Iterator i$ = skills.iterator(); i$.hasNext();)
    {
      int sk = ((Integer)i$.next()).intValue();
      if (count == 0) {
        tb.append("<tr>");
      }
      if (sk < 100) {
        tb.append("<td><img src=\"icon.skill00" + sk + "\" width=32 height=13></td><td width=180><font color=\"6e6e6a\"><a action=\"bypass -h npc_%objectId%_skillunselect " + groupType + " " + schemeName + " " + sk + "\">" + SkillTable.getInstance().getInfo(sk, 1).getName() + "</a></font></td>");
      } else if (sk < 1000) {
        tb.append("<td><img src=\"icon.skill0" + sk + "\" width=32 height=13></td><td width=180><font color=\"6e6e6a\"><a action=\"bypass -h npc_%objectId%_skillunselect " + groupType + " " + schemeName + " " + sk + "\">" + SkillTable.getInstance().getInfo(sk, 1).getName() + "</a></font></td>");
      } else {
        tb.append("<td><img src=\"icon.skill" + sk + "\" width=32 height=13></td><td width=180><font color=\"6e6e6a\"><a action=\"bypass -h npc_%objectId%_skillunselect " + groupType + " " + schemeName + " " + sk + "\">" + SkillTable.getInstance().getInfo(sk, 1).getName() + "</a></font></td>");
      }
      count++;
      if (count == 2)
      {
        tb.append("</tr>");
        count = 0;
      }
    }
    if (!tb.toString().endsWith("<tr>")) {
      tb.append("<tr>");
    }
    tb.append("</table>");
    
    return tb.toString();
  }
  
  private static String getTypesFrame(String groupType, String schemeName)
  {
    StringBuilder tb = new StringBuilder();
    tb.append("<table>");
    
    int count = 0;
    for (String s : BufferTable.getSkillTypes())
    {
      if (count == 0) {
        tb.append("<tr>");
      }
      if (groupType.equalsIgnoreCase(s)) {
        tb.append("<td width=65>" + s + "</td>");
      } else {
        tb.append("<td width=65><a action=\"bypass -h npc_%objectId%_editschemes " + s + " " + schemeName + "\">" + s + "</a></td>");
      }
      count++;
      if (count == 4)
      {
        tb.append("</tr>");
        count = 0;
      }
    }
    if (!tb.toString().endsWith("</tr>")) {
      tb.append("</tr>");
    }
    tb.append("</table>");
    
    return tb.toString();
  }
  
  private static int getFee(ArrayList<Integer> list)
  {
    if (Config.BUFFER_STATIC_BUFF_COST >= 0) {
      return list.size() * Config.BUFFER_STATIC_BUFF_COST;
    }
    int fee = 0;
    for (Iterator i$ = list.iterator(); i$.hasNext();)
    {
      int sk = ((Integer)i$.next()).intValue();
      fee += ((BuffSkillHolder)Config.BUFFER_BUFFLIST.get(Integer.valueOf(sk))).getPrice();
    }
    return fee;
  }
}

 

 

Link para o comentário
Compartilhar em outros sites

  • 2 weeks later...

Esse NPC é para aCis, que já tem o L2BufferInstance.

 

Otímo npc aqui vai o code java para quem tiver affim!

 

 

 

package net.sf.l2j.gameserver.model.actor.instance;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.StringTokenizer;
import net.sf.l2j.Config;
import net.sf.l2j.gameserver.ai.CtrlIntention;
import net.sf.l2j.gameserver.ai.L2CharacterAI;
import net.sf.l2j.gameserver.datatables.BufferTable;
import net.sf.l2j.gameserver.datatables.SkillTable;
import net.sf.l2j.gameserver.model.L2Skill;
import net.sf.l2j.gameserver.model.actor.L2Character;
import net.sf.l2j.gameserver.model.actor.L2Summon;
import net.sf.l2j.gameserver.model.actor.template.NpcTemplate;
import net.sf.l2j.gameserver.model.holder.BuffSkillHolder;
import net.sf.l2j.gameserver.model.itemcontainer.PcInventory;
import net.sf.l2j.gameserver.network.SystemMessageId;
import net.sf.l2j.gameserver.network.serverpackets.ActionFailed;
import net.sf.l2j.gameserver.network.serverpackets.MagicSkillUse;
import net.sf.l2j.gameserver.network.serverpackets.MyTargetSelected;
import net.sf.l2j.gameserver.network.serverpackets.NpcHtmlMessage;
import net.sf.l2j.gameserver.network.serverpackets.SocialAction;
import net.sf.l2j.gameserver.network.serverpackets.SystemMessage;
import net.sf.l2j.gameserver.network.serverpackets.ValidateLocation;
import net.sf.l2j.util.Rnd;

public class L2BufferInstance
  extends L2NpcInstance
{
  private static final int VOTE_COIN = 9517;
  
  public L2BufferInstance(int objectId, NpcTemplate template)
  {
    super(objectId, template);
  }
  
  public void onAction(L2PcInstance player)
  {
    if (this != player.getTarget())
    {
      player.setTarget(this);
      player.sendPacket(new MyTargetSelected(getObjectId(), player.getLevel() - getLevel()));
      player.sendPacket(new ValidateLocation(this));
    }
    else if (isInsideRadius(player, 150, false, false))
    {
      SocialAction sa = new SocialAction(this, Rnd.get(8));
      broadcastPacket(sa);
      player.setCurrentFolkNPC(this);
      showSubBufferWindow(player);
      player.sendPacket(ActionFailed.STATIC_PACKET);
    }
    else
    {
      player.getAI().setIntention(CtrlIntention.INTERACT, this);
      player.sendPacket(ActionFailed.STATIC_PACKET);
    }
  }
  
  public void onBypassFeedback(L2PcInstance player, String command)
  {
    StringTokenizer st = new StringTokenizer(command, " ");
    String currentCommand = st.nextToken();
    if (currentCommand.startsWith("menu"))
    {
      NpcHtmlMessage html = new NpcHtmlMessage(1);
      html.setFile(getHtmlPath(getNpcId(), 0));
      html.replace("%objectId%", getObjectId());
      player.sendPacket(html);
    }
    else if (currentCommand.equalsIgnoreCase("getbuff"))
    {
      int buffid = 0;
      int bufflevel = 1;
      String nextWindow = null;
      if (st.countTokens() == 3)
      {
        buffid = Integer.valueOf(st.nextToken()).intValue();
        bufflevel = Integer.valueOf(st.nextToken()).intValue();
        nextWindow = st.nextToken();
      }
      else if (st.countTokens() == 1)
      {
        buffid = Integer.valueOf(st.nextToken()).intValue();
      }
      if (buffid != 0)
      {
        player.broadcastPacket(new MagicSkillUse(this, player, buffid, bufflevel, 5, 0));
        
        player.sendPacket(SystemMessage.getSystemMessage(SystemMessageId.YOU_FEEL_S1_EFFECT).addSkillName(buffid, bufflevel));
        SkillTable.getInstance().getInfo(buffid, bufflevel).getEffects(this, player);
        showSubBufferWindow(player);
        showChatWindow(player, nextWindow);
      }
    }
    else if (currentCommand.equalsIgnoreCase("heroic_vote"))
    {
      if (player.getInventory().getInventoryItemCount(9517, 0) >= 1)
      {
        player.destroyItemByItemId("Consume", 9517, 1, player, true);
        player.broadcastPacket(new MagicSkillUse(this, player, 1374, 1, 5, 0));
        
        player.sendPacket(SystemMessage.getSystemMessage(SystemMessageId.YOU_FEEL_S1_EFFECT).addSkillName(1374, 1));
        SkillTable.getInstance().getInfo(1374, 1).getEffects(this, player);
      }
      else
      {
        NpcHtmlMessage html = new NpcHtmlMessage(getObjectId());
        html.setFile("data/html/mods/buffer/Vote-Coin.htm");
        
        player.sendPacket(html);
      }
    }
    else if (currentCommand.equalsIgnoreCase("fbuff"))
    {
      player.stopAllEffects();
      SkillTable.getInstance().getInfo(1204, 2).getEffects(player, player);
      SkillTable.getInstance().getInfo(1068, 3).getEffects(player, player);
      SkillTable.getInstance().getInfo(1040, 3).getEffects(player, player);
      SkillTable.getInstance().getInfo(1035, 2).getEffects(player, player);
      SkillTable.getInstance().getInfo(1036, 2).getEffects(player, player);
      SkillTable.getInstance().getInfo(1045, 6).getEffects(player, player);
      SkillTable.getInstance().getInfo(1086, 2).getEffects(player, player);
      SkillTable.getInstance().getInfo(1077, 3).getEffects(player, player);
      SkillTable.getInstance().getInfo(1240, 3).getEffects(player, player);
      SkillTable.getInstance().getInfo(1242, 3).getEffects(player, player);
      SkillTable.getInstance().getInfo(1062, 2).getEffects(player, player);
      SkillTable.getInstance().getInfo(264, 1).getEffects(player, player);
      SkillTable.getInstance().getInfo(267, 1).getEffects(player, player);
      SkillTable.getInstance().getInfo(268, 1).getEffects(player, player);
      SkillTable.getInstance().getInfo(269, 1).getEffects(player, player);
      SkillTable.getInstance().getInfo(304, 1).getEffects(player, player);
      SkillTable.getInstance().getInfo(364, 1).getEffects(player, player);
      SkillTable.getInstance().getInfo(349, 1).getEffects(player, player);
      SkillTable.getInstance().getInfo(271, 1).getEffects(player, player);
      SkillTable.getInstance().getInfo(272, 1).getEffects(player, player);
      SkillTable.getInstance().getInfo(274, 1).getEffects(player, player);
      SkillTable.getInstance().getInfo(275, 1).getEffects(player, player);
      SkillTable.getInstance().getInfo(310, 1).getEffects(player, player);
      SkillTable.getInstance().getInfo(1363, 1).getEffects(player, player);
      SkillTable.getInstance().getInfo(1389, 3).getEffects(player, player);
      SkillTable.getInstance().getInfo(4699, 13).getEffects(player, player);
      SkillTable.getInstance().getInfo(4703, 13).getEffects(player, player);
      player.setCurrentHpMp(player.getMaxHp(), player.getMaxMp());
      player.setCurrentCp(player.getMaxCp());
      player.sendMessage("You get a Fighter-buff complect.");
      showSubBufferWindow(player);
      player.broadcastUserInfo();
    }
    else if (currentCommand.equalsIgnoreCase("mbuff"))
    {
      player.stopAllEffects();
      SkillTable.getInstance().getInfo(1204, 2).getEffects(player, player);
      SkillTable.getInstance().getInfo(1040, 3).getEffects(player, player);
      SkillTable.getInstance().getInfo(1035, 2).getEffects(player, player);
      SkillTable.getInstance().getInfo(1045, 6).getEffects(player, player);
      SkillTable.getInstance().getInfo(1048, 6).getEffects(player, player);
      SkillTable.getInstance().getInfo(1036, 2).getEffects(player, player);
      SkillTable.getInstance().getInfo(1062, 2).getEffects(player, player);
      SkillTable.getInstance().getInfo(1078, 6).getEffects(player, player);
      SkillTable.getInstance().getInfo(1303, 2).getEffects(player, player);
      SkillTable.getInstance().getInfo(1059, 3).getEffects(player, player);
      SkillTable.getInstance().getInfo(1085, 3).getEffects(player, player);
      SkillTable.getInstance().getInfo(264, 1).getEffects(player, player);
      SkillTable.getInstance().getInfo(267, 1).getEffects(player, player);
      SkillTable.getInstance().getInfo(268, 1).getEffects(player, player);
      SkillTable.getInstance().getInfo(304, 1).getEffects(player, player);
      SkillTable.getInstance().getInfo(364, 1).getEffects(player, player);
      SkillTable.getInstance().getInfo(349, 1).getEffects(player, player);
      SkillTable.getInstance().getInfo(273, 1).getEffects(player, player);
      SkillTable.getInstance().getInfo(276, 1).getEffects(player, player);
      SkillTable.getInstance().getInfo(365, 1).getEffects(player, player);
      SkillTable.getInstance().getInfo(1413, 1).getEffects(player, player);
      SkillTable.getInstance().getInfo(4703, 13).getEffects(player, player);
      player.setCurrentHpMp(player.getMaxHp(), player.getMaxMp());
      player.setCurrentCp(player.getMaxCp());
      player.sendMessage("You get a Mage-buff complect.");
      showSubBufferWindow(player);
      player.broadcastUserInfo();
    }
    else if (currentCommand.startsWith("cleanup"))
    {
      player.broadcastPacket(new MagicSkillUse(this, player, 1056, 12, 100, 0));
      player.stopAllEffectsExceptThoseThatLastThroughDeath();
      
      L2Summon summon = player.getPet();
      if (summon != null) {
        summon.stopAllEffectsExceptThoseThatLastThroughDeath();
      }
      NpcHtmlMessage html = new NpcHtmlMessage(1);
      html.setFile(getHtmlPath(getNpcId(), 6));
      html.replace("%objectId%", getObjectId());
      player.sendPacket(html);
    }
    else if (currentCommand.startsWith("heal"))
    {
      player.broadcastPacket(new MagicSkillUse(this, player, 1218, 33, 100, 0));
      
      player.setCurrentHpMp(player.getMaxHp(), player.getMaxMp());
      player.setCurrentCp(player.getMaxCp());
      
      L2Summon summon = player.getPet();
      if (summon != null) {
        summon.setCurrentHpMp(summon.getMaxHp(), summon.getMaxMp());
      }
      NpcHtmlMessage html = new NpcHtmlMessage(1);
      html.setFile(getHtmlPath(getNpcId(), 6));
      html.replace("%objectId%", getObjectId());
      player.sendPacket(html);
    }
    else if (currentCommand.startsWith("support"))
    {
      showGiveBuffsWindow(player, st.nextToken());
    }
    else if (currentCommand.startsWith("givebuffs"))
    {
      String targetType = st.nextToken();
      String schemeName = st.nextToken();
      int cost = Integer.parseInt(st.nextToken());
      
      L2Character target = targetType.equalsIgnoreCase("pet") ? player.getPet() : player;
      Iterator i$;
      if (target == null) {
        player.sendMessage("You don't have a pet.");
      } else if ((cost == 0) || (player.reduceAdena("NPC Buffer", cost, this, true))) {
        for (i$ = BufferTable.getInstance().getScheme(player.getObjectId(), schemeName).iterator(); i$.hasNext();)
        {
          int skillId = ((Integer)i$.next()).intValue();
          SkillTable.getInstance().getInfo(skillId, SkillTable.getInstance().getMaxLevel(skillId)).getEffects(this, target);
        }
      }
      showGiveBuffsWindow(player, targetType);
    }
    else if (currentCommand.startsWith("editschemes"))
    {
      showEditSchemeWindow(player, st.nextToken(), st.nextToken());
    }
    else if (currentCommand.startsWith("editmyschemes"))
    {
      MyListWindow(player, st.nextToken(), st.nextToken());
    }
    else if (currentCommand.startsWith("skill"))
    {
      String groupType = st.nextToken();
      String schemeName = st.nextToken();
      
      int skillId = Integer.parseInt(st.nextToken());
      
      List<Integer> skills = BufferTable.getInstance().getScheme(player.getObjectId(), schemeName);
      if ((currentCommand.startsWith("skillselect")) && (!schemeName.equalsIgnoreCase("none")))
      {
        if (skills.size() < Config.BUFFER_MAX_SKILLS) {
          skills.add(Integer.valueOf(skillId));
        } else {
          player.sendMessage("This scheme has reached the maximum amount of buffs.");
        }
      }
      else if (currentCommand.startsWith("skillunselect"))
      {
        skills.remove(Integer.valueOf(skillId));
        MyListWindow(player, groupType, schemeName);
        return;
      }
      showEditSchemeWindow(player, groupType, schemeName);
    }
    else if (currentCommand.startsWith("subbuffer"))
    {
      showSubBufferWindow(player);
    }
    else if (currentCommand.startsWith("manageschemes"))
    {
      showManageSchemeWindow(player);
    }
    else
    {
      if (currentCommand.startsWith("createscheme")) {
        try
        {
          String schemeName = st.nextToken();
          if (schemeName.length() > 14)
          {
            player.sendMessage("Scheme's name must contain up to 14 chars. Spaces are trimmed.");
            showManageSchemeWindow(player);
            return;
          }
          Map<String, ArrayList<Integer>> schemes = BufferTable.getInstance().getPlayerSchemes(player.getObjectId());
          if (schemes != null)
          {
            if (schemes.size() == Config.BUFFER_MAX_SCHEMES)
            {
              player.sendMessage("Maximum schemes amount is already reached.");
              showManageSchemeWindow(player);
              return;
            }
            if (schemes.containsKey(schemeName))
            {
              player.sendMessage("The scheme name already exists.");
              showManageSchemeWindow(player);
              return;
            }
          }
          BufferTable.getInstance().setScheme(player.getObjectId(), schemeName.trim(), new ArrayList());
          showManageSchemeWindow(player);
        }
        catch (Exception e)
        {
          player.sendMessage("Scheme's name must contain up to 14 chars. Spaces are trimmed.");
          showManageSchemeWindow(player);
        }
      }
      if (currentCommand.startsWith("deletescheme"))
      {
        try
        {
          String schemeName = st.nextToken();
          Map<String, ArrayList<Integer>> schemes = BufferTable.getInstance().getPlayerSchemes(player.getObjectId());
          if ((schemes != null) && (schemes.containsKey(schemeName))) {
            schemes.remove(schemeName);
          }
        }
        catch (Exception e)
        {
          player.sendMessage("This scheme name is invalid.");
        }
        showManageSchemeWindow(player);
      }
      else if (currentCommand.startsWith("clearscheme"))
      {
        try
        {
          String schemeName = st.nextToken();
          Map<String, ArrayList<Integer>> schemes = BufferTable.getInstance().getPlayerSchemes(player.getObjectId());
          if ((schemes != null) && (schemes.containsKey(schemeName))) {
            ((ArrayList)schemes.get(schemeName)).clear();
          }
        }
        catch (Exception e)
        {
          player.sendMessage("This scheme name is invalid.");
        }
        showManageSchemeWindow(player);
      }
    }
    super.onBypassFeedback(player, command);
  }
  
  public String getHtmlPath(int npcId, int val)
  {
    String filename = "";
    if (val == 0) {
      filename = "" + npcId;
    } else {
      filename = npcId + "-" + val;
    }
    return "data/html/mods/buffer/" + filename + ".htm";
  }
  
  private void showGiveBuffsWindow(L2PcInstance player, String targetType)
  {
    StringBuilder sb = new StringBuilder();
    
    Map<String, ArrayList<Integer>> schemes = BufferTable.getInstance().getPlayerSchemes(player.getObjectId());
    if ((schemes == null) || (schemes.isEmpty())) {
      sb.append("<font color=\"LEVEL\">You haven't defined any scheme, please go to 'Manage my schemes' and create at least one valid scheme.</font>");
    } else {
      for (Map.Entry<String, ArrayList<Integer>> scheme : schemes.entrySet())
      {
        int cost = getFee((ArrayList)scheme.getValue());
        sb.append("<font color=\"LEVEL\"><a action=\"bypass -h npc_%objectId%_givebuffs " + targetType + " " + (String)scheme.getKey() + " " + cost + "\">" + (String)scheme.getKey() + " (" + ((ArrayList)scheme.getValue()).size() + " skill(s))</a>" + (cost > 0 ? " - Adena cost: " + cost : "") + "</font><br1>");
      }
    }
    NpcHtmlMessage html = new NpcHtmlMessage(1);
    html.setFile(getHtmlPath(getNpcId(), 1));
    html.replace("%schemes%", sb.toString());
    html.replace("%targettype%", targetType.equalsIgnoreCase("pet") ? " <a action=\"bypass -h npc_%objectId%_support player\">yourself</a> | your pet" : "yourself | <a action=\"bypass -h npc_%objectId%_support pet\">your pet</a>");
    html.replace("%objectId%", getObjectId());
    player.sendPacket(html);
  }
  
  private void showManageSchemeWindow(L2PcInstance player)
  {
    StringBuilder sb = new StringBuilder();
    
    Map<String, ArrayList<Integer>> schemes = BufferTable.getInstance().getPlayerSchemes(player.getObjectId());
    if ((schemes == null) || (schemes.isEmpty()))
    {
      sb.append("<font color=\"LEVEL\">You haven't created any scheme.</font>");
    }
    else
    {
      sb.append("<table>");
      for (Map.Entry<String, ArrayList<Integer>> scheme : schemes.entrySet())
      {
        sb.append("<tr><td width=140>" + (String)scheme.getKey() + " (" + ((ArrayList)scheme.getValue()).size() + " skill(s))</td>");
        sb.append("<td width=60><button value=\"Clear\" action=\"bypass -h npc_%objectId%_clearscheme " + (String)scheme.getKey() + "\" width=55 height=15 back=\"sek.cbui94\" fore=\"sek.cbui92\"></td>");
        sb.append("<td width=60><button value=\"Drop\" action=\"bypass -h npc_%objectId%_deletescheme " + (String)scheme.getKey() + "\" width=55 height=15 back=\"sek.cbui94\" fore=\"sek.cbui92\"></td></tr>");
      }
      sb.append("</table>");
    }
    NpcHtmlMessage html = new NpcHtmlMessage(1);
    html.setFile(getHtmlPath(getNpcId(), 2));
    html.replace("%schemes%", sb.toString());
    html.replace("%max_schemes%", Config.BUFFER_MAX_SCHEMES);
    html.replace("%objectId%", getObjectId());
    player.sendPacket(html);
  }
  
  private void showEditSchemeWindow(L2PcInstance player, String groupType, String schemeName)
  {
    NpcHtmlMessage html = new NpcHtmlMessage(1);
    if (schemeName.equalsIgnoreCase("none"))
    {
      html.setFile(getHtmlPath(getNpcId(), 3));
    }
    else
    {
      if (groupType.equalsIgnoreCase("none"))
      {
        html.setFile(getHtmlPath(getNpcId(), 4));
      }
      else
      {
        html.setFile(getHtmlPath(getNpcId(), 5));
        html.replace("%skilllistframe%", getGroupSkillList(player, groupType, schemeName));
      }
      html.replace("%schemename%", schemeName);
      html.replace("%myschemeframe%", getPlayerSchemeSkillList(player, groupType, schemeName));
      html.replace("%typesframe%", getTypesFrame(groupType, schemeName));
    }
    html.replace("%schemes%", getPlayerSchemes(player, schemeName));
    html.replace("%objectId%", getObjectId());
    player.sendPacket(html);
  }
  
  private void MyListWindow(L2PcInstance player, String groupType, String schemeName)
  {
    NpcHtmlMessage html = new NpcHtmlMessage(1);
    if (schemeName.equalsIgnoreCase("none"))
    {
      html.setFile(getHtmlPath(getNpcId(), 19));
    }
    else
    {
      if (groupType.equalsIgnoreCase("none"))
      {
        html.setFile(getHtmlPath(getNpcId(), 20));
      }
      else
      {
        html.setFile(getHtmlPath(getNpcId(), 21));
        html.replace("%skilllistframe%", getGroupSkillList(player, groupType, schemeName));
      }
      html.replace("%schemename%", schemeName);
      html.replace("%myschemeframe%", getPlayerSchemeSkillList(player, groupType, schemeName));
      html.replace("%typesframe%", getTypesFrame(groupType, schemeName));
    }
    html.replace("%schemes%", getPlayerMySchemes(player, schemeName));
    html.replace("%objectId%", String.valueOf(getObjectId()));
    player.sendPacket(html);
  }
  
  private void showSubBufferWindow(L2PcInstance player)
  {
    NpcHtmlMessage html = new NpcHtmlMessage(1);
    
    html.setFile(getHtmlPath(getNpcId(), 6));
    html.replace("%objectId%", getObjectId());
    player.sendPacket(html);
  }
  
  private static String getPlayerSchemes(L2PcInstance player, String schemeName)
  {
    Map<String, ArrayList<Integer>> schemes = BufferTable.getInstance().getPlayerSchemes(player.getObjectId());
    if ((schemes == null) || (schemes.isEmpty())) {
      return "Please create at least one scheme.";
    }
    StringBuilder tb = new StringBuilder();
    tb.append("<table>");
    for (Map.Entry<String, ArrayList<Integer>> scheme : schemes.entrySet()) {
      if (schemeName.equalsIgnoreCase((String)scheme.getKey())) {
        tb.append("<tr><td width=200>" + (String)scheme.getKey() + " (<font color=\"LEVEL\">" + ((ArrayList)scheme.getValue()).size() + "</font> / " + Config.BUFFER_MAX_SKILLS + " skill(s))</td></tr>");
      } else {
        tb.append("<tr><td width=200><a action=\"bypass -h npc_%objectId%_editschemes none " + (String)scheme.getKey() + "\">" + (String)scheme.getKey() + " (" + ((ArrayList)scheme.getValue()).size() + " / " + Config.BUFFER_MAX_SKILLS + " skill(s))</a></td></tr>");
      }
    }
    tb.append("</table>");
    
    return tb.toString();
  }
  
  private static String getPlayerMySchemes(L2PcInstance player, String schemeName)
  {
    Map<String, ArrayList<Integer>> schemes = BufferTable.getInstance().getPlayerSchemes(player.getObjectId());
    if ((schemes == null) || (schemes.isEmpty())) {
      return "Please create at least one scheme.";
    }
    StringBuilder tb = new StringBuilder();
    tb.append("<table>");
    for (Map.Entry<String, ArrayList<Integer>> scheme : schemes.entrySet()) {
      if (schemeName.equalsIgnoreCase((String)scheme.getKey())) {
        tb.append("<tr><td width=200>" + (String)scheme.getKey() + " (<font color=\"LEVEL\">" + ((ArrayList)scheme.getValue()).size() + "</font> / " + Config.BUFFER_MAX_SKILLS + " skill(s))</td></tr>");
      } else {
        tb.append("<tr><td width=200><a action=\"bypass -h npc_%objectId%_editmyschemes none " + (String)scheme.getKey() + "\">" + (String)scheme.getKey() + " (" + ((ArrayList)scheme.getValue()).size() + " / " + Config.BUFFER_MAX_SKILLS + " skill(s))</a></td></tr>");
      }
    }
    tb.append("</table>");
    
    return tb.toString();
  }
  
  private static String getGroupSkillList(L2PcInstance player, String groupType, String schemeName)
  {
    List<Integer> skills = new ArrayList();
    for (Iterator i$ = BufferTable.getSkillsIdsByType(groupType).iterator(); i$.hasNext();)
    {
      int skillId = ((Integer)i$.next()).intValue();
      if (!BufferTable.getInstance().getSchemeContainsSkill(player.getObjectId(), schemeName, skillId)) {
        skills.add(Integer.valueOf(skillId));
      }
    }
    if (skills.isEmpty()) {
      return "That group doesn't contain any skills.";
    }
    StringBuilder tb = new StringBuilder();
    
    tb.append("<table>");
    int count = 0;
    for (Iterator i$ = skills.iterator(); i$.hasNext();)
    {
      int skillId = ((Integer)i$.next()).intValue();
      if (!BufferTable.getInstance().getSchemeContainsSkill(player.getObjectId(), schemeName, skillId))
      {
        if (count == 0) {
          tb.append("<tr>");
        }
        if (skillId < 100) {
          tb.append("<td><img src=\"icon.skill00" + skillId + "\" width=32 height=13></td><td width=180><font color=\"6e6e6a\"><a action=\"bypass -h npc_%objectId%_skillselect " + groupType + " " + schemeName + " " + skillId + "\">" + SkillTable.getInstance().getInfo(skillId, 1).getName() + "</a></font></td>");
        } else if (skillId < 1000) {
          tb.append("<td><img src=\"icon.skill0" + skillId + "\" width=32 height=13></td><td width=180><font color=\"6e6e6a\"><a action=\"bypass -h npc_%objectId%_skillselect " + groupType + " " + schemeName + " " + skillId + "\">" + SkillTable.getInstance().getInfo(skillId, 1).getName() + "</a></font></td>");
        } else {
          tb.append("<td><img src=\"icon.skill" + skillId + "\" width=32 height=13></td><td width=180><font color=\"6e6e6a\"><a action=\"bypass -h npc_%objectId%_skillselect " + groupType + " " + schemeName + " " + skillId + "\">" + SkillTable.getInstance().getInfo(skillId, 1).getName() + "</a></font></td>");
        }
        count++;
        if (count == 2)
        {
          tb.append("</tr>");
          count = 0;
        }
      }
    }
    if (!tb.toString().endsWith("</tr>")) {
      tb.append("</tr>");
    }
    tb.append("</table>");
    
    return tb.toString();
  }
  
  private static String getPlayerSchemeSkillList(L2PcInstance player, String groupType, String schemeName)
  {
    List<Integer> skills = BufferTable.getInstance().getScheme(player.getObjectId(), schemeName);
    if (skills.isEmpty()) {
      return "That scheme is empty.";
    }
    StringBuilder tb = new StringBuilder();
    tb.append("<table>");
    int count = 0;
    for (Iterator i$ = skills.iterator(); i$.hasNext();)
    {
      int sk = ((Integer)i$.next()).intValue();
      if (count == 0) {
        tb.append("<tr>");
      }
      if (sk < 100) {
        tb.append("<td><img src=\"icon.skill00" + sk + "\" width=32 height=13></td><td width=180><font color=\"6e6e6a\"><a action=\"bypass -h npc_%objectId%_skillunselect " + groupType + " " + schemeName + " " + sk + "\">" + SkillTable.getInstance().getInfo(sk, 1).getName() + "</a></font></td>");
      } else if (sk < 1000) {
        tb.append("<td><img src=\"icon.skill0" + sk + "\" width=32 height=13></td><td width=180><font color=\"6e6e6a\"><a action=\"bypass -h npc_%objectId%_skillunselect " + groupType + " " + schemeName + " " + sk + "\">" + SkillTable.getInstance().getInfo(sk, 1).getName() + "</a></font></td>");
      } else {
        tb.append("<td><img src=\"icon.skill" + sk + "\" width=32 height=13></td><td width=180><font color=\"6e6e6a\"><a action=\"bypass -h npc_%objectId%_skillunselect " + groupType + " " + schemeName + " " + sk + "\">" + SkillTable.getInstance().getInfo(sk, 1).getName() + "</a></font></td>");
      }
      count++;
      if (count == 2)
      {
        tb.append("</tr>");
        count = 0;
      }
    }
    if (!tb.toString().endsWith("<tr>")) {
      tb.append("<tr>");
    }
    tb.append("</table>");
    
    return tb.toString();
  }
  
  private static String getTypesFrame(String groupType, String schemeName)
  {
    StringBuilder tb = new StringBuilder();
    tb.append("<table>");
    
    int count = 0;
    for (String s : BufferTable.getSkillTypes())
    {
      if (count == 0) {
        tb.append("<tr>");
      }
      if (groupType.equalsIgnoreCase(s)) {
        tb.append("<td width=65>" + s + "</td>");
      } else {
        tb.append("<td width=65><a action=\"bypass -h npc_%objectId%_editschemes " + s + " " + schemeName + "\">" + s + "</a></td>");
      }
      count++;
      if (count == 4)
      {
        tb.append("</tr>");
        count = 0;
      }
    }
    if (!tb.toString().endsWith("</tr>")) {
      tb.append("</tr>");
    }
    tb.append("</table>");
    
    return tb.toString();
  }
  
  private static int getFee(ArrayList<Integer> list)
  {
    if (Config.BUFFER_STATIC_BUFF_COST >= 0) {
      return list.size() * Config.BUFFER_STATIC_BUFF_COST;
    }
    int fee = 0;
    for (Iterator i$ = list.iterator(); i$.hasNext();)
    {
      int sk = ((Integer)i$.next()).intValue();
      fee += ((BuffSkillHolder)Config.BUFFER_BUFFLIST.get(Integer.valueOf(sk))).getPrice();
    }
    return fee;
  }
}

 

 

 

minha rev é acis e tem o L2BufferInstance Eu vou ter que adc esse mod ai? não ne ?

 

aaah e outra coisa, tem um bloco de notas com o nome npc buffer data base, diz que é pra copiar e colar eu copio e colo la no navicat na jdb e nada se eu executar da erro e não sei pra que tabela ele vai .

Editado por isaquepe
Link para o comentário
Compartilhar em outros sites

 

 

minha rev é acis e tem o L2BufferInstance Eu vou ter que adc esse mod ai? não ne ?

 

aaah e outra coisa, tem um bloco de notas com o nome npc buffer data base, diz que é pra copiar e colar eu copio e colo la no navicat na jdb e nada se eu executar da erro e não sei pra que tabela ele vai .

 

É so você colocar está e remover a que tem na sua rev

Link para o comentário
Compartilhar em outros sites

  • 8 months later...
  • 3 months later...
  • 2 months later...
  • 1 year later...
  • 1 year later...
  • 1 month later...
4 horas atrás, DemonikaBR-Marcos disse:

opa, minha utilização é na Lucera, obg amigão

base lucera ou só nome do projeto é lucera? porque eu vi ontem, cara usava uma acis 340 com nome de lionna da vote games kkk, tive que da rizada, rev toda errada e pesada, aconselhei ele a larga aquilo e pegar uma que postei aqui totalmente limpa, mas se for a lucera da l2jbrasil, se você tiver source, da pra adicionar com essa diff, mas creio que terá que modificar certas coisas.

Link para o comentário
Compartilhar em outros sites

31 minutos atrás, Sarada disse:

base lucera ou só nome do projeto é lucera? porque eu vi ontem, cara usava uma acis 340 com nome de lionna da vote games kkk, tive que da rizada, rev toda errada e pesada, aconselhei ele a larga aquilo e pegar uma que postei aqui totalmente limpa, mas se for a lucera da l2jbrasil, se você tiver source, da pra adicionar com essa diff, mas creio que terá que modificar certas coisas.

Então, meu pack é a Lucera Original do Deazer.
Ela já vem compilada como bem sabe.
Então até então não sei como implementar um arquivo auxiliar pro core reconhecer novos imports.

Então complicou.

CYeAxaZ.png


L2JDREAM PROJECT TEAM

Link para o comentário
Compartilhar em outros sites

1 hora atrás, DemonikaBR-Marcos disse:

Então, meu pack é a Lucera Original do Deazer.
Ela já vem compilada como bem sabe.
Então até então não sei como implementar um arquivo auxiliar pro core reconhecer novos imports.

Então complicou.

mas voce tem source? se tiver tem como adicionar sim, caso contrario, vai te que criar um script em python, nem sei se tem python em lucera, tem ?

Link para o comentário
Compartilhar em outros sites

  • 1 month later...
  • 1 year later...
  • Registre-se

    Faça parte da maior e  mais antigas comunidades sobre Lineage2 da América Latina.





  • Patrocinadores

  • Quem Está Navegando

    • Nenhum usuário registrado visualizando esta página.
  • Posts

    • Teria como fazer do dusk shield e do zombie shield dessa maneira?     Teria como fazer do dusk shield e do zombie shield dessa maneira?     Teria como fazer do dusk shield e do zombie shield dessa maneira?     Teria como fazer do dusk shield e do zombie shield dessa maneira?     Teria como fazer do dusk shield e do zombie shield dessa maneira?     Teria como fazer do dusk shield e do zombie shield dessa maneira?    
    • muchas gracias muy lindos NPC 🙂
    • relaxa jovem gafanhoto, testa as quests. e posTa os erros indesejaveis.  
    • Se alguém pudesse me ensinar como codificar as missões, eu ficaria feliz em fazer isso sozinho ou pelo menos ajudar. Eu realmente quero jogar em um servidor onde todas as quests funcionem bem e melhor ainda se você puder fazer quests customizadas!
    • mas no interlude, nem todas as quests de class,  vai mostrar onde tem que ir, ate o reborn nao mostrava quando era interlude, só mostrou depois que eles colocaram client classic pra rodar, e ficou melhor ainda quando virou hellbound em diante, mas ha sim alguma chance de modificar isso direto no script para fazer igualmente, só basta te um pouco de paciencia e persistencia exato
    • 408_PathToElvenwizard dá Orion eu tive que mexer tbm, até modifiquei e consegui deixar ela igual do Classic, com a seta e a marcação no mapa. (não retail IL) Dá pra importar py de várias revs, o foda é que não da regular as quest py através do debug em tempo real, pelo menos eu não consegui rsrs
    • Hasta el momento todas las QUESTS son completables si te guias con un tutorial de youtube. El problema es que tienen bugs de locacion y de subquests que no avanzan o no te marcan correctamente a donde ir en el mapa, cosa que en Retail si se ve como corresponde.
    • estranho, mas pelo menos a galera nunca reclamo das quests quando tinha aberto 5x, geral fez class primeira e segunda job, poucos que compraram a class
    • en RUSaCis-3.5 data pack, las Quests estan en formato .java y son diferentes a como estan redactadas en jOrion y jFrozen 1.5 (ProyectX) package net.sf.l2j.gameserver.scripting.quest; import net.sf.l2j.commons.random.Rnd; import net.sf.l2j.gameserver.enums.Paperdoll; import net.sf.l2j.gameserver.enums.QuestStatus; import net.sf.l2j.gameserver.enums.actors.ClassId; import net.sf.l2j.gameserver.model.actor.Creature; import net.sf.l2j.gameserver.model.actor.Npc; import net.sf.l2j.gameserver.model.actor.Player; import net.sf.l2j.gameserver.network.serverpackets.SocialAction; import net.sf.l2j.gameserver.scripting.QuestState; public class Q224_TestOfSagittarius extends SecondClassQuest { private static final String QUEST_NAME = "Q224_TestOfSagittarius"; // Items private static final int BERNARD_INTRODUCTION = 3294; private static final int HAMIL_LETTER_1 = 3295; private static final int HAMIL_LETTER_2 = 3296; private static final int HAMIL_LETTER_3 = 3297; private static final int HUNTER_RUNE_1 = 3298; private static final int HUNTER_RUNE_2 = 3299; private static final int TALISMAN_OF_KADESH = 3300; private static final int TALISMAN_OF_SNAKE = 3301; private static final int MITHRIL_CLIP = 3302; private static final int STAKATO_CHITIN = 3303; private static final int REINFORCED_BOWSTRING = 3304; private static final int MANASHEN_HORN = 3305; private static final int BLOOD_OF_LIZARDMAN = 3306; private static final int CRESCENT_MOON_BOW = 3028; private static final int WOODEN_ARROW = 17; // Rewards private static final int MARK_OF_SAGITTARIUS = 3293; // NPCs private static final int BERNARD = 30702; private static final int HAMIL = 30626; private static final int SIR_ARON_TANFORD = 30653; private static final int VOKIAN = 30514; private static final int GAUEN = 30717; // Monsters private static final int ANT = 20079; private static final int ANT_CAPTAIN = 20080; private static final int ANT_OVERSEER = 20081; private static final int ANT_RECRUIT = 20082; private static final int ANT_PATROL = 20084; private static final int ANT_GUARD = 20086; private static final int NOBLE_ANT = 20089; private static final int NOBLE_ANT_LEADER = 20090; private static final int BREKA_ORC_SHAMAN = 20269; private static final int BREKA_ORC_OVERLORD = 20270; private static final int MARSH_STAKATO_WORKER = 20230; private static final int MARSH_STAKATO_SOLDIER = 20232; private static final int MARSH_STAKATO_DRONE = 20234; private static final int MARSH_SPIDER = 20233; private static final int ROAD_SCAVENGER = 20551; private static final int MANASHEN_GARGOYLE = 20563; private static final int LETO_LIZARDMAN = 20577; private static final int LETO_LIZARDMAN_ARCHER = 20578; private static final int LETO_LIZARDMAN_SOLDIER = 20579; private static final int LETO_LIZARDMAN_WARRIOR = 20580; private static final int LETO_LIZARDMAN_SHAMAN = 20581; private static final int LETO_LIZARDMAN_OVERLORD = 20582; private static final int SERPENT_DEMON_KADESH = 27090; public Q224_TestOfSagittarius() { super(224, "Test Of Sagittarius"); setItemsIds(BERNARD_INTRODUCTION, HAMIL_LETTER_1, HAMIL_LETTER_2, HAMIL_LETTER_3, HUNTER_RUNE_1, HUNTER_RUNE_2, TALISMAN_OF_KADESH, TALISMAN_OF_SNAKE, MITHRIL_CLIP, STAKATO_CHITIN, REINFORCED_BOWSTRING, MANASHEN_HORN, BLOOD_OF_LIZARDMAN, CRESCENT_MOON_BOW); addQuestStart(BERNARD); addTalkId(BERNARD, HAMIL, SIR_ARON_TANFORD, VOKIAN, GAUEN); addMyDying(ANT, ANT_CAPTAIN, ANT_OVERSEER, ANT_RECRUIT, ANT_PATROL, ANT_GUARD, NOBLE_ANT, NOBLE_ANT_LEADER, BREKA_ORC_SHAMAN, BREKA_ORC_OVERLORD, MARSH_STAKATO_WORKER, MARSH_STAKATO_SOLDIER, MARSH_STAKATO_DRONE, MARSH_SPIDER, ROAD_SCAVENGER, MANASHEN_GARGOYLE, LETO_LIZARDMAN, LETO_LIZARDMAN_ARCHER, LETO_LIZARDMAN_SOLDIER, LETO_LIZARDMAN_WARRIOR, LETO_LIZARDMAN_SHAMAN, LETO_LIZARDMAN_OVERLORD, SERPENT_DEMON_KADESH); } @Override public String onAdvEvent(String event, Npc npc, Player player) { String htmltext = event; QuestState st = player.getQuestList().getQuestState(QUEST_NAME); if (st == null) return htmltext; // BERNARD if (event.equalsIgnoreCase("30702-04.htm")) { st.setState(QuestStatus.STARTED); st.setCond(1); playSound(player, SOUND_ACCEPT); giveItems(player, BERNARD_INTRODUCTION, 1); if (giveDimensionalDiamonds39(player)) htmltext = "30702-04a.htm"; } // HAMIL else if (event.equalsIgnoreCase("30626-03.htm")) { st.setCond(2); playSound(player, SOUND_MIDDLE); takeItems(player, BERNARD_INTRODUCTION, 1); giveItems(player, HAMIL_LETTER_1, 1); } else if (event.equalsIgnoreCase("30626-07.htm")) { st.setCond(5); playSound(player, SOUND_MIDDLE); takeItems(player, HUNTER_RUNE_1, 10); giveItems(player, HAMIL_LETTER_2, 1); } // SIR_ARON_TANFORD else if (event.equalsIgnoreCase("30653-02.htm")) { st.setCond(3); playSound(player, SOUND_MIDDLE); takeItems(player, HAMIL_LETTER_1, 1); } // VOKIAN else if (event.equalsIgnoreCase("30514-02.htm")) { st.setCond(6); playSound(player, SOUND_MIDDLE); takeItems(player, HAMIL_LETTER_2, 1); } return htmltext; } @Override public String onTalk(Npc npc, Player player) { String htmltext = getNoQuestMsg(); QuestState st = player.getQuestList().getQuestState(QUEST_NAME); if (st == null) return htmltext; switch (st.getState()) { case CREATED: if (player.getClassId() != ClassId.ROGUE && player.getClassId() != ClassId.ELVEN_SCOUT && player.getClassId() != ClassId.ASSASSIN) htmltext = "30702-02.htm"; else if (player.getStatus().getLevel() < 39) htmltext = "30702-01.htm"; else htmltext = "30702-03.htm"; break; case STARTED: int cond = st.getCond(); switch (npc.getNpcId()) { case BERNARD: htmltext = "30702-05.htm"; break; case HAMIL: if (cond == 1) htmltext = "30626-01.htm"; else if (cond == 2 || cond == 3) htmltext = "30626-04.htm"; else if (cond == 4) htmltext = "30626-05.htm"; else if (cond > 4 && cond < 8) htmltext = "30626-08.htm"; else if (cond == 8) { htmltext = "30626-09.htm"; st.setCond(9); playSound(player, SOUND_MIDDLE); takeItems(player, HUNTER_RUNE_2, 10); giveItems(player, HAMIL_LETTER_3, 1); } else if (cond > 8 && cond < 12) htmltext = "30626-10.htm"; else if (cond == 12) { htmltext = "30626-11.htm"; st.setCond(13); playSound(player, SOUND_MIDDLE); } else if (cond == 13) htmltext = "30626-12.htm"; else if (cond == 14) { htmltext = "30626-13.htm"; takeItems(player, BLOOD_OF_LIZARDMAN, -1); takeItems(player, CRESCENT_MOON_BOW, 1); takeItems(player, TALISMAN_OF_KADESH, 1); giveItems(player, MARK_OF_SAGITTARIUS, 1); rewardExpAndSp(player, 54726, 20250); player.broadcastPacket(new SocialAction(player, 3)); playSound(player, SOUND_FINISH); st.exitQuest(false); } break; case SIR_ARON_TANFORD: if (cond == 2) htmltext = "30653-01.htm"; else if (cond > 2) htmltext = "30653-03.htm"; break; case VOKIAN: if (cond == 5) htmltext = "30514-01.htm"; else if (cond == 6) htmltext = "30514-03.htm"; else if (cond == 7) { htmltext = "30514-04.htm"; st.setCond(8); playSound(player, SOUND_MIDDLE); takeItems(player, TALISMAN_OF_SNAKE, 1); } else if (cond > 7) htmltext = "30514-05.htm"; break; case GAUEN: if (cond == 9) { htmltext = "30717-01.htm"; st.setCond(10); playSound(player, SOUND_MIDDLE); takeItems(player, HAMIL_LETTER_3, 1); } else if (cond == 10) htmltext = "30717-03.htm"; else if (cond == 11) { htmltext = "30717-02.htm"; st.setCond(12); playSound(player, SOUND_MIDDLE); takeItems(player, MANASHEN_HORN, 1); takeItems(player, MITHRIL_CLIP, 1); takeItems(player, REINFORCED_BOWSTRING, 1); takeItems(player, STAKATO_CHITIN, 1); giveItems(player, CRESCENT_MOON_BOW, 1); giveItems(player, WOODEN_ARROW, 10); } else if (cond > 11) htmltext = "30717-04.htm"; break; } break; case COMPLETED: htmltext = getAlreadyCompletedMsg(); break; } return htmltext; } @Override public void onMyDying(Npc npc, Creature killer) { final Player player = killer.getActingPlayer(); final QuestState st = checkPlayerState(player, npc, QuestStatus.STARTED); if (st == null) return; switch (npc.getNpcId()) { case ANT: case ANT_CAPTAIN: case ANT_OVERSEER: case ANT_RECRUIT: case ANT_PATROL: case ANT_GUARD: case NOBLE_ANT: case NOBLE_ANT_LEADER: if (st.getCond() == 3 && dropItems(player, HUNTER_RUNE_1, 1, 10, 500000)) st.setCond(4); break; case BREKA_ORC_SHAMAN: case BREKA_ORC_OVERLORD: if (st.getCond() == 6 && dropItems(player, HUNTER_RUNE_2, 1, 10, 500000)) { st.setCond(7); giveItems(player, TALISMAN_OF_SNAKE, 1); } break; case MARSH_STAKATO_WORKER: case MARSH_STAKATO_SOLDIER: case MARSH_STAKATO_DRONE: if (st.getCond() == 10 && dropItems(player, STAKATO_CHITIN, 1, 1, 100000) && player.getInventory().hasItems(MANASHEN_HORN, MITHRIL_CLIP, REINFORCED_BOWSTRING)) st.setCond(11); break; case MARSH_SPIDER: if (st.getCond() == 10 && dropItems(player, REINFORCED_BOWSTRING, 1, 1, 100000) && player.getInventory().hasItems(MANASHEN_HORN, MITHRIL_CLIP, STAKATO_CHITIN)) st.setCond(11); break; case ROAD_SCAVENGER: if (st.getCond() == 10 && dropItems(player, MITHRIL_CLIP, 1, 1, 100000) && player.getInventory().hasItems(MANASHEN_HORN, REINFORCED_BOWSTRING, STAKATO_CHITIN)) st.setCond(11); break; case MANASHEN_GARGOYLE: if (st.getCond() == 10 && dropItems(player, MANASHEN_HORN, 1, 1, 100000) && player.getInventory().hasItems(REINFORCED_BOWSTRING, MITHRIL_CLIP, STAKATO_CHITIN)) st.setCond(11); break; case LETO_LIZARDMAN: case LETO_LIZARDMAN_ARCHER: case LETO_LIZARDMAN_SOLDIER: case LETO_LIZARDMAN_WARRIOR: case LETO_LIZARDMAN_SHAMAN: case LETO_LIZARDMAN_OVERLORD: if (st.getCond() == 13) { if (((player.getInventory().getItemCount(BLOOD_OF_LIZARDMAN) - 120) * 5) > Rnd.get(100)) { playSound(player, SOUND_BEFORE_BATTLE); takeItems(player, BLOOD_OF_LIZARDMAN, -1); addSpawn(SERPENT_DEMON_KADESH, player, false, 300000, true); } else dropItemsAlways(player, BLOOD_OF_LIZARDMAN, 1, 0); } break; case SERPENT_DEMON_KADESH: if (st.getCond() == 13) { if (player.getInventory().getItemIdFrom(Paperdoll.RHAND) == CRESCENT_MOON_BOW) { st.setCond(14); playSound(player, SOUND_MIDDLE); giveItems(player, TALISMAN_OF_KADESH, 1); } else addSpawn(SERPENT_DEMON_KADESH, player, false, 300000, true); } break; } } }  
×
×
  • Criar Novo...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.