KaneThaumaturge, я даже не играл в неё, но наслышан. От XiBit'ов. И фотки посмотрел. Мне хватает шахмат да варика за глаза сейчас. Делал стимуляторы лототронов копий, чтобы понять на сколько мне повезло в одном из них. Понял, что крупно повезло по моим меркам. Больше не играю.
Феникс, а мне Торговая империя нравится игра. Даже хотел бота для неё написать, но это слишком сложно и кому оно нужно? А для себя любимого - это слишком долго и в дальнейшем бесперспективно. Лучше быть реалистом. И жить, как живёшь и смотреть на сегодняшний день. Я бы хотел быть предпринимателем продавать воду во все страны, строить опреснительные станции. Но я инвалид по эпилепсии и могу пока только в огороде работать, да зимой попрограммировать. Работу предлагают я отказываюсь из-за родителей. Вот до чего дошло.
Extremator, если жена треплет нервы, то можно понять или состояние здоровья. А так может идея была плохая, что она не достойна, того чтобы ей быть законченной?
Darkmen500, идея решает. А кто-то в команде не умеет работать и может долго пилить свой проект. Кто-то одноглазых драконов делает, космические корабли работающие на кристаллах, как в Шторм гейте, но кто на такой не правдоподобной тематике будет играть? Не знаю кому как, а мне такое фентези не нравится. Да и вообще создать захватывающий лор для воин в космосе будет сложно. Получается звёздные войны. Мне по душе развитие одной планеты во все времена. А космическая тематика угнетает. Так как развитие двух планет может привести к хаусу в будущем из-за сил физики. Хотят создать конкуренцию Близам? Так пусть, сделают, что-то получше, чем делать говнище в которое мало, кто будет играть.
PUVer, а сколько тебе лет? Ты столько моделек на создавал я гляжу. И на заказ работы берёшь и модерируешь очень много чего. Ты учишься? Потом этот опыт тебе в разработке игр пригодится? Я вот только в гта 4 делал модельки и то считаю этот труд очень сложным. Но дальше фана не ушёл. Надеюсь у тебя будут покупать их если Варкрафт будет хорошо развиваться. А он и так хорошо развивается, только Близам в карман. Ты для других игр создаёшь модельки?
LastUchiha, ну я на С++ вампов программную, я jass'a боюсь, как полноценной платформы для ботоводства. Поэтому и развёртываю пустые переменные.) Случайно.
ScorpioT1000, да научить бы лаунчер симулировать локалку. Ладно тут два пути, мне кажется, либо все в карту пихнуть но вес карты будет большой. Либо действительно будущее за UjAPI.
Совет. Установи AMAI интегратор. Сделай карту с AMAI посмотри код файлов .ai. Поймёшь, что ты уже проходишь, этап создания ИИ в мили картах, но только в самом начале. И поймёшь, что поиск пути тебе не даст покоя. В будущем.
Svintus, некоторые функции работающие в файле .j могут не работать в файле .ai. common.ai - это общие функции всех расс, а, например, human.ai только для людей.
Нужен сервер, который принимает запросы и от варкрафта без лаунчера и с лаунчером. А Новые модельки надо подгружать в карту. И иконки. Кто напишет такой сервер? Вообщем я бы поразбирался бы в этом, если бы дали исходники сервера. Да но вопрос в картах. ( Только сервак может создавать карты. Получается. Или бред? Всем нужен лаунчер всё равно. Из-за Ангел Скрипта.
Патруль - это когда ходит юнит туда сюда и атакует всех вражеских на пути.
Объявляешь таймер local timer vTimer, создаёшь таймер set vTimer = CreateTimer(), уничтожаешь потом таймер call DestroyTimer(vTimer), запускаешь таймер call TimerStart(vTimer,1,function fMyFunction). В войдоской функции fMyFunction пишешь цикл по всем игрокам и их героям. Если юнита создавал через jass, то должны сохраниться id юнитов set vHero1 = CreateUnit(Player(10),ID_HERO_1,0,0,0), объявлять юнита следующим образом local unit vHero1. Если через редактор вставлял юнитов, то они как не странно будут в jass, но id юнитов не сохраняться, если сам не подправишь код. Если хочешь искать юнитов то тебе нужен перебиратор юнитов в группе.
Вот пример:
function fGetUnit takes integer vId, player vPlayer returns unit
local group g=CreateGroup()
local unit u;
call GroupEnumUnitsOfPlayer(g,vPlayer,0);
loop
set u=FirstOfGroup(g)
if (GetUnitTypeId(u)==vId) then
call DestroyGroup(g)
return u
endif
call GroupRemoveUnit(g,u)
endloop
call DestroyGroup(g)
return 0
endfunction
Углы искать между юнитами тебе нужно поучить тригонометрию, а в особенности sin и cos что будет расстояние между двумя точками x1, y1, x2, y2. А тебе нужен противоположенный угол и радиус на сколько убегать. Вообще интересно увидеть всё это в деле.
Если нужно перебирать в радиусе то вот вот функция GroupEnumUnitsInRange(group,x,y,radius,function filter можно 0) для перебирания.
Если вражеский бос id и rect совпадают то бос определён.
Цикл по игрокам компьютерам можешь имя сравнить local string vStr, set vPlayer = Player(0..11), set vStr = GetPlayerName(vPlayer). Может есть другой способ определить ИИ, я не знаю.
Приказ кастануть спелл на цель set vBool = IssueTargetOrderById(u,ID_ORDER,u2), просто нажать кнопку set vBool = IssueImmediateOrderById(u,ID_ORDER), в точку set vBool = IssuePointOrderById(u,ID_ORDER,x,y)
Юнитов лучше сохранять в хеш таблице, и брать данные из хеш-таблицы set vHT = InitHashtable()
call SaveInteger(vHT, parentKey, childKey, value)
set vInt = LoadInteger(vHT, parentKey, childKey)
set parentKey = GetExpiredTimer()
childKey = CONST_HERO_1
p.s. И если ты хочешь сделать сложного бота без дебагера, на jass, то это вряд ли у тебя получится. Так как тыкаться в jass коде без знания параметров каждой переменной это издевательство над собой. Да ещё и с таким опытом, который описан выше. Мапхак тебе в помощь. А если простой бот, так потренироваться по написанию jass кода, ну можно. Только это не серьезно.
Наверное, как и любая база данных требует шардирования при большом количестве записей в таблице для оптимизации поиска. Но при условии, что ты знаешь номер id. Первые сто тысяч(по id) пишешь в одну таблицу вторую сотню тысяч(по id) в другую. Но по номеру. И производительность возрастает. Если записей мало то одной хеш-таблицы за глаза.
EugeAl, вот есть статейка Как подключиться в процессу Warcraft'a 3, через Visual Studio., и ещё старая статья где обсуждалось, какой тип функций лучше с освобождение памяти после выхода из игры или нет, но подтирать приходится переменные вручную Своя нативка на С. Там если знаешь язык С, то разобраться не сложно в коде. А если интересно, как внедряется dll в карту то посмотри jass код карты чистой из этой статьи Сценарий на любом языке.
EugeAl, можешь попробовать мапхак. Всё грузится даже на 7 ке, 10 ке. Подхватывается бедагом, компилируется прямо во время игры. Вот пример: Пятиминутка в вампов. А если сможешь подключить и библиотеки msvcp100.dll и msvcr100.dll в карту, то я тебе спасибо скажу.
» Game Dev / Вот почему маркетинг не спасёт вашу инди игру
» Game Dev / Вот почему маркетинг не спасёт вашу инди игру
» Game Dev / Вот почему маркетинг не спасёт вашу инди игру
» WarCraft 3 Legends / Закрытие проекта WarCraft Legends
» Game Dev / Вот почему маркетинг не спасёт вашу инди игру
» WarCraft 3 / Снеговик
» WarCraft 3 / Снеговик
» WarCraft 3 / Снеговик
Ред. Vampir_kolik
» WarCraft 3 / Помогите (ошибка)
» WarCraft 3 / Помогите (ошибка)
» WarRaft / JASS-ANTLR-Kotlin-VSCode
» WarCraft 3 / Как создать свою систему локаций? - [Jass]
» WarCraft 3 / Вывод сообщения на экран о количестве юнитов (I2S не работает в ИИ)
Ред. Vampir_kolik
» WarCraft 3 / Использование кастомного кода
» WarCraft 3 / Помогите (ошибка)
» WarRaft / JASS-ANTLR-Kotlin-VSCode
Ред. Vampir_kolik
» WarRaft / JASS-ANTLR-Kotlin-VSCode
» Таверна Хаоса: Марш Хаоса (HD for 1.26a!) / Warcraft III: DFates Classic Forge Mod
» Таверна Хаоса: Марш Хаоса (HD for 1.26a!) / Warcraft III: DFates Classic Forge Mod
» WarCraft 3 / AI помогите
Объявляешь таймер local timer vTimer, создаёшь таймер set vTimer = CreateTimer(), уничтожаешь потом таймер call DestroyTimer(vTimer), запускаешь таймер call TimerStart(vTimer,1,function fMyFunction). В войдоской функции fMyFunction пишешь цикл по всем игрокам и их героям. Если юнита создавал через jass, то должны сохраниться id юнитов set vHero1 = CreateUnit(Player(10),ID_HERO_1,0,0,0), объявлять юнита следующим образом local unit vHero1. Если через редактор вставлял юнитов, то они как не странно будут в jass, но id юнитов не сохраняться, если сам не подправишь код. Если хочешь искать юнитов то тебе нужен перебиратор юнитов в группе.
Вот пример:
Если нужно перебирать в радиусе то вот вот функция GroupEnumUnitsInRange(group,x,y,radius,function filter можно 0) для перебирания.
Если вражеский бос id и rect совпадают то бос определён.
Цикл по игрокам компьютерам можешь имя сравнить local string vStr, set vPlayer = Player(0..11), set vStr = GetPlayerName(vPlayer). Может есть другой способ определить ИИ, я не знаю.
Приказ кастануть спелл на цель set vBool = IssueTargetOrderById(u,ID_ORDER,u2), просто нажать кнопку set vBool = IssueImmediateOrderById(u,ID_ORDER), в точку set vBool = IssuePointOrderById(u,ID_ORDER,x,y)
Юнитов лучше сохранять в хеш таблице, и брать данные из хеш-таблицы set vHT = InitHashtable()
call SaveInteger(vHT, parentKey, childKey, value)
set vInt = LoadInteger(vHT, parentKey, childKey)
set parentKey = GetExpiredTimer()
childKey = CONST_HERO_1
» WarCraft 3 / Небольшой вопрос касательно хэш-таблиц
» WarCraft 3 / Открытая виртуальная машина
» WarCraft 3 / Открытая виртуальная машина
» WarCraft 3 / Пятиминутка в вампов
» WarCraft 3 / Пятиминутка в вампов