Ignore:
Timestamp:
Apr 18, 2015, 4:27:57 PM (10 years ago)
Author:
alloc
Message:

Binary improvements

File:
1 edited

Legend:

Unmodified
Added
Removed
  • binary-improvements/AllocsCommands/Commands/TeleportPlayer.cs

    r228 r230  
    1 using AllocsFixes.PersistentData;
    21using System;
    32using System.Collections.Generic;
     
    65namespace AllocsFixes.CustomCommands
    76{
    8         public class TeleportPlayer : ConsoleCommand
     7        public class TeleportPlayer : ConsoleCmdAbstract
    98        {
    10                 public TeleportPlayer (ConsoleSdtd cons) : base(cons)
    11                 {
    12                 }
    13 
    14                 public override string Description ()
     9                public override string GetDescription ()
    1510                {
    1611                        return "teleport a player to a given location";
    1712                }
    1813
    19                 public override string[] Names ()
     14                public override string[] GetCommands ()
    2015                {
    2116                        return new string[] { "teleportplayer", "tele" };
    2217                }
    2318
    24                 public override void Run (string[] _params)
     19                public override void Execute (List<string> _params, CommandSenderInfo _senderInfo)
    2520                {
    2621                        try {
    27                                 if (_params.Length != 4 && _params.Length != 2) {
    28                                         m_Console.SendResult ("Usage: teleportplayer <entityid|playername|steamid> <x> <y> <z>");
    29                                         m_Console.SendResult ("   or: teleportplayer <entityid|playername|steamid> <target entityid|playername|steamid>");
     22                                if (_params.Count != 4 && _params.Count != 2) {
     23                                        SdtdConsole.Instance.Output ("Usage: teleportplayer <entityid|playername|steamid> <x> <y> <z>");
     24                                        SdtdConsole.Instance.Output ("   or: teleportplayer <entityid|playername|steamid> <target entityid|playername|steamid>");
    3025                                } else {
    31                                         Player p1 = PersistentContainer.Instance.Players.GetPlayerByNameOrId (_params [0], true);
    32                                         if (p1 == null) {
    33                                                 m_Console.SendResult ("Playername or entity/steamid id not found.");
     26                                        ClientInfo ci1 = ConsoleHelper.ParseParamIdOrName (_params [0]);
     27                                        if (ci1 == null) {
     28                                                SdtdConsole.Instance.Output ("Playername or entity/steamid id not found.");
    3429                                                return;
    3530                                        }
    36                                         if (!p1.IsOnline) {
    37                                                 m_Console.SendResult ("Player not online.");
    38                                                 return;
    39                                         }
     31                                        EntityPlayer ep1 = GameManager.Instance.World.Players.dict [ci1.entityId];
    4032
    41                                         if (_params.Length == 4) {
     33                                        if (_params.Count == 4) {
    4234                                                int x = int.MinValue;
    4335                                                int y = int.MinValue;
     
    4941
    5042                                                if (x == int.MinValue || y == int.MinValue || z == int.MinValue) {
    51                                                         m_Console.SendResult ("At least one of the given coordinates is not a valid integer");
     43                                                        SdtdConsole.Instance.Output ("At least one of the given coordinates is not a valid integer");
    5244                                                        return;
    5345                                                }
    5446
    55                                                 p1.Entity.position.x = x;
    56                                                 p1.Entity.position.y = y;
    57                                                 p1.Entity.position.z = z;
     47                                                ep1.position.x = x;
     48                                                ep1.position.y = y;
     49                                                ep1.position.z = z;
    5850                                        } else {
    59                                                 Player p2 = PersistentContainer.Instance.Players.GetPlayerByNameOrId (_params [1], true);
    60                                                 if (p2 == null) {
    61                                                         m_Console.SendResult ("Target playername or entity/steamid id not found.");
     51                                                ClientInfo ci2 = ConsoleHelper.ParseParamIdOrName (_params [1]);
     52                                                if (ci2 == null) {
     53                                                        SdtdConsole.Instance.Output ("Target playername or entity/steamid id not found.");
    6254                                                        return;
    6355                                                }
    64                                                 if (!p2.IsOnline) {
    65                                                         m_Console.SendResult ("Target player not online.");
    66                                                         return;
    67                                                 }
     56                                                EntityPlayer ep2 = GameManager.Instance.World.Players.dict [ci2.entityId];
    6857
    69                                                 p1.Entity.position = p2.Entity.GetPosition();
    70                                                 p1.Entity.position.y += 1;
    71                                                 p1.Entity.position.z += 1;
     58                                                ep1.position = ep2.GetPosition();
     59                                                ep1.position.y += 1;
     60                                                ep1.position.z += 1;
    7261                                        }
    7362
    74                                         NetPackage_EntityTeleport pkg = new NetPackage_EntityTeleport (p1.Entity);
     63                                        NetPackage_EntityTeleport pkg = new NetPackage_EntityTeleport (ep1);
    7564
    76                                         ConnectionManager.Instance.SendPackage (pkg, new PackageDestinationSingleEntityID (p1.ClientInfo.entityId));
     65                                        ci1.netConnection [0].AddToSendQueue (pkg);
    7766                                }
    7867                        } catch (Exception e) {
Note: See TracChangeset for help on using the changeset viewer.