|
|
|
|
Проблема в коде
|
|
Fallen-angel | Дата: Воскресенье, 26 Августа 2012, 22:17:43 | Сообщение # 1 |
3 уровень
Группа: Проверенные
Сообщений: 78
Награды: 0
Репутация: 30
Блокировки:
| Только начал обучаться в джассе, поэтому незнаю как исправить код? Код не работает, сам не знаю почему. Заранее спасибо P.S. Просьба не оптимизровать)
Code function Trig_WR03_____________________u_Conditions takes nothing returns boolean if ( not ( GetUnitTypeId(GetAttackedUnitBJ()) == 'H003' ) ) then return false endif if ( not ( GetUnitAbilityLevelSwapped('A00O', GetAttackedUnitBJ()) >= 1 ) ) then return false endif if ( not ( GetUnitLifePercent(GetAttackedUnitBJ()) <= 30.00 ) ) then return false endif return true endfunction
function hero hp takes nothing returns boolean return ( GetUnitLifePercent(u) > 30.00 ) endfunction
function Trig_WR03_____________________u_Actions takes nothing returns nothing local unit u = GetAttackedUnitBJ() local integer lvl = GetUnitAbilityLevel(u,A00O) local effect x = AddSpecialEffectTarget("head",u,"Abilities\\Spells\\Other\\Incinerate\\IncinerateBuff.mdl") call UnitAddAbility(u,A00P) call UnitAddAbility(u,A00Q) call SetUnitAbilityLevel(u,A00P,lvl) call SetUnitAbilityLevel(u,A00Q,lvl) loop exitwhen ( hero hp() ) call TriggerSleepAction(RMaxBJ(bj_WAIT_FOR_COND_MIN_INTERVAL, 1)) endloop call UnitRemoveAbility(u,A00P) call UnitRemoveAbility(u,A00Q) call DestroyEffect( x ) set x = null set u = null set lvl = null endfunction
//=========================================================================== function InitTrig_WR03_____________________u takes nothing returns nothing set gg_trg_WR03_____________________u = CreateTrigger( ) call TriggerRegisterAnyUnitEventBJ( gg_trg_WR03_____________________u, EVENT_PLAYER_UNIT_ATTACKED ) call TriggerAddCondition( gg_trg_WR03_____________________u, Condition( function Trig_WR03_____________________u_Conditions ) ) call TriggerAddAction( gg_trg_WR03_____________________u, function Trig_WR03_____________________u_Actions ) endfunction
Сообщение отредактировал Fallen-angel - Воскресенье, 26 Августа 2012, 22:19:36 |
|
|
|
Smartaros | Дата: Понедельник, 27 Августа 2012, 00:40:16 | Сообщение # 2 |
9 уровень
Группа: Проверенные
Сообщений: 810
Награды: 0
Репутация: 135
Блокировки:
| сделай норм условия, убери BJ, вместо цикло юзай период таймер, и в теле таймера делай проверку твоей функции, думаю с хэшем ты знаком
|
|
|
|
kapa6acvlk | Дата: Понедельник, 27 Августа 2012, 00:49:49 | Сообщение # 3 |
Группа: Проверенные
Сообщений: 612
Награды: 0
Репутация: 361
Блокировки:
| Quote (Fallen-angel) незнаю как исправить код? это что такое?? Code function hero hp takes nothing returns boolean return ( GetUnitLifePercent(u) > 30.00 ) endfunction переменная u не объявлена, да и зачем так делать пиши условие непосредственно в цикле.
Code loop exitwhen ( GetUnitLifePercent(u) > 30.00 ) call TriggerSleepAction(RMaxBJ(bj_WAIT_FOR_COND_MIN_INTERVAL, 1)) endloop Не используй TriggerSleepAction в циклах, твоя функция может дропнуться.
integer не требует обнуления, да и null ты ему не присвоишь по идее, а если присвоишь, то это все равно 0 читай об утечках.
Ну и как тебе сказал Smartaros, убери BJ.
Как говориться, не обязательно есть всю кучу говна, чтобы понять, что она однородна. © Александр Зорич
|
|
|
|
Smartaros | Дата: Понедельник, 27 Августа 2012, 01:11:44 | Сообщение # 4 |
9 уровень
Группа: Проверенные
Сообщений: 810
Награды: 0
Репутация: 135
Блокировки:
| Code function Trig_WR03_____________________u_Conditions takes nothing returns boolean return GetUnitTypeId(GetTriggerUnit()) == 'H003' and GetUnitAbilityLevel(GetTriggerUnit(),'A00O') >= 1 and GetUnitLifePercent(GetTriggerUnit()) <= 30.00 endfunction
function_Timer takes nothing returns nothing local timer t = GetExpiriedTimer() local integer id = GetHandleId(t) local unit u = LoadUnitHandle(udg_hash, id, 0) if GetUnitLifePercent(u) > 30.00 then call UnitRemoveAbility(u,A00P) call UnitRemoveAbility(u,A00Q) call DestroyEffect(LoadEffectHandle(udg_hash, id, 1)) call DestroyTimer(t) call FlushChildHastable(udg_hash, id) endif set u = null set t = null endfunction
function Trig_WR03_____________________u_Actions takes nothing returns nothing local unit u = GetTriggerUnit() local integer lvl = GetUnitAbilityLevel(u,A00O) local effect x = AddSpecialEffectTarget("head",u,"Abilities\\Spells\\Other\\Incinerate\\IncinerateBuff.mdl") local timer t = CreateTimer() local integer id = GetHandleId(t) call UnitAddAbility(u,A00P) call UnitAddAbility(u,A00Q) call SetUnitAbilityLevel(u,A00P,lvl) call SetUnitAbilityLevel(u,A00Q,lvl) call SaveAgentHandle(udg_hash, id, 0, u) call SaveEffectHandle(udg_hash, id, 1, x) call TimerStart(t, 1, true, function_Timer ) set x = null set u = null set t = null endfunction
//=========================================================================== function InitTrig_WR03_____________________u takes nothing returns nothing set gg_trg_WR03_____________________u = CreateTrigger( ) call TriggerRegisterAnyUnitEventBJ( gg_trg_WR03_____________________u, EVENT_PLAYER_UNIT_ATTACKED ) call TriggerAddCondition( gg_trg_WR03_____________________u, Condition( function Trig_WR03_____________________u_Conditions ) ) call TriggerAddAction( gg_trg_WR03_____________________u, function Trig_WR03_____________________u_Actions ) endfunction
писал с телефона, могу ошибаться
|
|
|
|
kapa6acvlk | Дата: Понедельник, 27 Августа 2012, 01:13:43 | Сообщение # 5 |
Группа: Проверенные
Сообщений: 612
Награды: 0
Репутация: 361
Блокировки:
| Smartaros, Quote (Fallen-angel) P.S. Просьба не оптимизровать) Автор просил не исправлять, убери код, пускай сам учится.
Как говориться, не обязательно есть всю кучу говна, чтобы понять, что она однородна. © Александр Зорич
|
|
|
|
Smartaros | Дата: Понедельник, 27 Августа 2012, 01:16:05 | Сообщение # 6 |
9 уровень
Группа: Проверенные
Сообщений: 810
Награды: 0
Репутация: 135
Блокировки:
| kapa6acvlk, да норм, я в джасс врубился после того как твой код изучил, про урон
|
|
|
|
Fallen-angel | Дата: Понедельник, 27 Августа 2012, 01:30:56 | Сообщение # 7 |
3 уровень
Группа: Проверенные
Сообщений: 78
Награды: 0
Репутация: 30
Блокировки:
| Smartaros, kapa6acvlk, огромное спасибо вам . Тему можно закрыть
|
|
|
|
Smartaros | Дата: Понедельник, 27 Августа 2012, 01:37:52 | Сообщение # 8 |
9 уровень
Группа: Проверенные
Сообщений: 810
Награды: 0
Репутация: 135
Блокировки:
| пользуйся jngp, там есть список функций, у меня некоторые с ошибкой, исправлять лень
|
|
|
|
Fallen-angel | Дата: Понедельник, 27 Августа 2012, 02:06:40 | Сообщение # 9 |
3 уровень
Группа: Проверенные
Сообщений: 78
Награды: 0
Репутация: 30
Блокировки:
| Smartaros, я их уже увидел) GetExpiriedTimer() не так, а GetExpiredTimer()
|
|
|
|
Smartaros | Дата: Понедельник, 27 Августа 2012, 04:08:17 | Сообщение # 10 |
9 уровень
Группа: Проверенные
Сообщений: 810
Награды: 0
Репутация: 135
Блокировки:
| чтобы все работало нужно создать глобалку hash типа хэштаблица, и инициализировать ее
|
|
|
|
|
|
|
|
|
|
|