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

Форум администраторов игровых серверов (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)

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?


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

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