8

» WarCraft 3 / Как сделать автосохранение через определенный промежуток времени

Стартовать таймер, в котором периодически вызывать SaveGame. Например: после вызова SavePeriodicStart будет сохранять игру раз в 100 секунд в разные файлы.
globals
int savenumber = 1
endglobals
function Save takes nothing returns nothing
	call SaveGame("mapname"+I2S(savenumber))
	set savenumber = savenumber + 1
endfunction 
function SavePeriodicStart takes nothing returns nothing
	call TimerStart(CreateTimer(),100,false,function Save )
endfunction
Но от фаталов это вас не защитит, потому что, очень часто они происходят по вполне определенным причинам, которые воссоздадутся после сохранения
8

» WarCraft 3 / Парсинг реплея

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

» WarCraft 3 / Помогите пожалуйста исправить мои некоторые ошибки на моей карте

Нестандартных героев нужно указать в константах:
Тимколор настраивается в свойствах юнита.
Загруженные файлы
8

» WarCraft 3 / Потрачено золота на постройку здания

нативка GetUnitGoldCost работала, насколько я помню, но крашила с героями.
native GetUnitGoldCost takes integer unitid returns integer
8

» WarCraft 3 / Почему не загружаются модельки с текстурами?

Текстуре нужно поставить правильный путь, чтобы варкрафт её видел. Например есть модел a.mdx, у нее есть текстура b.blp, в модели написано, что текстура должна лежать в Textures\b.blp, значит варкрафт там будет искать. Просмотрищи текстур, как правило, проверяют папку с моделью на предмет соотв. Текстуры, честные пути можно посмотреть например в ретере.
8

» WarCraft 3 / Труп через разрушенную декорацию

Если вам хочется использовать москитов, то:
call SetUnitAnimation(u,"Decay Bone")
call UnitAddAbility(u,'Aloc')
call PauseUnit(u,true)
8

» WarCraft 3 / Лимит за смерти

call AdjustPlayerStateBJ(delta,player,PLAYER_STATE_RESOURCE_FOOD_CAP)
На гуи вероятно что-то в типа игрок добавить лимит?
8

» WarCraft 3 / Хочу попробывать сварганить карту

На почти любой версии варкрафта можно сохранять почти любое количество данных. Более того, эти данные можно автоматически загружать, при необходимости.
Для этого нужно поделить данные на блоки не длиннее чем 205 символов(максимальная? длина имени игрока). Далее последовавтельно сохранить в файлы по некоторому алгоритму. Сохранять через прелоад с небольшим хаком. Грузить - тоже. Операция в определенной мере тяжелая, но, тем не менее реализуемая. Вот скрипт который может продемонстрировать автоматическую загрузку и сохранение данных. Не трудно видеть, что его можно масштабировать почти неограниченно. Синхронизацию полученных данных осуществлять через например геймкеш.
--выбор имен файлов и большого куска данных можно автоматизировать.
--сохраняем старое имя игрока.
local name = GetPlayerName(Player(0))
--данные для сохранения - загрузки - проверки.
local data1 = "data1" 
local data2 = "data2"
local data3 = "data3"
local data4 = "data4"
--имена файлов для сохранения.
file1 = "0.pld"
file2 = "1.pld"
file3 = "2.pld"
file4 = "3.pld"
--папка, в которую все это будет сохраняться.
folder = "Test\\Testmap\\"
--сохраняем данные. Можно вызывать неограниченно, но довольно медленно, все-таки.
function SaveData(data,filename)
assert(data:len()<205)
PreloadGenClear()
PreloadGenStart()
Preload(" \")\n\
\tcall SetPlayerName(Player(0),\""..data.."\")\
\tcall Preload(\" ")
PreloadGenEnd(folder..filename)
PreloadGenClear()
end

--позволяет неограниченно загружать данные из выбранной нами папки.

function LoadData(filename)
Preloader(folder..filename)
local data =  GetPlayerName(Player(0))
assert(data:len()<205)
return data
end

--сохраняем данные.
SaveData(data1,file1)
SaveData(data2,file2)
SaveData(data3,file3)
SaveData(data4,file4)

--загружаем их в другие переменные.
tdata1 = LoadData(file1)
tdata2 = LoadData(file2)
tdata3 = LoadData(file3)
tdata4 = LoadData(file4)

--проверка.
gprint(tdata1==data1)
gprint(tdata2==data2)
gprint(tdata3==data3)
gprint(tdata4==data4)

--восстанавливаем имя игрока.
SetPlayerName(Player(0),name)
Для большей надежности можно в первый файл также сохранить общее количество файлов и некий общий хэш.
Правда, вероятно, такие системы не очень нужны, раз уж ими не слишком пользуются.
Статья про синхронизацию: xgm.guru/u/N1ghtSiren/article
В этой статье есть немного про прелоад и синк таким образом: xgm.guru/p/wc3/222365
8

» WarCraft 3 / Плавающий текст периодически пропадает

Скрытые тексттаги тоже считаются. И при некоторой осторожномти их можно создавать локально
Ограничение на 100 тексттагов - сколько создано на локальной машине.
Насколько помню, в нем также учавствует текст с рудников, у критов и т.п.
Попробуйте при создании тексттага повыводить хэндл созданного через GetHandleId, если оно нулевое - вероятно, у вас достигнут лимит и нужно что-то делать. Можно например уменьшать время жизни тт.
И в целом, скорее всего, можно заменить установку видимости на дестрой. Не должно повлиять.
Но может я и ошибаюсь.
8

» WarCraft 3 / Краш карты. с крашлогом. из-за чего именно?

достаточно логично ожидать, что cmemblock - блок памяти. Возможно, ошибка связана с выделением памяти или каким либо другим этапом управления ей. Мб утечки?
8

» WarCraft 3 / Увеличивающийся от интеллекта героя урон заклинаний

Отлавливать урон с мемхаком/рефоржем, увеличивать нужные виды от чего нужно. Главное классифицировать правильно, и, вероятно, не увеличивать нулевой урон.
8

» WarCraft 3 / Как триггерно настроить более сильное отдаление камеры?

Это z-fog.
Настраивается нативкой:
native SetTerrainFogEx              takes integer style, real zstart, real zend, real density, real red, real green, real blue returns nothing
Загруженные файлы
8

» WarCraft 3 / Нанесение урона по определённой стороне

Найти всех юнитов вокруг и для них проверить, что они с нужной стороны и надамажить.
В конце концов взять рект с нужной стороны и надамажить в нем.
8

» WarCraft 3 / Tanya Degurechaff (300 Heroes)

Название аниме - неизвестно? А как же?:
Военная хроника маленькой девочки / Youjo Senki
8

» WarCraft 3 / Создание телепортов через способность.

Пример: Есть способность для установления цели телепорту, есть способность для переключения режимов.
Загруженные файлы
8

» WarCraft 3 / Создание телепортов через способность.

Есть полный набор нативных функций для этого:
native WaygateGetDestinationX       takes unit waygate returns real
native WaygateGetDestinationY       takes unit waygate returns real
native WaygateSetDestination        takes unit waygate, real x, real y returns nothing
native WaygateActivate              takes unit waygate, boolean activate returns nothing
native WaygateIsActive              takes unit waygate returns boolean
8

» WarCraft 3 / Albedo (300 Heroes)

Красота, Лепота. Спасибо за полезный труд! Так и хочется использовать где-то в моей карте.
8

» WarCraft 3 / Вопрос по переменным

в гуи 1.26 ограничения индекса массива от -8192 до 8192. тип туда не вставить, тк 4-значный равкод имеет большие цифры. там приходиться бд по другому строить: мы забиваем бд равкодов. потом нужно сравнить какой тип, пробегаем по бд равкодов циклом, вытаскиваем. неудобно как-то
Для этого есть хэш-таблицы. Собственно, в памяти ишры данные о юнитах хранятся в них же. Таюлицы луа, кстати, также являются, во многом, именно ими.
А ограничения размера массива - логичны и понятны. Массивы нужны для другого. А чтобы сохранить с массиве значения, по индексам, соответствующим всем потенциальным равкодам понадобится около 16 гб памяти, только в виде указателей. В джасовских массивах это еще больше.
И ограничения нужны именно для того, чтобы никто не пытался таким образом индексировать большими числами и не валил игру.
8

» WarCraft 3 / Замена атаки на способность

Hate
Тут наверное не обязательно даже обнулять урон. Просто поставить атаку 1-1, на мизер урона внимания можно не обращать... Ну, если у вас, конечно не количества хп порядка единицы.
8

» WarCraft 3 / Подчинение

Возможно вам подойдет способность Очарование, в стандарте её обладает темная охотница. При правильной настройке позволяет подчинить почти любого юнита.
8

» WarCraft 3 / Dummy unit

Правильно настроенный даммик может кинуть большинство правильно настроенных заклинаний мгновенно.
Для ченнелинг заклинаний - вероятно придется создавать нового.
Кроме того, если ты будешь кидать несколько заклинаний с одного дамми - ты не найдешь, каким убило цель например. Аналогично, если ты будешь кидать все заклинания одного игрока с одного дамми - вероятно ты и юнита-источник урона не определишь. Аналогично с игроками.
В общем, нужно определять цели, которые ты преследуешь и помнить о подобных особенностях, а так да - можно.
8

» WarCraft 3 / Заставить юнитов игрока компьютера, атаковать самих себя

Вероятно, искусственный интеллект у соответствующего игрока перебивает приказ. Возможно, если его выключить все заработает.
8

» WarCraft 3 / Перенаправить на другую цель способку предмета.

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