WorldPackets now holds what a client sends a world server, one struct per
packet with Serialize/Deserialize: Validation, CharacterListRequest,
CharacterCreateRequest, CharacterLoginRequest, GameMessage,
CharacterDeleteRequest, CharacterRenameRequest, LevelLoadComplete,
PositionUpdate, MailPacket, RoutePacket, StringCheck, GeneralChatMessage,
HandleFunness, UIHelpTop5. WorldServer's switch became a dispatch map of
handlers (each overrides Handle in WorldServer.cpp, logic unchanged:
dashboard hooks, LoadPlayer, chat logging, migration checks, message
inspector capture all still run); a packet that does not deserialize is
logged and dropped. UserManager's create/delete/rename take the structs.
The answers are ClientPackets (the CLIENT service): LoadStaticZone,
CharacterListResponse, CharacterCreateResponse, CharacterRenameResponse,
DeleteCharacterResponse, TransferToWorld, ServerStates, CreateCharacter,
ChatModerationString, MakeGMResponse, HTTPMonitorInfoResponse and
DebugOutput, built at the call sites (world server, UserManager, slash
commands, dashboard actions, components, migration). The world -> chat
forward of a routed packet is ChatPackets::RoutedFromClient. All
WorldPackets::Send* functions, HTTPMonitorInfo and the ClientPackets parse
functions are gone. The architecture doc now states the file rule: a
packet lives in the file of the ServiceType in its header.
No wire change. Verified against frozen verbatim copies of the old code
(tests/dGameTests/dNetTests/Legacy/WorldPacketsLegacy.h): every response
is sent through the old function and the struct over grids of inputs
(all enum values, strings of every length class, IDs, >64 moderation
segments, big XML) and must match byte for byte; every request is read
by the old code and the struct and must give the same values; plus
golden bytes, round trips, truncation checks and a field width mutation
that made the tests fail. Only differences: malformed requests are
dropped instead of handled with partial values, and LevelLoadComplete now
reads the zone ID the client sends after it (lu_packets and captures show
the 1.10.64 client always sends it; DLU ignored it).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* merge ServerType and ServiceID enums
* rename eConnectionType to ServiceType in preparation for enum unification
* unify ServiceID and ServiceType enums
* shrink ServiceType to an 8-bit integer
* fix linux compilation error and update gamemsg test
* return to uint16_t
* Update dNet/AuthPackets.cpp
Use cast instead of padding
Co-authored-by: David Markowitz <39972741+EmosewaMC@users.noreply.github.com>
* Add default case to MasterServer.cpp
* move ref back to type
* Another formatting fix
* Fix comment to be more accurate
---------
Co-authored-by: jadebenn <9892985+jadebenn@users.noreply.github.com>
Co-authored-by: David Markowitz <39972741+EmosewaMC@users.noreply.github.com>
* WIP
* get rid of redundent case and some formatting issues
* move some things around for cleaner diffs
* remove dead code that does nothing and add connection check
* fix whitespace
* address feedback
* Changed how the TryParse function works (and also did some general cleanup along the way)
* Update noexcept attributes (verified these are correct)
* Add fp overload for MacOS functionality
* resolving some feedback
* Split out unrelated changes to CleanupRoundup branch
* Update in response to feedback
* the consequences of emo's member variable renaming request
* Revert "the consequences of emo's member variable renaming request"
This reverts commit bf318caeda.
* Fully revert renaming attempt
* Revert "the consequences of emo's member variable renaming request"
This reverts commit bf318caeda.
Fully revert renaming attempt
* Created ClientVersion.h and moved the client version defaults to it
* Fix partial parsing and MacOS floating point errors
* attempting fix to MacOS compiler error
* syntax pass (should be the last commit unless the CI fails)
* ah, wait, forgot to uncomment the preprocessor statements for MacOS. THIS should be the last commit pending CI
* Okay, one last thing I noticed: We were including C headers here. Now they're C++ headers. Pinky swear this is it!
* typo and I am OCD. please let this be the last
* hash is usally but not always noexcept, so the specifier should go
* Address MOST of the feedback
* address the claim codes issue
* SystemAddress and destructor
* move respawn logic to character comp
Tested that respawn pos and rot can be set as per previously by crossing a respawn point and smashing to see if I would respawn at the new place.
* Move loot cheat checking
* Remove GetParentUser overload
Tested completing missions
control behaviors
collecting life crate
completing a bunch of missions using macros
loading into worlds
brick-by-brick
placing models
digging the x spot in gnarled forest
can still ban and mute players
cheat detection is still doing its thing
flags are still set (checked with flag 45)
claim codes still work (created new char, checked the lego club mail was there)
* Move player constructor logic
Its now at the bottom of Entity constructor. Time to remove Player
* Remove Player class
Removes the Player class. Tested that I can still login and see another player in Venture Explorer and logging out a few times still works as well as smashing enemies
* store ptr
* Update SlashCommandHandler.cpp
* chore: make scripted activity derived from activity
this paves the way for other component being properly derived from the activity component
* use a dirty flag instead
* address feedback