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:
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.
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.