示例#1
0
        // Token: 0x06002C00 RID: 11264 RVA: 0x0012E554 File Offset: 0x0012C754
        public void Msg_Pertinence(NetHost netHost, string name, string msg)
        {
            if (netHost == NetGame.instance.local)
            {
                NetChat.Print(name);
                return;
            }
            NetStream netStream = NetGame.BeginMessage(NetMsgId.Chat);

            try
            {
                netStream.WriteNetId(netHost.hostId);
                netStream.Write(name);
                netStream.Write(msg);
                if (NetGame.isServer)
                {
                    NetGame.instance.SendReliable(netHost, netStream);
                }
            }
            finally
            {
                if (netStream != null)
                {
                    netStream = netStream.Release();
                }
            }
        }
示例#2
0
        private void NetworkConnectAsHost(string aIP)
        {
            NetHost host = new NetHost();

            host.StartListen();
            NetPoster.Instance.Connection = host;
        }
 public ReceivedBroadcastData(NetHost host, string senderAddress, int senderPort, int broadcastMessagePort)
 {
     this.host                 = host;
     this.senderAddress        = senderAddress;
     this.senderPort           = senderPort;
     this.broadcastMessagePort = broadcastMessagePort;
 }
示例#4
0
    public void RespawnAllPlayers(NetHost host)
    {
        Checkpoint checkpoint = currentLevel.GetCheckpoint(currentCheckpointNumber);

        for (int i = 0; i < host.players.Count; i++)
        {
            float d = (!checkpoint.tightSpawn) ? 2f : 0.5f;
            Respawn(host.players[i].human, Vector3.left * (i % 3) * d + Vector3.back * (i / 3) * d);
        }
    }
示例#5
0
        private void IOnPlayerDisconnected(NetHost netHost)
        {
            /*if (App.state == AppSate.Startup)
             * {
             *  return;
             * }*/

            List <NetPlayer> netPlayers = netHost.players.ToList();
            NetPlayer        netPlayer  = netPlayers.FirstOrDefault();

            if (netPlayer == null)
            {
                return;
            }

            // Check if server is intended to be dedicated
            if (netPlayer.isLocalPlayer && HumanFallFlatExtension.Dedicated)
            {
                // Ignore server player
                return;
            }

            // Let universal know
            Universal.PlayerManager.PlayerDisconnected(netPlayer);

            // Call game-specific hook
            Interface.Call("OnPlayerDisconnected", netPlayer, "Unknown");

            IPlayer player = netPlayer.IPlayer;

            if (player != null)
            {
                // Call universal hook
                Interface.Call("OnPlayerDisconnected", player, "Unknown");
            }

            // Override/set server hostname
            string serverName = $"{Server.Name} | {Server.Players}/{Server.MaxPlayers}";

            SteamMatchmaking.SetLobbyData((NetGame.instance.transport as NetTransportSteam).lobbyID, "name", serverName);
        }
示例#6
0
        public bool CreateGameStaet()
        {
            NetHost host = new NetHost();

            host.StartListen();
            NetPoster.Instance.Connection = host;
            myIsNetworking = true;
            myIsHosty      = true;

            myGUICaretaker.GetGUI <Text>("Hosthost").SetVisibility(EGUIVisibility.Visible);

            myConnectedCallback = () =>
            {
                MatchInfo matchInfo = new MatchInfo();
                matchInfo.myMatchType = EMatchType.Host;
                myStateStack.AddCommand(new StateCommand {
                    myCommandType = EStateCommandType.Add, myStateType = EStateType.Major, myState = new GameState(matchInfo)
                });
            };
            return(true);
        }
示例#7
0
        public void StartServer()
        {
            Log.Info(LogTag, "Starting server...", this);
            // Initialize server
            Initialize();

            // Add host
            host = NetCore.Instance.AddHost(hostName: "Server host");

            // Initialize systems
            systems.Initialize();

            // Register host event listeners
            host.OnConnectEvent.RegisterListenerOnce(HandleConnect);
            host.OnDisconnectEvent.RegisterListenerOnce(HandleDisconnect);
            host.OnDataEvent.RegisterListenerOnce(HandleDataReceived);
            host.OnBroadcastEvent.RegisterListenerOnce(HandleBroadcastEvent);

            // Start broadcasting
            NetCore.Instance.StartBroadcastDiscovery(host.Port);
            Log.Info(LogTag, $"Server started on Host: {host}.", this);
        }
示例#8
0
 protected void Awake()
 {
     host = NetCore.Instance.AddHost(hostName: "Client host");
 }
示例#9
0
    private void ParseContent()
    {
        if (parsed)
        {
            return;
        }
        parsed = true;
        ctext.InitData();
        TextAsset           activeContent = ActiveContent;
        List <CreditsBlock> list          = new List <CreditsBlock>();

        string[] array = activeContent.text.Split('\n');
        for (int i = 0; i < array.Length; i++)
        {
            array[i] = array[i].Trim();
        }
        int   j   = 0;
        float num = 0f;

        while (j < array.Length)
        {
            for (; j < array.Length && string.IsNullOrEmpty(array[j]); j++)
            {
            }
            if (j < array.Length)
            {
                string text = array[j++];
                while (j < array.Length && !string.IsNullOrEmpty(array[j]))
                {
                    text = text + "\r\n" + array[j++];
                }
                CreditsBlock component = UnityEngine.Object.Instantiate(ctext.blockPrefab.gameObject).GetComponent <CreditsBlock>();
                component.transform.SetParent(base.transform, worldPositionStays: false);
                component.transform.position = num * Vector3.up;
                component.Initialize(num, text, ctext);
                blocks.Add(component);
                list.Add(component);
                num -= blockSpacing;
                NetIdentity netIdentity = component.gameObject.AddComponent <NetIdentity>();
                netIdentity.sceneId       = (uint)blocks.Count;
                component.blockId         = netIdentity;
                component.gameObject.name = "CrBlock" + netIdentity.sceneId.ToString();
            }
        }
        startupDoorY = num - showAhead;
        topY         = 0f;
        uint num2 = (uint)NetHost.CalcMaxPossibleSizeForContainerContentsTier0();

        buckets.Clear();
        uint num3 = 288u;
        int  k    = 0;

        for (int count = list.Count; k < count; k++)
        {
            CreditsBlock creditsBlock = list[k];
            int          bitsRequired = creditsBlock.bitsRequired;
            int          count2       = buckets.Count;
            int          num4         = count2 - 1;
            if (num4 < 0 || buckets[num4].bitsLeft < bitsRequired)
            {
                num4++;
            }
            BlockBucket blockBucket;
            if (num4 < count2)
            {
                blockBucket = buckets[num4];
            }
            else
            {
                blockBucket = new BlockBucket();
                buckets.Add(blockBucket);
                if (num3 > 1054)
                {
                    throw new ApplicationException("Run out of auxilliary net ids");
                }
                blockBucket.go                        = new GameObject("LettersScope" + num3.ToString());
                blockBucket.scope                     = blockBucket.go.AddComponent <NetScope>();
                blockBucket.scope.enabled             = false;
                blockBucket.scope.netId               = num3++;
                blockBucket.scope.AllowSuspendCollect = true;
                blockBucket.go.transform.SetParent(base.gameObject.transform, worldPositionStays: false);
                blockBucket.scope.enabled = true;
                blockBucket.bitsLeft      = (int)(num2 * 8) - NetScope.CalculateDeltaPrefixSize(blockBucket.scope.netId);
            }
            blockBucket.blocks.Add(creditsBlock);
            blockBucket.bitsLeft -= bitsRequired;
            creditsBlock.transform.SetParent(blockBucket.go.transform, worldPositionStays: true);
            creditsBlock.bucket = blockBucket;
        }
        int l = 0;

        for (int count3 = buckets.Count; l < count3; l++)
        {
            BlockBucket blockBucket2 = buckets[l];
            blockBucket2.scope.StartNetwork();
        }
        CheckScopes();
    }
示例#10
0
 public void Fill(NetHost input)
 {
 }
示例#11
0
        private object IOnPlayerChat(NetHost netHost, string name, string message)
        {
            if (message.Trim().Length <= 1)
            {
                return(true);
            }

            // TODO: Handle split screen players (same NetHost, different NetPlayer)

            List <NetPlayer> netPlayers = netHost.players.ToList();
            NetPlayer        netPlayer  = netPlayers.FirstOrDefault();
            IPlayer          player     = netPlayer?.IPlayer;

            if (netPlayer == null || player == null)
            {
                return(null);
            }

            // Update player's stored username
            if (!player.Name.Equals(name))
            {
                player.Rename(name);
            }

            // Is it a chat command?
            string str = message.Substring(0, 1);

            if (!str.Equals("/") && !str.Equals("!"))
            {
                // Call the hooks for plugins
                object chatUniversal = Interface.Call("OnPlayerChat", player, message);
                object chatSpecific  = Interface.Call("OnPlayerChat", netPlayer, message);
                if (chatUniversal != null || chatSpecific != null)
                {
                    return(true);
                }

                Interface.uMod.LogInfo($"[Chat] {name}: {message}");
                return(null);
            }

            // Get the command and parse it
            string cmd;

            string[] args;
            Universal.CommandSystem.ParseCommand(message.Substring(1), out cmd, out args);
            if (cmd == null)
            {
                return(null);
            }

            // Call the hooks for plugins
            object commandUniversal = Interface.Call("OnPlayerCommand", player, cmd, args);
            object commandSpecific  = Interface.Call("OnPlayerCommand", netPlayer, cmd, args);

            if (commandUniversal != null || commandSpecific != null)
            {
                return(true);
            }

            // Is this a covalence command?
            message = "/" + message.Substring(1);
            if (Universal.CommandSystem.HandleChatMessage(player, message))
            {
                return(true);
            }

            // TODO: Handle non-universal commands

            player.Reply(string.Format(lang.GetMessage("UnknownCommand", this, player.Id), cmd));

            return(true);
        }