mirror of
https://gitea.wildfiregames.com/0ad/0ad.git
synced 2026-09-21 20:06:40 +00:00
Add team option to autostart. Patch by Jonbaer
This was SVN commit r18133.
This commit is contained in:
@@ -10,8 +10,9 @@ Autostart:
|
|||||||
-autostart="TYPEDIR/MAPNAME" enables autostart and sets MAPNAME; TYPEDIR is skirmishes, scenarios, or random
|
-autostart="TYPEDIR/MAPNAME" enables autostart and sets MAPNAME; TYPEDIR is skirmishes, scenarios, or random
|
||||||
-autostart-ai=PLAYER:AI sets the AI for PLAYER (e.g. 2:petra)
|
-autostart-ai=PLAYER:AI sets the AI for PLAYER (e.g. 2:petra)
|
||||||
-autostart-aidiff=PLAYER:DIFF sets the DIFFiculty of PLAYER's AI (0: sandbox, 5: very hard)
|
-autostart-aidiff=PLAYER:DIFF sets the DIFFiculty of PLAYER's AI (0: sandbox, 5: very hard)
|
||||||
-autostart-civ=PLAYER:CIV sets PLAYER's civilisation to CIV (skirmish and random maps only)
|
|
||||||
-autostart-aiseed=AISEED sets the seed used for the AI random generator (default 0, use -1 for random)
|
-autostart-aiseed=AISEED sets the seed used for the AI random generator (default 0, use -1 for random)
|
||||||
|
-autostart-civ=PLAYER:CIV sets PLAYER's civilisation to CIV (skirmish and random maps only)
|
||||||
|
-autostart-team=PLAYER:TEAM sets the team for PLAYER (e.g. 2:2).
|
||||||
Multiplayer:
|
Multiplayer:
|
||||||
-autostart-playername=NAME sets local player NAME (default 'anonymous')
|
-autostart-playername=NAME sets local player NAME (default 'anonymous')
|
||||||
-autostart-host sets multiplayer host mode
|
-autostart-host sets multiplayer host mode
|
||||||
|
|||||||
@@ -1168,26 +1168,38 @@ CStr8 LoadSettingsOfScenarioMap(const VfsPath &mapPath)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Command line options for autostart (keep synchronized with binaries/system/readme.txt):
|
* Command line options for autostart
|
||||||
|
* (keep synchronized with binaries/system/readme.txt):
|
||||||
|
*
|
||||||
|
* -autostart="TYPEDIR/MAPNAME" enables autostart and sets MAPNAME;
|
||||||
|
* TYPEDIR is skirmishes, scenarios, or random
|
||||||
|
* -autostart-ai=PLAYER:AI sets the AI for PLAYER (e.g. 2:petra)
|
||||||
|
* -autostart-aidiff=PLAYER:DIFF sets the DIFFiculty of PLAYER's AI
|
||||||
|
* (0: sandbox, 5: very hard)
|
||||||
|
* -autostart-aiseed=AISEED sets the seed used for the AI random
|
||||||
|
* generator (default 0, use -1 for random)
|
||||||
|
* -autostart-civ=PLAYER:CIV sets PLAYER's civilisation to CIV
|
||||||
|
* (skirmish and random maps only)
|
||||||
|
* -autostart-team=PLAYER:TEAM sets the team for PLAYER (e.g. 2:2).
|
||||||
*
|
*
|
||||||
* -autostart="TYPEDIR/MAPNAME" enables autostart and sets MAPNAME; TYPEDIR is skirmishes, scenarios, or random
|
|
||||||
* -autostart-ai=PLAYER:AI sets the AI for PLAYER (e.g. 2:petra)
|
|
||||||
* -autostart-aidiff=PLAYER:DIFF sets the DIFFiculty of PLAYER's AI (0: sandbox, 5: very hard)
|
|
||||||
* -autostart-civ=PLAYER:CIV sets PLAYER's civilisation to CIV (skirmish and random maps only)
|
|
||||||
* -autostart-aiseed=AISEED sets the seed used for the AI random generator (default 0, use -1 for random)
|
|
||||||
* Multiplayer:
|
* Multiplayer:
|
||||||
* -autostart-playername=NAME sets local player NAME (default 'anonymous')
|
* -autostart-playername=NAME sets local player NAME (default 'anonymous')
|
||||||
* -autostart-host sets multiplayer host mode
|
* -autostart-host sets multiplayer host mode
|
||||||
* -autostart-host-players=NUMBER sets NUMBER of human players for multiplayer game (default 2)
|
* -autostart-host-players=NUMBER sets NUMBER of human players for multiplayer
|
||||||
* -autostart-client=IP sets multiplayer client to join host at given IP address
|
* game (default 2)
|
||||||
|
* -autostart-client=IP sets multiplayer client to join host at
|
||||||
|
* given IP address
|
||||||
* Random maps only:
|
* Random maps only:
|
||||||
* -autostart-seed=SEED sets random map SEED value (default 0, use -1 for random)
|
* -autostart-seed=SEED sets random map SEED value
|
||||||
* -autostart-size=TILES sets random map size in TILES (default 192)
|
* (default 0, use -1 for random)
|
||||||
* -autostart-players=NUMBER sets NUMBER of players on random map (default 2)
|
* -autostart-size=TILES sets random map size in TILES (default 192)
|
||||||
|
* -autostart-players=NUMBER sets NUMBER of players on random map
|
||||||
|
* (default 2)
|
||||||
*
|
*
|
||||||
* Examples:
|
* Examples:
|
||||||
* 1) "Bob" will host a 2 player game on the Arcadia map:
|
* 1) "Bob" will host a 2 player game on the Arcadia map:
|
||||||
* -autostart="scenarios/Arcadia 02" -autostart-host -autostart-host-players=2 -autostart-playername="Bob"
|
* -autostart="scenarios/Arcadia 02" -autostart-host -autostart-host-players=2 -autostart-playername="Bob"
|
||||||
|
*
|
||||||
* 2) Load Alpine Lakes random map with random seed, 2 players (Athens and Britons), and player 2 is PetraBot:
|
* 2) Load Alpine Lakes random map with random seed, 2 players (Athens and Britons), and player 2 is PetraBot:
|
||||||
* -autostart="random/alpine_lakes" -autostart-seed=-1 -autostart-players=2 -autostart-civ=1:athen -autostart-civ=2:brit -autostart-ai=2:petra
|
* -autostart="random/alpine_lakes" -autostart-seed=-1 -autostart-players=2 -autostart-civ=1:athen -autostart-civ=2:brit -autostart-ai=2:petra
|
||||||
*/
|
*/
|
||||||
@@ -1331,6 +1343,33 @@ bool Autostart(const CmdLineArgs& args)
|
|||||||
if (scriptInterface.GetPropertyInt(playerData, 0, &player) && player.isNull())
|
if (scriptInterface.GetPropertyInt(playerData, 0, &player) && player.isNull())
|
||||||
offset = 0;
|
offset = 0;
|
||||||
|
|
||||||
|
// Set teams
|
||||||
|
if (args.Has("autostart-team"))
|
||||||
|
{
|
||||||
|
std::vector<CStr> civArgs = args.GetMultiple("autostart-team");
|
||||||
|
for (size_t i = 0; i < civArgs.size(); ++i)
|
||||||
|
{
|
||||||
|
int playerID = civArgs[i].BeforeFirst(":").ToInt();
|
||||||
|
|
||||||
|
// Instead of overwriting existing player data, modify the array
|
||||||
|
JS::RootedValue player(cx);
|
||||||
|
if (!scriptInterface.GetPropertyInt(playerData, playerID-offset, &player) || player.isUndefined())
|
||||||
|
{
|
||||||
|
if (mapDirectory == L"skirmishes")
|
||||||
|
{
|
||||||
|
// playerID is certainly bigger than this map player number
|
||||||
|
LOGWARNING("Autostart: Invalid player %d in autostart-team option", playerID);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
scriptInterface.Eval("({})", &player);
|
||||||
|
}
|
||||||
|
|
||||||
|
int teamID = civArgs[i].AfterFirst(":").ToInt() - 1;
|
||||||
|
scriptInterface.SetProperty(player, "Team", teamID);
|
||||||
|
scriptInterface.SetPropertyInt(playerData, playerID-offset, player);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (args.Has("autostart-ai"))
|
if (args.Has("autostart-ai"))
|
||||||
{
|
{
|
||||||
std::vector<CStr> aiArgs = args.GetMultiple("autostart-ai");
|
std::vector<CStr> aiArgs = args.GetMultiple("autostart-ai");
|
||||||
|
|||||||
Reference in New Issue
Block a user