Advertisement
Guest User

Untitled

a guest
Feb 8th, 2018
367
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 46.57 KB | None | 0 0
  1. /**
  2. * The Forgotten Server - a free and open-source MMORPG server emulator
  3. * Copyright (C) 2017 Mark Samman <mark.samman@gmail.com>
  4. *
  5. * This program is free software; you can redistribute it and/or modify
  6. * it under the terms of the GNU General Public License as published by
  7. * the Free Software Foundation; either version 2 of the License, or
  8. * (at your option) any later version.
  9. *
  10. * This program is distributed in the hope that it will be useful,
  11. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  12. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  13. * GNU General Public License for more details.
  14. *
  15. * You should have received a copy of the GNU General Public License along
  16. * with this program; if not, write to the Free Software Foundation, Inc.,
  17. * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
  18. */
  19.  
  20. #ifndef FS_LUASCRIPT_H_5344B2BC907E46E3943EA78574A212D8
  21. #define FS_LUASCRIPT_H_5344B2BC907E46E3943EA78574A212D8
  22.  
  23. #include <lua.hpp>
  24.  
  25. #if LUA_VERSION_NUM >= 502
  26. #ifndef LUA_COMPAT_ALL
  27. #ifndef LUA_COMPAT_MODULE
  28. #define luaL_register(L, libname, l) (luaL_newlib(L, l), lua_pushvalue(L, -1), lua_setglobal(L, libname))
  29. #endif
  30. #undef lua_equal
  31. #define lua_equal(L, i1, i2) lua_compare(L, (i1), (i2), LUA_OPEQ)
  32. #endif
  33. #endif
  34.  
  35. #include "database.h"
  36. #include "enums.h"
  37. #include "position.h"
  38.  
  39. class Thing;
  40. class Creature;
  41. class Player;
  42. class Item;
  43. class Container;
  44. class AreaCombat;
  45. class Combat;
  46. class Condition;
  47. class Npc;
  48. class Monster;
  49. class InstantSpell;
  50.  
  51. enum {
  52. EVENT_ID_LOADING = 1,
  53. EVENT_ID_USER = 1000,
  54. };
  55.  
  56. enum LuaVariantType_t {
  57. VARIANT_NONE,
  58.  
  59. VARIANT_NUMBER,
  60. VARIANT_POSITION,
  61. VARIANT_TARGETPOSITION,
  62. VARIANT_STRING,
  63. };
  64.  
  65. enum LuaDataType {
  66. LuaData_Unknown,
  67.  
  68. LuaData_Item,
  69. LuaData_Container,
  70. LuaData_Teleport,
  71. LuaData_Player,
  72. LuaData_Monster,
  73. LuaData_Npc,
  74. LuaData_Tile,
  75. };
  76.  
  77. struct LuaVariant {
  78. LuaVariantType_t type = VARIANT_NONE;
  79. std::string text;
  80. Position pos;
  81. uint32_t number = 0;
  82. };
  83.  
  84. struct LuaTimerEventDesc {
  85. int32_t scriptId = -1;
  86. int32_t function = -1;
  87. std::list<int32_t> parameters;
  88. uint32_t eventId = 0;
  89.  
  90. LuaTimerEventDesc() = default;
  91. LuaTimerEventDesc(LuaTimerEventDesc&& other) = default;
  92. };
  93.  
  94. class LuaScriptInterface;
  95. class Cylinder;
  96. class Game;
  97.  
  98. class ScriptEnvironment
  99. {
  100. public:
  101. ScriptEnvironment();
  102. ~ScriptEnvironment();
  103.  
  104. // non-copyable
  105. ScriptEnvironment(const ScriptEnvironment&) = delete;
  106. ScriptEnvironment& operator=(const ScriptEnvironment&) = delete;
  107.  
  108. void resetEnv();
  109.  
  110. void setScriptId(int32_t scriptId, LuaScriptInterface* scriptInterface) {
  111. this->scriptId = scriptId;
  112. interface = scriptInterface;
  113. }
  114. bool setCallbackId(int32_t callbackId, LuaScriptInterface* scriptInterface);
  115.  
  116. int32_t getScriptId() const {
  117. return scriptId;
  118. }
  119. LuaScriptInterface* getScriptInterface() {
  120. return interface;
  121. }
  122.  
  123. void setTimerEvent() {
  124. timerEvent = true;
  125. }
  126.  
  127. void getEventInfo(int32_t& scriptId, LuaScriptInterface*& scriptInterface, int32_t& callbackId, bool& timerEvent) const;
  128.  
  129. void addTempItem(Item* item);
  130. static void removeTempItem(Item* item);
  131. uint32_t addThing(Thing* thing);
  132. void insertItem(uint32_t uid, Item* item);
  133.  
  134. static DBResult_ptr getResultByID(uint32_t id);
  135. static uint32_t addResult(DBResult_ptr res);
  136. static bool removeResult(uint32_t id);
  137.  
  138. void setNpc(Npc* npc) {
  139. curNpc = npc;
  140. }
  141. Npc* getNpc() const {
  142. return curNpc;
  143. }
  144.  
  145. Thing* getThingByUID(uint32_t uid);
  146. Item* getItemByUID(uint32_t uid);
  147. Container* getContainerByUID(uint32_t uid);
  148. void removeItemByUID(uint32_t uid);
  149.  
  150. private:
  151. using VariantVector = std::vector<const LuaVariant*>;
  152. using StorageMap = std::map<uint32_t, int32_t>;
  153. using DBResultMap = std::map<uint32_t, DBResult_ptr>;
  154.  
  155. LuaScriptInterface* interface;
  156.  
  157. //for npc scripts
  158. Npc* curNpc = nullptr;
  159.  
  160. //temporary item list
  161. static std::multimap<ScriptEnvironment*, Item*> tempItems;
  162.  
  163. //local item map
  164. std::unordered_map<uint32_t, Item*> localMap;
  165. uint32_t lastUID = std::numeric_limits<uint16_t>::max();
  166.  
  167. //script file id
  168. int32_t scriptId;
  169. int32_t callbackId;
  170. bool timerEvent;
  171.  
  172. //result map
  173. static uint32_t lastResultId;
  174. static DBResultMap tempResults;
  175. };
  176.  
  177. #define reportErrorFunc(a) reportError(__FUNCTION__, a, true)
  178.  
  179. enum ErrorCode_t {
  180. LUA_ERROR_PLAYER_NOT_FOUND,
  181. LUA_ERROR_CREATURE_NOT_FOUND,
  182. LUA_ERROR_ITEM_NOT_FOUND,
  183. LUA_ERROR_THING_NOT_FOUND,
  184. LUA_ERROR_TILE_NOT_FOUND,
  185. LUA_ERROR_HOUSE_NOT_FOUND,
  186. LUA_ERROR_COMBAT_NOT_FOUND,
  187. LUA_ERROR_CONDITION_NOT_FOUND,
  188. LUA_ERROR_AREA_NOT_FOUND,
  189. LUA_ERROR_CONTAINER_NOT_FOUND,
  190. LUA_ERROR_VARIANT_NOT_FOUND,
  191. LUA_ERROR_VARIANT_UNKNOWN,
  192. LUA_ERROR_SPELL_NOT_FOUND,
  193. };
  194.  
  195. class LuaScriptInterface
  196. {
  197. public:
  198. explicit LuaScriptInterface(std::string interfaceName);
  199. virtual ~LuaScriptInterface();
  200.  
  201. // non-copyable
  202. LuaScriptInterface(const LuaScriptInterface&) = delete;
  203. LuaScriptInterface& operator=(const LuaScriptInterface&) = delete;
  204.  
  205. virtual bool initState();
  206. bool reInitState();
  207.  
  208. int32_t loadFile(const std::string& file, Npc* npc = nullptr);
  209.  
  210. const std::string& getFileById(int32_t scriptId);
  211. int32_t getEvent(const std::string& eventName);
  212. int32_t getMetaEvent(const std::string& globalName, const std::string& eventName);
  213.  
  214. static ScriptEnvironment* getScriptEnv() {
  215. assert(scriptEnvIndex >= 0 && scriptEnvIndex < 16);
  216. return scriptEnv + scriptEnvIndex;
  217. }
  218.  
  219. static bool reserveScriptEnv() {
  220. return ++scriptEnvIndex < 16;
  221. }
  222.  
  223. static void resetScriptEnv() {
  224. assert(scriptEnvIndex >= 0);
  225. scriptEnv[scriptEnvIndex--].resetEnv();
  226. }
  227.  
  228. static void reportError(const char* function, const std::string& error_desc, bool stack_trace = false);
  229.  
  230. const std::string& getInterfaceName() const {
  231. return interfaceName;
  232. }
  233. const std::string& getLastLuaError() const {
  234. return lastLuaError;
  235. }
  236.  
  237. lua_State* getLuaState() const {
  238. return luaState;
  239. }
  240.  
  241. bool pushFunction(int32_t functionId);
  242.  
  243. static int luaErrorHandler(lua_State* L);
  244. bool callFunction(int params);
  245. void callVoidFunction(int params);
  246.  
  247. //push/pop common structures
  248. static void pushThing(lua_State* L, Thing* thing);
  249. static void pushVariant(lua_State* L, const LuaVariant& var);
  250. static void pushString(lua_State* L, const std::string& value);
  251. static void pushCallback(lua_State* L, int32_t callback);
  252. static void pushCylinder(lua_State* L, Cylinder* cylinder);
  253.  
  254. static std::string popString(lua_State* L);
  255. static int32_t popCallback(lua_State* L);
  256.  
  257. //auto looot
  258. static int luaPlayerAddAutoLootItem(lua_State* L);
  259. static int luaPlayerRemoveAutoLootItem(lua_State* L);
  260. static int luaPlayerGetAutoLootItem(lua_State* L);
  261. static int luaPlayerGetAutoLootList(lua_State* L);
  262.  
  263. // Userdata
  264. template<class T>
  265. static void pushUserdata(lua_State* L, T* value)
  266. {
  267. T** userdata = static_cast<T**>(lua_newuserdata(L, sizeof(T*)));
  268. *userdata = value;
  269. }
  270.  
  271. // Metatables
  272. static void setMetatable(lua_State* L, int32_t index, const std::string& name);
  273. static void setWeakMetatable(lua_State* L, int32_t index, const std::string& name);
  274.  
  275. static void setItemMetatable(lua_State* L, int32_t index, const Item* item);
  276. static void setCreatureMetatable(lua_State* L, int32_t index, const Creature* creature);
  277.  
  278. // Get
  279. template<typename T>
  280. static typename std::enable_if<std::is_enum<T>::value, T>::type
  281. getNumber(lua_State* L, int32_t arg)
  282. {
  283. return static_cast<T>(static_cast<int64_t>(lua_tonumber(L, arg)));
  284. }
  285. template<typename T>
  286. static typename std::enable_if<std::is_integral<T>::value || std::is_floating_point<T>::value, T>::type
  287. getNumber(lua_State* L, int32_t arg)
  288. {
  289. return static_cast<T>(lua_tonumber(L, arg));
  290. }
  291. template<typename T>
  292. static T getNumber(lua_State *L, int32_t arg, T defaultValue)
  293. {
  294. const auto parameters = lua_gettop(L);
  295. if (parameters == 0 || arg > parameters) {
  296. return defaultValue;
  297. }
  298. return getNumber<T>(L, arg);
  299. }
  300. template<class T>
  301. static T* getUserdata(lua_State* L, int32_t arg)
  302. {
  303. T** userdata = getRawUserdata<T>(L, arg);
  304. if (!userdata) {
  305. return nullptr;
  306. }
  307. return *userdata;
  308. }
  309. template<class T>
  310. static T** getRawUserdata(lua_State* L, int32_t arg)
  311. {
  312. return static_cast<T**>(lua_touserdata(L, arg));
  313. }
  314.  
  315. static bool getBoolean(lua_State* L, int32_t arg)
  316. {
  317. return lua_toboolean(L, arg) != 0;
  318. }
  319. static bool getBoolean(lua_State* L, int32_t arg, bool defaultValue)
  320. {
  321. const auto parameters = lua_gettop(L);
  322. if (parameters == 0 || arg > parameters) {
  323. return defaultValue;
  324. }
  325. return lua_toboolean(L, arg) != 0;
  326. }
  327.  
  328. static std::string getString(lua_State* L, int32_t arg);
  329. static CombatDamage getCombatDamage(lua_State* L);
  330. static Position getPosition(lua_State* L, int32_t arg, int32_t& stackpos);
  331. static Position getPosition(lua_State* L, int32_t arg);
  332. static Outfit_t getOutfit(lua_State* L, int32_t arg);
  333. static LuaVariant getVariant(lua_State* L, int32_t arg);
  334.  
  335. static Thing* getThing(lua_State* L, int32_t arg);
  336. static Creature* getCreature(lua_State* L, int32_t arg);
  337. static Player* getPlayer(lua_State* L, int32_t arg);
  338.  
  339. template<typename T>
  340. static T getField(lua_State* L, int32_t arg, const std::string& key)
  341. {
  342. lua_getfield(L, arg, key.c_str());
  343. return getNumber<T>(L, -1);
  344. }
  345.  
  346. static std::string getFieldString(lua_State* L, int32_t arg, const std::string& key);
  347.  
  348. static LuaDataType getUserdataType(lua_State* L, int32_t arg);
  349.  
  350. // Is
  351. static bool isNumber(lua_State* L, int32_t arg)
  352. {
  353. return lua_type(L, arg) == LUA_TNUMBER;
  354. }
  355. static bool isString(lua_State* L, int32_t arg)
  356. {
  357. return lua_isstring(L, arg) != 0;
  358. }
  359. static bool isBoolean(lua_State* L, int32_t arg)
  360. {
  361. return lua_isboolean(L, arg);
  362. }
  363. static bool isTable(lua_State* L, int32_t arg)
  364. {
  365. return lua_istable(L, arg);
  366. }
  367. static bool isFunction(lua_State* L, int32_t arg)
  368. {
  369. return lua_isfunction(L, arg);
  370. }
  371. static bool isUserdata(lua_State* L, int32_t arg)
  372. {
  373. return lua_isuserdata(L, arg) != 0;
  374. }
  375.  
  376. // Push
  377. static void pushBoolean(lua_State* L, bool value);
  378. static void pushCombatDamage(lua_State* L, const CombatDamage& damage);
  379. static void pushInstantSpell(lua_State* L, const InstantSpell& spell);
  380. static void pushPosition(lua_State* L, const Position& position, int32_t stackpos = 0);
  381. static void pushOutfit(lua_State* L, const Outfit_t& outfit);
  382.  
  383. //
  384. static void setField(lua_State* L, const char* index, lua_Number value)
  385. {
  386. lua_pushnumber(L, value);
  387. lua_setfield(L, -2, index);
  388. }
  389.  
  390. static void setField(lua_State* L, const char* index, const std::string& value)
  391. {
  392. pushString(L, value);
  393. lua_setfield(L, -2, index);
  394. }
  395.  
  396. static std::string escapeString(const std::string& string);
  397.  
  398. #ifndef LUAJIT_VERSION
  399. static const luaL_Reg luaBitReg[7];
  400. #endif
  401. static const luaL_Reg luaConfigManagerTable[4];
  402. static const luaL_Reg luaDatabaseTable[9];
  403. static const luaL_Reg luaResultTable[6];
  404.  
  405. static int protectedCall(lua_State* L, int nargs, int nresults);
  406.  
  407. protected:
  408. virtual bool closeState();
  409.  
  410. void registerFunctions();
  411.  
  412. void registerClass(const std::string& className, const std::string& baseClass, lua_CFunction newFunction = nullptr);
  413. void registerTable(const std::string& tableName);
  414. void registerMethod(const std::string& className, const std::string& methodName, lua_CFunction func);
  415. void registerMetaMethod(const std::string& className, const std::string& methodName, lua_CFunction func);
  416. void registerGlobalMethod(const std::string& functionName, lua_CFunction func);
  417. void registerVariable(const std::string& tableName, const std::string& name, lua_Number value);
  418. void registerGlobalVariable(const std::string& name, lua_Number value);
  419. void registerGlobalBoolean(const std::string& name, bool value);
  420.  
  421. std::string getStackTrace(const std::string& error_desc);
  422.  
  423. static std::string getErrorDesc(ErrorCode_t code);
  424. static bool getArea(lua_State* L, std::list<uint32_t>& list, uint32_t& rows);
  425.  
  426. //lua functions
  427. static int luaDoPlayerAddItem(lua_State* L);
  428. static int luaDoSetCreatureLight(lua_State* L);
  429.  
  430. //get item info
  431. static int luaGetDepotId(lua_State* L);
  432.  
  433. //get creature info functions
  434. static int luaGetPlayerFlagValue(lua_State* L);
  435. static int luaGetCreatureCondition(lua_State* L);
  436.  
  437. static int luaGetWorldTime(lua_State* L);
  438. static int luaGetWorldLight(lua_State* L);
  439. static int luaGetWorldUpTime(lua_State* L);
  440. static int luaGetPreyMonsters(lua_State* L);
  441.  
  442. //type validation
  443. static int luaIsDepot(lua_State* L);
  444. static int luaIsMoveable(lua_State* L);
  445. static int luaIsValidUID(lua_State* L);
  446.  
  447. //container
  448. static int luaDoAddContainerItem(lua_State* L);
  449.  
  450. //
  451. static int luaCreateCombatArea(lua_State* L);
  452.  
  453. static int luaDoAreaCombatHealth(lua_State* L);
  454. static int luaDoTargetCombatHealth(lua_State* L);
  455.  
  456. //
  457. static int luaDoAreaCombatMana(lua_State* L);
  458. static int luaDoTargetCombatMana(lua_State* L);
  459.  
  460. static int luaDoAreaCombatCondition(lua_State* L);
  461. static int luaDoTargetCombatCondition(lua_State* L);
  462.  
  463. static int luaDoAreaCombatDispel(lua_State* L);
  464. static int luaDoTargetCombatDispel(lua_State* L);
  465.  
  466. static int luaDoChallengeCreature(lua_State* L);
  467.  
  468. static int luaDebugPrint(lua_State* L);
  469. static int luaAddEvent(lua_State* L);
  470. static int luaStopEvent(lua_State* L);
  471.  
  472. static int luaSaveServer(lua_State* L);
  473. static int luaCleanMap(lua_State* L);
  474.  
  475. static int luaIsInWar(lua_State* L);
  476.  
  477. static int luaGetWaypointPositionByName(lua_State* L);
  478.  
  479. static int luaSendChannelMessage(lua_State* L);
  480. static int luaSendGuildChannelMessage(lua_State* L);
  481.  
  482. #ifndef LUAJIT_VERSION
  483. static int luaBitNot(lua_State* L);
  484. static int luaBitAnd(lua_State* L);
  485. static int luaBitOr(lua_State* L);
  486. static int luaBitXor(lua_State* L);
  487. static int luaBitLeftShift(lua_State* L);
  488. static int luaBitRightShift(lua_State* L);
  489. #endif
  490.  
  491. static int luaConfigManagerGetString(lua_State* L);
  492. static int luaConfigManagerGetNumber(lua_State* L);
  493. static int luaConfigManagerGetBoolean(lua_State* L);
  494.  
  495. static int luaDatabaseExecute(lua_State* L);
  496. static int luaDatabaseAsyncExecute(lua_State* L);
  497. static int luaDatabaseStoreQuery(lua_State* L);
  498. static int luaDatabaseAsyncStoreQuery(lua_State* L);
  499. static int luaDatabaseEscapeString(lua_State* L);
  500. static int luaDatabaseEscapeBlob(lua_State* L);
  501. static int luaDatabaseLastInsertId(lua_State* L);
  502. static int luaDatabaseTableExists(lua_State* L);
  503.  
  504. static int luaResultGetNumber(lua_State* L);
  505. static int luaResultGetString(lua_State* L);
  506. static int luaResultGetStream(lua_State* L);
  507. static int luaResultNext(lua_State* L);
  508. static int luaResultFree(lua_State* L);
  509.  
  510. // Userdata
  511. static int luaUserdataCompare(lua_State* L);
  512.  
  513. // _G
  514. static int luaIsType(lua_State* L);
  515. static int luaRawGetMetatable(lua_State* L);
  516.  
  517. // os
  518. static int luaSystemTime(lua_State* L);
  519.  
  520. // table
  521. static int luaTableCreate(lua_State* L);
  522.  
  523. // Game
  524. static int luaGameGetSpectators(lua_State* L);
  525. static int luaGameGetPlayers(lua_State* L);
  526. static int luaGameLoadMap(lua_State* L);
  527.  
  528. static int luaGameGetExperienceStage(lua_State* L);
  529. static int luaGameGetMonsterCount(lua_State* L);
  530. static int luaGameGetPlayerCount(lua_State* L);
  531. static int luaGameGetNpcCount(lua_State* L);
  532.  
  533. static int luaGameGetTowns(lua_State* L);
  534. static int luaGameGetHouses(lua_State* L);
  535.  
  536. static int luaGameGetGameState(lua_State* L);
  537. static int luaGameSetGameState(lua_State* L);
  538.  
  539. static int luaGameGetWorldType(lua_State* L);
  540. static int luaGameSetWorldType(lua_State* L);
  541.  
  542. static int luaGameGetReturnMessage(lua_State* L);
  543.  
  544. static int luaGameCreateItem(lua_State* L);
  545. static int luaGameCreateContainer(lua_State* L);
  546. static int luaGameCreateMonster(lua_State* L);
  547. static int luaGameCreateNpc(lua_State* L);
  548. static int luaGameCreateTile(lua_State* L);
  549.  
  550. static int luaGameStartRaid(lua_State* L);
  551.  
  552. static int luaGameGetClientVersion(lua_State* L);
  553.  
  554. static int luaGameReload(lua_State* L);
  555.  
  556. static int luaGameGetItemByClientId(lua_State* L);
  557.  
  558. static int luaGameHasEffect(lua_State* L);
  559. static int luaGameHasDistanceEffect(lua_State* L);
  560.  
  561. // Variant
  562. static int luaVariantCreate(lua_State* L);
  563.  
  564. static int luaVariantGetNumber(lua_State* L);
  565. static int luaVariantGetString(lua_State* L);
  566. static int luaVariantGetPosition(lua_State* L);
  567.  
  568. // Position
  569. static int luaPositionCreate(lua_State* L);
  570. static int luaPositionAdd(lua_State* L);
  571. static int luaPositionSub(lua_State* L);
  572. static int luaPositionCompare(lua_State* L);
  573.  
  574. static int luaPositionGetDistance(lua_State* L);
  575. static int luaPositionIsSightClear(lua_State* L);
  576.  
  577. static int luaPositionSendMagicEffect(lua_State* L);
  578. static int luaPositionSendDistanceEffect(lua_State* L);
  579.  
  580. // Tile
  581. static int luaTileCreate(lua_State* L);
  582.  
  583. static int luaTileGetPosition(lua_State* L);
  584. static int luaTileGetGround(lua_State* L);
  585. static int luaTileGetThing(lua_State* L);
  586. static int luaTileGetThingCount(lua_State* L);
  587. static int luaTileGetTopVisibleThing(lua_State* L);
  588.  
  589. static int luaTileGetTopTopItem(lua_State* L);
  590. static int luaTileGetTopDownItem(lua_State* L);
  591. static int luaTileGetFieldItem(lua_State* L);
  592.  
  593. static int luaTileGetItemById(lua_State* L);
  594. static int luaTileGetItemByType(lua_State* L);
  595. static int luaTileGetItemByTopOrder(lua_State* L);
  596. static int luaTileGetItemCountById(lua_State* L);
  597.  
  598. static int luaTileGetBottomCreature(lua_State* L);
  599. static int luaTileGetTopCreature(lua_State* L);
  600. static int luaTileGetBottomVisibleCreature(lua_State* L);
  601. static int luaTileGetTopVisibleCreature(lua_State* L);
  602.  
  603. static int luaTileGetItems(lua_State* L);
  604. static int luaTileGetItemCount(lua_State* L);
  605. static int luaTileGetDownItemCount(lua_State* L);
  606. static int luaTileGetTopItemCount(lua_State* L);
  607.  
  608. static int luaTileGetCreatures(lua_State* L);
  609. static int luaTileGetCreatureCount(lua_State* L);
  610.  
  611. static int luaTileHasProperty(lua_State* L);
  612. static int luaTileHasFlag(lua_State* L);
  613.  
  614. static int luaTileGetThingIndex(lua_State* L);
  615.  
  616. static int luaTileQueryAdd(lua_State* L);
  617. static int luaTileAddItem(lua_State* L);
  618. static int luaTileAddItemEx(lua_State* L);
  619.  
  620. static int luaTileGetHouse(lua_State* L);
  621.  
  622. // NetworkMessage
  623. static int luaNetworkMessageCreate(lua_State* L);
  624. static int luaNetworkMessageDelete(lua_State* L);
  625.  
  626. static int luaNetworkMessageGetByte(lua_State* L);
  627. static int luaNetworkMessageGetU16(lua_State* L);
  628. static int luaNetworkMessageGetU32(lua_State* L);
  629. static int luaNetworkMessageGetU64(lua_State* L);
  630. static int luaNetworkMessageGetString(lua_State* L);
  631. static int luaNetworkMessageGetPosition(lua_State* L);
  632.  
  633. static int luaNetworkMessageAddByte(lua_State* L);
  634. static int luaNetworkMessageAddU16(lua_State* L);
  635. static int luaNetworkMessageAddU32(lua_State* L);
  636. static int luaNetworkMessageAddU64(lua_State* L);
  637. static int luaNetworkMessageAddString(lua_State* L);
  638. static int luaNetworkMessageAddPosition(lua_State* L);
  639. static int luaNetworkMessageAddDouble(lua_State* L);
  640. static int luaNetworkMessageAddItem(lua_State* L);
  641. static int luaNetworkMessageAddItemId(lua_State* L);
  642.  
  643. static int luaNetworkMessageReset(lua_State* L);
  644. static int luaNetworkMessageSkipBytes(lua_State* L);
  645. static int luaNetworkMessageSendToPlayer(lua_State* L);
  646.  
  647. // ModalWindow
  648. static int luaModalWindowCreate(lua_State* L);
  649. static int luaModalWindowDelete(lua_State* L);
  650.  
  651. static int luaModalWindowGetId(lua_State* L);
  652. static int luaModalWindowGetTitle(lua_State* L);
  653. static int luaModalWindowGetMessage(lua_State* L);
  654.  
  655. static int luaModalWindowSetTitle(lua_State* L);
  656. static int luaModalWindowSetMessage(lua_State* L);
  657.  
  658. static int luaModalWindowGetButtonCount(lua_State* L);
  659. static int luaModalWindowGetChoiceCount(lua_State* L);
  660.  
  661. static int luaModalWindowAddButton(lua_State* L);
  662. static int luaModalWindowAddChoice(lua_State* L);
  663.  
  664. static int luaModalWindowGetDefaultEnterButton(lua_State* L);
  665. static int luaModalWindowSetDefaultEnterButton(lua_State* L);
  666.  
  667. static int luaModalWindowGetDefaultEscapeButton(lua_State* L);
  668. static int luaModalWindowSetDefaultEscapeButton(lua_State* L);
  669.  
  670. static int luaModalWindowHasPriority(lua_State* L);
  671. static int luaModalWindowSetPriority(lua_State* L);
  672.  
  673. static int luaModalWindowSendToPlayer(lua_State* L);
  674.  
  675. // Item
  676. static int luaItemCreate(lua_State* L);
  677.  
  678. static int luaItemIsItem(lua_State* L);
  679.  
  680. static int luaItemGetParent(lua_State* L);
  681. static int luaItemGetTopParent(lua_State* L);
  682.  
  683. static int luaItemGetId(lua_State* L);
  684.  
  685. static int luaItemClone(lua_State* L);
  686. static int luaItemSplit(lua_State* L);
  687. static int luaItemRemove(lua_State* L);
  688.  
  689. static int luaItemGetUniqueId(lua_State* L);
  690. static int luaItemGetActionId(lua_State* L);
  691. static int luaItemSetActionId(lua_State* L);
  692.  
  693. static int luaItemGetCount(lua_State* L);
  694. static int luaItemGetCharges(lua_State* L);
  695. static int luaItemGetFluidType(lua_State* L);
  696. static int luaItemGetWeight(lua_State* L);
  697.  
  698. static int luaItemGetSubType(lua_State* L);
  699.  
  700. static int luaItemGetName(lua_State* L);
  701. static int luaItemGetPluralName(lua_State* L);
  702. static int luaItemGetArticle(lua_State* L);
  703.  
  704. static int luaItemGetPosition(lua_State* L);
  705. static int luaItemGetTile(lua_State* L);
  706.  
  707. static int luaItemHasAttribute(lua_State* L);
  708. static int luaItemGetAttribute(lua_State* L);
  709. static int luaItemSetAttribute(lua_State* L);
  710. static int luaItemRemoveAttribute(lua_State* L);
  711.  
  712. static int luaItemMoveTo(lua_State* L);
  713. static int luaItemTransform(lua_State* L);
  714. static int luaItemDecay(lua_State* L);
  715.  
  716. static int luaItemSerializeAttributes(lua_State* L);
  717. static int luaItemMoveToSlot(lua_State* L);
  718.  
  719. static int luaItemGetDescription(lua_State* L);
  720.  
  721. static int luaItemHasProperty(lua_State* L);
  722.  
  723. // Container
  724. static int luaContainerCreate(lua_State* L);
  725.  
  726. static int luaContainerGetSize(lua_State* L);
  727. static int luaContainerGetCapacity(lua_State* L);
  728. static int luaContainerGetEmptySlots(lua_State* L);
  729.  
  730. static int luaContainerGetItemHoldingCount(lua_State* L);
  731. static int luaContainerGetItemCountById(lua_State* L);
  732.  
  733. static int luaContainerGetItem(lua_State* L);
  734. static int luaContainerHasItem(lua_State* L);
  735. static int luaContainerAddItem(lua_State* L);
  736. static int luaContainerAddItemEx(lua_State* L);
  737.  
  738. // Teleport
  739. static int luaTeleportCreate(lua_State* L);
  740.  
  741. static int luaTeleportGetDestination(lua_State* L);
  742. static int luaTeleportSetDestination(lua_State* L);
  743.  
  744. // Creature
  745. static int luaCreatureCreate(lua_State* L);
  746.  
  747. static int luaCreatureGetEvents(lua_State* L);
  748. static int luaCreatureRegisterEvent(lua_State* L);
  749. static int luaCreatureUnregisterEvent(lua_State* L);
  750.  
  751. static int luaCreatureIsRemoved(lua_State* L);
  752. static int luaCreatureIsCreature(lua_State* L);
  753. static int luaCreatureIsInGhostMode(lua_State* L);
  754. static int luaCreatureIsHealthHidden(lua_State* L);
  755. static int luaCreatureIsImmune(lua_State* L);
  756.  
  757. static int luaCreatureCanSee(lua_State* L);
  758. static int luaCreatureCanSeeCreature(lua_State* L);
  759.  
  760. static int luaCreatureGetParent(lua_State* L);
  761.  
  762. static int luaCreatureGetId(lua_State* L);
  763. static int luaCreatureGetName(lua_State* L);
  764.  
  765. static int luaCreatureGetTarget(lua_State* L);
  766. static int luaCreatureSetTarget(lua_State* L);
  767.  
  768. static int luaCreatureGetFollowCreature(lua_State* L);
  769. static int luaCreatureSetFollowCreature(lua_State* L);
  770.  
  771. static int luaCreatureGetMaster(lua_State* L);
  772. static int luaCreatureSetMaster(lua_State* L);
  773.  
  774. static int luaCreatureGetLight(lua_State* L);
  775. static int luaCreatureSetLight(lua_State* L);
  776.  
  777. static int luaCreatureGetSpeed(lua_State* L);
  778. static int luaCreatureGetBaseSpeed(lua_State* L);
  779. static int luaCreatureChangeSpeed(lua_State* L);
  780.  
  781. static int luaCreatureSetDropLoot(lua_State* L);
  782. static int luaCreatureSetSkillLoss(lua_State* L);
  783.  
  784. static int luaCreatureGetPosition(lua_State* L);
  785. static int luaCreatureGetTile(lua_State* L);
  786. static int luaCreatureGetDirection(lua_State* L);
  787. static int luaCreatureSetDirection(lua_State* L);
  788.  
  789. static int luaCreatureGetHealth(lua_State* L);
  790. static int luaCreatureAddHealth(lua_State* L);
  791. static int luaCreatureGetMaxHealth(lua_State* L);
  792. static int luaCreatureSetMaxHealth(lua_State* L);
  793. static int luaCreatureSetHiddenHealth(lua_State* L);
  794.  
  795. static int luaCreatureIsMoveLocked(lua_State* L);
  796. static int luaCreatureSetMoveLocked(lua_State* L);
  797.  
  798. static int luaCreatureGetMana(lua_State* L);
  799. static int luaCreatureAddMana(lua_State* L);
  800. static int luaCreatureGetMaxMana(lua_State* L);
  801.  
  802. static int luaCreatureGetSkull(lua_State* L);
  803. static int luaCreatureSetSkull(lua_State* L);
  804.  
  805. static int luaCreatureGetOutfit(lua_State* L);
  806. static int luaCreatureSetOutfit(lua_State* L);
  807.  
  808. static int luaCreatureGetCondition(lua_State* L);
  809. static int luaCreatureAddCondition(lua_State* L);
  810. static int luaCreatureRemoveCondition(lua_State* L);
  811.  
  812. static int luaCreatureRemove(lua_State* L);
  813. static int luaCreatureTeleportTo(lua_State* L);
  814. static int luaCreatureSay(lua_State* L);
  815.  
  816. static int luaCreatureGetDamageMap(lua_State* L);
  817.  
  818. static int luaCreatureGetSummons(lua_State* L);
  819.  
  820. static int luaCreatureGetDescription(lua_State* L);
  821.  
  822. static int luaCreatureGetPathTo(lua_State* L);
  823. static int luaCreatureMove(lua_State* L);
  824.  
  825. static int luaCreatureGetZone(lua_State* L);
  826.  
  827. // Player
  828. static int luaPlayerCreate(lua_State* L);
  829.  
  830. static int luaPlayerIsPlayer(lua_State* L);
  831.  
  832. static int luaPlayerGetGuid(lua_State* L);
  833. static int luaPlayerGetIp(lua_State* L);
  834. static int luaPlayerGetAccountId(lua_State* L);
  835. static int luaPlayerGetLastLoginSaved(lua_State* L);
  836. static int luaPlayerGetLastLogout(lua_State* L);
  837.  
  838. static int luaPlayerGetAccountType(lua_State* L);
  839. static int luaPlayerSetAccountType(lua_State* L);
  840.  
  841. static int luaPlayerHasFlag(lua_State* L);
  842.  
  843. static int luaPlayerGetCapacity(lua_State* L);
  844. static int luaPlayerSetCapacity(lua_State* L);
  845.  
  846. static int luaPlayerGetKills(lua_State* L);
  847. static int luaPlayerSetKills(lua_State* L);
  848.  
  849. static int luaPlayerGetFreeCapacity(lua_State* L);
  850.  
  851. static int luaPlayerGetReward(lua_State* L);
  852. static int luaPlayerRemoveReward(lua_State* L);
  853. static int luaPlayerGetRewardList(lua_State* L);
  854.  
  855. static int luaPlayerGetDepotChest(lua_State* L);
  856. static int luaPlayerGetInbox(lua_State* L);
  857.  
  858. static int luaPlayerGetSkullTime(lua_State* L);
  859. static int luaPlayerSetSkullTime(lua_State* L);
  860. static int luaPlayerGetDeathPenalty(lua_State* L);
  861.  
  862. static int luaPlayerGetExperience(lua_State* L);
  863. static int luaPlayerAddExperience(lua_State* L);
  864. static int luaPlayerRemoveExperience(lua_State* L);
  865. static int luaPlayerGetLevel(lua_State* L);
  866.  
  867. static int luaPlayerGetMagicLevel(lua_State* L);
  868. static int luaPlayerGetBaseMagicLevel(lua_State* L);
  869. static int luaPlayerSetMaxMana(lua_State* L);
  870. static int luaPlayerGetManaSpent(lua_State* L);
  871. static int luaPlayerAddManaSpent(lua_State* L);
  872.  
  873. static int luaPlayerGetBaseMaxHealth(lua_State* L);
  874. static int luaPlayerGetBaseMaxMana(lua_State* L);
  875.  
  876. static int luaPlayerGetSkillLevel(lua_State* L);
  877. static int luaPlayerGetEffectiveSkillLevel(lua_State* L);
  878. static int luaPlayerGetSkillPercent(lua_State* L);
  879. static int luaPlayerGetSkillTries(lua_State* L);
  880. static int luaPlayerAddSkillTries(lua_State* L);
  881.  
  882. static int luaPlayerAddOfflineTrainingTime(lua_State* L);
  883. static int luaPlayerGetOfflineTrainingTime(lua_State* L);
  884. static int luaPlayerRemoveOfflineTrainingTime(lua_State* L);
  885.  
  886. static int luaPlayerAddOfflineTrainingTries(lua_State* L);
  887.  
  888. static int luaPlayerGetOfflineTrainingSkill(lua_State* L);
  889. static int luaPlayerSetOfflineTrainingSkill(lua_State* L);
  890.  
  891. static int luaPlayerGetItemCount(lua_State* L);
  892. static int luaPlayerGetItemById(lua_State* L);
  893.  
  894. static int luaPlayerGetVocation(lua_State* L);
  895. static int luaPlayerSetVocation(lua_State* L);
  896.  
  897. static int luaPlayerGetSex(lua_State* L);
  898. static int luaPlayerSetSex(lua_State* L);
  899.  
  900. static int luaPlayerGetTown(lua_State* L);
  901. static int luaPlayerSetTown(lua_State* L);
  902.  
  903. static int luaPlayerGetGuild(lua_State* L);
  904. static int luaPlayerSetGuild(lua_State* L);
  905.  
  906. static int luaPlayerGetGuildLevel(lua_State* L);
  907. static int luaPlayerSetGuildLevel(lua_State* L);
  908.  
  909. static int luaPlayerGetGuildNick(lua_State* L);
  910. static int luaPlayerSetGuildNick(lua_State* L);
  911.  
  912. static int luaPlayerGetGroup(lua_State* L);
  913. static int luaPlayerSetGroup(lua_State* L);
  914.  
  915. static int luaPlayerGetStamina(lua_State* L);
  916. static int luaPlayerSetStamina(lua_State* L);
  917.  
  918. static int luaPlayerGetPreyStamina(lua_State* L);
  919. static int luaPlayerGetPreyType(lua_State* L);
  920. static int luaPlayerGetPreyValue(lua_State* L);
  921. static int luaPlayerGetPreyName(lua_State* L);
  922. static int luaPlayerSetPreyStamina(lua_State* L);
  923. static int luaPlayerSetPreyType(lua_State* L);
  924. static int luaPlayerSetPreyValue(lua_State* L);
  925. static int luaPlayerSetPreyName(lua_State* L);
  926.  
  927. static int luaPlayerGetSoul(lua_State* L);
  928. static int luaPlayerAddSoul(lua_State* L);
  929. static int luaPlayerGetMaxSoul(lua_State* L);
  930.  
  931. static int luaPlayerGetBankBalance(lua_State* L);
  932. static int luaPlayerSetBankBalance(lua_State* L);
  933.  
  934. static int luaPlayerGetStorageValue(lua_State* L);
  935. static int luaPlayerSetStorageValue(lua_State* L);
  936.  
  937. static int luaPlayerAddItem(lua_State* L);
  938. static int luaPlayerAddItemEx(lua_State* L);
  939. static int luaPlayerRemoveItem(lua_State* L);
  940.  
  941. static int luaPlayerGetMoney(lua_State* L);
  942. static int luaPlayerAddMoney(lua_State* L);
  943. static int luaPlayerRemoveMoney(lua_State* L);
  944.  
  945. static int luaPlayerShowTextDialog(lua_State* L);
  946.  
  947. static int luaPlayerSendTextMessage(lua_State* L);
  948. static int luaPlayerSendChannelMessage(lua_State* L);
  949. static int luaPlayerSendPrivateMessage(lua_State* L);
  950.  
  951. static int luaPlayerChannelSay(lua_State* L);
  952. static int luaPlayerOpenChannel(lua_State* L);
  953.  
  954. static int luaPlayerGetSlotItem(lua_State* L);
  955.  
  956. static int luaPlayerGetParty(lua_State* L);
  957.  
  958. static int luaPlayerAddOutfit(lua_State* L);
  959. static int luaPlayerAddOutfitAddon(lua_State* L);
  960. static int luaPlayerRemoveOutfit(lua_State* L);
  961. static int luaPlayerRemoveOutfitAddon(lua_State* L);
  962. static int luaPlayerHasOutfit(lua_State* L);
  963. static int luaPlayerSendOutfitWindow(lua_State* L);
  964.  
  965. static int luaPlayerAddMount(lua_State* L);
  966. static int luaPlayerRemoveMount(lua_State* L);
  967. static int luaPlayerHasMount(lua_State* L);
  968.  
  969. static int luaPlayerGetPremiumDays(lua_State* L);
  970. static int luaPlayerAddPremiumDays(lua_State* L);
  971. static int luaPlayerRemovePremiumDays(lua_State* L);
  972.  
  973. static int luaPlayerGetTibiaCoins(lua_State* L);
  974. static int luaPlayerAddTibiaCoins(lua_State* L);
  975. static int luaPlayerRemoveTibiaCoins(lua_State* L);
  976.  
  977. static int luaPlayerHasBlessing(lua_State* L);
  978. static int luaPlayerAddBlessing(lua_State* L);
  979. static int luaPlayerRemoveBlessing(lua_State* L);
  980.  
  981. static int luaPlayerGetBlessingCount(lua_State * L);
  982.  
  983. static int luaPlayerCanLearnSpell(lua_State* L);
  984. static int luaPlayerLearnSpell(lua_State* L);
  985. static int luaPlayerForgetSpell(lua_State* L);
  986. static int luaPlayerHasLearnedSpell(lua_State* L);
  987.  
  988. static int luaPlayerSendTutorial(lua_State* L);
  989. static int luaPlayerAddMapMark(lua_State* L);
  990.  
  991. static int luaPlayerSave(lua_State* L);
  992. static int luaPlayerPopupFYI(lua_State* L);
  993.  
  994. static int luaPlayerIsPzLocked(lua_State* L);
  995.  
  996. static int luaPlayerGetClient(lua_State* L);
  997.  
  998. static int luaPlayerGetHouse(lua_State* L);
  999. static int luaPlayerSendHouseWindow(lua_State* L);
  1000. static int luaPlayerSetEditHouse(lua_State* L);
  1001.  
  1002. static int luaPlayerSetGhostMode(lua_State* L);
  1003.  
  1004. static int luaPlayerGetContainerId(lua_State* L);
  1005. static int luaPlayerGetContainerById(lua_State* L);
  1006. static int luaPlayerGetContainerIndex(lua_State* L);
  1007.  
  1008. static int luaPlayerGetInstantSpells(lua_State* L);
  1009. static int luaPlayerCanCast(lua_State* L);
  1010.  
  1011. static int luaPlayerHasChaseMode(lua_State* L);
  1012. static int luaPlayerHasSecureMode(lua_State* L);
  1013. static int luaPlayerGetFightMode(lua_State* L);
  1014.  
  1015. static int32_t luaPlayerStartLiveCast(lua_State* L);
  1016. static int32_t luaPlayerStopLiveCast(lua_State* L);
  1017. static int32_t luaPlayerIsLiveCaster(lua_State* L);
  1018. static int32_t luaPlayerGetSpectators(lua_State* L);
  1019.  
  1020. static int luaPlayerGetBaseXpGain(lua_State *L);
  1021. static int luaPlayerSetBaseXpGain(lua_State *L);
  1022. static int luaPlayerGetVoucherXpBoost(lua_State *L);
  1023. static int luaPlayerSetVoucherXpBoost(lua_State *L);
  1024. static int luaPlayerGetGrindingXpBoost(lua_State *L);
  1025. static int luaPlayerSetGrindingXpBoost(lua_State *L);
  1026. static int luaPlayerGetStoreXpBoost(lua_State *L);
  1027. static int luaPlayerSetStoreXpBoost(lua_State *L);
  1028. static int luaPlayerGetStaminaXpBoost(lua_State *L);
  1029. static int luaPlayerSetStaminaXpBoost(lua_State *L);
  1030. static int luaPlayerGetExpBoostStamina(lua_State* L);
  1031. static int luaPlayerSetExpBoostStamina(lua_State* L);
  1032.  
  1033. static int luaPlayerGetIdleTime(lua_State* L);
  1034.  
  1035. // Monster
  1036. static int luaMonsterCreate(lua_State* L);
  1037.  
  1038. static int luaMonsterIsMonster(lua_State* L);
  1039.  
  1040. static int luaMonsterGetType(lua_State* L);
  1041.  
  1042. static int luaMonsterGetSpawnPosition(lua_State* L);
  1043. static int luaMonsterIsInSpawnRange(lua_State* L);
  1044.  
  1045. static int luaMonsterIsIdle(lua_State* L);
  1046. static int luaMonsterSetIdle(lua_State* L);
  1047.  
  1048. static int luaMonsterIsTarget(lua_State* L);
  1049. static int luaMonsterIsOpponent(lua_State* L);
  1050. static int luaMonsterIsFriend(lua_State* L);
  1051.  
  1052. static int luaMonsterAddFriend(lua_State* L);
  1053. static int luaMonsterRemoveFriend(lua_State* L);
  1054. static int luaMonsterGetFriendList(lua_State* L);
  1055. static int luaMonsterGetFriendCount(lua_State* L);
  1056.  
  1057. static int luaMonsterAddTarget(lua_State* L);
  1058. static int luaMonsterRemoveTarget(lua_State* L);
  1059. static int luaMonsterGetTargetList(lua_State* L);
  1060. static int luaMonsterGetTargetCount(lua_State* L);
  1061.  
  1062. static int luaMonsterSelectTarget(lua_State* L);
  1063. static int luaMonsterSearchTarget(lua_State* L);
  1064.  
  1065. static int luaMonsterSetSpawnPosition(lua_State* L);
  1066.  
  1067. // Npc
  1068. static int luaNpcCreate(lua_State* L);
  1069.  
  1070. static int luaNpcIsNpc(lua_State* L);
  1071.  
  1072. static int luaNpcSetMasterPos(lua_State* L);
  1073.  
  1074. static int luaNpcGetSpeechBubble(lua_State* L);
  1075. static int luaNpcSetSpeechBubble(lua_State* L);
  1076.  
  1077. // Guild
  1078. static int luaGuildCreate(lua_State* L);
  1079.  
  1080. static int luaGuildGetId(lua_State* L);
  1081. static int luaGuildGetName(lua_State* L);
  1082. static int luaGuildGetMembersOnline(lua_State* L);
  1083.  
  1084. static int luaGuildAddRank(lua_State* L);
  1085. static int luaGuildGetRankById(lua_State* L);
  1086. static int luaGuildGetRankByLevel(lua_State* L);
  1087.  
  1088. static int luaGuildGetMotd(lua_State* L);
  1089. static int luaGuildSetMotd(lua_State* L);
  1090.  
  1091. // Group
  1092. static int luaGroupCreate(lua_State* L);
  1093.  
  1094. static int luaGroupGetId(lua_State* L);
  1095. static int luaGroupGetName(lua_State* L);
  1096. static int luaGroupGetFlags(lua_State* L);
  1097. static int luaGroupGetAccess(lua_State* L);
  1098. static int luaGroupGetMaxDepotItems(lua_State* L);
  1099. static int luaGroupGetMaxVipEntries(lua_State* L);
  1100.  
  1101. // Vocation
  1102. static int luaVocationCreate(lua_State* L);
  1103.  
  1104. static int luaVocationGetId(lua_State* L);
  1105. static int luaVocationGetClientId(lua_State* L);
  1106. static int luaVocationGetName(lua_State* L);
  1107. static int luaVocationGetDescription(lua_State* L);
  1108.  
  1109. static int luaVocationGetRequiredSkillTries(lua_State* L);
  1110. static int luaVocationGetRequiredManaSpent(lua_State* L);
  1111.  
  1112. static int luaVocationGetCapacityGain(lua_State* L);
  1113.  
  1114. static int luaVocationGetHealthGain(lua_State* L);
  1115. static int luaVocationGetHealthGainTicks(lua_State* L);
  1116. static int luaVocationGetHealthGainAmount(lua_State* L);
  1117.  
  1118. static int luaVocationGetManaGain(lua_State* L);
  1119. static int luaVocationGetManaGainTicks(lua_State* L);
  1120. static int luaVocationGetManaGainAmount(lua_State* L);
  1121.  
  1122. static int luaVocationGetMaxSoul(lua_State* L);
  1123. static int luaVocationGetSoulGainTicks(lua_State* L);
  1124.  
  1125. static int luaVocationGetAttackSpeed(lua_State* L);
  1126. static int luaVocationGetBaseSpeed(lua_State* L);
  1127.  
  1128. static int luaVocationGetDemotion(lua_State* L);
  1129. static int luaVocationGetPromotion(lua_State* L);
  1130.  
  1131. // Town
  1132. static int luaTownCreate(lua_State* L);
  1133.  
  1134. static int luaTownGetId(lua_State* L);
  1135. static int luaTownGetName(lua_State* L);
  1136. static int luaTownGetTemplePosition(lua_State* L);
  1137.  
  1138. // House
  1139. static int luaHouseCreate(lua_State* L);
  1140.  
  1141. static int luaHouseGetId(lua_State* L);
  1142. static int luaHouseGetName(lua_State* L);
  1143. static int luaHouseGetTown(lua_State* L);
  1144. static int luaHouseGetExitPosition(lua_State* L);
  1145. static int luaHouseGetRent(lua_State* L);
  1146.  
  1147. static int luaHouseGetOwnerGuid(lua_State* L);
  1148. static int luaHouseSetOwnerGuid(lua_State* L);
  1149. static int luaHouseStartTrade(lua_State* L);
  1150.  
  1151. static int luaHouseGetBeds(lua_State* L);
  1152. static int luaHouseGetBedCount(lua_State* L);
  1153.  
  1154. static int luaHouseGetDoors(lua_State* L);
  1155. static int luaHouseGetDoorCount(lua_State* L);
  1156. static int luaHouseGetDoorIdByPosition(lua_State* L);
  1157.  
  1158. static int luaHouseGetTiles(lua_State* L);
  1159. static int luaHouseGetItems(lua_State* L);
  1160. static int luaHouseGetTileCount(lua_State* L);
  1161.  
  1162. static int luaHouseCanEditAccessList(lua_State* L);
  1163. static int luaHouseGetAccessList(lua_State* L);
  1164. static int luaHouseSetAccessList(lua_State* L);
  1165.  
  1166. static int luaHouseKickPlayer(lua_State* L);
  1167.  
  1168. // ItemType
  1169. static int luaItemTypeCreate(lua_State* L);
  1170.  
  1171. static int luaItemTypeIsCorpse(lua_State* L);
  1172. static int luaItemTypeIsDoor(lua_State* L);
  1173. static int luaItemTypeIsContainer(lua_State* L);
  1174. static int luaItemTypeIsFluidContainer(lua_State* L);
  1175. static int luaItemTypeIsMovable(lua_State* L);
  1176. static int luaItemTypeIsRune(lua_State* L);
  1177. static int luaItemTypeIsStackable(lua_State* L);
  1178. static int luaItemTypeIsReadable(lua_State* L);
  1179. static int luaItemTypeIsWritable(lua_State* L);
  1180. static int luaItemTypeIsBlocking(lua_State* L);
  1181. static int luaItemTypeIsGroundTile(lua_State* L);
  1182. static int luaItemTypeIsMagicField(lua_State* L);
  1183. static int luaItemTypeIsUseable(lua_State* L);
  1184. static int luaItemTypeIsPickupable(lua_State* L);
  1185.  
  1186. static int luaItemTypeGetType(lua_State* L);
  1187. static int luaItemTypeGetId(lua_State* L);
  1188. static int luaItemTypeGetClientId(lua_State* L);
  1189. static int luaItemTypeGetName(lua_State* L);
  1190. static int luaItemTypeGetPluralName(lua_State* L);
  1191. static int luaItemTypeGetArticle(lua_State* L);
  1192. static int luaItemTypeGetDescription(lua_State* L);
  1193. static int luaItemTypeGetSlotPosition(lua_State *L);
  1194.  
  1195. static int luaItemTypeGetCharges(lua_State* L);
  1196. static int luaItemTypeGetFluidSource(lua_State* L);
  1197. static int luaItemTypeGetCapacity(lua_State* L);
  1198. static int luaItemTypeGetWeight(lua_State* L);
  1199.  
  1200. static int luaItemTypeGetHitChance(lua_State* L);
  1201. static int luaItemTypeGetShootRange(lua_State* L);
  1202. static int luaItemTypeGetAttack(lua_State* L);
  1203. static int luaItemTypeGetDefense(lua_State* L);
  1204. static int luaItemTypeGetExtraDefense(lua_State* L);
  1205. static int luaItemTypeGetImbuingSlots(lua_State* L);
  1206. static int luaItemTypeGetArmor(lua_State* L);
  1207. static int luaItemTypeGetWeaponType(lua_State* L);
  1208.  
  1209. static int luaItemTypeGetElementType(lua_State* L);
  1210. static int luaItemTypeGetElementDamage(lua_State* L);
  1211.  
  1212. static int luaItemTypeGetTransformEquipId(lua_State* L);
  1213. static int luaItemTypeGetTransformDeEquipId(lua_State* L);
  1214. static int luaItemTypeGetDestroyId(lua_State* L);
  1215. static int luaItemTypeGetDecayId(lua_State* L);
  1216. static int luaItemTypeGetRequiredLevel(lua_State* L);
  1217. static int luaItemTypeGetAmmoType(lua_State* L);
  1218. static int luaItemTypeGetCorpseType(lua_State* L);
  1219.  
  1220. static int luaItemTypeGetSpeed(lua_State* L);
  1221. static int luaItemTypeGetBaseSpeed(lua_State* L);
  1222. static int luaItemTypeGetDecayTime(lua_State* L);
  1223. static int luaItemTypeGetShowDuration(lua_State* L);
  1224.  
  1225. static int luaItemTypeHasSubType(lua_State* L);
  1226.  
  1227. // Combat
  1228. static int luaCombatCreate(lua_State* L);
  1229.  
  1230. static int luaCombatSetParameter(lua_State* L);
  1231. static int luaCombatSetFormula(lua_State* L);
  1232.  
  1233. static int luaCombatSetArea(lua_State* L);
  1234. static int luaCombatSetCondition(lua_State* L);
  1235. static int luaCombatSetCallback(lua_State* L);
  1236. static int luaCombatSetOrigin(lua_State* L);
  1237.  
  1238. static int luaCombatExecute(lua_State* L);
  1239.  
  1240. // Condition
  1241. static int luaConditionCreate(lua_State* L);
  1242. static int luaConditionDelete(lua_State* L);
  1243.  
  1244. static int luaConditionGetId(lua_State* L);
  1245. static int luaConditionGetSubId(lua_State* L);
  1246. static int luaConditionGetType(lua_State* L);
  1247. static int luaConditionGetIcons(lua_State* L);
  1248. static int luaConditionGetEndTime(lua_State* L);
  1249.  
  1250. static int luaConditionClone(lua_State* L);
  1251.  
  1252. static int luaConditionGetTicks(lua_State* L);
  1253. static int luaConditionSetTicks(lua_State* L);
  1254.  
  1255. static int luaConditionSetParameter(lua_State* L);
  1256. static int luaConditionSetFormula(lua_State* L);
  1257. static int luaConditionSetOutfit(lua_State* L);
  1258.  
  1259. static int luaConditionAddDamage(lua_State* L);
  1260.  
  1261. // MonsterType
  1262. static int luaMonsterTypeCreate(lua_State* L);
  1263.  
  1264. static int luaMonsterTypeIsAttackable(lua_State* L);
  1265. static int luaMonsterTypeIsConvinceable(lua_State* L);
  1266. static int luaMonsterTypeIsSummonable(lua_State* L);
  1267. static int luaMonsterTypeIsIllusionable(lua_State* L);
  1268. static int luaMonsterTypeIsHostile(lua_State* L);
  1269. static int luaMonsterTypeIsPushable(lua_State* L);
  1270. static int luaMonsterTypeIsHealthShown(lua_State* L);
  1271.  
  1272. static int luaMonsterTypeIsPet(lua_State* L);
  1273. static int luaMonsterTypeIsPassive(lua_State* L);
  1274. static int luaMonsterTypeIsRewardBoss(lua_State* L);
  1275. static int luaMonsterTypeIsBoss(lua_State* L);
  1276.  
  1277. static int luaMonsterTypeCanPushItems(lua_State* L);
  1278. static int luaMonsterTypeCanPushCreatures(lua_State* L);
  1279.  
  1280. static int luaMonsterTypeGetName(lua_State* L);
  1281. static int luaMonsterTypeGetNameDescription(lua_State* L);
  1282.  
  1283. static int luaMonsterTypeGetHealth(lua_State* L);
  1284. static int luaMonsterTypeGetMaxHealth(lua_State* L);
  1285. static int luaMonsterTypeGetRunHealth(lua_State* L);
  1286. static int luaMonsterTypeGetExperience(lua_State* L);
  1287.  
  1288. static int luaMonsterTypeGetCombatImmunities(lua_State* L);
  1289. static int luaMonsterTypeGetConditionImmunities(lua_State* L);
  1290.  
  1291. static int luaMonsterTypeGetAttackList(lua_State* L);
  1292. static int luaMonsterTypeGetDefenseList(lua_State* L);
  1293. static int luaMonsterTypeGetElementList(lua_State* L);
  1294.  
  1295. static int luaMonsterTypeGetVoices(lua_State* L);
  1296. static int luaMonsterTypeGetLoot(lua_State* L);
  1297. static int luaMonsterTypeGetCreatureEvents(lua_State* L);
  1298.  
  1299. static int luaMonsterTypeGetSummonList(lua_State* L);
  1300. static int luaMonsterTypeGetMaxSummons(lua_State* L);
  1301.  
  1302. static int luaMonsterTypeGetArmor(lua_State* L);
  1303. static int luaMonsterTypeGetDefense(lua_State* L);
  1304. static int luaMonsterTypeGetOutfit(lua_State* L);
  1305. static int luaMonsterTypeGetRace(lua_State* L);
  1306. static int luaMonsterTypeGetCorpseId(lua_State* L);
  1307. static int luaMonsterTypeGetManaCost(lua_State* L);
  1308. static int luaMonsterTypeGetBaseSpeed(lua_State* L);
  1309. static int luaMonsterTypeGetLight(lua_State* L);
  1310.  
  1311. static int luaMonsterTypeGetStaticAttackChance(lua_State* L);
  1312. static int luaMonsterTypeGetTargetDistance(lua_State* L);
  1313. static int luaMonsterTypeGetYellChance(lua_State* L);
  1314. static int luaMonsterTypeGetYellSpeedTicks(lua_State* L);
  1315. static int luaMonsterTypeGetChangeTargetChance(lua_State* L);
  1316. static int luaMonsterTypeGetChangeTargetSpeed(lua_State* L);
  1317.  
  1318. // Party
  1319. static int luaPartyDisband(lua_State* L);
  1320.  
  1321. static int luaPartyGetLeader(lua_State* L);
  1322. static int luaPartySetLeader(lua_State* L);
  1323.  
  1324. static int luaPartyGetMembers(lua_State* L);
  1325. static int luaPartyGetMemberCount(lua_State* L);
  1326.  
  1327. static int luaPartyGetInvitees(lua_State* L);
  1328. static int luaPartyGetInviteeCount(lua_State* L);
  1329.  
  1330. static int luaPartyAddInvite(lua_State* L);
  1331. static int luaPartyRemoveInvite(lua_State* L);
  1332.  
  1333. static int luaPartyAddMember(lua_State* L);
  1334. static int luaPartyRemoveMember(lua_State* L);
  1335.  
  1336. static int luaPartyIsSharedExperienceActive(lua_State* L);
  1337. static int luaPartyIsSharedExperienceEnabled(lua_State* L);
  1338. static int luaPartyShareExperience(lua_State* L);
  1339. static int luaPartySetSharedExperience(lua_State* L);
  1340.  
  1341. // Spells
  1342. static int luaSpellCreate(lua_State* L);
  1343.  
  1344. static int luaSpellGetManaCost(lua_State* L);
  1345. static int luaSpellGetSoulCost(lua_State* L);
  1346.  
  1347. static int luaSpellIsPremium(lua_State* L);
  1348. static int luaSpellIsLearnable(lua_State* L);
  1349.  
  1350. //
  1351. lua_State* luaState = nullptr;
  1352. std::string lastLuaError;
  1353.  
  1354. std::string interfaceName;
  1355. int32_t eventTableRef = -1;
  1356.  
  1357. static ScriptEnvironment scriptEnv[16];
  1358. static int32_t scriptEnvIndex;
  1359.  
  1360. int32_t runningEventId = EVENT_ID_USER;
  1361. std::string loadingFile;
  1362.  
  1363. //script file cache
  1364. std::map<int32_t, std::string> cacheFiles;
  1365. };
  1366.  
  1367. class LuaEnvironment : public LuaScriptInterface
  1368. {
  1369. public:
  1370. LuaEnvironment();
  1371. ~LuaEnvironment();
  1372.  
  1373. // non-copyable
  1374. LuaEnvironment(const LuaEnvironment&) = delete;
  1375. LuaEnvironment& operator=(const LuaEnvironment&) = delete;
  1376.  
  1377. bool initState();
  1378. bool reInitState();
  1379. bool closeState();
  1380.  
  1381. LuaScriptInterface* getTestInterface();
  1382.  
  1383. Combat* getCombatObject(uint32_t id) const;
  1384. Combat* createCombatObject(LuaScriptInterface* interface);
  1385. void clearCombatObjects(LuaScriptInterface* interface);
  1386.  
  1387. AreaCombat* getAreaObject(uint32_t id) const;
  1388. uint32_t createAreaObject(LuaScriptInterface* interface);
  1389. void clearAreaObjects(LuaScriptInterface* interface);
  1390.  
  1391. private:
  1392. void executeTimerEvent(uint32_t eventIndex);
  1393.  
  1394. std::unordered_map<uint32_t, LuaTimerEventDesc> timerEvents;
  1395. std::unordered_map<uint32_t, Combat*> combatMap;
  1396. std::unordered_map<uint32_t, AreaCombat*> areaMap;
  1397.  
  1398. std::unordered_map<LuaScriptInterface*, std::vector<uint32_t>> combatIdMap;
  1399. std::unordered_map<LuaScriptInterface*, std::vector<uint32_t>> areaIdMap;
  1400.  
  1401. LuaScriptInterface* testInterface = nullptr;
  1402.  
  1403. uint32_t lastEventTimerId = 1;
  1404. uint32_t lastCombatId = 0;
  1405. uint32_t lastAreaId = 0;
  1406.  
  1407. friend class LuaScriptInterface;
  1408. friend class CombatSpell;
  1409. };
  1410.  
  1411. #endif
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement