Mercurial > hg > openttd
changeset 18754:114868c40989 draft
(svn r23602) -Add: support for DEITY commands, commands where no real company was involved in (Rubidium)
author | truebrain <truebrain@openttd.org> |
---|---|
date | Mon, 19 Dec 2011 20:50:36 +0000 |
parents | 8d2cdabac894 |
children | c49df8e47d29 |
files | src/command.cpp src/command_type.h src/company_type.h |
diffstat | 3 files changed, 11 insertions(+), 9 deletions(-) [+] |
line wrap: on
line diff
--- a/src/command.cpp +++ b/src/command.cpp @@ -609,7 +609,7 @@ /* If the company isn't valid it may only do server command or start a new company! * The server will ditch any server commands a client sends to it, so effectively * this guards the server from executing functions for an invalid company. */ - if (_game_mode == GM_NORMAL && !exec_as_spectator && !Company::IsValidID(_current_company)) { + if (_game_mode == GM_NORMAL && !exec_as_spectator && !Company::IsValidID(_current_company) && !(_current_company == OWNER_DEITY && (cmd_flags & CMD_DEITY) != 0)) { return_dcpi(CMD_ERROR, false); }
--- a/src/command_type.h +++ b/src/command_type.h @@ -346,14 +346,15 @@ * This enumeration defines flags for the _command_proc_table. */ enum CommandFlags { - CMD_SERVER = 0x01, ///< the command can only be initiated by the server - CMD_SPECTATOR = 0x02, ///< the command may be initiated by a spectator - CMD_OFFLINE = 0x04, ///< the command cannot be executed in a multiplayer game; single-player only - CMD_AUTO = 0x08, ///< set the DC_AUTO flag on this command - CMD_ALL_TILES = 0x10, ///< allow this command also on MP_VOID tiles - CMD_NO_TEST = 0x20, ///< the command's output may differ between test and execute due to town rating changes etc. - CMD_NO_WATER = 0x40, ///< set the DC_NO_WATER flag on this command - CMD_CLIENT_ID = 0x80, ///< set p2 with the ClientID of the sending client. + CMD_SERVER = 0x001, ///< the command can only be initiated by the server + CMD_SPECTATOR = 0x002, ///< the command may be initiated by a spectator + CMD_OFFLINE = 0x004, ///< the command cannot be executed in a multiplayer game; single-player only + CMD_AUTO = 0x008, ///< set the DC_AUTO flag on this command + CMD_ALL_TILES = 0x010, ///< allow this command also on MP_VOID tiles + CMD_NO_TEST = 0x020, ///< the command's output may differ between test and execute due to town rating changes etc. + CMD_NO_WATER = 0x040, ///< set the DC_NO_WATER flag on this command + CMD_CLIENT_ID = 0x080, ///< set p2 with the ClientID of the sending client. + CMD_DEITY = 0x100, ///< the command may be executed by COMPANY_DEITY }; DECLARE_ENUM_AS_BIT_SET(CommandFlags)
--- a/src/company_type.h +++ b/src/company_type.h @@ -26,6 +26,7 @@ OWNER_TOWN = 0x0F, ///< A town owns the tile, or a town is expanding OWNER_NONE = 0x10, ///< The tile has no ownership OWNER_WATER = 0x11, ///< The tile/execution is done by "water" + OWNER_DEITY = 0x12, ///< The object is owned by a superuser / goal script OWNER_END, ///< Last + 1 owner INVALID_OWNER = 0xFF, ///< An invalid owner INVALID_COMPANY = 0xFF, ///< An invalid company