示例#1
0
 public CharPlayer(Player player, CharServer server)
 {
     _server = server;
     _player = player;
     _user   = player.TnUser <UserData>();
     _player.NetUserDataChanged += Player_NetUserDataChanged;
 }
示例#2
0
 public void Destroy()
 {
     _player.NetUserDataChanged -= Player_NetUserDataChanged;
     m_data.Clear();
     m_data  = null;
     _user   = null;
     _player = null;
     _server = null;
 }
示例#3
0
 public void Destroy()
 {
     _player.NetUserDataChanged -= Player_NetUserDataChanged;
     _data.RemoveAll(x => x.ID == _user.Char);
     CharsMgr.RemoveCharacters(_data);
     _data.Clear();
     _data   = null;
     _user   = null;
     _player = null;
     _server = null;
 }
        public static void Main()
        {
            try
            {
                CharServer.LoginServerConnection = new InteroperabilityClient(new IPEndPoint(
                                                                                  Settings.GetIPAddress("IP", "Interconnection"),
                                                                                  Settings.GetInt("Port", "Interconnection")),
                                                                              Settings.GetString("SecurityCode", "Interconnection"));

                CharServer.LoginServerConnection.Loop();
            }
            catch (Exception e)
            {
                Log.Error("Server connection failed: \n{0}", e.ToString());

                CharServer.Stop();
            }
        }
示例#5
0
        public bool Startup()
        {
            DB_Map    map; string[] list;
            MapServer mapServer; int id;

            if (Load())
            {
                if (Configs.Get <bool>(Configs.Server_Master))
                {
                    (_master = new MasterServer()).Start();
                }
                if (Configs.Get <bool>(Configs.Server_Characters))
                {
                    (_characters = new CharServer()).Start();
                }
                if (Configs.Get <bool>(Configs.Server_AllMaps))
                {
                    foreach (var item in DataMgr.SelectAllMaps())
                    {
                        _maps.Add(mapServer = new MapServer(item));
                        mapServer.Start();
                    }
                }
                else
                {
                    list = Configs.Get <string>(Configs.Server_MapList).Split(';');
                    foreach (var item in list)
                    {
                        if (int.TryParse(item, out id) && DataMgr.Select(id, out map))
                        {
                            _maps.Add(mapServer = new MapServer(map));
                            mapServer.Start();
                        }
                    }
                }
                IsRunning = true;
                InitializeCMD();
                return(true);
            }
            return(false);
        }
 public async Task <bool> Startup()
 {
     if (await LoadAsync())
     {
         if (Configs.Get <bool>(Configs.Server_Master))
         {
             (_master = new MasterServer()).Start();
         }
         if (Configs.Get <bool>(Configs.Server_Characters))
         {
             (_characters = new CharServer()).Start();
         }
         if (Configs.Get <bool>(Configs.Server_AllMaps))
         {
             foreach (var item in DataMgr.SelectAllMaps())
             {
                 var mapServer = new MapServer(item);
                 _maps.Add(mapServer = new MapServer(item));
                 mapServer.Start();
             }
         }
         else
         {
             var list = Configs.Get <string>(Configs.Server_MapList).Split(';');
             foreach (var item in list)
             {
                 if (int.TryParse(item, out var id) && DataMgr.Select(id, out DB_Map map))
                 {
                     var mapServer = new MapServer(map);
                     _maps.Add(mapServer);
                     mapServer.Start();
                 }
             }
         }
         IsRunning = true;
         InitializeCMD();
         return(true);
     }
     return(false);
 }
示例#7
0
        public void AddServer(byte index,string serverName,short playerCount,CharServer.Status ping)
        {
            this.numberOfServers++;

            byte[] tempdata = new byte[this.data.Length +39];

            this.data.CopyTo(tempdata, 0);
            this.data = tempdata;

            this.PutByte(this.numberOfServers, 4);

            int currentPos = 5 + ((this.numberOfServers-1) * 39);

            //server index
            //this.PutByte((byte)(this.numberOfServers-1),(ushort)currentPos);
            this.PutByte(index,(ushort)currentPos);
            //server name
            if(serverName.Length > 16) serverName = Global.SetStringLength(serverName, 16);
            this.PutString(serverName, (ushort)(currentPos + 1));
               //server ping
            this.PutByte((byte)ping,(ushort)(currentPos + 1 + 34));
            //chars on server
            this.PutByte((byte)playerCount,(ushort)(currentPos + 1 + 34 + 1));
        }
 public CharServerScript(CharServer server)
 {
     m_server = server;
     server.Room.SubscribeRpcsOnObject(this);
 }
 protected override void StopServer()
 {
     CharServer.Stop();
 }