Natalie
Member-
Posts
18 -
Joined
-
Last visited
Reputation
0 NeutralPersonal Information
-
Location
Aka Angelius.
-
#Solved. I've managed to solve this issue, thanks guys!
-
Do you have any source I can try or loader? There isnt many 3.0 servers to be honest. I'm currently using SmartConquerLoader..
-
Well I can't solve the issue. If anyone know, please help!
-
I've been doing further testing this. I noticed the Log File for Setup.Ini, is being altered after a server restart. The pieces of line thats being removed, is the quick/hotkeys. The left side is what I want, but the right side is what happening after each server restart. Not sure why, exactly.
-
Edit: I've tried hosting the server on another pc, seems to still happen. So maybe packet issue? Its just odd since it just clears it on each server restart. Yeah, I’ve asked a friend and he said it’s client-sided still and it saves into the “Log” folder. The thing is, I’ve checked the log folder and found the file for my specific server.. it looks correct and it doesn’t get modified when this happen. The other thing is everything else loads fine and doesn’t bug out, like audio, etc. I was thinking maybe it saved on the server some where, but it’s just odd considering if you keep the server running and relog, reload client it’s fine. Just restarting the server is where it bugs out. I’m also using 6325 client.
-
EDIT: Solved the issue! I have a question, my F-Keys on my action bar keeps going invisible every time I restart my server. I can put my items and skills on there and logout, close client etc and its all fine and normal, though for what ever reason if I restart the server, it seems to bug out the f key bars so nothing is being listed. I might try and run the server on my secondary PC and see if it happens. Though I am using SmartConquerLoader, cause I'm currently unable to find a working loader that works with CO 3.0. Looks like this after server restart: Which should look like this: I've tried fresh installing the client, and even deleting the "Log" folder which stores these settings. Though it still doesn't save after a server restart. I wouldn't think the server would have any control over loading the FKey Bar.
-
Edit, resolved the issues. If you have any issues like this. Just make sure to manually extract 7z files + copy dmaps for conversion. Thanks for the help! ^^ <3
-
Well, Im not sure if you read the other post. But when I converted my dmaps to .map, it only gave me like 236 of them or so. Shouldn't there be more for a 6325 client? I Figured there would be cause twin city wasnt even in that map conversion.
-
Okay. This is get;
-
public class Floor { [Flags] public enum DMapPointFlag : byte { Invalid = 1, Monster = 2, Item = 4, RaceItem = 8 } public class Size { public int Width, Height; public Size(int width, int height) { Width = width; Height = height; } public Size() { Width = 0; Height = 0; } } public Size Bounds; public DMapPointFlag[,] Locations; public uint FloorMapID; public Floor(int width, int height, uint mapID) { FloorMapID = mapID; Bounds = new Size(width, height); Locations = new DMapPointFlag[width, height]; } public bool this[int x, int y, MapObjectType type, object obj = null] { get { if (y >= Bounds.Height || x >= Bounds.Width || x < 0 || y < 0) return false; DMapPointFlag filltype = Locations[x, y]; if (type == MapObjectType.InvalidCast) return (filltype & DMapPointFlag.Invalid) == DMapPointFlag.Invalid; if ((filltype & DMapPointFlag.Invalid) == DMapPointFlag.Invalid) return false; if (type == MapObjectType.Player) return true; else if (type == MapObjectType.Monster) return (filltype & DMapPointFlag.Monster) != DMapPointFlag.Monster; else if (type == MapObjectType.Item) return (filltype & DMapPointFlag.Item) != DMapPointFlag.Item; else if (type == MapObjectType.StaticEntity) return (filltype & DMapPointFlag.RaceItem) != DMapPointFlag.RaceItem; return false; } set { if (y >= Bounds.Height || x >= Bounds.Width || x < 0 || y < 0) return; DMapPointFlag filltype = Locations[x, y]; if (value) { if (type == MapObjectType.InvalidCast) TakeFlag(x, y, DMapPointFlag.Invalid); if (type == MapObjectType.Item) TakeFlag(x, y, DMapPointFlag.Item); if (type == MapObjectType.Monster) TakeFlag(x, y, DMapPointFlag.Monster); if (type == MapObjectType.StaticEntity) TakeFlag(x, y, DMapPointFlag.RaceItem); } else { if (type == MapObjectType.InvalidCast) AddFlag(x, y, DMapPointFlag.Invalid); if (type == MapObjectType.Item) AddFlag(x, y, DMapPointFlag.Item); if (type == MapObjectType.Monster) AddFlag(x, y, DMapPointFlag.Monster); if (type == MapObjectType.StaticEntity) AddFlag(x, y, DMapPointFlag.RaceItem); } } } public DMapPointFlag AddFlag(int x, int y, DMapPointFlag extraFlag) { Locations[x, y] |= extraFlag; return Locations[x, y]; } public DMapPointFlag TakeFlag(int x, int y, DMapPointFlag extraFlag) { Locations[x, y] &= ~extraFlag; return Locations[x, y]; } } This is my map.floor method. If you like you can add me on discord as well (Natalynn#4100) I do notice in my breakpoint, not sure if its normal? The coordinates:
-
I'm not sure fully what you mean by 'fall through'. But I'm hope I'm right. However I was curious and did comment out the "teleport" function under the if statement and see what would happen, Basically just disconnects my client. I've just copied the entire portion of this code. It's checking: if (Map.Floor[new_X, new_Y, Game.MapObjectType.Player, null]) { otherwise it'll be this: } else { if (client.Entity.Mode == Game.Enums.Mode.None) { client.Entity.Teleport(client.Map.ID, client.Entity.X, client.Entity.Y); } I've included the entire portion of the start of the if down to the else. if (Map != null) { if (Map.Floor[new_X, new_Y, Game.MapObjectType.Player, null]) { if (Kernel.GetDistance(new_X, new_Y, client.Entity.X, client.Entity.Y) <= 16) { client.Entity.Action = Game.Enums.ConquerAction.Jump; client.Entity.Facing = Kernel.GetAngle(generalData.wParam1, generalData.wParam2, new_X, new_Y); client.Entity.X = new_X; client.Entity.Y = new_Y; if (client.Entity.MapID == CaptureTheFlag.MapID) CheckForFlag(client); client.SendScreen(generalData, true); client.Screen.Reload(generalData); if (client.Entity.MapID == CaptureTheFlag.MapID) { foreach (INpc current2 in client.Map.Npcs.Values) { if (current2.MapID == CaptureTheFlag.MapID && Kernel.GetDistance(client.Entity.X, client.Entity.Y, current2.X, current2.Y) < 17) { current2.SendSpawn(client); } } } if (client.Entity.MapID == 3856 && Kernel.SpawnNemesis2) { foreach (INpc Npc in client.Map.Npcs.Values) { if (Npc.MapID == 3856 && (Npc.UID == 3080) && Kernel.GetDistance(client.Entity.X, client.Entity.Y, Npc.X, Npc.Y) < 17) { Npc.SendSpawn(client); } } } if (client.Entity.MapID == 1927 && Kernel.SpawnBanshee2) { foreach (INpc Npc in client.Map.Npcs.Values) { if (Npc.MapID == 1927 && (Npc.UID == 2999) && Kernel.GetDistance(client.Entity.X, client.Entity.Y, Npc.X, Npc.Y) < 17) { Npc.SendSpawn(client); } } } if (client.Entity.MapID == 1020 && Kernel.Titan2) { foreach (INpc Npc in client.Map.Npcs.Values) { if (Npc.MapID == 1020 && (Npc.UID == 29996) && Kernel.GetDistance(client.Entity.X, client.Entity.Y, Npc.X, Npc.Y) < 17) { Npc.SendSpawn(client); } } } if (client.Entity.MapID == 1010 && Kernel.Ganoderma2) { foreach (INpc Npc in client.Map.Npcs.Values) { if (Npc.MapID == 1010 && (Npc.UID == 29995) && Kernel.GetDistance(client.Entity.X, client.Entity.Y, Npc.X, Npc.Y) < 17) { Npc.SendSpawn(client); } } } if (client.Entity.MapID == 3935 && Kernel.AlluringWitchHisCrystals2) { foreach (INpc Npc in client.Map.Npcs.Values) { if (Npc.MapID == 3935 && (Npc.UID == 29994) && Kernel.GetDistance(client.Entity.X, client.Entity.Y, Npc.X, Npc.Y) < 17) { Npc.SendSpawn(client); } } } if (client.Entity.InteractionInProgress && client.Entity.InteractionSet) { if (client.Entity.Body == 1003 || client.Entity.Body == 1004) { if (Kernel.GamePool.ContainsKey(client.Entity.InteractionWith)) { Client.GameClient ch = Kernel.GamePool[client.Entity.InteractionWith]; Data general = new Data(true); general.UID = ch.Entity.UID; general.wParam1 = new_X; general.wParam2 = new_Y; general.ID = 0x9c; ch.Send(general.ToArray()); ch.Entity.Action = Game.Enums.ConquerAction.Jump; ch.Entity.X = new_X; ch.Entity.Y = new_Y; ch.Entity.Facing = Kernel.GetAngle(ch.Entity.X, ch.Entity.Y, new_X, new_Y); ch.SendScreen(generalData, true); ch.Screen.Reload(general); client.SendScreen(generalData, true); client.Screen.Reload(general); } } } if (Kernel.GetDistance(client.Entity.X, client.Entity.Y, 73, 98) < 3 && client.Entity.MapID == 4020) //TOWEROFMYSTERY { client.Entity.Teleport(3998, 90, 352); } if (Kernel.GetDistance(client.Entity.X, client.Entity.Y, 40, 66) <= 1 && client.Entity.InTOM || Kernel.GetDistance(client.Entity.X, client.Entity.Y, 46, 44) <= 1 && client.Entity.InTOM) //TOWEROFMYSTERY { client.MessageBox("Do you want to leave the Tower of Mystery?", p => { p.Entity.Teleport(4020, 84, 74); }); } } else { client.Disconnect(); } } else { if (client.Entity.Mode == Game.Enums.Mode.None) { client.Entity.Teleport(client.Map.ID, client.Entity.X, client.Entity.Y); } } } else { if (Kernel.GetDistance(new_X, new_Y, client.Entity.X, client.Entity.Y) <= 17) { client.Entity.Action = Game.Enums.ConquerAction.Jump; client.Entity.Facing = Kernel.GetAngle(generalData.wParam1, generalData.wParam2, new_X, new_Y); client.Entity.X = new_X; client.Entity.Y = new_Y; client.SendScreen(generalData, true); client.Screen.Reload(generalData); } else { client.Disconnect(); } } I do know, for some reason when I add all my dmaps from my client into my server database for conversion folder "map/map/.dmap" that goes into "maps" folder for server to load as .map. It only converts like 236 dmaps, and not all of them. Misses maps like twin city for example. But I do have a backup of maps, which I merge. Just odd to me.
-
Currently debugging this code, which is what keeps teleporting me back for invalid jumps. if (client.Entity.Mode == Game.Enums.Mode.None) { client.Entity.Teleport(client.Map.ID, client.Entity.X, client.Entity.Y); } } This is what I said when I debug the line. Map = Map BaseID = {ushort} 1015 BodyGuards = {SafeDictionary<uint, Entity>} Count = 0 CloneCounter = Counter Companions = {SafeDictionary<uint, Entity>} Count = 0 Entities = {SafeDictionary<uint, Entity>} Count = 645 EntityUIDCounter = Counter EntityUIDCounter2 = Counter Floor = Floor FloorItems = {ConcurrentDictionary<uint, FloorItem>} Count = 3 FreezeMonsters = {bool} false ID = {ushort} 1015 LastReload = {Time32} 1485429 Level = {ushort} 0 Npcs = {Dictionary<uint, INpc>} Count = 26 Path = {string} "map/map/island.dmap" Portals = {List<Portal>} Count = 31 Scenes = {Map.SceneFile[]} null StaticEntities = {SafeConcurrentDictionary<uint, StaticEntity>} Count = 0 Tables = {Dictionary<uint, IRoulette>} Count = 0 TempNpcs = {Dictionary<uint, INpc>} Count = 0 Timer = Class3<Map> WasPKFree = {bool} false Zones = {List<Zone>} Count = 0 disposed = {bool} false portals = {Map.DMapPortal[]} null Now = {Time32} 1714853 client = GameClient clientstamp = {int} 842 generalData = Data new_X = {ushort} 646 new_Y = {ushort} 744 oldX = {ushort} 657 oldY = {ushort} 744 serverstamp = {int} 841 speed = {int} 1 It's what my server does. I make a folder in the database folder, and make sure the folder is called "map/map/blahblah.dmap", and it'll convert all of them with "id.map" and send them all to "maps" folder and yeah my server loads only from .map. I have saw some servers load directly from just dmaps.
-
I did further testing.. It appears the whole island across the bridge is actually unwalkable.
-
Yeah, bridges would be a little funky around the edges and stuff. And regarding where in your source that'd be ... no clue. I don't know what source you're using or where you got it from. I wish I knew what base this was. Is their any way I can find out? I had this server quite a while just sitting in my dropbox which I've been working on and off for learning purposes. If anyone has similar issues, I'm still needing help with this! ^^