30

» WarCraft 3 / Как запретить продажу дерева?

это не костыль
Это костыль, ибо человек просто хочет запретить обмен деревом, а ему вместо этого придётся пилить целую систему.
30

» WarCraft 3 / AdicHelper?

Выше пояснил. 0 = false = null, в том же vJass в структурах (что являются integer) идёт сравнение с null.
А почему он тогда ругается на false > null?
30

» WarCraft 3 / Как запретить продажу дерева?

Как вариант костыльного решения, запретите весь обмен, а обмен золотом реализуйте через чат.
30

» WarCraft 3 / AdicHelper?

Объявление массива аллоцирует под него место и заполняет нулями (как calloc в C).
А почему нолями, а не null?
30

» WarCraft 3 / Правка урона

тут речь про 1.26, если не заметил.
Тогда только система отлова урона через браслет. Если самому писать лень, вот.
30

» WarCraft 3 / Пособие по публикации ресурсов

Всё же речь про те утечки памяти, которые мы можем исправить не пренебрегая функциональностью.
Да всё правильно - если не писать код, то он не создаст утечку))
30

» WarCraft 3 / AdicHelper?

Все элементы массива по умолчанию заполнены нулями.
Если б это было так, то простое объявление массива сжирало всю доступную память.
30

» WarCraft 3 / Пособие по публикации ресурсов

Любые сложные наработки на jass имеют утечки памяти =)
Осталось определиться с понятием все, сложные и утечки. Например моя наработка является сложной и имеет утечки?
30

» WarCraft 3 / Хеш-таблица и юнит

DracoL1ch:
хендл юнита не хранит ничего, это просто номер, юнит исчез - данных нет
будем знать, но PT153 же сохраняет все нужные данные, так что всё норм.
30

» WarCraft 3 / Создание проклятого рудника через триггеры

Я просто не вижу функции перевести в jass
Есть два варианта решения проблемы:
  • разобраться как оно работает
  • каждый раз клянчить о помощи
выбирайте...
30

» WarCraft 3 / AdicHelper?

При обращении к переменной без значения поток обрывается.
Правда? А посему декларация переменных поток не сбрасывается?
Вот у массивов все ячейки имеют дефолтное значение
А не обращение к несуществующему элементу массива возвращало null?
30

» WarCraft 3 / Создание проклятого рудника через триггеры

Принятый ответ
Как видно из blizzard.j они тупо удаляют рудник и ставят порченный.
--===========================================================================
-- Starting Units for Undead Players
-- - 1 Necropolis, placed at start location
-- - 1 Haunted Gold Mine, placed on nearest gold mine
-- - 3 Acolytes, placed between start location and nearest gold mine
-- - 1 Ghoul, placed between start location and nearest gold mine
-- - Blight, centered on nearest gold mine, spread across a "large area"
--
---@param whichPlayer player
---@param startLoc location
---@param doHeroes boolean
---@param doCamera boolean
---@param doPreload boolean
function MeleeStartingUnitsUndead(whichPlayer, startLoc, doHeroes, doCamera, doPreload)
	local useRandomHero = IsMapFlagSet(MAP_RANDOM_HERO) ---@type boolean
	local unitSpacing = 64.00 ---@type real
	local nearestMine = nil ---@type unit
	local nearMineLoc = nil ---@type location
	local nearTownLoc = nil ---@type location
	local heroLoc = nil ---@type location
	local peonX = nil ---@type real
	local peonY = nil ---@type real
	local ghoulX = nil ---@type real
	local ghoulY = nil ---@type real
	
	if (doPreload) then
		Preloader( "scripts\\UndeadMelee.pld" )
	end
	
	nearestMine = MeleeFindNearestMine(startLoc, bj_MELEE_MINE_SEARCH_RADIUS)
	if (nearestMine ~= nil ) then
		-- Spawn Necropolis at the start location.
		CreateUnitAtLoc(whichPlayer, FourCC('unpl'), startLoc, bj_UNIT_FACING)
		
		-- Replace the nearest gold mine with a blighted version.
		nearestMine = BlightGoldMineForPlayerBJ(nearestMine, whichPlayer)
		
		-- Spawn Ghoul near the Necropolis.
		nearTownLoc = MeleeGetProjectedLoc(startLoc, GetUnitLoc(nearestMine), 288, 0)
		ghoulX = GetLocationX(nearTownLoc)
		ghoulY = GetLocationY(nearTownLoc)
		bj_ghoul[GetPlayerId(whichPlayer)] = CreateUnit(whichPlayer, FourCC('ugho'), ghoulX + 0.00 * unitSpacing, ghoulY + 0.00 * unitSpacing, bj_UNIT_FACING)
		
		-- Spawn Acolytes near the mine.
		nearMineLoc = MeleeGetProjectedLoc(GetUnitLoc(nearestMine), startLoc, 320, 0)
		peonX = GetLocationX(nearMineLoc)
		peonY = GetLocationY(nearMineLoc)
		CreateUnit(whichPlayer, FourCC('uaco'), peonX + 0.00 * unitSpacing, peonY + 0.50 * unitSpacing, bj_UNIT_FACING)
		CreateUnit(whichPlayer, FourCC('uaco'), peonX + 0.65 * unitSpacing, peonY - 0.50 * unitSpacing, bj_UNIT_FACING)
		CreateUnit(whichPlayer, FourCC('uaco'), peonX - 0.65 * unitSpacing, peonY - 0.50 * unitSpacing, bj_UNIT_FACING)
		
		-- Create a patch of blight around the gold mine.
		SetBlightLoc(whichPlayer,nearMineLoc, 768, true)
		
		-- Set random hero spawn point to be off to the side of the start location.
		heroLoc = MeleeGetProjectedLoc(GetUnitLoc(nearestMine), startLoc, 384, 45)
	else
		-- Spawn Necropolis at the start location.
		CreateUnitAtLoc(whichPlayer, FourCC('unpl'), startLoc, bj_UNIT_FACING)
		
		-- Spawn Acolytes and Ghoul directly south of the Necropolis.
		peonX = GetLocationX(startLoc)
		peonY = GetLocationY(startLoc) - 224.00
		CreateUnit(whichPlayer, FourCC('uaco'), peonX - 1.50 * unitSpacing, peonY + 0.00 * unitSpacing, bj_UNIT_FACING)
		CreateUnit(whichPlayer, FourCC('uaco'), peonX - 0.50 * unitSpacing, peonY + 0.00 * unitSpacing, bj_UNIT_FACING)
		CreateUnit(whichPlayer, FourCC('uaco'), peonX + 0.50 * unitSpacing, peonY + 0.00 * unitSpacing, bj_UNIT_FACING)
		CreateUnit(whichPlayer, FourCC('ugho'), peonX + 1.50 * unitSpacing, peonY + 0.00 * unitSpacing, bj_UNIT_FACING)
		
		-- Create a patch of blight around the start location.
		SetBlightLoc(whichPlayer,startLoc, 768, true)
		
		-- Set random hero spawn point to be just south of the start location.
		heroLoc = Location(peonX, peonY - 2.00 * unitSpacing)
	end
	
	if (doHeroes) then
		-- If the "Random Hero" option is set, start the player with a random hero.
		-- Otherwise, give them a "free hero" token.
		if useRandomHero then
			MeleeRandomHeroLoc(whichPlayer, FourCC('Udea'), FourCC('Udre'), FourCC('Ulic'), FourCC('Ucrl'), heroLoc)
		else
			SetPlayerState(whichPlayer, PLAYER_STATE_RESOURCE_HERO_TOKENS, bj_MELEE_STARTING_HERO_TOKENS)
		end
	end
	
	if (doCamera) then
		-- Center the camera on the initial Acolytes.
		SetCameraPositionForPlayer(whichPlayer, peonX, peonY)
		SetCameraQuickPositionForPlayer(whichPlayer, peonX, peonY)
	end
end
Вот этой функцией
--===========================================================================
-- Replaces a gold mine with a blighted gold mine for the given player.
--
---@param goldMine unit
---@param whichPlayer player
---@return unit
function BlightGoldMineForPlayerBJ(goldMine, whichPlayer)
	local mineX = nil ---@type real
	local mineY = nil ---@type real
	local mineGold = nil ---@type integer
	local newMine = nil ---@type unit
	
	-- Make sure we're replacing a Gold Mine and not some other type of unit.
	if GetUnitTypeId(goldMine) ~= FourCC('ngol') then
		return nil
	end
	
	-- Save the Gold Mine's properties and remove it.
	mineX = GetUnitX(goldMine)
	mineY = GetUnitY(goldMine)
	mineGold = GetResourceAmount(goldMine)
	RemoveUnit(goldMine)
	
	-- Create a Haunted Gold Mine to replace the Gold Mine.
	newMine = CreateBlightedGoldmine(whichPlayer, mineX, mineY, bj_UNIT_FACING)
	SetResourceAmount(newMine, mineGold)
	return newMine
end
30

» WarCraft 3 / AdicHelper?

ты всегда пытаешься использовать переменную без значения. Это ошибка.
А в чём проблема переменной без значения?

zinc например позволял их объявлять.
local real x, y = 0.5, z
30

» WarCraft 3 / Как сделать для каждого игрока отдельный MultiBoard?

Где? Почему у меня не десинкают?
В комментраиях же. Сам ещё не работал с мультибордами, поэтому ничего сказать не могу.
30

» WarCraft 3 / Как сделать для каждого игрока отдельный MultiBoard?

Через локал плеера можно и в одном МБорде всё всем показывать.
Много раз слышал, что мультиборды десинкают и поэтому для каждого игрока свой создают.
30

» WarCraft 3 / Хеш-таблица и юнит

Может в переменные заносить тип юнита и номер его владельца.
Так хэндл юнита и так хранит эту информацию.
30

» WarCraft 3 / Джас код на удаление точек

и усидеть на двух стульях (GUI/Jass) будет становиться все сложнее
Особенно, когда все перейдут на lua)
30

» Наследие Альянса / Релиз кампании "Последний Страж Лордерона"

а что плохого в невидимых стенах?
Во второй миссии главный герой упирается в невидимую стену и пока не убьёт гулей, пройти не может. Удобно)
30

» Наследие Альянса / Релиз кампании "Последний Страж Лордерона"

Озвучка понравилась, прям как на пиратских дисках.
Но вот клише с неуязвимыми неписями и невидимыми стенами, серьёзно?
30

» WarCraft 3 / Как сделать надпись "загрузка..." другого цвета?

как сменить фон надписи "идёт загрузка" с синего цвета на другой
Вот этот?
Загруженные файлы