saacproto_serv.c
上传用户:qys8201
上传日期:2021-12-11
资源大小:978k
文件大小:81k
源码类别:

模拟服务器

开发平台:

C/C++

  1. /* output by ../../bin/lsgen.perl 0.41 ( 1998 May)
  2.  * made Thu Feb 17 17:30:27 2000
  3.  * user ringo
  4.  * host indy
  5.  * file /opt/ringo/chsa/src/saac/./saacproto_serv.c
  6.  * util ./saacproto_util.c , ./saacproto_util.h
  7.  * src  /opt/ringo/chsa/src/saac/../../doc/saacproto.html
  8.  */
  9. #define _SAACPROTOSERV_C_
  10. #include "version.h"
  11. #include "saacproto_serv.h"
  12. #include "main.h"
  13. // Nuke : This 'fd' is not a socket, it's the index of structure connect
  14. int saacproto_ServerDispatchMessage( int fd , char *encoded, char *debugfun)
  15. {
  16. unsigned int msgid;
  17. char funcname[1024];
  18. saacproto_splitString( encoded );
  19. saacproto_GetMessageInfo(&msgid , funcname ,sizeof(funcname), saacproto.token_list );
  20. if( strcmp( funcname , "ACServerLogin" ) == 0 ){
  21. char* servername;
  22. char* serverpas;
  23. #ifdef _VIP
  24. int checkvip;
  25. #endif
  26. servername = saacproto_wrapStringAddr( saacproto_stringwrapper[1] , saacproto.workbufsize , saacproto_demkstr_string( saacproto.token_list[2] ));
  27. serverpas = saacproto_wrapStringAddr( saacproto_stringwrapper[2] , saacproto.workbufsize , saacproto_demkstr_string( saacproto.token_list[3] ));
  28. #ifdef _VIP
  29. checkvip = saacproto_demkstr_int( saacproto.token_list[4] );
  30. saacproto_ACServerLogin_recv( fd,servername,serverpas,checkvip);
  31. #else
  32. saacproto_ACServerLogin_recv( fd,servername,serverpas);
  33. #endif
  34. return 0;
  35. }
  36. if( strcmp( funcname , "ACServerLogout" ) == 0 ){
  37. saacproto_ACServerLogout_recv( fd);
  38. return 0;
  39. }
  40. if( strcmp( funcname , "ACCharList" ) == 0 ){
  41. char* id;
  42. char* pas;
  43. int mesgid;
  44. id = saacproto_wrapStringAddr( saacproto_stringwrapper[1] , saacproto.workbufsize , saacproto_demkstr_string( saacproto.token_list[2] ));
  45. pas = saacproto_wrapStringAddr( saacproto_stringwrapper[2] , saacproto.workbufsize , saacproto_demkstr_string( saacproto.token_list[3] ));
  46. mesgid = saacproto_demkstr_int( saacproto.token_list[4] );
  47. saacproto_ACCharList_recv( fd,id,pas,mesgid);
  48. return 0;
  49. }
  50. if( strcmp( funcname , "ACCharLoad" ) == 0 ){
  51. char* id;
  52. char* pas;
  53. char* charname;
  54. int lock;
  55. char* opt;
  56. int mesgid;
  57. id = saacproto_wrapStringAddr( saacproto_stringwrapper[1] , saacproto.workbufsize , saacproto_demkstr_string( saacproto.token_list[2] ));
  58. pas = saacproto_wrapStringAddr( saacproto_stringwrapper[2] , saacproto.workbufsize , saacproto_demkstr_string( saacproto.token_list[3] ));
  59. charname = saacproto_wrapStringAddr( saacproto_stringwrapper[3] , saacproto.workbufsize , saacproto_demkstr_string( saacproto.token_list[4] ));
  60. lock = saacproto_demkstr_int( saacproto.token_list[5] );
  61. opt = saacproto_wrapStringAddr( saacproto_stringwrapper[5] , saacproto.workbufsize , saacproto_demkstr_string( saacproto.token_list[6] ));
  62. mesgid = saacproto_demkstr_int( saacproto.token_list[7] );
  63. saacproto_ACCharLoad_recv( fd,id,pas,charname,lock,opt,mesgid);
  64. return 0;
  65. }
  66. if( strcmp( funcname , "ACCharSave" ) == 0 ){
  67. char* id;
  68. char* charname;
  69. char* opt;
  70. char* charinfo;
  71. int unlock;
  72. int mesgid;
  73. #ifdef _NewSave
  74. int charindex;
  75. #endif
  76. id = saacproto_wrapStringAddr( saacproto_stringwrapper[1] , saacproto.workbufsize , saacproto_demkstr_string( saacproto.token_list[2] ));
  77. charname = saacproto_wrapStringAddr( saacproto_stringwrapper[2] , saacproto.workbufsize , saacproto_demkstr_string( saacproto.token_list[3] ));
  78. opt = saacproto_wrapStringAddr( saacproto_stringwrapper[3] , saacproto.workbufsize , saacproto_demkstr_string( saacproto.token_list[4] ));
  79. charinfo = saacproto_wrapStringAddr( saacproto_stringwrapper[4] , saacproto.workbufsize , saacproto_demkstr_string( saacproto.token_list[5] ));
  80. unlock = saacproto_demkstr_int( saacproto.token_list[6] );
  81. mesgid = saacproto_demkstr_int( saacproto.token_list[7] );
  82. #ifdef _NewSave
  83. charindex = saacproto_demkstr_int( saacproto.token_list[8] );
  84. saacproto_ACCharSave_recv( fd,id,charname,opt,charinfo,unlock,mesgid,charindex);
  85. #else
  86. saacproto_ACCharSave_recv( fd,id,charname,opt,charinfo,unlock,mesgid);
  87. #endif
  88. return 0;
  89. }
  90. if( strcmp( funcname , "ACCharDelete" ) == 0 ){
  91. char* id;
  92. char* passwd;
  93. char* charname;
  94. char* option;
  95. int mesgid;
  96. id = saacproto_wrapStringAddr( saacproto_stringwrapper[1] , saacproto.workbufsize , saacproto_demkstr_string( saacproto.token_list[2] ));
  97. passwd = saacproto_wrapStringAddr( saacproto_stringwrapper[2] , saacproto.workbufsize , saacproto_demkstr_string( saacproto.token_list[3] ));
  98. charname = saacproto_wrapStringAddr( saacproto_stringwrapper[3] , saacproto.workbufsize , saacproto_demkstr_string( saacproto.token_list[4] ));
  99. option = saacproto_wrapStringAddr( saacproto_stringwrapper[4] , saacproto.workbufsize , saacproto_demkstr_string( saacproto.token_list[5] ));
  100. mesgid = saacproto_demkstr_int( saacproto.token_list[6] );
  101. saacproto_ACCharDelete_recv( fd,id,passwd,charname,option,mesgid);
  102. return 0;
  103. }
  104. if( strcmp( funcname , "ACLock" ) == 0 ){
  105. char* id;
  106. int lock;
  107. int mesgid;
  108. id = saacproto_wrapStringAddr( saacproto_stringwrapper[1] , saacproto.workbufsize , saacproto_demkstr_string( saacproto.token_list[2] ));
  109. lock = saacproto_demkstr_int( saacproto.token_list[3] );
  110. mesgid = saacproto_demkstr_int( saacproto.token_list[4] );
  111. saacproto_ACLock_recv( fd,id,lock,mesgid);
  112. return 0;
  113. }
  114. #ifdef _WAEI_KICK
  115. if( strcmp( funcname , "ACKick" ) == 0 ){
  116. char* id; //欲踢的帐号
  117. int flg; //事件flg
  118. int clifd; //GM
  119. id = saacproto_wrapStringAddr( saacproto_stringwrapper[1] , saacproto.workbufsize , saacproto_demkstr_string( saacproto.token_list[2] ));
  120. clifd = saacproto_demkstr_int( saacproto.token_list[3] );
  121. flg = saacproto_demkstr_int( saacproto.token_list[4] );
  122. saacproto_ACKick_recv( fd, id, flg, clifd);
  123. return 0;
  124. }
  125. #endif
  126. if( strcmp( funcname , "ACUCheck" ) == 0 ){
  127. char* mem_id;
  128. int status;
  129. mem_id = saacproto_wrapStringAddr( saacproto_stringwrapper[1] , saacproto.workbufsize , saacproto_demkstr_string( saacproto.token_list[2] ));
  130. status = saacproto_demkstr_int( saacproto.token_list[3] );
  131. saacproto_ACUCheck_recv( fd,mem_id,status);
  132. return 0;
  133. }
  134. if( strcmp( funcname , "DBUpdateEntryString" ) == 0 ){
  135. char* table;
  136. char* key;
  137. char* value;
  138. int msgid;
  139. int msgid2;
  140. table = saacproto_wrapStringAddr( saacproto_stringwrapper[1] , saacproto.workbufsize , saacproto_demkstr_string( saacproto.token_list[2] ));
  141. key = saacproto_wrapStringAddr( saacproto_stringwrapper[2] , saacproto.workbufsize , saacproto_demkstr_string( saacproto.token_list[3] ));
  142. value = saacproto_wrapStringAddr( saacproto_stringwrapper[3] , saacproto.workbufsize , saacproto_demkstr_string( saacproto.token_list[4] ));
  143. msgid = saacproto_demkstr_int( saacproto.token_list[5] );
  144. msgid2 = saacproto_demkstr_int( saacproto.token_list[6] );
  145. saacproto_DBUpdateEntryString_recv( fd,table,key,value,msgid,msgid2);
  146. return 0;
  147. }
  148. if( strcmp( funcname , "DBDeleteEntryString" ) == 0 ){
  149. char* table;
  150. char* key;
  151. int msgid;
  152. int msgid2;
  153. table = saacproto_wrapStringAddr( saacproto_stringwrapper[1] , saacproto.workbufsize , saacproto_demkstr_string( saacproto.token_list[2] ));
  154. key = saacproto_wrapStringAddr( saacproto_stringwrapper[2] , saacproto.workbufsize , saacproto_demkstr_string( saacproto.token_list[3] ));
  155. msgid = saacproto_demkstr_int( saacproto.token_list[4] );
  156. msgid2 = saacproto_demkstr_int( saacproto.token_list[5] );
  157. saacproto_DBDeleteEntryString_recv( fd,table,key,msgid,msgid2);
  158. return 0;
  159. }
  160. if( strcmp( funcname , "DBGetEntryString" ) == 0 ){
  161. char* table;
  162. char* key;
  163. int msgid;
  164. int msgid2;
  165. table = saacproto_wrapStringAddr( saacproto_stringwrapper[1] , saacproto.workbufsize , saacproto_demkstr_string( saacproto.token_list[2] ));
  166. key = saacproto_wrapStringAddr( saacproto_stringwrapper[2] , saacproto.workbufsize , saacproto_demkstr_string( saacproto.token_list[3] ));
  167. msgid = saacproto_demkstr_int( saacproto.token_list[4] );
  168. msgid2 = saacproto_demkstr_int( saacproto.token_list[5] );
  169. saacproto_DBGetEntryString_recv( fd,table,key,msgid,msgid2);
  170. return 0;
  171. }
  172. if( strcmp( funcname , "DBUpdateEntryInt" ) == 0 ){
  173. char* table;
  174. char* key;
  175. int value;
  176. char* info;
  177. int msgid;
  178. int msgid2;
  179. table = saacproto_wrapStringAddr( saacproto_stringwrapper[1] , saacproto.workbufsize , saacproto_demkstr_string( saacproto.token_list[2] ));
  180. key = saacproto_wrapStringAddr( saacproto_stringwrapper[2] , saacproto.workbufsize , saacproto_demkstr_string( saacproto.token_list[3] ));
  181. value = saacproto_demkstr_int( saacproto.token_list[4] );
  182. info = saacproto_wrapStringAddr( saacproto_stringwrapper[4] , saacproto.workbufsize , saacproto_demkstr_string( saacproto.token_list[5] ));
  183. msgid = saacproto_demkstr_int( saacproto.token_list[6] );
  184. msgid2 = saacproto_demkstr_int( saacproto.token_list[7] );
  185. saacproto_DBUpdateEntryInt_recv( fd,table,key,value,info,msgid,msgid2);
  186. return 0;
  187. }
  188. if( strcmp( funcname , "DBGetEntryRank" ) == 0 ){
  189. char* table;
  190. char* key;
  191. int msgid;
  192. int msgid2;
  193. table = saacproto_wrapStringAddr( saacproto_stringwrapper[1] , saacproto.workbufsize , saacproto_demkstr_string( saacproto.token_list[2] ));
  194. key = saacproto_wrapStringAddr( saacproto_stringwrapper[2] , saacproto.workbufsize , saacproto_demkstr_string( saacproto.token_list[3] ));
  195. msgid = saacproto_demkstr_int( saacproto.token_list[4] );
  196. msgid2 = saacproto_demkstr_int( saacproto.token_list[5] );
  197. saacproto_DBGetEntryRank_recv( fd,table,key,msgid,msgid2);
  198. return 0;
  199. }
  200. #ifdef _ALLDOMAN // Syu ADD 排行榜NPC
  201. if ( strcmp( funcname , "UpdataStele" ) == 0 ) {
  202. char *cdkey;
  203. char *name;
  204. char *title;
  205. int level;
  206. int trns;
  207. int time;
  208. int floor;
  209. cdkey = saacproto_wrapStringAddr( saacproto_stringwrapper[1] , saacproto.workbufsize , saacproto_demkstr_string( saacproto.token_list[2] ));
  210. name = saacproto_wrapStringAddr( saacproto_stringwrapper[2] , saacproto.workbufsize , saacproto_demkstr_string( saacproto.token_list[3] ));
  211. title = saacproto_wrapStringAddr( saacproto_stringwrapper[3] , saacproto.workbufsize , saacproto_demkstr_string( saacproto.token_list[4] ));
  212. level = saacproto_demkstr_int( saacproto.token_list[5] );
  213. trns = saacproto_demkstr_int( saacproto.token_list[6] );
  214. time = saacproto_demkstr_int( saacproto.token_list[7] );
  215. floor = saacproto_demkstr_int( saacproto.token_list[8] );
  216. saacproto_UpdataStele_recv ( fd , cdkey , name , title , level , trns , time , floor) ; 
  217. return 0;
  218. }
  219. #endif
  220. if( strcmp( funcname , "DBDeleteEntryInt" ) == 0 ){
  221. char* table;
  222. char* key;
  223. int msgid;
  224. int msgid2;
  225. table = saacproto_wrapStringAddr( saacproto_stringwrapper[1] , saacproto.workbufsize , saacproto_demkstr_string( saacproto.token_list[2] ));
  226. key = saacproto_wrapStringAddr( saacproto_stringwrapper[2] , saacproto.workbufsize , saacproto_demkstr_string( saacproto.token_list[3] ));
  227. msgid = saacproto_demkstr_int( saacproto.token_list[4] );
  228. msgid2 = saacproto_demkstr_int( saacproto.token_list[5] );
  229. saacproto_DBDeleteEntryInt_recv( fd,table,key,msgid,msgid2);
  230. return 0;
  231. }
  232. if( strcmp( funcname , "DBGetEntryInt" ) == 0 ){
  233. char* table;
  234. char* key;
  235. int msgid;
  236. int msgid2;
  237. table = saacproto_wrapStringAddr( saacproto_stringwrapper[1] , saacproto.workbufsize , saacproto_demkstr_string( saacproto.token_list[2] ));
  238. key = saacproto_wrapStringAddr( saacproto_stringwrapper[2] , saacproto.workbufsize , saacproto_demkstr_string( saacproto.token_list[3] ));
  239. msgid = saacproto_demkstr_int( saacproto.token_list[4] );
  240. msgid2 = saacproto_demkstr_int( saacproto.token_list[5] );
  241. saacproto_DBGetEntryInt_recv( fd,table,key,msgid,msgid2);
  242. return 0;
  243. }
  244. if( strcmp( funcname , "DBGetEntryByRank" ) == 0 ){
  245. char* table;
  246. int rank_start;
  247. int rank_end;
  248. int msgid;
  249. int msgid2;
  250. table = saacproto_wrapStringAddr( saacproto_stringwrapper[1] , saacproto.workbufsize , saacproto_demkstr_string( saacproto.token_list[2] ));
  251. rank_start = saacproto_demkstr_int( saacproto.token_list[3] );
  252. rank_end = saacproto_demkstr_int( saacproto.token_list[4] );
  253. msgid = saacproto_demkstr_int( saacproto.token_list[5] );
  254. msgid2 = saacproto_demkstr_int( saacproto.token_list[6] );
  255. saacproto_DBGetEntryByRank_recv( fd,table,rank_start,rank_end,msgid,msgid2);
  256. return 0;
  257. }
  258. if( strcmp( funcname , "DBGetEntryByCount" ) == 0 ){
  259. char* table;
  260. int count_start;
  261. int num;
  262. int msgid;
  263. int msgid2;
  264. table = saacproto_wrapStringAddr( saacproto_stringwrapper[1] , saacproto.workbufsize , saacproto_demkstr_string( saacproto.token_list[2] ));
  265. count_start = saacproto_demkstr_int( saacproto.token_list[3] );
  266. num = saacproto_demkstr_int( saacproto.token_list[4] );
  267. msgid = saacproto_demkstr_int( saacproto.token_list[5] );
  268. msgid2 = saacproto_demkstr_int( saacproto.token_list[6] );
  269. saacproto_DBGetEntryByCount_recv( fd,table,count_start,num,msgid,msgid2);
  270. return 0;
  271. }
  272. if( strcmp( funcname , "Broadcast" ) == 0 ){
  273. char* id;
  274. char* charname;
  275. char* message;
  276. int flag;
  277. id = saacproto_wrapStringAddr( saacproto_stringwrapper[1] , saacproto.workbufsize , saacproto_demkstr_string( saacproto.token_list[2] ));
  278. charname = saacproto_wrapStringAddr( saacproto_stringwrapper[2] , saacproto.workbufsize , saacproto_demkstr_string( saacproto.token_list[3] ));
  279. message = saacproto_wrapStringAddr( saacproto_stringwrapper[3] , saacproto.workbufsize , saacproto_demkstr_string( saacproto.token_list[4] ));
  280. flag = saacproto_demkstr_int( saacproto.token_list[5] );
  281. saacproto_Broadcast_recv( fd,id,charname,message,flag);
  282. return 0;
  283. }
  284. if( strcmp( funcname , "Message" ) == 0 ){
  285. char* id_from;
  286. char* charname_from;
  287. char* id_to;
  288. char* charname_to;
  289. char* message;
  290. int option;
  291. id_from = saacproto_wrapStringAddr( saacproto_stringwrapper[1] , saacproto.workbufsize , saacproto_demkstr_string( saacproto.token_list[2] ));
  292. charname_from = saacproto_wrapStringAddr( saacproto_stringwrapper[2] , saacproto.workbufsize , saacproto_demkstr_string( saacproto.token_list[3] ));
  293. id_to = saacproto_wrapStringAddr( saacproto_stringwrapper[3] , saacproto.workbufsize , saacproto_demkstr_string( saacproto.token_list[4] ));
  294. charname_to = saacproto_wrapStringAddr( saacproto_stringwrapper[4] , saacproto.workbufsize , saacproto_demkstr_string( saacproto.token_list[5] ));
  295. message = saacproto_wrapStringAddr( saacproto_stringwrapper[5] , saacproto.workbufsize , saacproto_demkstr_string( saacproto.token_list[6] ));
  296. option = saacproto_demkstr_int( saacproto.token_list[7] );
  297. saacproto_Message_recv( fd,id_from,charname_from,id_to,charname_to,message,option);
  298. return 0;
  299. }
  300. if( strcmp( funcname , "MessageAck" ) == 0 ){
  301. char* id;
  302. char* charname;
  303. char* result;
  304. int mesgid;
  305. id = saacproto_wrapStringAddr( saacproto_stringwrapper[1] , saacproto.workbufsize , saacproto_demkstr_string( saacproto.token_list[2] ));
  306. charname = saacproto_wrapStringAddr( saacproto_stringwrapper[2] , saacproto.workbufsize , saacproto_demkstr_string( saacproto.token_list[3] ));
  307. result = saacproto_wrapStringAddr( saacproto_stringwrapper[3] , saacproto.workbufsize , saacproto_demkstr_string( saacproto.token_list[4] ));
  308. mesgid = saacproto_demkstr_int( saacproto.token_list[5] );
  309. saacproto_MessageAck_recv( fd,id,charname,result,mesgid);
  310. return 0;
  311. }
  312. if( strcmp( funcname , "MessageFlush" ) == 0 ){
  313. char* id;
  314. char* charname;
  315. id = saacproto_wrapStringAddr( saacproto_stringwrapper[1] , saacproto.workbufsize , saacproto_demkstr_string( saacproto.token_list[2] ));
  316. charname = saacproto_wrapStringAddr( saacproto_stringwrapper[2] , saacproto.workbufsize , saacproto_demkstr_string( saacproto.token_list[3] ));
  317. saacproto_MessageFlush_recv( fd,id,charname);
  318. return 0;
  319. }
  320. // 成立家族
  321. if ( strcmp( funcname, "ACAddFM") == 0){
  322. int  fmleaderlv, fmsprite, charfdid, fmleadergrano;
  323. char *fmname, *fmleadername, *fmleaderid, *petname, *petattr, *fmrule;
  324. #ifdef _PERSONAL_FAME
  325. int  fame;
  326. #endif
  327. fmname = saacproto_wrapStringAddr(saacproto_stringwrapper[1], saacproto.workbufsize, saacproto_demkstr_string(saacproto.token_list[2]));
  328. fmleadername = saacproto_wrapStringAddr(saacproto_stringwrapper[2], saacproto.workbufsize, saacproto_demkstr_string(saacproto.token_list[3]));
  329. fmleaderid = saacproto_wrapStringAddr(saacproto_stringwrapper[3], saacproto.workbufsize, saacproto_demkstr_string(saacproto.token_list[4]));
  330. fmleaderlv = saacproto_demkstr_int(saacproto.token_list[5]);
  331. petname = saacproto_wrapStringAddr(saacproto_stringwrapper[5], saacproto.workbufsize, saacproto_demkstr_string(saacproto.token_list[6]));
  332. petattr = saacproto_wrapStringAddr(saacproto_stringwrapper[6], saacproto.workbufsize, saacproto_demkstr_string(saacproto.token_list[7]));
  333. fmrule = saacproto_wrapStringAddr(saacproto_stringwrapper[7], saacproto.workbufsize, saacproto_demkstr_string(saacproto.token_list[8]));
  334. fmsprite = saacproto_demkstr_int(saacproto.token_list[9]);
  335. fmleadergrano = saacproto_demkstr_int(saacproto.token_list[10]);
  336. #ifdef _PERSONAL_FAME
  337. fame = saacproto_demkstr_int(saacproto.token_list[11]);
  338. charfdid = saacproto_demkstr_int(saacproto.token_list[12]);
  339. saacproto_ACAddFM_recv(fd, fmname, fmleadername, fmleaderid,
  340. fmleaderlv, petname, petattr, fmrule, fmsprite,
  341. fmleadergrano, fame, charfdid);
  342. #else
  343. charfdid = saacproto_demkstr_int(saacproto.token_list[11]);
  344. saacproto_ACAddFM_recv(fd, fmname, fmleadername, fmleaderid,
  345. fmleaderlv, petname, petattr, fmrule, fmsprite,
  346. fmleadergrano, charfdid);
  347. #endif
  348. return 0;
  349. }
  350. // 加入家族
  351. if ( strcmp( funcname, "ACJoinFM") == 0){
  352. #ifdef _PERSONAL_FAME // Arminius: 家族个人声望
  353. int  fmindex, charlv, charfdid, index, fame;
  354. #else
  355. int  fmindex, charlv, charfdid, index;
  356. #endif
  357. char *fmname, *charname, *charid;
  358. fmname = saacproto_wrapStringAddr(saacproto_stringwrapper[1], saacproto.workbufsize, saacproto_demkstr_string(saacproto.token_list[2]));
  359. fmindex = saacproto_demkstr_int(saacproto.token_list[3]);
  360. charname = saacproto_wrapStringAddr(saacproto_stringwrapper[3], saacproto.workbufsize, saacproto_demkstr_string(saacproto.token_list[4]));
  361. charid = saacproto_wrapStringAddr(saacproto_stringwrapper[4], saacproto.workbufsize, saacproto_demkstr_string(saacproto.token_list[5]));
  362. charlv = saacproto_demkstr_int(saacproto.token_list[6]);
  363. index = saacproto_demkstr_int(saacproto.token_list[7]);
  364. #ifdef _PERSONAL_FAME // Arminius: 家族个人声望
  365. fame = saacproto_demkstr_int(saacproto.token_list[8]);
  366. charfdid = saacproto_demkstr_int(saacproto.token_list[9]);
  367. saacproto_ACJoinFM_recv(fd, fmname, fmindex, charname,
  368. charid, charlv, index, fame, charfdid);
  369. #else
  370. charfdid = saacproto_demkstr_int(saacproto.token_list[8]);
  371. saacproto_ACJoinFM_recv(fd, fmname, fmindex, charname,
  372. charid, charlv, index, charfdid);
  373. #endif
  374. return 0;
  375. }
  376. // 退出家族
  377. if ( strcmp( funcname, "ACLeaveFM") == 0){
  378. int  fmindex, charfdid, index;
  379. char *fmname, *charname, *charid;
  380. fmname = saacproto_wrapStringAddr(saacproto_stringwrapper[1], saacproto.workbufsize, saacproto_demkstr_string(saacproto.token_list[2]));
  381. fmindex = saacproto_demkstr_int(saacproto.token_list[3]);
  382. charname = saacproto_wrapStringAddr(saacproto_stringwrapper[3], saacproto.workbufsize, saacproto_demkstr_string(saacproto.token_list[4]));
  383. charid = saacproto_wrapStringAddr(saacproto_stringwrapper[4], saacproto.workbufsize, saacproto_demkstr_string(saacproto.token_list[5]));
  384. index = saacproto_demkstr_int(saacproto.token_list[6]);
  385. charfdid = saacproto_demkstr_int(saacproto.token_list[7]);
  386. saacproto_ACLeaveFM_recv(fd, fmname, fmindex, charname,
  387. charid, index, charfdid);
  388. return 0;
  389. }
  390. // 解散家族
  391. #ifdef _LEADERFUNCHECK
  392. if ( strcmp( funcname, "ACDelFM") == 0){
  393. int  fmindex, charfdid, index;
  394. char *fmname, *charname, *charid;
  395. fmname = saacproto_wrapStringAddr(saacproto_stringwrapper[1], saacproto.workbufsize, saacproto_demkstr_string(saacproto.token_list[2]));
  396. fmindex = saacproto_demkstr_int(saacproto.token_list[3]);
  397. index = saacproto_demkstr_int(saacproto.token_list[4]);
  398. charname = saacproto_wrapStringAddr(saacproto_stringwrapper[4], saacproto.workbufsize, saacproto_demkstr_string(saacproto.token_list[5]));
  399. charid = saacproto_wrapStringAddr(saacproto_stringwrapper[5], saacproto.workbufsize, saacproto_demkstr_string(saacproto.token_list[6]));
  400. charfdid = saacproto_demkstr_int(saacproto.token_list[7]);
  401. saacproto_ACDelFM_recv(fd, fmname, fmindex, index, charname, charid, charfdid);
  402. return 0;
  403. }
  404. #else
  405. if ( strcmp( funcname, "ACDelFM") == 0){
  406. int  fmindex, charfdid, index;
  407. char *fmname;
  408. fmname = saacproto_wrapStringAddr(saacproto_stringwrapper[1], saacproto.workbufsize, saacproto_demkstr_string(saacproto.token_list[2]));
  409. fmindex = saacproto_demkstr_int(saacproto.token_list[3]);
  410. index = saacproto_demkstr_int(saacproto.token_list[4]);
  411. charfdid = saacproto_demkstr_int(saacproto.token_list[5]);
  412. saacproto_ACDelFM_recv(fd, fmname, fmindex, index, charfdid);
  413. return 0;
  414. }
  415. #endif
  416. // 列出家族列表
  417. if ( strcmp( funcname, "ACShowFMList") == 0){
  418. saacproto_ACShowFMList_recv(fd);
  419. return 0;
  420. }
  421. // 列出成员列表
  422. if ( strcmp( funcname, "ACShowMemberList") == 0){
  423. int  index;
  424. char *tmpbuf;
  425. tmpbuf = saacproto_wrapStringAddr(saacproto_stringwrapper[1], saacproto.workbufsize, saacproto_demkstr_string(saacproto.token_list[2]));
  426. index = saacproto_demkstr_int(saacproto.token_list[3]);
  427. saacproto_ACShowMemberList_recv(fd, index);
  428. return 0;
  429. }
  430. // 列出家族详细资料
  431. if ( strcmp( funcname, "ACFMDetail") == 0){
  432. int  fmindex, charfdid, index;
  433. char *fmname;
  434. fmname = saacproto_wrapStringAddr(saacproto_stringwrapper[1], saacproto.workbufsize, saacproto_demkstr_string(saacproto.token_list[2]));
  435. fmindex = saacproto_demkstr_int(saacproto.token_list[3]);
  436. index = saacproto_demkstr_int(saacproto.token_list[4]);
  437. charfdid = saacproto_demkstr_int(saacproto.token_list[5]);
  438. saacproto_ACFMDetail_recv(fd, fmname, fmindex, index, charfdid);
  439. return 0;
  440. }
  441. // 列出家族留言
  442. if (strcmp( funcname, "ACFMReadMemo") == 0){
  443. int  index;
  444. char *tmpbuf;
  445. tmpbuf = saacproto_wrapStringAddr(saacproto_stringwrapper[1], saacproto.workbufsize, saacproto_demkstr_string(saacproto.token_list[2]));
  446. index = saacproto_demkstr_int(saacproto.token_list[3]);
  447. saacproto_ACFMReadMemo_recv(fd, index);
  448. return 0;
  449. }
  450. // 写入家族留言
  451. if (strcmp( funcname, "ACFMWriteMemo") == 0){
  452. int  index, fmindex;
  453. char *fmname, *data;
  454. fmname = saacproto_wrapStringAddr(saacproto_stringwrapper[1], saacproto.workbufsize, saacproto_demkstr_string(saacproto.token_list[2]));
  455. fmindex = saacproto_demkstr_int(saacproto.token_list[3]);
  456. data = saacproto_wrapStringAddr(saacproto_stringwrapper[3], saacproto.workbufsize, saacproto_demkstr_string(saacproto.token_list[4]));
  457. index = saacproto_demkstr_int(saacproto.token_list[5]);
  458. saacproto_ACFMWriteMemo_recv(fd, fmname, fmindex, data, index);
  459. return 0;
  460. }
  461. // 玩家login
  462. if ( strcmp( funcname, "ACFMCharLogin") == 0){
  463. int  fmindex, charlv, charfdid;
  464. #ifdef _FM_MODIFY
  465. int gsnum;
  466. #endif
  467. char *fmname, *charname, *charid;
  468. #ifdef _FMVER21
  469. int eventflag;
  470. #endif
  471. fmname = saacproto_wrapStringAddr(saacproto_stringwrapper[1], saacproto.workbufsize, saacproto_demkstr_string(saacproto.token_list[2]));
  472. fmindex = saacproto_demkstr_int(saacproto.token_list[3]);
  473. charname = saacproto_wrapStringAddr(saacproto_stringwrapper[3], saacproto.workbufsize, saacproto_demkstr_string(saacproto.token_list[4]));
  474. charid = saacproto_wrapStringAddr(saacproto_stringwrapper[4], saacproto.workbufsize, saacproto_demkstr_string(saacproto.token_list[5]));
  475. charlv = saacproto_demkstr_int(saacproto.token_list[6]);
  476. #ifdef _FMVER21
  477. eventflag = saacproto_demkstr_int(saacproto.token_list[7]);
  478. charfdid = saacproto_demkstr_int(saacproto.token_list[8]);
  479. #ifdef _FM_MODIFY
  480. gsnum = saacproto_demkstr_int(saacproto.token_list[9]);
  481. saacproto_ACFMCharLogin_recv(fd, fmname, fmindex, charname,charid, charlv, eventflag, charfdid,gsnum);
  482. #else
  483. saacproto_ACFMCharLogin_recv(fd, fmname, fmindex, charname,charid, charlv, eventflag, charfdid);
  484. #endif
  485. #else
  486. charfdid = saacproto_demkstr_int(saacproto.token_list[7]);
  487. saacproto_ACFMCharLogin_recv(fd, fmname, fmindex, charname,charid, charlv, charfdid);
  488. #endif
  489. return 0;
  490. }
  491. // 玩家logout
  492. if ( strcmp( funcname, "ACFMCharLogout") == 0){
  493. int  fmindex, charfdid, charlv, index;
  494. char *fmname, *charname, *charid;
  495. fmname = saacproto_wrapStringAddr(saacproto_stringwrapper[1], saacproto.workbufsize, saacproto_demkstr_string(saacproto.token_list[2]));
  496. fmindex = saacproto_demkstr_int(saacproto.token_list[3]);
  497. charname = saacproto_wrapStringAddr(saacproto_stringwrapper[3], saacproto.workbufsize, saacproto_demkstr_string(saacproto.token_list[4]));
  498. charid = saacproto_wrapStringAddr(saacproto_stringwrapper[4], saacproto.workbufsize, saacproto_demkstr_string(saacproto.token_list[5]));
  499. charlv = saacproto_demkstr_int(saacproto.token_list[6]);
  500. index = saacproto_demkstr_int(saacproto.token_list[7]);
  501. charfdid = saacproto_demkstr_int(saacproto.token_list[8]);
  502. saacproto_ACFMCharLogout_recv(fd, fmname, fmindex, charname,
  503. charid, charlv, index, charfdid);
  504. return 0;
  505. }
  506. // 族长审核成员加入家族、修改家族成员职位
  507. if (strcmp( funcname, "ACMemberJoinFM") == 0){
  508. int fmindex, charfdid, index, charindex, result;
  509. char *fmname, *charname;
  510. #ifdef _FMVER21
  511. int meindex;
  512. #endif
  513. fmname = saacproto_wrapStringAddr(saacproto_stringwrapper[1], saacproto.workbufsize, saacproto_demkstr_string(saacproto.token_list[2]));
  514. fmindex = saacproto_demkstr_int(saacproto.token_list[3]);
  515. charname = saacproto_wrapStringAddr(saacproto_stringwrapper[3], saacproto.workbufsize, saacproto_demkstr_string(saacproto.token_list[4]));
  516. charindex = saacproto_demkstr_int(saacproto.token_list[5]);
  517. index = saacproto_demkstr_int(saacproto.token_list[6]);
  518. result = saacproto_demkstr_int(saacproto.token_list[7]);
  519. #ifdef _FMVER21
  520. meindex = saacproto_demkstr_int(saacproto.token_list[8]);
  521. charfdid = saacproto_demkstr_int(saacproto.token_list[9]);
  522. saacproto_ACMemberJoinFM_recv(fd, fmname, fmindex, charname,
  523. charindex, index, result, meindex, charfdid);
  524. #else
  525. charfdid = saacproto_demkstr_int(saacproto.token_list[8]);
  526. saacproto_ACMemberJoinFM_recv(fd, fmname, fmindex, charname,
  527. charindex, index, result, charfdid);
  528. #endif
  529. return 0;
  530. }
  531. // 族长审核成员离开家族
  532. if (strcmp( funcname, "ACMemberLeaveFM") == 0){
  533. int fmindex, charfdid, index, charindex;
  534. char *fmname, *charname;
  535. #ifdef _FMVER21
  536. int meindex;
  537. #endif
  538. fmname = saacproto_wrapStringAddr(saacproto_stringwrapper[1], saacproto.workbufsize, saacproto_demkstr_string(saacproto.token_list[2]));
  539. fmindex = saacproto_demkstr_int(saacproto.token_list[3]);
  540. charname = saacproto_wrapStringAddr(saacproto_stringwrapper[3], saacproto.workbufsize, saacproto_demkstr_string(saacproto.token_list[4]));
  541. charindex = saacproto_demkstr_int(saacproto.token_list[5]);
  542. index = saacproto_demkstr_int(saacproto.token_list[6]);
  543. #ifdef _FMVER21
  544. meindex = saacproto_demkstr_int(saacproto.token_list[7]);
  545. charfdid = saacproto_demkstr_int(saacproto.token_list[8]);
  546. saacproto_ACMemberLeaveFM_recv(fd, fmname, fmindex, charname,
  547. charindex, index, meindex, charfdid);
  548. #else
  549. charfdid = saacproto_demkstr_int(saacproto.token_list[7]);
  550. saacproto_ACMemberLeaveFM_recv(fd, fmname, fmindex, charname,
  551. charindex, index, charfdid);
  552. #endif
  553. return 0;
  554. }
  555. // 列出家族据点
  556. if ( strcmp( funcname, "ACFMPointList") == 0){
  557. saacproto_ACFMPointList_recv(fd);
  558. return 0;
  559. }
  560. // 申请家族据点
  561. if (strcmp( funcname, "ACSetFMPoint") == 0){
  562. int fl, x, y, fmindex, index, fmpointindex, charfdid;
  563. char *fmname;
  564. fmname = saacproto_wrapStringAddr(saacproto_stringwrapper[1], saacproto.workbufsize, saacproto_demkstr_string(saacproto.token_list[2]));
  565. fmindex = saacproto_demkstr_int(saacproto.token_list[3]);
  566. index = saacproto_demkstr_int(saacproto.token_list[4]);
  567. fmpointindex = saacproto_demkstr_int(saacproto.token_list[5]);
  568. fl = saacproto_demkstr_int(saacproto.token_list[6]);
  569. x = saacproto_demkstr_int(saacproto.token_list[7]);
  570. y = saacproto_demkstr_int(saacproto.token_list[8]);
  571. charfdid = saacproto_demkstr_int(saacproto.token_list[9]);
  572. saacproto_ACSetFMPoint_recv(fd, fmname, fmindex, index,
  573. fmpointindex, fl, x, y, charfdid);
  574. return 0;
  575. }
  576. // 设定家族据点
  577. if (strcmp( funcname, "ACFixFMPoint") == 0){
  578. int winindex, winfmindex, loseindex, losefmindex, village;
  579. char *winfmname, *losefmname;
  580. winfmname = saacproto_wrapStringAddr(saacproto_stringwrapper[1], saacproto.workbufsize, saacproto_demkstr_string(saacproto.token_list[2]));
  581. winfmindex = saacproto_demkstr_int(saacproto.token_list[3]);
  582. winindex = saacproto_demkstr_int(saacproto.token_list[4]);
  583. losefmname =  saacproto_wrapStringAddr(saacproto_stringwrapper[4], saacproto.workbufsize, saacproto_demkstr_string(saacproto.token_list[5]));
  584. losefmindex = saacproto_demkstr_int(saacproto.token_list[6]);
  585. loseindex = saacproto_demkstr_int(saacproto.token_list[7]);
  586. village= saacproto_demkstr_int(saacproto.token_list[8]);
  587. saacproto_ACFixFMPoint_recv(fd, winfmname, winfmindex, winindex,
  588. losefmname, losefmindex, loseindex, village);
  589. return 0;
  590. }
  591. // 族长对全员广播
  592. if (strcmp( funcname, "ACFMAnnounce") == 0){
  593. int  index, fmindex, color;
  594. char *fmname, *data;
  595. fmname = saacproto_wrapStringAddr(saacproto_stringwrapper[1], saacproto.workbufsize, saacproto_demkstr_string(saacproto.token_list[2]));
  596. fmindex = saacproto_demkstr_int(saacproto.token_list[3]);
  597. index = saacproto_demkstr_int(saacproto.token_list[4]);
  598. data = saacproto_wrapStringAddr(saacproto_stringwrapper[4], saacproto.workbufsize, saacproto_demkstr_string(saacproto.token_list[5]));
  599. color = saacproto_demkstr_int(saacproto.token_list[6]);
  600. saacproto_ACFMAnnounce_recv(fd, fmname, fmindex, index, data, color);
  601. return 0;
  602. }
  603. // 列出家族排行榜
  604. if ( strcmp( funcname, "ACShowTopFMList") == 0){
  605. int kindflag;
  606. char *tmpbuf;
  607. tmpbuf = saacproto_wrapStringAddr(saacproto_stringwrapper[1], saacproto.workbufsize, saacproto_demkstr_string(saacproto.token_list[2]));
  608. kindflag = saacproto_demkstr_int(saacproto.token_list[3]);
  609. saacproto_ACShowTopFMList_recv(fd, kindflag);
  610. return 0;
  611. }
  612. // 修正家族资料
  613. if (strcmp( funcname, "ACFixFMData") == 0){
  614. int fmindex, charfdid, index, kindflag, charindex;
  615. char *fmname, *data1, *data2;
  616. fmname = saacproto_wrapStringAddr(saacproto_stringwrapper[1], saacproto.workbufsize, saacproto_demkstr_string(saacproto.token_list[2]));
  617. fmindex = saacproto_demkstr_int(saacproto.token_list[3]);
  618. index = saacproto_demkstr_int(saacproto.token_list[4]);
  619. kindflag = saacproto_demkstr_int(saacproto.token_list[5]);
  620. data1 = saacproto_wrapStringAddr(saacproto_stringwrapper[5], saacproto.workbufsize, saacproto_demkstr_string(saacproto.token_list[6]));
  621. data2 = saacproto_wrapStringAddr(saacproto_stringwrapper[6], saacproto.workbufsize, saacproto_demkstr_string(saacproto.token_list[7]));
  622. charindex = saacproto_demkstr_int(saacproto.token_list[8]);
  623. charfdid = saacproto_demkstr_int(saacproto.token_list[9]);
  624. saacproto_ACFixFMData_recv(fd, fmname, fmindex, index, kindflag,
  625. data1, data2, charindex, charfdid);
  626. return 0;
  627. }
  628. // 家族PK後修正声望
  629. if (strcmp( funcname, "ACFixFMPK") == 0){
  630. int winindex, winfmindex, loseindex, losefmindex;
  631. char *winfmname, *losefmname;
  632. winfmname = saacproto_wrapStringAddr(saacproto_stringwrapper[1], saacproto.workbufsize, saacproto_demkstr_string(saacproto.token_list[2]));
  633. winfmindex = saacproto_demkstr_int(saacproto.token_list[3]);
  634. winindex = saacproto_demkstr_int(saacproto.token_list[4]);
  635. losefmname =  saacproto_wrapStringAddr(saacproto_stringwrapper[4], saacproto.workbufsize, saacproto_demkstr_string(saacproto.token_list[5]));
  636. losefmindex = saacproto_demkstr_int(saacproto.token_list[6]);
  637. loseindex = saacproto_demkstr_int(saacproto.token_list[7]);
  638. saacproto_ACFixFMPK_recv(fd, winfmname, winfmindex, winindex,
  639. losefmname, losefmindex, loseindex);
  640. return 0;
  641. }
  642. // GM修正家族资料
  643. if (strcmp( funcname, "ACGMFixFMData") == 0){
  644. int index, charfdid;
  645. char *cmd, *data, *tmpbuf,*charid;
  646. tmpbuf = saacproto_wrapStringAddr(saacproto_stringwrapper[1], saacproto.workbufsize, saacproto_demkstr_string(saacproto.token_list[2]));
  647. index = saacproto_demkstr_int(saacproto.token_list[3]);
  648. charid = saacproto_wrapStringAddr(saacproto_stringwrapper[3], saacproto.workbufsize, saacproto_demkstr_string(saacproto.token_list[4]));
  649. cmd = saacproto_wrapStringAddr(saacproto_stringwrapper[4], saacproto.workbufsize, saacproto_demkstr_string(saacproto.token_list[5]));
  650. data = saacproto_wrapStringAddr(saacproto_stringwrapper[5], saacproto.workbufsize, saacproto_demkstr_string(saacproto.token_list[6]));
  651. charfdid = saacproto_demkstr_int(saacproto.token_list[7]);
  652. saacproto_ACGMFixFMData_recv(fd, index, charid, cmd, data, charfdid);
  653. return 0;
  654. }
  655. // 取得家族资料
  656. if (strcmp( funcname, "ACGetFMData") == 0){
  657. int fmindex, charfdid, index, kindflag;
  658. char *fmname;
  659. fmname = saacproto_wrapStringAddr(saacproto_stringwrapper[1], saacproto.workbufsize, saacproto_demkstr_string(saacproto.token_list[2]));
  660. fmindex = saacproto_demkstr_int(saacproto.token_list[3]);
  661. index = saacproto_demkstr_int(saacproto.token_list[4]);
  662. kindflag = saacproto_demkstr_int(saacproto.token_list[5]);
  663. charfdid = saacproto_demkstr_int(saacproto.token_list[6]);
  664. saacproto_ACGetFMData_recv(fd, fmname, fmindex, index, kindflag,
  665. charfdid);
  666. return 0;
  667. }
  668. // 广播踢馆人的资料
  669. if (strcmp( funcname,"ACManorPKAck") == 0){
  670. char *data;
  671. data = saacproto_wrapStringAddr(saacproto_stringwrapper[1], saacproto.workbufsize, saacproto_demkstr_string(saacproto.token_list[2]));
  672. saacproto_ACManorPKAck_recv(fd, data);
  673. return 0;
  674. }
  675. if (strcmp( funcname,"ACreLoadFmData") ==0){
  676. int type, data;
  677. type = saacproto_demkstr_int(saacproto.token_list[2]);
  678. data = saacproto_demkstr_int(saacproto.token_list[3]);
  679. saacproto_ACreLoadFmData_recv( fd, type, data);
  680. return 0;
  681. }
  682. #ifdef _AC_SEND_FM_PK
  683. if (strcmp( funcname,"ACLoadFmPk") ==0)
  684. {
  685. int fmpks_pos;
  686. fmpks_pos = saacproto_demkstr_int(saacproto.token_list[2]);
  687. saacproto_ACLoadFmPk_recv(fd, fmpks_pos);
  688. return 0;
  689. }
  690. #ifdef _ACFMPK_LIST
  691. if (strcmp( funcname,"ACSendFmPk") ==0){
  692. int fmpks_pos, userindex, flg;
  693. char *data;
  694. fmpks_pos = saacproto_demkstr_int(saacproto.token_list[2]);
  695. userindex = saacproto_demkstr_int(saacproto.token_list[3]);
  696. flg = saacproto_demkstr_int(saacproto.token_list[4]);
  697. data = saacproto_wrapStringAddr( saacproto_stringwrapper[4] , saacproto.workbufsize , saacproto_demkstr_string( saacproto.token_list[5] ));
  698. saacproto_ACSendFmPk_recv( fd, fmpks_pos, userindex, flg, data);
  699. return 0;
  700. }
  701. #else
  702. if (strcmp( funcname,"ACSendFmPk") ==0){
  703. int fmpks_pos;
  704. char *data;
  705. fmpks_pos = saacproto_demkstr_int(saacproto.token_list[2]);
  706. data = saacproto_wrapStringAddr( saacproto_stringwrapper[2] , saacproto.workbufsize , saacproto_demkstr_string( saacproto.token_list[3] ));
  707. saacproto_ACSendFmPk_recv(fd, fmpks_pos, data);
  708. return 0;
  709. }
  710. #endif
  711. #endif
  712. #ifdef _CHAR_POOLITEM
  713. if( strcmp( funcname , "ACInsertPoolItem" ) == 0 ){
  714. char *cdkey, *Pooldataarg;
  715. int clifdid, userindex;
  716. cdkey = saacproto_wrapStringAddr( saacproto_stringwrapper[1] , saacproto.workbufsize , saacproto_demkstr_string( saacproto.token_list[2] ));
  717. Pooldataarg = saacproto_wrapStringAddr( saacproto_stringwrapper[2] , saacproto.workbufsize , saacproto_demkstr_string( saacproto.token_list[3] ));
  718. userindex = saacproto_demkstr_int( saacproto.token_list[4] );
  719. clifdid = saacproto_demkstr_int( saacproto.token_list[5] );
  720. saacproto_ACCharInsertPoolItem_recv( fd, cdkey, userindex, clifdid, Pooldataarg);
  721. return 0;
  722. }
  723. if( strcmp( funcname , "ACSavePoolItem" ) == 0 ){
  724. char *cdkey, *Pooldataarg;
  725. int clifdid, userindex;
  726. cdkey = saacproto_wrapStringAddr( saacproto_stringwrapper[1] , saacproto.workbufsize , saacproto_demkstr_string( saacproto.token_list[2] ));
  727. Pooldataarg = saacproto_wrapStringAddr( saacproto_stringwrapper[2] , saacproto.workbufsize , saacproto_demkstr_string( saacproto.token_list[3] ));
  728. userindex = saacproto_demkstr_int( saacproto.token_list[4] );
  729. clifdid = saacproto_demkstr_int( saacproto.token_list[5] );
  730. saacproto_ACCharSavePoolItem_recv( fd, cdkey, userindex, clifdid, Pooldataarg);
  731. return 0;
  732. }
  733. if( strcmp( funcname , "ACGetPoolItem" ) == 0 ){
  734. char *cdkey;
  735. int clifdid, userindex, npcid;
  736. cdkey = saacproto_wrapStringAddr( saacproto_stringwrapper[1] , saacproto.workbufsize , saacproto_demkstr_string( saacproto.token_list[2] ));
  737. userindex = saacproto_demkstr_int( saacproto.token_list[3] );
  738. clifdid = saacproto_demkstr_int( saacproto.token_list[4] );
  739. npcid = saacproto_demkstr_int( saacproto.token_list[5] );
  740. saacproto_ACCharGetPoolItem_recv( fd, cdkey, userindex, clifdid, npcid);
  741. return 0;
  742. }
  743. #endif
  744. #ifdef _CHAR_POOLPET
  745. if( strcmp( funcname , "ACInsertPoolPet" ) == 0 ){
  746. char *cdkey, *Pooldataarg;
  747. int clifdid, userindex;
  748. cdkey = saacproto_wrapStringAddr( saacproto_stringwrapper[1] , saacproto.workbufsize , saacproto_demkstr_string( saacproto.token_list[2] ));
  749. Pooldataarg = saacproto_wrapStringAddr( saacproto_stringwrapper[2] , saacproto.workbufsize , saacproto_demkstr_string( saacproto.token_list[3] ));
  750. userindex = saacproto_demkstr_int( saacproto.token_list[4] );
  751. clifdid = saacproto_demkstr_int( saacproto.token_list[5] );
  752. saacproto_ACCharInsertPoolPet_recv( fd, cdkey, userindex, clifdid, Pooldataarg);
  753. return 0;
  754. }
  755. if( strcmp( funcname , "ACSavePoolPet" ) == 0 ){
  756. char *cdkey, *Pooldataarg;
  757. int clifdid, userindex;
  758. cdkey = saacproto_wrapStringAddr( saacproto_stringwrapper[1] , saacproto.workbufsize , saacproto_demkstr_string( saacproto.token_list[2] ));
  759. Pooldataarg = saacproto_wrapStringAddr( saacproto_stringwrapper[2] , saacproto.workbufsize , saacproto_demkstr_string( saacproto.token_list[3] ));
  760. userindex = saacproto_demkstr_int( saacproto.token_list[4] );
  761. clifdid = saacproto_demkstr_int( saacproto.token_list[5] );
  762. saacproto_ACCharSavePoolPet_recv( fd, cdkey, userindex, clifdid, Pooldataarg);
  763. return 0;
  764. }
  765. if( strcmp( funcname , "ACGetPoolPet" ) == 0 ){
  766. char *cdkey;
  767. int clifdid, userindex, npcid;
  768. cdkey = saacproto_wrapStringAddr( saacproto_stringwrapper[1] , saacproto.workbufsize , saacproto_demkstr_string( saacproto.token_list[2] ));
  769. userindex = saacproto_demkstr_int( saacproto.token_list[3] );
  770. clifdid = saacproto_demkstr_int( saacproto.token_list[4] );
  771. npcid = saacproto_demkstr_int( saacproto.token_list[5] );
  772. saacproto_ACCharGetPoolPet_recv( fd, cdkey, userindex, clifdid, npcid);
  773. return 0;
  774. }
  775. #endif
  776. #ifdef _ANGEL_SUMMON
  777. if( strcmp( funcname , "ACMissionTable" ) == 0 ){
  778. int num;
  779. int type;
  780. char* data;
  781. //int charaindex;
  782. char* angelinfo;
  783. num = saacproto_demkstr_int( saacproto.token_list[2] );
  784. type = saacproto_demkstr_int( saacproto.token_list[3] );
  785. data = saacproto_wrapStringAddr( saacproto_stringwrapper[3] , saacproto.workbufsize , saacproto_demkstr_string( saacproto.token_list[4] ));
  786. //charaindex = saacproto_demkstr_int( saacproto.token_list[5] );
  787. angelinfo = saacproto_wrapStringAddr( saacproto_stringwrapper[4] , saacproto.workbufsize , saacproto_demkstr_string( saacproto.token_list[5] ));
  788. saacproto_ACMissionTable_recv( fd, num, type, data, angelinfo);
  789. return 0;
  790. }
  791. #endif
  792. #ifdef _TEACHER_SYSTEM
  793. if( strcmp( funcname , "ACCheckCharacterOnLine" ) == 0 ){
  794. int charaindex,flag;
  795. char *id;
  796. char *name;
  797. charaindex = saacproto_demkstr_int( saacproto.token_list[2] );
  798. id = saacproto_wrapStringAddr( saacproto_stringwrapper[2] , saacproto.workbufsize , saacproto_demkstr_string( saacproto.token_list[3] ));
  799. name = saacproto_wrapStringAddr( saacproto_stringwrapper[3] , saacproto.workbufsize , saacproto_demkstr_string( saacproto.token_list[4] ));
  800. flag = saacproto_demkstr_int( saacproto.token_list[5] );
  801. saacproto_ACCheckCharacterOnLine_recv(fd,charaindex,id,name,flag);
  802. return 0;
  803. }
  804. #endif
  805. if( strcmp( funcname , "ACCharLogin" ) == 0 ){
  806. int clifd;
  807. char *id , *pas, *ip;
  808. clifd = saacproto_demkstr_int( saacproto.token_list[2] );
  809. id = saacproto_wrapStringAddr( saacproto_stringwrapper[2] , saacproto.workbufsize , saacproto_demkstr_string( saacproto.token_list[3] ));
  810. pas = saacproto_wrapStringAddr( saacproto_stringwrapper[3] , saacproto.workbufsize , saacproto_demkstr_string( saacproto.token_list[4] ));
  811. ip = saacproto_wrapStringAddr( saacproto_stringwrapper[4] , saacproto.workbufsize , saacproto_demkstr_string( saacproto.token_list[5] ));
  812. saacproto_ACCharLogin_recv( fd, clifd, id, pas, ip );
  813. return 0;
  814. }
  815. if( strcmp( funcname , "LockLogin" ) == 0 ){
  816. int flag;
  817. char *id , *ip;
  818. id = saacproto_wrapStringAddr( saacproto_stringwrapper[1] , saacproto.workbufsize , saacproto_demkstr_string( saacproto.token_list[2] ));
  819. ip = saacproto_wrapStringAddr( saacproto_stringwrapper[2] , saacproto.workbufsize , saacproto_demkstr_string( saacproto.token_list[3] ));
  820. flag = saacproto_demkstr_int( saacproto.token_list[4] );
  821. saacproto_LockLogin_recv( fd, id, ip, flag );
  822. return 0;
  823. }
  824. sprintf( debugfun, "%s", funcname);
  825. return -1;
  826. }
  827. void saacproto_ACServerLogin_send( int fd,char* result,char* data )
  828. {
  829. saacproto_CreateHeader( saacproto.work , "ACServerLogin" );
  830. saacproto_strcatsafe( saacproto.work , saacproto_mkstr_string( result ) ,saacproto.workbufsize );
  831. saacproto_strcatsafe( saacproto.work , saacproto_mkstr_string( data ) ,saacproto.workbufsize );
  832. saacproto_Send( fd , saacproto.work );
  833. }
  834. void saacproto_ACCharList_send( int fd,char* result,char* output,int id )
  835. {
  836. saacproto_CreateHeader( saacproto.work , "ACCharList" );
  837. saacproto_strcatsafe( saacproto.work , saacproto_mkstr_string( result ) ,saacproto.workbufsize );
  838. saacproto_strcatsafe( saacproto.work , saacproto_mkstr_string( output ) ,saacproto.workbufsize );
  839. saacproto_strcatsafe( saacproto.work , saacproto_mkstr_int( id ) ,saacproto.workbufsize );
  840. saacproto_Send( fd , saacproto.work );
  841. }
  842. static int CharDataLens = 0;
  843. #ifdef _NewSave
  844. void saacproto_ACCharLoad_send( int fd,char* result,char* data,int id,int charindex )
  845. #else
  846. void saacproto_ACCharLoad_send( int fd,char* result,char* data,int id )
  847. #endif
  848. {
  849. if( strstr( result, "successful") != NULL && strlen( data) > CharDataLens ){
  850. CharDataLens = strlen( data);
  851. //andy_log
  852. log("最大数据长度:%dn", CharDataLens );
  853. }
  854. saacproto_CreateHeader( saacproto.work , "ACCharLoad" );
  855. saacproto_strcatsafe( saacproto.work , saacproto_mkstr_string( result ) ,saacproto.workbufsize );
  856. saacproto_strcatsafe( saacproto.work , saacproto_mkstr_string( data ) ,saacproto.workbufsize );
  857. saacproto_strcatsafe( saacproto.work , saacproto_mkstr_int( id ) ,saacproto.workbufsize );
  858. #ifdef _NewSave
  859. saacproto_strcatsafe( saacproto.work , saacproto_mkstr_int( charindex ) ,saacproto.workbufsize );
  860. #endif
  861. saacproto_Send( fd , saacproto.work );
  862. }
  863. /*
  864. 214 :  <li><a name="ACCharSaveS"><font color=blue>servertoclient ACCharSave( string result , string data,int id);<br></font></a>
  865. 215 :      ACCharSave卞覆允月忒蚕[
  866. 216 :      <br><br>
  867. 217 :      <dl>
  868. 218 :        <dt> string result
  869. 219 :        <dd>"successful" , "failed" 及中勿木井[
  870. 220 :        <dt> string data
  871. 221 :        <dd>"failed"及凛反    毛憎允谛棉及苇化坌月  侬  匹丐月[
  872. 222 :        <dt> int id
  873. 223 :        <dd> 娄醒及id毛公及引引戊疋□仄化忒允
  874. 224 :      </dl>
  875. 225 :      <br>
  876. 226 :      <br>
  877. 227 : 
  878. 228 : 
  879. 229 : 
  880. 230 : 
  881. */
  882. void saacproto_ACCharSave_send( int fd,char* result,char* data,int id )
  883. {
  884. saacproto_CreateHeader( saacproto.work , "ACCharSave" );
  885. saacproto_strcatsafe( saacproto.work , saacproto_mkstr_string( result ) ,saacproto.workbufsize );
  886. saacproto_strcatsafe( saacproto.work , saacproto_mkstr_string( data ) ,saacproto.workbufsize );
  887. saacproto_strcatsafe( saacproto.work , saacproto_mkstr_int( id ) ,saacproto.workbufsize );
  888. saacproto_Send( fd , saacproto.work );
  889. }
  890. /*
  891. 256 :  <li><a name="ACCharDeleteS"><font color=blue>servertoclient ACCharDelete(string result, string data,int id);<br></font></a>
  892. 257 :      ACCharDelete卞覆允月忒蚕[
  893. 258 :      <br><br>
  894. 259 :      <dl>
  895. 260 :        <dt> string result
  896. 261 :        <dd>"successful" , "failed" 及中勿木井[
  897. 262 :        <dt> string data
  898. 263 :        <dd>"failed"及凛反    毛憎允谛棉及苇化坌月  侬  匹丐月[
  899. 264 :        <dt> int id
  900. 265 :        <dd> 娄醒及id及公及引引及戊疋□
  901. 266 :     
  902. 267 :      </dl>
  903. 268 :      <br>
  904. 269 :      <br>
  905. 270 : 
  906. */
  907. void saacproto_ACCharDelete_send( int fd,char* result,char* data,int id )
  908. {
  909. saacproto_CreateHeader( saacproto.work , "ACCharDelete" );
  910. saacproto_strcatsafe( saacproto.work , saacproto_mkstr_string( result ) ,saacproto.workbufsize );
  911. saacproto_strcatsafe( saacproto.work , saacproto_mkstr_string( data ) ,saacproto.workbufsize );
  912. saacproto_strcatsafe( saacproto.work , saacproto_mkstr_int( id ) ,saacproto.workbufsize );
  913. saacproto_Send( fd , saacproto.work );
  914. }
  915. /*
  916. 290 :  <LI>    <a name="ACLockS"><font color=blue>servertoclient ACLock( string result, string data ,int id);<br></font></a>
  917. 291 :      ACLock卞覆允月忒蚕[
  918. 292 :      <br><br>
  919. 293 :      <dl>
  920. 294 :        <dt>string result
  921. 295 :        <dd>"successful" , "failed" 及中勿木井[
  922. 296 :        <dt>string data
  923. 297 :        <dd>"failed"及凛反    毛憎允谛棉及苇化坌月  侬  匹丐月[
  924. 298 :        <dt>int id
  925. 299 :        <dd>娄醒及id及公及引引戊疋□
  926. 300 :      </dl>
  927. 301 :      <br>
  928. 302 :      <br>
  929. 303 : 
  930. */
  931. void saacproto_ACLock_send( int fd,char* result,char* data,int id )
  932. {
  933. saacproto_CreateHeader( saacproto.work , "ACLock" );
  934. saacproto_strcatsafe( saacproto.work , saacproto_mkstr_string( result ) ,saacproto.workbufsize );
  935. saacproto_strcatsafe( saacproto.work , saacproto_mkstr_string( data ) ,saacproto.workbufsize );
  936. saacproto_strcatsafe( saacproto.work , saacproto_mkstr_int( id ) ,saacproto.workbufsize );
  937. saacproto_Send( fd , saacproto.work );
  938. }
  939. /*
  940. 318 :  <LI><a name="ACUCheckS"><font color=blue>servertoclient ACUCheck( string mem_id );</font></a><BR>
  941. 319 :   失市它件玄扔□田□井日必□丞扔□田□卞覆仄化}丐月交□扒□互蜇箕夫弘奶件
  942. 320 :   仄化中月井升丹井毛民尼永弁允月[
  943. 321 :   <BR><BR>
  944. 322 :   <dl>
  945. 323 :     <dt>string mem_id
  946. 324 :     <dd>譬屯月覆擂及交□扒□及gamersDream member id
  947. 325 :   </dl>  
  948. 326 :   <BR><BR>
  949. 327 : 
  950. 328 : 
  951. */
  952. void saacproto_ACUCheck_send( int fd,char* mem_id )
  953. {
  954. saacproto_CreateHeader( saacproto.work , "ACUCheck" );
  955. saacproto_strcatsafe( saacproto.work , saacproto_mkstr_string( mem_id ) ,saacproto.workbufsize );
  956. saacproto_Send( fd , saacproto.work );
  957. }
  958. /*
  959. 344 :  <LI><a name="DBUpdateEntryStringS"><font color=blue>servertoclient DBUpdateEntryString( string result, string table, string key, int msgid, int msgid2 );</font></a><BR>
  960. 345 :   晓及戊穴件玉及瑛绊[撩  仄化手荚汊尕第  卅及匹  骰仄化方中冗
  961. 346 :   <dl>
  962. 347 :     <dt>string result
  963. 348 :     <dD>successful 井failed    
  964. 349 :     <dt>string table
  965. 350 :     <dD>
  966. 351 :     <dt>int msgid
  967. 352 :     <dD>
  968. 353 :     <dt>int msgid2
  969. 354 :     <dD>
  970. 355 :   </dL>
  971. 356 : 
  972. */
  973. void saacproto_DBUpdateEntryString_send( int fd,char* result,char* table,char* key,int msgid,int msgid2 )
  974. {
  975. saacproto_CreateHeader( saacproto.work , "DBUpdateEntryString" );
  976. saacproto_strcatsafe( saacproto.work , saacproto_mkstr_string( result ) ,saacproto.workbufsize );
  977. saacproto_strcatsafe( saacproto.work , saacproto_mkstr_string( table ) ,saacproto.workbufsize );
  978. saacproto_strcatsafe( saacproto.work , saacproto_mkstr_string( key ) ,saacproto.workbufsize );
  979. saacproto_strcatsafe( saacproto.work , saacproto_mkstr_int( msgid ) ,saacproto.workbufsize );
  980. saacproto_strcatsafe( saacproto.work , saacproto_mkstr_int( msgid2 ) ,saacproto.workbufsize );
  981. saacproto_Send( fd , saacproto.work );
  982. }
  983. /*
  984. 369 :  <LI><a name="DBDeleteEntryStringS"><font color=blue>servertoclient DBDeleteEntryString( string result, string table, string key , int msgid , int msgid2 );</font></a><BR>
  985. 370 :     侬  巨件玄伉及绰轮及瑛绊
  986. 371 :   <dl>
  987. 372 :     <dt>string result
  988. 373 :     <dd>successful / failed
  989. 374 :     <dt>string table
  990. 375 :     <dd>
  991. 376 :     <dt>string key
  992. 377 :     <dd>
  993. 378 :     <dt>int msgid
  994. 379 :     <dd>
  995. 380 :     <dt>int msgid2
  996. 381 :     <dd>    
  997. 382 :   </dl>
  998. 383 :   
  999. */
  1000. void saacproto_DBDeleteEntryString_send( int fd,char* result,char* table,char* key,int msgid,int msgid2 )
  1001. {
  1002. saacproto_CreateHeader( saacproto.work , "DBDeleteEntryString" );
  1003. saacproto_strcatsafe( saacproto.work , saacproto_mkstr_string( result ) ,saacproto.workbufsize );
  1004. saacproto_strcatsafe( saacproto.work , saacproto_mkstr_string( table ) ,saacproto.workbufsize );
  1005. saacproto_strcatsafe( saacproto.work , saacproto_mkstr_string( key ) ,saacproto.workbufsize );
  1006. saacproto_strcatsafe( saacproto.work , saacproto_mkstr_int( msgid ) ,saacproto.workbufsize );
  1007. saacproto_strcatsafe( saacproto.work , saacproto_mkstr_int( msgid2 ) ,saacproto.workbufsize );
  1008. saacproto_Send( fd , saacproto.work );
  1009. }
  1010. /*
  1011. 396 :  <Li><a name="DBGetEntryStringS"><font color=blue>servertoclient DBGetEntryString( string result, string value, string table, string key, int msgid, int msgid2 );</font></a><BR>
  1012. 397 :   潸曰分仄及忒曰袄
  1013. 398 :   <dl>
  1014. 399 :     <dt>string result
  1015. 400 :     <dd>successful / failed
  1016. 401 :     <dt>string value
  1017. 402 :     <dd>袄
  1018. 403 :     <dt>string table
  1019. 404 :     <dd>    
  1020. 405 :     <dt>string key
  1021. 406 :     <dd>
  1022. 407 :     <dt>int msgid
  1023. 408 :     <dd>
  1024. 409 :     <dt>int msgid2
  1025. 410 :     <dd>    
  1026. 411 :   </dl>
  1027. 412 : 
  1028. */
  1029. void saacproto_DBGetEntryString_send( int fd,char* result,char* value,char* table,char* key,int msgid,int msgid2 )
  1030. {
  1031. saacproto_CreateHeader( saacproto.work , "DBGetEntryString" );
  1032. saacproto_strcatsafe( saacproto.work , saacproto_mkstr_string( result ) ,saacproto.workbufsize );
  1033. saacproto_strcatsafe( saacproto.work , saacproto_mkstr_string( value ) ,saacproto.workbufsize );
  1034. saacproto_strcatsafe( saacproto.work , saacproto_mkstr_string( table ) ,saacproto.workbufsize );
  1035. saacproto_strcatsafe( saacproto.work , saacproto_mkstr_string( key ) ,saacproto.workbufsize );
  1036. saacproto_strcatsafe( saacproto.work , saacproto_mkstr_int( msgid ) ,saacproto.workbufsize );
  1037. saacproto_strcatsafe( saacproto.work , saacproto_mkstr_int( msgid2 ) ,saacproto.workbufsize );
  1038. saacproto_Send( fd , saacproto.work );
  1039. }
  1040. /*
  1041. 435 :  <LI><a name="DBUpdateEntryIntS"><font color=blue>servertoclient DBUpdateEntryInt( string result , string table, string key, int msgid, int msgid2 );</font></a><BR>
  1042. 436 :   DBUpdateEntry及瑛绊[
  1043. 437 :   <dl>
  1044. 438 :     <dt>string result
  1045. 439 :     <dd>succesful/failed
  1046. 440 :     <dt>string table
  1047. 441 :     <dd>  □皮伙  毛公及引引井尹允
  1048. 442 :     <dt>string key
  1049. 443 :     <dd>平□毛公及引引井尹允    
  1050. 444 :     <dt>int msgid, int msgid2
  1051. 445 :     <dd>msgid 毛公及引引忒允[
  1052. 446 :   </dl>
  1053. 447 :   <BR><BR>
  1054. 448 : 
  1055. */
  1056. #ifdef _ALLDOMAN // Syu ADD 排行榜NPC
  1057. void saacproto_UpdataStele_send( int fd , char *data )
  1058. {
  1059. saacproto_CreateHeader( saacproto.work , "UpdataStele" );
  1060. saacproto_strcatsafe( saacproto.work , saacproto_mkstr_string( data ) ,saacproto.workbufsize );
  1061. saacproto_Send( fd , saacproto.work );
  1062. }
  1063. void saacproto_S_UpdataStele_send( int fd , char *ocdkey , char *oname , char *ncdkey , 
  1064.   char *nname , char *title , int level , int trns , int floor ) {
  1065. saacproto_CreateHeader( saacproto.work , "S_UpdataStele" );
  1066. saacproto_strcatsafe( saacproto.work , saacproto_mkstr_string( ocdkey ) ,saacproto.workbufsize );
  1067. saacproto_strcatsafe( saacproto.work , saacproto_mkstr_string( oname ) ,saacproto.workbufsize );
  1068. saacproto_strcatsafe( saacproto.work , saacproto_mkstr_string( ncdkey ) ,saacproto.workbufsize );
  1069. saacproto_strcatsafe( saacproto.work , saacproto_mkstr_string( nname ) ,saacproto.workbufsize );
  1070. saacproto_strcatsafe( saacproto.work , saacproto_mkstr_string( title ) ,saacproto.workbufsize );
  1071. saacproto_strcatsafe( saacproto.work , saacproto_mkstr_int( level ) ,saacproto.workbufsize );
  1072. saacproto_strcatsafe( saacproto.work , saacproto_mkstr_int( trns ) ,saacproto.workbufsize );
  1073. saacproto_strcatsafe( saacproto.work , saacproto_mkstr_int( floor ) ,saacproto.workbufsize );
  1074. saacproto_Send( fd , saacproto.work );
  1075. }
  1076. #endif
  1077. void saacproto_DBUpdateEntryInt_send( int fd,char* result,char* table,char* key,int msgid,int msgid2 )
  1078. {
  1079. saacproto_CreateHeader( saacproto.work , "DBUpdateEntryInt" );
  1080. saacproto_strcatsafe( saacproto.work , saacproto_mkstr_string( result ) ,saacproto.workbufsize );
  1081. saacproto_strcatsafe( saacproto.work , saacproto_mkstr_string( table ) ,saacproto.workbufsize );
  1082. saacproto_strcatsafe( saacproto.work , saacproto_mkstr_string( key ) ,saacproto.workbufsize );
  1083. saacproto_strcatsafe( saacproto.work , saacproto_mkstr_int( msgid ) ,saacproto.workbufsize );
  1084. saacproto_strcatsafe( saacproto.work , saacproto_mkstr_int( msgid2 ) ,saacproto.workbufsize );
  1085. saacproto_Send( fd , saacproto.work );
  1086. }
  1087. /*
  1088. 463 :  <LI><a name="DBGetEntryRankS"><font color=blue>servertoclient DBGetEntryRank( string result , int rank , int count, string table, string key, int msgid, int msgid2 );</font></a><BR>
  1089. 464 :   赐匏毛忒允[
  1090. 465 :   <dl>
  1091. 466 :     <dt>string result
  1092. 467 :     <dd>successful/failed
  1093. 468 :     <dt>int rank
  1094. 469 :     <dd>赐匏[1动晓及袄毛潸月[
  1095. 470 :     <dt>int count
  1096. 471 :     <dd>晓井日中仁勾户井[  赓及巨件玄伉反0井日反元引月[
  1097. 472 :     <dt>string table
  1098. 473 :     <dd>  □皮伙  毛公及引引井尹允
  1099. 474 :     <dt>string key
  1100. 475 :     <dd>平□毛公及引引井尹允
  1101. 476 :     <dt>int msgid, int msgid2
  1102. 477 :     <dd>msgid 毛公及引引忒允
  1103. 478 :   </dl>
  1104. 479 :   <BR><BR>
  1105. 480 : 
  1106. 481 :   
  1107. */
  1108. void saacproto_DBGetEntryRank_send( int fd,char* result,int rank,int count,char* table,char* key,int msgid,int msgid2 )
  1109. {
  1110. saacproto_CreateHeader( saacproto.work , "DBGetEntryRank" );
  1111. saacproto_strcatsafe( saacproto.work , saacproto_mkstr_string( result ) ,saacproto.workbufsize );
  1112. saacproto_strcatsafe( saacproto.work , saacproto_mkstr_int( rank ) ,saacproto.workbufsize );
  1113. saacproto_strcatsafe( saacproto.work , saacproto_mkstr_int( count ) ,saacproto.workbufsize );
  1114. saacproto_strcatsafe( saacproto.work , saacproto_mkstr_string( table ) ,saacproto.workbufsize );
  1115. saacproto_strcatsafe( saacproto.work , saacproto_mkstr_string( key ) ,saacproto.workbufsize );
  1116. saacproto_strcatsafe( saacproto.work , saacproto_mkstr_int( msgid ) ,saacproto.workbufsize );
  1117. saacproto_strcatsafe( saacproto.work , saacproto_mkstr_int( msgid2 ) ,saacproto.workbufsize );
  1118. saacproto_Send( fd , saacproto.work );
  1119. }
  1120. /*
  1121. 494 :  <LI><a name="DBDeleteEntryIntS"><font color=blue>servertoclient DBDeleteEntryInt( string result , string table, string key, int msgid, int msgid2 );</font></a><BR>
  1122. 495 :   绰轮及瑛绊
  1123. 496 :   <dl>
  1124. 497 :     <dt>string result
  1125. 498 :     <dd>successful/failed
  1126. 499 :     <dt>string table
  1127. 500 :     <dd>  □皮伙  毛公及引引井尹允
  1128. 501 :     <dt>string key
  1129. 502 :     <dd>平□毛公及引引井尹允
  1130. 503 :     <dt>int msgid, int msgid2
  1131. 504 :     <dd>msgid 毛公及引引忒允
  1132. 505 :   </dl>
  1133. 506 :   <BR><BR>
  1134. 507 : 
  1135. */
  1136. void saacproto_DBDeleteEntryInt_send( int fd,char* result,char* table,char* key,int msgid,int msgid2 )
  1137. {
  1138. saacproto_CreateHeader( saacproto.work , "DBDeleteEntryInt" );
  1139. saacproto_strcatsafe( saacproto.work , saacproto_mkstr_string( result ) ,saacproto.workbufsize );
  1140. saacproto_strcatsafe( saacproto.work , saacproto_mkstr_string( table ) ,saacproto.workbufsize );
  1141. saacproto_strcatsafe( saacproto.work , saacproto_mkstr_string( key ) ,saacproto.workbufsize );
  1142. saacproto_strcatsafe( saacproto.work , saacproto_mkstr_int( msgid ) ,saacproto.workbufsize );
  1143. saacproto_strcatsafe( saacproto.work , saacproto_mkstr_int( msgid2 ) ,saacproto.workbufsize );
  1144. saacproto_Send( fd , saacproto.work );
  1145. }
  1146. /*
  1147. 520 :  <LI><a name="DBGetEntryIntS"><font color=blue>servertoclient DBGetEntryInt( string result , int value , string table, string key, int msgid, int msgid2 );</font></a><BR>
  1148. 521 :   巨件玄伉及袄毛井尹允
  1149. 522 :   <dl>
  1150. 523 :     <dt>string result
  1151. 524 :     <dd>successful/failed
  1152. 525 :     <dt>int value
  1153. 526 :     <dd>袄公及手及
  1154. 527 :     <dt>string table
  1155. 528 :     <dd>  □皮伙  毛公及引引井尹允
  1156. 529 :     <dt>string key
  1157. 530 :     <dd>平□毛公及引引井尹允
  1158. 531 :     <dt>int msgid, int msgid2
  1159. 532 :     <dd>msgid 毛公及引引忒允
  1160. 533 :   </dl>
  1161. 534 : 
  1162. 535 : 
  1163. 536 : 
  1164. */
  1165. void saacproto_DBGetEntryInt_send( int fd,char* result,int value,char* table,char* key,int msgid,int msgid2 )
  1166. {
  1167. saacproto_CreateHeader( saacproto.work , "DBGetEntryInt" );
  1168. saacproto_strcatsafe( saacproto.work , saacproto_mkstr_string( result ) ,saacproto.workbufsize );
  1169. saacproto_strcatsafe( saacproto.work , saacproto_mkstr_int( value ) ,saacproto.workbufsize );
  1170. saacproto_strcatsafe( saacproto.work , saacproto_mkstr_string( table ) ,saacproto.workbufsize );
  1171. saacproto_strcatsafe( saacproto.work , saacproto_mkstr_string( key ) ,saacproto.workbufsize );
  1172. saacproto_strcatsafe( saacproto.work , saacproto_mkstr_int( msgid ) ,saacproto.workbufsize );
  1173. saacproto_strcatsafe( saacproto.work , saacproto_mkstr_int( msgid2 ) ,saacproto.workbufsize );
  1174. saacproto_Send( fd , saacproto.work );
  1175. }
  1176. /*
  1177. 552 :  <LI><a name="DBGetEntryByRankS"><font color=blue>servertoclient DBGetEntryByRank( string result , string list , string table, int msgid, int msgid2 );</font></a><BR>
  1178. 553 :   DBGetEntryByRank及瑛绊[
  1179. 554 :   <dl>
  1180. 555 :     <dt>string result
  1181. 556 :     <dd>
  1182. 557 :     <dt>string list
  1183. 558 :     <dd>"RANK,KEY,SCORE,INFO|RANK,KEY,SCORE,INFO|...."<BR>
  1184. 559 :     RANK反赐匏匹丐月[KEY反公及赐匏卞卅匀化中月旦戊失毛手匀化中月
  1185. 560 :     平□[SCORE反帮醒袄匹旦戊失匹丐月[
  1186. 561 :       [<br>
  1187. 562 :     "1,RINGO,123465,data1|2,HOGE,4567,data2|2,FUCK,4567,data3"<BR>
  1188. 563 :     仇及  分午}2匏反2谛中月仇午卞卅月[
  1189. 564 :     <dt>string table
  1190. 565 :     <dd>  □皮伙  
  1191. 566 :     <dt>int msgid, int msgid2
  1192. 567 :     <dd>
  1193. 568 :   </dl>
  1194. 569 : 
  1195. 570 : 
  1196. */
  1197. void saacproto_DBGetEntryByRank_send( int fd,char* result,char* list,char* table,int msgid,int msgid2 )
  1198. {
  1199. saacproto_CreateHeader( saacproto.work , "DBGetEntryByRank" );
  1200. saacproto_strcatsafe( saacproto.work , saacproto_mkstr_string( result ) ,saacproto.workbufsize );
  1201. saacproto_strcatsafe( saacproto.work , saacproto_mkstr_string( list ) ,saacproto.workbufsize );
  1202. saacproto_strcatsafe( saacproto.work , saacproto_mkstr_string( table ) ,saacproto.workbufsize );
  1203. saacproto_strcatsafe( saacproto.work , saacproto_mkstr_int( msgid ) ,saacproto.workbufsize );
  1204. saacproto_strcatsafe( saacproto.work , saacproto_mkstr_int( msgid2 ) ,saacproto.workbufsize );
  1205. saacproto_Send( fd , saacproto.work );
  1206. }
  1207. /*
  1208. 583 :  <LI><a name="DBGetEntryByCountS"><font color=blue>servertoclient DBGetEntryByCount( string result , string list , string table, int count_start, int msgid, int msgid2 );</font></a><BR>
  1209. 584 :   DBGetEntryByCount 及瑛绊[
  1210. 585 :   <dl>
  1211. 586 :     <dt>string result
  1212. 587 :     <dd>SUCCESSFUL/FAILED
  1213. 588 :     <dt>string list
  1214. 589 :     <dd>请  伉旦玄[1巨件玄伉丐凶曰 "INDEX,RANK,KEY,SCORE,INFO" 及4蜊及树  
  1215. 590 :     及赚匹丐曰}公木互蜊醒坌 "|" 匹勾卅互月[蜊醒互0及桦宁反
  1216. 591 :     坞  侬  [
  1217. 592 :     <dt>int num
  1218. 593 :     <dd>中仁勾午曰分允井[1卅日1蜊[2卅日2蜊[
  1219. 594 :     <dt>int msgid ,msgid2
  1220. 595 :     <dd>丢永本□斥ID.    
  1221. 596 :   </dL>
  1222. 597 : 
  1223. */
  1224. void saacproto_DBGetEntryByCount_send( int fd,char* result,char* list,char* table,int count_start,int msgid,int msgid2 )
  1225. {
  1226. saacproto_CreateHeader( saacproto.work , "DBGetEntryByCount" );
  1227. saacproto_strcatsafe( saacproto.work , saacproto_mkstr_string( result ) ,saacproto.workbufsize );
  1228. saacproto_strcatsafe( saacproto.work , saacproto_mkstr_string( list ) ,saacproto.workbufsize );
  1229. saacproto_strcatsafe( saacproto.work , saacproto_mkstr_string( table ) ,saacproto.workbufsize );
  1230. saacproto_strcatsafe( saacproto.work , saacproto_mkstr_int( count_start ) ,saacproto.workbufsize );
  1231. saacproto_strcatsafe( saacproto.work , saacproto_mkstr_int( msgid ) ,saacproto.workbufsize );
  1232. saacproto_strcatsafe( saacproto.work , saacproto_mkstr_int( msgid2 ) ,saacproto.workbufsize );
  1233. saacproto_Send( fd , saacproto.work );
  1234. }
  1235. /*
  1236. 611 :  <LI><a name="Broadcast"><font color=blue>servertoclient Broadcast( string id, string charname, string message );</font></a><BR>
  1237. 612 :   Broadcast及失市它件玄扔□田□井日必□丞扔□田□尺及霜耨迕
  1238. 613 :   <dl>
  1239. 614 :     <dt>string id
  1240. 615 :     <dd>user ID
  1241. 616 :     <dt>string charname
  1242. 617 :     <dd>character name
  1243. 618 :     <dt>string message
  1244. 619 :     <dd>丢永本□斥
  1245. 620 :     <dt>int flag
  1246. 621 :     <dd>1卞允月午}愤坌卞卞反  霜今木卅中[
  1247. 622 :   </dl>
  1248. 623 : 
  1249. */
  1250. void saacproto_Broadcast_send( int fd,char* id,char* charname,char* message )
  1251. {
  1252. saacproto_CreateHeader( saacproto.work , "Broadcast" );
  1253. saacproto_strcatsafe( saacproto.work , saacproto_mkstr_string( id ) ,saacproto.workbufsize );
  1254. saacproto_strcatsafe( saacproto.work , saacproto_mkstr_string( charname ) ,saacproto.workbufsize );
  1255. saacproto_strcatsafe( saacproto.work , saacproto_mkstr_string( message ) ,saacproto.workbufsize );
  1256. saacproto_Send( fd , saacproto.work );
  1257. }
  1258. /*
  1259. 642 :  <LI><a name="Message"><font color=blue>servertoclient Message( string id_from, string charname_from, string id_to, string charname_to, string message , int option , int mesgid );</font></a><BR>
  1260. 643 :   失市它件玄扔□田□井日必□丞扔□田□卞丢永本□斥毛霜耨允月[
  1261. 644 :   <dl>
  1262. 645 :     <dt>string id_from
  1263. 646 :     <dd>from ID
  1264. 647 :     <dt>string charname_from
  1265. 648 :     <dd>from character name
  1266. 649 :     <dt>string id_to
  1267. 650 :     <dd>to ID
  1268. 651 :     <dt>string charname_to
  1269. 652 :     <dd>to character name
  1270. 653 :     <dt>string message
  1271. 654 :     <dd>丢永本□斥及    
  1272. 655 :     <dt>int option
  1273. 656 :     <dd>左皿扑亦件(晓及楮醒毛辅寰)
  1274. 657 :     <dt>int mesgid
  1275. 658 :     <dd>丢永本□斥ID 失市它件玄扔□田□及栋  迕
  1276. 659 :   </dl>
  1277. 660 : 
  1278. */
  1279. void saacproto_Message_send( int fd,char* id_from,char* charname_from,char* id_to,char* charname_to,char* message,int option,int mesgid )
  1280. {
  1281. saacproto_CreateHeader( saacproto.work , "Message" );
  1282. saacproto_strcatsafe( saacproto.work , saacproto_mkstr_string( id_from ) ,saacproto.workbufsize );
  1283. saacproto_strcatsafe( saacproto.work , saacproto_mkstr_string( charname_from ) ,saacproto.workbufsize );
  1284. saacproto_strcatsafe( saacproto.work , saacproto_mkstr_string( id_to ) ,saacproto.workbufsize );
  1285. saacproto_strcatsafe( saacproto.work , saacproto_mkstr_string( charname_to ) ,saacproto.workbufsize );
  1286. saacproto_strcatsafe( saacproto.work , saacproto_mkstr_string( message ) ,saacproto.workbufsize );
  1287. saacproto_strcatsafe( saacproto.work , saacproto_mkstr_int( option ) ,saacproto.workbufsize );
  1288. saacproto_strcatsafe( saacproto.work , saacproto_mkstr_int( mesgid ) ,saacproto.workbufsize );
  1289. saacproto_Send( fd , saacproto.work );
  1290. }
  1291. void saacproto_SetServerLogFiles( char *r , char *w )
  1292. {
  1293. saacproto_strcpysafe( saacproto_writelogfilename , w , sizeof(saacproto_writelogfilename ));
  1294. saacproto_strcpysafe( saacproto_readlogfilename , r , sizeof(saacproto_readlogfilename ));
  1295. }
  1296. int saacproto_InitServer( int (*writefunc)(int,char*,int) , int worksiz )
  1297. {
  1298. int i;
  1299. if( (void*)writefunc == NULL){saacproto.write_func = saacproto_default_write_wrap;} else {saacproto.write_func = writefunc;}
  1300. saacproto_AllocateCommonWork(worksiz);
  1301. saacproto_stringwrapper = (char**)calloc( 1,sizeof(char*) * MAXLSRPCARGS);
  1302. if(saacproto_stringwrapper ==NULL)return -1;
  1303. memset( saacproto_stringwrapper , 0, sizeof(char*)*MAXLSRPCARGS);
  1304. for(i=0;i<MAXLSRPCARGS;i++){
  1305. saacproto_stringwrapper[i] = (char*)calloc( 1, worksiz );
  1306. if( saacproto_stringwrapper[i] == NULL){
  1307. for(i=0;i<MAXLSRPCARGS;i++){free( saacproto_stringwrapper[i]);return -1;}
  1308. }
  1309. }
  1310. saacproto.ret_work = (char*)calloc( 1,sizeof( worksiz ));
  1311. if( saacproto.ret_work == NULL ){ return -1; }
  1312. return 0;
  1313. }
  1314. void saacproto_CleanupServer( void )
  1315. {
  1316. int i;
  1317. free( saacproto.work );
  1318. free( saacproto.arraywork);
  1319. free( saacproto.escapework );
  1320. free( saacproto.val_str);
  1321. free( saacproto.token_list );
  1322. for(i=0;i<MAXLSRPCARGS;i++){free( saacproto_stringwrapper[i]);}
  1323. free( saacproto_stringwrapper );
  1324. free( saacproto.ret_work );
  1325. }
  1326. /************************************************************
  1327.  * CoolFish: Family 2001/5/18
  1328.  ***********************************************************/
  1329. // 成立家族
  1330. void saacproto_ACAddFM_send(int fd, char *result, int fmindex, int index,
  1331. int charfdid)
  1332. {
  1333. saacproto_CreateHeader(saacproto.work , "ACAddFM");
  1334. saacproto_strcatsafe(saacproto.work , saacproto_mkstr_string(result) ,saacproto.workbufsize );
  1335. saacproto_strcatsafe(saacproto.work , saacproto_mkstr_int(fmindex) ,saacproto.workbufsize );
  1336. saacproto_strcatsafe(saacproto.work , saacproto_mkstr_int(index) ,saacproto.workbufsize );
  1337. saacproto_strcatsafe(saacproto.work , saacproto_mkstr_int(charfdid) ,saacproto.workbufsize );
  1338. saacproto_Send( fd , saacproto.work );
  1339. }
  1340. // 加入家族
  1341. void saacproto_ACJoinFM_send(int fd, char *result, int recv, int charfdid)
  1342. {
  1343. saacproto_CreateHeader(saacproto.work , "ACJoinFM");
  1344. saacproto_strcatsafe(saacproto.work , saacproto_mkstr_string(result) ,saacproto.workbufsize );
  1345. saacproto_strcatsafe(saacproto.work , saacproto_mkstr_int(recv) ,saacproto.workbufsize );
  1346. saacproto_strcatsafe(saacproto.work , saacproto_mkstr_int(charfdid) ,saacproto.workbufsize );
  1347. saacproto_Send( fd , saacproto.work );
  1348. }
  1349. // 退出家族
  1350. void saacproto_ACLeaveFM_send(int fd, char *result, int resultflag, int charfdid)
  1351. {
  1352. saacproto_CreateHeader(saacproto.work , "ACLeaveFM");
  1353. saacproto_strcatsafe(saacproto.work , saacproto_mkstr_string(result) ,saacproto.workbufsize );
  1354. saacproto_strcatsafe(saacproto.work , saacproto_mkstr_int(resultflag) ,saacproto.workbufsize );
  1355. saacproto_strcatsafe(saacproto.work , saacproto_mkstr_int(charfdid) ,saacproto.workbufsize );
  1356. saacproto_Send( fd , saacproto.work );
  1357. }
  1358. // 解散家族
  1359. void saacproto_ACDelFM_send(int fd, char *result, int charfdid)
  1360. {
  1361. saacproto_CreateHeader(saacproto.work , "ACDelFM");
  1362. saacproto_strcatsafe(saacproto.work , saacproto_mkstr_string(result) ,saacproto.workbufsize );
  1363. saacproto_strcatsafe(saacproto.work , saacproto_mkstr_int(charfdid) ,saacproto.workbufsize );
  1364. saacproto_Send( fd , saacproto.work );}
  1365. // 列出家族列表
  1366. void saacproto_ACShowFMList_send(int fd, char *result, int num, char *data)
  1367. {
  1368. saacproto_CreateHeader(saacproto.work , "ACShowFMList");
  1369. saacproto_strcatsafe(saacproto.work , saacproto_mkstr_string(result) ,saacproto.workbufsize );
  1370. saacproto_strcatsafe(saacproto.work , saacproto_mkstr_int(num) ,saacproto.workbufsize );
  1371. saacproto_strcatsafe(saacproto.work , saacproto_mkstr_string(data) ,saacproto.workbufsize );
  1372. saacproto_Send( fd , saacproto.work );
  1373. }
  1374. // 列出成员列表
  1375. void saacproto_ACShowMemberList_send(int fd, char *result, int index, int num,
  1376. int acceptflag, int fmjoinnum, char *data)
  1377. {
  1378. saacproto_CreateHeader(saacproto.work , "ACShowMemberList");
  1379. saacproto_strcatsafe(saacproto.work , saacproto_mkstr_string(result) ,saacproto.workbufsize );
  1380. saacproto_strcatsafe(saacproto.work , saacproto_mkstr_int(index) ,saacproto.workbufsize );
  1381. saacproto_strcatsafe(saacproto.work , saacproto_mkstr_int(num) ,saacproto.workbufsize );
  1382. saacproto_strcatsafe(saacproto.work , saacproto_mkstr_int(acceptflag) ,saacproto.workbufsize );
  1383. saacproto_strcatsafe(saacproto.work , saacproto_mkstr_int(fmjoinnum) ,saacproto.workbufsize );
  1384. saacproto_strcatsafe(saacproto.work , saacproto_mkstr_string(data) ,saacproto.workbufsize );
  1385. saacproto_Send( fd , saacproto.work );
  1386. }
  1387. // 列出家族详细资料
  1388. void saacproto_ACFMDetail_send(int fd, char *result, char *data,
  1389. int charfdid)
  1390. {
  1391. saacproto_CreateHeader(saacproto.work , "ACFMDetail");
  1392. saacproto_strcatsafe(saacproto.work , saacproto_mkstr_string(result) ,saacproto.workbufsize );
  1393. saacproto_strcatsafe(saacproto.work , saacproto_mkstr_string(data) ,saacproto.workbufsize );
  1394. saacproto_strcatsafe(saacproto.work , saacproto_mkstr_int(charfdid) ,saacproto.workbufsize );
  1395. saacproto_Send( fd , saacproto.work );
  1396. }
  1397. // 族长审核成员加入家族
  1398. void saacproto_ACMemberJoinFM_send(int fd, char *result, int charfdid)
  1399. {
  1400. saacproto_CreateHeader(saacproto.work , "ACMemberJoinFM");
  1401. saacproto_strcatsafe(saacproto.work , saacproto_mkstr_string(result) ,saacproto.workbufsize );
  1402. saacproto_strcatsafe(saacproto.work , saacproto_mkstr_int(charfdid) ,saacproto.workbufsize );
  1403. saacproto_Send( fd , saacproto.work );
  1404. }
  1405. // 族长审核成员离开家族
  1406. void saacproto_ACMemberLeaveFM_send(int fd, char *result, int charfdid)
  1407. {
  1408. saacproto_CreateHeader(saacproto.work , "ACMemberLeaveFM");
  1409. saacproto_strcatsafe(saacproto.work , saacproto_mkstr_string(result) ,saacproto.workbufsize );
  1410. saacproto_strcatsafe(saacproto.work , saacproto_mkstr_int(charfdid) ,saacproto.workbufsize );
  1411. saacproto_Send( fd , saacproto.work );
  1412. }
  1413. // 加入家族之玩家login
  1414. #ifdef _PERSONAL_FAME   // Arminius: 家族个人声望
  1415. void saacproto_ACFMCharLogin_send(int fd, char *result, int index, int floor,
  1416. int fmpopular, int joinflag, int fmsetupflag, int flag, int charindex,
  1417. int charfame, int charfdid
  1418. #ifdef _NEW_MANOR_LAW
  1419. ,int momentum
  1420. #endif
  1421. )
  1422. #else
  1423. void saacproto_ACFMCharLogin_send(int fd, char *result, int index, int floor,
  1424. int fmpopular, int joinflag, int fmsetupflag, int flag, int charindex,
  1425. int charfdid)
  1426. #endif
  1427. {
  1428. saacproto_CreateHeader(saacproto.work , "ACFMCharLogin");
  1429. saacproto_strcatsafe(saacproto.work , saacproto_mkstr_string(result) ,saacproto.workbufsize );
  1430. saacproto_strcatsafe(saacproto.work , saacproto_mkstr_int(index) ,saacproto.workbufsize );
  1431. saacproto_strcatsafe(saacproto.work , saacproto_mkstr_int(floor) ,saacproto.workbufsize );
  1432. saacproto_strcatsafe(saacproto.work , saacproto_mkstr_int(fmpopular) ,saacproto.workbufsize );
  1433. saacproto_strcatsafe(saacproto.work , saacproto_mkstr_int(joinflag) ,saacproto.workbufsize );
  1434. saacproto_strcatsafe(saacproto.work , saacproto_mkstr_int(fmsetupflag) ,saacproto.workbufsize );
  1435. saacproto_strcatsafe(saacproto.work , saacproto_mkstr_int(flag) ,saacproto.workbufsize );
  1436. saacproto_strcatsafe(saacproto.work , saacproto_mkstr_int(charindex) ,saacproto.workbufsize );
  1437. #ifdef _PERSONAL_FAME   // Arminius: 家族个人声望
  1438. saacproto_strcatsafe(saacproto.work , saacproto_mkstr_int(charfame) ,saacproto.workbufsize );
  1439. #endif
  1440. saacproto_strcatsafe(saacproto.work , saacproto_mkstr_int(charfdid) ,saacproto.workbufsize );
  1441. #ifdef _NEW_MANOR_LAW
  1442. saacproto_strcatsafe(saacproto.work , saacproto_mkstr_int(momentum) ,saacproto.workbufsize );
  1443. #endif
  1444. saacproto_Send( fd , saacproto.work );
  1445. }
  1446. // 加入家族之玩家logout
  1447. void saacproto_ACFMCharLogout_send(int fd, char *result, int charfdid)
  1448. {
  1449. saacproto_CreateHeader(saacproto.work , "ACFMCharLogout");
  1450. saacproto_strcatsafe(saacproto.work , saacproto_mkstr_string(result) ,saacproto.workbufsize );
  1451. saacproto_strcatsafe(saacproto.work , saacproto_mkstr_int(charfdid) ,saacproto.workbufsize );
  1452. saacproto_Send( fd , saacproto.work );
  1453. }
  1454. // 列出家族留言板
  1455. void saacproto_ACFMReadMemo_send(int fd, char *result, int index, int num,
  1456.         int dataindex, char *data)
  1457. {
  1458. saacproto_CreateHeader(saacproto.work , "ACFMReadMemo");
  1459. saacproto_strcatsafe(saacproto.work , saacproto_mkstr_string(result) ,saacproto.workbufsize );
  1460. saacproto_strcatsafe(saacproto.work , saacproto_mkstr_int(index) ,saacproto.workbufsize );
  1461. saacproto_strcatsafe(saacproto.work , saacproto_mkstr_int(num) ,saacproto.workbufsize );
  1462. saacproto_strcatsafe(saacproto.work , saacproto_mkstr_int(dataindex) ,saacproto.workbufsize );
  1463. saacproto_strcatsafe(saacproto.work , saacproto_mkstr_string(data) ,saacproto.workbufsize );
  1464. saacproto_Send( fd , saacproto.work );
  1465. }
  1466. // 写入家族留言板
  1467. void saacproto_ACFMWriteMemo_send(int fd, char *result, int index)
  1468. {
  1469. saacproto_CreateHeader(saacproto.work , "ACFMWriteMemo");
  1470. saacproto_strcatsafe(saacproto.work , saacproto_mkstr_string(result) ,saacproto.workbufsize );
  1471. saacproto_strcatsafe(saacproto.work , saacproto_mkstr_int(index) ,saacproto.workbufsize );
  1472. saacproto_Send( fd , saacproto.work );
  1473. }
  1474. // 列出家族据点
  1475. void saacproto_ACFMPointList_send(int fd, char *result, char *data)
  1476. {
  1477. saacproto_CreateHeader(saacproto.work , "ACFMPointList");
  1478. saacproto_strcatsafe(saacproto.work , saacproto_mkstr_string(result) ,saacproto.workbufsize );
  1479. saacproto_strcatsafe(saacproto.work , saacproto_mkstr_string(data) ,saacproto.workbufsize );
  1480. saacproto_Send( fd , saacproto.work );
  1481. }
  1482. // 申请家族据点
  1483. void saacproto_ACSetFMPoint_send(int fd, char *result, int r, int charfdid)
  1484. {
  1485. saacproto_CreateHeader(saacproto.work , "ACSetFMPoint");
  1486. saacproto_strcatsafe(saacproto.work , saacproto_mkstr_string(result) ,saacproto.workbufsize );
  1487. saacproto_strcatsafe(saacproto.work , saacproto_mkstr_int(r) ,saacproto.workbufsize );
  1488. saacproto_strcatsafe(saacproto.work , saacproto_mkstr_int(charfdid) ,saacproto.workbufsize );
  1489. saacproto_Send( fd , saacproto.work );
  1490. }
  1491. // 设定家族据点
  1492. void saacproto_ACFixFMPoint_send(int fd, char *result, int r)
  1493. {
  1494. saacproto_CreateHeader(saacproto.work , "ACFixFMPoint");
  1495. saacproto_strcatsafe(saacproto.work , saacproto_mkstr_string(result) ,saacproto.workbufsize );
  1496. saacproto_strcatsafe(saacproto.work , saacproto_mkstr_int(r) ,saacproto.workbufsize );
  1497. saacproto_Send( fd , saacproto.work );
  1498. }
  1499. // 族长对星系家族成员广播
  1500. void saacproto_ACFMAnnounce_send(int fd, char *result, char *fmname,
  1501.                 int fmindex, int index, int kindflag, char *data, int color)
  1502. {
  1503. saacproto_CreateHeader(saacproto.work , "ACFMAnnounce");
  1504. saacproto_strcatsafe(saacproto.work , saacproto_mkstr_string(result) ,saacproto.workbufsize );
  1505. saacproto_strcatsafe(saacproto.work , saacproto_mkstr_string(fmname) ,saacproto.workbufsize );
  1506. saacproto_strcatsafe(saacproto.work , saacproto_mkstr_int(fmindex) ,saacproto.workbufsize );
  1507. saacproto_strcatsafe(saacproto.work , saacproto_mkstr_int(index) ,saacproto.workbufsize );
  1508. saacproto_strcatsafe(saacproto.work , saacproto_mkstr_int(kindflag) ,saacproto.workbufsize );
  1509. saacproto_strcatsafe(saacproto.work , saacproto_mkstr_string(data) ,saacproto.workbufsize );
  1510. saacproto_strcatsafe(saacproto.work , saacproto_mkstr_int(color) ,saacproto.workbufsize );
  1511. saacproto_Send( fd , saacproto.work );
  1512. }                
  1513. // 列出家族排行榜
  1514. void saacproto_ACShowTopFMList_send(int fd, char *result, int kindflag,
  1515. int num, char *data)
  1516. {
  1517. saacproto_CreateHeader(saacproto.work , "ACShowTopFMList");
  1518. saacproto_strcatsafe(saacproto.work , saacproto_mkstr_string(result) ,saacproto.workbufsize );
  1519. saacproto_strcatsafe(saacproto.work , saacproto_mkstr_int(kindflag) ,saacproto.workbufsize );
  1520. saacproto_strcatsafe(saacproto.work , saacproto_mkstr_int(num) ,saacproto.workbufsize );
  1521. saacproto_strcatsafe(saacproto.work , saacproto_mkstr_string(data) ,saacproto.workbufsize );
  1522. saacproto_Send( fd , saacproto.work );
  1523. }
  1524. void saacproto_ACFixFMData_send(int fd, char *result, int kindflag, char *data1,
  1525. char *data2, int charfdid)
  1526. {
  1527. saacproto_CreateHeader(saacproto.work , "ACFixFMData");
  1528. saacproto_strcatsafe(saacproto.work , saacproto_mkstr_string(result) ,saacproto.workbufsize );
  1529. saacproto_strcatsafe(saacproto.work , saacproto_mkstr_int(kindflag) ,saacproto.workbufsize );
  1530. saacproto_strcatsafe(saacproto.work , saacproto_mkstr_string(data1) ,saacproto.workbufsize );
  1531. saacproto_strcatsafe(saacproto.work , saacproto_mkstr_string(data2) ,saacproto.workbufsize );
  1532. saacproto_strcatsafe(saacproto.work , saacproto_mkstr_int(charfdid) ,saacproto.workbufsize );
  1533. saacproto_Send( fd , saacproto.work );
  1534. }
  1535. // 设定家族据点
  1536. void saacproto_ACFixFMPK_send(int fd, char *result, int award, int winindex,
  1537. int loseindex)
  1538. {
  1539. saacproto_CreateHeader(saacproto.work , "ACFixFMPK");
  1540. saacproto_strcatsafe(saacproto.work , saacproto_mkstr_string(result) ,saacproto.workbufsize );
  1541. saacproto_strcatsafe(saacproto.work , saacproto_mkstr_int(award) ,saacproto.workbufsize );
  1542. saacproto_strcatsafe(saacproto.work , saacproto_mkstr_int(winindex) ,saacproto.workbufsize );
  1543. saacproto_strcatsafe(saacproto.work , saacproto_mkstr_int(loseindex) ,saacproto.workbufsize );
  1544. saacproto_Send( fd , saacproto.work );
  1545. }
  1546. // GM修正家族资料
  1547. void saacproto_ACGMFixFMData_send(int fd, char *result, char *fmname, int charfdid)
  1548. {
  1549. saacproto_CreateHeader(saacproto.work , "ACGMFixFMData");
  1550. saacproto_strcatsafe(saacproto.work , saacproto_mkstr_string(result) ,saacproto.workbufsize );
  1551. saacproto_strcatsafe(saacproto.work , saacproto_mkstr_string(fmname) ,saacproto.workbufsize );
  1552. saacproto_strcatsafe(saacproto.work , saacproto_mkstr_int(charfdid) ,saacproto.workbufsize );
  1553. saacproto_Send( fd , saacproto.work );
  1554. }
  1555. // 取得家族资料
  1556. void saacproto_ACGetFMData_send(int fd, char *result, int kindflag, int data,
  1557. int charfdid)
  1558. {
  1559. saacproto_CreateHeader(saacproto.work , "ACGetFMData");
  1560. saacproto_strcatsafe(saacproto.work , saacproto_mkstr_string(result) ,saacproto.workbufsize );
  1561. saacproto_strcatsafe(saacproto.work , saacproto_mkstr_int(kindflag) ,saacproto.workbufsize );
  1562. saacproto_strcatsafe(saacproto.work , saacproto_mkstr_int(data) ,saacproto.workbufsize );
  1563. saacproto_strcatsafe(saacproto.work , saacproto_mkstr_int(charfdid) ,saacproto.workbufsize );
  1564. saacproto_Send( fd , saacproto.work );
  1565. }
  1566. //
  1567. void saacproto_ACFMClearPK_send(int fd, char *result, char *fmname, int fmindex,
  1568.         int index)
  1569. {
  1570. saacproto_CreateHeader(saacproto.work , "ACFMClearPK");
  1571. saacproto_strcatsafe(saacproto.work , saacproto_mkstr_string(result) ,saacproto.workbufsize );
  1572. saacproto_strcatsafe(saacproto.work , saacproto_mkstr_string(fmname) ,saacproto.workbufsize );
  1573. saacproto_strcatsafe(saacproto.work , saacproto_mkstr_int(fmindex) ,saacproto.workbufsize );
  1574. saacproto_strcatsafe(saacproto.work , saacproto_mkstr_int(index) ,saacproto.workbufsize );
  1575. saacproto_Send( fd , saacproto.work );
  1576. }        
  1577. // 通知其他星球的踢馆人
  1578. void saacproto_ACManorPKAck_send(int fd, char *data)
  1579. {
  1580. saacproto_CreateHeader(saacproto.work , "ACManorPKAck");
  1581. saacproto_strcatsafe(saacproto.work , saacproto_mkstr_string(data) ,saacproto.workbufsize );
  1582. saacproto_Send( fd , saacproto.work );
  1583. }
  1584. #ifdef _AC_SEND_FM_PK  // WON ADD 庄园对战列表储存在AC
  1585. void saacproto_ACLoadFmPk_send(int fd, char *data)
  1586. {
  1587. saacproto_CreateHeader(saacproto.work , "ACLoadFmPk");
  1588. saacproto_strcatsafe(saacproto.work , saacproto_mkstr_string(data) ,saacproto.workbufsize );
  1589. saacproto_Send( fd , saacproto.work );
  1590. }
  1591. #ifdef _ACFMPK_LIST
  1592. void saacproto_ACSendFmPk_send( int fd, int userindex, int flg)
  1593. {
  1594. saacproto_CreateHeader(saacproto.work , "ACSendFmPk");
  1595. saacproto_strcatsafe(saacproto.work , saacproto_mkstr_int( userindex) ,saacproto.workbufsize );
  1596. saacproto_strcatsafe(saacproto.work , saacproto_mkstr_int( flg) ,saacproto.workbufsize );
  1597. saacproto_Send( fd , saacproto.work );
  1598. }
  1599. #endif
  1600. #endif
  1601. #ifdef _WAEI_KICK
  1602. void saacproto_ACKick_send( int fd, int act, char* data,int id )
  1603. {
  1604. saacproto_CreateHeader( saacproto.work , "ACKick" );
  1605. saacproto_strcatsafe( saacproto.work , saacproto_mkstr_int( act ) ,saacproto.workbufsize );
  1606. saacproto_strcatsafe( saacproto.work , saacproto_mkstr_string( data ) ,saacproto.workbufsize );
  1607. saacproto_strcatsafe( saacproto.work , saacproto_mkstr_int( id ) ,saacproto.workbufsize );
  1608. saacproto_Send( fd , saacproto.work );
  1609. }
  1610. #endif
  1611. #ifdef _SEND_EFFECT    // WON ADD 送下雪、下雨等特效
  1612. void saacproto_SendEffect_send(int fd, char *effect)
  1613. {
  1614. saacproto_CreateHeader(saacproto.work , "EFFECT");
  1615. saacproto_strcatsafe( saacproto.work , saacproto_mkstr_string( effect ) ,saacproto.workbufsize );
  1616. saacproto_Send( fd , saacproto.work );
  1617. }
  1618. #endif
  1619. #ifdef _CHAR_POOLITEM
  1620. void saacproto_ACCharSavePoolItem_send( int fd, char *Acces ,
  1621.    char *Pooldataarg, int clifdid )
  1622. {
  1623. saacproto_CreateHeader( saacproto.work , "ACSavePoolItem" );
  1624. saacproto_strcatsafe( saacproto.work , saacproto_mkstr_string( Acces ) ,saacproto.workbufsize );
  1625. saacproto_strcatsafe( saacproto.work , saacproto_mkstr_string( Pooldataarg ) ,saacproto.workbufsize );
  1626. saacproto_strcatsafe( saacproto.work , saacproto_mkstr_int( clifdid ) ,saacproto.workbufsize );
  1627. saacproto_Send( fd , saacproto.work );
  1628. }
  1629. void saacproto_ACCharGetPoolItem_send( int fd, char *Acces, char *Pooldataarg, int clifdid, int npcid)
  1630. {
  1631. saacproto_CreateHeader( saacproto.work , "ACGetPoolItem" );
  1632. saacproto_strcatsafe( saacproto.work , saacproto_mkstr_string( Acces ) ,saacproto.workbufsize );
  1633. saacproto_strcatsafe( saacproto.work , saacproto_mkstr_string( Pooldataarg ) ,saacproto.workbufsize );
  1634. saacproto_strcatsafe( saacproto.work , saacproto_mkstr_int( clifdid ) ,saacproto.workbufsize );
  1635. saacproto_strcatsafe( saacproto.work , saacproto_mkstr_int( npcid ) ,saacproto.workbufsize );
  1636. saacproto_Send( fd , saacproto.work );
  1637. }
  1638. #endif
  1639. #ifdef _CHAR_POOLPET
  1640. void saacproto_ACCharSavePoolPet_send( int fd, char *Acces ,
  1641.    char *Pooldataarg, int clifdid )
  1642. {
  1643. saacproto_CreateHeader( saacproto.work , "ACSavePoolPet" );
  1644. saacproto_strcatsafe( saacproto.work , saacproto_mkstr_string( Acces ) ,saacproto.workbufsize );
  1645. saacproto_strcatsafe( saacproto.work , saacproto_mkstr_string( Pooldataarg ) ,saacproto.workbufsize );
  1646. saacproto_strcatsafe( saacproto.work , saacproto_mkstr_int( clifdid ) ,saacproto.workbufsize );
  1647. saacproto_Send( fd , saacproto.work );
  1648. }
  1649. void saacproto_ACCharGetPoolPet_send( int fd, char *Acces, char *Pooldataarg, int clifdid, int npcid)
  1650. {
  1651. saacproto_CreateHeader( saacproto.work , "ACGetPoolPet" );
  1652. saacproto_strcatsafe( saacproto.work , saacproto_mkstr_string( Acces ) ,saacproto.workbufsize );
  1653. saacproto_strcatsafe( saacproto.work , saacproto_mkstr_string( Pooldataarg ) ,saacproto.workbufsize );
  1654. saacproto_strcatsafe( saacproto.work , saacproto_mkstr_int( clifdid ) ,saacproto.workbufsize );
  1655. saacproto_strcatsafe( saacproto.work , saacproto_mkstr_int( npcid ) ,saacproto.workbufsize );
  1656. saacproto_Send( fd , saacproto.work );
  1657. }
  1658. #endif
  1659. #ifdef _ANGEL_SUMMON
  1660. //void saacproto_ACMissionTable_send( int fd, int num, int type, char *data, int charaindex)
  1661. void saacproto_ACMissionTable_send( int fd, int num, int type, char *data, char* angelinfo)
  1662. {
  1663. saacproto_CreateHeader( saacproto.work , "ACMissionTable" );
  1664. saacproto_strcatsafe( saacproto.work , saacproto_mkstr_int( num ) ,saacproto.workbufsize );
  1665. saacproto_strcatsafe( saacproto.work , saacproto_mkstr_int( type ) ,saacproto.workbufsize );
  1666. saacproto_strcatsafe( saacproto.work , saacproto_mkstr_string( data ) ,saacproto.workbufsize );
  1667. //saacproto_strcatsafe( saacproto.work , saacproto_mkstr_int( charaindex ) ,saacproto.workbufsize );
  1668. saacproto_strcatsafe( saacproto.work , saacproto_mkstr_string( angelinfo ) ,saacproto.workbufsize );
  1669. saacproto_Send( fd , saacproto.work );
  1670. }
  1671. #endif
  1672. #ifdef _TEACHER_SYSTEM
  1673. void saacproto_ACCheckCharacterOnLine_send( int fd, int charaindex, int iOnline,char *data,int flag)
  1674. {
  1675. saacproto_CreateHeader( saacproto.work , "ACCheckCharacterOnLine" );
  1676. saacproto_strcatsafe( saacproto.work , saacproto_mkstr_int( charaindex ) ,saacproto.workbufsize );
  1677. saacproto_strcatsafe( saacproto.work , saacproto_mkstr_int( iOnline ) ,saacproto.workbufsize );
  1678. saacproto_strcatsafe( saacproto.work , saacproto_mkstr_string( data ) ,saacproto.workbufsize );
  1679. saacproto_strcatsafe( saacproto.work , saacproto_mkstr_int( flag ) ,saacproto.workbufsize );
  1680. saacproto_Send( fd , saacproto.work );
  1681. }
  1682. #endif
  1683. void saacproto_ACCharLogin_send( int fd, int clifd, int flag )
  1684. {
  1685. saacproto_CreateHeader( saacproto.work , "ACCharLogin" );
  1686. saacproto_strcatsafe( saacproto.work , saacproto_mkstr_int( clifd ) ,saacproto.workbufsize );
  1687. saacproto_strcatsafe( saacproto.work , saacproto_mkstr_int( flag ) ,saacproto.workbufsize );
  1688. saacproto_Send( fd , saacproto.work );
  1689. }
  1690. /* end of the generated server code */