Jump to content

Berniemack

Member
  • Posts

    23
  • Joined

  • Last visited

Reputation

10 Good

Personal Information

  • Pronouns
    he/him

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

  1. Wow, I'm genuinely surprised AI was able to get you this far. I'll be following this vibe project out of pure intrigue of how far you get this way. GL
  2. Shoulda kept this hidden talent hidden king
  3. I'm actually working on that, should have something worth releasing sometime this year, all depending on life work and my kid lol (specifically working on a 5517 client, and a older version of an andriod client).
  4. Lol at the hubris. buddy youre acting like you had made some massive breakthrough and people were rallying to go check out your ugly vc ui lmfao. Its not a rare feature because its incredibly difficult or something, its because its niche... how many people actually would want this feature? and out of the people that would want it who would even get to fully utilize it in the era of conquer that we live in today? Its cute, its novel, its interesting, its cool... but thats it. You really think one of your 12 players (really 4 guys with multiple accounts) showed up just to try to copy your vc feature?
  5. Interesting, I'll update my thread some time this week with my changes I wonder if my client ive been using had that change before i got it or if the code is backwards compatible? I basically do exactly that to not have to relogin on character creation on 5517. I wasnt running into that issue op was, I just wanted to see if i could skip that re log on creation, so probably just coincidental
  6. It's an interesting discussion to be had for sure, I have no real skin in this game, and dont really care as deeply about that side of things as others seem to online. I want to preface that I am not making an argument pro or contrary to anything, simply sharing my 2 cents. 1) I just dont get how this works haha, how does someone open source something and then someone else sells the same thing? If its open why wouldnt people just download and use the open source stuff? (if the answer is people are stupid well thats just capitalism isnt it? If im giving away fruit and some guy comes grabs them opens up a shop next to me selling them packaged or something I cant be mad at him) I do open source because I have a job, that pays my bills and living. I dont need what I work on for my own personal enjoyment/development/growth to generate me money. If someone else out there does, and can why do I care? If I wanted to make money from it and not them I wouldnt make it open source? I just dont get where heads are butting here. 2) The community is dead because it was a niche game at its peak, and even at the start it was always based on greed (literally every top server ever was just a "here guys you can actually afford to max your items here cause its $80 for a bulk pack instead of $200") also in regards to "If you share anything openly its just like bringing more and more of potential scammers into the domain." I mean yes but this is data bias... The open source isnt what makes the "scammers" viable, its opposite. They are viable because all they do is present a simple way to get all of this together for a buyer that doesnt know how to or doesnt want to do the work of gathering it all themselves from whats already freely out there. If it was all easily accessible they wouldnt have a job or a "service" to provide.
  7. Yup was just coming here to say this as well. this is what I currently do in my 5517, no re login or dc.
  8. Absolute Chad, thanks for sharing!
  9. I am indeed leaning into the generic host + BackgroundService pattern but only for LoginHandshakeService, GameHandshakeService, ConnectionWorker and im currently experimenting with an ExperienceService but im not really liking how I have that set up (no real reason other than I feel like there probably is a better way to do what im currently doing with it). Everything else is regular old DI, Parsers and handlers are discovered through assembly scanning. So far I dont have any complaints, I do have to say this is my introduction to game server development as a whole, so I dont know if i can really recommend anything to anyone, other than say so far for me it fits my needs. I really probably should read more into the topic and see more about why things are done a certain way in other game servers. Thank you!
  10. Thank you! Haven't updated in a bit but I'm still hard at work at this whenever I can get the time to work on it. Will update the thread when I get some time today to update the repo. (Mostly refactoring changes still "stuck" on the dhkey exchange, really I've mostly just so happened to have shifted focus on working on another part of this project).
  11. Thanks for the suggestions! Just using MySQL, any PostgresSQL stuff is just uncleaned up code from playing around with ideas. The reason for the appsettings.shared.json is I was toying around with separating some things that I plan on putting in a regular appsettings.json. May not end up doing that at all though so, It may end up just being an appsettings.json in the end. Will definitely look into disabling tracking, and possibly using a globals file, I'll see if I like it for this. Again thank you for taking the time to look at my project and give me some kind feedback! I will be updating the repo at some point today
  12. Its not currently playable, I'd guess the error youre facing is the missing appsettings.shared.json, since you didnt give me the error you got just the program.cs file. Either way, I wouldnt expect much progress on this for a few more months. Life things, plus I've shifted partial focus to trying to deob the client to release along with this if I can, if not hopefully some useful tools or info comes out of it at least. Feel free to dm me if you have specific issues with at least building the project I'll try to help you get set up. Although I do remember there were other errors at some point in time with my with my AddScoped's, I'll update the repo this weekend, here's what I currently have using Microsoft.EntityFrameworkCore; using OpenConquer.Domain.Contracts; using OpenConquer.GameServer; using OpenConquer.GameServer.Calculations.Implementation; using OpenConquer.GameServer.Calculations.Interface; using OpenConquer.GameServer.Dispatchers; using OpenConquer.GameServer.Handlers; using OpenConquer.GameServer.Queues; using OpenConquer.GameServer.Session.Managers; using OpenConquer.GameServer.Workers; using OpenConquer.Infrastructure.Mapping; using OpenConquer.Infrastructure.Persistence.Context; using OpenConquer.Infrastructure.POCO; using OpenConquer.Infrastructure.Services; using OpenConquer.Protocol.Crypto; using OpenConquer.Protocol.Packets.Parsers; using OpenConquer.Protocol.Utilities; HostApplicationBuilder builder = Host.CreateApplicationBuilder(args); builder.Configuration.SetBasePath(AppContext.BaseDirectory).AddJsonFile("appsettings.shared.json", optional: false, reloadOnChange: true).AddJsonFile("appsettings.json", optional: true, reloadOnChange: true).AddEnvironmentVariables(); builder.Services.Configure<NetworkSettings>(builder.Configuration.GetSection("Network")); builder.Services.AddDbContextFactory<DataContext>(opts => opts.UseMySql(builder.Configuration.GetConnectionString("Default"), new MySqlServerVersion(new Version(8, 0, 36)))); MapsterConfig.RegisterMappings(); builder.Services.Scan(scan => scan.FromAssemblyOf<IPacketParser>().AddClasses(c => c.AssignableTo<IPacketParser>()).AsImplementedInterfaces().WithSingletonLifetime()); builder.Services.AddSingleton<PacketParserRegistry>(); builder.Services.Scan(scan => scan.FromAssemblyOf<PacketDispatcher>().AddClasses(c => c.AssignableTo(typeof(IPacketHandler<>))).AsImplementedInterfaces().WithTransientLifetime()); builder.Services.AddScoped<IAccountService, AccountService>(); builder.Services.AddScoped<ICharacterService, CharacterService>(); builder.Services.AddSingleton<ILevelStatService, LevelStatService>(); builder.Services.AddSingleton<UserManager>(); builder.Services.AddSingleton<WorldManager>(); builder.Services.AddSingleton<PacketDispatcher>(); builder.Services.AddSingleton<ExperienceService>(); builder.Services.AddSingleton<IExperienceService>(sp => sp.GetRequiredService<ExperienceService>()); builder.Services.AddHostedService(sp => sp.GetRequiredService<ExperienceService>()); builder.Services.AddSingleton<ConnectionQueue>(); builder.Services.AddHostedService<ConnectionWorker>(); builder.Services.AddHostedService<GameHandshakeService>(); IHost host = builder.Build(); host.Run(); for the appsettings file just make it and put it in your debug folder { "Network": { "LoginPort": 9959, "GamePort": 5816, "ExternalIp": "" }, "ConnectionStrings": { "Default": "Server=localhost;Port=3306;Database=openco;User=root;Password=;" } }
  13. seems like they do use this https://gitlab.com/conquer-online/servers/cops-v6-emulator-enhanced-edition/-/blob/master/MsgServer/Database/DBI/MongoDB.cs?ref_type=heads Youll have to check what actually drives that though to see if you need it or not
  14. I figured it out in case any one was wondering or stumbles into this in the future, despite albetros saying that the auth response packet length should be 54 bytes on the wire they actually only write 36, changed my length from 54 to 36 and now were cooking again boys! So note to anyone in the future working on a 5517 server the auth response packet length should be 36
  15. Heres an example of me pinging the gameserver so I know its listening and receiving the client is just never reaching out to it properly for some reason. info: Microsoft.EntityFrameworkCore.Database.Command[20101] Executed DbCommand (8ms) [Parameters=[], CommandType='Text', CommandTimeout='30'] SELECT `l`.`profession`, `l`.`level`, `l`.`Agility`, `l`.`Health`, `l`.`Mana`, `l`.`Spirit`, `l`.`Strength`, `l`.`Vitality` FROM `LevelStats` AS `l` ORDER BY `l`.`profession`, `l`.`level` info: Microsoft.EntityFrameworkCore.Database.Command[20101] Executed DbCommand (3ms) [Parameters=[], CommandType='Text', CommandTimeout='30'] SELECT `e`.`curve_type`, `e`.`level`, `e`.`experience` FROM `ExperienceCurves` AS `e` ORDER BY `e`.`curve_type`, `e`.`level` info: OpenConquer.GameServer.Calculations.Implementation.ExperienceService[0] ExperienceService initialized: loaded 720 level-stat entries across 6 professions, 141 curve entries info: OpenConquer.GameServer.GameHandshakeService[0] GameHandshakeService listening on port 5816 info: Microsoft.Hosting.Lifetime[0] Application started. Press Ctrl+C to shut down. info: Microsoft.Hosting.Lifetime[0] Hosting environment: Development info: Microsoft.Hosting.Lifetime[0] Content root path: D:\repos\OpenConquer\OpenConquer.GameServer info: OpenConquer.GameServer.GameHandshakeService[0] Accepted game connection from redacted:53377 fail: OpenConquer.GameServer.GameHandshakeService[0] Error during game handshake for redacted:53377 System.InvalidOperationException: Unable to resolve service for type 'OpenConquer.Protocol.Packets.Parsers.PacketParserRegistry' while attempting to activate 'OpenConquer.GameServer.Session.GameClientSession'. at Microsoft.Extensions.DependencyInjection.ActivatorUtilities.ConstructorMatcher.CreateInstance(IServiceProvider provider) at Microsoft.Extensions.DependencyInjection.ActivatorUtilities.CreateInstance(IServiceProvider provider, Type instanceType, Object[] parameters) at Microsoft.Extensions.DependencyInjection.ActivatorUtilities.CreateInstance[T](IServiceProvider provider, Object[] parameters) at OpenConquer.GameServer.GameHandshakeService.HandleClientAsync(TcpClient client, CancellationToken ct) in D:\repos\OpenConquer\OpenConquer.GameServer\GameHandshakeService.cs:line 65 info: OpenConquer.GameServer.GameHandshakeService[0] Closed game connection for redacted:53377 it would expect to error out as I am building it out to expect specific packets only (i'll flesh that out to swallow invalid packets or something properly later) but this shows that the code on the gameserver is working as I expect it to, if the darn client would just send it a packet.
×
×
  • Create New...