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

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

Ответ
 
Rampage
Бицепс
offline
Опыт: 9,722
Активность:
Ahelhot, так только кажется. Даже не прилагивает нисколько, всё видно. Боты уже готовы, смотри в описании ИИ)
Rampage добавил:
justDen, можно будет.
Старый 30.09.2010, 04:24
Rampage
Бицепс
offline
Опыт: 9,722
Активность:
Нужна помощь с ИИ, выбор собственно.
Старый 30.09.2010, 18:48
16GB
GhostOne User
offline
Опыт: 60,317
Активность:
из таверны или что?
Старый 01.10.2010, 08:24
Rampage
Бицепс
offline
Опыт: 9,722
Активность:
Ну мне надо просто допустим 16 сек. прошло и создаются герои за игроков ИИ (просто создать CreateUnit). Герои не должны повторяться. Просто создать.
Старый 01.10.2010, 09:57
silumin

offline
Опыт: 11,153
Активность:
Rampage, этот вопрос уже много раз поднимался, ноя ничего не помню. Для себя сделал бы вот как-то так:
Код:
global integer array udg_ID[x]  //Заполняем равкодами героев
global boolean array udg_Key[x]  //По-умолчанию = true

function GetRandomHeroId takes nothing returns integer
local integer i = GetRamdomInt(0,x)
  loop
    exitwhen udg_Key
    set i = GetRandomInt(0,x)
  endloop
  set udg_Key[i] = false
return udg_ID[i]
endfunction


[i]silumin добавил:

Rampage, сколько героев будет в наличии в первой доступной версии?
Старый 01.10.2010, 13:30
Rampage
Бицепс
offline
Опыт: 9,722
Активность:
silumin, 24. Думаю успею.
Старый 01.10.2010, 15:57
silumin

offline
Опыт: 11,153
Активность:
Rampage, Как я понял - тебе нужно выбирать неповторяющихся героев. Если так и есть, то объясняю...

У тебя, допустим, уже есть 24 героя.
В целочисленный массив udg_ID[23] записываешь при инициализации карты равкоды всех героев в любом порядке:
Код:
set udg_ID[0] = 'H001'
set udg_ID[1] = 'H002'
set udg_ID[2] = 'E000'
//
//
set udg_ID[22] = 'U015'
set udg_ID[23] = 'U016'

Весь логический массив udg_Key[23] = true по-умолчанию
Потом, когда игрок выбирает героя нужно будет запустить функцию такого вида, указав в параметре выбранного игроком героя:
Код:
function DisableId takes unit Hero returns nothing
local integer HeroId = GetUnitTypeId(Hero)
local integer i = 0
  loop
    exitwhen udg_ID[i]==HeroId
    exitwhen i>23
    set i = i + 1
  endloop
  if i<24 then
    set udg_Key[i] = false
  endif
endfunction

Эта функция принимает, выбранного Игроком, героя, ищет его по массиву udg_ID[] и фальсит соответсвующий логический ключ. Т.е. помечает, что этого героя уже выбрали.
Дальше, когда Игроки выбрали своих героев, назначаешь героев ИИ с помощью функции в предыдущем посте:
Код:
function GetRandomHeroId takes nothing returns integer
local integer i = GetRamdomInt(0,23)
  loop
    exitwhen udg_Key[i]
    set i = GetRandomInt(0,23)
  endloop
  set udg_Key[i] = false
return udg_ID[i]
endfunction
Функция присваивает "i" случайное значение от 0 до 23. Дальше запускается цикл с условием выхода по значению ключа udg_Key[i]. Если ключ = true, значит героя с таким ИД ещё нету и происходит выход из цикла, если ключ = false, значит такой герой уже есть и переменной "i" присваивается новое значение от 0 до 23 и цикл повторяется. Дальше, после выхода из цикла, фальсится соответствующий ключ "set udg_Key[i] = false" т.е. исключается возможность выбора этого героя. И в конце возвращается ИД героя из массива "return udg_ID[i]".

Отредактировано silumin, 02.10.2010 в 05:12.
Старый 02.10.2010, 05:06
Rampage
Бицепс
offline
Опыт: 9,722
Активность:
Так, а ретурнутый udg_ID[i] для создания как использовать? Создания героя.
Rampage добавил:
Сделал, спасибо огромное.
Rampage добавил:
Не рабит
Старый 02.10.2010, 11:17
silumin

offline
Опыт: 11,153
Активность:
Rampage,
Код:
set udg_AI_Hero = CreateUnit(Player(a),GetRandomHeroId(),0.,0.,0.)
Старый 02.10.2010, 12:23
Rampage
Бицепс
offline
Опыт: 9,722
Активность:
Не выбираются вообще никак.
Старый 02.10.2010, 12:27
silumin

offline
Опыт: 11,153
Активность:
Rampage, дело явно не в коде. Возможно ты заполнил массив udg_ID[] только под одним индексом, 0 например.
Или массив udg_Key[] равен false по-умолчанию... Проверь внимательно.
Старый 02.10.2010, 15:37
Rampage
Бицепс
offline
Опыт: 9,722
Активность:
silumin, сделал, спасибо большущее. Просто по умолчанию нет была логическая.
Rampage добавил:
Нет ты посмотри что! Берёт только один комп только одного героя... Ужас!
Старый 02.10.2010, 18:01
silumin

offline
Опыт: 11,153
Активность:
Rampage, тогда попробуй создать триггер реагирующий на нажатие эскейпа или любой стрелкии в действие вставь эту строку:
Код:
call DisplayTimedTextToPlayer(Player(0),0.,0.,3.,I2S(GetRandomHeroId()))

Запусти карту и жми несколько раз на клавишу. Если коды выводятся разные (2х-3х кратное повторение - это нормально), то функция работает нормально, и проблема в твоих скриптах. Если нет, то тогда подумаю что ещё может быть.
Цитата:
Сообщение от Rampage
только одного героя...
У тебя отключён фиксированый разброс в опциях ВЕ? Если нет - отключи. Или попробуй сам взять того героя, которого берёт постоянно комп и посмотри что будет. Но я думаю, что это всётаки в фикс-м разбросе дело.
Старый 02.10.2010, 19:47
Rampage
Бицепс
offline
Опыт: 9,722
Активность:
silumin, спасибо, теперь точно сделал. Я описку допустил в кодах героев.
Старый 03.10.2010, 06:33
justDen

offline
Опыт: 167
Активность:
Rampage:
silumin, спасибо, теперь точно сделал. Я описку допустил в кодах героев.
Карта когда будет?(
Старый 03.10.2010, 20:57
Rampage
Бицепс
offline
Опыт: 9,722
Активность:
justDen, читай информацию внимательнее. Подождите.
Старый 04.10.2010, 13:25
Rampage
Бицепс
offline
Опыт: 9,722
Активность:
Добавил новых модов. Будет весело...
Старый 07.10.2010, 13:54
Rampage
Бицепс
offline
Опыт: 9,722
Активность:
Скорее всего закончу 1 версию к указанной дате.
Старый 10.10.2010, 16:43
H
hello world
offline
Опыт: 130,725
Активность:
К новому году будет работать?
Я может даже вар назад установлю ))
Старый 10.10.2010, 18:59
Rampage
Бицепс
offline
Опыт: 9,722
Активность:
К 25 ноября сделаю.
Старый 11.10.2010, 11:20
Ответ

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

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

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

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



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