Добавлен 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
Опишите что вы хотите сделать и я скажу как это сделать.
Отредактирован Buulichkaa
Отредактирован Sparrow
Проще говоря систему показа нанесенного урона в виде плавающего текста(свою).
Если есть желание то вы объясните мне как это сделать.
Отредактирован Buulichkaa
Так же следует задать событие триггеру
это
Отредактирован Sparrow
ФУНКЦИЯ
function SDMS_Actions takes unit n returns nothing
call CreateTextTagUnitBJ( I2S(R2I(GetEventDamage())), n, 0, 10, 100, 100, 100, 0 )
call SetTextTagPermanentBJ( GetLastCreatedTextTag(), false )
call SetTextTagVelocityBJ( GetLastCreatedTextTag(), 64, 90 )
call SetTextTagLifespanBJ( GetLastCreatedTextTag(), 1.00 )
call SetTextTagFadepointBJ( GetLastCreatedTextTag(), 0.50 )
endfunction
function Trig_sdmsss_Actions takes nothing returns nothing
set udg_unit = GetAttackedUnitBJ ()
call DestroyTrigger(udg_SDMS)
set udg_SDMS = CreateTrigger( )
call TriggerRegisterUnitEvent( udg_SDMS, udg_unit, EVENT_UNIT_DAMAGED )
call TriggerAddAction( udg_SDMS, function SDMS_d )
endfunction
function InitTrig_sdmsss takes nothing returns nothing
set gg_trg_sdmsss = CreateTrigger( )
call TriggerRegisterAnyUnitEventBJ( gg_trg_sdmsss, EVENT_PLAYER_UNIT_ATTACKED )
call TriggerAddAction( gg_trg_sdmsss, function Trig_sdmsss_Actions )
endfunction
ибо ты полный бред написал
https://xgm.guru/p/blog-nvc123/103148
бж
утечки
Отредактирован Buulichkaa
Вот вам пример, идите разбирайте его и читайте все статьи, что есть.
То что я написал можно и нужно оптимизировать, но так как вам нужен пример создания пользовательский функций, то я сделал именно так.
Вот на всякий случай оптимизированный вариант.
Отредактирован Sparrow
Вторая отдает координаты в первую
Прошу прощения но объясните нубу что значит exitwhen i == 16
exitwhen i == 16
это перебор в БЖ функции для задания события, я бж открыл чтобы не создавать новые процедуры
Отредактирован Sparrow
у меня координаты читает как путь к эффекту,в первой функции что делать?
Отредактирован Buulichkaa
вот код файлом
Создайте триггер Effect и вставьте туда код из файла, а то тут появляются символы из html
(если удалить то откуда тогда он возьмется?
это ведь всё в статьях есть
и посмотрите что стоит в ()
silence_AZ, объясни мне
какого чёрта ты не читаешь статьи и игнорируешь всё что тебе пишут
это что троллинг?
Отредактирован Buulichkaa
Госпадзе какой jass...
nvc123, Ну надо же чтоб он наконец-то допер?
никак
триггер это отдельный поток
между потоками нельзя передавать локальные данные
Buulichkaa, ответ дан и не 1,закрой вопрос