DarkEmu_GameServer.Systems.MovementSkill C# (CSharp) Метод

MovementSkill() приватный Метод

private MovementSkill ( PacketReader Reader ) : void
Reader PacketReader
Результат void
        void MovementSkill(PacketReader Reader)
        {
            try
            {
                if (!Character.Action.movementskill)
                {
                    Character.Action.movementskill = true;
                    MovementSkillTimer(Data.SkillBase[Character.Action.UsingSkillID].Properties1["tele"] + 500);
                    if (Character.Action.sAttack || Character.Action.sCasting) return;

                    if (Character.Stat.SecondMP < Data.SkillBase[Character.Action.UsingSkillID].Mana) { client.Send(Packet.ActionPacket(2, 4)); return; }
                    else
                    {
                        Character.Stat.SecondMP -= Data.SkillBase[Character.Action.UsingSkillID].Mana;
                        UpdateMp();
                        if (Timer.Movement != null) { Timer.Movement.Dispose(); Character.Position.Walking = false; }

                        byte xSec = Reader.Byte(), ySec = Reader.Byte();
                        int x = Reader.Int32(), z = Reader.Int32(), y = Reader.Int32();
                        Reader.Close();

                        float gamex = DarkEmu_GameServer.Formule.gamex((float)x, xSec);
                        float gamey = DarkEmu_GameServer.Formule.gamey((float)y, ySec);

                        float farkx = gamex - Character.Position.x;
                        float farky = gamey - Character.Position.y;

                        float hesapy = 0, hesapx = 0;

                        while (hesapx + hesapy < Data.SkillBase[Character.Action.UsingSkillID].Properties2["tele"] / 10)
                        {
                            Character.Position.x += (farkx / 30);
                            Character.Position.y += (farky / 30);
                            hesapx += Math.Abs((farkx / 30));
                            hesapy += Math.Abs((farky / 30));
                        }

                        PacketWriter Writer = new PacketWriter();

                        Writer.Create(SERVER_ACTION_DATA);
                        Writer.Byte(1);
                        Writer.Byte(2);
                        Writer.Byte(0x30);
                        int overid = Character.Ids.GetCastingID();
                        Writer.DWord(Character.Action.UsingSkillID);//skillid
                        Writer.DWord(Character.Information.UniqueID); //charid
                        Writer.DWord(overid);//overid
                        Writer.DWord(0);
                        Writer.Byte(8);
                        Writer.Byte(xSec);
                        Writer.Byte(ySec);
                        Writer.DWord(Formule.packetx(Character.Position.x, xSec));
                        Writer.DWord(0);
                        Writer.DWord(Formule.packety(Character.Position.y, ySec));

                        Send(Writer.GetBytes());

                        client.Send(Packet.ActionState(2, 0));

                        ObjectSpawnCheck();
                    }
                }
            }
            catch (Exception ex)
            {
                Systems.Debugger.Write(ex);
            }
        }
Systems