Параметр

Dara

Последний из атеистов
Местный
Куратор Данных
Старожил I степени
Любитель реакций
Неукротимое пламя
Сообщения
121
Розыгрыши
0
Решения
2
Репутация
412
Реакции
582
Баллы
813
Можете поделиться строчкой которая запрещает использовать предмет на Олимпиаде? Желательно несколько вариантов)
Код:
    <armor id="55555" name="test">
        <set name="crystal_type" value="NONE"/>
        <set name="price" value="0"/>
        <set name="type" value="NONE"/>
        <set name="weight" value="10"/>
        <equip>
            <slot id="HAIR_ALL"/>
        </equip>
    <for>
        <add stat="pDef" order="0x30" value="5008"/>
        <add stat="mDef" order="0x30" value="5008"/>
        <add stat="runSpd" order="0x30" value="508"/>
        <add stat="maxHp" order="0x30" value="5000"/>
    </for>
    </armor>
 
Код:
        <cond msgId="1508">
            <not>
                <player olympiad="true"/>
            </not>
        </cond>
 
Можете поделиться строчкой которая запрещает использовать предмет на Олимпиаде? Желательно несколько вариантов)
Код:
    <armor id="55555" name="test">
        <set name="crystal_type" value="NONE"/>
        <set name="price" value="0"/>
        <set name="type" value="NONE"/>
        <set name="weight" value="10"/>
        <equip>
            <slot id="HAIR_ALL"/>
        </equip>
    <for>
        <add stat="pDef" order="0x30" value="5008"/>
        <add stat="mDef" order="0x30" value="5008"/>
        <add stat="runSpd" order="0x30" value="508"/>
        <add stat="maxHp" order="0x30" value="5000"/>
    </for>
    </armor>
посмотреть в других итемах как сделано и сделать по аналогии религия не позволяет? так еще и вопрос не в серверном разделе а в клиентском, откуда вы беретесь такие, Одмены мамкины
 
  • Ха-ха-ха
Реакции: KATE
посмотреть в других итемах как сделано и сделать по аналогии религия не позволяет? так еще и вопрос не в серверном разделе а в клиентском, откуда вы беретесь такие, Одмены мамкины
Вроде все мы из одного места появляемся)

Код:
        <cond msgId="1508">
            <not>
                <player olympiad="true"/>
            </not>
        </cond>
збазибо
 
Чтобы не прописывать, взял с лыжи кусок кода:
Можно сразу указать список предметов который запретить на олимпиаде.

Код:
//Olympiad.ini
AltOlyRestrictedItems = 6611,6612

//Config.java
            public static final String OLYMPIAD_CONFIG_FILE = "./config/main/Olympiad.ini";
            public static List<Integer> LIST_OLY_RESTRICTED_ITEMS;
            final PropertiesParser Olympiad = new PropertiesParser(OLYMPIAD_CONFIG_FILE);
            String[] olyRestrictedItems = Olympiad.getString("AltOlyRestrictedItems", "6611,6612").split(",");
            LIST_OLY_RESTRICTED_ITEMS = new ArrayList<>(olyRestrictedItems.length);
            for (String id : olyRestrictedItems)
            {
                LIST_OLY_RESTRICTED_ITEMS.add(Integer.parseInt(id));
            }

//gameserver/model/items/L2Item.java
    public boolean isOlyRestrictedItem()
    {
        return _is_oly_restricted || Config.LIST_OLY_RESTRICTED_ITEMS.contains(_itemId);
    }
    
    public boolean checkCondition(L2Character activeChar, L2Object target, boolean sendMessage)
    {
        if (activeChar.canOverrideCond(PcCondOverride.ITEM_CONDITIONS) && !Config.GM_ITEM_RESTRICTION)
        {
            return true;
        }
        
        // Don't allow hero equipment and restricted items during Olympiad
        if ((isOlyRestrictedItem() || isHeroItem()) && ((activeChar instanceof L2PcInstance) && activeChar.getActingPlayer().isInOlympiadMode()))
        {
        
//gameserver/model/items/instance/L2ItemInstance.java
    public boolean isOlyRestrictedItem()
    {
        return getItem().isOlyRestrictedItem();
    }
 
Чтобы не прописывать, взял с лыжи кусок кода:
Можно сразу указать список предметов который запретить на олимпиаде.

Код:
//Olympiad.ini
AltOlyRestrictedItems = 6611,6612

//Config.java
            public static final String OLYMPIAD_CONFIG_FILE = "./config/main/Olympiad.ini";
            public static List<Integer> LIST_OLY_RESTRICTED_ITEMS;
            final PropertiesParser Olympiad = new PropertiesParser(OLYMPIAD_CONFIG_FILE);
            String[] olyRestrictedItems = Olympiad.getString("AltOlyRestrictedItems", "6611,6612").split(",");
            LIST_OLY_RESTRICTED_ITEMS = new ArrayList<>(olyRestrictedItems.length);
            for (String id : olyRestrictedItems)
            {
                LIST_OLY_RESTRICTED_ITEMS.add(Integer.parseInt(id));
            }

//gameserver/model/items/L2Item.java
    public boolean isOlyRestrictedItem()
    {
        return _is_oly_restricted || Config.LIST_OLY_RESTRICTED_ITEMS.contains(_itemId);
    }
   
    public boolean checkCondition(L2Character activeChar, L2Object target, boolean sendMessage)
    {
        if (activeChar.canOverrideCond(PcCondOverride.ITEM_CONDITIONS) && !Config.GM_ITEM_RESTRICTION)
        {
            return true;
        }
       
        // Don't allow hero equipment and restricted items during Olympiad
        if ((isOlyRestrictedItem() || isHeroItem()) && ((activeChar instanceof L2PcInstance) && activeChar.getActingPlayer().isInOlympiadMode()))
        {
       
//gameserver/model/items/instance/L2ItemInstance.java
    public boolean isOlyRestrictedItem()
    {
        return getItem().isOlyRestrictedItem();
    }
зачем такое гомно делать я хз :Hot:
 
Чтобы не прописывать, взял с лыжи кусок кода:
Можно сразу указать список предметов который запретить на олимпиаде.

Код:
//Olympiad.ini
AltOlyRestrictedItems = 6611,6612

//Config.java
            public static final String OLYMPIAD_CONFIG_FILE = "./config/main/Olympiad.ini";
            public static List<Integer> LIST_OLY_RESTRICTED_ITEMS;
            final PropertiesParser Olympiad = new PropertiesParser(OLYMPIAD_CONFIG_FILE);
            String[] olyRestrictedItems = Olympiad.getString("AltOlyRestrictedItems", "6611,6612").split(",");
            LIST_OLY_RESTRICTED_ITEMS = new ArrayList<>(olyRestrictedItems.length);
            for (String id : olyRestrictedItems)
            {
                LIST_OLY_RESTRICTED_ITEMS.add(Integer.parseInt(id));
            }

//gameserver/model/items/L2Item.java
    public boolean isOlyRestrictedItem()
    {
        return _is_oly_restricted || Config.LIST_OLY_RESTRICTED_ITEMS.contains(_itemId);
    }
   
    public boolean checkCondition(L2Character activeChar, L2Object target, boolean sendMessage)
    {
        if (activeChar.canOverrideCond(PcCondOverride.ITEM_CONDITIONS) && !Config.GM_ITEM_RESTRICTION)
        {
            return true;
        }
       
        // Don't allow hero equipment and restricted items during Olympiad
        if ((isOlyRestrictedItem() || isHeroItem()) && ((activeChar instanceof L2PcInstance) && activeChar.getActingPlayer().isInOlympiadMode()))
        {
       
//gameserver/model/items/instance/L2ItemInstance.java
    public boolean isOlyRestrictedItem()
    {
        return getItem().isOlyRestrictedItem();
    }
между прочим по теме, только отдельно конфиг выводить который дублирует функцию темплейта итемов лишнее. Конфиги и костыли это удел оверосборок)
 
между прочим по теме, только отдельно конфиг выводить который дублирует функцию темплейта итемов лишнее. Конфиги и костыли это удел оверосборок)
Ну от костылей нужно точно избавлять сервер, там еще море проблем.
Кстати там не до конца убрана привязка и постоянно пишет что пул закрыт, может до конца вырезать и обновить в ресурсах? :Happy:
 
Ну от костылей нужно точно избавлять сервер, там еще море проблем.
Кстати там не до конца убрана привязка и постоянно пишет что пул закрыт, может до конца вырезать и обновить в ресурсах? :Happy:
делал на скорую руку. до снять не составит труда, большую часть я снял, так как был запрет на запуск гео :Run: , но после того как посмотрел на мувинг дальше ковыряться желание пропало)
 
делал на скорую руку. до снять не составит труда, большую часть я снял, так как был запрет на запуск гео :Run: , но после того как посмотрел на мувинг дальше ковыряться желание пропало)
Ну сам мувинг можно выпилить, да и гео хорошо бы заменить чтобы читало птс геодату.
Вот с привязкой там что то накрутили, нужно до конца убрать. :pandaredlol:
 
Чел, а можно вопрос. Ты слышал когда то в школе о математическом порядке выполнения действий ?
Так вот, ты делаешь add с порядком 0x30, а как правило порядок 0x30 принадлежит к mul - Multiplayer (Множитель).
Т.е. получается сервер тебе и смысла запускать нет, ибо ты 2+2 * 2 никогда не отличишь от (2+2) * 2 и соответственно всю возможную или мнимую прибыль потратишь на Балтику 9 и донта в World of Tanks
 
Чел, а можно вопрос. Ты слышал когда то в школе о математическом порядке выполнения действий ?
Так вот, ты делаешь add с порядком 0x30, а как правило порядок 0x30 принадлежит к mul - Multiplayer (Множитель).
Т.е. получается сервер тебе и смысла запускать нет, ибо ты 2+2 * 2 никогда не отличишь от (2+2) * 2 и соответственно всю возможную или мнимую прибыль потратишь на Балтику 9 и донта в World of Tanks
Пздц что за токсичность, эти строки были взяты с другого форума для примера не более.
 
Не знаю как вы, а я давно уже просто завел доп. флаги для запрета юза на олли и т.д.
Ибо эти кондишны дефолтные уж очень громоздки, а в реалиях ГоД+ еще и больше могут распухать из-за того что еще к примеру на фесте надо ставить запрет юза и т.д.
флаги, часть имеется и в оригинальном овере - я просто дополнил список
Java:
package l2p.gameserver.enums;

public enum ItemFlags
{
    DESTROYABLE(true), // возможность уничтожить
    DROPABLE(true), // возможность дропнуть
    SELLABLE(true), // возможность продать NPC
    TRADEABLE(true), // возможность передать/продать другому игроку
    COMMISSIONABLE(true), // возможность продать в системе комиссионной торговли
    ENCHANTABLE(false), // возможность заточить
    ATTRIBUTABLE(false), // возможность заточить атрибутом
    ALLOWED_ON_OLYMPIAD(true), // возможность использовать на олимпиаде
    ALLOWED_ON_FESTIVAL(true), // возможность использовать на фестивале хаоса
    ALLOWED_ON_PVP_EVENT(true), // возможность использовать на PvP-эвентах
    ALLOWED_ON_CHAOTIC(true), // возможность использовать в хаотическом состоянии
    ALLOWED_APPEARANCE(true), // возможность изменить внешний вид
    ALLOWED_PET(false); // можно использовать петом (бутылки лечения и все такое)

    public static final ItemFlags[] VALUES = values();

    private final int _mask;
    private final boolean _default;

    ItemFlags(boolean defaultValue)
    {
        _default = defaultValue;
        _mask = 1 << ordinal();
    }

    public int getMask()
    {
        return _mask;
    }

    public boolean getDefault()
    {
        return _default;
    }
}
код из ItemTemplate для парса этих флагов из данных предмета
Код:
        ...
        
        for (ItemFlags f : ItemFlags.VALUES)
        {
            boolean _def = f.getDefault();

            // TODO: для ALLOWED_ON_FESTIVAL не забыть потом расписать в xml значения
            // для предметов, которым этот парамер не задан, его значение будет равно значению параметра ALLOWED_ON_OLYMPIAD
            if (f == ItemFlags.ALLOWED_ON_FESTIVAL || f == ItemFlags.ALLOWED_ON_PVP_EVENT)
                _def = isAllowedOnOlympiad();

            boolean flag = set.getBool(f.name().toLowerCase(), _def);

            if (flag)
                activeFlag(f);
        }

        ...
        
    public boolean hasFlag(ItemFlags f)
    {
        return (_flags & f.getMask()) == f.getMask();
    }

    private void activeFlag(ItemFlags f)
    {
        _flags |= f.getMask();
    }
и пример использования в предмете
XML:
    <weapon id="39602" name="Острие Антараса Иного Измерения">
        <stat name="icon" value="icon.weapon_antaras_dagger_i01" />
        <stat name="type" value="DAGGER" />
        <stat name="ex_type" value="DAGGER" />
        <stat name="category" value="DRAGON" />
        <stat name="crystal_type" value="NONE" />
        <stat name="rnd_dam" value="5" />
        <stat name="equip_reuse_delay" value="30" />
        <stat name="soulshots" value="1" />
        <stat name="spiritshots" value="1" />
        <stat name="weight" value="1520" />
        <stat name="price" value="0" />
        <stat name="keep_type" value="1" />
        <stat name="destroyable" value="false" />
        <stat name="dropable" value="false" />
        <stat name="sellable" value="true" />
        <stat name="tradeable" value="false" />
        <stat name="commissionable" value="false" />
        <stat name="allowed_appearance" value="false" />
        <stat name="allowed_on_olympiad" value="false" />
        <stat name="allowed_on_festival" value="false" />
        <attributes>
            <attribute element="earth" value="999" />
        </attributes>
        <skills>
            <skill id="8890" level="1" />    <!-- Почет / Dignity -->
            <skill id="8893" level="1" />    <!-- Дыхание Антараса / Antharas' Breath -->
            <skill id="8895" level="1" />    <!-- Плеть Антараса / Antharas Lash -->
            <skill id="8901" level="1" />    <!-- Дракон-рыцарь / Dragon Knight -->
        </skills>
        <equip>
            <slot id="RIGHT_HAND" />
        </equip>
        <for>
            <add stat="pAtk" order="0x10" value="2523" />
            <add stat="mAtk" order="0x10" value="1257" />
            <add stat="pAccuracy" order="0x10" value="-3.75" />
            <set stat="pCritRateStatic" order="0x08" value="120" />
            <set stat="atkBaseSpeed" order="0x08" value="433" />
            <enchant stat="pAtk" order="0x0C" value="0" />
            <enchant stat="mAtk" order="0x0C" value="0" />
        </for>
    </weapon>
 
Последнее редактирование:
Назад
Сверху Снизу