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

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

Ответ
 
Sailar

offline
Опыт: 8,555
Активность:
Массив и игровые обекты
У меня возник вопрос хотя я знаю как это обойти но всёже надо знать как и с массивом делать. Итак допустим при инициализации карты я создал массив из юнитов ubg_unit[1]=такому-то и так до 25 т.е 25юнитов в переменно с массивом. Задача такова. Придположем триггер который будит работать с этими юнитами должен выбрать случайное число в массиве с юнитом, и произвести действия с этим юнитом. Выберает и производит однако если юнита убивают (далее)
Старый 13.03.2008, 16:31
Hexus
Looking for a victim
offline
Опыт: 19,166
Активность:
А не подходит pick random unit from unit group?
Старый 13.03.2008, 16:37
S

offline
Опыт: 43,833
Активность:
допустим, название массива - Q, и юниты в него уже записаны, тогда
Код:
function killrandomunitq takes nothing returns nothing
local integer i = GetRandomInt(1,25)
call KillUnit(Q[i])
set Q[i]=null
set i=0
endfunction


Убьет рандом юнита в массиве...
Старый 13.03.2008, 16:38
Sailar

offline
Опыт: 8,555
Активность:
То триггер обрываеться однако надо выбрать другой юнит с рандом и рандом может оказаться этим же юнитом мёртвым. Следовотельно скрипт перестаёт работать . Решаеться это просто бесконечным массивом с проверкой больше у юнита хп чем 0 или нет если да то рандом опять и так пока невыпадит живой юнит. Однако это юниты а если этот обект неимеет в себе реальных и целых чисел. Массив региона или трекабла то надо из рандома исключить цифру (далее)

KLAUD добавил:
Т.е если выпадала 5 то надо исключить 5. Только не закладывать это же заного в массивы обекты я имею ввиду вобщем как исключить это число
Старый 13.03.2008, 16:54
Toadcop

offline
Опыт: 54,313
Активность:
Sasha +1 xD я понял главную идею твоего примера впринцыпе это надо кудато в коментники закинуть =)
Старый 13.03.2008, 19:45
FellGuard
Losyash
offline
Опыт: 39,547
Активность:
решается сортировкой массива и урезанием лимита с каждым новым убитым юнитом :)

FellGuard добавил:
ща накожу, не опережайте)

FellGuard добавил:
Код:
function EliminateRandom takes nothing returns boolean
  local integer i
  local boolean b = false
  if (udg_Limit > -1) then
    set i = GetRandomInt(0,udg_Limit)
    call KillUnit(Q[i])
    set Q[i] = Q[udg_Limit]
    set Q[udg_Limit] = null
    set udg_Limit = udg_Limit - 1
    set b = true
  endif
  return b
endfunction
Старый 13.03.2008, 20:12
adic3x

offline
Опыт: 108,439
Активность:
  1. юзать юнит группы и морочить голову
  2. при убийстве, если вам так хочеться массивом делать просто сдвигать крайнего юнита, что бы массив был плотным
Старый 14.03.2008, 13:07
Ответ

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

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

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

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



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