Morf

Datum: 27/07/2011 12:34:15

Staženo: 896x

Popis:


Hodnocení: 3.8/10 (78 hlasy)

Download file:cs

Příkazy:

  • ,selfmorf
  • ,automorfing
  • ,morfing
  • ,morfallbig
  • ,morfallsmall
  • ,morfbig
  • ,morfsmall
  • ,morfto "ushort model"

Kód:

    using System;
    using System.Collections.Generic;
    using System.Text;
    using Phoenix;
    using Phoenix.WorldData;
    using Phoenix.Communication;

    namespace Phoenix.Scripts
    {
        public class Morf
        {
            private List<Serial> morfedCharacterSerials = new List<Serial>();
            private static Dictionary<Serial, ushort> morfedCharactersModels = new Dictionary<Serial, ushort>();
            private bool morfingRunning = false;
            private bool autoMorfingRunning = false;
            private bool selfMorfingRunning = false;

            [Command]
            public void SelfMorf()
            {
                if (selfMorfingRunning)
                {
                    Core.UnregisterServerMessageCallback(0x20, OnUpdatePlayer);
                    selfMorfingRunning = false;
                    UO.PrintInformation("SelfMorfing vypnut!");
                }
          else
                {
                    Core.RegisterServerMessageCallback(0x20, new MessageCallback(OnUpdatePlayer));
                    UO.PrintInformation("SelfMorfing zapnut!");
                    selfMorfingRunning = true;
                }
            }

            [Command]
            public void AutoMorfing()
            {
                if (autoMorfingRunning)
                {
                    Core.UnregisterServerMessageCallback(0x77, OnAutoUpdateCharacter);
                    autoMorfingRunning = false;
                    UO.PrintInformation("Morfing vypnut!");
                }
          else
                {
                    Core.RegisterServerMessageCallback(0x77, new MessageCallback(OnAutoUpdateCharacter));
                    UO.PrintInformation("Morfing zapnut!");
                    autoMorfingRunning = true;
                }
            }

            [Command]
            public void Morfing()
            {
                morfedCharacterSerials.Clear();
                morfedCharactersModels.Clear();
                if (morfingRunning)
                {
                    Core.UnregisterServerMessageCallback(0x77, OnUpdateCharacter);
                    morfingRunning = false;
                    UO.PrintInformation("Morfing vypnut!");
                }
          else
                {
                    Core.RegisterServerMessageCallback(0x77, new MessageCallback(OnUpdateCharacter));
                    UO.PrintInformation("Morfing zapnut!");
                    morfingRunning = true;
                }
            }

            private CallbackResult OnUpdatePlayer(byte[] data, CallbackResult prevResult)
            {
                PacketReader reader = new PacketReader(data);
                byte id = reader.ReadByte();
                Serial serial = reader.ReadUInt32();
                if (canMorf(data)) ByteConverter.BigEndian.ToBytes((ushort)0x0192, data, 5);
                return CallbackResult.Normal;
            }

            private bool canMorf(byte[] data)
            {
                if (World.Player.Dead) return false; // mrtvej
                else if ((data[5] == 0x10) && (data[6] == 0x69)) return false; // ghost
                else if ((data[5] == 0x01) && ((data[6] == 0x90) || (data[6] == 0x91))) return false;
                return true;
            }

            private CallbackResult OnAutoUpdateCharacter(byte[] data, CallbackResult prevResult)
            {
                PacketReader reader = new PacketReader(data);
                reader.Skip(5);
                ushort model = reader.ReadUInt16();
                if ((model == 0x0005) || (model == 0x0006)) model = 0x0004; // na gargoyla
                if ((model == 0x00CD) || (model == 0x00EE)) model = 0x002C; // na ratmana
                if (model == 0x0034) model = 0x0021; // na lizardmana
                ByteConverter.BigEndian.ToBytes((ushort)model, data, 5);
                return CallbackResult.Normal;
            }

            private CallbackResult OnUpdateCharacter(byte[] data, CallbackResult prevResult)
            {
                PacketReader reader = new PacketReader(data);
                byte id = reader.ReadByte();
                Serial serial = reader.ReadUInt32();
                if (morfedCharacterSerials.Contains(serial))
                {
                    ByteConverter.BigEndian.ToBytes((ushort)morfedCharactersModels[serial], data, 5);
                }
                return CallbackResult.Normal;
            }

            [Command]
            public void morfallbig()
            {
                ushort model = 0x0000;
                foreach (UOCharacter chara in World.Characters)
                {
              model = chara.Model;
                    if ((chara.Model == 0x0005) || (chara.Model == 0x0006)) model = 0x0004; // na gargoyla
                    if ((chara.Model == 0x00CD) || (chara.Model == 0x00EE)) model = 0x002C; // na ratmana
                    if (chara.Model == 0x0034) model = 0x0021; // na lizardmana
                    byte[] buffer = new byte[17] { 0x77, 0x00, 0x20, 0xBF, 0x0F, 0x00, 0x07, 0x04, 0xD0, 0x05, 0x64, 0x00, 0x02, 0x05, 0x7D, 0x00, 0x06 };
                    if (!morfedCharacterSerials.Contains(chara.Serial)) morfedCharacterSerials.Add(chara.Serial);
                    if (!morfedCharactersModels.ContainsKey(chara.Serial)) morfedCharactersModels.Add(chara.Serial, model);
                    ByteConverter.BigEndian.ToBytes(chara.Serial, buffer, 1);
                    ByteConverter.BigEndian.ToBytes((ushort)model, buffer, 5);
                    ByteConverter.BigEndian.ToBytes(chara.X, buffer, 7);
                    ByteConverter.BigEndian.ToBytes(chara.Y, buffer, 9);
                    ByteConverter.BigEndian.ToBytes(chara.Z, buffer, 11);
                    ByteConverter.BigEndian.ToBytes(chara.Direction, buffer, 12);
                    ByteConverter.BigEndian.ToBytes(chara.Color, buffer, 13);
                    ByteConverter.BigEndian.ToBytes(chara.Flags, buffer, 15);
                    ByteConverter.BigEndian.ToBytes((byte)chara.Notoriety, buffer, 16);
                    Core.SendToClient(buffer);
                }
          UO.PrintInformation("Vsechno male je velke");
            }

            [Command]
            public void morfallsmall()
            {
                ushort model = 0x0000;
                foreach (UOCharacter chara in World.Characters)
                {
              model = chara.Model;
                    if ((chara.Model == 0x0009) || (chara.Model == 0x000A)) model = 0x0004; // na gargoyla
                    if (chara.Model == 0x000C) model = 0x002C; // na maleho draka
                    byte[] buffer = new byte[17] { 0x77, 0x00, 0x20, 0xBF, 0x0F, 0x00, 0x07, 0x04, 0xD0, 0x05, 0x64, 0x00, 0x02, 0x05, 0x7D, 0x00, 0x06 };
                    if (!morfedCharacterSerials.Contains(chara.Serial)) morfedCharacterSerials.Add(chara.Serial);
                    if (!morfedCharactersModels.ContainsKey(chara.Serial)) morfedCharactersModels.Add(chara.Serial, model);
                    ByteConverter.BigEndian.ToBytes(chara.Serial, buffer, 1);
                    ByteConverter.BigEndian.ToBytes((ushort)model, buffer, 5);
                    ByteConverter.BigEndian.ToBytes(chara.X, buffer, 7);
                    ByteConverter.BigEndian.ToBytes(chara.Y, buffer, 9);
                    ByteConverter.BigEndian.ToBytes(chara.Z, buffer, 11);
                    ByteConverter.BigEndian.ToBytes(chara.Direction, buffer, 12);
                    ByteConverter.BigEndian.ToBytes(chara.Color, buffer, 13);
                    ByteConverter.BigEndian.ToBytes(chara.Flags, buffer, 15);
                    ByteConverter.BigEndian.ToBytes((byte)chara.Notoriety, buffer, 16);
                    Core.SendToClient(buffer);
                }
          UO.PrintInformation("Vsechno velke je male");
            }

            [Command]
            public void morfbig()
            {
          UO.Print("Zamer character na morf");
                UOCharacter chara = World.GetCharacter(UIManager.TargetObject());
                byte[] buffer = new byte[17] { 0x77, 0x00, 0x20, 0xBF, 0x0F, 0x00, 0x07, 0x04, 0xD0, 0x05, 0x64, 0x00, 0x02, 0x05, 0x7D, 0x00, 0x06 };
                if (!morfedCharacterSerials.Contains(chara.Serial)) morfedCharacterSerials.Add(chara.Serial);
                if (!morfedCharactersModels.ContainsKey(chara.Serial)) morfedCharactersModels.Add(chara.Serial, 0x000C);
                ByteConverter.BigEndian.ToBytes(chara.Serial, buffer, 1);
                ByteConverter.BigEndian.ToBytes((ushort)0x000C, buffer, 5);
                ByteConverter.BigEndian.ToBytes(chara.X, buffer, 7);
                ByteConverter.BigEndian.ToBytes(chara.Y, buffer, 9);
                ByteConverter.BigEndian.ToBytes(chara.Z, buffer, 11);
                ByteConverter.BigEndian.ToBytes(chara.Direction, buffer, 12);
                ByteConverter.BigEndian.ToBytes(chara.Color, buffer, 13);
                ByteConverter.BigEndian.ToBytes(chara.Flags, buffer, 15);
                ByteConverter.BigEndian.ToBytes((byte)chara.Notoriety, buffer, 16);
                Core.SendToClient(buffer);
            }

            [Command]
            public void morfsmall()
            {
          UO.Print("Zamer character na morf");
                UOCharacter chara = World.GetCharacter(UIManager.TargetObject());
                byte[] buffer = new byte[17] { 0x77, 0x00, 0x20, 0xBF, 0x0F, 0x00, 0x07, 0x04, 0xD0, 0x05, 0x64, 0x00, 0x02, 0x05, 0x7D, 0x00, 0x06 };
                if (!morfedCharacterSerials.Contains(chara.Serial)) morfedCharacterSerials.Add(chara.Serial);
                if (!morfedCharactersModels.ContainsKey(chara.Serial)) morfedCharactersModels.Add(chara.Serial, 0x0005);
                ByteConverter.BigEndian.ToBytes(chara.Serial, buffer, 1);
                ByteConverter.BigEndian.ToBytes((ushort)0x0005, buffer, 5);
                ByteConverter.BigEndian.ToBytes(chara.X, buffer, 7);
                ByteConverter.BigEndian.ToBytes(chara.Y, buffer, 9);
                ByteConverter.BigEndian.ToBytes(chara.Z, buffer, 11);
                ByteConverter.BigEndian.ToBytes(chara.Direction, buffer, 12);
                ByteConverter.BigEndian.ToBytes(chara.Color, buffer, 13);
                ByteConverter.BigEndian.ToBytes(chara.Flags, buffer, 15);
                ByteConverter.BigEndian.ToBytes((byte)chara.Notoriety, buffer, 16);
                Core.SendToClient(buffer);
            }

            [Command]
            public void morfTo(ushort model)
            {
          UO.Print("Zamer character na morf");
                UOCharacter chara = World.GetCharacter(UIManager.TargetObject());
                byte[] buffer = new byte[17] { 0x77, 0x00, 0x20, 0xBF, 0x0F, 0x00, 0x07, 0x04, 0xD0, 0x05, 0x64, 0x00, 0x02, 0x05, 0x7D, 0x00, 0x06 };
                if (!morfedCharacterSerials.Contains(chara.Serial)) morfedCharacterSerials.Add(chara.Serial);
                if (!morfedCharactersModels.ContainsKey(chara.Serial)) morfedCharactersModels.Add(chara.Serial, model);
                ByteConverter.BigEndian.ToBytes(chara.Serial, buffer, 1);
                ByteConverter.BigEndian.ToBytes(model, buffer, 5);
                ByteConverter.BigEndian.ToBytes(chara.X, buffer, 7);
                ByteConverter.BigEndian.ToBytes(chara.Y, buffer, 9);
                ByteConverter.BigEndian.ToBytes(chara.Z, buffer, 11);
                ByteConverter.BigEndian.ToBytes(chara.Direction, buffer, 12);
                ByteConverter.BigEndian.ToBytes(chara.Color, buffer, 13);
                ByteConverter.BigEndian.ToBytes(chara.Flags, buffer, 15);
                ByteConverter.BigEndian.ToBytes((byte)chara.Notoriety, buffer, 16);
                Core.SendToClient(buffer);
            }
        }
    }
Zde ještě není žádný komentář.

Nový komentář