Рейтинг темы:
  • 0 Голос(ов) - 0 в среднем
  • 1
  • 2
  • 3
  • 4
  • 5
Редактирование скилов
#11
Ответ
#12
О том как работает модель скила summonservant смотрите в ядре класс SummonServantEffect .
А то какие скилы кастуют эти самоны и так там видно:
PHP код:
<?php 
<summonservant skill_id="18953" hp_ratio="17" npc_id="749198" e="1" element="FIRE" hoptype="SKILLLV" hopb="2966"/>
тут видим такое skill_id="18953" , собсно самон юзает скил 18953 .
Skill
Дверь запили!
Ответ
#13
ааааааа,шикарно=)))спасибо огромное))))

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

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

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

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

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

PHP код:
<?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 код:
<?php 
<xs:element name="skillatk" type="SkillAttackEffect" minOccurs="0" maxOccurs="1"/>

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

PHP код:
<?php 
/**
* @author ATracer
*/
@XmlAccessorType(XmlAccessType.FIELD)
@
XmlType(name = "SkillAttackEffect")
public class
SkillAttackEffect extends DamageEffect {

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

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

PHP код:
<?php 
public void calculate(Effect effect, DamageType damageType) {
int skillLvl = effect.getSkillLevel();
int valueWithDelta = value + delta * skillLvl;
valueWithDelta = applyActionModifiers(effect, valueWithDelta);

// 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(effect, valueWithDelta);
break;
case
MAGICAL:
AttackUtil.calculateMagicalSkillAttackResult(effect, valueWithDelta, getElement());
break;
default:
AttackUtil.calculatePhysicalSkillAttackResult(effect, 0);
}

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

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

PHP код:
<?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)
x = 0.5f;
else if(
rnd > 0.25 && rnd <= 0.5)
x = 1.0f;
else if(
rnd > 0.5 && rnd <= 0.75)
x = 2.0f;
else if(
rnd > 0.75 && rnd < 1.0)
x = 2.5f;
valueWithDelta = Math.round(valueWithDelta * x);
break;
default:
break;
}

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

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

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

Спасибо за внимание Smile
Ответ
#15
Цитата:Куда вставлять свитч (если, конечно, вставлять) - до или после apply pvp damage ratio?
до ясен перец Smile .

Цитата:Т.е без этого SummonServantEffect скиллы не настроить??
Смотря что вы хотите настроить.
Дверь запили!
Ответ
#16
Всем Доброго время суто. У меня вопрос про написание скилов в арты Ведь есть бафы и те что атакуют . Так вот где в какой из строк это показанно .. И как настроить скил арта чтоб они активировались, Вот Дары все работают а на атакующие ни один подскажите ))) к примеру меня интерисует этот скил 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>


но вот с атакующими не получается чтото Те что идут во время осады и действуют отрицательно или положительно для той или иной рассы.
Ответ
#17
В контролере нужно реализовать что если артом владеют асмы он бьет элов и наоборот. А также связать с zone так как они бьют по острову.
Мы всё сделаем металлом! Чернее чернейшей черноты бесконечности! © Nathan Explotion
Работаю с Aion Java-emu, любой версии. skype: alexsiuss1
Ответ
#18
ну а ято это за строка тогда подробней обьясни//
Помимо того что он не активируется почему то как де баф на рассы или баф так еще скила нет нет отображения того что активируешь в игре ну просто не показывает это ну как как настроить дайте пример любой любой который идет на отаку к примеру skill 12047 1-----дыхание небес или skill 12046 1-----шторм бездны
Ответ
#19
Анимация активации артефакта и применение эфекта от скила это разные вещи, я пока не решал проблему с анимацией артефактов , но тут какбы ясно что нужны нужные Smile пакеты .
А на счёт активации скилов, то в ядре уже есть задаток для этого дела в классе ArtifactController .
Дверь запили!
Ответ
#20
Horizon Написал:А тут что в эффекте написано? не понял=(

Код:
    <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?
Ответ


Возможно похожие темы ...
Тема Автор Ответы Просмотры Последний пост
  AXE Фиксы скилов Horizon 3 3,234 03-11-2011, 11:18 PM
Последний пост: ruper
  редактирование телепортов.. KOMPoT 11 4,453 01-13-2011, 10:05 PM
Последний пост: KOMPoT
  автопрофа и авто изучение скилов korabok 8 9,366 07-28-2010, 01:53 PM
Последний пост: zaqwer
  Изменение названия скилов Maka 3 2,480 06-05-2010, 11:50 AM
Последний пост: [STIGMATED]
  Перемещение мобов и редактирование скиллов Piastr 17 8,477 05-03-2010, 01:38 PM
Последний пост: Polunochnic
  Редактирование клиента dahtict 10 5,574 04-28-2010, 03:56 PM
Последний пост: Romanz
  Редактирование скилов! ALeKsIuS 1 3,103 04-20-2010, 06:45 AM
Последний пост: ViAl
  Редактирование шмота zaqwer 3 2,824 02-28-2010, 02:08 AM
Последний пост: PEEERROGGGGG

Перейти к форуму:


Пользователи, просматривающие эту тему: 1 Гость(ей)