예제 #1
0
 public void SetActiveWorker(SocketProxyWorker worker)
 {
     foreach (var window in windows.Values)
     {
         window.SetActiveWorker(worker);
     }
 }
예제 #2
0
        protected internal override void SetActiveWorker(SocketProxyWorker worker)
        {
            if (active != null)
            {
                active.ServerPacketReceived -= OnServerPacketReceived;
            }

            active = worker;
            if (active != null)
            {
                latencies.Initialize();
                latPtr    = 0;
                prevTick  = 0;
                tickSpan  = 20;
                enoughDat = false;
                lag       = false;
                watch.Restart();
                active.ServerPacketReceived += OnServerPacketReceived;
            }
            else
            {
                Tick();
            }
            Invalidate();
        }
예제 #3
0
 public void AttachHooks(SocketProxyWorker client)
 {
     foreach (var hook in Hooks)
     {
         hook.Attach(client);
     }
 }
예제 #4
0
        protected override bool Process(SocketProxyWorker client, string args)
        {
            Entity player     = client.World[client.World.SelfID];
            var    playerData = client.Proxy.Tool.LoadXmlData(client.Version)[player.ObjectType];

            foreach (var stat in stats)
            {
                var statLimitNode = playerData.Element(stat.XMLName);
                var statIncrNode  = playerData.XPathSelectElement("LevelIncrease[text() = '" + stat.XMLName + "']");

                int beginStat = int.Parse(statLimitNode.Value);
                int maxStat   = int.Parse(statLimitNode.Attribute("max").Value);

                int   minIncr = int.Parse(statIncrNode.Attribute("min").Value);
                int   maxIncr = int.Parse(statIncrNode.Attribute("max").Value);
                float avgIncr = (minIncr + maxIncr) / 2f;

                float avgStat    = beginStat + (player.GetStats <int>(StatsType.Level) - 1) * avgIncr;
                int   playerStat = player.GetStats <int>(stat.StatType) - player.GetStats <int>(stat.StatBoostType);
                var   avgDiff    = (int)(playerStat - avgStat);

                client.SendText("",
                                string.Format("{0}: {1} from average ({2} until max)", stat.StatName, avgDiff, maxStat - playerStat));
            }
            return(true);
        }
예제 #5
0
파일: Lock.cs 프로젝트: ossimc82/RotmgTool
        protected override bool Process(SocketProxyWorker client, string args)
        {
            Entity player = client.World.GetPlayer(args);

            if (player == null)
            {
                client.SendText("*Error*", "Player not found!");
            }

            var packet = NWriter.Write(writer => new EditAccountListPacket
            {
                AccountListId = 0,
                Add           = true,
                ObjectId      = player.ID
            }.Write(writer));

            client.SendAsClient(client.PacketTable.EDITACCOUNTLIST, packet);

            packet = NWriter.Write(writer => new AccountListPacket
            {
                AccountListId = 0,
                AccountIds    = new[] { player.Stats[StatsType.AccountId].ToString() }
            }.Write(writer));
            client.SendAsServer(client.PacketTable.ACCOUNTLIST, packet);

            client.SendText("", "Added " + player.GetStats <string>(StatsType.Name) + " to starred list");
            return(true);
        }
예제 #6
0
 private GameWorld(SocketProxyWorker worker, uint w, uint h, string name)
 {
     this.worker = worker;
     Width       = w;
     Height      = h;
     Name        = name;
     SelfID      = 0xffffffff;
 }
예제 #7
0
        protected override bool Process(SocketProxyWorker client, string args)
        {
            var ms = new MemoryStream();

            using (var writer = new NWriter(ms))
                writer.WriteUTF("/teleport " + args);
            client.SendAsClient(client.PacketTable.PLAYERTEXT, ms.ToArray());
            return(true);
        }
예제 #8
0
 public bool Execute(SocketProxyWorker client, string args)
 {
     try
     {
         return(Process(client, args));
     }
     catch
     {
         client.SendText("*Error*", "Error when executing the command.");
         client.SendText("", "Usage: " + Usage);
         return(false);
     }
 }
예제 #9
0
        public bool?Execute(SocketProxyWorker client, string text)
        {
            var    index = text.IndexOf(' ');
            string cmd   = text.Substring(1, index == -1 ? text.Length - 1 : index - 1);
            var    args  = index == -1 ? "" : text.Substring(index + 1);

            CommandBase command;

            if (!Commands.TryGetValue(cmd, out command))
            {
                return(null);
            }
            return(command.Execute(client, args));
        }
예제 #10
0
 protected internal override void SetActiveWorker(SocketProxyWorker worker)
 {
     forceDC.Enabled = (worker != null);
     if (worker != null)
     {
         server = worker.ServerName;
         area   = worker.ConnectionName;
     }
     else
     {
         server = null;
         area   = null;
     }
     active = worker;
     Invalidate();
 }
예제 #11
0
        private void UpdateStats(SocketProxyWorker worker, ref ObjectStats stats)
        {
            int count = 0;

            for (int i = 0; i < 8; i++)
            {
                var s = (StatsType)((int)StatsType.Inventory0 + i);
                if (worker.World[stats.Id].Stats.ContainsKey(s) && (int)worker.World[stats.Id].Stats[s] > 0)
                {
                    count++;
                }
            }
            string name = string.Format("{0}/8", count);

            stats.Stats = stats.Stats.Concat(new[]
            {
                Tuple.Create(StatsType.Name, (object)name),
                Tuple.Create(StatsType.NameChosen, (object)1)
            }).ToArray();
        }
예제 #12
0
        public static GameWorld CreateWorld(MapInfoPacket packet, SocketProxyWorker worker)
        {
            var ret = new GameWorld(worker, packet.Width, packet.Height, packet.Name);

            return(ret);
        }
예제 #13
0
 public override void Attach(SocketProxyWorker worker)
 {
     worker.ClientPacketReceived += OnClientPacketReceived;
 }
예제 #14
0
 protected internal abstract void SetActiveWorker(SocketProxyWorker worker);
예제 #15
0
 public abstract void Attach(SocketProxyWorker worker);
예제 #16
0
        protected bool IsEnabled(SocketProxyWorker worker, bool defVal = true)
        {
            string name = string.Format("hook.{0}.enabled", ID);

            return(worker.Proxy.Tool.Settings.GetValue <bool>(name, defVal.ToString()));
        }
예제 #17
0
 public override void Attach(SocketProxyWorker worker)
 {
     worker.ServerPacketReceived     += OnServerPacketReceived;
     worker.PostServerPacketReceived += OnPostServerPacketReceived;
 }
예제 #18
0
 protected abstract bool Process(SocketProxyWorker client, string args);