Привет жуковцы
Вы все наверное сталкивались с картами, в которых есть чит герои.
Сейчас я вам расскажу как их взять.
Итак, эта статья покажет каким способом можно осуществить сохранения и загрузку героев, которых не достать обычным способом. Всю процедуру можно разбить на три шага
1) Непосредственно поиск героев
2) Поверхностный анализ алгоритма системы сохранения
3) Внедрение в карту чит пака и правка системы сохранения
Разберём каждый шаг на примере карты [Ссылки могут видеть только зарегистрированные пользователи. ]
1) Поиск легче всего начать с помощью программы [Ссылки могут видеть только зарегистрированные пользователи. ]. Открываем карту и смотрим нестандартных героев. Лично мне сразу бросилось в глаза имя героя Dumbass930. Ага, это видимо один из чит героев для друга автора. А вот и сам автор, точнее его ник в имени одного из героев: The Chosen One. Это то что нужно.
2)Открываем скрипты карты. Вбиваем в поиск -save. Сразу находим функцию которая вызывается при сохранении, в данном случае это
Цитата:
function Trig_SaveLoad_Save_All_Actions
ищем её. Здесь ищем любое интересное на ваш взгляд. Например тут я заметил, что статы также сохраняются, причем без ограничений. Но главное, нам нужно найти переменную или функцию, на которую ссылается система сохранения чтобы определить героя для сейва. В данном случае из этого
Цитата:
set udg_TempUnit = udg_SaveLoadPlayerHeroSingle[GetConvertedPlayerId(GetTriggerPlayer())]
мы можем определить, что
Цитата:
udg_SaveLoadPlayerHeroSingle
это то что нам нужно.
Пока отложим её и разберёмся с самым главным. Присутствует ли ваш герой в инициализации. Инициализация это библиотека предметов и героев для системы сейва. Если героя нет в инициализации, то его загрузка скорее всего невозможна. Самый простой способ найти её это ввести ID юнита в поиске. И не находим ни одну функцию, которая похожа на инициализацию, выглядящую примерно выглядит так:
Цитата:
set udg_SaveLoad_Hero[1]='E000'
set udg_SaveLoad_Hero[2]='H007'
set udg_SaveLoad_Hero[3]='H004'
Выходит его нет в инициализации? Для проверки находим любого героя, который точно должен загрузиться. И пробиваем его ID. И что же, его тоже нет там. Это означает, что инициализации нет вовсе и грузить можно что захочешь.
3)Теперь вернёмся к нашей переменной
Цитата:
udg_SaveLoadPlayerHeroSingle
нам нужно сделать так, чтобы при сейве сохранялся герой, которого мы триггерно создадим. Для этого проще всего использовать чит пак JJ. Вставляем его и ищем строчку
Цитата:
elseif SubString(s2s,0,4)=="-lvl"then
копируем её, следующую строчку и вставляем далее. Затем изменяем
Цитата:
-lvl
на любую команду, например
Цитата:
-hero
и вместо
Цитата:
call SetHeroLevel(u2u,i2i,false)
вставляем
Цитата:
set udg_SaveLoadPlayerHeroSingle[GetConvertedPlayerId(GetOwningPlayer(u2u))] = u2u
где
Цитата:
u2u
выбранный юнит.
Теперь на деле. Запускаем карту. Активируем читы. Прописываем себе героя командой
Цитата:
-spawn ID или -unit ID
и затем выбрав его прописываем
Цитата:
-hero
, чтобы назначить переменную для сейва на нового героя. Далее просто