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); }
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(); }
static void SetupZone(ZoneStream zone) { zone.Spawned += (_, mob) => { if (mob.Name.Contains("Jim")) { //WriteLine(mob); //Environment.Exit(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}"); }; }
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); }; }
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; }
static void SetupZone(ZoneStream zone) { }
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); }; }
#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); }; }