-
Posts
181 -
Joined
-
Last visited
Content Type
Profiles
Forums
Downloads
Store
Everything posted by Konichu
-
Depending on the version, you'll need to find the proper offset. But you need to send your ID on UID and the SHOP NPC ID on another field, on mine its called Command. If UID offset is 4, Command is offset 8 case ACTION_CREATE_BOOTH: // 111 { if (!user->GetMap()->IsBoothEnabled()) { return; } if (!user->CreateBooth(info->x, info->y, info->dir % MAX_DIRSIZE)) return; info->command = user->GetBooth()->GetId(); info->x = user->GetBooth()->GetMapX(); info->y = user->GetBooth()->GetMapY(); user->Send(*this); user->SetPose(POSE_SIT, true); user->SetDir(6, true); break; }
-
question Question about bonuses from composed (+) equipment
Konichu replied to sunwave's topic in Conquer Online
Its basically like this, you're looking for the key value. uint64_t ItemManager_::AdditionKey(uint32_t type, uint8_t level) { const uint32_t subType = type / 1000; const ITEMSORT sort = Item::GetItemSort(type); uint32_t key; if (sort == ITEMSORT_WEAPON_SINGLE && subType != 421 && subType < 601) { // Single-hand weapons (non-special): normalize within 100k block + 44xxx slot key = type / 100000 * 100000 + type % 1000 + 44000 - type % 10; } else if (sort == ITEMSORT_WEAPON_DOUBLE && !Item::IsBow(type)) { // Double-hand non-bow weapons: normalize within 100k block + 55xxx slot key = type / 100000 * 100000 + type % 1000 + 55000 - type % 10; } else { // All other items: strip quality/plus digits, keep base + grade key = type / 1000 * 1000 + (type % 1000 - type % 10); } return static_cast<uint64_t>(key) | (static_cast<uint64_t>(level) << 32); } -
question [v6609] Flower Fairy Suit in Flower ranking is not displaying
Konichu replied to xFranko's topic in Conquer Online
Actually it might be related to the crypto. The server.dat crypto is shared between multiple files, I never tried to fix it but you may take a look where the crypto is used and if it has something to do with transformations. -
question [v6609] Flower Fairy Suit in Flower ranking is not displaying
Konichu replied to xFranko's topic in Conquer Online
I had this problem once and it was the loader. No transformations would work at all. Just change your loader or find out what operation are u doing in memory that is messing the transformations. -
[Source 6609] How to change the default active tab in Forging UI
Konichu replied to NourSoliman's topic in Conquer Online
If you know the MsgAction::ACTION_OPEN_DIALOG Window ID, you can open it and switch tabs. I just don't know if it will work perfectly, but it will work -
you need to initialize it with MsgHangUp on login
-
[6609] What is the packet for flower and kiss ranking?
Konichu replied to xFranko's topic in Conquer Online
For 6609 MsgSuitStatus.csMsgRank.csMsgRankMemberShow.csMsgFlower.cs -
I will test it in my 6609 server, but I dnt remember this problem. As soon as I test I will put a feedback here
-
I was working on 6609 and it was OK, I dont remember having this kind of problem. Do you use any launcher? Did you try with a different one? Maybe your launcher broke some memory addresses. This was my packet: using Long.Network.Packets; using static Long.Kernel.Network.Game.Packets.MsgInteract; namespace Long.Kernel.Network.Game.Packets; public sealed class MsgMagicEffect : MsgBase<GameClient> { public override byte[] Encode() { using PacketWriter writer = new(); writer.Write((ushort)PacketType.MsgMagicEffect); writer.Write(AttackerIdentity); // 4 writer.Write(MapX); // 8 writer.Write(MapY); // 10 writer.Write(MagicIdentity); // 12 writer.Write(MagicLevel); // 14 writer.Write(NextMagic); // 16 writer.Write(MagicSoul); // 18 if (Count != 0) { writer.Write((byte)Count); // 19 } else { writer.Write((byte)(Count = (uint)Targets.Count)); // 19 } writer.Write(Unknown); // 20 foreach (MagicTarget target in Targets) { writer.Write(target.Identity); // 24+ 0 writer.Write(target.Damage); // 4 writer.Write(target.Disdain); // 8 writer.Write(target.Effect); // 12 writer.Write(target.EffectValue); // 16 writer.Write(target.X); // 20 writer.Write(target.Y); // 24 writer.Write(target.HideDamage); // 28 } return writer.ToArray(); } }
-
Character models and animations are kinda fun on latest patch. If you have the knowledge and tools you can create a classic server with it. You can sell cosmetics so players can wear classic weapons and armors as garments and remove a lot of stuff just by setting up LUA files on the client. There is a huge variety of garments and cosmetics which make the screen blow up old computers, but also you wont have 300 players wearing the same stuff. You can easily create a lot of custom stuff using LUA so you don't rely on injecting stuff to screen. Patch 6609 is the last 2.0 patch and it's a very good patch to work on. You still have the Mac client so you can reverse packets and stuff and it's has a lot of good stuff already and no flash issues. I also dont know exactly the use of the gems, but it's worth to mention that the new GW went to CO on 7150.
-
I had this issue until 6270, on 6609 and latest client I didn't experience that. It would happen after killing a lot of monsters on auto hunt, until client is like at 3-4 FPS lol It must be something with TQ code not disposing of screen objects properly or the launcher injection messed up something, but it's of course client related since upgrading the client version fixed it (or at least I havent experienced it again yet).
-
You are probably setting the subclass flag field in MsgUserInfo with something and that's not like "All newly created characters automatically start with a Sub-Class at level 1", it's just visual since your MsgPlayerAttribInfo is saying that the user has only the normal HP. You're just looking into the wrong place. The "display" status will be set on two places: MsgUserInfo on login MsgSubPro on interactions with the sub class system Just find out which one is setting the wrong value
-
As Spirited said, it need to be patched. Health bars will only be displayed on certain ID range. Also, depending on the version you might need to spam the 10017 packet (unsure) because for some reason instead of calculating from the skill and attack packets, they decided to update the health bar only when he gets the packet.
-
That's right, first encrypted server.dat was on 5078 afair Must be careful with the structure. Most TQ files are read sequentially, so you must respect line breaks and properties order. If you add/remove one more line break, change one property order or w/e, it will break the file read. Localhost IP Address will also break the reading and you need to be careful, if you do not crack the exe for local debugging, any address that is mapped as "loopback" will break or crash it. Original: Edited
-
I would use the latest client if it wasnt for the armor and weapons models where everything looks the same now. But there is a lot of garments and cosmetics as well that may compensate. I love the new guild war (that started at 7150) but I hate the new Arena interface... I just cant have a solid opinion. There is a lot of nice interfaces you can implement to monetize the server (first credit, roulettes, battle pass etc etc), but there is not an apple client to help reversing packets, but ProtoBuf are easy to get structures as well.
-
For the latest versions most functions can be disabled by feature flags and lua scripts on ini folder. (Forge itself you can remove almost everything via LUA), a lots of icons and stuff also can be removed there as well the classes from everywhere (reincarnation, role selection etc). Issue is that you need the new encryption/decryption for those files, since they're all encrypted now.
-
question [v6609] How to add a bridge to the Guild War area map?
Konichu replied to xFranko's topic in Conquer Online
Check your map loading, on 3.0 there are new tile flags for stuff like that, that you must handle. (or your Terrain loading) I have zero issues, running or jumping -
For those too lazy to look for a function to hook to receive packets... constexpr uintptr_t RECV_PACKET_ADDRESS = 0x0073CE61; typedef void*(__cdecl* RecvPacketFunc)(void* data, int len);
-
This thread already have some documentation about it. But you do bitwise operations to check the map flag. Example: /// <summary> /// Checks if the map is a pk field. Wont add pk points. /// </summary> public bool IsPkField() { return Type.HasFlag(MapTypeFlag.PkField); } /// <summary> /// Disable teleporting by skills or scrolls. /// </summary> public bool IsChgMapDisable() { return Type.HasFlag(MapTypeFlag.ChangeMapDisable); } /// <summary> /// Disable recording the map position into the database. /// </summary> public bool IsRecordDisable() { return Type.HasFlag(MapTypeFlag.RecordDisable); } /// <summary> /// Disable team creation into the map. /// </summary> public bool IsTeamDisable() { return Type.HasFlag(MapTypeFlag.TeamDisable); } /// <summary> /// Disable use of pk on the map. /// </summary> public bool IsPkDisable() { return Type.HasFlag(MapTypeFlag.PkDisable); } /// <summary> /// Disable teleporting by actions. /// </summary> public bool IsTeleportDisable() { return Type.HasFlag(MapTypeFlag.TeleportDisable); } /// <summary> /// Checks if the map is a syndicate map /// </summary> /// <returns></returns> public bool IsSynMap() { return Type.HasFlag(MapTypeFlag.GuildMap); } /// <summary> /// Checks if the map is a prision /// </summary> public bool IsPrisionMap() { return Type.HasFlag(MapTypeFlag.PrisonMap); } /// <summary> /// If the map enable the fly skill. /// </summary> public bool IsWingDisable() { return Type.HasFlag(MapTypeFlag.WingDisable); } /// <summary> /// Check if the map is in war. /// </summary> public bool IsWarTime() { return (Flag & 1) != 0; } /// <summary> /// Check if the map is the training ground. [1039] /// </summary> public bool IsTrainingMap() { return Identity == 1039; } /// <summary> /// Check if its the family (clan) map. /// </summary> public bool IsFamilyMap() { return Type.HasFlag(MapTypeFlag.House); } /// <summary> /// If the map enables booth to be built. /// </summary> public bool IsBoothEnable() { return Type.HasFlag(MapTypeFlag.BoothEnable); } /// <summary> /// Check if the map allows user to revive here. /// </summary> /// <returns></returns> public bool IsRebornNowEnable() { return Type.HasFlag(MapTypeFlag.RebornNowEnable); }
-
question [Game Logic] How does the donation system work in Guilds?
Konichu replied to xFranko's topic in Conquer Online
Exploits was earned based on event points. Example, you have earned 350 points from CTF, so you earned 350 exploits, but they had no use at all. 1. It released with a percentual BP for rankings, later it changed to 100% to every position: - From 5180 to around the release of the Dragon Warrior profession, there was a percentual based on the Shared BP. You can check this out here: Guide - Guild Introduction - Features - Conquer Online - Official Site - Later it changed and every position would earn 100% of the Shared BP You can choose. 2. Just need to be from another guild. I just don't know exactly the calculations, but you could award 1-3-5-10 points based on battle power difference 3. Guide donation was always 1. Every level 1 point. -
question [Game Logic] How does the donation system work in Guilds?
Konichu replied to xFranko's topic in Conquer Online
Hey, Found some screenshots from 2013 1. Your total donation 2. Exploit donations once was used for event score, probably TQ planned to use it to make a store or something related to event participation, I remember they were used on Guild Contest, Guild PK and CTF at some point in time but they had no use. 3. PK Donation, Guide Donation, Flower Donation, Arsenal donation are updated as you receive their points. PK Donation increases or decrease when you kill or be killed; Guide donation when you uplevel a Teammate from 1-70; Flower donation when you receive a Flower/Gift; Arsenal score when you inscribe or remove items from guild arsenal. 4. Donation history, it's everyone's total donation, not daily. (afair) 5. Guild ranks are history calculated on current donation. Ranks depend on total accumulated donations over time. All you need to do is hit the daily score and you would achieve, as of: https://gitlab.com/world-conquer-online/canyon/canyon/-/blob/main/src/Canyon.Game/States/Syndicates/Syndicate.cs?ref_type=heads#L287 -
Game version 6559 or similar pre - 3.0 private server.
Konichu replied to VonConnor's topic in Conquer Online
Conquer 3.0 starts at 6610. 6559 for Mac uses the same executable from 6609, I guess it's the latest server update before 3.0 -
Yes, someone is re-creating the client on DX11. I was also trying to achieve something with OpenGL, but aint having time to continue with the project.
-
What version are you using? afaik it's the packet I sent to you. @xFranko MsgDeadMark · Wiki · Conquer Online / Wiki · GitLab