protected void OnPlayerConnecting([FromSource] Player player, string playerName, dynamic setKickReason, dynamic deferrals) { deferrals.defer(); deferrals.update("Retrieving connection lottery information..."); /* * if (ServerInfo.Clients < ServerInfo.MaxClients) * { * deferrals.done(); * } * else*/ { ConnectingPlayer connectingPlayer = new ConnectingPlayer(player, setKickReason, deferrals, DEFAULT_TIMEOUT_MS); int ticket = lottery.Add(connectingPlayer); // Remove connecting player from lottery on loading timeout. connectingPlayer.OnTimeout += (() => { lottery.Remove(connectingPlayer); }); } }
private void AcceptPlayer(ConnectingPlayer player) { player.Accept(); player.InitTimeout(DEFAULT_TIMEOUT_MS); player.OnTimeout += (() => { }); TriggerEvent("base:playerAccepted", player.Player.Handle); }
private void SetupCommands() { RegisterCommand("connectlottery", new Action <int, List <object>, string>((source, args, raw) => { Log.Plain("--------------------------------------------------------------------------"); Log.Plain("pending players: " + lottery.Count); Log.Plain("last extracted ticket: " + lastTicket); for (int ticket = 0; ticket < lottery.Count; ticket++) { ConnectingPlayer player = lottery[ticket]; Log.Plain(player.Player.GetStringInfo() + " ticket:" + ticket + " priority:" + player.Priority); } Log.Plain("--------------------------------------------------------------------------"); }), true); }
public void UpdatePlayer(ConnectingPlayer player, int ticket) { string message = "Your ticket is " + ticket + "."; if (priority.Available) { if (priority.Count == 1) { message += "There is a priorital player in queue."; } else { message += "There are " + priority.Count + " priorital players in queue."; } } else { message += "The draw will occur soon."; } }
//Oxide Hook void CanClientLogin(Network.Connection connection) { //Checks if the player has been verified before, if not -> verify player. if (!verifiedPlayers.Contains(connection.userid.ToString())) { if (steamAPIKey != "insertAPIKeyHere") { string url = "http://api.steampowered.com/IPlayerService/GetOwnedGames/v0001/?key=" + steamAPIKey + "&format=json&input_json={\"appids_filter\":[252490],\"steamid\":" + connection.userid + "}"; ConnectingPlayer connectingPlayer = new ConnectingPlayer(connection); webRequests.EnqueueGet(url, (code, response) => connectingPlayer.connectionResponse = WebRequestCallback(code, response), this, null, 1.5f); RespondOnWebRequest(connectingPlayer); } else { ConnectionAuth.Reject(connection, "MinimumPlaytime has no steamAPI key entered by the server owner yet."); } } }
private void RespondOnWebRequest(ConnectingPlayer connectingPlayer) { timer.Once(timerDelay, () => { if (connectingPlayer.connectionResponse != null) { if (connectingPlayer.connectionResponse.Equals("LoginAllowed")) { verifiedPlayers.Add(connectingPlayer.connection.userid.ToString()); Config["verifiedPlayers"] = verifiedPlayers; SaveConfig(); } else { ConnectionAuth.Reject(connectingPlayer.connection, connectingPlayer.connectionResponse); } } else { RespondOnWebRequest(connectingPlayer); } }); }