Добавлен Sparrow
Как сделать так,что бы локальный юнит ссылался из одного триггера в другой?
И попутный вопрос: Допустим у меня есть функция которая берет неизвестный юнит(takes unit u), то как ее вызвать так,что бы неизвестный юнит задавался локальным из триггера?
P.S. Я это спрашиваю потому что для того что мне нужно,надо что бы из 1-го триггера локальный юнит ссылался на 2-ой,а из 2-го в функцию.
И попутный вопрос: Допустим у меня есть функция которая берет неизвестный юнит(takes unit u), то как ее вызвать так,что бы неизвестный юнит задавался локальным из триггера?
P.S. Я это спрашиваю потому что для того что мне нужно,надо что бы из 1-го триггера локальный юнит ссылался на 2-ой,а из 2-го в функцию.
Принятый ответ
silence_AZ,
Вот вам пример, идите разбирайте его и читайте все статьи, что есть.
Вот вам пример, идите разбирайте его и читайте все статьи, что есть.
function UnitAddEffect takes unit u, real x, real y returns nothing
call DestroyEffect(AddSpecialEffect("Abilities\\Spells\\Undead\\AnimateDead\\AnimateDeadTarget.mdl", x, y))
call DestroyEffect(AddSpecialEffect("Abilities\\Spells\\Human\\ThunderClap\\ThunderClapCaster.mdl", GetUnitX(u), GetUnitY(u)))
endfunction
function Action takes nothing returns nothing
local unit u = GetOrderedUnit()
local real x = GetOrderPointX()
local real y = GetOrderPointY()
call UnitAddEffect(u, x, y)
endfunction
function InitTrig_Effect takes nothing returns nothing
local trigger t = CreateTrigger()
local integer i = 0
loop
call TriggerRegisterPlayerUnitEvent(t, Player(i), EVENT_PLAYER_UNIT_ISSUED_POINT_ORDER, null)
set i = i + 1
exitwhen i == 16
endloop
call TriggerAddAction( t, function Action )
endfunction
Создайте триггер "Effect", конвертируйте в текст, удалите все что там есть, копирните и вставьте мое, запускайте карту и побегайте юнитами.
То что я написал можно и нужно оптимизировать, но так как вам нужен пример создания пользовательский функций, то я сделал именно так.
Вот на всякий случай оптимизированный вариант.
То что я написал можно и нужно оптимизировать, но так как вам нужен пример создания пользовательский функций, то я сделал именно так.
Вот на всякий случай оптимизированный вариант.
cJass
define{
func = function
void = nothing
GetX(u) = GetUnitX(u)
GetY(u) = GetUnitY(u)
//Constants
Effect_OnUnit = "Abilities\\Spells\\Human\\ThunderClap\\ThunderClapCaster.mdl"
Effect_OnXY = "Abilities\\Spells\\Undead\\AnimateDead\\AnimateDeadTarget.mdl"
}
void Action(){
unit u = GetOrderedUnit();
DestroyEffect(AddSpecialEffect(Effect_OnXY, GetOrderPointX(), GetOrderPointY()));
DestroyEffect(AddSpecialEffect(Effect_OnUnit, GetX(u), GetY(u)));
}
void InitTrig_Effect(){
trigger t = CreateTrigger()
integer i = 0
loop{
TriggerRegisterPlayerUnitEvent(t, Player(i), EVENT_PLAYER_UNIT_ISSUED_POINT_ORDER, null);
i++;
exitwhen i == 16;
}
TriggerAddAction( t, func Action );
}
этот вариант будет оптимальнее в туче кода, хоть такая фигня и не нужна никому, но тем не менее..
`
ОЖИДАНИЕ РЕКЛАМЫ...
Чтобы оставить комментарий, пожалуйста, войдите на сайт.
Отредактирован Buulichkaa
вот код файлом
Создайте триггер Effect и вставьте туда код из файла, а то тут появляются символы из html
(если удалить то откуда тогда он возьмется?
это ведь всё в статьях есть
и посмотрите что стоит в ()
silence_AZ, объясни мне
какого чёрта ты не читаешь статьи и игнорируешь всё что тебе пишут
это что троллинг?
Отредактирован Buulichkaa
Госпадзе какой jass...
nvc123, Ну надо же чтоб он наконец-то допер?
никак
триггер это отдельный поток
между потоками нельзя передавать локальные данные
Buulichkaa, ответ дан и не 1,закрой вопрос