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

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

Закрытая тема
 
MpW

offline
Опыт: 50,016
Активность:
Как правильно строить? Как определить что здание построено? Для АИ
Решил полностью триггерами сделать АИ ботов через приказы, первое что сделал перешел к строительству здании. Если есть деньги, то заставляю строить. Я строю специально через точку, говорят если там есть здание, то точка смещается. Как бы специально через точку, как бы для проверки на возможность строительства. Вот код, который строит здание относительно ратуши. Я бы хотел чтобы база по середине была насыщена этими вокруг зданиями.

Код:
local real a = GetRandomReal (0,360)
    local real x =  GetUnitX(TownHall_E) + GetRandomReal(400,600) * Cos(a * bj_DEGTORAD) 
    local real y =  GetUnitY(TownHall_E) + GetRandomReal(400,600) * Sin(a * bj_DEGTORAD) 
    local location loc = Location(x, y)
    call IssueBuildOrderById(u1, id, GetLocationX(loc), GetLocationY(loc))
    
    set a = a + 120
    set x = GetUnitX(TownHall_E) + GetRandomReal(400,600) * Cos(a * bj_DEGTORAD) 
    set y = GetUnitY(TownHall_E) + GetRandomReal(400,600) * Sin(a * bj_DEGTORAD) 
    call MoveLocation ( loc, x, y )
    call IssueBuildOrderById(u1, id, GetLocationX(loc), GetLocationY(loc))


Все работало сначала. Все строил. Правда это было началом. Код конечно длинненьким получился, писать так для каждого. Потом решил сократить код. Использовал отдельную функцию

Код:
function BuildingAI takes unit u1, unit u2, integer id, integer i returns nothing
    local real a = GetRandomReal (0,360)
    local real x = GetUnitX(u2) + GetRandomReal(400,600) * Cos(a * bj_DEGTORAD) 
    local real y = GetUnitY(u2) + GetRandomReal(400,600) * Sin(a * bj_DEGTORAD) 
    local location loc = Location(x, y)
    call MoveLocation(loc, x, y)
    call CCBuildingAI(i) //для проверки числа здании
    call IssueBuildOrderById(u1, id, GetLocationX(loc), GetLocationY(loc))
    call RemoveLocation(loc)
    set loc = null
endfunction


И начал замечать, что используя эту функцию, светлячки начинают строить в одном и том же месте, то есть приказ дан в это место. То кто первый, он уже успевает захватить участок, а кто второй, опаздывает и остается без работы. Я думаю тут локалка уже не помогает, так как видимо здания пока там не было.

Steal nerves добавил:
как от таких от избавится?
Старый 04.07.2013, 18:38
quq_CCCP
Я белый и пушистый!
offline
Опыт: 93,449
Активность:
Steal_nerves, Боты используют другие функции, почему тебе сложно написать AI через редактор ИИ?
Старый 04.07.2013, 18:41
MpW

offline
Опыт: 50,016
Активность:
quq_CCCP, я редактор ИИ не фига не понимаю. Плюс приказы юниты бота через триггеры игнорируют. Боты всегда по своему делают. Я могу сам запрограммировать их. Так интереснее

Steal nerves добавил:
quq_CCCP, я хотел бы конечно чтобы они там строили и технолошки развивали. Но мне оставили б контрить ботов.
Старый 04.07.2013, 18:47
quq_CCCP
Я белый и пушистый!
offline
Опыт: 93,449
Активность:
Steal_nerves, ну не знаю что ты не можешь контролировать ботов через тригеры, все кому не лень стандартными ботами управляют через триггеры и норм, вон компанию глянь...
Диода чтоли в лс распроси, тема даже где то была где рассказывают как ИИ пилить в редакторе ИИ, че там за что отвечает и как отдавать боту комманды....
Старый 04.07.2013, 18:54
MpW

offline
Опыт: 50,016
Активность:
quq_CCCP, не торопи, давай посмотрим во что выльеться данное творение.

Steal nerves добавил:
quq_CCCP, при чем данное АИ не расчитано на такое большее, для мили подошло бы. А учитываю какой жанр у карты

Steal nerves добавил:
(quote] даю приказы идти атаковать или любые другие приказы, он этого не делает, если они и пойдут, то игрок-компьютер отзовет для более важного, и нет возможности что то сделать. [/quote]
Старый 04.07.2013, 19:14
Hate
конь вакуумный
offline
Опыт: 43,033
Активность:
говорят если там есть здание, то точка смещается
кто дает такие авторитетные заявления?
Старый 04.07.2013, 19:15
MpW

offline
Опыт: 50,016
Активность:
Hate, наработка

Steal nerves добавил:
ну что посоветуете? пикать не вариант =((

Steal nerves добавил:
Hate, ну может я сам придумал про смещение точки, но знакомый советует использовать точку для проверки строительства. Сам я не знаю почему. Я вот и спрашиваю что там

Steal nerves добавил:
Если есть ресурсы, то здание строить, проверяешь есть ли там здание есть, то юнит не должен строить там. Но проблема такая что как проверить? Есть же размеры (площадка), которые занимают на карте место
Старый 04.07.2013, 19:40
DioD

offline
Опыт: 45,134
Активность:
говорят если там есть здание, то точка смещается
вы вообще с головой дружите?
Старый 04.07.2013, 20:18
MpW

offline
Опыт: 50,016
Активность:
DioD, хватит троллить и понтоваться, флудить) лучше помог
Steal nerves добавил:
DioD, такие идиоты как ты и флудят. вечно гордые, понтуются, и вечно злые. Вот покажи как делать?
Старый 04.07.2013, 21:06
Hate
конь вакуумный
offline
Опыт: 43,033
Активность:
за вас никто не будет делать, ага, "покажи как делать", размечтались. есть энум, есть проверка типа проходимости точки, флаг в руки
Старый 04.07.2013, 21:08
MpW

offline
Опыт: 50,016
Активность:
Hate, знаю)
Steal nerves добавил:
Hate, знаю что не прав
Старый 04.07.2013, 21:27
DioD

offline
Опыт: 45,134
Активность:
нет отладки, попробуйте еще раз, что такое отладка посмотрите через поиск, в том числе в гугле.
Старый 05.07.2013, 12:34
Закрытая тема

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

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

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

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



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