offline
Опыт:
16
Активность:
|
JNGP + WC III TFT 1.26a : Не запускаются некоторые карты
Может быть немного не туда пишу, но все же.
Сразу скажу что дважды сохранять ПРОБОВАЛ И НЕ РАЗ, все нужные галочки стоят, ненужные отключены (пробовал и со включенными)! В поисковиках искал и не нашел!
Некоторые экземпляры vJass кода ломают карту. Подозреваю, что связано с использованием пользовательских константных функций либо геймкэша в vJass. Хотя могу ошибаться. Код точно правильный, пробовал несколько примеров в том числе с этого сайта - все одинаково компилируются без ошибок (хотя проверка синтаксиса упорно не видит глобальных переменных, не уверен что так и должно быть). если отключить триггер с кодом на vJass - все чудесно работает. Иначе - Ctrl+F9 выкидывает в главное меню, а при запуске вручную нет кланов/игроков и карта не запускается.
С другой стороны, в некоторых иных, простых случаях, карты с vJass`ом запускались нормально
vJass версии 0.A.2.A, обновил до 0.A.2.B - не помогло
WC 3 TFT 1.26.0.6401
JNGP 5d Exp2
» (Пытаюсь заставить работать карту с вот таким кодом)
constant function H2I takes handle h returns integer
return h
return 0
endfunction
constant function I2U takes integer H returns unit
return H
return null
endfunction
constant function I2TrA takes integer i returns triggeraction
return i
return null
endfunction
constant function I2TrC takes integer i returns triggercondition
return i
return null
endfunction
function trig_Damaged takes nothing returns nothing
local unit DamageSource = GetEventDamageSource() // Атакующий
local real Damage = GetEventDamage() // Урон
local unit Attacked = GetTriggerUnit() // Атакованый
local trigger trig = GetTriggeringTrigger ()
local texttag tt
if DamageSource == I2U(GetStoredInteger(udg_cache, I2S(H2I(trig)), "Attacking")) then
//...
if (Damage > 0.0) then
set tt = CreateTextTagLocBJ( ( "-" + I2S(R2I(Damage)) ), GetUnitLoc(Attacked), 10.00, 10, 100, 50.00, 0.00, 0 )
call SetTextTagVelocityBJ( tt, 64, 90 )
call SetTextTagPermanentBJ( tt, false )
call SetTextTagLifespanBJ( tt, 3.00 )
call SetTextTagFadepointBJ( tt, 1.50 )
elseif (Damage < 0.0) then
set tt = CreateTextTagLocBJ( ( "+" + I2S(R2I(-Damage)) ), GetUnitLoc(Attacked), 12.00, 10, 0.00, 100.00, 0.00, 0 )
call SetTextTagVelocityBJ( tt, 64, 90 )
call SetTextTagPermanentBJ( tt, false )
call SetTextTagLifespanBJ( tt, 3.00 )
call SetTextTagFadepointBJ( tt, 1.50 )
endif
//...
call TriggerRemoveCondition(trig, I2TrC(GetStoredInteger(udg_cache, I2S(H2I(trig)), "TrC")))
call TriggerRemoveAction (trig, I2TrA(GetStoredInteger(udg_cache, I2S(H2I(trig)), "TrA")))
call FlushStoredMission(udg_cache, I2S(H2I(trig)))
call DestroyTrigger(trig)
endif
set trig = null
endfunction
function trig_Conditions takes nothing returns boolean
return true // поставить свои условия
endfunction
function trig_Attacked takes nothing returns nothing
local trigger trig = CreateTrigger ()
local unit Attacking = GetAttacker()
local unit Attacked = GetTriggerUnit()
local triggeraction TrA = TriggerAddAction (trig, function trig_Damaged )
local triggercondition TrC = TriggerAddCondition (trig, Condition(function trig_Conditions))
call TriggerRegisterUnitEvent (trig, Attacked, EVENT_UNIT_DAMAGED )
call StoreInteger(udg_cache, I2S(H2I(trig)), "Attacking", H2I(Attacking))
call StoreInteger(udg_cache, I2S(H2I(trig)), "TrC" , H2I(TrC ))
call StoreInteger(udg_cache, I2S(H2I(trig)), "TrA" , H2I(TrA ))
call TriggerSleepAction(3)
if IsTriggerEnabled (trig) then
call FlushStoredMission(udg_cache, I2S(H2I(trig)))
call TriggerRemoveCondition(trig, TrC)
call TriggerRemoveAction (trig, TrA)
call DestroyTrigger (trig)
endif
set trig= null
set TrA = null
set TrC = null
endfunction
//===========================================================================
function InitTrig_Attacked takes nothing returns nothing
set gg_trg_Attacked = CreateTrigger()
call TriggerAddAction ( gg_trg_Attacked, function trig_Attacked )
call TriggerAddCondition ( gg_trg_Attacked, Condition(function trig_Conditions))
call TriggerRegisterAnyUnitEventBJ( gg_trg_Attacked, EVENT_PLAYER_UNIT_ATTACKED )
endfunction
Подскажите как лечить? Танцы с нубо-бубнами типа закрыть редактор, 100 раз сохранить и тп - пробовал и не помогло.
|