XGM Forum
Сайт - Статьи - Проекты - Ресурсы - Блоги

Форуме в режиме ТОЛЬКО ЧТЕНИЕ. Вы можете задать вопросы в Q/A на сайте, либо создать свой проект или ресурс.
Вернуться   XGM Forum > Warcraft> Академия: форум для вопросов> Jass
Ник
Пароль
Войти через VK в один клик
Сайт использует только имя.

Ответ
 
AlexKARASb
Learning cpp
offline
Опыт: 22,103
Активность:
Группы\Groups
Добрый день.
Обьясните пожалуйста этот кусок jass'a, либо статью где можно почитать как правильно работать с группами
Тему создал после нескольких неудачных действий в коде
При создании спела делал действия: переодически ссоздавал юнитов, заносил в группу, при нарушении нужного условия(else) включал триггер где по логике должно быть удаления юнитов
Попробовал проще и не получилось(ну век живи век учись)
» раскрыть
Код:
globals
    group Rgr
endglobals
function Trig_test_Actions takes nothing returns nothing
    local unit d=CreateUnitAtLoc(Player(0),'hfoo',GetRectCenter(GetPlayableMapRect()),bj_UNIT_F  ACING)
    set Rgr=CreateGroup()
    call GroupAddUnit(Rgr,d)
     call BJDebugMsg("1")
    call EnableTrigger(gg_trg_GroupTest)
endfunction
//===========================================================================
function InitTrig_test takes nothing returns nothing
    set gg_trg_test = CreateTrigger(  )
    call TriggerRegisterTimerEventSingle( gg_trg_test, 5 )
    call TriggerAddAction( gg_trg_test, function Trig_test_Actions )
endfunction

trig GroupTest
function GroupRemoveTest takes nothing returns boolean
    local unit u=GetEnumUnit()
    call RemoveUnit(u)
    call BJDebugMsg("2")
    set u=null
    return false
endfunction
function Trig_GroupLaser_Actions takes nothing returns nothing
    call BJDebugMsg("2")
    call ForGroup(Rgr,function GroupRemoveUnitsLaser)
endfunction
//===========================================================================
function InitTrig_GroupLaser takes nothing returns nothing
    set gg_trg_GroupLaser = CreateTrigger(  )
    call DisableTrigger(gg_trg_GroupLaser)
    call TriggerAddAction( gg_trg_GroupLaser, function Trig_GroupLaser_Actions )
endfunction

что есть в моих действиях не правильно?
Спасибо заранее
Старый 09.03.2010, 20:13
Elf_Stratigo

offline
Опыт: 4,699
Активность:
у второго триггера нету события
Старый 09.03.2010, 20:30
AlexKARASb
Learning cpp
offline
Опыт: 22,103
Активность:
Elf_Stratigo, зачем событие если триггер специально активируется из другого
Старый 09.03.2010, 21:05
Elf_Stratigo

offline
Опыт: 4,699
Активность:
EnableTrigger(gg_trg_GroupTest)
только выполняет разблокировку (включен/выключен, но команды выполнить - не даёт)
замени экзекутом каким-нибудь
Старый 09.03.2010, 21:08
Sunn
To feel joy, not be blue
offline
Опыт: 4,975
Активность:
Цитата:
Сообщение от AlexKARASb
Elf_Stratigo, зачем событие если триггер специально активируется из другого

Если под строкой
Код:
call EnableTrigger(gg_trg_GroupTest)

ты подразумеваешь активацию, это не так. Ты не более чем включаешь триггер, с тем чтоб он сработал в случае выполнения его условия.
Старый 09.03.2010, 21:12
Elf_Stratigo

offline
Опыт: 4,699
Активность:
call TriggerExecute( gg_trg_GroupTest )
вот этим замени)))))))))
Старый 09.03.2010, 21:21
AlexKARASb
Learning cpp
offline
Опыт: 22,103
Активность:
спасибо, я лол :D
а если честно просто не знал, думал что включить значит запустить
тему можно клоуз
Старый 09.03.2010, 21:37
DioD

offline
Опыт: 45,134
Активность:
тупость а не код, если нет события то и разделять триггеры не надо.
Старый 09.03.2010, 21:42
AlexKARASb
Learning cpp
offline
Опыт: 22,103
Активность:
DioD, иногда меня удивляеш, цитата"Попробовал проще", что-то говорит?
Просто взял сделал простой код чтобы удостоверится, правильно ли я группу удаляю.
Старый 09.03.2010, 22:09
XOR

offline
Опыт: 38,159
Активность:
Простой код нужно тем более без ошибок. xgm.ru/forum/showthread.php?t=18742&highlight=Adolf
Старый 09.03.2010, 22:18
AlexKARASb
Learning cpp
offline
Опыт: 22,103
Активность:
XimikS, спасибо, за ссыль Oh, my God, надо переписать всё с нуля D=, мдо так 80% того что я писал не есть гуд, вот засада

AlexKARASb добавил:
Наверно требовалось создать новую тему, ну в принцепе в этой мало что было полезного написано
так что вопрос:
ADOLF, пишет что использование простого "return GetSpellAbilityId() == 'A000' " не есть правильно(эх почему сразу в статье сергея не заменить =\), а пользоваться бинарным деревом
Ну начиная с него: напишите мне пожалуйста простой пример бинарного дерева ато я немного не понял; что понял: вместо нескольких триггеров с ретур гетспел, надо заменить на 1триг с проверкой ИДспела, если да then выполнять спел для одного, иначе для другого;

Если предположение неправильнок скажите(приелось уже учить заного :D)

Цитата:
линейный поиск, но потом переделать под дерево.

линейный поиск, есть что?
Старый 10.03.2010, 22:42
XOR

offline
Опыт: 38,159
Активность:
if GetSpellAbilityId() == 'ANcl' then
call(быстрее ExecuteFunc)
Старый 11.03.2010, 07:47
DioD

offline
Опыт: 45,134
Активность:
В данном случае единственным верным будет забить на производительность, так как вы не тянете никак ту зачаду которую поставили перед собой.
Вообще для огромного чила задач решение только одно.
Старый 11.03.2010, 08:11
AlexKARASb
Learning cpp
offline
Опыт: 22,103
Активность:
DioD, и сам вижу, ну хотя бы пополнять знания медленно и по немногу, можно
Старый 11.03.2010, 16:34
AlexKARASb
Learning cpp
offline
Опыт: 22,103
Активность:
Прошу обьяснить простым кодом, иль словами, короткий пример бинарного дерева о котором в статье говорил Адольф
Непойму почему же быстрее будет б.дерево чем простой ретурн гетспелИД, ведь перебор вродь такой же будет?
Старый 12.03.2010, 19:50
DioD

offline
Опыт: 45,134
Активность:
тебя что в гугле забанили, иди ищи что это такое.
Старый 12.03.2010, 23:39
Daemonik

offline
Опыт: 5,084
Активность:
Бинарный поиск
Ага, именно так.
Старый 13.03.2010, 14:30
AlexKARASb
Learning cpp
offline
Опыт: 22,103
Активность:
только недавно заметил удивляться не стоит я новичек всеж
у каждого спела код в jass не 4 символа на набор из 0x41303045 таких чисел
В бинарном дереве 0x41303045(ну похожий всмысле) этот интеджер значит сравнивать?
Старый 20.03.2010, 15:22
Ответ

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы можете скачивать файлы

BB-коды Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход



Часовой пояс GMT +3, время: 06:38.