Сейчас 21:02:46 Пятница, 22 ноября, 2024 год
[ x ] Главная ⇒ Форум ⇐ RSS Файлы Cтатьи Картинки В о й т и   или   з а р е г и с т р и р о в а т ь с я


[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Модератор форума: PUVer, SirNikolas, Ty3uK  
Локальные группы и их приколы
НаклзДата: Четверг, 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
Блокировки:
Ясно спасибо. Буду искать другой вариант.
 

  • Страница 1 из 1
  • 1
Поиск:

Copyright © 2006 - 2024 Warcraft3FT.info При копировании материалов c сайта ставьте, пожалуйста, активную обратную ссылку на нас • Design by gReeB04ki ©
Хостинг от uCoz