Ограничение на ношение плаща

BigZy

Знаменитый
Участник
Сообщения
42
Розыгрыши
0
Репутация
-10
Реакции
6
Баллы
1 245
Хелп, хочу разрешить одевать определенные плащи без ополчения в сет ы+,дайте плз наводку какую нибудь, рыл в сторону конфига: разрешить одевать плащи без сетов, но не додумал какую проверку вставить, были мысли просто дать плащам скилл который дают сеты , как у руны, но тогда можно будет одевать вообще любой плащ . Основа оверы
 
ItemFunctions.java
 
Обратите внимание, что данный пользователь заблокирован! Не совершайте с ним никаких сделок! Перейдите в его профиль, чтобы узнать причину блокировки.
В год сборках и сурсах что есть в шаре (на этом) форуме можно посмотреть данную реализацию (нет возможности кинуть код сюда)....
Ограничить одевание плаща можно через ДП\ядро (как это сделано в тех самых сурсах что вы найдете в шаре (тут)),
1. прописываем ИД профы которая может носить плащ - непосредственно в сам плащ.
2. делаем конфиг в котором пишем список плащей и кто их может использовать (включил\выключил и весь день свободен!)
 
public boolean getOpenCloak()
{
if(Config.ALT_OPEN_CLOAK_SLOT)
return true;
return (int) calcStat(Stats.CLOAK_SLOT, 0, null, null) > 0;
}

это я в Player.java нашел
как проверять на одеваемую вещь?
 
public boolean getOpenCloak()
{
if(Config.ALT_OPEN_CLOAK_SLOT)
return true;
return (int) calcStat(Stats.CLOAK_SLOT, 0, null, null) > 0;
}

это я в Player.java нашел
как проверять на одеваемую вещь?

В тело метода.
Слот и id твои

ItemInstance gloves = getInventory().getPaperdollItem(ItemTemplate.SLOT_GLOVES);
if(gloves!= null && gloves.getItemId() == 12312) {
return true;
}
 
угу, а не опупеешь так перечислять все что может подходить по ид? :)
да еще и самым извращенским способом - хардкодом в ядре.

простейший способ - включить ALT_OPEN_CLOAK_SLOT, т.е. возможность одевать любые плащи без сетов
далее в плащи, которые надо запретить одевать без сетов, вписать что-то типа
Код:
        <cond msgId="113">
            <player skill="skill_id;1" />
        </cond>
где skill_id - ид скилла которое обязательно будет у того кто оденет сет в котором можно носить плащи - можно вписать какую-то пассивку такую ничего не делающую в нужные сеты.
и все - такие плащи будут одеваться только если сет с этим скиллом одет.

конкретно такого кондишна скорее всего не будет - я его сам довписывал, но есть что-то похожее
а этот выглядит так
Код:
package l2p.gameserver.stats.conditions;

import l2p.gameserver.stats.Env;

public final class ConditionPlayerSkill extends Condition
{
    private final int _id;
    private final int _level;
    private final int _checkMode;

    public ConditionPlayerSkill(Integer id, int level, int checkMode)
    {
        _id = id;
        _level = level;
        _checkMode = checkMode;
    }

    @Override
    protected boolean testImpl(Env env)
    {
        if (_checkMode == -1)
            return env.character.getSkillLevel(_id) >= _level;
        else if (_checkMode == 0)
            return env.character.getSkillLevel(_id) != _level;
        else
            return env.character.getSkillLevel(_id) == _level;
    }
}
как его прикрутить к серву - это уже пусть сам :)
 
Последнее редактирование модератором:
простейший способ - включить ALT_OPEN_CLOAK_SLOT, т.е. возможность одевать любые плащи без сетов
далее в плащи, которые надо запретить одевать без сетов, вписать что-то типа
Код:
        <cond msgId="113">
            <player skill="skill_id;1" />
        </cond>
где skill_id - ид скилла которое обязательно будет у того кто оденет сет в котором можно носить плащи - можно вписать какую-то пассивку такую ничего не делающую в нужные сеты.
и все - такие плащи будут одеваться только если сет с этим скиллом одет.

конкретно такого кондишна скорее всего не будет - я его сам довписывал, но есть что-то похожее
а этот выглядит так
Код:
package l2p.gameserver.stats.conditions;

import l2p.gameserver.stats.Env;

public final class ConditionPlayerSkill extends Condition
{
    private final int _id;
    private final int _level;
    private final int _checkMode;

    public ConditionPlayerSkill(Integer id, int level, int checkMode)
    {
        _id = id;
        _level = level;
        _checkMode = checkMode;
    }

    @Override
    protected boolean testImpl(Env env)
    {
        if (_checkMode == -1)
            return env.character.getSkillLevel(_id) >= _level;
        else if (_checkMode == 0)
            return env.character.getSkillLevel(_id) != _level;
        else
            return env.character.getSkillLevel(_id) == _level;
    }
}
как его прикрутить к серву - это уже пусть сам :)
Ну если ты так предложил, то можно и по другому сделать
<cond msgId="113">
<config name="ALT_OPEN_CLOAK_SLOT" val="false"/>
</cond>
Установить true для некоторых плащей и всё. А самое простое, это то что я выше говорил, и дописать предметы в проверка одевание эквипа
 
Ну если ты так предложил, то можно и по другому сделать
<cond msgId="113">
<config name="ALT_OPEN_CLOAK_SLOT" val="false"/>
</cond>
Установить true для некоторых плащей и всё. А самое простое, это то что я выше говорил, и дописать предметы в проверка одевание эквипа
ERROR ItemParser: File: 80000-80099.xml:402 error: Element type "config" must be declared
 
Обратите внимание, что данный пользователь заблокирован! Не совершайте с ним никаких сделок! Перейдите в его профиль, чтобы узнать причину блокировки.
пишем отдельный скрипт, делаем ограничения в нем.
делаем xml файл с параметрами.
HTML:
   <cloak itsId="1">
            <player isdid="skill_lv;20"> 
             <cloak_id_lvl "85"> // разрешено одевать плащ с  85 лвл (либо указываем своё значения)
            <cloak_id = "id плаща">
            </cloak>
 
Назад
Сверху Снизу