1
Fork 0
mirror of https://github.com/redstrate/Kawari.git synced 2025-07-20 11:47:46 +00:00
Commit graph

359 commits

Author SHA1 Message Date
c339c89c41 Fix various issues with the Lobby packets
Everything should be more consistent now, in regards to "tickets"
and actor ids.
2025-07-13 09:52:00 -04:00
7cfa20052d Remove appearance updates from ZoneConnection::send_inventory
This isn't needed anymore.
2025-07-13 08:47:53 -04:00
b84462fd6f Send equip item updates again
This was lost in the inventory refactoring because it was only
handled by ZoneConnection::send_inventory, but it needs to happen
elsewhere now.
2025-07-13 08:42:56 -04:00
c0daf7b06b Skip sending empty UpdateItems on first login
There's no reason to do this, the client has no pre-existing
inventory state so we're just wasting bytes.
2025-07-13 08:29:45 -04:00
f88d62b80f Remove comment in lobby to investigate other server's KeepAlive
I checked a retail capture, and I think we're doing it correctly
for the chat and zone connection already. They wait until Setup to
send it (so the client is authorized, of course.)
2025-07-13 08:07:25 -04:00
67d01513b1 Begin figuring out various content finder thingies 2025-07-12 20:53:59 -04:00
thedax
45ee95318c
Rename inventory-related opcodes to match Karashiiro/FFXIVOpcodes (#112)
-Implement keyboard turning packet as a no-op so it'll stop clogging server logs

-Finish implementing inventory actions
2025-07-12 17:40:22 -04:00
217ed2466c Fix the API for support desk headlines 2025-07-12 10:11:18 -04:00
c688e93f7c Stop panicking when walking into unused zones lines
Fixes #87
2025-07-12 09:10:17 -04:00
87676bafd7 Allow selecting a service account in the lobby 2025-07-12 08:36:00 -04:00
781fea1e35 Fix Chronofoil capturing not working
This was because Kawari was not seeing the KeepAliveRequest like
the retail Lobby server does, and Chronofoil didn't know what to
do.

Fixes #113
2025-07-11 23:21:18 -04:00
f7c73a14a6 Various fixes to make serving patches work
Only tested against sqexPatch.dll so far, but this helps retail in
general. More correct-looking headers are sent, logging is increased
(to help debugging) and other fixes for boot patch verification.
2025-07-11 21:39:15 -04:00
ade08f9697 Begin implementing navimesh path visualization
It doesn't look quite right - probably because the navmesh
generation is bad. But it's progress!
2025-07-09 22:55:35 -04:00
075a2fea11 Begin testing navmesh queries
The next step is to visualize the navmesh so I know what's going
on!
2025-07-09 21:23:32 -04:00
b6a445cc34 Complete navmesh generation
Still no idea if it's actually correct yet, but the function calls
pass.
2025-07-09 20:37:11 -04:00
5bea7f9b34 Generate more Recast data, start using Detour functions 2025-07-09 20:24:11 -04:00
e929f40e94 Begin building the various bits of Recast navigation
I got it to "work" (not checked, but the calls at least don't fail)
and now it's time to include the detour portion.
2025-07-09 19:17:07 -04:00
e269806248 Begin integrating recastnavigation-sys 2025-07-09 15:58:57 -04:00
85cec9f092 Begin adding zone collision visualization
If you run kawari-navimesh and give it a zone ID, it can now show
you the loaded collision meshes. I only tested it in inn rooms so
far, but already works super well.
2025-07-09 14:59:02 -04:00
20b26377dc Begin logging collision asset paths in naivmesh gen 2025-07-08 23:38:03 -04:00
e26820f777 Begin working on a navimesh generation tool
This just lays the groundwork for processing a zone, given an ID.
2025-07-08 23:33:33 -04:00
d16c2c6583 Allow loading unpacked game files, add unpacking mode
This enables you to subsitute game files with your own more easily,
along with running a server with only a limited amount of game
data.
2025-07-08 22:39:31 -04:00
thedax
17967c9d6a
Attempt to improve the accuracy of a couple things (#105)
Attempt to improve the accuracy of:
-ItemOperation: Now sends back ItemAcknowledgeAck as well as InventorySlotDiscard and *Fin when discarding items
-ClientTrigger::EventRelatedUnk -> send back commonly observed ActorControlSelf responses
2025-07-05 19:05:43 -04:00
cd55653077 Implement necessary packets for the Unending Journey event
This doesn't make cutscenes play *yet*, but stops the client from
getting stuck waiting for a cutscene to begin. Now the event script
continues, and ends the event.
2025-07-04 16:18:39 -04:00
2f1aee9d09 Fill out more unknowns in lobby IPC packets
Mostly based off of Sapphire, but fixed in the more modern age.
2025-07-04 15:40:10 -04:00
24edee6548 Fix various size issues with lobby IPC packets
Some of these were the wrong size, and were affecting both the
server and packet analyzer alike. This should now more accurately
reflect retail.
2025-07-04 15:01:27 -04:00
7ccd132129 Unify version and file checking behind one config parameter
And make it affect the patch server as well, if you really want to
use an unsupported version.
2025-07-04 11:56:12 -04:00
The Dax
1c7570c696 Bounds check the string parts vecs.
Fix off by one error

Style nit.
2025-07-04 11:44:35 -04:00
The Dax
b3c954ed83 Fix error string 2025-07-04 11:44:35 -04:00
The Dax
d011f11e54 Lobby server: implement a server-side version check against the version info the client sends.
-TLDR: it checks file length and sha1 hash of the game exe, and all of the version strings.
2025-07-04 11:44:35 -04:00
The Dax
57b90ca3dd Address "warning: this expression borrows a value the compiler would automatically borrow" 2025-07-04 11:42:08 -04:00
The Dax
b3b7b2e57f Address two of "warning: function call inside of expect" 2025-07-04 11:42:08 -04:00
The Dax
72915e11d9 Address two of "warning: redundant pattern matching, consider using is_ok()"
-We should really refactor this part of the code, it's a bunch of copy paste.
2025-07-04 11:42:08 -04:00
The Dax
fe25cc6210 Address three of "warning: casting to the same type is unnecessary (u32 -> u32)" 2025-07-04 11:42:08 -04:00
The Dax
3a9912776f Address "warning: useless use of format!" 2025-07-04 11:42:08 -04:00
The Dax
86c8d58fe3 Address "warning: this expression creates a reference which is immediately dereferenced by the compiler" 2025-07-04 11:42:08 -04:00
The Dax
05f83459c1 Address "warning: deref which would be done by auto-deref" 2025-07-04 11:42:08 -04:00
fb46a44e18 Begin correctly implementing packet obsfucation
I re-implemented Unscrambler, but in reverse! This currently only
affects names in the PlayerSpawn packet, it needs to be extended
into others to be considered complete.

See #9
2025-07-03 16:12:19 -04:00
thedax
bc7ab11deb
Lobby server: send back more accurate error messages for problems (#97)
* Lobby server: send back more accurate error messages for problems

* Send the dreaded 2002 error code instead. Exact error codes would probably be better.
-It is unknown if there's a list somewhere.
2025-07-02 21:59:25 -04:00
thedax
01b396a656
Refactor gamedata to use a more general get_item_info function (#96)
-You can search for items by id or name
-The logic is all centrally located, eliminating all of the duplicated loops everywhere
2025-07-02 17:30:48 +00:00
thedax
9bed7595cc
Implement items costing money now (#94)
-Includes an extra check for trying to bypass the client-side
-Update dependencies
-Include a message that selling isn't supported yet
-Display a message indicating an item was bought
2025-07-01 21:21:47 -04:00
927c093915 Send your completed quests list
We aren't going to be adding quests ever or anytime soon, so all you
can do right now is force every quest to unlock with the aptly named
!completeallquests.
2025-07-01 19:51:33 -04:00
3695ee4352 Begin implementing gil shops, add free item to inventory
Tested against the Florist in New Gridania, although we don't
deduct the item price from you and such.
2025-06-30 21:38:04 -04:00
thedax
5a580149b4
Document some opcodes related to shops and implement a generic gil shopkeeper script (#85)
Document some opcodes related to shops and implement a generic gil shopkeeper script
* You can now interact with shopkeepers, and if you have enough gil, you can attempt to purchase items
* Upon trying to buy items the event will auto-cancel for now, because we're missing implementations of several opcodes related to inventory management
2025-06-30 15:21:08 -04:00
2762407585 Rename EventReturnHandler to EventYieldHandler, make generic
This also makes EventScene generic for use in the future.
2025-06-28 15:57:45 -04:00
670d25a980 Disable sending exp again 2025-06-28 15:27:53 -04:00
fd4436db01 Fix a few more fields in PlayerStatus
Class is determined correctly now, and we now set the expansion
level too.
2025-06-28 15:23:56 -04:00
ff3a7d6835 Remove more leftover debugging code 2025-06-28 15:10:57 -04:00
f46b62ad9e Store classjob EXP
This isn't sent in the PlayerStatus packet *yet*, only on
UpdateClassInfo. For some reason, passing it makes the client freak
out and I'm not sure why yet.
2025-06-28 14:57:21 -04:00
9a3652fb42 When equipping items, network that to other players
See #50
2025-06-28 11:13:11 -04:00