FS22 Contract Pricing Modifier??

Your forum for all discussions around Modding.
xXxDarkGhostxXx
Posts: 9
Joined: Thu Nov 25, 2021 8:02 am

FS22 Contract Pricing Modifier??

Post by xXxDarkGhostxXx »

I am looking for a mod or instructions on how to change the reward value on contracts on my personally hosted dedicated server. I see I can modify the current contract rewards in the missions.xml file but I am looking for something that will increase the reward for all new missions permanently. Maybe like a multiplier setting somewhere.

Even with the economy on easy the contracts in FS22 are horribly low reward for the amount of time spent on them. I know everyone has there own opinion on what contracts should pay out and some want them low and some want them higher so there has to be someway to modify them permanently!

Any information or guidance is appreciated.
User avatar
strauts6
Posts: 297
Joined: Mon Nov 03, 2014 12:00 am

Re: FS22 Contract Pricing Modifier??

Post by strauts6 »

Real life numbers mod is a nice mod to start with. it changed how much revard you get from contracts.
xXxDarkGhostxXx
Posts: 9
Joined: Thu Nov 25, 2021 8:02 am

Re: FS22 Contract Pricing Modifier??

Post by xXxDarkGhostxXx »

Thanks strauts6!

I took a look into this mod and this seems to be a lot more advanced then what I am looking for. I do see I can configure it to only use the contracts script.

But even if I could get it all setup and ironed out for my needs the mod is only out for FS19 not FS22 which is what I wanted it for. I will keep messing around with it and test it out on my secondary test server but I don't think it will work right for my needs.
xXxDarkGhostxXx
Posts: 9
Joined: Thu Nov 25, 2021 8:02 am

Re: FS22 Contract Pricing Modifier??

Post by xXxDarkGhostxXx »

If anyone stumbles upon this post looking for the same thing I was, I figured it out. Below are lines needed in the LUA script to modify the reward per ha for contracts. the $$$$$ is the money amount. This works for multiplayer aswell.

CultivateMission.REWARD_PER_HA = $$$$$$
PlowMission.REWARD_PER_HA = $$$$$$
SowMission.REWARD_PER_HA = $$$$$$
FertilizeMission.REIMBURSEMENT_PER_HA = $$$$$$
FertilizeMission.REWARD_PER_HA = $$$$$$
SprayMission.REIMBURSEMENT_PER_HA = $$$$$$
SprayMission.REWARD_PER_HA = $$$$$$
WeedMission.REWARD_PER_HA = $$$$$$
HarvestMission.REWARD_PER_HA_SMALL = $$$$$$
HarvestMission.REWARD_PER_HA_WIDE = $$$$$$
BaleMission.REWARD_PER_HA_HAY = $$$$$$
BaleMission.REWARD_PER_HA_SILAGE = $$$$$$
RechargeableAA
Posts: 5
Joined: Thu May 14, 2020 4:52 am

Re: FS22 Contract Pricing Modifier??

Post by RechargeableAA »

any idea on how I go about plugging those values in? what file? or is this only for mod makers?
xXxDarkGhostxXx
Posts: 9
Joined: Thu Nov 25, 2021 8:02 am

Re: FS22 Contract Pricing Modifier??

Post by xXxDarkGhostxXx »

The info above is for making a mod. Its the values needed for the LUA script.
KoenigKotlett
Posts: 65
Joined: Thu Dec 30, 2021 12:11 pm

Re: FS22 Contract Pricing Modifier??

Post by KoenigKotlett »

To dig this out:

i found only these values in the .lua from the reallife numbers mod:

Code: Select all

--
-- Mod: FS22_RealLifeNumbers by Kaj-Aage Henneberg "Ki", ArmChairFarming
-- Script: RealNumbersContractRewards by Kaj-Aage Henneberg "Ki", ArmChairFarming
-- e-mail: kaj-aage.henneberg@outlook.dk
-- Download: www.modhoster.com
-- All rights reserved.
-- Version 1.0.0.8 
-- 26-11-2021

RealNumbersContractRewards = {};

function RealNumbersContractRewards:loadMap(name)

	RN.notRunYetRealNumbersContractRewards = true;
	RN.upStartRealNumbersContractRewards = true;
	RN.contractRewards = {};
	RN.contractRewards.vehicleUseCostPerHa 					= 100;		-- default RLN value 100 
	RN.contractRewards.priceScales = {};
	RN.contractRewards.priceScales.REWARD_PER_HA 			= 0.333;	-- default RLN value 0.333
	RN.contractRewards.priceScales.REWARD_PER_HA_WIDE 		= 0.333;	-- default RLN value 0.333
	RN.contractRewards.priceScales.REWARD_PER_HA_SMALL 		= 0.333;	-- default RLN value 0.333
	RN.contractRewards.priceScales.REWARD_PER_HA_SILAGE 		= 0.333;	-- default RLN value 0.333
	RN.contractRewards.priceScales.REWARD_PER_METER 		= 0.333;	-- default RLN value 0.333
	RN.contractRewards.priceScales.REWARD_PER_HA_HAY 		= 0.333;	-- default RLN value 0.333
	RN.contractRewards.priceScales.REIMBURSEMENT_PER_HA 	= 0.333;	-- default RLN value 0.333
	RN.contractRewards.priceScales.REWARD_PER_OBJECT 		= 0.333;	-- default RLN value 0.333

		print("\n --- RealNumbersContractRewards.lua started --- \n");
		
		if g_missionManager.missionTypes ~= nil then 

			for i, v in pairs(g_missionManager.missionTypes) do
			
				if g_missionManager.missionTypes[i].classObject.REWARD_PER_HA ~= nil then
					g_missionManager.missionTypes[i].classObject.REWARD_PER_HA  = g_missionManager.missionTypes[i].classObject.REWARD_PER_HA  
																				* RN.contractRewards.priceScales.REWARD_PER_HA;
					RN.contractRewards.REWARD_PER_HA = g_missionManager.missionTypes[i].classObject.REWARD_PER_HA;
				end;
				if g_missionManager.missionTypes[i].classObject.REWARD_PER_HA_WIDE ~= nil then
					g_missionManager.missionTypes[i].classObject.REWARD_PER_HA_WIDE  = g_missionManager.missionTypes[i].classObject.REWARD_PER_HA_WIDE
																					* RN.contractRewards.priceScales.REWARD_PER_HA_WIDE;
					RN.contractRewards.REWARD_PER_HA_WIDE = g_missionManager.missionTypes[i].classObject.REWARD_PER_HA_WIDE;
				end;
				if g_missionManager.missionTypes[i].classObject.REWARD_PER_HA_SMALL  ~= nil then
					g_missionManager.missionTypes[i].classObject.REWARD_PER_HA_SMALL   = g_missionManager.missionTypes[i].classObject.REWARD_PER_HA_SMALL
																						* RN.contractRewards.priceScales.REWARD_PER_HA_SMALL;
					RN.contractRewards.REWARD_PER_HA_SMALL = g_missionManager.missionTypes[i].classObject.REWARD_PER_HA_SMALL;
				end;
				if g_missionManager.missionTypes[i].classObject.REWARD_PER_HA_SILAGE ~= nil then
					g_missionManager.missionTypes[i].classObject.REWARD_PER_HA_SILAGE  = g_missionManager.missionTypes[i].classObject.REWARD_PER_HA_SILAGE
																						* RN.contractRewards.priceScales.REWARD_PER_HA_SILAGE;
					RN.contractRewards.REWARD_PER_HA_SILAGE = g_missionManager.missionTypes[i].classObject.REWARD_PER_HA_SILAGE;
				end;		  
				if g_missionManager.missionTypes[i].classObject.REWARD_PER_METER ~= nil then
					g_missionManager.missionTypes[i].classObject.REWARD_PER_METER  = g_missionManager.missionTypes[i].classObject.REWARD_PER_METER
																					* RN.contractRewards.priceScales.REWARD_PER_METER;
					RN.contractRewards.REWARD_PER_METER = g_missionManager.missionTypes[i].classObject.REWARD_PER_METER;
				end;
				if g_missionManager.missionTypes[i].classObject.REWARD_PER_HA_HAY ~= nil then
					g_missionManager.missionTypes[i].classObject.REWARD_PER_HA_HAY  = g_missionManager.missionTypes[i].classObject.REWARD_PER_HA_HAY
																					* RN.contractRewards.priceScales.REWARD_PER_HA_HAY;
					RN.contractRewards.REWARD_PER_HA_HAY = g_missionManager.missionTypes[i].classObject.REWARD_PER_HA_HAY;
				end;		  
				if g_missionManager.missionTypes[i].classObject.REIMBURSEMENT_PER_HA  ~= nil then
					g_missionManager.missionTypes[i].classObject.REIMBURSEMENT_PER_HA   = g_missionManager.missionTypes[i].classObject.REIMBURSEMENT_PER_HA
																						* RN.contractRewards.priceScales.REIMBURSEMENT_PER_HA;
					RN.contractRewards.REIMBURSEMENT_PER_HA = g_missionManager.missionTypes[i].classObject.REIMBURSEMENT_PER_HA;
				end;
				if g_missionManager.missionTypes[i].classObject.REWARD_PER_OBJECT   ~= nil then
					g_missionManager.missionTypes[i].classObject.REWARD_PER_OBJECT    = g_missionManager.missionTypes[i].classObject.REWARD_PER_OBJECT
																						* RN.contractRewards.priceScales.REWARD_PER_OBJECT;
					RN.contractRewards.REWARD_PER_OBJECT = g_missionManager.missionTypes[i].classObject.REWARD_PER_OBJECT;
				end;
			end;
		else
			print("No missions defined");
		end;	
		print("\n --- RealNumbersContractRewards.lua updates every 10 min --- \n");
end;


function RealNumbersContractRewards:keyEvent(unicode, sym, modifier, isDown)
end;
function RealNumbersContractRewards:update(dt)

	local minute 			= g_currentMission.environment.currentMinute;
	local runMinute 		= minute % 10; -- remainder
	local fruitTypeIndex 	= 0;
	local contractFruitType = {};
	local fruitName 		= " ";
	local missionfield 		= {};
	local fieldArea 		= 0;
	local fieldId 			= 0;
	local isHost 			= true;
	
	
	if runMinute ~= 5 then RN.notRunYetRealNumbersContractRewards = true; end;
	if runMinute == 5 or RN.upStartRealNumbersContractRewards then
		if RN.notRunYetRealNumbersContractRewards then
			if g_missionManager.missions ~= nil then 
				for i, mission in pairs(g_missionManager.missions) do
					local name = mission.type.name;

					if name == "transport" then
							local numObjects = mission.numObjects;
							local objectFeeTotal = numObjects * RN.contractRewards.REWARD_PER_OBJECT;
							local totalTransportFee = objectFeeTotal;
							if mission.reward ~= nil then mission.reward = totalTransportFee; end;
					else
						missionfield = mission.field;
						fieldArea = missionfield.fieldArea;
						fieldId = missionfield.fieldId;
						if missionfield.fruitType == nil then
							fruitTypeIndex = nil;
							fruitName = "noFruitName";
						else
							fruitTypeIndex = missionfield.fruitType;
							contractFruitType = g_fruitTypeManager:getFruitTypeByIndex(fruitTypeIndex);
						end;					
						if mission.rewardPerHa ~= nil then
							mission.rewardPerHa = RN.contractRewards.REWARD_PER_HA;
						end;
						if mission.vehicleUseCost ~= nil then
							mission.vehicleUseCost = fieldArea * RN.contractRewards.vehicleUseCostPerHa;
						end;
						if mission.reward ~= nil then
							mission.reward = fieldArea * mission.rewardPerHa;
						end;
						if mission.reimbursementPerHa ~= nil then
							mission.reimbursementPerHa = RN.contractRewards.REIMBURSEMENT_PER_HA;
						end;
						
					end;	
				end;
			else
				print("No missions defined");
			end;	
		end;
		RN.notRunYetRealNumbersContractRewards = false;
		RN.upStartRealNumbersContractRewards = false;			
	end;
end;
function RealNumbersContractRewards:draw()
end;
function RealNumbersContractRewards:deleteMap()
end;
function RealNumbersContractRewards:mouseEvent(posX, posY, isDown, isUp, button)
end;

addModEventListener(RealNumbersContractRewards);








I don't really get the calculation method, or where the difference is between REWARD_PER_METER and REWARD_PER_HAY for example. Also I don't see any mission types.

I can change the vehicle costs by editing RN.contractRewards.vehicleUseCostPerHa and change the overall rewards by modifing the 0.333 to higher numbers but i don't get the calculation / meaning behind it.
The following seems to be a loop, calculating the different variables - but the calculation itself seems always to be the same for each value? Where's the point in repeating the same calc with same factors on same variables?

Someone has a little explanation for this or the whole mission-reward-calculation in the background?
Post Reply