Package l2p.gameserver.templates

Examples of l2p.gameserver.templates.L2Item


        {
          elementValue = Integer.parseInt(d.getAttributes().getNamedItem("elementValue").getNodeValue());
        }
        if(!Config.ALT_ALLOW_SHADOW_WEAPONS && id > 0)
        {
          L2Item item = ItemTable.getInstance().getTemplate(id);
          if(item != null && item.isShadowItem() && item.isWeapon() && !Config.ALT_ALLOW_SHADOW_WEAPONS)
          {
            return null;
          }
        }
        l2p.util.Log.add(MultiSellId + " loaded product " + id + " count " + count, "multiselldebug");
        entry.addProduct(new MultiSellIngredient(id, count, enchant, element, elementValue));
      }
      else
      {
        l2p.util.Log.add(MultiSellId + " skipping node " + d.getNodeName(), "multiselldebug");
      }
    }
    if(entry.getIngredients().isEmpty() || entry.getProduction().isEmpty())
    {
      l2p.util.Log.add(MultiSellId + " wrong node", "multiselldebug");
      l2p.util.Log.add(MultiSellId + " LIST: " + debuglist.toString(), "multiselldebug");
      for(Node d = n.getFirstChild(); d != null; d = d.getNextSibling())
      {
        l2p.util.Log.add(d.getNodeName() + " " + d.getAttributes() + " " + d.getNodeName().hashCode() + " " + d.getNodeName().length() + " IsProduction: " + NODE_PRODUCTION.equalsIgnoreCase(d.getNodeName()), "multiselldebug");
      }
      return null;
    }
    if(entry.getIngredients().size() == 1 && entry.getProduction().size() == 1 && entry.getIngredients().get(0).getItemId() == 57)
    {
      L2Item item = ItemTable.getInstance().getTemplate(entry.getProduction().get(0).getItemId());
      if(item == null)
      {
        _log.warning("WARNING!!! MultiSell [" + MultiSellId + "] Production [" + entry.getProduction().get(0).getItemId() + "] is null");
        return null;
      }
      if(MultiSellId < 70000 || MultiSellId > 70010) // Все кроме GM Shop
      {
        if(item.getReferencePrice() > entry.getIngredients().get(0).getItemCount())
        {
          _log.warning("WARNING!!! MultiSell [" + MultiSellId + "] Production '" + item.getName() + "' [" + entry.getProduction().get(0).getItemId() + "] price is lower than referenced | " + item.getReferencePrice() + " > " + entry.getIngredients().get(0).getItemCount());
        }
      }
      //return null;
    }
    return entry;
View Full Code Here


      final Inventory inv = player.getInventory();
      for(final L2ItemInstance itm : inv.getItems())
      {
        if(!itm.isStackable() && itm.getItem().isCrystallizable() && itm.getItem().getCrystalType() != Grade.NONE && itm.getItem().getCrystalCount() > 0 && !itm.isShadowItem() && !itm.isTemporalItem() && !itm.isEquipped() && (itm.getCustomFlags() & L2ItemInstance.FLAG_NO_CRYSTALLIZE) != L2ItemInstance.FLAG_NO_CRYSTALLIZE)
        {
          final L2Item crystal = ItemTable.getInstance().getTemplate(itm.getItem().getCrystalType().cry);
          final int entry = new int[]
          {
            itm.getItemId(), itm.getEnchantLevel()
          }.hashCode();
          MultiSellEntry possibleEntry = new MultiSellEntry(entry, crystal.getItemId(), itm.getItem().getCrystalCount(), 0);
          possibleEntry.addIngredient(new MultiSellIngredient(itm.getItemId(), 1, itm.getEnchantLevel()));
          possibleEntry.addIngredient(new MultiSellIngredient((short) 57, (int) (itm.getItem().getCrystalCount() * crystal.getReferencePrice() * 0.05), 0));
          list.entries.add(possibleEntry);
        }
      }
    }
    // Все мультиселлы из датапака
    else
    {
      MultiSellListContainer container = L2Multisell.getInstance().getList(listId);
      if(container == null)
      {
        _log.warning("Not found myltisell " + listId);
        return null;
      }
      else if(container.isEmpty())
      {
        player.sendMessage(new CustomMessage("common.Disabled", player));
        return null;
      }
      boolean enchant = container.isKeepEnchant();
      boolean notax = container.isNoTax();
      boolean showall = container.isShowAll();
      boolean nokey = container.isNoKey();
      list.setShowAll(showall);
      list.setKeepEnchant(enchant);
      list.setNoTax(notax);
      list.setNoKey(nokey);
      final Inventory inv = player.getInventory();
      for(MultiSellEntry origEntry : container.getEntries())
      {
        MultiSellEntry ent = origEntry.clone();
        // Обработка налога, если лист не безналоговый
        // Адены добавляются в лист если отсутствуют или прибавляются к существующим
        GArray<MultiSellIngredient> ingridients;
        if(!notax && taxRate > 0.)
        {
          double tax = 0, adena = 0;
          ingridients = new GArray<MultiSellIngredient>(ent.getIngredients().size() + 1);
          for(MultiSellIngredient i : ent.getIngredients())
          {
            if(i.getItemId() == 57)
            {
              adena += i.getItemCount();
              tax += i.getItemCount() * (taxRate);
              continue;
            }
            ingridients.add(i);
            if(i.getItemId() == L2Item.ITEM_ID_CLAN_REPUTATION_SCORE)
            // hardcoded. Налог на клановую репутацию. Формула проверена на с6 и соответсвует на 100%.
            //TODO: Проверить на корейском(?) оффе налог на банг поинты и fame
            {
              tax += i.getItemCount() / 120 * 1000 * taxRate * 100;
            }
            if(i.getItemId() < 1)
            {
              continue;
            }
            final L2Item item = ItemTable.getInstance().getTemplate(i.getItemId());
            if(item == null)
            {
              System.out.println("Not found template for itemId: " + i.getItemId());
            }
            else if(item.isStackable())
            {
              tax += item.getReferencePrice() * i.getItemCount() * taxRate;
            }
          }
          adena = Math.round(adena + tax);
          if(adena >= 1)
          {
            ingridients.add(new MultiSellIngredient(57, (long) adena));
          }
          tax = Math.round(tax);
          if(tax >= 1)
          {
            ent.setTax((long) tax);
          }
          ent.getIngredients().clear();
          ent.getIngredients().addAll(ingridients);
        }
        else
        {
          ingridients = ent.getIngredients();
        }
        // Если стоит флаг "показывать все" не проверять наличие ингридиентов
        if(showall)
        {
          list.entries.add(ent);
        }
        else
        {
          GArray<Integer> _itm = new GArray<Integer>();
          // Проверка наличия у игрока ингридиентов
          for(MultiSellIngredient i : ingridients)
          {
            L2Item template = i.getItemId() <= 0 ? null : ItemTable.getInstance().getTemplate(i.getItemId());
            if(i.getItemId() <= 0 || template.getType2() <= L2Item.TYPE2_ACCESSORY || template.getType2() >= (nokey ? L2Item.TYPE2_OTHER : L2Item.TYPE2_PET_WOLF)) // Экипировка
            {
              if(i.getItemId() == 12374) // Mammon's Varnish Enhancer
              {
                continue;
              }
              //TODO: а мы должны тут сверять count?
              if(i.getItemId() == L2Item.ITEM_ID_CLAN_REPUTATION_SCORE)
              {
                if(!_itm.contains(i.getItemId()) && player.getClan() != null && player.getClan().getReputationScore() >= i.getItemCount())
                {
                  _itm.add(i.getItemId());
                }
                continue;
              }
              else if(i.getItemId() == L2Item.ITEM_ID_PC_BANG_POINTS)
              {
                if(!_itm.contains(i.getItemId()) && player.getPcBangPoints() >= i.getItemCount())
                {
                  _itm.add(i.getItemId());
                }
                continue;
              }
              else if(i.getItemId() == L2Item.ITEM_ID_FAME)
              {
                if(!_itm.contains(i.getItemId()) && player.getFame() >= i.getItemCount())
                {
                  _itm.add(i.getItemId());
                }
                continue;
              }
              for(final L2ItemInstance item : inv.getItems())
              {
                if(item.getItemId() == i.getItemId() && !item.isEquipped() && (item.getCustomFlags() & L2ItemInstance.FLAG_NO_TRADE) != L2ItemInstance.FLAG_NO_TRADE)
                {
                  if(_itm.contains(enchant ? i.getItemId() + i.getItemEnchant() * 100000 : i.getItemId())) // Не проверять одинаковые вещи
                  {
                    continue;
                  }
                  if(item.getEnchantLevel() < i.getItemEnchant()) // Некоторые мультиселлы требуют заточки
                  {
                    continue;
                  }
                  if(item.isStackable() && item.getCount() < i.getItemCount())
                  {
                    break;
                  }
                  _itm.add(enchant ? i.getItemId() + i.getItemEnchant() * 100000 : i.getItemId());
                  MultiSellEntry possibleEntry = new MultiSellEntry(enchant ? ent.getEntryId() + item.getEnchantLevel() * 100000 : ent.getEntryId());
                  for(MultiSellIngredient p : ent.getProduction())
                  {
                    p.setItemEnchant(item.getEnchantLevel());
                    possibleEntry.addProduct(p);
                  }
                  for(MultiSellIngredient ig : ingridients)
                  {
                    if(template != null && template.getType2() <= L2Item.TYPE2_ACCESSORY)
                    {
                      ig.setItemEnchant(item.getEnchantLevel());
                    }
                    possibleEntry.addIngredient(ig);
                  }
View Full Code Here

    {
      jobLevel = 4;
    }
    if((level >= 20 && jobLevel == 1 || level >= 40 && jobLevel == 2 || level >= 76 && jobLevel == 3) && Config.ALLOW_CLASS_MASTERS_LIST.contains(jobLevel))
    {
      L2Item item = ItemTable.getInstance().getTemplate(Config.CLASS_MASTERS_PRICE_ITEM);
      if(Config.CLASS_MASTERS_PRICE_LIST[jobLevel] > 0)
      {
        html.append("Price: ").append(Util.formatAdena(Config.CLASS_MASTERS_PRICE_LIST[jobLevel])).append(" ").append(item.getName()).append("<br1>");
      }
      for(ClassId cid : ClassId.values())
      {
        // Инспектор является наследником trooper и warder, но сменить его как профессию нельзя,
        // т.к. это сабкласс. Наследуется с целью получения скилов родителей.
View Full Code Here

    StringTokenizer st = new StringTokenizer(command);
    if(st.nextToken().equals("change_class"))
    {
      short val = Short.parseShort(st.nextToken());
      long price = Long.parseLong(st.nextToken());
      L2Item item = ItemTable.getInstance().getTemplate(Config.CLASS_MASTERS_PRICE_ITEM);
      L2ItemInstance pay = player.getInventory().getItemByItemId(item.getItemId());
      if(pay != null && pay.getCount() >= price)
      {
        player.getInventory().destroyItem(pay, price, true);
        changeClass(player, val);
      }
View Full Code Here

    writeS(_letter.topic); // топик
    writeS(_letter.body); // тело
    writeD(_letter.attached.size()); // количество приложенных вещей
    for(TradeItem temp : _letter.attached)
    {
      L2Item item = temp.getItem();
      writeH(item.getType1());
      writeD(temp.getObjectId());
      writeD(temp.getItemId());
      writeQ(temp.getCount());
      writeD(temp.getEnchantLevel());
      writeD(0); // ?
View Full Code Here

    L2Player player = (L2Player) playable;
    L2Weapon weaponItem = player.getActiveWeaponItem();
    L2ItemInstance weaponInst = player.getActiveWeaponInstance();
    int SoulshotId = item.getItemId();
    boolean isAutoSoulShot = false;
    L2Item itemTemplate = ItemTable.getInstance().getTemplate(item.getItemId());
    if(player.getAutoSoulShot().contains(SoulshotId))
    {
      isAutoSoulShot = true;
    }
    if(weaponInst == null)
    {
      if(!isAutoSoulShot)
      {
        player.sendPacket(Msg.CANNOT_USE_SOULSHOTS);
      }
      return;
    }
    // soulshot is already active
    if(weaponInst.getChargedSoulshot() != L2ItemInstance.CHARGED_NONE)
    {
      return;
    }
    int grade = weaponItem.getCrystalType().externalOrdinal;
    int soulShotConsumption = weaponItem.getSoulShotCount();
    long count = item.getCount();
    if(soulShotConsumption == 0)
    {
      // Can't use soulshots
      if(isAutoSoulShot)
      {
        player.removeAutoSoulShot(SoulshotId);
        player.sendPacket(new ExAutoSoulShot(SoulshotId, false), new SystemMessage(SystemMessage.THE_AUTOMATIC_USE_OF_S1_WILL_NOW_BE_CANCELLED).addString(itemTemplate.getName()));
        return;
      }
      player.sendPacket(Msg.CANNOT_USE_SOULSHOTS);
      return;
    }
View Full Code Here

    writeQ(seller_adena);
    //Список имеющихся вещей
    writeD(_haveList.size());
    for(TradeItem temp : _haveList)
    {
      L2Item tempItem = ItemTable.getInstance().getTemplate(temp.getItemId());
      writeD(tempItem.getType2ForPackets());
      writeD(temp.getObjectId());
      writeD(temp.getItemId());
      writeQ(temp.getCount());
      writeH(0);
      writeH(temp.getEnchantLevel());//enchant lvl
      writeH(0);
      writeD(tempItem.getBodyPart());
      writeQ(tempItem.getReferencePrice());
      writeItemElements(temp);
      writeItemRev152();
    }
    //Список вещей уже поставленых на продажу
    writeD(_sellList.size());
    for(TradeItem temp2 : _sellList)
    {
      L2Item tempItem = ItemTable.getInstance().getTemplate(temp2.getItemId());
      writeD(tempItem.getType2ForPackets());
      writeD(temp2.getObjectId());
      writeD(temp2.getItemId());
      writeQ(temp2.getCount());
      writeH(0);
      writeH(temp2.getEnchantLevel());//enchant lvl
      writeH(0);
      writeD(tempItem.getBodyPart());
      writeQ(temp2.getOwnersPrice());
      writeQ(temp2.getStorePrice());
      writeItemElements(temp2);
      writeItemRev152();
    }
View Full Code Here

    L2Player player = (L2Player) playable;
    L2ItemInstance weaponInst = player.getActiveWeaponInstance();
    L2Weapon weaponItem = player.getActiveWeaponItem();
    int SoulshotId = item.getItemId();
    boolean isAutoSoulShot = false;
    L2Item itemTemplate = ItemTable.getInstance().getTemplate(item.getItemId());
    if(player.getAutoSoulShot().contains(SoulshotId))
    {
      isAutoSoulShot = true;
    }
    if(weaponInst == null)
    {
      if(!isAutoSoulShot)
      {
        player.sendPacket(Msg.CANNOT_USE_SPIRITSHOTS);
      }
      return;
    }
    if(weaponInst.getChargedSpiritshot() == L2ItemInstance.CHARGED_BLESSED_SPIRITSHOT)
    // already charged by blessed spirit shot
    // btw we cant charge only when bsps is charged
    {
      return;
    }
    int spiritshotId = item.getItemId();
    int grade = weaponItem.getCrystalType().externalOrdinal;
    int blessedsoulSpiritConsumption = weaponItem.getSpiritShotCount();
    long count = item.getCount();
    if(blessedsoulSpiritConsumption == 0)
    {
      // Can't use Spiritshots
      if(isAutoSoulShot)
      {
        player.removeAutoSoulShot(SoulshotId);
        player.sendPacket(new ExAutoSoulShot(SoulshotId, false), new SystemMessage(SystemMessage.THE_AUTOMATIC_USE_OF_S1_WILL_NOW_BE_CANCELLED).addString(itemTemplate.getName()));
        return;
      }
      player.sendPacket(Msg.CANNOT_USE_SPIRITSHOTS);
      return;
    }
    if(grade == 0 && spiritshotId != 3947 // NG
      || grade == 1 && spiritshotId != 3948 && spiritshotId != 22072 // D
      || grade == 2 && spiritshotId != 3949 && spiritshotId != 22073 // C
      || grade == 3 && spiritshotId != 3950 && spiritshotId != 22074 // B
      || grade == 4 && spiritshotId != 3951 && spiritshotId != 22075 // A
      || grade == 5 && spiritshotId != 3952 && spiritshotId != 22076 // S
      )
    {
      if(isAutoSoulShot)
      {
        return;
      }
      player.sendPacket(Msg.SPIRITSHOT_DOES_NOT_MATCH_WEAPON_GRADE);
      return;
    }
    if(count < blessedsoulSpiritConsumption)
    {
      if(isAutoSoulShot)
      {
        player.removeAutoSoulShot(SoulshotId);
        player.sendPacket(new ExAutoSoulShot(SoulshotId, false), new SystemMessage(SystemMessage.THE_AUTOMATIC_USE_OF_S1_WILL_NOW_BE_CANCELLED).addString(itemTemplate.getName()));
        return;
      }
      player.sendPacket(Msg.NOT_ENOUGH_SPIRITSHOTS);
      return;
    }
View Full Code Here

      catch(ArithmeticException e)
      {
        Util.handleIllegalPlayerAction(player, "Warning!! Character " + player.getName() + " of account " + player.getAccountName() + " tried to purchase over " + Long.MAX_VALUE + " adena worth of goods.\r\n" + e.getMessage(), "", Config.DEFAULT_PUNISH);
        return;
      }
      L2Item template = ItemTable.getInstance().getTemplate(seedId);
      totalWeight += count * template.getWeight();
      if(!template.isStackable())
      {
        slots += count;
      }
      else if(player.getInventory().getItemByItemId(seedId) == null)
      {
View Full Code Here

      writeH(ent.getProduction().size());
      writeH(ingredients.size());
      for(MultiSellIngredient prod : ent.getProduction())
      {
        int itemId = prod.getItemId();
        L2Item template = itemId > 0 ? ItemTable.getInstance().getTemplate(prod.getItemId()) : null;
        writeD(itemId);
        writeD(itemId > 0 ? template.getBodyPart() : 0);
        writeH(itemId > 0 ? template.getType2ForPackets() : 0);
        writeQ(prod.getItemCount());
        writeH(prod.getItemEnchant());
        writeD(0x00); // инкрустация
        writeD(0x00); // инкрустация
        writeItemElements(prod);
      }
      for(MultiSellIngredient i : ingredients)
      {
        int itemId = i.getItemId();
        final L2Item item = itemId > 0 ? ItemTable.getInstance().getTemplate(i.getItemId()) : null;
        writeD(itemId); //ID
        writeH(itemId > 0 ? item.getType2() : 0xffff);
        writeQ(i.getItemCount()); //Count
        writeH((itemId > 0 ? item.getType2() : 0x00) <= L2Item.TYPE2_ACCESSORY ? i.getItemEnchant() : 0); //Enchant Level
        writeD(0x00); // инкрустация
        writeD(0x00); // инкрустация
        writeItemElements(i);
      }
    }
View Full Code Here

TOP

Related Classes of l2p.gameserver.templates.L2Item

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.