Age | Commit message (Collapse) | Author | Files | Lines |
|
The online list refreshes every 18 seconds, which matches ManaVerse
behavior. It's not ideal, but to improve this would mean diving into
TMWA.
The client version was bumped to 8 to get a SMSG_ONLINE_LIST reply.
Further changes needed related to the client version are tracked by #71.
This also changes the TabbedArea to take into account the frame size for
its tab widgets, to make sure those frames are not clipped by the
TabbedArea widget (as happened in the Social window).
The horizontal scroll bar is now disabled in all social tabs, with the
vertical one appearing only when necessary.
Closes #61
|
|
These are server chat messages triggered from scripts. In TMW this
appears to be used only by the magic system. Added in client protocol
version 5 (see issue #71).
|
|
Since for tmwAthena we're writing messages directly into the output
buffer, the MessageOut implementation does not need any members.
Also used SDL_SwapLE16 and SDL_SwapLE32 for convenience.
|
|
|
|
* Use default member initializers
* Use range-based for loops
* Avoid needless pointer references for ShopItem::mDuplicates
* Removed type aliases that are only used once or twice
* Removed more unused includes
* Removed some unused functions
* Removed superfluous .c_str()
* Rely on default copy and assignment operators for Vector class
* Use std::unique_ptr in some places
* Removed duplicated mPlayerMoney updating in SellDialog
* Removed duplicated Game::handleInput call
* Removed unused SDLInput::mMouseInWindow
* Removed remnant of manual widget positioning in HelpWindow
* Removed superfluous initialization of static pointers
|
|
* Use final for all message handlers, Client, LocalPlayer,
Being::getType, Being::setPosition and Being::setMap.
(avoids some warnings about virtual dispatch in constructors)
* Use auto in more places
* Use emplace_back instead of push_back in some places
* Use default member initializers
* Less else after return
* Removed superfluous .c_str()
* Removed type aliases that are only used once
* Removed more unused includes
|
|
This change fixes hair style to take into account "race", which makes
the faces visible again. Hair colors should also be fixed now, with
partial support for itemcolors.xml added.
The Mana client now also supports per-character gender, and it now hides
the hair style and color buttons on character creation, when there are
none to choose from.
Closes #43
|
|
This only adds support for the NPC_CLOSE_DIALOG and
NPC_CLEAR_DIALOG sub-commands.
Closes #47
|
|
* Fixed duplication of player name in chat
Closes #49
|
|
* Use default member initializers
* Use range-based loops
* Don't use 'else' after 'return'
* Removed some unused includes
* Construct empty strings with std::string() instead of ""
* Clear strings with .clear() instead of assigning ""
* Check whether strings are empty with .empty() instead of comparing to ""
* Removed redundant initializations
|
|
Previous code was assuming there would be no gaps in the emote IDs.
Also cleaned up some confusion where the "emote ID" being passed around
in the code was often offset by 1. Now it is only offset in
communication with tmwAthena and when saving the shortcuts.
|
|
It happened to me a few times. Needs checking whether we could instead
make sure we always have a Game instance when receiving this message,
because this way a map mask might get ignored.
Or maybe the map mask just needs to be stored elsewhere.
|
|
* The code defining the message IDs and sizes are now generated by the
tools/protocol.py script in the tmwAthena repository.
* Reduced client version from 20 to 6, because that is currently the
minimum supported version, and any adjustments needed for later likely
still need to be made.
* Removed use of no longer handled messages:
- CMSG_SKILL_USE_BEING
- CMSG_SKILL_USE_POSITION
- CMSG_SKILL_USE_MAP
- SMSG_PARTY_MOVE
- CMSG_WHO_REQUEST
- SMSG_WHO_ANSWER
- SMSG_MVP
- SMSG_BEING_MOVE2
- SMSG_BEING_CHANGE_LOOKS
* Some messages were renamed to match the server side
- CMSG_PLAYER_ATTACK -> CMSG_PLAYER_CHANGE_ACT
- CMSG_PLAYER_RESTART -> CMSG_PLAYER_REBOOT
- SMSG_ADMIN_IP -> SMSG_BEING_IP_RESPONSE
Part of addressing issues #55 and #47, which we now know are about
handling SMSG_PLAYER_HP and SMSG_NPC_COMMAND respectively. The client
will now ignore them (with a warning) instead of crash.
|
|
This stuff was removed from tmwAthena, so it will never be supported.
|
|
* Removed /announce command
* Changed "Kick player" in player pop-up to kick by name
Other messages, like CMSG_ADMIN_HIDE, CMSG_ADMIN_MUTE and
CMSG_ADMIN_LOCAL_ANNOUNCE were already not used by the client. Also,
none of this was implemented for Manaserv.
|
|
* Removing unused includes
* Use member initialization
* Use range-based for loops
* Use nullptr
* Removed no longer used aliases
* Use override
* Don't use else after return
* Use '= delete' to remove implicit members
* Use std::string::empty instead of comparing to ""
|
|
|
|
modernize-loop-convert
modernize-deprecated-headers
|
|
A custom "Mask" property on a layer or a "foregroundXmask" property on a
map can now be used in combination with the SMSG_MAP_MASK to dynamically
disable certain map layers from the server.
Feature previously seen on ManaPlus and implemented for Mana client for
compatibility.
Also added a ResourceRef class for automating the Resource reference
counting.
Closes #44
|
|
modernize-use-auto
modernize-use-nullptr
modernize-use-override
modernize-use-using
|
|
This option was added in ManaPlus and support for it is required to
connect to The Mana World as it is currently set up, since the server
sends 127.0.0.1 for the character server and map server IP.
Can't play yet, because of an unknown packet 0x226 being received once
connecting to the map server.
|
|
|
|
It is unclear whether there are any protocol differences that should be
dealt with at this point, but without this the login fails with "Client
too old." error.
|
|
|
|
* Fixed compiler errors due to dynamic exception specifications
* Replace std::auto_ptr with std::unique_ptr
* Replace std::mem_fun with std::mem_fn
* Prefix for_each with std:: (apparently not needed before)
* Just use lambda instead of std::bind2nd
* Removed usages of std::unary_function
|
|
The CMSG_NPC_STR_RESPONSE packet transmits a string
of variable length.
|
|
It should not return large numbers after reading past the end of a
message. This can cause infinite loops in several places in the client
when a message happened to be shorter than expected.
|
|
|
|
The delayed actor deletion was meant to be used during the logic calls,
to avoid modifying the container while it is being iterated. The
deletions happening from the network layer are not done while iterating
the set of actors, so it can delete immediately.
This fixes an issue where an NPC would disappear when changing
appearance on tmwAthena, because this was implemented as a remove + add,
which broke due to the delayed deletion.
Mantis-issue: 507
Reviewed-by: Jared Adams
|
|
This file was introduced by ManaPlus as a way of configuring the
character creation process. It defines the number of hair styles
and colors, how stat points should be divided and what the starting
equipment of the player is.
The minimum and maximum hair color/style IDs are not supported at
the moment.
This is mostly a backport of ManaPlus commits 10cf52b5 and dcc18eba,
with some style changes.
Mantis-issue: 501
Reviewed-by: Ablu
|
|
This way it can also be used when connecting to a tmwAthena server for
customizing the min/max of attributes and the amount of starting points.
Mantis-issue: 501
Reviewed-by: Ablu
|
|
Reviewed-by: Erik Schilling.
|
|
There wasn't a whole lot gained by sharing a common base class, and it makes
extending the manaserv Message{In,Out} classes with a debugging mode
unnecessarily complicated.
Reviewed-by: Yohann Ferreira
|
|
The tmwa/BeingHandler was adjusting the effect id rather than the emote
id, causing it to not find the last emote (and the rest of the emotes
only worked correctly because the effect ids were consecutive in the same
order as the emote ids).
Furthermore, the EmoteShortcutContainer refused to draw the icon for the
last emote due to an off-by-one error in dealing with the 1-adjusted
emote ids used by the EmoteShortcut class.
Also cleaned up some old remains of a player ignore strategy that used
to use the two balloon emotes (this had been their original purpose).
Reviewed-by: Erik Schilling
|
|
I tested it with the Towel and the Wedding Ring
on the testing server.
Spotted-by: Jenalya, cody.
Reviewed-by: Erik Schilling
|
|
Reviewed-by: Ablu and Bjorn
|
|
The thanks messages got removed, because they are useless and when
selling many items they completely trashed the chat.
In Mana 0.5 this was already fixed, see commit
13c4a1131854887ac9ec83f80c7964f6b2949c87.
Reviewed-by: Ablu
|
|
This shopping mechanism is not supported by this client at the moment,
and it's annoying to have these turn up in whispers.
Reviewed-by: Stefan Beller
Reviewed-by: Erik Schilling
|
|
Reviewed-by: Erik Schilling
|
|
Resolves: Mana-Mantis #457.
Reviewed-by: Bertram.
|
|
I also made the range be taken from the server type
as for the pickup and npc talk ranges.
Last but no least, I fixed the parameters sent with
PGMSG_PICKUP to send the (item) position where to pickup at
as described in the manaserv protocol.
The pickup is still not 100% functional due certainly
to two problems:
1. The client item coordinates might not be the exact same as in the server.
2. The client seems to try to pick up the item a bit too soon,
probably for the reason given in 1.
I'll investigate this in another patch.
Reviewed-by: Thorbjørn Lindeijer, Erik Schilling.
|
|
- I made the charCreatedialog handle a possible
max permitted color Id and a minimum hair style id for tA.
- Added a foundation to later load the styles and colors from
the same file, to handle the Mana-issue #224 for manaserv.
- Support for non-contiguous hair color and style ids
has also been added.
- I also replaced the < and > arrow signs with images.
Reviewed-by: Ben Longbons, Thorbjørn Lindeijer
|
|
The tA beingmanager was wrongly using the attack type
in the Being::handleAttack() function,
which is in fact used to set the attack id.
Thus, breaking the attack id given
and all its attack parameters.
I noticed that while updating the client data for TMW.
Reviewed-by: Thorbjørn Lindeijer
|
|
Reviewed-by: Erik Schilling
|
|
Really only the trade handler is concerned about whether the player is
currently in a trade or not.
Reviewed-by: Erik Schilling
|
|
- Renamed mLastTarget to mLastTargetTime, and mLastAction to mLastActionTime
to clarify their use.
- NULL -> 0.
- Removed the unused mLocalWalkTime member.
+ Change requested by bjorn.
Reviewed-by: Thorjørn Lindeijer
|
|
|
|
This can always happen, either due to mismatching local data or a
server-side error. The client displays a pop-up in this case, but
it's not possible to read that when it crashes as well.
Reviewed-by: Yohann Ferreira
|
|
This will ease the reading of the next patch about hair handling
at character creation time in tAthena.
As requested by bjorn.
Reviewed-by: bjorn
|
|
The patch also takes care of not spamming the different servers,
when the servers are setting the being speed correctly.
The most problems were coming from the keyboard movement functions
handling 1 tile paths. To void the issues seen in #405, #439,
and #440, I simply prevented to set a new path before reaching
the destination of the former one, when using the keyboard.
The mouse path system remains unchanged.
I also made some functions private (or here protected)
to show they shouldn't be called by something else than
the localplayer object.
And I removed the nextTile() function, since it was obsolete,
unused, and replaced by the nextTile(direction) function.
That patch was tested on both servers with mouse/keyboard
mixed use.
Resolves: Mana-Mantis #405, #439, #440.
Reviewed-by: bjorn
|