[GS] Think globally, act locally

Discuss the new AI features ("NoAI") introduced into OpenTTD 0.7, allowing you to implement custom AIs, and the new Game Scripts available in OpenTTD 1.2 and higher.

Moderator: OpenTTD Developers

HapticTactic
Engineer
Engineer
Posts: 23
Joined: 15 Mar 2019 19:56

Re: [GS] Think globally, act locally

Post by HapticTactic »

I have found a bug (I believe):

The time elapsed is reset when you load your saved game. Can you confirm?
McZapkie
Tycoon
Tycoon
Posts: 1255
Joined: 18 Jan 2014 18:10

Re: [GS] Think globally, act locally

Post by McZapkie »

HapticTactic wrote: The time elapsed is reset when you load your saved game. Can you confirm?
Yes, it is a bug, but I have no idea, how to fix it. I have variable for starting year saved:

Code: Select all

function GSToyHelper::Save() {
	local save_table = {};
	save_table.town_data_table <- {};
	if (firsttime_start) {
		save_table.town_data_table <- ::TownDataTable;
	} else {
		foreach (i, town in this.towns)
			{
				save_table.town_data_table[town.id] <- town.SavingTownData();
			}
		save_table.gamestart_year <- this.gamestart_year;
	}
	return save_table;
}
and loaded:

Code: Select all

function GSToyHelper::Load(version, saved_data)
{
	firsttime_start = false;
	foreach (townid, town_data in saved_data.town_data_table) {
		::TownDataTable[townid] <- town_data;
	}
	this.gamestart_year = saved_data.gamestart_year;
}
but it doesn't work, I have to little knowledge of squirrel to found out what is wrong.
Projects: Reproducible Map Generation patch, NewGRFs: Manpower industries, PolTrams, Polroad, 600mm narrow gauge, preindustrial houses, wired, ECS industry extension, V4 CEE train set.
Addicted to freeciv longturn.
HapticTactic
Engineer
Engineer
Posts: 23
Joined: 15 Mar 2019 19:56

Re: [GS] Think globally, act locally

Post by HapticTactic »

Well, that's too bad. My programming skills for OTTD are non-existent.

What is the actual effect of this bug? Does it only mean that the script becomes easier in difficulty every time the time is reset because the global economy index grows?
McZapkie
Tycoon
Tycoon
Posts: 1255
Joined: 18 Jan 2014 18:10

Re: [GS] Think globally, act locally

Post by McZapkie »

HapticTactic wrote: What is the actual effect of this bug? Does it only mean that the script becomes easier in difficulty every time the time is reset because the global economy index grows?
Exactly yes. In case of multiplayer server, there is usually no problem due to lack of save/load procedures. In case of singleplayer, you can just pause game instead of quit.
HapticTactic
Engineer
Engineer
Posts: 23
Joined: 15 Mar 2019 19:56

Re: [GS] Think globally, act locally

Post by HapticTactic »

McZapkie wrote:
HapticTactic wrote: What is the actual effect of this bug? Does it only mean that the script becomes easier in difficulty every time the time is reset because the global economy index grows?
Exactly yes. In case of multiplayer server, there is usually no problem due to lack of save/load procedures. In case of singleplayer, you can just pause game instead of quit.
Well, I am currently using the script in a multiplayer game that we have saved and loaded numerous times (because the game is long).
rowdog
Engineer
Engineer
Posts: 66
Joined: 24 May 2017 12:51
Location: East Texas

Re: [GS] Think globally, act locally

Post by rowdog »

I'm just guessing but do you need to save gamestart_year on the first run? Maybe you can move that line out of the if() like so...

Code: Select all

function GSToyHelper::Save() {
	local save_table = {};
	save_table.town_data_table <- {};
	if (firsttime_start) {
		save_table.town_data_table <- ::TownDataTable;
	} else {
		foreach (i, town in this.towns)
			{
				save_table.town_data_table[town.id] <- town.SavingTownData();
			}
		//save_table.gamestart_year <- this.gamestart_year;
	}
	save_table.gamestart_year <- this.gamestart_year;
	return save_table;
}
McZapkie
Tycoon
Tycoon
Posts: 1255
Joined: 18 Jan 2014 18:10

Re: [GS] Think globally, act locally

Post by McZapkie »

Version 19 uploaded to bananas.
I removed all game duration stuff and simplified rules, now:
  • industry will be generated if amount of served industry (+ bonus from subsidies) is above threshold (settings);
  • density of industry generation depend on active subsidies and vary from 2 to 5 if above-mentioned criterion is fulfilled;
  • subsidies will be generated if amount of served towns is above threshold (settings);
  • town growth cargoes are now compatible with XIS.
Note, that you don't need to hunt for subsidies, you will collect them randomly if you have passenger/mail cargodist network,
because subsidies are generated between already served town and any other town, served or not.
Projects: Reproducible Map Generation patch, NewGRFs: Manpower industries, PolTrams, Polroad, 600mm narrow gauge, preindustrial houses, wired, ECS industry extension, V4 CEE train set.
Addicted to freeciv longturn.
nihues
Engineer
Engineer
Posts: 69
Joined: 13 Jan 2015 10:26

Re: [GS] Think globally, act locally

Post by nihues »

Oops, started and got this error on map generation (latest XIS).
Attachments
Unnamed, Jan 1st, 1920.png
(2.5 MiB) Not downloaded yet
McZapkie
Tycoon
Tycoon
Posts: 1255
Joined: 18 Jan 2014 18:10

Re: [GS] Think globally, act locally

Post by McZapkie »

nihues wrote: 21 Jan 2021 13:21 Oops, started and got this error on map generation (latest XIS).
Could you show script settings?
Projects: Reproducible Map Generation patch, NewGRFs: Manpower industries, PolTrams, Polroad, 600mm narrow gauge, preindustrial houses, wired, ECS industry extension, V4 CEE train set.
Addicted to freeciv longturn.
nihues
Engineer
Engineer
Posts: 69
Joined: 13 Jan 2015 10:26

Re: [GS] Think globally, act locally

Post by nihues »

Just tried again with Industry setting OFF and works. It occurs when Industry: try to keep industries on map: ON

the rest are default.
McZapkie
Tycoon
Tycoon
Posts: 1255
Joined: 18 Jan 2014 18:10

Re: [GS] Think globally, act locally

Post by McZapkie »

Fixed version 20 is on bananas. I also simplified city growth rules, below 50 city grow intself, below 500 it demands mail or pass, above this threshold it demand both mail and pass.
Projects: Reproducible Map Generation patch, NewGRFs: Manpower industries, PolTrams, Polroad, 600mm narrow gauge, preindustrial houses, wired, ECS industry extension, V4 CEE train set.
Addicted to freeciv longturn.
Argus
Traffic Manager
Traffic Manager
Posts: 208
Joined: 16 Oct 2018 08:31

Re: [GS] Think globally, act locally

Post by Argus »

The game seems to ignore older versions of the script. When you start a game played with an older version, the script does not load.
Post Reply

Return to “OpenTTD AIs and Game Scripts”

Who is online

Users browsing this forum: No registered users and 1 guest