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

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

Закрытая тема
 
Novikov
Kicked by GadenbIsh
offline
Опыт: 417
Активность:
Неправильно работает native GroupRemoveUnit
Здравствуйте. У меня опять вопросы :) В карте, которую вы видите в приложении происходит следующее:
1)Первый триггер записывает в глобальную переменную Gr (типа «отряд») юнитов, находящихся возле паладина.
2)Второй триггер создаёт локальную переменную g (типа «отряд»), и в неё передаёт то, что было записано в глобальной переменной Gr. А затем из локальной переменной g удаляется юнит, который был атакован (удаляется с помощью native GroupRemoveUnit).
3)Третий триггер убивает всех юнитов, входящих в группу Gr, если паладин применяет какое-нибудь заклинание. Но юниты, которые до этого подвергались атаки, не умирают. А это значит, что native GroupRemoveUnit удалил этих юнитов не только из локального отряда g, но и из глобальной группы Gr…
Вопрос такой: можно ли удалить юнита из g (в которую передавалось значение из Gr) чтобы при этом Gr не изменялось?
Прикрепленные файлы
Тип файла: w3x GroupRemoveUnit.w3x (17.3 Кбайт, 3 просмотров )
Старый 27.07.2011, 21:21
DotaMaster666
Silenced by GadenbIsh
offline
Опыт: 1,259
Активность:
А это значит, что native GroupRemoveUnit удалил этих юнитов не только из локального отряда g, но и из глобальной группы Gr…
Уже из поста понятно, что вы путаете понятие переменной и понятие объекта. Если знакомы с программированием - то в Jass все переменные - указатели, и при перезаписи из одной переменной на другую конструктор копирования вызван не будет. Одним словом в вашем случае обе переменные ссылаются на одну и ту же группу. Возможно надо создавать новую группу, копировать туда юнитов за исключением удаляемого.
Старый 27.07.2011, 21:35
Novikov
Kicked by GadenbIsh
offline
Опыт: 417
Активность:
Всё, я понял, спасибо, DotaMaster. Нужно было создавать новую группу не так:
local group g = udg_Gr
а так:
local group g = CreateGroup()
call GroupAddGroup( udg_Gr , g )
Прикрепленные файлы
Тип файла: w3x GroupRemoveUnit2.w3x (17.4 Кбайт, 4 просмотров )
Старый 27.07.2011, 22:21
silumin

offline
Опыт: 11,153
Активность:
Цитата:
Сообщение от DotaMaster666
Возможно надо создавать новую группу, копировать туда юнитов за исключением удаляемого.

Или пикнуть локальную группу заново...
Старый 27.07.2011, 22:21
Закрытая тема

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

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

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

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



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