XGM Forum
Сайт - Статьи - Проекты - Ресурсы - Блоги

Форуме в режиме ТОЛЬКО ЧТЕНИЕ. Вы можете задать вопросы в Q/A на сайте, либо создать свой проект или ресурс.
Вернуться   XGM Forum > Warcraft> Академия: форум для вопросов> Jass
Ник
Пароль
Войти через VK в один клик
Сайт использует только имя.

Закрытая тема
 
tgonta
Pixelated Sora Coder
offline
Опыт: 3,160
Активность:
Правильно дропнуть предмет
» Тут код
function Normal2Rune takes item ni, real x, real y returns nothing
    local integer i = 0
    loop
        exitwhen i > udg_TotalItems
        if udg_NormalItem[i] == GetItemTypeId(ni) then
            call CreateItem(udg_RuneItem[i],x,y)
            call RemoveItem(ni)       
        endif        
        set i = i + 1
    endloop
endfunction

function Trig_Drop_Items_Actions takes nothing returns nothing
    local item i = GetManipulatedItem()
    local unit u = GetManipulatingUnit()
    
    call Normal2Rune(i,GetWidgetX(u),GetWidgetY(u))

    set u = null
    set i = null
endfunction

//===========================================================================
function InitTrig_Drop_Items takes nothing returns nothing
    set gg_trg_Drop_Items = CreateTrigger()
    call TriggerRegisterAnyUnitEventBJ(gg_trg_Drop_Items,EVENT_PLAYER_UNIT_DROP_ITEM)
    call TriggerAddAction(gg_trg_Drop_Items,function Trig_Drop_Items_Actions)
endfunction
У меня есть вопрос с вышеприведённым кодом - при дропе предмета в указанной локации их создаётся 2, причём прямо под указанным героем.
Подскажите, как заставить его корректно сменить предмет на нужный мне.
Старый 20.11.2010, 22:25
Klop
Папа римский
offline
Опыт: 13,006
Активность:
tgonta, а ты пробовал его не создавать функцией Create??,почему люди сразу спрашивают прежде чем всё попробовать
Старый 20.11.2010, 22:32
tgonta
Pixelated Sora Coder
offline
Опыт: 3,160
Активность:
Mr_KLOP:
а ты пробовал его не создавать функцией Create??
Да пробовал я. Тогда ни одного не создаётся.
Mr_KLOP:
почему люди сразу спрашивают прежде чем всё попробовать
Ошибаешься. Я много чего попробовал уже.
Старый 20.11.2010, 22:36
Klop
Папа римский
offline
Опыт: 13,006
Активность:
Вообщем незнаю сталкивался с таким же и использовал так
    if life == r then
    set id = GetItemTypeId(it)
    call UnitRemoveItem(u,it)
    endif
Предмет копия создавался при CreateItem
а в твоём случае незнаю
Mr_KLOP добавил:
call UnitRemoveItem(u,it)
в этой функция просто выкидывала предмет возле героя
Старый 20.11.2010, 22:45
tgonta
Pixelated Sora Coder
offline
Опыт: 3,160
Активность:
Тут оно у меня вообще выбило из вара.
Старый 20.11.2010, 22:47
tgonta
Pixelated Sora Coder
offline
Опыт: 3,160
Активность:
У кого какие идеи ещё?
Старый 21.11.2010, 20:29
SRes
1110101000
offline
Опыт: 9,997
Активность:
exitwhen i >= udg_TotalItems
И проверь чтобы в БД (я так понял, что NormalItem - это БД) не повторялись одинаковые значения.
Старый 22.11.2010, 16:27
tgonta
Pixelated Sora Coder
offline
Опыт: 3,160
Активность:
SRes,
Так создаются два одинаковых итема, если дропнешь ЛЮБОЙ итем.
Да, это БД.
Всё задано верно.
Старый 22.11.2010, 16:49
Klop
Папа римский
offline
Опыт: 13,006
Активность:
Вообщем кароче перепробовал,так и не понял почему создаётся 2,вот только заметил что если не удалять выбрасываемый предмет тогда не создаётся 2,а создаётся 1 и тот который выбросили остаётся
Старый 22.11.2010, 17:17
tgonta
Pixelated Sora Coder
offline
Опыт: 3,160
Активность:
Ну так я проверил код через debugMsg.
Событие дропа предмета реагирует на руны... ух ты.
В общем, вопрос я решил.
Нужно было просто сделать таймер с ожиданием 0.01 секунды... Фейл)

Отредактировано tgonta, 22.11.2010 в 20:35.
Старый 22.11.2010, 17:28
Toadcop

offline
Опыт: 54,313
Активность:
это не фейл. надо знать что еще происходит с предметом после того как запускается евент... и вообще удалять вещи надо окуратно.
Старый 25.11.2010, 11:49
Закрытая тема

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск

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

BB-коды Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход



Часовой пояс GMT +3, время: 11:16.