-
Posts
527 -
Joined
-
Last visited
Content Type
Profiles
Forums
Downloads
Store
Everything posted by Spirited
-
In patch 5017, you don't have to worry about the DH Key Exchange. That was added in patch 5018 (which is why 5017 was so popular until that was reverse engineered for newer servers). I suppose it's possible that the game server isn't ready when it makes that request. In Comet, I accounted for that using RPC. When the game server is ready for players, it registers with the account server, and that server gets opened up for players (it would otherwise send "Server offline" or something of that nature. I'm not sure how COPS V6 handles handshake between the account and game servers. It might not at all (which I've seen in most servers).
-
Impulse Source 5165 -> Offset calculation issue.
Spirited replied to Rezlind's topic in Conquer Online
All good - As long as you learned something from the experience, that's the best I could have asked for. Have fun with the new server, and feel free to ask questions if you get stuck on something again. -
Impulse Source 5165 -> Offset calculation issue.
Spirited replied to Rezlind's topic in Conquer Online
Hmm.... that doesn't look right. Are you sure your packet is decrypted by that point? Side note: I'll make a tutorial at some point for packets, byte endianness, and hex dumps. -
Impulse Source 5165 -> Offset calculation issue.
Spirited replied to Rezlind's topic in Conquer Online
No worries about the direct mention. I just don't want it to become a reoccurrence is all. So, here's a link to how my skeleton server project handles the packet. Again, it looks pretty similar to how you're handling it already, so I'm a bit confused. You can try doing a packet dump on the buffer and posting it here. If you don't have code for that, here's another link to mine. That'll help me step through the code with you a bit better. -
Impulse Source 5165 -> Offset calculation issue.
Spirited replied to Rezlind's topic in Conquer Online
Please do not address me specifically when asking questions. I'm not the only member here on this board, though I admit it's been really quiet recently after all the flash eol hit. I'm also not developing for Conquer Online these days... Anyways, have your tried debugging the project and catching the exception? You should be able to see the contents of those variables and the packet buffer. I don't see anything wrong with the code you posted in particular. Would also be helpful to know the length of the packet and check that before making these conversions. -
Oh, interesting! So it's an actual P-string now. That could be part of the protobuf serializer, but I'm not sure. If you have time after you reverse the packet, could you please post your findings here:
-
Most packet values in Conquer Online get dereferenced at address 0x404 from the packet pointer + an offset for the value. This packet structure looks totally different than anything I've seen... which is unfortunate. What I recommend maybe trying is mapping addresses to packet offsets that you already know. For example, you know the mana of the player. If you can get the address from the packet pointer using that known offset (look for SetMana in the snippet you provided above), then you can figure out the rest of the offsets using that mapping. I hope that makes sense.
-
Yeah, I don't think it's been used for a while. I'm not super familiar with the higher patches, but it looks like this is the latest that got added to the packet wiki: https://gitlab.com/conquer-online/wiki/-/wikis/Packets/MsgUserInfo#patch-5808. It won't be an exact match, but it might help with guessing some of the offsets. Optionally, you could also reverse the client like I have outlined here:
-
Awesome, glad you figured it out!
-
Roadmap Suggestions for expanding on Comet 5017
Spirited replied to Rezlind's topic in Conquer Online
Hey! You found us. Feel free to introduce yourself if you wanna (Introductions section). If I were to expand on Comet, then the roadmap might look like the following: Implement attributes and proper health / mana calculations per class (Finishes character loading) Implement map system (tracking where players are, their screen entities, and spawning players) Implement chat and server commands (makes debugging all that follows much easier) Implement portals (moving between maps) Implement NPCs and NPC dialog system (scripted dialogs and shop NPCs) Implement items and equipment (item usage like scrolls and potions, trading, market shops) Implement attacks and PVP systems (class skills, spells, weapon prof, mining) Implement monsters and monster AI (movements, attacks, behaviors, guards) Implement groups (guilds, teams) Implement additional character enhancement systems (item enhancement, mentorship, rebirth) Etc. The more base features you have added, the less order really matters. Just to clarify though, I don't have any of these changes scheduled myself. If pull requests are made against Comet, however, then I'll absolutely look them over and give appropriate feedback. Anyone can contribute to Comet. -
Yep! Glad you figured it out. Indeed, Conquer Online's custom cipher is asymmetric.
-
Nice! If it says the server's down, then you need to make sure the name of the server you're connecting to (ex. Meteor, Dark, etc.) is the same as the configured name in the database. Follow the readme on GitLab and it should instruct you on how to do that. You're really really close now! Keep it up!
-
Really? I haven't had any problems with opening ports on Windows 10. Are you sure you're opening the ports properly with your firewall and router? I am good lol, I found that after opening ports or what I thought was open I had to go through control panel/windows defender firewall/advanced settings and double check the inbound rules Yep, that's how I do it as well.
-
Hmm... Did you try using your internal IP address rather than your public one? Aka. the 192.168.x.x address? Because if that works, then it's not a firewall issue. If it doesn't work even then though, then you'll know it's something on your system that's blocking it. Good luck, and let me know how it goes.
-
Really? I haven't had any problems with opening ports on Windows 10. Are you sure you're opening the ports properly with your firewall and router?
-
Stumped on what SCA stands for. Thanks for the feedback, I can work on making the list of alternatives a bit more tuned for Comet. I started that process a bit with the addition of "player" and "game client", but I'll get on to cleaning up irrelevant suggestions.
-
In honor of diversity month and International Transgender day, I updated the contribution guide for Comet to include more inclusive terminology. You can find all replacements here. Throughout the week (really whenever I get time), I'll be updating the code to reflect these new requirements. Thanks, and remember to be kind to one another.
-
Right. That RPC is between the Account server and Game server. They could, theoretically, be on separate machines if you choose to do so. If you're running both servers on one machine, then you can keep the default value of 127.0.0.1. It still sounds like your firewall rules could be preventing you from connecting using an outside connection. If you also can't connect using an internal IP address (192.168.x.x), then you'll know it's a firewall rule problem. You can then try disabling your firewall and see if it works.
-
I'm going to keep this thread open in case anyone else has opinion they wish to share. Generally, I want these forums to encourage community and discussion - so I'm likely going to keep threads open in most scenarios.
-
Well, an ISP can block ports from being exposed on the naked internet from residential addresses. They usually only block high traffic ports like 80, though. More likely is that you have a firewall rule preventing you from exposing the port. You might need to add an exclusion rule to allow the port through the firewall.
-
I personally just use the Remote Desktop app from Microsoft. It's got decent support for Windows based connections. I can't say I've tried RDPing into a Linux machine though from my phone. PS: Please use meaningful titles for threads. Thanks!
-
Interesting. I wish I spent more time looking into these, but I'm a bit clueless as it stands. I don't know if this will sound dumb or not, but I remember seeing references to a triangle based puzzle file rather than a square one. I wonder if some of those values could be the bounds of the defining shape. Have you tried debugging the client while it's loading one of these files? That could help in reverse engineering the format. Sorry I'm not of more help.
-
I wrote up some of my thoughts on Comet's forks / multi-threaded design here: https://spirited.io/multi-threaded-game-server-design/
-
The game they copied all those maps from (Tian Yuan / TY) used PUX files in a folder called PuzzleSaves. I never got around to reversing them, but I guess it makes sense that they'd just copy the format instead of trying to convert it. Looking at the output you have above... it doesn't look any different than the standard PUZZLE2 format - besides the ability to use multiple ANI files if desired. Are you sure those aren't the RollX / RollY values?
-
I just started using your source (Spirited, not Felipes) and love how its using dot net 3.1 and async. I have the chat system working now, many more packets to go. Anyways I like your idea on this deadlock. So you are recommending that on each map(conquer map), that it has its own dedicated threads? If I were to put this into practice, I would have a thread pool for each map, when the packet comes in, it will have the map and send it to the correct thread pool? Not necessarily threads per map. Tasks per map. Tasks are like green threads (lightweight threads that can spin up more quickly with less overhead). Multiple tasks can run in a single operating system thread using a task scheduler for managing contexts and context switching. Anyways, summary being you can run more tasks more efficiently than running threads. You can also run multiple maps in a single task. Just some ideas.