Advertisement
Guest User

Untitled

a guest
Mar 28th, 2020
146
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 21.23 KB | None | 0 0
  1. //////////////////////////////////////////////////////////////////////
  2. // OpenTibia - an opensource roleplaying game
  3. //////////////////////////////////////////////////////////////////////
  4. // class which takes care of all data which must get saved in the player
  5. //////////////////////////////////////////////////////////////////////
  6. // This program is free software; you can redistribute it and/or
  7. // modify it under the terms of the GNU General Public License
  8. // as published by the Free Software Foundation; either version 2
  9. // of the License, or (at your option) any later version.
  10. //
  11. // This program is distributed in the hope that it will be useful,
  12. // but WITHOUT ANY WARRANTY; without even the implied warranty of
  13. // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  14. // GNU General Public License for more details.
  15. //
  16. // You should have received a copy of the GNU General Public License
  17. // along with this program; if not, write to the Free Software Foundation,
  18. // Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
  19. //////////////////////////////////////////////////////////////////////
  20.  
  21.  
  22. #include <string>
  23. #include <iostream>
  24.  
  25. #include "luascript.h"
  26. #include "player.h"
  27. #include "patch.h"
  28.  
  29. LuaScript::LuaScript()
  30. {
  31. luaState = NULL;
  32. }
  33.  
  34.  
  35. LuaScript::~LuaScript()
  36. {
  37. if (luaState)
  38. lua_close(luaState);
  39. }
  40.  
  41.  
  42. int32_t LuaScript::OpenFile(const char *filename)
  43. {
  44. luaState = lua_open();
  45.  
  46. if (lua_dofile(luaState, filename))
  47. return false;
  48.  
  49. KNIGHT_LOOSE = getGlobalNumber("knightloose", 50);
  50. PALADIN_RAISE = getGlobalNumber("paladinraise", 20);
  51. TRAINING_TICKS = getGlobalNumber("trainingticks",10)*60000;
  52. REWRITE_TICKS = getGlobalNumber("rewriteticks",30)*1000;
  53.  
  54. #ifdef ZS_SWORDS
  55. MANA_P_MB = atoi(getGlobalStringField("swordmana", 1, "2").c_str());
  56. MANA_F_MB = atoi(getGlobalStringField("swordmana", 2, "2").c_str());
  57. MANA_E_MB = atoi(getGlobalStringField("swordmana", 3, "2").c_str());
  58. MANA_P_MAUL = atoi(getGlobalStringField("swordmana", 4, "2").c_str());
  59. MANA_F_MAUL = atoi(getGlobalStringField("swordmana", 5, "2").c_str());
  60. MANA_E_MAUL = atoi(getGlobalStringField("swordmana", 6, "2").c_str());
  61. MANA_P_HEAD = atoi(getGlobalStringField("swordmana", 7, "2").c_str());
  62. MANA_F_HEAD = atoi(getGlobalStringField("swordmana", 8, "2").c_str());
  63. MANA_E_HEAD = atoi(getGlobalStringField("swordmana", 9, "2").c_str());
  64. MANA_HAIK_AXE = atoi(getGlobalStringField("swordmana", 10, "2").c_str());
  65. MANA_BLETKA_AXE = atoi(getGlobalStringField("swordmana", 11, "2").c_str());
  66.  
  67. RANGE_P_MB = atoi(getGlobalStringField("swordrange", 1, "2").c_str());
  68. RANGE_F_MB = atoi(getGlobalStringField("swordrange", 2, "2").c_str());
  69. RANGE_E_MB = atoi(getGlobalStringField("swordrange", 3, "2").c_str());
  70. RANGE_P_MAUL = atoi(getGlobalStringField("swordrange", 4, "2").c_str());
  71. RANGE_F_MAUL = atoi(getGlobalStringField("swordrange", 5, "2").c_str());
  72. RANGE_E_MAUL = atoi(getGlobalStringField("swordrange", 6, "2").c_str());
  73. RANGE_P_HEAD = atoi(getGlobalStringField("swordrange", 7, "2").c_str());
  74. RANGE_F_HEAD = atoi(getGlobalStringField("swordrange", 8, "2").c_str());
  75. RANGE_E_HEAD = atoi(getGlobalStringField("swordrange", 9, "2").c_str());
  76. RANGE_HAIK_AXE = atoi(getGlobalStringField("swordrange", 10, "2").c_str());
  77. RANGE_BLETKA_AXE = atoi(getGlobalStringField("swordrange", 11, "2").c_str());
  78. #endif //ZS_SWORDS
  79.  
  80. SOFT_MANA = getGlobalNumber("softmana", 1);
  81. SOFT_HEALTH = getGlobalNumber("softhealth", 1);
  82.  
  83. LR_MANA = getGlobalNumber("LifeRingMana", 1);
  84. LR_HEALTH = getGlobalNumber("LifeRingHealth", 1);
  85.  
  86. ROH_MANA = getGlobalNumber("RoHMana", 1);
  87. ROH_HEALTH = getGlobalNumber("RoHHealth", 1);
  88.  
  89. ROAH_MANA = getGlobalNumber("RoaHMana", 1);
  90. ROAH_HEALTH = getGlobalNumber("RoaHHealth", 1);
  91.  
  92. DROP_RATE = getGlobalNumber("droprate",1);
  93. RESP_RATE = getGlobalNumber("resp_rate",10);
  94.  
  95. FULLATTACK = atof(getGlobalStringField("defenseforms", 1, "0.1").c_str());
  96. A_BALANCED = atof(getGlobalStringField("defenseforms", 2, "0.4").c_str()),
  97. A_FULL_DEFENSE = atof(getGlobalStringField("defenseforms", 3, "0.8").c_str());
  98.  
  99. PZ_LOCKED = getGlobalNumber("pzlocked",60);
  100.  
  101. ONEPERACC = getGlobalNumber("oneperacc",0);
  102.  
  103. #ifdef HUCZU_SKULLS
  104. WHITE_TIME = getGlobalNumber("whitetime",15)*60000;
  105. RED_TIME = getGlobalNumber("redtime",5*60)*60000;
  106. FRAG_TIME = getGlobalNumber("fragtime",3*60)*60000;
  107. RED_UNJUST = getGlobalNumber("redunjust",3);
  108. BAN_UNJUST = getGlobalNumber("banunjust",6);
  109. #endif //HUCZU_SKULLS
  110.  
  111.  
  112. NO_VOC_SPEED = atof(getGlobalStringField("speed", 1, "2.0").c_str());
  113. SORC_SPEED = atof(getGlobalStringField("speed", 2, "2.0").c_str());
  114. DRUID_SPEED = atof(getGlobalStringField("speed", 3, "2.0").c_str());
  115. PALLY_SPEED = atof(getGlobalStringField("speed", 4, "2.0").c_str());
  116. KNIGHT_SPEED = atof(getGlobalStringField("speed", 5, "2.0").c_str());
  117. ADVANCE_ANI = getGlobalString("animations") == "yes";
  118. EFFECT_ATACK = getGlobalString("extraeffects") == "yes";
  119. SUMMON_BODIES = getGlobalString("summonhavebody") == "yes";
  120. EXTRA_MSG_DEAD = getGlobalString("extradiemsg") == "yes";
  121. MSG_DEAD = getGlobalString("diemsg") == "yes";
  122.  
  123.  
  124. TRADE_LVL = getGlobalNumber("tradelvl",2);
  125.  
  126. ROOK_TEMPLE_X = getGlobalNumber("rooktemple_x",350);
  127. ROOK_TEMPLE_Y = getGlobalNumber("rooktemple_y",713);
  128. ROOK_TEMPLE_Z = getGlobalNumber("rooktemple_z",7);
  129. #ifdef YUR_MULTIPLIERS
  130. #ifdef UCB_LVL_EXP
  131.  
  132.  
  133. STG_1_LVL = getGlobalNumber("stage1",1);
  134. STG_1_LVL_X = getGlobalNumber("stage1x",1);
  135. STG_2_LVL_X = getGlobalNumber("stage2x",1);
  136.  
  137. EXP_ROOK = getGlobalNumber("exprook",1);
  138. #endif // UCB_LVL_EXP
  139. EXP_MUL = getGlobalNumber("expmul",1);
  140. EXP_MUL_PVP = getGlobalNumber("expmulpvp",1);
  141. HEALTH_TICK_MUL = getGlobalNumber("healthtickmul",1);
  142. MANA_TICK_MUL = getGlobalNumber("manatickmul",1);
  143. ROHHEALTH = getGlobalNumber("RoHHealth",1);
  144. ROHMANA = getGlobalNumber("RoHMana",1);
  145. ROAHHEALTH = getGlobalNumber("RoaHHealth",1);
  146. ROAHMANA = getGlobalNumber("RoaHMana",1);
  147. LIFERINGHEALTH = getGlobalNumber("LifeRingHealth",1);
  148. LIFERINGMANA = getGlobalNumber("LifeRingMana",1);
  149.  
  150. CAP_GAIN[VOCATION_NONE] = atoi(getGlobalStringField("capgain", VOCATION_NONE + 1, "10").c_str());
  151. CAP_GAIN[VOCATION_SORCERER] = atoi(getGlobalStringField("capgain", VOCATION_SORCERER + 1, "10").c_str());
  152. CAP_GAIN[VOCATION_DRUID] = atoi(getGlobalStringField("capgain", VOCATION_DRUID + 1, "10").c_str());
  153. CAP_GAIN[VOCATION_PALADIN] = atoi(getGlobalStringField("capgain", VOCATION_PALADIN + 1, "20").c_str());
  154. CAP_GAIN[VOCATION_KNIGHT] = atoi(getGlobalStringField("capgain", VOCATION_KNIGHT + 1, "25").c_str());
  155.  
  156. MANA_GAIN[VOCATION_NONE] = atoi(getGlobalStringField("managain", VOCATION_NONE + 1, "5").c_str());
  157. MANA_GAIN[VOCATION_SORCERER] = atoi(getGlobalStringField("managain", VOCATION_SORCERER + 1, "30").c_str());
  158. MANA_GAIN[VOCATION_DRUID] = atoi(getGlobalStringField("managain", VOCATION_DRUID + 1, "30").c_str());
  159. MANA_GAIN[VOCATION_PALADIN] = atoi(getGlobalStringField("managain", VOCATION_PALADIN + 1, "15").c_str());
  160. MANA_GAIN[VOCATION_KNIGHT] = atoi(getGlobalStringField("managain", VOCATION_KNIGHT + 1, "5").c_str());
  161.  
  162. HP_GAIN[VOCATION_NONE] = atoi(getGlobalStringField("hpgain", VOCATION_NONE + 1, "5").c_str());
  163. HP_GAIN[VOCATION_SORCERER] = atoi(getGlobalStringField("hpgain", VOCATION_SORCERER + 1, "5").c_str());
  164. HP_GAIN[VOCATION_DRUID] = atoi(getGlobalStringField("hpgain", VOCATION_DRUID + 1, "5").c_str());
  165. HP_GAIN[VOCATION_PALADIN] = atoi(getGlobalStringField("hpgain", VOCATION_PALADIN + 1, "10").c_str());
  166. HP_GAIN[VOCATION_KNIGHT] = atoi(getGlobalStringField("hpgain", VOCATION_KNIGHT + 1, "15").c_str());
  167.  
  168. WEAPON_MUL[VOCATION_NONE] = atoi(getGlobalStringField("weaponmul", VOCATION_NONE+1, "1").c_str());
  169. WEAPON_MUL[VOCATION_SORCERER] = atoi(getGlobalStringField("weaponmul", VOCATION_SORCERER+1, "1").c_str());
  170. WEAPON_MUL[VOCATION_DRUID] = atoi(getGlobalStringField("weaponmul", VOCATION_DRUID+1, "1").c_str());
  171. WEAPON_MUL[VOCATION_PALADIN] = atoi(getGlobalStringField("weaponmul", VOCATION_PALADIN+1, "1").c_str());
  172. WEAPON_MUL[VOCATION_KNIGHT] = atoi(getGlobalStringField("weaponmul", VOCATION_KNIGHT+1, "1").c_str());
  173.  
  174. DIST_MUL[VOCATION_NONE] = atoi(getGlobalStringField("distmul", VOCATION_NONE+1, "1").c_str());
  175. DIST_MUL[VOCATION_SORCERER] = atoi(getGlobalStringField("distmul", VOCATION_SORCERER+1, "1").c_str());
  176. DIST_MUL[VOCATION_DRUID] = atoi(getGlobalStringField("distmul", VOCATION_DRUID+1, "1").c_str());
  177. DIST_MUL[VOCATION_PALADIN] = atoi(getGlobalStringField("distmul", VOCATION_PALADIN+1, "1").c_str());
  178. DIST_MUL[VOCATION_KNIGHT] = atoi(getGlobalStringField("distmul", VOCATION_KNIGHT+1, "1").c_str());
  179.  
  180. SHIELD_MUL[VOCATION_NONE] = atoi(getGlobalStringField("shieldmul", VOCATION_NONE+1, "1").c_str());
  181. SHIELD_MUL[VOCATION_SORCERER] = atoi(getGlobalStringField("shieldmul", VOCATION_SORCERER+1, "1").c_str());
  182. SHIELD_MUL[VOCATION_DRUID] = atoi(getGlobalStringField("shieldmul", VOCATION_DRUID+1, "1").c_str());
  183. SHIELD_MUL[VOCATION_PALADIN] = atoi(getGlobalStringField("shieldmul", VOCATION_PALADIN+1, "1").c_str());
  184. SHIELD_MUL[VOCATION_KNIGHT] = atoi(getGlobalStringField("shieldmul", VOCATION_KNIGHT+1, "1").c_str());
  185.  
  186. MANA_MUL[VOCATION_NONE] = atoi(getGlobalStringField("manamul", VOCATION_NONE+1, "1").c_str());
  187. MANA_MUL[VOCATION_SORCERER] = atoi(getGlobalStringField("manamul", VOCATION_SORCERER+1, "1").c_str());
  188. MANA_MUL[VOCATION_DRUID] = atoi(getGlobalStringField("manamul", VOCATION_DRUID+1, "1").c_str());
  189. MANA_MUL[VOCATION_PALADIN] = atoi(getGlobalStringField("manamul", VOCATION_PALADIN+1, "1").c_str());
  190. MANA_MUL[VOCATION_KNIGHT] = atoi(getGlobalStringField("manamul", VOCATION_KNIGHT+1, "1").c_str());
  191. #endif //YUR_MULTIPLIERS
  192.  
  193. #ifdef TR_ANTI_AFK
  194. KICK_TIME = getGlobalNumber("kicktime",15)*60000;
  195. #endif //TR_ANTI_AFK
  196.  
  197. #ifdef YUR_LEARN_SPELLS
  198. LEARN_SPELLS = getGlobalString("learnspells") == "yes";
  199. #endif //YUR_LEARN_SPELLS
  200.  
  201. #ifdef TLM_HOUSE_SYSTEM
  202. ACCESS_HOUSE = getGlobalNumber("accesshouse",3);
  203. MAX_HOUSE_TILE_ITEMS = getGlobalNumber("maxhousetileitems",10);
  204. #endif //TLM_HOUSE_SYSTEM
  205.  
  206. #ifdef TR_SUMMONS
  207. SUMMONS_ALL_VOC = getGlobalString("summonsallvoc") == "yes";
  208. MAX_SUMMONS = (size_t)getGlobalNumber("maxsummons",2);
  209. #endif //TR_SUMMONS
  210.  
  211. SHOP_SYSTEM_CONTAINER = getGlobalNumber("shopContainer", 1988);
  212.  
  213.  
  214.  
  215.  
  216.  
  217. #ifdef SD_BURST_ARROW
  218. KNIGHT_BURST_DMG_LVL = atof(getGlobalStringField("knight_burstarrowdmg", 1, "2.0").c_str());
  219. KNIGHT_BURST_DMG_MLVL = atof(getGlobalStringField("knight_burstarrowdmg", 2, "3.0").c_str());
  220. KNIGHT_BURST_DMG_LO = atof(getGlobalStringField("knight_burstarrowdmg", 3, "0.10").c_str());
  221. KNIGHT_BURST_DMG_HI = atof(getGlobalStringField("knight_burstarrowdmg", 4, "0.25").c_str());
  222.  
  223. PALADIN_BURST_DMG_LVL = atof(getGlobalStringField("paladin_burstarrowdmg", 1, "2.0").c_str());
  224. PALADIN_BURST_DMG_MLVL = atof(getGlobalStringField("paladin_burstarrowdmg", 2, "3.0").c_str());
  225. PALADIN_BURST_DMG_LO = atof(getGlobalStringField("paladin_burstarrowdmg", 3, "0.10").c_str());
  226. PALADIN_BURST_DMG_HI = atof(getGlobalStringField("paladin_burstarrowdmg", 4, "0.25").c_str());
  227.  
  228. DRUID_BURST_DMG_LVL = atof(getGlobalStringField("druid_burstarrowdmg", 1, "2.0").c_str());
  229. DRUID_BURST_DMG_MLVL = atof(getGlobalStringField("druid_burstarrowdmg", 2, "3.0").c_str());
  230. DRUID_BURST_DMG_LO = atof(getGlobalStringField("druid_burstarrowdmg", 3, "0.10").c_str());
  231. DRUID_BURST_DMG_HI = atof(getGlobalStringField("druid_burstarrowdmg", 4, "0.25").c_str());
  232.  
  233. SORCERER_BURST_DMG_LVL = atof(getGlobalStringField("sorcerer_burstarrowdmg", 1, "2.0").c_str());
  234. SORCERER_BURST_DMG_MLVL = atof(getGlobalStringField("sorcerer_burstarrowdmg", 2, "3.0").c_str());
  235. SORCERER_BURST_DMG_LO = atof(getGlobalStringField("sorcerer_burstarrowdmg", 3, "0.10").c_str());
  236. SORCERER_BURST_DMG_HI = atof(getGlobalStringField("sorcerer_burstarrowdmg", 4, "0.25").c_str());
  237. #endif //SD_BURST_ARROW
  238.  
  239. #ifdef YUR_CONFIG_CAP
  240. CAP_SYSTEM = getGlobalString("capsystem") == "yes";
  241. #endif //YUR_CONFIG_CAP
  242.  
  243. #ifdef HUCZU_AUTORESTART
  244. AUTO_RESTART = getGlobalNumber("autorestart", 2)*60000;
  245. #endif
  246.  
  247. SPEAR_LOSE_CHANCE = getGlobalNumber("spearlosechance",50);
  248.  
  249. #ifdef YUR_PREMIUM_PROMOTION
  250. FREE_PREMMY = getGlobalString("freepremmy") == "yes";
  251. QUEUE_PREMMY = getGlobalString("queuepremmy") == "yes";
  252. #endif //YUR_PREMIUM_PROMOTION
  253.  
  254. #ifdef HUCZU_FIX
  255. MAYA_POS_X = atoi(getGlobalStringField("maya",1).c_str());
  256. MAYA_POS_Y = atoi(getGlobalStringField("maya",2).c_str());
  257. MAYA_POS_Z = atoi(getGlobalStringField("maya",3).c_str());
  258. ANTALIS_POS_X = atoi(getGlobalStringField("antalis",1).c_str());
  259. ANTALIS_POS_Y = atoi(getGlobalStringField("antalis",2).c_str());
  260. ANTALIS_POS_Z = atoi(getGlobalStringField("antalis",3).c_str());
  261. FARSON_POS_X = atoi(getGlobalStringField("farson",1).c_str());
  262. FARSON_POS_Y = atoi(getGlobalStringField("farson",2).c_str());
  263. FARSON_POS_Z = atoi(getGlobalStringField("farson",3).c_str());
  264. THA_POS_X = atoi(getGlobalStringField("tha",1).c_str());
  265. THA_POS_Y = atoi(getGlobalStringField("tha",2).c_str());
  266. THA_POS_Z = atoi(getGlobalStringField("tha",3).c_str());
  267. THM_POS_X = atoi(getGlobalStringField("thm",1).c_str());
  268. THM_POS_Y = atoi(getGlobalStringField("thm",2).c_str());
  269. THM_POS_Z = atoi(getGlobalStringField("thm",3).c_str());
  270. TOMB_POS_X = atoi(getGlobalStringField("tomb",1).c_str());
  271. TOMB_POS_Y = atoi(getGlobalStringField("tomb",2).c_str());
  272. TOMB_POS_Z = atoi(getGlobalStringField("tomb",3).c_str());
  273. DLA_POS_X = atoi(getGlobalStringField("dla",1).c_str());
  274. DLA_POS_Y = atoi(getGlobalStringField("dla",2).c_str());
  275. DLA_POS_Z = atoi(getGlobalStringField("dla",3).c_str());
  276. DLM_POS_X = atoi(getGlobalStringField("dlm",1).c_str());
  277. DLM_POS_Y = atoi(getGlobalStringField("dlm",2).c_str());
  278. DLM_POS_Z = atoi(getGlobalStringField("dlm",3).c_str());
  279. ROOK_POS_X = atoi(getGlobalStringField("rook",1).c_str());
  280. ROOK_POS_Y = atoi(getGlobalStringField("rook",2).c_str());
  281. ROOK_POS_Z = atoi(getGlobalStringField("rook",3).c_str());
  282. SCHIVA_POS_X = atoi(getGlobalStringField("schiva",1).c_str());
  283. SCHIVA_POS_Y = atoi(getGlobalStringField("schiva",2).c_str());
  284. SCHIVA_POS_Z = atoi(getGlobalStringField("schiva",3).c_str());
  285. BEHE_POS_X = atoi(getGlobalStringField("behe",1).c_str());
  286. BEHE_POS_Y = atoi(getGlobalStringField("behe",2).c_str());
  287. BEHE_POS_Z = atoi(getGlobalStringField("behe",3).c_str());
  288. THS_POS_X = atoi(getGlobalStringField("ths",1).c_str());
  289. THS_POS_Y = atoi(getGlobalStringField("ths",2).c_str());
  290. THS_POS_Z = atoi(getGlobalStringField("ths",3).c_str());
  291. MADMAN_POS_X = atoi(getGlobalStringField("madman",1).c_str());
  292. MADMAN_POS_Y = atoi(getGlobalStringField("madman",2).c_str());
  293. MADMAN_POS_Z = atoi(getGlobalStringField("madman",3).c_str());
  294. DMJ_POS_X = atoi(getGlobalStringField("dmj",1).c_str());
  295. DMJ_POS_Y = atoi(getGlobalStringField("dmj",2).c_str());
  296. DMJ_POS_Z = atoi(getGlobalStringField("dmj",3).c_str());
  297. DMA_POS_X = atoi(getGlobalStringField("dma",1).c_str());
  298. DMA_POS_Y = atoi(getGlobalStringField("dma",2).c_str());
  299. DMA_POS_Z = atoi(getGlobalStringField("dma",3).c_str());
  300. THF_POS_X = atoi(getGlobalStringField("thf",1).c_str());
  301. THF_POS_Y = atoi(getGlobalStringField("thf",2).c_str());
  302. THF_POS_Z = atoi(getGlobalStringField("thf",3).c_str());
  303. JAMAICA_POS_X = atoi(getGlobalStringField("jamaica",1).c_str());
  304. JAMAICA_POS_Y = atoi(getGlobalStringField("jamaica",2).c_str());
  305. JAMAICA_POS_Z = atoi(getGlobalStringField("jamaica",3).c_str());
  306. TEST_POS_X = atoi(getGlobalStringField("test",1).c_str());
  307. TEST_POS_Y = atoi(getGlobalStringField("test",2).c_str());
  308. TEST_POS_Z = atoi(getGlobalStringField("test",3).c_str());
  309. #endif //HUCZU_FIX
  310.  
  311. #ifdef YUR_CVS_MODS
  312. VOCATIONS[VOCATION_KNIGHT] = getGlobalStringField("vocations",VOCATION_KNIGHT);
  313. VOCATIONS[VOCATION_PALADIN] = getGlobalStringField("vocations",VOCATION_PALADIN);
  314. VOCATIONS[VOCATION_SORCERER] = getGlobalStringField("vocations",VOCATION_SORCERER);
  315. VOCATIONS[VOCATION_DRUID] = getGlobalStringField("vocations",VOCATION_DRUID);
  316.  
  317. PROMOTED_VOCATIONS[VOCATION_KNIGHT] = getGlobalStringField("promoted_vocations",VOCATION_KNIGHT);
  318. PROMOTED_VOCATIONS[VOCATION_PALADIN] = getGlobalStringField("promoted_vocations",VOCATION_PALADIN);
  319. PROMOTED_VOCATIONS[VOCATION_SORCERER] = getGlobalStringField("promoted_vocations",VOCATION_SORCERER);
  320. PROMOTED_VOCATIONS[VOCATION_DRUID] = getGlobalStringField("promoted_vocations",VOCATION_DRUID);
  321.  
  322. DIE_PERCENT_EXP = atoi(getGlobalStringField("diepercent",1,"5").c_str());
  323. DIE_PERCENT_MANA = atoi(getGlobalStringField("diepercent",2,"5").c_str());
  324. DIE_PERCENT_SKILL = atoi(getGlobalStringField("diepercent",3,"5").c_str());
  325. DIE_PERCENT_EQ = atoi(getGlobalStringField("diepercent",4,"10").c_str());
  326. DIE_PERCENT_BP = atoi(getGlobalStringField("diepercent",5,"100").c_str());
  327. DIE_BLESS_1 = getGlobalNumber("diebless1",4);
  328. DIE_BLESS_2 = getGlobalNumber("diebless2",3);
  329. DIE_BLESS_3 = getGlobalNumber("diebless3",2);
  330. DIE_BLESS_4 = getGlobalNumber("diebless4",2);
  331. DIE_BLESS_5 = getGlobalNumber("diebless5",2);
  332. DIE_BLESS_1_PROMOTION = getGlobalNumber("diebless1promotion",3);
  333. DIE_BLESS_2_PROMOTION = getGlobalNumber("diebless2promotion",2);
  334. DIE_BLESS_3_PROMOTION = getGlobalNumber("diebless3promotion",1);
  335. DIE_BLESS_4_PROMOTION = getGlobalNumber("diebless4promotion",1);
  336. DIE_BLESS_5_PROMOTION = getGlobalNumber("diebless5promotion",1);
  337.  
  338. ACCESS_PROTECT = getGlobalNumber("accessprotect",3);
  339. ACCESS_REMOTE = getGlobalNumber("accessremote",3);
  340. ACCESS_TALK = getGlobalNumber("accesstalk",3);
  341. ACCESS_ENTER = getGlobalNumber("accessenter",3);
  342. ACCESS_LOOK = getGlobalNumber("accesslook",3);
  343.  
  344. EXHAUSTED = getGlobalNumber("exhausted",0);
  345. EXHAUSTED_ADD = getGlobalNumber("exhaustedadd",0);
  346. EXHAUSTED_HEAL = getGlobalNumber("exhaustedheal",0);
  347.  
  348.  
  349. MAX_DEPOT_ITEMS = getGlobalNumber("maxdepotitem",1000);
  350. DATA_DIR = getGlobalString("datadir");
  351. #endif //YUR_CVS_MODS
  352.  
  353. #ifdef JD_DEATH_LIST
  354. MAX_DEATH_ENTRIES = getGlobalNumber("maxdeathentries",10);
  355. #endif //JD_DEATH_LIST
  356.  
  357. #ifdef JD_WANDS
  358. ITEM_MDOWNHELMET = getGlobalNumber("MagicDmg_HELMET",20);
  359. ITEM_MDOWNARMOR = getGlobalNumber("MagicDmg_ARMOR",20);
  360. ITEM_MDOWNLEGS = getGlobalNumber("MagicDmg_LEGS",20);
  361. ITEM_MDOWNBOOTS = getGlobalNumber("MagicDmg_BOOTS",20);
  362. ITEM_MDOWNRING = getGlobalNumber("MagicDmg_RING",20);
  363. ITEM_MDOWNAMU = getGlobalNumber("MagicDmg_AMU",20);
  364. MGITEMHELMET = getGlobalNumber("ID_HELMET",0);
  365. MGITEMARMOR = getGlobalNumber("ID_ARMOR",0);
  366. MGITEMLEGS = getGlobalNumber("ID_LEGS",0);
  367. MGITEMBOOTS = getGlobalNumber("ID_BOOTS",0);
  368. MGITEMAMU = getGlobalNumber("ID_AMULET",0);
  369. MGITEMRINGS = getGlobalNumber("ID_RING",0);
  370. MGITEMS = getGlobalString("MGDMG_Items") == "yes";
  371. SKILLNUMBER = getGlobalString("AdvanceSkill_ShowNumbers") == "yes";
  372. #endif //JD_WANDS
  373.  
  374. return true;
  375. }
  376.  
  377.  
  378. std::string LuaScript::getGlobalString(std::string var, const std::string &defString)
  379. {
  380. lua_getglobal(luaState, var.c_str());
  381.  
  382. if(!lua_isstring(luaState, -1))
  383. return defString;
  384.  
  385. int32_t len = (int32_t)lua_strlen(luaState, -1);
  386. std::string ret(lua_tostring(luaState, -1), len);
  387. lua_pop(luaState,1);
  388.  
  389. return ret;
  390. }
  391.  
  392. int32_t LuaScript::getGlobalNumber(std::string var, const int32_t defNum)
  393. {
  394. lua_getglobal(luaState, var.c_str());
  395.  
  396. if(!lua_isnumber(luaState, -1))
  397. return defNum;
  398.  
  399. int32_t val = (int32_t)lua_tonumber(luaState, -1);
  400. lua_pop(luaState,1);
  401.  
  402. return val;
  403. }
  404.  
  405.  
  406. int32_t LuaScript::setGlobalString(std::string var, std::string val)
  407. {
  408. return false;
  409. }
  410.  
  411. int32_t LuaScript::setGlobalNumber(std::string var, int32_t val){
  412. lua_pushnumber(luaState, val);
  413. lua_setglobal(luaState, var.c_str());
  414. return true;
  415. }
  416.  
  417. std::string LuaScript::getGlobalStringField (std::string var, const int32_t key, const std::string &defString) {
  418. lua_getglobal(luaState, var.c_str());
  419.  
  420. lua_pushnumber(luaState, key);
  421. lua_gettable(luaState, -2); /* get table[key] */
  422. if(!lua_isstring(luaState, -1))
  423. return defString;
  424. std::string result = lua_tostring(luaState, -1);
  425. lua_pop(luaState, 2); /* remove number and key*/
  426. return result;
  427. }
  428.  
  429. int32_t LuaScript::getField (const char *key) {
  430. int32_t result;
  431. lua_pushstring(luaState, key);
  432. lua_gettable(luaState, -2); /* get table[key] */
  433. result = (int32_t)lua_tonumber(luaState, -1);
  434. lua_pop(luaState, 1); /* remove number and key*/
  435. return result;
  436. }
  437.  
  438. void LuaScript::setField (const char *index, int32_t val) {
  439. lua_pushstring(luaState, index);
  440. lua_pushnumber(luaState, (double)val);
  441. lua_settable(luaState, -3);
  442. }
  443.  
  444.  
  445. int32_t LuaScript::getField (lua_State *L , const char *key) {
  446. int32_t result;
  447. lua_pushstring(L, key);
  448. lua_gettable(L, -2); /* get table[key] */
  449. result = (int32_t)lua_tonumber(L, -1);
  450. lua_pop(L, 1); /* remove number and key*/
  451. return result;
  452. }
  453.  
  454. void LuaScript::setField (lua_State *L, const char *index, int32_t val) {
  455. lua_pushstring(L, index);
  456. lua_pushnumber(L, (double)val);
  457. lua_settable(L, -3);
  458. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement