Advertisement
Guest User

Untitled

a guest
Feb 25th, 2020
143
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 34.58 KB | None | 0 0
  1. #include "StdAfx.h"
  2.  
  3. #ifdef ENABLE_ADMIN_MANAGER
  4. #include "PythonAdmin.h"
  5. #include "PythonNetworkStream.h"
  6.  
  7. PyObject * adminCanOpenWindow(PyObject * poSelf, PyObject * poArgs)
  8. {
  9. bool bCanOpenWindow = CPythonAdmin::Instance().CanOpenAdminWindow();
  10.  
  11. if (bCanOpenWindow)
  12. {
  13. if (!CPythonAdmin::Instance().HasAllow(CPythonAdmin::ALLOW_VIEW_ONLINE_LIST) &&
  14. !CPythonAdmin::Instance().HasAllow(CPythonAdmin::ALLOW_VIEW_ONLINE_COUNT) &&
  15. !CPythonAdmin::Instance().HasAllow(CPythonAdmin::ALLOW_MAPVIEWER) &&
  16. !CPythonAdmin::Instance().HasAllow(CPythonAdmin::ALLOW_OBSERVER))
  17. bCanOpenWindow = false;
  18. }
  19.  
  20. return Py_BuildValue("b", bCanOpenWindow);
  21. }
  22.  
  23. PyObject * adminHasAllow(PyObject * poSelf, PyObject * poArgs)
  24. {
  25. int iAllowFlag;
  26. if (!PyTuple_GetInteger(poArgs, 0, &iAllowFlag))
  27. return Py_BadArgument();
  28.  
  29. bool bHasAllow = CPythonAdmin::Instance().HasAllow(iAllowFlag);
  30. return Py_BuildValue("b", bHasAllow);
  31. }
  32.  
  33. PyObject * adminGetOnlinePlayerCount(PyObject * poSelf, PyObject * poArgs)
  34. {
  35. DWORD dwCount = CPythonAdmin::Instance().GetOnlinePlayerCount();
  36. return Py_BuildValue("i", dwCount);
  37. }
  38.  
  39. PyObject * adminGetOnlinePlayerByIndex(PyObject * poSelf, PyObject * poArgs)
  40. {
  41. int iIndex;
  42. if (!PyTuple_GetInteger(poArgs, 0, &iIndex))
  43. return Py_BadArgument();
  44.  
  45. const TAdminManagerPlayerInfo* c_pPlayerInfo = CPythonAdmin::instance().GetOnlinePlayerByIndex(iIndex);
  46. if (!c_pPlayerInfo)
  47. return Py_BuildException();
  48.  
  49. return Py_BuildValue("isiii", c_pPlayerInfo->dwPID, c_pPlayerInfo->szName, (long)c_pPlayerInfo->lMapIndex,
  50. c_pPlayerInfo->bChannel, c_pPlayerInfo->bEmpire);
  51. }
  52.  
  53. PyObject * adminGetOnlinePlayerByPID(PyObject * poSelf, PyObject * poArgs)
  54. {
  55. int iPID;
  56. if (!PyTuple_GetInteger(poArgs, 0, &iPID))
  57. return Py_BadArgument();
  58.  
  59. const TAdminManagerPlayerInfo* c_pPlayerInfo = CPythonAdmin::instance().GetOnlinePlayerByPID(iPID);
  60. if (!c_pPlayerInfo)
  61. return Py_BuildException();
  62.  
  63. return Py_BuildValue("isiii", c_pPlayerInfo->dwPID, c_pPlayerInfo->szName, (long)c_pPlayerInfo->lMapIndex,
  64. c_pPlayerInfo->bChannel, c_pPlayerInfo->bEmpire);
  65. }
  66.  
  67. PyObject * adminSortOnlinePlayer(PyObject * poSelf, PyObject * poArgs)
  68. {
  69. int iSortType;
  70. if (!PyTuple_GetInteger(poArgs, 0, &iSortType))
  71. return Py_BadArgument();
  72. int iDirection;
  73. if (!PyTuple_GetInteger(poArgs, 1, &iDirection))
  74. return Py_BadArgument();
  75.  
  76. CPythonAdmin::Instance().SortOnlinePlayer(iSortType, iDirection);
  77. return Py_BuildNone();
  78. }
  79.  
  80. PyObject * adminGetOnlinePlayerSortType(PyObject * poSelf, PyObject * poArgs)
  81. {
  82. int iSortType = CPythonAdmin::Instance().GetOnlinePlayerSortType();
  83. return Py_BuildValue("i", iSortType);
  84. }
  85.  
  86. PyObject * adminGetOnlinePlayerSortDirection(PyObject * poSelf, PyObject * poArgs)
  87. {
  88. int iSortDir = CPythonAdmin::Instance().GetOnlinePlayerSortDirection();
  89. return Py_BuildValue("i", iSortDir);
  90. }
  91.  
  92. PyObject * adminGetSortOnlinePlayerByIndex(PyObject * poSelf, PyObject * poArgs)
  93. {
  94. int iIndex;
  95. if (!PyTuple_GetInteger(poArgs, 0, &iIndex))
  96. return Py_BadArgument();
  97.  
  98. const TAdminManagerPlayerInfo* c_pPlayerInfo = CPythonAdmin::instance().GetSortOnlinePlayerByIndex(iIndex);
  99. if (!c_pPlayerInfo)
  100. return Py_BuildException();
  101.  
  102. return Py_BuildValue("isiii", c_pPlayerInfo->dwPID, c_pPlayerInfo->szName, (long)c_pPlayerInfo->lMapIndex,
  103. c_pPlayerInfo->bChannel, c_pPlayerInfo->bEmpire);
  104. }
  105.  
  106. PyObject * adminIsOnlinePlayerSorted(PyObject * poSelf, PyObject * poArgs)
  107. {
  108. bool bIsSorted = CPythonAdmin::Instance().IsOnlinePlayerSorted();
  109. return Py_BuildValue("b", bIsSorted);
  110. }
  111.  
  112. PyObject * adminIsGMItemTradeBlock(PyObject * poSelf, PyObject * poArgs)
  113. {
  114. bool bIsBlock = CPythonAdmin::Instance().IsGMItemTradeBlock();
  115. return Py_BuildValue("b", bIsBlock);
  116. }
  117.  
  118. PyObject * adminStartMapViewer(PyObject * poSelf, PyObject * poArgs)
  119. {
  120. int iBaseX;
  121. if (!PyTuple_GetInteger(poArgs, 0, &iBaseX))
  122. return Py_BadArgument();
  123. int iBaseY;
  124. if (!PyTuple_GetInteger(poArgs, 1, &iBaseY))
  125. return Py_BadArgument();
  126.  
  127. CPythonNetworkStream::instance().SendAdminManagerHead(ADMIN_MANAGER_CG_SUBHEADER_MAPVIEWER_START);
  128. CPythonNetworkStream::instance().Send(sizeof(int), &iBaseX);
  129. CPythonNetworkStream::instance().Send(sizeof(int), &iBaseY);
  130. CPythonNetworkStream::instance().SendSequence();
  131.  
  132. return Py_BuildNone();
  133. }
  134.  
  135. PyObject * adminStopMapViewer(PyObject * poSelf, PyObject * poArgs)
  136. {
  137. CPythonNetworkStream::instance().SendAdminManager(ADMIN_MANAGER_CG_SUBHEADER_MAPVIEWER_STOP, NULL);
  138. return Py_BuildNone();
  139. }
  140.  
  141. PyObject * adminGetMapViewerBaseX(PyObject * poSelf, PyObject * poArgs)
  142. {
  143. DWORD dwBaseX = CPythonAdmin::Instance().MapViewer_GetBaseX();
  144. return Py_BuildValue("i", dwBaseX);
  145. }
  146.  
  147. PyObject * adminGetMapViewerBaseY(PyObject * poSelf, PyObject * poArgs)
  148. {
  149. DWORD dwBaseY = CPythonAdmin::Instance().MapViewer_GetBaseY();
  150. return Py_BuildValue("i", dwBaseY);
  151. }
  152.  
  153. PyObject * adminStartObserver(PyObject * poSelf, PyObject * poArgs)
  154. {
  155. char* c_pszName;
  156. if (!PyTuple_GetString(poArgs, 0, &c_pszName))
  157. return Py_BadArgument();
  158. bool bSendFailMessage;
  159. if (!PyTuple_GetBoolean(poArgs, 1, &bSendFailMessage))
  160. bSendFailMessage = true;
  161.  
  162. int iLen = strlen(c_pszName);
  163.  
  164. CPythonNetworkStream::instance().SendAdminManagerHead(ADMIN_MANAGER_CG_SUBHEADER_OBSERVER_START);
  165. CPythonNetworkStream::instance().Send(sizeof(bSendFailMessage), &bSendFailMessage);
  166. CPythonNetworkStream::instance().Send(sizeof(iLen), &iLen);
  167. CPythonNetworkStream::instance().Send(iLen, c_pszName);
  168. CPythonNetworkStream::instance().SendSequence();
  169.  
  170. return Py_BuildNone();
  171. }
  172.  
  173. PyObject * adminStopObserver(PyObject * poSelf, PyObject * poArgs)
  174. {
  175. CPythonAdmin::Instance().Observer_Clear();
  176. CPythonNetworkStream::instance().SendAdminManager(ADMIN_MANAGER_CG_SUBHEADER_OBSERVER_STOP, NULL);
  177.  
  178. return Py_BuildNone();
  179. }
  180.  
  181. PyObject * adminIsObserverRunning(PyObject * poSelf, PyObject * poArgs)
  182. {
  183. bool bIsRunning = CPythonAdmin::Instance().Observer_IsRunning();
  184. return Py_BuildValue("b", bIsRunning);
  185. }
  186.  
  187. PyObject * adminIsObserverStopForced(PyObject * poSelf, PyObject * poArgs)
  188. {
  189. bool bIsStopForced = CPythonAdmin::Instance().Observer_IsStoppedByForce();
  190. return Py_BuildValue("b", bIsStopForced);
  191. }
  192.  
  193. PyObject * adminGetObserverPID(PyObject * poSelf, PyObject * poArgs)
  194. {
  195. DWORD dwPID = CPythonAdmin::Instance().Observer_GetPID();
  196. return Py_BuildValue("i", dwPID);
  197. }
  198.  
  199. PyObject * adminGetObserverAID(PyObject * poSelf, PyObject * poArgs)
  200. {
  201. DWORD dwAID = CPythonAdmin::Instance().Observer_GetAID();
  202. return Py_BuildValue("i", dwAID);
  203. }
  204.  
  205. PyObject * adminGetObserverLoginName(PyObject * poSelf, PyObject * poArgs)
  206. {
  207. const std::string& c_rstLoginName = CPythonAdmin::Instance().Observer_GetLoginName();
  208. return Py_BuildValue("s", c_rstLoginName.c_str());
  209. }
  210.  
  211. PyObject * adminGetObserverRaceNum(PyObject * poSelf, PyObject * poArgs)
  212. {
  213. BYTE bRaceNum = CPythonAdmin::Instance().Observer_GetRaceNum();
  214. return Py_BuildValue("i", bRaceNum);
  215. }
  216.  
  217. PyObject * adminGetObserverMapName(PyObject * poSelf, PyObject * poArgs)
  218. {
  219. const std::string& c_rstMapName = CPythonAdmin::Instance().Observer_GetMapName();
  220. return Py_BuildValue("s", c_rstMapName.c_str());
  221. }
  222.  
  223. PyObject * adminGetObserverSkillGroup(PyObject * poSelf, PyObject * poArgs)
  224. {
  225. BYTE bSkillGroup = CPythonAdmin::Instance().Observer_GetSkillGroup();
  226. return Py_BuildValue("i", bSkillGroup);
  227. }
  228.  
  229. PyObject * adminGetObserverSkillLevel(PyObject * poSelf, PyObject * poArgs)
  230. {
  231. int iSkillVnum;
  232. if (!PyTuple_GetInteger(poArgs, 0, &iSkillVnum))
  233. return false;
  234.  
  235. const TPlayerSkill* pkSkillInfo = CPythonAdmin::Instance().Observer_GetSkill(iSkillVnum);
  236. return Py_BuildValue("i", pkSkillInfo->bLevel);
  237. }
  238.  
  239. PyObject * adminGetObserverSkillMasterType(PyObject * poSelf, PyObject * poArgs)
  240. {
  241. int iSkillVnum;
  242. if (!PyTuple_GetInteger(poArgs, 0, &iSkillVnum))
  243. return false;
  244.  
  245. const TPlayerSkill* pkSkillInfo = CPythonAdmin::Instance().Observer_GetSkill(iSkillVnum);
  246. return Py_BuildValue("i", pkSkillInfo->bMasterType);
  247. }
  248.  
  249. PyObject * adminGetObserverSkillCoolTime(PyObject * poSelf, PyObject * poArgs)
  250. {
  251. int iSkillVnum;
  252. if (!PyTuple_GetInteger(poArgs, 0, &iSkillVnum))
  253. return false;
  254.  
  255. DWORD dwCoolTime = CPythonAdmin::Instance().Observer_GetSkillCoolTime(iSkillVnum);
  256. return Py_BuildValue("i", dwCoolTime);
  257. }
  258.  
  259. PyObject * adminGetObserverESkillCoolTime(PyObject * poSelf, PyObject * poArgs)
  260. {
  261. int iSkillVnum;
  262. if (!PyTuple_GetInteger(poArgs, 0, &iSkillVnum))
  263. return false;
  264.  
  265. DWORD dwElapsedCoolTime = CPythonAdmin::Instance().Observer_GetSkillElapsedCoolTime(iSkillVnum);
  266. return Py_BuildValue("i", dwElapsedCoolTime);
  267. }
  268.  
  269. PyObject * adminGetObserverPoint(PyObject * poSelf, PyObject * poArgs)
  270. {
  271. BYTE bType;
  272. if (!PyTuple_GetByte(poArgs, 0, &bType))
  273. return Py_BadArgument();
  274.  
  275. long long llValue = CPythonAdmin::Instance().Observer_GetPoint(bType, 0);
  276. return PyLong_FromLongLong(llValue);
  277. }
  278.  
  279. PyObject * adminGetObserverItem(PyObject * poSelf, PyObject * poArgs)
  280. {
  281. int iCell;
  282. if (!PyTuple_GetInteger(poArgs, 0, &iCell))
  283. return Py_BadArgument();
  284.  
  285. const TAdminManagerObserverItemInfo* pItemInfo = CPythonAdmin::Instance().Observer_GetInventoryItem(iCell);
  286. if (!pItemInfo)
  287. return Py_BuildValue("iiib", 0, 0, 0, false);
  288.  
  289. return Py_BuildValue("iiib", pItemInfo->id, pItemInfo->vnum, pItemInfo->count, pItemInfo->is_gm_item);
  290. }
  291.  
  292. PyObject * adminGetObserverItemSocket(PyObject * poSelf, PyObject * poArgs)
  293. {
  294. int iCell;
  295. if (!PyTuple_GetInteger(poArgs, 0, &iCell))
  296. return Py_BadArgument();
  297.  
  298. const TAdminManagerObserverItemInfo* pItemInfo = CPythonAdmin::Instance().Observer_GetInventoryItem(iCell);
  299. if (!pItemInfo)
  300. return Py_BuildValue("(iii)", 0, 0, 0);
  301.  
  302. return Py_BuildValue("(iii)", pItemInfo->alSockets[0], pItemInfo->alSockets[1], pItemInfo->alSockets[2]);
  303. }
  304.  
  305. PyObject * adminGetObserverItemAttr(PyObject * poSelf, PyObject * poArgs)
  306. {
  307. int iCell;
  308. if (!PyTuple_GetInteger(poArgs, 0, &iCell))
  309. return Py_BadArgument();
  310.  
  311. const TAdminManagerObserverItemInfo* pItemInfo = CPythonAdmin::Instance().Observer_GetInventoryItem(iCell);
  312. if (!pItemInfo)
  313. return Py_BuildValue("((ii)(ii)(ii)(ii)(ii)(ii)(ii))",
  314. 0, 0,
  315. 0, 0,
  316. 0, 0,
  317. 0, 0,
  318. 0, 0,
  319. 0, 0,
  320. 0, 0);
  321.  
  322. return Py_BuildValue("((ii)(ii)(ii)(ii)(ii)(ii)(ii))",
  323. pItemInfo->aAttr[0].bType, pItemInfo->aAttr[0].sValue,
  324. pItemInfo->aAttr[1].bType, pItemInfo->aAttr[1].sValue,
  325. pItemInfo->aAttr[2].bType, pItemInfo->aAttr[2].sValue,
  326. pItemInfo->aAttr[3].bType, pItemInfo->aAttr[3].sValue,
  327. pItemInfo->aAttr[4].bType, pItemInfo->aAttr[4].sValue,
  328. pItemInfo->aAttr[5].bType, pItemInfo->aAttr[5].sValue,
  329. pItemInfo->aAttr[6].bType, pItemInfo->aAttr[6].sValue);
  330. }
  331.  
  332. PyObject * adminGetObserverWhisperDlgCount(PyObject * poSelf, PyObject * poArgs)
  333. {
  334. auto& rkMap = CPythonAdmin::Instance().Observer_GetMessageMap();
  335. return Py_BuildValue("i", rkMap.size());
  336. }
  337.  
  338. PyObject * adminGetObserverWhisperPIDByIdx(PyObject * poSelf, PyObject * poArgs)
  339. {
  340. int iIndex;
  341. if (!PyTuple_GetInteger(poArgs, 0, &iIndex))
  342. return Py_BadArgument();
  343.  
  344. auto& rkMap = CPythonAdmin::Instance().Observer_GetMessageMap();
  345. auto it = rkMap.begin();
  346. for (int i = 0; i < iIndex; ++i)
  347. ++it;
  348.  
  349. return Py_BuildValue("i", it->first);
  350. }
  351.  
  352. PyObject * adminGetObserverWhisperName(PyObject * poSelf, PyObject * poArgs)
  353. {
  354. int iPID;
  355. if (!PyTuple_GetInteger(poArgs, 0, &iPID))
  356. return Py_BadArgument();
  357.  
  358. auto& rkMap = CPythonAdmin::Instance().Observer_GetMessageMap();
  359. auto it = rkMap.find(iPID);
  360. if (it == rkMap.end())
  361. return Py_BuildValue("s", "");
  362. const CPythonAdmin::TWhisper& rkWhisper = it->second;
  363.  
  364. return Py_BuildValue("s", rkWhisper.stOtherName.c_str());
  365. }
  366.  
  367. PyObject * adminGetObserverWhisperMsgCount(PyObject * poSelf, PyObject * poArgs)
  368. {
  369. int iPID;
  370. if (!PyTuple_GetInteger(poArgs, 0, &iPID))
  371. return Py_BadArgument();
  372.  
  373. auto& rkMap = CPythonAdmin::Instance().Observer_GetMessageMap();
  374. auto it = rkMap.find(iPID);
  375. if (it == rkMap.end())
  376. return Py_BuildValue("i", 0);
  377. const CPythonAdmin::TWhisper& rkWhisper = it->second;
  378.  
  379. return Py_BuildValue("i", rkWhisper.vec_kMessages.size());
  380. }
  381.  
  382. #ifdef time_t
  383. #undef time_t
  384. #endif
  385. PyObject * adminGetObserverWhisperMsg(PyObject * poSelf, PyObject * poArgs)
  386. {
  387. int iPID;
  388. if (!PyTuple_GetInteger(poArgs, 0, &iPID))
  389. return Py_BadArgument();
  390. int iIndex;
  391. if (!PyTuple_GetInteger(poArgs, 1, &iIndex))
  392. return Py_BadArgument();
  393.  
  394. auto& rkMap = CPythonAdmin::Instance().Observer_GetMessageMap();
  395. auto it = rkMap.find(iPID);
  396. if (it == rkMap.end())
  397. return Py_BuildValue("iis", 0, 0, "");
  398. const CPythonAdmin::TWhisper& rkWhisper = it->second;
  399.  
  400. char szTimeInfo[50];
  401. time_t msgTime = rkWhisper.vec_kMessages[iIndex].dwSentTime;
  402. tm* pLocaltime = localtime(&msgTime);
  403. strftime(szTimeInfo, sizeof(szTimeInfo), "%d.%m %H:%M:%S", pLocaltime);
  404.  
  405. return Py_BuildValue("iss", rkWhisper.vec_kMessages[iIndex].dwSenderPID, szTimeInfo,
  406. rkWhisper.vec_kMessages[iIndex].szMessage);
  407. }
  408.  
  409. PyObject * adminGetObserverChatBanTimeLeft(PyObject * poSelf, PyObject * poArgs)
  410. {
  411. DWORD dwTimeLeft = CPythonAdmin::Instance().Observer_GetChatBanTimeLeft();
  412. return Py_BuildValue("i", dwTimeLeft);
  413. }
  414.  
  415. PyObject * adminGetObserverAccountBanTimeLeft(PyObject * poSelf, PyObject * poArgs)
  416. {
  417. DWORD dwTimeLeft = CPythonAdmin::Instance().Observer_GetAccountBanTimeLeft();
  418. return Py_BuildValue("i", dwTimeLeft);
  419. }
  420.  
  421. PyObject * adminGetBanChatPlayerCount(PyObject * poSelf, PyObject * poArgs)
  422. {
  423. DWORD dwPlayerCount = CPythonAdmin::Instance().Ban_GetChatPlayerCount();
  424. return Py_BuildValue("i", dwPlayerCount);
  425. }
  426.  
  427. PyObject * adminGetBanChatPlayerByIndex(PyObject * poSelf, PyObject * poArgs)
  428. {
  429. int iIndex;
  430. if (!PyTuple_GetInteger(poArgs, 0, &iIndex))
  431. return Py_BadArgument();
  432.  
  433. DWORD dwPID;
  434. const CPythonAdmin::TChatBanPlayerInfo* pPlayerInfo = CPythonAdmin::Instance().Ban_GetChatPlayerByIndex(iIndex, dwPID);
  435. if (!pPlayerInfo)
  436. return Py_BuildValue("isiiiiib", 0, "", 0, 0, 0, 0, 0, false);
  437.  
  438. return Py_BuildValue("isiiiiib",
  439. dwPID, pPlayerInfo->szName, pPlayerInfo->bRace, pPlayerInfo->bLevel, pPlayerInfo->wChatbanCount, pPlayerInfo->wAccountbanCount,
  440. pPlayerInfo->GetDuration(), pPlayerInfo->IsOnline());
  441. }
  442.  
  443. PyObject * adminGetBanChatPlayerByPID(PyObject * poSelf, PyObject * poArgs)
  444. {
  445. int iPID;
  446. if (!PyTuple_GetInteger(poArgs, 0, &iPID))
  447. return Py_BadArgument();
  448.  
  449. const CPythonAdmin::TChatBanPlayerInfo* pPlayerInfo = CPythonAdmin::Instance().Ban_GetChatPlayerByPID(iPID);
  450. if (!pPlayerInfo)
  451. {
  452. TraceError("could not get by pid %d", iPID);
  453. return Py_BuildValue("isiiiiib", 0, "", 0, 0, 0, 0, 0, false);
  454. }
  455.  
  456. return Py_BuildValue("isiiiiib",
  457. iPID, pPlayerInfo->szName, pPlayerInfo->bRace, pPlayerInfo->bLevel, pPlayerInfo->wChatbanCount, pPlayerInfo->wAccountbanCount,
  458. pPlayerInfo->GetDuration(), pPlayerInfo->IsOnline());
  459. }
  460.  
  461. PyObject * adminGetBanChatPlayerPIDByName(PyObject * poSelf, PyObject * poArgs)
  462. {
  463. char* pszName;
  464. if (!PyTuple_GetString(poArgs, 0, &pszName))
  465. return Py_BadArgument();
  466.  
  467. return Py_BuildValue("i", CPythonAdmin::Instance().Ban_GetChatPlayerPIDByName(pszName));
  468. }
  469.  
  470. PyObject * adminGetBanChatSearchResultPID(PyObject * poSelf, PyObject * poArgs)
  471. {
  472. DWORD dwPID = CPythonAdmin::Instance().Ban_GetChatSearchResultPID();
  473. return Py_BuildValue("i", dwPID);
  474. }
  475.  
  476. PyObject * adminSetBanChatSearchResultPID(PyObject * poSelf, PyObject * poArgs)
  477. {
  478. int iPID;
  479. if (!PyTuple_GetInteger(poArgs, 0, &iPID))
  480. return Py_BadArgument();
  481.  
  482. CPythonAdmin::Instance().Ban_ClientSetChatSearchResult(iPID);
  483. return Py_BuildNone();
  484. }
  485.  
  486. PyObject * adminSearchBanChatPlayer(PyObject * poSelf, PyObject * poArgs)
  487. {
  488. char* pszName;
  489. if (!PyTuple_GetString(poArgs, 0, &pszName))
  490. return Py_BadArgument();
  491.  
  492. int iLen = strlen(pszName);
  493.  
  494. CPythonNetworkStream::Instance().SendAdminManagerHead(ADMIN_MANAGER_CG_SUBHEADER_BAN_CHAT_SEARCH);
  495. CPythonNetworkStream::Instance().Send(sizeof(int), &iLen);
  496. CPythonNetworkStream::Instance().Send(iLen, pszName);
  497. CPythonNetworkStream::instance().SendSequence();
  498.  
  499. return Py_BuildNone();
  500. }
  501.  
  502. PyObject * adminGetBanAccountCount(PyObject * poSelf, PyObject * poArgs)
  503. {
  504. DWORD dwPlayerCount = CPythonAdmin::Instance().Ban_GetAccountCount();
  505. return Py_BuildValue("i", dwPlayerCount);
  506. }
  507.  
  508. PyObject * adminGetBanAccountByIndex(PyObject * poSelf, PyObject * poArgs)
  509. {
  510. int iIndex;
  511. if (!PyTuple_GetInteger(poArgs, 0, &iIndex))
  512. return Py_BadArgument();
  513.  
  514. DWORD dwAID;
  515. const CPythonAdmin::TAccountBanInfo* pAccountInfo = CPythonAdmin::Instance().Ban_GetAccountByIndex(iIndex, dwAID);
  516. if (!pAccountInfo)
  517. return Py_BuildValue("isiii", 0, "", 0, 0, 0);
  518.  
  519. return Py_BuildValue("isiii",
  520. dwAID, pAccountInfo->szLoginName, pAccountInfo->wAccountbanCount, pAccountInfo->GetDuration(), pAccountInfo);
  521. }
  522.  
  523. PyObject * adminGetBanAccountByAID(PyObject * poSelf, PyObject * poArgs)
  524. {
  525. int iAID;
  526. if (!PyTuple_GetInteger(poArgs, 0, &iAID))
  527. return Py_BadArgument();
  528.  
  529. const CPythonAdmin::TAccountBanInfo* pAccountInfo = CPythonAdmin::Instance().Ban_GetAccountByAID(iAID);
  530. if (!pAccountInfo)
  531. {
  532. TraceError("could not get by aid %d", iAID);
  533. return Py_BuildValue("isiii", 0, "", 0, 0, 0);
  534. }
  535.  
  536. return Py_BuildValue("isiii",
  537. iAID, pAccountInfo->szLoginName, pAccountInfo->wAccountbanCount, pAccountInfo->GetDuration(), pAccountInfo);
  538. }
  539.  
  540. PyObject * adminGetBanAccountAIDByName(PyObject * poSelf, PyObject * poArgs)
  541. {
  542. char* pszName;
  543. if (!PyTuple_GetString(poArgs, 0, &pszName))
  544. return Py_BadArgument();
  545.  
  546. return Py_BuildValue("i", CPythonAdmin::Instance().Ban_GetAccountAIDByName(pszName));
  547. }
  548.  
  549. PyObject * adminGetBanAccountAIDByPlayerName(PyObject * poSelf, PyObject * poArgs)
  550. {
  551. char* pszName;
  552. if (!PyTuple_GetString(poArgs, 0, &pszName))
  553. return Py_BadArgument();
  554.  
  555. return Py_BuildValue("i", CPythonAdmin::Instance().Ban_GetAccountAIDByPlayerName(pszName));
  556. }
  557.  
  558. PyObject * adminGetBanAccountAIDByPID(PyObject * poSelf, PyObject * poArgs)
  559. {
  560. int iPID;
  561. if (!PyTuple_GetInteger(poArgs, 0, &iPID))
  562. return Py_BadArgument();
  563.  
  564. return Py_BuildValue("i", CPythonAdmin::Instance().Ban_GetAccountAIDByPID(iPID));
  565. }
  566.  
  567. PyObject * adminGetBanAccountPlayer(PyObject * poSelf, PyObject * poArgs)
  568. {
  569. int iAccountInfoPtr;
  570. if (!PyTuple_GetInteger(poArgs, 0, &iAccountInfoPtr))
  571. return Py_BadArgument();
  572. int iPlayerIndex;
  573. if (!PyTuple_GetInteger(poArgs, 1, &iPlayerIndex))
  574. return Py_BadArgument();
  575.  
  576. const CPythonAdmin::TAccountBanInfo* pAccountInfo = (const CPythonAdmin::TAccountBanInfo*) iAccountInfoPtr;
  577. return Py_BuildValue("isiiib",
  578. pAccountInfo->dwPID[iPlayerIndex], pAccountInfo->szName[iPlayerIndex], pAccountInfo->bRace[iPlayerIndex], pAccountInfo->bLevel[iPlayerIndex],
  579. pAccountInfo->wChatbanCount[iPlayerIndex], pAccountInfo->bIsOnline[iPlayerIndex]);
  580. }
  581.  
  582. PyObject * adminGetBanAccountSearchResultAID(PyObject * poSelf, PyObject * poArgs)
  583. {
  584. DWORD dwAID = CPythonAdmin::Instance().Ban_GetAccountSearchResultAID();
  585. return Py_BuildValue("i", dwAID);
  586. }
  587.  
  588. PyObject * adminSetBanAccountSearchResultAID(PyObject * poSelf, PyObject * poArgs)
  589. {
  590. int iAID;
  591. if (!PyTuple_GetInteger(poArgs, 0, &iAID))
  592. return Py_BadArgument();
  593.  
  594. CPythonAdmin::Instance().Ban_ClientSetAccountSearchResult(iAID);
  595. return Py_BuildNone();
  596. }
  597.  
  598. PyObject * adminSearchBanAccount(PyObject * poSelf, PyObject * poArgs)
  599. {
  600. BYTE bSearchType;
  601. if (!PyTuple_GetByte(poArgs, 0, &bSearchType))
  602. return Py_BadArgument();
  603. char* pszName;
  604. if (!PyTuple_GetString(poArgs, 1, &pszName))
  605. return Py_BadArgument();
  606.  
  607. int iLen = strlen(pszName);
  608.  
  609. CPythonNetworkStream::Instance().SendAdminManagerHead(ADMIN_MANAGER_CG_SUBHEADER_BAN_ACCOUNT_SEARCH);
  610. CPythonNetworkStream::Instance().Send(sizeof(BYTE), &bSearchType);
  611. CPythonNetworkStream::Instance().Send(sizeof(int), &iLen);
  612. CPythonNetworkStream::Instance().Send(iLen, pszName);
  613. CPythonNetworkStream::instance().SendSequence();
  614.  
  615. return Py_BuildNone();
  616. }
  617.  
  618. PyObject * adminBanAccount(PyObject * poSelf, PyObject * poArgs)
  619. {
  620. int iAID;
  621. if (!PyTuple_GetInteger(poArgs, 0, &iAID))
  622. return Py_BadArgument();
  623. int iPlayerID;
  624. if (!PyTuple_GetInteger(poArgs, 1, &iPlayerID))
  625. return Py_BadArgument();
  626. int iTimeLeft;
  627. if (!PyTuple_GetInteger(poArgs, 2, &iTimeLeft))
  628. return Py_BadArgument();
  629. bool bIncreaseCounter;
  630. if (!PyTuple_GetBoolean(poArgs, 3, &bIncreaseCounter))
  631. return Py_BadArgument();
  632. char* pszReason;
  633. if (!PyTuple_GetString(poArgs, 4, &pszReason))
  634. return Py_BadArgument();
  635. char* pszProof;
  636. if (!PyTuple_GetString(poArgs, 5, &pszProof))
  637. return Py_BadArgument();
  638.  
  639. int iLen1 = strlen(pszReason);
  640. int iLen2 = strlen(pszProof);
  641.  
  642. CPythonNetworkStream::Instance().SendAdminManagerHead(ADMIN_MANAGER_CG_SUBHEADER_BAN_ACCOUNT);
  643. CPythonNetworkStream::Instance().Send(sizeof(DWORD), &iAID);
  644. CPythonNetworkStream::Instance().Send(sizeof(DWORD), &iPlayerID);
  645. CPythonNetworkStream::Instance().Send(sizeof(DWORD), &iTimeLeft);
  646. CPythonNetworkStream::Instance().Send(sizeof(bool), &bIncreaseCounter);
  647. CPythonNetworkStream::Instance().Send(sizeof(int), &iLen1);
  648. CPythonNetworkStream::Instance().Send(iLen1, pszReason);
  649. CPythonNetworkStream::Instance().Send(sizeof(int), &iLen2);
  650. CPythonNetworkStream::Instance().Send(iLen2, pszProof);
  651. CPythonNetworkStream::instance().SendSequence();
  652.  
  653. return Py_BuildNone();
  654. }
  655.  
  656. PyObject * adminGetBanLogInfoCount(PyObject * poSelf, PyObject * poArgs)
  657. {
  658. DWORD dwCount = CPythonAdmin::Instance().Ban_GetLogInfoCount();
  659. return Py_BuildValue("i", dwCount);
  660. }
  661.  
  662. PyObject * adminGetBanLogInfo(PyObject * poSelf, PyObject * poArgs)
  663. {
  664. int iIndex;
  665. if (!PyTuple_GetInteger(poArgs, 0, &iIndex))
  666. return Py_BadArgument();
  667.  
  668. const TAdminManagerBanLogInfo* pInfo = CPythonAdmin::Instance().Ban_GetLogInfo(iIndex);
  669. if (!pInfo)
  670. return Py_BuildValue("isisiisss", 0, "", 0, "", 0, 0, "", "", "");
  671.  
  672. return Py_BuildValue("isisiisss", pInfo->dwPlayerID, pInfo->szPlayerName, pInfo->dwGMPlayerID, pInfo->szGMName, pInfo->bType,
  673. pInfo->iNewDuration, pInfo->szReason, pInfo->szProof, pInfo->szDate);
  674. }
  675.  
  676. PyObject * adminGetLogInfoType(PyObject * poSelf, PyObject * poArgs)
  677. {
  678. return Py_BuildValue("i", CPythonAdmin::Instance().Ban_GetLogInfoType());
  679. }
  680.  
  681. PyObject * adminRequestBanLogInfo(PyObject * poSelf, PyObject * poArgs)
  682. {
  683. BYTE bType;
  684. if (!PyTuple_GetByte(poArgs, 0, &bType))
  685. return Py_BadArgument();
  686. int iID;
  687. if (!PyTuple_GetInteger(poArgs, 1, &iID))
  688. return Py_BadArgument();
  689.  
  690. CPythonAdmin::Instance().Ban_SetLogInfoType(bType);
  691.  
  692. CPythonNetworkStream::Instance().SendAdminManagerHead(ADMIN_MANAGER_CG_SUBHEADER_BAN_REQUEST_LOG);
  693. CPythonNetworkStream::Instance().Send(sizeof(BYTE), &bType);
  694. CPythonNetworkStream::Instance().Send(sizeof(int), &iID);
  695. CPythonNetworkStream::instance().SendSequence();
  696.  
  697. return Py_BuildNone();
  698. }
  699.  
  700. PyObject * adminGetItemInfoCount(PyObject * poSelf, PyObject * poArgs)
  701. {
  702. return Py_BuildValue("i", CPythonAdmin::Instance().Item_GetInfoCount());
  703. }
  704.  
  705. PyObject * adminGetItemInfoByIndex(PyObject * poSelf, PyObject * poArgs)
  706. {
  707. int iIndex;
  708. if (!PyTuple_GetInteger(poArgs, 0, &iIndex))
  709. return Py_BadArgument();
  710.  
  711. DWORD dwItemID = 0;
  712. CPythonAdmin::TItemInfo* pInfo = CPythonAdmin::Instance().Item_GetInfoByIndex(iIndex, dwItemID);
  713.  
  714. if (!dwItemID)
  715. return Py_BuildValue("ii", 0, 0);
  716. else
  717. return Py_BuildValue("ii", pInfo, dwItemID);
  718. }
  719.  
  720. PyObject * adminGetItemInfoByID(PyObject * poSelf, PyObject * poArgs)
  721. {
  722. int iID;
  723. if (!PyTuple_GetInteger(poArgs, 0, &iID))
  724. return Py_BadArgument();
  725.  
  726. CPythonAdmin::TItemInfo* pInfo = CPythonAdmin::Instance().Item_GetInfoByID(iID);
  727.  
  728. if (!pInfo)
  729. return Py_BuildValue("i", 0);
  730. else
  731. return Py_BuildValue("i", pInfo);
  732. }
  733.  
  734. PyObject * adminGetItemMainInfo(PyObject * poSelf, PyObject * poArgs)
  735. {
  736. int iInfoPtr;
  737. if (!PyTuple_GetInteger(poArgs, 0, &iInfoPtr))
  738. return Py_BadArgument();
  739.  
  740. CPythonAdmin::TItemInfo* pInfo = (CPythonAdmin::TItemInfo*) iInfoPtr;
  741. return Py_BuildValue("iisiiiib", pInfo->bOwnerType, pInfo->dwOwnerID, pInfo->stOwnerName.c_str(), pInfo->kCell.window_type,
  742. pInfo->kCell.cell, pInfo->dwItemVnum, pInfo->bCount, pInfo->bIsGMItem);
  743. }
  744.  
  745. PyObject * adminGetItemSocket(PyObject * poSelf, PyObject * poArgs)
  746. {
  747. int iInfoPtr;
  748. if (!PyTuple_GetInteger(poArgs, 0, &iInfoPtr))
  749. return Py_BadArgument();
  750. int iSocketIndex;
  751. if (!PyTuple_GetInteger(poArgs, 1, &iSocketIndex))
  752. return Py_BadArgument();
  753.  
  754. CPythonAdmin::TItemInfo* pInfo = (CPythonAdmin::TItemInfo*) iInfoPtr;
  755. return Py_BuildValue("i", pInfo->alSockets[iSocketIndex]);
  756. }
  757.  
  758. PyObject * adminGetItemAttribute(PyObject * poSelf, PyObject * poArgs)
  759. {
  760. int iInfoPtr;
  761. if (!PyTuple_GetInteger(poArgs, 0, &iInfoPtr))
  762. return Py_BadArgument();
  763. int iAttributeIndex;
  764. if (!PyTuple_GetInteger(poArgs, 1, &iAttributeIndex))
  765. return Py_BadArgument();
  766.  
  767. CPythonAdmin::TItemInfo* pInfo = (CPythonAdmin::TItemInfo*) iInfoPtr;
  768. return Py_BuildValue("ii", pInfo->aAttr[iAttributeIndex].bType, pInfo->aAttr[iAttributeIndex].sValue);
  769. }
  770.  
  771. PyObject * adminSearchItemInfo(PyObject * poSelf, PyObject * poArgs)
  772. {
  773. BYTE bSearchType;
  774. if (!PyTuple_GetByte(poArgs, 0, &bSearchType))
  775. return Py_BadArgument();
  776. char* szSearchData;
  777. if (!PyTuple_GetString(poArgs, 1, &szSearchData))
  778. return Py_BadArgument();
  779. int iDataLen = strlen(szSearchData);
  780.  
  781. CPythonNetworkStream::Instance().SendAdminManagerHead(ADMIN_MANAGER_CG_SUBHEADER_ITEM_SEARCH);
  782. CPythonNetworkStream::Instance().Send(sizeof(BYTE), &bSearchType);
  783. CPythonNetworkStream::Instance().Send(sizeof(int), &iDataLen);
  784. CPythonNetworkStream::Instance().Send(iDataLen, szSearchData);
  785. CPythonNetworkStream::instance().SendSequence();
  786.  
  787. return Py_BuildNone();
  788. }
  789.  
  790. void initAdmin()
  791. {
  792. static PyMethodDef s_methods[] =
  793. {
  794. { "CanOpenWindow", adminCanOpenWindow, METH_VARARGS },
  795.  
  796. { "HasAllow", adminHasAllow, METH_VARARGS },
  797.  
  798. { "GetOnlinePlayerCount", adminGetOnlinePlayerCount, METH_VARARGS },
  799. { "GetOnlinePlayerByIndex", adminGetOnlinePlayerByIndex, METH_VARARGS },
  800. { "GetOnlinePlayerByPID", adminGetOnlinePlayerByPID, METH_VARARGS },
  801. { "SortOnlinePlayer", adminSortOnlinePlayer, METH_VARARGS },
  802. { "GetOnlinePlayerSortType", adminGetOnlinePlayerSortType, METH_VARARGS },
  803. { "GetOnlinePlayerSortDir", adminGetOnlinePlayerSortDirection, METH_VARARGS },
  804. { "GetSortOnlinePlayerByIndex", adminGetSortOnlinePlayerByIndex, METH_VARARGS },
  805. { "IsOnlinePlayerSorted", adminIsOnlinePlayerSorted, METH_VARARGS },
  806. { "IsGMItemTradeBlock", adminIsGMItemTradeBlock, METH_VARARGS },
  807.  
  808. { "StartMapViewer", adminStartMapViewer, METH_VARARGS },
  809. { "StopMapViewer", adminStopMapViewer, METH_VARARGS },
  810. { "GetMapViewerBaseX", adminGetMapViewerBaseX, METH_VARARGS },
  811. { "GetMapViewerBaseY", adminGetMapViewerBaseY, METH_VARARGS },
  812.  
  813. { "StartObserver", adminStartObserver, METH_VARARGS },
  814. { "StopObserver", adminStopObserver, METH_VARARGS },
  815. { "IsObserverRunning", adminIsObserverRunning, METH_VARARGS },
  816. { "IsObserverStopForced", adminIsObserverStopForced, METH_VARARGS },
  817. { "GetObserverPID", adminGetObserverPID, METH_VARARGS },
  818. { "GetObserverAID", adminGetObserverAID, METH_VARARGS },
  819. { "GetObserverLoginName", adminGetObserverLoginName, METH_VARARGS },
  820. { "GetObserverRaceNum", adminGetObserverRaceNum, METH_VARARGS },
  821. { "GetObserverMapName", adminGetObserverMapName, METH_VARARGS },
  822. { "GetObserverSkillGroup", adminGetObserverSkillGroup, METH_VARARGS },
  823. { "GetObserverSkillLevel", adminGetObserverSkillLevel, METH_VARARGS },
  824. { "GetObserverSkillMasterType", adminGetObserverSkillMasterType, METH_VARARGS },
  825. { "GetObserverSkillCoolTime", adminGetObserverSkillCoolTime, METH_VARARGS },
  826. { "GetObserverESkillCoolTime", adminGetObserverESkillCoolTime, METH_VARARGS },
  827. { "GetObserverPoint", adminGetObserverPoint, METH_VARARGS },
  828. { "GetObserverItem", adminGetObserverItem, METH_VARARGS },
  829. { "GetObserverItemSocket", adminGetObserverItemSocket, METH_VARARGS },
  830. { "GetObserverItemAttr", adminGetObserverItemAttr, METH_VARARGS },
  831. { "GetObserverWhisperDlgCount", adminGetObserverWhisperDlgCount, METH_VARARGS },
  832. { "GetObserverWhisperPIDByIdx", adminGetObserverWhisperPIDByIdx, METH_VARARGS },
  833. { "GetObserverWhisperName", adminGetObserverWhisperName, METH_VARARGS },
  834. { "GetObserverWhisperMsgCount", adminGetObserverWhisperMsgCount, METH_VARARGS },
  835. { "GetObserverWhisperMsg", adminGetObserverWhisperMsg, METH_VARARGS },
  836. { "GetObserverChatBanTimeLeft", adminGetObserverChatBanTimeLeft, METH_VARARGS },
  837. { "GetObserverAccountBanTimeLeft", adminGetObserverAccountBanTimeLeft, METH_VARARGS },
  838.  
  839. { "GetBanChatPlayerCount", adminGetBanChatPlayerCount, METH_VARARGS },
  840. { "GetBanChatPlayerByIndex", adminGetBanChatPlayerByIndex, METH_VARARGS },
  841. { "GetBanChatPlayerByPID", adminGetBanChatPlayerByPID, METH_VARARGS },
  842. { "GetBanChatPlayerPIDByName", adminGetBanChatPlayerPIDByName, METH_VARARGS },
  843. { "GetBanChatSearchResultPID", adminGetBanChatSearchResultPID, METH_VARARGS },
  844. { "SetBanChatSearchResultPID", adminSetBanChatSearchResultPID, METH_VARARGS },
  845. { "SearchBanChatPlayer", adminSearchBanChatPlayer, METH_VARARGS },
  846. { "GetBanAccountCount", adminGetBanAccountCount, METH_VARARGS },
  847. { "GetBanAccountByIndex", adminGetBanAccountByIndex, METH_VARARGS },
  848. { "GetBanAccountByAID", adminGetBanAccountByAID, METH_VARARGS },
  849. { "GetBanAccountAIDByName", adminGetBanAccountAIDByName, METH_VARARGS },
  850. { "GetBanAccountAIDByPlayerName", adminGetBanAccountAIDByPlayerName, METH_VARARGS },
  851. { "GetBanAccountAIDByPID", adminGetBanAccountAIDByPID, METH_VARARGS },
  852. { "GetBanAccountPlayer", adminGetBanAccountPlayer, METH_VARARGS },
  853. { "GetBanAccountSearchResultAID", adminGetBanAccountSearchResultAID, METH_VARARGS },
  854. { "SetBanAccountSearchResultAID", adminSetBanAccountSearchResultAID, METH_VARARGS },
  855. { "SearchBanAccount", adminSearchBanAccount, METH_VARARGS },
  856. { "BanAccount", adminBanAccount, METH_VARARGS },
  857. { "GetBanLogInfoCount", adminGetBanLogInfoCount, METH_VARARGS },
  858. { "GetBanLogInfo", adminGetBanLogInfo, METH_VARARGS },
  859. { "GetBanLogInfoType", adminGetLogInfoType, METH_VARARGS },
  860. { "RequestBanLogInfo", adminRequestBanLogInfo, METH_VARARGS },
  861.  
  862. { "GetItemInfoCount", adminGetItemInfoCount, METH_VARARGS },
  863. { "GetItemInfoByIndex", adminGetItemInfoByIndex, METH_VARARGS },
  864. { "GetItemInfoByID", adminGetItemInfoByID, METH_VARARGS },
  865. { "GetItemMainInfo", adminGetItemMainInfo, METH_VARARGS },
  866. { "GetItemSocket", adminGetItemSocket, METH_VARARGS },
  867. { "GetItemAttribute", adminGetItemAttribute, METH_VARARGS },
  868. { "SearchItemInfo", adminSearchItemInfo, METH_VARARGS },
  869.  
  870. { NULL, NULL, NULL },
  871. };
  872.  
  873. PyObject * poModule = Py_InitModule("admin", s_methods);
  874.  
  875. PyModule_AddIntConstant(poModule, "GENERAL_ONLINE_PLAYER_SORT_BY_PID", CPythonAdmin::GENERAL_ONLINE_PLAYER_SORT_BY_PID);
  876. PyModule_AddIntConstant(poModule, "GENERAL_ONLINE_PLAYER_SORT_BY_NAME", CPythonAdmin::GENERAL_ONLINE_PLAYER_SORT_BY_NAME);
  877. PyModule_AddIntConstant(poModule, "GENERAL_ONLINE_PLAYER_SORT_BY_MAP_INDEX", CPythonAdmin::GENERAL_ONLINE_PLAYER_SORT_BY_MAP_INDEX);
  878. PyModule_AddIntConstant(poModule, "GENERAL_ONLINE_PLAYER_SORT_BY_CHANNEL", CPythonAdmin::GENERAL_ONLINE_PLAYER_SORT_BY_CHANNEL);
  879. PyModule_AddIntConstant(poModule, "GENERAL_ONLINE_PLAYER_SORT_BY_EMPIRE", CPythonAdmin::GENERAL_ONLINE_PLAYER_SORT_BY_EMPIRE);
  880.  
  881. PyModule_AddIntConstant(poModule, "ALLOW_VIEW_ONLINE_LIST", CPythonAdmin::ALLOW_VIEW_ONLINE_LIST);
  882. PyModule_AddIntConstant(poModule, "ALLOW_VIEW_ONLINE_COUNT", CPythonAdmin::ALLOW_VIEW_ONLINE_COUNT);
  883. PyModule_AddIntConstant(poModule, "ALLOW_GM_TRADE_BLOCK_OPTION", CPythonAdmin::ALLOW_GM_TRADE_BLOCK_OPTION);
  884. PyModule_AddIntConstant(poModule, "ALLOW_MAPVIEWER", CPythonAdmin::ALLOW_MAPVIEWER);
  885. PyModule_AddIntConstant(poModule, "ALLOW_VIEW_MAPVIEWER_NPC", CPythonAdmin::ALLOW_VIEW_MAPVIEWER_NPC);
  886. PyModule_AddIntConstant(poModule, "ALLOW_VIEW_MAPVIEWER_STONE", CPythonAdmin::ALLOW_VIEW_MAPVIEWER_STONE);
  887. PyModule_AddIntConstant(poModule, "ALLOW_VIEW_MAPVIEWER_MONSTER", CPythonAdmin::ALLOW_VIEW_MAPVIEWER_MONSTER);
  888. PyModule_AddIntConstant(poModule, "ALLOW_VIEW_MAPVIEWER_PLAYER", CPythonAdmin::ALLOW_VIEW_MAPVIEWER_PLAYER);
  889. PyModule_AddIntConstant(poModule, "ALLOW_OBSERVER", CPythonAdmin::ALLOW_OBSERVER);
  890. PyModule_AddIntConstant(poModule, "ALLOW_VIEW_OBSERVER_GOLD", CPythonAdmin::ALLOW_VIEW_OBSERVER_GOLD);
  891. PyModule_AddIntConstant(poModule, "ALLOW_VIEW_OBSERVER_SKILL", CPythonAdmin::ALLOW_VIEW_OBSERVER_SKILL);
  892. PyModule_AddIntConstant(poModule, "ALLOW_VIEW_OBSERVER_EQUIPMENT", CPythonAdmin::ALLOW_VIEW_OBSERVER_EQUIPMENT);
  893. PyModule_AddIntConstant(poModule, "ALLOW_VIEW_OBSERVER_INVENTORY", CPythonAdmin::ALLOW_VIEW_OBSERVER_INVENTORY);
  894. PyModule_AddIntConstant(poModule, "ALLOW_VIEW_OBSERVER_WHISPER", CPythonAdmin::ALLOW_VIEW_OBSERVER_WHISPER);
  895. PyModule_AddIntConstant(poModule, "ALLOW_OBSERVER_CHATBAN", CPythonAdmin::ALLOW_OBSERVER_CHATBAN);
  896. PyModule_AddIntConstant(poModule, "ALLOW_OBSERVER_ACCOUNTBAN", CPythonAdmin::ALLOW_OBSERVER_ACCOUNTBAN);
  897. PyModule_AddIntConstant(poModule, "ALLOW_OBSERVER_PERMA_ACCOUNTBAN", CPythonAdmin::ALLOW_OBSERVER_PERMA_ACCOUNTBAN);
  898. PyModule_AddIntConstant(poModule, "ALLOW_BAN", CPythonAdmin::ALLOW_BAN);
  899. PyModule_AddIntConstant(poModule, "ALLOW_VIEW_BAN_CHAT", CPythonAdmin::ALLOW_VIEW_BAN_CHAT);
  900. PyModule_AddIntConstant(poModule, "ALLOW_VIEW_BAN_CHAT_LOG", CPythonAdmin::ALLOW_VIEW_BAN_CHAT_LOG);
  901. PyModule_AddIntConstant(poModule, "ALLOW_BAN_CHAT", CPythonAdmin::ALLOW_BAN_CHAT);
  902.  
  903. PyModule_AddIntConstant(poModule, "BAN_TYPE_CHAT", CPythonAdmin::BAN_TYPE_CHAT);
  904. PyModule_AddIntConstant(poModule, "BAN_TYPE_ACCOUNT", CPythonAdmin::BAN_TYPE_ACCOUNT);
  905.  
  906. PyModule_AddIntConstant(poModule, "BAN_ACCOUNT_SEARCH_ACCOUNT", CPythonAdmin::BAN_ACCOUNT_SEARCH_ACCOUNT);
  907. PyModule_AddIntConstant(poModule, "BAN_ACCOUNT_SEARCH_PLAYER", CPythonAdmin::BAN_ACCOUNT_SEARCH_PLAYER);
  908. PyModule_AddIntConstant(poModule, "BAN_ACCOUNT_SEARCH_MAX_NUM", CPythonAdmin::BAN_ACCOUNT_SEARCH_MAX_NUM);
  909.  
  910. PyModule_AddIntConstant(poModule, "ITEM_OWNER_PLAYER", CPythonAdmin::ITEM_OWNER_PLAYER);
  911. PyModule_AddIntConstant(poModule, "ITEM_OWNER_ACCOUNT", CPythonAdmin::ITEM_OWNER_ACCOUNT);
  912.  
  913. PyModule_AddIntConstant(poModule, "ITEM_SEARCH_IID", CPythonAdmin::ITEM_SEARCH_IID);
  914. PyModule_AddIntConstant(poModule, "ITEM_SEARCH_INAME", CPythonAdmin::ITEM_SEARCH_INAME);
  915. PyModule_AddIntConstant(poModule, "ITEM_SEARCH_PID", CPythonAdmin::ITEM_SEARCH_PID);
  916. PyModule_AddIntConstant(poModule, "ITEM_SEARCH_PNAME", CPythonAdmin::ITEM_SEARCH_PNAME);
  917. PyModule_AddIntConstant(poModule, "ITEM_SEARCH_GM_ITEM", CPythonAdmin::ITEM_SEARCH_GM_ITEM);
  918. }
  919. #endif
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement