PainKonan
offline
Опыт:
227Активность: |
Помогите исправить ошибку в коде
((код jass
function Trig_UdarGroma1_Conditions takes nothing returns boolean
if ( not ( GetSpellAbilityId() == 'A002' ) ) then return false endif return true endfunction function Trig_UdarGroma1_Func004002003 takes nothing returns boolean
return ( IsUnitType(GetFilterUnit(), UNIT_TYPE_STRUCTURE) == false ) and ( IsUnitHiddenBJ(GetFilterUnit()) == false ) and ( IsUnitDeadBJ(GetFilterUnit()) == false ) and ( IsUnitType(GetFilterUnit(), UNIT_TYPE_MAGIC_IMMUNE) == false ) and ( IsUnitAlly(GetFilterUnit(), GetOwningPlayer(u)) == false ) and ( IsUnitType(GetFilterUnit(), UNIT_TYPE_MECHANICAL) == false ) endfunction function Trig_UdarGroma1_Func005Func001C takes nothing returns boolean
if ( not ( IsUnitType(GetEnumUnit(), UNIT_TYPE_HERO) == false ) ) then return false endif return true endfunction function Trig_UdarGroma1_Func005A takes nothing returns nothing
if ( Trig_UdarGroma1_Func005Func001C() ) then set i = ( i + 5 ) else set i = ( i + 50 ) endif endfunction function Trig_UdarGroma1_Actions takes nothing returns nothing
local unit u=GetSpellAbilityUnit() local timer t=CreateTimer() local location l=GetUnitLoc(u) local integer i=0 local group g=GetUnitsInRangeOfLocMatching(716.00, l, Condition(function Trig_UdarGroma1_Func004002003)) call ForGroup( g, function Trig_UdarGroma1_Func005A ) call ModifyHeroStat( bj_HEROSTAT_STR, u, bj_MODIFYMETHOD_ADD, i ) endfunction ===========================================================================
function Init takes nothing returns nothing set gg_trg_UdarGroma1 = CreateTrigger( ) call TriggerRegisterAnyUnitEventBJ( gg_trg_UdarGroma1, EVENT_PLAYER_UNIT_SPELL_EFFECT ) call TriggerAddCondition( gg_trg_UdarGroma1, Condition( function Trig_UdarGroma1_Conditions ) ) call TriggerAddAction( gg_trg_UdarGroma1, function Trig_UdarGroma1_Actions ) endfunction )) Выдаёт следующие ошибки: -undeclared variable u ( IsUnitAlly(GetFilterUnit(), GetOwningPlayer(u)) -undeclared variable i (set i = ( i + 5 ) else set i = ( i + 50 ) endif) Отредактировано PainKonan, 15.09.2013 в 15:39. |
14.09.2013, 22:50 | #1
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
LOR_D
offline
Опыт:
8,450Активность: |
PainKonan, очевидно же, что в функциях где вы используете эти переменные, они не объявлены. Вы объявили переменные i и u в Trig_UdarGroma1_Actions и только там вы ими можете пользоваться. |
14.09.2013, 23:29 | #2
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
PainKonan
offline
Опыт:
227Активность: |
LOR_D, а если объявить переменные в функциях, где они не объявлены, то это будут разные переменные? (т.е. в каждой функции свои переменные?). |
14.09.2013, 23:47 | #3
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Hate
конь вакуумный
offline
Опыт:
43,117Активность: |
читать статьи, и про форматирование на форуме |
14.09.2013, 23:48 | #4
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
LOR_D
offline
Опыт:
8,450Активность: |
PainKonan, да, разные. |
15.09.2013, 00:09 | #5
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Cosonic5
Моймозггоритогнем
offline
Опыт:
13,584Активность: |
да тут не столько ошибку сколько код надо исправить |
15.09.2013, 11:49 | #6
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
16GB
GhostOne User
offline
Опыт:
59,317Активность: |
Ошибка в том что переменная i только в одной функции видна, там где ты её объявил (Trig_UdarGroma1_Actions) в других её не существует.
Отредактировано 16GB, 15.09.2013 в 13:08. |
15.09.2013, 12:09 | #7
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
PainKonan
offline
Опыт:
227Активность: |
Благодарю за помощь.
Тогда можно ли задать все локальные переменные в самом начале: до того, как мы начинаем задавать функции (чтобы эти переменные распространялись на все функции)? (иначе я не знаю, как проверить условия) Cosonic5, не знаю как его исправить, поэтому обратился за помощью сюда.
16GB, огромное спасибо, я попробую разобраться с этим) Отредактировано PainKonan, 15.09.2013 в 12:21. |
15.09.2013, 12:13 | #8
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
16GB
GhostOne User
offline
Опыт:
59,317Активность: |
|
15.09.2013, 12:33 | #9
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
PainKonan
offline
Опыт:
227Активность: |
16GB, я вроде разобрался, как ты сделал, но прибавка к силе не происходит |
15.09.2013, 12:40 | #10
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
16GB
GhostOne User
offline
Опыт:
59,317Активность: |
подправил |
15.09.2013, 13:09 | #11
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
PainKonan
offline
Опыт:
227Активность: |
16GB, всё равно не работает...
вот весь код: ((код jass
function Trig_UdarGroma1_Conditions takes nothing returns boolean
if ( not ( GetSpellAbilityId() == 'A002' ) ) then return false endif return true endfunction function Trig_UdarGroma1_Actions takes nothing returns nothing
local unit c = GetSpellAbilityUnit() local timer t = CreateTimer() ? local real x = GetUnitX(c) local real y = GetUnitY(c) local unit u local integer i=0 local group g = CreateGroup() call GroupEnumUnitsInRange(g,x,y,716.,null) loop set u = FirstOfGroup(g) if not (GetUnitTypeId(u) == 0 or IsUnitType(u, UNIT_TYPE_DEAD)) and not IsUnitType(u, UNIT_TYPE_STRUCTURE) and not IsUnitHidden(u) and not IsUnitType(u,UNIT_TYPE_MAGIC_IMMUNE) and not IsUnitAlly(u,GetOwningPlayer(c)) and not IsUnitType(u,UNIT_TYPE_MECHANICAL) then if IsUnitType(u,UNIT_TYPE_HERO) then set i = i+50 else set i = i+5 endif endif call GroupRemoveUnit(g,u) exitwhen u == null endloop call SetHeroStr(c,i,true) call DestroyGroup(g) set u = null set c = null set g = null endfunction =========================================================================== function Init takes nothing returns nothing set gg_trg_UdarGroma1 = CreateTrigger( ) call TriggerRegisterAnyUnitEventBJ( gg_trg_UdarGroma1, EVENT_PLAYER_UNIT_SPELL_EFFECT ) call TriggerAddCondition( gg_trg_UdarGroma1, Condition( function Trig_UdarGroma1_Conditions ) ) call TriggerAddAction( gg_trg_UdarGroma1, function Trig_UdarGroma1_Actions ) endfunction )) |
15.09.2013, 15:24 | #12
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
16GB
GhostOne User
offline
Опыт:
59,317Активность: |
у меня всё работает, только надо
call SetHeroStr(c,i,true)
на это
call SetHeroStr(c,GetHeroStr(c,true)+i,true) |
15.09.2013, 16:07 | #13
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
PainKonan
offline
Опыт:
227Активность: |
16GB, это тоже исправил, но всё равно не работает ... я не знаю в чём дело Отредактировано PainKonan, 15.09.2013 в 19:20. |
15.09.2013, 16:27 | #14
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Hate
конь вакуумный
offline
Опыт:
43,117Активность: |
есть такая вещь как отладка, но т.к. вы никогда статьи не откроете то уж извините |
15.09.2013, 21:19 | #15
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
PainKonan
offline
Опыт:
227Активность: |
Hate, увы, но из этих статьей про отладку я так ничего и не узнал
жаль, что мнение обо мне у вас плохое, но я не из тех, кто рвался в jass ничего не прочитав. |
15.09.2013, 22:29 | #16
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Hate
конь вакуумный
offline
Опыт:
43,117Активность: |
потому что отладка не в разделе жасса. |
15.09.2013, 23:25 | #17
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
PainKonan
offline
Опыт:
227Активность: |
Hate, не могли бы вы указать на ссылки со статьями, где говорится об отладке? (я не нашёл такие статьи, к сожалению). |
15.09.2013, 23:58 | #18
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Hate
конь вакуумный
offline
Опыт:
43,117Активность: |
|
16.09.2013, 00:07 | #19
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
PainKonan
offline
Опыт:
227Активность: |
Hate, благодарю, попытаюсь разобраться. |
16.09.2013, 16:20 | #20
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|