function InitTrig_SPELL_END takes nothing returns nothing
local trigger t = CreateTrigger()
local integer i = 0
loop
call TriggerRegisterPlayerUnitEvent(t, Player(i), EVENT_PLAYER_UNIT_SPELL_FINISH, null)
set i = i + 1
exitwhen i == GetPlayerId(GetOwningPlayer(GetTriggerUnit()))
endloop
call TriggerAddAction(t, function SPELL_END )
set t = null
endfunction

MATRITSA, причём тут событие?
чтобы существовал GetTriggerUnit() необходимо чтобы функция в которой он используется была вызвана по событию связанным с юнитом
функция InitTrig_SPELL_END вызывается из мейна и как следствие не содержит никакого юнита
элементарная логика же
короче сначала иди в школу (первые 4 класса)
а потом в статьи
и начни писать нормально
надоел слова коверкать
`
ОЖИДАНИЕ РЕКЛАМЫ...
23
Похожие вопросы:

ответ
Вопрос есть в FAQ вроде. Необходимо добавить действие "окружение - включить последний созданный эффект погоды"
Ну и настройки графики должны быть как минимум на средних!
ответ
not_name:
может скинешь карту удали все что не связанно с предметами посмотрим что не так.
Вот скрин одного из предметов, который перестал работать. Boots of Travel - активка. Мне кажется это просто баг, так как перестает работать какой-то предмет, на самом деле, очень редко. Я думал может есть какое то логическое объяснение, но увы.
Спасибо за ответы.
ответ
functio
решил проблему
Каким оброзом Стан юнит записовался в переменую я не пойму но как то записовался я даже пытался ставить иф чтоб тока герой мог записаца не помагало пришлось после поставет
после запесе
ответ
и в условиях наоборот тоже, там у тебя picked вместо matched

14
извини но мне просто фотал ерор выдаёть как я тебе отлатку зделаю
22
что именно должен делать этот триггер?.
exitwhen i == GetPlayerId(GetOwningPlayer(GetTriggerUnit()))
Возможно фатал выдает потому что если событие вызвал юнит красного игрока то цикл бесконечный и создается куча событий у триггера. В какой то момент вызывается Player(i) с недопустимо большим i.
У красного игрока номер 0, и условие exitwhen никогда не выполнится т.к. к моменту проверки i уже =1.
Либо событие вызвал вообще не юнит, тогда тоже индекс игрока будет 0.
14
ну как он может быть бесконечным если 1 пребовляеца сначало проверка событие потом +1 и ваше почему нелизя вместо цыкла от 0 до 10 зделать нахождение юнита сразу
я ставил начало и с -1 нефига
22
Если начинать с -1 то будет вызов Player(-1) что тоже вызывает фатал
14
как если loop
call TriggerRegisterPlayerUnitEvent(t, Player(i), EVENT_PLAYER_UNIT_SPELL_EFFECT, null)
set i = i + 1
exitwhen i == GetPlayerId(GetOwningPlayer(GetTriggerUnit()))
сначало тригер потом + 1
22
MATRITSA, потому что сперва будет
TriggerRegisterPlayerUnitEvent(t, Player(-1), EVENT_PLAYER_UNIT_SPELL_EFFECT, null)
и только потом i=i+1
индекс игрока нельзя делать меньше 0 или больше 15
14
хорошо а если
TriggerRegisterPlayerUnitEvent(t, Player(0), EVENT_PLAYER_UNIT_SPELL_EFFECT, null)
и только потом i=i+1
так
22
MATRITSA, зачем тогда вообще цикл если событие всегда для красного игрока?
14
нет ано может быть и для других но я хочю без цыкла определять владелица
ну или прекрашять как тока активатар событие нашолся
22
Надо все делать заново и разбирать что именно ты хочешь достичь этим триггером. Почему цикл выполняется именно для всех игроков с номером не больше номера владельца несуществующего владельца юнита вызывающего инициализацию конвертнутого ГУИ триггера?
14
а вот так почему фаталить
function InitTrig_SPELL_END takes nothing returns nothing
local trigger t = CreateTrigger()
local integer i =GetPlayerId(GetOwningPlayer(GetTriggerUnit()))
call TriggerRegisterPlayerUnitEvent(t,Player(i), EVENT_PLAYER_UNIT_SPELL_FINISH, null)
call TriggerAddAction(t, function SPELL_END )
set t = null
endfunction
22
вообще судя по имени этой функции
InitTrig_SPELL_END
Это функция инициализации триггера "SPELL_END". она запускается только при запуске самой карты. В этот момент GetTriggerUnit() не существует.
14
function SPELL_ACT takes nothing returns nothing
if ( IsUnitInGroup(GetTriggerUnit(), udg_OtratALL[94]) == false ) {
SpellLink.execute(GetSpellAbilityId(), 0)
set udg_TrigerUnit = GetTriggerUnit()
set udg_IndexPlayer = GetUnitUserData(udg_TrigerUnit)
call DisplayTextToForce( GetPlayersAll(), I2S(udg_IndexPlayer) )
}
endfunction
===========================================================================
function InitTrig_SPELL_ACT takes nothing returns nothing
local trigger t = CreateTrigger()
local integer i = 0
loop
call TriggerRegisterPlayerUnitEvent(t, Player(i), EVENT_PLAYER_UNIT_SPELL_EFFECT, null)
set i = i + 1
exitwhen GetPlayerId(GetOwningPlayer(GetTriggerUnit())) == i
endloop
call TriggerAddAction(t, function SPELL_ACT )
set t = null
endfunction
вот что ана делать эта все
22
Это вообще другой триггер, хотя тут тоже такая же ерунда с событием.
вобщем меняй на exitwhen i > 15
14
спс
а вот тут что не так
function SPELL_ACT takes nothing returns nothing
if ( IsUnitInGroup(GetTriggerUnit(), udg_OtratALL[94]) == false ) {
SpellLink.execute(GetSpellAbilityId(), 0)
set udg_TrigerUnit = GetTriggerUnit()
set udg_IndexPlayer = GetUnitUserData(udg_TrigerUnit)
call DisplayTextToForce( GetPlayersAll(), I2S(udg_IndexPlayer) )
}
endfunction
===========================================================================
function InitTrig_SPELL_ACT takes nothing returns nothing
local trigger t = CreateTrigger()
local unit u = GetTriggerUnit()
call TriggerRegisterUnitEvent(t,u,EVENT_UNIT_SPELL_FINISH)
call TriggerAddAction(t, function SPELL_ACT )
set t = null
set u = null
endfunction
22
MATRITSA, то что GetTriggerUnit() не существует в начале игры при запуске карты
14
ну так это не в мамент запуска происходить а когда юнит спел кастуеть
22
InitTrig_SPELL_ACT это инициализация триггера и срабатывает она в начале игры
22
што забей там ошибка же
откуда там возьмется local unit u = GetTriggerUnit() ?
14
ошыпки в этом тригере нету просто способности у юнитов не активируюца
22
function InitTrig_SPELL_ACT takes nothing returns nothing
local trigger t = CreateTrigger()
local unit u = GetTriggerUnit() // Вот это вот что такое?
call TriggerRegisterUnitEvent(t,u,EVENT_UNIT_SPELL_FINISH) //  на кого у тебя событие создается? юнит не существует, события на него не создастся, конечно отслеживаться не будет
call TriggerAddAction(t, function SPELL_ACT )
set t = null
set u = null
endfunction
14
хочеш сказать нужно нижы
call TriggerRegisterUnitEvent(t,u,EVENT_UNIT_SPELL_FINISH)
или
call TriggerRegisterUnitEvent(t,GetTriggerUnit() ,EVENT_UNIT_SPELL_FINISH) так
я думал тригер создаст
не нифига всеравно не кастуюца
Чтобы оставить комментарий, пожалуйста, войдите на сайт.