Is it possible to change inflation in openttd while it is running?

I do not want to restart the server, but I would like to stop inflation in the game. It is quite annoying that price are increasing. Is it possible?


Although I'm not aware of anything related to server implementation (as I don't play the game in a regular basis), a quick search through the OpenTTD wiki shows a setting that disables inflation all together.

It can be found at Advanced Settings > Economy > Inflation.

Also to note that before OpenTTD 1.3.0 there was no option to disable inflation, as it was somehow merged with the economy status.


This question has an answer applicable for single-player play, but not when running a headless openttd server.

Configuration over SSH

In order to change the setting on a running server, while SSHed into the box in the session or screen that is running the server, use the console command

set <setting> <value> 

In your case, in particular: try:

set inflation false 

Some settings may require you to restart the game. Restarting the server should not be ever necessary to change settings. In order to start a new game, use the command:

restart

In-game configuration via rcon

Normally, you must execute these commands on the server itself (e.g. by SSHing into it). In order for this to work on a server where OpenTTD is running as a background process (you have for example forked it), you will have to have configured either an rcon_password or admin_password beforehand. These can be found in the [network] section of the configuration file openttd.cfg. Example:

[network]
rcon_password = "8MuQooL$pl595"

With the rcon_password you can use the in-game console as a client by prefixing your commands like so: rcon <rcon_password> "<command>"; so the example becomes:

rcon 8MuQooL$pl595 "set inflation false" 

Programmable configuration

If you would like to program these settings (e.g. so a moderator could change game settings via a web-interface) you can use the admin interface. How to do Socket-programming on the admin interface to send the correct bytes to do what you want is a bit out of the scope of this answer, so you can read more about that in the official documentation. There are also libraries available for java, javascript, PHP and python linked on the wiki. Assuming you know how to connect and communicate with the admin port:

The interesting packet type with which you can send commands like the above is (note that the openttd admin interface is little endian, opposite to usual network programming interfaces):

ADMIN_PACKET_ADMIN_RCON = 0x05 0x00

Append this packet identifier with the rcon command as a null-terminated C string (in our case: string cmd = "set inflation false"), or use one of the libraries to do the heavy lifting for you.

Also see the wiki for more information about the console in general.