Exemplo n.º 1
0
        /// <summary>
        /// Teleports the player's character to the specified position
        /// </summary>
        /// <param name="x"></param>
        /// <param name="y"></param>
        /// <param name="z"></param>
        public void Teleport(float x, float y, float z)
        {
            NetPackageTeleportPlayer netPackageTeleportPlayer = new NetPackageTeleportPlayer(new Vector3(x, y, z));

            if (client != null)
            {
                client.SendPackage(netPackageTeleportPlayer);
            }
            else
            {
                netPackageTeleportPlayer.ProcessPackage(GameManager.Instance.World, GameManager.Instance);
            }
        }
Exemplo n.º 2
0
        public static void TeleReturn(ClientInfo _cInfo)
        {
            string _position;

            if (!_savedReturns.TryGetValue(_cInfo.playerId, out _position))
            {
                string _phrase17 = "{PlayerName} you do not have a Return saved.";
                if (Phrases._Phrases.TryGetValue(17, out _phrase17))
                {
                    _phrase17 = _phrase17.Replace("{0}", _cInfo.playerName);
                    _phrase17 = _phrase17.Replace("{PlayerName}", _cInfo.playerName);
                }
                _cInfo.SendPackage(new NetPackageGameMessage(string.Format("{1}{0}[-]", _phrase17, CustomCommands._chatcolor), "Server"));
            }
            else
            {
                float    x;
                float    y;
                float    z;
                string[] _cords = _position.Split(',');
                float.TryParse(_cords[0], out x);
                float.TryParse(_cords[1], out y);
                float.TryParse(_cords[2], out z);
                EntityPlayer        _player = GameManager.Instance.World.Players.dict[_cInfo.entityId];
                UnityEngine.Vector3 destPos = new UnityEngine.Vector3();
                destPos.x = x;
                destPos.y = -1;
                destPos.z = z;
                NetPackageTeleportPlayer pkg = new NetPackageTeleportPlayer(destPos);
                DateTime _datetime;
                if (DelayBetweenUses > 0 && _lastused.TryGetValue(_cInfo.playerId, out _datetime))
                {
                    int _passedtime = time.GetMinutes(_datetime);
                    if (_passedtime > DelayBetweenUses)
                    {
                        _lastused.Remove(_cInfo.playerId);
                        _cInfo.SendPackage(pkg);
                        _lastused.Add(_cInfo.playerId, DateTime.Now);
                        UpdateXml();
                    }
                    else
                    {
                        int    _timeleft = DelayBetweenUses - _passedtime;
                        string _phrase19 = "{PlayerName} you can only use /return once every {DelayBetweenUses} minutes. Time remaining: {TimeRemaining} minutes.";
                        if (Phrases._Phrases.TryGetValue(19, out _phrase19))
                        {
                            _phrase19 = _phrase19.Replace("{0}", _cInfo.playerName);
                            _phrase19 = _phrase19.Replace("{1}", DelayBetweenUses.ToString());
                            _phrase19 = _phrase19.Replace("{2}", _timeleft.ToString());
                            _phrase19 = _phrase19.Replace("{PlayerName}", _cInfo.playerName);
                            _phrase19 = _phrase19.Replace("{DelayBetweenUses}", DelayBetweenUses.ToString());
                            _phrase19 = _phrase19.Replace("{TimeRemaining}", _timeleft.ToString());
                        }
                        _cInfo.SendPackage(new NetPackageGameMessage(string.Format("{1}{0}[-]", _phrase19, CustomCommands._chatcolor), "Server"));
                    }
                }
                else
                {
                    _cInfo.SendPackage(pkg);
                    if (_lastused.ContainsKey(_cInfo.playerId))
                    {
                        _lastused.Remove(_cInfo.playerId);
                    }
                    _lastused.Add(_cInfo.playerId, DateTime.Now);
                    UpdateXml();
                }
            }
        }
Exemplo n.º 3
0
        void OnPlayerChat(ClientInfo _cInfo, string message)
        {
            if (!string.IsNullOrEmpty(message) && message.StartsWith("/") && !string.IsNullOrEmpty(_cInfo.playerName))
            {
                EntityPlayer _player = GameManager.Instance.World.Players.dict[_cInfo.entityId];
                string       pp      = (int)_player.position.x + "," + (int)_player.position.y + "," + (int)_player.position.z;
                Vector3i     posit   = Vector3i.Parse(pp);
                bool         LandProtectionPlayer = GameManager.Instance.World.CanPlaceBlockAt(posit, GameManager.Instance.GetPersistentPlayerList().GetPlayerData(_cInfo.playerId));
                string       _filter = "[ffffffff][/url][/b][/i][/u][/s][/sub][/sup][ff]";
                if (message.EndsWith(_filter))
                {
                    message = message.Remove(message.Length - _filter.Length);
                }
                if (!string.IsNullOrEmpty(_cInfo.playerName))
                {
                    if (message.StartsWith("/"))
                    {
                        DateTime nowtime = DateTime.Now;
                        message = message.Replace("/", "");
                        string mesg = message.ToLower();
                        if (mesg == "home")
                        {
                            if (LandProtectionPlayer)
                            {
                                if (storedData.Homes.ContainsKey(_cInfo.playerId))
                                {
                                    PlayerDelay pDelay     = storedData.DelayTeleport[_cInfo.playerId];
                                    var         playertime = Convert.ToDateTime(pDelay.Delay);
                                    TimeSpan    rez        = nowtime - playertime;
                                    int         showtime   = DTHome - Convert.ToInt32(rez.TotalSeconds);
                                    if (rez.TotalSeconds >= DTHome)
                                    {
                                        PlayerHomes home = storedData.Homes[_cInfo.playerId];
                                        _player.position.x = float.Parse(home.HomeX);
                                        _player.position.y = float.Parse(home.HomeY);
                                        _player.position.z = float.Parse(home.HomeZ);
                                        storedData.DelayTeleport.Remove(_cInfo.playerId);
                                        storedData.DelayTeleport.Add(_cInfo.playerId, new PlayerDelay());
                                        storedData.DelayTeleport[_cInfo.playerId].Delay = nowtime.ToString();
                                        SaveData();
                                        NetPackageTeleportPlayer pkg = new NetPackageTeleportPlayer(new Vector3(_player.position.x, _player.position.y, _player.position.z));
                                        _cInfo.SendPackage(pkg);
                                        _cInfo.SendPackage(new NetPackageGameMessage(EnumGameMessages.Chat, string.Format("[FF8000] {0} [FFFFFF]", GetMessage("Teleported", _cInfo.playerId)), "Server", false, "", false));
                                    }
                                    else
                                    {
                                        _cInfo.SendPackage(new NetPackageGameMessage(EnumGameMessages.Chat, string.Format("[FF0000] {0} {1} {2} [FFFFFF]", GetMessage("Wait", _cInfo.playerId), showtime, GetMessage("Seconds", _cInfo.playerId)), "Server", false, "", false));
                                    }
                                }
                                else
                                {
                                    _cInfo.SendPackage(new NetPackageGameMessage(EnumGameMessages.Chat, string.Format("[FF0000] {0} [FFFFFF]", GetMessage("NoHomes", _cInfo.playerId)), "Server", false, "", false));
                                }
                            }
                            else
                            {
                                _cInfo.SendPackage(new NetPackageGameMessage(EnumGameMessages.Chat, string.Format("[FF0000] {0} [FFFFFF]", GetMessage("LandWarning", _cInfo.playerId)), "Server", false, "", false));
                            }
                        }
                        if (mesg == "sethome")
                        {
                            if (LandProtectionPlayer)
                            {
                                if (!storedData.Homes.ContainsKey(_cInfo.playerId))
                                {
                                    storedData.Homes.Add(_cInfo.playerId, new PlayerHomes());
                                    storedData.Homes[_cInfo.playerId].Name  = _player.EntityName;
                                    storedData.Homes[_cInfo.playerId].HomeX = _player.position.x.ToString();
                                    storedData.Homes[_cInfo.playerId].HomeY = _player.position.y.ToString();
                                    storedData.Homes[_cInfo.playerId].HomeZ = _player.position.z.ToString();
                                    SaveData();
                                    _cInfo.SendPackage(new NetPackageGameMessage(EnumGameMessages.Chat, string.Format("[FF8000] {0} [FFFFFF]", GetMessage("HomeAdded", _cInfo.playerId)), "Server", false, "", false));
                                    if (!storedData.DelayTeleport.ContainsKey(_cInfo.playerId))
                                    {
                                        storedData.DelayTeleport.Add(_cInfo.playerId, new PlayerDelay());
                                        storedData.DelayTeleport[_cInfo.playerId].Delay = nowtime.ToString();
                                        SaveData();
                                    }
                                }
                                else
                                {
                                    _cInfo.SendPackage(new NetPackageGameMessage(EnumGameMessages.Chat, string.Format("[FF0000] {0} [FFFFFF]", GetMessage("HomeExists", _cInfo.playerId)), "Server", false, "", false));
                                }
                            }
                            else
                            {
                                _cInfo.SendPackage(new NetPackageGameMessage(EnumGameMessages.Chat, string.Format("[FF0000] {0} [FFFFFF]", GetMessage("LandWarning", _cInfo.playerId)), "Server", false, "", false));
                            }
                        }
                        if (mesg == "delhome")
                        {
                            if (storedData.Homes.ContainsKey(_cInfo.playerId))
                            {
                                PlayerDelay pDelay     = storedData.DelayTeleport[_cInfo.playerId];
                                var         playertime = Convert.ToDateTime(pDelay.Delay);
                                TimeSpan    rez        = nowtime - playertime;
                                int         showtime   = DDHome - Convert.ToInt32(rez.TotalSeconds);
                                if (rez.TotalSeconds >= DDHome)
                                {
                                    storedData.Homes.Remove(_cInfo.playerId);
                                    storedData.DelayTeleport.Remove(_cInfo.playerId);
                                    SaveData();
                                    _cInfo.SendPackage(new NetPackageGameMessage(EnumGameMessages.Chat, string.Format("[FF8000] {0} [FFFFFF]", GetMessage("HomeRemoved", _cInfo.playerId)), "Server", false, "", false));
                                }
                                else
                                {
                                    _cInfo.SendPackage(new NetPackageGameMessage(EnumGameMessages.Chat, string.Format("[FF0000] {0} {1} {2} [FFFFFF]", GetMessage("Wait", _cInfo.playerId), showtime, GetMessage("Seconds", _cInfo.playerId)), "Server", false, "", false));
                                }
                            }
                            else
                            {
                                _cInfo.SendPackage(new NetPackageGameMessage(EnumGameMessages.Chat, string.Format("[FF0000] {0} [FFFFFF]", GetMessage("NoHomes", _cInfo.playerId)), "Server", false, "", false));
                            }
                        }
                        if (mesg == "helptp")
                        {
                            _cInfo.SendPackage(new NetPackageGameMessage(EnumGameMessages.Chat, string.Format("[FF8000] {0} [FFFFFF]", GetMessage("SetHome", _cInfo.playerId)), "Server", false, "", false));
                            _cInfo.SendPackage(new NetPackageGameMessage(EnumGameMessages.Chat, string.Format("[FF8000] {0} [FFFFFF]", GetMessage("RemoveHome", _cInfo.playerId)), "Server", false, "", false));
                            _cInfo.SendPackage(new NetPackageGameMessage(EnumGameMessages.Chat, string.Format("[FF8000] {0} [FFFFFF]", GetMessage("Home", _cInfo.playerId)), "Server", false, "", false));
                            _cInfo.SendPackage(new NetPackageGameMessage(EnumGameMessages.Chat, string.Format("[FF8000] {0} [FFFFFF]", GetMessage("TpInfo", _cInfo.playerId)), "Server", false, "", false));
                            _cInfo.SendPackage(new NetPackageGameMessage(EnumGameMessages.Chat, string.Format("[FF8000] {0} [FFFFFF]", GetMessage("TpList", _cInfo.playerId)), "Server", false, "", false));
                            _cInfo.SendPackage(new NetPackageGameMessage(EnumGameMessages.Chat, string.Format("[FF8000] {0} [FFFFFF]", GetMessage("TeleFriend", _cInfo.playerId)), "Server", false, "", false));
                            if (GameManager.Instance.adminTools.IsAdmin(_cInfo.playerId))
                            {
                                _cInfo.SendPackage(new NetPackageGameMessage(EnumGameMessages.Chat, string.Format("[FF8000] {0} [FFFFFF]", GetMessage("AddTpInfo", _cInfo.playerId)), "Server", false, "", false));
                                _cInfo.SendPackage(new NetPackageGameMessage(EnumGameMessages.Chat, string.Format("[FF8000] {0} [FFFFFF]", GetMessage("DelTpInfo", _cInfo.playerId)), "Server", false, "", false));
                            }
                        }
                        if (mesg == "listtp")
                        {
                            foreach (var TPR in storedData.AddTeleport.Values)
                            {
                                float _x = float.Parse(TPR.TpX);
                                float _z = float.Parse(TPR.TpZ);
                                if (_x < 0)
                                {
                                    _x = _x * -1;
                                }
                                if (_z < 0)
                                {
                                    _z = _z * -1;
                                }
                                int x = (int)Math.Round(_x);
                                int z = (int)Math.Round(_z);
                                _cInfo.SendPackage(new NetPackageGameMessage(EnumGameMessages.Chat, string.Format("[FF8000] {1} {0}   ({3} {4},{2} {5})[FFFFFF]", TPR.Name, GetMessage("ListTp", _cInfo.playerId), x.ToString(), z.ToString(), TPR.LocZ, TPR.LocX), "Server", false, "", false));
                            }
                        }
                        if (mesg.StartsWith("settp") || mesg.StartsWith("addtp"))
                        {
                            message = message.Replace("addtp ", "");

                            if (GameManager.Instance.adminTools.IsAdmin(_cInfo.playerId))
                            {
                                storedData.AddTeleport.Add(message, new AddTeleport());
                                storedData.AddTeleport[message].Name = message.ToString();
                                storedData.AddTeleport[message].TpX  = _player.position.x.ToString();
                                storedData.AddTeleport[message].TpY  = _player.position.y.ToString();
                                storedData.AddTeleport[message].TpZ  = _player.position.z.ToString();
                                SaveData();
                                if (_player.position.x > 0)
                                {
                                    string Loc = "E";
                                    storedData.AddTeleport[message].LocX = Loc;
                                    SaveData();
                                }
                                else
                                {
                                    string Loc = "W";
                                    storedData.AddTeleport[message].LocX = Loc;
                                    SaveData();
                                }
                                if (_player.position.z > 0)
                                {
                                    string Loc = "N";
                                    storedData.AddTeleport[message].LocZ = Loc;
                                    SaveData();
                                }
                                else
                                {
                                    string Loc = "S";
                                    storedData.AddTeleport[message].LocZ = Loc;
                                    SaveData();
                                }
                                _cInfo.SendPackage(new NetPackageGameMessage(EnumGameMessages.Chat, string.Format("[FF8000] {0} {1} [FFFFFF]", GetMessage("AddTeleport", _cInfo.playerId), message), "Server", false, "", false));
                            }
                            else
                            {
                                _cInfo.SendPackage(new NetPackageGameMessage(EnumGameMessages.Chat, string.Format("[FF0000] {0} [FFFFFF]", GetMessage("NotAdmin", _cInfo.playerId)), "Server", false, "", false));
                            }
                        }
                        if (mesg.StartsWith("tp"))
                        {
                            if (LandProtectionPlayer)
                            {
                                message = message.Replace("tp ", "");
                                if (storedData.AddTeleport.ContainsKey(message))
                                {
                                    if (!storedData.DelayTeleport.ContainsKey(_cInfo.playerId))
                                    {
                                        storedData.DelayTeleport.Add(_cInfo.playerId, new PlayerDelay());
                                        storedData.DelayTeleport[_cInfo.playerId].Delay = nowtime.ToString();
                                        SaveData();
                                    }
                                    PlayerDelay pDelay     = storedData.DelayTeleport[_cInfo.playerId];
                                    var         playertime = Convert.ToDateTime(pDelay.Delay);
                                    TimeSpan    rez        = nowtime - playertime;
                                    int         showtime   = DTPoint - Convert.ToInt32(rez.TotalSeconds);
                                    if (rez.TotalSeconds >= DTPoint)
                                    {
                                        AddTeleport Tp = storedData.AddTeleport[message];
                                        _player.position.x = float.Parse(Tp.TpX);
                                        _player.position.y = float.Parse(Tp.TpY);
                                        _player.position.z = float.Parse(Tp.TpZ);
                                        storedData.DelayTeleport.Remove(_cInfo.playerId);
                                        storedData.DelayTeleport.Add(_cInfo.playerId, new PlayerDelay());
                                        storedData.DelayTeleport[_cInfo.playerId].Delay = nowtime.ToString();
                                        SaveData();
                                        NetPackageTeleportPlayer pkg = new NetPackageTeleportPlayer(new Vector3(_player.position.x, _player.position.y, _player.position.z));
                                        _cInfo.SendPackage(pkg);
                                        _cInfo.SendPackage(new NetPackageGameMessage(EnumGameMessages.Chat, string.Format("[FF8000] {0} {1} [FFFFFF]", GetMessage("Teleported", _cInfo.playerId), message), "Server", false, "", false));
                                    }
                                    else
                                    {
                                        _cInfo.SendPackage(new NetPackageGameMessage(EnumGameMessages.Chat, string.Format("[FF0000] {0} {1} {2} [FFFFFF]", GetMessage("Wait", _cInfo.playerId), showtime, GetMessage("Seconds", _cInfo.playerId)), "Server", false, "", false));
                                    }
                                }
                                else
                                {
                                    _cInfo.SendPackage(new NetPackageGameMessage(EnumGameMessages.Chat, string.Format("[FF0000] {0} {1} [FFFFFF]", GetMessage("NoTeleport", _cInfo.playerId), message), "Server", false, "", false));
                                }
                            }
                            else
                            {
                                _cInfo.SendPackage(new NetPackageGameMessage(EnumGameMessages.Chat, string.Format("[FF0000] {0} [FFFFFF]", GetMessage("LandWarning", _cInfo.playerId)), "Server", false, "", false));
                            }
                        }
                        if (mesg.StartsWith("deltp") || mesg.StartsWith("removetp"))
                        {
                            message = message.Replace("deltp ", "");
                            if (GameManager.Instance.adminTools.IsAdmin(_cInfo.playerId))
                            {
                                storedData.AddTeleport.Remove(message);
                                SaveData();
                                _cInfo.SendPackage(new NetPackageGameMessage(EnumGameMessages.Chat, string.Format("[FF8000] {0} {1} [FFFFFF]", GetMessage("DelTeleport", _cInfo.playerId), message), "Server", false, "", false));
                            }
                            else
                            {
                                _cInfo.SendPackage(new NetPackageGameMessage(EnumGameMessages.Chat, string.Format("[FF0000] {0} [FFFFFF]", GetMessage("NotAdmin", _cInfo.playerId)), "Server", false, "", false));
                            }
                        }
                        if (mesg.StartsWith("tf"))
                        {
                            message = message.Replace("tf ", "");
                            ClientInfo  _targetInfo = ConsoleHelper.ParseParamIdOrName(message);
                            PlayerDelay pDelay      = storedData.DelayTeleport[_cInfo.playerId];
                            var         playertime  = Convert.ToDateTime(pDelay.Delay);
                            TimeSpan    rez         = nowtime - playertime;
                            int         showtime    = DTPlayer - Convert.ToInt32(rez.TotalSeconds);
                            if (_targetInfo != null)
                            {
                                EntityPlayer _target = GameManager.Instance.World.Players.dict[_targetInfo.entityId];
                                string       _pp     = (int)_target.position.x + "," + (int)_target.position.y + "," + (int)_target.position.z;
                                Vector3i     _posit  = Vector3i.Parse(_pp);
                                bool         _LandProtectionPlayer = GameManager.Instance.World.CanPlaceBlockAt(_posit, GameManager.Instance.GetPersistentPlayerList().GetPlayerData(_targetInfo.playerId));
                                bool         friend = _player.IsFriendsWith(_target);
                                if (friend)
                                {
                                    if (LandProtectionPlayer)
                                    {
                                        if (_LandProtectionPlayer)
                                        {
                                            if (rez.TotalSeconds >= DTPlayer)
                                            {
                                                storedData.DelayTeleport.Remove(_cInfo.playerId);
                                                storedData.DelayTeleport.Add(_cInfo.playerId, new PlayerDelay());
                                                storedData.DelayTeleport[_cInfo.playerId].Delay = nowtime.ToString();
                                                SaveData();
                                                NetPackageTeleportPlayer pkg = new NetPackageTeleportPlayer(new Vector3(_target.position.x, _target.position.y, _target.position.z));
                                                _cInfo.SendPackage(pkg);
                                                _cInfo.SendPackage(new NetPackageGameMessage(EnumGameMessages.Chat, string.Format("[FF8000] {0} [FFFFFF]", GetMessage("Teleported", _cInfo.playerId)), "Server", false, "", false));
                                            }
                                            else
                                            {
                                                _cInfo.SendPackage(new NetPackageGameMessage(EnumGameMessages.Chat, string.Format("[FF0000] {0} {1} {2} [FFFFFF]", GetMessage("Wait", _cInfo.playerId), showtime, GetMessage("Seconds", _cInfo.playerId)), "Server", false, "", false));
                                            }
                                        }
                                        else
                                        {
                                            _cInfo.SendPackage(new NetPackageGameMessage(EnumGameMessages.Chat, string.Format("[FF0000] {0} [FFFFFF]", GetMessage("LandWarningFriend", _cInfo.playerId)), "Server", false, "", false));
                                        }
                                    }
                                    else
                                    {
                                        _cInfo.SendPackage(new NetPackageGameMessage(EnumGameMessages.Chat, string.Format("[FF0000] {0} [FFFFFF]", GetMessage("LandWarning", _cInfo.playerId)), "Server", false, "", false));
                                    }
                                }
                                else
                                {
                                    _cInfo.SendPackage(new NetPackageGameMessage(EnumGameMessages.Chat, string.Format("[FF0000] {0} [FFFFFF]", GetMessage("NotFriend", _cInfo.playerId)), "Server", false, "", false));
                                }
                            }
                            else
                            {
                                _cInfo.SendPackage(new NetPackageGameMessage(EnumGameMessages.Chat, string.Format("[FF0000] {0} [FFFFFF]", GetMessage("PlayerNotFound", _cInfo.playerId)), "Server", false, "", false));
                            }
                        }
                    }
                }
            }
        }
Exemplo n.º 4
0
        public static void SetPosition(ClientInfo ci, Vector3 destPos)
        {
            NetPackageTeleportPlayer pkg = new NetPackageTeleportPlayer(destPos);

            ci.SendPackage(pkg);
        }