Jump to content
Search In
  • More options...
Find results that contain...
Find results in...

Welcome to our site

Take a moment to join our board

All Activity

This stream auto-updates     

  1. Earlier
  2. Spirited

    Comet - Open Source Conquer Online Server

    Updated the socket system to use inheritance for the server actor class. Allows for cleaner socket event definitions for connect, receive, and disconnect. Changes: https://gitlab.com/spirited/comet/commit/c416b6df6d7df983469f55d20b8eea0285a01424
  3. W1cked

    Conquer Map Editor/Creator

    The closest thing I have is a command line dmap reader that I built in Go. I had to have the dmap system in my source for validation anyway, but creating it for command line wasn't that much more difficult. A visual editor on the other hand, like @Spirited said, would probably take a lot of work. I'm actually happy that Ultimation didn't share it, but that's just my opinion.
  4. This is why it's important to have mirrors and archives for downloads for an online game, and some way of applying patches manually. Autopatches are nice, but limited if something goes wrong with either the network or service/client configuration. Edit: Moved from Introductions to Off-Topic and added tags
  5. Spirited

    Conquer Map Editor/Creator

    I don't think there are any public or private map editors out there. Ultimation was the closest to completing one, but wouldn't share it publicly. It's a lot of work to share (his included a full client engine and visual editing). I don't have any updates on my end due to work, but I still have it on my back burner.
  6. If the servers are shut down, that usually means the patch servers will likely be taken down too. So in that case, whatever you have on the disc will be what you are stuck with. This is the case with almost all modern games.
  7. I didn't really know how to word the title but to elaborate, I know that the servers for digital games sometimes get shut down and in that case it would be better to have a physical coot of the game you're trying to play. So let's say you put the disc in and install the game, do all all of the updates install as well or are you literally playing the unpatched version of a game? I'll gladly try to be more specific if I wasnt clear in asking the question. Thanks for any help.https://discord.software/ fetLife itunes
  8. Mugaru

    Conquer Map Editor/Creator

    Its been a long time since i've been working on Conquer, because of work. Still upgrading my C# skillset and learning alot of the Comet Source code. Been looking at how Packet Structures work exactly.. and planning to create something amazing in the near future :-)! Because of the above i didn't work on the Map Editor / Creator... so if there is anybody that has done something like this and is wanting to share it, that would be great.
  9. Spirited

    Comet - Open Source Conquer Online Server

    Cool, I hope you get a small kick out of it. It really is bare bones right now, though. It logs in and that's it. I hope others will pick it up and contribute, but only time will tell. I know I have too many projects going on to work on it right now. Hope you get something from it, at the least. Let me know if there's anything I can help with, too.
  10. Grrowley

    Comet - Open Source Conquer Online Server

    It's been about 5 years since I've done anything Conquer related. Had the itch to dink around with it again. Excited to try your source and especially exited that it's on git and vscode. Thanks spritied. Former epvper myself.
  11. W1cked

    Hello world

    @Spirited Don't worry, my Go code can't be much better. I think we're all pretty critical of ourselves when we look back. I've never looked at my code from 6 months prior and thought "Wow, what a good job." I'm not really sure why I want a Data Analytics, Finance is really where I would like to apply my software skills. Like trading platforms, brokers, or banks. @Omicron @Twelve I'm pretty interested in it, always have been. I've just now been able to find time to actually do something. I hope to have something released soon in 5017 patch. I'm hoping to maybe fix some potential unclean (or what I view as unclean) habits in some sources. My first order of business, in my 5017 server I scraped the idea of switch statements for packet handling. I've created a router, something like a simple http router if you have ever used Go. So instead of having abnormally large switch statements for handling packets, at initialization you specify what "process" goes to the uint16. c.Router.Add(NewRoute().Name(packets.MsgAccountType).Process(MsgAccountProcess)) In my opinion, this makes the code base far more manageable and readable. The router uses a map[uint16]*Route, and the Route contains some information including what process to run for that packet. Since it uses a map, finding the Route happens in constant time (which isn't TOO big of a deal, but it still helps.) I'm hoping to also use something like this for handling some sub actions of packets, like MsgAction.
  12. Twelve

    Hello world

    Hey, W1cked! Welcome to the forum. I'm glad to see that there's still some interested members of the development community.
  13. Omicron

    Hello world

    Wao.... Another one.... PS. Welcome
  14. W1cked

    Packet [1052] Game

    @Spirited that’s what i’ve been using. I’m having to go through sources to find out the sequences. I have the ciphers working (i think) but what i’m struggling with now is that the game crashes when i send the ANSWER_OK packet. I’m guessing that it has something to do with the cipher. I’m trying to debug a couple of sources to figure out what i’m doing different.
  15. Spirited

    Packet [1052] Game

    Lol, that would do it. Btw, packet references are available here: https://gitlab.com/spirited/conquer/wikis/Packets/Packets. If you find something not documented, it's open source, so feel free to contribute.
  16. W1cked

    Packet [1052] Game

    I am an overly confident programmer who makes simple binary mistakes, and refuses to acknowledge that it could have possibly been me who messed up. This has caused me a great deal of time wasted. I was using the wrong method of the binary littlendian package.
  17. W1cked

    Packet [1052] Game

    I'm a little confused on why this occurs, and I've looking through a few sources to try to figure it out, but it appears something is occurring that I can't see. I pass packet [1055] from the account server to the client with a uint32 for the Client Identity and another uint32 for the Authentication Code. Identity = 1000000 Auth Code = 2 The client then responds to the account server with [28 0 28 4 64 66 15 0 10 0 0 0 114 101 115 46 100 97 116 0 0 0 0 0 0 0 0 0] Which is packet [1052], with the Identity of 1000000 which appears to be correct. This is where I get lost. The client then connects to the game server, and immediately sends packet [1052]. [28 0 28 4 0 0 0 0 0 0 0 0 0 0 69 110 0 0 0 0 0 0 0 0 0 0 0 0] 28 Length, [1052] Type, and the Identity and additional data are 0's. Why is the client not passing along the identity to the game server?
  18. W1cked

    RC5 Package - Go

    Thanks! I use Goland, but I don't think I have golint on it. Thank you for the tip!
  19. Spirited

    RC5 Package - Go

    Looks good. Btw, I recommend taking a look at Visual Studio Code and the Go extension for it. It'll automatically help you lint your code using downloaded tools (like golint). I use it on my project, and it reminds me to add comment blocks to functions and reduce package naming redundancies. It's been a really useful tool to have while learning Go. Anyways, thanks for the contribution - looks very nice.
  20. Spirited

    Go RC5 Cipher Problems

    You are correct. I don't think I reference that function, but feel free to log a bug against it and I'll fix it once I return home (I'll be out for another few days). Thanks!
  21. Spirited

    Hello world

    Welcome to the community, very cool. Another Go programmer! Whoo-hoo! Please don't look at my older Go code, it's really embarrassing. 😅 Hope you stick around with us. Would be cool to see more from you. I see a lot of really bright engineers come from the military, so I'm sure you'll do well. Word of advice though, Data Analytics is a very narrow field of study. If you take the general approach or take more classes that specialize in algorithms, machine learning, and data extraction, then you'll be right on track. Good luck with your studies.
  22. W1cked

    Go RC5 Cipher Problems

    For future visitors, you can find the completed and functional code at
  23. W1cked

    Hello world

    Hey everyone, I have made a few posts already but I figured I would give an introduction as well. I'm currently in school for Computer Science, and going to hopefully continue until I get my masters in Data Analytics. I'm older than most college students as I chose to serve in the military before going. I've played Conquer for a long time, the earliest that I can remember is that CP's didn't exist, and top + was 8 I believe. I primarily use Go, although I have used C# but mostly just using the Unity library. I'm currently working on a Go 5017 source, but the scope for this is a lot smaller than Spirited's Chimera project. So that's pretty much it, hope to see you all around!
  24. W1cked

    RC5 Package - Go

    I had help from @Spirited to figure this stuff out and port it to Go. I know a lot of people in the emulator communities don't use Go, but I hope with more packages released it will lift the barrier for people to use it. It's pretty straight forward, use the NewRC5 method instead of a struct literal. Encrypt by calling Encrypt and supplying a dst byte slice the same size as the src slice. For Decrypting, do the same thing. This adheres to the Cipher.Block interface, so for your client/conn structs you can just use that interface type. package rc5 import ( "encoding/binary" "math/bits" ) const ( WordSize = 16 Rounds = 12 KeySize = WordSize / 4 SubSize = 2 * (Rounds + 1) ) type RC5 struct { Key []uint32 Sub []uint32 } func NewRC5() RC5 { c := RC5{} c.Key = make([]uint32, KeySize) c.Sub = make([]uint32, SubSize) //Conquer default key c.generateKeys([]byte{ 0x3C, 0xDC, 0xFE, 0xE8, 0xC4, 0x54, 0xD6, 0x7E, 0x16, 0xA6, 0xF8, 0x1A, 0xE8, 0xD0, 0x38, 0xBE, }) return c } func (r *RC5) generateKeys(buf []byte) { //Initialize key expansion //seedLength := len(buf) / WordSize * WordSize for i := 0; i < KeySize; i++ { r.Key[i] = binary.LittleEndian.Uint32(buf[i*4:]) } //Generate r.Sub r.Sub[0] = 0xB7E15163 for i := 1; i < SubSize; i++ { r.Sub[i] = r.Sub[i-1] - 0x61C88647 } //Generate key vector var a, b uint32 var i, j int for x := 0; x < 3*SubSize; x++ { r.Sub[i] = bits.RotateLeft32(r.Sub[i]+(a+b), 3) a = r.Sub[i] r.Key[j] = bits.RotateLeft32(r.Key[j]+(a+b), int(a+b)) b = r.Key[j] i = (i + 1) % SubSize j = (j + 1) % KeySize } } func (r *RC5) Encrypt(dst, src []byte) { length := len(src) / 8 if (len(src) % 8) > 0 { length = length + 1 } copy(dst, src) for word := 0; word < length; word++ { a := binary.LittleEndian.Uint32(dst[8*word:]) + r.Sub[0] b := binary.LittleEndian.Uint32(dst[(8*word + 4):]) + r.Sub[1] for round := 1; round <= Rounds; round++ { a = bits.RotateLeft32(a^b, int(b)) + r.Sub[2*round] b = bits.RotateLeft32(b^a, int(a)) + r.Sub[2*round+1] } binary.LittleEndian.PutUint32(dst[8*word:], a) binary.LittleEndian.PutUint32(dst[8*word+4:], b) } } func (r *RC5) Decrypt(dst, src []byte) { length := len(src) / 8 if (len(src) % 8) > 0 { length = length + 1 } copy(dst, src) for word := 0; word < length; word++ { a := binary.LittleEndian.Uint32(dst[8*word:]) b := binary.LittleEndian.Uint32(dst[(8*word)+4:]) for round := Rounds; round > 0; round-- { b = bits.RotateLeft32(b-r.Sub[2*round+1], -int(a)) ^ a a = bits.RotateLeft32(a-r.Sub[2*round], -int(b)) ^ b } binary.LittleEndian.PutUint32(dst[8*word:], a-r.Sub[0]) binary.LittleEndian.PutUint32(dst[8*word+4:], b-r.Sub[1]) } } func BlockSize() int { return 8 }
  25. W1cked

    Go RC5 Cipher Problems

    Using your Comet source I was able to get the Decrypt up and running! Thank you. Question about the Encrypt though. It appears that L112 will throw an OutofRange exception. https://gitlab.com/spirited/comet/blob/master/src/Comet.Network/Security/RC5.cs#L112 Is there a reason why dst is made into a new byte array an eight of the size of the src array?
  26. Spirited

    Go RC5 Cipher Problems

    It looks like this line of your seed generator may be wrong. c.mKey[z] = uint32(seed[z]) Should probably be: c.mKey[z] = uint32(seed[z * 4]) Here's another reference from one of my C# projects, if it helps: https://gitlab.com/spirited/comet/blob/master/src/Comet.Network/Security/RC5.cs https://gitlab.com/spirited/comet/blob/master/src/Comet.Core/Mathematics/Rotations.cs
  1. Load more activity
×

Important Information

By using this site, you agree to our Terms of Use.