13

» WarRaft / JASS-ANTLR-Kotlin-VSCode

ScorpioT1000, да научить бы лаунчер симулировать локалку. Ладно тут два пути, мне кажется, либо все в карту пихнуть но вес карты будет большой. Либо действительно будущее за UjAPI.
13

» WarCraft 3 / Вывод сообщения на экран о количестве юнитов (I2S не работает в ИИ)

Совет. Установи AMAI интегратор. Сделай карту с AMAI посмотри код файлов .ai. Поймёшь, что ты уже проходишь, этап создания ИИ в мили картах, но только в самом начале. И поймёшь, что поиск пути тебе не даст покоя. В будущем.
13

» WarCraft 3 / Использование кастомного кода

Svintus, некоторые функции работающие в файле .j могут не работать в файле .ai. common.ai - это общие функции всех расс, а, например, human.ai только для людей.
13

» WarRaft / JASS-ANTLR-Kotlin-VSCode

Нужен сервер, который принимает запросы и от варкрафта без лаунчера и с лаунчером. А Новые модельки надо подгружать в карту. И иконки. Кто напишет такой сервер? Вообщем я бы поразбирался бы в этом, если бы дали исходники сервера. Да но вопрос в картах. ( Только сервак может создавать карты. Получается. Или бред? Всем нужен лаунчер всё равно. Из-за Ангел Скрипта.
13

» Таверна Хаоса: Марш Хаоса (HD for 1.26a!) / Warcraft III: DFates Classic Forge Mod

Люди играют в рефорджиде на классическом интерфейсе, а ты наоборот делаешь. Улыбнуло. Мне классический больше нравится.
13

» Таверна Хаоса: Марш Хаоса (HD for 1.26a!) / Warcraft III: DFates Classic Forge Mod

nazarpunk, я на этой шутке до сих пор не пойму как запустить второй поток. А как же алгоритм поиска пути?
13

» 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 юнитов не сохраняться, если сам не подправишь код. Если хочешь искать юнитов то тебе нужен перебиратор юнитов в группе.
Вот пример:
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 кода, ну можно. Только это не серьезно.
13

» WarCraft 3 / Небольшой вопрос касательно хэш-таблиц

Наверное, как и любая база данных требует шардирования при большом количестве записей в таблице для оптимизации поиска. Но при условии, что ты знаешь номер id. Первые сто тысяч(по id) пишешь в одну таблицу вторую сотню тысяч(по id) в другую. Но по номеру. И производительность возрастает. Если записей мало то одной хеш-таблицы за глаза.
13

» WarCraft 3 / Открытая виртуальная машина

EugeAl, вот есть статейка Как подключиться в процессу Warcraft'a 3, через Visual Studio., и ещё старая статья где обсуждалось, какой тип функций лучше с освобождение памяти после выхода из игры или нет, но подтирать приходится переменные вручную Своя нативка на С. Там если знаешь язык С, то разобраться не сложно в коде. А если интересно, как внедряется dll в карту то посмотри jass код карты чистой из этой статьи Сценарий на любом языке.
13

» WarCraft 3 / Открытая виртуальная машина

EugeAl, можешь попробовать мапхак. Всё грузится даже на 7 ке, 10 ке. Подхватывается бедагом, компилируется прямо во время игры. Вот пример: Пятиминутка в вампов. А если сможешь подключить и библиотеки msvcp100.dll и msvcr100.dll в карту, то я тебе спасибо скажу.
13

» WarCraft 3 / Пятиминутка в вампов

Добился уровня Шелдона, сделал сетевую игру. Выкладываю новую версию.
13

» WarCraft 3 / [UjAPI] ODE Physics API

Cancel, может он этот движок куда-нибудь да приспособит. Почему безумные?
13

» WarCraft 3 / [UjAPI] ODE Physics API

Cancel, это не безумие это изменённый игровой движок для Варкрафта. А безумие это делать, что-то без ума. Что не приведёт ни какой пользы.
13

» WarCraft 3 / Поймай вампира

Filosoft, UjAPI - AngelScript. Там есть инструкция по включению AngelScript в лаунчер ("Как пользоваться?").
13

» WarCraft 3 / Поймай вампира

Так как я не разобрался, как сделать второй поток в AngelScript. Пока боты в этой карте отменяются.
13

» WarCraft 3 / Поймай вампира

Ev3nt, нежели разбирать сотни новых нативок, я лучше ботов поделаю в разных картах, используя старые нативки, всё равно этим интерфейсом мне сейчас без бота денег не сделать. А вот как по мне так мне интересней играть с ботами нежели с людьми. И выжимать по полной переигрывая снова и снова. У меня ещё слауер дефенс припасён в рукаве.)