Ejemplo n.º 1
0
    void OnConnectedClient(NetworkMessage msg)
    {
        // Checking if there are free playerIds on server
        if (freePlayerIds.Count == 0)
        {
            Logger.Instance.Log("[Connection error]: server is full (4 clients)");
            msg.conn.Disconnect();
            return;
        }

        // Finding playerId and connectionId for new client
        int newConnectionId = msg.conn.connectionId;
        int newPlayerId     = freePlayerIds [0];

        // Sending to new client message with his new playerId for him to spawn himself
        PlayerSpawnMessage playerSpawnMessage = new PlayerSpawnMessage();

        playerSpawnMessage.playerId = newPlayerId;
        NetworkServer.SendToClient(newConnectionId, SpawnPlayerMessageId, playerSpawnMessage);

        // Sending to new client lamp state
        LampStateMessage lampStateMessage = new LampStateMessage();

        lampStateMessage._on = lampIsOn;
        NetworkServer.SendToClient(newConnectionId, LampStateMessageId, lampStateMessage);

        // Sending to new client messages with playerId of active clients for him to spawn them
        PLayerConnectMessage pLayerConnectionMessage = new PLayerConnectMessage();

        foreach (int playerId in connectionIdPalyerIdDict.Values)
        {
            pLayerConnectionMessage.playerId = playerId;
            NetworkServer.SendToClient(newConnectionId, PLayerConnectMessageId, pLayerConnectionMessage);
        }

        // Sending to active clients playerId of new client for them to spawn him
        pLayerConnectionMessage.playerId = newPlayerId;
        foreach (int connectionId in connectionIdPalyerIdDict.Keys)
        {
            NetworkServer.SendToClient(connectionId, PLayerConnectMessageId, pLayerConnectionMessage);
        }

        // Adding new client to dictionary of 'connetionId - playerId' and deleting his playerId from list of free Ids
        connectionIdPalyerIdDict.Add(newConnectionId, newPlayerId);
        freePlayerIds.Remove(newPlayerId);

        Logger.Instance.Log("Connected client playerId: " + newPlayerId + ", connectionId: " + newConnectionId);
    }
Ejemplo n.º 2
0
        public void SetPluginVariable(string variable, string value)
        {
            if (variable.Equals("IGNORE"))
                return;

            ConsoleDebug(variable + " = " + value);

            if (variable.Contains("Debug"))
                debug = bool.Parse(value);
            else if (variable.Contains("Add a message"))
            {
                if (value.Equals("Choose..."))
                    return;

                Message message = null;

                switch ((MessageTrigger)Enum.Parse(typeof(MessageTrigger), value))
                {
                    case MessageTrigger.PLAYER_JOIN:
                        message = new PlayerJoinMessage(this, "Player Join Message #" + messages.Count, MessageType.SAY, MessageDestination.ALL, "");
                        break;
                    case MessageTrigger.PLAYER_SPAWN:
                        message = new PlayerSpawnMessage(this, "Player Spawn Message #" + messages.Count, MessageType.SAY, MessageDestination.ALL, "");
                        break;
                    case MessageTrigger.TICKET_COUNT:
                        message = new TicketCountMessage(this, "Ticket Count Message #" + messages.Count, MessageType.SAY, "", 0);
                        break;
                    case MessageTrigger.TIMED_COUNTER:
                        message = new TimedCounterMessage(this, "Timed Counter Message #" + messages.Count, MessageType.SAY, "", 0);
                        break;
                }

                messages.Add(message);
                message.enable();
            }
            else if (variable.Contains("trigger"))
            {
                string name = variable.Substring(0, variable.IndexOf(" - ")).Trim();

                if (name.Contains("|"))
                    name = name.Substring(0, name.IndexOf("|")).Trim();

                if (value.Equals("Remove"))
                {
                    Message toRemove = messages.Find((m) => m.name.Equals(name));
                    toRemove.disable();

                    messages.Remove(toRemove);
                }
                else
                {
                    int toChangeLoc = -1;
                    for (int a = 0; a < messages.Count; a++)
                        if (messages[a].name.Equals(name))
                        {
                            toChangeLoc = a;
                            break;
                        }

                    if (toChangeLoc == -1)
                    {
                        //looks like an un-added message, must be loading settings

                        Message message = null;

                        switch ((MessageTrigger)Enum.Parse(typeof(MessageTrigger), value))
                        {
                            case MessageTrigger.PLAYER_JOIN:
                                message = new PlayerJoinMessage(this, name, MessageType.SAY, MessageDestination.ALL, "");
                                break;
                            case MessageTrigger.PLAYER_SPAWN:
                                message = new PlayerSpawnMessage(this, name, MessageType.SAY, MessageDestination.ALL, "");
                                break;
                            case MessageTrigger.TICKET_COUNT:
                                message = new TicketCountMessage(this, name, MessageType.SAY, "", 0);
                                break;
                            case MessageTrigger.TIMED_COUNTER:
                                message = new TimedCounterMessage(this, name, MessageType.SAY, "", 0);
                                break;
                        }

                        messages.Add(message);
                        message.enable();
                    }
                    else
                    {
                        messages[toChangeLoc].disable();

                        switch ((MessageTrigger)Enum.Parse(typeof(MessageTrigger), value))
                        {
                            case MessageTrigger.PLAYER_JOIN:
                                if (messages[toChangeLoc].GetType() == typeof(PlayerJoinMessage))
                                    break;

                                messages[toChangeLoc] = new PlayerJoinMessage(messages[toChangeLoc]);
                                break;
                            case MessageTrigger.PLAYER_SPAWN:
                                if (messages[toChangeLoc].GetType() == typeof(PlayerSpawnMessage))
                                    break;

                                messages[toChangeLoc] = new PlayerSpawnMessage(messages[toChangeLoc]);
                                break;
                            case MessageTrigger.TICKET_COUNT:
                                if (messages[toChangeLoc].GetType() == typeof(TicketCountMessage))
                                    break;

                                messages[toChangeLoc] = new TicketCountMessage(messages[toChangeLoc]);
                                break;
                            case MessageTrigger.TIMED_COUNTER:
                                if (messages[toChangeLoc].GetType() == typeof(TimedCounterMessage))
                                    break;

                                messages[toChangeLoc] = new TimedCounterMessage(messages[toChangeLoc]);
                                break;
                        }

                        messages[toChangeLoc].enable();
                    }
                }
            }
            else
            {
                string name = variable.Substring(0, variable.IndexOf(" - ")).Trim();

                if (name.Contains("|"))
                    name = name.Substring(0, name.IndexOf("|")).Trim();

                Message message = messages.Find((m) => m.name.Equals(name));

                if (message == null)
                {
                    if (name.Contains("|"))
                        name = name.Substring(0, name.IndexOf("|")).Trim();

                    //looks like an un-added message, must be loading settings
                    message = new PlayerSpawnMessage(this, name, MessageType.SAY, MessageDestination.ALL, "");
                    messages.Add(message);
                    message.enable();
                }

                message.setVariable(variable, value);
            }
        }