Age | Commit message (Collapse) | Author | Files | Lines |
|
* Rely on the fact that a std::string is empty by default
* Use std::string::empty() rather than comparing to ""
* Construct with std::string() rather than from ""
Reviewed-by: Bertram
|
|
The F cost represents the estimate of the total cost from source to
destination. It is only relevant to sort the locations to be checked, so
there is no point in assigning it to each coordinate of the map.
With maps up to 200x200, the memory usage is reduced by 160 kB! :P
Reviewed-by: Bertram
|
|
The @drop and @item commands can now accept an item name instead of an
item ID. In addition the amount can be omitted to create a single item.
|
|
I rewrote the @spawn command to allow two new things:
1. The monster ID can be replaced with the name of the monster.
2. The amount of monsters can be omitted. In that case a single monster
is spawned.
Reviewed by: Jaxad and Thorbjorn
|
|
|
|
There was a version taking an attack range, but the range was always the
same as the one specified in the Damage class.
|
|
The monsters weren't respecting the end of the stroll time
before resetting their destination, which made them never
cease changing it and flooded the clients with movement messages.
Resolves: Mana-Mantis #315.
Reviewed-by: Jaxad0127.
|
|
A C++ developer should be able to recognize a constructor and a
destructor by just looking at it, so let's stop writing down the
obvious. :)
|
|
It was done in both the Character and the Monster destructors, but I
don't see how any Actor should be excluded from this. Now it also
happens for NPC, Effect and Item, though only NPC has a relevant
walkmask.
Also fixed a small issue introduced in 97e0a9eb170499 and added an
assert to freeTile. We should be able to assert that a tile can only be
freed if it was blocked.
Reviewed-by: Stefan Dombrowski
|
|
Extracted the path finding algorithm out of the Map class and introduced
a new class called PathInfo that has the path finding information that
used to be part of MetaTile.
This allows a single vector of path information to be shared between all
maps running on the server, significantly reducing the memory overhead
per map (for 200x200 maps, the memory reduction is about 1 MB per map).
Part of this change is some cleanup, like moving the 'occupation' counts
into MetaTile, inlining some methods for performance reasons, and using
STL to simplify memory management.
Mantis-issue: 106
Reviewed-by: Bertram
|
|
It was freeing the new tile rather than the previous tile.
Reviewed-by: Stefan Dombrowski
|
|
We can just stick with integers by trading a sqrt for a multiplication.
Reviewed-by: Bertram
|
|
This prevents some weird things happening especially on crowded
maps.
I also removed the unused findSimplePath() function.
Reviewed-by: Thorbjorn.
|
|
This reflects much more what the function does IMHO.
Trivial.
|
|
Trivial.
|
|
The gameserver now receive a copy of all world state variables when
they are accepted by the accountserver and receive a copy of all
map state variables of a map when they register it successfully.
Implemented LUA script bindings for getting and setting these variables.
When such a variable is set, the accountserver is notified about this
change. Changes to world state variables are then propagated to all
gameservers by the accountserver.
Be aware that when a gameserver is updating a map, there is no check if
it is actually responsible for said map. But I consider this not a
security flaw, because authenticated game servers are considered to be
trustworthy in a lot of other situations, too.
Also renamed "quest" to "character variable" in the sourcecode.
Reviewed-by: Bertram
|
|
Reviewed-by: Bertram
|
|
Reviewed-by: Crush
|
|
Reviewed-by: Thorbjorn
|
|
Reviewed-by: Jaxad0127.
Resolves: Mana-Mantis #286.
|
|
Both servers deinitialize enet now from deinitializeServer().
Reviewed-by: Bertram, Jaxad0127
|
|
Trivial fix.
|
|
|
|
Not in tiles, as suggested by the header.
Trivial fix.
|
|
Now buy/sell lua functions can access the player inventory
again.
This is not using the delayed mode, so it won't be a problem.
Reviewed-by: Freeyorp.
|
|
This reverts commit b2209cbe93aa12dcd4e4e3b9a7cd8b13ed5713e9.
Money should be handled through attributes, not magic numbers.
|
|
- At character's attributes recalculation when necessary.
- In the lua scripting functions.
|
|
|
|
|
|
Now this can be loaded with the 'magic-evade' xml tag.
|
|
As a consequence, the monsters can spawn again.
Reviewed-by: Freeyorp.
|
|
This saves a bit of cpu and make use of pixel points where
tile points where used before and could lead to discrepancies.
Reviewed-by: Thorbjorn.
|
|
As the protocol version isn't something the maintainers should
set, I removed the net_clientVersion irrelevant option, replaced
by the corresponding define PROTOCOL_VERSION
in the manaserv_protocol.h file.
A corresponding change in the client will be made.
N.B.: Now, the Enet version is also reported in the log.
Reviewed-by: Jaxad.
|
|
The default argument values had no effect, because they are
not in the declaration.
Updating the codeblock project, because protocol.h had been renamed.
Reviewed-by: Bertram
|
|
The server was actually using the bitmask enum while the the client
still sent another one, creating discrepancies.
A second problem is that the being direction was not properly
initialized and not updated while it was moving.
Reviewed-by: Jaxad.
|
|
It was too close from the Position class and it leads to
making the server handle one or another type through the
code. Still bugged me many times while making changes.
Reviewed-by: Jaxad.
|
|
Reviewed-by: CodyMartin.
|
|
We've got DEFAULT_TILE_LENGTH in defines.h for that.
Trivial fix.
|
|
Trivial.
|
|
Trivial fix.
|
|
Trivial.
|
|
Resolves: Mana-Mantis #278.
|
|
Trivial fix.
|
|
The @log command is the equivalent to tmwAthena's @l. It allows to log
a text as a transaction for documentation purpose.
The @logsay command works like @t on tmwAthena. It says something in
public chat while also logging it as a separate trasaction.
Reviewed-by: Thorbjorn
|
|
@kick disconnects the client connection of a character. The new error-
code 11 (ERRMSG_ADMINISTRATIVE_LOGOFF) is not supported by the client
yet. It will show a generic "The connection to server was lost" message
instead.
@kill kills the character by setting its HP to 0.
Added @kick transaction code I forgot in last commit. Considering that
this was just minutes ago I think that noone updated his database yet.
So I don't think that a new database version is justified for this.
Reviewed-by: Bertram
|
|
The @mute, @goto, @attribute and @announce commands now logs transactions
to the database.
Added new transaction codes to database. I've preliminarily added a lot
of codes for not yet supported commands so that we needn't do a database
update with every single commit which implements one.
Also using the equivalent "say" helper function in place of the
"GameState::sayTo" method in the command handler.
Reviewed-by: Kage
|
|
The @die chat command kills the evoking character by setting its hit
points to 0. The example permissions.xml assigns it to the "tester"
rights group and not "players" because server admins who are not aware
of this command might run into trouble when they assume that players
don't have a method to teleport to their spawn point voluntarily.
Resolves: mantis ticket #192
Reviewed-by: Jaxad0127
|
|
Changes:
============================================================
For the account server:
------------------------------------------------------------
Old -> New
------------------------------------------------------------
net_accountServerAddress,
net_listenHost -> net_accountHost
net_accountServerPort -> net_accountListenToClientPort
net_accountServerPort +1 -> net_accountListenToGamePort
For the game server:
------------------------------------------------------------
Old -> New
------------------------------------------------------------
net_gameServerAddress -> net_gameHost
net_gameServerPort -> net_gameListenToClientPort
For the chat server:
------------------------------------------------------------
Old -> New
------------------------------------------------------------
-> net_chatHost
net_accountServerPort + 2 -> net_chatListenToClientPort
Special fallback feature, as requested by Freeyorp:
When the net_accountListenToClientPort (default to 9601)
is set, the 3 others ports will automatically offset from it,
if they're not set, following this rule:
net_accountListenToGamePort = net_accountListenToClientPort + 1
net_chatListenToClientPort = net_accountListenToClientPort + 2
net_gameListenToClientPort = net_accountListenToClientPort + 3
Resolves: Mana-Mantis #216.
Reviewed-by: Jaxad0127.
|
|
|
|
Trivial fix, so no review.
|