Lobby2ClientSample.cpp 33 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028
  1. /*
  2. * Copyright (c) 2014, Oculus VR, Inc.
  3. * All rights reserved.
  4. *
  5. * This source code is licensed under the BSD-style license found in the
  6. * LICENSE file in the root directory of this source tree. An additional grant
  7. * of patent rights can be found in the PATENTS file in the same directory.
  8. *
  9. */
  10. #include "Lobby2Message.h"
  11. #include "RakPeerInterface.h"
  12. #include "MessageIdentifiers.h"
  13. #include "Lobby2Client.h"
  14. #include "Kbhit.h"
  15. #include "RakSleep.h"
  16. #include "RoomsErrorCodes.h"
  17. #include "DS_Queue.h"
  18. #include <ctype.h>
  19. #include <stdlib.h>
  20. #include "LinuxStrings.h"
  21. #include "Gets.h"
  22. static const int NUM_CONNECTIONS=2;
  23. RakNet::Lobby2Client lobby2Client[NUM_CONNECTIONS];
  24. RakNet::Lobby2MessageFactory messageFactory;
  25. RakNet::RakString testUserName[NUM_CONNECTIONS];
  26. RakNet::RakPeerInterface *rakPeer[NUM_CONNECTIONS];
  27. struct AutoExecutionPlanNode
  28. {
  29. AutoExecutionPlanNode() {}
  30. AutoExecutionPlanNode(int i, RakNet::Lobby2MessageID o) {instanceNumber=i; operation=o;}
  31. int instanceNumber;
  32. RakNet::Lobby2MessageID operation;
  33. };
  34. DataStructures::Queue<AutoExecutionPlanNode> executionPlan;
  35. void PrintCommands(RakNet::Lobby2MessageFactory *messageFactory)
  36. {
  37. unsigned int i;
  38. for (i=0; i < RakNet::L2MID_COUNT; i++)
  39. {
  40. RakNet::Lobby2Message *m = messageFactory->Alloc((RakNet::Lobby2MessageID)i);
  41. if (m)
  42. {
  43. printf("%i. %s", i+1, m->GetName());
  44. if (m->RequiresAdmin())
  45. printf(" (Admin command)");
  46. if (m->RequiresRankingPermission())
  47. printf(" (Ranking server command)");
  48. printf("\n");
  49. messageFactory->Dealloc(m);
  50. }
  51. }
  52. }
  53. void ExecuteCommand(RakNet::Lobby2MessageID command, RakNet::RakString userName, int instanceNumber);
  54. struct Lobby2ClientSampleCB : public RakNet::Lobby2Printf
  55. {
  56. virtual void ExecuteDefaultResult(RakNet::Lobby2Message *message) {
  57. message->DebugPrintf();
  58. if (message->resultCode==RakNet::REC_SUCCESS && executionPlan.Size())
  59. {
  60. AutoExecutionPlanNode aepn = executionPlan.Pop();
  61. ExecuteCommand(aepn.operation, RakNet::RakString("user%i", aepn.instanceNumber), aepn.instanceNumber);
  62. }
  63. }
  64. } callback[NUM_CONNECTIONS];
  65. int main()
  66. {
  67. printf("This sample creates two Lobby2Clients.\n");
  68. printf("They both connect to the server and performs queued operations on startup.");
  69. printf("(RANKING AND CLANS NOT YET DONE).\n");
  70. printf("Difficulty: Advanced\n\n");
  71. RakNet::Lobby2ResultCodeDescription::Validate();
  72. /// Do all these operations in this order once we are logged in.
  73. /// This is for easier testing.
  74. /// This plan will create the database, register two users, and log them both in
  75. executionPlan.Push(AutoExecutionPlanNode(0, RakNet::L2MID_System_CreateDatabase), _FILE_AND_LINE_ );
  76. executionPlan.Push(AutoExecutionPlanNode(0, RakNet::L2MID_System_CreateTitle), _FILE_AND_LINE_ );
  77. executionPlan.Push(AutoExecutionPlanNode(0, RakNet::L2MID_CDKey_Add), _FILE_AND_LINE_ );
  78. executionPlan.Push(AutoExecutionPlanNode(0, RakNet::L2MID_System_RegisterProfanity), _FILE_AND_LINE_ );
  79. executionPlan.Push(AutoExecutionPlanNode(0, RakNet::L2MID_Client_RegisterAccount), _FILE_AND_LINE_ );
  80. executionPlan.Push(AutoExecutionPlanNode(1, RakNet::L2MID_Client_RegisterAccount), _FILE_AND_LINE_ );
  81. executionPlan.Push(AutoExecutionPlanNode(0, RakNet::L2MID_System_SetEmailAddressValidated), _FILE_AND_LINE_ );
  82. executionPlan.Push(AutoExecutionPlanNode(1, RakNet::L2MID_System_SetEmailAddressValidated), _FILE_AND_LINE_ );
  83. executionPlan.Push(AutoExecutionPlanNode(0, RakNet::L2MID_Client_Login), _FILE_AND_LINE_ );
  84. executionPlan.Push(AutoExecutionPlanNode(1, RakNet::L2MID_Client_Login), _FILE_AND_LINE_ );
  85. executionPlan.Push(AutoExecutionPlanNode(0, RakNet::L2MID_Emails_Send), _FILE_AND_LINE_ );
  86. executionPlan.Push(AutoExecutionPlanNode(1, RakNet::L2MID_Emails_Get), _FILE_AND_LINE_ );
  87. // /// Create 2 clans
  88. // executionPlan.Push(AutoExecutionPlanNode(0, RakNet::L2MID_Clans_Create), _FILE_AND_LINE_ );
  89. // executionPlan.Push(AutoExecutionPlanNode(0, RakNet::L2MID_Clans_Create), _FILE_AND_LINE_ );
  90. // // Invite to both
  91. // executionPlan.Push(AutoExecutionPlanNode(0, RakNet::L2MID_Clans_SendJoinInvitation), _FILE_AND_LINE_ );
  92. // executionPlan.Push(AutoExecutionPlanNode(0, RakNet::L2MID_Clans_SendJoinInvitation), _FILE_AND_LINE_ );
  93. // executionPlan.Push(AutoExecutionPlanNode(1, RakNet::L2MID_Clans_RejectJoinInvitation), _FILE_AND_LINE_ );
  94. // // Download invitations this clan has sent
  95. // executionPlan.Push(AutoExecutionPlanNode(0, RakNet::L2MID_Clans_DownloadInvitationList), _FILE_AND_LINE_ );
  96. /*
  97. executionPlan.Push(AutoExecutionPlanNode(1, RakNet::L2MID_Client_SetPresence), _FILE_AND_LINE_ );
  98. executionPlan.Push(AutoExecutionPlanNode(1, RakNet::L2MID_Client_GetAccountDetails), _FILE_AND_LINE_ );
  99. executionPlan.Push(AutoExecutionPlanNode(0, RakNet::L2MID_Client_PerTitleIntegerStorage), _FILE_AND_LINE_ );
  100. executionPlan.Push(AutoExecutionPlanNode(0, RakNet::L2MID_Client_PerTitleIntegerStorage), _FILE_AND_LINE_ );
  101. executionPlan.Push(AutoExecutionPlanNode(0, RakNet::L2MID_Client_StartIgnore), _FILE_AND_LINE_ );
  102. executionPlan.Push(AutoExecutionPlanNode(0, RakNet::L2MID_Client_GetIgnoreList), _FILE_AND_LINE_ );
  103. executionPlan.Push(AutoExecutionPlanNode(0, RakNet::L2MID_Friends_SendInvite), _FILE_AND_LINE_);
  104. executionPlan.Push(AutoExecutionPlanNode(1, RakNet::L2MID_Friends_AcceptInvite), _FILE_AND_LINE_);
  105. executionPlan.Push(AutoExecutionPlanNode(0, RakNet::L2MID_Ranking_SubmitMatch));
  106. executionPlan.Push(AutoExecutionPlanNode(0, RakNet::L2MID_Ranking_SubmitMatch));
  107. executionPlan.Push(AutoExecutionPlanNode(0, RakNet::L2MID_Ranking_UpdateRating));
  108. executionPlan.Push(AutoExecutionPlanNode(0, RakNet::L2MID_Ranking_GetRating));
  109. executionPlan.Push(AutoExecutionPlanNode(0, RakNet::L2MID_Ranking_WipeRatings));
  110. */
  111. // executionPlan.Push(AutoExecutionPlanNode(0, RakNet::L2MID_Clans_Create), _FILE_AND_LINE_ );
  112. // executionPlan.Push(AutoExecutionPlanNode(0, RakNet::L2MID_Clans_Get), _FILE_AND_LINE_ );
  113. /*
  114. executionPlan.Push(AutoExecutionPlanNode(0, RakNet::L2MID_Clans_SetProperties));
  115. executionPlan.Push(AutoExecutionPlanNode(0, RakNet::L2MID_Clans_SetMyMemberProperties));
  116. */
  117. /*
  118. executionPlan.Push(AutoExecutionPlanNode(0, RakNet::L2MID_Clans_SendJoinInvitation));
  119. executionPlan.Push(AutoExecutionPlanNode(0, RakNet::L2MID_Clans_WithdrawJoinInvitation));
  120. executionPlan.Push(AutoExecutionPlanNode(1, RakNet::L2MID_Clans_DownloadInvitationList));
  121. executionPlan.Push(AutoExecutionPlanNode(0, RakNet::L2MID_Clans_SendJoinInvitation));
  122. executionPlan.Push(AutoExecutionPlanNode(1, RakNet::L2MID_Clans_RejectJoinInvitation));
  123. executionPlan.Push(AutoExecutionPlanNode(0, RakNet::L2MID_Clans_SendJoinInvitation));
  124. executionPlan.Push(AutoExecutionPlanNode(1, RakNet::L2MID_Clans_AcceptJoinInvitation));
  125. executionPlan.Push(AutoExecutionPlanNode(0, RakNet::L2MID_Clans_SetSubleaderStatus));
  126. executionPlan.Push(AutoExecutionPlanNode(0, RakNet::L2MID_Clans_SetMemberRank));
  127. executionPlan.Push(AutoExecutionPlanNode(0, RakNet::L2MID_Clans_GrantLeader));
  128. */
  129. /*
  130. executionPlan.Push(AutoExecutionPlanNode(1, RakNet::L2MID_Clans_SendJoinRequest));
  131. executionPlan.Push(AutoExecutionPlanNode(1, RakNet::L2MID_Clans_WithdrawJoinRequest));
  132. executionPlan.Push(AutoExecutionPlanNode(0, RakNet::L2MID_Clans_AcceptJoinRequest));
  133. */
  134. // executionPlan.Push(AutoExecutionPlanNode(1, RakNet::L2MID_Clans_SendJoinRequest));
  135. // executionPlan.Push(AutoExecutionPlanNode(1, RakNet::L2MID_Clans_DownloadRequestList));
  136. // TODO - test from here
  137. /*
  138. executionPlan.Push(AutoExecutionPlanNode(0, RakNet::L2MID_Clans_RejectJoinRequest));
  139. executionPlan.Push(AutoExecutionPlanNode(0, RakNet::L2MID_Clans_AcceptJoinRequest));
  140. executionPlan.Push(AutoExecutionPlanNode(1, RakNet::L2MID_Clans_SendJoinRequest));
  141. executionPlan.Push(AutoExecutionPlanNode(0, RakNet::L2MID_Clans_AcceptJoinRequest));
  142. executionPlan.Push(AutoExecutionPlanNode(0, RakNet::L2MID_Clans_KickAndBlacklistUser));
  143. executionPlan.Push(AutoExecutionPlanNode(1, RakNet::L2MID_Clans_SendJoinRequest));
  144. executionPlan.Push(AutoExecutionPlanNode(0, RakNet::L2MID_Clans_GetBlacklist));
  145. executionPlan.Push(AutoExecutionPlanNode(0, RakNet::L2MID_Clans_UnblacklistUser));
  146. executionPlan.Push(AutoExecutionPlanNode(1, RakNet::L2MID_Clans_SendJoinRequest));
  147. executionPlan.Push(AutoExecutionPlanNode(0, RakNet::L2MID_Clans_AcceptJoinRequest));
  148. executionPlan.Push(AutoExecutionPlanNode(0, RakNet::L2MID_Clans_GetMembers));
  149. */
  150. /*
  151. // TODO
  152. L2MID_Clans_CreateBoard,
  153. L2MID_Clans_DestroyBoard,
  154. L2MID_Clans_CreateNewTopic,
  155. L2MID_Clans_ReplyToTopic,
  156. L2MID_Clans_RemovePost,
  157. L2MID_Clans_GetBoards,
  158. L2MID_Clans_GetTopics,
  159. L2MID_Clans_GetPosts,
  160. */
  161. char ip[64], serverPort[30], clientPort[30];
  162. int i;
  163. for (i=0; i < NUM_CONNECTIONS; i++)
  164. rakPeer[i]=RakNet::RakPeerInterface::GetInstance();
  165. puts("Enter the rakPeer1 port to listen on");
  166. clientPort[0]=0;
  167. RakNet::SocketDescriptor socketDescriptor(atoi(clientPort),0);
  168. Gets(clientPort,sizeof(clientPort));
  169. if (clientPort[0]==0)
  170. strcpy(clientPort, "0");
  171. puts("Enter IP to connect to");;
  172. ip[0]=0;
  173. Gets(ip,sizeof(ip));
  174. if (ip[0]==0)
  175. strcpy(ip, "127.0.0.1");
  176. puts("Enter the port to connect to");
  177. serverPort[0]=0;
  178. Gets(serverPort,sizeof(serverPort));
  179. if (serverPort[0]==0)
  180. strcpy(serverPort, "61111");
  181. for (i=0; i < NUM_CONNECTIONS; i++)
  182. {
  183. rakPeer[i]->Startup(1,&socketDescriptor, 1);
  184. rakPeer[i]->Connect(ip, atoi(serverPort), 0,0);
  185. rakPeer[i]->AttachPlugin(&lobby2Client[i]);
  186. lobby2Client[i].SetMessageFactory(&messageFactory);
  187. lobby2Client[i].SetCallbackInterface(&callback[i]);
  188. testUserName[i]=RakNet::RakString("user%i", i);
  189. }
  190. RakNet::Packet *packet;
  191. // Loop for input
  192. while (1)
  193. {
  194. for (i=0; i < NUM_CONNECTIONS; i++)
  195. {
  196. RakNet::RakPeerInterface *peer = rakPeer[i];
  197. for (packet=peer->Receive(); packet; peer->DeallocatePacket(packet), packet=peer->Receive())
  198. {
  199. switch (packet->data[0])
  200. {
  201. case ID_DISCONNECTION_NOTIFICATION:
  202. // Connection lost normally
  203. printf("ID_DISCONNECTION_NOTIFICATION\n");
  204. break;
  205. case ID_ALREADY_CONNECTED:
  206. // Connection lost normally
  207. printf("ID_ALREADY_CONNECTED\n");
  208. break;
  209. case ID_CONNECTION_BANNED: // Banned from this server
  210. printf("We are banned from this server.\n");
  211. break;
  212. case ID_CONNECTION_ATTEMPT_FAILED:
  213. printf("Connection attempt failed\n");
  214. break;
  215. case ID_NO_FREE_INCOMING_CONNECTIONS:
  216. // Sorry, the server is full. I don't do anything here but
  217. // A real app should tell the user
  218. printf("ID_NO_FREE_INCOMING_CONNECTIONS\n");
  219. break;
  220. case ID_INVALID_PASSWORD:
  221. printf("ID_INVALID_PASSWORD\n");
  222. break;
  223. case ID_CONNECTION_LOST:
  224. // Couldn't deliver a reliable packet - i.e. the other system was abnormally
  225. // terminated
  226. printf("ID_CONNECTION_LOST\n");
  227. break;
  228. case ID_CONNECTION_REQUEST_ACCEPTED:
  229. // This tells the rakPeer1 they have connected
  230. printf("ID_CONNECTION_REQUEST_ACCEPTED\n");
  231. int j;
  232. for (j=0; j < NUM_CONNECTIONS; j++)
  233. lobby2Client[j].SetServerAddress(packet->systemAddress);
  234. if (i==NUM_CONNECTIONS-1)
  235. {
  236. PrintCommands(&messageFactory);
  237. printf("Enter instance number 1 to %i followed by command number.\n", NUM_CONNECTIONS);
  238. if (executionPlan.Size())
  239. {
  240. /// Execute the first command now that both clients have connected.
  241. AutoExecutionPlanNode aepn = executionPlan.Pop();
  242. ExecuteCommand(aepn.operation, RakNet::RakString("user%i", aepn.instanceNumber), aepn.instanceNumber);
  243. }
  244. }
  245. break;
  246. case ID_LOBBY2_SERVER_ERROR:
  247. {
  248. RakNet::BitStream bs(packet->data,packet->length,false);
  249. bs.IgnoreBytes(2); // ID_LOBBY2_SERVER_ERROR and error code
  250. printf("ID_LOBBY2_SERVER_ERROR: ");
  251. if (packet->data[1]==RakNet::L2SE_UNKNOWN_MESSAGE_ID)
  252. {
  253. unsigned int messageId;
  254. bs.Read(messageId);
  255. printf("L2SE_UNKNOWN_MESSAGE_ID %i", messageId);
  256. }
  257. else
  258. printf("Unknown");
  259. printf("\n");
  260. }
  261. break;
  262. }
  263. }
  264. }
  265. // This sleep keeps RakNet responsive
  266. RakSleep(30);
  267. if (kbhit())
  268. {
  269. char ch = getch();
  270. if (ch <= '0' || ch > '9')
  271. {
  272. printf("Bad instance number\n");
  273. continue;
  274. }
  275. int instanceNumber = ch - 1 - '0';
  276. if (instanceNumber >= NUM_CONNECTIONS)
  277. {
  278. printf("Enter between 1 and %i to pick the instance of RakPeer to run\n", 1+NUM_CONNECTIONS);
  279. continue;
  280. }
  281. printf("Enter message number or 'quit' to quit.\n");
  282. char str[128];
  283. Gets(str, sizeof(str));
  284. if (_stricmp(str, "quit")==0)
  285. {
  286. printf("Quitting.\n");
  287. break;
  288. }
  289. else
  290. {
  291. int command = atoi(str);
  292. if (command <=0 || command > RakNet::L2MID_COUNT)
  293. {
  294. printf("Invalid message index %i. Commands:\n", command);
  295. PrintCommands(&messageFactory);
  296. }
  297. else
  298. {
  299. ExecuteCommand((RakNet::Lobby2MessageID)(command-1), RakNet::RakString("user%i", instanceNumber), instanceNumber);
  300. }
  301. }
  302. }
  303. }
  304. for (i=0; i < NUM_CONNECTIONS; i++)
  305. RakNet::RakPeerInterface::DestroyInstance(rakPeer[i]);
  306. return 0;
  307. }
  308. /// In a real application these parameters would be filled out from application data
  309. /// Here I've just hardcoded everything for fast testing
  310. void ExecuteCommand(RakNet::Lobby2MessageID command, RakNet::RakString userName, int instanceNumber)
  311. {
  312. RakNet::Lobby2Message *m = messageFactory.Alloc(command);
  313. RakAssert(m);
  314. printf("Executing %s (message %i)\n", m->GetName(), command+1);
  315. // If additional requires are needed to test the command, stick them here
  316. switch (m->GetID())
  317. {
  318. case RakNet::L2MID_System_CreateTitle:
  319. {
  320. RakNet::System_CreateTitle *arg = (RakNet::System_CreateTitle *) m;
  321. arg->requiredAge=22;
  322. arg->titleName="Test Title Name";
  323. arg->titleSecretKey="Test secret key";
  324. }
  325. break;
  326. case RakNet::L2MID_System_DestroyTitle:
  327. {
  328. RakNet::System_DestroyTitle *arg = (RakNet::System_DestroyTitle *) m;
  329. arg->titleName="Test Title Name";
  330. }
  331. break;
  332. case RakNet::L2MID_System_GetTitleRequiredAge:
  333. {
  334. RakNet::System_GetTitleRequiredAge *arg = (RakNet::System_GetTitleRequiredAge *) m;
  335. arg->titleName="Test Title Name";
  336. }
  337. break;
  338. case RakNet::L2MID_System_GetTitleBinaryData:
  339. {
  340. RakNet::System_GetTitleBinaryData *arg = (RakNet::System_GetTitleBinaryData *) m;
  341. arg->titleName="Test Title Name";
  342. }
  343. break;
  344. case RakNet::L2MID_System_RegisterProfanity:
  345. {
  346. RakNet::System_RegisterProfanity *arg = (RakNet::System_RegisterProfanity *) m;
  347. arg->profanityWords.Insert("Bodily Functions", _FILE_AND_LINE_ );
  348. arg->profanityWords.Insert("Racial Epithet", _FILE_AND_LINE_ );
  349. arg->profanityWords.Insert("Euphemism treadmill", _FILE_AND_LINE_ );
  350. }
  351. break;
  352. case RakNet::L2MID_System_BanUser:
  353. {
  354. RakNet::System_BanUser *arg = (RakNet::System_BanUser *) m;
  355. arg->durationHours=12;
  356. arg->banReason="Ban Reason";
  357. arg->userName=userName;
  358. }
  359. break;
  360. case RakNet::L2MID_System_UnbanUser:
  361. {
  362. RakNet::System_UnbanUser *arg = (RakNet::System_UnbanUser *) m;
  363. arg->reason="Unban Reason";
  364. arg->userName=userName;
  365. }
  366. break;
  367. case RakNet::L2MID_CDKey_Add:
  368. {
  369. RakNet::CDKey_Add *arg = (RakNet::CDKey_Add *) m;
  370. arg->cdKeys.Insert("Test CD Key", _FILE_AND_LINE_ );
  371. arg->cdKeys.Insert("Test CD Key 2", _FILE_AND_LINE_ );
  372. arg->titleName="Test Title Name";
  373. }
  374. break;
  375. case RakNet::L2MID_CDKey_GetStatus:
  376. {
  377. RakNet::CDKey_GetStatus *arg = (RakNet::CDKey_GetStatus *) m;
  378. arg->cdKey="Test CD Key";
  379. arg->titleName="Test Title Name";
  380. }
  381. break;
  382. case RakNet::L2MID_CDKey_Use:
  383. {
  384. RakNet::CDKey_Use *arg = (RakNet::CDKey_Use *) m;
  385. arg->cdKey="Test CD Key";
  386. arg->titleName="Test Title Name";
  387. arg->userName=userName;
  388. }
  389. break;
  390. case RakNet::L2MID_CDKey_FlagStolen:
  391. {
  392. RakNet::CDKey_FlagStolen *arg = (RakNet::CDKey_FlagStolen *) m;
  393. arg->cdKey="Test CD Key";
  394. arg->titleName="Test Title Name";
  395. arg->wasStolen=true;
  396. }
  397. break;
  398. case RakNet::L2MID_Client_Login:
  399. {
  400. RakNet::Client_Login *arg = (RakNet::Client_Login *) m;
  401. arg->titleName="Test Title Name";
  402. arg->titleSecretKey="Test secret key";
  403. arg->userPassword="asdf";
  404. arg->userName=userName;
  405. }
  406. break;
  407. case RakNet::L2MID_Client_SetPresence:
  408. {
  409. RakNet::Client_SetPresence *arg = (RakNet::Client_SetPresence *) m;
  410. arg->presence.isVisible=true;
  411. arg->presence.status=RakNet::Lobby2Presence::IN_LOBBY;
  412. // arg->presence.titleName="Test Title Name";
  413. }
  414. break;
  415. case RakNet::L2MID_Client_RegisterAccount:
  416. {
  417. RakNet::Client_RegisterAccount *arg = (RakNet::Client_RegisterAccount *) m;
  418. arg->createAccountParameters.ageInDays=9999;
  419. arg->createAccountParameters.firstName="Firstname";
  420. arg->createAccountParameters.lastName="Lastname";
  421. arg->createAccountParameters.password="asdf";
  422. arg->createAccountParameters.passwordRecoveryQuestion="1+2=?";
  423. arg->createAccountParameters.passwordRecoveryAnswer="3";
  424. arg->createAccountParameters.emailAddress="username@provider.com";
  425. arg->createAccountParameters.homeCountry="United States";
  426. arg->createAccountParameters.homeState="california";
  427. arg->createAccountParameters.sex_male=true;
  428. arg->userName=userName;
  429. arg->cdKey="Test CD Key";
  430. arg->titleName="Test Title Name";
  431. }
  432. break;
  433. case RakNet::L2MID_System_SetEmailAddressValidated:
  434. {
  435. RakNet::System_SetEmailAddressValidated *arg = (RakNet::System_SetEmailAddressValidated *) m;
  436. arg->validated=true;
  437. arg->userName=userName;
  438. }
  439. break;
  440. case RakNet::L2MID_Client_ValidateHandle:
  441. {
  442. RakNet::Client_ValidateHandle *arg = (RakNet::Client_ValidateHandle *) m;
  443. arg->userName=userName;
  444. }
  445. break;
  446. case RakNet::L2MID_System_DeleteAccount:
  447. {
  448. RakNet::System_DeleteAccount *arg = (RakNet::System_DeleteAccount *) m;
  449. arg->userName=userName;
  450. arg->password="asdf";
  451. }
  452. break;
  453. case RakNet::L2MID_System_PruneAccounts:
  454. {
  455. RakNet::System_PruneAccounts *arg = (RakNet::System_PruneAccounts *) m;
  456. arg->deleteAccountsNotLoggedInDays=1;
  457. }
  458. break;
  459. case RakNet::L2MID_Client_GetEmailAddress:
  460. {
  461. RakNet::Client_GetEmailAddress *arg = (RakNet::Client_GetEmailAddress *) m;
  462. arg->userName=userName;
  463. }
  464. break;
  465. case RakNet::L2MID_Client_GetPasswordRecoveryQuestionByHandle:
  466. {
  467. RakNet::Client_GetPasswordRecoveryQuestionByHandle *arg = (RakNet::Client_GetPasswordRecoveryQuestionByHandle *) m;
  468. arg->userName=userName;
  469. }
  470. break;
  471. case RakNet::L2MID_Client_GetPasswordByPasswordRecoveryAnswer:
  472. {
  473. RakNet::Client_GetPasswordByPasswordRecoveryAnswer *arg = (RakNet::Client_GetPasswordByPasswordRecoveryAnswer *) m;
  474. arg->userName=userName;
  475. arg->passwordRecoveryAnswer="3";
  476. }
  477. break;
  478. case RakNet::L2MID_Client_ChangeHandle:
  479. {
  480. RakNet::Client_ChangeHandle *arg = (RakNet::Client_ChangeHandle *) m;
  481. arg->userName=userName;
  482. arg->newHandle="New user handle";
  483. }
  484. break;
  485. case RakNet::L2MID_Client_UpdateAccount:
  486. {
  487. RakNet::Client_UpdateAccount *arg = (RakNet::Client_UpdateAccount *) m;
  488. }
  489. break;
  490. case RakNet::L2MID_Client_GetAccountDetails:
  491. {
  492. RakNet::Client_GetAccountDetails *arg = (RakNet::Client_GetAccountDetails *) m;
  493. }
  494. break;
  495. case RakNet::L2MID_Client_StartIgnore:
  496. {
  497. RakNet::Client_StartIgnore *arg = (RakNet::Client_StartIgnore *) m;
  498. arg->targetHandle=RakNet::RakString("user%i", instanceNumber+1);
  499. }
  500. break;
  501. case RakNet::L2MID_Client_StopIgnore:
  502. {
  503. RakNet::Client_StopIgnore *arg = (RakNet::Client_StopIgnore *) m;
  504. arg->targetHandle=RakNet::RakString("user%i", instanceNumber+1);
  505. }
  506. break;
  507. case RakNet::L2MID_Client_GetIgnoreList:
  508. {
  509. RakNet::Client_GetIgnoreList *arg = (RakNet::Client_GetIgnoreList *) m;
  510. }
  511. break;
  512. case RakNet::L2MID_Client_PerTitleIntegerStorage:
  513. {
  514. RakNet::Client_PerTitleIntegerStorage *arg = (RakNet::Client_PerTitleIntegerStorage *) m;
  515. arg->titleName="Test Title Name";
  516. arg->slotIndex=0;
  517. arg->conditionValue=1.0;
  518. arg->addConditionForOperation=RakNet::Client_PerTitleIntegerStorage::PTISC_GREATER_THAN;
  519. arg->inputValue=0.0;
  520. static int runCount=0;
  521. if (runCount++%2==0)
  522. arg->operationToPerform=RakNet::Client_PerTitleIntegerStorage::PTISO_WRITE;
  523. else
  524. arg->operationToPerform=RakNet::Client_PerTitleIntegerStorage::PTISO_READ;
  525. }
  526. break;
  527. case RakNet::L2MID_Friends_SendInvite:
  528. {
  529. RakNet::Friends_SendInvite *arg = (RakNet::Friends_SendInvite *) m;
  530. arg->targetHandle=RakNet::RakString("user%i", instanceNumber+1);
  531. arg->subject="Friends_SendInvite subject";
  532. arg->body="Friends_SendInvite body";
  533. }
  534. break;
  535. case RakNet::L2MID_Friends_AcceptInvite:
  536. {
  537. RakNet::Friends_AcceptInvite *arg = (RakNet::Friends_AcceptInvite *) m;
  538. arg->targetHandle=RakNet::RakString("user%i", 0);
  539. arg->subject="Friends_AcceptInvite subject";
  540. arg->body="Friends_AcceptInvite body";
  541. arg->emailStatus=0;
  542. }
  543. break;
  544. case RakNet::L2MID_Friends_RejectInvite:
  545. {
  546. RakNet::Friends_RejectInvite *arg = (RakNet::Friends_RejectInvite *) m;
  547. arg->targetHandle=RakNet::RakString("user%i", 0);
  548. arg->subject="L2MID_Friends_RejectInvite subject";
  549. arg->body="L2MID_Friends_RejectInvite body";
  550. arg->emailStatus=0;
  551. }
  552. break;
  553. case RakNet::L2MID_Friends_GetInvites:
  554. {
  555. RakNet::Friends_GetInvites *arg = (RakNet::Friends_GetInvites *) m;
  556. }
  557. break;
  558. case RakNet::L2MID_Friends_GetFriends:
  559. {
  560. RakNet::Friends_GetFriends *arg = (RakNet::Friends_GetFriends *) m;
  561. }
  562. break;
  563. case RakNet::L2MID_Friends_Remove:
  564. {
  565. RakNet::Friends_Remove *arg = (RakNet::Friends_Remove *) m;
  566. arg->targetHandle=RakNet::RakString("user%i", 0);
  567. arg->subject="L2MID_Friends_Remove subject";
  568. arg->body="L2MID_Friends_Remove body";
  569. arg->emailStatus=0;
  570. }
  571. break;
  572. case RakNet::L2MID_BookmarkedUsers_Add:
  573. {
  574. RakNet::BookmarkedUsers_Add *arg = (RakNet::BookmarkedUsers_Add *) m;
  575. arg->targetHandle=RakNet::RakString("user%i", instanceNumber+1);
  576. arg->type=0;
  577. arg->description="L2MID_BookmarkedUsers_Add description";
  578. }
  579. break;
  580. case RakNet::L2MID_BookmarkedUsers_Remove:
  581. {
  582. RakNet::BookmarkedUsers_Remove *arg = (RakNet::BookmarkedUsers_Remove *) m;
  583. arg->targetHandle=RakNet::RakString("user%i", instanceNumber+1);
  584. arg->type=0;
  585. }
  586. break;
  587. case RakNet::L2MID_BookmarkedUsers_Get:
  588. {
  589. RakNet::BookmarkedUsers_Get *arg = (RakNet::BookmarkedUsers_Get *) m;
  590. }
  591. break;
  592. case RakNet::L2MID_Emails_Send:
  593. {
  594. RakNet::Emails_Send *arg = (RakNet::Emails_Send *) m;
  595. arg->recipients.Insert(RakNet::RakString("user%i", instanceNumber+1), _FILE_AND_LINE_ );
  596. arg->recipients.Insert(RakNet::RakString("user%i", instanceNumber+2), _FILE_AND_LINE_ );
  597. arg->subject="L2MID_Emails_Send subject";
  598. arg->body="L2MID_Emails_Send body";
  599. arg->status=0;
  600. }
  601. break;
  602. case RakNet::L2MID_Emails_Get:
  603. {
  604. RakNet::Emails_Get *arg = (RakNet::Emails_Get *) m;
  605. arg->unreadEmailsOnly=true;
  606. arg->emailIdsOnly=true;
  607. }
  608. break;
  609. case RakNet::L2MID_Emails_Delete:
  610. {
  611. RakNet::Emails_Delete *arg = (RakNet::Emails_Delete *) m;
  612. arg->emailId=1;
  613. }
  614. break;
  615. case RakNet::L2MID_Emails_SetStatus:
  616. {
  617. RakNet::Emails_SetStatus *arg = (RakNet::Emails_SetStatus *) m;
  618. arg->emailId=2;
  619. arg->updateStatusFlag=true;
  620. arg->updateMarkedRead=true;
  621. arg->newStatusFlag=1234;
  622. arg->isNowMarkedRead=true;
  623. }
  624. break;
  625. case RakNet::L2MID_Ranking_SubmitMatch:
  626. {
  627. RakNet::Ranking_SubmitMatch *arg = (RakNet::Ranking_SubmitMatch *) m;
  628. arg->gameType="Match game type";
  629. arg->titleName="Test Title Name";
  630. arg->submittedMatch.matchNote="Ranking match note";
  631. arg->submittedMatch.matchParticipants.Insert(RakNet::MatchParticipant("user0", 5.0f), _FILE_AND_LINE_ );
  632. arg->submittedMatch.matchParticipants.Insert(RakNet::MatchParticipant("user1", 10.0f), _FILE_AND_LINE_ );
  633. }
  634. break;
  635. case RakNet::L2MID_Ranking_GetMatches:
  636. {
  637. RakNet::Ranking_GetMatches *arg = (RakNet::Ranking_GetMatches *) m;
  638. arg->gameType="Match game type";
  639. arg->titleName="Test Title Name";
  640. }
  641. break;
  642. case RakNet::L2MID_Ranking_GetMatchBinaryData:
  643. {
  644. RakNet::Ranking_GetMatchBinaryData *arg = (RakNet::Ranking_GetMatchBinaryData *) m;
  645. arg->matchID=1;
  646. }
  647. break;
  648. case RakNet::L2MID_Ranking_GetTotalScore:
  649. {
  650. RakNet::Ranking_GetTotalScore *arg = (RakNet::Ranking_GetTotalScore *) m;
  651. arg->targetHandle=RakNet::RakString("user%i", instanceNumber);
  652. arg->gameType="Match game type";
  653. arg->titleName="Test Title Name";
  654. }
  655. break;
  656. case RakNet::L2MID_Ranking_WipeScoresForPlayer:
  657. {
  658. RakNet::Ranking_WipeScoresForPlayer *arg = (RakNet::Ranking_WipeScoresForPlayer *) m;
  659. arg->targetHandle=RakNet::RakString("user%i", instanceNumber);
  660. arg->gameType="Match game type";
  661. arg->titleName="Test Title Name";
  662. }
  663. break;
  664. case RakNet::L2MID_Ranking_WipeMatches:
  665. {
  666. RakNet::Ranking_WipeMatches *arg = (RakNet::Ranking_WipeMatches *) m;
  667. arg->gameType="Match game type";
  668. arg->titleName="Test Title Name";
  669. }
  670. break;
  671. case RakNet::L2MID_Ranking_PruneMatches:
  672. {
  673. RakNet::Ranking_PruneMatches *arg = (RakNet::Ranking_PruneMatches *) m;
  674. arg->pruneTimeDays=1;
  675. }
  676. break;
  677. case RakNet::L2MID_Ranking_UpdateRating:
  678. {
  679. RakNet::Ranking_UpdateRating *arg = (RakNet::Ranking_UpdateRating *) m;
  680. arg->targetHandle=RakNet::RakString("user%i", instanceNumber);
  681. arg->gameType="Match game type";
  682. arg->titleName="Test Title Name";
  683. arg->targetRating=1234.0f;
  684. }
  685. break;
  686. case RakNet::L2MID_Ranking_WipeRatings:
  687. {
  688. RakNet::Ranking_WipeRatings *arg = (RakNet::Ranking_WipeRatings *) m;
  689. arg->gameType="Match game type";
  690. arg->titleName="Test Title Name";
  691. }
  692. break;
  693. case RakNet::L2MID_Ranking_GetRating:
  694. {
  695. RakNet::Ranking_GetRating *arg = (RakNet::Ranking_GetRating *) m;
  696. arg->targetHandle=RakNet::RakString("user%i", instanceNumber);
  697. arg->gameType="Match game type";
  698. arg->titleName="Test Title Name";
  699. arg->targetHandle=RakNet::RakString("user%i", instanceNumber);
  700. }
  701. break;
  702. case RakNet::L2MID_Clans_Create:
  703. {
  704. RakNet::Clans_Create *arg = (RakNet::Clans_Create *) m;
  705. static int idx=0;
  706. arg->clanHandle=RakNet::RakString("Clan handle %i", idx++);
  707. arg->failIfAlreadyInClan=false;
  708. arg->requiresInvitationsToJoin=true;
  709. arg->description="Clan Description";
  710. arg->binaryData->binaryData=new char[10];
  711. strcpy(arg->binaryData->binaryData,"Hello");
  712. arg->binaryData->binaryDataLength=10;
  713. }
  714. break;
  715. case RakNet::L2MID_Clans_SetProperties:
  716. {
  717. RakNet::Clans_SetProperties *arg = (RakNet::Clans_SetProperties *) m;
  718. arg->clanHandle="Clan handle";
  719. arg->description="Updated description";
  720. }
  721. break;
  722. case RakNet::L2MID_Clans_GetProperties:
  723. {
  724. RakNet::Clans_GetProperties *arg = (RakNet::Clans_GetProperties *) m;
  725. arg->clanHandle="Clan handle";
  726. }
  727. break;
  728. case RakNet::L2MID_Clans_SetMyMemberProperties:
  729. {
  730. RakNet::Clans_SetMyMemberProperties *arg = (RakNet::Clans_SetMyMemberProperties *) m;
  731. arg->clanHandle="Clan handle";
  732. arg->description="Updated description";
  733. }
  734. break;
  735. case RakNet::L2MID_Clans_GrantLeader:
  736. {
  737. RakNet::Clans_GrantLeader *arg = (RakNet::Clans_GrantLeader *) m;
  738. arg->clanHandle="Clan handle";
  739. arg->targetHandle=RakNet::RakString("user%i", instanceNumber+1);
  740. }
  741. break;
  742. case RakNet::L2MID_Clans_SetSubleaderStatus:
  743. {
  744. RakNet::Clans_SetSubleaderStatus *arg = (RakNet::Clans_SetSubleaderStatus *) m;
  745. arg->clanHandle="Clan handle";
  746. arg->targetHandle=RakNet::RakString("user%i", instanceNumber+1);
  747. arg->setToSubleader=true;
  748. }
  749. break;
  750. case RakNet::L2MID_Clans_SetMemberRank:
  751. {
  752. RakNet::Clans_SetMemberRank *arg = (RakNet::Clans_SetMemberRank *) m;
  753. arg->clanHandle="Clan handle";
  754. arg->targetHandle=RakNet::RakString("user%i", instanceNumber+1);
  755. arg->newRank=666;
  756. }
  757. break;
  758. case RakNet::L2MID_Clans_GetMemberProperties:
  759. {
  760. RakNet::Clans_GetMemberProperties *arg = (RakNet::Clans_GetMemberProperties *) m;
  761. arg->clanHandle="Clan handle";
  762. arg->targetHandle=RakNet::RakString("user%i", instanceNumber);
  763. }
  764. break;
  765. case RakNet::L2MID_Clans_ChangeHandle:
  766. {
  767. RakNet::Clans_ChangeHandle *arg = (RakNet::Clans_ChangeHandle *) m;
  768. arg->oldClanHandle="Clan handle";
  769. arg->newClanHandle="New Clan handle";
  770. }
  771. break;
  772. case RakNet::L2MID_Clans_Leave:
  773. {
  774. RakNet::Clans_Leave *arg = (RakNet::Clans_Leave *) m;
  775. arg->clanHandle="Clan handle";
  776. arg->dissolveIfClanLeader=false;
  777. arg->subject="L2MID_Clans_Leave";
  778. arg->emailStatus=0;
  779. }
  780. break;
  781. case RakNet::L2MID_Clans_Get:
  782. {
  783. RakNet::Clans_Get *arg = (RakNet::Clans_Get *) m;
  784. }
  785. break;
  786. case RakNet::L2MID_Clans_SendJoinInvitation:
  787. {
  788. RakNet::Clans_SendJoinInvitation *arg = (RakNet::Clans_SendJoinInvitation *) m;
  789. static int idx=0;
  790. arg->clanHandle=RakNet::RakString("Clan handle %i", idx++);
  791. arg->targetHandle=RakNet::RakString("user%i", instanceNumber+1);
  792. arg->subject="L2MID_Clans_SendJoinInvitation";
  793. }
  794. break;
  795. case RakNet::L2MID_Clans_WithdrawJoinInvitation:
  796. {
  797. RakNet::Clans_WithdrawJoinInvitation *arg = (RakNet::Clans_WithdrawJoinInvitation *) m;
  798. arg->clanHandle="Clan handle";
  799. arg->targetHandle=RakNet::RakString("user%i", instanceNumber+1);
  800. arg->subject="L2MID_Clans_WithdrawJoinInvitation";
  801. }
  802. break;
  803. case RakNet::L2MID_Clans_AcceptJoinInvitation:
  804. {
  805. RakNet::Clans_AcceptJoinInvitation *arg = (RakNet::Clans_AcceptJoinInvitation *) m;
  806. static int idx=0;
  807. arg->clanHandle=RakNet::RakString("Clan handle %i", idx++);
  808. arg->subject="L2MID_Clans_AcceptJoinInvitation";
  809. arg->failIfAlreadyInClan=false;
  810. }
  811. break;
  812. case RakNet::L2MID_Clans_RejectJoinInvitation:
  813. {
  814. RakNet::Clans_RejectJoinInvitation *arg = (RakNet::Clans_RejectJoinInvitation *) m;
  815. static int idx=0;
  816. arg->clanHandle=RakNet::RakString("Clan handle %i", idx++);
  817. arg->subject="L2MID_Clans_WithdrawJoinInvitation";
  818. }
  819. break;
  820. case RakNet::L2MID_Clans_DownloadInvitationList:
  821. {
  822. RakNet::Clans_DownloadInvitationList *arg = (RakNet::Clans_DownloadInvitationList *) m;
  823. }
  824. break;
  825. case RakNet::L2MID_Clans_SendJoinRequest:
  826. {
  827. RakNet::Clans_SendJoinRequest *arg = (RakNet::Clans_SendJoinRequest *) m;
  828. arg->clanHandle="Clan handle";
  829. arg->subject="L2MID_Clans_SendJoinRequest";
  830. }
  831. break;
  832. case RakNet::L2MID_Clans_WithdrawJoinRequest:
  833. {
  834. RakNet::Clans_WithdrawJoinRequest *arg = (RakNet::Clans_WithdrawJoinRequest *) m;
  835. arg->clanHandle="Clan handle";
  836. arg->subject="L2MID_Clans_WithdrawJoinRequest";
  837. }
  838. break;
  839. case RakNet::L2MID_Clans_AcceptJoinRequest:
  840. {
  841. RakNet::Clans_AcceptJoinRequest *arg = (RakNet::Clans_AcceptJoinRequest *) m;
  842. arg->clanHandle="Clan handle";
  843. arg->requestingUserHandle=RakNet::RakString("user%i", instanceNumber+1);
  844. arg->subject="L2MID_Clans_AcceptJoinRequest";
  845. }
  846. break;
  847. case RakNet::L2MID_Clans_RejectJoinRequest:
  848. {
  849. RakNet::Clans_RejectJoinRequest *arg = (RakNet::Clans_RejectJoinRequest *) m;
  850. arg->clanHandle="Clan handle";
  851. arg->requestingUserHandle=RakNet::RakString("user%i", instanceNumber+1);
  852. }
  853. break;
  854. case RakNet::L2MID_Clans_DownloadRequestList:
  855. {
  856. RakNet::Clans_DownloadRequestList *arg = (RakNet::Clans_DownloadRequestList *) m;
  857. }
  858. break;
  859. case RakNet::L2MID_Clans_KickAndBlacklistUser:
  860. {
  861. RakNet::Clans_KickAndBlacklistUser *arg = (RakNet::Clans_KickAndBlacklistUser *) m;
  862. arg->clanHandle="Clan handle";
  863. arg->targetHandle=RakNet::RakString("user%i", instanceNumber+1);
  864. arg->kick=true;
  865. arg->blacklist=true;
  866. }
  867. break;
  868. case RakNet::L2MID_Clans_UnblacklistUser:
  869. {
  870. RakNet::Clans_UnblacklistUser *arg = (RakNet::Clans_UnblacklistUser *) m;
  871. arg->clanHandle="Clan handle";
  872. arg->targetHandle=RakNet::RakString("user%i", instanceNumber+1);
  873. }
  874. break;
  875. case RakNet::L2MID_Clans_GetBlacklist:
  876. {
  877. RakNet::Clans_GetBlacklist *arg = (RakNet::Clans_GetBlacklist *) m;
  878. arg->clanHandle="Clan handle";
  879. }
  880. break;
  881. case RakNet::L2MID_Clans_GetMembers:
  882. {
  883. RakNet::Clans_GetMembers *arg = (RakNet::Clans_GetMembers *) m;
  884. arg->clanHandle="Clan handle";
  885. }
  886. break;
  887. case RakNet::L2MID_Clans_CreateBoard:
  888. {
  889. RakNet::Clans_CreateBoard *arg = (RakNet::Clans_CreateBoard *) m;
  890. }
  891. break;
  892. case RakNet::L2MID_Clans_DestroyBoard:
  893. {
  894. RakNet::Clans_DestroyBoard *arg = (RakNet::Clans_DestroyBoard *) m;
  895. }
  896. break;
  897. case RakNet::L2MID_Clans_CreateNewTopic:
  898. {
  899. RakNet::Clans_CreateNewTopic *arg = (RakNet::Clans_CreateNewTopic *) m;
  900. }
  901. break;
  902. case RakNet::L2MID_Clans_ReplyToTopic:
  903. {
  904. RakNet::Clans_ReplyToTopic *arg = (RakNet::Clans_ReplyToTopic *) m;
  905. }
  906. break;
  907. case RakNet::L2MID_Clans_RemovePost:
  908. {
  909. RakNet::Clans_RemovePost *arg = (RakNet::Clans_RemovePost *) m;
  910. }
  911. break;
  912. case RakNet::L2MID_Clans_GetBoards:
  913. {
  914. RakNet::Clans_GetBoards *arg = (RakNet::Clans_GetBoards *) m;
  915. }
  916. break;
  917. case RakNet::L2MID_Clans_GetTopics:
  918. {
  919. RakNet::Clans_GetTopics *arg = (RakNet::Clans_GetTopics *) m;
  920. }
  921. break;
  922. case RakNet::L2MID_Clans_GetPosts:
  923. {
  924. RakNet::Clans_GetPosts *arg = (RakNet::Clans_GetPosts *) m;
  925. }
  926. break;
  927. }
  928. lobby2Client[instanceNumber].SendMsg(m);
  929. messageFactory.Dealloc(m);
  930. }
粤ICP备19079148号