[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 » 02 Apr 2019 00:41

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: 1176
Joined: 18 Jan 2014 18:10

Re: [GS] Think globally, act locally

Post by McZapkie » 02 Apr 2019 08:53

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.
My experimental openTTD server: 149.156.194.203:3979 non-standard client, now testing: JGRPP http://tiny.pl/ggnch
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 » 02 Apr 2019 09:31

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: 1176
Joined: 18 Jan 2014 18:10

Re: [GS] Think globally, act locally

Post by McZapkie » 02 Apr 2019 12:59

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 » 02 Apr 2019 19:36

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: 57
Joined: 24 May 2017 12:51
Location: East Texas

Re: [GS] Think globally, act locally

Post by rowdog » 15 Apr 2019 14:37

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;
}

Post Reply

Return to “OpenTTD AIs and Game Scripts”

Who is online

Users browsing this forum: No registered users and 2 guests