![]()
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. |
![]() |
#1
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
LOR_D
![]() ![]() offline
Опыт:
8,450Активность: |
PainKonan, очевидно же, что в функциях где вы используете эти переменные, они не объявлены. Вы объявили переменные i и u в Trig_UdarGroma1_Actions и только там вы ими можете пользоваться. |
![]() |
#2
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
PainKonan
![]() offline
Опыт:
227Активность: |
LOR_D, а если объявить переменные в функциях, где они не объявлены, то это будут разные переменные? (т.е. в каждой функции свои переменные?). |
![]() |
#3
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
Hate
конь вакуумный
![]() ![]() offline
Опыт:
43,033Активность: |
читать статьи, и про форматирование на форуме |
![]() |
#4
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
LOR_D
![]() ![]() offline
Опыт:
8,450Активность: |
PainKonan, да, разные. |
![]() |
#5
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
Cosonic5
Моймозггоритогнем
![]() ![]() offline
Опыт:
13,584Активность: |
да тут не столько ошибку сколько код надо исправить |
![]() |
#6
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
16GB
GhostOne User
![]() ![]() offline
Опыт:
60,317Активность: |
Ошибка в том что переменная i только в одной функции видна, там где ты её объявил (Trig_UdarGroma1_Actions) в других её не существует.
Отредактировано 16GB, 15.09.2013 в 13:08. |
![]() |
#7
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
PainKonan
![]() offline
Опыт:
227Активность: |
Благодарю за помощь.
Тогда можно ли задать все локальные переменные в самом начале: до того, как мы начинаем задавать функции (чтобы эти переменные распространялись на все функции)? (иначе я не знаю, как проверить условия) Cosonic5, не знаю как его исправить, поэтому обратился за помощью сюда.
16GB, огромное спасибо, я попробую разобраться с этим) Отредактировано PainKonan, 15.09.2013 в 12:21. |
![]() |
#8
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
16GB
GhostOne User
![]() ![]() offline
Опыт:
60,317Активность: |
|
![]() |
#9
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
PainKonan
![]() offline
Опыт:
227Активность: |
16GB, я вроде разобрался, как ты сделал, но прибавка к силе не происходит |
![]() |
#10
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
16GB
GhostOne User
![]() ![]() offline
Опыт:
60,317Активность: |
подправил |
![]() |
#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 )) |
![]() |
#12
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
16GB
GhostOne User
![]() ![]() offline
Опыт:
60,317Активность: |
у меня всё работает, только надо
call SetHeroStr(c,i,true)
на это
call SetHeroStr(c,GetHeroStr(c,true)+i,true) |
![]() |
#13
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
PainKonan
![]() offline
Опыт:
227Активность: |
16GB, это тоже исправил, но всё равно не работает ... я не знаю в чём дело Отредактировано PainKonan, 15.09.2013 в 19:20. |
![]() |
#14
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
Hate
конь вакуумный
![]() ![]() offline
Опыт:
43,033Активность: |
есть такая вещь как отладка, но т.к. вы никогда статьи не откроете то уж извините |
![]() |
#15
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
PainKonan
![]() offline
Опыт:
227Активность: |
Hate, увы, но из этих статьей про отладку я так ничего и не узнал
жаль, что мнение обо мне у вас плохое, но я не из тех, кто рвался в jass ничего не прочитав. |
![]() |
#16
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
Hate
конь вакуумный
![]() ![]() offline
Опыт:
43,033Активность: |
потому что отладка не в разделе жасса. |
![]() |
#17
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
PainKonan
![]() offline
Опыт:
227Активность: |
Hate, не могли бы вы указать на ссылки со статьями, где говорится об отладке? (я не нашёл такие статьи, к сожалению). |
![]() |
#18
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
Hate
конь вакуумный
![]() ![]() offline
Опыт:
43,033Активность: |
|
![]() |
#19
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
PainKonan
![]() offline
Опыт:
227Активность: |
Hate, благодарю, попытаюсь разобраться. |
![]() |
#20
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|