30

» WarCraft 3 / Как сделать респ мобов?

Возможно пациент не знает что такое хэндл (как и я)
Для таких случаев существуют статьи.
сделать тоже самое но только в проверке указать тип следующего юнита, и так столько раз сколько у тебя типов юнитов
В самом же вопросе указано:
например 20 разных областей и 20 одинаковых юнитов

Так как я не разбираюсь в гуях, то напишу пример на lua без идиотских проверок на тип юнита

do
	local table = {} -- используем таблицу для сзапоминания юнитов
	
	-- создаём функцию для удобного спавна
	---@param player player
	---@param raw integer
	---@param rct rect
	function SpawnGuard(player, raw, rct)
		-- получаем координаты рэкта
		local minX, maxX, minY, maxY = GetRectMinX(rct), GetRectMaxX(rct), GetRectMinY(rct), GetRectMaxY(rct)
		-- создаём юнита
		local unit                   = CreateUnit(player, raw, math.random(minX, maxX), math.random(minY, maxY), math.random(0, 359))
		-- сохраняем хэндл в таблицу
		table[GetHandleId(unit)]     = rct
	end
	
	-- отлавливаем смерть юнитов
	local trigger = CreateTrigger() -- создаём триггер
	for i = 0, bj_MAX_PLAYER_SLOTS-1 do
		-- перебираем все слоты игрока
		TriggerRegisterPlayerUnitEvent(trigger, Player(i), EVENT_PLAYER_UNIT_DEATH) -- регистрируем событие смерти
	end
	TriggerAddAction(trigger, function()
		-- добавляем действия в триггер
		local unit   = GetTriggerUnit() -- получаем юнита
		local handle = GetHandleId(unit) -- получаем хэндл юнита
		if table[handle] == nil then return end -- проверяем его наличие в таблице
		local raw    = GetUnitTypeId(unit) -- запоминаем тип юнита на случай внезапного исчезновения хэндла
		local player = GetOwningPlayer(unit) -- запоминаем владельца по той же причине
		
		-- стартуем таймер
		TimerStart(CreateTimer(), 20, false, function()
			SpawnGuard(player, raw, table[handle]) -- спавним юнита по новой
			table[handle] = nil -- подчищаем за собой
			DestroyTimer(GetExpiredTimer()) -- не забываем удалять отработанные таймеры
		end)
	
	end)

end

-- Где-то ниже по коду
do
	local InitGlobalsOrigin = InitGlobals
	function InitGlobals()
		InitGlobalsOrigin()
		SpawnGuard(Player(PLAYER_NEUTRAL_AGGRESSIVE), FourCC('hfoo'), gg_rct_myGuardRect)
		SpawnGuard(Player(PLAYER_NEUTRAL_AGGRESSIVE), FourCC('hfoo'), gg_rct_myGuardRect1)
		SpawnGuard(Player(PLAYER_NEUTRAL_AGGRESSIVE), FourCC('hfoo'), gg_rct_myGuardRect2)
		SpawnGuard(Player(PLAYER_NEUTRAL_AGGRESSIVE), FourCC('hfoo'), gg_rct_myGuardRect3)
		SpawnGuard(Player(PLAYER_NEUTRAL_AGGRESSIVE), FourCC('hfoo'), gg_rct_myGuardRect4)
		SpawnGuard(Player(PLAYER_NEUTRAL_AGGRESSIVE), FourCC('hfoo'), gg_rct_myGuardRect5)
		SpawnGuard(Player(PLAYER_NEUTRAL_AGGRESSIVE), FourCC('hfoo'), gg_rct_myGuardRect6)
	end
end 
30

» WarCraft 3 / Как изменить скорость анимации у спрайта перезарядки?

о да, это то, ради чего мы ждали кастомный интерфейс... гуд
Вам никто не обещал золотые горы и простоту разработки кастомного интерфейса.
30

» WarCraft 3 / Как сделать анимацию перезарядки для кастомных кнопок (фреймов)?

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

» WarCraft 3 / Космодесантник

Принятый ответ
Огненная атака и почему ее не возможно дать другому персонажу. В чем прикол именно этого персонажа?
В том что огонь часть модели юнита.
30

» WarCraft 3 / Глючит карта

Редактор вылетает, если выделять курсором. Но можно же тупо нажать Ctrl+A.

Сейчас проверил, вылетает, но я точно так делал на 1.31. Наверно кольца Юпитера не под благоприятным углом.
30

» WarCraft 3 / двумерный массив lua

И если хочешь получать/посылать число указывая номер игрока и число - тогда либо хеш-таблица (именно так они и работают)
Хэштаблицы в lua это глупо
30

» WarCraft 3 / двумерный массив lua

И почему так сложно заглянуть в документацию?
Для шести значений можно и одномерный массив использовать
do
	local mytable = {}
	local length  = 6
	
	---@param player player
	---@param num integer
	---@param value any
	function SetPlayerValue(player, num, value)
		mytable[GetPlayerId(player) * length + num - 1] = value
	end
	
	---GetPlayerValue
	---@param player player
	---@param num integer
	---@return any
	function GetPlayerValue(player, num)
		return mytable[GetPlayerId(player) * length + num - 1]
	end
end

GetPlayerValue(GetTriggerPlayer(), 6) --> шестое значение для GetTriggerPlayer
30

» WarCraft 3 / Как сделать так, чтобы магазин не мог ничего продать игроку

Профит! Теперь у тебя есть магазин,который переходит под влияние игрока кторый кликнул и купить из него может только кликнувший игрок.
А потом к магазину подходят два игрока и начинается война кликов))
30

» WarCraft 3 / Расстояние до цели

У меня карта на удержание, работает только против ботов. Цель станится - так что не убежит
Это же гениально - вместо написания нормального заклинания, городится куча костылей. Которая со временем будет наростать снежным комом по парабуле.
30

» WarCraft 3 / Как сделать рывок в версии 1.26?

Особенно видно даже не вглядываясь когда герой летит на большие расстояния со скоростью 2500-3000 ед. в секунду, он будет телепортироваться на дистанции по 90 единиц, это прям очень заметно и глаза режет.
Это из разряда: я хочу перенести героя на противоположный край карты за 1/100500 секунды, но он почему-то не летит плавно.
30

» WarCraft 3 / Как сделать рывок в версии 1.26?

0.03 более чем достаточно, 0.02 край
А как же волшебный тик в 0.03125?))
Ничего никогда не фаталило и не лагало, играл 10х10 так и ничего подобного не было замечено из-за этого, бред)
А сколько таймеров одновременно запускалось?
30

» WarCraft 3 / Приведите примеры работы с SetUnitLookAt

ну а кто лазит твоего пк =)
Здрасте приехали, мемхак из карты может исполнять что угодно на компе юзера.
30

» WarCraft 3 / Приведите примеры работы с SetUnitLookAt

так это на стороне клиента а есть так серверный который определяет куки даже если украдете =)
Я крал у себя куки и авторизировался на vk и xgm. В куках хранится только токен сессии и он не отличает один браузер от точно такого же второго.

Можете прикрепить к сообщению содержимое C:\Users\<your_username>\AppData\Local\Google\Chrome\User Data\Default\ и посмотрите, как у меня ничего не получится))
с паролем страшные вещи, конечно.
Поэтому и ненужно разрешать кому попало лазить по вашей памяти))
30

» WarCraft 3 / Приведите примеры работы с SetUnitLookAt

тебе и придется только http воровать! А через https не украдете даже подмените файлы. Так как в ней строго определяет пользователя
Что-то я не вижу здесь чёткого определения пользователя
И не забывайте, что я могу тупо спереть пароли без всякого гемороя.
Загруженные файлы
30

» WarCraft 3 / Расстояние до цели

Во правильная картинка и все работатет!
Правда через одно место. Эту способность можно абузить, отменяя приказ. Притом вэйт игнорирует паузу игры по сети.
30

» WarCraft 3 / Как сделать рывок в версии 1.26?

Принятый ответ
там не сказано, как такое сделать.
Как двигать юнитов написано например здесь, жаль о том как юзать поиск нигде не написано
30

» WarCraft 3 / Приведите примеры работы с SetUnitLookAt

Я, конечно, извиняюсь, но как можно своровать куки?
Например так:
C:\Users\$username\AppData\Local\Google\Chrome\User Data\Default.
С учётом того, что хранить через куки конфиденциальную информацию крайне глупо, тырить куки тоже глупо.
Подменив куки в своём браузере можно например получить авторизированную сессию. А ещё можно угнать файл паролей. Я для теста угнал его у себя и поместив их в хром на другом компе получил автоввод всех сохранённых паролей. Ну а Chrome Password Decrypter мне их прекрасно расшифровал.
Хотел даже статью написать, как это сделать, но мне пригрозили баном на веки вечные.
30

» WarCraft 3 / Приведите примеры работы с SetUnitLookAt

Потому что новый патч до сих пор не поддерживает без лютого шаманства то, что можно комфортно сделать на мемхаке?
Например создание новых фрэймов?
А доступ к памяти вообще куда важнее пары десятка костыльных функций, данных как подачка.
И почему всем нетерпится лазить по моей памяти и воровать мои куки?
А если говорить про луа, то это надо ждать, пока полноценно рефорджед вылезет и получит первый десяток патчей.
Незнаю на какой барахолке вы покупали луа, но в 1.31 он прекрасно работает.
30

» WarCraft 3 / Расстояние до цели

Принятый ответ
Я же писал статью про движение снарядов. Так же можете посмотреть код заклинания или вспомнить школьные уроки математики
Загруженные файлы