Ru-MaNGOS

Вернуться   Ru-MaNGOS > Документация > Языки программирования

Важная информация

Языки программирования Изучаем С++, Sql, php, Lua, Python

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
Старый 09.03.2010, 13:15   #1
Wish
Новичок
 
Регистрация: 07.03.2010
Сообщений: 11
Сказал(а) спасибо: 18
Поблагодарили 2 раз(а) в 1 сообщении
Wish На верном пути
По умолчанию Начинающим разбираться в коде MaNGOS

Помню гдето был патч на комманду ст, при использование ее, когда ты дух, тебя телепортировало на близайщее кладбище, воскрещало и кидало
Собственно патч данный я не смог найти, решил сам написать

Вроде все нормально при юзание комманды ст, он тп к кладбищу и воскрещается, но немогу реализовать добавление ауры (http://www.wowhead.com/?spell=15007) к персу, лазил в коде искал примеры, конкретного ничего не нашел(может и видел, но собственно незнаю как она зовется там)

Кто знает прошу помочь

Последний раз редактировалось Wish; 09.03.2010 в 13:21.
Wish вне форума   Ответить с цитированием
Старый 09.03.2010, 13:20   #2
BombermaG
Модератор
 
Аватар для BombermaG
 
Регистрация: 07.03.2010
Сообщений: 57
Сказал(а) спасибо: 5
Поблагодарили 13 раз(а) в 8 сообщениях
BombermaG На верном пути
По умолчанию

Для начала стоит ссылочки указывать на wowhead, а не какой-то лан сайт
BombermaG вне форума   Ответить с цитированием
Старый 09.03.2010, 13:23   #3
Wish
Новичок
 
Регистрация: 07.03.2010
Сообщений: 11
Сказал(а) спасибо: 18
Поблагодарили 2 раз(а) в 1 сообщении
Wish На верном пути
По умолчанию

Цитата:
Сообщение от BombermaG Посмотреть сообщение
Для начала стоит ссылочки указывать на wowhead, а не какой-то лан сайт
чтож бывает, как вы заметили это лан сайт, где мне удобней работать, чем на вовхеде
Wish вне форума   Ответить с цитированием
Старый 09.03.2010, 22:33   #4
virusav
Администратор
 
Аватар для virusav
 
Регистрация: 19.02.2010
Сообщений: 492
Сказал(а) спасибо: 55
Поблагодарили 341 раз(а) в 154 сообщениях
virusav Реально хороший человекvirusav Реально хороший человекvirusav Реально хороший человекvirusav Реально хороший человек
Отправить сообщение для virusav с помощью ICQ
По умолчанию

В скрипте СД2 использовал:
Код:
pPlayer->CastSpell(pPlayer,SPELL_ID,false);
, где Player* pPlayer.

Работает, подставь свой спелл вместо SPELL_ID и проверь.
virusav вне форума   Ответить с цитированием
Пользователь сказал cпасибо:
Wish (10.03.2010)
Старый 10.03.2010, 04:47   #5
Wish
Новичок
 
Регистрация: 07.03.2010
Сообщений: 11
Сказал(а) спасибо: 18
Поблагодарили 2 раз(а) в 1 сообщении
Wish На верном пути
По умолчанию

Цитата:
Сообщение от virusav Посмотреть сообщение
В скрипте СД2 использовал:
Код:
pPlayer->CastSpell(pPlayer,SPELL_ID,false);
, где Player* pPlayer.

Работает, подставь свой спелл вместо SPELL_ID и проверь.
Спасибо
chr->CastSpell(chr,15007,false);
Не подскажите для чего в свойствах функции, последнее свойство, тру, фолс?
Wish вне форума   Ответить с цитированием
Старый 10.03.2010, 09:16   #6
virusav
Администратор
 
Аватар для virusav
 
Регистрация: 19.02.2010
Сообщений: 492
Сказал(а) спасибо: 55
Поблагодарили 341 раз(а) в 154 сообщениях
virusav Реально хороший человекvirusav Реально хороший человекvirusav Реально хороший человекvirusav Реально хороший человек
Отправить сообщение для virusav с помощью ICQ
По умолчанию

Если не ошибаюсь, последний параметр отвечает за триггерность спелла, т.е. если спелл триггерный, то ставим true, иначе false.
virusav вне форума   Ответить с цитированием
Пользователь сказал cпасибо:
Wish (10.03.2010)
Старый 10.03.2010, 11:35   #7
Wish
Новичок
 
Регистрация: 07.03.2010
Сообщений: 11
Сказал(а) спасибо: 18
Поблагодарили 2 раз(а) в 1 сообщении
Wish На верном пути
По умолчанию

virusav
Спасибо за оказанное время и помощь, вроде проект обучающий но помогаете один только вы

Предлагаю тему переименовать в "Изучение кода мангоса", помнится такая была на предыдущем форуме и автор был ее Kirix, столько полезной инфы было в ней

Еще 1 вопрос
что нужно подключить или прописать чтобы данный код работал
PHP код:
if(int32(getLevel()) < startLevel+9)
        {
            
int32 delta = (int32(getLevel()) - startLevel 1)*MINUTE;

            if(
Aura aur GetAura(15007GetGUID()))

При попытке скомпилировать выдает ошибку в неизвестных идентификаторах
Wish вне форума   Ответить с цитированием
Старый 10.03.2010, 12:43   #8
KiriX
Умный
Старожил
 
Аватар для KiriX
 
Регистрация: 06.03.2010
Сообщений: 886
Сказал(а) спасибо: 698
Поблагодарили 433 раз(а) в 181 сообщениях
Записей в дневнике: 4
KiriX Реально хороший человекKiriX Реально хороший человекKiriX Реально хороший человекKiriX Реально хороший человекKiriX Реально хороший человек
По умолчанию

Цитата:
Сообщение от Wish Посмотреть сообщение
virusav
Спасибо за оказанное время и помощь, вроде проект обучающий но помогаете один только вы

Предлагаю тему переименовать в "Изучение кода мангоса", помнится такая была на предыдущем форуме и автор был ее Kirix, столько полезной инфы было в ней

Еще 1 вопрос
что нужно подключить или прописать чтобы данный код работал
PHP код:
if(int32(getLevel()) < startLevel+9)
        {
            
int32 delta = (int32(getLevel()) - startLevel 1)*MINUTE;

            if(
Aura aur GetAura(15007GetGUID()))

При попытке скомпилировать выдает ошибку в неизвестных идентификаторах
1) Не все успевают моментально ответить на появляющиеся вопросы. Лично я три своих выходных полностью посвятил настройке форума, было не до заполнения. А сейчас я работаю - времени мало...
2) Спасибо что напомнили о хорошей теме. Ваше пожелание учтено
KiriX вне форума   Ответить с цитированием
Пользователь сказал cпасибо:
Wish (10.03.2010)
Старый 10.03.2010, 12:44   #9
Dereka
MaNGOS Dev
 
Аватар для Dereka
 
Регистрация: 08.03.2010
Адрес: Ханты-Мансийск
Сообщений: 28
Сказал(а) спасибо: 27
Поблагодарили 13 раз(а) в 8 сообщениях
Dereka На верном пути
По умолчанию

Цитата:
Сообщение от Wish Посмотреть сообщение
Еще 1 вопрос
что нужно подключить или прописать чтобы данный код работал
PHP код:
if(int32(getLevel()) < startLevel+9)
        {
            
int32 delta = (int32(getLevel()) - startLevel 1)*MINUTE;

            if(
Aura aur GetAura(15007GetGUID()))

При попытке скомпилировать выдает ошибку в неизвестных идентификаторах
ищи где описаны getLevel() GetAura() и чей GetGUID() тебе нужен
потом прописывай эти хеадеры(*.h файлы) в своём .cpp файле
Dereka вне форума   Ответить с цитированием
Старый 10.03.2010, 13:00   #10
KiriX
Умный
Старожил
 
Аватар для KiriX
 
Регистрация: 06.03.2010
Сообщений: 886
Сказал(а) спасибо: 698
Поблагодарили 433 раз(а) в 181 сообщениях
Записей в дневнике: 4
KiriX Реально хороший человекKiriX Реально хороший человекKiriX Реально хороший человекKiriX Реально хороший человекKiriX Реально хороший человек
По умолчанию

А что, функции воскрешения отсутствует или она отделена от наложения маски воскрешения?

Сейчас на работе - под рукой нет исходников

Последний раз редактировалось KiriX; 10.03.2010 в 13:28.
KiriX вне форума   Ответить с цитированием
Старый 10.03.2010, 13:10   #11
Wish
Новичок
 
Регистрация: 07.03.2010
Сообщений: 11
Сказал(а) спасибо: 18
Поблагодарили 2 раз(а) в 1 сообщении
Wish На верном пути
По умолчанию

Цитата:
Сообщение от KiriX Посмотреть сообщение
А что, функции воскрешения отсутствует или она отделена от наложения маски воскрешения?
отделена,
воскрешение прописано так
Цитата:
Сообщение от Dereka Посмотреть сообщение
ищи где описаны getLevel() GetAura() и чей GetGUID() тебе нужен
потом прописывай эти хеадеры(*.h файлы) в своём .cpp файле
Прописывал эти самые *.h файлы в инклуде, но ошибка таже, неизсветный идентификатор
getLevel, GetGUID, предполагаю они конкретно не определены в *.h файлах, а определяются при юзание опредленно какихто моментов
если муть несу, то не пинайте пожалуйста, я пытаюсь понять неизвестное мне

Последний раз редактировалось Wish; 10.03.2010 в 14:28.
Wish вне форума   Ответить с цитированием
2 пользователя(ей) сказали cпасибо:
KiriX (10.03.2010)
Старый 10.03.2010, 14:15   #12
LordJZ
Супер-модератор
 
Аватар для LordJZ
 
Регистрация: 07.03.2010
Сообщений: 647
Сказал(а) спасибо: 100
Поблагодарили 252 раз(а) в 123 сообщениях
LordJZ Как самоцвет среди гранитаLordJZ Как самоцвет среди гранитаLordJZ Как самоцвет среди гранита
По умолчанию

Код:
if(Aura * aur = GetAura(15007, EFFECT_INDEX_0))
GetGUID() тут ни к чему.
LordJZ вне форума   Ответить с цитированием
Старый 10.03.2010, 17:42   #13
MaS0n
Модератор
 
Регистрация: 09.03.2010
Адрес: dev/null
Сообщений: 126
Сказал(а) спасибо: 44
Поблагодарили 111 раз(а) в 47 сообщениях
MaS0n Скоро придёт к известностиMaS0n Скоро придёт к известности
Отправить сообщение для MaS0n с помощью ICQ
По умолчанию

использование функций GetAura() и getLevel() напрямую можно только в Player.cpp, Unit.cpp. Это аналогично this->getLevel(), this->GetAura(). В остальных случаях требуется игрок(или юнит), с которого мы получаем левел или ауру
Т.е
Код:
plr->getLevel()
plr->GetAura(..)
PS : и как могут быть не определены эти ф-ци в .h файлах, если вы используете файлы исходников, а не свои добавленные
MaS0n вне форума   Ответить с цитированием
Пользователь сказал cпасибо:
Wish (10.03.2010)
Старый 10.03.2010, 18:34   #14
Wish
Новичок
 
Регистрация: 07.03.2010
Сообщений: 11
Сказал(а) спасибо: 18
Поблагодарили 2 раз(а) в 1 сообщении
Wish На верном пути
По умолчанию

Цитата:
Сообщение от MaS0n Посмотреть сообщение
использование функций GetAura() и getLevel() напрямую можно только в Player.cpp, Unit.cpp. Это аналогично this->getLevel(), this->GetAura(). В остальных случаях требуется игрок(или юнит), с которого мы получаем левел или ауру
Т.е
Код:
plr->getLevel()
plr->GetAura(..)
PS : и как могут быть не определены эти ф-ци в .h файлах, если вы используете файлы исходников, а не свои добавленные
Спасибо на многие вопросы сразу получил вопрос
Цитата:
Сообщение от LordJZ Посмотреть сообщение
Код:
if(Aura * aur = GetAura(15007, EFFECT_INDEX_0))
GetGUID() тут ни к чему.
собственно EFFECT_INDEX_0 я вообще в коде не нашел существование ее

Вот реализовал что хотел, в игре вроде все отлично работает, ошибок в коде нет?
PHP код:
     // if player is dead and stuck, send ghost to graveyard
    
chr->RepopAtGraveyard();
    
chr->ResurrectPlayer(0.0ffalse);

    
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(15007chr->GetGUID()))
            {
                
aur->SetDuration(delta*IN_MILISECONDS);
            }
        }
    }
    return 
true;
    }

    
// cast spell Stuck
     
chr->RepopAtGraveyard();
     return 
true
и еще пару вопросов
1.unit64,unit32,unit8 и тд, что значит это? и какая разница между ими?
2.Можно ли гдето в коде посмотреть описание функций? к примеру
CastSpell(Обект на который будет задействовано,ИД спелла,Тригерность);

Последний раз редактировалось Wish; 10.03.2010 в 18:50.
Wish вне форума   Ответить с цитированием
Старый 10.03.2010, 18:45   #15
MaS0n
Модератор
 
Регистрация: 09.03.2010
Адрес: dev/null
Сообщений: 126
Сказал(а) спасибо: 44
Поблагодарили 111 раз(а) в 47 сообщениях
MaS0n Скоро придёт к известностиMaS0n Скоро придёт к известности
Отправить сообщение для MaS0n с помощью ICQ
По умолчанию

Код:
     // 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;
1. в GetAura второй параметр нужен индекс эффекта, сейчас не знаю как, а раньше всегда было 0, щас мб EFF_INDEX_0, т.к enum, вобщем смотреть по коду

2. ЧТоб установить свою длительность ауры, надо установить макс. длительность а потом ее зарефрешить

PS - каст маски 15007 лучше делать true, т.к true- означает триггерный спелл, кастуется инстантом, не требуя ни энергии(маны, ярости и т.д), ни реагентов, игонря любые эффекты LOS
Код:
chr->CastSpell(chr,15007,true);
PS2 - Visual Studio там есть такая вещь как "Go to Definition", "Go to Declaration" - в контекст меню правым целчком мыши на ф-ции в коде, первое к самой функции, второе - к ее обьявлению,
uint8, uint16, uint32, uint64 - unsigned int, беззнаковый целочисленный тип, цифра - битовость
беззнаковый - биты могут быть либо 0, либо положительными, за счет отрицательных значений мы вдвое расширяем диапазон, uint32 - 0 to 65536

Это обьясняет и любимый всеми баг с уходом спд в минус и появлятся 65536 при значении < 0

Последний раз редактировалось MaS0n; 10.03.2010 в 18:58.
MaS0n вне форума   Ответить с цитированием
4 пользователя(ей) сказали cпасибо:
Feel the Power (12.03.2010), Hantet (02.05.2010), Wish (10.03.2010)
Старый 24.03.2010, 07:15   #16
Wish
Новичок
 
Регистрация: 07.03.2010
Сообщений: 11
Сказал(а) спасибо: 18
Поблагодарили 2 раз(а) в 1 сообщении
Wish На верном пути
По умолчанию

Подскажите еще 2 функции
1. На проверку у персонажа итема
пробовал так GetItemByEntry(entry);
либо нето либо не догнал как прописать
2. На удаление Итема у персонажа
также пробовал RemoveItem
но не догоняю почему при комплиляции ему ненравится она


По первому вопросу нашел ответ на форуме

Последний раз редактировалось Wish; 24.03.2010 в 07:41.
Wish вне форума   Ответить с цитированием
Старый 24.03.2010, 07:51   #17
I fart
Гость
 
Сообщений: n/a
По умолчанию

Цитата:
Подскажите еще 2 функции
1. На проверку у персонажа итема
пробовал так GetItemByEntry(entry);
либо нето либо не догнал как прописать

2.
Цитата:
2. На удаление Итема у персонажа
также пробовал RemoveItem
Код:
void Player::RemoveItem( uint8 bag, uint8 slot, bool update )
А она разве не для замены? А то есть если true - то замена, false - не замена??

Последний раз редактировалось I fart; 24.03.2010 в 08:09.
  Ответить с цитированием
Старый 24.03.2010, 13:01   #18
Anti
Пользователь
 
Аватар для Anti
 
Регистрация: 12.03.2010
Адрес: Беларусь
Сообщений: 54
Сказал(а) спасибо: 8
Поблагодарили 24 раз(а) в 17 сообщениях
Записей в дневнике: 1
Anti На верном пути
Отправить сообщение для Anti с помощью ICQ Отправить сообщение для Anti с помощью Skype™
По умолчанию

Цитата:
Сообщение от I fart Посмотреть сообщение
Код:
void Player::RemoveItem( uint8 bag, uint8 slot, bool update )
А она разве не для замены? А то есть если true - то замена, false - не замена??
Нет, не для замены:
Код:
        if( IsInWorld() && update )
            pItem->SendCreateUpdateToPlayer( this );
Обновлять ли состояние игрока для самомго игрока или нет. Полагаю, если не обновлять, то итем будет видим для игрока, но будет отсутствовать для сервера.

Цитата:
Сообщение от Wish Посмотреть сообщение
собственно EFFECT_INDEX_0 я вообще в коде не нашел существование ее
Список индексов для спеллов лежит в DBCEnums.h
Код:
enum SpellEffectIndex
{
    EFFECT_INDEX_0     = 0,
    EFFECT_INDEX_1     = 1,
    EFFECT_INDEX_2     = 2
};
Цитата:
Сообщение от Wish Посмотреть сообщение
1.unit64,unit32,unit8 и тд, что значит это? и какая разница между ими?
Описание каждого из типов можно посмотреть в ACE_Wrapper/ace/Basic_Types.h

Цитата:
Сообщение от Wish Посмотреть сообщение
2.Можно ли гдето в коде посмотреть описание функций? к примеру
CastSpell(Обект на который будет задействовано,ИД спелла,Тригерность);
Ну это можно сделать либо в докси, но те что я видел были староватыми, однако инфы там много.
Но самый эффективный вариант (имхо) - просмотр кода.
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.
Anti вне форума   Ответить с цитированием
Пользователь сказал cпасибо:
Shadez (31.03.2010)
Старый 24.03.2010, 13:31   #19
Hantet
Ученый
 
Аватар для Hantet
 
Регистрация: 07.03.2010
Адрес: Санкт-Петербург
Сообщений: 163
Сказал(а) спасибо: 124
Поблагодарили 111 раз(а) в 52 сообщениях
Hantet Скоро придёт к известностиHantet Скоро придёт к известности
Отправить сообщение для Hantet с помощью ICQ
По умолчанию

Простите, а что такое тригерность?
Слово слышу очень давно, но до сих пор не разобрался с этим понятием.

С английского языка, естественно (если глагол), переводится как вызывать.
Поясните, пожалуйста, добрые человеки

Спасибо, Anti! Выручил
__________________
Галя: Вот почему когда я пуск делаю и по ярлыку две то запускается, а если вот мне к примеру надо не из пуска её то ничего и в красном показывает, а надо ведь чтобы квадратик жёлтенький открывал и там 3 кнопки должно быть?
admin: О Боже!
admin: Кто-нибудь, пришлите ко мне уборщицу, пусть мой мозг со стен и потолка отмоет

Последний раз редактировалось Hantet; 24.03.2010 в 13:52.
Hantet вне форума   Ответить с цитированием
Старый 24.03.2010, 13:41   #20
Anti
Пользователь
 
Аватар для Anti
 
Регистрация: 12.03.2010
Адрес: Беларусь
Сообщений: 54
Сказал(а) спасибо: 8
Поблагодарили 24 раз(а) в 17 сообщениях
Записей в дневнике: 1
Anti На верном пути
Отправить сообщение для Anti с помощью ICQ Отправить сообщение для Anti с помощью Skype™
По умолчанию

Цитата:
Сообщение от Hantet Посмотреть сообщение
Простите, а что такое тригерность?
Слово слышу очень давно, но до сих пор не разобрался с этим понятием.

С английского языка, естественно (если глагол), переводится как вызывать.
Поясните, пожалуйста, добрые человеки
Спел вызывается другим спелом, ну и судя по всему обрабатывается каким-то специфическим способом.
Anti вне форума   Ответить с цитированием
Старый 24.03.2010, 18:46   #21
MangMan
Новичок
 
Аватар для MangMan
 
Регистрация: 24.03.2010
Сообщений: 25
Сказал(а) спасибо: 11
Поблагодарили 14 раз(а) в 7 сообщениях
Записей в дневнике: 6
MangMan На верном пути
По умолчанию

При осмотре кода 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;
Правильна ли она?
MangMan вне форума   Ответить с цитированием
Старый 24.03.2010, 18:57   #22
Anti
Пользователь
 
Аватар для Anti
 
Регистрация: 12.03.2010
Адрес: Беларусь
Сообщений: 54
Сказал(а) спасибо: 8
Поблагодарили 24 раз(а) в 17 сообщениях
Записей в дневнике: 1
Anti На верном пути
Отправить сообщение для Anti с помощью ICQ Отправить сообщение для Anti с помощью Skype™
По умолчанию

Цитата:
Сообщение от MangMan Посмотреть сообщение
При осмотре кода 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;
Правильна ли она?


Обычное удаление динамического массива.
Anti вне форума   Ответить с цитированием
Пользователь сказал cпасибо:
MangMan (27.03.2010)
Старый 24.03.2010, 19:15   #23
MaS0n
Модератор
 
Регистрация: 09.03.2010
Адрес: dev/null
Сообщений: 126
Сказал(а) спасибо: 44
Поблагодарили 111 раз(а) в 47 сообщениях
MaS0n Скоро придёт к известностиMaS0n Скоро придёт к известности
Отправить сообщение для MaS0n с помощью ICQ
По умолчанию

Насколько я понимаю по коду, триггерные спеллы не требуют реагентов и энергии, кастятся без учета ЛОС, и видимо инстант
MaS0n вне форума   Ответить с цитированием
Старый 27.03.2010, 09:47   #24
Wish
Новичок
 
Регистрация: 07.03.2010
Сообщений: 11
Сказал(а) спасибо: 18
Поблагодарили 2 раз(а) в 1 сообщении
Wish На верном пути
По умолчанию

Подскажите как правильно удалить итем
не могу разобраться с RemoveItem
Wish вне форума   Ответить с цитированием
Старый 27.03.2010, 10:09   #25
MangMan
Новичок
 
Аватар для MangMan
 
Регистрация: 24.03.2010
Сообщений: 25
Сказал(а) спасибо: 11
Поблагодарили 14 раз(а) в 7 сообщениях
Записей в дневнике: 6
MangMan На верном пути
По умолчанию

Код:
RemoveItem(мешок, слот,Обновлять ли состояние игрока для самомго игрока или нет)
MangMan вне форума   Ответить с цитированием
3 пользователя(ей) сказали cпасибо:
Hantet (17.04.2010), Wish (27.03.2010)
Старый 27.03.2010, 12:45   #26
Wish
Новичок
 
Регистрация: 07.03.2010
Сообщений: 11
Сказал(а) спасибо: 18
Поблагодарили 2 раз(а) в 1 сообщении
Wish На верном пути
По умолчанию

Возникает еще один вопрос
Как определить в каком мешке, слоту лежит итем?
Wish вне форума   Ответить с цитированием
Старый 27.03.2010, 12:54   #27
MangMan
Новичок
 
Аватар для MangMan
 
Регистрация: 24.03.2010
Сообщений: 25
Сказал(а) спасибо: 11
Поблагодарили 14 раз(а) в 7 сообщениях
Записей в дневнике: 6
MangMan На верном пути
По умолчанию

Я код мангоса плохо знаю, но можно так, через цикл, сделать проверку на определенный итим.
MangMan вне форума   Ответить с цитированием
Старый 27.03.2010, 15:36   #28
Anti
Пользователь
 
Аватар для Anti
 
Регистрация: 12.03.2010
Адрес: Беларусь
Сообщений: 54
Сказал(а) спасибо: 8
Поблагодарили 24 раз(а) в 17 сообщениях
Записей в дневнике: 1
Anti На верном пути
Отправить сообщение для Anti с помощью ICQ Отправить сообщение для Anti с помощью Skype™
По умолчанию

Цитата:
Сообщение от Wish Посмотреть сообщение
Возникает еще один вопрос
Как определить в каком мешке, слоту лежит итем?
Посмотрите Player::HasItemCount ну и пишите 2 функции.
Anti вне форума   Ответить с цитированием
Пользователь сказал cпасибо:
MangMan (28.03.2010)
Старый 30.03.2010, 14:32   #29
Chestarfild
Пользователь
 
Аватар для Chestarfild
 
Регистрация: 06.03.2010
Адрес: Россия->Цимлянск
Сообщений: 49
Сказал(а) спасибо: 34
Поблагодарили 4 раз(а) в 4 сообщениях
Chestarfild На верном пути
По умолчанию

Есть ли на данный момент у ГО поддержка функции Update(), как у мобов?
__________________
Богатство языка определяет широту его мысли
Chestarfild вне форума   Ответить с цитированием
Старый 30.03.2010, 16:51   #30
Anti
Пользователь
 
Аватар для Anti
 
Регистрация: 12.03.2010
Адрес: Беларусь
Сообщений: 54
Сказал(а) спасибо: 8
Поблагодарили 24 раз(а) в 17 сообщениях
Записей в дневнике: 1
Anti На верном пути
Отправить сообщение для Anti с помощью ICQ Отправить сообщение для Anti с помощью Skype™
По умолчанию

Цитата:
Сообщение от Chesterfield Посмотреть сообщение
Есть ли на данный момент у ГО поддержка функции Update(), как у мобов?
По коду видно, что да.

Код:
void GameObject::Update(uint32 /*p_time*/)
Обрабатывает состояния объектов.
Anti вне форума   Ответить с цитированием
2 пользователя(ей) сказали cпасибо:
Chestarfild (30.03.2010)
Старый 03.04.2010, 06:54   #31
MangMan
Новичок
 
Аватар для MangMan
 
Регистрация: 24.03.2010
Сообщений: 25
Сказал(а) спасибо: 11
Поблагодарили 14 раз(а) в 7 сообщениях
Записей в дневнике: 6
MangMan На верном пути
По умолчанию

Описания некоторых функций из фаила Item.cpp

Последний раз редактировалось MangMan; 03.04.2010 в 07:49. Причина: Добовление новых функций
MangMan вне форума   Ответить с цитированием
6 пользователя(ей) сказали cпасибо:
Anti (03.04.2010), Hantet (17.04.2010), Lightunit (03.04.2010), Limpnau (19.08.2010), Wish (04.04.2010)
Старый 03.04.2010, 10:44   #32
Chestarfild
Пользователь
 
Аватар для Chestarfild
 
Регистрация: 06.03.2010
Адрес: Россия->Цимлянск
Сообщений: 49
Сказал(а) спасибо: 34
Поблагодарили 4 раз(а) в 4 сообщениях
Chestarfild На верном пути
По умолчанию

Интересует, как правильно деспавнить ГО в инсте. Например Скорбь в залах, когда её Артас забирает.
__________________
Богатство языка определяет широту его мысли
Chestarfild вне форума   Ответить с цитированием
Старый 04.04.2010, 11:12   #33
Anti
Пользователь
 
Аватар для Anti
 
Регистрация: 12.03.2010
Адрес: Беларусь
Сообщений: 54
Сказал(а) спасибо: 8
Поблагодарили 24 раз(а) в 17 сообщениях
Записей в дневнике: 1
Anti На верном пути
Отправить сообщение для Anti с помощью ICQ Отправить сообщение для Anti с помощью Skype™
По умолчанию

Цитата:
Сообщение от Chesterfield Посмотреть сообщение
Интересует, как правильно деспавнить ГО в инсте. Например Скорбь в залах, когда её Артас забирает.
Могу посоветовать посмотреть как это делает rsa в своём скрипте Колизея.
http://github.com/rsa/scriptdev2/blo...e_crusader.cpp

Смотрите скрипт Артоса, он там ломает пол.
Anti вне форума   Ответить с цитированием
Пользователь сказал cпасибо:
Chestarfild (05.04.2010)
Старый 18.04.2010, 10:17   #34
Chestarfild
Пользователь
 
Аватар для Chestarfild
 
Регистрация: 06.03.2010
Адрес: Россия->Цимлянск
Сообщений: 49
Сказал(а) спасибо: 34
Поблагодарили 4 раз(а) в 4 сообщениях
Chestarfild На верном пути
По умолчанию

Цитата:
По коду видно, что да.
Вот только как это привязать к скрипту? Смотрел в Script, там GetAI() только для креатур, а для го это сделать какнить можно?
__________________
Богатство языка определяет широту его мысли
Chestarfild вне форума   Ответить с цитированием
Старый 18.04.2010, 11:00   #35
Anti
Пользователь
 
Аватар для Anti
 
Регистрация: 12.03.2010
Адрес: Беларусь
Сообщений: 54
Сказал(а) спасибо: 8
Поблагодарили 24 раз(а) в 17 сообщениях
Записей в дневнике: 1
Anti На верном пути
Отправить сообщение для Anti с помощью ICQ Отправить сообщение для Anti с помощью Skype™
По умолчанию

Цитата:
Сообщение от Chesterfield Посмотреть сообщение
Вот только как это привязать к скрипту? Смотрел в Script, там GetAI() только для креатур, а для го это сделать какнить можно?
А что реализовываем? Со скриптами ГО не сильно знакомился, но могу достаточно быстро разобраться.
Anti вне форума   Ответить с цитированием
Старый 18.04.2010, 13:13   #36
Chestarfild
Пользователь
 
Аватар для Chestarfild
 
Регистрация: 06.03.2010
Адрес: Россия->Цимлянск
Сообщений: 49
Сказал(а) спасибо: 34
Поблагодарили 4 раз(а) в 4 сообщениях
Chestarfild На верном пути
По умолчанию

Нужно реализовать таймер в го, чтобы например он каждые 20 секунд выполнял на себя определенный метод. С тригерными нпц не особо охото мучацо, да и не близзлайк это наверное.

ЗЫ: Какими махинациями можно сделать неюзабельный го юзабельным?)
__________________
Богатство языка определяет широту его мысли
Chestarfild вне форума   Ответить с цитированием
Старый 18.04.2010, 14:13   #37
Anti
Пользователь
 
Аватар для Anti
 
Регистрация: 12.03.2010
Адрес: Беларусь
Сообщений: 54
Сказал(а) спасибо: 8
Поблагодарили 24 раз(а) в 17 сообщениях
Записей в дневнике: 1
Anti На верном пути
Отправить сообщение для Anti с помощью ICQ Отправить сообщение для Anti с помощью Skype™
По умолчанию

Цитата:
Сообщение от Chesterfield Посмотреть сообщение
Нужно реализовать таймер в го, чтобы например он каждые 20 секунд выполнял на себя определенный метод. С тригерными нпц не особо охото мучацо, да и не близзлайк это наверное.

ЗЫ: Какими махинациями можно сделать неюзабельный го юзабельным?)
Похоже, что не получиться такое реализовать без переписывания большой части кода, да и ан сколько я знаю Го у нас сейчас не кастуют в принципе. Так что лучше "не лезть вперёд батьки", а делать через триггеры.

стамим ГО флаг = 4 - после удаляем (например скриптом).
Anti вне форума   Ответить с цитированием
Старый 18.04.2010, 14:40   #38
Chestarfild
Пользователь
 
Аватар для Chestarfild
 
Регистрация: 06.03.2010
Адрес: Россия->Цимлянск
Сообщений: 49
Сказал(а) спасибо: 34
Поблагодарили 4 раз(а) в 4 сообщениях
Chestarfild На верном пути
По умолчанию

Цитата:
стамим ГО флаг = 4 - после удаляем (например скриптом).
Я немного не так сказал) Вобщем например, есть сундук в Очищении Стратхольма, он там стоит по дефлоту неюзабельный. Каким флагом/методом/функцией можно его через код сделать юзабельным?
__________________
Богатство языка определяет широту его мысли
Chestarfild вне форума   Ответить с цитированием
Старый 18.04.2010, 17:50   #39
Anti
Пользователь
 
Аватар для Anti
 
Регистрация: 12.03.2010
Адрес: Беларусь
Сообщений: 54
Сказал(а) спасибо: 8
Поблагодарили 24 раз(а) в 17 сообщениях
Записей в дневнике: 1
Anti На верном пути
Отправить сообщение для Anti с помощью ICQ Отправить сообщение для Anti с помощью Skype™
По умолчанию

Я тоже имел его ввиду

Вроде можно делать через базу, но я предпочитаю через С++ скрипт делать.
В скрипте инста будет примерно такая штука:
Код:
setData(uint32 case,uint32 data)
{
...
     case MALGANIS:
          if (data == DONE)
               if (GameObject *pGo = instance->GetGameObject(MalganisChest))
                    pGo->RemoveFlag(GAMEOBJECT_FLAGS,GO_FLAG_INTERACT_COND);
...
}
А в го_темплейте для этого го ставим значение flags = 4.
Скриптуем моба тоже через С++. И как он умирает и отсылает данные в скрипт инста, тут то мы и делаем ГО юзабильным.

Последний раз редактировалось Anti; 18.04.2010 в 17:52.
Anti вне форума   Ответить с цитированием
Пользователь сказал cпасибо:
Chestarfild (18.04.2010)
Старый 28.04.2010, 17:07   #40
KiriX
Умный
Старожил
 
Аватар для KiriX
 
Регистрация: 06.03.2010
Сообщений: 886
Сказал(а) спасибо: 698
Поблагодарили 433 раз(а) в 181 сообщениях
Записей в дневнике: 4
KiriX Реально хороший человекKiriX Реально хороший человекKiriX Реально хороший человекKiriX Реально хороший человекKiriX Реально хороший человек
По умолчанию

Пара спеллов:
http://ru.wowhead.com/spell=38736
http://ru.wowhead.com/spell=57853

Проблема в следующем - при юзе итема, на котором они висят, они кастуются, но триггера спелла, висящего на них, не происходит. Не могу понять куда копать... Есть идеи?
KiriX вне форума   Ответить с цитированием
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
trinity (world) to mangos (mangos) Timmy-kr Корзина 1 02.06.2010 04:51


Текущее время: 14:41. Часовой пояс GMT +3.


ru-mangos.ru - Русское сообщество MaNGOS
Главная цель проекта MaNGOS - обучающая, поэтому разрешается использовать исходный код и собранную программу только для образовательных целей.
Вы не можете использовать MaNGOS в коммерческих целях, а также не разрешается устанавливать публичные серверы на базе MaNGOS.
Любое копирование материалов, информации в любом виде без указания источника - форума Ru-MaNGOS будет считаться нарушением авторских прав и нарушением Уголовного Кодекса РФ, ст. 146 ст. 147.
Перевод vBulletin: zCarot