Локальные группы и их приколы
|
|
Наклз | Дата: Четверг, 27 Марта 2014, 20:59:33 | Сообщение # 1 |
10 уровень
Группа: Проверенные
Сообщений: 1431
Награды: 0
Репутация: 760
Блокировки:
| Здравствуйте! Помогите, пожалуйста, с таким раковым вопросом, как правильно объявить локальную группу юнитов? (отряд) local group O2Save call GroupAddUnit(O2Save, GetEnumUnit()) Вызывает ошибку: "Undeclared variable O2Save".
Сообщение отредактировал Наклз - Четверг, 27 Марта 2014, 21:00:12 |
|
|
|
Q1wAse | Дата: Четверг, 27 Марта 2014, 21:43:16 | Сообщение # 2 |
Группа: Проверенные
Сообщений: 1235
Награды: 0
Репутация: 286
Блокировки:
| local group g = CreateGroup()
|
|
|
|
Bibo | Дата: Четверг, 27 Марта 2014, 22:00:03 | Сообщение # 3 |
Группа: Проверенные
Сообщений: 741
Награды: 0
Блокировки:
| Перед использованием группу еще нужно создать. [code=jass]local group myGr = CreateGroup() local unit myUnit = GetTriggerUnit() call GroupAddUnit(myGr, myUnit)[/code] И еще: Функция GetEnumUnit используется в случае обращения к юниту через проход по группе посредством функции ForGroup. В обычных(GUI) триггерах она изображена как Picked Unit [code=jass]function ActionsForMyGroup takes nothing returns nothing call KillUnit(GetEnumUnit()) endfunction
function main takes nothing returns nothing local group myGr = CreateGroup() call GroupEnumUnitsInRange(myGr, .00, .00, 200.00, null) call ForGroup(myGr, function ActionsForMyGroup) endfunction[/code]
И если тебя не затруднит, в будущем оформляй код через BB.
Сообщение отредактировал Bibo - Четверг, 27 Марта 2014, 22:01:50 |
|
|
|
Наклз | Дата: Четверг, 27 Марта 2014, 22:28:44 | Сообщение # 4 |
10 уровень
Группа: Проверенные
Сообщений: 1431
Награды: 0
Репутация: 760
Блокировки:
| Про EnumUnit я и не спрашивал... это ясно. У тебя конечно красиво получилось через BB оформить (сарказм). Нужно использовать просто code, а не =jass. Я не использовал [code], потому что внутри него не работает [color=Х] который тут был нужен.
Q1wAse, дал ответ коротко и по существу, спасибо огромное за ответ, лови плюс.
Сообщение отредактировал Наклз - Четверг, 27 Марта 2014, 22:33:25 |
|
|
|
Bibo | Дата: Четверг, 27 Марта 2014, 22:45:13 | Сообщение # 5 |
Группа: Проверенные
Сообщений: 741
Награды: 0
Блокировки:
| Цитата Наклз ( ) У тебя конечно красиво получилось через BB оформить (сарказм). То бишь посдветка синтаксиса не устраивает Цитата Наклз ( ) Про EnumUnit я и не спрашивал... это ясно. ...что группу создать сначала нужно не ясно, а это ясно... Мне кажется удивляться было нечему...
|
|
|
|
Наклз | Дата: Четверг, 27 Марта 2014, 22:52:13 | Сообщение # 6 |
10 уровень
Группа: Проверенные
Сообщений: 1431
Награды: 0
Репутация: 760
Блокировки:
| Код function Trig_O2Cast_Conditions takes nothing returns boolean if ( not ( GetSpellAbilityId() == 'A008' ) ) then return false endif return true endfunction
function Trig_O2Cast_Func002Func001Func004C takes nothing returns boolean if ( ( IsPlayerAlly(GetOwningPlayer(GetEnumUnit()), GetOwningPlayer(GetTriggerUnit())) == true ) ) then return true endif if ( ( GetOwningPlayer(GetEnumUnit()) == GetOwningPlayer(GetTriggerUnit()) ) ) then return true endif return false endfunction
function Trig_O2Cast_Func002Func001C takes nothing returns boolean if ( not Trig_O2Cast_Func002Func001Func004C() ) then return false endif return true endfunction
function Trig_O2Cast_Func002A takes nothing returns nothing if ( Trig_O2Cast_Func002Func001C() ) then call GroupAddUnit(O2Save, GetEnumUnit()) call GroupAddUnitSimple( GetEnumUnit(), udg_O2Save ) else call DoNothing( ) endif endfunction
function Trig_O2Cast_Func004A takes nothing returns nothing call GroupRemoveUnitSimple( GetEnumUnit(), udg_O2Save ) endfunction
function Trig_O2Cast_Actions takes nothing returns nothing local group O2Save = CreateGroup() call ForGroupBJ( GetUnitsInRectAll(RectFromCenterSizeBJ(GetUnitLoc(GetTriggerUnit()), 500.00, 500.00)), function Trig_O2Cast_Func002A ) call TriggerSleepAction( 60.00 ) call ForGroupBJ( O2Save, function Trig_O2Cast_Func004A ) call DestroyGroup(O2Save) set O2Save = null endfunction
//=========================================================================== function InitTrig_O2Cast takes nothing returns nothing set gg_trg_O2Cast = CreateTrigger( ) call TriggerRegisterAnyUnitEventBJ( gg_trg_O2Cast, EVENT_PLAYER_UNIT_SPELL_EFFECT ) call TriggerAddCondition( gg_trg_O2Cast, Condition( function Trig_O2Cast_Conditions ) ) call TriggerAddAction( gg_trg_O2Cast, function Trig_O2Cast_Actions ) endfunction
Изменил по вашему совету, ошибка всё та же.
Сообщение отредактировал Наклз - Четверг, 27 Марта 2014, 22:56:06 |
|
|
|
Bibo | Дата: Четверг, 27 Марта 2014, 22:59:37 | Сообщение # 7 |
Группа: Проверенные
Сообщений: 741
Награды: 0
Блокировки:
| Никогда не используй функции PolledWait и TriggerSleepAction.
Добавлено (27 Марта 2014, 22:58:49) --------------------------------------------- Плюс, пытаешься обратится к переменной O2Save из функции Trig_O2Cast_Func002A. Это невозможно, так как локальные переменные видно только в пределах той функции, в которой они объявлены.
Добавлено (27 Марта 2014, 22:59:37) --------------------------------------------- Так как внутри функции Trig_O2Cast_Func002A не объявлена переменная O2Save, появляется ошибка.
Сообщение отредактировал Bibo - Четверг, 27 Марта 2014, 23:11:35 |
|
|
|
Наклз | Дата: Четверг, 27 Марта 2014, 23:09:43 | Сообщение # 8 |
10 уровень
Группа: Проверенные
Сообщений: 1431
Награды: 0
Репутация: 760
Блокировки:
| Ясно спасибо. Буду искать другой вариант.
|
|
|
|