Age | Commit message (Collapse) | Author | Files | Lines |
|
It's easier to just talk about world data and to modify it as a whole.
If there is really a need to separate it, a project can still choose to do
that (and in whatever suitable way). There is no need to enforce this
separation or to do it in our example.
Reviewed-by: Erik Schilling
|
|
Reviewed-by: Erik Schilling
|
|
Just defined an inline function to make talking to the player easier.
Would be nice when NPC scripts could look more like this by default.
Also indented with 4 spaces, which we do in C++ so why not Lua files
(the file had mixed 2 and 4 space indentation before).
|
|
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
|
|
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
|
|
Reviewed-by: o11c, bjorn, Bertram.
|
|
Reviewed-by: Bertram.
|
|
Reviewed-by: o11c.
|
|
These scripts could trivially share one script state, since the methods
called on them from the server are not overlapping. This does leave them
open to access each other's global variables, but that's the problem
with global variables.
The one remaining global script file name is now configurable, so that
it may also be set to a script in a different scripting language. The
two related script options are:
script_mainFile (default: scripts/main.lua)
script_defaultEngine (default: lua) - renamed from defaultScriptEngine
Reviewed-by: jurkan
Reviewed-by: Yohann Ferreira
|
|
Added @permissions <character> which lists the permissions of a player.
Made @givepermission giving feedback on success.
Reviewed-by: Thorbjørn Lindeijer.
|
|
Conflicts:
src/game-server/accountconnection.cpp
|
|
At the moment it is the responsibility of the script to make sure any
references to beings passed into script functions are valid.
This means you can't schedule delayed scripts like the one making
maggots say 'Roaaarrrr!!!', since the being might have been removed
before the script gets executed. In the case of this bug the maggots are
removed by some script code testing 'mana.monster_remove'.
We should of course fix the way actor handles are used in Lua so that
scripts can't end up crashing the server.
Mantis-issue: 384
Reviewed-by: Yohann Ferreira
|
|
|
|
Add chatcommand @getpos <character> which return the mapid and location of the character.
Part of: Mana-Mantis: #385.
Reviewed-by: Bertram.
|
|
Add chatcommand @getpos <character> which return the mapid and location of the character.
Part of: Mana-Mantis: #385.
|
|
|
|
equipment-fix
Conflicts:
example/serverdata/scripts/maps/desert.lua
|
|
|
|
Made the server handle only one slot type requirement since
it's irrelevant to have more anyway.
Plus, it simplifies the code for both equipping/unequipping.
I also added a dagger to show how equipping/unequipping
is working.
|
|
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.
|
|
Resolves: Mana-Mantis #318.
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.monster_remove(monster) can now be used to remove a monster
from a map.
Resolves: Mana-Mantis #352.
Reviewed-by: Bertram.
|
|
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.
|
|
(trivial change)
|
|
A client can craft something using the @craft command.
The command needs a list of item names and amounts. The gameserver checks
if the character has these items in the inventory and then passes the list
together with the character handle to the lua script function on_craft in
the script file scripts/crafting.lua.
This function can then be used to evaluate if the list is a valid crafting
combination and when this is the case take or give items.
Implemented two example crafting scripts there, one which enforces exact
item order and amount and one which doesn't. Both are disabled per default
and one needs to be enabled by uncommenting a line.
Also gave the player group permission to use the @craft command in
permissions.xml and added two new items (wood and iron) required for the
example crafting combination.
Resolves: #333
Reviewed-by: bcs86, Bertram
|
|
... And one when she's coming back.
Reviewed-by: Jaxad0127.
|
|
The new lua function mana.chr_shake_screen can cause a screen shake
for a single client with variable x-intensity, y-intensity, decay and
duration.
I also added an example script which causes tremors for nearby characters
with intensity and direction relative to a specific point. The function
is not referenced on the example map because it is quite distracting.
|
|
This should do the trick until we have a better time management
system.
This closed issue: Mana-Mantis #205.
|
|
Even when events are inserted before game state update time,
the monsters don't speak since they still don't have an id (-1).
As I thought that reworking the mapcomposite engine for that particular
point was ineffective, here is another working way to make monsters
speak at spawn time by using the schedule_in function with
0.3 second (or 3 ticks).
Resolves: Mana-Mantis #205.
Reviewed-by: Thorbjorn.
|
|
Reviewed-by: Thorbjorn
|
|
Reviewed-by: Crush
|
|
|
|
|
|
They're both using a fully working merchant lua function.
Resolves: Mana-mantis #295.
|
|
|
|
The function is named mana.chr_get_gender. It returns 0 for male
and 1 for female. libmana-constants.lua defines the variables
GENDER_MALE and GENDER_FEMALE with these values. Also made the
banker NPC refer to the gender of the player character.
Reviewed-by: Jaxad0127
|
|
|
|
|
|
- Fixed monsters Id.
- Added collision layer to the desert map.
- Added a few simple NPCs on the map (They still need a sprite.)
- Added player and hairstyles sprites files and definition in items.xml.
|
|
I also replaced certain files with newer version, just as the items.xml file.
And I started to split test npcs from the tmwserv repository into reusable
pieces.
Big but trivial.
Part of the Mana-Mantis issue: #231.
|
|
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
|
|
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
|
|
@warp no longer takes a character. @charwarp was added to handle
that ('#' still means the player). Both can take a map name,
map id (preceded by '#') or '#' for the player's current map.
Logging of warp commands now logs destination map and player
warped (for @charwarp).
|
|
The @mute command stops another character from talking in the
public chat for a specified amount of seconds. It doesn't survive
a reconnect of the client, but I don't think that this is necessary
because a mute by a GM is usually intended as a slap on the wrist
with more severe consequences to follow (like @ban).
|