Welcome to RUSaCis - эмулятор Interlude

Присоединяйтесь к нам прямо сейчас, чтобы получить доступ ко всем нашим возможностям. После регистрации и входа в систему вы сможете создавать темы, публиковать ответы в существующих темах, давать репутацию пользователям - так же приобрести исходный код. Это также быстро, так чего же вы ждете?

Как создать свиток, скилл повышающий рейты?

В версии 3.6 появилась возможность создать свиток повышающий рейты сервера, рассмотрим на примере:
Создаем новый предмет
Код:
    <item id="9209" type="EtcItem" name="Bonus Scroll 100%">
        <set name="icon" val="icon.etc_scroll_white_i00" />
        <set name="default_action" val="skill_reduce" />
        <set name="etcitem_type" val="SCROLL" />
        <set name="material" val="PAPER" />
        <set name="weight" val="120" />
        <set name="is_stackable" val="true" />
        <set name="is_oly_restricted" val="true" />
        <set name="handler" val="ItemSkills" />
        <set name="item_skill" val="7105-1" />
        <set name="use_condition" val="{{uc_transmode_exclude;{tt_flying}}}" />
    </item>
Отлично, сам предмет создан (не забываем в клиенте создать предмет, или же заменить существующий предмет на это).
Далее создаем сам скилл:

Код:
    <skill id="7105" levels="1" name="Bonus Scroll 100%">
        <set name="magicLvl" val="-1"/>
        <set name="mpInitialConsume" val="1"/>
        <set name="mpConsume" val="1"/>
        <set name="target" val="SELF"/>
        <set name="reuseDelay" val="3000"/>
        <set name="hitTime" val="1000"/>
        <set name="skillType" val="BUFF"/>
        <set name="isMagic" val="true"/>
        <set name="operateType" val="ACTIVE"/>
        <set name="castRange" val="400"/>
        <set name="effectRange" val="900"/>
        <cond msgId="113" addName="1">
            <player flying="False" />
        </cond>
        <for>
            <effect name="Buff" time="1200" val="0" stackOrder="1" stackType="bonus_scroll">
                <add stat="xpGain" val="100"/>
                <add stat="spGain" val="100"/>
                <add stat="dropRate" val="100"/>
                <add stat="spoilRate" val="100"/>
                <add stat="adenaRate" val="100"/>
            </effect>
        </for>
    </skill>
На данном примере, мы создали scroll который дает бафф на 1 час (time="1200"), повышающий рейты сервера на 100%.
Можно например разделить каждый скролл на разные повышение рейтов. (главное не забывайте менять stackType, он может быть рандомный).
 
Последнее редактирование:

Fws

Бродяга
INTERLUDE
INTERFACE
Регистрация
13 Сен 2022
Сообщения
25
Реакции
8
Баллы
3
Адрес
Argentina
RaCoin
0
Can it also be made totem type? That being alone in the inventory gives you stats and disappears after a few hours?
 

h8.Core

Бродяга
Регистрация
25 Апр 2021
Сообщения
21
Реакции
24
Баллы
3
RaCoin
0
Допустим,можем ли мы сделать такое же,только на повышение % заточки?
 

ForceUnleashed

Виконт
Команда форума
Leader
INTERLUDE
CLASSIC
Developer
CLASSIC
INTERLUDE
Регистрация
21 Авг 2020
Сообщения
1,066
Решения
6
Реакции
889
Баллы
113
Веб-сайт
rusacis.com
RaCoin
10

Cringe

Вассал
INTERLUDE
INTERLUDE
INTERFACE
Регистрация
5 Мар 2025
Сообщения
49
Реакции
7
Баллы
8
RaCoin
65
У меня итем не отображается(
 

ForceUnleashed

Виконт
Команда форума
Leader
INTERLUDE
CLASSIC
Developer
CLASSIC
INTERLUDE
Регистрация
21 Авг 2020
Сообщения
1,066
Решения
6
Реакции
889
Баллы
113
Веб-сайт
rusacis.com
RaCoin
10

Cringe

Вассал
INTERLUDE
INTERLUDE
INTERFACE
Регистрация
5 Мар 2025
Сообщения
49
Реакции
7
Баллы
8
RaCoin
65
Нашел в itemname-e.dat прописаны итемы, добавил строчку как на примере другой строчки:

itemname-e.dat:
item_name_begin    id=9210 name=[Bonus Scroll 20% EXP-SP]    additionalname=[]    description=[This scroll gives you: exp rate +20%; SP rate +20%]    popup=-1    set_ids=[]    set_bonus_desc=[]    set_extra_id=[]    set_extra_desc=[]    unknown_1=0    unknown_2=0    set_enchant_count=0    set_enchant_effect=[]    item_name_end

Но это не помогло, где еще задаются итемы я ненахожу

Может где-то есть ли полный гайд как это делается?
 

ForceUnleashed

Виконт
Команда форума
Leader
INTERLUDE
CLASSIC
Developer
CLASSIC
INTERLUDE
Регистрация
21 Авг 2020
Сообщения
1,066
Решения
6
Реакции
889
Баллы
113
Веб-сайт
rusacis.com
RaCoin
10
Нашел в itemname-e.dat прописаны итемы, добавил строчку как на примере другой строчки:

itemname-e.dat:
item_name_begin    id=9210 name=[Bonus Scroll 20% EXP-SP]    additionalname=[]    description=[This scroll gives you: exp rate +20%; SP rate +20%]    popup=-1    set_ids=[]    set_bonus_desc=[]    set_extra_id=[]    set_extra_desc=[]    unknown_1=0    unknown_2=0    set_enchant_count=0    set_enchant_effect=[]    item_name_end

Но это не помогло, где еще задаются итемы я ненахожу

Может где-то есть ли полный гайд как это делается?
Вы сейчас добавили только название предмета дальше вам надо добавить grp
etcitemgrp.dat
например в вашем случае (для оружия и брони свое).
 

Cringe

Вассал
INTERLUDE
INTERLUDE
INTERFACE
Регистрация
5 Мар 2025
Сообщения
49
Реакции
7
Баллы
8
RaCoin
65

Cringe

Вассал
INTERLUDE
INTERLUDE
INTERFACE
Регистрация
5 Мар 2025
Сообщения
49
Реакции
7
Баллы
8
RaCoin
65
Еще, для отображения скиллов, нужно добавить в skillname-e.dat

skillname-e.dat:
skill_begin    skill_id=7105    skill_level=1    name=[Bonus EXP-SP 20%]    desc=[Bonus EXP\SP rate +20%]    enchant_name=[none]    enchant_desc=[none]    skill_end

и в skillgrp.dat

skillgrp.dat:
skill_begin    skill_id=7105    skill_level=1    operate_type=1    mp_consume=11    cast_range=-1    cast_style=1    hit_time=1.5    is_magic=0    animation=[X]    description=[]    icon=[icon.etc_ancient_crown_i03]    extra_eff=0    is_enchanted=0    enchant_skill_id=0    hp_consume=0    rumble_self=8    rumble_target=10    skill_end
 

Cringe

Вассал
INTERLUDE
INTERLUDE
INTERFACE
Регистрация
5 Мар 2025
Сообщения
49
Реакции
7
Баллы
8
RaCoin
65
На данном примере, мы создали scroll который дает бафф на 1 час (time="1200"), повышающий рейты сервера на 100%.
Можно например разделить каждый скролл на разные повышение рейтов. (главное не забывайте менять stackType, он может быть рандомный).

А можно ли сделать бафф чтобы бафф
не спадал при смерти?
 

ForceUnleashed

Виконт
Команда форума
Leader
INTERLUDE
CLASSIC
Developer
CLASSIC
INTERLUDE
Регистрация
21 Авг 2020
Сообщения
1,066
Решения
6
Реакции
889
Баллы
113
Веб-сайт
rusacis.com
RaCoin
10

Cringe

Вассал
INTERLUDE
INTERLUDE
INTERFACE
Регистрация
5 Мар 2025
Сообщения
49
Реакции
7
Баллы
8
RaCoin
65
В коде порылся, нашел, нужно поставить <set name="stayAfterDeath" val="true" />
 

Cringe

Вассал
INTERLUDE
INTERLUDE
INTERFACE
Регистрация
5 Мар 2025
Сообщения
49
Реакции
7
Баллы
8
RaCoin
65
А еще, можно ли сделать чтобы этот баф не занимал слот?
 

Cringe

Вассал
INTERLUDE
INTERLUDE
INTERFACE
Регистрация
5 Мар 2025
Сообщения
49
Реакции
7
Баллы
8
RaCoin
65
Получилось) я сделал.
Для этого нужно установить флаг <set name="isNotUseSlot" val="true" />

Вдруг кому пригодится нужно сделать следущее:


1. в класс L2Skill добавить


net/sf/l2j/gameserver/skills/L2Skill.java:
//Переменную
private final boolean _isNotUseSlot;

//метод чтобы получать переменную
public final boolean isNotUseSlot() {
    return this._isNotUseSlot;
}

// и главное, в метод protected L2Skill(StatSet set) добавить:
_isNotUseSlot = set.getBool("isNotUseSlot", false);

2. в EffectList.java поменять так

net/sf/l2j/gameserver/model/actor/container/creature/EffectList.java:
//1. в методе protected void addEffectFromQueue(AbstractEffect newEffect)

//добавил !newSkill.isNotUseSlot()
if (!doesStack(newSkill) && !newSkill.is7Signs() && newSkill.getId() != 2286 && !newSkill.isNotUseSlot())
// для сравнения было так:
if (!doesStack(newSkill) && !newSkill.is7Signs() && newSkill.getId() != 2286)


// и еще поменять здесь
if (e == null || e.getSkill().isToggle() || e.getSkill().is7Signs() || e.getSkill().isNotUseSlot())
//было
if (e == null || e.getSkill().isToggle() || e.getSkill().is7Signs())



//2. в методе public int getBuffCount()
//добавил
if (e != null && e.getTemplate().showIcon() && !e.getSkill().is7Signs() && !e.getSkill().isNotUseSlot())
// так было:
if (e != null && e.getTemplate().showIcon() && !e.getSkill().is7Signs())


и теперь если установлено в скилле <set name="isNotUseSlot" val="true" /> тогда бафф не будет занимать слота.
 
Сверху Снизу