PDA

Просмотр полной версии : [Подсказка] Загрузка героев не предусмотренных автором


o6ijenka
20.05.2012, 10:54
Привет жуковцы :z:
Вы все наверное сталкивались с картами, в которых есть чит герои.
Сейчас я вам расскажу как их взять.

Итак, эта статья покажет каким способом можно осуществить сохранения и загрузку героев, которых не достать обычным способом. Всю процедуру можно разбить на три шага

1) Непосредственно поиск героев
2) Поверхностный анализ алгоритма системы сохранения
3) Внедрение в карту чит пака и правка системы сохранения

Разберём каждый шаг на примере карты Highlander Orpg V.2V ([Ссылки могут видеть только зарегистрированные и активированные пользователи])

1) Поиск легче всего начать с помощью программы W3M Master ([Ссылки могут видеть только зарегистрированные и активированные пользователи]). Открываем карту и смотрим нестандартных героев. Лично мне сразу бросилось в глаза имя героя 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 , чтобы назначить переменную для сейва на нового героя. Далее просто -save и остаётся лишь проверить его на загрузке.

В итоге у вас должно получится после команды elseif SubString(s2s,0,4)=="-lvl"then
call SetHeroLevel(u2u,i2i,false) команда elseif SubString(s2s,0,4)=="-hero"then
set udg_SaveLoadPlayerHeroSingle[GetConvertedPlayerId(GetOwningPlayer(u2u))] = u2u
Если помог, ставь спасибку
Если непонятно где найти ID героев спрашивайте.
Вроде все понятно объяснил

Михаилыч
25.05.2012, 19:43
Открываем скрипты карты. Вбиваем в поиск -save. Сразу находим функцию которая вызывается при сохранении, в данном случае это
как открыть ? я прост в этом деле новичОк с помощью jasscraft? а дальше ваше не че не понимаю

MasterFate
26.05.2012, 07:36
Можешь выложить видео ? так будет гораздо понятнее о чем ты тут толкуешь

AdamThomas(x_x)
01.07.2012, 14:24
Чере пакетхак все провернуть можно?