15

» WarCraft 3 / Нужна модель? - Вам сюда!

Obelick, видел, я искал, прежде чем писать сюда, немного не то, что нужно. Но все равно спасибо
15

» WarCraft 3 / Нужна модель? - Вам сюда!

Привет всем! Прошу сделать морскую вариацию обычного голема. Т.е. нужен по сути ретекстур, покрасить обычного голема в голубой цвет и накидать на него каких-нибудь морских звезд/кораллов/водорослей, чего-нибудь такого. Благодарю!
15

» WarCraft 3 / Определение чётности числа и рандом

Парни, всех благодарю за ответы! Всем проставил плюсы) Каждый ответ хорош по-своему, к тому же у меня в вопросе сразу 2 вопроса по факту, так что даже не знаю как быть с выбором ответа.
Выберу пожалуй ответ prog, так как он ответил по пунктам, что выглядит более наглядно для человека, который в последствии может найти этот вопрос. Но, повторюсь, другие ответы так же полезны и достойны. В данный момент я использую функцию rsfghd, возможно временно, после работы попробую взять больший интервал, как посоветовал prog.
15

» WarCraft 3 / Определение чётности числа и рандом

prog, звучит интересно, сейчас смутно вспоминаю, что в универе что-то такое было даже у нас. Вполне возможно, что я рассмотрю этот способ. Благодарю.
15

» WarCraft 3 / Наличие типа юнита в массиве

Сам намучился как раз сегодня с этим, подгорел с того, что обычный джасс не содержит в себе таких элементарных вещей, как Count или Size для массива и что нет функции Contains, а так же директивы continue. Так что да, сделал, как написали выше, обычным перебором.
15

» WarCraft 3 / Адекватная невосприимчивость к магии

PT153, огромная благодарность! Разобрался и настроил, все замечательно! Держи плюс, друг)
15

» WarCraft 3 / Иконки на заказ

Всем доброго времени суток. Нужна иконка для этого здоровяка. Заранее благодарю!
Загруженные файлы
15

» WarCraft 3 / Нужна модель? - Вам сюда!

Garfor, вот здесь есть серокожий грунцер www.hiveworkshop.com/threads/dire-grunts.292939. Остается только кому-нибудь накинуть ему меха, что называется.
15

» WarCraft 3 / Нужна модель? - Вам сюда!

Всем доброго времени суток! Нужна модель портрета для данной модели: www.hiveworkshop.com/threads/ice-spider.88977
Заранее благодарю!
15

» WarCraft 3 / Как заставить ИИ использовать ополченцев

В общем порядком намучившись, все же пришел к выводу, что ребята писавшие АМАИ неспроста не юзали экспрешены, по всей видимости они по какой то причине(кривизна варкрафта привет) не работают в скриптах ИИ. Пришлось написать свой велосипед, очень похожий на то, что есть у них в принципе. Функция выборки рабочих игрока:
globals
	constant player thisPlayer = Player(1)  // В моем случае синий игрок
	...
endglobals

...

//============================================================================
//  Выбираем работников нашего игрока
//============================================================================
function GetPlayerWorkers takes nothing returns group
	local group playerWorkers = null
	local group allWorkers = null
	local unit regularWorker = null
	
	set playerWorkers = CreateGroup()
	set allWorkers = CreateGroup()
	
	call GroupEnumUnitsOfType(allWorkers, "Peasant", null)
	
	loop
		set regularWorker = FirstOfGroup(allWorkers)
		exitwhen regularWorker == null
		
		if GetOwningPlayer(regularWorker) == thisPlayer then
			call GroupAddUnit(playerWorkers, regularWorker)
		endif
		
		call GroupRemoveUnit(allWorkers, regularWorker)
	endloop
	
	return playerWorkers
endfunction
И юзаем нашу функцию:
//============================================================================
//  Отряды защиты лагеря
//============================================================================
function Defenders takes nothing returns nothing
	local group playerWorkers = null
	
	...
	
	set playerWorkers = GetPlayerWorkers()
		
	call GroupImmediateOrder(playerWorkers, "militia")
	call GroupClear(playerWorkers)
	
	call CampaignDefender(1, goldMiners + lumberjacks, MILITIA)
	
	...
	
endfunction
Возможно кому то будет полезно.
15

» WarCraft 3 / Как заставить ИИ использовать ополченцев

quq_CCCP, фильтр должен пахать как надо, даже в Blizzard.j есть подобный фильтр. По поводу дебага: честно говоря не знаю, как тут правильно заниматься этим, я и пытаюсь вместо него хотя бы на экран выводить количество юнитов, чтобы понять, сколько рабочих он занес в группу.
15

» WarCraft 3 / Как заставить ИИ использовать ополченцев

quq_CCCP, в самом скрипте ИИ. По поводу дирижаблей знаю, близзы не особо заморачивались конечно. А может хотели исключить ситуацию, чтобы игрок просек фишку с покупкой дирижаблей и подлавливал бота на покупке дирижабля(как можно подловить АМАИ у таверны на покупке героя или у лавки гоблина на покупке предметов).
15

» WarCraft 3 / Как заставить ИИ использовать ополченцев

quq_CCCP, я думаю мы оба понимаем, что это костыли. У меня почти получилось, я раскопал на гитхабе исходники АМАИ, правда их методика не совсем мне нравится, но все же я убедился в том, что надо вызывать способность напрямую, сам комп этого не сделает без прямого приказа. Пока что так:
local group workers = null
local unit regularPeasant = null
local boolexpr expression = null

...

set workers = CreateGroup()
set expression = Filter(function GetPlayerWorkersExpression)
call GroupEnumUnitsOfType(workers, "Peasant", expression)
call GroupImmediateOrder(workers, "militia")

// Проверка
set countUnits = 0
loop
	set regularPeasant = FirstOfGroup(workers)
	exitwhen regularPeasant == null
	set countUnits = countUnits + 1
	call GroupRemoveUnit(workers, regularPeasant)
endloop

call DisplayTextToPlayer(GetLocalPlayer(), 0.0, 0.0, "Count: " +  I2S(countUnits))
, где функция GetPlayerWorkersExpression:
function GetPlayerWorkersExpression takes nothing returns boolean
	return GetOwningPlayer(GetFilterUnit()) == thisPlayer
endfunction
Это работает, работники стали записываться в ополчение, но пока у меня не получается разрешить 2 проблемы:
  1. Я не могу осознать, что не так с экспрешеном, функция возвращает всегда False, предположительно причина в функции GetFilterUnit, полагаю, что она всегда возвращает null. А без экспрешена выбираются вообще все работники на карте, вне зависимости от того, какому игроку они принадлежат и бегут к ратушам хвататься за оружие.
  2. По совершенно не ясной для меня причине криво работает функция конвертации целого числа в строку. Мне выводится пустота, т.е. Count:
Я пробовал выводить разные числа для интереса, он начинает выводить всякую дичь: frostarmor, music, имя одного из игроков, что угодно, но не числа.
15

» WarCraft 3 / Как заставить ИИ использовать ополченцев

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

Черт, еще порядком подбешивает, что скрипты ИИ не понимают функций из blizzard.j. Так можно было бы триггерно выбрать рабочих, отдать приказ мобилизоваться в ополчение, конвертнуть в текст и использовать в скрипте. Эх.
15

» WarCraft 3 / Как заставить ИИ использовать ополченцев

quq_CCCP, да вот по поводу того, что данная абилка юзается главным зданием альянса лишь тогда, когда рабочие начинают терпеть поблизости от него - я знаю, сам замечал неоднократно. Я попробовал вчера еще из интереса заставить ИИ не защищать пока что лагерь ополченцами, а отправить их в атаку, но тоже потерпел фиаско:
call CampaignAttackerEx(6, 6, 5, MILITIA)
call CampaignAttackerEx(3, 3, 3, RIFLEMAN)
В атаку пошли только стрелки. Разумеется, перед этим приказом я перераспределил рабочих на ресурсах:
call ClearHarvestAI()
call HarvestGold(0, 0)
call HarvestWood(0, (lumberjacks - 2))
Попробую сейчас функцию SetBuildUnit вызвать перед CampaignAttackerEx

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

Попробовал SetBuildUnit, к сожалению, результат тот же.

Жаль, что у AMAI весь код обфусцирован, было бы интересно у них глянуть, как они заставляют компьютер крипить золотые шахты с ополченцами.
15

» WarCraft 3 / Как заставить ИИ использовать ополченцев

PraetorianSM, ополчение стандартное, это для того, чтобы работники принимали участие в обороне окраин лагеря. Стандартное ополчение обычно задействуется тогда, когда бой идет неподалеку от главного здания. А тут задумка в том, чтобы работники не ждали, когда противники вырежут войска и доберутся до них.
Ev3nt, благодарю, нашел данную функцию, но что странно, в моем Blizzard.j отсутствует условие
if (townHall != null) then
Но идея понятна, нужно подходить со стороны ратуши, а не со стороны работника. Однако, в скриптах ИИ нельзя юзать функции из Blizzard.j, все мои попытки заканчивались тем, что скрипт становился нерабочим.
15

» WarCraft 3 / Бета версия Warcraft III Reforged 1.32

Интересно, следы дождя на воде и всплески от попаданий артиллерии в воду завезут или нет?