/// <summary>
 /// Returns a replay containing the data needed to validate the current best time of the player. The parameter is the login of the player.
 /// </summary>
 /// <param name="login"></param>
 /// <returns></returns>
 public async Task <Base64> GetValidationReplayAsync(string login) =>
 (Base64)XmlRpcTypes.ToNativeValue <Base64>(
     await CallOrFaultAsync("GetValidationReplay", login)
     );
 /// <summary>
 /// Send an event to the server script. Only available to Admin.
 /// </summary>
 /// <returns></returns>
 public async Task <DynamicObject> GetServerPluginVariablesAsync() =>
 (DynamicObject)XmlRpcTypes.ToNativeValue <DynamicObject>(
     await CallOrFaultAsync("GetServerPluginVariables")
     );
 /// <summary>
 /// Change the settings and send commands to the mode script. Only available to Admin.
 /// </summary>
 /// <param name="settings"></param>
 /// <param name="modeScript"></param>
 /// <returns></returns>
 public async Task <bool> SetModeScriptSettingsAndCommandsAsync(DynamicObject settings, DynamicObject modeScript) =>
 (bool)XmlRpcTypes.ToNativeValue <bool>(
     await CallOrFaultAsync("SetModeScriptSettingsAndCommands", settings, modeScript)
     );
 /// <summary>
 /// Set the xml-rpc variables of the mode script. Only available to Admin.
 /// </summary>
 /// <param name="xmlRpcVar"></param>
 /// <returns></returns>
 public async Task <bool> SetModeScriptVariablesAsync(DynamicObject xmlRpcVar) =>
 (bool)XmlRpcTypes.ToNativeValue <bool>(
     await CallOrFaultAsync("SetModeScriptVariables", xmlRpcVar)
     );
 /// <summary>
 /// Set the mode script and restart. Only available to Admin.
 /// </summary>
 /// <param name="script"></param>
 /// <returns></returns>
 public async Task <bool> SetModeScriptTextAsync(string script) =>
 (bool)XmlRpcTypes.ToNativeValue <bool>(
     await CallOrFaultAsync("SetModeScriptText", script)
     );
 /// <summary>
 /// Change the settings of the mode script. Only available to Admin.
 /// </summary>
 /// <param name="modescriptSettings"></param>
 /// <returns></returns>
 public async Task <bool> SetModeScriptSettingsAsync(DynamicObject modescriptSettings) =>
 (bool)XmlRpcTypes.ToNativeValue <bool>(
     await CallOrFaultAsync("SetModeScriptSettings", modescriptSettings)
     );
Пример #7
0
 /// <summary>
 /// Set whether the players can choose their side or if the teams are forced by the server (using ForcePlayerTeam()). Only available to Admin.
 /// </summary>
 /// <param name="forced"></param>
 /// <returns></returns>
 public async Task <bool> SetForcedTeamsAsync(bool forced) =>
 (bool)XmlRpcTypes.ToNativeValue <bool>(
     await CallOrFaultAsync("SetForcedTeams", forced)
     );
 /// <summary>
 /// Get the script cloud variables of given object. Only available to Admin.
 /// </summary>
 /// <param name="type"></param>
 /// <param name="id"></param>
 /// <returns></returns>
 public async Task <DynamicObject> GetScriptCloudVariablesAsync(string type, string id) =>
 (DynamicObject)XmlRpcTypes.ToNativeValue <DynamicObject>(
     await CallOrFaultAsync("GetScriptCloudVariables")
     );
Пример #9
0
 /// <summary>
 /// Set the clublinks to use for the two clans. Only available to Admin.
 /// </summary>
 /// <param name="clubLink1"></param>
 /// <param name="clubLink2"></param>
 /// <returns></returns>
 public async Task <bool> SetForcedClubLinksAsync(string clubLink1, string clubLink2) =>
 (bool)XmlRpcTypes.ToNativeValue <bool>(
     await CallOrFaultAsync("SetForcedClubLinks", clubLink1, clubLink2)
     );
Пример #10
0
 /// <summary>
 /// Get the forced clublinks.
 /// </summary>
 /// <param name="team"></param>
 /// <returns></returns>
 public async Task <ClubLinks> GetForcedClubLinksAsync(int team) =>
 (ClubLinks)XmlRpcTypes.ToNativeValue <ClubLinks>(
     await CallOrFaultAsync("GetForcedClubLinks", team)
     );
Пример #11
0
 /// <summary>
 /// Return Team info for a given clan (0 = no clan, 1, 2). The structure contains: Name, ZonePath, City, EmblemUrl, HuePrimary, HueSecondary, RGB, ClubLinkUrl. Only available to Admin.
 /// </summary>
 /// <param name="team"></param>
 /// <returns></returns>
 public async Task <TeamInfo> GetTeamInfoAsync(int team) =>
 (TeamInfo)XmlRpcTypes.ToNativeValue <TeamInfo>(
     await CallOrFaultAsync("GetTeamInfo", team)
     );
Пример #12
0
 public async Task <string> SetTeamInfoAsync(string par1, double par2, string par3, string par4, double par5, string par6, string par7, double par8, string par9) =>
 (string)XmlRpcTypes.ToNativeValue <string>(
     await CallOrFaultAsync("SetTeamInfo", par1, par2, par3, par4, par5, par6, par7, par8, par9)
     );
Пример #13
0
 /// <summary>
 /// Force the team of the player. Only available in team mode. You have to pass the playerid and the team number (0 or 1). Only available to Admin.
 /// </summary>
 /// <param name="playerId"></param>
 /// <param name="cameraType"></param>
 /// <returns></returns>
 public async Task <bool> ForcePlayerTeamIdAsync(int playerId, int cameraType) =>
 (bool)XmlRpcTypes.ToNativeValue <bool>(
     await CallOrFaultAsync("ForcePlayerTeamId", playerId, cameraType)
     );
 /// <summary>
 /// Send an event to the server script. Only available to Admin.
 /// </summary>
 /// <param name="method"></param>
 /// <param name="param2"></param>
 /// <returns></returns>
 public async Task <bool> TriggerServerPluginEventArrayAsync(string method, string[] param2) =>
 (bool)XmlRpcTypes.ToNativeValue <bool>(
     await CallOrFaultAsync("TriggerServerPluginEventArray", method, param2)
     );
Пример #15
0
 /// <summary>
 /// Returns whether the players can choose their side or if the teams are forced by the server.
 /// </summary>
 /// <returns></returns>
 public async Task <bool> GetForcedTeamsAsync() =>
 (bool)XmlRpcTypes.ToNativeValue <bool>(
     await CallOrFaultAsync("GetForcedTeams")
     );
 /// <summary>
 /// Get the current mode script.
 /// </summary>
 /// <returns></returns>
 public async Task <string> GetModeScriptTextAsync() =>
 (string)XmlRpcTypes.ToNativeValue <string>(
     await CallOrFaultAsync("GetModeScriptText")
     );
Пример #17
0
 /// <summary>
 /// Returns the current winning team for the race in progress. (-1: if not in team mode, or draw match)
 /// </summary>
 /// <returns></returns>
 public async Task <int> GetCurrentWinnerTeamAsync() =>
 (int)XmlRpcTypes.ToNativeValue <int>(
     await CallOrFaultAsync("GetCurrentWinnerTeam")
     );
 /// <summary>
 /// Set the script cloud variables of given object. Only available to Admin.
 /// </summary>
 /// <param name="type"></param>
 /// <param name="id"></param>
 /// <param name="variables"></param>
 /// <returns></returns>
 public async Task <bool> SetScriptCloudVariablesAsync(string type, string id, DynamicObject variables) =>
 (bool)XmlRpcTypes.ToNativeValue <bool>(
     await CallOrFaultAsync("SetScriptCloudVariables")
     );
Пример #19
0
 /// <summary>
 /// Force the team of the player. Only available in team mode. You have to pass the login and the team number (0 or 1). Only available to Admin.
 /// </summary>
 /// <param name="playerLogin"></param>
 /// <param name="cameraType"></param>
 /// <returns></returns>
 public async Task <bool> ForcePlayerTeamAsync(string playerLogin, int cameraType) =>
 (bool)XmlRpcTypes.ToNativeValue <bool>(
     await CallOrFaultAsync("ForcePlayerTeam", playerLogin, cameraType)
     );
 /// <summary>
 /// Returns the description of the current mode script, as a structure containing: Name, CompatibleTypes, Description, Version and the settings available.
 /// </summary>
 /// <returns></returns>
 public async Task <ScriptInfo> GetModeScriptInfoAsync() =>
 (ScriptInfo)XmlRpcTypes.ToNativeValue <ScriptInfo>(
     await CallOrFaultAsync("GetModeScriptInfo")
     );
 /// <summary>
 /// Send an event to the mode script. Only available to Admin.
 /// </summary>
 /// <param name="modeScript"></param>
 /// <param name="eventName"></param>
 /// <returns></returns>
 public async Task <bool> TriggerModeScriptEventAsync(string modeScript, string eventName) =>
 (bool)XmlRpcTypes.ToNativeValue <bool>(
     await CallOrFaultAsync("TriggerModeScriptEvent", modeScript, eventName)
     );
 /// <summary>
 /// Send commands to the mode script. Only available to Admin.
 /// </summary>
 /// <param name="commands"></param>
 /// <returns></returns>
 public async Task <bool> SendModeScriptCommandsAsync(DynamicObject commands) =>
 (bool)XmlRpcTypes.ToNativeValue <bool>(
     await CallOrFaultAsync("SendModeScriptCommands", commands)
     );
 /// <summary>
 /// Send an event to the mode script. Only available to Admin.
 /// </summary>
 /// <param name="method"></param>
 /// <param name="parameters"></param>
 /// <returns></returns>
 public async Task <bool> TriggerModeScriptEventArrayAsync(string method, params string[] parameters) =>
 (bool)XmlRpcTypes.ToNativeValue <bool>(
     await CallOrFaultAsync("TriggerModeScriptEventArray", method, parameters)
     );
 /// <summary>
 /// Returns the current xml-rpc variables of the mode script.
 /// </summary>
 /// <returns></returns>
 public async Task <DynamicObject> GetModeScriptVariablesAsync() =>
 (DynamicObject)XmlRpcTypes.ToNativeValue <DynamicObject>(
     await CallOrFaultAsync("GetModeScriptVariables")
     );
 /// <summary>
 /// Set the ServerPlugin settings.
 /// </summary>
 /// <param name="forceReload">Whether to reload from disk</param>
 /// <param name="filename">OPTIONAL: Name the filename relative to Scripts/directory</param>
 /// <param name="script">OPTIONAL: The script #Settings to apply.</param>
 /// <returns></returns>
 public async Task <bool> SetServerPluginAsync(bool forceReload, string filename = null, DynamicObject script = null) =>
 (bool)XmlRpcTypes.ToNativeValue <bool>(
     await CallOrFaultAsync("SetServerPlugin", forceReload, filename, script)
     );
Пример #26
0
        /// <summary>
        /// Main callback handler.
        /// </summary>
        /// <param name="call"></param>
        /// <returns></returns>
        private async Task GbxRemoteClient_OnCallback(MethodCall call)
        {
            switch (call.Method)
            {
            case "ManiaPlanet.PlayerConnect":
            case "TrackMania.PlayerConnect":
                OnPlayerConnect?.Invoke(
                    (string)XmlRpcTypes.ToNativeValue <string>(call.Arguments[0]),
                    (bool)XmlRpcTypes.ToNativeValue <bool>(call.Arguments[1])
                    );
                break;

            case "ManiaPlanet.PlayerDisconnect":
            case "TrackMania.PlayerDisconnect":
                OnPlayerDisconnect?.Invoke(
                    (string)XmlRpcTypes.ToNativeValue <string>(call.Arguments[0]),
                    (string)XmlRpcTypes.ToNativeValue <string>(call.Arguments[1])
                    );
                break;

            case "ManiaPlanet.PlayerChat":
            case "TrackMania.PlayerChat":
                OnPlayerChat?.Invoke(
                    (int)XmlRpcTypes.ToNativeValue <int>(call.Arguments[0]),
                    (string)XmlRpcTypes.ToNativeValue <string>(call.Arguments[1]),
                    (string)XmlRpcTypes.ToNativeValue <string>(call.Arguments[2]),
                    (bool)XmlRpcTypes.ToNativeValue <bool>(call.Arguments[3])
                    );
                break;

            case "ManiaPlanet.Echo":
            case "TrackMania.Echo":
                OnEcho?.Invoke(
                    (string)XmlRpcTypes.ToNativeValue <string>(call.Arguments[0]),
                    (string)XmlRpcTypes.ToNativeValue <string>(call.Arguments[1])
                    );
                break;

            case "ManiaPlanet.BeginMatch":
            case "TrackMania.BeginMatch":
                OnBeginMatch?.Invoke();
                break;

            case "ManiaPlanet.EndMatch":
            case "TrackMania.EndMatch":
                OnEndMatch?.Invoke(
                    (SPlayerRanking[])XmlRpcTypes.ToNativeValue <SPlayerRanking>(call.Arguments[0]),
                    (int)XmlRpcTypes.ToNativeValue <int>(call.Arguments[1])
                    );
                break;

            case "ManiaPlanet.BeginMap":
            case "TrackMania.BeginMap":
                OnBeginMap?.Invoke(
                    (SMapInfo)XmlRpcTypes.ToNativeValue <SMapInfo>(call.Arguments[0])
                    );
                break;

            case "ManiaPlanet.EndMap":
            case "TrackMania.EndMap":
                OnEndMap?.Invoke(
                    (SMapInfo)XmlRpcTypes.ToNativeValue <SMapInfo>(call.Arguments[0])
                    );
                break;

            case "ManiaPlanet.StatusChanged":
            case "TrackMania.StatusChanged":
                OnStatusChanged?.Invoke(
                    (int)XmlRpcTypes.ToNativeValue <int>(call.Arguments[0]),
                    (string)XmlRpcTypes.ToNativeValue <string>(call.Arguments[1])
                    );
                break;

            case "ManiaPlanet.PlayerInfoChanged":
            case "TrackMania.PlayerInfoChanged":
                OnPlayerInfoChanged?.Invoke(
                    (SPlayerInfo)XmlRpcTypes.ToNativeValue <SPlayerInfo>(call.Arguments[0])
                    );
                break;

            case "ManiaPlanet.ModeScriptCallback":
            case "TrackMania.ModeScriptCallback":
                await HandleModeScriptCallback(call);

                break;

            case "ManiaPlanet.ModeScriptCallbackArray":
            case "TrackMania.ModeScriptCallbackArray":
                await HandleModeScriptCallback(call);

                break;
            }

            // always invoke the OnAnyCallback event
            OnAnyCallback?.Invoke(call, (object[])XmlRpcTypes.ToNativeValue <object>(
                                      new XmlRpcArray(call.Arguments)
                                      ));
        }
 /// <summary>
 /// Saves a replay with the ghost of all the players' best race. First parameter is the login of the player (or '' for all players), Second parameter is the filename, or '' for an automatic filename. Only available to Admin.
 /// </summary>
 /// <param name="login"></param>
 /// <param name="fileName"></param>
 /// <returns></returns>
 public async Task <bool> SaveBestGhostsReplayAsync(string login, string fileName) =>
 (bool)XmlRpcTypes.ToNativeValue <bool>(
     await CallOrFaultAsync("SaveBestGhostsReplay", login, fileName)
     );