Advertisement
Guest User

LuaPlot.cpp

a guest
Feb 22nd, 2021
42
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 166.15 KB | None | 0 0
  1. //----------------------------------------------------------------------------------------
  2. #include <time.h>
  3. #include <Windows.h>
  4. #include <Psapi.h>
  5.  
  6. #include "LuaPlot.h"
  7. #include "lua/LuaWrapper/LuaWrap.h"
  8. //----------------------------------------------------------------------------------------
  9. #include "../../netwalker_member/Net_Script/NetSrv_Script.h"
  10. #include "../../netwalker_member/NetWakerGSrvInc.h"
  11. #include "../FlagPosList/FlagPosList.h"
  12. #include "../AIProc/NpcAIBase.h"
  13. #include "../magicproc/MagicProcess.h"
  14. #include "../partyinfolist/PartyInfoList.h"
  15. #include <vector>
  16. #include "../../mainproc/pathmanage/NPCMoveFlagManage.h"
  17. //----------------------------------------------------------------------------------------
  18.  
  19. //----------------------------------------------------------------------------------------
  20. namespace LuaPlotClass
  21. {
  22.  
  23. //----------------------------------------------------------------------------------------
  24. //¦@¥Î¸ê®Æ
  25. vector< int > SearchObjList;
  26. //----------------------------------------------------------------------------------------
  27.  
  28. bool Init( )
  29. {
  30. LuaRegisterFunc( "OwnerID" , int() , OwnerID );
  31. LuaRegisterFunc( "TargetID" , int() , TargetID );
  32.  
  33. LuaRegisterFunc( "Rand" , int(int) , Random );
  34. LuaRegisterFunc( "RandRange" , int(int,int) , RandRange );
  35.  
  36. LuaRegisterFunc( "SysPrint" , void(const char*) , SysPrint );
  37. LuaRegisterFunc( "MoveTarget" , int(int,int) , MoveTarget );
  38. LuaRegisterFunc( "Move" , int(int,float,float,float) , Move );
  39. LuaRegisterFunc( "MoveDirect" , int(int,float,float,float) , MoveDirect );
  40.  
  41. LuaRegisterFunc( "SetRandMove" , void(int, int, int,int) , SetRandMove );
  42.  
  43. LuaRegisterFunc( "CreateFlag" , bool(int,int,float,float,float,float) , CreateFlag );
  44. LuaRegisterFunc( "CreateObj" , int(int,float,float,float,float,int) , CreateObj );
  45. LuaRegisterFunc( "CreateObjByFlag" , int(int,int,int,int) , CreateObjByFlag );
  46. LuaRegisterFunc( "DelObj" , bool( int ) , DelObj );
  47. LuaRegisterFunc( "AddtoPartition" , bool( int,int ) , AddtoPartition );
  48. LuaRegisterFunc( "DelFromPartition" , bool( int ) , DelFromPartition );
  49. LuaRegisterFunc( "Show" , bool( int,int ) , Show );
  50. LuaRegisterFunc( "Hide" , bool( int ) , Hide );
  51.  
  52. LuaRegisterFunc( "SetMode" , bool( int,int ) , SetMode );
  53. LuaRegisterFunc( "GetMode" , int ( int ) , GetMode );
  54. LuaRegisterFunc( "SetModeEx" , bool( int , int , bool ) , SetModeEx );
  55.  
  56. LuaRegisterFunc( "SetPos" , bool( int,float,float,float,float) , SetPos );
  57.  
  58. LuaRegisterFunc( "RunPlot" , bool( int , const char* ) , RunPlot );
  59. LuaRegisterFunc( "ZonePCall" , bool( int , const char* ) , ZonePCall );
  60.  
  61. //³]©wNPC¦º¤`
  62. LuaRegisterFunc( "NPCDead" , void( int , int ) , NPCDead );
  63. LuaRegisterFunc( "ReSetNPCInfo" , int ( int ) , ReSetNPCInfo );
  64.  
  65. LuaRegisterFunc( "GiveBodyItem" , bool( int , int , int ) , GiveBodyItem );
  66. LuaRegisterFunc( "GiveBodyItemEx" , bool( int , int , int , int , int , int , int , int , int ) , GiveBodyItemEx );
  67. LuaRegisterFunc( "GiveBodyItem_Note", bool( int , int , int , const char* ) , GiveBodyItem_Note );
  68.  
  69. LuaRegisterFunc( "GiveBodyItem_EQ" , bool( int , int , int , int ) , GiveBodyItem_EQ );
  70.  
  71. LuaRegisterFunc( "DelBodyItem" , bool( int , int , int ) , DelBodyItem );
  72. LuaRegisterFunc( "CountBodyItem" , int( int , int ) , CountBodyItem );
  73. LuaRegisterFunc( "CountItem" , int( int , int ) , CountItem );
  74.  
  75. LuaRegisterFunc( "DebugMsg" , void( int , int, const char* ) , DebugMsg );
  76. LuaRegisterFunc( "DebugLog" , void( int , const char* ) , DebugLog );
  77. LuaRegisterFunc( "DeleteQuest" , bool( int , int ) , DeleteQuest );
  78.  
  79.  
  80. LuaRegisterFunc( "Msg" , bool( int , const char* ) , Msg );
  81. LuaRegisterFunc( "Tell" , bool( int , int , const char* ) , Tell );
  82. LuaRegisterFunc( "SayTo" , bool( int , int , const char* ) , SayTo );
  83. LuaRegisterFunc( "Say" , bool( int , const char* ) , Say );
  84. LuaRegisterFunc( "NpcSay" , bool( int , const char* ) , NpcSay );
  85. LuaRegisterFunc( "Yell" , bool( int , const char*, int) , Yell );
  86.  
  87. LuaRegisterFunc( "ReadRoleValue" , int( int , int ) , ReadRoleValue );
  88. LuaRegisterFunc( "ReadRoleValueFloat" , double( int , int ) , ReadRoleValuefloat );
  89. LuaRegisterFunc( "WriteRoleValue" , bool( int , int , double ) , WriteRoleValue );
  90. LuaRegisterFunc( "AddRoleValue" , bool( int , int , double ) , AddRoleValue );
  91.  
  92. LuaRegisterFunc( "AddExp" , bool( int , int ) , AddExp );
  93.  
  94. LuaRegisterFunc( "SetPlot" , bool( int , const char* , const char* , int ), SetPlot );
  95. LuaRegisterFunc( "GetPlotName" , const char*( int , const char* ) , GetPlotName );
  96. LuaRegisterFunc( "BeginPlot" , bool( int , const char* , int ) , BeginPlot );
  97. LuaRegisterFunc( "SetNpcPlotClass" , bool( int , const char* ) , SetNpcPlotClass );
  98.  
  99.  
  100. LuaRegisterFunc( "CheckID" , bool( int ) , CheckID );
  101. //LuaRegisterFunc( "GetValue" , int( int , int ) , GetValue );
  102. LuaRegisterFunc( "GetString" , const char* ( const char* ) , GetString );
  103.  
  104. LuaRegisterFunc( "SetShop" , void( int , int , const char* ) , SetShop );
  105. LuaRegisterFunc( "CloseShop" , bool( int ) , CloseShop );
  106. LuaRegisterFunc( "OpenShop" , bool( ) , OpenShop );
  107. LuaRegisterFunc( "OpenEqGamble" , bool( ) , OpenEqGamble );
  108. LuaRegisterFunc( "OpenSuitSkill" , bool( ) , OpenSuitSkill );
  109.  
  110. LuaRegisterFunc( "OpenBank" , bool( ) , OpenBank );
  111. LuaRegisterFunc( "OpenMail" , bool( ) , OpenMail );
  112. LuaRegisterFunc( "OpenAC" , bool( ) , OpenAC );
  113. LuaRegisterFunc( "OpenBankEx" , bool( int ) , OpenBankEx );
  114. LuaRegisterFunc( "OpenMailEx" , bool( int ) , OpenMailEx );
  115. LuaRegisterFunc( "OpenACEx" , bool( int ) , OpenACEx );
  116.  
  117. LuaRegisterFunc( "OpenChangeJob" , void( ) , OpenChangeJob );
  118. LuaRegisterFunc( "OpenBillboard" , void( ) , OpenBillboard );
  119. LuaRegisterFunc( "OpenGuildWarBid" , void( int, int ) , OpenGuildWarBid );
  120. LuaRegisterFunc( "OpenAccountBag" , void( ) , OpenAccountBag );
  121.  
  122. LuaRegisterFunc( "SetMinimapIcon" , void( int, int ) , SetMinimapIcon );
  123. LuaRegisterFunc( "KillID" , bool( int , int ) , KillID );
  124.  
  125. LuaRegisterFunc( "SetParalledID" , bool( int, int ) , SetParalledID );
  126. LuaRegisterFunc( "CheckZone" , bool( int ) , CheckZone );
  127.  
  128. LuaRegisterFunc( "CheckTreasureDelete" , bool(int) , CheckTreasureDelete );
  129. LuaRegisterFunc( "SendMail" , void(const char*,const char*,const char*) , SendMail );
  130. LuaRegisterFunc( "SendMailEx" , void(const char*,const char*,const char*,const char*,int,int,int ) , SendMailEx );
  131. LuaRegisterFunc( "ClockOpen" , bool(int,int,int,int,int,const char*,const char* ), ClockOpen );
  132. LuaRegisterFunc( "ClockStop" , bool(int) , ClockStop );
  133. LuaRegisterFunc( "ClockClose" , bool(int) , ClockClose );
  134. LuaRegisterFunc( "ClockRead" , int(int,int) , ClockRead );
  135.  
  136. LuaRegisterFunc( "SysCastSpellLv" , bool(int,int,int,int) , SysCastSpellLv );
  137. LuaRegisterFunc( "SysCastSpellLv_Pos", bool(int,float,float,float,int,int) , SysCastSpellLv_Pos );
  138. LuaRegisterFunc( "InterruptMagic" , bool(int) , InterruptMagic );
  139. LuaRegisterFunc( "SwapEQ" , bool(int,int) , SwapEQ );
  140.  
  141. LuaRegisterFunc( "GetNowTime" , int() , GetNowTime );
  142. LuaRegisterFunc( "PushMagicExplodeTarget" , bool(int) , PushMagicExplodeTarget );
  143. LuaRegisterFunc( "PushMagicShootTarget" , bool(int) , PushMagicShootTarget );
  144. LuaRegisterFunc( "InitBgIndependence" , bool(int,int) , InitBgIndependence );
  145.  
  146. //---------------------------------------------------------------------------------
  147. // ¦a¹p³B²z
  148. //---------------------------------------------------------------------------------
  149. LuaRegisterFunc( "CheckMineEvent" , bool( ) , CheckMineEvent );
  150. //---------------------------------------------------------------------------------
  151. //¾Ô°«¬ÛÃö¼@±¡
  152. //---------------------------------------------------------------------------------
  153. LuaRegisterFunc( "GetNumPlayer", int() , GetNumPlayer );
  154.  
  155. LuaRegisterFunc( "SetSearchAllPlayer", int( int ) , SetSearchAllPlayer );
  156. LuaRegisterFunc( "SetSearchRangeInfo", int( int , int ) , SetSearchRangeInfo );
  157. LuaRegisterFunc( "SetSearchAllNPC" , int( int ) , SetSearchAllNPC );
  158.  
  159. LuaRegisterFunc( "SetSearchAllNPC_ByGroupID" , int( int , int ) , SetSearchAllNPC_ByGroupID );
  160.  
  161. LuaRegisterFunc( "GetSearchResult" , int( ) , GetSearchResult );
  162. LuaRegisterFunc( "SetAttack" , bool( int , int ) , SetAttack );
  163. LuaRegisterFunc( "SetStopAttack" , bool( int ) , SetStopAttack );
  164. //----------------------------------------------------------------------------------------
  165. // °}Àç³]©w
  166. //----------------------------------------------------------------------------------------
  167. LuaRegisterFunc( "SetRoleCamp" , bool( int, const char* ) , SetRoleCamp );
  168. LuaRegisterFunc( "SetZoneCamp" , void( int ) , SetZoneCamp );
  169.  
  170. //----------------------------------------------------------------------------------------
  171. // ¼@±¡¬ÛÃö
  172. //----------------------------------------------------------------------------------------
  173. LuaRegisterFunc( "PlayMotion", void( int, int ), PlayMotion );
  174. LuaRegisterFunc( "PlayMotion_Self", void( int, int , int ), PlayMotion_Self );
  175. LuaRegisterFunc( "PlayMotionEx", void( int, int , int ), PlayMotionEx );
  176. LuaRegisterFunc( "SetPosture", void( int, int, int ), SetPosture );
  177. LuaRegisterFunc( "SetIdleMotion", void( int, int ), SetIdleMotion );
  178. LuaRegisterFunc( "SetDefIdleMotion", void( int, int ), SetDefIdleMotion );
  179.  
  180.  
  181. LuaRegisterFunc( "SetFightMode", void( int, int, int, int, int ), SetFightMode );
  182.  
  183. LuaRegisterFunc( "AdjustDir", bool( int, int ), AdjustDir );
  184. LuaRegisterFunc( "FaceObj", bool( int, int ), FaceObj );
  185. LuaRegisterFunc( "FaceFlag", void( int, int, int ), FaceFlag );
  186. LuaRegisterFunc( "MoveToFlagEnabled", bool( int, bool ), MoveToFlagEnabled );
  187. LuaRegisterFunc( "ClickToFaceEnabled", bool( int, bool ), ClickToFaceEnabled );
  188. //LuaRegisterFunc( "SetNpcNearPlayer", bool( int, int ), SetNpcNearPlayer );
  189. LuaRegisterFunc( "CastSpell", bool( int, int, int ), CastSpell );
  190. LuaRegisterFunc( "CastSpellLv", bool( int, int, int , int), CastSpellLv );
  191. LuaRegisterFunc( "CastSpellPos", bool( int , float , float , float , int , int ) , CastSpellPos );
  192. LuaRegisterFunc( "CancelBuff", bool( int, int ), CancelBuff );
  193. LuaRegisterFunc( "CancelBuff_NoEvent", bool( int, int ), CancelBuff_NoEvent );
  194.  
  195. LuaRegisterFunc( "ModifyBuff", bool( int, int , int , int ), ModifyBuff );
  196. LuaRegisterFunc( "CancelBuff_Pos", bool( int, int ), CancelBuff_Pos );
  197.  
  198. LuaRegisterFunc( "PlaySound", int( int, const char*, bool ), PlaySound );
  199. LuaRegisterFunc( "PlaySoundToPlayer", int( int, const char*, bool ), PlaySoundToPlayer );
  200.  
  201. LuaRegisterFunc( "PlayMusic", int( int, const char*, bool ), PlayMusic );
  202. LuaRegisterFunc( "PlayMusicToPlayer", int( int, const char*, bool ), PlayMusicToPlayer );
  203.  
  204. LuaRegisterFunc( "Play3DSound", int( int, const char*, bool ), Play3DSound );
  205. LuaRegisterFunc( "Play3DSoundToPlayer", int( int, const char*, bool ), Play3DSoundToPlayer );
  206.  
  207. LuaRegisterFunc( "StopSound", void( int, int ), StopSound );
  208.  
  209. LuaRegisterFunc( "MoveToPathPoint", void( int, int ), MoveToPathPoint );
  210. LuaRegisterFunc( "ScriptMessage", void( int, int, int, const char*, const char* ), ScriptMessage );
  211. LuaRegisterFunc( "LockObj", void( int, int, int ), LockObj );
  212. LuaRegisterFunc( "SetFollow", void( int, int ), SetFollow );
  213. LuaRegisterFunc( "SetCursorType", void( int, int ), SetCursorType );
  214. LuaRegisterFunc( "SetDelayPatrolTime", void( int, int ), SetDelayPatrolTime );
  215.  
  216. //----------------------------------------------------------------------------------------
  217. LuaRegisterFunc( "GetMoveFlagValue" , int( int , int , int ), GetMoveFlagValue );
  218. LuaRegisterFunc( "GetMoveFlagCount" , int( int ), GetMoveFlagCount );
  219. //----------------------------------------------------------------------------------------
  220. LuaRegisterFunc( "SendQuestClickObjResult", void( int, int, int, int ), SendQuestClickObjResult );
  221. LuaRegisterFunc( "SetQuestState", void( int, int, int ), SetQuestState );
  222. LuaRegisterFunc( "GetQuestState", int( int, int ), GetQuestState );
  223. //----------------------------------------------------------------------------------------
  224. LuaRegisterFunc( "CallSpeakLua", void( int, int, const char* ), CallSpeakLua );
  225. //----------------------------------------------------------------------------------------
  226. //Ū¼g¤k¹²¼Æ­È
  227. LuaRegisterFunc( "ReadServantValue", int( int, int ), ReadServantValue );
  228. LuaRegisterFunc( "WriteServantValue", bool( int, int, int ), WriteServantValue );
  229.  
  230. LuaRegisterFunc( "ReadServantFlag", bool( int, int ), ReadServantFlag );
  231. LuaRegisterFunc( "WriteServantFlag", bool( int, int, bool ), WriteServantFlag );
  232.  
  233.  
  234. // SCRIPT ®É¶¡±ø
  235. //----------------------------------------------------------------------------------------
  236. LuaRegisterFunc( "BeginCastBar", int( int, const char*, int, int, int, int ), BeginCastBar );
  237. LuaRegisterFunc( "BeginCastBarEvent", int( int, int, const char*, int, int, int, int, const char* ), BeginCastBarEvent );
  238. LuaRegisterFunc( "CheckCastBar", int( int ), CheckCastBar );
  239. LuaRegisterFunc( "EndCastBar", void( int, int ), EndCastBar );
  240. LuaRegisterFunc( "CheckCastBarStatus", int( int ), CheckCastBarStatus );
  241.  
  242. //----------------------------------------------------------------------------------------
  243.  
  244. //----------------------------------------------------------------------------------------
  245. LuaRegisterFunc( "DisableQuest", void( int, bool ), DisableQuest );
  246. LuaRegisterFunc( "SetScriptFlag", void( int, int, int ), SetScriptFlag );
  247. LuaRegisterFunc( "CheckScriptFlag", bool( int, int ), CheckScriptFlag );
  248. LuaRegisterFunc( "SetFlag", void( int, int, int ), SetScriptFlag );
  249. LuaRegisterFunc( "CheckFlag", bool( int, int ), CheckScriptFlag );
  250. LuaRegisterFunc( "CheckCardFlag", bool( int, int ), CheckCardFlag );
  251.  
  252. LuaRegisterFunc( "CheckCompleteQuest", bool( int, int ), CheckCompleteQuest );
  253. LuaRegisterFunc( "CheckAcceptQuest", bool( int, int ), CheckAcceptQuest );
  254.  
  255. LuaRegisterFunc( "GetDistance", int( int, int ), GetDistance );
  256. LuaRegisterFunc( "CheckDistance", bool( int, int, int ), CheckDistance );
  257. //----------------------------------------------------------------------------------------
  258. // ¹ï¸Ü¨t²Î¬ÛÃö
  259. //----------------------------------------------------------------------------------------
  260. LuaRegisterFunc( "AddSpeakOption", void( int, int, const char*, const char*, int ), AddSpeakOption );
  261. LuaRegisterFunc( "SetSpeakDetail", void( int, const char* ), SetSpeakDetail );
  262. LuaRegisterFunc( "LoadQuestOption", void( int ), LoadQuestOption );
  263. LuaRegisterFunc( "CloseSpeak", void( int ), CloseSpeak );
  264. //----------------------------------------------------------------------------------------
  265. // ¥ô°È¨t²Î¬ÛÃö
  266. //----------------------------------------------------------------------------------------
  267. LuaRegisterFunc( "CheckQuest", bool( int, int, int ), CheckQuest );
  268.  
  269. //----------------------------------------------------------------------------------------
  270. // ¼@±¡²¾°Ê¬ÛÃö
  271. //----------------------------------------------------------------------------------------
  272. LuaRegisterFunc( "SetPosByFlag", void( int, int, int ), SetPosByFlag );
  273. //--------------------------------------------------------------------------------
  274. // ¯S®í ´ú¸Õ¥Î«ü¥O
  275. //--------------------------------------------------------------------------------
  276. LuaRegisterFunc( "SetRoleEq_Player", bool( int, int, int ), SetRoleEq_Player );
  277. LuaRegisterFunc( "SetRoleEquip", void( int, int, int, int ), SetRoleEquip );
  278. //--------------------------------------------------------------------------------
  279. // ¥Û¸O¤¶­±«ü¥O SciptBorder
  280. //--------------------------------------------------------------------------------
  281. LuaRegisterFunc( "GetUseItemGUID", int( int ), GetUseItemGUID );
  282. LuaRegisterFunc( "GetObjNameByGUID", const char*( int ), GetObjNameByGUID );
  283. LuaRegisterFunc( "GetQuestDesc", const char*( int ), GetQuestDesc );
  284. LuaRegisterFunc( "GetQuestDetail", const char*( int, int ), GetQuestDetail );
  285.  
  286. LuaRegisterFunc( "ClearBorder", void( int ), ClearBorder );
  287. LuaRegisterFunc( "AddBorderPage", void( int, const char* ), AddBorderPage );
  288. LuaRegisterFunc( "ShowBorder", void( int, int, const char*, const char* ), ShowBorder );
  289. //LuaRegisterFunc( "SetBorderAcceptQuestLua", void( int ), SetBorderAcceptQuestLua );
  290.  
  291. //--------------------------------------------------------------------------------
  292. // ¶¤¥î¼@±¡«ü¥O
  293. //--------------------------------------------------------------------------------
  294. LuaRegisterFunc( "GetPartyID", int( int, int ), GetPartyID );
  295.  
  296. //--------------------------------------------------------------------------------
  297. // WorldVar
  298. //--------------------------------------------------------------------------------
  299. LuaRegisterFunc( "SetWorldVar", void( const char*, int ), SetWorldVar );
  300. LuaRegisterFunc( "GetWorldVar", int( const char* ), GetWorldVar );
  301.  
  302. //--------------------------------------------------------------------------------
  303. // ¼@±¡ªí
  304. //--------------------------------------------------------------------------------
  305. // Init_Hsiang();
  306. LuaRegisterFunc( "ItemSavePos" , bool( int ) , ItemSavePos );
  307. LuaRegisterFunc( "ItemTransportPos" , bool( ) , ItemTransportPos );
  308. LuaRegisterFunc( "CheckItemTransportPos" , bool( ) , CheckItemTransportPos );
  309.  
  310. LuaRegisterFunc( "CheckBuff" , bool( int , int ) , CheckBuff );
  311.  
  312. LuaRegisterFunc( "SetDir" , bool( int , float ) , SetDir );
  313. LuaRegisterFunc( "CalDir" , float( float , float) , CalDir );
  314. LuaRegisterFunc( "AdjustFaceDir" , bool( int, int, int ) , AdjustFaceDir );
  315.  
  316. LuaRegisterFunc( "ResetColdown" , bool( int ) , ResetColdown );
  317. LuaRegisterFunc( "ChangeZone" , bool( int , int , int , float , float , float , float ) , ChangeZone );
  318.  
  319.  
  320. LuaRegisterFunc( "DialogCreate" , bool( int,int,const char*) , DialogCreate );
  321. LuaRegisterFunc( "DialogSelectStr" , bool( int,const char*) , DialogSelectStr );
  322. LuaRegisterFunc( "DialogSendOpen" , bool( int ) , DialogSendOpen );
  323. LuaRegisterFunc( "DialogSetContent" , bool( int,const char*) , DialogSetContent );
  324. LuaRegisterFunc( "DialogGetResult" , int( int ) , DialogGetResult );
  325. LuaRegisterFunc( "DialogGetInputResult" , const char* ( int ) , DialogGetInputResult );
  326. LuaRegisterFunc( "DialogGetInputCheckResult" , int ( int ) , DialogGetInputCheckResult );
  327.  
  328. LuaRegisterFunc( "DialogClose" , bool( int ) , DialogClose );
  329. LuaRegisterFunc( "DialogSetTitle" , void( int,const char*) , DialogSetTitle );
  330.  
  331.  
  332.  
  333. //---------------------------------------------------------------------------------
  334. LuaRegisterFunc( "SetLook" , bool( int,int,int,int,int ) , SetLook );
  335.  
  336. LuaRegisterFunc( "SetCardFlag" , bool( int,int,bool ) , SetCardFlag );
  337. LuaRegisterFunc( "GetCardFlag" , bool( int,int ) , GetCardFlag );
  338. //---------------------------------------------------------------------------------
  339. LuaRegisterFunc( "OpenCreateNewGuild" , int( ) , OpenCreateNewGuild );
  340. LuaRegisterFunc( "OpenGuildContribution" , int( ) , OpenGuildContribution );
  341. LuaRegisterFunc( "SetGuildReady" , int( int ) , SetGuildReady );
  342. // LuaRegisterFunc( "AddGuildValue" , int( int,int,int,int ) , AddGuildValue );
  343. LuaRegisterFunc( "GuildRank" , int( int ) , GuildRank );
  344. LuaRegisterFunc( "GuildMemberCount" , int( int ) , GuildMemberCount );
  345. LuaRegisterFunc( "GuildState" , int( int ) , GuildState );
  346. LuaRegisterFunc( "OpenGuildShop" , int( ) , OpenGuildShop );
  347. LuaRegisterFunc( "GuildInfo" , int( int , int ) , GuildInfo );
  348. LuaRegisterFunc( "GetGuildName" , const char*( int ) , GetGuildName );
  349. LuaRegisterFunc( "AddGuildResource" , bool( int,int,int,int,int,int,int,int, const char* ) , AddGuildResource );
  350. LuaRegisterFunc( "CheckInMyGuildHouse" , bool(int) , CheckInMyGuildHouse );
  351.  
  352. LuaRegisterFunc( "ReadGuildBuilding" , int( int , int ) , ReadGuildBuilding );
  353. LuaRegisterFunc( "WriteGuildBuilding" , int( int , int , int ) , WriteGuildBuilding );
  354. //---------------------------------------------------------------------------------
  355. LuaRegisterFunc( "SaveHomePoint" , bool( int ) , SaveHomePoint );
  356. LuaRegisterFunc( "GoHomePoint" , bool( int ) , GoHomePoint );
  357. //---------------------------------------------------------------------------------
  358. LuaRegisterFunc( "OpenExchangeLottery" , bool( ) , OpenExchangeLottery );
  359. LuaRegisterFunc( "OpenBuyLottery" , bool( ) , OpenBuyLottery );
  360. LuaRegisterFunc( "OpenRare3EqExchangeItem" , bool( ) , OpenRare3EqExchangeItem);
  361. //--------------------------------------------------------------------------------
  362. LuaRegisterFunc( "OpenClientMenu" , bool( int , int ) , OpenClientMenu );
  363. LuaRegisterFunc( "RunningMsg" , bool( int , int , const char* ) , RunningMsg );
  364. LuaRegisterFunc( "RunningMsgEx" , bool( int , int , int , const char* ) , RunningMsgEx );
  365.  
  366. LuaRegisterFunc( "SaveReturnPos" , bool( int , int , float , float , float , float ) , SaveReturnPos );
  367. LuaRegisterFunc( "SaveReturnPos_ZoneDef" , bool( int ) , SaveReturnPos_ZoneDef );
  368. LuaRegisterFunc( "GoReturnPos" , bool( int ) , GoReturnPos );
  369. LuaRegisterFunc( "GoReturnPosByNPC" , bool( int , int ) , GoReturnPosByNPC );
  370. LuaRegisterFunc( "OpenVisitHouse" , bool( bool ) , OpenVisitHouse );
  371. LuaRegisterFunc( "BuildHouse" , bool( int , int ) , BuildHouse );
  372. LuaRegisterFunc( "AddHouseEnergy" , bool( int , int ) , AddHouseEnergy );
  373. LuaRegisterFunc( "SetHouseType" , bool( int ) , SetHouseType );
  374. LuaRegisterFunc( "GetHouseType" , int( ) , GetHouseType );
  375.  
  376. //--------------------------------------------------------------------------------
  377. LuaRegisterFunc( "GenerateMine" , void( int, int , int, int ) , GenerateMine );
  378. LuaRegisterFunc( "SetCrystalID" , void( int, int ) , SetCrystalID );
  379.  
  380. LuaRegisterFunc( "SetStandardWearEq" , bool( int ) , SetStandardWearEq );
  381. LuaRegisterFunc( "SetStandardClearMagicPointAndSetTP" , bool( int ) , SetStandardClearMagicPointAndSetTP );
  382.  
  383. LuaRegisterFunc( "GetItemInfo" , int(int,int,int,int) , GetItemInfo );
  384. LuaRegisterFunc( "SetItemInfo" , int(int,int,int,int,int) , SetItemInfo );
  385. LuaRegisterFunc( "OpenCombinEQ" , void(int,int,int) , OpenCombinEQ );
  386. LuaRegisterFunc( "GetName" , const char*(int) , GetName );
  387. LuaRegisterFunc( "AssistMagic" , bool( int , int , int ) , AssistMagic );
  388. LuaRegisterFunc( "FixAllEq" , bool( int , int ) , FixAllEq );
  389. LuaRegisterFunc( "DesignLog" , bool( int,int,const char* ) , DesignLog );
  390.  
  391. LuaRegisterFunc( "GetLocaltime" , int ( int, int ) , GetLocaltime );
  392. LuaRegisterFunc( "GetSystime" , int ( int ) , GetSystime );
  393.  
  394. LuaRegisterFunc( "EmptyPacketCount" , int ( int ) , EmptyPacketCount );
  395. LuaRegisterFunc( "QueuePacketCount" , int ( int ) , QueuePacketCount );
  396.  
  397. LuaRegisterFunc( "PKFlag" , void ( int ) , PKFlag );
  398.  
  399. LuaRegisterFunc( "OpenPlotGive" , void ( int , bool , int ) , OpenPlotGive );
  400. LuaRegisterFunc( "GetBodyFreeSlot" , int ( int ) , GetBodyFreeSlot );
  401.  
  402. LuaRegisterFunc( "ClearCampRevicePoint" , void ( void ) , ClearCampRevicePoint );
  403. LuaRegisterFunc( "SetCampRevicePoint" , bool( int,int,float,float,float,const char*) , SetCampRevicePoint );
  404.  
  405. LuaRegisterFunc( "ResetObjDailyQuest" , void( int ) , ResetObjDailyQuest );
  406. LuaRegisterFunc( "GetDailyQuestCount" , int( int ) , GetDailyQuestCount );
  407.  
  408.  
  409. LuaRegisterFunc( "SetBattleGroundObjClickState" , void( int, int, int ) , SetBattleGroundObjClickState );
  410. LuaRegisterFunc( "SetRoleCampID" , bool( int, int ) , SetRoleCampID );
  411. LuaRegisterFunc( "GetRoleCampID" , int( int ) , GetRoleCampID );
  412. LuaRegisterFunc( "ResetRoleCampID" , bool( int ) , ResetRoleCampID );
  413. LuaRegisterFunc( "BeginMultiStringPlot" , bool( int, const char*, int ) , BeginMultiStringPlot );
  414. LuaRegisterFunc( "ChangeObjID" , void( int, int ) , ChangeObjID );
  415.  
  416. LuaRegisterFunc( "DelJob" , bool( int,int) , DelJob );
  417. LuaRegisterFunc( "GetBattleGroundRoomID" , int( int) , GetBattleGroundRoomID );
  418. // BattleGround
  419. //-----------------------------------------------------------------------------------------------------------------------
  420.  
  421. LuaRegisterFunc( "GetScore" , int( int, int ) , GetScore );
  422. LuaRegisterFunc( "SetScore" , void( int, int, int ) , SetScore );
  423. LuaRegisterFunc( "GetLandMark" , int( int, int ) , GetLandMark );
  424. LuaRegisterFunc( "SetLandMark" , void( int, int, int ) , SetLandMark );
  425. LuaRegisterFunc( "GetVar" , int( int, int ) , GetVar );
  426. LuaRegisterFunc( "SetVar" , void( int, int, int ) , SetVar );
  427. LuaRegisterFunc( "SetLandMarkInfo" , void( int, int, int, float, float, float, const char*, int) , SetLandMarkInfo );
  428.  
  429. LuaRegisterFunc( "GetTeamID" , int( int ) , GetTeamID );
  430. LuaRegisterFunc( "SendBGInfoToClient" , void( int, int ) , SendBGInfoToClient );
  431.  
  432. LuaRegisterFunc( "GetNumTeam" , int( void) , GetNumTeam );
  433. LuaRegisterFunc( "GetNumQueueMember" , int( int, int ) , GetNumQueueMember );
  434.  
  435.  
  436. LuaRegisterFunc( "SetBattleGroundObjCampID" , void( int, int ) , SetBattleGroundObjCampID );
  437. LuaRegisterFunc( "SetBattleGroundObjForceFlagID" , void( int, int ) , SetBattleGroundObjForceFlagID );
  438. LuaRegisterFunc( "SetBattleGroundObjGUIDForceFlag" , void( int, int ) , SetBattleGroundObjGUIDForceFlag );
  439. LuaRegisterFunc( "MoveRoleToBattleGround" , void( int, int, int, int, float, float, float, float ), MoveRoleToBattleGround );
  440.  
  441. LuaRegisterFunc( "GetNumTeamMember" , int( int,int ) , GetNumTeamMember );
  442. LuaRegisterFunc( "GetDisconnectTeamMember" , int( int, int ) , GetDisconnectTeamMember );
  443. LuaRegisterFunc( "GetNumEnterTeamMember" , int( int, int ) , GetNumEnterTeamMember );
  444. LuaRegisterFunc( "GetMaxTeamMember" , int( void ) , GetMaxTeamMember );
  445.  
  446. LuaRegisterFunc( "Revive" , void( int, int, float, float, float, float ) , Revive );
  447.  
  448.  
  449. LuaRegisterFunc( "AddTeamItem" , void( int, int, int, int ) , AddTeamItem );
  450. LuaRegisterFunc( "GetGUIDByDBID" , int( int ) , GetGUIDByDBID );
  451.  
  452. LuaRegisterFunc( "GetEnterTeamMemberInfo" , int( int, int, int ) , GetEnterTeamMemberInfo );
  453. LuaRegisterFunc( "JoinBattleGround" , void( int, int, int, int ) , JoinBattleGround );
  454. LuaRegisterFunc( "JoinBattleGroundWithTeam" , void( int, int ) , JoinBattleGroundWithTeam );
  455.  
  456. LuaRegisterFunc( "LeaveBattleGround" , void( int ) , LeaveBattleGround );
  457.  
  458. LuaRegisterFunc( "AddHonor" , void( int, int ) , AddHonor );
  459. LuaRegisterFunc( "AddTeamHonor" , void( int, int, int ) , AddTeamHonor );
  460.  
  461. LuaRegisterFunc( "AddRankPoint" , void( int, int ) , AddRankPoint );
  462. LuaRegisterFunc( "AddTeamRankPoint" , void( int, int, int ) , AddTeamRankPoint );
  463. //-----------------------------------------------------------------------------------------------------------------------
  464.  
  465. LuaRegisterFunc( "SetZoneReviveScript" , void( const char* ) , SetZoneReviveScript );
  466. LuaRegisterFunc( "SetZonePVPScript" , void( const char* ) , SetZonePVPScript );
  467. LuaRegisterFunc( "EndBattleGround" , void( int, int ) , EndBattleGround );
  468. LuaRegisterFunc( "CloseBattleGround" , void( int ) , CloseBattleGround );
  469.  
  470. LuaRegisterFunc( "GetZoneID" , int( int ) , GetZoneID );
  471. LuaRegisterFunc( "CheckPassword" , bool( int , const char* ) , CheckPassword );
  472. LuaRegisterFunc( "CheckOnlinePlayer" , bool( int ) , CheckOnlinePlayer );
  473. //---------------------------------------------------------------------------------
  474. //³]©wÃö«Y
  475. LuaRegisterFunc( "SetRelation" , bool( int , int , int , float , int , float ) , SetRelation );
  476. LuaRegisterFunc( "GetRelation" , int( int , int ) , GetRelation );
  477. LuaRegisterFunc( "GetRelationLv" , float( int , int ) , GetRelationLv );
  478. LuaRegisterFunc( "SetRelationLv" , bool( int , int , float ) , SetRelationLv );
  479.  
  480. LuaRegisterFunc( "GetRelation_DBID" , int( int , int ) , GetRelation_DBID );
  481. LuaRegisterFunc( "GetRelation_Name" , const char*( int , int ) , GetRelation_Name );
  482. LuaRegisterFunc( "GetRelation_Lv" , float( int , int ) , GetRelation_Lv );
  483. LuaRegisterFunc( "GetRelation_Relation" , int( int , int ) , GetRelation_Relation );
  484.  
  485. LuaRegisterFunc( "SetRelation_Lv" , bool( int , int , float ) , SetRelation_Lv );
  486. LuaRegisterFunc( "SetRelation_Relation" , bool( int , int , int ) , SetRelation_Relation );
  487. LuaRegisterFunc( "CallPlayer_DBID" , bool( int , int ) , CallPlayer_DBID );
  488. LuaRegisterFunc( "GotoPlayer_DBID" , bool( int , int ) , GotoPlayer_DBID );
  489.  
  490. LuaRegisterFunc( "AddSkillValue" , bool(int,int,float) , AddSkillValue );
  491. LuaRegisterFunc( "AddRecipe" , void(int,int) , AddRecipe );
  492. LuaRegisterFunc( "GetRecipeList" , void(int,int) , GetRecipeList );
  493. LuaRegisterFunc( "SetCustomTitleString" , bool(int,const char*) , SetCustomTitleString );
  494.  
  495. LuaRegisterFunc( "SysKeyValue" , int(const char*) , SysKeyValue );
  496. LuaRegisterFunc( "LanguageType" , int( ) , LanguageType );
  497. LuaRegisterFunc( "GetMoneyKeyValue" , int(const char*,int) , GetMoneyKeyValue );
  498.  
  499. LuaRegisterFunc( "GetServerDataLanguage" , const char*() , GetServerDataLanguage );
  500. LuaRegisterFunc( "GetServerStringLanguage" , const char*() , GetServerStringLanguage );
  501.  
  502. LuaRegisterFunc( "GetLastHidePlotStr" , const char*(int) , GetLastHidePlotStr );
  503. //////////////////////////////////////////////////////////////////////////
  504. //¨ú±o¨Ï¥Îª««~ªº¸ê®Æ
  505. //////////////////////////////////////////////////////////////////////////
  506. LuaRegisterFunc( "UseItemDestroy" , bool( ) , UseItemDestroy );
  507. LuaRegisterFunc( "UseItemDurable" , int( ) , UseItemDurable );
  508. LuaRegisterFunc( "CheckUseItem" , bool( ) , CheckUseItem );
  509. //////////////////////////////////////////////////////////////////////////
  510. //¤½·|«Î
  511. //////////////////////////////////////////////////////////////////////////
  512. LuaRegisterFunc( "BuildGuildHouse" , bool( int ) , BuildGuildHouse );
  513. LuaRegisterFunc( "OpenVisitGuildHouse" , bool( bool ) , OpenVisitGuildHouse );
  514. //////////////////////////////////////////////////////////////////////////
  515. LuaRegisterFunc( "AddBuff" , bool( int, int, int, int ) , AddBuff );
  516. LuaRegisterFunc( "BuffCount" , int( int ) , BuffCount );
  517. LuaRegisterFunc( "BuffInfo" , int( int,int,int ) , BuffInfo );
  518.  
  519. LuaRegisterFunc( "WriteGameObjInfo_Double" , bool( int , const char* , double) , WriteGameObjInfo_Double);
  520. LuaRegisterFunc( "GameObjInfo_Double" , double( int , const char* ) , GameObjInfo_Double);
  521. LuaRegisterFunc( "GameObjInfo_Int" , double( int , const char* ) , GameObjInfo_Double);
  522. LuaRegisterFunc( "GameObjInfo_Str" , const char*( int , const char* ) , GameObjInfo_Str );
  523. //////////////////////////////////////////////////////////////////////////
  524. // AI ³B²z
  525. //////////////////////////////////////////////////////////////////////////
  526. LuaRegisterFunc( "HateListCount" , int( int ) , HateListCount );
  527. LuaRegisterFunc( "HateListInfo" , double( int ,int,int) , HateListInfo );
  528. LuaRegisterFunc( "EnableNpcAI" , bool( int,bool ) , EnableNpcAI );
  529. LuaRegisterFunc( "ClearHateList" , bool( int,int ) , ClearHateList );
  530. LuaRegisterFunc( "SetModeEx" , bool( int,int,bool ) , SetModeEx );
  531. LuaRegisterFunc( "GetModeEx" , bool( int,int ) , GetModeEx );
  532. LuaRegisterFunc( "CheckLine" , bool( int,float,float,float ) , CheckLine );
  533. LuaRegisterFunc( "GetHeight" , float( float,float,float ) , GetHeight );
  534. LuaRegisterFunc( "SetHateListPoint" , bool( int , int , float ) , SetHateListPoint );
  535. LuaRegisterFunc( "ModifyRangeHatePoint" , bool( int , int , float ) , ModifyRangeHatePoint );
  536.  
  537. //////////////////////////////////////////////////////////////////////////
  538. LuaRegisterFunc( "CheckBit" , bool( int , int ) , CheckBit );
  539. LuaRegisterFunc( "SetBitValue" , int( int, int, int ) , SetBitValue );
  540. LuaRegisterFunc( "CheckRelation" , bool( int , int , int ) , CheckRelation );
  541. LuaRegisterFunc( "TouchTomb" , bool( ) , TouchTomb );
  542. LuaRegisterFunc( "ClientSkyType" , void( int ) , ClientSkyType );
  543. //////////////////////////////////////////////////////////////////////////
  544. //µ¹¤©ª÷¿ú
  545. //////////////////////////////////////////////////////////////////////////
  546. LuaRegisterFunc( "AddMoney" , bool( int,int,int ) , AddMoney );
  547. LuaRegisterFunc( "AddMoney_Bonus" , bool( int,int,int ) , AddMoney_Bonus );
  548. LuaRegisterFunc( "AddMoney_Account" , bool( int,int,int ) , AddMoney_Account );
  549. LuaRegisterFunc( "AddMoneyEx_Account" , bool( int,int,int,bool ) , AddMoneyEx_Account );
  550. LuaRegisterFunc( "AddSpeicalCoin" , bool( int,int,int,int ) , AddSpeicalCoin );
  551. LuaRegisterFunc( "CheckSpeicalCoin" , bool( int,int,int ) , CheckSpeicalCoin );
  552.  
  553. LuaRegisterFunc( "AttachCastMotionTool" , void( int,int ) , AttachCastMotionTool );
  554. LuaRegisterFunc( "AttachTool" , void( int,int,const char* ) , AttachTool );
  555.  
  556. LuaRegisterFunc( "StartClientCountDown" , void( int,int,int,int, int, int, const char*) , StartClientCountDown );
  557. LuaRegisterFunc( "StopClientCountDown" , void( int ) , StopClientCountDown );
  558.  
  559. LuaRegisterFunc( "SetArenaScore" , void( int,int,int,int,float ) , SetArenaScore );
  560. LuaRegisterFunc( "GetArenaScore" , float( int,int,int,int ) , GetArenaScore );
  561.  
  562. LuaRegisterFunc( "GetNumTeamMember" , int( int,int ) , GetNumTeamMember );
  563. LuaRegisterFunc( "SetMemberVar" , void( int, int,int,int, int ) , SetMemberVar );
  564. LuaRegisterFunc( "GetMemberVar" , int( int, int,int, int ) , GetMemberVar );
  565.  
  566. LuaRegisterFunc( "GetWorldQueueRule" , int() , GetWorldQueueRule );
  567. //////////////////////////////////////////////////////////////////////////
  568. //Ãdª«¼@±¡
  569. LuaRegisterFunc( "GiveItem_Pet" , bool( int,int,int,int,int,int ) , GiveItem_Pet );
  570. LuaRegisterFunc( "SetHourseColor" , bool( int,int,int,int,int ) , SetHourseColor );
  571.  
  572. LuaRegisterFunc( "ReCalPetLv" , bool( int, int ) , ReCalPetLv );
  573.  
  574.  
  575. LuaRegisterFunc( "CopyRoomMonster" , bool( int,int) , CopyRoomMonster );
  576. LuaRegisterFunc( "DelRoomMonster" , bool( int) , DelRoomMonster );
  577.  
  578. LuaRegisterFunc( "FindMapID" , int( float , float , float ) , FindMapID );
  579. LuaRegisterFunc( "CheckMapID" , bool( float , float , float , int ) , CheckMapID );
  580.  
  581. LuaRegisterFunc( "CheckAttachAble" , bool( int ) , CheckAttachAble );
  582. LuaRegisterFunc( "CheckAttach" , bool( int , int ) , CheckAttach );
  583. LuaRegisterFunc( "AttachObj" , bool( int , int , int , const char* , const char* ) , AttachObj );
  584. LuaRegisterFunc( "DetachObj" , bool( int ) , DetachObj );
  585.  
  586. LuaRegisterFunc( "MagicInterrupt" , bool( int ) , MagicInterrupt );
  587. LuaRegisterFunc( "ReCalculate" , bool( int ) , ReCalculate );
  588. // LuaRegisterFunc( "PlayerDBIDtoGUID" , int( int ) , PlayerDBIDtoGUID );
  589. //////////////////////////////////////////////////////////////////////////
  590. //¤½·|¾Ô
  591. LuaRegisterFunc( "AddGuildWarScore" , bool( int,int ) , AddGuildWarScore );
  592. LuaRegisterFunc( "AddGuildWarEnergy" , bool( int,int ) , AddGuildWarEnergy );
  593. LuaRegisterFunc( "AddGuildWarPlayerValue" , bool( int,int,int ) , AddGuildWarPlayerValue);
  594. LuaRegisterFunc( "GetGuildWarPlayerValue" , int( int,int ) , GetGuildWarPlayerValue);
  595. // LuaRegisterFunc( "AddGuildWarValue" , bool( int,int,int ) , AddGuildWarValue );
  596. // LuaRegisterFunc( "GetGuildWarValue" , int( int,int ) , GetGuildWarValue );
  597. LuaRegisterFunc( "GetGuildWarScore" , int( int ) , GetGuildWarScore );
  598. LuaRegisterFunc( "GetGuildWarEnergy" , int( int ) , GetGuildWarEnergy );
  599. LuaRegisterFunc( "GetGuildWarScore_ByID" , int( int,int ) , GetGuildWarScore_ByID );
  600. LuaRegisterFunc( "GetGuildName_ByID" , const char*( int,int ) , GetGuildName_ByID );
  601.  
  602. LuaRegisterFunc( "SendGuildWarFinalScore" , void( int,int,int,int,int ) , SendGuildWarFinalScore );
  603.  
  604. //////////////////////////////////////////////////////////////////////////
  605. LuaRegisterFunc( "SetSmallGameMenuType" , bool( int,int,int ) , SetSmallGameMenuType );
  606. LuaRegisterFunc( "SetSmallGameMenuValue" , bool( int, int,int,int ) , SetSmallGameMenuValue );
  607. LuaRegisterFunc( "SetSmallGameMenuStr" , bool( int, int,int, const char* ) , SetSmallGameMenuStr );
  608. //////////////////////////////////////////////////////////////////////////
  609. LuaRegisterFunc( "SearchTreasure" , int( int) , SearchTreasure );
  610. LuaRegisterFunc( "GetTreasure" , bool( int, int,int ) , GetTreasure );
  611.  
  612. LuaRegisterFunc( "StopMove" , bool( int, bool) , StopMove );
  613. //////////////////////////////////////////////////////////////////////////
  614. LuaRegisterFunc( "PartyInstanceLv" , int( int ) , PartyInstanceLv );
  615. LuaRegisterFunc( "WriteInstanceArg" , bool( int , int ) , WriteInstanceArg );
  616. LuaRegisterFunc( "ReadInstanceArg" , int( int, int ) , ReadInstanceArg );
  617. //////////////////////////////////////////////////////////////////////////
  618. LuaRegisterFunc( "GameTime" , int( ) , GameTime );
  619. LuaRegisterFunc( "ReadAccountFlag" , bool( int , int ) , ReadAccountFlag );
  620. LuaRegisterFunc( "WriteAccountFlag" , bool( int , int , bool ) , WriteAccountFlag );
  621. LuaRegisterFunc( "ReadAccountFlagValue" , int( int , int , int ) , ReadAccountFlagValue );
  622. LuaRegisterFunc( "WriteAccountFlagValue" , bool( int , int , int , int ) , WriteAccountFlagValue );
  623. //////////////////////////////////////////////////////////////////////////
  624. //³]©wMap icon & tip
  625. LuaRegisterFunc( "ResetMapMark" , bool( int ) , ResetMapMark );
  626. LuaRegisterFunc( "SetMapMark" , bool( int , int , float , float , float , const char* , int ) , SetMapMark );
  627. LuaRegisterFunc( "ClsMapMark" , bool( int , int ) , ClsMapMark );
  628.  
  629. //////////////////////////////////////////////////////////////////////////
  630. //³]©w°Ï°ìÅܼÆ
  631. LuaRegisterFunc( "ResetRoomValue" , bool( int ) , ResetRoomValue );
  632. LuaRegisterFunc( "SetRoomValue" , bool( int , int , int ) , SetRoomValue );
  633. LuaRegisterFunc( "GetRoomValue" , int( int , int ) , GetRoomValue );
  634. LuaRegisterFunc( "ClsRoomValue" , bool( int , int ) , ClsRoomValue );
  635. //////////////////////////////////////////////////////////////////////////
  636. //±Æ§Ç³B²z
  637. LuaRegisterFunc( "SortList_Reset" , void( ) , SortList_Reset );
  638. LuaRegisterFunc( "SortList_Push" , void( int , int ) , SortList_Push );
  639. LuaRegisterFunc( "SortList_Sort" , int( ) , SortList_Sort );
  640. LuaRegisterFunc( "SortList_Get" , int( ) , SortList_Get );
  641. //////////////////////////////////////////////////////////////////////////
  642. LuaRegisterFunc( "SetExSkill" , bool( int , int , int, int ) , SetExSkill );
  643. LuaRegisterFunc( "DelExSkill" , bool( int , int, int ) , DelExSkill );
  644.  
  645. LuaRegisterFunc( "CreateObj_ByObjPoint" , int( int , int , const char* ) , CreateObj_ByObjPoint );
  646.  
  647. //¶i¥X¥@¬É
  648. LuaRegisterFunc( "EnterWorld" , bool( int , int , int , int , float , float , float , float ) , EnterWorld );
  649. LuaRegisterFunc( "LeaveWorld" , bool( int ) , LeaveWorld );
  650.  
  651. //±Æ¦æº]
  652. LuaRegisterFunc( "Billboard_Update" , bool( int ,int ,int) , Billboard_Update );
  653. LuaRegisterFunc( "Billboard_Add" , bool( int ,int ,int) , Billboard_Add );
  654. LuaRegisterFunc( "Billboard_TopUpdate" , bool( int ,int ,int) , Billboard_TopUpdate );
  655.  
  656. //¶}±Ò§I´«Å]¥Ûªº¤¶­±
  657. LuaRegisterFunc( "OpenMagicStoneShop" , bool( int ,int ,int,int) , OpenMagicStoneShop );
  658. //////////////////////////////////////////////////////////////////////////
  659. //³]©wÁY©ñ¤j¤p
  660. LuaRegisterFunc( "SetModelScale" , bool( int ,float ) , SetModelScale );
  661.  
  662. LuaRegisterFunc( "ClientEvent" , void( int , int , int , const char* ) , ClientEvent );
  663. LuaRegisterFunc( "ClientEvent_Range" , void( int , int , const char* ) , ClientEvent_Range );
  664. //////////////////////////////////////////////////////////////////////////
  665. LuaRegisterFunc( "GetDBKeyValue" , int( const char* ) , GetDBKeyValue );
  666. LuaRegisterFunc( "LockHP" , bool ( int , int , const char* ) , LockHP );
  667. LuaRegisterFunc( "SpecialMove" , bool ( int , float , float , float , int ) , SpecialMove );
  668. //////////////////////////////////////////////////////////////////////////
  669. //¥ø¹º½u¬q²ÕÀÉ
  670. LuaRegisterFunc( "ClearLineBlock" , void ( int ) , ClearLineBlock );
  671. LuaRegisterFunc( "AddLineBlock" , void ( int , int , float , float , float , float ) , AddLineBlock );
  672. LuaRegisterFunc( "DelLineBlock" , bool ( int , int ) , DelLineBlock );
  673. LuaRegisterFunc( "CheckLineBlock" , bool ( int , float , float , float , float ) , CheckLineBlock );
  674. //////////////////////////////////////////////////////////////////////////
  675. //µù¥U C ªº¨ç¦¡
  676. //////////////////////////////////////////////////////////////////////////
  677. LuaRegisterFunc( "GetTickCount" , int( ) , GetTickCount );
  678.  
  679. //////////////////////////////////////////////////////////////////////////
  680.  
  681. //////////////////////////////////////////////////////////////////////////
  682. // Public Encounter ¬ÛÃö
  683. //////////////////////////////////////////////////////////////////////////
  684. LuaRegisterFunc("PE_Start" , void(int, int) , PE_Start );
  685. LuaRegisterFunc("PE_AddPE" , void(const char*, const char*, int, int) , PE_AddPE );
  686. LuaRegisterFunc("PE_AddRegion" , void(int, int) , PE_AddRegion );
  687. LuaRegisterFunc("PE_AddPhase" , void(int, int, const char*, const char*, int, int, int, int) , PE_AddPhase );
  688. LuaRegisterFunc("PE_JumpToPhase" , void(int, int) , PE_JumpToPhase );
  689. LuaRegisterFunc("PE_SetCallBackOnSuccess" , void(int, const char*) , PE_SetCallBackOnSuccess );
  690. LuaRegisterFunc("PE_SetCallBackOnFail" , void(int, const char*) , PE_SetCallBackOnFail );
  691. LuaRegisterFunc("PE_SetCallBackOnBalance" , void(int, const char*) , PE_SetCallBackOnBalance );
  692. LuaRegisterFunc("PE_SetCallBackOnPlayerEnter" , void(int, const char*) , PE_SetCallBackOnPlayerEnter );
  693. LuaRegisterFunc("PE_SetCallBackOnPlayerLeave" , void(int, const char*) , PE_SetCallBackOnPlayerLeave );
  694.  
  695. LuaRegisterFunc("PE_SetPhaseBonusScore" , void(int, float, float) , PE_SetPhaseBonusScore );
  696. LuaRegisterFunc("PE_GivePlayerScore" , void(int, int, float) , PE_GivePlayerScore );
  697. LuaRegisterFunc("PE_GivePartyScore" , void(int, int, float) , PE_GivePartyScore );
  698. LuaRegisterFunc("PE_GiveAllPlayersScore" , void(int, float) , PE_GiveAllPlayersScore );
  699. LuaRegisterFunc("PE_GetPlayerScore" , float(int, int) , PE_GetPlayerScore );
  700. LuaRegisterFunc("PE_GetPartyScore" , void(int, int, const char*) , PE_GetPartyScore );
  701. LuaRegisterFunc("PE_GetAllPlayersScore" , void(int, const char*) , PE_GetAllPlayersScore );
  702. LuaRegisterFunc("PE_GetTopNPlayersScore" , void(int, int, const char*) , PE_GetTopNPlayersScore );
  703. LuaRegisterFunc("PE_SetPlayerScore" , void(int, int, float) , PE_SetPlayerScore );
  704. LuaRegisterFunc("PE_CountHatePoint" , void(int, int) , PE_CountHatePoint );
  705. LuaRegisterFunc("PE_GetActivePhaseIndex" , int(int) , PE_GetActivePhaseIndex );
  706. LuaRegisterFunc("PE_GetActivePlayerGUIDCount" , int(int) , PE_GetActivePlayerGUIDCount );
  707. LuaRegisterFunc("PE_GetActivePlayerGUID" , int(int) , PE_GetActivePlayerGUID );
  708. LuaRegisterFunc("PE_SetScoreVisible" , void(int, bool) , PE_SetScoreVisible );
  709. LuaRegisterFunc("PE_SetUIVisible" , void(int, bool) , PE_SetUIVisible );
  710. LuaRegisterFunc("PE_RefreshConfig" , void( ) , PE_RefreshConfig );
  711.  
  712. LuaRegisterFunc("PE_PH_AddObjective_Greater" , void(int, int, int, const char*, const char*, const char*, int, int, bool) , PE_PH_AddObjective_Greater);
  713. LuaRegisterFunc("PE_PH_AddObjective_Smaller" , void(int, int, int, const char*, const char*, const char*, int, int, bool) , PE_PH_AddObjective_Smaller);
  714. LuaRegisterFunc("PE_PH_AddObjective_Equal" , void(int, int, int, const char*, const char*, const char*, int, int, bool) , PE_PH_AddObjective_Equal);
  715. LuaRegisterFunc("PE_PH_AddObjective_NotEqual" , void(int, int, int, const char*, const char*, const char*, int, int, bool) , PE_PH_AddObjective_NotEqual);
  716. LuaRegisterFunc("PE_PH_AddObjective_EqualAndGreater" , void(int, int, int, const char*, const char*, const char*, int, int, bool) , PE_PH_AddObjective_EqualAndGreater);
  717. LuaRegisterFunc("PE_PH_AddObjective_EqualAndSmaller" , void(int, int, int, const char*, const char*, const char*, int, int, bool) , PE_PH_AddObjective_EqualAndSmaller);
  718. LuaRegisterFunc("PE_PH_AddObjective_TimeLimit" , void(int, int, int, const char*, const char*, const char*, int, int, bool) , PE_PH_AddObjective_TimeLimit);
  719. LuaRegisterFunc("PE_PH_SetCallBackOnSuccess" , void(int, const char*) , PE_PH_SetCallBackOnSuccess);
  720. LuaRegisterFunc("PE_PH_SetCallBackOnFail" , void(int, const char*) , PE_PH_SetCallBackOnFail );
  721. LuaRegisterFunc("PE_PH_SetBonusScore" , void(int, int, float, float) , PE_PH_SetBonusScore );
  722. LuaRegisterFunc("PE_PH_SetNextPhase" , void(int, int, int) , PE_PH_SetNextPhase );
  723.  
  724. LuaRegisterFunc("PE_OB_SetCallBackOnAchieve" , void(int, const char*) , PE_OB_SetCallBackOnAchieve );
  725. LuaRegisterFunc("PE_OB_SetNextPhase" , void(int, int, int, int) , PE_OB_SetNextPhase );
  726. LuaRegisterFunc("PE_OB_SetVisible" , void(int, int, int, bool) , PE_OB_SetVisible );
  727.  
  728. LuaRegisterFunc("PE_GetVar" , int(const char*) , PE_VAR_GetVar );
  729. LuaRegisterFunc("PE_SetVar" , void(const char*, int) , PE_VAR_SetVar );
  730. LuaRegisterFunc("PE_AddVar" , void(const char*, int) , PE_VAR_AddVar );
  731.  
  732. //////////////////////////////////////////////////////////////////////////
  733. LuaRegisterFunc("GetIniValueSetting" , int( const char* ) , GetIniValueSetting );
  734.  
  735. //////////////////////////////////////////////////////////////////////////
  736. LuaRegisterFunc( "WeekInstancesReset" , bool( ) , WeekInstancesReset );
  737.  
  738. LuaRegisterFunc("GetMemory" , int() , GetMemory );
  739. LuaRegisterFunc("SetCameraFollowUnit" , void(int, int, int, int, int) , SetCameraFollowUnit );
  740.  
  741. LUA_VMClass::RegFunction( "CallPlot", CallPlot );
  742. LUA_VMClass::RegFunction( "DebugCheck", DebugCheck );
  743.  
  744. // Lua custom functions added by Prologe60.
  745.  
  746. LuaRegisterFunc("CheckFlagPlayer", bool(const char*, const char*), CheckFlagPlayer);
  747.  
  748. return true;
  749. }
  750. //---------------------------------------------------------------------------------
  751. int GetSystemTime ( int iTimeID );
  752. bool Release()
  753. {
  754. Release_Hsiang();
  755. return true;
  756. };
  757. //---------------------------------------------------------------------------------
  758. //¨ú±o¼@±¡¾Ö¦³ªÌªºID
  759. int OwnerID ( )
  760. {
  761. PlotRegStruct* T = LUA_VMClass::ProcReg();
  762. if( T == NULL )
  763. return 0;
  764. return T->OwnerID;
  765. }
  766. //---------------------------------------------------------------------------------
  767. //¨ú±o¼@±¡¥Ø¼ÐªºID
  768. int TargetID( )
  769. {
  770. PlotRegStruct* T = LUA_VMClass::ProcReg();
  771. if( T == NULL )
  772. return 0;
  773. return T->TargetID;
  774. }
  775. //----------------------------------------------------------------------------------------
  776. //¨ú¶Ã¼Æ
  777. int Random( int Range )
  778. {
  779. if( Range <= 0 )
  780. return 0;
  781.  
  782. if( Range >= 0x8000)
  783. {
  784. unsigned RandValue = unsigned( rand() * 0x8000 + rand() ) % Range;
  785. return RandValue;
  786. }
  787.  
  788. return rand() % Range;
  789. }
  790. //----------------------------------------------------------------------------------------
  791. // Plot ==> void SysPrint( Str ¤º®e )
  792. void SysPrint( const char* Str )
  793. {
  794. if( Str == NULL )
  795. return;
  796. printf( Str);
  797. }
  798. //----------------------------------------------------------------------------------------
  799. int MoveTarget( int ID , int TargetID )
  800. {
  801. //¼È®É
  802. BaseItemObject *OtherClass = BaseItemObject::GetObj( ID );
  803. if( OtherClass == NULL )
  804. return 0;
  805. RoleDataEx* Target = Global::GetRoleDataByGUID( TargetID );
  806. if( Target == NULL )
  807. return 0;
  808.  
  809. RoleDataEx *Other = OtherClass->Role();
  810. if( Other->IsAttack() )
  811. return 20;
  812.  
  813. float NX , NZ , NY;
  814. Global::SearchAttackNode( Other , Target , NX , NY , NZ );
  815.  
  816. OtherClass->Path()->SetPos( Other->X() , Other->Y() , Other->Z() );
  817. OtherClass->Path()->Target( NX , NY , NZ , Other->X() , Other->Y() , Other->Z() );
  818.  
  819. int Time = (int)( OtherClass->Path()->TotalLength()*10 / Other->TempData.Attr.Fin.MoveSpeed );
  820.  
  821. return Time;
  822. }
  823. //----------------------------------------------------------------------------------------
  824. //©wÂI ²¾°Ê
  825. int Move( int ID , float x , float y , float z )
  826. {
  827. //¼È®É
  828. BaseItemObject *OtherClass = BaseItemObject::GetObj( ID );
  829. if( OtherClass == NULL )
  830. return 0;
  831.  
  832. RoleDataEx *Other = OtherClass->Role();
  833. if( Other->IsAttack() )
  834. return 20;
  835.  
  836. OtherClass->Path()->SetPos( Other->X() , Other->Y() , Other->Z() );
  837. OtherClass->Path()->Target( x , y , z , Other->X() , Other->Y() , Other->Z() );
  838. int Time = (int)( OtherClass->Path()->TotalLength()*10 / Other->TempData.Attr.Fin.MoveSpeed );
  839. return Time;
  840. }
  841. //---------------------------------------------------------------------------------
  842. //©wÂIª½½u²¾°Ê
  843. int MoveDirect( int ID , float x , float y , float z )
  844. {
  845. //¼È®É
  846. BaseItemObject *OtherClass = BaseItemObject::GetObj( ID );
  847. if( OtherClass == NULL )
  848. return 0;
  849.  
  850. RoleDataEx *Other = OtherClass->Role();
  851. if( Other->IsAttack() )
  852. return 20;
  853.  
  854. if( Other->BaseData.Mode.Gravity == false )
  855. OtherClass->Path()->SetPos_NoCheckHeight( Other->X() , Other->Y() , Other->Z() );
  856. else
  857. OtherClass->Path()->SetPos( Other->X() , Other->Y() , Other->Z() );
  858. OtherClass->Path()->Target( x , y , z, false );
  859. int Time = 10;
  860. if( Other->BaseData.Mode.Gravity != false )
  861. Time = (int)( OtherClass->Path()->TotalLength()*10 / Other->TempData.Attr.Fin.MoveSpeed );
  862. else
  863. Time = (int)( OtherClass->Path()->TotalLength3D()*10 / Other->TempData.Attr.Fin.MoveSpeed );
  864. return Time;
  865. }
  866. //---------------------------------------------------------------------------------
  867. //³]©w¶Ã¼Æ²¾°Ê
  868. void SetRandMove( int ID , int Range , int Freq, int Dist )
  869. {
  870. BaseItemObject *OtherClass = BaseItemObject::GetObj( ID );
  871. if( OtherClass == NULL )
  872. return;
  873.  
  874. NPC_RandomMoveStruct& RandomMove = OtherClass->Role()->TempData.RandomMove;
  875.  
  876. RandomMove.Active = __max( 1 , Freq );
  877. RandomMove.CenterX = OtherClass->Role()->Pos()->X;
  878. RandomMove.CenterZ = OtherClass->Role()->Pos()->Z;
  879.  
  880. RandomMove.CountDown = 0;
  881. RandomMove.MaxRange = (float)Range;
  882. RandomMove.Dist = (float)Dist;
  883.  
  884. RandomMove.Enable = true;
  885.  
  886. return;
  887. }
  888. //---------------------------------------------------------------------------------
  889. //²£¥Íª«¥ó
  890. int CreateObj( int OrgObjID , float x , float y , float z , float dir , int count )
  891. {
  892. PlotRegStruct* T = LUA_VMClass::ProcReg();
  893.  
  894. int ObjID = Global::CreateObj( OrgObjID , x , y , z , dir , count );
  895.  
  896. RoleDataEx* Role = Global::GetRoleDataByGUID( ObjID );
  897. if( Role != NULL )
  898. {
  899. RoleDataEx* Owner = Global::GetRoleDataByGUID( T->OwnerID );
  900. if( Owner != NULL )
  901. Role->BaseData.RoomID = Owner->RoomID();
  902.  
  903. Print( LV2 , "CreateObj" , "GUID = %d OrgObjID=%d roomid=%d , Lua=%s" , Role->GUID(), OrgObjID , Role->BaseData.RoomID , T->FuncName );
  904. }
  905.  
  906. return ObjID;//Global::CreateObj( ObjID , x , y , z , dir , count );
  907. }
  908. //§Q¥ÎºX¤l®y¼Ð²£¥Íª«¥ó FlagID = -1 ¥Nªí¥Î¶Ã¼Æ
  909. int CreateObjByFlag( int OrgObjID , int FlagObjID , int FlagID , int count )
  910. {
  911. PlotRegStruct* T = LUA_VMClass::ProcReg();
  912. FlagPosInfo* FlagObj = FlagPosClass::GetFlag( FlagObjID , FlagID );
  913. if( FlagObj == NULL )
  914. return -1;
  915.  
  916. int ObjID = Global::CreateObj( OrgObjID , FlagObj->X , FlagObj->Y , FlagObj->Z , FlagObj->Dir , count );
  917.  
  918. RoleDataEx* Role = Global::GetRoleDataByGUID( ObjID );
  919. if( Role != NULL )
  920. {
  921. RoleDataEx* Owner = Global::GetRoleDataByGUID( T->OwnerID );
  922. if( Owner != NULL )
  923. Role->BaseData.RoomID = Owner->RoomID();
  924. Print( LV2 , "CreateObj" , "GUID = %d OrgObjID=%d roomID=%d , Lua=%s" , Role->GUID() , OrgObjID , Role->BaseData.RoomID , T->FuncName );
  925. }
  926.  
  927. return ObjID;
  928. }
  929. //---------------------------------------------------------------------------------
  930. // Type
  931. // EM_RoleValue_X
  932. // EM_RoleValue_Y
  933. // EM_RoleValue_Z
  934. int GetMoveFlagValue( int FlagObjID , int FlagID , int Type )
  935. {
  936. FlagPosInfo* FlagObj = FlagPosClass::GetFlag( FlagObjID , FlagID );
  937. if( FlagObj == NULL )
  938. return 0;
  939. switch( Type )
  940. {
  941. case EM_RoleValue_X:
  942. return int( FlagObj->X );
  943. break;
  944. case EM_RoleValue_Y:
  945. return int( FlagObj->Y );
  946. break;
  947. case EM_RoleValue_Z:
  948. return int( FlagObj->Z );
  949. break;
  950. case EM_RoleValue_Dir:
  951. return int( FlagObj->Dir );
  952. break;
  953. }
  954. return 0;
  955. }
  956. //---------------------------------------------------------------------------------
  957. //¨ú±o³oÃþºX¤l¦³´X­Ó
  958. int GetMoveFlagCount( int FlagObjID )
  959. {
  960. return FlagPosClass::Count( FlagObjID );
  961. }
  962. //---------------------------------------------------------------------------------
  963. //¥[¤JÅã¹³ª«¥ó
  964. bool AddtoPartition( int GItemID , int RoomID )
  965. {
  966. BaseItemObject* OtherObj = Global::GetObj( GItemID );
  967. if( OtherObj == NULL )
  968. return false;
  969. if( OtherObj->Role()->IsDestroy() != false )
  970. return false;
  971.  
  972. OtherObj->Role()->TempData.HideInfo.Init();
  973.  
  974. if( OtherObj->Role()->SelfData.AutoPlot.Size() != 0 )
  975. OtherObj->PlotVM()->CallLuaFunc( OtherObj->Role()->SelfData.AutoPlot.Begin() , OtherObj->GUID() );
  976.  
  977. GameObjDbStructEx* pObj = Global::GetObjDB( OtherObj->Role()->BaseData.ItemInfo.OrgObjID );
  978.  
  979. if( pObj && ( pObj->IsNPC() || pObj->IsQuestNPC() ) )
  980. {
  981. if( strlen( pObj->NPC.szLuaInitScript ) != 0 )
  982. {
  983. OtherObj->PlotVM()->CallLuaFunc( pObj->NPC.szLuaInitScript , OtherObj->GUID() );
  984. }
  985. }
  986.  
  987. return Global::CheckClientLoading_AddToPartition( GItemID , RoomID );
  988. }
  989. //---------------------------------------------------------------------------------
  990. //¥[¤JÅã¹³ª«¥ó
  991. bool DelFromPartition( int GItemID )
  992. {
  993. BaseItemObject* OtherObj = Global::GetObj( GItemID );
  994. if( OtherObj == NULL )
  995. return false;
  996. RoleDataEx* other = OtherObj->Role();
  997.  
  998.  
  999. PlotRegStruct* T = LUA_VMClass::ProcReg();
  1000. LuaHideInfoStruct& HideInfo = other->TempData.HideInfo;
  1001. HideInfo.Init();
  1002. RoleDataEx* owner = Global::GetRoleDataByGUID( T->OwnerID );
  1003. if( owner )
  1004. {
  1005. HideInfo.OwnerDBID = owner->DBID();
  1006. HideInfo.OwnerOrgID = owner->OrgObjID();
  1007. }
  1008. HideInfo.PlotStr = T->FuncName;
  1009.  
  1010. OtherObj->PlotVM()->EndAllLuaFunc();
  1011. T->Type = PlotRun;
  1012.  
  1013. return Global::DelFromPartition( GItemID );
  1014. }
  1015. //---------------------------------------------------------------------------------
  1016. //¥[¤JÅã¹³ª«¥ó
  1017. bool Show( int GItemID , int RoomID )
  1018. {
  1019. BaseItemObject* OtherObj = Global::GetObj( GItemID );
  1020. if( OtherObj == NULL )
  1021. return false;
  1022. OtherObj->Role()->TempData.HideInfo.Init();
  1023. return Global::CheckClientLoading_AddToPartition( GItemID , RoomID );
  1024. }
  1025. //---------------------------------------------------------------------------------
  1026. //¥[¤JÅã¹³ª«¥ó
  1027. bool Hide( int GItemID )
  1028. {
  1029. BaseItemObject* OtherObj = Global::GetObj( GItemID );
  1030. if( OtherObj == NULL )
  1031. return false;
  1032. RoleDataEx* other = OtherObj->Role();
  1033. PlotRegStruct* T = LUA_VMClass::ProcReg();
  1034. LuaHideInfoStruct& HideInfo = other->TempData.HideInfo;
  1035. HideInfo.Init();
  1036. RoleDataEx* owner = Global::GetRoleDataByGUID( T->OwnerID );
  1037. if( owner )
  1038. {
  1039. HideInfo.OwnerDBID = owner->DBID();
  1040. HideInfo.OwnerOrgID = owner->OrgObjID();
  1041. }
  1042. HideInfo.PlotStr = T->FuncName;
  1043.  
  1044. return Global::DelFromPartition( GItemID );
  1045. }
  1046. //---------------------------------------------------------------------------------
  1047. //°õ¦æ¼@±¡
  1048. bool RunPlot( int GItemID , const char* PlotName )
  1049. {
  1050. BaseItemObject* OtherObj = Global::GetObj( GItemID );
  1051. if( OtherObj == NULL )
  1052. return false;
  1053.  
  1054. PlotRegStruct* T = LUA_VMClass::ProcReg();
  1055. OtherObj->PlotVM()->CallLuaFunc( PlotName , T->OwnerID , 0 );
  1056.  
  1057. return true;
  1058. }
  1059. //---------------------------------------------------------------------------------
  1060. //³]©wNPC¦º¤`
  1061. void NPCDead( int DeadID , int KillID )
  1062. {
  1063. BaseItemObject *DeadObj = BaseItemObject::GetObj( DeadID );
  1064. BaseItemObject *KillObj = BaseItemObject::GetObj( KillID );
  1065.  
  1066. if( DeadObj == NULL || KillObj == NULL )
  1067. {
  1068. Print( LV3 , "NPCDead" , "Dead==NULL or Kill==NULL DeadID=%d KillID=%d",DeadID , KillID );
  1069. return;
  1070. }
  1071.  
  1072.  
  1073. DeadObj->Role()->Dead( true );
  1074. //----------------------------------------------------------------------
  1075. //±¼¸¨ª««~³]©w
  1076. // for( int i = 0 ; i < KillObj->Role()->TempData.Sys.KillRate ; i++ )
  1077. // if( DeadObj->Role()->OwnerGUID() == -1 )
  1078. Global::DeadDropItem( DeadID , KillID );
  1079. //----------------------------------------------------------------------
  1080. }
  1081. //---------------------------------------------------------------------------------
  1082. //§R°£ª«¥ó
  1083. bool DelObj( int ItemID )
  1084. {
  1085. PlotRegStruct* T = LUA_VMClass::ProcReg();
  1086. BaseItemObject* Obj = BaseItemObject::GetObj( ItemID );
  1087. if( Obj == NULL || Obj->Role()->IsMirror() )
  1088. {
  1089. return false;
  1090. }
  1091.  
  1092. if( Obj->Role()->IsPlayer() != false )
  1093. {
  1094. return false;
  1095. }
  1096.  
  1097. //¾Ú±¡§R°£ª«¥ó¡A¤£§R°£¸ê®Æ®wªº
  1098. Obj->ReleaseDBID( );
  1099. Obj->Role()->Base.DBID = -1 ;
  1100.  
  1101. Obj->Destroy( T->FuncName );
  1102. /*
  1103. //°£¿ù¸ê°T
  1104. PlotRegStruct* T = LUA_VMClass::ProcReg();
  1105. if( T != NULL )
  1106. {
  1107. Print( Def_PrintLV2 , "DelObj" , "LiveTime(0)Plot Delete NPC Name=%s DBID =%d GUID=%d OrgID=%d Function=%s"
  1108. , Global::GetRoleName_ASCII( Obj->Role() ).c_str()
  1109. , Obj->Role()->DBID()
  1110. , Obj->Role()->GUID()
  1111. , Obj->Role()->BaseData.ItemInfo.OrgObjID
  1112. , T->FuncName );
  1113. }
  1114. */
  1115. return true;
  1116. }
  1117. //---------------------------------------------------------------------------------
  1118. //­«³]NPC¸ê®Æ
  1119. //¦^¶Ç»Ý­n¦h¤[ªº®É¶¡¤~¥i¥H­«¥Í
  1120. int ReSetNPCInfo( int OwnerID )
  1121. {
  1122. // RoleDataEx *Owner = Global::GetDataByGUID( OwnerID );
  1123. BaseItemObject* OwnerObj = BaseItemObject::GetObj( OwnerID );
  1124.  
  1125. if( OwnerObj == NULL )
  1126. {
  1127. Print( LV3 , "ReSetNPCInfo" , "Owner == NULL OwnerID=%d",OwnerID );
  1128. return -1;
  1129. }
  1130. RoleDataEx* Owner = OwnerObj->Role();
  1131. GameObjDbStructEx* OrgDB = Global::GetObjDB( Owner->BaseData.ItemInfo.OrgObjID );
  1132.  
  1133.  
  1134. if( OrgDB->IsEmpty() )
  1135. return -1;
  1136.  
  1137. if( Owner->BaseData.Mode.Revive == false )
  1138. return -1;
  1139.  
  1140.  
  1141.  
  1142. if( strlen( Owner->RoleName() ) == 0 )
  1143. {
  1144. for( int i = 0 ; i < 2 ; i++ )
  1145. {
  1146. if( Random( 100000 ) < OrgDB->NPC.RaiseChangeRate[i] )
  1147. {
  1148. GameObjDbStructEx* NewNpcDB = Global::GetObjDB( OrgDB->NPC.RaiseChangeNPCID[i] );
  1149. if( NewNpcDB->IsNPC() != false )
  1150. {
  1151. Owner->BaseData.ItemInfo.OrgObjID = OrgDB->NPC.RaiseChangeNPCID[i];
  1152. //Owner->BaseData.RoleName = NewNpcDB->Name;
  1153. break;
  1154. }
  1155. }
  1156. }
  1157. }
  1158.  
  1159.  
  1160. OwnerObj->Path()->ClearPath();
  1161.  
  1162. Owner->InitNPCData();
  1163. Owner->StopMove();
  1164.  
  1165. if( Owner->IsNPC() )
  1166. {
  1167. //¨ú±o­«¥Í¦ì¸m(¦pªG¦³«Ü¦h²¾°ÊºX¤l¿ï¤@°¦­«¥Í )
  1168. vector< NPC_MoveBaseStruct >& MoveListInfo = *(OwnerObj->NPCMoveInfo()->MoveInfo());
  1169.  
  1170. if( MoveListInfo.size() != 0 && OrgDB->NPC.NoRandReborn == false )
  1171. {
  1172. int FlagID = int( rand() % MoveListInfo.size() );
  1173. NPC_MoveBaseStruct& MoveInfo = MoveListInfo[ FlagID ];
  1174. Owner->BaseData.Pos.X = MoveInfo.X;
  1175. Owner->BaseData.Pos.Y = MoveInfo.Y;
  1176. Owner->BaseData.Pos.Z = MoveInfo.Z;
  1177. (static_cast< NpcAIBaseClass* >(OwnerObj->AI()))->SetNpcFlagPos( FlagID-1 );
  1178. (static_cast< NpcAIBaseClass* >(OwnerObj->AI()))->GetMoveStatus()->Type = EM_NPCMoveFlagAIType_MoveToNext;
  1179. }
  1180. else
  1181. {
  1182. Owner->BaseData.Pos = Owner->SelfData.RevPos;
  1183. (static_cast< NpcAIBaseClass* >(OwnerObj->AI()))->SetNpcFlagPos( -1 );
  1184. (static_cast< NpcAIBaseClass* >(OwnerObj->AI()))->GetMoveStatus()->Type = EM_NPCMoveFlagAIType_MoveToNext;
  1185. }
  1186. }
  1187.  
  1188. //­pºâ­«¥Í®É¶¡
  1189. Owner->InitCal();
  1190.  
  1191. if( Global::St()->IsDisableNPCReviveTime != false )
  1192. return 5;
  1193.  
  1194. return OrgDB->ReviveTime;
  1195. }
  1196.  
  1197. //---------------------------------------------------------------------------------
  1198. /*
  1199. bool GetFlag( int GItemID , int FlagID )
  1200. {
  1201. BaseItemObject* OtherObj = Global::GetObj( GItemID );
  1202. if( OtherObj == NULL )
  1203. return false;
  1204. RoleDataEx* Role = OtherObj->Role();
  1205.  
  1206.  
  1207. return Role->PlayerBaseData->Flag.GetFlag( FlagID );
  1208. }*/
  1209.  
  1210. bool GiveBodyItem_Note( int GItemID , int OrgID , int Count , const char* Note )
  1211. {
  1212. PlotRegStruct* T = LUA_VMClass::ProcReg();
  1213. RoleDataEx* NPC = NULL;
  1214. if( T != NULL )
  1215. {
  1216. NPC = Global::GetRoleDataByGUID( T->OwnerID );
  1217. if( NPC == NULL || NPC->IsPlayer() )
  1218. {
  1219. NPC = Global::GetRoleDataByGUID( T->TargetID );
  1220. }
  1221. }
  1222.  
  1223. RoleDataEx* ItemRole = Global::GetRoleDataByGUID( GItemID );
  1224. if( ItemRole == NULL )
  1225. {
  1226. Print( LV3 , "GiveBodyItem" , "Item==NULL ItemID=%d OrgID=%d Count=%d",GItemID, OrgID ,Count );
  1227. return false;
  1228. }
  1229.  
  1230. GameObjDbStructEx* GiveItemOrgDB = Global::GetObjDB( OrgID );
  1231. if( GiveItemOrgDB->IsTreasure() )
  1232. {
  1233. for( int i = 0 ; i < Count ; i++ )
  1234. ItemRole->GiveTreasure_Gamble( OrgID , NULL );
  1235. }
  1236. else if (GiveItemOrgDB->IsItem() == false )
  1237. {
  1238. return ItemRole->GiveItem( OrgID , Count , EM_ActionType_PlotGive , NPC , Note );
  1239. }
  1240. else
  1241. {
  1242. ItemFieldStruct Item;
  1243. if( Global::NewItemInit( Item , OrgID , 0 ) == false )
  1244. {
  1245. return false;
  1246. }
  1247. Item.Count = Count;
  1248. Item.OrgObjID = OrgID;
  1249.  
  1250.  
  1251. GameObjDbStructEx* OrgDB = Global::GetObjDB( OrgID );
  1252.  
  1253. if( OrgDB == NULL )
  1254. return false;
  1255.  
  1256. if( OrgDB->IsArmor() || ( OrgDB->IsWeapon() && OrgDB->Item.WeaponPos != EM_WeaponPos_Ammo ) )
  1257. {
  1258. Item.Count = 1;
  1259. }
  1260.  
  1261. if( ItemRole->GiveItem( Item , EM_ActionType_PlotGive , NPC , Note ) == false )
  1262. return false;
  1263.  
  1264. if( OrgDB->Mode.DepartmentStore != false )
  1265. Global::Log_DepartmentStore ( Item , EM_ActionType_PlotGive , Item.Count , 0 , 0 , 0 , ItemRole->DBID() );
  1266. }
  1267.  
  1268. return true;
  1269.  
  1270. }
  1271. bool GiveBodyItemEx( int GItemID , int OrgID , int Count , int RuneVolume , int Inherent1 , int Inherent2 , int Inherent3 , int Inherent4 , int Inherent5 )
  1272. {
  1273. PlotRegStruct* T = LUA_VMClass::ProcReg();
  1274. RoleDataEx* NPC = NULL;
  1275. if( T != NULL )
  1276. {
  1277. NPC = Global::GetRoleDataByGUID( T->OwnerID );
  1278. if( NPC == NULL || NPC->IsPlayer() )
  1279. {
  1280. NPC = Global::GetRoleDataByGUID( T->TargetID );
  1281. }
  1282. }
  1283.  
  1284.  
  1285. RoleDataEx* Target = Global::GetRoleDataByGUID( GItemID );
  1286. if( Target == NULL )
  1287. {
  1288. Print( LV3 , "GiveBodyItem" , "Item==NULL ItemID=%d OrgID=%d Count=%d",GItemID, OrgID ,Count );
  1289. return false;
  1290. }
  1291. int Inherent[5] = { Inherent1 , Inherent2 , Inherent3 , Inherent4 , Inherent5 };
  1292.  
  1293. for( int i = 0 ; i < 5 ; i++ )
  1294. {
  1295. GameObjDbStructEx* OrgDB = Global::GetObjDB( Inherent[0] );
  1296. if( !OrgDB->IsAttribute() )
  1297. {
  1298. Inherent[i] = 0;
  1299. break;
  1300. }
  1301.  
  1302. }
  1303.  
  1304. if( Count == 0 )
  1305. Count = 1;
  1306.  
  1307. ItemFieldStruct Item;
  1308. if( Global::NewItemInit( Item , OrgID , 0 ) == false )
  1309. {
  1310. return false;
  1311. }
  1312. Item.Count = Count;
  1313. Item.OrgObjID = OrgID;
  1314.  
  1315.  
  1316. GameObjDbStructEx* OrgDB = Global::GetObjDB( OrgID );
  1317.  
  1318. if( OrgDB == NULL )
  1319. return false;
  1320.  
  1321. if( OrgDB->IsArmor() || ( OrgDB->IsWeapon() && OrgDB->Item.WeaponPos != EM_WeaponPos_Ammo ) )
  1322. {
  1323. Item.Count = 1;
  1324. Item.RuneVolume = RuneVolume;
  1325.  
  1326. for( int i = 0 ; i < 5 ; i++ )
  1327. {
  1328. if( Inherent[i] == 0 )
  1329. break;
  1330. Item.Inherent( i , Inherent[i] );
  1331. }
  1332. }
  1333.  
  1334.  
  1335. if( Target->GiveItem( Item , EM_ActionType_PlotGive , NPC , "" ) == false )
  1336. return false;
  1337.  
  1338. if( OrgDB->Mode.DepartmentStore != false )
  1339. Global::Log_DepartmentStore ( Item , EM_ActionType_PlotGive , Item.Count , 0 , 0 , 0 , Target->DBID() );
  1340.  
  1341. return true;
  1342. }
  1343. //---------------------------------------------------------------------------------
  1344. //µ¹¤©ª«?
  1345. //¦^¶Ç 0 ¥Nªí¥¢±Ñ 1 ¥Nªí¦¨?
  1346. bool GiveBodyItem( int GItemID , int OrgID , int Count )
  1347. {
  1348.  
  1349. bool resultado = false;
  1350.  
  1351. return GiveBodyItem_Note( GItemID , OrgID , Count , "" );
  1352.  
  1353. }
  1354. //---------------------------------------------------------------------------------
  1355. //§R°£¨­¤Wªº¬Yª««~
  1356. //¦^¶Ç 0 ¥Nªí¥¢±Ñ 1 ¥Nªí¦¨?
  1357. bool DelBodyItem( int GItemID , int OrgID , int Count )
  1358. {
  1359. RoleDataEx* Item = Global::GetRoleDataByGUID( GItemID );
  1360. if( Item == NULL )
  1361. {
  1362. Print( LV3 , "DelBodyItem" , "Item==NULL ItemID=%d OrgID=%d Count=%d",GItemID, OrgID ,Count);
  1363. return false;
  1364. }
  1365.  
  1366. if( Item->DelBodyItem( OrgID , Count , EM_ActionType_PlotDestory ) == false )
  1367. {
  1368. return false;
  1369. }
  1370. return true;
  1371. }
  1372. //---------------------------------------------------------------------------------
  1373. //­pºâ¨­¤W¬Y¤@¼Ëª««~¦h¤Ö­Ó ( Body, Queue )
  1374. //¦^¶Ç ¼Æ¶q
  1375. int CountBodyItem( int GItemID , int OrgID )
  1376. {
  1377. RoleDataEx* Item = Global::GetRoleDataByGUID( GItemID );
  1378. if( Item == NULL )
  1379. {
  1380. Print( LV3 , "CountBodyItem" , "Item==NULL GItemID=%d OrgID=%d ",GItemID, OrgID );
  1381.  
  1382. return false;
  1383. }
  1384. int Count = Item->CalBodyItemCount( OrgID ) + Item->CountItemFromQueue( OrgID );
  1385. return Count;
  1386. }
  1387. //---------------------------------------------------------------------------------
  1388. //­pºâ¦¹¨¤¦â¦@¦³¦h¤Ö­Ó ( Bank Body EQ Queue )
  1389. //¦^¶Ç ¼Æ¶q
  1390. int CountItem( int GItemID , int OrgID )
  1391. {
  1392. RoleDataEx* Item = Global::GetRoleDataByGUID( GItemID );
  1393. if( Item == NULL )
  1394. {
  1395. Print( LV3 , "CountItem" , "Item==NULL GItemID=%d OrgID=%d ",GItemID, OrgID );
  1396.  
  1397. return false;
  1398. }
  1399. int Count = Item->CalBodyItemCount( OrgID ) + Item->CalBankItemCount( OrgID ) + Item->CalEqItemCount( OrgID ) + Item->CountItemFromQueue( OrgID );
  1400. return Count;
  1401. }
  1402. //---------------------------------------------------------------------------------
  1403.  
  1404. //°T®§
  1405. bool Msg( int GItemID , const char* Str )
  1406. {
  1407. RoleDataEx* Item = Global::GetRoleDataByGUID( GItemID );
  1408. if( Item == NULL )
  1409. return false;
  1410.  
  1411. Item->Msg( CharToWchar( Str ).c_str() );
  1412. return true;
  1413. }
  1414.  
  1415. //---------------------------------------------------------------------------------
  1416. //±K»y
  1417. bool Tell( int SendID , int SayID , const char* Str )
  1418. {
  1419. RoleDataEx* Item = Global::GetRoleDataByGUID( SendID );
  1420. RoleDataEx* SayItem = Global::GetRoleDataByGUID( SayID );
  1421. if( Item == NULL || SayItem == NULL )
  1422. return false;
  1423.  
  1424. char szName[1024];
  1425.  
  1426. if( SayItem->IsPlayer() == false )
  1427. {
  1428. //Sys111280_name
  1429. sprintf_s( szName , sizeof(szName), "Sys%d_name", SayItem->BaseData.ItemInfo.OrgObjID );
  1430. }
  1431. else
  1432. {
  1433. MyStrcpy( szName, Global::GetRoleName( SayItem ) , sizeof(szName) );
  1434. }
  1435.  
  1436. Item->Tell( szName , Str );
  1437. return true;
  1438. }
  1439. //---------------------------------------------------------------------------------
  1440. //±K»y
  1441. bool SayTo( int SendID , int SayID , const char* Str )
  1442. {
  1443. RoleDataEx* Item = Global::GetRoleDataByGUID( SendID );
  1444. RoleDataEx* SayItem = Global::GetRoleDataByGUID( SayID );
  1445. if( Item == NULL || SayItem == NULL )
  1446. return false;
  1447.  
  1448. NetSrv_Talk::SayTo( SendID , SayID , Str );
  1449. return true;
  1450. }
  1451. //---------------------------------------------------------------------------------
  1452. //½d³ò »¡¸Ü
  1453. bool Say( int GItemID , const char* Str )
  1454. {
  1455. RoleDataEx* Item = Global::GetRoleDataByGUID( GItemID );
  1456. if( Item == NULL )
  1457. return false;
  1458.  
  1459. Item->Say( Str );
  1460.  
  1461.  
  1462.  
  1463. return true;
  1464. }
  1465.  
  1466. //NPC ½d³ò »¡¸Ü ¼o¸Ü
  1467. bool NpcSay( int GItemID , const char* Str )
  1468. {
  1469. RoleDataEx* Item = Global::GetRoleDataByGUID( GItemID );
  1470. if( Item == NULL )
  1471. return false;
  1472.  
  1473. NetSrv_Talk::Range( GItemID , true , Str, true );
  1474.  
  1475. return true;
  1476. }
  1477. //---------------------------------------------------------------------------------
  1478. //½d³ò »¡¸Ü
  1479. bool Yell( int GItemID, const char* Str, int iRange )
  1480. {
  1481. RoleDataEx* Item = Global::GetRoleDataByGUID( GItemID );
  1482. if( Item == NULL )
  1483. return false;
  1484.  
  1485. NetSrv_Talk::Yell( GItemID, true, Str, iRange );
  1486. return true;
  1487. }
  1488. //---------------------------------------------------------------------------------
  1489. //¨¤¦âª«¥ó¸ê®ÆŪ¨ú
  1490. //¦WºÙ : RoleName Hp Mp ....
  1491. int ReadRoleValue( int GItemID , int Type )
  1492. {
  1493. RoleDataEx* Item = Global::GetRoleDataByGUID( GItemID );
  1494. if( Item == NULL )
  1495. {
  1496. Print( LV1 , "ReadRoleValue" , "Item==NULL" );
  1497. return 0;
  1498. }
  1499. return Item->GetValue_Int( (RoleValueName_ENUM)Type );
  1500. }
  1501. //---------------------------------------------------------------------------------
  1502. double ReadRoleValuefloat( int GItemID , int Type )
  1503. {
  1504. RoleDataEx* Item = Global::GetRoleDataByGUID( GItemID );
  1505. if( Item == NULL )
  1506. {
  1507. Print( LV1 , "ReadRoleValue" , "Item==NULL" );
  1508. return 0;
  1509. }
  1510. return Item->GetValue( (RoleValueName_ENUM)Type );
  1511. }
  1512. //---------------------------------------------------------------------------------
  1513. //¨¤¦âª«¥ó¸ê®Æ¼g¤J
  1514. bool WriteRoleValue( int GItemID , int Type , double Value )
  1515. {
  1516. PlotRegStruct* T = LUA_VMClass::ProcReg();
  1517. if( T == NULL )
  1518. return false;
  1519.  
  1520. RoleDataEx* NPC = Global::GetRoleDataByGUID( T->OwnerID );
  1521. if( NPC == NULL || NPC->IsNPC() == false )
  1522. {
  1523. NPC = Global::GetRoleDataByGUID( T->TargetID );
  1524. if( NPC == NULL || NPC->IsNPC() == false )
  1525. NPC = NULL;
  1526. }
  1527.  
  1528. RoleDataEx* Item = Global::GetRoleDataByGUID( GItemID );
  1529. if( Item == NULL )
  1530. {
  1531. Print( LV1 , "ReadRoleValue", "Item==NULL" );
  1532. return false;
  1533. }
  1534. Item->SetValue( (RoleValueName_ENUM)Type , Value , NPC );
  1535.  
  1536. if( EM_RoleValue_GoodEvil == Type )
  1537. {
  1538. Global::GoodEvilProc( Item , 0 );
  1539. NetSrv_OtherChild::SendRange_GoodEvilValue( Item );
  1540. }
  1541.  
  1542. return true;
  1543.  
  1544. }
  1545. //---------------------------------------------------------------------------------
  1546. //¨¤¦âª«¥ó¸ê®Æ¼g¤J
  1547. bool AddRoleValue( int GItemID , int Type , double Value )
  1548. {
  1549. PlotRegStruct* T = LUA_VMClass::ProcReg();
  1550. if( T == NULL )
  1551. return false;
  1552.  
  1553. RoleDataEx* NPC = Global::GetRoleDataByGUID( T->OwnerID );
  1554. if( NPC == NULL || NPC->IsNPC() == false )
  1555. {
  1556. NPC = Global::GetRoleDataByGUID( T->TargetID );
  1557. if( NPC == NULL || NPC->IsNPC() == false )
  1558. NPC = NULL;
  1559. }
  1560.  
  1561. RoleDataEx* Item = Global::GetRoleDataByGUID( GItemID );
  1562. if( Item == NULL )
  1563. {
  1564. Print( LV3 , "ReadRoleValue", "Item==NULL" );
  1565. return false;
  1566. }
  1567. Item->AddValue( (RoleValueName_ENUM)Type , Value );
  1568.  
  1569. if( EM_RoleValue_GoodEvil == Type )
  1570. {
  1571. NetSrv_OtherChild::SendRange_GoodEvilValue( Item );
  1572. Global::GoodEvilProc( Item , 0 );
  1573. }
  1574.  
  1575. return true;
  1576.  
  1577. }
  1578. //---------------------------------------------------------------------------------
  1579. //¨¤¦âª«¥ó¸ê®Æ¼g¤J
  1580. bool AddExp( int GItemID , int Value )
  1581. {
  1582. RoleDataEx* Item = Global::GetRoleDataByGUID( GItemID );
  1583. if( Item == NULL )
  1584. {
  1585. Print( LV3 , "AddExp", "Item==NULL" );
  1586. return false;
  1587. }
  1588. Item->Addexp( Value );
  1589. return true;
  1590.  
  1591. }
  1592. //*********************************************************************************
  1593. //¼@±¡³]©w«ü¥O
  1594. //*********************************************************************************
  1595. //³]©w¼@±¡
  1596. //Plot ==> void SetPlot( ID , ¼@±¡Type , ¼@±¡¦WºÙ )
  1597. //¨Ò¦p ==> void SetPlot( ID , "ClientAuto" , "TestPlot" , Range);
  1598. //Type = "ClientAuto" , "Auto" , "Move" , "Dead" , "Range" , "Touch"
  1599. bool SetPlot( int GItemID , const char* PlotType, const char* PlotName , int Range )
  1600. {
  1601. BaseItemObject *OtherClass = BaseItemObject::GetObj( GItemID );
  1602.  
  1603. if( OtherClass == NULL )
  1604. return false;
  1605.  
  1606. RoleDataEx* Other = OtherClass->Role();
  1607.  
  1608.  
  1609.  
  1610. if( stricmp( PlotType , "range" ) == 0 )
  1611. {
  1612. if( strlen( PlotName ) == 0 )
  1613. {
  1614. Range = 0;
  1615. }
  1616.  
  1617. Other->TempData.RangePlot = PlotName ;
  1618. Other->TempData.RangePlot_Range = Range;
  1619.  
  1620. NetSrv_Other::SC_Range_BaseObjValueChange( Other->GUID() , EM_ObjValueChange_Plot_Range , PlotName , Range );
  1621. }
  1622. else if( stricmp( PlotType , "dead" ) == 0 )
  1623. {
  1624. Other->TempData.DeadPlot = PlotName ;
  1625. }
  1626. else if( stricmp( PlotType , "auto" ) == 0 )
  1627. {
  1628. Other->SelfData.AutoPlot = PlotName ;
  1629. if( Other->SelfData.AutoPlot.Size() != 0 )
  1630. OtherClass->PlotVM()->CallLuaFunc( PlotName , GItemID , 0 );
  1631. }
  1632. else if( stricmp( PlotType , "touch" ) == 0 )
  1633. {
  1634. if( strlen( PlotName ) == 0 )
  1635. {
  1636. Range = 0;
  1637. }
  1638.  
  1639. Other->TempData.TouchPlot = PlotName ;
  1640. Other->TempData.TouchPlot_Range = Range;
  1641.  
  1642. NetSrv_Other::SC_Range_BaseObjValueChange( Other->GUID() , EM_ObjValueChange_Plot_Touch , PlotName , Range );
  1643. }
  1644. else if( stricmp( PlotType , "say" ) == 0 )
  1645. {
  1646. Other->TempData.SayPlot = PlotName ;
  1647. }
  1648. else if( stricmp( PlotType , "give" ) == 0 )
  1649. {
  1650. Other->TempData.GiveItemPlot = PlotName ;
  1651. }
  1652. else if( stricmp( PlotType , "clientauto" ) == 0 )
  1653. {
  1654. Other->TempData.C_AutoPlot = PlotName ;
  1655. NetSrv_Other::SC_Range_BaseObjValueChange( Other->GUID() , EM_ObjValueChange_Plot_ClientAuto , PlotName , 0 );
  1656. }
  1657. else if( stricmp( PlotType , "collision" ) == 0 )
  1658. {
  1659. Other->TempData.CollisionPlot = PlotName;
  1660. Other->BaseData.Mode.CollisionPlot = true;
  1661.  
  1662. NetSrv_Other::SC_Range_BaseObjValueChange( Other->GUID() , EM_ObjValueChange_Plot_Collision , PlotName , 0 );
  1663. }
  1664. else if( stricmp( PlotType , "checkpetcommand" ) == 0 )
  1665. {
  1666. Other->TempData.CheckPetCommand = PlotName;
  1667. }
  1668. return true;
  1669. }
  1670.  
  1671. const char* GetPlotName( int GItemID , const char* PlotType )
  1672. {
  1673. BaseItemObject *OtherClass = BaseItemObject::GetObj( GItemID );
  1674.  
  1675. if( OtherClass == NULL )
  1676. return "";
  1677.  
  1678. RoleDataEx* Other = OtherClass->Role();
  1679.  
  1680. if( stricmp( PlotType , "range" ) == 0 )
  1681. {
  1682. return Other->TempData.RangePlot.Begin();
  1683. }
  1684. else if( stricmp( PlotType , "dead" ) == 0 )
  1685. {
  1686. return Other->TempData.DeadPlot.Begin();
  1687. }
  1688. else if( stricmp( PlotType , "auto" ) == 0 )
  1689. {
  1690. return Other->SelfData.AutoPlot.Begin();
  1691. }
  1692. else if( stricmp( PlotType , "touch" ) == 0 )
  1693. {
  1694. return Other->TempData.TouchPlot.Begin();
  1695. }
  1696. else if( stricmp( PlotType , "say" ) == 0 )
  1697. {
  1698. return Other->TempData.SayPlot.Begin();
  1699. }
  1700. else if( stricmp( PlotType , "give" ) == 0 )
  1701. {
  1702. return Other->TempData.GiveItemPlot.Begin();
  1703. }
  1704. else if( stricmp( PlotType , "clientauto" ) == 0 )
  1705. {
  1706. return Other->TempData.C_AutoPlot.Begin();
  1707. }
  1708. else if( stricmp( PlotType , "collision" ) == 0 )
  1709. {
  1710. return Other->TempData.CollisionPlot.Begin();
  1711. }
  1712. else if( stricmp( PlotType , "checkpetcommand" ) == 0 )
  1713. {
  1714. return Other->TempData.CheckPetCommand.Begin();
  1715. }
  1716.  
  1717. return "";
  1718. }
  1719. //---------------------------------------------------------------------------------
  1720. //³]©w¦ì¸m
  1721. bool SetPos( int GItemID , float X , float Y , float Z , float Dir )
  1722. {
  1723. BaseItemObject* Obj = BaseItemObject::GetObj( GItemID );
  1724.  
  1725. if( Obj == NULL )
  1726. return false;
  1727.  
  1728. /* if( Obj->Role()->BaseData.Mode.Gravity != false )
  1729. {
  1730. if( Obj->Path()->Height( X , Y , Z , Y , 30 ) == false )
  1731. return false;
  1732. }*/
  1733.  
  1734. //NetSrv_MoveChild::SetObjPos( Obj , X , Y , Z , Dir );
  1735. Global::CheckClientLoading_SetPos( GItemID , X , Y , Z , Dir );
  1736. return true;
  1737. }
  1738. //---------------------------------------------------------------------------------
  1739. //°õ¦æ¬Y¼@±¡
  1740. bool BeginPlot( int GItemID , const char* PlotName , int DelayTime )
  1741. {
  1742. PlotRegStruct* T = LUA_VMClass::ProcReg();
  1743. BaseItemObject* ItemObj = BaseItemObject::GetObj( GItemID );
  1744. if( ItemObj == NULL )
  1745. {
  1746. return false;
  1747. }
  1748.  
  1749.  
  1750. ArgTransferStruct* Arg = ItemObj->PlotVM()->CallLuaFunc( PlotName , T->OwnerID , DelayTime );
  1751.  
  1752. if( Arg == NULL )
  1753. return false;
  1754.  
  1755. return true;
  1756. }
  1757. //---------------------------------------------------------------------------------
  1758. bool BeginMultiStringPlot( int GItemID , const char* PlotName , int DelayTime )
  1759. {
  1760. PlotRegStruct* T = LUA_VMClass::ProcReg();
  1761. BaseItemObject* ItemObj = BaseItemObject::GetObj( GItemID );
  1762. if( ItemObj == NULL )
  1763. {
  1764. return false;
  1765. }
  1766.  
  1767. ArgTransferStruct* Arg = ItemObj->PlotVM()->CallLuaFunc( PlotName , T->OwnerID , DelayTime );
  1768.  
  1769. if( Arg == NULL )
  1770. return false;
  1771.  
  1772. return true;
  1773. }
  1774. //---------------------------------------------------------------------------------
  1775. //³]©wnpc©ÒÄݼ@±¡Ãþ§O ¥Î¨Ó¤§«á¦¬´Mnpc°õ¦æ¼@±¡¥Î or ¨ä¥Lªº¨Æ
  1776. //Plot ==> int SetNpcPlotClass( ID , ¦Û­q¦r¦ê )
  1777. //¨Ò¦p ==> int SetNpcPlotClass( 1 , "AAA" );
  1778. // Ret = 0 (°õ¦æ¥¢±Ñ)µL¦¹ª«¥ó
  1779. // = 1 ¦¨?
  1780. bool SetNpcPlotClass( int GItemID , const char* Str )
  1781. {
  1782.  
  1783. RoleDataEx* ItemVal = Global::GetRoleDataByGUID( GItemID );
  1784. if( ItemVal == NULL )
  1785. return false;
  1786.  
  1787. ItemVal->SelfData.PlotClassName = Str;
  1788.  
  1789. return true;
  1790. }
  1791. //---------------------------------------------------------------------------------
  1792.  
  1793.  
  1794. //---------------------------------------------------------------------------------
  1795.  
  1796. //---------------------------------------------------------------------------------
  1797. //Ū¨ú¬Y¤@ºX¼Ð
  1798. /*
  1799. bool ReadFlag( int GItemID , int FlagID )
  1800. {
  1801. RoleDataEx* Item = Global::GetRoleDataByGUID( GItemID );
  1802. if( Item == NULL )
  1803. return false;
  1804. return Item->PlayerBaseData->Flag.GetFlag( FlagID );
  1805. }
  1806. */
  1807. //---------------------------------------------------------------------------------
  1808. //¼g¤J¬Y¤@ºX¼Ð
  1809. /*
  1810. bool WriteFlag( int GItemID , int FlagID , int On )
  1811. {
  1812. RoleDataEx* Item = Global::GetRoleDataByGUID( GItemID );
  1813. if( Item == NULL )
  1814. return false;
  1815. if( On == 1 )
  1816. Item->PlayerBaseData->Flag.SetFlagOn( FlagID );
  1817. else if( On == 0 )
  1818. Item->PlayerBaseData->Flag.SetFlagOff( FlagID );
  1819. else
  1820. return false;
  1821.  
  1822. return true;
  1823. }*/
  1824. //---------------------------------------------------------------------------------
  1825. //(Ū¨ú)§â¬Y¤@ºX¼Ð·í¼Æ­È³B²z
  1826. //¨Ò¦p ==> int ReadFlagValue( 0 , 10 , 5 ) <== ¥Nªí­«10 - 14 ºX¼Ð¥Nªíªº¼Æ¦r
  1827. //return = ºX¼Ð¥Î¥Î¤G¶i¦ì¥Nªíªº¼Æ¦r
  1828. /*
  1829. int ReadFlagValue( int GItemID , int FlagID , int FlagCount )
  1830. {
  1831. RoleDataEx* Item = Global::GetRoleDataByGUID( GItemID );
  1832. if( Item == NULL )
  1833. return 0;
  1834.  
  1835. return Item->PlayerBaseData->Flag.GetFlagValue( FlagID , FlagCount );
  1836. }
  1837. */
  1838. //---------------------------------------------------------------------------------
  1839. //(¼g¤J)§â¬Y¤@ºX¼Ð·í¼Æ­È³B²z
  1840. //Plot ==> int WriteFlagValue( ¶}¨ÏºX¼Ð , ¦h¤ÖºX¼Ðªí¥Ü , ­n¦sªº¼Æ¦r )
  1841. //¨Ò¦p ==> int WriteFlagValue( ItemID , 10 , 5 , 19 ) <== ¥Nªí­«10 - 14 ºX¼Ð¥Nªíªº¼Æ¦r ¦s¤J19
  1842. //return = 0 ¥¢±Ñ
  1843. // 1 ¦¨?
  1844. /*
  1845. bool WriteFlagValue( int GItemID , int FlagID , int FlagCount , int Value )
  1846. {
  1847. RoleDataEx* Item = Global::GetRoleDataByGUID( GItemID );
  1848. if( Item == NULL )
  1849. return false;
  1850.  
  1851. Item->PlayerBaseData->Flag.SetFlagValue( FlagID , FlagCount , Value );
  1852. return true;
  1853. }*/
  1854. //---------------------------------------------------------------------------------
  1855. //Àˬdª«¥ó¬O§_¦s¦b
  1856. //Plot ==> int CheckID( ItemID )
  1857. //¨Ò¦p ==> int CheckID( 100 ) <== Àˬd100¸¹ª«¥ó¬O§_¦s¦b
  1858. //return = 0 ¨S¦³
  1859. // 1 ¦³
  1860. bool CheckID( int GItemID )
  1861. {
  1862. RoleDataEx* Item = Global::GetRoleDataByGUID( GItemID );
  1863. if( Item == NULL )
  1864. return false;
  1865. return true;
  1866. }
  1867. /*
  1868. int GetValue( int GItemID , int Type )
  1869. {
  1870. RoleDataEx* Item = Global::GetRoleDataByGUID( GItemID );
  1871. if( Item == NULL )
  1872. return 0;
  1873. int Ret = Item->GetValue_Int( (RoleValueName_ENUM) Type );
  1874. return Ret;
  1875. }
  1876. */
  1877. //---------------------------------------------------------------------------------
  1878. //°Ó©±
  1879. //---------------------------------------------------------------------------------
  1880. //°Ó©±³]©w
  1881. void SetShop( int GItemID , int ShopObjID , const char* ShopClosePlot )
  1882. {
  1883. PlotRegStruct* T = LUA_VMClass::ProcReg();
  1884. RoleDataEx* Shop = Global::GetRoleDataByGUID( GItemID );
  1885. if( Shop == NULL /*|| Shop->IsPlayer()*/ )
  1886. {
  1887. Print( LV2 , "SetShop" , "Shop == NULL || Shop->IsPlayer() Func = %d" , T->FuncName );
  1888. return;
  1889. }
  1890. GameObjDbStructEx* OrgDB = Global::GetObjDB( ShopObjID );
  1891. if( OrgDB == NULL || !OrgDB->IsShop() )
  1892. {
  1893. Print( LV2 , "SetShop" , " OrgDB == NULL || !OrgDB->IsShop() ShopObjID = %d Func = %s" , ShopObjID , T->FuncName );
  1894. return;
  1895. }
  1896. ShopStateStruct &ShopInfo = Shop->TempData.ShopInfo;
  1897. ShopInfo.Init();
  1898. ShopInfo.ShopClosePlot = ShopClosePlot;
  1899. ShopInfo.ShopObjID = ShopObjID;
  1900. ShopInfo.LastUpdateTime = RoleDataEx::G_SysTime;
  1901. for( int i = 0 ; i < 30 ; i++ )
  1902. {
  1903. ShopInfo.ItemCount[i] = OrgDB->Shop.SellItemMax[i] / 2;
  1904. }
  1905.  
  1906. return;
  1907. }
  1908.  
  1909. //
  1910. bool CloseShop( int GItemID )
  1911. {
  1912. RoleDataEx* Shop = Global::GetRoleDataByGUID( GItemID );
  1913. if( Shop == NULL )
  1914. {
  1915. return false;
  1916. }
  1917.  
  1918. PlayIDInfo** Block = Global::PartSearch( Shop , _Def_View_Block_Range_ );
  1919.  
  1920. int i , j;
  1921. PlayID* TopID;
  1922.  
  1923. for( i = 0 ; Block[i] != NULL ; i++ )
  1924. {
  1925. TopID = Block[i]->Begin;
  1926. for( j = 0 ; TopID != NULL ; TopID = TopID->Next )
  1927. {
  1928. BaseItemObject* Obj = Global::GetObj( TopID->ID );
  1929. if( Obj == NULL )
  1930. continue;
  1931.  
  1932. RoleDataEx* Other = Obj->Role();
  1933.  
  1934. if( Other->IsPlayer() == false )
  1935. continue;
  1936. //SendToCli_ByProxyID( Other->TempData.Sys.SockID , Other->TempData.Sys.ProxyID , Size , Data );
  1937. if( Other->TempData.ShopInfo.TargetID != GItemID )
  1938. continue;
  1939. NetSrv_Shop::S_ShopClose( Other->GUID() );
  1940.  
  1941. }
  1942. }
  1943.  
  1944. return true;
  1945. }
  1946.  
  1947. //¶}±Ò ¼@±¡µ¹¤©ª««~
  1948. void OpenPlotGive( int GItemID , bool IsSort , int Count )
  1949. {
  1950. PlotRegStruct* T = LUA_VMClass::ProcReg();
  1951. RoleDataEx* Player = Global::GetRoleDataByGUID( T->OwnerID );
  1952. RoleDataEx* NPC = Global::GetRoleDataByGUID( T->TargetID );
  1953. if( Player == NULL || NPC == NULL )
  1954. {
  1955. Print( LV2 , "OpenPlotGive" , "NPC == NULL Func = %d" , T->FuncName );
  1956. return;
  1957. }
  1958.  
  1959. if( Player->CheckOpenSomething() != false )
  1960. return;
  1961.  
  1962. Player->TempData.ShopInfo.TargetID = NPC->GUID();
  1963. Player->TempData.Attr.Action.OpenType = EM_RoleOpenMenuType_PlotGiveItem;
  1964.  
  1965. NetSrv_Other::S_OpenGiveItemPlot( Player->GUID() , NPC->GUID() , IsSort , Count );
  1966.  
  1967. }
  1968.  
  1969. //¶}°_Bank
  1970. bool OpenBank( )
  1971. {
  1972. return OpenBankEx( TargetID() );
  1973. }
  1974. bool OpenBankEx( int TargetID )
  1975. {
  1976. PlotRegStruct* T = LUA_VMClass::ProcReg();
  1977. RoleDataEx* Player = Global::GetRoleDataByGUID( T->OwnerID );
  1978. RoleDataEx* Bank = Global::GetRoleDataByGUID( TargetID );
  1979. if( Player == NULL || Bank == NULL )
  1980. {
  1981. Print( LV2 , "OpenBank" , "Bank == NULL || Bank->IsPlayer() Func = %d" , T->FuncName );
  1982. return false ;
  1983. }
  1984.  
  1985. if( Player->CheckOpenSomething() != false )
  1986. return false;
  1987.  
  1988. Player->TempData.ShopInfo.TargetID = Bank->GUID();
  1989. Player->TempData.Attr.Action.OpenType = EM_RoleOpenMenuType_Bank;
  1990.  
  1991. NetSrv_Item::OpenBank( Player->GUID() , Bank->GUID() );
  1992. return true;
  1993. }
  1994.  
  1995. //¶}°_°Ó©±
  1996. bool OpenShop( )
  1997. {
  1998. PlotRegStruct* T = LUA_VMClass::ProcReg();
  1999. RoleDataEx* Player = Global::GetRoleDataByGUID( T->OwnerID );
  2000. RoleDataEx* Shop = Global::GetRoleDataByGUID( T->TargetID );
  2001. if( Player == NULL || Shop == NULL /* || Shop->IsPlayer()*/ )
  2002. {
  2003. Print( LV2 , "OpenShop" , "Shop == NULL || Shop->IsPlayer() Func = %d" , T->FuncName );
  2004. return false;
  2005. }
  2006.  
  2007. if( Player->TempData.ShopInfo.TargetID == Shop->GUID()
  2008. && Player->TempData.Attr.Action.OpenType == EM_RoleOpenMenuType_Shop )
  2009. return false;
  2010.  
  2011. if( Player->BaseData.SysFlag.DisableTrade != false )
  2012. {
  2013. Player->Net_GameMsgEvent( EM_GameMessageEvent_Item_DisableTrade );
  2014. return false;
  2015. }
  2016.  
  2017. if( Player->TempData.Attr.Action.OpenType != EM_RoleOpenMenuType_Shop && Player->CheckOpenSomething() != false )
  2018. return false;
  2019.  
  2020. ShopStateStruct &ShopInfo = Shop->TempData.ShopInfo;
  2021. GameObjDbStructEx* OrgDB = Global::GetObjDB( ShopInfo.ShopObjID );
  2022. if( OrgDB == NULL || !OrgDB->IsShop() )
  2023. {
  2024. Print( LV2 , "SetShop" , " OrgDB == NULL || !OrgDB->IsShop() ShopObjID = %d Func = %d" , ShopInfo.ShopObjID , T->FuncName );
  2025. return false;
  2026. }
  2027. Player->TempData.ShopInfo.TargetID = Shop->GUID();
  2028. Player->TempData.Attr.Action.OpenType = EM_RoleOpenMenuType_Shop;
  2029. Player->PlayerTempData->Log.ActionMode.Shop = true;
  2030.  
  2031. while( 1 )
  2032. {
  2033. if( RoleDataEx::G_SysTime - ShopInfo.LastUpdateTime <= 60*60*1000 )
  2034. break;
  2035. ShopInfo.LastUpdateTime += 60*60*1000;
  2036.  
  2037. for( int i = 0 ; i < 30 ; i++ )
  2038. {
  2039. ShopInfo.ItemCount[i] = ShopInfo.ItemCount[i] + OrgDB->Shop.SellItemPorduce[i];
  2040. if( ShopInfo.ItemCount[i] > OrgDB->Shop.SellItemMax[i] )
  2041. ShopInfo.ItemCount[i] = OrgDB->Shop.SellItemMax[i];
  2042. }
  2043. }
  2044.  
  2045.  
  2046. NetSrv_Shop::S_ShopOpen( Player->GUID() , Shop->GUID() , ShopInfo.ShopObjID , ShopInfo.ItemCount );
  2047. return true;
  2048. }
  2049.  
  2050. //¶}±Ò ±b¸¹­I¥]
  2051. void OpenAccountBag( )
  2052. {
  2053. PlotRegStruct* T = LUA_VMClass::ProcReg();
  2054. BaseItemObject* PlayerObj = BaseItemObject::GetObj( T->OwnerID );
  2055. RoleDataEx* AccountBag = Global::GetRoleDataByGUID( T->TargetID );
  2056. if( PlayerObj == NULL || AccountBag == NULL )
  2057. {
  2058. Print( LV2 , "OpenAccountBag" , "AccountBag == NULL || Player == NULL Func = %d" , T->FuncName );
  2059. return;
  2060. }
  2061.  
  2062. RoleDataEx* Player = PlayerObj->Role();
  2063.  
  2064. if( Player->BaseData.SysFlag.DisableTrade != false )
  2065. {
  2066. Player->Net_GameMsgEvent( EM_GameMessageEvent_Item_DisableTrade );
  2067. return;
  2068. }
  2069.  
  2070. if( Player->CheckOpenSomething() != false )
  2071. return;
  2072.  
  2073. PlayerObj->AccountBag()->clear();
  2074.  
  2075.  
  2076. Player->TempData.ShopInfo.TargetID = AccountBag->GUID();
  2077. Player->TempData.Attr.Action.OpenType = EM_RoleOpenMenuType_AccountBag;
  2078. NetSrv_ItemChild::SD_AccountBagInfoRequest ( Player->DBID() , Player->Account_ID() );
  2079. }
  2080. //¶}±Ò ¸Ë³Æ½ä³Õ
  2081. bool OpenEqGamble()
  2082. {
  2083. PlotRegStruct* T = LUA_VMClass::ProcReg();
  2084. BaseItemObject* PlayerObj = BaseItemObject::GetObj( T->OwnerID );
  2085. RoleDataEx* Target = Global::GetRoleDataByGUID( T->TargetID );
  2086. if( PlayerObj == NULL || Target == NULL )
  2087. {
  2088. Print( LV2 , "OpenEqGamble" , "PlayerObj == NULL || Traget == NULLL Func = %d" , T->FuncName );
  2089. return false;
  2090. }
  2091.  
  2092. RoleDataEx* Player = PlayerObj->Role();
  2093.  
  2094. if( Player->CheckOpenSomething() != false )
  2095. return false;
  2096.  
  2097.  
  2098. Player->TempData.ShopInfo.TargetID = Target->GUID();
  2099. Player->TempData.Attr.Action.OpenType = EM_RoleOpenMenuType_EqGamble;
  2100. NetSrv_ItemChild::SC_OpenGamebleItemState( Player->GUID() , Target->GUID() );
  2101. return true;
  2102. }
  2103.  
  2104. bool OpenSuitSkill()
  2105. {
  2106. PlotRegStruct* T = LUA_VMClass::ProcReg();
  2107. BaseItemObject* PlayerObj = BaseItemObject::GetObj( T->OwnerID );
  2108. RoleDataEx* Target = Global::GetRoleDataByGUID( T->TargetID );
  2109. if( PlayerObj == NULL || Target == NULL )
  2110. {
  2111. Print( LV2 , "OpenSuitSkill" , "PlayerObj == NULL || Traget == NULLL Func = %d" , T->FuncName );
  2112. return false;
  2113. }
  2114.  
  2115. RoleDataEx* Player = PlayerObj->Role();
  2116.  
  2117. if( Player->CheckOpenSomething() != false )
  2118. return false;
  2119.  
  2120.  
  2121. Player->TempData.ShopInfo.TargetID = Target->GUID();
  2122. Player->TempData.Attr.Action.OpenType = EM_RoleOpenMenuType_SuitSkill;
  2123. NetSrv_EQChild::S_LearnSuitSkill_Open( Player->GUID() , Target->GUID() );
  2124. return true;
  2125. }
  2126.  
  2127.  
  2128. bool OpenMailEx( int TargetID )
  2129. {
  2130. PlotRegStruct* T = LUA_VMClass::ProcReg();
  2131. RoleDataEx* Player = Global::GetRoleDataByGUID( T->OwnerID );
  2132. RoleDataEx* Mail = Global::GetRoleDataByGUID( TargetID );
  2133. if( Player == NULL || Mail == NULL )
  2134. {
  2135. Print( LV2 , "OpenMail" , "Mail == NULL || Player == NULL Func = %d" , T->FuncName );
  2136. return false;
  2137. }
  2138.  
  2139. if( Global::Ini()->IsBattleWorld == true )
  2140. {
  2141. return false;
  2142. }
  2143.  
  2144. if( Player->BaseData.SysFlag.DisableTrade != false )
  2145. {
  2146. Player->Net_GameMsgEvent( EM_GameMessageEvent_Item_DisableTrade );
  2147. return false;
  2148. }
  2149.  
  2150. if( Player->CheckOpenSomething() != false )
  2151. return false;
  2152.  
  2153. //«H¥ôª±¾÷¨î
  2154. if( Player->PlayerBaseData->VipMember.UntrustFlag.DisableMail )
  2155. {
  2156. //Player->Msg( "«H¥ôª±®a¾÷¨î´ú¸Õ_µLªk¨Ï¥Î«H½c" );
  2157. Player->Net_GameMsgEvent( EM_GameMessageEvent_Role_Untrust);
  2158. return false;
  2159. }
  2160.  
  2161.  
  2162. Player->TempData.ShopInfo.TargetID = Mail->GUID();
  2163. Player->TempData.Attr.Action.OpenType = EM_RoleOpenMenuType_Mail;
  2164. Player->PlayerTempData->Log.ActionMode.Mail = true;
  2165.  
  2166. NetSrv_Mail::SC_OpenMail( Player->GUID() , Mail->GUID() );
  2167. return true;
  2168. }
  2169. bool OpenMail( )
  2170. {
  2171. return OpenMailEx( TargetID() );
  2172. }
  2173.  
  2174. bool OpenAC( )
  2175. {
  2176. return OpenACEx( TargetID() );
  2177. }
  2178.  
  2179. bool OpenACEx( int TargetID )
  2180. {
  2181. PlotRegStruct* T = LUA_VMClass::ProcReg();
  2182. RoleDataEx* Player = Global::GetRoleDataByGUID( T->OwnerID );
  2183. RoleDataEx* AC = Global::GetRoleDataByGUID( TargetID );
  2184. if( Player == NULL || AC == NULL )
  2185. {
  2186. Print( LV2 , "OpenAC" , "AC == NULL || Player == NULL Func = %d" , T->FuncName );
  2187. return false;
  2188. }
  2189.  
  2190. if( Player->BaseData.SysFlag.DisableTrade != false )
  2191. {
  2192. Player->Net_GameMsgEvent( EM_GameMessageEvent_Item_DisableTrade );
  2193. return false;
  2194. }
  2195.  
  2196. if( Player->TempData.Attr.Action.OpenType == EM_RoleOpenMenuType_AC )
  2197. {
  2198. NetSrv_AC::SC_AcAlreadyOpen( Player->GUID() , T->TargetID );
  2199. return false;
  2200. }
  2201.  
  2202.  
  2203. if( Player->CheckOpenSomething() != false )
  2204. return false;
  2205.  
  2206. //«H¥ôª±¾÷¨î
  2207. if( Player->PlayerBaseData->VipMember.UntrustFlag.DisableOpenAC )
  2208. {
  2209. //Player->Msg( "«H¥ôª±®a¾÷¨î´ú¸Õ_µLªk¨Ï¥Î©ç½æ©Ò" );
  2210. Player->Net_GameMsgEvent( EM_GameMessageEvent_Role_Untrust);
  2211. return false;
  2212. }
  2213.  
  2214. Player->TempData.ShopInfo.TargetID = AC->GUID();
  2215. Player->TempData.Attr.Action.OpenType = EM_RoleOpenMenuType_AC;
  2216. Player->PlayerTempData->Log.ActionMode.AC = true;
  2217.  
  2218. NetSrv_AC::SDC_OpenAC( Player->DBID() , AC->GUID() );
  2219. return true;
  2220. }
  2221.  
  2222. void OpenChangeJob( )
  2223. {
  2224. PlotRegStruct* T = LUA_VMClass::ProcReg();
  2225. RoleDataEx* Player = Global::GetRoleDataByGUID( T->OwnerID );
  2226. RoleDataEx* NPC = Global::GetRoleDataByGUID( T->TargetID );
  2227. if( Player == NULL || NPC == NULL )
  2228. {
  2229. Print( LV2 , "OpenChangeJob" , "NPC == NULL || Player == NULL Func = %d" , T->FuncName );
  2230. return;
  2231. }
  2232.  
  2233. if( Player->CheckOpenSomething() != false )
  2234. return;
  2235.  
  2236.  
  2237. Player->TempData.ShopInfo.TargetID = NPC->GUID();
  2238. Player->TempData.Attr.Action.OpenType = EM_RoleOpenMenuType_ChangeJob;
  2239.  
  2240.  
  2241. NetSrv_RoleValue::S_OpenChangeJob( Player->GUID() , NPC->GUID() );
  2242. }
  2243.  
  2244. void OpenBillboard( )
  2245. {
  2246. PlotRegStruct* T = LUA_VMClass::ProcReg();
  2247. RoleDataEx* Player = Global::GetRoleDataByGUID( T->OwnerID );
  2248. RoleDataEx* NPC = Global::GetRoleDataByGUID( T->TargetID );
  2249. if( Player == NULL || NPC == NULL )
  2250. {
  2251. Print( LV2 , "OpenBillboard" , "NPC == NULL || Player == NULL Func = %d" , T->FuncName );
  2252. return;
  2253. }
  2254.  
  2255. if( Player->CheckOpenSomething() != false )
  2256. return;
  2257.  
  2258.  
  2259. Player->TempData.ShopInfo.TargetID = NPC->GUID();
  2260. Player->TempData.Attr.Action.OpenType = EM_RoleOpenMenuType_Billboard;
  2261.  
  2262.  
  2263. NetSrv_Billboard::SC_OpenBillboard( Player->GUID() , NPC->GUID() );
  2264. }
  2265.  
  2266. //¶}±Ò ·»¦X¸Ë³Æ
  2267. void OpenCombinEQ( int PlayerGUID , int NpcGUID , int Type )
  2268. {
  2269. PlotRegStruct* T = LUA_VMClass::ProcReg();
  2270. RoleDataEx* Player = Global::GetRoleDataByGUID( PlayerGUID );
  2271. RoleDataEx* NPC = Global::GetRoleDataByGUID( NpcGUID );
  2272. if( Player == NULL || NPC == NULL )
  2273. {
  2274. Print( LV2 , "OpenCombinEQ" , "NPC == NULL || Player == NULL Func = %d" , T->FuncName );
  2275. return;
  2276. }
  2277.  
  2278. if( Player->CheckOpenSomething() != false )
  2279. return;
  2280.  
  2281.  
  2282. Player->TempData.ShopInfo.TargetID = NPC->GUID();
  2283. Player->TempData.Attr.Action.OpenType = EM_RoleOpenMenuType_EQCombin;
  2284.  
  2285. Player->TempData.EQCombin.UseItemTempID = Player->TempData.Magic.UseItem; //¼È¦s¨Ï¥Îªºª««~
  2286. Player->TempData.EQCombin.Type = Type;
  2287.  
  2288. NetSrv_Item::S_EQCombinOpen( Player->GUID() , NPC->GUID() , Player->TempData.Magic.UseItemPos , Type );
  2289. }
  2290.  
  2291. bool CreateFlag( int ObjID , int FlagID, float X , float Y , float Z , float Dir )
  2292. {
  2293. int Ret = FlagPosClass::AddFlag( NULL , ObjID , FlagID , X , Y , Z , Dir );
  2294. // bool Ret = Global::CreateFlag( ObjID , FlagID , X , Y , Z );
  2295. return ( Ret != -1 ) ;
  2296. }
  2297.  
  2298. //³]©wª«¥ó¼Ò¦¡
  2299. bool SetMode( int GItemID , int Mode )
  2300. {
  2301. RoleDataEx* Item = Global::GetRoleDataByGUID( GItemID );
  2302. if( Item == NULL || Item->IsPlayer() )
  2303. return false;
  2304. Item->BaseData.Mode._Mode = Mode;
  2305.  
  2306. return true;
  2307. }
  2308.  
  2309. int GetMode( int GitemID )
  2310. {
  2311. RoleDataEx* Item = Global::GetRoleDataByGUID( GitemID );
  2312. if( Item == NULL )
  2313. return 0;
  2314.  
  2315. return Item->BaseData.Mode._Mode;
  2316. }
  2317. //---------------------------------------------------------------------------------
  2318. //¾Ô°«¼@±¡
  2319. //---------------------------------------------------------------------------------
  2320. //³]©w´M§ä¬Y¤@­Óª«¥ó
  2321. //¦^¶Ç : ·j´M¨ìªº¼Æ¶q
  2322. int SetSearchRangeInfo( int GItemID , int Range )
  2323. {
  2324. SearchObjList.clear();
  2325.  
  2326. RoleDataEx* Owner;
  2327. RoleDataEx* Other;
  2328.  
  2329. Owner = Global::GetRoleDataByGUID( GItemID );
  2330. if( Owner == NULL )
  2331. return 0;
  2332.  
  2333. Global::ResetRange( Owner , _Def_View_Block_Range_ );
  2334. while( 1 )
  2335. {
  2336. Other = Global::GetRangeRole( );
  2337. if( Other == NULL )
  2338. break;
  2339. if( Other->RoomID() != Owner->RoomID() )
  2340. continue;
  2341.  
  2342. if( Other->Length( Owner ) <= Range )
  2343. SearchObjList.push_back( Other->GUID() );
  2344. }
  2345.  
  2346. return (int)SearchObjList.size();
  2347. }
  2348.  
  2349. int GetNumPlayer()
  2350. {
  2351. int iSize = (int)BaseItemObject::PlayerObjSet()->size();
  2352. return iSize;
  2353. }
  2354.  
  2355. int SetSearchAllPlayer( int RoomID )
  2356. {
  2357. SearchObjList.clear();
  2358.  
  2359. set<BaseItemObject* >& PlayerObjSet = *(BaseItemObject::PlayerObjSet());
  2360. set< BaseItemObject*>::iterator PlayerObjIter;
  2361. for( PlayerObjIter = PlayerObjSet.begin() ; PlayerObjIter != PlayerObjSet.end() ; PlayerObjIter++ )
  2362. {
  2363. BaseItemObject* Obj = *PlayerObjIter;
  2364. if( Obj == NULL )
  2365. continue;
  2366.  
  2367. if( Obj->Role()->RoomID() != RoomID )
  2368. continue;
  2369. if( Obj->Role()->TempData.Sys.OnChangeZone
  2370. || Obj->Role()->TempData.Sys.OnChangeWorld )
  2371. continue;
  2372.  
  2373. SearchObjList.push_back( Obj->GUID() );
  2374. }
  2375.  
  2376. return (int)SearchObjList.size();
  2377. }
  2378. //¦¬´M©Ð¶¡¤º¬Y­Ó¥ø¹º¸s²Õªºª«¥ó
  2379. int SetSearchAllNPC_ByGroupID( int RoomID , int GroupID )
  2380. {
  2381. SearchObjList.clear();
  2382.  
  2383. set<BaseItemObject* >& NpcObjSet = *(BaseItemObject::NPCObjSet());
  2384. set< BaseItemObject*>::iterator NpcObjIter;
  2385. for( NpcObjIter = NpcObjSet.begin() ; NpcObjIter != NpcObjSet.end() ; NpcObjIter++ )
  2386. {
  2387. BaseItemObject* Obj = *NpcObjIter;
  2388. if( Obj == NULL )
  2389. continue;
  2390.  
  2391. if( Obj->Role()->RoomID() != RoomID )
  2392. continue;
  2393. GameObjDbStructEx* ObjDB = Global::GetObjDB( Obj->Role()->BaseData.ItemInfo.OrgObjID );
  2394. if( ObjDB == NULL || ObjDB->NPC.SearchGroupID != GroupID )
  2395. continue;
  2396.  
  2397. SearchObjList.push_back( Obj->GUID() );
  2398. }
  2399.  
  2400. return (int)SearchObjList.size();
  2401. }
  2402.  
  2403. int SetSearchAllNPC( int RoomID )
  2404. {
  2405. SearchObjList.clear();
  2406.  
  2407. set<BaseItemObject* >& NpcObjSet = *(BaseItemObject::NPCObjSet());
  2408. set< BaseItemObject*>::iterator NpcObjIter;
  2409. for( NpcObjIter = NpcObjSet.begin() ; NpcObjIter != NpcObjSet.end() ; NpcObjIter++ )
  2410. {
  2411. BaseItemObject* Obj = *NpcObjIter;
  2412. if( Obj == NULL )
  2413. continue;
  2414.  
  2415. if( Obj->Role()->RoomID() != RoomID )
  2416. continue;
  2417.  
  2418. SearchObjList.push_back( Obj->GUID() );
  2419. }
  2420.  
  2421. return (int)SearchObjList.size();
  2422. }
  2423. int GetSearchResult( )
  2424. {
  2425. if( SearchObjList.size() == 0 )
  2426. return -1;
  2427.  
  2428. int Ret = SearchObjList.back();
  2429. SearchObjList.pop_back();
  2430. return Ret;
  2431. }
  2432. //³]©w¬Yª«¥ó¶}±Ò§ðÀ»
  2433. bool SetAttack( int GItemID , int TargetID )
  2434. {
  2435. RoleDataEx* Owner = Global::GetRoleDataByGUID( GItemID );
  2436. RoleDataEx* Target = Global::GetRoleDataByGUID( TargetID );
  2437. if( Owner == NULL || Target == NULL )
  2438. return false;
  2439. return Owner->SetAttack( Target );
  2440. }
  2441. //Ãö³¬§ðÀ»
  2442. bool SetStopAttack( int GItemID )
  2443. {
  2444. RoleDataEx* Owner = Global::GetRoleDataByGUID( GItemID );
  2445. if( Owner == NULL )
  2446. return false;
  2447.  
  2448. return Owner->StopAttack();
  2449. }
  2450.  
  2451. //³]©w°k¶]¶}±Ò©ÎÃö³¬ (¾Ô°«¤£Ãö)
  2452. bool SetEscape( int GItemID , bool Flag )
  2453. {
  2454. RoleDataEx* Owner = Global::GetRoleDataByGUID( GItemID );
  2455. if( Owner == NULL )
  2456. return false;
  2457.  
  2458. if( Flag == false )
  2459. {
  2460. if( Owner->IsAttack() == false )
  2461. {
  2462. Owner->TempData.AI.ActionType = EM_ActionType_NORMAL;
  2463. }
  2464. else
  2465. {
  2466. Owner->TempData.AI.ActionType = EM_ActionType_ATTACK;
  2467. }
  2468. }
  2469. else
  2470. {
  2471. if( Owner->IsAttack() == false )
  2472. return false;
  2473.  
  2474. Owner->TempData.AI.ActionType = EM_ActionType_ESCAPE;
  2475. }
  2476.  
  2477. return true;
  2478. }
  2479.  
  2480. // ³]©w¥ô°ÈÂI¿ïª«¥ó«á, Àˬdµ²ªG
  2481. void SendQuestClickObjResult( int iRoleGUID, int iResult, int iItemID, int iItemVal )
  2482. {
  2483. CNetSrv_Script::ClickQuestObjResult( iRoleGUID, iResult, iItemID, iItemVal );
  2484. }
  2485.  
  2486. int GetQuestState ( int iRoleGUID, int iQuest )
  2487. {
  2488. RoleDataEx* pRole = Global::GetRoleDataByGUID( iRoleGUID );
  2489.  
  2490. if( pRole == NULL )
  2491. return -1;
  2492.  
  2493.  
  2494. int iQuestField = pRole->CheckQuestList_IsGotQuest( iQuest );
  2495.  
  2496. if( iQuestField != -1 )
  2497. return pRole->PlayerBaseData->Quest.QuestLog[ iQuestField ].iMode;
  2498.  
  2499. return -1;
  2500. }
  2501.  
  2502. // ¼È®É³]©w LUA ³B²zµ²ªG¥Î
  2503. void SetQuestState( int iRoleGUID, int iQuest, int iResult )
  2504. {
  2505. RoleDataEx* pRole = Global::GetRoleDataByGUID( iRoleGUID );
  2506. //pRole->TempData.
  2507. if( pRole == NULL )
  2508. {
  2509. Print( LV2 , "SetQuestState" , "pRole == NULL" );
  2510. return;
  2511. }
  2512.  
  2513. int iQuestField = pRole->CheckQuestList_IsGotQuest( iQuest );
  2514.  
  2515. if( iQuestField != -1 )
  2516. {
  2517. pRole->PlayerBaseData->Quest.QuestLog[ iQuestField ].iMode = iResult;
  2518. }
  2519.  
  2520. // ³]©w
  2521. CNetSrv_Script::SetQuestState( iRoleGUID, iQuest, iResult );
  2522.  
  2523. //pRole->TempData.QuestTempData.iQuestResult = iResult;
  2524. }
  2525.  
  2526. //³]©w¬Yª«¥ó©ÒÄÝ°}Àç
  2527. bool SetRoleCamp( int GUID , const char* CampName )
  2528. {
  2529. RoleDataEx* Owner = Global::GetRoleDataByGUID( GUID );
  2530. if( Owner == NULL )
  2531. return false;
  2532.  
  2533. CampID_ENUM CampID = RoleDataEx::Camp.GetCampID( CampName );
  2534. if( CampID == EM_CampID_Unknow )
  2535. return false;
  2536.  
  2537. if( CampID == Owner->TempData.AI.CampID )
  2538. return true;
  2539.  
  2540. if( (unsigned)CampID >= _MAX_CAMP_COUNT_ )
  2541. return false;
  2542.  
  2543. Owner->TempData.AI.CampID = CampID;
  2544.  
  2545. int iRoomID = Owner->RoomID();
  2546.  
  2547. //DelFromPartition( GUID );
  2548. //AddtoPartition( GUID, -1 );
  2549. NetSrv_OtherChild::SendRangeCampID( Owner , Owner->TempData.AI.CampID );
  2550. return true;
  2551. }
  2552. //³]©w¬Y°Ï°ì©Ò¥Îªº°}Àç¸ê°T
  2553. bool SetZoneCamp( int OrgObjID )
  2554. {
  2555. GameObjDbStructEx* ObjDB = Global::GetObjDB( OrgObjID );
  2556. if( ObjDB == NULL )
  2557. return false;
  2558.  
  2559. RoleDataEx::Camp.Init( ObjDB );
  2560. return true;
  2561. }
  2562.  
  2563. //¼½©ñ¯S©w°Ê§@
  2564. void PlayMotion( int iGUID, int iMotionID )
  2565. {
  2566. BaseItemObject* pObj = BaseItemObject::GetObj( iGUID );
  2567. if( pObj == NULL )
  2568. return;
  2569.  
  2570. NetSrv_Move::S_SetNPCMotion( pObj, iMotionID , 0 );
  2571.  
  2572. return;
  2573. }
  2574.  
  2575. //¼½©ñ¯S©w°Ê§@
  2576. void PlayMotion_Self( int PlayerID , int PlayMotionObjID , int MotionID )
  2577. {
  2578. BaseItemObject* pObj = BaseItemObject::GetObj( PlayMotionObjID );
  2579. if( pObj == NULL )
  2580. return;
  2581.  
  2582. NetSrv_Move::S_PlayerMotion( PlayerID , PlayMotionObjID , MotionID );
  2583. return;
  2584. }
  2585.  
  2586.  
  2587. //¼½©ñ¯S©w°Ê§@
  2588. void PlayMotionEx( int iGUID, int iMotionID , int iIdleMotionID )
  2589. {
  2590. BaseItemObject* pObj = BaseItemObject::GetObj( iGUID );
  2591. if( pObj == NULL )
  2592. return;
  2593.  
  2594. NetSrv_Move::S_SetNPCMotion( pObj, iMotionID , iIdleMotionID );
  2595.  
  2596. return;
  2597. }
  2598.  
  2599. void SetIdleMotion( int iGUID, int iIdleMotionID )
  2600. {
  2601. BaseItemObject* pObj = BaseItemObject::GetObj( iGUID );
  2602. if( pObj == NULL )
  2603. return;
  2604.  
  2605. NetSrv_Move::S_SetNPCMotion( pObj, iIdleMotionID , iIdleMotionID );
  2606.  
  2607. return;
  2608. }
  2609.  
  2610. void SetDefIdleMotion ( int iObjID, int iMotionID )
  2611. {
  2612. BaseItemObject* pObj = BaseItemObject::GetObj( iObjID );
  2613. if( pObj == NULL )
  2614. return;
  2615.  
  2616. NetSrv_Move::S_SetNPCIdleMotion( pObj, iMotionID );
  2617. }
  2618.  
  2619. //¼½©ñ¯S©w°Ê§@
  2620. void SetPosture( int iGUID, int iPostureID, int iMotionID )
  2621. {
  2622. RoleSpriteStatus Val;
  2623.  
  2624. if( iPostureID & 1 ) Val.isUnholster = true;
  2625. if( iPostureID & 2 ) Val.isWalk = true;
  2626. if( iPostureID & 4 ) Val.isCombat = true;
  2627. if( iPostureID & 8 ) Val.isDead = true;
  2628. if( iPostureID & 16 ) Val.isSpell = true;
  2629. if( iPostureID & 32 ) Val.isSit = true;
  2630.  
  2631.  
  2632. BaseItemObject* pObj = BaseItemObject::GetObj( iGUID );
  2633. if( pObj == NULL )
  2634. return;
  2635.  
  2636. NetSrv_MoveChild::SetPosture( pObj, iGUID, Val.value, iMotionID );
  2637.  
  2638. //CNetSrv_Script::PlayMotion( iGUID, pszMotion );
  2639. //NetSrv_Move::S_SetNPCMotion( pObj, iMotionID );
  2640.  
  2641. return;
  2642. }
  2643.  
  2644.  
  2645. void SetFightMode ( int iGUID, int iSearchEnemy, int iMove, int iEscape, int iFight )
  2646. {
  2647. RoleDataEx* Owner = Global::GetRoleDataByGUID( iGUID );
  2648. if( Owner == NULL )
  2649. return;
  2650.  
  2651. Owner->BaseData.Mode.Searchenemy = ( 0 != iSearchEnemy );
  2652. Owner->BaseData.Mode.Move = ( 0 != iMove );
  2653. Owner->BaseData.Mode.Escape = ( 0 != iEscape );
  2654. Owner->BaseData.Mode.Fight = ( 0 != iFight );
  2655.  
  2656. }
  2657.  
  2658.  
  2659. void FaceFlag ( int iSourceID, int iFlagGroup, int iFlagID )
  2660. {
  2661. RoleDataEx* Source = Global::GetRoleDataByGUID( iSourceID );
  2662.  
  2663. if( Source == NULL )
  2664. return;
  2665.  
  2666. FlagPosInfo* FlagObj = FlagPosClass::GetFlag( iFlagGroup , iFlagID );
  2667.  
  2668. if( FlagObj == NULL )
  2669. return;
  2670.  
  2671. float dir = Source->CalDir( float( FlagObj->X - Source->BaseData.Pos.X ), float( FlagObj->Z - Source->BaseData.Pos.Z ) );
  2672.  
  2673. Source->SetValue( EM_RoleValue_Dir, dir , NULL );
  2674. }
  2675.  
  2676. bool ClickToFaceEnabled ( int GItemID , bool Flag )
  2677. {
  2678. BaseItemObject* OwnerObj = BaseItemObject::GetObj( GItemID );
  2679. if( OwnerObj == NULL )
  2680. return false;
  2681.  
  2682. if( OwnerObj->Role()->IsNPC() == false )
  2683. return false;
  2684.  
  2685. NpcAIBaseClass* NpcAI = (NpcAIBaseClass*)OwnerObj->AI();
  2686.  
  2687. //NpcAI->SetMoveToFlagEnabled( Flag );
  2688. //NpcAI->SetClickToFaceEnable( Flag );
  2689. return true;
  2690. }
  2691.  
  2692. //°±¤î¨t²ÎºX¤lÂI²¾°Ê( Flag = true °±¤î false ¥i²¾°Ê )
  2693. bool MoveToFlagEnabled( int GItemID , bool Flag )
  2694. {
  2695. BaseItemObject* OwnerObj = BaseItemObject::GetObj( GItemID );
  2696. if( OwnerObj == NULL )
  2697. return false;
  2698.  
  2699. if( OwnerObj->Role()->IsNPC() == false )
  2700. return false;
  2701.  
  2702. NpcAIBaseClass* NpcAI = (NpcAIBaseClass*)OwnerObj->AI();
  2703.  
  2704. NpcAI->SetMoveToFlagEnabled( Flag );
  2705. return true;
  2706. }
  2707. //©w§Y©w¦ìªº«ü¥O,ÅýNPC´Â¦Vª±®a
  2708.  
  2709. /*
  2710. void FaceObj ( int iSourceID, int iTargetID )
  2711. {
  2712. RoleDataEx* Source = Global::GetRoleDataByGUID( iSourceID );
  2713. RoleDataEx* Target = Global::GetRoleDataByGUID( iTargetID );
  2714.  
  2715. if( Source == NULL || Target )
  2716. return;
  2717.  
  2718. float dir = Source->CalDir( Target );
  2719.  
  2720. Source->SetValue( EM_RoleValue_Dir, dir );
  2721. }
  2722. */
  2723. bool AdjustFaceDir ( int iSouceID, int iTargetID, int iAngle )
  2724. {
  2725. BaseItemObject* SourceObj = Global::GetObj( iSouceID );
  2726. if( SourceObj == NULL )
  2727. return false;
  2728.  
  2729. RoleDataEx* Source = SourceObj->Role();
  2730. RoleDataEx* Target = Global::GetRoleDataByGUID( iTargetID );
  2731. if( Target == NULL )
  2732. return false;
  2733.  
  2734. Source->Pos()->Dir = Source->CalDir( Target );
  2735.  
  2736. float fDir = ( Source->Pos()->Dir + (float) iAngle );
  2737. int Val = (int) ( fDir / 360 );
  2738.  
  2739. if( Val != 0 )
  2740. {
  2741. fDir = fDir - ( 360 * Val );
  2742. }
  2743.  
  2744. Source->TempData.Move.Tx = Source->BaseData.Pos.X;
  2745. Source->TempData.Move.Ty = Source->BaseData.Pos.Y;
  2746. Source->TempData.Move.Tz = Source->BaseData.Pos.Z;
  2747. Source->TempData.Move.ProcDelay = 0;
  2748. Source->TempData.Move.AddeDelay = 0;
  2749. Source->TempData.Move.Dx = 0;
  2750. Source->TempData.Move.Dy = 0;
  2751. Source->TempData.Move.Dz = 0;
  2752.  
  2753. Source->Pos()->Dir = fDir;
  2754.  
  2755. NetSrv_MoveChild::MoveObj( Source );
  2756. return true;
  2757. }
  2758.  
  2759.  
  2760. bool AdjustDir ( int iSouceID, int iAngle )
  2761. {
  2762. BaseItemObject* SourceObj = Global::GetObj( iSouceID );
  2763. if( SourceObj == NULL )
  2764. return false;
  2765.  
  2766. RoleDataEx* Source = SourceObj->Role();
  2767.  
  2768. float fDir = ( Source->Pos()->Dir + (float) iAngle );
  2769. int Val = (int) ( fDir / 360 );
  2770.  
  2771. if( Val != 0 )
  2772. {
  2773. fDir = fDir - ( 360 * Val );
  2774. }
  2775.  
  2776. Source->TempData.Move.Tx = Source->BaseData.Pos.X;
  2777. Source->TempData.Move.Ty = Source->BaseData.Pos.Y;
  2778. Source->TempData.Move.Tz = Source->BaseData.Pos.Z;
  2779. Source->TempData.Move.ProcDelay = 0;
  2780. Source->TempData.Move.AddeDelay = 0;
  2781. Source->TempData.Move.Dx = 0;
  2782. Source->TempData.Move.Dy = 0;
  2783. Source->TempData.Move.Dz = 0;
  2784. Source->Pos()->Dir = fDir;
  2785.  
  2786. NetSrv_MoveChild::MoveObj( Source );
  2787. return true;
  2788. }
  2789. //---------------------------------------------------------------------------------
  2790. bool FaceObj ( int iSouceID, int iTargetID )
  2791. {
  2792. BaseItemObject* SourceObj = Global::GetObj( iSouceID );
  2793. if( SourceObj == NULL )
  2794. return false;
  2795.  
  2796. RoleDataEx* Source = SourceObj->Role();
  2797. RoleDataEx* Target = Global::GetRoleDataByGUID( iTargetID );
  2798. if( Target == NULL )
  2799. return false;
  2800.  
  2801. Source->StopMove();
  2802. // SourceObj->Path()->ClearPath();
  2803.  
  2804. float NX , NZ , NY;
  2805. Global::SearchAttackNode( Source , Target , NX , NY , NZ );
  2806.  
  2807. //­±¦V­pºâ
  2808. Source->TempData.Move.Tx = NX;
  2809. Source->TempData.Move.Ty = NY;
  2810. Source->TempData.Move.Tz = NZ;
  2811. Source->TempData.Move.ProcDelay = 0;
  2812. Source->TempData.Move.AddeDelay = 0;
  2813. Source->TempData.Move.Dx = 0;
  2814. Source->TempData.Move.Dy = 0;
  2815. Source->TempData.Move.Dz = 0;
  2816.  
  2817. Source->Pos()->Dir = Source->CalDir( Target );
  2818.  
  2819. NetSrv_MoveChild::MoveObj( Source );
  2820. Source->BaseData.Pos.X = NX;
  2821. Source->BaseData.Pos.Y = NY;
  2822. Source->BaseData.Pos.Z = NZ;
  2823.  
  2824. return true;
  2825. }
  2826. //---------------------------------------------------------------------------------
  2827. void AddSpeakOption ( int iRoleID, int iNPCID, const char* pszOption, const char* pszLuaFunc, int iIconID )
  2828. {
  2829. RoleDataEx* pRole = Global::GetRoleDataByGUID( iRoleID );
  2830.  
  2831. if( pRole == NULL )
  2832. {
  2833. Print( LV2 , "AddSpeakOption" , "pRole == NULL" );
  2834. return;
  2835. }
  2836.  
  2837. SpeakOptionStruct option;
  2838.  
  2839. //strcpy( option.szLuaFunc, pszLuaFunc );
  2840. //strcpy( option.szOption, pszOption );
  2841.  
  2842. option.szLuaFunc = pszLuaFunc;
  2843. option.szOption = pszOption;
  2844. option.iIconID = iIconID;
  2845.  
  2846. pRole->PlayerTempData->SpeakInfo.SpeakOption.Push_Back( option );
  2847. }
  2848.  
  2849. void SetSpeakDetail ( int iRoleID, const char* pszDetail )
  2850. {
  2851. RoleDataEx* pRole = Global::GetRoleDataByGUID( iRoleID );
  2852. if( pRole )
  2853. pRole->PlayerTempData->SpeakInfo.SpeakDetail = pszDetail;
  2854. }
  2855.  
  2856. void LoadQuestOption ( int iRoleID )
  2857. {
  2858. RoleDataEx* pRole = Global::GetRoleDataByGUID( iRoleID );
  2859. if( pRole )
  2860. pRole->PlayerTempData->SpeakInfo.iLoadQuest = 1;
  2861. }
  2862.  
  2863. bool CheckMineEvent( )
  2864. {
  2865. PlotRegStruct* T = LUA_VMClass::ProcReg();
  2866.  
  2867. int MagicID = T->Arg.GetNumber( "MagicObjID" );
  2868. int MagicLv = T->Arg.GetNumber( "MagicLv" );
  2869. GameObjDbStructEx* MagicDB = Global::GetObjDB( MagicID );
  2870.  
  2871. //ªí¥Ü­nµ²§ô³B²z
  2872. if( MagicDB == NULL )
  2873. return true;
  2874.  
  2875. MagicItemRunPlot& ItemRunPlot = MagicDB->MagicBase.ItemRunPlot;
  2876. RoleDataEx* Role = Global::GetRoleDataByGUID( T->OwnerID );
  2877.  
  2878. if( Role == NULL )
  2879. return false;
  2880.  
  2881. vector<BaseSortStruct>* SearchList;
  2882. switch( MagicDB->MagicBase.ItemRunPlot.TargetType )
  2883. {
  2884. case EM_MagicItemRunPlotTargetType_Enemy:
  2885. SearchList = Global::SearchRangeObject( Role , Role->X() , Role->Y(), Role->Z() , EM_SearchRange_Enemy , 25 );
  2886. break;
  2887. case EM_MagicItemRunPlotTargetType_Friend:
  2888. case EM_MagicItemRunPlotTargetType_Friend_NoSelf:
  2889. SearchList = Global::SearchRangeObject( Role , Role->X() , Role->Y(), Role->Z() , EM_SearchRange_Friend , 25 );
  2890. break;
  2891. case EM_MagicItemRunPlotTargetType_Player:
  2892. case EM_MagicItemRunPlotTargetType_Player_NoSelf:
  2893. SearchList = Global::SearchRangeObject( Role , Role->X() , Role->Y(), Role->Z() , EM_SearchRange_Player , 25 );
  2894. break;
  2895. case EM_MagicItemRunPlotTargetType_NPC:
  2896. SearchList = Global::SearchRangeObject( Role , Role->X() , Role->Y(), Role->Z() , EM_SearchRange_NPC , 25 );
  2897. break;
  2898. case EM_MagicItemRunPlotTargetType_All:
  2899. case EM_MagicItemRunPlotTargetType_All_NoSelf:
  2900. SearchList = Global::SearchRangeObject( Role , Role->X() , Role->Y(), Role->Z() , EM_SearchRange_All , 25 );
  2901. break;
  2902. }
  2903.  
  2904. if( SearchList->size() == 0 )
  2905. return false;
  2906.  
  2907. switch( MagicDB->MagicBase.ItemRunPlot.TargetType )
  2908. {
  2909. case EM_MagicItemRunPlotTargetType_Friend_NoSelf:
  2910. case EM_MagicItemRunPlotTargetType_Player_NoSelf:
  2911. case EM_MagicItemRunPlotTargetType_All_NoSelf:
  2912. {
  2913. RoleDataEx* CheckRole = (RoleDataEx* )(*SearchList)[0].Data;
  2914.  
  2915. if( CheckRole->GUID() == T->TargetID )
  2916. {
  2917. SearchList->erase( SearchList->begin() );
  2918. }
  2919. }
  2920. break;
  2921. }
  2922.  
  2923. if( SearchList->size() == 0 )
  2924. return false;
  2925.  
  2926. RoleDataEx* Emeny = (RoleDataEx* )(*SearchList)[0].Data;
  2927.  
  2928. MagicProcInfo MagicInfo;
  2929. MagicInfo.Init();
  2930. MagicInfo.State = EM_MAGIC_PROC_STATE_PERPARE;
  2931. MagicInfo.TargetID = Emeny->GUID(); //¥Ø¼Ð
  2932. MagicInfo.MagicCollectID = ItemRunPlot.UseMagic; //ªk³N
  2933. MagicInfo.MagicLv = MagicLv;
  2934. bool Ret = MagicProcessClass::SysSpellMagic( Role , &MagicInfo );
  2935.  
  2936. if( Ret == false )
  2937. return false;
  2938.  
  2939. Role->LiveTime( 1000 , "CheckMineEvent" );
  2940.  
  2941. //°£¿ù¸ê°T
  2942. Print( Def_PrintLV2 , "CheckMineEvent" , "LivTime(1000) CheckMineEvent Name=%s DBID =%d Function=%s" , Global::GetRoleName_ASCII( Role ).c_str() , Role->DBID() , T->FuncName );
  2943.  
  2944.  
  2945. return true;
  2946. }
  2947. //---------------------------------------------------------------------------------
  2948. int GetPartyID ( int iRoleID, int iIndex )
  2949. {
  2950. RoleDataEx* pMember = NULL;
  2951. RoleDataEx* pRole = Global::GetRoleDataByGUID( iRoleID );
  2952.  
  2953. if( pRole == NULL )
  2954. return 0;
  2955.  
  2956. PartyInfoStruct* Party = PartyInfoListClass::This()->GetPartyInfo( pRole->BaseData.PartyID );
  2957.  
  2958. if( Party != NULL )
  2959. {
  2960. if( iIndex != -1 )
  2961. {
  2962. int iID = iIndex - 1;
  2963. if( (int)Party->Member.size() > iID && iID >= 0 )
  2964. {
  2965. pMember = Global::GetRoleDataByGUID( Party->Member[ iID ].GItemID );
  2966.  
  2967. if( pMember )
  2968. return pMember->GUID();
  2969. else
  2970. return 0;
  2971. }
  2972. else
  2973. return 0;
  2974. }
  2975. else
  2976. return int( Party->Member.size() );
  2977. }
  2978. else
  2979. return 0;
  2980. }
  2981. //---------------------------------------------------------------------------------
  2982. bool CheckQuest ( int iRoleID, int iQuestID, int iMode )
  2983. {
  2984. bool bResult = false;
  2985. RoleDataEx* pMember = NULL;
  2986. RoleDataEx* pRole = Global::GetRoleDataByGUID( iRoleID );
  2987.  
  2988. if( pRole == NULL )
  2989. {
  2990. Print( LV2 , "CheckQuest" , "pRole == NULL" );
  2991. return false;
  2992. }
  2993.  
  2994. // Àˬd«ü©w¤Hª«
  2995.  
  2996. if( iMode == 0 ) // ­Ó¤H©M¶¤¥î
  2997. {
  2998.  
  2999.  
  3000. if( pRole->CheckQuestList_IsGotQuest( iQuestID ) != -1 )
  3001. {
  3002. bResult = true;
  3003. }
  3004.  
  3005. PartyInfoStruct* Party = PartyInfoListClass::This()->GetPartyInfo( pRole->BaseData.PartyID );
  3006.  
  3007. if( Party != NULL )
  3008. {
  3009. for( std::vector< PartyMemberInfoStruct >::iterator it = Party->Member.begin(); it != Party->Member.end(); it++ )
  3010. {
  3011.  
  3012. pMember = Global::GetRoleDataByGUID( (*it).ItemID );
  3013.  
  3014. if( pMember != NULL && pMember->CheckQuestList_IsGotQuest( iQuestID ) != -1 )
  3015. {
  3016. // Àˬd©M¥D­nÀˬdªÌªº¶ZÂ÷
  3017. if( pRole->Length( pMember ) > _MAX_PARTY_SHARE_RANGE_ )
  3018. {
  3019. bResult = true;
  3020. }
  3021. }
  3022. }
  3023. }
  3024. }
  3025. else
  3026. if( iMode == 1 )
  3027. {
  3028.  
  3029. }
  3030.  
  3031. return bResult;
  3032. }
  3033.  
  3034. //---------------------------------------------------------------------------------
  3035. const char* GetString( const char* szKeyName )
  3036. {
  3037. static char buff[2048];
  3038. sprintf_s( buff , sizeof(buff) , "[%s]", szKeyName );
  3039. return buff;
  3040. //return g_ObjectData->GetString( szKeyName );
  3041. }
  3042. //---------------------------------------------------------------------------------
  3043. void CloseSpeak( int iRoleID )
  3044. {
  3045. CNetSrv_Script::CloseSpeak( iRoleID );
  3046. }
  3047. //---------------------------------------------------------------------------------
  3048. bool CastSpell( int iRoleID, int iTargetID, int iMagicID )
  3049. {
  3050. RoleDataEx* pTarget = Global::GetRoleDataByGUID( iTargetID );
  3051. if( pTarget == NULL )
  3052. return false;
  3053.  
  3054. RoleDataEx* pOwner = Global::GetRoleDataByGUID( iRoleID );
  3055. if( pOwner == NULL )
  3056. return false;
  3057. if( pOwner != pTarget )
  3058. pOwner->BaseData.Pos.Dir = pOwner->CalDir( pTarget );
  3059.  
  3060. return MagicProcessClass::SpellMagic( iRoleID, iTargetID, pTarget->Pos()->X, pTarget->Pos()->Y, pTarget->Pos()->Z, iMagicID, 0 );
  3061. }
  3062. //---------------------------------------------------------------------------------
  3063. bool CastSpellLv( int iRoleID, int iTargetID, int iMagicID , int iMagicLv )
  3064. {
  3065. RoleDataEx* pTarget = Global::GetRoleDataByGUID( iTargetID );
  3066. if( pTarget == NULL )
  3067. return false;
  3068.  
  3069. RoleDataEx* pOwner = Global::GetRoleDataByGUID( iRoleID );
  3070. if( pOwner == NULL )
  3071. return false;
  3072. if( pOwner != pTarget )
  3073. pOwner->BaseData.Pos.Dir = pOwner->CalDir( pTarget );
  3074.  
  3075. return MagicProcessClass::SpellMagic( iRoleID, iTargetID, pTarget->Pos()->X, pTarget->Pos()->Y, pTarget->Pos()->Z, iMagicID, iMagicLv );
  3076. }
  3077. bool CastSpellPos ( int iRoleID, float X , float Y , float Z , int iMagicID , int iMagicLv )
  3078. {
  3079. return MagicProcessClass::SpellMagic( iRoleID, iRoleID, X, Y, Z, iMagicID, iMagicLv );
  3080. }
  3081.  
  3082. //---------------------------------------------------------------------------------
  3083. void SetScriptFlag ( int iRoleID, int iFlagID, int iVal )
  3084. {
  3085. RoleDataEx* pRole = Global::GetRoleDataByGUID( iRoleID );
  3086. if( pRole == NULL )
  3087. return ;
  3088. if( iVal == 0 )
  3089. {
  3090. pRole->DelKeyItem( iFlagID );
  3091. }
  3092. else
  3093. {
  3094. pRole->AddKeyItem( iFlagID );
  3095. //pRole->BaseData.KeyItem.SetFlagOn( iFlagID );
  3096. }
  3097. }
  3098. //---------------------------------------------------------------------------------
  3099. bool CheckScriptFlag ( int iRoleID, int iFlagID )
  3100. {
  3101. RoleDataEx* pRole = Global::GetRoleDataByGUID( iRoleID );
  3102. if( pRole == NULL )
  3103. return false;
  3104. return pRole->BaseData.KeyItem.GetFlag( RoleDataEx::KeyItemObjToID( iFlagID ) );
  3105. }
  3106. //---------------------------------------------------------------------------------
  3107. bool CheckCardFlag ( int iRoleID, int iFlagID )
  3108. {
  3109. RoleDataEx* pRole = Global::GetRoleDataByGUID( iRoleID );
  3110. if( pRole == NULL )
  3111. return false;
  3112.  
  3113. return pRole->PlayerBaseData->Card.GetFlag( iFlagID - Def_ObjectClass_Card );
  3114. }
  3115. //---------------------------------------------------------------------------------
  3116. bool CheckCompleteQuest ( int iRoleID, int iQuestID )
  3117. {
  3118. RoleDataEx* pRole = Global::GetRoleDataByGUID( iRoleID );
  3119. if( pRole == NULL )
  3120. return false;
  3121. return pRole->CheckQuestHistory_IsComplete( iQuestID );
  3122. }
  3123. //---------------------------------------------------------------------------------
  3124. void SetPosByFlag( int iRoleID, int iFlagObjID, int iFlagID )
  3125. {
  3126. //RoleDataEx* pObj = Global::GetRoleDataByGUID( iRoleID );
  3127. BaseItemObject* pObj = BaseItemObject::GetObj( iRoleID );
  3128. FlagPosInfo* pFlagObj = FlagPosClass::GetFlag( iFlagObjID , iFlagID );
  3129. bool IsLiving = false;
  3130.  
  3131. if( pObj == NULL || pFlagObj == NULL )
  3132. return ;
  3133.  
  3134. if( pObj->Role()->TempData.AttachObjID > 0 )
  3135. return;
  3136.  
  3137. //NetSrv_MoveChild::SetObjPos( pObj , pFlagObj->X , pFlagObj->Y , pFlagObj->Z, pFlagObj->Dir );
  3138. Global::CheckClientLoading_SetPos( pObj->GUID() , pFlagObj->X , pFlagObj->Y , pFlagObj->Z, pFlagObj->Dir );
  3139. /*
  3140. if( pObj->SecRoomID() != -1 ) // ­n¬O¸Óª«¥ó¤´¦s¦b©ó Zone ªº¸Ü¥ý§R°£¦A·h²¾
  3141. {
  3142. DelFromPartition( iRoleID );
  3143. IsLiving = true;
  3144. }
  3145.  
  3146. pObj->BaseData.Pos.X = pFlagObj->X;
  3147. pObj->BaseData.Pos.Y = pFlagObj->Y;
  3148. pObj->BaseData.Pos.Z = pFlagObj->Z;
  3149. pObj->BaseData.Pos.Dir = pFlagObj->Dir;
  3150.  
  3151.  
  3152. if( IsLiving != false )
  3153. {
  3154. AddtoPartition( iRoleID, pObj->BaseData.RoomID );
  3155. }
  3156. */
  3157. }
  3158. //---------------------------------------------------------------------------------
  3159. void StopSoundToPlayer( int iRoleID, int iSoundID )
  3160. {
  3161. BaseItemObject *pObj = BaseItemObject::GetObj( iRoleID );
  3162. if( pObj == NULL ) return;
  3163.  
  3164. PG_Script_LtoC_StopSound Packet;
  3165.  
  3166. Packet.iObjID = pObj->GUID();
  3167. Packet.iSoundID = iSoundID;
  3168.  
  3169. Global::SendToCli_ByGUID( iRoleID, sizeof( Packet ) , &Packet );
  3170. }
  3171. //---------------------------------------------------------------------------------
  3172. void StopSound( int iRoleID, int iSoundID )
  3173. {
  3174. BaseItemObject *pObj = BaseItemObject::GetObj( iRoleID );
  3175. if( pObj == NULL ) return;
  3176.  
  3177. Global::m_iSoundID++;
  3178.  
  3179. PG_Script_LtoC_StopSound Packet;
  3180.  
  3181. Packet.iObjID = pObj->GUID();
  3182. Packet.iSoundID = iSoundID;
  3183.  
  3184. RoleDataEx* Owner = pObj->Role();
  3185.  
  3186. PlayIDInfo** Block = Global::PartSearch( Owner , _Def_View_Block_Range_ );
  3187.  
  3188. int i , j;
  3189. PlayID* TopID;
  3190.  
  3191. for( i = 0 ; Block[i] != NULL ; i++ )
  3192. {
  3193. TopID = Block[i]->Begin;
  3194.  
  3195. for( j = 0 ; TopID != NULL ; TopID = TopID->Next )
  3196. {
  3197. BaseItemObject* OtherObj = BaseItemObject::GetObj( TopID->ID );
  3198. if( OtherObj == NULL )
  3199. continue;
  3200. if( OtherObj->Role()->IsPlayer() == false )
  3201. continue;
  3202.  
  3203. Global::SendToCli_ByGUID( OtherObj->GUID() , sizeof( Packet ) , &Packet );
  3204. }
  3205. }
  3206. }
  3207. //---------------------------------------------------------------------------------
  3208. int PlaySoundToPlayer ( int iRoleID, const char* pszFile, bool bLoop )
  3209. {
  3210. BaseItemObject *pObj = BaseItemObject::GetObj( iRoleID );
  3211. if( pObj == NULL ) return 0;
  3212.  
  3213. PG_Script_LtoC_PlaySound Packet;
  3214.  
  3215. Global::m_iSoundID++;
  3216.  
  3217. Packet.iObjID = pObj->GUID();
  3218. Packet.sSoundPath = pszFile;
  3219. Packet.bLoop = bLoop;
  3220. Packet.iSoundID = Global::m_iSoundID;
  3221.  
  3222. Global::SendToCli_ByGUID( iRoleID, sizeof( Packet ) , &Packet );
  3223.  
  3224. return Global::m_iSoundID;
  3225. }
  3226. //---------------------------------------------------------------------------------
  3227. int PlaySound ( int iRoleID, const char* pszFile, bool bLoop )
  3228. {
  3229. BaseItemObject *pObj = BaseItemObject::GetObj( iRoleID );
  3230. if( pObj == NULL ) return 0;
  3231.  
  3232. Global::m_iSoundID++;
  3233.  
  3234. PG_Script_LtoC_PlaySound Packet;
  3235.  
  3236. Packet.iObjID = pObj->GUID();
  3237. Packet.sSoundPath = pszFile;
  3238. Packet.bLoop = bLoop;
  3239. Packet.iSoundID = Global::m_iSoundID;
  3240.  
  3241. RoleDataEx* Owner = pObj->Role();
  3242.  
  3243. PlayIDInfo** Block = Global::PartSearch( Owner , _Def_View_Block_Range_ );
  3244.  
  3245. int i , j;
  3246. PlayID* TopID;
  3247.  
  3248. for( i = 0 ; Block[i] != NULL ; i++ )
  3249. {
  3250. TopID = Block[i]->Begin;
  3251.  
  3252. for( j = 0 ; TopID != NULL ; TopID = TopID->Next )
  3253. {
  3254. BaseItemObject* OtherObj = BaseItemObject::GetObj( TopID->ID );
  3255. if( OtherObj == NULL )
  3256. continue;
  3257. if( OtherObj->Role()->IsPlayer() == false )
  3258. continue;
  3259.  
  3260. Global::SendToCli_ByGUID( OtherObj->GUID() , sizeof( Packet ) , &Packet );
  3261. }
  3262. }
  3263. return Global::m_iSoundID;
  3264. }
  3265. //---------------------------------------------------------------------------------
  3266. int PlayMusic( int iRoleID, const char* pszFile, bool bLoop )
  3267. {
  3268. BaseItemObject *pObj = BaseItemObject::GetObj( iRoleID );
  3269. if( pObj == NULL ) return 0;
  3270.  
  3271. Global::m_iSoundID++;
  3272.  
  3273. PG_Script_LtoC_PlayMusic Packet;
  3274.  
  3275. Packet.iObjID = pObj->GUID();
  3276. Packet.sSoundPath = pszFile;
  3277. Packet.bLoop = bLoop;
  3278. Packet.iSoundID = Global::m_iSoundID;
  3279.  
  3280. RoleDataEx* Owner = pObj->Role();
  3281.  
  3282. PlayIDInfo** Block = Global::PartSearch( Owner , _Def_View_Block_Range_ );
  3283.  
  3284. int i , j;
  3285. PlayID* TopID;
  3286.  
  3287. for( i = 0 ; Block[i] != NULL ; i++ )
  3288. {
  3289. TopID = Block[i]->Begin;
  3290.  
  3291. for( j = 0 ; TopID != NULL ; TopID = TopID->Next )
  3292. {
  3293. BaseItemObject* OtherObj = BaseItemObject::GetObj( TopID->ID );
  3294. if( OtherObj == NULL )
  3295. continue;
  3296. if( OtherObj->Role()->IsPlayer() == false )
  3297. continue;
  3298.  
  3299. Global::SendToCli_ByGUID( OtherObj->GUID() , sizeof( Packet ) , &Packet );
  3300. }
  3301. }
  3302. return Global::m_iSoundID;;
  3303. }
  3304. //---------------------------------------------------------------------------------
  3305. int PlayMusicToPlayer( int iRoleID, const char* pszFile, bool bLoop )
  3306. {
  3307. BaseItemObject *pObj = BaseItemObject::GetObj( iRoleID );
  3308. if( pObj == NULL ) return 0;
  3309.  
  3310. PG_Script_LtoC_PlayMusic Packet;
  3311.  
  3312. Global::m_iSoundID++;
  3313.  
  3314. Packet.iObjID = pObj->GUID();
  3315. Packet.sSoundPath = pszFile;
  3316. Packet.bLoop = bLoop;
  3317. Packet.iSoundID = Global::m_iSoundID;
  3318.  
  3319. Global::SendToCli_ByGUID( iRoleID, sizeof( Packet ) , &Packet );
  3320.  
  3321. return Global::m_iSoundID;
  3322. }
  3323. //---------------------------------------------------------------------------------
  3324. int Play3DSound ( int iRoleID, const char* pszFile, bool bLoop )
  3325. {
  3326. BaseItemObject *pObj = BaseItemObject::GetObj( iRoleID );
  3327. if( pObj == NULL ) return 0;
  3328.  
  3329. Global::m_iSoundID++;
  3330.  
  3331. PG_Script_LtoC_Play3DSound Packet;
  3332.  
  3333. Packet.iObjID = pObj->GUID();
  3334. Packet.sSoundPath = pszFile;
  3335. Packet.bLoop = bLoop;
  3336. Packet.iSoundID = Global::m_iSoundID;
  3337.  
  3338. RoleDataEx* Owner = pObj->Role();
  3339.  
  3340. PlayIDInfo** Block = Global::PartSearch( Owner , _Def_View_Block_Range_ );
  3341.  
  3342. int i , j;
  3343. PlayID* TopID;
  3344.  
  3345. for( i = 0 ; Block[i] != NULL ; i++ )
  3346. {
  3347. TopID = Block[i]->Begin;
  3348.  
  3349. for( j = 0 ; TopID != NULL ; TopID = TopID->Next )
  3350. {
  3351. BaseItemObject* OtherObj = BaseItemObject::GetObj( TopID->ID );
  3352. if( OtherObj == NULL )
  3353. continue;
  3354. if( OtherObj->Role()->IsPlayer() == false )
  3355. continue;
  3356.  
  3357. Global::SendToCli_ByGUID( OtherObj->GUID() , sizeof( Packet ) , &Packet );
  3358. }
  3359. }
  3360. return Global::m_iSoundID;
  3361. }
  3362. //---------------------------------------------------------------------------------
  3363. int Play3DSoundToPlayer ( int iRoleID, const char* pszFile, bool bLoop )
  3364. {
  3365. BaseItemObject *pObj = BaseItemObject::GetObj( iRoleID );
  3366. if( pObj == NULL ) return 0;
  3367.  
  3368. PG_Script_LtoC_Play3DSound Packet;
  3369.  
  3370. Global::m_iSoundID++;
  3371.  
  3372. Packet.iObjID = pObj->GUID();
  3373. Packet.sSoundPath = pszFile;
  3374. Packet.bLoop = bLoop;
  3375. Packet.iSoundID = Global::m_iSoundID;
  3376.  
  3377. Global::SendToCli_ByGUID( iRoleID, sizeof( Packet ) , &Packet );
  3378.  
  3379. return Global::m_iSoundID;
  3380. }
  3381. //---------------------------------------------------------------------------------
  3382. //³]©wª±®a¸Ë³Æ
  3383. bool SetRoleEq_Player ( int PlayerID , int Part , int ItemID )
  3384. {
  3385. RoleDataEx* Owner = Global::GetRoleDataByGUID( PlayerID );
  3386. GameObjDbStructEx* ItemDB = Global::GetObjDB( ItemID );
  3387.  
  3388. if( Owner == NULL )
  3389. return false;
  3390.  
  3391.  
  3392. EQWearPosENUM EquipPos = (EQWearPosENUM)Part;
  3393. //Owner->BaseData.EQ.Item[ EquipPos ].Init();
  3394.  
  3395. ItemFieldStruct* EQItem = Owner->GetEqItem(EquipPos);
  3396. if( EQItem == NULL )
  3397. return false;
  3398.  
  3399. EQItem->Init();
  3400.  
  3401. if( ItemDB != NULL )
  3402. {
  3403. Global::NewItemInit( *EQItem , ItemID , 0 ) ;
  3404.  
  3405. EQItem->OrgObjID = ItemID;
  3406. EQItem->Count = ItemDB->MaxHeap;
  3407. EQItem->ImageObjectID = ItemID;
  3408. }
  3409.  
  3410. Owner->Net_FixItemInfo_EQ( EquipPos );
  3411. Owner->TempData.UpdateInfo.Eq = true;
  3412.  
  3413. NetSrv_MoveChild::Send_LookEq( Owner );
  3414. return true;
  3415. }
  3416. //---------------------------------------------------------------------------------
  3417. // ³]©w NPC ¸Ë³Æ
  3418. void SetRoleEquip( int iRoleID, int iPartID, int iItemID, int iCount )
  3419. {
  3420. RoleDataEx* pObj = Global::GetRoleDataByGUID( iRoleID );
  3421. GameObjDbStructEx* pItemDB = Global::GetObjDB( iItemID );
  3422.  
  3423. if( pObj == NULL || pItemDB == NULL )
  3424. return;
  3425.  
  3426. if( pObj->IsPlayer() )
  3427. return;
  3428.  
  3429. EQWearPosENUM emEquipPos = (EQWearPosENUM)iPartID;
  3430.  
  3431. Global::NewItemInit( pObj->BaseData.EQ.Item[ emEquipPos ] , iItemID , 0 ) ;
  3432.  
  3433. pObj->BaseData.EQ.Item[ emEquipPos ].OrgObjID = iItemID;
  3434. pObj->BaseData.EQ.Item[ emEquipPos ].Count = iCount;
  3435. pObj->BaseData.EQ.Item[ emEquipPos ].ImageObjectID = iItemID;
  3436.  
  3437. pObj->TempData.UpdateInfo.Eq = true;
  3438.  
  3439.  
  3440. NetSrv_MoveChild::Send_LookEq( pObj );
  3441. }
  3442.  
  3443. //---------------------------------------------------------------------------------
  3444.  
  3445. void MoveToPathPoint ( int iObjID , int PathID )
  3446. {
  3447. BaseItemObject* pObj = BaseItemObject::GetObj( iObjID );
  3448.  
  3449.  
  3450. if( pObj == NULL || pObj->Role()->IsNPC() == false )
  3451. return;
  3452.  
  3453. NpcAIBaseClass* pAI = (NpcAIBaseClass*)pObj->AI();
  3454. NPCMoveFlagAIStruct* pMoveStatus = pAI->GetMoveStatus();
  3455. vector< NPC_MoveBaseStruct >* pMoveList = pObj->NPCMoveInfo()->MoveInfo();
  3456. RoleDataEx* Owner = pObj->Role();
  3457. if( PathID >= (int)pMoveList->size() )
  3458. return;
  3459.  
  3460. pObj->Role()->StopMove();
  3461. // pObj->Path()->ClearPath();
  3462.  
  3463. NPC_MoveBaseStruct MoveInfo = (*pMoveList)[ PathID ];
  3464.  
  3465. pMoveStatus->Type = EM_NPCMoveFlagAIType_Moving;
  3466. pMoveStatus->Index = PathID;
  3467. pMoveStatus->TargetX = MoveInfo.X;
  3468. pMoveStatus->TargetY = MoveInfo.Y;
  3469. pMoveStatus->TargetZ = MoveInfo.Z;
  3470. pMoveStatus->TargetDir = MoveInfo.Dir;
  3471. pMoveStatus->CountDown = RoleDataEx::G_SysTime + 100;
  3472.  
  3473. pObj->Path()->Target( pMoveStatus->TargetX , pMoveStatus->TargetY , pMoveStatus->TargetZ , Owner->X() , Owner->Y() , Owner->Z() );
  3474.  
  3475. }
  3476. //---------------------------------------------------------------------------------
  3477. void ScriptMessage ( int SayID , int iTarget, int iType, const char* Str, const char* szColor )
  3478. {
  3479. int iColor = HexStrToUInt( szColor );
  3480. NetSrv_Talk::ScriptMessage ( SayID, iTarget, iType, Str, iColor );
  3481. }
  3482. //---------------------------------------------------------------------------------
  3483. int RandRange ( int iMin, int iMax )
  3484. {
  3485. if( iMin <= 0 || iMin > iMax )
  3486. return 0;
  3487.  
  3488. return iMin + ( rand() % ( ( iMax - iMin ) + 1 ) );
  3489. }
  3490. //---------------------------------------------------------------------------------
  3491. bool CheckAcceptQuest ( int iRoleID, int iQuestID )
  3492. {
  3493. RoleDataEx* pRole = Global::GetRoleDataByGUID( iRoleID );
  3494. if( pRole == NULL )
  3495. return false;
  3496.  
  3497. if( pRole->CheckQuestList_IsGotQuest( iQuestID ) == -1 )
  3498. return false;
  3499. else
  3500. return true;
  3501. }
  3502. //---------------------------------------------------------------------------------
  3503. int GetDistance( int iOwnerID, int iTargetID )
  3504. {
  3505. RoleDataEx* pOwner = Global::GetRoleDataByGUID( iOwnerID );
  3506. RoleDataEx* pTarget = Global::GetRoleDataByGUID( iTargetID );
  3507. if( pOwner == NULL || pTarget == NULL )
  3508. return -1;
  3509.  
  3510. int iDistance = (int)( pOwner->Length( pTarget ) );
  3511.  
  3512. return iDistance;
  3513. }
  3514. //---------------------------------------------------------------------------------
  3515. bool CheckDistance( int iOwnerID, int iTargetID, int iRange )
  3516. {
  3517. RoleDataEx* pOwner = Global::GetRoleDataByGUID( iOwnerID );
  3518. RoleDataEx* pTarget = Global::GetRoleDataByGUID( iTargetID );
  3519. if( pOwner == NULL || pTarget == NULL )
  3520. return false;
  3521.  
  3522. int iDistance = (int)( pOwner->Length( pTarget ) );
  3523.  
  3524. if( iDistance <= iRange && iDistance >= 0 )
  3525. return true;
  3526. else
  3527. return false;
  3528. }
  3529. //---------------------------------------------------------------------------------
  3530. void CallSpeakLua( int iNPCID, int iPlayerID, const char* pszSpeakLua )
  3531. {
  3532. RoleDataEx* pNPC = Global::GetRoleDataByGUID( iNPCID );
  3533. RoleDataEx* pPlayer = Global::GetRoleDataByGUID( iPlayerID );
  3534.  
  3535. if( pNPC && pPlayer && strlen( pszSpeakLua ) != 0 )
  3536. {
  3537. pPlayer->PlayerTempData->SpeakInfo.Reset();
  3538. pPlayer->PlayerTempData->SpeakInfo.iSpeakNPCID = iNPCID;
  3539.  
  3540. vector< MyVMValueStruct > vecArg;
  3541. LUA_VMClass::PCallByStrArg( pszSpeakLua, iPlayerID, iNPCID, &vecArg );
  3542.  
  3543. CNetSrv_Script_Child::SpeakOption( iPlayerID );
  3544. }
  3545.  
  3546. }
  3547. //---------------------------------------------------------------------------------
  3548. void LockObj( int iObjID, int iLockType, int iLockID )
  3549. {
  3550. RoleDataEx* pObj = Global::GetRoleDataByGUID( iObjID );
  3551. RoleDataEx* pLocker = NULL;
  3552.  
  3553. pLocker = Global::GetRoleDataByGUID( iLockID );
  3554.  
  3555. if( pLocker == NULL || pObj == NULL )
  3556. return;
  3557.  
  3558. if( !pLocker->IsPlayer() )
  3559. return;
  3560.  
  3561. // if( pObj )
  3562. {
  3563. pObj->PlayerTempData->ScriptInfo.emLockType = (ENUM_SCRIPTSTATUS_LOCKTYPE) iLockType;
  3564. pObj->PlayerTempData->ScriptInfo.iLockDBID = pLocker->DBID();
  3565. }
  3566.  
  3567. if( pLocker )
  3568. {
  3569. NetSrv_MoveChild::_Send_Relation( pLocker, pObj );
  3570. }
  3571.  
  3572. //static void _Send_Relation( RoleDataEx* SendObj , RoleDataEx* Target );
  3573.  
  3574.  
  3575. }
  3576. //---------------------------------------------------------------------------------
  3577. void DisableQuest( int iObjID, bool bDisableQuest )
  3578. {
  3579. RoleDataEx* pObj = Global::GetRoleDataByGUID( iObjID );
  3580. if( pObj == NULL )
  3581. return;
  3582. //pObj->TempData.Attr.Action.DisableQuest = bDisableQuest;
  3583. pObj->SetDisableQuest( bDisableQuest );
  3584. }
  3585. //---------------------------------------------------------------------------------
  3586. void SetMinimapIcon( int iObjID, int iIconID )
  3587. {
  3588. RoleDataEx* pObj = Global::GetRoleDataByGUID( iObjID );
  3589. if( pObj == NULL )
  3590. return;
  3591. pObj->TempData.iMinimapIcon = iIconID;
  3592. NetSrv_Move::SendObjMinimapIcon( iObjID, iIconID );
  3593. }
  3594. //---------------------------------------------------------------------------------
  3595. void AddBorderPage( int iObjID, const char* sPageText )
  3596. {
  3597. //RoleDataEx* pObj = Global::GetRoleDataByGUID( iObjID );
  3598. //return pObj->TempData.Magic.UseItem;
  3599.  
  3600. //if( pObj->TempData.ScriptBorder.iPageCount < _MAX_SPEAKOPTION_COUNT_ )
  3601. //{
  3602. //pObj->TempData.ScriptBorder.sBorderPage[ pObj->TempData.ScriptBorder.iPageCount ] = sPageText;
  3603. //pObj->TempData.ScriptBorder.sBorderPage += sPageText;
  3604. //pObj->TempData.ScriptBorder.sBorderPage += 0;
  3605. //pObj->TempData.ScriptBorder.iPageCount++;
  3606. CNetSrv_Script::AddBorderPage( iObjID, sPageText );
  3607. //
  3608. }
  3609. //---------------------------------------------------------------------------------
  3610. void ClearBorder( int iObjID )
  3611. {
  3612. RoleDataEx* pObj = Global::GetRoleDataByGUID( iObjID );
  3613. if( pObj == NULL )
  3614. return;
  3615. pObj->TempData.ScriptBorder.Init();
  3616. CNetSrv_Script::ClearBorder( iObjID );
  3617. }
  3618. //---------------------------------------------------------------------------------
  3619. int GetUseItemGUID( int iObjID )
  3620. {
  3621. RoleDataEx* pObj = Global::GetRoleDataByGUID( iObjID );
  3622. if( pObj == NULL )
  3623. return 0;
  3624. return pObj->TempData.Magic.UseItem;
  3625. }
  3626. //---------------------------------------------------------------------------------
  3627. const char* GetObjNameByGUID( int iGUID )
  3628. {
  3629. //RoleDataEx* pObj = Global::GetRoleDataByGUID( iObjID );
  3630.  
  3631. GameObjDbStructEx* pItemDB = Global::GetObjDB( iGUID );
  3632. if( pItemDB == NULL )
  3633. return "";
  3634.  
  3635. return pItemDB->Name;
  3636. }
  3637. //---------------------------------------------------------------------------------
  3638. void ShowBorder( int iObjID, int iQuestID, const char* sBorderTitle, const char* sTexture )
  3639. {
  3640. RoleDataEx* pObj = Global::GetRoleDataByGUID( iObjID );
  3641. if( pObj == NULL )
  3642. return;
  3643. pObj->TempData.ScriptBorder.iQuestID = iQuestID;
  3644. CNetSrv_Script::ShowBorder( iObjID, iQuestID, sBorderTitle, sTexture );
  3645. }
  3646. //---------------------------------------------------------------------------------
  3647. const char* GetQuestDesc( int iQuestID )
  3648. {
  3649. static string sKey;
  3650.  
  3651. GameObjDbStructEx* pItemDB = Global::GetObjDB( iQuestID );
  3652. if( pItemDB == NULL )
  3653. return "";
  3654.  
  3655. char szKey[256];
  3656. sprintf_s( szKey , sizeof(szKey), "[Sys%d_szquest_desc]", iQuestID );
  3657.  
  3658. sKey = szKey;
  3659. return sKey.c_str();
  3660. }
  3661. //---------------------------------------------------------------------------------
  3662. const char* GetQuestDetail( int iQuestID, int iType )
  3663. {
  3664. static string sKey;
  3665.  
  3666. GameObjDbStructEx* pItemDB = Global::GetObjDB( iQuestID );
  3667.  
  3668. if( pItemDB == NULL )
  3669. return "";
  3670.  
  3671. char szKey[256];
  3672.  
  3673. switch( iType )
  3674. {
  3675. case 1: sprintf_s( szKey,sizeof(szKey), "[Sys%d_szquest_accept_detail]", iQuestID ); break;
  3676. case 2: sprintf_s( szKey,sizeof(szKey), "[Sys%d_szquest_uncomplete_detail]", iQuestID ); break;
  3677. case 3: sprintf_s( szKey,sizeof(szKey), "[Sys%d_szquest_complete_detail]", iQuestID ); break;
  3678. }
  3679.  
  3680. sKey = szKey;
  3681.  
  3682. return sKey.c_str();
  3683. }
  3684. //---------------------------------------------------------------------------------
  3685. void SetFollow( int iOwner, int iTarget )
  3686. {
  3687. RoleDataEx* pOwener = Global::GetRoleDataByGUID( iOwner );
  3688. RoleDataEx* pTarget = Global::GetRoleDataByGUID( iTarget );
  3689.  
  3690. if( pOwener == NULL )
  3691. return;
  3692.  
  3693. pOwener->SetFollow( pTarget );
  3694. }
  3695. //---------------------------------------------------------------------------------
  3696. //±þ¦º¬Yª«¥ó
  3697. bool KillID ( int KillerID , int DeadID )
  3698. {
  3699. RoleDataEx* Dead = Global::GetRoleDataByGUID( DeadID );
  3700. RoleDataEx* Kill = Global::GetRoleDataByGUID( KillerID );
  3701. if( Dead == NULL || Dead->IsDead() || Kill == NULL )
  3702. return false;
  3703.  
  3704. Dead->AddHP( Kill , int( -1*Dead->MaxHP() - 1000 ) );
  3705. return true;
  3706. }
  3707. //---------------------------------------------------------------------------------
  3708. int BeginCastBarEvent ( int iObjID, int iClickObjID, const char* pszString, int iTime, int iMotionID, int iMotionEndID, int iFlag, const char* pszLuaEvent )
  3709. {
  3710. RoleDataEx* pOwner = Global::GetRoleDataByGUID( iObjID );
  3711.  
  3712. if( pOwner == NULL )
  3713. return 0;
  3714.  
  3715. int iTick = iTime * 100;
  3716.  
  3717. if( CNetSrv_Gather_Child::SetCast( pOwner, iClickObjID, iTick, CNetSrv_Script_Child::OnCast_ScriptCast, pszLuaEvent ) != false )
  3718. {
  3719. pOwner->TempData.IdleMotionID = iMotionID;
  3720. CNetSrv_Script::ScriptCast( iObjID, pszString, iTick, iMotionID, iMotionEndID );
  3721. return 1;
  3722. }
  3723.  
  3724. return 0;
  3725. }
  3726. //---------------------------------------------------------------------------------
  3727. int BeginCastBar ( int iObjID, const char* pszString, int iTime, int iMotionID, int iMotionEndID, int iFlag )
  3728. {
  3729. RoleDataEx* pOwner = Global::GetRoleDataByGUID( iObjID );
  3730.  
  3731. if( pOwner == NULL )
  3732. return 0;
  3733.  
  3734. int iTick = iTime * 100;
  3735.  
  3736. if( CNetSrv_Gather_Child::SetCast( pOwner, 0, iTick, CNetSrv_Script_Child::OnCast_ScriptCast, "" ) != false )
  3737. {
  3738. pOwner->TempData.IdleMotionID = iMotionID;
  3739. CNetSrv_Script::ScriptCast( iObjID, pszString, iTick, iMotionID, iMotionEndID );
  3740. return 1;
  3741. }
  3742.  
  3743. return 0;
  3744. }
  3745. //---------------------------------------------------------------------------------
  3746. int CheckCastBar ( int iObjID )
  3747. {
  3748. RoleDataEx* pOwner = Global::GetRoleDataByGUID( iObjID );
  3749.  
  3750. if( pOwner == NULL )
  3751. return 0;
  3752.  
  3753. return pOwner->PlayerTempData->CastData.iContext;
  3754. }
  3755. //---------------------------------------------------------------------------------
  3756. int CheckCastBarStatus ( int iObjID )
  3757. {
  3758. RoleDataEx* pOwner = Global::GetRoleDataByGUID( iObjID );
  3759.  
  3760. if( pOwner == NULL )
  3761. return 0;
  3762.  
  3763. return pOwner->PlayerTempData->CastData.iEventHandle;
  3764. }
  3765. //---------------------------------------------------------------------------------
  3766. void EndCastBar ( int iObjID, int iResult )
  3767. {
  3768. RoleDataEx* pOwner = Global::GetRoleDataByGUID( iObjID );
  3769.  
  3770. if( pOwner == NULL )
  3771. return;
  3772.  
  3773. CNetSrv_Script::ScriptCastResult( iObjID, iResult );
  3774. pOwner->PlayerTempData->CastData.Clear();
  3775. }
  3776. //---------------------------------------------------------------------------------
  3777. void SetCursorType( int iObjID, int iCursorID )
  3778. {
  3779. RoleDataEx* pOwner = Global::GetRoleDataByGUID( iObjID );
  3780. if( pOwner != NULL )
  3781. {
  3782. pOwner->TempData.CursorType = iCursorID;
  3783. NetSrv_Other::SC_Range_BaseObjValueChange( iObjID , EM_ObjValueChange_CursorType , "" , iCursorID );
  3784. }
  3785. }
  3786. //---------------------------------------------------------------------------------
  3787. void GenerateMine ( int iRoomID, int iFlagID, int iMineID, int iMineCount )
  3788. {
  3789. CNetSrv_Gather_Child::GenerateMine( iRoomID, iFlagID, iMineID, iMineCount );
  3790. }
  3791. //---------------------------------------------------------------------------------
  3792. void OpenGuildWarBid( int iPlayer, int iNPC )
  3793. {
  3794. RoleDataEx* pNpc = Global::GetRoleDataByGUID( iNPC );
  3795. RoleDataEx* pRole = Global::GetRoleDataByGUID( iPlayer );
  3796. if( pNpc->TempData.CrystalID != 0 )
  3797. {
  3798. NetSrv_Guild::SD_GuildFightInfoRequest( pRole->DBID(), pNpc->TempData.CrystalID );
  3799. }
  3800. }
  3801.  
  3802. void SetCrystalID( int iObjID, int iCrystalID )
  3803. {
  3804. RoleDataEx* pRole = Global::GetRoleDataByGUID( iObjID );
  3805. pRole->TempData.CrystalID = iCrystalID;
  3806. }
  3807.  
  3808. int GetLocaltime( int iTimeVal, int iTimeID )
  3809. {
  3810. __time32_t NowTime;
  3811. struct tm* gmt;
  3812.  
  3813. if( iTimeID != 0 )
  3814. {
  3815. iTimeVal = (int)iTimeVal - RoleDataEx::G_TimeZone*60*60; // ¥ý´«ºâ¦¨ UTC
  3816. gmt = _localtime32( (__time32_t*)&iTimeVal );
  3817. }
  3818. else
  3819. {
  3820. gmt = _localtime32( (__time32_t*)&iTimeVal );
  3821. }
  3822.  
  3823. switch( iTimeID )
  3824. {
  3825. case 0:
  3826. {
  3827. _time32( &NowTime );
  3828. gmt = _localtime32( &NowTime );
  3829. NowTime = (int)_mktime32( gmt ) + RoleDataEx::G_TimeZone*60*60;
  3830. return (int)NowTime;
  3831. } break;
  3832.  
  3833.  
  3834. case 1: return gmt->tm_hour; break; /* hours since midnight - [0,23] */
  3835. case 2: return gmt->tm_min; break; /* minutes after the hour - [0,59] */
  3836. case 3: return gmt->tm_sec; break; // sec
  3837. case 4: return gmt->tm_mon; break; /* months since January - [0,11] */
  3838. case 5: return gmt->tm_mday; break; /* day of the month - [1,31] */
  3839. case 6: return gmt->tm_wday; break; /* days since Sunday - [0,6] */
  3840.  
  3841.  
  3842. }
  3843.  
  3844. return 0;
  3845. }
  3846.  
  3847. int GetSystime( int iTimeID )
  3848. {
  3849. __time32_t NowTime;
  3850. struct tm* gmt;
  3851.  
  3852. _time32( &NowTime );
  3853. gmt = _localtime32( &NowTime );
  3854.  
  3855. switch( iTimeID )
  3856. {
  3857. case 0:
  3858. {
  3859. _time32( &NowTime );
  3860. gmt = _localtime32( &NowTime );
  3861. NowTime = (int)_mktime32( gmt ) + RoleDataEx::G_TimeZone*60*60;
  3862. return (int)NowTime;
  3863. } break;
  3864.  
  3865. case 1: return gmt->tm_hour; break; /* hours since midnight - [0,23] */
  3866. case 2: return gmt->tm_min; break; /* minutes after the hour - [0,59] */
  3867. case 3: return gmt->tm_mon; break; /* months since January - [0,11] */
  3868. case 4: return gmt->tm_mday; break; /* day of the month - [1,31] */
  3869. case 5: return gmt->tm_wday; break; /* days since Sunday - [0,6] */
  3870. }
  3871.  
  3872. return 0;
  3873. }
  3874. //-----------------------------------------------------------------------------------
  3875. bool DeleteQuest ( int iObjID, int iQuestID )
  3876. {
  3877. BaseItemObject *pObj = BaseItemObject::GetObj( iObjID );
  3878. RoleDataEx* pRole = Global::GetRoleDataByGUID( iObjID );
  3879.  
  3880. int iQuestField = -1;
  3881.  
  3882. if( pRole == NULL || pRole->IsPlayer() == false )
  3883. return false;
  3884.  
  3885. for( int index = 0; index < _MAX_QUEST_COUNT_; index++ )
  3886. {
  3887. if( pRole->PlayerBaseData->Quest.QuestLog[ index ].iQuestID == iQuestID )
  3888. {
  3889. iQuestField = index;
  3890. break;
  3891. }
  3892. }
  3893.  
  3894. CNetSrv_Script::m_pThis->On_QuestDelete( pObj, iQuestField, iQuestID );
  3895.  
  3896. return true;
  3897. }
  3898. //-----------------------------------------------------------------------------------
  3899. int GetBodyFreeSlot ( int iObjID )
  3900. {
  3901. RoleDataEx* pRole = Global::GetRoleDataByGUID( iObjID );
  3902.  
  3903. if( pRole != NULL )
  3904. {
  3905. return pRole->GetBodyFreeSlot();
  3906. }
  3907. return 0;
  3908. }
  3909. //-----------------------------------------------------------------------------------
  3910. void ResetObjDailyQuest ( int iObjID )
  3911. {
  3912. RoleDataEx* pRole = Global::GetRoleDataByGUID( iObjID );
  3913. if( pRole->IsPlayer() )
  3914. {
  3915. // ­«¸m¨C¤é¥ô°È
  3916. pRole->PlayerBaseData->Quest.QuestDaily.ReSet();
  3917.  
  3918. // ­«¸m¸s²Õ¥ô°È
  3919. for( int i=0; i<DF_QUESTDAILY_MAXGROUP; i++ )
  3920. {
  3921. pRole->PlayerBaseData->Quest.iQuestGroup[i] = 0;
  3922. }
  3923.  
  3924. {
  3925. __time32_t NowTime;
  3926. struct tm* gmt;
  3927. _time32( &NowTime );
  3928. gmt = _localtime32( &NowTime );
  3929.  
  3930. pRole->PlayerBaseData->Quest.LastCompleteTime = (int)_mktime32( gmt ) + RoleDataEx::G_TimeZone*60*60;;
  3931. }
  3932.  
  3933. // µo°e«Ê¥]³qª¾ Client ­«¸m¥ô°È
  3934. CNetSrv_Script::ResetDailyQuest( iObjID, 1 );
  3935. }
  3936. }
  3937.  
  3938. int GetDailyQuestCount( int iObjID )
  3939. {
  3940. RoleDataEx* pRole = Global::GetRoleDataByGUID( iObjID );
  3941.  
  3942. if( pRole->IsPlayer() )
  3943. {
  3944. int iCount = 0;
  3945. int iTotal = pRole->PlayerBaseData->Quest.QuestDaily.Size();
  3946.  
  3947. for( int i=0; i<iTotal;i++ )
  3948. {
  3949. if( pRole->PlayerBaseData->Quest.QuestDaily.GetFlag( i ) == true )
  3950. {
  3951. iCount++;
  3952. }
  3953. }
  3954.  
  3955. return iCount;
  3956. }
  3957.  
  3958.  
  3959. return 0;
  3960. }
  3961. //-----------------------------------------------------------------------------------
  3962. void SendBGInfoToClient ( int iBGID, int iClientID )
  3963. {
  3964. RoleDataEx* pRole = Global::GetRoleDataByGUID( iClientID );
  3965.  
  3966. if( pRole != NULL )
  3967. CNetSrv_BattleGround::SL_GetBGInfo( iBGID, pRole->DBID() );
  3968. }
  3969. //-----------------------------------------------------------------------------------
  3970. void SetBattleGroundObjClickState( int iObjID, int iTeamID, int iClickAble )
  3971. {
  3972. CNetSrv_BattleGround_Child::SetBattleGroundObjClickState( iObjID, iTeamID, iClickAble );
  3973. }
  3974. //-----------------------------------------------------------------------------------
  3975. bool SetRoleCampID( int iObjID, int iID )
  3976. {
  3977. RoleDataEx* pRole = Global::GetRoleDataByGUID( iObjID );
  3978. if( pRole == NULL )
  3979. return false;
  3980.  
  3981. if( (unsigned)iID >= _MAX_CAMP_COUNT_ )
  3982. return false;
  3983.  
  3984. if( pRole->TempData.AI.CampID == (CampID_ENUM)iID )
  3985. return true;
  3986.  
  3987. //¬ö¿ýª±®a¤Á´«°}À窺¸ê®Æ
  3988. if( pRole->IsPlayer() )
  3989. Print( LV2 , "SetRoleCampID" , " Set Player Camp ID RoleName=%s RoleDBID =%d CampID=%d" , pRole->RoleName() , pRole->DBID() , iID );
  3990.  
  3991. pRole->TempData.AI.CampID = (CampID_ENUM)iID;
  3992.  
  3993. int iRoomID = pRole->RoomID();
  3994.  
  3995. //DelFromPartition( iObjID );
  3996. //AddtoPartition( iObjID, iRoomID );
  3997. NetSrv_OtherChild::SendRangeCampID( pRole , pRole->TempData.AI.CampID );
  3998. return true;
  3999. }
  4000. //-----------------------------------------------------------------------------------
  4001. bool ResetRoleCampID( int ObjID )
  4002. {
  4003. CampID_ENUM CampID;
  4004. RoleDataEx* Role = Global::GetRoleDataByGUID( ObjID );
  4005. if( Role == NULL )
  4006. return false;
  4007.  
  4008. if( Role->IsPlayer() == false )
  4009. return false;
  4010.  
  4011. if( Global::Ini()->IsPvE != false )
  4012. {
  4013. CampID = EM_CampID_Good;
  4014. }
  4015. else
  4016. {
  4017. bool IsLevel_15 = false;
  4018. for( int i = 0 ; i < EM_Max_Vocation ; i++ )
  4019. {
  4020. if( Role->PlayerBaseData->AbilityList[i].Level >= 15 )
  4021. IsLevel_15 = true;
  4022. }
  4023.  
  4024. //Àˬd°}Àç¬O§_¦³§ïÅÜ
  4025. if( IsLevel_15 == false )
  4026. {
  4027. CampID = EM_CampID_NewHand;
  4028. }
  4029. else if( Role->PlayerBaseData->GoodEvil > -30.0f )
  4030. {
  4031. CampID = EM_CampID_Good;
  4032. }
  4033. else
  4034. {
  4035. CampID = EM_CampID_Evil;
  4036. }
  4037. }
  4038.  
  4039.  
  4040. if( Role->TempData.AI.CampID == (CampID_ENUM)CampID )
  4041. return true;
  4042.  
  4043. Role->TempData.AI.CampID = CampID;
  4044.  
  4045. NetSrv_OtherChild::SendRangeCampID( Role , Role->TempData.AI.CampID );
  4046.  
  4047. return true;
  4048. }
  4049. //-----------------------------------------------------------------------------------
  4050. int GetRoleCampID( int iObjID )
  4051. {
  4052. RoleDataEx* pRole = Global::GetRoleDataByGUID( iObjID );
  4053. if( pRole == NULL )
  4054. return -1;
  4055.  
  4056. return pRole->TempData.AI.CampID;
  4057. }
  4058. //-----------------------------------------------------------------------------------
  4059. void ChangeObjID ( int iObjID, int iID )
  4060. {
  4061. RoleDataEx* pRole = Global::GetRoleDataByGUID( iObjID );
  4062. GameObjDbStructEx* pObj = g_ObjectData->GetObj( iID );
  4063.  
  4064. if( pRole == NULL || pObj == NULL )
  4065. return;
  4066.  
  4067. if( pRole->IsPlayer() )
  4068. return;
  4069.  
  4070. if( iID == pRole->BaseData.ItemInfo.OrgObjID )
  4071. return;
  4072.  
  4073. DelFromPartition( iObjID );
  4074.  
  4075. pRole->BaseData.ItemInfo.OrgObjID = iID;
  4076. pRole->BaseData.RoleName.Clear();
  4077.  
  4078. AddtoPartition( iObjID, -1 );
  4079. }
  4080. //-----------------------------------------------------------------------------------
  4081. void SetScore ( int iRoomID, int iTeamID, int iVal )
  4082. {
  4083. CNetSrv_BattleGround_Child::SetScore( iRoomID, iTeamID, iVal );
  4084. }
  4085. //-----------------------------------------------------------------------------------
  4086. int GetScore ( int iRoomID, int iTeamID )
  4087. {
  4088. return CNetSrv_BattleGround_Child::GetScore( iRoomID, iTeamID );
  4089. }
  4090. //-----------------------------------------------------------------------------------
  4091. int GetTeamID ( int iObjID )
  4092. {
  4093. RoleDataEx* pRole = Global::GetRoleDataByGUID( iObjID );
  4094. if( pRole )
  4095. {
  4096. return ( pRole->TempData.BattleGroundTeamID + 1 );
  4097. }
  4098. return 0;
  4099. }
  4100. //-----------------------------------------------------------------------------------
  4101. void SetZoneReviveScript ( const char* pszScript )
  4102. {
  4103. Global::Ini()->ReviveScript = pszScript;
  4104. }
  4105. //-----------------------------------------------------------------------------------
  4106. void SetZonePVPScript ( const char* pszScript )
  4107. {
  4108. Global::Ini()->LuaFunc_PVP = pszScript;
  4109. }
  4110. //-----------------------------------------------------------------------------------
  4111. void EndBattleGround ( int iRoomID, int iTeamID )
  4112. {
  4113. ((CNetSrv_BattleGround_Child*)CNetSrv_BattleGround_Child::m_pThis)->EndBattleGround( iRoomID, iTeamID );
  4114. }
  4115. //-----------------------------------------------------------------------------------
  4116. void CloseBattleGround ( int iRoomID )
  4117. {
  4118. ((CNetSrv_BattleGround_Child*)CNetSrv_BattleGround_Child::m_pThis)->CloseBattleGround( iRoomID );
  4119. }
  4120. //-----------------------------------------------------------------------------------
  4121. void SetLandMarkInfo ( int iRoomID, int iID, int iVal, float fX, float fY, float fZ, const char* pszName, int iIconID )
  4122. {
  4123. ((CNetSrv_BattleGround_Child*)CNetSrv_BattleGround_Child::m_pThis)->SetLandMarkInfo( iRoomID, iID, iVal, fX, fY, fZ, pszName, iIconID );
  4124. }
  4125. //-----------------------------------------------------------------------------------
  4126. void SetLandMark ( int iRoomID, int iID, int iVal )
  4127. {
  4128. ((CNetSrv_BattleGround_Child*)CNetSrv_BattleGround_Child::m_pThis)->SetLandMark( iRoomID, iID, iVal );
  4129. }
  4130. //-----------------------------------------------------------------------------------
  4131. int GetLandMark ( int iRoomID, int iID )
  4132. {
  4133. return ((CNetSrv_BattleGround_Child*)CNetSrv_BattleGround_Child::m_pThis)->GetLandMark( iRoomID, iID );
  4134. }
  4135. //-----------------------------------------------------------------------------------
  4136. void SetVar ( int iRoomID, int iID, int iVal )
  4137. {
  4138. ((CNetSrv_BattleGround_Child*)CNetSrv_BattleGround_Child::m_pThis)->SetVar( iRoomID, iID, iVal );
  4139. }
  4140. //-----------------------------------------------------------------------------------
  4141. int GetVar ( int iRoomID, int iID )
  4142. {
  4143. return ((CNetSrv_BattleGround_Child*)CNetSrv_BattleGround_Child::m_pThis)->GetVar( iRoomID, iID );
  4144. }
  4145. //-----------------------------------------------------------------------------------
  4146. void AddRecipe( int iObjID, int iRecipeID )
  4147. {
  4148. NetSrv_Recipe::AddRecipe( iObjID, iRecipeID );
  4149. }
  4150. //-----------------------------------------------------------------------------------
  4151. void GetRecipeList ( int iClientID, int iObjID )
  4152. {
  4153. NetSrv_Recipe::SC_RecipeList( iClientID, iObjID );
  4154. }
  4155. //-----------------------------------------------------------------------------------
  4156. bool SetCustomTitleString( int iObjID, const char* pszTitle )
  4157. {
  4158. RoleDataEx* pRole = Global::GetRoleDataByGUID( iObjID );
  4159. if( pRole == NULL )
  4160. return false;
  4161.  
  4162. std::wstring outStrName;
  4163. CharacterNameRulesENUM Ret = g_ObjectData->CheckCharacterNameRules( pszTitle , (CountryTypeENUM)Global::Ini()->CountryType , outStrName );
  4164. if( Ret != EM_CharacterNameRules_Rightful )
  4165. {
  4166. return false;
  4167. }
  4168.  
  4169. pRole->PlayerBaseData->TitleStr = WCharToUtf8( outStrName.c_str() ).c_str();
  4170.  
  4171. //pRole->PlayerBaseData->TitleStr = pszTitle;
  4172. pRole->TempData.UpdateInfo.AllZoneInfoChange = 1;
  4173. NetSrv_MoveChild::SendRangeSetTitleID( pRole );
  4174. return true;
  4175. }
  4176. //-----------------------------------------------------------------------------------
  4177. int DebugCheck(lua_State *L)
  4178. {
  4179. int iNum = lua_gettop (L);
  4180.  
  4181. // check break point
  4182.  
  4183.  
  4184. return 0;
  4185. }
  4186. //-----------------------------------------------------------------------------------
  4187. int CallPlot(lua_State *L)
  4188. {
  4189. int iNum = lua_gettop (L);
  4190.  
  4191. int iObjID = 0;
  4192. string FuncName;
  4193.  
  4194. if( iNum >= 2 )
  4195. {
  4196. iObjID = luaL_checkint( L, 1 );
  4197. FuncName = luaL_checkstring( L, 2 );
  4198. }
  4199. else
  4200. {
  4201. // ²M±¼¦h¾lªº Statck
  4202. return 0;
  4203. }
  4204.  
  4205.  
  4206.  
  4207. PlotRegStruct* T = LUA_VMClass::ProcReg();
  4208. BaseItemObject* pObj = BaseItemObject::GetObj( iObjID );
  4209. if( pObj == NULL )
  4210. {
  4211. return 0;
  4212. }
  4213.  
  4214. pObj->PlotVM()->CallPlot( L, iObjID, FuncName.c_str(), iNum );
  4215.  
  4216. return 0;
  4217.  
  4218. }
  4219. //-----------------------------------------------------------------------------------
  4220. bool CheckBit ( int iValue, int iID )
  4221. {
  4222. return bool( iValue & ( 1 << iID ) );
  4223. }
  4224. //-----------------------------------------------------------------------------------
  4225. int SetBitValue( int iValue, int iBitID, int iBitValue )
  4226. {
  4227. int iMask = ( 1 << iBitID );
  4228.  
  4229. if( iBitValue == 0 )
  4230. return iValue &( 0xffffff^iMask );
  4231. else
  4232. return iValue | iMask;
  4233. }
  4234. //----------------------------------------------------------------------------------
  4235. enum CheckRelationTypeENUM
  4236. {
  4237. EM_CheckRelationType_Attackable , //¥i§_§ðÀ»
  4238. EM_CheckRelationType_Enemy , //¬O§_¬O¼Ä¤H
  4239. EM_CheckRelationType_CheckLine , //¤¤¶¡¬O§_¨S¦³ªý¾×
  4240. EM_CheckRelationType_InHateList , //¬O§_¦b¤³«ëªí¤º
  4241. };
  4242. //----------------------------------------------------------------------------------
  4243. bool CheckRelation ( int OwnerID , int TargetID , int Type )
  4244. {
  4245. BaseItemObject* OwnerObj = Global::GetObj( OwnerID );
  4246. if( OwnerObj == NULL )
  4247. return false;
  4248. RoleDataEx* Owner = OwnerObj->Role();
  4249. RoleDataEx* Target = Global::GetRoleDataByGUID( TargetID );
  4250.  
  4251. if( Owner == NULL || Target == NULL )
  4252. return false;
  4253.  
  4254. switch( Type )
  4255. {
  4256. case EM_CheckRelationType_Attackable:
  4257. return Owner->CheckAttackable( Target );
  4258. case EM_CheckRelationType_Enemy:
  4259. return Owner->CheckEnemy( Target );
  4260. case EM_CheckRelationType_CheckLine:
  4261. return OwnerObj->Path()->CheckLine( Target->X() , Target->Y() , Target->Z() , Owner->X() , Owner->Y() , Owner->Z() );
  4262. case EM_CheckRelationType_InHateList:
  4263. {
  4264. for( int i = 0 ; i < Owner->TempData.NPCHate.Hate.Size() ; i++ )
  4265. {
  4266. if( Owner->TempData.NPCHate.Hate[i].DBID == Target->DBID()
  4267. && Owner->TempData.NPCHate.Hate[i].ItemID == Target->GUID() )
  4268. return true;
  4269. }
  4270. return false;
  4271. }
  4272. break;
  4273. }
  4274. return false;
  4275. }
  4276.  
  4277. const char* GetServerDataLanguage()
  4278. {
  4279. return Global::Ini()->Datalanguage.c_str();
  4280. }
  4281.  
  4282. const char* GetServerStringLanguage()
  4283. {
  4284. return Global::Ini()->Stringlanguage.c_str();
  4285. }
  4286.  
  4287. int GetNumTeam()
  4288. {
  4289. return ((CNetSrv_BattleGround_Child*)CNetSrv_BattleGround_Child::m_pThis)->m_BG_iNumTeam;
  4290. }
  4291.  
  4292. int GetNumQueueMember( int iLVID, int iQueueID )
  4293. {
  4294. iQueueID = iQueueID - 1;
  4295. if( iQueueID >= 0 && iQueueID < ((CNetSrv_BattleGround_Child*)CNetSrv_BattleGround_Child::m_pThis)->m_BG_iNumTeam )
  4296. {
  4297. vector< StructBattleGroundQueue >* pQueue = NULL;
  4298.  
  4299. pQueue = &( ((CNetSrv_BattleGround_Child*)CNetSrv_BattleGround_Child::m_pThis)->m_vecWaitQueue[ iLVID ][ iQueueID ] );
  4300. return (int)pQueue->size();
  4301. }
  4302.  
  4303. return 0;
  4304. }
  4305.  
  4306. void AddTeamItem ( int iRoomID, int iTeamID, int iItemID, int iItemCount )
  4307. {
  4308. ((CNetSrv_BattleGround_Child*)CNetSrv_BattleGround_Child::m_pThis)->AddTeamItem( iRoomID, iTeamID, iItemID, iItemCount );
  4309. }
  4310.  
  4311. void DelRoleItemByDBID ( int iDBID, int iItemID, int iItemCount )
  4312. {
  4313. RoleDataEx* Item = Global::GetRoleDataByDBID( iDBID );
  4314. if( Item == NULL )
  4315. {
  4316. //Print( LV3 , "DelBodyItem" , "Item==NULL ItemID=%d OrgID=%d Count=%d",iItemID, OrgID ,Count);
  4317. return;
  4318. }
  4319.  
  4320. if( Item->DelBodyItem( iItemID , iItemCount , EM_ActionType_PlotDestory ) == false )
  4321. {
  4322. return;
  4323. }
  4324. return;
  4325. }
  4326.  
  4327. void AddTeamHonor( int iRoomID, int iTeamID, int iHonor )
  4328. {
  4329. return ((CNetSrv_BattleGround_Child*)CNetSrv_BattleGround_Child::m_pThis)->AddTeamHonor( iRoomID, iTeamID, iHonor );
  4330. }
  4331.  
  4332. void SetBattleGroundObjCampID ( int iDBID, int iCampID )
  4333. {
  4334. RoleDataEx* pRoleObj = Global::GetRoleDataByDBID( iDBID );
  4335. if( pRoleObj != NULL )
  4336. {
  4337. pRoleObj->PlayerTempData->BGInfo.iCampID = iCampID;
  4338. }
  4339. }
  4340.  
  4341. void SetBattleGroundObjForceFlagID ( int iDBID, int iFlagID )
  4342. {
  4343. RoleDataEx* pRoleObj = Global::GetRoleDataByDBID( iDBID );
  4344. if( pRoleObj != NULL )
  4345. {
  4346. pRoleObj->PlayerTempData->iForceFlagID = iFlagID;
  4347. }
  4348. }
  4349.  
  4350. void SetBattleGroundObjGUIDForceFlag ( int iGUID, int iFlagID )
  4351. {
  4352. RoleDataEx* pRoleObj = Global::GetRoleDataByGUID( iGUID );
  4353. if( pRoleObj != NULL )
  4354. {
  4355. pRoleObj->PlayerTempData->iForceFlagID = iFlagID;
  4356. }
  4357. }
  4358.  
  4359.  
  4360. // ¥²»Ý­n¥ý°õ¦æ¹L BeginCastBar ¤§«á, ¤~¶]³o¨ç¦¡, ¦b¨Ï¥Î BeginCast bar ®É, ¤â¤W¸j¨ú«ü©wª««~, ¦b EndCastBar ®É©Þ±¼
  4361. void AttachCastMotionTool ( int iObjID, int iAttachItemID )
  4362. {
  4363. CNetSrv_Script::AttachCastMotionToolID( iObjID, iAttachItemID );
  4364. }
  4365.  
  4366. void AttachTool ( int iRoleID, int iToolID, const char* cszLinkID )
  4367. {
  4368. CNetSrv_Script::AttachTool( iRoleID, iToolID, cszLinkID );
  4369. }
  4370.  
  4371.  
  4372. // ¨Ï¥Î Client ¤¶­±¶}©l¤@­Ó­Ë¼Æ­p®É
  4373. void StartClientCountDown ( int iObjID, int iStartNumber, int iEndNumber, int iOffset, int iMode, int iShowStatusBar, const char* Str)
  4374. {
  4375. //CNetSrv_Script::StartClientCountDown( iObjID, iStartNumber, iEndNumber, iOffset ); // 1816
  4376. CNetSrv_Script::StartClientCountDown( iObjID, iStartNumber, iEndNumber, iOffset, iMode, iShowStatusBar, Str ); // 1817
  4377. }
  4378.  
  4379. void StopClientCountDown (int iObjID)
  4380. {
  4381. CNetSrv_Script::StartClientCountDown( iObjID, 0, 0, 0, 0, -1, "" );
  4382. }
  4383.  
  4384. int GetBattleGroundRoomID ( int iID )
  4385. {
  4386. return CNetSrv_BattleGround_Child::GetBattleGroundRoomID( iID );
  4387. }
  4388.  
  4389. void MoveRoleToBattleGround ( int iWorldID, int iWorldZoneID, int iClientDBID, int iRoomID, float X, float Y, float Z, float Dir )
  4390. {
  4391. int iZoneID = CNetSrv_BattleGround_Child::GetBattleGroundType();
  4392. CNetSrv_BattleGround_Child::SZ_ChangeZoneToBattleGround( iWorldID, iWorldZoneID, iZoneID, iClientDBID, iRoomID, X, Y, Z, Dir );
  4393. }
  4394.  
  4395.  
  4396. void SetArenaScore ( int iRoomID, int iTeamID, int iArenaType, int iIndex, float fValue )
  4397. {
  4398. ((CNetSrv_BattleGround_Child*)CNetSrv_BattleGround_Child::m_pThis)->SetArenaScore( iRoomID, iTeamID, iArenaType, iIndex, fValue );
  4399. }
  4400.  
  4401. float GetArenaScore ( int iRoomID, int iTeamID, int iArenaType, int iIndex )
  4402. {
  4403. return ((CNetSrv_BattleGround_Child*)CNetSrv_BattleGround_Child::m_pThis)->GetArenaScore( iRoomID, iTeamID, iArenaType, iIndex );
  4404. }
  4405.  
  4406.  
  4407. int GetNumTeamMember ( int iRoomID, int iTeamID )
  4408. {
  4409. return ((CNetSrv_BattleGround_Child*)CNetSrv_BattleGround_Child::m_pThis)->GetNumTeamMember( iRoomID, iTeamID );
  4410. }
  4411.  
  4412. int GetEnterTeamMemberInfo ( int iRoomID, int iTeamID, int iID )
  4413. {
  4414. return ((CNetSrv_BattleGround_Child*)CNetSrv_BattleGround_Child::m_pThis)->GetEnterTeamMemberInfo( iRoomID, iTeamID, iID );
  4415. }
  4416.  
  4417. int GetNumEnterTeamMember ( int iRoomID, int iTeamID )
  4418. {
  4419. return ((CNetSrv_BattleGround_Child*)CNetSrv_BattleGround_Child::m_pThis)->GetNumEnterTeamMember( iRoomID, iTeamID );
  4420. }
  4421.  
  4422. int GetDisconnectTeamMember ( int iRoomID, int iTeamID )
  4423. {
  4424. return ((CNetSrv_BattleGround_Child*)CNetSrv_BattleGround_Child::m_pThis)->GetDisconnectTeamMember( iRoomID, iTeamID );
  4425. }
  4426.  
  4427. void Revive ( int iOwnerID, int iZoneID, float x, float y, float z, float ExpDecRate )
  4428. {
  4429. BaseItemObject *pObj = BaseItemObject::GetObj( iOwnerID );
  4430. if( pObj == NULL )
  4431. return;
  4432. Global::PlayerResuretion( pObj , iZoneID, x, y, z, ExpDecRate );
  4433. }
  4434.  
  4435. void DebugMsg( int iTargetID , int iRoomID, const char* Str )
  4436. {
  4437. if( iTargetID == 0 )
  4438. {
  4439. if( BaseItemObject::St() == NULL )
  4440. return;
  4441.  
  4442. vector< BaseItemObject* >& ZoneList = *BaseItemObject::GetZoneObjList();
  4443. for( int i = 0 ; i < (int)ZoneList.size() ; i++ )
  4444. {
  4445. BaseItemObject* Obj = ZoneList[i];
  4446.  
  4447. if( Obj == NULL || Obj->Role()->IsPlayer() == false )
  4448. continue;
  4449.  
  4450. if( Obj->Role()->BaseData.RoomID != iRoomID )
  4451. continue;
  4452.  
  4453. if( Obj->Role()->PlayerBaseData->ManageLV != 0 )
  4454. {
  4455. Obj->Role()->Msg( CharToWchar( Str ).c_str() );
  4456. }
  4457. }
  4458. }
  4459. else
  4460. {
  4461. RoleDataEx* Item = Global::GetRoleDataByGUID( iTargetID );
  4462. if( Item == NULL )
  4463. return;
  4464.  
  4465. if( Item->PlayerBaseData->ManageLV != 0 )
  4466. {
  4467. Item->Msg( CharToWchar( Str ).c_str() );
  4468. }
  4469.  
  4470. return;
  4471. }
  4472. }
  4473.  
  4474. void DebugLog( int iLV, const char* pszString )
  4475. {
  4476. Print( iLV, "Lua", pszString );
  4477. }
  4478.  
  4479.  
  4480. void SetDelayPatrolTime( int iObjID, int iTime )
  4481. {
  4482. RoleDataEx* pObj = Global::GetRoleDataByGUID( iObjID );
  4483. if( pObj != NULL )
  4484. {
  4485. pObj->TempData.iDelayPatrol = RoleDataEx::G_SysTime + iTime;
  4486. }
  4487. }
  4488.  
  4489. int GetGUIDByDBID ( int iDBID )
  4490. {
  4491. RoleDataEx* pObj = Global::GetRoleDataByDBID( iDBID );
  4492. if( pObj != NULL )
  4493. {
  4494. return pObj->GUID();
  4495. }
  4496. return 0;
  4497. }
  4498. //---------------------------------------------------------------
  4499. void SetMemberVar( int iRoomID, int iTeamID, int iGUID, int iVarID, int iVar )
  4500. {
  4501. ((CNetSrv_BattleGround_Child*)CNetSrv_BattleGround_Child::m_pThis)->SetMemberVar( iRoomID, iTeamID, iGUID, iVarID, iVar );
  4502. }
  4503. //---------------------------------------------------------------
  4504. int GetMemberVar( int iRoomID, int iTeamID, int iGUID, int iVarID )
  4505. {
  4506. return ((CNetSrv_BattleGround_Child*)CNetSrv_BattleGround_Child::m_pThis)->GetMemberVar( iRoomID, iTeamID, iGUID, iVarID );
  4507. }
  4508. //---------------------------------------------------------------
  4509. int GetMaxTeamMember()
  4510. {
  4511. return ((CNetSrv_BattleGround_Child*)CNetSrv_BattleGround_Child::m_pThis)->m_BG_iNumTeamPeople;
  4512. }
  4513. //---------------------------------------------------------------
  4514. void JoinBattleGround ( int iObjID, int iBattleGroundID, int iPartyID, int iSrvID )
  4515. {
  4516. BaseItemObject *pObj = BaseItemObject::GetObj( iObjID );
  4517. if( pObj )
  4518. {
  4519. int iTeamMemberLV[ DF_MAX_TEAMDBID ];
  4520. ZeroMemory( iTeamMemberLV, sizeof( iTeamMemberLV ) );
  4521.  
  4522. CNetSrv_BattleGround::m_pThis->OnRC_JoinBattleGround( pObj, iObjID, iBattleGroundID, -1, iSrvID, iTeamMemberLV );
  4523. }
  4524.  
  4525. }
  4526. //---------------------------------------------------------------
  4527. void LeaveBattleGround( int iObjID )
  4528. {
  4529. BaseItemObject *pObj = BaseItemObject::GetObj( iObjID );
  4530.  
  4531. if( pObj != NULL )
  4532. {
  4533. CNetSrv_BattleGround::m_pThis->OnRC_LeaveBattleGround( pObj );
  4534. }
  4535. }
  4536. //---------------------------------------------------------------
  4537. void JoinBattleGroundWithTeam ( int iObjID, int iZoneID )
  4538. {
  4539. BaseItemObject *pObj = BaseItemObject::GetObj( iObjID );
  4540.  
  4541. if( pObj )
  4542. {
  4543. int iTeamMemberDBID[ DF_MAX_TEAMDBID ];
  4544. int iNumParty = 0;
  4545. int index = 0;
  4546.  
  4547. ZeroMemory( iTeamMemberDBID, sizeof( iTeamMemberDBID ) );
  4548.  
  4549. PartyInfoStruct* Party = PartyInfoListClass::This()->GetPartyInfo( pObj->Role()->BaseData.PartyID );
  4550.  
  4551. if( Party != NULL )
  4552. {
  4553. iNumParty = (int)Party->Member.size();
  4554.  
  4555. for( vector< PartyMemberInfoStruct >::iterator it = Party->Member.begin(); it != Party->Member.end(); it++ )
  4556. {
  4557. iTeamMemberDBID[ index ] = (*it).DBID;
  4558. index++;
  4559. }
  4560.  
  4561.  
  4562. CNetSrv_BattleGround::m_pThis->OnRC_JoinBattleGround( pObj, iObjID, 0, iNumParty, iZoneID, iTeamMemberDBID );
  4563. }
  4564. }
  4565.  
  4566. }
  4567. //---------------------------------------------------------------
  4568. int GetWorldQueueRule()
  4569. {
  4570. return ((CNetSrv_BattleGround_Child*)CNetSrv_BattleGround_Child::m_pThis)->m_BG_iWorldQueueRule;
  4571. }
  4572. //---------------------------------------------------------------
  4573. void AddHonor( int iObjID, int iValue )
  4574. {
  4575. RoleDataEx* Player = Global::GetRoleDataByGUID( iObjID );
  4576.  
  4577. Player->AddValue( EM_RoleValue_Honor , iValue );
  4578. Player->Net_DeltaRoleValue( EM_RoleValue_Honor , iValue );
  4579. }
  4580. //---------------------------------------------------------------
  4581. void AddRankPoint( int iObjID, int iRankPoint )
  4582. {
  4583.  
  4584. }
  4585. //---------------------------------------------------------------
  4586. void AddTeamRankPoint( int iRoomID, int iTeamID, int iRankPoint )
  4587. {
  4588.  
  4589. }
  4590. //---------------------------------------------------------------
  4591. void SetCameraFollowUnit( int iRoleID, int iObjID, int offsetX, int offsetY, int offsetZ)
  4592. {
  4593. BaseItemObject *pObj = BaseItemObject::GetObj( iRoleID );
  4594.  
  4595. if( pObj == NULL )
  4596. return;
  4597.  
  4598. PG_Script_LtoC_SetCameraFollowUnit Packet;
  4599.  
  4600. Packet.iObjID = iObjID;
  4601. Packet.offsetX = offsetX;
  4602. Packet.offsetY = offsetY;
  4603. Packet.offsetZ = offsetZ;
  4604.  
  4605. Global::SendToCli_ByGUID( iRoleID, sizeof( Packet ) , &Packet );
  4606. }
  4607. //---------------------------------------------------------------
  4608. int GetMemory()
  4609. {
  4610. PROCESS_MEMORY_COUNTERS pmc;
  4611. HANDLE hProcess;
  4612.  
  4613. DWORD dwPID = GetCurrentProcessId();
  4614.  
  4615. hProcess = OpenProcess( PROCESS_QUERY_INFORMATION |
  4616. PROCESS_VM_READ,
  4617. FALSE, dwPID );
  4618.  
  4619. GetProcessMemoryInfo( hProcess, &pmc, sizeof(pmc));
  4620.  
  4621. //-----------------------------
  4622.  
  4623. return (int)pmc.WorkingSetSize;
  4624. }
  4625. //---------------------------------------------------------------
  4626. void SetWorldVar ( const char* pszVarName, int iVarValue )
  4627. {
  4628. NetSrv_InstanceChild::SetWorldVar( pszVarName, iVarValue );
  4629. }
  4630. //---------------------------------------------------------------
  4631. int GetWorldVar ( const char* pszVarName )
  4632. {
  4633. return NetSrv_InstanceChild::GetWorldVar( pszVarName );
  4634. }
  4635. //---------------------------------------------------------------
  4636. int GetIniValueSetting ( const char* pszVarName )
  4637. {
  4638. int iValue = Global::Ini()->Int( pszVarName );
  4639. return iValue;
  4640. }
  4641. //---------------------------------------------------------------
  4642.  
  4643. // Test function!
  4644.  
  4645. bool CheckFlagPlayer(const char* namePlayer, const char* idFlag) {
  4646. Nane::setMsg(QString("Msg text")); // Call function of QtApplication1
  4647. return false;
  4648. }
  4649.  
  4650. }
  4651.  
  4652.  
  4653.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement