PDA

Просмотр полной версии : В каком поле передается SpellPower пета?


rsa
16.09.2010, 16:48
Сабж.
Раньше мне казалось что в UNIT_FIELD_RANGED_ATTACK_POWER но что-то натурные эксперименты результата не дают...
Такой же вопрос про SpellDamage.

LordJZ
16.09.2010, 17:19
PLAYER_FIELD_MOD_DAMAGE_DONE_POS + spellSchool
PLAYER_FIELD_MOD_HEALING_DONE_POS

rsa
16.09.2010, 18:23
Упс... У пета есть поля плеера? Это для меня открытие... Или это про хозяина? Тогда неверно...

LordJZ
16.09.2010, 19:16
Это про хозяина. См. GetBaseSpellPowerBonus

rsa
16.09.2010, 20:14
Нет. От этих значений бонус пета _рассчитывается_, через скалинг-систему (сделал я ее наконец почти прямо и без явных хаков и хардкодинга, мать...). А вот передается это рассчитанное значение обратно игроку вместе со статами, в каком-то из UNIT-полей. А вот в каком...

LordJZ
16.09.2010, 20:18
Я же сказал, это хозяиновский spell power

rsa
16.09.2010, 20:21
Ну войди локом в игру. У хозяина повер есть, у пета нет. Так что нифига.

LordJZ
16.09.2010, 20:28
Хорошо, еще раз:
PLAYER_FIELD_MOD_DAMAGE_DONE_POS + spellSchool
PLAYER_FIELD_MOD_HEALING_DONE_POS... Или это про хозяина? ...Это про хозяина. ...

Наверное, я не совсем очевидно выразился.

Vladimir
16.09.2010, 21:27
rsa спрашивает как spell power пета показывается в клиенте, каким полем, правильно? Не рассчитывается.

Должно в
UNIT_FIELD_ATTACK_POWER = OBJECT_END + 0x0075, // Size: 1, Type: INT, Flags: PRIVATE, OWNER
UNIT_FIELD_ATTACK_POWER_MODS = OBJECT_END + 0x0076, // Size: 1, Type: TWO_SHORT, Flags: PRIVATE, OWNER
UNIT_FIELD_ATTACK_POWER_MULTIPLIER = OBJECT_END + 0x0077, // Size: 1, Type: FLOAT, Flags: PRIVATE, OWNER
UNIT_FIELD_RANGED_ATTACK_POWER = OBJECT_END + 0x0078, // Size: 1, Type: INT, Flags: PRIVATE, OWNER
UNIT_FIELD_RANGED_ATTACK_POWER_MODS = OBJECT_END + 0x0079, // Size: 1, Type: TWO_SHORT, Flags: PRIVATE, OWNER
UNIT_FIELD_RANGED_ATTACK_POWER_MULTIPLIER = OBJECT_END + 0x007A, // Size: 1, Type: FLOAT, Flags: PRIVATE, OWNER


Может что=но из них неправильно высталяется. Особенно *ATTACK_POWER_MULTIPLIER может повлиять...

rsa
16.09.2010, 21:34
Сейчас они неправильно выставляются.
Поля UNIT_FIELD_ATTACK_POWER* я уже зарядил, там все верно. Но моя попытка выплюнуть спеллповер пета в
UNIT_FIELD_RANGED_ATTACK_POWER*
Не приводит пока ни к чему (в клиенте как торчал 0 так и торчит). Может я что-то неправильно делаю?

Vladimir
16.09.2010, 21:41
green/red бонусы идут в UNIT_FIELD_*_ATTACK_POWER_MODS

И я не понимаю зачем вам поля, если они уже выставляются в текущем коде...
Вам UNIT_MOD_ATTACK_POWER_RANGED UNIT_MOD_ATTACK_POWER высталять надо

update-поля пересчитываются на основе данных UNIT_MOD_ATTACK_POWER_RANGED UNIT_MOD_ATTACK_POWER

rsa
16.09.2010, 22:04
Упс... А они пересчитываются именно по аурам мод_спеллповер? Дело в том что я моды сам ручками не ставлю, я кладу ауры как на оффе. Но до установки базепойнтов именно этим аурам я еще не доехал, возможно то что я (для теста) ставил прямо в поле переписывалось нулем из аур?

LordJZ
16.09.2010, 22:07
Посниффал. Все оказалось просто: обновление PLAYER_PET_SPELL_POWER приходит при первом суммоне пета и потом изменяется.

Vladimir
16.09.2010, 23:58
Упс... А они пересчитываются именно по аурам мод_спеллповер? Дело в том что я моды сам ручками не ставлю, я кладу ауры как на оффе. Но до установки базепойнтов именно этим аурам я еще не доехал, возможно то что я (для теста) ставил прямо в поле переписывалось нулем из аур?

Конечно - смотрите как другие UNIT_MOD_* делаются в коде аур.
Если update-поля выставлять явно то следующив вызово для unit_mo* они сбросятся.

rsa
17.09.2010, 12:15
Все. I made it :) Петы получают честный спеллбонус через ауры, клиент его отлично показывает, хак чистого ядра с pet->GetBonusDamage() прибит нафиг.
Поля UNIT_*_RANGED никакого отношения к спеллповеру/спеллдамаге не имеют... И вообще для петов spellpower = spelldamage оказалось.
Тему можно закрывать.

--------------------
Тему закрыл. ES