Как работать с питомцами

Формат: XML
Местонахождение: data/stats/pets/
Файл: pet_data.xml
Схема: pet_data.dtd

Возьмем для примера Wolf пета и разберем его поля:
XML:
<pet id="12077" max_lvl="81"> <!-- Wolf -->
        <set name="control_item_id" value="2375"/>
        <set name="food_item_id" value="2515"/>
        <set name="is_wolf" value="true" />
        <set name="min_level" value="1"/>
        <set name="exp" value="0 636 798 1236 2158 3836 6598 10836 16998 25596 37198 52436 71998 96636 127158 164436 209398 263036 326398 400596 486798 586236 700198 830036 977158 1143036 1329198 1537236 1768798 2025596 2309398 2622036 2965398 3341436 3752158 4199636 4685998 5213436 5784198 6400596 7064998 7779836 8547598 9370836 10252158 11194236 12199798 13271636 14412598 15625596 17557599 19606656 21777399 24074556 26502939 29922294 33529819 37332294 41336619 45549814 52193622 59172334 66497022 74178934 82229502 93470612 105234462 117537012 130394462 143823252 157840062 176117249 198983024 226778887 259859867 298594764 352320714 412836202 480562077 555934039 639402879"/>
        <set name="hp" value="31 37 45 53 63 73 85 98 113 128 146 157 169 182 195 208 223 238 254 270 287 305 324 343 364 385 406 429 453 477 502 528 554 582 610 639 669 700 731 763 796 830 864 899 935 971 1008 1045 1084 1122 1161 1201 1240 1281 1321 1362 1403 1444 1485 1527 1568 1609 1651 1692 1732 1773 1813 1853 1892 1931 1969 2006 2043 2079 2114 2148 2182 2214 2245 2275 2304"/>
        <set name="hp_regen" value="2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 3 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 6 6 6 6 7 7 7 7 7 7 7 7 7 7 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 9"/>
        <set name="mp" value="25 30 34 39 44 49 54 59 64 69 74 79 84 90 95 100 106 111 117 122 131 139 148 157 165 174 183 192 201 210 220 229 238 248 257 267 276 286 296 306 323 339 356 373 390 408 425 443 460 478 496 514 532 551 569 588 606 625 644 663 682 702 721 741 760 780 800 820 840 861 881 902 923 944 964 986 1007 1028 1050 1071 1073"/>
        <set name="mp_regen" value="1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 4"/>
        <set name="p_atk" value="2 2 2 2 3 3 3 4 4 4 5 5 6 6 11 12 12 13 14 15 15 16 17 19 20 21 22 24 25 27 28 30 32 34 36 38 40 43 45 48 50 53 56 59 62 66 69 72 76 80 84 88 92 96 101 105 110 114 119 124 129 134 139 144 149 154 160 165 170 176 181 186 192 197 202 207 212 217 222 227 228"/>
        <set name="p_def" value="11 11 11 12 12 13 13 14 14 15 16 16 17 17 27 28 28 29 30 30 31 32 32 33 34 35 36 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 59 60 61 62 63 64 66 67 68 69 70 72 73 74 75 76 78 79 80 81 82 84 85 86 87 88 89 91 92 93 94 95"/>
        <set name="m_atk" value="1 1 1 1 2 2 2 2 3 3 3 3 4 4 5 5 5 6 6 7 8 8 9 10 11 11 12 13 14 15 16 18 19 20 22 23 25 26 28 30 31 33 35 37 40 42 44 47 49 52 54 57 60 63 66 69 72 75 78 82 85 88 92 95 99 103 106 110 113 117 121 124 128 132 135 139 142 146 149 152 153"/>
        <set name="m_def" value="8 8 8 9 9 9 10 10 10 11 11 12 12 13 13 13 14 14 15 15 16 16 17 18 18 19 19 20 21 21 22 22 23 24 25 25 26 27 27 28 29 30 30 31 32 33 34 34 35 36 37 38 39 40 40 41 42 43 44 45 46 47 47 48 49 50 51 52 53 54 55 55 56 57 58 59 60 60 61 62 63"/>
        <set name="accuracy" value="38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118"/>
        <set name="evasion" value="33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113"/>
        <set name="critical" value="40"/>
        <set name="speed" value="137"/>
        <set name="atk_speed" value="282"/>
        <set name="cast_speed" value="333"/>
        <set name="feed_max" value="248 244 320 400 512 624 704 808 872 948 1160 1168 1160 1160 1160 1148 1140 1132 1124 1116 1480 1512 1468 1552 1572 1604 1616 1644 1664 1684 2116 2172 2236 2288 2348 2408 2464 2520 2580 2636 3168 3236 3308 3380 3452 3524 3592 3668 3740 3596 4244 4364 4484 4600 4532 4672 4804 4932 5060 4928 5716 5892 6064 6228 6176 6368 6556 6740 6924 7108 7388 7688 7956 8196 8428 8704 8916 9124 9340 9552 9552"/>
        <set name="feed_normal" value="2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 4 4 4 4 4 5 5 5 5 5 5 5 6 6 5 7 7 7 7 7 7 8 8 8 8 9 9 10 10 10 10 10 11 11 11 12 12 13 13 14 14 14 15 15 15 15"/>
        <set name="feed_battle" value="2 2 2 3 4 5 5 6 7 7 9 9 9 9 9 9 9 9 9 9 12 12 12 12 13 13 13 13 13 14 17 18 18 19 19 20 20 21 21 21 26 26 27 28 28 29 29 30 31 29 35 36 37 38 37 38 40 41 42 41 47 49 50 51 51 53 54 56 57 59 61 64 66 68 70 72 74 76 77 79 79"/>
        <set name="max_load" value="0"/>
        <set name="add_feed" value="12"/>
        <set name="exp_penalty" value="0.30"/>
        <set name="soulshots" value="2"/>
        <set name="spiritshots" value="2"/>
    </pet>
Заголовок:
<pet id="12077" max_lvl="81"> <!-- Wolf -->
id - ID конкретного питомца который будет призываться
max_lvl - максимальный уровень который может получить питомец. 81 - это 80 уровень и 100% экспы.
Тело:
control_item_id - предмет помощью которого будет призываться питомец
food_item_id - предмет которым будет потреблять в виде еды для данного питомца
is_wolf - к какому типу принадлежит питомец. Набор всех типов: is_baby_pet, is_wolf, is_great_wolf, is_hatchling,is_improved_baby_pet, is_strider, is_wyvern, is_improved_baby_buffalo, is_improved_baby_cougar, is_improved_baby_kookaburra
min_level - минимальный уровень питомца которого он может достичь. По умолчанию минимальный уровень питомца берется из data/npc
exp - таблица опыта для получения следующего уровня питомца
hp - таблица здоровья по уровню питомца
hp_regen - таблица регенерации здоровья по уровню питомца
mp - таблица маны по уровню питомца
mp_regen - таблица регенерации маны по уровню питомца
p_atk - таблица физической атаки по уровню питомца
p_def - таблица физической защиты по уровню питомца
m_atk - таблица магической атаки по уровню питомца
m_def - таблица магической защиты по уровню питомца
accuracy - таблица точности нанесения урона по уровню питомца
evasion - таблица уворота от нанесения урона по уровню питомца
critical - таблица шанса критической атаки по уровню питомца
speed - таблица скорости передвижения по уровню питомца
atk_speed - таблица скорости физической атаки по уровню питомца
cast_speed - таблица скорости машичеслкй атаки по уровню питомца
feed_max - таблица максимального потребления шкалы еды для питомца по уровням
feed_normal - таблица потребления шкалы еды питомцем в нормальном состоянии - бег, афк и так далее
feed_battle - таблица потребления шкалы еды когда питомец находится в боевом состоянии
max_load - модификатор переносимого веса питомцем. По умолчанию калькулируется формулой той же что и у игрока.
add_feed - сколько едениц шкалы еды будет добавлена при использовании food_item_id
exp_penalty - какой процент будет потреблять питомце он полученного опыта игрока. По умолчанию 0.30 что является 30%
soulshots - количество потребляемый физических зарядов духа
spiritshots - количество потребляемый магических зарядов духа

Теперь переходим к умениям питомцев и их action Id который находится в игровом клиенте
Для примера берем Hatchling of Wind
Code:
        <skills>
            <skill id="4710" level="0" min_lvl="1" action_id="1003"/>
            <skill id="4711" level="0" min_lvl="1" action_id="1004"/>
        </skills>
Где id способности (скила) 4710 и уровень level="0" и min_level - минимальный уровень питомца присоединён к action id 1003 который приращен в игровом клиенте в файле actionname-e.dat появляется в панели умений питомца.
Когда вы устанавливаете level="0" сервер автоматически пересчитывает уровень выдаваемого скила из расчета уровня питомца. На каждый 10 уровень если он не достиг 70 уровня выдается 1 уровень умения, после 70 уровня, расчет идет на каждый 5 уровень питомца + 1 уровень умения (по офу).
Но вам не обязательно выставлять уровень 0, вы можете описать всю таблицу умения относительно level="Что то свое" непосредственно питомца.
Видео гайд как добавлять свои действия для Интерлюд:


В данный момент вся система питомцем и призываемых существа максимально вынесена из кода и теперь вы можете добавлять любой тип и вид и их навыки не описывая скриптами или написанием своих экстеншенов.
Если будут вопросы - прошу задавать, если что забыл - буду дополнять.
 
Last edited:
<skill id="5740" levels="1" name="Recovery Pet">
<!-- NOT EXISTS -->
<set name="magicType" val="MAGIC"/>
<set name="icon" val="icon.skill0000"/>
<set name="magicLevel" val="99"/>
<set name="castRange" val="900"/>
<set name="target" val="TARGET_NONE"/>
<set name="skillType" val="NOTDONE"/>
<set name="operateType" val="OP_ACTIVE"/>
</skill>
 
<skill id="5740" levels="1" name="Recovery Pet">
<!-- NOT EXISTS -->
<set name="magicType" val="MAGIC"/>
<set name="icon" val="icon.skill0000"/>
<set name="magicLevel" val="99"/>
<set name="castRange" val="900"/>
<set name="target" val="TARGET_NONE"/>
<set name="skillType" val="NOTDONE"/>
<set name="operateType" val="OP_ACTIVE"/>
</skill>
Ничего не смущает?)
Аххааххахахахах
 
Имею проблему с юзом скилла добавленного суммону (пету)
<npc id="28000" name="Baby Antharas" title="">
<set name="aggroRange" value="0"/>
<set name="ai_type" value="CharacterAI"/>
<set name="baseAtkRange" value="40"/>
<set name="baseCON" value="43"/>
<set name="baseCritRate" value="40"/>
<set name="baseDEX" value="30"/>
<set name="baseHpMax" value="3066.6353"/>
<set name="baseHpRate" value="1"/>
<set name="baseHpReg" value="8.5"/>
<set name="baseINT" value="21"/>
<set name="baseMAtk" value="678"/>
<set name="baseMAtkSpd" value="333"/>
<set name="baseMDef" value="266"/>
<set name="baseMEN" value="25"/>
<set name="baseMpMax" value="1870"/>
<set name="baseMpReg" value="3"/>
<set name="basePAtk" value="994"/>
<set name="basePAtkSpd" value="253"/>
<set name="basePDef" value="364"/>
<set name="baseRunSpd" value="177"/>
<set name="baseSTR" value="40"/>
<set name="baseShldDef" value="0"/>
<set name="baseShldRate" value="0"/>
<set name="baseWIT" value="20"/>
<set name="baseWalkSpd" value="27"/>
<set name="collision_height" value="52"/>
<set name="collision_radius" value="0"/>
<set name="level" value="81"/>
<set name="rewardExp" value="0"/>
<set name="rewardRp" value="0"/>
<set name="rewardSp" value="0"/>
<set name="shots" value="NONE"/>
<set name="texture" value=""/>
<set name="type" value="Pet"/>
<ai_params>
<set name="TargetEnabled" value="false"/>
</ai_params>
<skills>
<skill id="4121" level="9"/>
<!--Summoned Monster Magic Protection-->
<skill id="4408" level="1"/>
<!--HP Increase (1x)-->
<skill id="4409" level="1"/>
<!--MP Increase (1x)-->
<skill id="4410" level="11"/>
<!--Average P. Atk.-->
<skill id="4411" level="11"/>
<!--Average M. Atk.-->
<skill id="4412" level="11"/>
<!--Average P. Def.-->
<skill id="4413" level="11"/>
<!--Average M. Def.-->
<skill id="4414" level="2"/>
<!--Standard Type-->
<skill id="4415" level="3"/>
<!--One-handed Sword-->
<skill id="4416" level="7"/>
<!--Spirits-->
</skills>
<attributes>
<defence attribute="fire" value="0"/>
<defence attribute="water" value="0"/>
<defence attribute="wind" value="0"/>
<defence attribute="earth" value="0"/>
<defence attribute="holy" value="0"/>
<defence attribute="unholy" value="0"/>
</attributes>
</npc>
Всё что нужно в клиент добавлено, пет отображается, вызывается, проблем нет. (добавил через скилл, скилл прикрутил на итем)
<skill id="9950" levels="1" name="Salvation">
<set name="magicType" val="MAGIC"/>
<set name="icon" val="icon.skill1410"/>
<set name="reuseDelay" val="1800000"/>
<set name="magicLevel" val="79"/>
<set name="castRange" val="400"/>
<set name="hitTime" val="4000"/>
<set name="hitCancelTime" val="500"/>
<set name="mpConsume1" val="17"/>
<set name="mpConsume2" val="70"/>
<set name="itemConsumeId" val="8874"/>
<set name="itemConsumeCount" val="2"/>
<set name="target" val="TARGET_PARTY"/>
<set name="skillType" val="BUFF"/>
<set name="cancelable" val="false"/>
<set name="operateType" val="OP_ACTIVE"/>
<set name="isReuseDelayPermanent" val="true"/>
<for>
<effect count="1" name="Salvation" stackOrder="0" stackType="Salvation" time="3600" val="0">
<!-- <def name="expireResurrectTime" val="60000"/> -->
</effect>
</for>
</skill>
Скилл добавлен, в интерфейсе пета отображается. Скилл скопировал оригинал, с изменённым значением баффа для пати.
Но почему-то скилл не юзается. Где я мог что-то упустить?
 
Last edited:
Имею проблему с юзом скилла добавленного суммону (пету)
<npc id="28000" name="Baby Antharas" title="">
<set name="aggroRange" value="0"/>
<set name="ai_type" value="CharacterAI"/>
<set name="baseAtkRange" value="40"/>
<set name="baseCON" value="43"/>
<set name="baseCritRate" value="40"/>
<set name="baseDEX" value="30"/>
<set name="baseHpMax" value="3066.6353"/>
<set name="baseHpRate" value="1"/>
<set name="baseHpReg" value="8.5"/>
<set name="baseINT" value="21"/>
<set name="baseMAtk" value="678"/>
<set name="baseMAtkSpd" value="333"/>
<set name="baseMDef" value="266"/>
<set name="baseMEN" value="25"/>
<set name="baseMpMax" value="1870"/>
<set name="baseMpReg" value="3"/>
<set name="basePAtk" value="994"/>
<set name="basePAtkSpd" value="253"/>
<set name="basePDef" value="364"/>
<set name="baseRunSpd" value="177"/>
<set name="baseSTR" value="40"/>
<set name="baseShldDef" value="0"/>
<set name="baseShldRate" value="0"/>
<set name="baseWIT" value="20"/>
<set name="baseWalkSpd" value="27"/>
<set name="collision_height" value="52"/>
<set name="collision_radius" value="0"/>
<set name="level" value="81"/>
<set name="rewardExp" value="0"/>
<set name="rewardRp" value="0"/>
<set name="rewardSp" value="0"/>
<set name="shots" value="NONE"/>
<set name="texture" value=""/>
<set name="type" value="Pet"/>
<ai_params>
<set name="TargetEnabled" value="false"/>
</ai_params>
<skills>
<skill id="4121" level="9"/>
<!--Summoned Monster Magic Protection-->
<skill id="4408" level="1"/>
<!--HP Increase (1x)-->
<skill id="4409" level="1"/>
<!--MP Increase (1x)-->
<skill id="4410" level="11"/>
<!--Average P. Atk.-->
<skill id="4411" level="11"/>
<!--Average M. Atk.-->
<skill id="4412" level="11"/>
<!--Average P. Def.-->
<skill id="4413" level="11"/>
<!--Average M. Def.-->
<skill id="4414" level="2"/>
<!--Standard Type-->
<skill id="4415" level="3"/>
<!--One-handed Sword-->
<skill id="4416" level="7"/>
<!--Spirits-->
</skills>
<attributes>
<defence attribute="fire" value="0"/>
<defence attribute="water" value="0"/>
<defence attribute="wind" value="0"/>
<defence attribute="earth" value="0"/>
<defence attribute="holy" value="0"/>
<defence attribute="unholy" value="0"/>
</attributes>
</npc>
Всё что нужно в клиент добавлено, пет отображается, вызывается, проблем нет. (добавил через скилл, скилл прикрутил на итем)
<skill id="9950" levels="1" name="Salvation">
<set name="magicType" val="MAGIC"/>
<set name="icon" val="icon.skill1410"/>
<set name="reuseDelay" val="1800000"/>
<set name="magicLevel" val="79"/>
<set name="castRange" val="400"/>
<set name="hitTime" val="4000"/>
<set name="hitCancelTime" val="500"/>
<set name="mpConsume1" val="17"/>
<set name="mpConsume2" val="70"/>
<set name="itemConsumeId" val="8874"/>
<set name="itemConsumeCount" val="2"/>
<set name="target" val="TARGET_PARTY"/>
<set name="skillType" val="BUFF"/>
<set name="cancelable" val="false"/>
<set name="operateType" val="OP_ACTIVE"/>
<set name="isReuseDelayPermanent" val="true"/>
<for>
<effect count="1" name="Salvation" stackOrder="0" stackType="Salvation" time="3600" val="0">
<!-- <def name="expireResurrectTime" val="60000"/> -->
</effect>
</for>
</skill>
Скилл добавлен, в интерфейсе пета отображается. Скилл скопировал оригинал, с изменённым значением баффа для пати.
Но почему-то скилл не юзается. Где я мог что-то упустить?
Может проблема в этом?
<set name="itemConsumeId" val="8874"/>
<set name="itemConsumeCount" val="2"/>
Попробуй убери эти 2 строки
 
посмотри как бафы кота коня сделаны, мб поможет, или копируй их
 
<skills>
<skill id="4121" level="9"/>
<!--Summoned Monster Magic Protection-->
<skill id="4408" level="1"/>
<!--HP Increase (1x)-->
<skill id="4409" level="1"/>
<!--MP Increase (1x)-->
<skill id="4410" level="11"/>
<!--Average P. Atk.-->
<skill id="4411" level="11"/>
<!--Average M. Atk.-->
<skill id="4412" level="11"/>
<!--Average P. Def.-->
<skill id="4413" level="11"/>
<!--Average M. Def.-->
<skill id="4414" level="2"/>
<!--Standard Type-->
<skill id="4415" level="3"/>
<!--One-handed Sword-->
<skill id="4416" level="7"/>
<!--Spirits-->
</skills>
А где твой скилл у пета?
 
А где твой скилл у пета?
Так он по гайду не в нпц добавляется, а в Местонахождение: data/stats/pets/, как я понял. Там соответсвенно я прописал нпц и ему скилл
 
Так он по гайду не в нпц добавляется, а в Местонахождение: data/stats/pets/, как я понял. Там соответсвенно я прописал нпц и ему скилл
Попробуй и сюда добавить
 
Back
Top