|
Языки программирования Изучаем С++, Sql, php, Lua, Python |
|
Опции темы | Поиск в этой теме | Опции просмотра |
09.03.2010, 13:15 | #1 |
Новичок
Регистрация: 07.03.2010
Сообщений: 11
Сказал(а) спасибо: 18
Поблагодарили 2 раз(а) в 1 сообщении
|
Начинающим разбираться в коде MaNGOS
Помню гдето был патч на комманду ст, при использование ее, когда ты дух, тебя телепортировало на близайщее кладбище, воскрещало и кидало
Собственно патч данный я не смог найти, решил сам написать Вроде все нормально при юзание комманды ст, он тп к кладбищу и воскрещается, но немогу реализовать добавление ауры (http://www.wowhead.com/?spell=15007) к персу, лазил в коде искал примеры, конкретного ничего не нашел(может и видел, но собственно незнаю как она зовется там) Кто знает прошу помочь Последний раз редактировалось Wish; 09.03.2010 в 13:21. |
09.03.2010, 13:20 | #2 |
Модератор
Регистрация: 07.03.2010
Сообщений: 57
Сказал(а) спасибо: 5
Поблагодарили 13 раз(а) в 8 сообщениях
|
Для начала стоит ссылочки указывать на wowhead, а не какой-то лан сайт
|
09.03.2010, 13:23 | #3 |
Новичок
Регистрация: 07.03.2010
Сообщений: 11
Сказал(а) спасибо: 18
Поблагодарили 2 раз(а) в 1 сообщении
|
|
10.03.2010, 04:47 | #5 | |
Новичок
Регистрация: 07.03.2010
Сообщений: 11
Сказал(а) спасибо: 18
Поблагодарили 2 раз(а) в 1 сообщении
|
Цитата:
chr->CastSpell(chr,15007,false); Не подскажите для чего в свойствах функции, последнее свойство, тру, фолс? |
|
10.03.2010, 11:35 | #7 |
Новичок
Регистрация: 07.03.2010
Сообщений: 11
Сказал(а) спасибо: 18
Поблагодарили 2 раз(а) в 1 сообщении
|
virusav
Спасибо за оказанное время и помощь, вроде проект обучающий но помогаете один только вы Предлагаю тему переименовать в "Изучение кода мангоса", помнится такая была на предыдущем форуме и автор был ее Kirix, столько полезной инфы было в ней Еще 1 вопрос что нужно подключить или прописать чтобы данный код работал PHP код:
|
10.03.2010, 12:43 | #8 | |
Умный
Старожил
Регистрация: 06.03.2010
Сообщений: 886
Сказал(а) спасибо: 698
Поблагодарили 433 раз(а) в 181 сообщениях
Записей в дневнике: 4
|
Цитата:
2) Спасибо что напомнили о хорошей теме. Ваше пожелание учтено |
|
Пользователь сказал cпасибо: | Wish (10.03.2010) |
10.03.2010, 12:44 | #9 | |
MaNGOS Dev
Регистрация: 08.03.2010
Адрес: Ханты-Мансийск
Сообщений: 28
Сказал(а) спасибо: 27
Поблагодарили 13 раз(а) в 8 сообщениях
|
Цитата:
потом прописывай эти хеадеры(*.h файлы) в своём .cpp файле |
|
10.03.2010, 13:00 | #10 |
Умный
Старожил
Регистрация: 06.03.2010
Сообщений: 886
Сказал(а) спасибо: 698
Поблагодарили 433 раз(а) в 181 сообщениях
Записей в дневнике: 4
|
А что, функции воскрешения отсутствует или она отделена от наложения маски воскрешения?
Сейчас на работе - под рукой нет исходников Последний раз редактировалось KiriX; 10.03.2010 в 13:28. |
10.03.2010, 13:10 | #11 | ||
Новичок
Регистрация: 07.03.2010
Сообщений: 11
Сказал(а) спасибо: 18
Поблагодарили 2 раз(а) в 1 сообщении
|
Цитата:
воскрешение прописано так Цитата:
getLevel, GetGUID, предполагаю они конкретно не определены в *.h файлах, а определяются при юзание опредленно какихто моментов если муть несу, то не пинайте пожалуйста, я пытаюсь понять неизвестное мне Последний раз редактировалось Wish; 10.03.2010 в 14:28. |
||
2 пользователя(ей) сказали cпасибо: | KiriX (10.03.2010) |
10.03.2010, 14:15 | #12 |
Супер-модератор
Регистрация: 07.03.2010
Сообщений: 647
Сказал(а) спасибо: 100
Поблагодарили 252 раз(а) в 123 сообщениях
|
Код:
if(Aura * aur = GetAura(15007, EFFECT_INDEX_0)) |
10.03.2010, 17:42 | #13 |
Модератор
|
использование функций GetAura() и getLevel() напрямую можно только в Player.cpp, Unit.cpp. Это аналогично this->getLevel(), this->GetAura(). В остальных случаях требуется игрок(или юнит), с которого мы получаем левел или ауру
Т.е Код:
plr->getLevel() plr->GetAura(..) |
Пользователь сказал cпасибо: | Wish (10.03.2010) |
10.03.2010, 18:34 | #14 | ||
Новичок
Регистрация: 07.03.2010
Сообщений: 11
Сказал(а) спасибо: 18
Поблагодарили 2 раз(а) в 1 сообщении
|
Цитата:
Цитата:
Вот реализовал что хотел, в игре вроде все отлично работает, ошибок в коде нет? PHP код:
1.unit64,unit32,unit8 и тд, что значит это? и какая разница между ими? 2.Можно ли гдето в коде посмотреть описание функций? к примеру CastSpell(Обект на который будет задействовано,ИД спелла,Тригерность); Последний раз редактировалось Wish; 10.03.2010 в 18:50. |
||
10.03.2010, 18:45 | #15 |
Модератор
|
Код:
// if player is dead and stuck, send ghost to graveyard chr->RepopAtGraveyard(); chr->ResurrectPlayer(0.0f, false); int32 startLevel = sWorld.getConfig(CONFIG_DEATH_SICKNESS_LEVEL); if(int32(chr->getLevel()) >= startLevel) { // set resurrection sickness chr->CastSpell(chr,15007,false); // not full duration if(int32(chr->getLevel()) < startLevel+9) { int32 delta = (int32(chr->getLevel()) - startLevel + 1)*MINUTE; if(Aura * aur = chr->GetAura(15007, chr->GetGUID())) { aur->SetDuration(delta*IN_MILISECONDS); aur->SetAuraMaxDuration(delta * IN_MILISECONDS); aur->RefreshAura(); } } } return true; } // cast spell Stuck chr->RepopAtGraveyard(); return true; 2. ЧТоб установить свою длительность ауры, надо установить макс. длительность а потом ее зарефрешить PS - каст маски 15007 лучше делать true, т.к true- означает триггерный спелл, кастуется инстантом, не требуя ни энергии(маны, ярости и т.д), ни реагентов, игонря любые эффекты LOS Код:
chr->CastSpell(chr,15007,true); uint8, uint16, uint32, uint64 - unsigned int, беззнаковый целочисленный тип, цифра - битовость беззнаковый - биты могут быть либо 0, либо положительными, за счет отрицательных значений мы вдвое расширяем диапазон, uint32 - 0 to 65536 Это обьясняет и любимый всеми баг с уходом спд в минус и появлятся 65536 при значении < 0 Последний раз редактировалось MaS0n; 10.03.2010 в 18:58. |
4 пользователя(ей) сказали cпасибо: |
24.03.2010, 07:15 | #16 |
Новичок
Регистрация: 07.03.2010
Сообщений: 11
Сказал(а) спасибо: 18
Поблагодарили 2 раз(а) в 1 сообщении
|
Подскажите еще 2 функции
1. На проверку у персонажа итема пробовал так GetItemByEntry(entry); либо нето либо не догнал как прописать 2. На удаление Итема у персонажа также пробовал RemoveItem но не догоняю почему при комплиляции ему ненравится она По первому вопросу нашел ответ на форуме Последний раз редактировалось Wish; 24.03.2010 в 07:41. |
24.03.2010, 07:51 | #17 | ||
Гость
Сообщений: n/a
|
Цитата:
2. Цитата:
Код:
void Player::RemoveItem( uint8 bag, uint8 slot, bool update ) Последний раз редактировалось I fart; 24.03.2010 в 08:09. |
||
24.03.2010, 13:01 | #18 | ||
Пользователь
Регистрация: 12.03.2010
Адрес: Беларусь
Сообщений: 54
Сказал(а) спасибо: 8
Поблагодарили 24 раз(а) в 17 сообщениях
Записей в дневнике: 1
|
Цитата:
Код:
if( IsInWorld() && update ) pItem->SendCreateUpdateToPlayer( this ); Список индексов для спеллов лежит в DBCEnums.h Код:
enum SpellEffectIndex { EFFECT_INDEX_0 = 0, EFFECT_INDEX_1 = 1, EFFECT_INDEX_2 = 2 }; Цитата:
Но самый эффективный вариант (имхо) - просмотр кода. 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; 24.03.2010 в 13:07. |
||
Пользователь сказал cпасибо: | Shadez (31.03.2010) |
24.03.2010, 13:31 | #19 |
Ученый
|
Простите, а что такое тригерность?
Слово слышу очень давно, но до сих пор не разобрался с этим понятием. С английского языка, естественно (если глагол), переводится как вызывать. Поясните, пожалуйста, добрые человеки Спасибо, Anti! Выручил
__________________
Галя: Вот почему когда я пуск делаю и по ярлыку две то запускается, а если вот мне к примеру надо не из пуска её то ничего и в красном показывает, а надо ведь чтобы квадратик жёлтенький открывал и там 3 кнопки должно быть? admin: О Боже! admin: Кто-нибудь, пришлите ко мне уборщицу, пусть мой мозг со стен и потолка отмоет Последний раз редактировалось Hantet; 24.03.2010 в 13:52. |
24.03.2010, 18:46 | #21 |
Новичок
Регистрация: 24.03.2010
Сообщений: 25
Сказал(а) спасибо: 11
Поблагодарили 14 раз(а) в 7 сообщениях
Записей в дневнике: 6
|
При осмотре кода Scriptdev увидел такую функцию void ScriptsFree(),
Код:
void ScriptsFree() { // Free Spell Summary delete []SpellSummary; // Free resources before library unload for(int i=0; i<MAX_SCRIPTS; ++i) delete m_scripts[i]; num_sc_scripts = 0; } Код:
delete []SpellSummary; |
24.03.2010, 18:57 | #22 | |
Пользователь
Регистрация: 12.03.2010
Адрес: Беларусь
Сообщений: 54
Сказал(а) спасибо: 8
Поблагодарили 24 раз(а) в 17 сообщениях
Записей в дневнике: 1
|
Цитата:
Обычное удаление динамического массива. |
|
Пользователь сказал cпасибо: | MangMan (27.03.2010) |
24.03.2010, 19:15 | #23 |
Модератор
|
Насколько я понимаю по коду, триггерные спеллы не требуют реагентов и энергии, кастятся без учета ЛОС, и видимо инстант
|
27.03.2010, 09:47 | #24 |
Новичок
Регистрация: 07.03.2010
Сообщений: 11
Сказал(а) спасибо: 18
Поблагодарили 2 раз(а) в 1 сообщении
|
Подскажите как правильно удалить итем
не могу разобраться с RemoveItem |
27.03.2010, 12:45 | #26 |
Новичок
Регистрация: 07.03.2010
Сообщений: 11
Сказал(а) спасибо: 18
Поблагодарили 2 раз(а) в 1 сообщении
|
Возникает еще один вопрос
Как определить в каком мешке, слоту лежит итем? |
30.03.2010, 14:32 | #29 |
Пользователь
Регистрация: 06.03.2010
Адрес: Россия->Цимлянск
Сообщений: 49
Сказал(а) спасибо: 34
Поблагодарили 4 раз(а) в 4 сообщениях
|
Есть ли на данный момент у ГО поддержка функции Update(), как у мобов?
__________________
Богатство языка определяет широту его мысли |
30.03.2010, 16:51 | #30 |
Пользователь
Регистрация: 12.03.2010
Адрес: Беларусь
Сообщений: 54
Сказал(а) спасибо: 8
Поблагодарили 24 раз(а) в 17 сообщениях
Записей в дневнике: 1
|
|
2 пользователя(ей) сказали cпасибо: | Chestarfild (30.03.2010) |
03.04.2010, 10:44 | #32 |
Пользователь
Регистрация: 06.03.2010
Адрес: Россия->Цимлянск
Сообщений: 49
Сказал(а) спасибо: 34
Поблагодарили 4 раз(а) в 4 сообщениях
|
Интересует, как правильно деспавнить ГО в инсте. Например Скорбь в залах, когда её Артас забирает.
__________________
Богатство языка определяет широту его мысли |
04.04.2010, 11:12 | #33 | |
Пользователь
Регистрация: 12.03.2010
Адрес: Беларусь
Сообщений: 54
Сказал(а) спасибо: 8
Поблагодарили 24 раз(а) в 17 сообщениях
Записей в дневнике: 1
|
Цитата:
http://github.com/rsa/scriptdev2/blo...e_crusader.cpp Смотрите скрипт Артоса, он там ломает пол. |
|
Пользователь сказал cпасибо: | Chestarfild (05.04.2010) |
18.04.2010, 10:17 | #34 | |
Пользователь
Регистрация: 06.03.2010
Адрес: Россия->Цимлянск
Сообщений: 49
Сказал(а) спасибо: 34
Поблагодарили 4 раз(а) в 4 сообщениях
|
Цитата:
__________________
Богатство языка определяет широту его мысли |
|
18.04.2010, 13:13 | #36 |
Пользователь
Регистрация: 06.03.2010
Адрес: Россия->Цимлянск
Сообщений: 49
Сказал(а) спасибо: 34
Поблагодарили 4 раз(а) в 4 сообщениях
|
Нужно реализовать таймер в го, чтобы например он каждые 20 секунд выполнял на себя определенный метод. С тригерными нпц не особо охото мучацо, да и не близзлайк это наверное.
ЗЫ: Какими махинациями можно сделать неюзабельный го юзабельным?)
__________________
Богатство языка определяет широту его мысли |
18.04.2010, 14:13 | #37 | |
Пользователь
Регистрация: 12.03.2010
Адрес: Беларусь
Сообщений: 54
Сказал(а) спасибо: 8
Поблагодарили 24 раз(а) в 17 сообщениях
Записей в дневнике: 1
|
Цитата:
стамим ГО флаг = 4 - после удаляем (например скриптом). |
|
18.04.2010, 14:40 | #38 | |
Пользователь
Регистрация: 06.03.2010
Адрес: Россия->Цимлянск
Сообщений: 49
Сказал(а) спасибо: 34
Поблагодарили 4 раз(а) в 4 сообщениях
|
Цитата:
__________________
Богатство языка определяет широту его мысли |
|
18.04.2010, 17:50 | #39 |
Пользователь
Регистрация: 12.03.2010
Адрес: Беларусь
Сообщений: 54
Сказал(а) спасибо: 8
Поблагодарили 24 раз(а) в 17 сообщениях
Записей в дневнике: 1
|
Я тоже имел его ввиду
Вроде можно делать через базу, но я предпочитаю через С++ скрипт делать. В скрипте инста будет примерно такая штука: Код:
setData(uint32 case,uint32 data) { ... case MALGANIS: if (data == DONE) if (GameObject *pGo = instance->GetGameObject(MalganisChest)) pGo->RemoveFlag(GAMEOBJECT_FLAGS,GO_FLAG_INTERACT_COND); ... } Скриптуем моба тоже через С++. И как он умирает и отсылает данные в скрипт инста, тут то мы и делаем ГО юзабильным. Последний раз редактировалось Anti; 18.04.2010 в 17:52. |
Пользователь сказал cпасибо: | Chestarfild (18.04.2010) |
28.04.2010, 17:07 | #40 |
Умный
Старожил
Регистрация: 06.03.2010
Сообщений: 886
Сказал(а) спасибо: 698
Поблагодарили 433 раз(а) в 181 сообщениях
Записей в дневнике: 4
|
Пара спеллов:
http://ru.wowhead.com/spell=38736 http://ru.wowhead.com/spell=57853 Проблема в следующем - при юзе итема, на котором они висят, они кастуются, но триггера спелла, висящего на них, не происходит. Не могу понять куда копать... Есть идеи? |
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
trinity (world) to mangos (mangos) | Timmy-kr | Корзина | 1 | 02.06.2010 04:51 |