Талисманы

Maiden7

Выдающийся
Местный
Сообщения
454
Розыгрыши
0
Решения
1
Репутация
168
Реакции
241
Баллы
1 388
И так еще раз поднимаю тему талисманов, скадите как сделать что бы талисманы одного типа не одевались по несколько штук?
Код:
<armor id="90006" name="Blue Talisman of Power">
    <set name="crystal_type" value="S84"/>
    <set name="attributable" value="true"/>
    <set name="augmentable" value="true"/>
    <set name="enchantable" value="true"/>
    <set name="dropable" value="false"/>
    <set name="icon" value="icon.sevensign_talisman_i00"/>
    <set name="sellable" value="false"/>
    <set name="tradeable" value="false"/>
    <set name="type" value="NONE"/>
    <equip>
      <slot id="TALISMAN"/>
    </equip>
    <skills>
      <skill id="4442" level="4"/>
      <skill id="4443" level="4"/>
      <skill id="4444" level="4"/>
      <skill id="4445" level="4"/>
      <skill id="4446" level="4"/>
      <skill id="4447" level="4"/>
      <skill id="4448" level="4"/>
      <skill id="4449" level="4"/>
    </skills>
        <for>
            <add stat="pAtk" order="0x10" value="1"/>
            <add stat="mAtk" order="0x10" value="1"/>
            <enchant stat="mDef" order="0x0C" value="0"/>
            <enchant stat="pDef" order="0x0C" value="0"/>
            <enchant stat="maxHp" order="0x80" value="0"/>
        </for>
  </armor>
 
Что же ты там такое открывать собрался))
 

    Maiden7

    Баллов: 2
    Не скажу что=)
Если речь идет про запрет одевания однотипных таликов, имеющих разный itemId, то это решается элементарно
для предметов необходимо ввести к примеру парметр groupId, дать однотипным таликам одну и ту же группу и в проверке возможности одеть талик проверять не только по совпадению по itemId, но и по совпадению groupId.
пример для овероподобных, из метода checkIfCanEquip
Код:
       if (targetSlot == ItemTemplate.SLOT_DECO)
       {
           int count = player.getTalismanCount();

           if (count <= 0)
               return new SystemMessage(SystemMsg.YOU_CANNOT_WEAR_S1_BECAUSE_YOU_ARE_NOT_WEARING_A_BRACELET).addItemName(itemId);

           ItemInstance deco;
           int groupId = item.getTemplate().getGroupId();

           for (int slot = Inventory.PAPERDOLL_DECO1; slot <= Inventory.PAPERDOLL_DECO6; slot++)
           {
               deco = player.getInventory().getPaperdollItem(slot);

               if (deco != null)
               {
                   if (deco == item)
                       return null; // талисман уже одет и количество слотов больше нуля

                   // Проверяем на количество слотов и одинаковые талисманы (одинаковые по ид или находящиеся в одной группе)
                   if (--count <= 0 || deco.getItemId() == itemId || (groupId > 0 && deco.getTemplate().getGroupId() == groupId))
                       return new SystemMessage(SystemMsg.YOU_CANNOT_EQUIP_S1_BECAUSE_YOU_DO_NOT_HAVE_ANY_AVAILABLE_SLOTS).addItemName(itemId);
               }
           }
       }
 
@Gaikotsu, это в скрипте? Нельзя ли поподробнее пожалуйста, какой файл?
 
Если речь идет про запрет одевания однотипных таликов, имеющих разный itemId, то это решается элементарно
для предметов необходимо ввести к примеру парметр groupId, дать однотипным таликам одну и ту же группу и в проверке возможности одеть талик проверять не только по совпадению по itemId, но и по совпадению groupId.
пример для овероподобных, из метода checkIfCanEquip
Код:
       if (targetSlot == ItemTemplate.SLOT_DECO)
       {
           int count = player.getTalismanCount();

           if (count <= 0)
               return new SystemMessage(SystemMsg.YOU_CANNOT_WEAR_S1_BECAUSE_YOU_ARE_NOT_WEARING_A_BRACELET).addItemName(itemId);

           ItemInstance deco;
           int groupId = item.getTemplate().getGroupId();

           for (int slot = Inventory.PAPERDOLL_DECO1; slot <= Inventory.PAPERDOLL_DECO6; slot++)
           {
               deco = player.getInventory().getPaperdollItem(slot);

               if (deco != null)
               {
                   if (deco == item)
                       return null; // талисман уже одет и количество слотов больше нуля

                   // Проверяем на количество слотов и одинаковые талисманы (одинаковые по ид или находящиеся в одной группе)
                   if (--count <= 0 || deco.getItemId() == itemId || (groupId > 0 && deco.getTemplate().getGroupId() == groupId))
                       return new SystemMessage(SystemMsg.YOU_CANNOT_EQUIP_S1_BECAUSE_YOU_DO_NOT_HAVE_ANY_AVAILABLE_SLOTS).addItemName(itemId);
               }
           }
       }
Так и не понял куда это вписывать?
 
Назад
Сверху Снизу