summaryrefslogtreecommitdiff
path: root/src/scripting/lua.cpp
AgeCommit message (Collapse)AuthorFilesLines
2011-03-14Script binding for the new screen shake effect.Philipp Sehmisch1-0/+45
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.
2011-03-09Renamed GameState::insertSafe() to inserOrDelete.Yohann Ferreira1-1/+1
This reflects much more what the function does IMHO. Trivial.
2011-03-09Made the monster creation delayed, to avoid crashing.Yohann Ferreira1-5/+1
Creation of monsters shouldn't be done during game state update. So we delay their insertion after the update to avoid a crash in debug builds and weird stuff happening in release builds. Reviewed-by: Thorbjorn.
2011-03-06Small fixes coming from my comment on issue #77.Yohann Ferreira1-4/+4
Trivial.
2011-03-04Implemented persistent world and map variablesPhilipp Sehmisch1-1/+91
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
2011-02-20Fixed enabling/disabling npcs by enqueuing the insertion.Yohann Ferreira1-2/+1
This permits to handle such operation after the object locking, thus avoiding to fail on the assertion: assert(!dbgLockObjects); when inserting a npc. Reviewed-by: Ablu.
2011-02-11Fix basic money handling using the ATTR_GP attribute.Yohann Ferreira1-4/+18
Reviewed-by: Freeyorp.
2011-02-11Added lua attributes getters/setters thanks to Freeyorp.Yohann Ferreira1-68/+155
2011-02-08Implemented LUA binding to get the gender of a characterPhilipp Sehmisch1-0/+17
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
2011-01-30Revert "Fixed the money handling."Jared Adams1-25/+4
This reverts commit b2209cbe93aa12dcd4e4e3b9a7cd8b13ed5713e9. Money should be handled through attributes, not magic numbers.
2011-01-31Fixed the money handling.Yohann Ferreira1-4/+25
- At character's attributes recalculation when necessary. - In the lua scripting functions.
2011-01-09Fix being direction discrepancies by syncing the BeingDirection.Yohann Ferreira1-1/+1
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.
2011-01-03Cleaned up and document a bit more the speed conversion functions.Yohann Ferreira1-1/+1
Trivial fix.
2010-12-29Moved parts needing to be in sync with the client in protocol.h.Yohann Ferreira1-1/+1
Trivial fix.
2010-12-08Fix return codes for many lua functionsFreeyorp1-6/+6
Reviewed-by: Bertram
2010-12-08Minor cleanup in a number of script functionsFreeyorp1-30/+6
Reviewed-by: Bertram
2010-11-14Renamed .hpp files into .h for consistency.Yohann Ferreira1-23/+23
Also added an header to the autoattack.{h,cpp} files. Big but trivial fix.
2010-11-03Renamed write{Byte,Short,Long} to writeInt{8,16,32}Thorbjørn Lindeijer1-9/+9
Mainly for consistency with the client, and the general consensus was that these numbered versions were clearer.
2010-08-29Merge branch 'testing'Freeyorp1-62/+21
Conflicts: src/account-server/storage.cpp src/game-server/being.cpp src/game-server/being.hpp src/game-server/character.cpp src/game-server/character.hpp src/game-server/gamehandler.cpp src/game-server/inventory.cpp src/scripting/lua.cpp src/sql/mysql/createTables.sql src/sql/sqlite/createTables.sql
2010-08-22Print out a backtrace when a Lua error is raisedThorbjørn Lindeijer1-1/+7
The backtrace is printed by using debug.traceback as error handler when calling Lua functions. At the moment it still looks pretty ugly since Lua is not aware of the file names of the scripts (to be fixed). Reviewed-by: Jared Adams
2010-08-21Perform more detailed argument checking in Lua functionsThorbjørn Lindeijer1-154/+101
Based on helper functions in the auxiliary library. Reviewed-by: Yohann Ferreira
2010-07-10New attribute system and major changes to many low-level areas.Freeyorp1-58/+21
Attribute system: Structure is no longer completely hardcoded. Attributes and structure is defined by new xml file (defaulting to stats.xml) Structure defines non-base modifications to an attribute, to be used by modifiers from items, effects, etc. Calculating the base value for core attributes is still done in C++ (and for such fundamental elements the only reason I can think of to do it any other way is perhaps being able to quickly change scripts without a compile could be useful for testing, but such things are a low priority anyway) Item structure: Modifiers are now through triggers rather than single events. This also removes hardcoded types - an item could be both able to be equipped and be able to be activated. Item activation no longer consumes by default, this must be specified by the property <consumes /> inside the trigger. Currently only attribute modifications, autoattacks, and consumes are defined as effects, but stubs for others do exist. Autoattacks are currently non-functional, and this should be rectified with some urgency. Auto Attacks: AutoAttacks are now separate entities, though not fully complete, nor fully integrated with all beings yet. Integration with the Character class is urgent, integration with other Being children less so. When fully integrated this will allow for multiple autoattacks, through equipping multiple items with this as an equip effect or even through other means if needed. Equipment structure: As ItemClass types are no longer hardcoded, so too are equip types. An item have multiple ways to be equipped across multiple equipment slots with any number in each slot. Character maximums are global but configurable. Miscellaneous: Speed, money, and weight are now attributes. Some managers have been changed into classes such that their associated classes can have them as friends, to avoid (ab)use of public accessors. The serialise procedure should also be set as a friend of Character (both in the account- and game- server) as well; having public accessors returning iterators is simply ridiculous. Some start for such cleanups have been made, but this is not the primary focus here. Significant work will need to be done before this is resolved completely, but the start is there. BuySell::registerPlayerItems() has been completely disabled temporarily. The previous function iterated through equipment, yet in the context I think it is intended to fill items? I have been unable to update this function to fit the modifications made to the Inventory/Equipment/Possessions, as I am unsure what exactly what it should be doing. ItemClass::mSpriteId was previously unused, so had been removed, but I notice that it was used when transmitting equipment to nearby clients. Experimentation showed that this value was never set to anything other than 0, and so has been left out of the ItemManager rewrite. I am not entirely sure what is happening here, but it should be worth looking into at a later time, as I am not sure how equipment appearences would be sent otherwise.
2010-07-09Added LUA script bindings for manipulating the specials available to a ↵Philipp Sehmisch1-0/+76
character. Added script call for getting the cost of a special (recharge only for now) Deleting specials works server-sided but the client isn't informed about it properly. Specials without recharge cost don't appear for the player. Both of these features require an additional netcode message. Reviewed-by: Freeyorp
2010-05-30Copied basic Lua libs back from tmwserv-data and added dummy dataThorbjørn Lindeijer1-2/+1
The dummy data is currently mostly empty data though, so still nothing to see as far as the example content is concerned. Reviewed-by: Bertram
2010-05-29Only skip the UTF-8 BOM for Lua scriptsThorbjørn Lindeijer1-1/+1
libxml2 should be able to handle files with a BOM fine. Reviewed-by: Bertram
2010-05-28Modified the npc_trade() lua function to permit selling the whole player ↵Yohann Ferreira1-13/+74
inventory. It permits to open a sell box with every items in the player inventory as requested by Striker. Also added different return value support to both the buy selling functions, and made fixes where relevant. The test.lua script will be upgraded to show examples in a next commit. What's left to be done is to fix the inventory handling for both selling functions. (Sigh...) Concerns: Manasource mantis: #78, #101. Reviewed-by: Jaxad0127
2010-05-21Added a package loader that goes through the resource managerThorbjørn Lindeijer1-0/+25
Fixes issues with finding Lua scripts after changing the way client and server data paths are set up. Lua scripts can now use 'require' with paths relative from the serverDataPath to include other Lua scripts. Reviewed-by: Jared Adams
2010-05-20Removed unused parameter from being_get_speed Lua functionThorbjørn Lindeijer1-4/+4
Also updated the link to the documentation and fixed the documentation for being_set_speed.
2010-03-13Add methods to get and set being speedJonathan Kolberg1-1/+35
Signed-off-by: Thorbjørn Lindeijer <thorbjorn@lindeijer.nl>
2010-02-25Added script bindings for healing characters and other beings.Philipp Sehmisch1-0/+34
Reviewed-by: Jared Adams <jaxad0127@gmail.com>
2010-02-07Update Copyright date for Manaserv.Bertram1-1/+1
2010-01-17Added some missing headers, and added some missing files to Makefile.amChuck Miller1-0/+2
2010-01-16Prevented segmentation fault when calling the lua set_quest_var function ↵Philipp Sehmisch1-1/+6
with an illegal character handle.
2010-01-08Added script binding for checking the kill count for each monster so that ↵Philipp Sehmisch1-0/+29
uninventive server admins can implement their boring kill-ten-rats quests.
2009-12-06Fixed name of the project in copyright headersThorbjørn Lindeijer1-7/+6
Also updated the headers to refer to the GPL by URL instead of suggesting to contact the FSF by snail mail, as per the latest GPL usage instructions.
2009-12-06Moved rectangle intersection to the Rectangle classThorbjørn Lindeijer1-1/+1
Also a bit of pointless cleanup in the math utils.
2009-10-26Added optional optimal level mechanic which reduces exp gain of certain ↵Philipp Sehmisch1-1/+6
sources after a certain skill level.
2009-10-24Rebranding tmwserv to manaservThorbjørn Lindeijer1-48/+48
Includes a database update. Use update_6_to_7.sql to update existing sqlite databases.
2009-10-14lua_tofloat doesn't exist in Lua 5.1Jared Adams1-3/+4
Also make that parameter optional
2009-10-15Speed code unification part 1: Made the server accept speed values in tiles ↵Bertram1-1/+2
per second.
2009-10-13Add script bindings for being directionsJared Adams1-2/+44
2009-10-13Add being action getter and setterJared Adams1-0/+42
2009-10-09Synced the protocol file with client in protocol.h, letting other defines in ↵Bertram1-1/+0
defines.h, and removing some overheading along the way.
2009-10-03Some cleanupThorbjørn Lindeijer1-7/+2
* Removed unsigned/signed warning by just using signed integers. * Made AccountHandler message handler functions members again instead of static functions. * Renamed 'computer' to 'client' since that is a less confusing name.
2009-09-27Added script bindings and netcode for creating being-bound effects.Philipp Sehmisch1-5/+26
2009-09-16Allow for basic scripted monstersChuck Miller1-0/+26
2009-08-25Made the STL container -> LUA table wrappers more flexible.Philipp Sehmisch1-16/+25
2009-07-18Change status effects to prevent duplicationJared Adams1-1/+52
Also add some functions for manipulating status effects: * removeStatusEffect * getStatusEffectTime * setStatusEffectTime
2009-07-17Adds scripted status effectsChuck Miller1-0/+39
2009-07-12Allow npc_choice to take tables of stringsJared Adams1-3/+21