1. #include "StdAfx.h"
  2. #include "PythonNetworkStream.h"
  3. //#include "PythonNetworkDatagram.h"
  4. #include "AccountConnector.h"
  5. #include "PythonGuild.h"
  6. #include "Test.h"
  7. #include "AbstractPlayer.h"
  8. static std::string gs_stServerInfo;
  9. extern BOOL gs_bEmpireLanuageEnable;
  10. std::list<std::string> g_kList_strCommand;
  11. #ifdef ENABLE_SERVERINFO_MY_CLIENT
  12. static const char* ServerIPVName[2][2] = {
  13. {"185.248.59.113", "Metin2"},
  14. {"192.168.1.7", "Metin2 Beta"}
  15. };
  16. static unsigned int ServerPORT[] = {{13010},{14010},{15010},{16010},{17010},{18010},{11055},{13010}};
  17. PyObject* netGetServer_IPNAME(PyObject* poSelf, PyObject* poArgs)
  18. {
  19. return Py_BuildValue("ssss",
  20. ServerIPVName[0][0], ServerIPVName[0][1],
  21. ServerIPVName[1][0], ServerIPVName[1][1]
  22. );
  23. }
  24. PyObject* netGetServer_PORT(PyObject* poSelf, PyObject* poArgs)
  25. {
  26. return Py_BuildValue("iiiiiiii", ServerPORT[0],ServerPORT[1],ServerPORT[2],ServerPORT[3],ServerPORT[4],ServerPORT[5],ServerPORT[6],ServerPORT[7]);
  27. }
  28. #endif
  29. PyObject* netGetBettingGuildWarValue(PyObject* poSelf, PyObject* poArgs)
  30. {
  31. char* szName;
  32. if (!PyTuple_GetString(poArgs, 0, &szName))
  33. return Py_BuildException();
  34. CPythonNetworkStream& rkNetStream=CPythonNetworkStream::Instance();
  35. return Py_BuildValue("i", rkNetStream.EXPORT_GetBettingGuildWarValue(szName));
  36. }
  37. PyObject* netSetServerInfo(PyObject* poSelf, PyObject* poArgs)
  38. {
  39. char* szFileName;
  40. if (!PyTuple_GetString(poArgs, 0, &szFileName))
  41. return Py_BuildException();
  42. gs_stServerInfo=szFileName;
  43. return Py_BuildNone();
  44. }
  45. PyObject* netGetServerInfo(PyObject* poSelf, PyObject* poArgs)
  46. {
  47. return Py_BuildValue("s", gs_stServerInfo.c_str());
  48. }
  49. PyObject* netPreserveServerCommand(PyObject* poSelf, PyObject* poArgs)
  50. {
  51. char* szLine;
  52. if (!PyTuple_GetString(poArgs, 0, &szLine))
  53. return Py_BuildException();
  54. g_kList_strCommand.push_back(szLine);
  55. return Py_BuildNone();
  56. }
  57. PyObject* netGetPreservedServerCommand(PyObject* poSelf, PyObject* poArgs)
  58. {
  59. if (g_kList_strCommand.empty())
  60. return Py_BuildValue("s", "");
  61. std::string strCommand = g_kList_strCommand.front();
  62. g_kList_strCommand.pop_front();
  63. return Py_BuildValue("s", strCommand.c_str());
  64. }
  65. PyObject* netStartGame(PyObject* poSelf, PyObject* poArgs)
  66. {
  67. CPythonNetworkStream& rkNetStream=CPythonNetworkStream::Instance();
  68. rkNetStream.StartGame();
  69. return Py_BuildNone();
  70. }
  71. PyObject* netIsTest(PyObject* poSelf, PyObject* poArgs)
  72. {
  73. return Py_BuildValue("i", __IS_TEST_SERVER_MODE__);
  74. }
  75. PyObject* netWarp(PyObject* poSelf, PyObject* poArgs)
  76. {
  77. int nX;
  78. if (!PyTuple_GetInteger(poArgs, 0, &nX))
  79. return Py_BuildException();
  80. int nY;
  81. if (!PyTuple_GetInteger(poArgs, 1, &nY))
  82. return Py_BuildException();
  83. CPythonNetworkStream& rkNetStream=CPythonNetworkStream::Instance();
  84. rkNetStream.Warp(nX, nY);
  85. return Py_BuildNone();
  86. }
  87. PyObject* netLoadInsultList(PyObject* poSelf, PyObject* poArgs)
  88. {
  89. char* szFileName;
  90. if (!PyTuple_GetString(poArgs, 0, &szFileName))
  91. return Py_BuildException();
  92. CPythonNetworkStream& rkNetStream=CPythonNetworkStream::Instance();
  93. return Py_BuildValue("i", rkNetStream.LoadInsultList(szFileName));
  94. }
  95. PyObject* netUploadMark(PyObject* poSelf, PyObject* poArgs)
  96. {
  97. char* szFileName;
  98. if (!PyTuple_GetString(poArgs, 0, &szFileName))
  99. return Py_BuildException();
  100. CPythonNetworkStream& rkNetStream=CPythonNetworkStream::Instance();
  101. return Py_BuildValue("i", rkNetStream.UploadMark(szFileName));
  102. }
  103. PyObject* netUploadSymbol(PyObject* poSelf, PyObject* poArgs)
  104. {
  105. char* szFileName;
  106. if (!PyTuple_GetString(poArgs, 0, &szFileName))
  107. return Py_BuildException();
  108. CPythonNetworkStream& rkNetStream=CPythonNetworkStream::Instance();
  109. return Py_BuildValue("i", rkNetStream.UploadSymbol(szFileName));
  110. }
  111. PyObject* netGetGuildID(PyObject* poSelf, PyObject* poArgs)
  112. {
  113. CPythonNetworkStream& rkNetStream=CPythonNetworkStream::Instance();
  114. return Py_BuildValue("i", rkNetStream.GetGuildID());
  115. }
  116. PyObject* netGetEmpireID(PyObject* poSelf, PyObject* poArgs)
  117. {
  118. CPythonNetworkStream& rkNetStream=CPythonNetworkStream::Instance();
  119. return Py_BuildValue("i", rkNetStream.GetEmpireID());
  120. }
  121. PyObject* netGetMainActorVID(PyObject* poSelf, PyObject* poArgs)
  122. {
  123. CPythonNetworkStream& rkNetStream=CPythonNetworkStream::Instance();
  124. return Py_BuildValue("i", rkNetStream.GetMainActorVID());
  125. }
  126. PyObject* netGetMainActorRace(PyObject* poSelf, PyObject* poArgs)
  127. {
  128. CPythonNetworkStream& rkNetStream=CPythonNetworkStream::Instance();
  129. return Py_BuildValue("i", rkNetStream.GetMainActorRace());
  130. }
  131. PyObject* netGetMainActorEmpire(PyObject* poSelf, PyObject* poArgs)
  132. {
  133. CPythonNetworkStream& rkNetStream=CPythonNetworkStream::Instance();
  134. return Py_BuildValue("i", rkNetStream.GetMainActorEmpire());
  135. }
  136. PyObject* netGetMainActorSkillGroup(PyObject* poSelf, PyObject* poArgs)
  137. {
  138. CPythonNetworkStream& rkNetStream=CPythonNetworkStream::Instance();
  139. return Py_BuildValue("i", rkNetStream.GetMainActorSkillGroup());
  140. }
  141. PyObject* netIsSelectedEmpire(PyObject* poSelf, PyObject* poArgs)
  142. {
  143. CPythonNetworkStream& rkNetStream=CPythonNetworkStream::Instance();
  144. return Py_BuildValue("i", rkNetStream.IsSelectedEmpire());
  145. }
  146. PyObject* netGetAccountCharacterSlotDataInteger(PyObject* poSelf, PyObject* poArgs)
  147. {
  148. int nIndex;
  149. if (!PyTuple_GetInteger(poArgs, 0, &nIndex))
  150. return Py_BuildException();
  151. int nType;
  152. if (!PyTuple_GetInteger(poArgs, 1, &nType))
  153. return Py_BuildException();
  154. CPythonNetworkStream& rkNetStream=CPythonNetworkStream::Instance();
  155. UINT uResult=rkNetStream.GetAccountCharacterSlotDatau(nIndex, nType);
  156. return Py_BuildValue("i", uResult);
  157. }
  158. PyObject* netGetAccountCharacterSlotDataString(PyObject* poSelf, PyObject* poArgs)
  159. {
  160. int nIndex;
  161. if (!PyTuple_GetInteger(poArgs, 0, &nIndex))
  162. return Py_BuildException();
  163. int nType;
  164. if (!PyTuple_GetInteger(poArgs, 1, &nType))
  165. return Py_BuildException();
  166. CPythonNetworkStream& rkNetStream=CPythonNetworkStream::Instance();
  167. return Py_BuildValue("s", rkNetStream.GetAccountCharacterSlotDataz(nIndex, nType));
  168. }
  169. // SUPPORT_BGM
  170. PyObject* netGetFieldMusicFileName(PyObject* poSelf, PyObject* poArgs)
  171. {
  172. CPythonNetworkStream& rkNetStream=CPythonNetworkStream::Instance();
  173. return Py_BuildValue("s", rkNetStream.GetFieldMusicFileName());
  174. }
  175. PyObject* netGetFieldMusicVolume(PyObject* poSelf, PyObject* poArgs)
  176. {
  177. CPythonNetworkStream& rkNetStream=CPythonNetworkStream::Instance();
  178. return Py_BuildValue("f", rkNetStream.GetFieldMusicVolume());
  179. }
  180. // END_OF_SUPPORT_BGM
  181. PyObject* netSetPhaseWindow(PyObject* poSelf, PyObject* poArgs)
  182. {
  183. int ePhaseWnd;
  184. if (!PyTuple_GetInteger(poArgs, 0, &ePhaseWnd))
  185. return Py_BuildException();
  186. PyObject* poPhaseWnd;
  187. if (!PyTuple_GetObject(poArgs, 1, &poPhaseWnd))
  188. return Py_BuildException();
  189. CPythonNetworkStream& rkNetStream=CPythonNetworkStream::Instance();
  190. rkNetStream.SetPhaseWindow(ePhaseWnd, poPhaseWnd);
  191. return Py_BuildNone();
  192. }
  193. PyObject* netClearPhaseWindow(PyObject* poSelf, PyObject* poArgs)
  194. {
  195. int ePhaseWnd;
  196. if (!PyTuple_GetInteger(poArgs, 0, &ePhaseWnd))
  197. return Py_BuildException();
  198. PyObject* poPhaseWnd;
  199. if (!PyTuple_GetObject(poArgs, 1, &poPhaseWnd))
  200. return Py_BuildException();
  201. CPythonNetworkStream& rkNetStream=CPythonNetworkStream::Instance();
  202. rkNetStream.ClearPhaseWindow(ePhaseWnd, poPhaseWnd);
  203. return Py_BuildNone();
  204. }
  205. PyObject* netSetServerCommandParserWindow(PyObject* poSelf, PyObject* poArgs)
  206. {
  207. PyObject* poPhaseWnd;
  208. if (!PyTuple_GetObject(poArgs, 0, &poPhaseWnd))
  209. return Py_BuildException();
  210. CPythonNetworkStream& rkNetStream=CPythonNetworkStream::Instance();
  211. rkNetStream.SetServerCommandParserWindow(poPhaseWnd);
  212. return Py_BuildNone();
  213. }
  214. PyObject* netSetAccountConnectorHandler(PyObject* poSelf, PyObject* poArgs)
  215. {
  216. PyObject* poPhaseWnd;
  217. if (!PyTuple_GetObject(poArgs, 0, &poPhaseWnd))
  218. return Py_BuildException();
  219. CAccountConnector & rkAccountConnector = CAccountConnector::Instance();
  220. rkAccountConnector.SetHandler(poPhaseWnd);
  221. return Py_BuildNone();
  222. }
  223. PyObject* netSetHandler(PyObject* poSelf, PyObject* poArgs)
  224. {
  225. PyObject* poHandler;
  226. if (!PyTuple_GetObject(poArgs, 0, &poHandler))
  227. return Py_BuildException();
  228. CPythonNetworkStream& rkNetStream=CPythonNetworkStream::Instance();
  229. rkNetStream.SetHandler(poHandler);
  230. return Py_BuildNone();
  231. }
  232. PyObject* netSetTCPRecvBufferSize(PyObject* poSelf, PyObject* poArgs)
  233. {
  234. int bufSize;
  235. if (!PyTuple_GetInteger(poArgs, 0, &bufSize))
  236. return Py_BuildException();
  237. CPythonNetworkStream& rkNetStream=CPythonNetworkStream::Instance();
  238. rkNetStream.SetRecvBufferSize(bufSize);
  239. return Py_BuildNone();
  240. }
  241. PyObject* netSetTCPSendBufferSize(PyObject* poSelf, PyObject* poArgs)
  242. {
  243. int bufSize;
  244. if (!PyTuple_GetInteger(poArgs, 0, &bufSize))
  245. return Py_BuildException();
  246. CPythonNetworkStream& rkNetStream=CPythonNetworkStream::Instance();
  247. rkNetStream.SetSendBufferSize(bufSize);
  248. return Py_BuildNone();
  249. }
  250. PyObject* netSetUDPRecvBufferSize(PyObject* poSelf, PyObject* poArgs)
  251. {
  252. int bufSize;
  253. if (!PyTuple_GetInteger(poArgs, 0, &bufSize))
  254. return Py_BuildException();
  255. //CPythonNetworkDatagram::Instance().SetRecvBufferSize(bufSize);
  256. return Py_BuildNone();
  257. }
  258. PyObject* netSetMarkServer(PyObject* poSelf, PyObject* poArgs)
  259. {
  260. char* szAddr;
  261. if (!PyTuple_GetString(poArgs, 0, &szAddr))
  262. return Py_BuildException();
  263. int port;
  264. if (!PyTuple_GetInteger(poArgs, 1, &port))
  265. return Py_BuildException();
  266. CPythonNetworkStream& rkNetStream=CPythonNetworkStream::Instance();
  267. rkNetStream.SetMarkServer(szAddr, port);
  268. return Py_BuildNone();
  269. }
  270. PyObject* netConnectTCP(PyObject* poSelf, PyObject* poArgs)
  271. {
  272. char* szAddr;
  273. if (!PyTuple_GetString(poArgs, 0, &szAddr))
  274. return Py_BuildException();
  275. int port;
  276. if (!PyTuple_GetInteger(poArgs, 1, &port))
  277. return Py_BuildException();
  278. CPythonNetworkStream& rkNetStream=CPythonNetworkStream::Instance();
  279. rkNetStream.ConnectLoginServer(szAddr, port);
  280. return Py_BuildNone();
  281. }
  282. PyObject* netConnectUDP(PyObject* poSelf, PyObject* poArgs)
  283. {
  284. char * c_szIP;
  285. if (!PyTuple_GetString(poArgs, 0, &c_szIP))
  286. return Py_BuildException();
  287. int iPort;
  288. if (!PyTuple_GetInteger(poArgs, 1, &iPort))
  289. return Py_BuildException();
  290. //CPythonNetworkDatagram::Instance().SetConnection(c_szIP, iPort);
  291. return Py_BuildNone();
  292. }
  293. PyObject* netConnectToAccountServer(PyObject* poSelf, PyObject* poArgs)
  294. {
  295. char* addr;
  296. if (!PyTuple_GetString(poArgs, 0, &addr))
  297. return Py_BuildException();
  298. int port;
  299. if (!PyTuple_GetInteger(poArgs, 1, &port))
  300. return Py_BuildException();
  301. char* account_addr;
  302. if (!PyTuple_GetString(poArgs, 2, &account_addr))
  303. return Py_BuildException();
  304. int account_port;
  305. if (!PyTuple_GetInteger(poArgs, 3, &account_port))
  306. return Py_BuildException();
  307. CAccountConnector & rkAccountConnector = CAccountConnector::Instance();
  308. rkAccountConnector.Connect(addr, port, account_addr, account_port);
  309. return Py_BuildNone();
  310. }
  311. #ifdef ENABLE_SEND_TARGET_INFO
  312. PyObject* netTargetInfoLoad(PyObject* poSelf, PyObject* poArgs)
  313. {
  314. DWORD dwVID;
  315. if (!PyArg_ParseTuple(poArgs, "i", &dwVID))
  316. {
  317. return Py_BuildException();
  318. }
  319. if (dwVID < 0)
  320. {
  321. return Py_BuildNone();
  322. }
  323. CPythonNetworkStream& rns = CPythonNetworkStream::Instance();
  324. rns.SendTargetInfoLoadPacket(dwVID);
  325. return Py_BuildNone();
  326. }
  327. #endif
  328. ///////////////////////////////////////////////////////////////////////////////////////////////////
  329. PyObject* netSetLoginInfo(PyObject* poSelf, PyObject* poArgs)
  330. {
  331. char* szName;
  332. if (!PyTuple_GetString(poArgs, 0, &szName))
  333. return Py_BuildException();
  334. char* szPwd;
  335. if (!PyTuple_GetString(poArgs, 1, &szPwd))
  336. return Py_BuildException();
  337. #ifdef ENABLE_CHECK_CLIENT_VERSION_SERVER_AND_PIN
  338. char* szClientVersion;
  339. if (!PyTuple_GetString(poArgs, 2, &szClientVersion))
  340. return Py_BuildException();
  341. char* szPin;
  342. if (!PyTuple_GetString(poArgs, 3, &szPin))
  343. return Py_BuildException();
  344. #endif
  345. CPythonNetworkStream& rkNetStream=CPythonNetworkStream::Instance();
  346. CAccountConnector & rkAccountConnector = CAccountConnector::Instance();
  347. #ifdef ENABLE_CHECK_CLIENT_VERSION_SERVER_AND_PIN
  348. rkNetStream.SetLoginInfo(szName, szPwd, szClientVersion, szPin);
  349. rkAccountConnector.SetLoginInfo(szName, szPwd, szClientVersion, szPin);
  350. #else
  351. rkNetStream.SetLoginInfo(szName, szPwd);
  352. rkAccountConnector.SetLoginInfo(szName, szPwd);
  353. #endif
  354. return Py_BuildNone();
  355. }
  356. PyObject* netSetGuvenli(PyObject* poSelf, PyObject* poArgs)
  357. {
  358. int iGuvenli;
  359. if (!PyTuple_GetInteger(poArgs, 0, &iGuvenli))
  360. return Py_BuildException();
  361. CAccountConnector & rkAccountConnector = CAccountConnector::Instance();
  362. rkAccountConnector.SetGuvenli(iGuvenli);
  363. return Py_BuildNone();
  364. }
  365. #ifdef OFFICIAL_KARAKTER_NAME_FIX
  366. PyObject* netGetLoginID(PyObject* poSelf, PyObject* poArgs)
  367. {
  368. CPythonNetworkStream& rkNetStream=CPythonNetworkStream::Instance();
  369. return Py_BuildValue("s", rkNetStream.GetLoginID().c_str());
  370. }
  371. #endif
  372. PyObject* netSetOfflinePhase(PyObject* poSelf, PyObject* poArgs)
  373. {
  374. CPythonNetworkStream& rkNetStream=CPythonNetworkStream::Instance();
  375. rkNetStream.SetOffLinePhase();
  376. return Py_BuildNone();
  377. }
  378. PyObject* netSendSelectEmpirePacket(PyObject* poSelf, PyObject* poArgs)
  379. {
  380. int iEmpireIndex;
  381. if (!PyTuple_GetInteger(poArgs, 0, &iEmpireIndex))
  382. return Py_BuildException();
  383. CPythonNetworkStream& rkNetStream=CPythonNetworkStream::Instance();
  384. rkNetStream.SendSelectEmpirePacket(iEmpireIndex);
  385. return Py_BuildNone();
  386. }
  387. PyObject* netSendLoginPacket(PyObject* poSelf, PyObject* poArgs)
  388. {
  389. char* szName;
  390. if (!PyTuple_GetString(poArgs, 0, &szName))
  391. return Py_BuildException();
  392. char* szPwd;
  393. if (!PyTuple_GetString(poArgs, 1, &szPwd))
  394. return Py_BuildException();
  395. CPythonNetworkStream& rkNetStream=CPythonNetworkStream::Instance();
  396. rkNetStream.SendLoginPacket(szName, szPwd);
  397. return Py_BuildNone();
  398. }
  399. PyObject* netDirectEnter(PyObject* poSelf, PyObject* poArgs)
  400. {
  401. int nChrSlot;
  402. if (!PyTuple_GetInteger(poArgs, 0, &nChrSlot))
  403. return Py_BuildException();
  404. CPythonNetworkStream& rkNetStream=CPythonNetworkStream::Instance();
  405. rkNetStream.ConnectGameServer(nChrSlot);
  406. return Py_BuildNone();
  407. }
  408. PyObject* netSendSelectCharacterPacket(PyObject* poSelf, PyObject* poArgs)
  409. {
  410. int Index;
  411. if (!PyTuple_GetInteger(poArgs, 0, &Index))
  412. return Py_BuildException();
  413. CPythonNetworkStream& rkNetStream=CPythonNetworkStream::Instance();
  414. rkNetStream.SendSelectCharacterPacket((BYTE) Index);
  415. return Py_BuildNone();
  416. }
  417. PyObject* netSendChangeNamePacket(PyObject* poSelf, PyObject* poArgs)
  418. {
  419. int iIndex;
  420. if (!PyTuple_GetInteger(poArgs, 0, &iIndex))
  421. return Py_BuildException();
  422. char* szName;
  423. if (!PyTuple_GetString(poArgs, 1, &szName))
  424. return Py_BuildException();
  425. CPythonNetworkStream& rkNetStream=CPythonNetworkStream::Instance();
  426. rkNetStream.SendChangeNamePacket((BYTE)iIndex, szName);
  427. return Py_BuildNone();
  428. }
  429. PyObject* netEnableChatInsultFilter(PyObject* poSelf, PyObject* poArgs)
  430. {
  431. int nEnable;
  432. if (!PyTuple_GetInteger(poArgs, 0, &nEnable))
  433. return Py_BuildException();
  434. CPythonNetworkStream& rkNetStream=CPythonNetworkStream::Instance();
  435. rkNetStream.EnableChatInsultFilter(nEnable ? true : false);
  436. return Py_BuildNone();
  437. }
  438. PyObject* netIsChatInsultIn(PyObject* poSelf, PyObject* poArgs)
  439. {
  440. char* szMsg;
  441. if (!PyTuple_GetString(poArgs, 0, &szMsg))
  442. return Py_BuildException();
  443. CPythonNetworkStream& rkNetStream=CPythonNetworkStream::Instance();
  444. return Py_BuildValue("i", rkNetStream.IsChatInsultIn(szMsg));
  445. }
  446. PyObject* netIsInsultIn(PyObject* poSelf, PyObject* poArgs)
  447. {
  448. char* szMsg;
  449. if (!PyTuple_GetString(poArgs, 0, &szMsg))
  450. return Py_BuildException();
  451. CPythonNetworkStream& rkNetStream=CPythonNetworkStream::Instance();
  452. return Py_BuildValue("i", rkNetStream.IsInsultIn(szMsg));
  453. }
  454. PyObject* netSendWhisperPacket(PyObject* poSelf, PyObject* poArgs)
  455. {
  456. char* szName;
  457. char* szLine;
  458. if (!PyTuple_GetString(poArgs, 0, &szName))
  459. return Py_BuildException();
  460. if (!PyTuple_GetString(poArgs, 1, &szLine))
  461. return Py_BuildException();
  462. CPythonNetworkStream& rkNetStream=CPythonNetworkStream::Instance();
  463. rkNetStream.SendWhisperPacket(szName, szLine);
  464. return Py_BuildNone();
  465. }
  466. PyObject* netSendMobileMessagePacket(PyObject* poSelf, PyObject* poArgs)
  467. {
  468. char* szName;
  469. char* szLine;
  470. if (!PyTuple_GetString(poArgs, 0, &szName))
  471. return Py_BuildException();
  472. if (!PyTuple_GetString(poArgs, 1, &szLine))
  473. return Py_BuildException();
  474. CPythonNetworkStream& rkNetStream=CPythonNetworkStream::Instance();
  475. rkNetStream.SendMobileMessagePacket(szName, szLine);
  476. return Py_BuildNone();
  477. }
  478. PyObject* netSendCharacterPositionPacket(PyObject* poSelf, PyObject* poArgs)
  479. {
  480. int iPosition;
  481. if (!PyTuple_GetInteger(poArgs, 0, &iPosition))
  482. return Py_BuildException();
  483. CPythonNetworkStream& rkNetStream=CPythonNetworkStream::Instance();
  484. rkNetStream.SendCharacterPositionPacket((BYTE) iPosition);
  485. return Py_BuildNone();
  486. }
  487. PyObject* netSendChatPacket(PyObject* poSelf, PyObject* poArgs)
  488. {
  489. char* szLine;
  490. if (!PyTuple_GetString(poArgs, 0, &szLine))
  491. return Py_BuildException();
  492. int iType;
  493. if (!PyTuple_GetInteger(poArgs, 1, &iType))
  494. {
  495. iType = CHAT_TYPE_TALKING;
  496. }
  497. CPythonNetworkStream& rkNetStream=CPythonNetworkStream::Instance();
  498. rkNetStream.SendChatPacket(szLine, iType);
  499. return Py_BuildNone();
  500. }
  501. PyObject* netSendEmoticon(PyObject* poSelf, PyObject* poArgs)
  502. {
  503. int eEmoticon;
  504. if (!PyTuple_GetInteger(poArgs, 0, &eEmoticon))
  505. return Py_BuildException();
  506. CPythonNetworkStream& rkNetStream=CPythonNetworkStream::Instance();
  507. rkNetStream.SendEmoticon(eEmoticon);
  508. return Py_BuildNone();
  509. }
  510. PyObject* netSendCreateCharacterPacket(PyObject* poSelf, PyObject* poArgs)
  511. {
  512. int index;
  513. if (!PyTuple_GetInteger(poArgs, 0, &index))
  514. return Py_BuildException();
  515. char* name;
  516. if (!PyTuple_GetString(poArgs, 1, &name))
  517. return Py_BuildException();
  518. int job;
  519. if (!PyTuple_GetInteger(poArgs, 2, &job))
  520. return Py_BuildException();
  521. int shape;
  522. if (!PyTuple_GetInteger(poArgs, 3, &shape))
  523. return Py_BuildException();
  524. int stat1;
  525. if (!PyTuple_GetInteger(poArgs, 4, &stat1))
  526. return Py_BuildException();
  527. int stat2;
  528. if (!PyTuple_GetInteger(poArgs, 5, &stat2))
  529. return Py_BuildException();
  530. int stat3;
  531. if (!PyTuple_GetInteger(poArgs, 6, &stat3))
  532. return Py_BuildException();
  533. int stat4;
  534. if (!PyTuple_GetInteger(poArgs, 7, &stat4))
  535. return Py_BuildException();
  536. if (index<0 && index>3)
  537. return Py_BuildException();
  538. CPythonNetworkStream& rkNetStream=CPythonNetworkStream::Instance();
  539. rkNetStream.SendCreateCharacterPacket((BYTE) index, name, (BYTE) job, (BYTE) shape, stat1, stat2, stat3, stat4);
  540. return Py_BuildNone();
  541. }
  542. PyObject* netSendDestroyCharacterPacket(PyObject* poSelf, PyObject* poArgs)
  543. {
  544. int index;
  545. if (!PyTuple_GetInteger(poArgs, 0, &index))
  546. return Py_BuildException();
  547. char * szPrivateCode;
  548. if (!PyTuple_GetString(poArgs, 1, &szPrivateCode))
  549. return Py_BuildException();
  550. if (index<0 && index>3)
  551. return Py_BuildException();
  552. CPythonNetworkStream& rkNetStream=CPythonNetworkStream::Instance();
  553. rkNetStream.SendDestroyCharacterPacket((BYTE) index, szPrivateCode);
  554. return Py_BuildNone();
  555. }
  556. PyObject* netSendEnterGamePacket(PyObject* poSelf, PyObject* poArgs)
  557. {
  558. CPythonNetworkStream& rkNetStream=CPythonNetworkStream::Instance();
  559. rkNetStream.SendEnterGame();
  560. return Py_BuildNone();
  561. }
  562. PyObject* netOnClickPacket(PyObject* poSelf, PyObject* poArgs)
  563. {
  564. int index;
  565. if (!PyTuple_GetInteger(poArgs, 0, &index))
  566. return Py_BuildException();
  567. CPythonNetworkStream& rkNetStream=CPythonNetworkStream::Instance();
  568. rkNetStream.SendOnClickPacket(index);
  569. return Py_BuildNone();
  570. }
  571. PyObject* netSendItemUsePacket(PyObject* poSelf, PyObject* poArgs)
  572. {
  573. TItemPos Cell;
  574. switch (PyTuple_Size(poArgs))
  575. {
  576. case 1:
  577. if (!PyTuple_GetInteger(poArgs, 0, &Cell.cell))
  578. return Py_BuildException();
  579. break;
  580. case 2:
  581. if (!PyTuple_GetByte(poArgs, 0, &Cell.window_type))
  582. return Py_BuildException();
  583. if (!PyTuple_GetInteger(poArgs, 1, &Cell.cell))
  584. return Py_BuildException();
  585. break;
  586. default:
  587. return Py_BuildException();
  588. }
  589. CPythonNetworkStream& rkNetStream=CPythonNetworkStream::Instance();
  590. rkNetStream.SendItemUsePacket(Cell);
  591. return Py_BuildNone();
  592. }
  593. PyObject* netSendItemUseToItemPacket(PyObject* poSelf, PyObject* poArgs)
  594. {
  595. TItemPos SourceCell;
  596. TItemPos TargetCell;
  597. switch (PyTuple_Size(poArgs))
  598. {
  599. case 2:
  600. if (!PyTuple_GetInteger(poArgs, 0, &SourceCell.cell))
  601. return Py_BuildException();
  602. if (!PyTuple_GetInteger(poArgs, 1, &TargetCell.cell))
  603. return Py_BuildException();
  604. break;
  605. case 4:
  606. if (!PyTuple_GetByte(poArgs, 0, &SourceCell.window_type))
  607. return Py_BuildException();
  608. if (!PyTuple_GetInteger(poArgs, 1, &SourceCell.cell))
  609. return Py_BuildException();
  610. if (!PyTuple_GetByte(poArgs, 2, &TargetCell.window_type))
  611. return Py_BuildException();
  612. if (!PyTuple_GetInteger(poArgs, 3, &TargetCell.cell))
  613. return Py_BuildException();
  614. break;
  615. default:
  616. return Py_BuildException();
  617. }
  618. CPythonNetworkStream& rkNetStream=CPythonNetworkStream::Instance();
  619. rkNetStream.SendItemUseToItemPacket(SourceCell, TargetCell);
  620. return Py_BuildNone();
  621. }
  622. PyObject* netSendItemDropPacket(PyObject* poSelf, PyObject* poArgs)
  623. {
  624. TItemPos Cell;
  625. switch (PyTuple_Size(poArgs))
  626. {
  627. case 1:
  628. if (!PyTuple_GetInteger(poArgs, 0, &Cell.cell))
  629. return Py_BuildException();
  630. break;
  631. case 2:
  632. if (!PyTuple_GetByte(poArgs, 0, &Cell.window_type))
  633. return Py_BuildException();
  634. if (!PyTuple_GetInteger(poArgs, 1, &Cell.cell))
  635. return Py_BuildException();
  636. break;
  637. default:
  638. return Py_BuildException();
  639. }
  640. CPythonNetworkStream& rkNetStream=CPythonNetworkStream::Instance();
  641. rkNetStream.SendItemDropPacket(Cell, 0);
  642. return Py_BuildNone();
  643. }
  644. PyObject* netSendItemDestroyPacket(PyObject* poSelf, PyObject* poArgs)
  645. {
  646. TItemPos Cell;
  647. int count;
  648. switch (PyTuple_Size(poArgs))
  649. {
  650. case 2:
  651. if (!PyTuple_GetInteger(poArgs, 0, &Cell.cell))
  652. return Py_BuildException();
  653. if (!PyTuple_GetInteger(poArgs, 1, &count))
  654. return Py_BuildException();
  655. break;
  656. case 3:
  657. if (!PyTuple_GetByte(poArgs, 0, &Cell.window_type))
  658. return Py_BuildException();
  659. if (!PyTuple_GetInteger(poArgs, 1, &Cell.cell))
  660. return Py_BuildException();
  661. if (!PyTuple_GetInteger(poArgs, 2, &count))
  662. return Py_BuildException();
  663. break;
  664. default:
  665. return Py_BuildException();
  666. }
  667. CPythonNetworkStream& rkNetStream=CPythonNetworkStream::Instance();
  668. rkNetStream.SendItemDestroyPacket(Cell, count);
  669. return Py_BuildNone();
  670. }
  671. PyObject* netSendItemSellPacket(PyObject* poSelf, PyObject* poArgs)
  672. {
  673. TItemPos Cell;
  674. int count;
  675. switch (PyTuple_Size(poArgs))
  676. {
  677. case 2:
  678. if (!PyTuple_GetInteger(poArgs, 0, &Cell.cell))
  679. return Py_BuildException();
  680. if (!PyTuple_GetInteger(poArgs, 1, &count))
  681. return Py_BuildException();
  682. break;
  683. case 3:
  684. if (!PyTuple_GetByte(poArgs, 0, &Cell.window_type))
  685. return Py_BuildException();
  686. if (!PyTuple_GetInteger(poArgs, 1, &Cell.cell))
  687. return Py_BuildException();
  688. if (!PyTuple_GetInteger(poArgs, 2, &count))
  689. return Py_BuildException();
  690. break;
  691. default:
  692. return Py_BuildException();
  693. }
  694. CPythonNetworkStream& rkNetStream=CPythonNetworkStream::Instance();
  695. rkNetStream.SendItemSellPacket(Cell, count);
  696. return Py_BuildNone();
  697. }
  698. PyObject* netSendItemDropPacketNew(PyObject* poSelf, PyObject* poArgs)
  699. {
  700. TItemPos Cell;
  701. int count;
  702. switch (PyTuple_Size(poArgs))
  703. {
  704. case 2:
  705. if (!PyTuple_GetInteger(poArgs, 0, &Cell.cell))
  706. return Py_BuildException();
  707. if (!PyTuple_GetInteger(poArgs, 1, &count))
  708. return Py_BuildException();
  709. break;
  710. case 3:
  711. if (!PyTuple_GetByte(poArgs, 0, &Cell.window_type))
  712. return Py_BuildException();
  713. if (!PyTuple_GetInteger(poArgs, 1, &Cell.cell))
  714. return Py_BuildException();
  715. if (!PyTuple_GetInteger(poArgs, 2, &count))
  716. return Py_BuildException();
  717. break;
  718. default:
  719. return Py_BuildException();
  720. }
  721. CPythonNetworkStream& rkNetStream=CPythonNetworkStream::Instance();
  722. rkNetStream.SendItemDropPacketNew(Cell, 0, count);
  723. return Py_BuildNone();
  724. }
  725. PyObject* netSendElkDropPacket(PyObject* poSelf, PyObject* poArgs)
  726. {
  727. int iElk;
  728. if (!PyTuple_GetInteger(poArgs, 0, &iElk))
  729. return Py_BuildException();
  730. CPythonNetworkStream& rkNetStream=CPythonNetworkStream::Instance();
  731. rkNetStream.SendItemDropPacket(TItemPos(RESERVED_WINDOW, 0), (DWORD) iElk);
  732. return Py_BuildNone();
  733. }
  734. PyObject* netSendGoldDropPacketNew(PyObject* poSelf, PyObject* poArgs)
  735. {
  736. int iElk;
  737. if (!PyTuple_GetInteger(poArgs, 0, &iElk))
  738. return Py_BuildException();
  739. CPythonNetworkStream& rkNetStream=CPythonNetworkStream::Instance();
  740. rkNetStream.SendItemDropPacketNew(TItemPos (RESERVED_WINDOW, 0), (DWORD) iElk, 0);
  741. return Py_BuildNone();
  742. }
  743. PyObject* netSendItemMovePacket(PyObject* poSelf, PyObject* poArgs)
  744. {
  745. TItemPos Cell;
  746. TItemPos ChangeCell;
  747. int num;
  748. switch (PyTuple_Size(poArgs))
  749. {
  750. case 3:
  751. if (!PyTuple_GetInteger(poArgs, 0, &Cell.cell))
  752. return Py_BuildException();
  753. if (!PyTuple_GetInteger(poArgs, 1, &ChangeCell.cell))
  754. return Py_BuildException();
  755. if (!PyTuple_GetInteger(poArgs, 2, &num))
  756. return Py_BuildException();
  757. break;
  758. case 5:
  759. {
  760. if (!PyTuple_GetByte(poArgs, 0, &Cell.window_type))
  761. return Py_BuildException();
  762. if (!PyTuple_GetInteger(poArgs, 1, &Cell.cell))
  763. return Py_BuildException();
  764. if (!PyTuple_GetByte(poArgs, 2, &ChangeCell.window_type))
  765. return Py_BuildException();
  766. if (!PyTuple_GetInteger(poArgs, 3, &ChangeCell.cell))
  767. return Py_BuildException();
  768. if (!PyTuple_GetInteger(poArgs, 4, &num))
  769. return Py_BuildException();
  770. }
  771. break;
  772. default:
  773. return Py_BuildException();
  774. }
  775. CPythonNetworkStream& rkNetStream=CPythonNetworkStream::Instance();
  776. rkNetStream.SendItemMovePacket(Cell, ChangeCell, (BYTE) num);
  777. return Py_BuildNone();
  778. }
  779. PyObject* netSendItemPickUpPacket(PyObject* poSelf, PyObject* poArgs)
  780. {
  781. int vid;
  782. if (!PyTuple_GetInteger(poArgs, 0, &vid))
  783. return Py_BuildException();
  784. CPythonNetworkStream& rkNetStream=CPythonNetworkStream::Instance();
  785. rkNetStream.SendItemPickUpPacket(vid);
  786. return Py_BuildNone();
  787. }
  788. PyObject* netSendGiveItemPacket(PyObject* poSelf, PyObject* poArgs)
  789. {
  790. int iTargetVID;
  791. TItemPos Cell;
  792. int iItemCount;
  793. switch (PyTuple_Size(poArgs))
  794. {
  795. case 3:
  796. if (!PyTuple_GetInteger(poArgs, 0, &iTargetVID))
  797. return Py_BuildException();
  798. if (!PyTuple_GetInteger(poArgs, 1, &Cell.cell))
  799. return Py_BuildException();
  800. if (!PyTuple_GetInteger(poArgs, 2, &iItemCount))
  801. return Py_BuildException();
  802. break;
  803. case 4:
  804. if (!PyTuple_GetInteger(poArgs, 0, &iTargetVID))
  805. return Py_BuildException();
  806. if (!PyTuple_GetByte(poArgs, 1, &Cell.window_type))
  807. return Py_BuildException();
  808. if (!PyTuple_GetInteger(poArgs, 2, &Cell.cell))
  809. return Py_BuildException();
  810. if (!PyTuple_GetInteger(poArgs, 3, &iItemCount))
  811. return Py_BuildException();
  812. break;
  813. default:
  814. break;
  815. }
  816. CPythonNetworkStream& rkNetStream=CPythonNetworkStream::Instance();
  817. rkNetStream.SendGiveItemPacket(iTargetVID, Cell, iItemCount);
  818. return Py_BuildNone();
  819. }
  820. PyObject* netSendShopEndPacket(PyObject* poSelf, PyObject* poArgs)
  821. {
  822. CPythonNetworkStream& rkNetStream=CPythonNetworkStream::Instance();
  823. rkNetStream.SendShopEndPacket();
  824. return Py_BuildNone();
  825. }
  826. PyObject* netSendShopBuyPacket(PyObject* poSelf, PyObject* poArgs)
  827. {
  828. int iCount;
  829. if (!PyTuple_GetInteger(poArgs, 0, &iCount))
  830. return Py_BuildException();
  831. CPythonNetworkStream& rkNetStream=CPythonNetworkStream::Instance();
  832. rkNetStream.SendShopBuyPacket(iCount);
  833. return Py_BuildNone();
  834. }
  835. PyObject* netSendShopSellPacket(PyObject* poSelf, PyObject* poArgs)
  836. {
  837. int iSlotNumber;
  838. if (!PyTuple_GetInteger(poArgs, 0, &iSlotNumber))
  839. return Py_BuildException();
  840. CPythonNetworkStream& rkNetStream=CPythonNetworkStream::Instance();
  841. rkNetStream.SendShopSellPacket(iSlotNumber);
  842. return Py_BuildNone();
  843. }
  844. PyObject* netSendShopSellPacketNew(PyObject* poSelf, PyObject* poArgs)
  845. {
  846. int iSlotNumber;
  847. if (!PyTuple_GetInteger(poArgs, 0, &iSlotNumber))
  848. return Py_BuildException();
  849. int iCount;
  850. if (!PyTuple_GetInteger(poArgs, 1, &iCount))
  851. return Py_BuildException();
  852. CPythonNetworkStream& rkNetStream=CPythonNetworkStream::Instance();
  853. rkNetStream.SendShopSellPacketNew(iSlotNumber, iCount);
  854. return Py_BuildNone();
  855. }
  856. // BEGIN_OFFLINE_SHOP
  857. PyObject* netSendOfflineShopEndPacket(PyObject* poSelf, PyObject* poArgs)
  858. {
  859. CPythonNetworkStream& rkNetStream = CPythonNetworkStream::Instance();
  860. rkNetStream.SendOfflineShopEndPacket();
  861. return Py_BuildNone();
  862. }
  863. PyObject* netSendOfflineShopBuyPacket(PyObject* poSelf, PyObject* poArgs)
  864. {
  865. int iCount;
  866. if (!PyTuple_GetInteger(poArgs, 0, &iCount))
  867. return Py_BuildException();
  868. CPythonNetworkStream& rkNetStream = CPythonNetworkStream::Instance();
  869. rkNetStream.SendOfflineShopBuyPacket(iCount);
  870. return Py_BuildNone();
  871. }
  872. PyObject* netSendAddOfflineShopItemPacket(PyObject* poSelf, PyObject* poArgs)
  873. {
  874. TItemPos item_pos;
  875. int iPrice;
  876. //UMUTK
  877. int iPrice7;
  878. //END
  879. if (!PyTuple_GetInteger(poArgs, 0, &item_pos.cell))
  880. return Py_BuildException();
  881. if (!PyTuple_GetInteger(poArgs, 1, &iPrice))
  882. return Py_BuildException();
  883. if (!PyTuple_GetInteger(poArgs, 2, &iPrice7))
  884. return Py_BuildException();
  885. CPythonNetworkStream& rkNetStream=CPythonNetworkStream::Instance();
  886. rkNetStream.SendAddOfflineShopItemPacket(item_pos, iPrice, iPrice7);
  887. return Py_BuildNone();
  888. }
  889. PyObject * netSendDestroyOfflineShop(PyObject * poSelf, PyObject * poArgs)
  890. {
  891. CPythonNetworkStream & rkNetStream = CPythonNetworkStream::instance();
  892. rkNetStream.SendDestroyOfflineShop();
  893. return Py_BuildNone();
  894. }
  895. // END_OF_OFFLINE_SHOP
  896. PyObject* netSendExchangeStartPacket(PyObject* poSelf, PyObject* poArgs)
  897. {
  898. int vid;
  899. if (!PyTuple_GetInteger(poArgs, 0, &vid))
  900. return Py_BuildException();
  901. CPythonNetworkStream& rkNetStream=CPythonNetworkStream::Instance();
  902. rkNetStream.SendExchangeStartPacket(vid);
  903. return Py_BuildNone();
  904. }
  905. PyObject* netSendExchangeElkAddPacket(PyObject* poSelf, PyObject* poArgs)
  906. {
  907. int iElk;
  908. if (!PyTuple_GetInteger(poArgs, 0, &iElk))
  909. return Py_BuildException();
  910. CPythonNetworkStream& rkNetStream=CPythonNetworkStream::Instance();
  911. rkNetStream.SendExchangeElkAddPacket(iElk);
  912. return Py_BuildNone();
  913. }
  914. PyObject* netSendExchangeItemAddPacket(PyObject* poSelf, PyObject* poArgs)
  915. {
  916. BYTE bWindowType;
  917. if (!PyTuple_GetInteger(poArgs, 0, &bWindowType))
  918. return Py_BuildException();
  919. WORD wSlotIndex;
  920. if (!PyTuple_GetInteger(poArgs, 1, &wSlotIndex))
  921. return Py_BuildException();
  922. int iDisplaySlotIndex;
  923. if (!PyTuple_GetInteger(poArgs, 2, &iDisplaySlotIndex))
  924. return Py_BuildException();
  925. CPythonNetworkStream& rkNetStream=CPythonNetworkStream::Instance();
  926. rkNetStream.SendExchangeItemAddPacket(TItemPos(bWindowType, wSlotIndex), iDisplaySlotIndex);
  927. return Py_BuildNone();
  928. }
  929. PyObject* netSendExchangeItemDelPacket(PyObject* poSelf, PyObject* poArgs)
  930. {
  931. int pos;
  932. if (!PyTuple_GetInteger(poArgs, 0, &pos))
  933. return Py_BuildException();
  934. CPythonNetworkStream& rkNetStream=CPythonNetworkStream::Instance();
  935. rkNetStream.SendExchangeItemDelPacket((BYTE) pos);
  936. return Py_BuildNone();
  937. }
  938. PyObject* netSendExchangeAcceptPacket(PyObject* poSelf, PyObject* poArgs)
  939. {
  940. CPythonNetworkStream& rkNetStream=CPythonNetworkStream::Instance();
  941. rkNetStream.SendExchangeAcceptPacket();
  942. return Py_BuildNone();
  943. }
  944. PyObject* netSendExchangeExitPacket(PyObject* poSelf, PyObject* poArgs)
  945. {
  946. CPythonNetworkStream& rkNetStream=CPythonNetworkStream::Instance();
  947. rkNetStream.SendExchangeExitPacket();
  948. return Py_BuildNone();
  949. }
  950. #ifdef ENABLE_CHEQUE_SYSTEM
  951. PyObject* netSendExchangeChequeAddPacket(PyObject* poSelf, PyObject* poArgs)
  952. {
  953. int iCheque;
  954. if (!PyTuple_GetInteger(poArgs, 0, &iCheque))
  955. return Py_BuildException();
  956. CPythonNetworkStream& rkNetStream=CPythonNetworkStream::Instance();
  957. rkNetStream.SendExchangeChequeAddPacket(iCheque);
  958. return Py_BuildNone();
  959. }
  960. #endif
  961. PyObject* netExitApplication(PyObject* poSelf, PyObject* poArgs)
  962. {
  963. CPythonNetworkStream& rkNetStream=CPythonNetworkStream::Instance();
  964. rkNetStream.ExitApplication();
  965. return Py_BuildNone();
  966. }
  967. PyObject* netExitGame(PyObject* poSelf, PyObject* poArgs)
  968. {
  969. CPythonNetworkStream& rkNetStream=CPythonNetworkStream::Instance();
  970. rkNetStream.ExitGame();
  971. return Py_BuildNone();
  972. }
  973. PyObject* netLogOutGame(PyObject* poSelf, PyObject* poArgs)
  974. {
  975. CPythonNetworkStream& rkNetStream=CPythonNetworkStream::Instance();
  976. rkNetStream.LogOutGame();
  977. return Py_BuildNone();
  978. }
  979. PyObject* netDisconnect(PyObject* poSelf, PyObject* poArgs)
  980. {
  981. CPythonNetworkStream& rkNetStream=CPythonNetworkStream::Instance();
  982. rkNetStream.SetOffLinePhase();
  983. rkNetStream.Disconnect();
  984. return Py_BuildNone();
  985. }
  986. PyObject* netIsConnect(PyObject* poSelf, PyObject* poArgs)
  987. {
  988. CPythonNetworkStream& rkNetStream=CPythonNetworkStream::Instance();
  989. return Py_BuildValue("i", rkNetStream.IsOnline());
  990. }
  991. PyObject* netToggleGameDebugInfo(PyObject* poSelf, PyObject* poArgs)
  992. {
  993. CPythonNetworkStream& rkNetStream=CPythonNetworkStream::Instance();
  994. rkNetStream.ToggleGameDebugInfo();
  995. return Py_BuildNone();
  996. }
  997. PyObject* netRegisterEmoticonString(PyObject* poSelf, PyObject* poArgs)
  998. {
  999. char * pcEmoticonString;
  1000. if (!PyTuple_GetString(poArgs, 0, &pcEmoticonString))
  1001. return Py_BuildException();
  1002. CPythonNetworkStream& rkNetStream=CPythonNetworkStream::Instance();
  1003. rkNetStream.RegisterEmoticonString(pcEmoticonString);
  1004. return Py_BuildNone();
  1005. }
  1006. PyObject* netSendMessengerAddByVIDPacket(PyObject* poSelf, PyObject* poArgs)
  1007. {
  1008. int vid;
  1009. if (!PyTuple_GetInteger(poArgs, 0, &vid))
  1010. return Py_BuildException();
  1011. CPythonNetworkStream& rns=CPythonNetworkStream::Instance();
  1012. rns.SendMessengerAddByVIDPacket(vid);
  1013. return Py_BuildNone();
  1014. }
  1015. PyObject* netSendMessengerAddByNamePacket(PyObject* poSelf, PyObject* poArgs)
  1016. {
  1017. char * szName;
  1018. if (!PyTuple_GetString(poArgs, 0, &szName))
  1019. return Py_BuildException();
  1020. CPythonNetworkStream& rns=CPythonNetworkStream::Instance();
  1021. rns.SendMessengerAddByNamePacket(szName);
  1022. return Py_BuildNone();
  1023. }
  1024. PyObject* netSendMessengerRemovePacket(PyObject* poSelf, PyObject* poArgs)
  1025. {
  1026. char * szKey;
  1027. if (!PyTuple_GetString(poArgs, 0, &szKey))
  1028. return Py_BuildException();
  1029. char * szName;
  1030. if (!PyTuple_GetString(poArgs, 1, &szName))
  1031. return Py_BuildException();
  1032. CPythonNetworkStream& rns=CPythonNetworkStream::Instance();
  1033. rns.SendMessengerRemovePacket(szKey, szName);
  1034. return Py_BuildNone();
  1035. }
  1036. PyObject* netSendPartyInvitePacket(PyObject* poSelf, PyObject* poArgs)
  1037. {
  1038. int vid;
  1039. if (!PyTuple_GetInteger(poArgs, 0, &vid))
  1040. return Py_BuildException();
  1041. CPythonNetworkStream& rns=CPythonNetworkStream::Instance();
  1042. rns.SendPartyInvitePacket(vid);
  1043. return Py_BuildNone();
  1044. }
  1045. PyObject* netSendPartyInviteAnswerPacket(PyObject* poSelf, PyObject* poArgs)
  1046. {
  1047. int vid;
  1048. if (!PyTuple_GetInteger(poArgs, 0, &vid))
  1049. return Py_BuildException();
  1050. int answer;
  1051. if (!PyTuple_GetInteger(poArgs, 1, &answer))
  1052. return Py_BuildException();
  1053. CPythonNetworkStream& rns=CPythonNetworkStream::Instance();
  1054. rns.SendPartyInviteAnswerPacket(vid, answer);
  1055. return Py_BuildNone();
  1056. }
  1057. PyObject* netSendPartyExitPacket(PyObject* poSelf, PyObject* poArgs)
  1058. {
  1059. IAbstractPlayer& rPlayer=IAbstractPlayer::GetSingleton();
  1060. CPythonNetworkStream& rns=CPythonNetworkStream::Instance();
  1061. DWORD dwVID = rPlayer.GetMainCharacterIndex();
  1062. DWORD dwPID;
  1063. if (rPlayer.PartyMemberVIDToPID(dwVID, &dwPID))
  1064. rns.SendPartyRemovePacket(dwPID);
  1065. return Py_BuildNone();
  1066. }
  1067. PyObject* netSendPartyRemovePacket(PyObject* poSelf, PyObject* poArgs)
  1068. {
  1069. int vid;
  1070. if (!PyTuple_GetInteger(poArgs, 0, &vid))
  1071. return Py_BuildException();
  1072. CPythonNetworkStream& rns=CPythonNetworkStream::Instance();
  1073. rns.SendPartyRemovePacket(vid);
  1074. return Py_BuildNone();
  1075. }
  1076. PyObject* netSendPartySetStatePacket(PyObject* poSelf, PyObject* poArgs)
  1077. {
  1078. int iVID;
  1079. if (!PyTuple_GetInteger(poArgs, 0, &iVID))
  1080. return Py_BuildException();
  1081. int iState;
  1082. if (!PyTuple_GetInteger(poArgs, 1, &iState))
  1083. return Py_BuildException();
  1084. int iFlag;
  1085. if (!PyTuple_GetInteger(poArgs, 2, &iFlag))
  1086. return Py_BuildException();
  1087. CPythonNetworkStream& rns=CPythonNetworkStream::Instance();
  1088. rns.SendPartySetStatePacket(iVID, iState, iFlag);
  1089. return Py_BuildNone();
  1090. }
  1091. PyObject* netSendPartyUseSkillPacket(PyObject* poSelf, PyObject* poArgs)
  1092. {
  1093. int iSkillIndex;
  1094. if (!PyTuple_GetInteger(poArgs, 0, &iSkillIndex))
  1095. return Py_BuildException();
  1096. int iVID;
  1097. if (!PyTuple_GetInteger(poArgs, 1, &iVID))
  1098. return Py_BuildException();
  1099. CPythonNetworkStream& rns=CPythonNetworkStream::Instance();
  1100. rns.SendPartyUseSkillPacket(iSkillIndex, iVID);
  1101. return Py_BuildNone();
  1102. }
  1103. PyObject* netSendPartyParameterPacket(PyObject* poSelf, PyObject* poArgs)
  1104. {
  1105. int iMode;
  1106. if (!PyTuple_GetInteger(poArgs, 0, &iMode))
  1107. return Py_BuildException();
  1108. CPythonNetworkStream& rns=CPythonNetworkStream::Instance();
  1109. rns.SendPartyParameterPacket(iMode);
  1110. return Py_BuildNone();
  1111. }
  1112. PyObject* netSendSafeboxSaveMoneyPacket(PyObject* poSelf, PyObject* poArgs)
  1113. {
  1114. int iMoney;
  1115. if (!PyTuple_GetInteger(poArgs, 0, &iMoney))
  1116. return Py_BuildException();
  1117. CPythonNetworkStream& rns=CPythonNetworkStream::Instance();
  1118. rns.SendSafeBoxMoneyPacket(SAFEBOX_MONEY_STATE_SAVE, iMoney);
  1119. return Py_BuildNone();
  1120. }
  1121. PyObject* netSendSafeboxWithdrawMoneyPacket(PyObject* poSelf, PyObject* poArgs)
  1122. {
  1123. int iMoney;
  1124. if (!PyTuple_GetInteger(poArgs, 0, &iMoney))
  1125. return Py_BuildException();
  1126. CPythonNetworkStream& rns=CPythonNetworkStream::Instance();
  1127. rns.SendSafeBoxMoneyPacket(SAFEBOX_MONEY_STATE_WITHDRAW, iMoney);
  1128. return Py_BuildNone();
  1129. }
  1130. PyObject* netSendSafeboxCheckinPacket(PyObject* poSelf, PyObject* poArgs)
  1131. {
  1132. TItemPos InventoryPos;
  1133. int iSafeBoxPos;
  1134. switch (PyTuple_Size(poArgs))
  1135. {
  1136. case 2:
  1137. InventoryPos.window_type = INVENTORY;
  1138. if (!PyTuple_GetInteger(poArgs, 0, &InventoryPos.cell))
  1139. return Py_BuildException();
  1140. if (!PyTuple_GetInteger(poArgs, 1, &iSafeBoxPos))
  1141. return Py_BuildException();
  1142. break;
  1143. case 3:
  1144. if (!PyTuple_GetInteger(poArgs, 0, &InventoryPos.window_type))
  1145. return Py_BuildException();
  1146. if (!PyTuple_GetInteger(poArgs, 1, &InventoryPos.cell))
  1147. return Py_BuildException();
  1148. if (!PyTuple_GetInteger(poArgs, 2, &iSafeBoxPos))
  1149. return Py_BuildException();
  1150. break;
  1151. }
  1152. CPythonNetworkStream& rns=CPythonNetworkStream::Instance();
  1153. rns.SendSafeBoxCheckinPacket(InventoryPos, iSafeBoxPos);
  1154. return Py_BuildNone();
  1155. }
  1156. PyObject* netSendSafeboxCheckoutPacket(PyObject* poSelf, PyObject* poArgs)
  1157. {
  1158. int iSafeBoxPos;
  1159. TItemPos InventoryPos;
  1160. switch (PyTuple_Size(poArgs))
  1161. {
  1162. case 2:
  1163. if (!PyTuple_GetInteger(poArgs, 0, &iSafeBoxPos))
  1164. return Py_BuildException();
  1165. if (!PyTuple_GetInteger(poArgs, 1, &InventoryPos.cell))
  1166. return Py_BuildException();
  1167. break;
  1168. case 3:
  1169. if (!PyTuple_GetInteger(poArgs, 0, &iSafeBoxPos))
  1170. return Py_BuildException();
  1171. if (!PyTuple_GetInteger(poArgs, 1, &InventoryPos.window_type))
  1172. return Py_BuildException();
  1173. if (!PyTuple_GetInteger(poArgs, 2, &InventoryPos.cell))
  1174. return Py_BuildException();
  1175. break;
  1176. default:
  1177. break;
  1178. }
  1179. CPythonNetworkStream& rns=CPythonNetworkStream::Instance();
  1180. rns.SendSafeBoxCheckoutPacket(iSafeBoxPos, InventoryPos);
  1181. return Py_BuildNone();
  1182. }
  1183. PyObject* netSendSafeboxItemMovePacket(PyObject* poSelf, PyObject* poArgs)
  1184. {
  1185. int iSourcePos;
  1186. if (!PyTuple_GetInteger(poArgs, 0, &iSourcePos))
  1187. return Py_BuildException();
  1188. int iTargetPos;
  1189. if (!PyTuple_GetInteger(poArgs, 1, &iTargetPos))
  1190. return Py_BuildException();
  1191. int iCount;
  1192. if (!PyTuple_GetInteger(poArgs, 2, &iCount))
  1193. return Py_BuildException();
  1194. CPythonNetworkStream& rns=CPythonNetworkStream::Instance();
  1195. rns.SendSafeBoxItemMovePacket(iSourcePos, iTargetPos, iCount);
  1196. return Py_BuildNone();
  1197. }
  1198. PyObject* netSendMallCheckoutPacket(PyObject* poSelf, PyObject* poArgs)
  1199. {
  1200. int iMallPos;
  1201. TItemPos InventoryPos;
  1202. switch (PyTuple_Size(poArgs))
  1203. {
  1204. case 2:
  1205. if (!PyTuple_GetInteger(poArgs, 0, &iMallPos))
  1206. return Py_BuildException();
  1207. if (!PyTuple_GetInteger(poArgs, 1, &InventoryPos.cell))
  1208. return Py_BuildException();
  1209. break;
  1210. case 3:
  1211. if (!PyTuple_GetInteger(poArgs, 0, &iMallPos))
  1212. return Py_BuildException();
  1213. if (!PyTuple_GetInteger(poArgs, 1, &InventoryPos.window_type))
  1214. return Py_BuildException();
  1215. if (!PyTuple_GetInteger(poArgs, 2, &InventoryPos.cell))
  1216. return Py_BuildException();
  1217. break;
  1218. default:
  1219. return Py_BuildException();
  1220. }
  1221. CPythonNetworkStream& rns=CPythonNetworkStream::Instance();
  1222. rns.SendMallCheckoutPacket(iMallPos, InventoryPos);
  1223. return Py_BuildNone();
  1224. }
  1225. PyObject* netSendAnswerMakeGuildPacket(PyObject* poSelf, PyObject* poArgs)
  1226. {
  1227. char * szName;
  1228. if (!PyTuple_GetString(poArgs, 0, &szName))
  1229. return Py_BuildException();
  1230. CPythonNetworkStream& rns=CPythonNetworkStream::Instance();
  1231. rns.SendAnswerMakeGuildPacket(szName);
  1232. return Py_BuildNone();
  1233. }
  1234. PyObject* netSendQuestInputStringPacket(PyObject* poSelf, PyObject* poArgs)
  1235. {
  1236. char * szString;
  1237. if (!PyTuple_GetString(poArgs, 0, &szString))
  1238. return Py_BuildException();
  1239. CPythonNetworkStream& rns=CPythonNetworkStream::Instance();
  1240. rns.SendQuestInputStringPacket(szString);
  1241. return Py_BuildNone();
  1242. }
  1243. PyObject* netSendQuestConfirmPacket(PyObject* poSelf, PyObject* poArgs)
  1244. {
  1245. int iAnswer;
  1246. if (!PyTuple_GetInteger(poArgs, 0, &iAnswer))
  1247. return Py_BuildException();
  1248. int iPID;
  1249. if (!PyTuple_GetInteger(poArgs, 1, &iPID))
  1250. return Py_BuildException();
  1251. CPythonNetworkStream& rns=CPythonNetworkStream::Instance();
  1252. rns.SendQuestConfirmPacket(iAnswer, iPID);
  1253. return Py_BuildNone();
  1254. }
  1255. PyObject* netSendGuildAddMemberPacket(PyObject* poSelf, PyObject* poArgs)
  1256. {
  1257. int iVID;
  1258. if (!PyTuple_GetInteger(poArgs, 0, &iVID))
  1259. return Py_BuildException();
  1260. CPythonNetworkStream& rns=CPythonNetworkStream::Instance();
  1261. rns.SendGuildAddMemberPacket(iVID);
  1262. return Py_BuildNone();
  1263. }
  1264. PyObject* netSendGuildRemoveMemberPacket(PyObject* poSelf, PyObject* poArgs)
  1265. {
  1266. char * szKey;
  1267. if (!PyTuple_GetString(poArgs, 0, &szKey))
  1268. return Py_BuildException();
  1269. CPythonGuild::TGuildMemberData * pGuildMemberData;
  1270. if (!CPythonGuild::Instance().GetMemberDataPtrByName(szKey, &pGuildMemberData))
  1271. {
  1272. TraceError("netSendGuildRemoveMemberPacket(szKey=%s) - Can't Find Guild Member\n", szKey);
  1273. return Py_BuildNone();
  1274. }
  1275. CPythonNetworkStream& rns=CPythonNetworkStream::Instance();
  1276. rns.SendGuildRemoveMemberPacket(pGuildMemberData->dwPID);
  1277. return Py_BuildNone();
  1278. }
  1279. PyObject* netSendGuildChangeGradeNamePacket(PyObject* poSelf, PyObject* poArgs)
  1280. {
  1281. int iGradeNumber;
  1282. if (!PyTuple_GetInteger(poArgs, 0, &iGradeNumber))
  1283. return Py_BuildException();
  1284. char * szGradeName;
  1285. if (!PyTuple_GetString(poArgs, 1, &szGradeName))
  1286. return Py_BuildException();
  1287. CPythonNetworkStream& rns=CPythonNetworkStream::Instance();
  1288. rns.SendGuildChangeGradeNamePacket(iGradeNumber, szGradeName);
  1289. return Py_BuildNone();
  1290. }
  1291. PyObject* netSendGuildChangeGradeAuthorityPacket(PyObject* poSelf, PyObject* poArgs)
  1292. {
  1293. int iGradeNumber;
  1294. if (!PyTuple_GetInteger(poArgs, 0, &iGradeNumber))
  1295. return Py_BuildException();
  1296. int iAuthority;
  1297. if (!PyTuple_GetInteger(poArgs, 1, &iAuthority))
  1298. return Py_BuildException();
  1299. CPythonNetworkStream& rns=CPythonNetworkStream::Instance();
  1300. rns.SendGuildChangeGradeAuthorityPacket(iGradeNumber, iAuthority);
  1301. return Py_BuildNone();
  1302. }
  1303. PyObject* netSendGuildOfferPacket(PyObject* poSelf, PyObject* poArgs)
  1304. {
  1305. int iExperience;
  1306. if (!PyTuple_GetInteger(poArgs, 0, &iExperience))
  1307. return Py_BuildException();
  1308. CPythonNetworkStream& rns=CPythonNetworkStream::Instance();
  1309. rns.SendGuildOfferPacket(iExperience);
  1310. return Py_BuildNone();
  1311. }
  1312. PyObject* netSnedGuildPostCommentPacket(PyObject* poSelf, PyObject* poArgs)
  1313. {
  1314. char * szComment;
  1315. if (!PyTuple_GetString(poArgs, 0, &szComment))
  1316. return Py_BuildException();
  1317. CPythonNetworkStream& rns=CPythonNetworkStream::Instance();
  1318. rns.SendGuildPostCommentPacket(szComment);
  1319. return Py_BuildNone();
  1320. }
  1321. PyObject* netSnedGuildDeleteCommentPacket(PyObject* poSelf, PyObject* poArgs)
  1322. {
  1323. int iIndex;
  1324. if (!PyTuple_GetInteger(poArgs, 0, &iIndex))
  1325. return Py_BuildException();
  1326. CPythonNetworkStream& rns=CPythonNetworkStream::Instance();
  1327. rns.SendGuildDeleteCommentPacket(iIndex);
  1328. return Py_BuildNone();
  1329. }
  1330. PyObject* netSendGuildRefreshCommentsPacket(PyObject* poSelf, PyObject* poArgs)
  1331. {
  1332. int iHightestIndex;
  1333. if (!PyTuple_GetInteger(poArgs, 0, &iHightestIndex))
  1334. return Py_BuildException();
  1335. CPythonNetworkStream& rns=CPythonNetworkStream::Instance();
  1336. rns.SendGuildRefreshCommentsPacket(iHightestIndex);
  1337. return Py_BuildNone();
  1338. }
  1339. PyObject* netSendGuildChangeMemberGradePacket(PyObject* poSelf, PyObject* poArgs)
  1340. {
  1341. int iPID;
  1342. if (!PyTuple_GetInteger(poArgs, 0, &iPID))
  1343. return Py_BuildException();
  1344. int iGradeNumber;
  1345. if (!PyTuple_GetInteger(poArgs, 1, &iGradeNumber))
  1346. return Py_BuildException();
  1347. CPythonNetworkStream& rns=CPythonNetworkStream::Instance();
  1348. rns.SendGuildChangeMemberGradePacket(iPID, iGradeNumber);
  1349. return Py_BuildNone();
  1350. }
  1351. PyObject* netSendGuildUseSkillPacket(PyObject* poSelf, PyObject* poArgs)
  1352. {
  1353. int iSkillID;
  1354. if (!PyTuple_GetInteger(poArgs, 0, &iSkillID))
  1355. return Py_BuildException();
  1356. int iTargetVID;
  1357. if (!PyTuple_GetInteger(poArgs, 1, &iTargetVID))
  1358. return Py_BuildException();
  1359. CPythonNetworkStream& rns=CPythonNetworkStream::Instance();
  1360. rns.SendGuildUseSkillPacket(iSkillID, iTargetVID);
  1361. return Py_BuildNone();
  1362. }
  1363. PyObject* netSendGuildChangeMemberGeneralPacket(PyObject* poSelf, PyObject* poArgs)
  1364. {
  1365. int iPID;
  1366. if (!PyTuple_GetInteger(poArgs, 0, &iPID))
  1367. return Py_BuildException();
  1368. int iFlag;
  1369. if (!PyTuple_GetInteger(poArgs, 1, &iFlag))
  1370. return Py_BuildException();
  1371. CPythonNetworkStream& rns=CPythonNetworkStream::Instance();
  1372. rns.SendGuildChangeMemberGeneralPacket(iPID, iFlag);
  1373. return Py_BuildNone();
  1374. }
  1375. PyObject* netSendGuildInviteAnswerPacket(PyObject* poSelf, PyObject* poArgs)
  1376. {
  1377. int iGuildID;
  1378. if (!PyTuple_GetInteger(poArgs, 0, &iGuildID))
  1379. return Py_BuildException();
  1380. int iAnswer;
  1381. if (!PyTuple_GetInteger(poArgs, 1, &iAnswer))
  1382. return Py_BuildException();
  1383. CPythonNetworkStream& rns=CPythonNetworkStream::Instance();
  1384. rns.SendGuildInviteAnswerPacket(iGuildID, iAnswer);
  1385. return Py_BuildNone();
  1386. }
  1387. PyObject* netSendGuildChargeGSPPacket(PyObject* poSelf, PyObject* poArgs)
  1388. {
  1389. int iGSP;
  1390. if (!PyTuple_GetInteger(poArgs, 0, &iGSP))
  1391. return Py_BuildException();
  1392. CPythonNetworkStream& rns=CPythonNetworkStream::Instance();
  1393. rns.SendGuildChargeGSPPacket(iGSP);
  1394. return Py_BuildNone();
  1395. }
  1396. PyObject* netSendGuildDepositMoneyPacket(PyObject* poSelf, PyObject* poArgs)
  1397. {
  1398. int iGSP;
  1399. if (!PyTuple_GetInteger(poArgs, 0, &iGSP))
  1400. return Py_BuildException();
  1401. CPythonNetworkStream& rns=CPythonNetworkStream::Instance();
  1402. rns.SendGuildDepositMoneyPacket(iGSP);
  1403. return Py_BuildNone();
  1404. }
  1405. PyObject* netSendGuildWithdrawMoneyPacket(PyObject* poSelf, PyObject* poArgs)
  1406. {
  1407. int iGSP;
  1408. if (!PyTuple_GetInteger(poArgs, 0, &iGSP))
  1409. return Py_BuildException();
  1410. CPythonNetworkStream& rns=CPythonNetworkStream::Instance();
  1411. rns.SendGuildWithdrawMoneyPacket(iGSP);
  1412. return Py_BuildNone();
  1413. }
  1414. PyObject* netSendRequestRefineInfoPacket(PyObject* poSelf, PyObject* poArgs)
  1415. {
  1416. int iSlotIndex;
  1417. if (!PyTuple_GetInteger(poArgs, 0, &iSlotIndex))
  1418. return Py_BuildException();
  1419. // CPythonNetworkStream& rns=CPythonNetworkStream::Instance();
  1420. // rns.SendRequestRefineInfoPacket(iSlotIndex);
  1421. assert(!"netSendRequestRefineInfoPacket - 더이상 사용하지 않는 함수 입니다");
  1422. return Py_BuildNone();
  1423. }
  1424. PyObject* netSendRefinePacket(PyObject* poSelf, PyObject* poArgs)
  1425. {
  1426. int iSlotIndex;
  1427. if (!PyTuple_GetInteger(poArgs, 0, &iSlotIndex))
  1428. return Py_BuildException();
  1429. int iType;
  1430. if (!PyTuple_GetInteger(poArgs, 1, &iType))
  1431. return Py_BuildException();
  1432. CPythonNetworkStream& rns=CPythonNetworkStream::Instance();
  1433. rns.SendRefinePacket(iSlotIndex, iType);
  1434. return Py_BuildNone();
  1435. }
  1436. PyObject* netSendSelectItemPacket(PyObject* poSelf, PyObject* poArgs)
  1437. {
  1438. int iItemPos;
  1439. if (!PyTuple_GetInteger(poArgs, 0, &iItemPos))
  1440. return Py_BuildException();
  1441. CPythonNetworkStream& rns=CPythonNetworkStream::Instance();
  1442. rns.SendSelectItemPacket(iItemPos);
  1443. return Py_BuildNone();
  1444. }
  1445. PyObject* netSetPacketSequenceMode(PyObject* poSelf, PyObject* poArgs)
  1446. {
  1447. CPythonNetworkStream& rns=CPythonNetworkStream::Instance();
  1448. CAccountConnector & rkAccountConnector = CAccountConnector::Instance();
  1449. rns.SetPacketSequenceMode(true);
  1450. rkAccountConnector.SetPacketSequenceMode(true);
  1451. return Py_BuildNone();
  1452. }
  1453. PyObject* netSetEmpireLanguageMode(PyObject* poSelf, PyObject* poArgs)
  1454. {
  1455. int iMode;
  1456. if (!PyTuple_GetInteger(poArgs, 0, &iMode))
  1457. return Py_BuildException();
  1458. //CPythonNetworkStream& rns=CPythonNetworkStream::Instance();
  1459. gs_bEmpireLanuageEnable = iMode;
  1460. return Py_BuildNone();
  1461. }
  1462. PyObject* netSetSkillGroupFake(PyObject* poSelf, PyObject* poArgs)
  1463. {
  1464. int iIndex;
  1465. if (!PyTuple_GetInteger(poArgs, 0, &iIndex))
  1466. return Py_BuildException();
  1467. CPythonNetworkStream& rns=CPythonNetworkStream::Instance();
  1468. rns.__TEST_SetSkillGroupFake(iIndex);
  1469. return Py_BuildNone();
  1470. }
  1471. #include "GuildMarkUploader.h"
  1472. #include "GuildMarkDownloader.h"
  1473. PyObject* netSendGuildSymbol(PyObject* poSelf, PyObject* poArgs)
  1474. {
  1475. char * szIP;
  1476. if (!PyTuple_GetString(poArgs, 0, &szIP))
  1477. return Py_BuildException();
  1478. int iPort;
  1479. if (!PyTuple_GetInteger(poArgs, 1, &iPort))
  1480. return Py_BuildException();
  1481. char * szFileName;
  1482. if (!PyTuple_GetString(poArgs, 2, &szFileName))
  1483. return Py_BuildException();
  1484. int iGuildID;
  1485. if (!PyTuple_GetInteger(poArgs, 3, &iGuildID))
  1486. return Py_BuildException();
  1487. CNetworkAddress kAddress;
  1488. kAddress.Set(szIP, iPort);
  1489. UINT uiError;
  1490. CGuildMarkUploader& rkGuildMarkUploader=CGuildMarkUploader::Instance();
  1491. if (!rkGuildMarkUploader.ConnectToSendSymbol(kAddress, 0, 0, iGuildID, szFileName, &uiError))
  1492. {
  1493. assert(!"Failed connecting to send symbol");
  1494. }
  1495. return Py_BuildNone();
  1496. }
  1497. PyObject* netDisconnectUploader(PyObject* poSelf, PyObject* poArgs)
  1498. {
  1499. CGuildMarkUploader& rkGuildMarkUploader=CGuildMarkUploader::Instance();
  1500. rkGuildMarkUploader.Disconnect();
  1501. return Py_BuildNone();
  1502. }
  1503. PyObject* netRecvGuildSymbol(PyObject* poSelf, PyObject* poArgs)
  1504. {
  1505. char * szIP;
  1506. if (!PyTuple_GetString(poArgs, 0, &szIP))
  1507. return Py_BuildException();
  1508. int iPort;
  1509. if (!PyTuple_GetInteger(poArgs, 1, &iPort))
  1510. return Py_BuildException();
  1511. int iGuildID;
  1512. if (!PyTuple_GetInteger(poArgs, 2, &iGuildID))
  1513. return Py_BuildException();
  1514. CNetworkAddress kAddress;
  1515. kAddress.Set(szIP, iPort);
  1516. std::vector<DWORD> kVec_dwGuildID;
  1517. kVec_dwGuildID.clear();
  1518. kVec_dwGuildID.push_back(iGuildID);
  1519. #ifdef SEQUENCE_LOG_FIX
  1520. if (kVec_dwGuildID.size()>0)
  1521. {
  1522. CGuildMarkDownloader& rkGuildMarkDownloader=CGuildMarkDownloader::Instance();
  1523. if (!rkGuildMarkDownloader.ConnectToRecvSymbol(kAddress, 0, 0, kVec_dwGuildID))
  1524. {
  1525. assert(!"Failed connecting to recv symbol");
  1526. }
  1527. }
  1528. #else
  1529. CGuildMarkDownloader& rkGuildMarkDownloader=CGuildMarkDownloader::Instance();
  1530. if (!rkGuildMarkDownloader.ConnectToRecvSymbol(kAddress, 0, 0, kVec_dwGuildID))
  1531. {
  1532. assert(!"Failed connecting to recv symbol");
  1533. }
  1534. #endif
  1535. return Py_BuildNone();
  1536. }
  1537. PyObject* netRegisterErrorLog(PyObject* poSelf, PyObject* poArgs)
  1538. {
  1539. char * szLog;
  1540. if (!PyTuple_GetString(poArgs, 0, &szLog))
  1541. return Py_BuildException();
  1542. return Py_BuildNone();
  1543. }
  1544. #ifdef ENABLE_PRIVATESHOP_SEARCH_SYSTEM
  1545. PyObject* netSendShopSearchInfo(PyObject* poSelf, PyObject* poArgs)
  1546. {
  1547. BYTE bJob;
  1548. if (!PyTuple_GetByte(poArgs, 0, &bJob))
  1549. return Py_BuildException();
  1550. BYTE bItemType;
  1551. if (!PyTuple_GetByte(poArgs, 1, &bItemType))
  1552. return Py_BuildException();
  1553. BYTE bItemSubType;
  1554. if (!PyTuple_GetByte(poArgs, 2, &bItemSubType))
  1555. return Py_BuildException();
  1556. BYTE bMinLevel;
  1557. if (!PyTuple_GetByte(poArgs, 3, &bMinLevel))
  1558. return Py_BuildException();
  1559. BYTE bMaxLevel;
  1560. if (!PyTuple_GetByte(poArgs, 4, &bMaxLevel))
  1561. return Py_BuildException();
  1562. BYTE bMinRefine;
  1563. if (!PyTuple_GetByte(poArgs, 5, &bMinRefine))
  1564. return Py_BuildException();
  1565. BYTE bMaxRefine;
  1566. if (!PyTuple_GetByte(poArgs, 6, &bMaxRefine))
  1567. return Py_BuildException();
  1568. int iMinGold;
  1569. if (!PyTuple_GetInteger(poArgs, 7, &iMinGold))
  1570. return Py_BuildException();
  1571. int iMaxGold;
  1572. if (!PyTuple_GetInteger(poArgs, 8, &iMaxGold))
  1573. return Py_BuildException();
  1574. int iMinCheque;
  1575. if (!PyTuple_GetInteger(poArgs, 9, &iMinCheque))
  1576. return Py_BuildException();
  1577. int iMaxCheque;
  1578. if (!PyTuple_GetInteger(poArgs, 10, &iMaxCheque))
  1579. return Py_BuildException();
  1580. char * szItemName;
  1581. if (!PyTuple_GetString(poArgs, 11, &szItemName))
  1582. return Py_BuildException();
  1583. bool bNameOnly;
  1584. if (!PyTuple_GetBoolean(poArgs, 12, &bNameOnly))
  1585. return Py_BuildException();
  1586. CPythonNetworkStream& rkNetStream = CPythonNetworkStream::Instance();
  1587. rkNetStream.SendShopSearchInfo(bJob, bItemType, bItemSubType, bMinLevel, bMaxLevel, bMinRefine, bMaxRefine, iMinGold, iMaxGold, iMinCheque, iMaxCheque, szItemName, bNameOnly);
  1588. return Py_BuildNone();
  1589. }
  1590. PyObject* netSendShopSerchBuyItem(PyObject* poSelf, PyObject* poArgs)
  1591. {
  1592. int iShopVID;
  1593. if (!PyTuple_GetInteger(poArgs, 0, &iShopVID))
  1594. return Py_BuildException();
  1595. BYTE bItemPos;
  1596. if (!PyTuple_GetByte(poArgs, 1, &bItemPos))
  1597. return Py_BuildException();
  1598. CPythonNetworkStream& rkNetStream = CPythonNetworkStream::Instance();
  1599. rkNetStream.SendShopSerchBuyItem(iShopVID, bItemPos);
  1600. return Py_BuildNone();
  1601. }
  1602. #endif
  1603. #ifdef ENABLE_SHOW_CHEST_DROP
  1604. PyObject* netSendChestDropInfo(PyObject* poSelf, PyObject* poArgs)
  1605. {
  1606. int iSlotIndex;
  1607. if (!PyTuple_GetInteger(poArgs, 0, &iSlotIndex))
  1608. return Py_BadArgument();
  1609. CPythonNetworkStream& rkNetStream = CPythonNetworkStream::Instance();
  1610. rkNetStream.SendChestDropInfo(iSlotIndex);
  1611. return Py_BuildNone();
  1612. }
  1613. #endif
  1614. void initnet()
  1615. {
  1616. static PyMethodDef s_methods[] =
  1617. {
  1618. { "GetBettingGuildWarValue", netGetBettingGuildWarValue, METH_VARARGS },
  1619. { "EnableChatInsultFilter", netEnableChatInsultFilter, METH_VARARGS },
  1620. { "SetServerInfo", netSetServerInfo, METH_VARARGS },
  1621. { "GetServerInfo", netGetServerInfo, METH_VARARGS },
  1622. { "PreserveServerCommand", netPreserveServerCommand, METH_VARARGS },
  1623. { "GetPreservedServerCommand", netGetPreservedServerCommand, METH_VARARGS },
  1624. { "StartGame", netStartGame, METH_VARARGS },
  1625. { "Warp", netWarp, METH_VARARGS },
  1626. { "IsTest", netIsTest, METH_VARARGS },
  1627. { "SetMarkServer", netSetMarkServer, METH_VARARGS },
  1628. { "IsChatInsultIn", netIsChatInsultIn, METH_VARARGS },
  1629. { "IsInsultIn", netIsInsultIn, METH_VARARGS },
  1630. { "LoadInsultList", netLoadInsultList, METH_VARARGS },
  1631. { "UploadMark", netUploadMark, METH_VARARGS },
  1632. { "UploadSymbol", netUploadSymbol, METH_VARARGS },
  1633. { "GetGuildID", netGetGuildID, METH_VARARGS },
  1634. { "GetEmpireID", netGetEmpireID, METH_VARARGS },
  1635. { "GetMainActorVID", netGetMainActorVID, METH_VARARGS },
  1636. { "GetMainActorRace", netGetMainActorRace, METH_VARARGS },
  1637. { "GetMainActorEmpire", netGetMainActorEmpire, METH_VARARGS },
  1638. { "GetMainActorSkillGroup", netGetMainActorSkillGroup, METH_VARARGS },
  1639. { "GetAccountCharacterSlotDataInteger", netGetAccountCharacterSlotDataInteger, METH_VARARGS },
  1640. { "GetAccountCharacterSlotDataString", netGetAccountCharacterSlotDataString, METH_VARARGS },
  1641. // FIELD_MUSIC
  1642. { "GetFieldMusicFileName", netGetFieldMusicFileName, METH_VARARGS },
  1643. { "GetFieldMusicVolume", netGetFieldMusicVolume, METH_VARARGS },
  1644. // END_OF_FIELD_MUSIC
  1645. { "ToggleGameDebugInfo", netToggleGameDebugInfo, METH_VARARGS },
  1646. { "SetGuvenli", netSetGuvenli, METH_VARARGS },
  1647. { "SetLoginInfo", netSetLoginInfo, METH_VARARGS },
  1648. #ifdef OFFICIAL_KARAKTER_NAME_FIX
  1649. { "GetLoginID", netGetLoginID, METH_VARARGS },
  1650. #endif
  1651. { "SetPhaseWindow", netSetPhaseWindow, METH_VARARGS },
  1652. { "ClearPhaseWindow", netClearPhaseWindow, METH_VARARGS },
  1653. { "SetServerCommandParserWindow", netSetServerCommandParserWindow, METH_VARARGS },
  1654. { "SetAccountConnectorHandler", netSetAccountConnectorHandler, METH_VARARGS },
  1655. { "SetHandler", netSetHandler, METH_VARARGS },
  1656. { "SetTCPRecvBufferSize", netSetTCPRecvBufferSize, METH_VARARGS },
  1657. { "SetTCPSendBufferSize", netSetTCPSendBufferSize, METH_VARARGS },
  1658. { "SetUDPRecvBufferSize", netSetUDPRecvBufferSize, METH_VARARGS },
  1659. { "DirectEnter", netDirectEnter, METH_VARARGS },
  1660. { "LogOutGame", netLogOutGame, METH_VARARGS },
  1661. { "ExitGame", netExitGame, METH_VARARGS },
  1662. { "ExitApplication", netExitApplication, METH_VARARGS },
  1663. { "ConnectTCP", netConnectTCP, METH_VARARGS },
  1664. { "ConnectUDP", netConnectUDP, METH_VARARGS },
  1665. { "ConnectToAccountServer", netConnectToAccountServer, METH_VARARGS },
  1666. #ifdef ENABLE_SEND_TARGET_INFO
  1667. { "SendTargetInfoLoad", netTargetInfoLoad, METH_VARARGS },
  1668. #endif
  1669. { "SendLoginPacket", netSendLoginPacket, METH_VARARGS },
  1670. { "SendSelectEmpirePacket", netSendSelectEmpirePacket, METH_VARARGS },
  1671. { "SendSelectCharacterPacket", netSendSelectCharacterPacket, METH_VARARGS },
  1672. { "SendChangeNamePacket", netSendChangeNamePacket, METH_VARARGS },
  1673. { "SendCreateCharacterPacket", netSendCreateCharacterPacket, METH_VARARGS },
  1674. { "SendDestroyCharacterPacket", netSendDestroyCharacterPacket, METH_VARARGS },
  1675. { "SendEnterGamePacket", netSendEnterGamePacket, METH_VARARGS },
  1676. { "SendItemUsePacket", netSendItemUsePacket, METH_VARARGS },
  1677. { "SendItemUseToItemPacket", netSendItemUseToItemPacket, METH_VARARGS },
  1678. { "SendItemDropPacket", netSendItemDropPacket, METH_VARARGS },
  1679. { "SendItemDropPacketNew", netSendItemDropPacketNew, METH_VARARGS },
  1680. { "SendElkDropPacket", netSendElkDropPacket, METH_VARARGS },
  1681. { "SendItemDestroyPacket", netSendItemDestroyPacket, METH_VARARGS },
  1682. { "SendItemSellPacket", netSendItemSellPacket, METH_VARARGS },
  1683. { "SendGoldDropPacketNew", netSendGoldDropPacketNew, METH_VARARGS },
  1684. { "SendItemMovePacket", netSendItemMovePacket, METH_VARARGS },
  1685. { "SendItemPickUpPacket", netSendItemPickUpPacket, METH_VARARGS },
  1686. { "SendGiveItemPacket", netSendGiveItemPacket, METH_VARARGS },
  1687. { "SetOfflinePhase", netSetOfflinePhase, METH_VARARGS },
  1688. { "Disconnect", netDisconnect, METH_VARARGS },
  1689. { "IsConnect", netIsConnect, METH_VARARGS },
  1690. { "SendChatPacket", netSendChatPacket, METH_VARARGS },
  1691. { "SendEmoticon", netSendEmoticon, METH_VARARGS },
  1692. { "SendWhisperPacket", netSendWhisperPacket, METH_VARARGS },
  1693. { "SendMobileMessagePacket", netSendMobileMessagePacket, METH_VARARGS },
  1694. { "SendCharacterPositionPacket", netSendCharacterPositionPacket, METH_VARARGS },
  1695. { "SendShopEndPacket", netSendShopEndPacket, METH_VARARGS },
  1696. { "SendShopBuyPacket", netSendShopBuyPacket, METH_VARARGS },
  1697. { "SendShopSellPacket", netSendShopSellPacket, METH_VARARGS },
  1698. { "SendShopSellPacketNew", netSendShopSellPacketNew, METH_VARARGS },
  1699. // BEGIN_OFFLINE_SHOP
  1700. { "SendOfflineShopEndPacket", netSendOfflineShopEndPacket, METH_VARARGS },
  1701. { "SendOfflineShopBuyPacket", netSendOfflineShopBuyPacket, METH_VARARGS },
  1702. { "SendAddOfflineShopItemPacket", netSendAddOfflineShopItemPacket, METH_VARARGS },
  1703. { "SendDestroyOfflineShop", netSendDestroyOfflineShop, METH_VARARGS },
  1704. // END_OF_OFFLINE_SHOP
  1705. { "SendExchangeStartPacket", netSendExchangeStartPacket, METH_VARARGS },
  1706. { "SendExchangeItemAddPacket", netSendExchangeItemAddPacket, METH_VARARGS },
  1707. { "SendExchangeItemDelPacket", netSendExchangeItemDelPacket, METH_VARARGS },
  1708. { "SendExchangeElkAddPacket", netSendExchangeElkAddPacket, METH_VARARGS },
  1709. { "SendExchangeAcceptPacket", netSendExchangeAcceptPacket, METH_VARARGS },
  1710. { "SendExchangeExitPacket", netSendExchangeExitPacket, METH_VARARGS },
  1711. #ifdef ENABLE_CHEQUE_SYSTEM
  1712. { "SendExchangeChequeAddPacket", netSendExchangeChequeAddPacket, METH_VARARGS },
  1713. #endif
  1714. { "SendOnClickPacket", netOnClickPacket, METH_VARARGS },
  1715. #ifdef ENABLE_SERVERINFO_MY_CLIENT
  1716. { "GetServer_IPNAME", netGetServer_IPNAME, METH_VARARGS },
  1717. { "GetServer_PORT", netGetServer_PORT, METH_VARARGS },
  1718. #endif
  1719. { "GetServer_IPNAME", netGetServer_IPNAME, METH_VARARGS },
  1720. { "GetServer_PORT", netGetServer_PORT, METH_VARARGS },
  1721. // Emoticon String
  1722. { "RegisterEmoticonString", netRegisterEmoticonString, METH_VARARGS },
  1723. // Messenger
  1724. { "SendMessengerAddByVIDPacket", netSendMessengerAddByVIDPacket, METH_VARARGS },
  1725. { "SendMessengerAddByNamePacket", netSendMessengerAddByNamePacket, METH_VARARGS },
  1726. { "SendMessengerRemovePacket", netSendMessengerRemovePacket, METH_VARARGS },
  1727. // Party
  1728. { "SendPartyInvitePacket", netSendPartyInvitePacket, METH_VARARGS },
  1729. { "SendPartyInviteAnswerPacket", netSendPartyInviteAnswerPacket, METH_VARARGS },
  1730. { "SendPartyExitPacket", netSendPartyExitPacket, METH_VARARGS },
  1731. { "SendPartyRemovePacket", netSendPartyRemovePacket, METH_VARARGS },
  1732. { "SendPartySetStatePacket", netSendPartySetStatePacket, METH_VARARGS },
  1733. { "SendPartyUseSkillPacket", netSendPartyUseSkillPacket, METH_VARARGS },
  1734. { "SendPartyParameterPacket", netSendPartyParameterPacket, METH_VARARGS },
  1735. // Safebox
  1736. { "SendSafeboxSaveMoneyPacket", netSendSafeboxSaveMoneyPacket, METH_VARARGS },
  1737. { "SendSafeboxWithdrawMoneyPacket", netSendSafeboxWithdrawMoneyPacket, METH_VARARGS },
  1738. { "SendSafeboxCheckinPacket", netSendSafeboxCheckinPacket, METH_VARARGS },
  1739. { "SendSafeboxCheckoutPacket", netSendSafeboxCheckoutPacket, METH_VARARGS },
  1740. { "SendSafeboxItemMovePacket", netSendSafeboxItemMovePacket, METH_VARARGS },
  1741. // Mall
  1742. { "SendMallCheckoutPacket", netSendMallCheckoutPacket, METH_VARARGS },
  1743. // Guild
  1744. { "SendAnswerMakeGuildPacket", netSendAnswerMakeGuildPacket, METH_VARARGS },
  1745. { "SendQuestInputStringPacket", netSendQuestInputStringPacket, METH_VARARGS },
  1746. { "SendQuestConfirmPacket", netSendQuestConfirmPacket, METH_VARARGS },
  1747. { "SendGuildAddMemberPacket", netSendGuildAddMemberPacket, METH_VARARGS },
  1748. { "SendGuildRemoveMemberPacket", netSendGuildRemoveMemberPacket, METH_VARARGS },
  1749. { "SendGuildChangeGradeNamePacket", netSendGuildChangeGradeNamePacket, METH_VARARGS },
  1750. { "SendGuildChangeGradeAuthorityPacket", netSendGuildChangeGradeAuthorityPacket, METH_VARARGS },
  1751. { "SendGuildOfferPacket", netSendGuildOfferPacket, METH_VARARGS },
  1752. { "SendGuildPostCommentPacket", netSnedGuildPostCommentPacket, METH_VARARGS },
  1753. { "SendGuildDeleteCommentPacket", netSnedGuildDeleteCommentPacket, METH_VARARGS },
  1754. { "SendGuildRefreshCommentsPacket", netSendGuildRefreshCommentsPacket, METH_VARARGS },
  1755. { "SendGuildChangeMemberGradePacket", netSendGuildChangeMemberGradePacket, METH_VARARGS },
  1756. { "SendGuildUseSkillPacket", netSendGuildUseSkillPacket, METH_VARARGS },
  1757. { "SendGuildChangeMemberGeneralPacket", netSendGuildChangeMemberGeneralPacket, METH_VARARGS },
  1758. { "SendGuildInviteAnswerPacket", netSendGuildInviteAnswerPacket, METH_VARARGS },
  1759. { "SendGuildChargeGSPPacket", netSendGuildChargeGSPPacket, METH_VARARGS },
  1760. { "SendGuildDepositMoneyPacket", netSendGuildDepositMoneyPacket, METH_VARARGS },
  1761. { "SendGuildWithdrawMoneyPacket", netSendGuildWithdrawMoneyPacket, METH_VARARGS },
  1762. // Refine
  1763. { "SendRequestRefineInfoPacket", netSendRequestRefineInfoPacket, METH_VARARGS },
  1764. { "SendRefinePacket", netSendRefinePacket, METH_VARARGS },
  1765. { "SendSelectItemPacket", netSendSelectItemPacket, METH_VARARGS },
  1766. // SYSTEM
  1767. { "SetPacketSequenceMode", netSetPacketSequenceMode, METH_VARARGS },
  1768. { "SetEmpireLanguageMode", netSetEmpireLanguageMode, METH_VARARGS },
  1769. // For Test
  1770. { "SetSkillGroupFake", netSetSkillGroupFake, METH_VARARGS },
  1771. // Guild Symbol
  1772. { "SendGuildSymbol", netSendGuildSymbol, METH_VARARGS },
  1773. { "DisconnectUploader", netDisconnectUploader, METH_VARARGS },
  1774. { "RecvGuildSymbol", netRecvGuildSymbol, METH_VARARGS },
  1775. // Log
  1776. { "RegisterErrorLog", netRegisterErrorLog, METH_VARARGS },
  1777. #ifdef ENABLE_SHOW_CHEST_DROP
  1778. { "SendChestDropInfo", netSendChestDropInfo, METH_VARARGS },
  1779. #endif
  1780. #ifdef ENABLE_PRIVATESHOP_SEARCH_SYSTEM
  1781. { "SendShopSearchInfo", netSendShopSearchInfo, METH_VARARGS },
  1782. { "SendShopSerchBuyItem", netSendShopSerchBuyItem, METH_VARARGS },
  1783. #endif
  1784. { NULL, NULL, NULL },
  1785. };
  1786. PyObject* poModule = Py_InitModule("net", s_methods);
  1787. PyModule_AddIntConstant(poModule, "ERROR_NONE", CPythonNetworkStream::ERROR_NONE);
  1788. PyModule_AddIntConstant(poModule, "ERROR_CONNECT_MARK_SERVER", CPythonNetworkStream::ERROR_CONNECT_MARK_SERVER);
  1789. PyModule_AddIntConstant(poModule, "ERROR_LOAD_MARK", CPythonNetworkStream::ERROR_LOAD_MARK);
  1790. PyModule_AddIntConstant(poModule, "ERROR_MARK_WIDTH", CPythonNetworkStream::ERROR_MARK_WIDTH);
  1791. PyModule_AddIntConstant(poModule, "ERROR_MARK_HEIGHT", CPythonNetworkStream::ERROR_MARK_HEIGHT);
  1792. // MARK_BUG_FIX
  1793. PyModule_AddIntConstant(poModule, "ERROR_MARK_UPLOAD_NEED_RECONNECT", CPythonNetworkStream::ERROR_MARK_UPLOAD_NEED_RECONNECT);
  1794. PyModule_AddIntConstant(poModule, "ERROR_MARK_CHECK_NEED_RECONNECT", CPythonNetworkStream::ERROR_MARK_CHECK_NEED_RECONNECT);
  1795. // END_OF_MARK_BUG_FIX
  1796. PyModule_AddIntConstant(poModule, "PHASE_WINDOW_LOGIN", CPythonNetworkStream::PHASE_WINDOW_LOGIN);
  1797. PyModule_AddIntConstant(poModule, "PHASE_WINDOW_SELECT", CPythonNetworkStream::PHASE_WINDOW_SELECT);
  1798. PyModule_AddIntConstant(poModule, "PHASE_WINDOW_CREATE", CPythonNetworkStream::PHASE_WINDOW_CREATE);
  1799. PyModule_AddIntConstant(poModule, "PHASE_WINDOW_LOAD", CPythonNetworkStream::PHASE_WINDOW_LOAD);
  1800. PyModule_AddIntConstant(poModule, "PHASE_WINDOW_GAME", CPythonNetworkStream::PHASE_WINDOW_GAME);
  1801. PyModule_AddIntConstant(poModule, "PHASE_WINDOW_EMPIRE", CPythonNetworkStream::PHASE_WINDOW_EMPIRE);
  1802. PyModule_AddIntConstant(poModule, "PHASE_WINDOW_LOGO", CPythonNetworkStream::PHASE_WINDOW_LOGO);
  1803. PyModule_AddIntConstant(poModule, "ACCOUNT_CHARACTER_SLOT_ID", CPythonNetworkStream::ACCOUNT_CHARACTER_SLOT_ID);
  1804. PyModule_AddIntConstant(poModule, "ACCOUNT_CHARACTER_SLOT_NAME", CPythonNetworkStream::ACCOUNT_CHARACTER_SLOT_NAME);
  1805. PyModule_AddIntConstant(poModule, "ACCOUNT_CHARACTER_SLOT_RACE", CPythonNetworkStream::ACCOUNT_CHARACTER_SLOT_RACE);
  1806. PyModule_AddIntConstant(poModule, "ACCOUNT_CHARACTER_SLOT_LEVEL", CPythonNetworkStream::ACCOUNT_CHARACTER_SLOT_LEVEL);
  1807. PyModule_AddIntConstant(poModule, "ACCOUNT_CHARACTER_SLOT_STR", CPythonNetworkStream::ACCOUNT_CHARACTER_SLOT_STR);
  1808. PyModule_AddIntConstant(poModule, "ACCOUNT_CHARACTER_SLOT_DEX", CPythonNetworkStream::ACCOUNT_CHARACTER_SLOT_DEX);
  1809. PyModule_AddIntConstant(poModule, "ACCOUNT_CHARACTER_SLOT_INT", CPythonNetworkStream::ACCOUNT_CHARACTER_SLOT_INT);
  1810. PyModule_AddIntConstant(poModule, "ACCOUNT_CHARACTER_SLOT_HTH", CPythonNetworkStream::ACCOUNT_CHARACTER_SLOT_HTH);
  1811. PyModule_AddIntConstant(poModule, "ACCOUNT_CHARACTER_SLOT_PLAYTIME", CPythonNetworkStream::ACCOUNT_CHARACTER_SLOT_PLAYTIME);
  1812. PyModule_AddIntConstant(poModule, "ACCOUNT_CHARACTER_SLOT_FORM", CPythonNetworkStream::ACCOUNT_CHARACTER_SLOT_FORM);
  1813. PyModule_AddIntConstant(poModule, "ACCOUNT_CHARACTER_SLOT_ADDR", CPythonNetworkStream::ACCOUNT_CHARACTER_SLOT_ADDR);
  1814. PyModule_AddIntConstant(poModule, "ACCOUNT_CHARACTER_SLOT_PORT", CPythonNetworkStream::ACCOUNT_CHARACTER_SLOT_PORT);
  1815. PyModule_AddIntConstant(poModule, "ACCOUNT_CHARACTER_SLOT_GUILD_ID", CPythonNetworkStream::ACCOUNT_CHARACTER_SLOT_GUILD_ID);
  1816. PyModule_AddIntConstant(poModule, "ACCOUNT_CHARACTER_SLOT_GUILD_NAME", CPythonNetworkStream::ACCOUNT_CHARACTER_SLOT_GUILD_NAME);
  1817. PyModule_AddIntConstant(poModule, "ACCOUNT_CHARACTER_SLOT_CHANGE_NAME_FLAG", CPythonNetworkStream::ACCOUNT_CHARACTER_SLOT_CHANGE_NAME_FLAG);
  1818. PyModule_AddIntConstant(poModule, "ACCOUNT_CHARACTER_SLOT_HAIR", CPythonNetworkStream::ACCOUNT_CHARACTER_SLOT_HAIR);
  1819. #ifdef ENABLE_SASH_SYSTEM
  1820. PyModule_AddIntConstant(poModule, "ACCOUNT_CHARACTER_SLOT_SASH", CPythonNetworkStream::ACCOUNT_CHARACTER_SLOT_SASH);
  1821. #endif
  1822. PyModule_AddIntConstant(poModule, "SERVER_COMMAND_LOG_OUT", CPythonNetworkStream::SERVER_COMMAND_LOG_OUT);
  1823. PyModule_AddIntConstant(poModule, "SERVER_COMMAND_RETURN_TO_SELECT_CHARACTER", CPythonNetworkStream::SERVER_COMMAND_RETURN_TO_SELECT_CHARACTER);
  1824. PyModule_AddIntConstant(poModule, "SERVER_COMMAND_QUIT", CPythonNetworkStream::SERVER_COMMAND_QUIT);
  1825. PyModule_AddIntConstant(poModule, "EMPIRE_A", 1);
  1826. PyModule_AddIntConstant(poModule, "EMPIRE_B", 2);
  1827. PyModule_AddIntConstant(poModule, "EMPIRE_C", 3);
  1828. PyModule_AddIntConstant(poModule, "DS_SUB_HEADER_REFINE_FAIL", DS_SUB_HEADER_REFINE_FAIL);
  1829. PyModule_AddIntConstant(poModule, "DS_SUB_HEADER_REFINE_FAIL_MAX_REFINE", DS_SUB_HEADER_REFINE_FAIL_MAX_REFINE);
  1830. PyModule_AddIntConstant(poModule, "DS_SUB_HEADER_REFINE_FAIL_INVALID_MATERIAL", DS_SUB_HEADER_REFINE_FAIL_INVALID_MATERIAL);
  1831. PyModule_AddIntConstant(poModule, "DS_SUB_HEADER_REFINE_FAIL_NOT_ENOUGH_MONEY", DS_SUB_HEADER_REFINE_FAIL_NOT_ENOUGH_MONEY);
  1832. PyModule_AddIntConstant(poModule, "DS_SUB_HEADER_REFINE_FAIL_NOT_ENOUGH_MATERIAL", DS_SUB_HEADER_REFINE_FAIL_NOT_ENOUGH_MATERIAL);
  1833. PyModule_AddIntConstant(poModule, "DS_SUB_HEADER_REFINE_FAIL_TOO_MUCH_MATERIAL", DS_SUB_HEADER_REFINE_FAIL_TOO_MUCH_MATERIAL);
  1834. PyModule_AddIntConstant(poModule, "DS_SUB_HEADER_REFINE_SUCCEED", DS_SUB_HEADER_REFINE_SUCCEED);
  1835. }