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

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

Закрытая тема
 
Oxygen D
Вернулся
offline
Опыт: 5,180
Активность:
Привязка события к функции
Доброго времени суток! Помогите пожалуйста!!! Мне нужно привязать событие юнит получает предмет к функции GetItem. Вот исходный код:
scope battle

//Переменные

globals

private integer array str // сила / атака
private integer array agi // ловкость
private integer array inl // интелект
private unit array Hero // герой
private integer array items
private integer array heroitem
private unit array sword
private unit array armor
private unit array helmet
private integer MaxItems
private boolean array haveinv
private string array typeitem
private string array codeword

endglobals

////////////////////////////////////Variables///////////////////////////////////////
function itams takes nothing returns nothing
//Предметы и их герои
set items[1] = 'ratf'
set heroitem[1] = 'H000'
set typeitem[1] = "weapon"
////////////////////////////////////////
set MaxItems = 1
set codeword[1] = "weapon"
set codeword[2] = "armor"
set codeword[3] = "helmet"
endfunction

///////////////////////////Основное/////////////////////////////////////////
function GetItem takes nothing returns nothing // берем предмет получаем героя
local integer index = 0
local integer i = 0
local item ite = GetManipulatedItem()
local integer id = GetPlayerId(GetOwningPlayer(GetTriggerUnit()))
local location point = GetUnitLoc(GetTriggerUnit())

set index =1
loop
exitwhen index > MaxItems
if items[index] == GetItemTypeId(ite) then // проверка на то, есть ли этот предмет в списке
call RemoveItem(ite) // забираем предмет и..
                                    call CreateUnitAtLoc(Player(id), heroitem[index],point,GetRandomReal(0.00,360.00)) // создаем героя
                                         call RemoveLocation(point) // устраняем утечки
                                         set i = 1
loop
exitwhen i > MaxItems
                                if typeitem[i] == codeword[i] then
                                set haveinv[id*i] = true // заполненость (чтобы не взять 5 мечей сразу к примеру или 3 брони итд)
endif
set i = i+1
endloop
endif
                                         set index = index+1
endloop

endfunction

endscope

Как это сделать и желательно с примером.
Старый 20.07.2011, 17:43
Helpmeplz

offline
Опыт: 11,698
Активность:
триггер создавать не пробовали? или вы vJass мануал до конца не читали.
Старый 20.07.2011, 18:19
Oxygen D
Вернулся
offline
Опыт: 5,180
Активность:
Helpmeplz, этот весь код находится в триггере system я пробовал сделать так:
private trigger Get
и в этом же скопе сделать функцию создающую триггер и событие:
function InitTrig_Get takes nothing returns nothing 
local integer i = 0
    set Get = CreateTrigger(  )
    set i = 0
    loop
    exitwhen i > 9
    call TriggerRegisterPlayerUnitEvent(Get, Player(i), EVENT_PLAYER_UNIT_PICKUP_ITEM, null)
    set i = i+1
    endloop
    call TriggerAddAction( Get, function GetItem )
endfunction
Старый 20.07.2011, 18:29
Helpmeplz

offline
Опыт: 11,698
Активность:
вы слышали про Initializer библиотеки?
Старый 20.07.2011, 18:45
Oxygen D
Вернулся
offline
Опыт: 5,180
Активность:
Helpmeplz, к сожалению нет..
Старый 20.07.2011, 18:48
Helpmeplz

offline
Опыт: 11,698
Активность:
ну вот откройте vJass мануал и прочитайте
Старый 20.07.2011, 18:49
Doc

offline
Опыт: 63,163
Активность:
Прочитайте еще много-много раз и истина откроется вам.
Есть даже русская версия, ссылки нет, но ищущий да найдет!
Старый 20.07.2011, 20:04
Закрытая тема

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

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

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

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



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