XML-RPC Script callbacks

This is a list of the script callbacks implemented into the official Nadeo modes.

To use this callbacks you must set S_UseScriptCallbacks in the server settings to true (it's at false by default).

They all use ManiaPlanet.ModeScriptCallbackArray(string Param1, string Params[]); callback. Param1 is the name of the callback and Params is an array containing the data.

The only exception is Elite that has some very specific callbacks.

  • Data : Nothing
  • Example : []
  • Note : This callback is sent before the beginning of the script execution

  • Data : Nothing
  • Example : []
  • Note : This callback is sent after the beginning of the script execution

  • Data : An array with the number of the match and a boolean indicating if the script was restarted or not.
  • Example : ["3", "False"]
  • Note : This callback is sent before the beginning of each match

  • Data : An array with the number of the match and a boolean indicating if the script was restarted or not
  • Example : ["3", "False"]
  • Note : This callback is sent after the beginning of each match

  • Data : An array with the number of the map, its UID and if the map is new or restarted.
  • Example : ["1", "2icir0pvzfqwf4h9j3B5lkjYu4n", "False"]
  • Note : This callback is sent when the script start to load a map.
  • Version : UID and restart status are available since XmlRpc.Script.txt_v2015-02-19

  • Data : An array with the number of the map, its UID and if the map is new or restarted.
  • Example : ["1", "2icir0pvzfqwf4h9j3B5lkjYu4n", "False"]
  • Note : This callback is sent before the beginning of each map

  • Data : An array with the number of the map, its UID and if the map is new or restarted.
  • Example : ["1", "2icir0pvzfqwf4h9j3B5lkjYu4n", "False"]
  • Note : This callback is sent after the beginning of each map

  • Data : An array with the number of the submatch
  • Example : ["2"]
  • Note : This callback is sent before the beginning of each submatch if the mode uses submatches

  • Data : An array with the number of the submatch
  • Example : ["2"]
  • Note : This callback is sent after the beginning of each submatch if the mode uses submatches

  • Data : An array with the number of the round
  • Example : ["4"]
  • Note : This callback is sent before the beginning of each round if the mode uses rounds

  • Data : An array with the number of the round
  • Example : ["4"]
  • Note : This callback is sent after the beginning of each round if the mode uses rounds

  • Data : An array with the number of the turn
  • Example : ["5"]
  • Note : This callback is sent before the beginning of each turn if the mode uses turns

  • Data : An array with the number of the turn
  • Example : ["5"]
  • Note : This callback is sent after the beginning of each turn if the mode uses turns

  • Data : Nothing
  • Example : []
  • Note : This callback is sent at the beginning of the play loop

  • Data : Nothing
  • Example : []
  • Note : This callback is sent at the end of the play loop

  • Data : An array with the number of the turn
  • Example : ["5"]
  • Note : This callback is sent before the end of each turn if the mode uses turns

  • Data : An array with the number of the turn
  • Example : ["5"]
  • Note : This callback is sent after the end of each turn if the mode uses turns

  • Data : An array with the number of the round
  • Example : ["4"]
  • Note : This callback is sent before the end of each round if the mode uses rounds

  • Data : An array with the number of the round
  • Example : ["4"]
  • Note : This callback is sent after the end of each round if the mode uses rounds

  • Data : An array with the number of the submatch
  • Example : ["2"]
  • Note : This callback is sent before the end of each submatch if the mode uses submatches

  • Data : An array with the number of the submatch
  • Example : ["2"]
  • Note : This callback is sent after the end of each submatch if the mode uses submatches

  • Data : An array with the number of the map and its UID
  • Example : ["1", "2icir0pvzfqwf4h9j3B5lkjYu4n"]
  • Note : This callback is sent before the end of each map

  • Data : An array with the number of the map and its UID
  • Example : ["1", "2icir0pvzfqwf4h9j3B5lkjYu4n"]
  • Note : This callback is sent after the end of each map

  • Data : An array with the number of the map and its UID
  • Example : ["1", "2icir0pvzfqwf4h9j3B5lkjYu4n"]
  • Note : This callback is sent when the script start to unload a map
  • Version : UID is available since XmlRpc.Script.txt_v2015-02-19

  • Data : An array with the number of the match
  • Example : ["3"]
  • Note : This callback is sent before the end of each match

  • Data : An array with the number of the match
  • Example : ["3"]
  • Note : This callback is sent after the end of each match

  • Data : Nothing
  • Example : []
  • Note : This callback is sent before the end of the script execution

  • Data : Nothing
  • Example : []
  • Note : This callback is sent after the end of the script execution

  • Data : Nothing
  • Example : []
  • Note : This callback is sent at the beginning of the podium sequence

  • Data : Nothing
  • Example : []
  • Note : This callback is sent at the end of the podium sequence

  • Data : Nothing
  • Example : []
  • Note : This callback is sent at the beginning of the warm up

  • Data : Nothing
  • Example : []
  • Note : This callback is sent at the end of the warm up

  • Data : An array with one value saying if the mode is in pause or not
  • Example : ["True"]
  • Note : This callback is sent after using the LibXmlRpc_GetPause method or when the pause status changes.
  • Version : available since XmlRpcCommon.Script.txt_v2015-02-23

  • Data : Nothing
  • Example : []
  • Note : This callback is sent at the end of the gaming sequence, when the scores are accurate and ready to be used for statistical purpose for example.
  • Version : available since XmlRpc.Script.txt_v2015-02-19

  • Data : An array with the name of all the available callbacks
  • Example : ["LibXmlRpc_EndWarmUp", "LibXmlRpc_EndMatch", ...]
  • Note : This callback is sent when the script receives the LibXmlRpc_ListCallbacks trigger.
  • Version : available since XmlRpc.Script.txt_v2014-10-14

  • Data : An array with name of the callback and its documentation
  • Example : ["LibXmlRpc_EndWarmUp", "Documentation about LibXmlRpc_EndWarmUp"]
  • Note : This callback is sent when the script receives the LibXmlRpc_GetCallbackHelp trigger.
  • Version : available since XmlRpc.Script.txt_v2014-10-14

  • Data : An array with name of the blocked callbacks.
  • Example : ["LibXmlRpc_EndWarmUp", "LibXmlRpc_OnShoot", "LibXmlRpc_BeginTurn"]
  • Note : This callback is sent when the script receives the LibXmlRpc_ListBlockedCallbacks trigger.
  • Version : available since XmlRpc.Script.txt_v2014-10-14

  • Data : An xml string with the Trackmania ui properties. Check the [documentation]({{ site.docurl }}/creation/maniascript/libraries/library-ui.html) for more information.
  • Example : [""]
  • Note : This callback is sent when the script receives the UI_GetProperties trigger.
  • Version : available since UI.Script.txt_v2014-09-16

  • Data : An array with a boolean to indicate if the mode is in warm up or not.
  • Example : ["True"]
  • Note : This callback is sent when the script receives the LibXmlRpc_GetWarmUp trigger.

  • Data : An array with a list of players with their scores
  • Example : ["Login1:Score1;Login2:Score2;Login3:Score3;LoginN:ScoreN"]
  • Note : This callback is sent just before LibXmlRpc_EndTurn, LibXmlRpc_EndRound, LibXmlRpc_EndSubmatch, LibXmlRpc_EndMap and LibXmlRpc_EndMatch

  • Data : An array with the match and map scores in team modes
  • Example : ["1", "0", "5", "6"]
  • Note : ["MatchScoreClan1", "MatchScoreClan2", "MapScoreClan1", "MapScoreClan2"]

  • Data : An array with the current rank in the scores, login, nickname, team id, spectator status, away status, points and zone of a player
  • Example : ["1", "eole", "b`Side.Eole", "0", "False", "False", "10", "World|Europe|France|Outre-Mer|Reunion"]
  • Note : [Rank, Login, NickName, TeamId, IsSpectator, IsAway, CurrentPoints, Zone]

  • Data : An array with one value saying if the mode use a warm up or not
  • Example : ["True"]
  • Note : This callback is sent after using the WarmUp_GetStatus method

  • Data : An array with the login of the AFK player
  • Example : ["Login"]
  • Note : This callback is sent when the AFK library detects an AFK player, it will be sent until the player is forced into spectator mode

  • Data : An array with the properties of the AFK library
  • Example : ["90000", "15000", "10000", "True"]
  • Note :
    • IdleTimeLimit -> Time after which a player is considered to be AFK
    • SpawnTimeLimit -> Time after spawn before which a player can't be considered to be AFK
    • CheckInterval -> Time between each AFK check
    • ForceSpec -> Let the library force the AFK player into spectator mode

To avoid to spam XmlRpc these events are sent only if it has an interest for the mode

  • Data : An array with the login of the shooter and the number of the weapon used
  • Example : ["ShooterLogin", "1"]
  • Note : This callback is sent when a player shoots. Weapon number -> 1: Laser, 2: Rocket, 3: Nucleus, 5: Arrow

  • Data : An array with the login of the shooter, the login of the victim, the amount of damage, the weapon number, the shooter points (the +1, +2, etc displayed in game when you hit someone), the hit distance, the shooter position, the victim position, the shooter aim direction and the victim aim direction.
  • Example : ["ShooterLogin", "VictimLogin", "200", "1", "2", "77.479", "196.904,4.399,179.419", "119.669,0.991,184.553","-0.996,-0.041,0.065", "0.952,0.264,0.151"]
  • Note : This callback is sent when a player is hit. One armor point = 100 damage. Weapon number -> 1: Laser, 2: Rocket, 3: Nucleus, 5: Arrow. The hit distance, the positions and the aim directions of the players are calculated when the projectile hit, so it's not really accurate for weapons with a travel time.
  • version : victim and shooter positions and aim directions are available since XmlRpc.Script.txt_v2015-03-05

  • Data : An array with the login of the shooter, the login of the victim, the weapon number and the distance of the miss
  • Example : ["ShoterLogin", "VictimLogin", "1", "0.05"]
  • Note : This callback is sent when a player shot a Laser near another player without hitting him. The distance is in meter.

  • Data : An array with the login of the shooter, the login of the victim, the amount of damage, the weapon number and the shooter points (the +1, +2, etc displayed in game when you hit someone)
  • Example : ["ShooterLogin", "VictimLogin", "100", "3", "1"]
  • Note : This callback is sent when a player has 0 armor (hit by a player, fall in an offzone, ...) One armor point = 100 damage, Weapon number -> 1: Laser, 2: Rocket, 3: Nucleus, 5: Arrow

  • Data : An array with the login of the players who were on the pole plate when it was captured
  • Example : ["Login1;Login2;Login3;LoginN"]
  • Note : This callback is sent when a pole is captured.

  • Data : An array with the login of the player requesting the respawn
  • Example : ["Login"]
  • Note : This callback is sent when a player requests a respawn.

  • Data : An array with the login of the player and its ready state
  • Example : ["Login", "True"]
  • Note : This callback is sent when the ready state of the player change. It can also be triggered with the Matchmaking_GetReadyState method.
  • Version : available since ModeMatchmaking.Script.txt_v2014-10-26

  • Data : An array with the login of the player scoring the point, the type of points and the number of points
  • Example : ["Login", "Pole", "10"]
  • Note : This callback is sent when a player scores points. The points can be of three types: Hit, Pole or Survival

  • Data : An array with the login of the player spawning and the type of spawn
  • Example : ["Login", "1"]
  • Note : This callback is sent when a player spawns or respawns. Two type of spawn -> 0: normal, 1: early . The normal spawn is the first spawn of the player, while an early respawn is when a player respawn during a round before the pole is captured.

  • Data : An array with the login of the player who won the round
  • Example : ["Login"]
  • Note : This callback is sent at the end of the round.

  • Data : An array with the login of the player
  • Example : ["Login"]
  • Note : This callback is sent when a player starts a run.

  • Data : An array with the login of the player and its time at the checkpoint
  • Example : ["Login", "37840"]
  • Note : This callback is sent when a player crosses a checkpoint. The time is in milliseconds.

  • Data : An array with the login of the player and its time at the finish
  • Example : ["Login", "149890"]
  • Note : This callback is sent when a player crosses the finish line. The time is in milliseconds.

  • Data : An array with the login of the player and its time at the time of the restart
  • Example : ["Login", "3540"]
  • Note : This callback is sent when a player asks to respawn or is eliminated. The time is in milliseconds.

  • Data : An array with the login of the player reloading
  • Example : ["Login"]
  • Note : This callback is sent when a player touches a pole to reload.

  • Data : An array with the logins of the two players who'll play the round.
  • Example : ["LoginPlayer1", "LoginPlayer2"]
  • Note : This callback is sent at the beginning of the round to announce the two opponents.

  • Data : An array with the logins and score of each player of the round
  • Example : ["LoginPlayer1:ScorePlayer1", "LoginPlayer2:ScorePlayer2"]
  • Note : This callback is sent at the end of the round.

  • Data : An array with one value saying if the mode is in pause or not
  • Example : ["True"]
  • Note : This callback is sent after using the Combo_GetPause method or when the pause status changes.
  • Version : available since Combo.Script.txt_v2014-09-15

  • Data : An array with the logins of the attacker and defenders
  • Example : ["attackerlogin", "defenderlogin1;defenderlogin2;defenderlogin3"]
  • Note : This callback is sent after LibXmlRpc_BeginTurn.
  • Version : available since ModeSport.Script.txt_v2014-10-13

  • Data : An array with the type of victory for the round
  • Example : [1]
  • Note : 1 -> Time limit, 2 -> Capture, 3 -> Attacker eliminated, 4-> Defenders eliminated
  • Version : available since ModeSport.Script.txt_v2014-10-13

Elite is a bit special as it uses an older callback function and JSON encoding. ManiaPlanet.ModeScriptCallback(string Param1, string Param2); Param1 is the name of the callback and Param2 contains the data.

The generic callbacks listed above are also sent in Elite. So if you want to turn off the JSON ones you can change the setting S_UseLegacyCallback to False (it's at True by default).

  • Note : This callback is sent at the beginning of each match
  • Data Example :
{
    "Timestamp": 8907890,
    "MatchNumber": 1,
    "Restart": false
}

  • Note : This callback is sent at the beginning of each map
  • Data Example :
{
    "Timestamp": 8910190,
    "MapNumber": 1,
    "Restart": false
}

  • Note : This callback is sent at the beginning of each submatch
  • Data Example :
{
    "Timestamp": 8910190,
    "SubmatchNumber": 1
}

  • Note : This callback is sent at the beginning of each turn
  • Data Example :
{
    "Timestamp": 2793470,
    "TurnNumber": 2,
    "StartTime": 2796470,
    "EndTime": 2856470,
    "PoleTime": 2841470,
    "AttackingClan": 2,
    "DefendingClan": 1,
    "AttackingPlayer": {
        "Login": "eole2",
        "Name": "$aafV².$fffAessi",
        "CurrentClan": 2,
        "Armor": 300,
        "ArmorMax": 300,
        "IsTouchingGround": false,
        "IsCapturing": false,
        "IsInOffZone": false,
        "Score": {
            "AtkPoints": 0,
            "DefPoints": 3,
            "GoalAverage": 2
        }
    },
    "DefendingPlayers": [
        {
            "Login": "eole",
            "CurrentClan": 1,
            "AtkPoints": 0,
            "DefPoints": 0
        },
        {
            "Login": "test2",
            "CurrentClan": 1,
            "AtkPoints": 0,
            "DefPoints": 0
        },
        {
            "Login": "test3",
            "CurrentClan": 1,
            "AtkPoints": 0,
            "DefPoints": 0
        }
    ]
}

  • Note : This callback is sent when the attacker captured the pole
  • Data Example :
{
    "Timestamp": 1329230,
    "StartTime": 1279720,
    "EndTime": 1339720,
    "PoleTime": 1324720,
    "Event": {
        "Type": "EType::OnCapture",
        "Damage": 0,
        "WeaponNum": 0,
        "MissDist": 0,
        "Player": {
            "Login": "eole2",
            "Name": "$aafV².$fffAessi",
            "CurrentClan": 2,
            "Armor": 100,
            "ArmorMax": 100,
            "IsTouchingGround": true,
            "IsCapturing": true,
            "IsInOffZone": false,
            "Score": {
                "AtkPoints": 0,
                "DefPoints": 0,
                "GoalAverage": -3
            }
        },
        "Pole": {
            "Tag": "Goal A",
            "Order": 0,
            "Captured": false
        }
    }
}

  • Note : This callback is sent when a player hit another player
  • Data Example :
{
    "Timestamp": 161900,
    "StartTime": 156830,
    "EndTime": 216830,
    "PoleTime": 201830,
    "Event": {
        "Type": "EType::OnHit",
        "Damage": 100,
        "WeaponNum": 1,
        "MissDist": 0,
        "HitDist": 2.34118,
        "Shooter": {
            "Login": "eole2",
            "Name": "$aafV².$fffAessi",
            "CurrentClan": 2,
            "Armor": 100,
            "ArmorMax": 100,
            "IsTouchingGround": true,
            "IsCapturing": false,
            "IsInOffZone": false,
            "Score": {
                "AtkPoints": 0,
                "DefPoints": 1,
                "GoalAverage": 0
            },
            "Position": [45.65, 1.267, 6.498]
        },
        "Victim": {
            "Login": "eole",
            "Name": "$i$888b$fff`$888Side.$fffEole",
            "CurrentClan": 1,
            "Armor": 100,
            "ArmorMax": 100,
            "IsTouchingGround": true,
            "IsCapturing": false,
            "IsInOffZone": false,
            "Score": {
                "AtkPoints": 0,
                "DefPoints": 0,
                "GoalAverage": -2
            },
            "Position": [68.167495, 45.423, 6.19]
        }
    }
}

  • Note : This callback is sent when a player reaches 0 armor (eliminated by another player, falling in an offzone)
  • Data Example :
{
    "Timestamp": 10117060,
    "StartTime": 10080830,
    "EndTime": 10140830,
    "PoleTime": 10125830,
    "Event": {
        "Type": "EType::OnArmorEmpty",
        "Damage": 0,
        "WeaponNum": 0,
        "MissDist": 0,
        "Shooter": {
            "Login": "eole2",
            "Name": "$aafV².$fffAessi",
            "CurrentClan": 2,
            "Armor": 100,
            "ArmorMax": 100,
            "IsTouchingGround": true,
            "IsCapturing": true,
            "IsInOffZone": false,
            "Score": {
                "AtkPoints": 0,
                "DefPoints": 0,
                "GoalAverage": 0
            },
            "Position": [145.12, 10.2654, 0.144]
        },
        "Victim": {
            "Login": "eole",
            "Name": "$i$888b$fff`$888Side.$fffEole",
            "CurrentClan": 1,
            "Armor": 0,
            "ArmorMax": 100,
            "IsTouchingGround": true,
            "IsCapturing": true,
            "IsInOffZone": false,
            "Score": {
                "AtkPoints": 0,
                "DefPoints": 0,
                "GoalAverage": -1
            },
            "Position": [95.45, 58.65, 9.157]
        }
    }
}

  • Note : This callback is sent when a player requests a respawn.
  • Data Example :
{
    "Timestamp": 142460,
    "StartTime": 100460,
    "EndTime": 160460,
    "PoleTime": 145460,
    "Event": {
        "Type": "EType::OnPlayerRequestRespawn",
        "Damage": 0,
        "WeaponNum": 0,
        "MissDist": 0,
        "Player": {
            "Login": "eole",
            "Name": "$i$888b$fff`$888Side.$fffEole",
            "CurrentClan": 1,
            "Armor": 100,
            "ArmorMax": 100,
            "IsTouchingGround": true,
            "IsCapturing": false,
            "IsInOffZone": false,
            "Score": {
                "AtkPoints": 0,
                "DefPoints": 0,
                "GoalAverage": 0
            }
        }
    }
}

  • Note : This callback is sent when a player shoots.
  • Data Example :
{
    "Timestamp": 1784110,
    "StartTime": 1778750,
    "EndTime": 1838750,
    "PoleTime": 1823750,
    "Event": {
        "Type": "EType::OnShoot",
        "Damage": 0,
        "WeaponNum": 1,
        "MissDist": 0,
        "Shooter": {
            "Login": "eole2",
            "Name": "$aafV².$fffAessi",
            "CurrentClan": 2,
            "Armor": 100,
            "ArmorMax": 100,
            "IsTouchingGround": true,
            "IsCapturing": false,
            "IsInOffZone": false,
            "Score": {
                "AtkPoints": 0,
                "DefPoints": 0,
                "GoalAverage": 0
            },
            "Position": [193.142, 0.995464, 159.373]
        }
    }
}

  • Note : This callback is sent when the attacker shot a Laser near a defender without hitting him.
  • Data Example :
{
    "Timestamp": 710280,
    "StartTime": 702670,
    "EndTime": 762670,
    "PoleTime": 747670,
    "Event": {
        "Type": "EType::OnNearMiss",
        "Damage": 0,
        "WeaponNum": 0,
        "MissDist": 0.0256433,
        "Shooter": {
            "Login": "eole",
            "Name": "$i$888b$fff`$888Side.$fffEole",
            "CurrentClan": 1,
            "Armor": 100,
            "ArmorMax": 100,
            "IsTouchingGround": true,
            "IsCapturing": false,
            "IsInOffZone": false,
            "Score": {
                "AtkPoints": 0,
                "DefPoints": 0,
                "GoalAverage": 0
            }
        },
        "Victim": {
            "Login": "eole2",
            "Name": "$aafV².$fffAessi",
            "CurrentClan": 2,
            "Armor": 100,
            "ArmorMax": 100,
            "IsTouchingGround": true,
            "IsCapturing": false,
            "IsInOffZone": false,
            "Score": {
                "AtkPoints": 0,
                "DefPoints": 0,
                "GoalAverage": 0
            }
        }
    }
}

  • Note : This callback is sent at the end of each turn.
  • Data Example :
{
    "Timestamp": 6909440,
    "TurnNumber": 1,
    "StartTime": 6903090,
    "EndTime": 6909440,
    "PoleTime": 6894440,
    "AttackingClan": 2,
    "DefendingClan": 1,
    "AttackingPlayer": {
        "Login": "eole2",
        "Name": "$aafV².$fffAessi",
        "CurrentClan": 2,
        "Armor": 100,
        "ArmorMax": 100,
        "IsTouchingGround": false,
        "IsCapturing": false,
        "IsInOffZone": false,
        "Score": {
            "AtkPoints": 1,
            "DefPoints": 0,
            "GoalAverage": 3
        }
    },
    "TurnWinnerClan": 2,
    "WinType": "DefenseEliminated",
    "Clan1RoundScore": 0,
    "Clan2RoundScore": 1,
    "Clan1MapScore": 0,
    "Clan2MapScore": 0,
    "ScoresTable": [
        {
            "Login": "eole",
            "CurrentClan": 1,
            "AtkPoints": 0,
            "DefPoints": 0,
            "TurnHits": [1,1,1]
        },
        {
            "Login": "test1",
            "CurrentClan": 1,
            "AtkPoints": 0,
            "DefPoints": 0,
            "TurnHits": []
        },
        {
            "Login": "test2",
            "CurrentClan": 1,
            "AtkPoints": 0,
            "DefPoints": 0,
            "TurnHits": []
        },
        {
            "Login": "eole2",
            "CurrentClan": 2,
            "AtkPoints": 1,
            "DefPoints": 0,
            "TurnHits": []
        },
        {
            "Login": "test3",
            "CurrentClan": 2,
            "AtkPoints": 0,
            "DefPoints": 0,
            "TurnHits": []
        },
        {
            "Login": "test4",
            "CurrentClan": 2,
            "AtkPoints": 0,
            "DefPoints": 0,
            "TurnHits": []
        }
    ]
}

  • Note : This callback is sent at the end of each submatch.
  • Data Example :
{
    "Timestamp": 7699950,
    "SubmatchNumber": 1
}

  • Note : This callback is sent at the end of each map.
  • Data Example :
{
    "Timestamp": 7699950,
    "MapNumber": 1,
    "MapWinnerClan": 2,
    "Clan1MapScore": 0,
    "Clan2MapScore": 0,
    "ScoresTable": [
        {
            "Login": "eole",
            "CurrentClan": 1,
            "AtkPoints": 0,
            "DefPoints": 0
        },
        {
            "Login": "test1",
            "CurrentClan": 1,
            "AtkPoints": 0,
            "DefPoints": 0
        },
        {
            "Login": "test2",
            "CurrentClan": 1,
            "AtkPoints": 0,
            "DefPoints": 0
        },
        {
            "Login": "eole2",
            "CurrentClan": 2,
            "AtkPoints": 1,
            "DefPoints": 0
        },
        {
            "Login": "test3",
            "CurrentClan": 2,
            "AtkPoints": 0,
            "DefPoints": 0
        },
        {
            "Login": "test4",
            "CurrentClan": 2,
            "AtkPoints": 0,
            "DefPoints": 0
        }
    ]
}

  • Note : This callback is sent at the end of each match.
  • Data Example :
{
    "Timestamp": 8380990,
    "MatchNumber": 1,
    "MatchWinnerClan": 1,
    "Clan1MapScore": 1,
    "Clan2MapScore": 0
}

  • Note : This callback is sent at the beginning of the warm up.
  • Data Example :
{
    "Timestamp": 8911200,
    "AllReady": false
}

  • Note : This callback is sent at the end of the warm up.
  • Data Example :
{
    "Timestamp": 8925780,
    "AllReady": true
}

  • Note : The server sends this callback and then waits during 5 seconds to receive the "MatchmakingSetOrder" script event.

  • Data : An array with the login of the starting player
  • Example : ["Login"]
  • Note : This callback is sent when a player is spawned on the track before the 3,2,1,Go! countdown.

  • Data : An array with the login of the starting player
  • Example : ["Login"]
  • Note : This callback is sent when a player starts a race.

  • Data : An array with the login of the player crossing the waypoint, the id of the waypoint block, the current race time, the waypoint number in the race, if the waypoint is the end of the race, the current lap time, the waypoint number in the lap and if the waypoint is the end of the lap.
  • Example : ["Login", "#123456", "21723", "7", "False", "6164", "1", "False"]
  • Note : This callback is sent when a player crosses a waypoint (checkpoint, finish, multilap, ...).

  • Data : An array with the login of the player crossing the finish, the id of the finish block and the race time.
  • Example : ["Login", "#123456", "21723"]
  • Note : This callback is sent when a player crosses the finish.

  • Data : An array with the login of the restarting player
  • Example : ["Login"]
  • Note : This callback is sent when a player restarts.

  • Data : An array with the login of the player respawning, the id of the waypoint block, the waypoint number in the race, the waypoint number in the lap and the number of respawns since the beginning of the race.
  • Example : ["Login", "#123456", "1", "0", "5"]
  • Note : This callback is sent when a player respawns at a waypoint (checkpoint, multilap, ...).

  • Data : An array with the player login, the stunt points, the combo, the total stunts score, the factor, the stunt name, the angle, if the stunt is straight, if the stunt is reversed, if the stunt is a master jump
  • Example : ["Login", "25", "1", "0", "1.2", "::EStuntFigure::Spin", "180", "False", "False", "False"]
  • Note : This callback is sent when a player does a stunt. The stunts names are: None, StraightJump, Flip, BackFlip, Spin, Aerial, AlleyOop, Roll, Corkscrew, SpinOff, Rodeo, FlipFlap, Twister, FreeStyle, SpinningMix, FlippingChaos, RollingMadness, WreckNone, WreckStraightJump, WreckFlip, WreckBackFlip, WreckSpin, WreckAerial, WreckAlleyOop, WreckRoll, WreckCorkscrew, WreckSpinOff, WreckRodeo, WreckFlipFlap, WreckTwister, WreckFreeStyle, WreckSpinningMix, WreckFlippingChaos, WreckRollingMadness, TimePenalty, RespawnPenalty, Grind, Reset.

  • Data : An array with the current rank in the scores, login, nickname, team id, spectator status, away status, best time, zone, points, best checkpoints times and total points of a player.
  • Example : ["1", "eole", "b`Side.Eole", "0", "False", "False", "101234", "World|Europe|France|Outre-Mer|Reunion", "32", "12300,35641,45213", "50"]
  • Note : [Rank, Login, NickName, TeamId, IsSpectator, IsAway, BestTime, Zone, Points, BestCheckpoints, TotalPoints]

  • Data : An array with the login, current rank in the scores, best checkpoints times, team id, spectator status, away status, best time, zone, points and total score of a player.
  • Example : ["eole:1:123,456,789:-1:False:False:789:World|Europe|France|Outre-mer|Reunion:0:0", "eole2:1:-1:-1:False:False:-1:World|Europe|France|Outre-mer|Reunion:0:0"]
  • Note : ["Login:Rank:BestCheckpoints:TeamId:IsSpectator:IsAway:BestTime:Zone:Points:TotalScore"] The login, rank, best checkpoints, team id, spectator status, away status, best time, zone, points and total points of the players are separated by a colon. The best checkpoint times are separated by a comma. This callback is sent when the script receives the LibXmlRpc_GetPlayersRanking trigger.

  • Data : An array with the current score and login of the players.
  • Example : ["login1:45", "login19:29", "login48:18", "login7:9"]
  • Note : The login and the score of the players are separated by a colon. This callback is sent when the script receives the LibXmlRpc_GetPlayersScores trigger.

  • Data : An array with the best time and login of the players.
  • Example : ["login1:12654", "login19:15684", "login48:25964", "login7:-1"]
  • Note : The login and the best time of the players are separated by a colon. This callback is sent when the script receives the LibXmlRpc_GetPlayersTimes trigger.

  • Data : An array with the current and total scores of the teams.
  • Example : ["1", "5", "2", "5"]
  • Note : [ScoreTeam1, ScoreTeam2, TotalScoreTeam1, TotalScoreTeam2]. This callback is sent when the script receives the LibXmlRpc_GetTeamsScores trigger.

  • Data : An array with a boolean to indicate if the mode use teams or not.
  • Example : ["True"]
  • Note : This callback is sent when the script receives the LibXmlRpc_GetTeamsMode trigger.

  • Data : An array of text containing the current points repartition.
  • Example : ["10", "6", "4", "3", "2", "1"]
  • Note : This callback is sent when you use the Rounds_GetPointsRepartition method

You can also trigger some events in the game mode script by using TriggerModeScriptEvent(String1, String2); or TriggerModeScriptEventArray(string, array);.

  • Note : Invoke the LibXmlRpc_PlayerRanking script callback for a player.
  • String1 : "LibXmlRpc_GetPlayerRanking"
  • String2 : "LoginOfThePlayer"

  • Note : List all the xmlrpc script callbacks available. This method triggers the LibXmlRpc_Callbacks callback.
  • String1 : "LibXmlRpc_ListCallbacks"
  • String2 : ""
  • Version : available since XmlRpc.Script.txt_v2014-10-14

  • Note : Get help about a callback. This method triggers the LibXmlRpc_CallbackHelp callback.
  • String1 : "LibXmlRpc_GetCallbackHelp"
  • String2 : "NameOfTheCallback"
  • Version : available since XmlRpc.Script.txt_v2014-10-14

  • Note : Block a callback.
  • String1 : "LibXmlRpc_BlockCallback"
  • String2 : "NameOfTheCallback"
  • Version : available since XmlRpc.Script.txt_v2014-10-14

  • Note : Block all callbacks.
  • String1 : "LibXmlRpc_BlockAllCallbacks"
  • String2 : ""
  • Version : available since XmlRpc.Script.txt_v2014-10-14

  • Note : Unblock a callback.
  • String1 : "LibXmlRpc_UnblockCallback"
  • String2 : "NameOfTheCallback"
  • Version : available since XmlRpc.Script.txt_v2014-10-14

  • Note : Unblock all callbacks.
  • String1 : "LibXmlRpc_UnblockAllCallbacks"
  • String2 : ""
  • Version : available since XmlRpc.Script.txt_v2014-10-14

  • Note : Get the list of all blocked callbacks. This method triggers the LibXmlRpc_BlockedCallbacks callback.
  • String1 : "LibXmlRpc_ListBlockedCallbacks"
  • String2 : ""
  • Version : available since XmlRpc.Script.txt_v2014-10-14

  • Note : Set the properties of the UI. Check the [documentation]({{ site.docurl }}/creation/maniascript/libraries/library-ui.html) for more information.
  • String1 : "UI_SetProperties"
  • String2 : ""
  • Version : available since UI.Script.txt_v2014-09-16

  • Note : Get the properties of the Trackmania UI. Check the [documentation]({{ site.docurl }}/creation/maniascript/libraries/library-ui.html) for more information. This method triggers the UI_Properties callback.
  • String1 : "UI_GetProperties"
  • String2 : ""
  • Version : available since UI.Script.txt_v2014-09-16

  • Note : Check if the mode is in warm up. This method triggers the LibXmlRpc_WarmUp callback.
  • String1 : "LibXmlRpc_GetWarmUp"
  • String2 : ""

  • Note : Enable or disable the pause mode.
  • String1 : "LibXmlRpc_SetPause"
  • String2 : "True" or "False"
  • Version : available since XmlRpcCommon.Script.txt_v2015-02-23

  • Note : Get the current pause status. This will sent the LibXmlRpc_Pause callback in return.
  • String1 : "LibXmlRpc_GetPause"
  • String2 : ""
  • Version : available since XmlRpcCommon.Script.txt_v2015-02-23

  • Note : Hide the scores table on alt key for a player
  • String1 : "LibXmlRpc_DisableAltMenu"
  • String2 : "LoginOfThePlayer"

  • Note : Display the scores table on alt key for player
  • String1 : "LibXmlRpc_EnableAltMenu"
  • String2 : "LoginOfThePlayer"

  • Note : Invoke the LibXmlRpc_Rankings script callback
  • String1 : "LibXmlRpc_GetRankings"
  • String2 : ""

  • Note : Invoke the LibXmlRpc_Scores script callback
  • String1 : "LibXmlRpc_GetScores"
  • String2 : ""

  • Note : Extend the warm up timer for x milliseconds
  • String1 : "WarmUp_Extend"
  • String2 : "60000" (time in ms)

  • Note : Stop the warm up
  • String1 : "WarmUp_Stop"
  • String2 : ""

  • Note : Get back if this mode use a warm up or not
  • String1 : "WarmUp_GetStatus"
  • String2 : ""

  • Note : Set the scores table style from an xml string. The first entry of the array is the game used (TM or SM) and the second the XML string of the style. Read the ["Customize the scores table"]({{ site.docurl }}/dedicated-server/customize-scores-table.html) page to learn more about it.
  • String: "LibScoresTable2_SetStyleFromXml"
  • Array: ["TM", ""]

  • Note : Set the properties of the AFK library. The parameters are in this order: IdleTimeLimit, SpawnTimeLimit, CheckInterval, ForceSpec. Check the [library documentation]({{ site.docurl }}/creation/maniascript/libraries/library-afk.html).
  • String : "LibAFK_SetProperties"
  • Array : ["90000", "15000", "10000", "True"]

  • Note : Get the properties of the AFK library. This will sent the LibAFK_Properties callback in return.
  • String1 : "LibAFK_GetProperties"
  • String2 : ""

  • Note : Enable the matchmaking function in the standard lobby.
  • String1 : "Matchmaking_Start"
  • String2 : ""

  • Note : Disable the matchmaking function in the standard lobby.
  • String1 : "Matchmaking_Start"
  • String2 : ""

  • Note : Active the matchmaking function immediately, the matchmaking must be enabled beforehand.
  • String1 : "Matchmaking_Force"
  • String2 : ""

  • Note : Get the ready state of a player. This will sent the Matchmaking_ReadyState callback in return.
  • String1 : "Matchmaking_GetReadyState"
  • String2 : "PlayerLogin"
  • Version : available since ModeMatchmaking.Script.txt_v2014-10-26

  • Note : Set the ready state of a player. The first entry of the array is the player login, the second its ready state.
  • String : "Matchmaking_SetReadyState"
  • Array : ["PlayerLogin", "True"]
  • Version : available since ModeMatchmaking.Script.txt_v2014-10-26

  • Note : Disable the masters list for the given logins.
  • String : "Matchmaking_SetMastersListDisabledFor"
  • Array : ["PlayerLogin1", "PlayerLogin2", "PlayerLogin3"]
  • Version : available since MatchmakingLobby.Script.txt_v2016-05-06

  • Note : Change the position of the timers layer
  • String : "Combo_SetTimersLayerPosition"
  • Array : ["151.5", "-82.", "0."] ([PosX, PosY, PosZ])

  • Note : Enable or disable the pause mode.
  • String1 : "Combo_SetPause"
  • String2 : "True" or "False"
  • Version : available since Combo.Script.txt_v2014-09-15

  • Note : Get the current pause status. This will sent the Combo_Pause callback in return.
  • String1 : "Combo_GetPause"
  • String2 : ""
  • Version : available since Combo.Script.txt_v2014-09-15

  • Note : Define a specific order for the players in matchmaking.
  • String1 : "MatchmakingSetOrder"
  • String2 : "Login1TeamA,Login2TeamA,Login3TeamA|Login1TeamB,Login2TeamB,Login3TeamB"

  • Note : Change the position of the progression layer
  • String : "Siege_SetProgressionLayerPosition"
  • Array : ["160.", "90.", "-20."] ([PosX, PosY, PosZ])

  • Note : Define a SetRoundDuration inside LobbyMode
  • String1 : "LibXmlRpc_Lobby_SetRoundDuration"
  • String2 : "6000" (Time in seconds)

  • Note : Get the current score of the players. This method triggers the LibXmlRpc_PlayersScores callback.
  • String1 : "LibXmlRpc_GetPlayersScores"
  • String2 : ""

  • Note : Get the best times of the players. This method triggers the LibXmlRpc_PlayersTimes callback.
  • String1 : "LibXmlRpc_GetPlayersTimes"
  • String2 : ""

  • Note : Get the current score of the teams. This method triggers the LibXmlRpc_TeamsScores callback.
  • String1 : "LibXmlRpc_GetTeamsScores"
  • String2 : ""

  • Note : Check if the mode use teams. This method triggers the LibXmlRpc_TeamsMode callback.
  • String1 : "LibXmlRpc_GetTeamsMode"
  • String2 : ""

  • Note : Get the current ranking of the players. This method triggers the LibXmlRpc_PlayersRanking callback. The first parameter set the maximum number of players to return. The second set the starting rank.
  • String : "LibXmlRpc_GetPlayersRanking"
  • Array : ["10","5"] (return 10 players starting at rank 5)

  • Note : Set the scores of the players.
  • String : "LibXmlRpc_SetPlayersScores"
  • Array : ["login1:12", "login2:2", "login3:45", ...] (a list of logins and their score seperated by a colon)

  • Note : Set the score of the teams.
  • String : "LibXmlRpc_SetTeamsScores"
  • Array : ["3", "5"] ([ScoreTeam1, ScoreTeam2])

  • Note : Set a new repartition of points.
  • String : "Rounds_SetPointsRepartition"
  • Array : ["50", "40", "30"]

  • Note : Get the current points repartition. This method triggers the Rounds_PointsRepartition callback.
  • String1 : "Rounds_GetPointsRepartition"
  • String2 : ""

  • Note : Cancel the current round.
  • String1 : "Rounds_ForceEndRound"
  • String2 : ""

  • Note : Show/Hide the small scores table displayed on the right of the screen when finishing the map.
  • String1 : "UI_DisplaySmallScoresTable"
  • String2 : "False" or "True"
  • Version : deprecated since UI.Script.txt_v2014-09-16, use UI_SetProperties instead