Esempio n. 1
0
        public void grabZones()
        {
            var activezones = new SqlCommand("SELECT * FROM zone WHERE active=1", db);
            var zones       = new List <Zone>();

            using (var reader = activezones.ExecuteReader())
            {
                if (!reader.HasRows)
                {
                    Log.write(TLog.Warning, "Found no active zones to load");
                }

                while (reader.Read())
                {
                    IPAddress ipadd = IPAddress.Parse(reader["ip"].ToString());
                    zones.Add(new Zone(ipadd.GetAddressBytes(),
                                       Convert.ToUInt16(reader["port"]),
                                       reader["name"].ToString(),
                                       Convert.ToBoolean(reader["advanced"]),
                                       reader["description"].ToString()));
                }
            }

            //Done
            ZoneStream = new ZoneStream(zones);
        }
Esempio n. 2
0
    void OnZoneServer(object sender, ZoneServerInfo server)
    {
        //UnityEngine.Debug.Log($"Zone server info: {server.Host}:{server.Port}");

        Debug.Log("Connecting to zone " + server.Host + ", " + server.Port + ", as character " + CharacterName);
        zone = new ZoneStream(server.Host, server.Port, CharacterName);
        InitializeZone();
    }
Esempio n. 3
0
 static void SetupZone(ZoneStream zone)
 {
     zone.Spawned += (_, mob) => {
         if (mob.Name.Contains("Jim"))
         {
             //WriteLine(mob);
             //Environment.Exit(0);
         }
     };
 }
Esempio n. 4
0
        static void ConnectZone(string charName, string host, ushort port)
        {
            var zoneStream = new ZoneStream(host, port, charName);

            zoneStream.Spawned         += (_, mob) => {
                //WriteLine($"Spawn {mob.Name}");
            };
            zoneStream.PositionUpdated += (_, update) => {
                //WriteLine($"Position updated: {update.ID} {update.Position}");
            };
        }
Esempio n. 5
0
        static void SetupWorld(WorldStream world)
        {
            string charname = null;

            world.CharacterList += (sender, chars) => {
                WriteLine($"Got {chars.Count} characters:");
                foreach (var character in chars)
                {
                    WriteLine($"- {character.Name} - Level {character.Level}");
                }
                charname = chars[0].Name;
                WriteLine($"Entering world with { charname }");
                world.EnterWorld(charname, false, false);
            };

            world.ZoneServer += (sender, server) => {
                WriteLine($"Zone server info: {server.Host}:{server.Port}");

                var zone = new ZoneStream(server.Host, server.Port, charname);
                SetupZone(zone);
            };
        }
Esempio n. 6
0
    private void OnDestroy()
    {
        Debug.Log("Cleaning up subscriptions on exit");
        if (login != null)
        {
            login.PlaySuccess  -= OnPlaySuccess;
            login.LoginSuccess -= OnLoginSuccess;
            login.ServerList   -= OnServerList;

            login.Disconnect();
        }
        login = null;

        if (world != null)
        {
            world.CharacterList  -= OnCharacterList;
            world.ChatServerList -= OnChatServerList;
            world.ZoneServer     -= OnZoneServer;

            world.Disconnect();
        }
        world = null;

        if (zone != null)
        {
            //try to camp out
            zone.SendCamp();

            zone.ZoneEntry                  -= OnZoneEntry;
            zone.DeleteSpawn                -= OnDeleteSpawn;
            zone.ChannelMessage             -= OnChannelMessage;
            zone.SpawnHPUpdate              -= OnSpawnHPUpdate;
            zone.SpawnPositionUpdate        -= OnSpawnPositionUpdate;
            zone.PlayerPositionUpdateServer -= OnPlayerPositionUpdateServer;
            zone.Disconnect();
        }
        zone = null;
    }
Esempio n. 7
0
 static void SetupZone(ZoneStream zone)
 {
 }
Esempio n. 8
0
        static void SetupWorld(WorldStream world)
        {
            string charname = null;

            world.CharacterCreateNameApproval += (sender, approvalState) => {
                if (1 == approvalState)
                {
                    // approved.  Send charactercreate and EnterWorld.
                    world.SendCharacterCreate(new CharCreate {
                        Class_          = 1,
                        Haircolor       = 255,
                        BeardColor      = 255,
                        Beard           = 255,
                        Gender          = 0,
                        Race            = 2,
                        StartZone       = 29,
                        HairStyle       = 255,
                        Deity           = 211,
                        STR             = 113,
                        STA             = 130,
                        AGI             = 87,
                        DEX             = 70,
                        WIS             = 70,
                        INT             = 60,
                        CHA             = 55,
                        Face            = 0,
                        EyeColor1       = 9,
                        EyeColor2       = 9,
                        DrakkinHeritage = 1,
                        DrakkinTattoo   = 0,
                        DrakkinDetails  = 0,
                        Tutorial        = 0
                    });

                    world.SendEnterWorld(new EnterWorld {
                        Name     = charname,
                        GoHome   = false,
                        Tutorial = false
                    });
                }
                else
                {
                    // Denied.  Let them try a different name.
                }
            };

            world.CharacterList += (sender, chars) => {
                WriteLine($"Got {chars.Count} characters:");

                if (0 == chars.Count)
                {
                    charname = "JimTomShiner";

                    Console.WriteLine("0 Characters found.  Simple char creation:");
                    Console.WriteLine($"1. Barbarian, Male, Warrior, Name is {charname}");
                    Console.WriteLine("Enter number of the character type you want and press Enter.");
                    var selection = Console.ReadLine();

                    // Send char create packet with defaults.
                    world.SendNameApproval(new NameApproval {
                        Name    = charname,
                        Class   = 3,
                        Race    = 1,
                        Unknown = 214
                    });
                }
                else
                {
                    foreach (var character in chars)
                    {
                        WriteLine($"- {character.Name} - Level {character.Level}");
                    }

                    Console.WriteLine("Enter a character number and press Enter.");
                    var charNum = "1";                    //Console.ReadLine();
                    charname = chars[Convert.ToInt32(charNum) - 1].Name;
                    WriteLine(chars[0]);
                    WriteLine($"Entering world with {charname}");
                    //world.ResetAckForZone();
                    world.SendEnterWorld(new EnterWorld {
                        Name     = charname,
                        GoHome   = false,
                        Tutorial = false
                    });
                }
            };

            world.ZoneServer += (sender, server) => {
                WriteLine($"Zone server info: {server.Host}:{server.Port}");

                var zone = new ZoneStream(server.Host, server.Port, charname);
                SetupZone(zone);
            };
        }
Esempio n. 9
0
#pragma warning restore 0649

        public override void Setup()
        {
            string charname = null;

            world.CharacterCreateNameApproval += (sender, approvalState) =>
            {
                if (1 == approvalState)
                {
                    // approved.  Send charactercreate and EnterWorld.
                    world.SendCharacterCreate(new CharCreate
                    {
                        Class_          = 1,
                        Haircolor       = 255,
                        BeardColor      = 255,
                        Beard           = 255,
                        Gender          = 0,
                        Race            = 2,
                        StartZone       = 29,
                        HairStyle       = 255,
                        Deity           = 211,
                        STR             = 113,
                        STA             = 130,
                        AGI             = 87,
                        DEX             = 70,
                        WIS             = 70,
                        INT             = 60,
                        CHA             = 55,
                        Face            = 0,
                        EyeColor1       = 9,
                        EyeColor2       = 9,
                        DrakkinHeritage = 1,
                        DrakkinTattoo   = 0,
                        DrakkinDetails  = 0,
                        Tutorial        = 0
                    });

                    world.SendEnterWorld(new EnterWorld
                    {
                        Name     = charname,
                        GoHome   = false,
                        Tutorial = false
                    });
                }
                else
                {
                    // Denied.  Let them try a different name.
                }
            };

            buttonCreateCharacter.Click += (sender, args) =>
            {
                charname = "JimTomShiner";

                //Console.WriteLine($"1. Barbarian, Male, Warrior, Name is {charname}");
                //Console.WriteLine("Enter number of the character type you want and press Enter.");
                //var selection = Console.ReadLine();

                // Send char create packet with defaults.
                world.SendNameApproval(new NameApproval
                {
                    Name    = charname,
                    Class   = 3,
                    Race    = 1,
                    Unknown = 214
                });
            };

            world.CharacterList += (sender, chars) =>
            {
                var i = 0;
                foreach (var character in chars)
                {
                    charGrid.RowDefinitions.Add(new StripDefinition(StripType.Fixed, 25));
                    var namefield = new TextBlock
                    {
                        Text      = character.Name,
                        Font      = charNameHeader.Font,
                        TextSize  = charNameHeader.TextSize,
                        TextColor = charNameHeader.TextColor
                    };
                    namefield.SetGridColumn(0);
                    namefield.SetGridRow(i);
                    charGrid.Children.Add(namefield);

                    var classfield = new TextBlock
                    {
                        Text      = ((ClassTypes)character.Class).GetClassName(),
                        Font      = charNameHeader.Font,
                        TextSize  = charNameHeader.TextSize,
                        TextColor = charNameHeader.TextColor
                    };
                    classfield.SetGridColumn(1);
                    classfield.SetGridRow(i);
                    charGrid.Children.Add(classfield);

                    var levelfield = new TextBlock
                    {
                        Text      = character.Level.ToString(),
                        Font      = charNameHeader.Font,
                        TextSize  = charNameHeader.TextSize,
                        TextColor = charNameHeader.TextColor
                    };
                    levelfield.SetGridColumn(2);
                    levelfield.SetGridRow(i);
                    charGrid.Children.Add(levelfield);

                    var serverButton = new Button {
                        MouseOverImage = buttonCreateCharacter.MouseOverImage, NotPressedImage = buttonCreateCharacter.NotPressedImage, PressedImage = buttonCreateCharacter.PressedImage
                    };
                    var buttonLabel = new TextBlock {
                        Text = "Play", Font = charNameHeader.Font, TextSize = 8, TextColor = charNameHeader.TextColor, VerticalAlignment = VerticalAlignment.Center, HorizontalAlignment = HorizontalAlignment.Center
                    };
                    serverButton.Content = buttonLabel;
                    serverButton.SetGridColumn(3);
                    serverButton.SetGridRow(i++);
                    charGrid.Children.Add(serverButton);
                    serverButton.Click += (s, e) => {
                        ((Button)s).IsEnabled = false;
                        world.ResetAckForZone();
                        world.SendEnterWorld(new EnterWorld
                        {
                            Name     = character.Name,
                            GoHome   = false,
                            Tutorial = false
                        });
                    };
                }
            };

            world.ChatServerList += (sender, chatBytes) =>
            {
                world.ChatServers.Add(new ChatServer(chatBytes));
            };

            world.ZoneServer += (sender, server) =>
            {
                //WriteLine($"Zone server info: {server.Host}:{server.Port}");

                var zone = new ZoneStream(server.Host, server.Port, charname);
                SetupZone(zone);
            };
        }