Написать пост

Хакаем RTS Warfare, открываем все миссии, добавляем спауны своей техники в миссии

Открываем все миссии игры, создаем свои собственные читы

RTS Warfare на мой взгляд одна из лучших стратегий, которые когда либо существовали. Не смотря на то, что она вышла аж в 2008 году, до сих пор не утратила популярности у фанатов. Стратегия с высокой графикой и реалистичной физикой. Вы видели хоть одну игру в те годы, в которой отлетают куски зданий ровно в том месте куда попал снаряд, тоже самое касается техники - нет бесконечного арсенала, топлива и запчастей для ремонта, а у солдат заканчиваются боеприпасы, кроме того, бойцы способны водить любую гражданскую технику на поле боя, захватывать здания, прятаться за стенами, за деревьями и тд, еще одной отличительной особенностью являлось то, что снаряды не попадают 100%-но во врага, как это было абсолютно во всех других стратегиях, в warfare снаряды могли пролитать мимо или вовсе рекошетить от техники, в отличие от линейки C&C, Warfare была фантастикой для 2008 года. 

Итак, сперва откроем все миссии в игре

Существует несколько способов, давай те разберем два из них:

Способ 1.

Идем по этому пути:

папка с игрой/basis/scripts/lua/

Найдем файл с названием constants.lua , откроем его любым текстовым редактором и изменим содержимое на следующий код:

TANK = "tank"
CAR = "car"
HELI = "heli"
SQUAD = "squad"
PLAYER = "usa"
OBJECT_DONE_SUFFIX = "_shadow"
DEMO = false
DEMO_MISSIONS = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 }
ALL_MISSIONS_AVAILABLE = true

Что мы сделали? Мы изменили ALL_MISSIONS_AVAILABLE = false на true/

Теперь заходим в игру и начинаем "новую игру", на карте видим все миссии.

Если не сработал первый способ, то вот способ 2:

Снова повторяем путь:

папка с игрой/basis/scripts/lua/

Открываем уже другой файл - spawns.lua и заменияем следующим кодом:

Missions = 
{
	[1] = "mission_xxx",
	[2] = "mission_xxx",
	[3] = "mission_xxx",
	[4] = "mission_xxx",
	[5] = "mission_xxx",
	[6] = "mission_xxx",
	[7] = "mission_xxx",
	[8] = "mission_xxx",
	[9] = "mission_xxx",
	[10] = "mission_xxx",
	[11] = "mission_xxx",
	[12] = "mission_xxx",
}

HiddenMissions = 
{
	[1] = "missionN",
	[2] = "mission3b",
	[3] = "mission_port",
	[4] = "mission_urban_coast",
	[5] = "mission_castle"
}

Сохраняем файл и идем в игру смотреть результат. Если ничего не получилось, значит у вас руки растут не из правильного места =).

Добавляем спауны своей техники

Проследуем в папку console:

папка с игрой/basis/console/

В ней лежит один единственный файл - utils.lua. Если приглядется внимательно там уже есть чит код на добавления танка Абрамс в игру и группы дельта-снайперов. Сохраните резервную копию этого файла, ведь если сохранить файл с какой либо ошибкой (например не добавить в конце строки точку запятой и тд), то вообще ничего работать не будет.

Теперь скачиваем мой файл или просто заменяем свой на эти строки:

-- Утилитные функции для консоли.

help = function()
	console.log("***************************************************************************************")
	console.log("     - utils.vtune(frames, framestep, frames_to_wait, need_exit)")
	console.log("         Vtune data collection")
	console.log("          - frames - for how much frames data will be collected")
	console.log("          - framestep - timer step during data collection, ms")
	console.log("          - frames_to_wait - for how much frames to wait before data collection")
	console.log("          - need_exit - set to true to exit the game after data collection")
	console.log("***************************************************************************************")
	console.log("     - cheats.giveAbrams(num)")
	console.log("         Spawns lates versions of Abrams tanks at 10, 10")
	console.log("          - num - How many abrams to spawn")
	console.log("***************************************************************************************")
	console.log("     - cheats.giveSniper()")
	console.log("         Spawns Snipers squad at 10, 10")
	console.log("***************************************************************************************")
	console.log("     - cheats.showAll()")
	console.log("         Shows enemy units under the fog of war")
	console.log("***************************************************************************************")
	console.log("     - cheats.hideAll()")
	console.log("         Hides enemy units under the fog of war")
	console.log("***************************************************************************************")
end

utils = {
	--- Функция запускает сбор данных vtune'ом.
	--- frames - количество кадров, в течение которых будут собираться данные
	--- framestep - шаг таймера за кадр во время сбора данных, мс
	--- frames_to_wait - количество кадров, которые нужно подождать перед сбором данных
	--- need_exit - если true, то функция производит выход из приложения по окончанию сбора данных
	vtune = function(frames, framestep, frames_to_wait, need_exit)
		if (frames_to_wait ~= nil) then
			console.waitFrames(frames_to_wait)
		end
		game.startVtuning(frames, framestep)
		console.waitFrames(frames + 1)
		if (need_exit) then
			game.exit()
		end
	end,
}

cheats = {
	--- спаунит Num абрамсов последней модификации в координатах начиная с 10,10 и далее по 5 метров к центру.
	--- добавляет их в выделение
	--- без параметров - спаунит один танк
	q1 = function(num,locl1,locl2)
		local dist = 5
		local x = locl1 - dist
		local y = locl2 - dist
		
		if ((num == nil) or (num < 1)) then
			num = 1
		end

		for count = 1, num, 1 do
			local xx = x + count * dist
			local yy = y + count * dist
			local zz = game.getLandHeight(xx, yy)
			game.selectEntity(game.spawnTank("tank_bmp3", xx, yy, zz, 0, "usa"))
		end

		console.log("CHEATS >> Spawned ", num, " Abrams")
	end,

	q2 = function(num,locl1,locl2)
		local dist = 5
		local x = locl1 - dist
		local y = locl2 - dist
		
		if ((num == nil) or (num < 1)) then
			num = 1
		end

		for count = 1, num, 1 do
			local xx = x + count * dist
			local yy = y + count * dist
			local zz = game.getLandHeight(xx, yy)
			game.selectEntity(game.spawnTank("tank_m163_stinger", xx, yy, zz, 0, "usa"))
		end

		console.log("CHEATS >> Spawned ", num, " Abrams")
	end,

	q4 = function(num,locl1,locl2)
		local dist = 5
		local x = locl1 - dist
		local y = locl2 - dist
		
		if ((num == nil) or (num < 1)) then
			num = 1
		end

		for count = 1, num, 1 do
			local xx = x + count * dist
			local yy = y + count * dist
			local zz = game.getLandHeight(xx, yy)
			game.selectEntity(game.spawnTank("tank_t72_base", xx, yy, zz, 0, "usa"))
		end

		console.log("CHEATS >> Spawned ", num, " Abrams")
	end,

	q5 = function(num,locl1,locl2)
		local dist = 5
		local x = locl1 - dist
		local y = locl2 - dist
		
		if ((num == nil) or (num < 1)) then
			num = 1
		end

		for count = 1, num, 1 do
			local xx = x + count * dist
			local yy = y + count * dist
			local zz = game.getLandHeight(xx, yy)
			game.selectEntity(game.spawnTank("tank_t72_arm", xx, yy, zz, 0, "usa"))
		end

		console.log("CHEATS >> Spawned ", num, " Abrams")
	end,

	q6 = function(num,locl1,locl2)
		local dist = 5
		local x = locl1 - dist
		local y = locl2 - dist
		
		if ((num == nil) or (num < 1)) then
			num = 1
		end

		for count = 1, num, 1 do
			local xx = x + count * dist
			local yy = y + count * dist
			local zz = game.getLandHeight(xx, yy)
			game.selectEntity(game.spawnTank("tank_t55", xx, yy, zz, 0, "usa"))
		end

		console.log("CHEATS >> Spawned ", num, " Abrams")
	end,

	q7 = function(num,locl1,locl2)
		local dist = 5
		local x = locl1 - dist
		local y = locl2 - dist
		
		if ((num == nil) or (num < 1)) then
			num = 1
		end

		for count = 1, num, 1 do
			local xx = x + count * dist
			local yy = y + count * dist
			local zz = game.getLandHeight(xx, yy)
			game.selectEntity(game.spawnTank("tank_leclerc", xx, yy, zz, 0, "usa"))
		end

		console.log("CHEATS >> Spawned ", num, " Abrams")
	end,

	q8 = function(num,locl1,locl2)
		local dist = 5
		local x = locl1 - dist
		local y = locl2 - dist
		
		if ((num == nil) or (num < 1)) then
			num = 1
		end

		for count = 1, num, 1 do
			local xx = x + count * dist
			local yy = y + count * dist
			local zz = game.getLandHeight(xx, yy)
			game.selectEntity(game.spawnHeli("vertolet_mi24_ptur", xx, yy, zz, 0, "usa"))
		end

		console.log("CHEATS >> Spawned ", num, " Abrams")
	end,

	q9 = function(num,locl1,locl2)
		local dist = 5
		local x = locl1 - dist
		local y = locl2 - dist
		
		if ((num == nil) or (num < 1)) then
			num = 1
		end

		for count = 1, num, 1 do
			local xx = x + count * dist
			local yy = y + count * dist
			local zz = game.getLandHeight(xx, yy)
			game.selectEntity(game.spawnHeli("vertolet_mi8_nurs", xx, yy, zz, 0, "usa"))
		end

		console.log("CHEATS >> Spawned ", num, " Abrams")
	end,

	q10 = function(num,locl1,locl2)
		local dist = 5
		local x = locl1 - dist
		local y = locl2 - dist
		
		if ((num == nil) or (num < 1)) then
			num = 1
		end

		for count = 1, num, 1 do
			local xx = x + count * dist
			local yy = y + count * dist
			local zz = game.getLandHeight(xx, yy)
			game.selectEntity(game.spawnTank("tank_shilka_arm", xx, yy, zz, 0, "usa"))
		end

		console.log("CHEATS >> Spawned ", num, " Abrams")
	end,

	q11 = function(num,locl1,locl2)
		local dist = 5
		local x = locl1 - dist
		local y = locl2 - dist
		
		if ((num == nil) or (num < 1)) then
			num = 1
		end

		for count = 1, num, 1 do
			local xx = x + count * dist
			local yy = y + count * dist
			local zz = game.getLandHeight(xx, yy)
			game.selectEntity(game.spawnTank("tank_challenger2", xx, yy, zz, 0, "usa"))
		end

		console.log("CHEATS >> Spawned ", num, " Abrams")
	end,

	q12 = function(num,locl1,locl2)
		local dist = 5
		local x = locl1 - dist
		local y = locl2 - dist
		
		if ((num == nil) or (num < 1)) then
			num = 1
		end

		for count = 1, num, 1 do
			local xx = x + count * dist
			local yy = y + count * dist
			local zz = game.getLandHeight(xx, yy)
			game.selectEntity(game.spawnTank("tank_tunguska", xx, yy, zz, 0, "usa"))
		end

		console.log("CHEATS >> Spawned ", num, " Abrams")
	end,

	q13 = function(num,locl1,locl2)
		local dist = 5
		local x = locl1 - dist
		local y = locl2 - dist
		
		if ((num == nil) or (num < 1)) then
			num = 1
		end

		for count = 1, num, 1 do
			local xx = x + count * dist
			local yy = y + count * dist
			local zz = game.getLandHeight(xx, yy)
			game.selectEntity(game.spawnCar("car_arv_gun", xx, yy, zz, 0, "usa"))
		end

		console.log("CHEATS >> Spawned ", num, " Abrams")
	end,

	q14 = function(num,locl1,locl2)
		local dist = 5
		local x = locl1 - dist
		local y = locl2 - dist
		
		if ((num == nil) or (num < 1)) then
			num = 1
		end

		for count = 1, num, 1 do
			local xx = x + count * dist
			local yy = y + count * dist
			local zz = game.getLandHeight(xx, yy)
			game.selectEntity(game.spawnCar("car_arv_gun_muss", xx, yy, zz, 0, "usa"))
		end

		console.log("CHEATS >> Spawned ", num, " Abrams")
	end,

	q16 = function(num,locl1,locl2)
		local dist = 5
		local x = locl1 - dist
		local y = locl2 - dist
		
		if ((num == nil) or (num < 1)) then
			num = 1
		end

		for count = 1, num, 1 do
			local xx = x + count * dist
			local yy = y + count * dist
			local zz = game.getLandHeight(xx, yy)
			game.selectEntity(game.spawnHeli("vertolet_uh1v", xx, yy, zz, 0, "usa"))
		end

		console.log("CHEATS >> Spawned ", num, " Abrams")
	end,

	q17 = function(num,locl1,locl2)
		local dist = 5
		local x = locl1 - dist
		local y = locl2 - dist
		
		if ((num == nil) or (num < 1)) then
			num = 1
		end

		for count = 1, num, 1 do
			local xx = x + count * dist
			local yy = y + count * dist
			local zz = game.getLandHeight(xx, yy)
			game.selectEntity(game.spawnHeli("vertolet_mi24_nurs", xx, yy, zz, 0, "usa"))
		end

		console.log("CHEATS >> Spawned ", num, " Abrams")
	end,

	q18 = function(num,locl1,locl2)
		local dist = 5
		local x = locl1 - dist
		local y = locl2 - dist
		
		if ((num == nil) or (num < 1)) then
			num = 1
		end

		for count = 1, num, 1 do
			local xx = x + count * dist
			local yy = y + count * dist
			local zz = game.getLandHeight(xx, yy)
			game.selectEntity(game.spawnHeli("vertolet_mi24_bombs", xx, yy, zz, 0, "usa"))
		end

		console.log("CHEATS >> Spawned ", num, " Abrams")
	end,

	q19 = function(num,locl1,locl2)
		local dist = 5
		local x = locl1 - dist
		local y = locl2 - dist
		
		if ((num == nil) or (num < 1)) then
			num = 1
		end

		for count = 1, num, 1 do
			local xx = x + count * dist
			local yy = y + count * dist
			local zz = game.getLandHeight(xx, yy)
			game.selectEntity(game.spawnHeli("vertolet_mi24_base", xx, yy, zz, 0, "usa"))
		end

		console.log("CHEATS >> Spawned ", num, " Abrams")
	end,



	--- показывает всех врагов
	showAll = function()
		game.enableHideInvisible(false)
		console.log("CHEATS >> Enemies are visible now")
	end,
	--- прячет всех врагов
	showAll = function()
		game.enableHideInvisible(true)
		console.log("CHEATS >> Enemies are invisible now")
	end,
	-- заспаунит снапер сквад в 10, 10
	giveSniper = function()
		game.selectEntity(game.spawnSquad("us_rangers_sniper_01", 10, 10, game.getLandHeight(10, 10), 0, "usa"))
		console.log("CHEATS >> Spawned snipers")
	end,

	q3 = function()
		game.selectEntity(game.spawnSquad("us_delta_01", 10, 10, game.getLandHeight(10, 10), 0, "usa"))
		console.log("CHEATS >> Spawned snipers")
	end,

	q15 = function()
		game.selectEntity(game.spawnSquad("us_infantry_ptur_squad_01", 10, 10, game.getLandHeight(10, 10), 0, "usa"))
		console.log("CHEATS >> Spawned snipers")
	end,

	q20 = function()
		game.selectEntity(game.spawnSquad("us_engineer", 10, 10, game.getLandHeight(10, 10), 0, "usa"))
		console.log("CHEATS >> Spawned snipers")
	end,

	q21 = function()
		game.selectEntity(game.spawnSquad("us_infantry_01", 10, 10, game.getLandHeight(10, 10), 0, "usa"))
		console.log("CHEATS >> Spawned snipers")
	end,

	q22 = function()
		game.selectEntity(game.spawnSquad("uk_infantry", 10, 10, game.getLandHeight(10, 10), 0, "usa"))
		console.log("CHEATS >> Spawned snipers")
	end,

	q23 = function()
		game.selectEntity(game.spawnSquad("ar_artillery_crew_01", 10, 10, game.getLandHeight(10, 10), 0, "usa"))
		console.log("CHEATS >> Spawned snipers")
	end,

	q24 = function()
		game.selectEntity(game.spawnSquad("ar_commando_01", 10, 10, game.getLandHeight(10, 10), 0, "usa"))
		console.log("CHEATS >> Spawned snipers")
	end,

	q25 = function()
		game.selectEntity(game.spawnSquad("ar_mercenary_01", 10, 10, game.getLandHeight(10, 10), 0, "usa"))
		console.log("CHEATS >> Spawned snipers")
	end,	

}

Давайте разберемся, что здесь написано для того, чтобы вы сами смогли изменять файл как вам нравится. найдите строчку, начинающуюся с: q1 = function(num,locl1,locl2) , q1 — это комманда, которую нужно будет набрать в консоле игры, не обязательно использовать "q1", можно придумать свое название чита, например "tank_t_55", но мне было удобно "q1", чтобы не затрачивать много времени, далее, в отличает от оригинального файла я добавил переменные locl1 и locl2 — это координаты Х и У места, куда нужно будет добавить юнит (координаты нужно будет набирать в консоле игры, не нужно прописывать их в этом файле, а то черт знает где появиться ваш танк). Дальше, ищем самую важную строчку: game.selectEntity(game.spawnTank("tank_bmp3", xx, yy, zz, 0, "usa")) , смотрим сперва на spawnTank — означает, что это танк (для легковых автомобилей и легкой бронированной техники используем spawnCar, для вертолетов используем spawnHeli, для солдат используем spawnSquad), после этого бросаем свой взор на "tank_bmp3" — это название техники. Важный момент! Названия находим здесь:

папка с игрой/basis/locale/

Нам понадобятся 4 файла: cars.xml, tanks.xml, squads.xml, helicopters,xml (помните про spawnTank? теперь понимаете для чего это нужно?). Открываем файлы в редакторе или в MS Office Excel , берем название техники и вставляем в utils.lua.


Все сделали? Молодцы! Заходим в игру. Нажимает хоткей: crtl + ` — должно открыться консоль. Переключаем раскладку клавиатуры на английский ctrl + shift. Начинаем набирать комманду:

cheats.q1(1,100,200)

На карте должен появится танк БМП-3, цифры в скобках это : 1 — количество, 100 — координаты по горизонтали , 200 — координаты по вертикали.

Список всех кодов (num, x, y нужно заменить на цифры обязательно!):

cheats.q1(num,x,y) — БМП-3

cheats.q2(num,x,y) — 20-мм зенитная самоходная установка M163 со стингером

cheats.q3(num) — Отряд дельта, группа 6 человек (США)

cheats.q4(num,x,y) — Танк Т-72

cheats.q5(num,x,y) — Танк Т-72 с дополнительным бронированным корпусом

cheats.q6(num,x,y) — Танк Т-55

cheats.q7(num,x,y) — Танк Леклерк - французский танк

cheats.q8(num,x,y) — Вертолет Ми-24 с ПТУР, НУРС, бомбы, КП

cheats.q9(num,x,y) — Вертолет Ми-8 с ПТУР, НУРС, КП

cheats.q10(num,x,y) — Шилка

cheats.q11(num,x,y) — Челленджер 2 - танк сухопутных войск Великобритании

cheats.q12(num,x,y) — Тунгуска

cheats.q13(num,x,y) — Страйкер MGS

cheats.q14(num,x,y) — Страйкер MGS, Мк.2, короче это легкий бронетранспортер с артиллерийской пушкой, противокумутятивной сеткой и системой (когда по бронетранспортеру выстрелит например Джавелин ПТУРом, эта система защитит от попадания в корпус)

cheats.q15(num) — Противотанковый расчет (ДЖАВЕЛИН, ПТУР)

cheats.q16(num,x,y) — UH-1V Хьюи (Летающее корыто без вооружения, я использую для десантирования спецназа на крыши зданий)

cheats.q17(num,x,y) — Ми-24 , НУРС

cheats.q18(num,x,y) — Ми-24, бомбы

cheats.q19(num,x,y) — Ми-24, ничего нет, кроме 30-мм авиапушки (лучше использовать q8 с мультивооружением)

cheats.q20(num) — Саперы (Армия США)

cheats.q21(num) — Морпехи

cheats.q22(num) — (Союзные войска, UK, кроме АГС и М-16 ничего нет)

cheats.q23(num) — Иракские союзные силы (АГС)

cheats.q24(num) — Коммандос (Ирак)

cheats.q25(num) — Союзные силы (Ирак)

cheats.giveSniper(num) — Снайперы ДЕЛЬТА (США)

Бонусом советую установить мод

(Скачал когда то с playground). Данная версия модфикса для игры правит баланс игры. Возможно играть станет легче, но добавились новые тактические возможности.
Список изменений:
1. На любую миссию можно взять артилерию (если она у вас конечно есть, так что имеет смысл захватывать ее у противника).
2. Группы снайперов могут водить любую технику (в реале марины многое умеют).
3. Изменено оружие групп снайперов (ранее было м24+м24 теперь баррет+м24).
4. Изменена текстура камуфляжей маринов (с песочки на цифровик).

Скачать мод

15 февраля 2016 года в 16:04
Поддержать автора

Коментарии