Age | Commit message (Collapse) | Author | Files | Lines |
|
Rather than relying on the availability of global functions with certain
predefined names, the Lua script now calls API functions to set which
function should be called on these global events.
This mechanism should make it easier to avoid name collisions in the global
namespace, which is important now that there is only a single script state.
For these global events this was not likely to become a problem, but this
solution can also be used for callbacks on specific item or monster types,
or even allow setting callbacks on certain instances.
Reviewed-by: Erik Schilling
Reviewed-by: Yohann Ferreira
|
|
Mainly introduced a helper function for getting to the Script instance for
the current Lua state.
Reviewed-by: Erik Schilling
Reviewed-by: Yohann Ferreira
|
|
Based on a native Lua table with weak values, so that the user data objects
that are created can be garbage collected when no longer referenced.
Reviewed-by: Yohann Ferreira
|
|
Based on a templated helper class, MapObject references in Lua scripts are now
full user data objects. Using the '__index' member of their metatable, a
library is associated with it so that member functions can be called directly
on the object.
Reviewed-by: Yohann Ferreira
Reviewed-by: Erik Schilling
|
|
When creating a Lua table, it is possible to specify in advance how many
array elements and how many non-array elements this table will contain,
to avoid dynamic reallocations while filling the table. This wasn't used
optimally by the pushSTLContainer helper methods and some other cases.
Reviewed-by: Erik Schilling
Reviewed-by: Yohann Ferreira
|
|
luaL_checkstring might not return so the destructor of string will not be called.
Reviewed-by: Bjorn.
|
|
The function will cause a global announcement.
If no sender ist set "Server" will be used.
Reviewed-by: Bjorn.
|
|
Those will make the scripters able to get a full view
of the current player's possessions. Use with care.
+ Fixes following Ablu's review.
Resolves: Mana-Mantis #207.
Reviewed-by: Ablu
|
|
the function can now count in the inventory
and/or the player's equipment.
I also fixed the script function and added a use case
in the example map.
+ Fixes after Ablu's review.
+ 2nd fix after Ablu's review: Fix the inventory remove behaviour.
Resolves: Mana-Mantis #288
Reviewed-by: Ablu
|
|
Part of Mana-Mantis #339.
Reviewed-by: Ablu
|
|
As requested by Ablu.
Reviewed-by: Ablu.
|
|
Reviewed-by: Ablu
|
|
You can unequip using the slot or an item id.
+ Fixes from Ablu's review.
Resolves: Mana-Mantis #350.
Reviewed-by: Ablu.
|
|
One per inventory slot, one per item id or name.
+ Fixes from 2 Ablu's reviews.
Reviewed-by: Ablu.
1st part of Mana-Mantis #339, 350.
|
|
Reviewed-by: o11c, bjorn, Bertram.
|
|
Conflicts:
src/game-server/character.cpp
src/scripting/lua.cpp
|
|
Thanks to Ablu.
|
|
Reviewed-by: Ablu.
|
|
Reviewed-by: Ablu.
|
|
Conflicts:
src/game-server/accountconnection.cpp
|
|
Instead of giving the x, y coordinates of the circle you can give a being which
is in the center of the circle.
|
|
map_get_objects([string filter]): returns all object of the current map optionally filtered by type.
map_get_object_property(handle object, string key): returns the value of the property of the object.
map_get_object_bounds(handle object): returns x, y, width, height of an object.
map_get_object_name(handle object): returns name of an object.
map_get_object_type(handle object): returns type of an object.
Mantis-issue: 397
Reviewed-by: Thorbjørn Lindeijer
|
|
|
|
|
|
As the server was exitting when the insertion was failing
anyway, and because the GameState::update() doesn't allow
actor insertion while the update process, it was then
pretty weird to not use an enqueued insertion for it.
Plus, it fixes an assertion failure when scheduling
an npc creation.
Resolves: Mana-Mantis #360.
Reviewed-by: o11c.
|
|
A race condition on the being pointer could happen when
the being queue was highly requested.
IMHO, using queues to add being but remove them directly
is the way to go.
Resolves: Mana-Mantis #384
|
|
As the server was exitting when the insertion was failing
anyway, and because the GameState::update() doesn't allow
actor insertion while the update process, it was then
pretty weird to not use an enqueued insertion for it.
Plus, it fixes an assertion failure when scheduling
an npc creation.
Resolves: Mana-Mantis #360.
|
|
|
|
Resolves: Mana-Mantis #293.
Reviewed-by: Bertram.
|
|
|
|
Resolves: Mana-Mantis #293.
Reviewed-by: Bertram.
|
|
|
|
You now can change the anger of a monster to a being using
mana.monster_change_anger(monster, being, anger)
Resolves: Mana-Mantis #366.
|
|
You now can change the anger of a monster to a being using
mana.monster_change_anger(monster, being, anger)
Resolves: Mana-Mantis #366.
|
|
git://gitorious.org/~bertram/mana/manaserv-equipment-fix into equipment-fix
Conflicts:
src/common/manaserv_protocol.h
|
|
Resolves: Mana-Mantis #318.
Reviewed-by: Bertram.
|
|
|
|
mana.monster_get_name(id) and mana.item_get_name(id) can be used
to get the name of an item or a monster if only an id is given.
Reviewed-by: Bertram.
|
|
You can now use either the name or the id of the item in the LUA
functions chr_inv_change, monster_create, item_drop.
Part of: Mana-Mantis #318.
Reviewed-by: Bertram.
|
|
|
|
I also changed the chatmessage function to chat_message
to follow the coding standard.
|
|
mana.is_walkable(x, y) can now be used to check wether the pixel on the
current map is walkable or not.
Reviewed-by: Bertram.
|
|
mana.monster_remove(monster) can now be used to remove a monster
from a map.
Resolves: Mana-Mantis #352.
Reviewed-by: Bertram.
|
|
mana.get_map_prpoperty(string) can now be used to read a property from a
map file. String is the property name.
Resolves: Mana-Mantis #353.
Reviewed-by: Bertram.
|
|
I said I wouldn't do it, but I change my mind. Here is why:
The delay mode is used in the trading code, and in the inventory
code for lua only.
In the lua part, the delay mode is useless as it is used only
when the script is requesting removal of more items than owned.
This is something that can't be handled well anyway,
as for the script part, even when the character was still
keeping its items.
Plus, it's not actually an error, IMHO.
In the trading code, it made sense. But the next commit
will bring design changes making the inventory items
and the equipment items not linked anymore. Hence, making
it impossible to trade equipped items, for instance,
which is a good thing IMHO. It will also remove the need
of a delayed inventory mode in that case.
The two cases where it is used will disappear, making it
useless.
Last but no least, the part watching for equipment changes
in the commit() function is not something easy to debug
without first having a proper and working base.
(checking of two multimaps changes, for instance).
We can add it back once the code has been fully debugged
for the most skilled among us.
And yes, I am sure of what I'm currently doing.
For now the whole inventory and trading code is in need of review
but it already was, anyway.
|
|
You can now call mana.get_distance(being1, being2) or
mana.get_distance(x1, y1, x2, y2) for calculating distances.
Reviewed-by: Jaxad0127, Bertram.
Resolves: Mana-Mantis #370.
|
|
Reviewed-by: Bertram.
Resolves: Mana-Mantis #369.
|
|
You can now call mana.log(loglevel, message) to log messages with scripts.
For loglevel you can use the new constants defined in
libmana-constants.lua
Resolves: Mana-Mantis #359
|
|
It's better to use luaL_checkint than manually checking and printing out
an error, since using the helper function makes a more informative error
message.
Also, scripts errors need to be raised before constructing objects,
since due to the way Lua does error handling the destructors of the
objects will not be called.
Also fixed an issue with the 4th parameter, which was first cast to
integer and then multiplied by 10000. Now the multiplication happens
before the casting to integer.
Reviewed-by: Crush
|
|
* 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
|