Jump to content

Konichu

Member
  • Posts

    138
  • Joined

  • Last visited

Everything posted by Konichu

  1. I'm confused, did this source ever target v5103? World Conquer V2 server has been released on 5103 and then has been upgraded to 5517, but I made the release of the 5517 version after I close the server. I don't have any backup of that age. Edit: I found a backup from december, not sure how complete it is but was the DB that I used in the 5103 server. AFAIR 5517 has been the new year update, then it may be fairly complete. * Do not release it in epvp or anywhere, if I'm going to release anything else in the future it will be exclusively for cooldown. cq 201612150715.7z Backup from december, I removed user data.
  2. You can download the latest client from the list and upgrade it manually using the mirrored or official patches. The official clients also work, so feel free to download official ones around that version as well. Thanks. I have tried this way but it seems lot of patches are missing , TQ storage is errmm.... Maybe it's not missing. They sometimes just jump numbers (like from 5350 to 5500) or if there are versions missing it's because they messed up something.
  3. afaik you just need to send them back. Most sources out there handle the login sequence loading everything in one step. I don't have that problem at my 5838 source. I'll leave here my MsgAction sequence. case ActionType.LoginSpawn: // 74 { if (user == null) { return; } Identity = user.Identity; if (user.IsOfflineTraining) { user.MapIdentity = 601; user.X = 61; user.Y = 54; } GameMap targetMap = MapManager.GetMap(user.MapIdentity); if (targetMap == null) { await user.SavePositionAsync(1002, 300, 278); client.Disconnect(); return; } Command = targetMap.MapDoc; X = user.X; Y = user.Y; await user.Statistic.InitializeAsync(); await user.TaskDetail.InitializeAsync(); async Task enterMapPartitionTask() { await user.EnterMapAsync(); await GameAction.ExecuteActionAsync(1000000, user, null, null, ""); if (user.VipLevel > 0) { await user.SendAsync( string.Format(Language.StrVipNotify, user.VipLevel, user.VipExpiration.ToString("U")), TalkChannel.Talk); } await user.SendAsync(this); if (user.Life == 0) { await user.SetAttributesAsync(ClientUpdateType.Hitpoints, 10); } } Kernel.Services.Processor.Queue(targetMap.Partition, enterMapPartitionTask); // sends the current player from Partition 0 the proper partition break; } case ActionType.LoginInventory: // 75 { await user.UserPackage.InitializeAsync(); await user.UserPackage.SendAsync(); await user.SendDetainRewardAsync(); await user.SendDetainedEquipmentAsync(); await user.SendAsync(this); break; } case ActionType.LoginRelationships: // 76 { foreach (DbFriend dbFriend in await FriendRepository.GetAsync(user.Identity)) { var friend = new Friend(user); await friend.CreateAsync(dbFriend); user.AddFriend(friend); } await user.SendAllFriendAsync(); foreach (DbEnemy dbEnemy in await EnemyRepository.GetAsync(user.Identity)) { if (dbEnemy.TargetIdentity == user.Identity) { await ServerDbContext.DeleteAsync(dbEnemy); continue; } var enemy = new Enemy(user); await enemy.CreateAsync(dbEnemy); user.AddEnemy(enemy); } await user.SendAllEnemiesAsync(); if (user.MateIdentity != 0) { Character mate = RoleManager.GetUser(user.MateIdentity); if (mate != null) { await mate.SendAsync(user.Gender == 1 ? Language.StrMaleMateLogin : Language.StrFemaleMateLogin); } } await user.LoadGuideAsync(); await user.LoadTradePartnerAsync(); await user.PkStatistic.InitializeAsync(); await user.SendAsync(this); break; } case ActionType.LoginProficiencies: // 77 { await user.WeaponSkill.InitializeAsync(); await user.WeaponSkill.SendAsync(); await user.AstProf.InitializeAsync(); await user.Fate.InitializeAsync(); await user.JiangHu.InitializeAsync(); await user.Achievements.InitializeAsync(); await user.SendAsync(this); break; } case ActionType.LoginSpells: // 78 { await user.MagicData.InitializeAsync(); await user.SendAsync(this); break; } case ActionType.LoginGuild: // 97 { client.Character.Syndicate = SyndicateManager.FindByUser(client.Identity); await client.Character.SendSyndicateAsync(); if (client.Character.Syndicate != null) { await client.Character.Syndicate.SendRelationAsync(client.Character); } await client.Character.LoadFamilyAsync(); await user.SendAsync(this); break; } case ActionType.LoginComplete: // 251 { if (user.SendFlowerTime == null || int.Parse(DateTime.Now.ToString("yyyyMMdd")) > int.Parse(user.SendFlowerTime.Value.ToString("yyyyMMdd"))) { await user.SendAsync(new MsgFlower { Mode = user.Gender == 1 ? MsgFlower.RequestMode.QueryFlower : MsgFlower.RequestMode.QueryGift, RedRoses = 1 }); } await user.SendAsync(new MsgAction { Action = ActionType.ShowType, Identity = user.Identity, Command = user.CurrentLayout }); await user.SendAsync(new MsgHangUp { Param = 341 }); await user.SynchroAttributesAsync(ClientUpdateType.Hitpoints, user.Life); await user.SynchroAttributesAsync(ClientUpdateType.Mana, user.Mana); if (user.JiangHu.HasJiangHu) { await user.JiangHu.SendTalentAsync(); } await user.CheckPkStatusAsync(); await user.SendNobilityInfoAsync(); await user.LoadStatusAsync(); await user.SendMultipleExpAsync(); await user.SendBlessAsync(); await user.SendLuckAsync(); await user.SendMerchantAsync(); await user.MailBox.InitializeAsync(); await user.Screen.SynchroScreenAsync(); await user.LoadTitlesAsync(); await PigeonManager.SendToUserAsync(user); if (!user.IsUnlocked()) { await user.SendAsync(new Msg2ndPsw { Password = 0x1, Action = Msg2ndPsw.PasswordRequestType.CorrectPassword }); } await user.SendAsync(this); break; }
  4. Must be easier (or cheaper) if you just take a high version client with the stuff you want and remove the systems you don't want.
  5. The version that you like (around 5600) does have the progress bar feature. await user.SendAsync(new MsgAction { Action = ActionType.ProgressBar, Identity = user.Identity, Command = (uint)unknown, Direction = 1, // yes, fixed MapColor = (uint)seconds, Strings = new List<string> { message } }); Action Type: 164 Encode: using var writer = new PacketWriter(); writer.Write((ushort)PacketType.MsgAction); writer.Write(Environment.TickCount); // 4 writer.Write(Identity); // 8 writer.Write(Command); // 12 writer.Write(Argument); // 16 writer.Write(Timestamp); // 20 writer.Write((ushort)Action); // 24 writer.Write(Direction); // 26 writer.Write(X); // 28 writer.Write(Y); // 30 writer.Write(Map); // 32 writer.Write(MapColor); // 36 writer.Write((byte)0); // 40 writer.Write(Strings); // 41 return writer.ToArray();
  6. This is what I got so far. Wish the client had more clues but I still could not find them yet. [Client 5838] [Flags] public enum MapTypeFlag : ulong { Normal = 0, PkField = 0x1, //0x1 1 ChangeMapDisable = 0x2, //0x2 2 RecordDisable = 0x4, //0x4 4 PkDisable = 0x8, //0x8 8 BoothEnable = 0x10, //0x10 16 TeamDisable = 0x20, //0x20 32 TeleportDisable = 0x40, // 0x40 64 GuildMap = 0x80, // 0x80 128 PrisonMap = 0x100, // 0x100 256 WingDisable = 0x200, // 0x200 512 Family = 0x400, // 0x400 1024 MineField = 0x800, // 0x800 2048 CallNewbieDisable = 0x1000, // 0x1000 4098 RebornNowEnable = 0x2000, // 0x2000 8196 NewbieProtect = 0x4000, // 0x4000 16392 ArenicMap = 0x200000, DoublePkMap = 0x400000, RaceTrackMap = 0x2000000, FamilyArenicMap = 0x8000000, FactionPkMap = 0x10000000, EliteMap = 0x20000000, TeamPkArenicMap = 0x100000000, TeamArenaMap = 0x2000000000, BattleEffectLimitMap = 0x4000000000, TeamPopPkMap = 0x8000000000, NoExpMap = 0x10000000000, GoldenLeagueAdditionLevelLimit = 0x20000000000, ForbidCampMap = 0x100000000000, GoldenLeagueMap = 0x200000000000, JiangHuMap = 0x400000000000 } Thread may be closed ^^
  7. I have those already :/ But no newer source has the new ones. I don't want to rely on checking map IDs for event related stuff.
  8. Hello :] I said I was quiting the World of Conquer but here I am again. I am currently working with client 5838 and having no issues at all, my repository will be open at some point in time again, but for now I'm developing it in secret. I am currently looking forward handling everything as they're meant to be handled and I'm stuck with something. I've been trying to figure out the map type flags. No public sources handle them properly (they have a lot of if and elses checking for map IDs to know which map allows the user to do something), but due to the latest version of `cq_map` that has been released some time ago I've been trying to handle the Map flags from Qualifiers and Events (ElitePK, TeamPK, SkillTeamPK etc). But this is what I do have so far :( Anybody has gone any further? After some research while reverse enginering the Conquer client (MAC 1260 ~ >5388) I've got some new map types :] 0xE8 = byte 0 1 0x1 -> PK Field OK 2 0x2 -> Change Map Disable??? 3 0x4 -> Record Disable??? 4 0x8 -> PK Disable OK 5 0x10 -> Booth Enable OK 6 0x20 -> Team Disable ??? 7 0x40 -> Teleport Disable OK 8 0x80 -> Syn Map OK 0xE9 = byte 1 9 0x100 -> Prison Map OK 10 0x200 -> Wing Disable ??? 11 0x400 -> Family Map ??? 12 0x800 -> Mine Field 13 0x1000 -> Call newbie disable 14 0x2000 -> Reborn now enable 15 0x4000 -> Newbie protect 16 0x8000 0xEA = byte 2 17 0x10000 18 0x20000 19 0x40000 20 0x80000 21 0x100000 22 0x200000 23 0x400000 -> Double PK Map 24 0x800000 0xEB = byte 3 25 0x1000000 26 0x2000000 -> Race Track Map 27 0x4000000 28 0x8000000 -> Family Arenic Map 29 0x10000000 -> Faction PK Map 30 0x20000000 -> Elite Map 31 0x40000000 32 0x80000000 0xEC = byte 4 33 0x100000000 -> Team PK Arenic Map 34 0x200000000 35 0x400000000 36 0x800000000 37 0x1000000000 38 0x2000000000 -> Team Arena Map 39 0x4000000000 -> Battle Effect Limit Map 40 0x8000000000 -> Team Pop PK Map 0xED = byte 5 41 0x10000000000 -> No Exp Map 42 0x20000000000 -> Golden League Addition Level Limit (AddLev: 4, Socket: 1, Gem: 1, Peerage: 5, SubPro: 5) 43 0x40000000000 44 0x80000000000 45 0x100000000000 -> Forbid Camp Map 46 0x200000000000 -> Golden League Map 47 0x400000000000 -> Jiang Hu Map 48 0x800000000000 0xEF = byte 6 49 0x1000000000000 50 0x2000000000000 51 0x4000000000000 52 0x8000000000000 53 0x10000000000000 54 0x20000000000000 55 0x40000000000000 56 0x80000000000000 0xF0 = byte 7 57 0x100000000000000 58 0x200000000000000 59 0x400000000000000 60 0x800000000000000 61 0x1000000000000000 62 0x2000000000000000 63 0x4000000000000000 64 0x8000000000000000 I'll keep updating the thread as I get more confirmed types.
  9. I'm filtering some packets that doesn't change world states and they're processed in the socket processor. The rest of them are queued into the world processor.
  10. Which version of Redux? Couldn't find the handler. On 3.05 it does handle by type, afair it does use type 12 (Collide) and it's not handled in that version
  11. Ok, that's something you know that I'll be working on it lol it looks pretty good. Of course I'll keep the credits, thank you Gareth, this looks amazing
  12. Glad to see that it helped! There aren't much info about 5187 out there too lol after a lot of trial and error and by looking at higher version sources I managed to get all those offsets. Tho it still incomplete for some packets it's much better than anything out there. I plan on making higher versions of the sources too, so I may try to get all offsets from 5250, 5350, 5517 and others. And also 5187 is much better than 5165 in many ways since you want to use Steeds and clans. Even the guild system is better for management and you can use it like the old one if you wish, just by not distributing all positions and battle power. My Guild and Family system is pretty much complete so you can use it as reference.
  13. Also taking a look into my comet implementation that is v5180 would be good. Most sources out there implement only the basic offsets and I've been working to make it complete, making use of all systems and offsets. Then only by taking a look at the members order you'll be able to get other offsets. I usually do my researchs looking ~5165 and ~5250 sources so I can guess offsets easily. https://gitlab.com/felipevendramini/comet/-/blob/master/src/Comet.Game/Packets/MsgPlayer.cs
  14. Are you using this? https://gitlab.com/felipevendramini/comet/-/blob/master/src/Comet.Game/Packets/MsgPlayer.cs I'm trying my best to make it complete xD
  15. It also exports to C3? Sorry for asking, I haven't downloaded, just thought it would be an interesting question. I'm an awful designer and modeler anyway xD
  16. I've been reading articles about it, including yours and I'm back in business. I'm trying to recode carefully the way that the server handles its world.
  17. The current checkin does have Clans and Clan war fully working even with the Family BP on team. Movement has been queued to run on map processing to avoid thread lock problems. (not tested yet tho)
  18. I would like to help with that, can you give me more details about what the problem is and where is it in the code? The problem is a deadlock. Where? Who know?
  19. It's a complete failure, thread may be closed. I don't deserve oppening a server. Server will remain open for a few months because I paid it for a long while, but it doesn't really have players. I aint closing it. @Spirited
  20. Reference Since on another forum somebody said that my server has failed in less than two months due to a socket bug (that I caused trying to fix another socket bug), I'm going to release this. Version 5187 with features. Has many systems working properly and I was willing to learn async/await pattern with this but I probably failed. I'm opening the code and except for the thread lock issue the server is fine. Don't run it on a live server unless you fix the thread race issue. Handled packets :] public enum PacketType : ushort { MsgRegister = 1001, MsgTalk = 1004, MsgUserInfo = 1006, MsgItemInfo = 1008, MsgItem = 1009, MsgName = 1015, MsgWeather, MsgFriend = 1019, MsgInteract = 1022, MsgTeam = 1023, MsgAllot = 1024, MsgWeaponSkill = 1025, MsgTeamMember = 1026, MsgGemEmbed = 1027, MsgData = 1033, MsgTrade = 1056, // MsgAccount = 1051, MsgConnect = 1052, MsgConnectEx = 1055, MsgSynpOffer = 1058, MsgEncryptCode = 1059, MsgDutyMinContri = 1061, MsgAccount = 1086, MsgPCNum = 1100, MsgMapItem = 1101, MsgPackage = 1102, MsgMagicInfo = 1103, MsgFlushExp = 1104, MsgMagicEffect = 1105, MsgSyndicateAttributeInfo = 1106, MsgSyndicate = 1107, MsgItemInfoEx = 1108, MsgNpcInfoEx = 1109, MsgMapInfo = 1110, MsgMessageBoard = 1111, MsgSynMemberInfo = 1112, MsgTitle = 1130, MsgTaskStatus = 1134, MsgTaskDetailInfo = 1135, MsgFlower = 1150, MsgRank = 1151, MsgFamily = 1312, MsgFamilyOccupy = 1313, MsgNpcInfo = 2030, MsgNpc = 2031, MsgTaskDialog = 2032, MsgFriendInfo = 2033, MsgDataArray = 2036, MsgTrainingInfo = 2043, MsgTraining = 2044, MsgTradeBuddy = 2046, MsgTradeBuffyInfo = 2047, MsgEquipLock = 2048, MsgPigeon = 2050, MsgPigeonQuery = 2051, MsgPeerage = 2064, MsgGuide = 2065, MsgGuideInfo = 2066, MsgGuideContribute = 2067, MsgQuiz = 2068, MsgFactionRankInfo = 2101, MsgSynMemberList = 2102, MsgTotemPoleInfo = 2201, MsgWeaponsInfo = 2202, MsgTotemPole = 2203, MsgQualifyingInteractive = 2205, MsgQualifyingFightersList = 2206, MsgQualifyingRank = 2207, MsgQualifyingSeasonRankList = 2208, MsgQualifyingDetailInfo = 2209, MsgArenicScore = 2210, MsgWalk = 10005, MsgAction = 10010, MsgPlayer = 10014, MsgUserAttrib = 10017 } Server: https://gitlab.com/felipevendramini/comet Database: https://mega.nz/file/fVBnDYaC#B2jwHIjpRPFHqWZpmBj3A_1isV_F_oVHQRfZmYFrWUY
  21. What I know until now is that you want to edit a Server.dat from 5065 which is actually decrypted (it starts to be encrypted after 5066 afaik) and the only thing that must block you from signing in is the IP issue, which you cannot use any local IP at all. You can google "Override Server.dat checks" since I aint linking another forum here.
  22. 5065 still uses decrypted server.dat, why do you need it from another client? You must remind that you cannot use 127.0.0.1 as your IP on the gameserver or server.dat. On higher versions it would crash the client, but on that one it'll show the server.dat error message
  23. Sorry XD didn't see it before. Thank you Adrian :D We've been covering each other for a long while tho haha
  24. 1 per line alright? :D I wanted that code status to make mine works xD Thank you
  25. Yes, I'm building it as x86 and the injector too. I changed the code and now it works! :D int read = 0; SIZE_T bytes_read = 0, bytes_written = 0; if (ReadProcessMemory(hProcess, BASE_W_ADDR, &read, 4, &bytes_read) || GetLastError() == ERROR_PARTIAL_COPY) { if (bytes_read == 0) MessageBoxA(NULL, "Could not get width memory offset.", "ReadProcessMemory error", MB_OK); if (!WriteProcessMemory(hProcess, BASE_W_ADDR, &width, 4, &bytes_written)) { sprintf_s(msg, "Error writing to memory! %d", GetLastError()); MessageBoxA(NULL, msg, "WriteProcessMemory error", MB_OK); } /*sprintf_s(msg, "Width edited with success! :D NewX: %d Old X: %d", width, read); MessageBoxA(NULL, msg, "Success?", MB_OK);*/ } This made the job :] Thank you
×
×
  • Create New...