Форум администраторов игровых серверов

Форум администраторов игровых серверов (https://forum.zone-game.info/TT.php)
-   Серверная часть (https://forum.zone-game.info/forumdisplay.php?f=148)
-   -   Редактирование скилов (https://forum.zone-game.info/showthread.php?t=11764)

Sorento 27.12.2010 22:20

Редактирование скилов
 
Уважаемые администраторы, извниюсь если тема повторяется но перед созданием просмотрел форум и не нашел подобного. Вопрос заключается в следующем, напишите пожалуйста полный гайд по редактированию параметров скилов.
Заранее спасибо за помощь.

Azarnik 14.01.2011 18:49

Re: Редактирование скилов
 
О_о. Это очень страшная тайна над которой ломают головы тысячи философов. Даю наводку: - В папке models модели скилов, в папке effect ефекты (это если там смотришь). Всё просто. Делай.:D

flashman 14.01.2011 21:52

Re: Редактирование скилов
 
Sorento, вряд ли кто-то возьмётся за написание такого гайда, ибо писать придётся очень долго и много. Единственное решение в данном случае - это изучение уже написаных скилов (находятся в папке skills), в файле skills.xsd описаны все возможные параметры скилов и их атрибуты, их очень много так что тут понятное дело что никто описывать это всё не будет. Могу привести лишь описание одно из множетсва скилов:
PHP код:

<skill_template skill_id="18892" name="STR_IDCatacombs_Spectre_AreaHealNuff" nameId="590579" stack="IDCATACOMBS_SPECTRE_AREAHEALNUFF" lvl="1" skilltype="MAGICAL" skillsubtype="DEBUFF" tslot="DEBUFF" activation="ACTIVE" cooldown="0" duration="0">
        <
setproperties>
            <
firsttarget value="ME"/>
            <
firsttargetrange value="2"/>
            <
targetrange value="AREA" distance="40" maxcount="12"/>
            <
targetrelation value="ENEMY"/>
        </
setproperties>
        <
useconditions>
            <
playermove allow="false"/>
        </
useconditions>
        <
effects>
            <
deboostheal percent="99999" duration="15000" effectid="10184622" e="2" element="WIND"/>
        </
effects>
    </
skill_template

Тут можно увидеть:
skill_id - id скила в клиенте и который описывается на сервере.
name - строка содержащаяся в файле client_strings.xml (находится в клиенте), содержит название скила.
stack - точно незнаю что это означает, но в поле атрибута содержиться часть от строки содержащейся в client_strings.xml , весьма вероятно что это описание скила для панели быстрого доступа(возможно).
skilltype - тип скила , магический (MAGICAL) или физический (PHYSICAL).
skillsubtype - дополнительный тип скила (дебафы, бафы, атака ...).
tslot - слот куда добавляется скил , если скилл является бафом или дебафом.
activation - указывает на то , является ли скил Активным или Пассивным.
cooldown - это время перезарядки скила (секунда приравнивается к 10)
duration - это время подготовки скила перед его применением (секунда приравнивается к 1000).
По мимо этих атрибутов в тег <skill_template> могут входить и другие.
<setproperties> - в этом теге перечисляются свойства скила.
firsttarget value="ME" - цель скила.
firsttargetrange value="2" - расстояние до первой цели.
targetrange value="AREA" distance="40" maxcount="12" - определяет дистанцию (distance) до цели ,облать воздействия (value="AREA") и количество целей (maxcount="12").
useconditions - определяет условия применения скила.
playermove allow="false" - в данном случае объект использующий скил должен оставаться неподвижным.
effects - определяет эффекты которые произведёт скил на цель.
deboostheal - в данном случае применён эффект который ухудшает (или вообще делает не эффективным) лечение.
percent - по идее процент срабатывания скила.
duration - продолжительность действия скила. (секунда = 1000)
effectid - id применяемого эффекта(анимация скорее всего).
element - поскольку это магический скил, то есть возможность использовать один из 4-х элементов.
Что такое е точно не помню, где-то в ядре видел его применение, но не помню что это.
Собственно только по аналогии с уже существущими скиламы ты сможешь сделать свой скил, но для этого придётся вносить изменения и в клиент.
Редактировать скилы также возможно только по аналогии или хорошем знании дела :) , так что как видно этот вопрос весьмя не прост.

Necron 20.01.2011 00:25

Re: Редактирование скилов
 
но эт токо 1 часть - серверная, а там еще в клиенте рытся надо так что лучше скиллы пока что не трогать)))) а то наделаешь делов)))

xobotyi 20.01.2011 11:05

Re: Редактирование скилов
 
Цитата:

Сообщение от flashman (Сообщение 104152)
Sorento, вряд ли кто-то возьмётся за написание такого гайда, ибо писать придётся очень долго и много. Единственное решение в данном случае - это изучение уже написаных скилов (находятся в папке skills), в файле skills.xsd описаны все возможные параметры скилов и их атрибуты, их очень много так что тут понятное дело что никто описывать это всё не будет. Могу привести лишь описание одно из множетсва скилов:
PHP код:

<skill_template skill_id="18892" name="STR_IDCatacombs_Spectre_AreaHealNuff" nameId="590579" stack="IDCATACOMBS_SPECTRE_AREAHEALNUFF" lvl="1" skilltype="MAGICAL" skillsubtype="DEBUFF" tslot="DEBUFF" activation="ACTIVE" cooldown="0" duration="0">
        <
setproperties>
            <
firsttarget value="ME"/>
            <
firsttargetrange value="2"/>
            <
targetrange value="AREA" distance="40" maxcount="12"/>
            <
targetrelation value="ENEMY"/>
        </
setproperties>
        <
useconditions>
            <
playermove allow="false"/>
        </
useconditions>
        <
effects>
            <
deboostheal percent="99999" duration="15000" effectid="10184622" e="2" element="WIND"/>
        </
effects>
    </
skill_template

Тут можно увидеть:
skill_id - id скила в клиенте и который описывается на сервере.
name - строка содержащаяся в файле client_strings.xml (находится в клиенте), содержит название скила.
stack - точно незнаю что это означает, но в поле атрибута содержиться часть от строки содержащейся в client_strings.xml , весьма вероятно что это описание скила для панели быстрого доступа(возможно).
skilltype - тип скила , магический (MAGICAL) или физический (PHYSICAL).
skillsubtype - дополнительный тип скила (дебафы, бафы, атака ...).
tslot - слот куда добавляется скил , если скилл является бафом или дебафом.
activation - указывает на то , является ли скил Активным или Пассивным.
cooldown - это время перезарядки скила (секунда приравнивается к 10)
duration - это время подготовки скила перед его применением (секунда приравнивается к 1000).
По мимо этих атрибутов в тег <skill_template> могут входить и другие.
<setproperties> - в этом теге перечисляются свойства скила.
firsttarget value="ME" - цель скила.
firsttargetrange value="2" - расстояние до первой цели.
targetrange value="AREA" distance="40" maxcount="12" - определяет дистанцию (distance) до цели ,облать воздействия (value="AREA") и количество целей (maxcount="12").
useconditions - определяет условия применения скила.
playermove allow="false" - в данном случае объект использующий скил должен оставаться неподвижным.
effects - определяет эффекты которые произведёт скил на цель.
deboostheal - в данном случае применён эффект который ухудшает (или вообще делает не эффективным) лечение.
percent - по идее процент срабатывания скила.
duration - продолжительность действия скила. (секунда = 1000)
effectid - id применяемого эффекта(анимация скорее всего).
element - поскольку это магический скил, то есть возможность использовать один из 4-х элементов.
Что такое е точно не помню, где-то в ядре видел его применение, но не помню что это.
Собственно только по аналогии с уже существущими скиламы ты сможешь сделать свой скил, но для этого придётся вносить изменения и в клиент.
Редактировать скилы также возможно только по аналогии или хорошем знании дела :) , так что как видно этот вопрос весьмя не прост.

ну вот почти))
stack - стек скилла, используется для баффов и дебаффов, если ты юзнул скилл из этого стека(А), а потом юзаешь другой скилл из этого же стека(Б), то эффект скилла А заменяется эффектом скилла Б

Horizon 10.03.2011 15:32

Re: Редактирование скилов
 
А тут что в эффекте написано? не понял=(

Код:

        <skill_template skill_id="1794" name="STR_SKILL_EL_Order_Sacrifice_G1" nameId="584623" stack="SKILL_EL_ORDER_SACRIFICE" lvl="1" skilltype="MAGICAL" skillsubtype="NONE" tslot="NONE" activation="ACTIVE" cooldown="6000" duration="0">
                <setproperties>
                        <firsttarget value="ME"/>
                        <firsttargetrange value="25"/>
                        <targetrange value="ONLYONE"/>
                        <targetrelation value="FRIEND"/>
                </setproperties>
                <effects>
                        <petorderuseultraskill ultra_skill="11" e="1" hoptype="SKILLLV" hopb="2199"/>
                </effects>
        </skill_template>


flashman 10.03.2011 17:24

Re: Редактирование скилов
 
По всей видимости команда для суммона, приказ ему использовать какой-то скил (ultra_skill) .

Horizon 10.03.2011 23:29

Re: Редактирование скилов
 
А где описаны значения effectid="20103"?

3EBC 11.03.2011 03:21

Re: Редактирование скилов
 
Ненаписано пока поэтому и неработает этот скилл. НО пример написания можно взять у скила стража. где получает урон в группе.

ruper 11.03.2011 13:56

Re: Редактирование скилов
 
А можно подробней? Точнее на примере.

Leona 20.04.2011 10:03

Re: Редактирование скилов
 
Все прочитала,все замечательно,но возникли вопросы..помоегите разобраться пожалуйста))

Что именно интересует,всего 3 скилла :
1)Призыв: Энергия исцеления I
2)Призыв симурга I
3)Призыв: Святая энергия II

Начнем с первого.

1)
PHP код:

<skill_template skill_id="1023" name="STR_SKILL_PR_Light_HealingServent_G1" nameId="590251" stack="SKILL_PR_LIGHT_HEALINGSERVENT" lvl="1" skilltype="MAGICAL" skillsubtype="NONE" tslot="NONE" activation="ACTIVE" cooldown="600" duration="1000" cancel_rate="60">
        <
startconditions>
            <
mp value="252" delta="2"/>
        </
startconditions>
        <
setproperties>
            <
firsttarget value="ME"/>
            <
firsttargetrange value="1"/>
            <
targetrange value="ONLYONE"/>
            <
targetrelation value="FRIEND"/>
        </
setproperties>
        <
useconditions>
            <
playermove allow="false"/>
        </
useconditions>
        <
effects>
            <
summonservant skill_id="18886" hp_ratio="66" npc_id="749185" e="1" element="FIRE"/>
        </
effects>
        <
actions>
            <
mpuse value="252" delta="2"/>
        </
actions>
    </
skill_template

Конкретно в чем проблема: не могу найти время действия самой энергии. т.е кастить она должна ровно по по откату а т,е минуту. И где прописывается кол-во восстанавливаемого хп за раз каста?

2)
PHP код:

<skill_template skill_id="628" name="STR_SKILL_RA_Light_CallCompanion_G1" nameId="588875" stack="SKILL_RA_LIGHT_CALLCOMPANION" lvl="1" skilltype="MAGICAL" skillsubtype="SUMMONHOMING" tslot="NONE" activation="ACTIVE" cooldown="1200" duration="0" cancel_rate="20">
        <
startconditions>
            <
mp value="149" delta="5"/>
        </
startconditions>
        <
setproperties>
            <
firsttarget value="TARGET"/>
            <
firsttargetrange value="25"/>
            <
targetrange value="ONLYONE"/>
            <
targetrelation value="ENEMY"/>
        </
setproperties>
        <
effects>
            <
summonservant skill_id="18953" hp_ratio="17" npc_id="749177" e="1" element="FIRE" hoptype="SKILLLV" hopb="3063"/>
        </
effects>
        <
actions>
            <
mpuse value="149" delta="5"/>
        </
actions>
    </
skill_template

Так же непонятно где править наносимый урон. И где он вообще отображается?)

3) Еще один похожий призывной атакующий скилл.
PHP код:

<skill_template skill_id="2144" name="STR_SKILL_PR_Light_EternalServent_G2" nameId="590993" stack="SKILL_PR_LIGHT_ETERNALSERVENT" lvl="2" skilltype="MAGICAL" skillsubtype="NONE" tslot="NONE" activation="ACTIVE" cooldown="300" duration="0" cancel_rate="20">
        <
startconditions>
            <
mp value="219" delta="5"/>
        </
startconditions>
        <
setproperties>
            <
firsttarget value="TARGET"/>
            <
firsttargetrange value="25"/>
            <
targetrange value="ONLYONE"/>
            <
targetrelation value="ENEMY"/>
        </
setproperties>
        <
effects>
            <
summonservant skill_id="18953" hp_ratio="17" npc_id="749198" e="1" element="FIRE" hoptype="SKILLLV" hopb="2966"/>
        </
effects>
        <
actions>
            <
mpuse value="219" delta="5"/>
        </
actions>
    </
skill_template

Опять же,проблема как в прошлом скиле,лично мне невидно где отображается кол-во наносимого урона,где его можно исправить?

З.Ы Всем кто ответит и поможет большое спасибо)))

flashman 20.04.2011 13:19

Re: Редактирование скилов
 
О том как работает модель скила summonservant смотрите в ядре класс SummonServantEffect .
А то какие скилы кастуют эти самоны и так там видно:
PHP код:

<summonservant skill_id="18953" hp_ratio="17" npc_id="749198" e="1" element="FIRE" hoptype="SKILLLV" hopb="2966"/> 

тут видим такое skill_id="18953" , собсно самон юзает скил 18953 .
Skill:
Свернуть ↑Развернуть ↓

Leona 20.04.2011 17:57

Re: Редактирование скилов
 
ааааааа,шикарно=)))спасибо огромное))))

Добавлено через 1 час 58 минут
Т.е без этого SummonServantEffect скиллы не настроить??

ale 23.04.2011 23:26

Re: Редактирование скилов
 
Peace!

На днях поставил AXE сервер для "своих", да и самому интересно было поковырять это чудо. Поиграв достаточное количество времени за темплара, обнаружил (а вдруг показалось? :D ), что такие скиллы как Punishment (стигма-скилл) и Shining Slash наносят только либо обычный урон, либо критовый, хотя в описании сказано что они должны наносить random damage.

Что это означает на практике? На просторах сети я нашёл следующее описание: такой тип скилла дополнительно имеет множитель, который выбирается от удара к удару произвольным образом. Множители: 0.5x, 1x, 2x, 2.5x.

Далее я расскажу, как я пытался это дело пофиксить. Так как с игровыми серверами я не работал вообще, претендую на медальку "нуб". Критику люблю. ;)

Ближе к теме. Для примера я взял скилл темпла Shining Slash IV. Смотрим skill_templates.xml:

PHP код:

<skill_template skill_id="2045" name="STR_SKILL_KN_ShineSlash_G4" nameId="590777" stack="SKILL_KN_SHINESLASH" lvl="4" skilltype="PHYSICAL" skillsubtype="ATTACK" tslot="NONE" activation="ACTIVE" cooldown="180" duration="0" cancel_rate="10">
    <
initproperties>
        <
addweaponrange/>
    </
initproperties>
    <
startconditions>
        <
mp value="71" delta="0"/>
    </
startconditions>
    <
setproperties>
        <
firsttarget value="TARGET"/>
        <
firsttargetrange value="1"/>
        <
targetrange value="ONLYONE"/>
        <
targetrelation value="ENEMY"/>
    </
setproperties>
    <
effects>
        <
skillatk value="220" delta="8" e="1" hoptype="DAMAGE"/>
    </
effects>
    <
actions>
        <
mpuse value="71" delta="0"/>
    </
actions>
</
skill_template

Вроде как он самый. Только вот ничего необычного здесь нету. Ясно только что скилл юзает effect типа skillatk.
Ну ок, смотрим что за зверь такой в skills.xsd:

PHP код:

<xs:element name="skillatk" type="SkillAttackEffect" minOccurs="0" maxOccurs="1"/> 

В общем-то понятно, что ничего не понятно. Благодаря уважаемым форумчанам, сложил два и два и отправился прямиком в класс SkillAttakEffect.java:

PHP код:

/**
 * @author ATracer
 */
@XmlAccessorType(XmlAccessType.FIELD)
@
XmlType(name "SkillAttackEffect")
public class 
SkillAttackEffect extends DamageEffect {

    @
Override
    
public void calculate(Effect effect) {
        
super.calculate(effectDamageType.PHYSICAL);
    }


Ничего интересного и тут нет. Вызывается метод суперкласса и всё. Ну что-ж, смотрим DamageEffect.java. Приведу ниже только нужную функцию:

PHP код:

public void calculate(Effect effectDamageType damageType) {
        
int skillLvl effect.getSkillLevel();
        
int valueWithDelta value delta skillLvl;
        
valueWithDelta applyActionModifiers(effectvalueWithDelta);

        
// apply pvp damage ratio
        
if (effect.getEffected() instanceof Player && effect.getPvpDamage() != 0)
            
valueWithDelta Math.round(valueWithDelta * (effect.getPvpDamage() / 100f));

        switch (
damageType) {
            case 
PHYSICAL:
                
AttackUtil.calculatePhysicalSkillAttackResult(effectvalueWithDelta);
                break;
            case 
MAGICAL:
                
AttackUtil.calculateMagicalSkillAttackResult(effectvalueWithDeltagetElement());
                break;
            default:
                
AttackUtil.calculatePhysicalSkillAttackResult(effect0);
        }

        if (
effect.getAttackStatus() != AttackStatus.RESIST && effect.getAttackStatus() != AttackStatus.DODGE || this instanceof MoveBehindEffect)
            
effect.addSucessEffect(this);


Вроде как оно. Тут даже PvP урон считается, проверка на ресист и эвэйд... Недолго думая, решено было править исходник. :D
Переменная типа Effect через доступный метод может вернуть йдишник скилла. За неимением других вариантов, я изменял valueWithDelta. Осталось добавить какой-нибудь свитч и рандом:

PHP код:

switch (effect.getSkillId()) {
            case 
2045// Shining Slash IV (Templar)
                
double rnd Math.random();
                
float x .0f// rate (x0.5, x1, x2, x2.5)
                
if(rnd >= 0.0 && rnd <= 0.25)
                    
0.5f;
                else if(
rnd 0.25 && rnd <= 0.5)
                    
1.0f;
                else if(
rnd 0.5 && rnd <= 0.75)
                    
2.0f;
                else if(
rnd 0.75 && rnd 1.0)
                    
2.5f;
                
valueWithDelta Math.round(valueWithDelta x);
                break;
            default:
                break;


После компиляции, скилл реально стал давать произвольный дамаг. Конечно, здесь ещё нужно скорректировать шансы выбора того или иного рейта (думаю, что x0.5 и x2.5 должны выпадать реже, чем x1), ну и кейсов набросать для остальных скиллов (уже в порядке очереди).

Ну а теперь любимая рубрика нуба "Вопросы - Гуру":

1. Я - адекватный?
2. valueWithDelta - то ли я изменяю или нет?
4. Куда вставлять свитч (если, конечно, вставлять) - до или после apply pvp damage ratio?

Спасибо за внимание :)

flashman 24.04.2011 15:56

Re: Редактирование скилов
 
Цитата:

Куда вставлять свитч (если, конечно, вставлять) - до или после apply pvp damage ratio?
до ясен перец :) .

Цитата:

Т.е без этого SummonServantEffect скиллы не настроить??
Смотря что вы хотите настроить.

Sardonika 02.05.2011 09:31

Re: Редактирование скилов
 
Всем Доброго время суто. У меня вопрос про написание скилов в арты Ведь есть бафы и те что атакуют . Так вот где в какой из строк это показанно .. И как настроить скил арта чтоб они активировались, Вот Дары все работают а на атакующие ни один подскажите ))) к примеру меня интерисует этот скил skill 12046 по всем дарам все работает а вот обычные арты не пашут к примеру у меня имеется рабочий скил на дар Крепости Ра ми рен

<skill_template skill_id="12077" name="STR_SKILL_Abyss_Reward_LaMiren_G1" nameId="585469" stack="SKILL_ABYSS_REWARD_LAMIREN" lvl="1" skilltype="MAGICAL" skillsubtype="BUFF" tslot="BUFF" activation="ACTIVE" cooldown="0" duration="0">
<startconditions>
<target value="PC"/>
</startconditions>
<setproperties>
<firsttarget value="TARGET"/>
<firsttargetrange value="2"/>
<targetrange value="ONLYONE"/>
<targetrelation value="FRIEND"/>
</setproperties>
<useconditions>
<playermove allow="false"/>
</useconditions>
<effects>
<statup duration="1800000" effectid="198071" e="1">
<change stat="REGEN_FP" func="PERCENT" delta="0" value="25"/>
</statup>
</effects>
</skill_template>


но вот с атакующими не получается чтото Те что идут во время осады и действуют отрицательно или положительно для той или иной рассы.

ALeKsIuS 02.05.2011 09:56

Re: Редактирование скилов
 
В контролере нужно реализовать что если артом владеют асмы он бьет элов и наоборот. А также связать с zone так как они бьют по острову.

Sardonika 02.05.2011 18:05

Re: Редактирование скилов
 
ну а ято это за строка тогда подробней обьясни//
Помимо того что он не активируется почему то как де баф на рассы или баф так еще скила нет нет отображения того что активируешь в игре ну просто не показывает это ну как как настроить дайте пример любой любой который идет на отаку к примеру skill 12047 1-----дыхание небес или skill 12046 1-----шторм бездны

flashman 02.05.2011 20:31

Re: Редактирование скилов
 
Анимация активации артефакта и применение эфекта от скила это разные вещи, я пока не решал проблему с анимацией артефактов , но тут какбы ясно что нужны нужные :) пакеты .
А на счёт активации скилов, то в ядре уже есть задаток для этого дела в классе ArtifactController .

MrSchatteN 10.06.2011 11:32

Re: Редактирование скилов
 
Цитата:

Сообщение от Horizon (Сообщение 112372)
А тут что в эффекте написано? не понял=(

Код:

        <skill_template skill_id="1794" name="STR_SKILL_EL_Order_Sacrifice_G1" nameId="584623" stack="SKILL_EL_ORDER_SACRIFICE" lvl="1" skilltype="MAGICAL" skillsubtype="NONE" tslot="NONE" activation="ACTIVE" cooldown="6000" duration="0">
                <setproperties>
                        <firsttarget value="ME"/>
                        <firsttargetrange value="25"/>
                        <targetrange value="ONLYONE"/>
                        <targetrelation value="FRIEND"/>
                </setproperties>
                <effects>
                        <petorderuseultraskill ultra_skill="11" e="1" hoptype="SKILLLV" hopb="2199"/>
                </effects>
        </skill_template>


а что означает hopb="2199"? и что такое hopa?

Валерий 21.07.2011 12:06

Re: Редактирование скилов
 
Кто может помоч , поставил бафера на сервак всё нормально работает, не перекидывается баф, в чём может быть проблемма ?


Текущее время: 23:20. Часовой пояс GMT +3.

Powered by vBulletin® Version 3.8.6
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot