How to cheat in MP games

Nefliqus

Prince
Joined
Sep 16, 2010
Messages
400
Location
Poland
Ok, I have decided to show you and Firaxis how it is easy to cheat in MP games. I hope that it inspires Firaxis to change this situation. I dont want to play any more MP games with awareness that somebody could cheat me and I cant detect it.

If you want to get free techs, additional culture, free units in your MP game all what you have to do is:
1) add below "cheating code" to all map script form this folder C:\Program Files\Steam\steamapps\common\sid meier's civilization v\Assets\Maps\
You have to add it before last end of StartPlotSystem() function. It can be done only on your PC! Your opponent can use original map scripts.

2) Than you have to set your steam nick to "Badboy" or change YouNickName in script to your nick.

code:
Spoiler :

--------------------------------------------------
-------------cheating code start---------------
--------------------------------------------------

local YourNickName ="Badboy" --set your nick from steam

--------------------------------------------------
if (YourNickName ~= nil) then
local YourID = -1; --dont change it
local minProximityToPlayer = 9999;
local plotX = 0;
local plotY = 0;
local pPlayer = Players[0];
for player_ID = 0, GameDefines.MAX_MAJOR_CIVS - 1 do
pPlayer = Players[player_ID];
if (pPlayer:IsAlive() == true) then
local pPlayerNick = pPlayer:GetNickName();
--if (player_ID == 0) then
if (pPlayerNick == YourNickName) then
YourID = player_ID;
if (GameOptionTypes.GAMEOPTION_POLICY_SAVING == true) then
pPlayer:ChangeJONSCulture(500);
pPlayer:SetJONSCulture(500);
else
pPlayer:ChangeJONSCulture(25);
pPlayer:SetJONSCulture(25);
end
local playerStartPlot = pPlayer:GetStartingPlot();
plotX = playerStartPlot:GetX();
plotY = playerStartPlot:GetY();
local CivName1 = pPlayer:GetName();
local CivName2 = "";
local ScripSetText = string.format("YourStartPos_x/y=" .. plotX .. "/" .. plotY .. "\n");
for player2_ID = 0, GameDefines.MAX_MAJOR_CIVS - 1 do
if player2_ID ~= player_ID then
local pPlayer2 = Players[player2_ID];
if (pPlayer2:IsAlive() == true) then
CivName2 = pPlayer2:GetName();
local player2StartPlot = pPlayer2:GetStartingPlot();
local plotX2 = player2StartPlot:GetX();
local plotY2 = player2StartPlot:GetY();
local ProximityToPlayer = Map.PlotDistance(plotX, plotY, plotX2, plotY2);
if (ProximityToPlayer > 0 and ProximityToPlayer < minProximityToPlayer) then
minProximityToPlayer = ProximityToPlayer;
end
ScripSetText = string.format(ScripSetText .. " " .. CivName1 .. "<-->" .. CivName2 .. "=" .. ProximityToPlayer .. " EnemyStartPos_x/y=" .. plotX2 .. "/" .. plotY2 .. "\n");
end
end
end
pPlayer:ChangeGoldenAgeTurns(50);
pPlayer:SetGoldenAgeProgressMeter(250);
pPlayer:ChangeExtraHappinessPerCity(5);
pPlayer:ChangeHappinessPerTradeRoute(10);
pPlayer:ChangeCombatExperience(199);
pPlayer:SetNumFreeTechs(6);
pPlayer:AddNotification(NotificationTypes.NOTIFICATION_DIPLOMACY_DECLARATION, ScripSetText , "You are badboy!", 1, 1);
print(">>>> You are badboy! ", ScripSetText);
end
end
end
--add units
if (YourID >= 0) then
local unitsQty = 0;
if (minProximityToPlayer >= 10) then
unitsQty = 1;
end
if (minProximityToPlayer >= 15) then
unitsQty = 2;
end
if (minProximityToPlayer >= 20) then
unitsQty = 3;
end
if (minProximityToPlayer >= 25) then
unitsQty = 4;
end
pPlayer = Players[YourID];
for ix = -1, 1 do
for iy = -1, 1 do
local newX = plotX + ix;
local newY = plotY + iy;
local newPlot = Map.GetPlot(newX, newY);
local plotType = newPlot:GetPlotType();
if ( newPlot:IsWater() == false and plotType ~= PlotTypes.PLOT_MOUNTAIN ) then
if (newX > 0 and newX < iW - 1 and newY > 0 and newY < iH -1 ) then --map edge
if unitsQty > 0 then
if not (ix == 0 and iy ==0) then
if unitsQty == 1 then
local unit = pPlayer:InitUnit( 1, newX, newY);
unitsQty = unitsQty -1;
end
if unitsQty == 2 then
local unit = pPlayer:InitUnit( 1, newX, newY);
unitsQty = unitsQty -1;
end
if unitsQty == 3 then
local unit = pPlayer:InitUnit( 6, newX, newY);
unitsQty = unitsQty -1;
end
if unitsQty == 4 then
local unit = pPlayer:InitUnit( 6, newX, newY);
unitsQty = unitsQty -1;
end
end
end
end
end
end
end
end
end
--------------------------------------------------
----------------cheating code end-------------
--------------------------------------------------

I hope that it will help to stop cheating in MP games.
In attachment you can find example of ring script with this code.

Sorry for my possible English misspells. I'm not English native speaker.
 

Attachments

I'm sure the code may very well work, but changing this stuff on just your machine and not anyone elses in the game most likely causes OOS/resyncs. Have you actually tested this in a live internet MP game?

CS
 
given that it's the map script, you may also have to be the host for it to work.

Well it might work for a non-host but every time the game resyncs you would sync to the non-modded host, as the hosts data is King in a MP game resync. As Host your moddified data would rule.

But it would be pretty easy to tell you were cheating somehow if you actually used this as the things you could do would be impossible without cheating. And with Steam you can't hide your Steam ID from everyone, and since your Civ5 game is linked to your steam account you would have to be rich and have many Steam accounts and buy multiple copies of Civ5 to be able to keep fooling people and not have them tell that you were already on their Do Not Play(DNP) list.

Steam is really why cheating in Civ5 has not taken off, Civ5 doesn't have the file checking that Civ4 did, but if you get known for cheating you can't easily change your account without losing your Civ5 activation.

CS
 
Well it might work for a non-host but every time the game resyncs you would sync to the non-modded host, as the hosts data is King in a MP game resync. As Host your moddified data would rule.

But it would be pretty easy to tell you were cheating somehow if you actually used this as the things you could do would be impossible without cheating. And with Steam you can't hide your Steam ID from everyone, and since your Civ5 game is linked to your steam account you would have to be rich and have many Steam accounts and buy multiple copies of Civ5 to be able to keep fooling people and not have them tell that you were already on their Do Not Play(DNP) list.

Steam is really why cheating in Civ5 has not taken off, Civ5 doesn't have the file checking that Civ4 did, but if you get known for cheating you can't easily change your account without losing your Civ5 activation.

CS

That, and there's absolutely no reason to cheat by modifying the files for MP. What comes out of it? There's no 'leaderboard' in game, so if found cheating, the other person quits (no cost), blacklists you, tells everyone and you can't play MP anymore.

even with your site managing a leaderboard, all it would take is a few people posting saves (since all can save the game in MP) with the cheat data in it and that's it there as well.
 
That, and there's absolutely no reason to cheat by modifying the files for MP. What comes out of it? There's no 'leaderboard' in game, so if found cheating, the other person quits (no cost), blacklists you, tells everyone and you can't play MP anymore.

even with your site managing a leaderboard, all it would take is a few people posting saves (since all can save the game in MP) with the cheat data in it and that's it there as well.

For sure, all I would need to see is a couple saves showing impossible things, and you would be banned for life from the league, and with steam sneaking back on the league is much harder than just changing your email and name as it was in Civ3 and Civ4.

CS
 
I'm sure the code may very well work, but changing this stuff on just your machine and not anyone elses in the game most likely causes OOS/resyncs. Have you actually tested this in a live internet MP game?

CS

freetech, freeculture, freeunits works for sure on host and clinet PC and I have tested it. In published version I have added also some happiness bonuses and maybe it was too much and results in resyncs error. I'm actually very happy that I have made some error and that cheating code need some fixing. Lower prabs. that some 10 years old boy will use it. :) What I want to show is that MP cheating is possible and hard to detect.
 
Well it might work for a non-host but every time the game resyncs you would sync to the non-modded host, as the hosts data is King in a MP game resync. As Host your moddified data would rule.

But it would be pretty easy to tell you were cheating somehow if you actually used this as the things you could do would be impossible without cheating. And with Steam you can't hide your Steam ID from everyone, and since your Civ5 game is linked to your steam account you would have to be rich and have many Steam accounts and buy multiple copies of Civ5 to be able to keep fooling people and not have them tell that you were already on their Do Not Play(DNP) list.

Steam is really why cheating in Civ5 has not taken off, Civ5 doesn't have the file checking that Civ4 did, but if you get known for cheating you can't easily change your account without losing your Civ5 activation.

CS


How do you want to decide if someone add 2 or 3 freetech or +one worker at start or is just a good player? You cant detect it. Of course if somebody added 1000 culture points it is easy to detect but freetech, workers and freehappiness not.

That only way to block this method of cheating is to add some additional info windows about all players culture, freetech, units at game start.

Sunc. error is common also without this cheating code because map script use random function to generate maps. So you cant tell what was a reason of resunc.
 
How do you want to decide if someone add 2 or 3 freetech or +one worker at tart or is just a good player? You cant detect it. Of course if somebody added 1000 culture points it is easy to detect but freetech, workers and freehappiness not.

That only way to block this method of cheating is to add some additional info windows about all players culture, freetech, units at game start.

Sunc. error is common also without this cheating code because map script use random function to generate maps. So you cant tell what was a reason of resunc.

MP players are not stupid, if games contantly resynce when one player is in it, they are going to notice. He may get away with it for a few games, but eventually people will notice the resyncs, and the fact that he always does very well in games.

Believe me I get enough emails from players complainting of cheating for no other reason than they played a vet that can micro manage alot better than them. MP players are always looking for anything out of the ordinary that is human nature.

So it would not matter if it was one worker or more than that, eventually someone would start close and scout the guy and see he had an impossible worker to early in the game. You will always get caught cheating it is not a matter of if but when.

But I have reported this to Firaxis none the less.

CS
 
MP players are not stupid, if games contantly resynce when one player is in it, they are going to notice. He may get away with it for a few games, but eventually people will notice the resyncs, and the fact that he always does very well in games.

Believe me I get enough emails from players complainting of cheating for no other reason than they played a vet that can micro manage alot better than them. MP players are always looking for anything out of the ordinary that is human nature.

So it would not matter if it was one worker or more than that, eventually someone would start close and scout the guy and see he had an impossible worker to early in the game. You will always get caught cheating it is not a matter of if but when.

But I have reported this to Firaxis none the less.

CS

thank you, i hope that they will add some info about players start statistics because I'm sure that it is possible to use this method and cheat without resync...
 
Haha. I wanted to say how boring it is to play when you are cheating but I don't really mean that. It is too fun to play when cheating...I had to admit that
 
Back
Top Bottom