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