Начинающим разбираться в коде MaNGOS
Помню гдето был патч на комманду ст, при использование ее, когда ты дух, тебя телепортировало на близайщее кладбище, воскрещало и кидало
Собственно патч данный я не смог найти, решил сам написать Вроде все нормально при юзание комманды ст, он тп к кладбищу и воскрещается, но немогу реализовать добавление ауры (http://www.wowhead.com/?spell=15007) к персу, лазил в коде искал примеры, конкретного ничего не нашел(может и видел, но собственно незнаю как она зовется там) Кто знает прошу помочь |
Для начала стоит ссылочки указывать на wowhead, а не какой-то лан сайт :)
|
Цитата:
|
В скрипте СД2 использовал:
Код:
pPlayer->CastSpell(pPlayer,SPELL_ID,false); Работает, подставь свой спелл вместо SPELL_ID и проверь. |
Цитата:
chr->CastSpell(chr,15007,false); Не подскажите для чего в свойствах функции, последнее свойство, тру, фолс? |
Если не ошибаюсь, последний параметр отвечает за триггерность спелла, т.е. если спелл триггерный, то ставим true, иначе false.
|
virusav
Спасибо за оказанное время и помощь, вроде проект обучающий но помогаете один только вы Предлагаю тему переименовать в "Изучение кода мангоса", помнится такая была на предыдущем форуме и автор был ее Kirix, столько полезной инфы было в ней:sorry: Еще 1 вопрос что нужно подключить или прописать чтобы данный код работал PHP код:
|
Цитата:
потом прописывай эти хеадеры(*.h файлы) в своём .cpp файле |
А что, функции воскрешения отсутствует или она отделена от наложения маски воскрешения?
Сейчас на работе - под рукой нет исходников =) |
Цитата:
воскрешение прописано так Цитата:
getLevel, GetGUID, предполагаю они конкретно не определены в *.h файлах, а определяются при юзание опредленно какихто моментов если муть несу, то не пинайте пожалуйста, я пытаюсь понять неизвестное мне |
Код:
if(Aura * aur = GetAura(15007, EFFECT_INDEX_0)) |
использование функций GetAura() и getLevel() напрямую можно только в Player.cpp, Unit.cpp. Это аналогично this->getLevel(), this->GetAura(). В остальных случаях требуется игрок(или юнит), с которого мы получаем левел или ауру
Т.е Код:
plr->getLevel() |
Цитата:
Цитата:
Вот реализовал что хотел, в игре вроде все отлично работает, ошибок в коде нет? PHP код:
1.unit64,unit32,unit8 и тд, что значит это? и какая разница между ими? 2.Можно ли гдето в коде посмотреть описание функций? к примеру CastSpell(Обект на который будет задействовано,ИД спелла,Тригерность); |
Код:
// if player is dead and stuck, send ghost to graveyard 2. ЧТоб установить свою длительность ауры, надо установить макс. длительность а потом ее зарефрешить PS - каст маски 15007 лучше делать true, т.к true- означает триггерный спелл, кастуется инстантом, не требуя ни энергии(маны, ярости и т.д), ни реагентов, игонря любые эффекты LOS Код:
chr->CastSpell(chr,15007,true); uint8, uint16, uint32, uint64 - unsigned int, беззнаковый целочисленный тип, цифра - битовость беззнаковый - биты могут быть либо 0, либо положительными, за счет отрицательных значений мы вдвое расширяем диапазон, uint32 - 0 to 65536 Это обьясняет и любимый всеми баг с уходом спд в минус и появлятся 65536 при значении < 0 |
Подскажите еще 2 функции
1. На проверку у персонажа итема пробовал так GetItemByEntry(entry); либо нето либо не догнал как прописать 2. На удаление Итема у персонажа также пробовал RemoveItem но не догоняю почему при комплиляции ему ненравится она:resent: По первому вопросу нашел ответ на форуме |
Цитата:
2. Цитата:
Код:
void Player::RemoveItem( uint8 bag, uint8 slot, bool update ) |
Цитата:
Код:
if( IsInWorld() && update ) Цитата:
Код:
enum SpellEffectIndex Цитата:
Цитата:
Но самый эффективный вариант (имхо) - просмотр кода. CastSpell - перегруженный метод, имеющий 4 разных перегрузки. Используемая нами: Код:
void CastSpell(float x, float y, float z, uint32 spellId, bool triggered, Item *castItem = NULL, Aura* triggeredByAura = NULL, uint64 originalCaster = 0); А вообще для лучшего понимания кода, советую пройтись по иерархии классов сущностей. Начиная с Object и вниз. А если вы пользуетесь ВС, то советую сделать следующее: правой кнопкой мыши по проекту game, в выпадающем меню выбираем "Перейти к схеме классов", ВС немного потупит, но в конце концов успешно создаст схему. |
Простите, а что такое тригерность?
Слово слышу очень давно, но до сих пор не разобрался с этим понятием. :( С английского языка, естественно (если глагол), переводится как вызывать. Поясните, пожалуйста, добрые человеки :( Спасибо, Anti! Выручил :) |
Цитата:
|
При осмотре кода Scriptdev увидел такую функцию void ScriptsFree(),
Код:
void ScriptsFree() Код:
delete []SpellSummary; |
Цитата:
Обычное удаление динамического массива. |
Насколько я понимаю по коду, триггерные спеллы не требуют реагентов и энергии, кастятся без учета ЛОС, и видимо инстант
|
Подскажите как правильно удалить итем
не могу разобраться с RemoveItem |
Код:
RemoveItem(мешок, слот,Обновлять ли состояние игрока для самомго игрока или нет) |
Возникает еще один вопрос
Как определить в каком мешке, слоту лежит итем? |
Я код мангоса плохо знаю, но можно так, через цикл, сделать проверку на определенный итим.
|
Цитата:
|
Есть ли на данный момент у ГО поддержка функции Update(), как у мобов?
|
Цитата:
Код:
void GameObject::Update(uint32 /*p_time*/) |
|
Интересует, как правильно деспавнить ГО в инсте. Например Скорбь в залах, когда её Артас забирает.
|
Цитата:
http://github.com/rsa/scriptdev2/blo...e_crusader.cpp Смотрите скрипт Артоса, он там ломает пол. |
Цитата:
|
Цитата:
|
Нужно реализовать таймер в го, чтобы например он каждые 20 секунд выполнял на себя определенный метод. С тригерными нпц не особо охото мучацо, да и не близзлайк это наверное.
ЗЫ: Какими махинациями можно сделать неюзабельный го юзабельным?) |
Цитата:
стамим ГО флаг = 4 - после удаляем (например скриптом). |
Цитата:
|
Я тоже имел его ввиду :)
Вроде можно делать через базу, но я предпочитаю через С++ скрипт делать. В скрипте инста будет примерно такая штука: Код:
setData(uint32 case,uint32 data) Скриптуем моба тоже через С++. И как он умирает и отсылает данные в скрипт инста, тут то мы и делаем ГО юзабильным. |
Пара спеллов:
http://ru.wowhead.com/spell=38736 http://ru.wowhead.com/spell=57853 Проблема в следующем - при юзе итема, на котором они висят, они кастуются, но триггера спелла, висящего на них, не происходит. Не могу понять куда копать... Есть идеи? |
Текущее время: 04:54. Часовой пояс GMT +3. |
ru-mangos.ru - Русское сообщество MaNGOS