PageRenderTime 55ms CodeModel.GetById 19ms RepoModel.GetById 0ms app.codeStats 1ms

/SERVER/GameServer/AppServer/script/Script.cpp

https://bitbucket.org/ichenq/stardust
C++ | 3774 lines | 3132 code | 381 blank | 261 comment | 777 complexity | 4545a9738346a6151df3656808f991f8 MD5 | raw file

Large files files are truncated, but you can click here to view the full file

  1. #include "StdAfx.h"
  2. #include "script.h"
  3. #include "variablelist.h"
  4. #include "..\player.h"
  5. #include "..\ServerRegion.h"
  6. #include "../goods/cgoods.h"
  7. #include "../monster.h"
  8. #include "../moveshape.h"
  9. #include "../public/StrType.h"
  10. #include "../public/StrUnifyInput.h"
  11. #include <vector>
  12. #include <string>
  13. CScript::tagStrValueInfo::tagStrValueInfo(void)
  14. :pStrValue(NULL),lStrValueLen(0)
  15. {
  16. }
  17. CScript::tagStrValueInfo::~tagStrValueInfo(void)
  18. {
  19. }
  20. /************************************************
  21. * 运行一个脚本文件 RunScript(...); *
  22. ************************************************/
  23. listScript g_Scripts; // 脚本链表表头
  24. FreeScript g_FreeScriptList; // 预分配的空闲脚本内存
  25. map<CScript*,string> g_UsingScript; // 正在使用的Script
  26. CVariableList* CScript::g_StackVarList = NULL;
  27. list<CGUID> CScript::m_DelScripts;
  28. CVariableList* CScript::GetStackVarListInst(void)
  29. {
  30. if(NULL == g_StackVarList)
  31. g_StackVarList = MP_NEW CVariableList;
  32. return g_StackVarList;
  33. }
  34. void CScript::ReleaseStackVarListInst(void)
  35. {
  36. MP_DELETE(g_StackVarList);
  37. }
  38. ///////////////////
  39. CScript* PopFreeScript(const char* pszName)
  40. {
  41. CScript* tempScript = NULL;
  42. if( g_FreeScriptList.size() > 0 ) //有空闲Script内存块
  43. {
  44. tempScript = g_FreeScriptList.front();
  45. g_FreeScriptList.pop_front();
  46. }
  47. else
  48. {
  49. tempScript = MP_NEW CScript;
  50. }
  51. tempScript->ResetVariableList();
  52. tempScript->ResetChildScriptInfo();
  53. tempScript->SetSrcShape(NULL);
  54. tempScript->SetDesShape(NULL);
  55. tempScript->SetRegion(NULL);
  56. if(pszName)
  57. g_UsingScript[tempScript]=pszName;
  58. else
  59. g_UsingScript[tempScript]="";
  60. return tempScript;
  61. }
  62. void PushFreeScript(CScript* freeScript)
  63. {
  64. if(NULL == freeScript) return;
  65. g_UsingScript.erase(freeScript);
  66. // 如果空闲队列没有达到最大数量
  67. if(g_FreeScriptList.size() <= CGlobeSetup::GetSetup()->lMaxPreAllocedScriptNum)
  68. {
  69. freeScript->GetSelfVariableList()->Release();
  70. g_FreeScriptList.push_back(freeScript);
  71. }
  72. else //清除多余空闲内存
  73. {
  74. MP_DELETE(freeScript);
  75. }
  76. }
  77. //输出脚本信息
  78. void OutputScriptInfo()
  79. {
  80. char pszInfo[1024]="";
  81. _snprintf(pszInfo,1024,"g_UsingScript:%d,g_Scripts:%d",g_UsingScript.size(),g_Scripts.size());
  82. PutStringToFile("ScriptInfo",pszInfo);
  83. map<CScript*,string>::iterator it = g_UsingScript.begin();
  84. for(;it != g_UsingScript.end();it++)
  85. {
  86. bool bFlag = false;
  87. char pszSrcGuid[50]="";
  88. const CGUID& guid = (*it).first->GetID();
  89. (*it).first->GetSrcID().tostring(pszSrcGuid);
  90. if(guid != NULL_GUID)
  91. bFlag = ( g_Scripts.find(guid ) != g_Scripts.end() );
  92. _snprintf(pszInfo,1024,"(SrcType:%d,SrcGuid:%s)flag:%d,IsHang:%d,HangFun:%d,fileame:%s",(*it).first->GetSrcType(),pszSrcGuid,bFlag,(*it).first->IsHang(),(*it).first->GetHangFunc(),(*it).second.c_str());
  93. PutStringToFile("ScriptInfo",pszInfo);
  94. }
  95. }
  96. // 客户端选择有效性判断
  97. bool ClientOptIsValid(const CGUID& scriptid, const char* szClientOpt)
  98. {
  99. if(scriptid == NULL_GUID) return true;
  100. listScript::iterator itr = g_Scripts.find(scriptid);
  101. if(itr != g_Scripts.end())
  102. {
  103. if( !itr->second->GetClientOptInfo()
  104. || itr->second->GetClientOptInfo()[0] == '\0') return true;
  105. if(strstr(itr->second->GetClientOptInfo(), szClientOpt))
  106. return true;
  107. else
  108. return false;
  109. }
  110. return false;
  111. }
  112. // 清除脚本的客户端选择检查数据
  113. void ClearClientOptData(const CGUID& scriptid)
  114. {
  115. listScript::iterator itr = g_Scripts.find(scriptid);
  116. if(itr != g_Scripts.end())
  117. {
  118. if(itr->second)
  119. itr->second->SetClientOptInfo("");
  120. }
  121. }
  122. // 外部调用脚本
  123. double RunScript(stRunScript *p, char* pData, int paramA, int paramB)
  124. {
  125. if(p==NULL || pData==NULL)
  126. return false;
  127. #ifdef _RUNSTACKINFO_
  128. char pszStatckInfo[10240]="";
  129. _snprintf(pszStatckInfo,10240,"RunScript(FileName:%s) Start",p->pszFileName?p->pszFileName:"");
  130. CMessage::AsyWriteFile(GetGame()->GetStatckFileName(),pszStatckInfo);
  131. #endif
  132. CScript* tempScript = NULL;
  133. double lIndexID = 0; //全局的唯一脚本ID
  134. tempScript = PopFreeScript(p->pszFileName);
  135. #ifdef _SCRIPT_INFO_
  136. DWORD BeginTime = timeGetTime();
  137. tempScript->m_RunTime = 0;
  138. #endif
  139. // 初始化script对象
  140. tempScript->m_dwLastTime=0;
  141. if(p->srcShape && (OBJECT_TYPE)p->srcShape->GetType() == TYPE_PLAYER)
  142. tempScript->SetPlayerID(p->srcShape->GetExID());
  143. else
  144. tempScript->SetPlayerID(NULL_GUID);
  145. tempScript->SetRegion(p->pRegion);
  146. tempScript->SetSrcShape(p->srcShape);
  147. tempScript->SetDesShape(p->desShape);
  148. tempScript->SetUsedItemID(p->guUsedItemID);
  149. POINT pointXY;
  150. pointXY.x = -1;
  151. pointXY.y = -1;
  152. tempScript->SetDropGoodsPoint(pointXY);
  153. CGUID guid;
  154. CGUID::CreateGUID(guid);
  155. tempScript->SetID(guid);
  156. // 加载脚本内容
  157. double ret = 0; // 返回值
  158. if( tempScript->LoadScript(p->pszFileName, pData) )
  159. {
  160. tempScript->GetVariableList()->AddVar("$ParamA", paramA);
  161. tempScript->GetVariableList()->AddVar("$ParamB", paramB);
  162. tempScript->GetVariableList()->AddVar("$Ret", 0.0f);
  163. // 执行脚本
  164. if( tempScript->RunStep() == CScript::SR_HANG )
  165. {
  166. g_Scripts[guid] = tempScript;
  167. #ifdef _RUNSTACKINFO_
  168. _snprintf(pszStatckInfo,10240,"RunScript(FileName:%s) Hang",p->pszFileName?p->pszFileName:"");
  169. CMessage::AsyWriteFile(GetGame()->GetStatckFileName(),pszStatckInfo);
  170. #endif
  171. #ifdef _SCRIPT_INFO_
  172. tempScript->m_RunTime += timeGetTime() - BeginTime;
  173. #endif
  174. return 0;
  175. }
  176. else
  177. {
  178. ret = tempScript->GetVariableList()->GetVarValue("$Ret", 0);
  179. }
  180. }
  181. #ifdef _SCRIPT_INFO_
  182. GetGame()->AddScriptInfo((p->pszFileName?p->pszFileName:""), timeGetTime() - BeginTime);
  183. tempScript->m_RunTime = 0;
  184. #endif
  185. PushFreeScript(tempScript);
  186. #ifdef _RUNSTACKINFO_
  187. _snprintf(pszStatckInfo,10240,"RunScript(FileName:%s) End",p->pszFileName?p->pszFileName:"");
  188. CMessage::AsyWriteFile(GetGame()->GetStatckFileName(),pszStatckInfo);
  189. #endif
  190. return ret;
  191. }
  192. // 往脚本里添加参数
  193. static void _AddParamList( CScript *pScript, const VarPairListType &var_list )
  194. {
  195. CVariableList *pVarList = pScript->GetVariableList();
  196. for( VarPairListType::const_iterator it = var_list.begin(); it != var_list.end(); ++ it )
  197. {
  198. const stVarPair &vp = *it;
  199. switch( vp.ValueType )
  200. {
  201. case stVarPair::VT_NUMBER:
  202. pVarList->AddVar( vp.Name.c_str(), vp.NumValue );
  203. break;
  204. case stVarPair::VT_STRING:
  205. pVarList->AddVar( vp.Name.c_str(), vp.StrValue.c_str() );
  206. break;
  207. case stVarPair::VT_GUID:
  208. pVarList->AddGuid( vp.Name.c_str(), vp.GuidValue );
  209. break;
  210. default:
  211. // error
  212. break;
  213. }
  214. }
  215. // add ret
  216. pVarList->AddVar( "$Ret", (double)0 );
  217. }
  218. double RunScript( stRunScript *p, char *pData, const VarPairListType &var_list )
  219. {
  220. if( p == NULL || pData == NULL )
  221. {
  222. return false;
  223. }
  224. CScript* tempScript = NULL;
  225. double lIndexID = 0; //全局的唯一脚本ID
  226. tempScript = PopFreeScript(p->pszFileName);
  227. tempScript->m_dwLastTime=0;
  228. if(p->srcShape && (OBJECT_TYPE)p->srcShape->GetType() == TYPE_PLAYER)
  229. tempScript->SetPlayerID(p->srcShape->GetExID());
  230. else
  231. tempScript->SetPlayerID(NULL_GUID);
  232. tempScript->SetRegion(p->pRegion);
  233. tempScript->SetSrcShape(p->srcShape);
  234. tempScript->SetDesShape(p->desShape);
  235. tempScript->SetUsedItemID(p->guUsedItemID);
  236. POINT pointXY;
  237. pointXY.x = -1;
  238. pointXY.y = -1;
  239. tempScript->SetDropGoodsPoint(pointXY);
  240. CGUID guid;
  241. CGUID::CreateGUID(guid);
  242. tempScript->SetID(guid);
  243. // 加载脚本内容
  244. double ret = 0; // 返回值
  245. if( tempScript->LoadScript(p->pszFileName, pData) )
  246. {
  247. _AddParamList( tempScript, var_list );
  248. // 执行脚本
  249. if( tempScript->RunStep() == CScript::SR_HANG )
  250. {
  251. g_Scripts[guid] = tempScript;
  252. return 0;
  253. }
  254. else
  255. {
  256. ret = tempScript->GetVariableList()->GetVarValue("$Ret", 0);
  257. }
  258. }
  259. PushFreeScript(tempScript);
  260. return ret;
  261. }
  262. long DelectAllScripByShape(const CGUID& PlayerGuid)
  263. {
  264. for(itScript it=g_Scripts.begin(); it!=g_Scripts.end(); it++)
  265. {
  266. CScript* p = (CScript*)(*it).second;
  267. if( p && p->GetSrcID() == PlayerGuid )
  268. {
  269. CScript::PushDelScript((*it).first);
  270. }
  271. }
  272. return true;
  273. }
  274. //删除玩家的Talkbox脚本
  275. long DelPlayerTalkBoxScript(const CGUID& PlayerGuid, SCRIPT_FUNC_DEF funcDef)
  276. {
  277. for(itScript it=g_Scripts.begin(); it!=g_Scripts.end(); it++)
  278. {
  279. CScript* p = (CScript*)(*it).second;
  280. if( p && p->GetSrcID() == PlayerGuid &&
  281. p->IsHang() &&
  282. (p->GetHangFunc() == funcDef) )
  283. {
  284. CScript::PushDelScript((*it).first);
  285. }
  286. }
  287. return true;
  288. }
  289. //删除某个ID对应的脚本
  290. long DelectPlayerScript(const CGUID &ScriptID,const CGUID& PlayerGuid)
  291. {
  292. itScript it = g_Scripts.find(ScriptID);
  293. if(it != g_Scripts.end())
  294. {
  295. CScript* p = (CScript*)(*it).second;
  296. if(p && p->GetSrcID() == PlayerGuid)
  297. {
  298. CScript::PushDelScript(ScriptID);
  299. }
  300. }
  301. return true;
  302. }
  303. //在脚本链表中清除PLAYER对应的脚本
  304. long DelectPlayerScript(CPlayer* pPlayer,char* strFile)
  305. {
  306. if(pPlayer==NULL || strFile == NULL)
  307. return false;
  308. for(itScript it=g_Scripts.begin(); it!=g_Scripts.end(); it++)
  309. {
  310. CScript* p = (CScript*)(*it).second;
  311. if( p && p->GetSrcID() == pPlayer->GetExID() && p->GetFileName() &&
  312. strcmp(strFile,p->GetFileName()) == 0 )
  313. {
  314. CScript::PushDelScript((*it).first);
  315. }
  316. }
  317. return true;
  318. }
  319. //判断某个万家的脚本是否正在执行
  320. bool ScriptIfExit(CPlayer* pPlayer,char* strFile)
  321. {
  322. if(pPlayer==NULL || strFile == NULL)
  323. return false;
  324. for(itScript it=g_Scripts.begin(); it!=g_Scripts.end();it++)
  325. {
  326. CScript* p = (CScript*)(*it).second;
  327. if( p && p->GetPlayerID() == pPlayer->GetExID() && p->GetFileName() &&
  328. strcmp(strFile,p->GetFileName()) == 0 )
  329. {
  330. return true;
  331. }
  332. }
  333. return false;
  334. }
  335. //继续执行一个脚本
  336. long ContinueRunScript(const CGUID& ScriptID, CVariableList* stackVarList)
  337. {
  338. itScript it = g_Scripts.find(ScriptID);
  339. if(it != g_Scripts.end())
  340. {
  341. CScript* pScript = (*it).second;
  342. if(pScript)
  343. {
  344. pScript->ResetShape();
  345. if( pScript->ContinueRun(stackVarList) != CScript::SR_HANG )
  346. {
  347. CScript::PushDelScript(ScriptID);
  348. return 1;
  349. }
  350. else
  351. {
  352. return 0;
  353. }
  354. }
  355. return 1;
  356. }
  357. return 0;
  358. }
  359. //得到一个脚本的全局ID
  360. long GetScriptIndex()
  361. {
  362. static double lID = 0;
  363. return ++lID;
  364. }
  365. /************************************************
  366. * -= 脚本类 =- *
  367. * 读入并执行脚本文件 *
  368. * (1)用以控制NPC的行为 *
  369. * (2)编写特定的情节 *
  370. * (3)制作任务 *
  371. * (4)动态改变游戏中的各种数据[巫师] *
  372. ************************************************/
  373. ////////////////
  374. // 函数列表
  375. double CScript::m_LoadFunctionNum=0;
  376. CScript::STRING2PFUNC* CScript::s_FunctionList2=0;
  377. double CScript::m_MaxFunction=0;
  378. ////////////////
  379. // 全局变量
  380. CVariableList* CScript::m_GeneralVariableList=NULL;
  381. CVariableList* CScript::m_BuffSkillVariableList=NULL;
  382. //////////////////////////////////////
  383. // 操作符列表 (数值越大,优先级越大)
  384. CScript::stOperation CScript::m_OperationList[MAX_OPERATION]=
  385. {
  386. "", 0,
  387. ";",1,
  388. "||",2,
  389. "&&",3,
  390. "==",4, "!=",4, ">",4, "<",4, ">=",4, "<=",4,
  391. "=",5, "+=",5, "-=",5, "*=",5, "/=",5, "%=",5,
  392. "&",6, "|",6,
  393. "+",7, "-",7,
  394. "*",8, "/",8, "%",8
  395. };
  396. ///////////////
  397. // 构建
  398. CScript::CScript(CShape* srcShape, CRegion *Region, CShape *desShape, CGUID& guUsedItemID, DWORD dwDiedMonsterIndex)
  399. :m_strRunScriptName("")
  400. {
  401. m_FileName[0] = 0;
  402. m_Data=NULL;
  403. m_DataLen=0;
  404. m_Block=0;
  405. m_szClientUpdateVarName[0] = '\0';
  406. m_szClientOptInfo = NULL;
  407. m_lClientOptInfoLen = 0;
  408. m_VarNum = 0;
  409. m_dwLastTime=0;
  410. m_guIndexID = NULL_GUID;
  411. if(srcShape && (OBJECT_TYPE)srcShape->GetType() == TYPE_PLAYER)
  412. m_PlayerGuid=srcShape->GetExID();
  413. else
  414. m_PlayerGuid=NULL_GUID;
  415. m_pRegion = Region;
  416. p_SrcShape = srcShape;
  417. p_DesShape = desShape;
  418. m_guUsedItemID = guUsedItemID;
  419. m_ptDropGoods.x = -1;
  420. m_ptDropGoods.y = -1;
  421. m_pChildScriptInfo = NULL;
  422. m_pSelfVariableList = MP_NEW CVariableList;
  423. m_pVariableList = NULL;
  424. }
  425. /////////////////////
  426. // 释放
  427. CScript::~CScript()
  428. {
  429. M_FREE(m_szClientOptInfo, sizeof(char)*MAX_VAR_LEN);
  430. M_FREE(m_Data, sizeof(char)*(m_DataLen+1)); //释放
  431. m_DataLen=0;
  432. for (int i=0;i<MAX_VAR;i++)
  433. {
  434. M_FREE(m_strValueInfo[i].pStrValue, m_strValueInfo[i].lStrValueLen);
  435. m_strValueInfo[i].pStrValue = NULL;
  436. m_strValueInfo[i].lStrValueLen = 0;
  437. }
  438. MP_DELETE(m_pSelfVariableList);
  439. if(m_pChildScriptInfo)
  440. {
  441. MP_DELETE(m_pChildScriptInfo->pChildScript);
  442. MP_DELETE(m_pChildScriptInfo);
  443. }
  444. }
  445. void CScript::SetClientOptInfo(const char* szInfo)
  446. {
  447. if(szInfo)
  448. {
  449. M_FREE(m_szClientOptInfo, m_lClientOptInfoLen);
  450. long lLen = strlen(szInfo);
  451. m_szClientOptInfo = (char*)M_ALLOC(sizeof(char)*(lLen+1));
  452. strcpy_s(m_szClientOptInfo, m_lClientOptInfoLen, szInfo);
  453. m_lClientOptInfoLen = lLen+1;
  454. }
  455. }
  456. //释放子脚本
  457. void CScript::ReleaseChildScript()
  458. {
  459. if(m_pChildScriptInfo)
  460. {
  461. if(m_pChildScriptInfo->pChildScript)
  462. m_pChildScriptInfo->pChildScript->ReleaseChildScript();
  463. PushFreeScript(m_pChildScriptInfo->pChildScript);
  464. MP_DELETE(m_pChildScriptInfo);
  465. }
  466. }
  467. void CScript::PushDelScript(const CGUID& guid)
  468. {
  469. m_DelScripts.push_back(guid);
  470. return;
  471. }
  472. //删除标记的脚本
  473. void CScript::DelScript()
  474. {
  475. list<CGUID>::iterator it = m_DelScripts.begin();
  476. for(;it != m_DelScripts.end();it++)
  477. {
  478. itScript itScript = g_Scripts.find((*it));
  479. if(itScript != g_Scripts.end())
  480. {
  481. CScript* pScript = (*itScript).second;
  482. if(pScript)
  483. {
  484. pScript->ReleaseChildScript();
  485. PushFreeScript((*itScript).second);
  486. }
  487. g_Scripts.erase(itScript);
  488. }
  489. }
  490. m_DelScripts.clear();
  491. return;
  492. }
  493. // ------------------------------ 初始化 ------------------------------
  494. ///////////////////////
  495. // 读取函数列表
  496. void CScript::LoadFunction(const char *filename, char* pData)
  497. {
  498. SAFE_DELETE(s_FunctionList2);
  499. s_FunctionList2 = new STRING2PFUNC;
  500. //-----------------------------------------------------
  501. //基本语法函数
  502. (*s_FunctionList2)["goto"] = &CScript::Goto;
  503. (*s_FunctionList2)["if"] = &CScript::If;
  504. (*s_FunctionList2)["wait"] = &CScript::wait;
  505. (*s_FunctionList2)["random"] = &CScript::random;
  506. (*s_FunctionList2)["Int"] = &CScript::Int;
  507. (*s_FunctionList2)["Round"] = &CScript::RoundNum;
  508. (*s_FunctionList2)["RGB"] = &CScript::Rgb;
  509. (*s_FunctionList2)["localvar"] = &CScript::LocalVar;
  510. (*s_FunctionList2)["define"] = &CScript::define;
  511. (*s_FunctionList2)["undefine"] = &CScript::undefine;
  512. (*s_FunctionList2)["ifdef"] = &CScript::Ifdef;
  513. (*s_FunctionList2)["destdefine"] = &CScript::DestDefine;
  514. (*s_FunctionList2)["destundefine"] = &CScript::DestUndefine;
  515. (*s_FunctionList2)["ifdestdef"] = &CScript::IfDestDef;
  516. (*s_FunctionList2)["Time"] = &CScript::Time;
  517. (*s_FunctionList2)["Year"] = &CScript::Year;
  518. (*s_FunctionList2)["Month"] = &CScript::Month;
  519. (*s_FunctionList2)["Day"] = &CScript::Day;
  520. (*s_FunctionList2)["Hour"] = &CScript::Hour;
  521. (*s_FunctionList2)["Minute"] = &CScript::Minute;
  522. (*s_FunctionList2)["DayOfWeek"] = &CScript::DayOfWeek;
  523. (*s_FunctionList2)["HourDiff"] = &CScript::HourDiff;
  524. (*s_FunctionList2)["MinuteDiff"] = &CScript::MinuteDiff;
  525. (*s_FunctionList2)["Second"] = &CScript::Second;
  526. (*s_FunctionList2)["CheckGuidIsNull"] = &CScript::CheckGuidIsNull;
  527. (*s_FunctionList2)["GetCurTick"] = &CScript::GetCurTick;
  528. (*s_FunctionList2)["GetPow"] = &CScript::GetPow;
  529. (*s_FunctionList2)["GetSubString"] = &CScript::GetSubString;
  530. //-----------------------------------------------------
  531. //系统全局函数
  532. (*s_FunctionList2)["FormatGUID"] = &CScript::FormatGUID;
  533. (*s_FunctionList2)["ListOnlineGM"] = &CScript::ListOnlineGM;
  534. (*s_FunctionList2)["ListSilencePlayer"] = &CScript::ListSilencePlayer;
  535. (*s_FunctionList2)["ListBanedPlayer"] = &CScript::ListBanedPlayer;
  536. (*s_FunctionList2)["GetOnlinePlayers"] = &CScript::GetOnlinePlayers;
  537. (*s_FunctionList2)["PostRegionInfo"] = &CScript::PostRegionInfo;
  538. (*s_FunctionList2)["PostRegionInfoByIndex"] = &CScript::PostRegionInfoByIndex;
  539. (*s_FunctionList2)["PostWorldInfo"] = &CScript::PostWorldInfo;
  540. (*s_FunctionList2)["PostWorldInfoByIndex"] = &CScript::PostWorldInfoByIndex;
  541. (*s_FunctionList2)["PostCountryInfo"] = &CScript::PostCountryInfo;
  542. (*s_FunctionList2)["KickAllPlayer"] = &CScript::KickAllPlayer;
  543. (*s_FunctionList2)["KickRegionPlayer"] = &CScript::KickRegionPlayer;
  544. (*s_FunctionList2)["RegisterGlobalTimer"] = &CScript::RegisterGlobalTimer;
  545. (*s_FunctionList2)["UnRegisterGlobalTimer"] = &CScript::UnRegisterGlobalTimer;
  546. (*s_FunctionList2)["KickPlayer"] = &CScript::KickPlayer;
  547. (*s_FunctionList2)["KickAround"] = &CScript::KickAround;
  548. (*s_FunctionList2)["BanPlayer"] = &CScript::BanPlayer;
  549. (*s_FunctionList2)["SilencePlayer"] = &CScript::SilencePlayer;
  550. (*s_FunctionList2)["GetTextRes"] = &CScript::GetTextRes;
  551. (*s_FunctionList2)["SetPlayerRegion"] = &CScript::SetPlayerRegion;
  552. (*s_FunctionList2)["SetPlayerRegionEx"] = &CScript::SetPlayerRegionEx;
  553. (*s_FunctionList2)["RollRegionInfo"] = &CScript::RollRegionInfo;
  554. (*s_FunctionList2)["RollWorldInfo"] = &CScript::RollWorldInfo;
  555. (*s_FunctionList2)["GetPlayerRegion"] = &CScript::GetPlayerRegion;
  556. (*s_FunctionList2)["ChangePlayerRegion"] = &CScript::ChangePlayerRegion;
  557. (*s_FunctionList2)["ChangePlayerName"] = &CScript::ChangePlayerName;
  558. //-----------------------------------------------------
  559. //所有对象(怪物、采集物、角色)基本使用函数
  560. (*s_FunctionList2)["SetAttrInt"] = &CScript::SetAttrInt;
  561. (*s_FunctionList2)["SetAttrStr"] = &CScript::SetAttrStr;
  562. (*s_FunctionList2)["SetAttrGuid"] = &CScript::SetAttrGuid;
  563. (*s_FunctionList2)["GetAttr"] = &CScript::GetAttr;
  564. (*s_FunctionList2)["GetScriptAttr"] = &CScript::GetScriptAttr;
  565. (*s_FunctionList2)["ChangeAttr"] = &CScript::ChangeAttr;
  566. (*s_FunctionList2)["RegisterTimer"] = &CScript::RegisterTimer;
  567. (*s_FunctionList2)["UnRegisterTimer"] = &CScript::UnRegisterTimer;
  568. (*s_FunctionList2)["PlayMotion"] = &CScript::PlayMotion;
  569. (*s_FunctionList2)["DesRunScript"] = &CScript::DesRunScript;
  570. (*s_FunctionList2)["GetPlayerNumByAround"] = &CScript::GetPlayerNumByAround;
  571. (*s_FunctionList2)["GetMonsterNumByAround"] = &CScript::GetMonsterNumByAround;
  572. (*s_FunctionList2)["GetSameMonsterNumByAround"] = &CScript::GetSameMonsterNumByAround;
  573. (*s_FunctionList2)["SetDelTime"] = &CScript::SetDelTime;
  574. (*s_FunctionList2)["SetDelTimeByGuid"] = &CScript::SetDelTimeByGuid;
  575. (*s_FunctionList2)["GetSrcShapeGUID"] = &CScript::GetSrcShapeGUID;
  576. (*s_FunctionList2)["GetDesShapeGUID"] = &CScript::GetDesShapeGUID;
  577. (*s_FunctionList2)["ChangeMoveSpeed"] = &CScript::ChangeMoveSpeed;
  578. (*s_FunctionList2)["SetMoveSpeed"] = &CScript::SetMoveSpeed;
  579. (*s_FunctionList2)["ChangeBaseSpeed"] = &CScript::ChangeBaseSpeed;
  580. (*s_FunctionList2)["GetCurrentSpeed"] = &CScript::GetCurrentSpeed;
  581. (*s_FunctionList2)["GetDestIntVar"] = &CScript::GetDestIntVar;
  582. (*s_FunctionList2)["SetDestIntVar"] = &CScript::SetDestIntVar;
  583. (*s_FunctionList2)["GetDestStrVar"] = &CScript::GetDestStrVar;
  584. (*s_FunctionList2)["SetDestStrVar"] = &CScript::SetDestStrVar;
  585. (*s_FunctionList2)["GetDestGuidVar"] = &CScript::GetDestGuidVar;
  586. (*s_FunctionList2)["SetDestGuidVar"] = &CScript::SetDestGuidVar;
  587. (*s_FunctionList2)["IsShapeValid"] = &CScript::IsShapeValid;
  588. //-----------------------------------------------------
  589. //怪物相关函数
  590. //1、基本函数
  591. (*s_FunctionList2)["SetMonsterAttr"] = &CScript::SetMonsterAttr;
  592. (*s_FunctionList2)["GetMonsterAttr"] = &CScript::GetMonsterAttr;
  593. (*s_FunctionList2)["ChangeMonsterAttr"] = &CScript::ChangeMonsterAttr;
  594. (*s_FunctionList2)["AddHpBar"] = &CScript::AddHpBar;
  595. (*s_FunctionList2)["GetHpLevel"] = &CScript::GetHpLevel;
  596. (*s_FunctionList2)["GetKillerID"] = &CScript::GetKillerID;
  597. (*s_FunctionList2)["GetKillerType"] = &CScript::GetKillerType;
  598. (*s_FunctionList2)["SetBeneficiary"] = &CScript::SetBeneficiary;
  599. (*s_FunctionList2)["GetBeneficiaryID"] = &CScript::GetBeneficiaryID;
  600. (*s_FunctionList2)["GetBeneficiaryType"] = &CScript::GetBeneficiaryType;
  601. (*s_FunctionList2)["GetBeneTeamGuid"] = &CScript::GetBeneTeamGuid;
  602. (*s_FunctionList2)["DelRegionMonsterByName"] = &CScript::DelRegionMonsterByName;
  603. //2、怪物AI相关函数
  604. (*s_FunctionList2)["MonsterTalk"] = &CScript::MonsterTalk;
  605. (*s_FunctionList2)["MonsterTalkByIndex"] = &CScript::MonsterTalkByIndex;
  606. (*s_FunctionList2)["MonsterTalkByGUID"] = &CScript::MonsterTalkByGUID;
  607. (*s_FunctionList2)["MonsterTalkByGuidByIndex"] = &CScript::MonsterTalkByGuidByIndex;
  608. (*s_FunctionList2)["UseSkillByID"] = &CScript::UseSkillByID;
  609. (*s_FunctionList2)["UseSkillByIDOnCell"] = &CScript::UseSkillByIDOnCell;
  610. (*s_FunctionList2)["UseSkillSync"] = &CScript::UseSkillSync;
  611. (*s_FunctionList2)["UseSkillSyncWithTrace"] = &CScript::UseSkillSyncWithTrace;
  612. (*s_FunctionList2)["UseSkillOnCellSync"] = &CScript::UseSkillOnCellSync;
  613. (*s_FunctionList2)["MoveToCellOnPeace"] = &CScript::MoveToCellOnPeace;
  614. (*s_FunctionList2)["MoveToCellOnFight"] = &CScript::MoveToCellOnFight;
  615. (*s_FunctionList2)["MoveToCellAround"] = &CScript::MoveToCellAround;
  616. (*s_FunctionList2)["MoveByStepOnPeace"] = &CScript::MoveByStepOnPeace;
  617. (*s_FunctionList2)["MoveByStepOnFight"] = &CScript::MoveByStepOnFight;
  618. (*s_FunctionList2)["SendExpActOnPeace"] = &CScript::SendExpActOnPeace;
  619. (*s_FunctionList2)["SendExpActOnFight"] = &CScript::SendExpActOnFight;
  620. (*s_FunctionList2)["MoveByTimeOnPeace"] = &CScript::MoveByTimeOnPeace;
  621. (*s_FunctionList2)["MovebyTimeOnFight"] = &CScript::MovebyTimeOnFight;
  622. (*s_FunctionList2)["CallFriendAround"] = &CScript::CallFriendAround;
  623. (*s_FunctionList2)["CallMonsterAround"] = &CScript::CallMonsterAround;
  624. (*s_FunctionList2)["Stand"] = &CScript::Stand;
  625. (*s_FunctionList2)["StandOnce"] = &CScript::StandOnce;
  626. (*s_FunctionList2)["ChangeAI"] = &CScript::ChangeAI;
  627. (*s_FunctionList2)["StartCycle"] = &CScript::StartCycle;
  628. (*s_FunctionList2)["EndCycle"] = &CScript::EndCycle;
  629. (*s_FunctionList2)["EscapeByTimeOnFight"] = &CScript::EscapeByTimeOnFight;
  630. (*s_FunctionList2)["DeleteSpring"] = &CScript::DeleteSpring;
  631. (*s_FunctionList2)["EndEscape"] = &CScript::EndEscape;
  632. (*s_FunctionList2)["EndEscapeByGUID"] = &CScript::EndEscapeByGUID;
  633. (*s_FunctionList2)["SetBefoolID"] = &CScript::SetBefoolID;
  634. (*s_FunctionList2)["CleanBefoolID"] = &CScript::CleanBefoolID;
  635. (*s_FunctionList2)["SetForceTarget"] = &CScript::SetForceTarget;
  636. (*s_FunctionList2)["CleanForceTatget"] = &CScript::CleanForceTatget;
  637. (*s_FunctionList2)["ChangeWeaknessState"] = &CScript::ChangeWeaknessState;
  638. (*s_FunctionList2)["EscapeByAround"] = &CScript::EscapeByAround;
  639. (*s_FunctionList2)["MonsterRunScriptsAround"] = &CScript::MonsterRunScriptsAround;
  640. (*s_FunctionList2)["MonsterIsFight"] = &CScript::MonsterIsFight;
  641. (*s_FunctionList2)["SetMonsterFight"] = &CScript::SetMonsterFight;
  642. (*s_FunctionList2)["CallFriendAttack"] = &CScript::CallFriendAttack;
  643. (*s_FunctionList2)["CallMonsterAttack"] = &CScript::CallMonsterAttack;
  644. (*s_FunctionList2)["MonsterAttackObjectByAround"] = &CScript::MonsterAttackObjectByAround;
  645. (*s_FunctionList2)["MonsterAttackObject"] = &CScript::MonsterAttackObject;
  646. (*s_FunctionList2)["SetMonsterDir"] = &CScript::SetMonsterDir;
  647. (*s_FunctionList2)["ReLiveMonster"] = &CScript::ReLiveMonster;
  648. (*s_FunctionList2)["GetMonsterTarget"] = &CScript::GetMonsterTarget;
  649. (*s_FunctionList2)["SetMonsterTarget"] = &CScript::SetMonsterTarget;
  650. (*s_FunctionList2)["GetMonsterPos"] = &CScript::GetMonsterPos;
  651. (*s_FunctionList2)["CreateMonster"] = &CScript::CreateMonster;
  652. (*s_FunctionList2)["CreateMonsterEx"] = &CScript::CreateMonsterEx;
  653. (*s_FunctionList2)["DelMonster"] = &CScript::DelMonster;
  654. (*s_FunctionList2)["DelMonsterEx"] = &CScript::DelMonsterEx;
  655. (*s_FunctionList2)["DelMonsterRect"] = &CScript::DelMonsterRect;
  656. (*s_FunctionList2)["KillMonster"] = &CScript::KillMonster;
  657. (*s_FunctionList2)["GetMonsterRefeashTime"] = &CScript::GetMonsterRefeashTime;
  658. (*s_FunctionList2)["GetPlayerByDistance"] = &CScript::GetPlayerByDistance;
  659. (*s_FunctionList2)["GetDistanceFromPlayer"] = &CScript::GetDistanceFromPlayer;
  660. (*s_FunctionList2)["GetAttackablePlayer"] = &CScript::GetAttackablePlayer;
  661. (*s_FunctionList2)["ChooseTargetByOccu"] = &CScript::ChooseTargetByOccu;
  662. //-----------------------------------------------------
  663. //采集物相关函数
  664. (*s_FunctionList2)["CreateCollection"] = &CScript::CreateCollection;
  665. (*s_FunctionList2)["CreateCollectionEx"] = &CScript::CreateCollectionEx;
  666. (*s_FunctionList2)["DelCollection"] = &CScript::DelCollection;
  667. //-----------------------------------------------------
  668. //建物相关函数
  669. //对门的操作
  670. (*s_FunctionList2)["SetDoor"] = &CScript::SetDoor;
  671. (*s_FunctionList2)["GetDoor"] = &CScript::GetDoor;
  672. //-----------------------------------------------------
  673. //角色相关函数
  674. //1.基本函数
  675. (*s_FunctionList2)["ChangeMe"] = &CScript::ChangeMe;
  676. (*s_FunctionList2)["GetMe"] = &CScript::GetMe;
  677. (*s_FunctionList2)["SetMe"] = &CScript::SetMe;
  678. (*s_FunctionList2)["ChangeDest"] = &CScript::ChangeDest;
  679. (*s_FunctionList2)["GetDest"] = &CScript::GetDest;
  680. (*s_FunctionList2)["SetDest"] = &CScript::SetDest;
  681. (*s_FunctionList2)["SetPlayerPos"] = &CScript::SetPlayerPos;
  682. (*s_FunctionList2)["SetPlayerDir"] = &CScript::SetPlayerDir;
  683. (*s_FunctionList2)["AddAreaCreditByAreaId"] = &CScript::AddAreaCreditByAreaId;
  684. (*s_FunctionList2)["AddAreaCredit"] = &CScript::AddAreaCredit;
  685. (*s_FunctionList2)["SetAreaCredit"] = &CScript::SetAreaCredit;
  686. (*s_FunctionList2)["SetAreaCreditByAreaId"] = &CScript::SetAreaCreditByAreaId;
  687. (*s_FunctionList2)["GetAreaCredit"] = &CScript::GetAreaCredit;
  688. (*s_FunctionList2)["GetAreaCreditLevel"] = &CScript::GetAreaCreditLevel;
  689. (*s_FunctionList2)["GetOrganCreditLevel"] = & CScript::GetOrganCreditLevel;
  690. (*s_FunctionList2)["AddOrganCredit"] = & CScript::AddOrganCredit;
  691. (*s_FunctionList2)["SetOrganCredit"] = & CScript::SetOrganCredit;
  692. (*s_FunctionList2)["GetCountry"] = &CScript::GetCountry;
  693. (*s_FunctionList2)["ChangeCountry"] = &CScript::ChangeCountry;
  694. (*s_FunctionList2)["GetContribute"] = &CScript::GetContribute;
  695. (*s_FunctionList2)["SetContribute"] = &CScript::SetContribute;
  696. (*s_FunctionList2)["IsCharged"] = &CScript::IsCharged;
  697. (*s_FunctionList2)["SetCharged"] = &CScript::SetCharged;
  698. (*s_FunctionList2)["GetName"] = &CScript::GetName;
  699. (*s_FunctionList2)["ChangePlayer"] = &CScript::ChangePlayer;
  700. (*s_FunctionList2)["SetPlayer"] = &CScript::SetPlayer;
  701. (*s_FunctionList2)["GetPlayer"] = &CScript::GetPlayer;
  702. (*s_FunctionList2)["SetPlayerLevel"] = &CScript::SetPlayerLevel;
  703. (*s_FunctionList2)["IsPlayerOnline"] = &CScript::IsPlayerOnline;
  704. (*s_FunctionList2)["ChangeMoneyByName"] = &CScript::ChangeMoneyByName;
  705. (*s_FunctionList2)["GetMoneyByName"] = &CScript::GetMoneyByName;
  706. (*s_FunctionList2)["SetMoneyByName"] = &CScript::SetMoneyByName;
  707. (*s_FunctionList2)["ChangeSilverByName"] = &CScript::ChangeSilverByName;
  708. (*s_FunctionList2)["GetSilverByName"] = &CScript::GetSilverByName;
  709. (*s_FunctionList2)["SetSilverByName"] = &CScript::SetSilverByName;
  710. (*s_FunctionList2)["AddTicketByName"] = &CScript::AddTicketByName;
  711. (*s_FunctionList2)["GetTicketByName"] = &CScript::GetTicketByName;
  712. (*s_FunctionList2)["SetPlayerExp"] = &CScript::SetPlayerExp;
  713. (*s_FunctionList2)["ChangePlayerExp"] = &CScript::ChangePlayerExp;
  714. (*s_FunctionList2)["SetPlayerOccuExp"] = &CScript::SetPlayerOccuExp;
  715. (*s_FunctionList2)["ChangePlayerOccuExp"] = &CScript::ChangePlayerOccuExp;
  716. (*s_FunctionList2)["GetPlayerOccuExp"] = &CScript::GetPlayerOccuExp;
  717. (*s_FunctionList2)["SetPlayerOccuLvl"] = &CScript::SetPlayerOccuLvl;
  718. (*s_FunctionList2)["GetPlayerOccuLvl"] = &CScript::GetPlayerOccuLvl;
  719. (*s_FunctionList2)["SetPlayerOccuSp"] = &CScript::SetPlayerOccuSp;
  720. (*s_FunctionList2)["ChangePlayerOccuSp"] = &CScript::ChangePlayerOccuSp;
  721. (*s_FunctionList2)["GetPlayerOccuSp"] = &CScript::GetPlayerOccuSp;
  722. (*s_FunctionList2)["ChangePlayerOccuExpSp"] = &CScript::ChangePlayerOccuExpSp;
  723. (*s_FunctionList2)["IsGM"] = &CScript::IsGM;
  724. (*s_FunctionList2)["ShowPlayerInfo"] = &CScript::ShowPlayerInfo;
  725. (*s_FunctionList2)["ShowPlayerGoods"] = &CScript::ShowPlayerGoods;
  726. (*s_FunctionList2)["ShowGeneralVariable"] = &CScript::ShowGeneralVariable;
  727. (*s_FunctionList2)["DurancePlayer"] = &CScript::DurancePlayer;
  728. (*s_FunctionList2)["CheckReliveByOrigin"] = &CScript::CheckReliveByOrigin;
  729. (*s_FunctionList2)["CheckReliveGoods"] = &CScript::CheckReliveGoods;
  730. (*s_FunctionList2)["Onstate"] = &CScript::Onstate;
  731. (*s_FunctionList2)["GetActive"] = &CScript::GetActive;
  732. (*s_FunctionList2)["AddActive"] = &CScript::AddActive;
  733. (*s_FunctionList2)["TakeActive"] = &CScript::TakeActive;
  734. (*s_FunctionList2)["ResetActive"] = &CScript::ResetActive;
  735. (*s_FunctionList2)["GetServer"] = &CScript::GetServer;
  736. (*s_FunctionList2)["GetOtherOneInMarriageTeam"] = &CScript::GetOtherOneInMarriageTeam;
  737. (*s_FunctionList2)["GetPlayerMarriageStep"] = &CScript::GetPlayerMarriageStep;
  738. (*s_FunctionList2)["SetPlayerMarriageStep"] = &CScript::SetPlayerMarriageStep;
  739. (*s_FunctionList2)["SetPlayerSpouse"] = &CScript::SetPlayerSpouse;
  740. (*s_FunctionList2)["DelPlayerSpouse"] = &CScript::DelPlayerSpouse;
  741. (*s_FunctionList2)["GetPlayerSpouse"] = &CScript::GetPlayerSpouse;
  742. (*s_FunctionList2)["GetPlayerSpouseName"] = &CScript::GetPlayerSpouseName;
  743. (*s_FunctionList2)["GetElementProperty"] = &CScript::GetElementProperty;
  744. (*s_FunctionList2)["SetElementProperty"] = &CScript::SetElementProperty;
  745. (*s_FunctionList2)["SetActiveRatio"] = &CScript::SetActiveRatio;
  746. (*s_FunctionList2)["GetActiveRatio"] = &CScript::GetActiveRatio;
  747. (*s_FunctionList2)["GetCostYuanBao"] = &CScript::GetCostYuanBao;
  748. //稳定挂机时间
  749. (*s_FunctionList2)["SetStableHookTime"] = &CScript::SetStableHookTime;
  750. (*s_FunctionList2)["AddStableHookTime"] = &CScript::AddStableHookTime;
  751. (*s_FunctionList2)["GetStableHookTime"] = &CScript::GetStableHookTime;
  752. //2.扩展函数
  753. (*s_FunctionList2)["GetOccuValueRatio"] = &CScript::GetOccuValueRatio;
  754. (*s_FunctionList2)["GetOccuLvlCoe"] = &CScript::GetOccuLvlCoe;
  755. (*s_FunctionList2)["ChangeOccu"] = &CScript::ChangeOccu;
  756. (*s_FunctionList2)["CheckLevel"] = &CScript::CheckLevel;
  757. (*s_FunctionList2)["CheckOccuLvl"] = &CScript::CheckOccuLvl;
  758. (*s_FunctionList2)["ReLive"] = &CScript::ReLive;
  759. (*s_FunctionList2)["ScriptIsRun"] = &CScript::ScriptIsRun;
  760. (*s_FunctionList2)["RemoveScript"] = &CScript::RemoveScript;
  761. (*s_FunctionList2)["AutoMove"] = &CScript::AutoMove;
  762. (*s_FunctionList2)["MovePlayer"] = &CScript::MovePlayer;
  763. (*s_FunctionList2)["GodMode"] = &CScript::GodMode;
  764. (*s_FunctionList2)["ResidentMode"] = &CScript::ResidentMode;
  765. //-----------------------------------------------------
  766. //物品相关函数
  767. (*s_FunctionList2)["AddGoods"] = &CScript::AddGoods;
  768. (*s_FunctionList2)["AddArmament"] = &CScript::AddArmament;
  769. (*s_FunctionList2)["AddArmamentForGM"] = &CScript::AddArmamentForGM;
  770. (*s_FunctionList2)["DelGoods"] = &CScript::DelGoods;
  771. (*s_FunctionList2)["AddGoodsToRgn"] = &CScript::AddGoodsToRgn;
  772. (*s_FunctionList2)["CheckGoods"] = &CScript::CheckGoods;
  773. (*s_FunctionList2)["CheckGoodsInBank"] = &CScript::CheckGoodsInBank;
  774. (*s_FunctionList2)["OpenGoodsExWindow"] = &CScript::OpenGoodsExWindow;
  775. (*s_FunctionList2)["BindGoods"] = &CScript::BindGoods;
  776. (*s_FunctionList2)["FrostGoods"] = &CScript::FrostGoods;
  777. (*s_FunctionList2)["CheckSpace"] = &CScript::CheckSpace;
  778. (*s_FunctionList2)["GetGoodsNum"] = &CScript::GetGoodsNum;
  779. (*s_FunctionList2)["GetGoodsFree"] = &CScript::GetGoodsFree;
  780. (*s_FunctionList2)["GetEquipIDByPos"] = &CScript::GetEquipIDByPos;
  781. (*s_FunctionList2)["GetEquipNameByPos"] = &CScript::GetEquipNameByPos;
  782. (*s_FunctionList2)["GetPlayerGoodsAddonProperty"] = &CScript::GetPlayerGoodsAddonProperty;
  783. (*s_FunctionList2)["SetPlayerGoodsAddonProperty"] = &CScript::SetPlayerGoodsAddonProperty;
  784. (*s_FunctionList2)["GetGoodsBaseType"] = &CScript::GetGoodsBaseType;
  785. (*s_FunctionList2)["OpenGoodsEnchase"] = &CScript::OpenGoodsEnchase;
  786. (*s_FunctionList2)["DelPlayerGoods"] = &CScript::DelPlayerGoods;
  787. (*s_FunctionList2)["DelUsedGoods"] = &CScript::DelUsedGoods;
  788. (*s_FunctionList2)["CheckUsedGoods"] = &CScript::CheckUsedGoods;
  789. (*s_FunctionList2)["GetUsedGoodsPropertiy1"] = &CScript::GetUsedGoodsPropertiy1;
  790. (*s_FunctionList2)["GetUsedGoodsPropertiy2"] = &CScript::GetUsedGoodsPropertiy2;
  791. (*s_FunctionList2)["SetUsedGoodsPropertiy1"] = &CScript::SetUsedGoodsPropertiy1;
  792. (*s_FunctionList2)["SetUsedGoodsPropertiy2"] = &CScript::SetUsedGoodsPropertiy2;
  793. (*s_FunctionList2)["BuyGoods"] = &CScript::BuyGoods;
  794. (*s_FunctionList2)["GetGoodsAddonProperty"] = &CScript::GetGoodsAddonProperty;
  795. (*s_FunctionList2)["FullRefine"] = &CScript::FullRefine;
  796. (*s_FunctionList2)["GetWeaponStr"] = &CScript::GetWeaponStr;
  797. (*s_FunctionList2)["AddMedal"] = &CScript::AddMedal;
  798. (*s_FunctionList2)["DelMedal"] = &CScript::DelMedal;
  799. (*s_FunctionList2)["GetMedal"] = &CScript::GetMedal;
  800. (*s_FunctionList2)["GetMedalNum"] = &CScript::GetMedalNum;
  801. (*s_FunctionList2)["GetShowMedalName"] = &CScript::GetShowMedalName;
  802. (*s_FunctionList2)["IsEquipEnchased"] = &CScript::IsEquipEnchased;
  803. (*s_FunctionList2)["GetGoodsDisplayName"] = &CScript::GetGoodsDisplayName;
  804. (*s_FunctionList2)["BeginMake"] = &CScript::BeginMake;
  805. (*s_FunctionList2)["FinishMake"] = &CScript::FinishMake;
  806. (*s_FunctionList2)["BackToCity"] = &CScript::BackToCity;
  807. (*s_FunctionList2)["BeginContainerGoodsOpt"] = &CScript::BeginContainerGoodsOpt;
  808. (*s_FunctionList2)["GetOptGoodsInContainer"] = &CScript::GetOptGoodsInContainer;
  809. (*s_FunctionList2)["PutOptGoodsInContainer"] = &CScript::PutOptGoodsInContainer;
  810. (*s_FunctionList2)["RemoveOptGoodsInContainer"] = &CScript::RemoveOptGoodsInContainer;
  811. (*s_FunctionList2)["RefreshContainerTxt"] = &CScript::RefreshContainerTxt;
  812. (*s_FunctionList2)["RefreshContainerGold"] = &CScript::RefreshContainerGold;
  813. (*s_FunctionList2)["EndContainerGoodsOpt"] = &CScript::EndContainerGoodsOpt;
  814. (*s_FunctionList2)["GetGoodsOriginalName"] = &CScript::GetGoodsOriginalName;
  815. (*s_FunctionList2)["GetGoodsAddonPropertyValues"] = &CScript::GetGoodsAddonPropertyValues;
  816. (*s_FunctionList2)["SetGoodsAddonPropertyValues"] = &CScript::SetGoodsAddonPropertyValues;
  817. (*s_FunctionList2)["ResetGoodsStochastic"] = &CScript::ResetGoodsStochastic;
  818. (*s_FunctionList2)["DelGoodsByGuid"] = &CScript::DelGoodsByGuid;
  819. (*s_FunctionList2)["AddGoodsReturnGuid"] = &CScript::AddGoodsReturnGuid;
  820. (*s_FunctionList2)["IsFrostGoods"] = &CScript::IsFrostGoods;
  821. (*s_FunctionList2)["GetUsedGoodsOriginalName"] = &CScript::GetUsedGoodsOriginalName;
  822. (*s_FunctionList2)["GetUsedGoodsGuid"] = &CScript::GetUsedGoodsGuid;
  823. (*s_FunctionList2)["UploadGoods"] = &CScript::UploadGoods;
  824. (*s_FunctionList2)["SetAddonDesc"] = &CScript::SetAddonDesc;
  825. (*s_FunctionList2)["GetAddonDesc"] = &CScript::GetAddonDesc;
  826. (*s_FunctionList2)["AddGoodsToServer"] = &CScript::AddGoodsToServer;
  827. (*s_FunctionList2)["AddGoodsToClient"] = &CScript::AddGoodsToClient;
  828. //-----------------------------------------------------
  829. //任务相关函数
  830. (*s_FunctionList2)["AddQuest"] = &CScript::AddQuest;
  831. (*s_FunctionList2)["GetCurrentMasterRoleID"] = &CScript::GetCurrentMasterRoleID;
  832. (*s_FunctionList2)["CompleteQuest"] = &CScript::CompleteQuest;
  833. (*s_FunctionList2)["DisbandQuest"] = &CScript::DisbandQuest;
  834. (*s_FunctionList2)["GetQuestState"] = &CScript::GetQuestState;
  835. (*s_FunctionList2)["GetValidQuestNum"] = &CScript::GetValidQuestNum;
  836. (*s_FunctionList2)["UpdateQuestStep"] = &CScript::UpdateQuestStep;
  837. (*s_FunctionList2)["UpdateQuestParamData"] = &CScript::UpdateQuestParamData;
  838. (*s_FunctionList2)["UpdateQuestData"] = &CScript::UpdateQuestData;
  839. (*s_FunctionList2)["GetMercQuest"] = &CScript::GetMercQuest;
  840. (*s_FunctionList2)["SetMercQuest"] = &CScript::SetMercQuest;
  841. (*s_FunctionList2)["GetRoleStepNum"] = &CScript::GetRoleStepNum;
  842. (*s_FunctionList2)["GetParam"] = &CScript::GetParam;
  843. (*s_FunctionList2)["GetRoleAccParam"] = &CScript::GetRoleAccParam;
  844. (*s_FunctionList2)["SetRoleAccParam"] = &CScript::SetRoleAccParam;
  845. (*s_FunctionList2)["AddRoleAccParam"] = &CScript::AddRoleAccParam;
  846. (*s_FunctionList2)["GetRoleRegionID"] = &CScript::GetRoleRegionID;
  847. (*s_FunctionList2)["SetRoleRegionID"] = &CScript::SetRoleRegionID;
  848. (*s_FunctionList2)["GetRoleRegionX"] = &CScript::GetRoleRegionX;
  849. (*s_FunctionList2)["SetRoleRegionX"] = &CScript::SetRoleRegionX;
  850. (*s_FunctionList2)["GetRoleRegionY"] = &CScript::GetRoleRegionY;
  851. (*s_FunctionList2)["SetRoleRegionY"] = &CScript::SetRoleRegionY;
  852. (*s_FunctionList2)["GetRoleSum"] = &CScript::GetRoleSum;
  853. (*s_FunctionList2)["GetChapter"] = &CScript::GetChapter;
  854. (*s_FunctionList2)["SetChapter"] = &CScript::SetChapter;
  855. (*s_FunctionList2)["AddFinishedRoleRecord"] = &CScript::AddFinishedRoleRecord;
  856. (*s_FunctionList2)["DelFinishedRoleRecord"] = &CScript::DelFinishedRoleRecord;
  857. (*s_FunctionList2)["GetRoleFinishedRecord"] = &CScript::GetRoleFinishedRecord;
  858. (*s_FunctionList2)["GetStepText"] = &CScript::GetStepText;
  859. (*s_FunctionList2)["GetText"] = &CScript::GetText;
  860. (*s_FunctionList2)["GetTextType"] = &CScript::GetTextType;
  861. (*s_FunctionList2)["GetAttributeRoleName"] = &CScript::GetAttributeRoleName;
  862. (*s_FunctionList2)["GetAttributeBeRecord"] = &CScript::GetAttributeBeRecord;
  863. (*s_FunctionList2)["GetAttributeRoleType"] = &CScript::GetAttributeRoleType;
  864. (*s_FunctionList2)["GetAttributeEmbracerNPCID"] = &CScript::GetAttributeEmbracerNPCID;
  865. (*s_FunctionList2)["GetAttributeShowAble"] = &CScript::GetAttributeShowAble;
  866. (*s_FunctionList2)["GetAttributeExpRatio"] = &CScript::GetAttributeExpRatio;
  867. (*s_FunctionList2)["GetAttributeRepeated"] = &CScript::GetAttributeRepeated;
  868. (*s_FunctionList2)["GetAttributeDeadLost"] = &CScript::GetAttributeDeadLost;
  869. (*s_FunctionList2)["GetAttributeLostRepeated"] = &CScript::GetAttributeLostRepeated;
  870. (*s_FunctionList2)["GetAttributeMinGrade"] = &CScript::GetAttributeMinGrade;
  871. (*s_FunctionList2)["GetAttributeMaxGrade"] = &CScript::GetAttributeMaxGrade;
  872. (*s_FunctionList2)["GetAttributeOccupationRestrict"] = &CScript::GetAttributeOccupationRestrict;
  873. (*s_FunctionList2)["GetAttributeEngageArmsRepute"] = &CScript::GetAttributeEngageArmsRepute;
  874. (*s_FunctionList2)["GetAttributeChapterNum"] = &CScript::GetAttributeChapterNum;
  875. (*s_FunctionList2)["GetAttributeNextRoleID"] = &CScript::GetAttributeNextRoleID;
  876. (*s_FunctionList2)["GetLabelPrefix"] = &CScript::GetLabelPrefix;
  877. (*s_FunctionList2)["GetLabelSum"] = &CScript::GetLabelSum;
  878. (*s_FunctionList2)["GetAimAMTType"] = &CScript::GetAimAMTType;
  879. (*s_FunctionList2)["GetAimType"] = &CScript::GetAimType;
  880. (*s_FunctionList2)["GetAimId"] = &CScript::GetAimId;
  881. (*s_FunctionList2)["GetAimNum"] = &CScript::GetAimNum;
  882. (*s_FunctionList2)["GetAimParameIndex"] = &CScript::GetAimParameIndex;
  883. (*s_FunctionList2)["GetDropFrom"] = &CScript::GetDropFrom;
  884. (*s_FunctionList2)["GetDropOdds"] = &CScript::GetDropOdds;
  885. (*s_FunctionList2)["GetAimName"] = &CScript::GetAimName;
  886. (*s_FunctionList2)["GetPrepareParam"] = &CScript::GetPrepareParam;
  887. (*s_FunctionList2)["GetStepEncouragementSum"] = &CScript::GetStepEncouragementSum;
  888. (*s_FunctionList2)["GetQuestEncouragementSum"] = &CScript::GetQuestEncouragementSum;
  889. (*s_FunctionList2)["GetSetpEncouragementName"] = &CScript::GetSetpEncouragementName;
  890. (*s_FunctionList2)["GetQuestEncouragementName"] = &CScript::GetQuestEncouragementName;
  891. (*s_FunctionList2)["GetSetpEncouragementType"] = &CScript::GetSetpEncouragementType;
  892. (*s_FunctionList2)["GetQuestEncouragementType"] = &CScript::GetQuestEncouragementType;
  893. (*s_FunctionList2)["GetSetpEncouragementID"] = &CScript::GetSetpEncouragementID;
  894. (*s_FunctionList2)["GetQuestEncouragementID"] = &CScript::GetQuestEncouragementID;
  895. (*s_FunctionList2)["GetSetpEncouragementNum"] = &CScript::GetSetpEncouragementNum;
  896. (*s_FunctionList2)["GetQuestEncouragementNum"] = &CScript::GetQuestEncouragementNum;
  897. (*s_FunctionList2)["GetStepEncouragementCell"] = &CScript::GetStepEncouragementCell;
  898. (*s_FunctionList2)["GetQuestEncouragementCell"] = &CScript::GetQuestEncouragementCell;
  899. (*s_FunctionList2)["GetStepSum"] = &CScript::GetStepSum;
  900. (*s_FunctionList2)["GetStepAimNum"] = &CScript::GetStepAimNum;
  901. (*s_FunctionList2)["FindRoleIsInSystem"] = &CScript::FindRoleIsInSystem;
  902. (*s_FunctionList2)["FindRoleStepIsInSystem"] = &CScript::FindRoleStepIsInSystem;
  903. (*s_FunctionList2)["ResetMercQuestUpdateTime"] = &CScript::ResetMercQuestUpdateTime;
  904. (*s_FunctionList2)["AcquireMercQuest"] = &CScript::AcquireMercQuest;
  905. (*s_FunctionList2)["SendMercQuestToClient"] = &CScript::SendMercQuestToClient;
  906. (*s_FunctionList2)["OpenMercQuestInterface"] = &CScript::OpenMercQuestInterface;
  907. (*s_FunctionList2)["GetMercQuestData"] = &CScript::GetMercQuestData;
  908. (*s_FunctionList2)["SetMercQuestData"] = &CScript::SetMercQuestData;
  909. (*s_FunctionList2)["GetQuestMassPoint"] = &CScript::GetQuestMassPoint;
  910. (*s_FunctionList2)["UpdateAllMercQuestList"] = &CScript::ResetAllMercQuestData;
  911. (*s_FunctionList2)["IsInMercQuestList"] = &CScript::IsInMercQuestList;
  912. (*s_FunctionList2)["SetMasterQuest"] = &CScript::SetMasterQuest;
  913. (*s_FunctionList2)["SetRoleProtect"] = &CScript::SetRoleProtect;
  914. (*s_FunctionList2)["OpenShareQuestInterface"] = &CScript::OpenShareQuestInterface;
  915. (*s_FunctionList2)["GetTeamCurrQuest"] = &CScript::GetTeamCurrQuest;
  916. (*s_FunctionList2)["SetTeamCurrQuest"] = &CScript::SetTeamCurrQuest;
  917. (*s_FunctionList2)["DelTeamShareQuest"] = &CScript::DelTeamShareQuest;
  918. (*s_FunctionList2)["IsCompleteQuest"] = &CScript::IsCompleteQuest;
  919. (*s_FunctionList2)["GetQuestOdds"] = &CScript::GetQuestOdds;
  920. (*s_FunctionList2)["CanAcceptMercQuest"] = &CScript::CanAcceptMercQuest;
  921. (*s_FunctionList2)["OpenIndexQuestInterface"] = &CScript::OpenIndexQuestInterface;
  922. (*s_FunctionList2)["SetIndexQuestParamNum"] = &CScript::SetIndexQuestParamNum;
  923. (*s_FunctionList2)["SetIndexQuestState"] = &CScript::SetIndexQuestState;
  924. (*s_FunctionList2)["ResetIndexQuest"] = &CScript::ResetIndexQuest;
  925. //-----------------------------------------------------
  926. //副职业相关函数
  927. (*s_FunctionList2)["CanCollect"] = &CScript::CanCollect;
  928. (*s_FunctionList2)["CanCheckCollect"] = &CScript::CanCheckCollect;
  929. (*s_FunctionList2)["CheckCollect"] = &CScript::CheckCollect;
  930. (*s_FunctionList2)["LockCollection"] = &CScript::LockCollection;
  931. (*s_FunctionList2)["OutlockCollection"] = &CScript::OutlockCollection;
  932. (*s_FunctionList2)["CanFacture"] = &CScript::CanFacture;
  933. (*s_FunctionList2)["Facture"] = &CScript::Facture;
  934. (*s_FunctionList2)["FactureSkillStudyBegin"] = &CScript::FactureSkillStudyBegin;
  935. (*s_FunctionList2)["ClearFactureList"] = &CScript::ClearFactureList;
  936. (*s_FunctionList2)["AddFacture"] = &CScript::AddFacture;
  937. (*s_FunctionList2)["DelFacture"] = &CScript::DelFacture;
  938. (*s_FunctionList2)["FindFacture"] = &CScript::FindFacture;
  939. (*s_FunctionList2)["GetFactureNeedsLevel"] = &CScript::GetFactureNeedsLevel;
  940. (*s_FunctionList2)["GetFactureNeedsDOccu"] = &CScript::GetFactureNeedsDOccu;
  941. (*s_FunctionList2)["UpdateEffect"] = &CScript::UpdateEffect;
  942. (*s_FunctionList2)["AddFactureExp"] = &CScript::AddFactureExp;
  943. (*s_FunctionList2)["AddCollectionExp"] = &CScript::AddCollectionExp;
  944. //-----------------------------------------------------
  945. //技能状态相关函数
  946. //1、基本技能相关的函数
  947. (*s_FunctionList2)["AddState"] = &CScript::AddState;
  948. (*s_FunctionList2)["AddSkill"] = &CScript::AddSkill;
  949. (*s_FunctionList2)["DelSkill"] = &CScript::DelSkill;
  950. (*s_FunctionList2)["SetSkillLevel"] = &CScript::SetSkillLevel;
  951. (*s_FunctionList2)["GetSkillLevel"] = &CScript::GetSkillLevel;
  952. (*s_FunctionList2)["CheckStudySkill"] = &CScript::CheckStudySkill;
  953. (*s_FunctionList2)["GetAllStateNum"] = &CScript::GetAllStateNum;
  954. (*s_FunctionList2)["DelNewState"] = &CScript::DelNewState;
  955. (*s_FunctionList2)["DelDeBuff"] = &CScript::DelDeBuff;
  956. (*s_FunctionList2)["AddStateToShape"] = &CScript::AddStateToShape;
  957. (*s_FunctionList2)["DelAllBuff"] = &CScript::DelAllBuff;
  958. (*s_FunctionList2)["Modulus"] = &CScript::Modulus;
  959. //2、技能脚本中用到的函数
  960. (*s_FunctionList2)["AddNewState"] = &CScript::AddNewState;
  961. (*s_FunctionList2)["RemoverNewState"] = &CScript::RemoverNewState;
  962. (*s_FunctionList2)["SetMoveShapeAttrEx"] = &CScript::SetMoveShapeAttrEx;
  963. (*s_FunctionList2)["GetMoveShapeAttrEx"] = &CScript::GetMoveShapeAttrEx;
  964. (*s_FunctionList2)["ChangeMoveShapeAttrEx"] = &CScript::ChangeMoveShapeAttrEx;
  965. (*s_FunctionList2)["AddDeBuffToObj"] = &CScript::AddDeBuffToObj;
  966. (*s_FunctionList2)["ReLiveSkill"] = &CScript::ReLiveSkill;
  967. (*s_FunctionList2)["SetEventDestObj"] = &CScript::SetEventDestObj;
  968. (*s_FunctionList2)["GetBaseModuleLv"] = &CScript::GetBaseModuleLv;
  969. (*s_FunctionList2)["GetDistance"] = &CScript::GetDistance;
  970. (*s_FunctionList2)["GetPkResult"] = &CScript::GetPkResult;
  971. (*s_FunctionList2)["GetObjectType"] = &CScript::GetObjectType;
  972. (*s_FunctionList2)["GetShieldNO"] = &CScript::GetShieldNO;
  973. (*s_FunctionList2)["SendSkillList"] = &CScript::SendSkillList;
  974. (*s_FunctionList2)["SetTarget"] = &CScript::SetTarget;
  975. (*s_FunctionList2)["GetDesEnergyRatio"] = &CScript::GetDesEnergyRatio;
  976. (*s_FunctionList2)["GetEnergyRatio"] = &CScript::GetEnergyRatio;
  977. (*s_FunctionList2)["DeductEnergy"] = &CScript::DeductEnergy;
  978. (*s_FunctionList2)["GetSkillParam"] = &CScript::GetSkillParam;
  979. (*s_FunctionList2)["GetSkillElement"] = &CScript::GetSkillElement;
  980. (*s_FunctionList2)["GetSkillUseType"] = &CScript::GetSkillUseType;
  981. (*s_FunctionList2)["GetStateParamByID"] = &CScript::GetStateParamByID;
  982. (*s_FunctionList2)["GetStateParamByIndex"] = &CScript::GetStateParamByIndex;
  983. (*s_FunctionList2)["CheckStateFirer"] = &CScript::CheckStateFirer;
  984. (*s_FunctionList2)["BeedAttackEvent"] = &CScript::BeedAttackEvent;
  985. (*s_FunctionList2)["GetSkillLv"] = &CScript::GetSkillLv;
  986. (*s_FunctionList2)["ReLiveInScript"] = &CScript::ReLiveInScript;
  987. (*s_FunctionList2)["BeginUseSkill"] = &CScript::BeginUseSkill;
  988. (*s_FunctionList2)["GetGuidByParam"] = &CScript::GetGuidByParam;
  989. (*s_FunctionList2)["RunScriptByDest"] = &CScript::RunScriptByDest;
  990. (*s_FunctionList2)["GetGoodsAddProperty"] = &CScript::GetGoodsAddProperty;
  991. (*s_FunctionList2)["GetGoodsPlacePos"] = &CScript::GetGoodsPlacePos;
  992. (*s_FunctionList2)["DelGoodsByPlacePos"] = &CScript::DelGoodsByPlacePos;
  993. (*s_FunctionList2)["SucceedUseItem"] = &CScript::SucceedUseItem;
  994. (*s_FunctionList2)["GetActModify"] = &CScript::GetActModify;
  995. (*s_FunctionList2)["SendUnLockGoodsMsg"] = &CScript::SendUnLockGoodsMsg;
  996. (*s_FunctionList2)["GetBeneficiaryInfo"] = &CScript::GetBeneficiaryInfo;
  997. (*s_FunctionList2)["GetKillerInfo"] = &CScript::GetKillerInfo;
  998. (*s_FunctionList2)["GetModType"] = &CScript::GetModType;
  999. (*s_FunctionList2)["GetAttackerType"] = &CScript::GetAttackerType;
  1000. (*s_FunctionList2)["GetFunMoHua"] = &CScript::GetFunMoHua;
  1001. (*s_FunctionList2)["GetBModifier"] = &CScript::GetBModifier;
  1002. (*s_FunctionList2)["GetPrevent"] = &CScript::GetPrevent;
  1003. (*s_FunctionList2)["GetPartDamageOut"] = &CScript::GetPartDamageOut;
  1004. (*s_FunctionList2)["OnCostYuanBao"] = &CScript::OnCostYuanBao;
  1005. //-----------------------------------------------------
  1006. //定义了和客户端交互,客户端可视相关的脚本函数
  1007. (*s_FunctionList2)["AddInfo"] = &CScript::AddInfo;
  1008. (*s_FunctionList2)["AddDestInfo"] = &CScript::AddDestInfo;
  1009. (*s_FunctionList2)["AddInfoByIndex"] = &CScript::AddInfoByIndex;
  1010. (*s_FunctionList2)["GameMessage"] = &CScript::GameMessage;
  1011. (*s_FunctionList2)["TalkBox"] = &CScript::TalkBox;
  1012. (*s_FunctionList2)["PicTalkBox"] = &CScript::PicTalkBox;
  1013. (*s_FunctionLi

Large files files are truncated, but you can click here to view the full file