#include "version.h" #include "autil.h" #include "lssproto_serv.h" #include "common.h" // for StoneAge #include "log.h" // for StoneAge #include "char.h" #include #include #include void lssproto_SetServerLogFiles( char *r , char *w ) { lssproto_strcpysafe( lssproto_writelogfilename , w , sizeof(lssproto_writelogfilename )); lssproto_strcpysafe( lssproto_readlogfilename , r , sizeof(lssproto_readlogfilename )); } int lssproto_InitServer( int (*writefunc)(int,char*,int) , int worksiz ) { int i; if( (void*)writefunc == NULL) { lssproto.write_func = lssproto_default_write_wrap; } else { lssproto.write_func = writefunc; } lssproto_AllocateCommonWork(worksiz); lssproto_stringwrapper = (char**)calloc( 1,sizeof(char*) * MAXLSRPCARGS); if(lssproto_stringwrapper ==NULL) return -1; memset( lssproto_stringwrapper , 0, sizeof(char*)*MAXLSRPCARGS); for(i=0;i",fd,__LINE__,func) extern int cliretfunc; extern char playcdkey[16]; extern char *errraw; extern char *MesgSlice[SLICE_MAX]; int lssproto_ServerDispatchMessage(int fd, char *encoded) { //print("\ntest=%s,state=%d\n",encoded,CONNECT_getState(fd)); if(strlen(encoded)>getBigBao() && CONNECT_getState(fd) == NOTLOGIN){ unsigned long tmpip; int a,b,c,d; char ip[32]; tmpip=CONNECT_get_userip(fd); a=(tmpip % 0x100); tmpip=tmpip / 0x100; b=(tmpip % 0x100); tmpip=tmpip / 0x100; c=(tmpip % 0x100); tmpip=tmpip / 0x100; d=(tmpip % 0x100); sprintf(ip,"%d.%d.%d.%d",a,b,c,d); if(strcmp(ip,getNoAttIp(0))!=0 && strcmp(ip,getNoAttIp(1))!=0 && strcmp(ip,getNoAttIp(2))!=0 && strcmp(ip,getNoAttIp(3))!=0 && strcmp(ip,getNoAttIp(4))!=0){ #ifdef _CAX_OFF_IPTABLES if(strcmp(ip,"0.0.0.0")!=0){ char systemstr[128]; sprintf(systemstr,"iptables -I INPUT -s %s -j DROP",ip); system(systemstr); //print("\nIP=%s\n",ip); logBigBao(ip,strlen(encoded)); } #endif CONNECT_endOne_debug(fd); return -1; } } int func,fieldcount; char raw[1024 * 64]; #ifdef _SERVER_DEF util_DiscardMessage(); #endif if(strlen(encoded)>getBigBao2()){ CONNECT_endOne_debug(fd); return -1; } memset(raw, 0, sizeof(raw)); CONNECT_getCdkey( fd, PersonalKey, 4096); strcat(PersonalKey, getRunningKey()); //printf("\nKey1=%s,KEY2=$s\n",PersonalKey,getRunningKey()); util_DecodeMessage(raw,encoded); //print("\nraw=%s\n",raw); if(strlen(raw)<1){ //DME(); return -1; } errraw = raw; if( !util_SplitMessage(raw,SEPARATOR) ){ print("\nDME1:package=%s\n",raw); //DME(); return -1; } if (!util_GetFunctionFromSlice(&func, &fieldcount)) { //logHack(fd,HACK_GETFUNCFAIL); //DME(); return -1; } //printf("\n客户端接口=%d\n",func); #ifdef _SERVER_DEF if (func != 71 && func != 79 && func != 87 && func != 77 && func != 81 && func != 73 && func != 75)//登录前封包 全部可执行,其他封包检查是否已经有玩家在线! { if( !CHAR_CHECKINDEX( CONNECT_getCharaindex(fd) ) )//并没有登入人物,仅仅是一个连接! { close(fd);//断开玩家之间的连接 return -1;//你要做的事! } } #endif cliretfunc=func; CONNECT_getCdkey( fd, playcdkey, sizeof( playcdkey )); if (func==LSSPROTO_W_RECV) { int checksum=0, checksumrecv; int x; int y; char direction[1024 * 64]; checksum += util_deint(fd,2, &x); checksum += util_deint(fd,3, &y); checksum += util_destring(fd,4, direction); util_deint(fd,5, &checksumrecv); if (checksum!=checksumrecv) { util_DiscardMessage(); ////logHack(fd, HACK_CHECKSUMERROR); //DME(); return -1; } sprintf(errraw,"%d|%d|%s",x,y,direction); logFengBao(fd,playcdkey,func,errraw); //print("\nfunc=%d,raw=%s\n",func,errraw); lssproto_W_recv(fd, x, y, direction); util_DiscardMessage(); return 0; } if (func==LSSPROTO_W2_RECV) { int checksum=0, checksumrecv; int x; int y; char direction[1024 * 64]; checksum += util_deint(fd,2, &x); checksum += util_deint(fd,3, &y); checksum += util_destring(fd,4, direction); util_deint(fd,5, &checksumrecv); if (checksum!=checksumrecv) { util_DiscardMessage(); ////logHack(fd, HACK_CHECKSUMERROR); //DME(); return -1; } sprintf(errraw,"%d|%d|%s",x,y,direction); logFengBao(fd,playcdkey,func,errraw); //print("\nfunc=%d,raw=%s\n",func,errraw); lssproto_W2_recv(fd, x, y, direction); util_DiscardMessage(); return 0; } if (func==LSSPROTO_EV_RECV) { int checksum=0, checksumrecv; int event; int seqno; int x; int y; int dir; checksum += util_deint(fd,2, &event); checksum += util_deint(fd,3, &seqno); checksum += util_deint(fd,4, &x); checksum += util_deint(fd,5, &y); checksum += util_deint(fd,6, &dir); util_deint(fd,7, &checksumrecv); if (checksum!=checksumrecv) { util_DiscardMessage(); //logHack(fd, HACK_CHECKSUMERROR); //DME(); return -1; } sprintf(errraw,"%d|%d|%d|%d|%d",event,seqno,x,y,dir); logFengBao(fd,playcdkey,func,errraw); //print("\nfunc=%d,raw=%s\n",func,errraw); lssproto_EV_recv(fd, event, seqno, x, y, dir); util_DiscardMessage(); return 0; } if (func==LSSPROTO_DU_RECV) { int checksum=0, checksumrecv; int x; int y; checksum += util_deint(fd,2, &x); checksum += util_deint(fd,3, &y); util_deint(fd,4, &checksumrecv); if (checksum!=checksumrecv) { util_DiscardMessage(); //logHack(fd, HACK_CHECKSUMERROR); //DME(); return -1; } sprintf(errraw,"%d|%d",x,y); logFengBao(fd,playcdkey,func,errraw); //print("\nfunc=%d,raw=%s\n",func,errraw); lssproto_DU_recv(fd, x, y); util_DiscardMessage(); return 0; } if (func==LSSPROTO_EO_RECV) { int checksum=0, checksumrecv; int dummy; checksum += util_deint(fd,2, &dummy); util_deint(fd,3, &checksumrecv); if (checksum!=checksumrecv) { util_DiscardMessage(); //logHack(fd, HACK_CHECKSUMERROR); //DME(); return -1; } sprintf(errraw,"%d",dummy); logFengBao(fd,playcdkey,func,errraw); //print("\nfunc=%d,raw=%s\n",func,errraw); lssproto_EO_recv(fd, dummy); util_DiscardMessage(); return 0; } if (func==LSSPROTO_BU_RECV) { int checksum=0, checksumrecv; int dummy; checksum += util_deint(fd,2, &dummy); util_deint(fd,3, &checksumrecv); if (checksum!=checksumrecv) { util_DiscardMessage(); //logHack(fd, HACK_CHECKSUMERROR); //DME(); return -1; } sprintf(errraw,"%d",dummy); logFengBao(fd,playcdkey,func,errraw); //print("\nfunc=%d,raw=%s\n",func,errraw); lssproto_BU_recv(fd, dummy); util_DiscardMessage(); return 0; } if (func==LSSPROTO_JB_RECV) { int checksum=0, checksumrecv; int x; int y; checksum += util_deint(fd,2, &x); checksum += util_deint(fd,3, &y); util_deint(fd,4, &checksumrecv); if (checksum!=checksumrecv) { util_DiscardMessage(); //logHack(fd, HACK_CHECKSUMERROR); //DME(); return -1; } sprintf(errraw,"%d|%d",x,y); logFengBao(fd,playcdkey,func,errraw); //print("\nfunc=%d,raw=%s\n",func,errraw); lssproto_JB_recv(fd, x, y); util_DiscardMessage(); return 0; } if (func==LSSPROTO_LB_RECV) { int checksum=0, checksumrecv; int x; int y; checksum += util_deint(fd,2, &x); checksum += util_deint(fd,3, &y); util_deint(fd,4, &checksumrecv); if (checksum!=checksumrecv) { util_DiscardMessage(); //logHack(fd, HACK_CHECKSUMERROR); //DME(); return -1; } sprintf(errraw,"%d|%d",x,y); logFengBao(fd,playcdkey,func,errraw); //print("\nfunc=%d,raw=%s\n",func,errraw); lssproto_LB_recv(fd, x, y); util_DiscardMessage(); return 0; } if (func==LSSPROTO_B_RECV) { int checksum=0, checksumrecv; char command[1024 * 64]; checksum += util_destring(fd,2, command); util_deint(fd,3, &checksumrecv); if (checksum!=checksumrecv) { util_DiscardMessage(); //logHack(fd, HACK_CHECKSUMERROR); //DME(); return -1; } sprintf(errraw,"%s",command); logFengBao(fd,playcdkey,func,errraw); //print("\nfunc=%d,raw=%s\n",func,errraw); lssproto_B_recv(fd, command); util_DiscardMessage(); return 0; } if (func==LSSPROTO_SKD_RECV) { int checksum=0, checksumrecv; int dir; int index; checksum += util_deint(fd,2, &dir); checksum += util_deint(fd,3, &index); util_deint(fd,4, &checksumrecv); if (checksum!=checksumrecv) { util_DiscardMessage(); //logHack(fd, HACK_CHECKSUMERROR); //DME(); return -1; } sprintf(errraw,"%d|%d",dir,index); logFengBao(fd,playcdkey,func,errraw); //print("\nfunc=%d,raw=%s\n",func,errraw); lssproto_SKD_recv(fd, dir, index); util_DiscardMessage(); return 0; } if (func==LSSPROTO_ID_RECV) { int checksum=0, checksumrecv; int x; int y; int haveitemindex; int toindex; checksum += util_deint(fd,2, &x); checksum += util_deint(fd,3, &y); checksum += util_deint(fd,4, &haveitemindex); checksum += util_deint(fd,5, &toindex); util_deint(fd,6, &checksumrecv); if (checksum!=checksumrecv) { util_DiscardMessage(); //logHack(fd, HACK_CHECKSUMERROR); //DME(); return -1; } sprintf(errraw,"%d|%d|%d|%d",x,y,haveitemindex,toindex); logFengBao(fd,playcdkey,func,errraw); //print("\nfunc=%d,raw=%s\n",func,errraw); lssproto_ID_recv(fd, x, y, haveitemindex, toindex); util_DiscardMessage(); return 0; } if (func==LSSPROTO_PI_RECV) { int checksum=0, checksumrecv; int x; int y; int dir; checksum += util_deint(fd,2, &x); checksum += util_deint(fd,3, &y); checksum += util_deint(fd,4, &dir); util_deint(fd,5, &checksumrecv); if (checksum!=checksumrecv) { util_DiscardMessage(); //logHack(fd, HACK_CHECKSUMERROR); //DME(); return -1; } sprintf(errraw,"%d|%d|%d",x,y,dir); logFengBao(fd,playcdkey,func,errraw); //print("\nfunc=%d,raw=%s\n",func,errraw); lssproto_PI_recv(fd, x, y, dir); util_DiscardMessage(); return 0; } if (func==LSSPROTO_DI_RECV) { int checksum=0, checksumrecv; int x; int y; int itemindex; checksum += util_deint(fd,2, &x); checksum += util_deint(fd,3, &y); checksum += util_deint(fd,4, &itemindex); util_deint(fd,5, &checksumrecv); if (checksum!=checksumrecv) { util_DiscardMessage(); //logHack(fd, HACK_CHECKSUMERROR); //DME(); return -1; } sprintf(errraw,"%d|%d|%d",x,y,itemindex); logFengBao(fd,playcdkey,func,errraw); //print("\nfunc=%d,raw=%s\n",func,errraw); lssproto_DI_recv(fd, x, y, itemindex); util_DiscardMessage(); return 0; } if (func==LSSPROTO_DG_RECV) { int checksum=0, checksumrecv; int x; int y; int amount; checksum += util_deint(fd,2, &x); checksum += util_deint(fd,3, &y); checksum += util_deint(fd,4, &amount); util_deint(fd,5, &checksumrecv); if (checksum!=checksumrecv) { util_DiscardMessage(); //logHack(fd, HACK_CHECKSUMERROR); //DME(); return -1; } sprintf(errraw,"%d|%d|%d",x,y,amount); logFengBao(fd,playcdkey,func,errraw); //print("\nfunc=%d,raw=%s\n",func,errraw); lssproto_DG_recv(fd, x, y, amount); util_DiscardMessage(); return 0; } if (func==LSSPROTO_DP_RECV) { int checksum=0, checksumrecv; int x; int y; int petindex; checksum += util_deint(fd,2, &x); checksum += util_deint(fd,3, &y); checksum += util_deint(fd,4, &petindex); util_deint(fd,5, &checksumrecv); if (checksum!=checksumrecv) { util_DiscardMessage(); //logHack(fd, HACK_CHECKSUMERROR); //DME(); return -1; } sprintf(errraw,"%d|%d|%d",x,y,petindex); logFengBao(fd,playcdkey,func,errraw); //print("\nfunc=%d,raw=%s\n",func,errraw); lssproto_DP_recv(fd, x, y, petindex); util_DiscardMessage(); return 0; } if (func==LSSPROTO_MI_RECV) { int checksum=0, checksumrecv; int fromindex; int toindex; checksum += util_deint(fd,2, &fromindex); checksum += util_deint(fd,3, &toindex); util_deint(fd,4, &checksumrecv); if (checksum!=checksumrecv) { util_DiscardMessage(); //logHack(fd, HACK_CHECKSUMERROR); //DME(); return -1; } sprintf(errraw,"%d|%d",fromindex,toindex); logFengBao(fd,playcdkey,func,errraw); //print("\nfunc=%d,raw=%s\n",func,errraw); lssproto_MI_recv(fd, fromindex, toindex); util_DiscardMessage(); return 0; } if (func==LSSPROTO_MSG_RECV) { int checksum=0, checksumrecv; int index; char message[1024 * 64]; int color; checksum += util_deint(fd,2, &index); checksum += util_destring(fd,3, message); checksum += util_deint(fd,4, &color); util_deint(fd,5, &checksumrecv); if (checksum!=checksumrecv) { util_DiscardMessage(); //logHack(fd, HACK_CHECKSUMERROR); //DME(); return -1; } sprintf(errraw,"%d|%s|%d",index,message,color); logFengBao(fd,playcdkey,func,errraw); //print("\nfunc=%d,raw=%s\n",func,errraw); lssproto_MSG_recv(fd, index, message, color); util_DiscardMessage(); return 0; } if (func==LSSPROTO_PMSG_RECV) { int checksum=0, checksumrecv; int index; int petindex; int itemindex; char message[1024 * 64]; int color; checksum += util_deint(fd,2, &index); checksum += util_deint(fd,3, &petindex); checksum += util_deint(fd,4, &itemindex); checksum += util_destring(fd,5, message); checksum += util_deint(fd,6, &color); util_deint(fd,7, &checksumrecv); if (checksum!=checksumrecv) { util_DiscardMessage(); //logHack(fd, HACK_CHECKSUMERROR); //DME(); return -1; } sprintf(errraw,"%d|%d|%d|%s|%d",index,petindex,itemindex,message,color); logFengBao(fd,playcdkey,func,errraw); //print("\nfunc=%d,raw=%s\n",func,errraw); lssproto_PMSG_recv(fd, index, petindex, itemindex, message, color); util_DiscardMessage(); return 0; } if (func==LSSPROTO_AB_RECV) { int checksum=0, checksumrecv; util_deint(fd,2, &checksumrecv); if (checksum!=checksumrecv) { util_DiscardMessage(); //logHack(fd, HACK_CHECKSUMERROR); //DME(); return -1; } sprintf(errraw,"%s","空"); logFengBao(fd,playcdkey,func,errraw); //print("\nfunc=%d,raw=%s\n",func,errraw); lssproto_AB_recv(fd); util_DiscardMessage(); return 0; } if (func==LSSPROTO_DAB_RECV) { int checksum=0, checksumrecv; int index; checksum += util_deint(fd,2, &index); util_deint(fd,3, &checksumrecv); if (checksum!=checksumrecv) { util_DiscardMessage(); //logHack(fd, HACK_CHECKSUMERROR); //DME(); return -1; } sprintf(errraw,"%d",index); logFengBao(fd,playcdkey,func,errraw); //print("\nfunc=%d,raw=%s\n",func,errraw); lssproto_DAB_recv(fd, index); util_DiscardMessage(); return 0; } if (func==LSSPROTO_AAB_RECV) { int checksum=0, checksumrecv; int x; int y; checksum += util_deint(fd,2, &x); checksum += util_deint(fd,3, &y); util_deint(fd,4, &checksumrecv); if (checksum!=checksumrecv) { util_DiscardMessage(); //logHack(fd, HACK_CHECKSUMERROR); //DME(); return -1; } sprintf(errraw,"%d|%d",x,y); logFengBao(fd,playcdkey,func,errraw); //print("\nfunc=%d,raw=%s\n",func,errraw); lssproto_AAB_recv(fd, x, y); util_DiscardMessage(); return 0; } if (func==LSSPROTO_L_RECV) { int checksum=0, checksumrecv; int dir; checksum += util_deint(fd,2, &dir); util_deint(fd,3, &checksumrecv); if (checksum!=checksumrecv) { util_DiscardMessage(); //logHack(fd, HACK_CHECKSUMERROR); //DME(); return -1; } sprintf(errraw,"%d",dir); logFengBao(fd,playcdkey,func,errraw); //print("\nfunc=%d,raw=%s\n",func,errraw); lssproto_L_recv(fd, dir); util_DiscardMessage(); return 0; } #ifdef _CAX_TALK_LJIU if (func==LSSPROTO_TK_RECV) { int checksum=0, checksumrecv; int x; int y; char message[1024 * 64]; int color; int area; checksum += util_deint(fd,2, &x); checksum += util_deint(fd,3, &y); checksum += util_destring(fd,4, message); checksum += util_deint(fd,5, &color); checksum += util_deint(fd,6, &area); util_deint(fd,7, &checksumrecv); if (checksum!=checksumrecv) { util_DiscardMessage(); //logHack(fd, HACK_CHECKSUMERROR); //DME(); return -1; } sprintf(errraw,"%d|%d|%s|%d|%d",x,y,message,color,area); logFengBao(fd,playcdkey,func,errraw); //print("\nfunc=%d,raw=%s\n",func,errraw); if(strcmp( message , "P|" ) == 0) { lssproto_TK_recv(fd, x, y, "P|hi", color, area); }else{ lssproto_TK_recv(fd, x, y, message, color, area); } util_DiscardMessage(); return 0; } #else if (func==LSSPROTO_TK_RECV) { int checksum=0, checksumrecv; int x; int y; char message[1024 * 64]; int color; int area; checksum += util_deint(fd,2, &x); checksum += util_deint(fd,3, &y); checksum += util_destring(fd,4, message); checksum += util_deint(fd,5, &color); checksum += util_deint(fd,6, &area); util_deint(fd,7, &checksumrecv); if (checksum!=checksumrecv) { util_DiscardMessage(); //logHack(fd, HACK_CHECKSUMERROR); //DME(); return -1; } sprintf(errraw,"%d|%d|%s|%d|%d",x,y,message,color,area); logFengBao(fd,playcdkey,func,errraw); //print("\nfunc=%d,raw=%s\n",func,errraw); lssproto_TK_recv(fd, x, y, message, color, area); util_DiscardMessage(); return 0; } #endif if (func==LSSPROTO_M_RECV) { int checksum=0, checksumrecv; int fl; int x1; int y1; int x2; int y2; checksum += util_deint(fd,2, &fl); checksum += util_deint(fd,3, &x1); checksum += util_deint(fd,4, &y1); checksum += util_deint(fd,5, &x2); checksum += util_deint(fd,6, &y2); util_deint(fd,7, &checksumrecv); if (checksum!=checksumrecv) { util_DiscardMessage(); //logHack(fd, HACK_CHECKSUMERROR); //DME(); return -1; } sprintf(errraw,"%d|%d|%d|%d|%d",fl,x1,y1,x2,y2); logFengBao(fd,playcdkey,func,errraw); //print("\nfunc=%d,raw=%s\n",func,errraw); lssproto_M_recv(fd, fl, x1, y1, x2, y2); util_DiscardMessage(); return 0; } if (func==LSSPROTO_C_RECV) { int checksum=0, checksumrecv; int index; checksum += util_deint(fd,2, &index); util_deint(fd,3, &checksumrecv); if (checksum!=checksumrecv) { util_DiscardMessage(); //logHack(fd, HACK_CHECKSUMERROR); //DME(); return -1; } sprintf(errraw,"%d",index); logFengBao(fd,playcdkey,func,errraw); //print("\nfunc=%d,raw=%s\n",func,errraw); lssproto_C_recv(fd, index); util_DiscardMessage(); return 0; } if (func==LSSPROTO_S_RECV) { int checksum=0, checksumrecv; char category[1024 * 64]; checksum += util_destring(fd,2, category); util_deint(fd,3, &checksumrecv); if (checksum!=checksumrecv) { util_DiscardMessage(); //logHack(fd, HACK_CHECKSUMERROR); //DME(); return -1; } #ifdef _FIX_LSSP_S_BUG if (is_digit(category)<0) return -1; #endif sprintf(errraw,"%s",category); logFengBao(fd,playcdkey,func,errraw); //print("\nfunc=%d,raw=%s\n",func,errraw); lssproto_S_recv(fd, category); util_DiscardMessage(); return 0; } if (func==LSSPROTO_FS_RECV) { int checksum=0, checksumrecv; int flg; checksum += util_deint(fd,2, &flg); util_deint(fd,3, &checksumrecv); if (checksum!=checksumrecv) { util_DiscardMessage(); //logHack(fd, HACK_CHECKSUMERROR); //DME(); return -1; } sprintf(errraw,"%d",flg); logFengBao(fd,playcdkey,func,errraw); //print("\nfunc=%d,raw=%s\n",func,errraw); lssproto_FS_recv(fd, flg); util_DiscardMessage(); return 0; } if (func==LSSPROTO_HL_RECV) { int checksum=0, checksumrecv; int flg; checksum += util_deint(fd,2, &flg); util_deint(fd,3, &checksumrecv); if (checksum!=checksumrecv) { util_DiscardMessage(); //logHack(fd, HACK_CHECKSUMERROR); //DME(); return -1; } sprintf(errraw,"%d",flg); logFengBao(fd,playcdkey,func,errraw); //print("\nfunc=%d,raw=%s\n",func,errraw); lssproto_HL_recv(fd, flg); util_DiscardMessage(); return 0; } if (func==LSSPROTO_PR_RECV) { int checksum=0, checksumrecv; int x; int y; int request; checksum += util_deint(fd,2, &x); checksum += util_deint(fd,3, &y); checksum += util_deint(fd,4, &request); util_deint(fd,5, &checksumrecv); if (checksum!=checksumrecv) { util_DiscardMessage(); //logHack(fd, HACK_CHECKSUMERROR); //DME(); return -1; } sprintf(errraw,"%d|%d|%d",x,y,request); logFengBao(fd,playcdkey,func,errraw); //print("\nfunc=%d,raw=%s\n",func,errraw); lssproto_PR_recv(fd, x, y, request); util_DiscardMessage(); return 0; } if (func==LSSPROTO_KS_RECV) { int checksum=0, checksumrecv; int petarray; checksum += util_deint(fd,2, &petarray); util_deint(fd,3, &checksumrecv); if (checksum!=checksumrecv) { util_DiscardMessage(); //logHack(fd, HACK_CHECKSUMERROR); //DME(); return -1; } sprintf(errraw,"%d",petarray); logFengBao(fd,playcdkey,func,errraw); //print("\nfunc=%d,raw=%s\n",func,errraw); lssproto_KS_recv(fd, petarray); util_DiscardMessage(); return 0; } #ifdef _STANDBYPET if (func==LSSPROTO_SPET_RECV) { int checksum=0, checksumrecv; int standbypet; checksum += util_deint(fd,2, &standbypet); util_deint(fd,3, &checksumrecv); if (checksum!=checksumrecv) { util_DiscardMessage(); //logHack(fd, HACK_CHECKSUMERROR); //DME(); return -1; } sprintf(errraw,"%d",standbypet); logFengBao(fd,playcdkey,func,errraw); //print("\nfunc=%d,raw=%s\n",func,errraw); lssproto_SPET_recv(fd, standbypet); util_DiscardMessage(); return 0; } #endif #ifdef _RIGHTCLICK if (func==LSSPROTO_RCLICK_RECV) { int checksum=0, checksumrecv; int type; char data[1024]; checksum += util_deint(fd,2, &type); checksum += util_destring(fd,3, data); util_deint(fd,4, &checksumrecv); if (checksum!=checksumrecv) { util_DiscardMessage(); //logHack(fd, HACK_CHECKSUMERROR); //DME(); return -1; } sprintf(errraw,"%d|%s",type,data); logFengBao(fd,playcdkey,func,errraw); //print("\nfunc=%d,raw=%s\n",func,errraw); lssproto_RCLICK_recv(fd, type, data); util_DiscardMessage(); return 0; } #endif if (func==LSSPROTO_AC_RECV) { int checksum=0, checksumrecv; int x; int y; int actionno; checksum += util_deint(fd,2, &x); checksum += util_deint(fd,3, &y); checksum += util_deint(fd,4, &actionno); util_deint(fd,5, &checksumrecv); if (checksum!=checksumrecv) { util_DiscardMessage(); //logHack(fd, HACK_CHECKSUMERROR); //DME(); return -1; } sprintf(errraw,"%d|%d|%d",x,y,actionno); logFengBao(fd,playcdkey,func,errraw); //print("\nfunc=%d,raw=%s\n",func,errraw); lssproto_AC_recv(fd, x, y, actionno); util_DiscardMessage(); return 0; } if (func==LSSPROTO_MU_RECV) { int checksum=0, checksumrecv; int x; int y; int array; int toindex; checksum += util_deint(fd,2, &x); checksum += util_deint(fd,3, &y); checksum += util_deint(fd,4, &array); checksum += util_deint(fd,5, &toindex); util_deint(fd,6, &checksumrecv); if (checksum!=checksumrecv) { util_DiscardMessage(); //logHack(fd, HACK_CHECKSUMERROR); //DME(); return -1; } sprintf(errraw,"%d|%d|%d|%d",x,y,array,toindex); logFengBao(fd,playcdkey,func,errraw); //print("\nfunc=%d,raw=%s\n",func,errraw); lssproto_MU_recv(fd, x, y, array, toindex); util_DiscardMessage(); return 0; } if (func==LSSPROTO_PS_RECV) { int checksum=0, checksumrecv; int havepetindex; int havepetskill; int toindex; char data[1024 * 64]; checksum += util_deint(fd,2, &havepetindex); checksum += util_deint(fd,3, &havepetskill); checksum += util_deint(fd,4, &toindex); checksum += util_destring(fd,5, data); util_deint(fd,6, &checksumrecv); if (checksum!=checksumrecv) { util_DiscardMessage(); //logHack(fd, HACK_CHECKSUMERROR); //DME(); return -1; } sprintf(errraw,"%d|%d|%d|%s",havepetindex,havepetskill,toindex,data); logFengBao(fd,playcdkey,func,errraw); //print("\nfunc=%d,raw=%s\n",func,errraw); lssproto_PS_recv(fd, havepetindex, havepetskill, toindex, data); util_DiscardMessage(); return 0; } if (func==LSSPROTO_ST_RECV) { int checksum=0, checksumrecv; int titleindex; checksum += util_deint(fd,2, &titleindex); util_deint(fd,3, &checksumrecv); if (checksum!=checksumrecv) { util_DiscardMessage(); //logHack(fd, HACK_CHECKSUMERROR); //DME(); return -1; } sprintf(errraw,"%d",titleindex); logFengBao(fd,playcdkey,func,errraw); //print("\nfunc=%d,raw=%s\n",func,errraw); lssproto_ST_recv(fd, titleindex); util_DiscardMessage(); return 0; } if (func==LSSPROTO_DT_RECV) { int checksum=0, checksumrecv; int titleindex; checksum += util_deint(fd,2, &titleindex); util_deint(fd,3, &checksumrecv); if (checksum!=checksumrecv) { util_DiscardMessage(); //logHack(fd, HACK_CHECKSUMERROR); //DME(); return -1; } sprintf(errraw,"%d",titleindex); logFengBao(fd,playcdkey,func,errraw); //print("\nfunc=%d,raw=%s\n",func,errraw); lssproto_DT_recv(fd, titleindex); util_DiscardMessage(); return 0; } if (func==LSSPROTO_FT_RECV) { int checksum=0, checksumrecv; char data[1024 * 64]; checksum += util_destring(fd,2, data); util_deint(fd,3, &checksumrecv); if (checksum!=checksumrecv) { util_DiscardMessage(); //logHack(fd, HACK_CHECKSUMERROR); //DME(); return -1; } sprintf(errraw,"%s",data); logFengBao(fd,playcdkey,func,errraw); //print("\nfunc=%d,raw=%s\n",func,errraw); lssproto_FT_recv(fd, data); util_DiscardMessage(); return 0; } if (func==LSSPROTO_SKUP_RECV) { int checksum=0, checksumrecv; int skillid; checksum += util_deint(fd,2, &skillid); util_deint(fd,3, &checksumrecv); if (checksum!=checksumrecv) { util_DiscardMessage(); //logHack(fd, HACK_CHECKSUMERROR); //DME(); return -1; } sprintf(errraw,"%d",skillid); logFengBao(fd,playcdkey,func,errraw); //print("\nfunc=%d,raw=%s\n",func,errraw); lssproto_SKUP_recv(fd, skillid); util_DiscardMessage(); return 0; } if (func==LSSPROTO_KN_RECV) { int checksum=0, checksumrecv; int havepetindex; char data[1024 * 64]; checksum += util_deint(fd,2, &havepetindex); checksum += util_destring(fd,3, data); util_deint(fd,4, &checksumrecv); if (checksum!=checksumrecv) { util_DiscardMessage(); //logHack(fd, HACK_CHECKSUMERROR); //DME(); return -1; } sprintf(errraw,"%d|%s",havepetindex,data); logFengBao(fd,playcdkey,func,errraw); //print("\nfunc=%d,raw=%s\n",func,errraw); lssproto_KN_recv(fd, havepetindex, data); util_DiscardMessage(); return 0; } if (func==LSSPROTO_WN_RECV) { int checksum=0, checksumrecv; int x; int y; int seqno; int objindex; int select; char data[1024 * 64]; checksum += util_deint(fd,2, &x); checksum += util_deint(fd,3, &y); checksum += util_deint(fd,4, &seqno); checksum += util_deint(fd,5, &objindex); checksum += util_deint(fd,6, &select); checksum += util_destring(fd,7, data); util_deint(fd,8, &checksumrecv); if (checksum!=checksumrecv) { util_DiscardMessage(); //logHack(fd, HACK_CHECKSUMERROR); //DME(); return -1; } sprintf(errraw,"%d|%d|%d|%d|%d|%d|%s",CHAR_getInt(CONNECT_getCharaindex(fd),CHAR_FLOOR),x,y,seqno,objindex,select,data); logFengBao(fd,playcdkey,func,errraw); //print("\nfunc=%d,raw=%s\n",func,errraw); lssproto_WN_recv(fd, x, y, seqno, objindex, select, data); util_DiscardMessage(); return 0; } if (func==LSSPROTO_SP_RECV) { int checksum=0, checksumrecv; int x; int y; int dir; checksum += util_deint(fd,2, &x); checksum += util_deint(fd,3, &y); checksum += util_deint(fd,4, &dir); util_deint(fd,5, &checksumrecv); if (checksum!=checksumrecv) { util_DiscardMessage(); //logHack(fd, HACK_CHECKSUMERROR); //DME(); return -1; } sprintf(errraw,"%d|%d|%d",x,y,dir); logFengBao(fd,playcdkey,func,errraw); //print("\nfunc=%d,raw=%s\n",func,errraw); lssproto_SP_recv(fd, x, y, dir); util_DiscardMessage(); return 0; } #ifdef _CAX_NEWMAC_LOGIN if (func==LSSPROTO_CLIENTLOGIN_RECV) { int checksum=0, checksumrecv; char cdkey[CDKEYLEN]; char passwd[PASSWDLEN]; char cpuid[1024]; char mac[1024]; #ifdef _MO_LOGINCHECK char szdata[1024]; #endif strcpy(PersonalKey, getDefaultKey(fd)); checksum += util_destring(fd,2, cdkey); checksum += util_destring(fd,3, passwd); checksum += util_destring(fd,4, cpuid); checksum += util_destring(fd,5, mac); #ifdef _MO_LOGINCHECK checksum += util_destring(fd,6, szdata); util_deint(fd,7, &checksumrecv); #else util_deint(fd,6, &checksumrecv); #endif if (checksum!=checksumrecv) { #ifndef _MO_LOGINCHECK checksum = 0; checksumrecv = 0; checksum += util_destring(fd,2, cdkey); checksum += util_destring(fd,3, passwd); util_deint(fd,4, &checksumrecv); if (checksum!=checksumrecv) { util_DiscardMessage(); return -1; } sprintf(errraw,"%s|%s",cdkey,passwd); logFengBao(fd,playcdkey,func,errraw); // print("\n 1cdkey=%s,passwd=%s\n",cdkey, passwd); lssproto_ClientLogin_recv(fd, cdkey, passwd); util_DiscardMessage(); return 0; #else util_DiscardMessage(); return -1; #endif } else{ sprintf(errraw,"%s|%s|%s|%s|%s",cdkey,passwd,cpuid,mac,szdata); // logFengBao(fd,playcdkey,func,errraw); #ifndef _MO_LOGINCHECK if(strlen(cpuid)<20) lssproto_ClientLogin_recv(fd, cdkey, passwd); else // print("\n 2cdkey=%s,passwd=%s,cpuid=%s mac=%s\n",cdkey, passwd,cpuid,mac); lssproto_ClientLoginJqm_recv(fd, cdkey, passwd,cpuid,mac); #else //printf("\n 2cdkey=%s,passwd=%s,cpuid=%s mac=%s\n szdata=%s\n",cdkey, passwd,cpuid,mac,szdata); if(strlen(cpuid)<40){ util_DiscardMessage(); return -1; } if(strlen(mac)>13){ util_DiscardMessage(); return -1; } if(strlen(szdata)!=(XXTEA_ROUND*8)){ util_DiscardMessage(); return -1; } lssproto_ClientLoginJqm_recv(fd, cdkey, passwd,cpuid,mac,szdata); #endif util_DiscardMessage(); return 0; } return 0; } #else if (func==LSSPROTO_CLIENTLOGIN_RECV) { int checksum=0, checksumrecv; char cdkey[CDKEYLEN]; char passwd[PASSWDLEN]; char cpuid[128]; strcpy(PersonalKey, getDefaultKey(fd)); checksum += util_destring(fd,2, cdkey); checksum += util_destring(fd,3, passwd); checksum += util_destring(fd,4, cpuid); util_deint(fd,5, &checksumrecv); if (checksum!=checksumrecv) { checksum = 0; checksumrecv = 0; checksum += util_destring(fd,2, cdkey); checksum += util_destring(fd,3, passwd); util_deint(fd,4, &checksumrecv); if (checksum!=checksumrecv) { util_DiscardMessage(); return -1; } sprintf(errraw,"%s|%s",cdkey,passwd); logFengBao(fd,playcdkey,func,errraw); lssproto_ClientLogin_recv(fd, cdkey, passwd); util_DiscardMessage(); return 0; }else{ sprintf(errraw,"%s|%s",cdkey,passwd); logFengBao(fd,playcdkey,func,errraw); if(strlen(cpuid)<20) lssproto_ClientLogin_recv(fd, cdkey, passwd); else lssproto_ClientLoginJqm_recv(fd, cdkey, passwd,cpuid); //print("\ncdkey=%s,passwd=%s,cpuid=%s\n",cdkey, passwd,cpuid); util_DiscardMessage(); return 0; } return 0; } #endif /* if (func==LSSPROTO_CLIENTLOGIN_RECV) { int checksum=0, checksumrecv; char cdkey[CDKEYLEN]; char passwd[PASSWDLEN]; char cpuid[128]; char GHid[128]; char GHic[128]; char GHsp[128]; strcpy(PersonalKey, getDefaultKey(fd)); checksum += util_destring(fd,2, cdkey); checksum += util_destring(fd,3, passwd); checksum += util_destring(fd,4, cpuid); checksum += util_destring(fd,5, GHid); checksum += util_destring(fd,6, GHic); checksum += util_destring(fd,7, GHsp); util_deint(fd,8, &checksumrecv); if (checksum!=checksumrecv) { checksum = 0; checksumrecv = 0; checksum += util_destring(fd,2, cdkey); checksum += util_destring(fd,3, passwd); util_deint(fd,4, &checksumrecv); if (checksum!=checksumrecv) { util_DiscardMessage(); return -1; } sprintf(errraw,"%s|%s",cdkey,passwd); logFengBao(fd,playcdkey,func,errraw); lssproto_ClientLogin_recv(fd, cdkey, passwd); util_DiscardMessage(); return 0; }else{ sprintf(errraw,"%s|%s",cdkey,passwd); logFengBao(fd,playcdkey,func,errraw); if(strlen(cpuid)<20) lssproto_ClientLogin_recv(fd, cdkey, passwd); else lssproto_ClientLoginJqm_recv(fd, cdkey, passwd,cpuid,GHid,GHic,GHsp); //print("\ncdkey=%s,passwd=%s,cpuid=%s\n",cdkey, passwd,cpuid); util_DiscardMessage(); return 0; } // if (checksum!=checksumrecv) { // util_DiscardMessage(); // // //logHack(fd, HACK_CHECKSUMERROR); // //DME(); // return -1; // } // sprintf(errraw,"%s|%s",cdkey,passwd); // logFengBao(fd,playcdkey,func,errraw); // //print("\nfunc=%d,raw=%s\n",func,errraw); // lssproto_ClientLogin_recv(fd, cdkey, passwd); // util_DiscardMessage(); return 0; } */ if (func==LSSPROTO_CREATENEWCHAR_RECV) { int checksum=0, checksumrecv; int dataplacenum; #ifdef _FIX_LONGCHARNAME_ATTACK char charname[1024]; #else char charname[CHARNAMELEN]; #endif int imgno; int faceimgno; int vital; int str; int tgh; int dex; int earth; int water; int fire; int wind; int hometown; checksum += util_deint(fd,2, &dataplacenum); checksum += util_destring(fd,3, charname); checksum += util_deint(fd,4, &imgno); checksum += util_deint(fd,5, &faceimgno); checksum += util_deint(fd,6, &vital); checksum += util_deint(fd,7, &str); checksum += util_deint(fd,8, &tgh); checksum += util_deint(fd,9, &dex); checksum += util_deint(fd,10, &earth); checksum += util_deint(fd,11, &water); checksum += util_deint(fd,12, &fire); checksum += util_deint(fd,13, &wind); checksum += util_deint(fd,14, &hometown); util_deint(fd,15, &checksumrecv); if (checksum!=checksumrecv) { util_DiscardMessage(); //logHack(fd, HACK_CHECKSUMERROR); //DME(); return -1; } #ifdef _FIX_LONGCHARNAME_ATTACK if(strlen(charname)>CHARNAMELEN){ util_DiscardMessage(); return -1; } #endif sprintf(errraw,"%d|%s|%d|%d|%d|%d|%d|%d|%d|%d|%d|%d|%d",dataplacenum,charname,imgno,faceimgno,vital,str,tgh,dex,earth,water,fire,wind,hometown); logFengBao(fd,playcdkey,func,errraw); //print("\nfunc=%d,raw=%s\n",func,errraw); lssproto_CreateNewChar_recv(fd, dataplacenum, charname, imgno, faceimgno, vital, str, tgh, dex, earth, water, fire, wind, hometown); util_DiscardMessage(); return 0; } if (func==LSSPROTO_CHARDELETE_RECV) { int checksum=0, checksumrecv; #ifdef _FIX_LONGCHARNAME_ATTACK char charname[1024]; #else char charname[CHARNAMELEN]; #endif char safepass[32]; checksum += util_destring(fd,2, charname); checksum += util_destring(fd,3, safepass); util_deint(fd,4, &checksumrecv); if (checksum!=checksumrecv) { util_DiscardMessage(); //logHack(fd, HACK_CHECKSUMERROR); //DME(); return -1; } #ifdef _FIX_LONGCHARNAME_ATTACK if(strlen(charname)>CHARNAMELEN){ util_DiscardMessage(); return -1; } #endif sprintf(errraw,"%s|%s",charname,safepass); logFengBao(fd,playcdkey,func,errraw); //print("\nfunc=%d,raw=%s\n",func,errraw); lssproto_CharDelete_recv(fd, charname,safepass); util_DiscardMessage(); return 0; } if (func==LSSPROTO_CHARLOGIN_RECV) { int checksum=0, checksumrecv; #ifdef _FIX_LONGCHARNAME_ATTACK char charname[1024]; #else char charname[CHARNAMELEN]; #endif checksum += util_destring(fd,2, charname); util_deint(fd,3, &checksumrecv); if (checksum!=checksumrecv) { util_DiscardMessage(); //logHack(fd, HACK_CHECKSUMERROR); //DME(); return -1; } #ifdef _FIX_LONGCHARNAME_ATTACK if(strlen(charname)>CHARNAMELEN){ util_DiscardMessage(); return -1; } #endif sprintf(errraw,"%s",charname); logFengBao(fd,playcdkey,func,errraw); //print("\nfunc=%d,raw=%s\n",func,errraw); lssproto_CharLogin_recv(fd, charname); util_DiscardMessage(); return 0; } if (func==LSSPROTO_CHARLIST_RECV) { int checksum=0, checksumrecv; util_deint(fd,2, &checksumrecv); if (checksum!=checksumrecv) { util_DiscardMessage(); //logHack(fd, HACK_CHECKSUMERROR); //DME(); return -1; } sprintf(errraw,"%s","空"); logFengBao(fd,playcdkey,func,errraw); //print("\nfunc=%d,raw=%s\n",func,errraw); lssproto_CharList_recv( fd); util_DiscardMessage(); return 0; } if (func==LSSPROTO_CHARLOGOUT_RECV) { int checksum=0, checksumrecv; int Flg=1; #ifdef _CHAR_NEWLOGOUT checksum += util_deint(fd,2, &Flg); util_deint(fd,3, &checksumrecv); #else util_deint(fd,2, &checksumrecv); #endif if (checksum!=checksumrecv) { util_DiscardMessage(); //logHack(fd, HACK_CHECKSUMERROR); //DME(); return -1; } sprintf(errraw,"%d",Flg); logFengBao(fd,playcdkey,func,errraw); //print("\nfunc=%d,raw=%s\n",func,errraw); lssproto_CharLogout_recv(fd, Flg); util_DiscardMessage(); return 0; } if (func==LSSPROTO_PROCGET_RECV) { int checksum=0, checksumrecv; strcpy( PersonalKey, getDefaultKey(fd)); util_deint(fd,2, &checksumrecv); if (checksum!=checksumrecv) { util_DiscardMessage(); //logHack(fd, HACK_CHECKSUMERROR); //DME(); return -1; } sprintf(errraw,"%s","空"); logFengBao(fd,playcdkey,func,errraw); //print("\nfunc=%d,raw=%s\n",func,errraw); lssproto_ProcGet_recv(fd); util_DiscardMessage(); return 0; } if (func==LSSPROTO_PLAYERNUMGET_RECV) { int checksum=0, checksumrecv; util_deint(fd,2, &checksumrecv); if (checksum!=checksumrecv) { util_DiscardMessage(); //logHack(fd, HACK_CHECKSUMERROR); //DME(); return -1; } sprintf(errraw,"%s","空"); logFengBao(fd,playcdkey,func,errraw); //print("\nfunc=%d,raw=%s\n",func,errraw); lssproto_PlayerNumGet_recv(fd); util_DiscardMessage(); return 0; } if (func==LSSPROTO_ECHO_RECV) { int checksum=0, checksumrecv; char test[1024 * 64]; memset(test, 0, sizeof(test)); checksum += util_destring(fd,2, test); util_deint(fd,3, &checksumrecv); if (checksum!=checksumrecv) { util_DiscardMessage(); //logHack(fd, HACK_CHECKSUMERROR); //DME(); return -1; } sprintf(errraw,"%s",test); logFengBao(fd,playcdkey,func,errraw); //print("\nfunc=%d,raw=%s\n",func,errraw); // if(strlen(test)>10){ // unsigned long tmpip; // int a,b,c,d; // char ip[32]; // tmpip=CONNECT_get_userip(fd); // a=(tmpip % 0x100); tmpip=tmpip / 0x100; // b=(tmpip % 0x100); tmpip=tmpip / 0x100; // c=(tmpip % 0x100); tmpip=tmpip / 0x100; // d=(tmpip % 0x100); // sprintf(ip,"%d.%d.%d.%d",a,b,c,d); // if(strcmp(ip,getNoAttIp(0))!=0 && strcmp(ip,getNoAttIp(1))!=0 && strcmp(ip,getNoAttIp(2))!=0 && strcmp(ip,getNoAttIp(3))!=0 && strcmp(ip,getNoAttIp(4))!=0){ // char systemstr[128]; // sprintf(systemstr,"iptables -I INPUT -s %s -j DROP",ip); // CONNECT_endOne_debug(fd); // system(systemstr); // print("\nIP=%s,test=%s\n",ip,test); // return -1; // } // } lssproto_Echo_recv(fd, test); util_DiscardMessage(); return 0; } if (func==LSSPROTO_TD_RECV) { int checksum=0, checksumrecv; char message[1024 * 64]; checksum += util_destring(fd,2, message); util_deint(fd,3, &checksumrecv); if (checksum!=checksumrecv) { util_DiscardMessage(); //logHack(fd, HACK_CHECKSUMERROR); //DME(); return -1; } sprintf(errraw,"%s",message); logFengBao(fd,playcdkey,func,errraw); //print("\nfunc=%d,raw=%s\n",func,errraw); lssproto_TD_recv(fd, message); util_DiscardMessage(); return 0; } if (func==LSSPROTO_FM_RECV) { int checksum=0, checksumrecv; char message[1024 * 64]; checksum += util_destring(fd,2, message); util_deint(fd,3, &checksumrecv); if (checksum!=checksumrecv) { util_DiscardMessage(); //logHack(fd, HACK_CHECKSUMERROR); //DME(); return -1; } sprintf(errraw,"%s",message); logFengBao(fd,playcdkey,func,errraw); //print("\nfunc=%d,raw=%s\n",func,errraw); lssproto_FM_recv(fd, message); util_DiscardMessage(); return 0; } if (func==LSSPROTO_PETST_RECV) { int checksum=0, checksumrecv; int nPet; int sPet; checksum += util_deint(fd,2, &nPet); checksum += util_deint(fd,3, &sPet); util_deint(fd,4, &checksumrecv); if (checksum!=checksumrecv) { util_DiscardMessage(); //logHack(fd, HACK_CHECKSUMERROR); //DME(); return -1; } sprintf(errraw,"%d|%d",nPet,sPet); logFengBao(fd,playcdkey,func,errraw); //print("\nfunc=%d,raw=%s\n",func,errraw); lssproto_PETST_recv(fd, nPet, sPet); util_DiscardMessage(); return 0; } #ifdef _CHECK_GAMESPEED if (func==LSSPROTO_CS_RECV) { char buffer[2]; buffer[0] = '\0'; sprintf(errraw,"%s","空"); logFengBao(fd,playcdkey,func,errraw); //print("\nfunc=%d,raw=%s\n",func,errraw); lssproto_CS_recv( fd ); util_DiscardMessage(); return 0; } #endif #ifdef _TEAM_KICKPARTY if ( func == LSSPROTO_KTEAM_RECV ) { int checksum = 0, checksumrecv; int sindex; checksum += util_deint(fd, 2, &sindex); util_deint(fd, 3, &checksumrecv); if(checksum!=checksumrecv){ util_DiscardMessage(); logHack( fd, HACK_CHECKSUMERROR); //DME(); return -1; } sprintf(errraw,"%d",sindex); logFengBao(fd,playcdkey,func,errraw); //print("\nfunc=%d,raw=%s\n",func,errraw); lssproto_KTEAM_recv( fd, sindex); util_DiscardMessage(); return 0; } #endif #ifdef _MIND_ICON if(func==LSSPROTO_MA_RECV){ int checksum = 0, checksumrecv; int nMind; int x, y; checksum += util_deint(fd, 2, &nMind); checksum += util_deint(fd, 3, &x); checksum += util_deint(fd, 4, &y); util_deint(fd, 5, &checksumrecv); if(checksum!=checksumrecv){ util_DiscardMessage(); logHack( fd, HACK_CHECKSUMERROR); //DME(); return -1; } sprintf(errraw,"%d|%d|%d",x,y,nMind); logFengBao(fd,playcdkey,func,errraw); //print("\nfunc=%d,raw=%s\n",func,errraw); lssproto_MA_recv(fd, x, y, nMind); util_DiscardMessage(); return 0; } #endif #ifdef _CHATROOMPROTOCOL // (不可开) Syu ADD 聊天室频道 if (func==LSSPROTO_CHATROOM_RECV) { int checksum=0, checksumrecv; char test[1024 * 64]; checksum += util_destring(fd,2, test); util_deint(fd,3, &checksumrecv); if (checksum!=checksumrecv) { util_DiscardMessage(); //logHack(fd, HACK_CHECKSUMERROR); //DME(); return -1; } sprintf(errraw,"%s",test); logFengBao(fd,playcdkey,func,errraw); //print("\nfunc=%d,raw=%s\n",func,errraw); lssproto_CHATROOM_recv(fd, test); util_DiscardMessage(); return 0; } #endif #ifdef _NEWREQUESTPROTOCOL // (不可开) Syu ADD 新增Protocol要求细项 if ( func==LSSPROTO_RESIST_RECV ) { char buffer[2]; buffer[0] = '\0'; sprintf(errraw,"%s","空"); logFengBao(fd,playcdkey,func,errraw); //print("\nfunc=%d,raw=%s\n",func,errraw); lssproto_RESIST_recv( fd ); util_DiscardMessage(); return 0; } #endif #ifdef _OUTOFBATTLESKILL // (不可开) Syu ADD 非战斗时技能Protocol if(func==LSSPROTO_BATTLESKILL_RECV){ int checksum = 0, checksumrecv; int iNum; checksum += util_deint(fd, 2, &iNum); util_deint(fd, 3, &checksumrecv); if(checksum!=checksumrecv){ util_DiscardMessage(); logHack( fd, HACK_CHECKSUMERROR); //DME(); return -1; } sprintf(errraw,"%d",iNum); logFengBao(fd,playcdkey,func,errraw); //print("\nfunc=%d,raw=%s\n",func,errraw); lssproto_BATTLESKILL_recv(fd, iNum); util_DiscardMessage(); return 0; } #endif #ifdef _STREET_VENDOR if(func == LSSPROTO_STREET_VENDOR_RECV){ int checksum = 0,checksumrecv; char message[1024 * 64]; checksum += util_destring(fd,2,message); util_deint(fd,3,&checksumrecv); if(checksum != checksumrecv){ util_DiscardMessage(); logHack(fd,HACK_CHECKSUMERROR); //DME(); return -1; } sprintf(errraw,"%s",message); logFengBao(fd,playcdkey,func,errraw); //print("\nfunc=%d,raw=%s\n",func,errraw); lssproto_STREET_VENDOR_recv(fd,message); util_DiscardMessage(); return 0; } #endif #ifdef _JOBDAILY if(func == LSSPROTO_JOBDAILY_RECV){ int checksum = 0,checksumrecv; char buffer[1024 * 32]; checksum += util_destring(fd,2,buffer); util_deint(fd,3,&checksumrecv); if(checksum != checksumrecv){ util_DiscardMessage(); logHack(fd,HACK_CHECKSUMERROR); //DME(); return -1; } sprintf(errraw,"%s",buffer); logFengBao(fd,playcdkey,func,errraw); //print("\nfunc=%d,raw=%s\n",func,errraw); lssproto_JOBDAILY_recv(fd,buffer); util_DiscardMessage(); return 0; } #endif #ifdef _TEACHER_SYSTEM if(func == LSSPROTO_TEACHER_SYSTEM_RECV){ int checksum = 0,checksumrecv; char message[1024 * 64]; checksum += util_destring(fd,2,message); util_deint(fd,3,&checksumrecv); if(checksum != checksumrecv){ util_DiscardMessage(); logHack(fd,HACK_CHECKSUMERROR); //DME(); return -1; } sprintf(errraw,"%s",message); logFengBao(fd,playcdkey,func,errraw); //print("\nfunc=%d,raw=%s\n",func,errraw); lssproto_TEACHER_SYSTEM_recv(fd,message); util_DiscardMessage(); return 0; } #endif #ifdef _ADD_STATUS_2 if(func == LSSPROTO_S2_RECV){ return 0; } #endif #ifdef _PET_ITEM if (func==LSSPROTO_PET_ITEM_RECV) { int checksum=0, checksumrecv; int petindex; int x,y; int i,j,k,l,m,n; int fromindex; int toindex; checksum += util_deint(fd,2, &x); checksum += util_deint(fd,3, &y); checksum += util_deint(fd,4, &petindex); checksum += util_deint(fd,5, &fromindex); checksum += util_deint(fd,6, &toindex); util_deint(fd,7, &checksumrecv); if (checksum!=checksumrecv) { util_DiscardMessage(); //logHack(fd, HACK_CHECKSUMERROR); //DME(); return -1; } sprintf(errraw,"%d|%d|%d|%d|%d",x,y,petindex,fromindex,toindex); logFengBao(fd,playcdkey,func,errraw); //print("\nfunc=%d,raw=%s\n",func,errraw); lssproto_PETITEM_recv( fd, x, y, petindex, fromindex, toindex ); util_DiscardMessage(); return 0; } #endif #ifdef _ONLINE_SHOP if(func == LSSPROTO_SHOP_RECV){ int checksum = 0,checksumrecv; int shopflag,piece; checksum += util_deint(fd,2,&shopflag); checksum += util_deint(fd,3,&piece); util_deint(fd,4,&checksumrecv); if(checksum != checksumrecv){ util_DiscardMessage(); logHack(fd,HACK_CHECKSUMERROR); //DME(); return -1; } sprintf(errraw,"%d|%d",shopflag,piece); logFengBao(fd,playcdkey,func,errraw); //print("\nfunc=%d,raw=%s\n",func,errraw); lssproto_SHOP_recv(fd,shopflag,piece); util_DiscardMessage(); return 0; } if(func == LSSPROTO_SHOPBUY_RECV){ int checksum = 0,checksumrecv; int shopflag,piece,shopno,buynum; checksum += util_deint(fd,2,&shopflag); checksum += util_deint(fd,3,&piece); checksum += util_deint(fd,4,&shopno); checksum += util_deint(fd,5,&buynum); util_deint(fd,6,&checksumrecv); if(checksum != checksumrecv){ util_DiscardMessage(); logHack(fd,HACK_CHECKSUMERROR); //DME(); return -1; } sprintf(errraw,"%d|%d|%d|%d",shopflag,piece,shopno,buynum); logFengBao(fd,playcdkey,func,errraw); //print("\nfunc=%d,raw=%s\n",func,errraw); lssproto_SHOPBUY_recv(fd,shopflag,piece,shopno,buynum); util_DiscardMessage(); return 0; } #endif #ifdef _CAX_ESC_FENGBAO if (func==LSSPROTO_ESC_RECV) { int escindex,checksumrecv; int checksum = 0; checksum += util_deint(fd,2, &escindex); util_deint(fd,3, &checksumrecv); if (checksum!=checksumrecv) { util_DiscardMessage(); // DME(); return -1; } sprintf(errraw,"%d",escindex); logFengBao(fd,playcdkey,func,errraw); FreeSamenu("ESC_Recv",escindex,CONNECT_getCharaindex(fd)); util_DiscardMessage(); return 0; } #endif printf("\n无法找到客户端接口=%d\n",func); util_DiscardMessage(); logHack(fd,HACK_NOTDISPATCHED); //DME(); return -1; } /* servertoclient XYD( int x, int y, int dir ); */ void lssproto_XYD_send(int fd,int x,int y,int dir) { if(fd<0) return; char buffer[1024 * 64]; int checksum=0; strcpy(buffer,""); CONNECT_getCdkey( fd, PersonalKey, 4096); strcat(PersonalKey, getRunningKey()); checksum += util_mkint(fd,buffer, x); checksum += util_mkint(fd,buffer, y); checksum += util_mkint(fd,buffer, dir); util_mkint(fd,buffer, checksum); util_SendMesg(fd, LSSPROTO_XYD_SEND, buffer); } void lssproto_EV_send(int fd,int seqno,int result) { char buffer[1024 * 64]; int checksum=0; strcpy(buffer,""); CONNECT_getCdkey( fd, PersonalKey, 4096); strcat(PersonalKey, getRunningKey()); checksum += util_mkint(fd,buffer, seqno); checksum += util_mkint(fd,buffer, result); util_mkint(fd,buffer, checksum); util_SendMesg(fd, LSSPROTO_EV_SEND, buffer); } void lssproto_EN_send(int fd,int result,int field) { char buffer[1024 * 64]; int checksum=0; //print(" EN_send "); strcpy(buffer,""); CONNECT_getCdkey( fd, PersonalKey, 4096); strcat(PersonalKey, getRunningKey()); checksum += util_mkint(fd,buffer, result); checksum += util_mkint(fd,buffer, field); util_mkint(fd,buffer, checksum); util_SendMesg(fd, LSSPROTO_EN_SEND, buffer); } void lssproto_RS_send(int fd,char* data) { char buffer[1024 * 64]; int checksum=0; strcpy(buffer,""); CONNECT_getCdkey( fd, PersonalKey, 4096); strcat(PersonalKey, getRunningKey()); checksum += util_mkstring(fd,buffer, data); util_mkint(fd,buffer, checksum); util_SendMesg(fd, LSSPROTO_RS_SEND, buffer); } void lssproto_RD_send(int fd,char* data) { char buffer[1024 * 64]; int checksum=0; strcpy(buffer,""); CONNECT_getCdkey( fd, PersonalKey, 4096); strcat(PersonalKey, getRunningKey()); checksum += util_mkstring(fd,buffer, data); util_mkint(fd,buffer, checksum); util_SendMesg(fd, LSSPROTO_RD_SEND, buffer); } void lssproto_B_send(int fd,char* command) { char buffer[1024 * 64]; int checksum=0; strcpy(buffer,""); CONNECT_getCdkey( fd, PersonalKey, 4096); strcat(PersonalKey, getRunningKey()); checksum += util_mkstring(fd,buffer, command); util_mkint(fd,buffer, checksum); util_SendMesg(fd, LSSPROTO_B_SEND, buffer); } void lssproto_I_send(int fd,char* data) { char buffer[1024 * 64]; int checksum=0; strcpy(buffer,""); CONNECT_getCdkey( fd, PersonalKey, 4096); strcat(PersonalKey, getRunningKey()); checksum += util_mkstring(fd,buffer, data); util_mkint(fd,buffer, checksum); util_SendMesg(fd, LSSPROTO_I_SEND, buffer); } void lssproto_SI_send(int fd,int fromindex,int toindex) { char buffer[1024 * 64]; int checksum=0; strcpy(buffer,""); CONNECT_getCdkey( fd, PersonalKey, 4096); strcat(PersonalKey, getRunningKey()); checksum += util_mkint(fd,buffer, fromindex); checksum += util_mkint(fd,buffer, toindex); util_mkint(fd,buffer, checksum); util_SendMesg(fd, LSSPROTO_SI_SEND, buffer); } void lssproto_MSG_send(int fd,int aindex,char* text,int color) { char buffer[1024 * 64]; int checksum=0; strcpy(buffer,""); CONNECT_getCdkey( fd, PersonalKey, 4096); strcat(PersonalKey, getRunningKey()); checksum += util_mkint(fd,buffer, aindex); checksum += util_mkstring(fd,buffer, text); checksum += util_mkint(fd,buffer, color); util_mkint(fd,buffer, checksum); util_SendMesg(fd, LSSPROTO_MSG_SEND, buffer); } void lssproto_PME_send(int fd,int objindex,int graphicsno,int x,int y,int dir,int flg,int no,char* cdata) { char buffer[1024 * 64]; int checksum=0; strcpy(buffer,""); CONNECT_getCdkey( fd, PersonalKey, 4096); strcat(PersonalKey, getRunningKey()); checksum += util_mkint(fd,buffer, objindex); checksum += util_mkint(fd,buffer, graphicsno); checksum += util_mkint(fd,buffer, x); checksum += util_mkint(fd,buffer, y); checksum += util_mkint(fd,buffer, dir); checksum += util_mkint(fd,buffer, flg); checksum += util_mkint(fd,buffer, no); checksum += util_mkstring(fd,buffer, cdata); util_mkint(fd,buffer, checksum); util_SendMesg(fd, LSSPROTO_PME_SEND, buffer); } void lssproto_AB_send(int fd,char* data) { char buffer[1024 * 64]; int checksum=0; strcpy(buffer,""); CONNECT_getCdkey( fd, PersonalKey, 4096); strcat(PersonalKey, getRunningKey()); checksum += util_mkstring(fd,buffer, data); util_mkint(fd,buffer, checksum); util_SendMesg(fd, LSSPROTO_AB_SEND, buffer); } void lssproto_ABI_send(int fd,int num,char* data) { char buffer[1024 * 64]; int checksum=0; strcpy(buffer,""); CONNECT_getCdkey( fd, PersonalKey, 4096); strcat(PersonalKey, getRunningKey()); checksum += util_mkint(fd,buffer, num); checksum += util_mkstring(fd,buffer, data); util_mkint(fd,buffer, checksum); util_SendMesg(fd, LSSPROTO_ABI_SEND, buffer); } void lssproto_TK_send(int fd,int index,char* message,int color) { char buffer[1024 * 64]; int checksum=0; strcpy(buffer,""); CONNECT_getCdkey( fd, PersonalKey, 4096); strcat(PersonalKey, getRunningKey()); checksum += util_mkint(fd,buffer, index); checksum += util_mkstring(fd,buffer, message); checksum += util_mkint(fd,buffer, color); util_mkint(fd,buffer, checksum); util_SendMesg(fd, LSSPROTO_TK_SEND, buffer); } void lssproto_MC_send(int fd,int fl,int x1,int y1,int x2,int y2,int tilesum,int objsum,int eventsum,char* data) { char buffer[1024 * 64]; int checksum=0; strcpy(buffer,""); CONNECT_getCdkey( fd, PersonalKey, 4096); strcat(PersonalKey, getRunningKey()); checksum += util_mkint(fd,buffer, fl); checksum += util_mkint(fd,buffer, x1); checksum += util_mkint(fd,buffer, y1); checksum += util_mkint(fd,buffer, x2); checksum += util_mkint(fd,buffer, y2); checksum += util_mkint(fd,buffer, tilesum); checksum += util_mkint(fd,buffer, objsum); checksum += util_mkint(fd,buffer, eventsum); checksum += util_mkstring(fd,buffer, data); util_mkint(fd,buffer, checksum); util_SendMesg(fd, LSSPROTO_MC_SEND, buffer); } void lssproto_M_send(int fd,int fl,int x1,int y1,int x2,int y2,char* data) { char buffer[1024 * 64]; int checksum=0; strcpy(buffer,""); CONNECT_getCdkey( fd, PersonalKey, 4096); strcat(PersonalKey, getRunningKey()); checksum += util_mkint(fd,buffer, fl); checksum += util_mkint(fd,buffer, x1); checksum += util_mkint(fd,buffer, y1); checksum += util_mkint(fd,buffer, x2); checksum += util_mkint(fd,buffer, y2); checksum += util_mkstring(fd,buffer, data); util_mkint(fd,buffer, checksum); util_SendMesg(fd, LSSPROTO_M_SEND, buffer); } void lssproto_C_send(int fd,char* data) { #ifdef _WAN_FIX if(getVsFlg()==2){ int charaindex = -1; charaindex = CONNECT_getCharaindex( fd ); if(CHAR_getInt( charaindex, CHAR_WHICHTYPE ) == CHAR_TYPEPLAYER){ char sendmsg[20]; sprintf(sendmsg,"%d|%d",CHAR_getInt(charaindex,CHAR_X),CHAR_getInt(charaindex,CHAR_Y)); if(getStayEncount(fd)==1 && strstr(data,sendmsg)==NULL && CHAR_getWorkInt( charaindex, CHAR_WORKPARTYMODE) == CHAR_PARTY_NONE) return; } }else if(getVsFlg()==1){ int charaindex = -1; charaindex = CONNECT_getCharaindex( fd ); if(CHAR_getInt( charaindex, CHAR_WHICHTYPE ) == CHAR_TYPEPLAYER){ char sendmsg[20]; sprintf(sendmsg,"%d|%d",CHAR_getInt(charaindex,CHAR_X),CHAR_getInt(charaindex,CHAR_Y)); if(getStayEncount(fd)==1 && strstr(data,sendmsg)==NULL && CHAR_getWorkInt( charaindex, CHAR_WORKPARTYMODE) != CHAR_PARTY_LEADER) return; if(CHAR_getWorkInt( charaindex, CHAR_WORKPARTYMODE) == CHAR_PARTY_CLIENT){ int partyindex = CHAR_getWorkInt( charaindex, CHAR_WORKPARTYINDEX1); if(CHAR_CHECKINDEX(partyindex)){ int partyfd = getfdFromCharaIndex( CHAR_getWorkInt( charaindex, CHAR_WORKPARTYINDEX1)); if(getStayEncount(partyfd)==1) return; } } } }else if(getVsFlg()==3){ int charaindex = -1; charaindex = CONNECT_getCharaindex( fd ); if(CHAR_getInt( charaindex, CHAR_WHICHTYPE ) == CHAR_TYPEPLAYER){ char sendmsg[20]; sprintf(sendmsg,"%d|%d",CHAR_getInt(charaindex,CHAR_X),CHAR_getInt(charaindex,CHAR_Y)); if(CHAR_getWorkInt( charaindex, CHAR_WORKPARTYMODE) == CHAR_PARTY_CLIENT){ int partyindex = CHAR_getWorkInt( charaindex, CHAR_WORKPARTYINDEX1); if(CHAR_CHECKINDEX(partyindex)){ int partyfd = getfdFromCharaIndex( CHAR_getWorkInt( charaindex, CHAR_WORKPARTYINDEX1)); if(getStayEncount(partyfd)==1) return; } } } } #endif char buffer[1024 * 64]; int checksum=0; strcpy(buffer,""); CONNECT_getCdkey( fd, PersonalKey, 4096); strcat(PersonalKey, getRunningKey()); checksum += util_mkstring(fd,buffer, data); util_mkint(fd,buffer, checksum); util_SendMesg(fd, LSSPROTO_C_SEND, buffer); } void lssproto_CA_send(int fd,char* data) { #ifdef _WAN_FIX if(getVsFlg()==2){ int charaindex = -1; charaindex = CONNECT_getCharaindex( fd ); if(CHAR_getInt( charaindex, CHAR_WHICHTYPE ) == CHAR_TYPEPLAYER){ char sendmsg[20]; sprintf(sendmsg,"%d|%d",CHAR_getInt(charaindex,CHAR_X),CHAR_getInt(charaindex,CHAR_Y)); if(getStayEncount(fd)==1 && strstr(data,sendmsg)==NULL && CHAR_getWorkInt( charaindex, CHAR_WORKPARTYMODE) == CHAR_PARTY_NONE) return; } }else if(getVsFlg()==1){ int charaindex = -1; charaindex = CONNECT_getCharaindex( fd ); if(CHAR_getInt( charaindex, CHAR_WHICHTYPE ) == CHAR_TYPEPLAYER){ char sendmsg[20]; sprintf(sendmsg,"%d|%d",CHAR_getInt(charaindex,CHAR_X),CHAR_getInt(charaindex,CHAR_Y)); if(getStayEncount(fd)==1 && strstr(data,sendmsg)==NULL && CHAR_getWorkInt( charaindex, CHAR_WORKPARTYMODE) != CHAR_PARTY_LEADER) return; if(CHAR_getWorkInt( charaindex, CHAR_WORKPARTYMODE) == CHAR_PARTY_CLIENT){ int partyindex = CHAR_getWorkInt( charaindex, CHAR_WORKPARTYINDEX1); if(CHAR_CHECKINDEX(partyindex)){ int partyfd = getfdFromCharaIndex( CHAR_getWorkInt( charaindex, CHAR_WORKPARTYINDEX1)); if(getStayEncount(partyfd)==1) return; } } } }else if(getVsFlg()==3){ int charaindex = -1; charaindex = CONNECT_getCharaindex( fd ); if(CHAR_getInt( charaindex, CHAR_WHICHTYPE ) == CHAR_TYPEPLAYER){ char sendmsg[20]; sprintf(sendmsg,"%d|%d",CHAR_getInt(charaindex,CHAR_X),CHAR_getInt(charaindex,CHAR_Y)); if(CHAR_getWorkInt( charaindex, CHAR_WORKPARTYMODE) == CHAR_PARTY_CLIENT){ int partyindex = CHAR_getWorkInt( charaindex, CHAR_WORKPARTYINDEX1); if(CHAR_CHECKINDEX(partyindex)){ int partyfd = getfdFromCharaIndex( CHAR_getWorkInt( charaindex, CHAR_WORKPARTYINDEX1)); if(getStayEncount(partyfd)==1) return; } } } } #endif char buffer[1024 * 64]; int checksum=0; strcpy(buffer,""); CONNECT_getCdkey( fd, PersonalKey, 4096); strcat(PersonalKey, getRunningKey()); checksum += util_mkstring(fd,buffer, data); util_mkint(fd,buffer, checksum); util_SendMesg(fd, LSSPROTO_CA_SEND, buffer); } void lssproto_CD_send(int fd,char* data) { char buffer[1024 * 64]; int checksum=0; strcpy(buffer,""); CONNECT_getCdkey( fd, PersonalKey, 4096); strcat(PersonalKey, getRunningKey()); checksum += util_mkstring(fd,buffer, data); util_mkint(fd,buffer, checksum); util_SendMesg(fd, LSSPROTO_CD_SEND, buffer); } void lssproto_R_send(int fd,char* data) { char buffer[1024 * 64]; int checksum=0; strcpy(buffer,""); CONNECT_getCdkey( fd, PersonalKey, 4096); strcat(PersonalKey, getRunningKey()); checksum += util_mkstring(fd,buffer, data); util_mkint(fd,buffer, checksum); util_SendMesg(fd, LSSPROTO_R_SEND, buffer); } void lssproto_S_send(int fd,char* data) { char buffer[1024 * 64]; int checksum=0; strcpy(buffer,""); CONNECT_getCdkey( fd, PersonalKey, 4096); strcat(PersonalKey, getRunningKey()); checksum += util_mkstring(fd,buffer, data); util_mkint(fd,buffer, checksum); util_SendMesg(fd, LSSPROTO_S_SEND, buffer); } void lssproto_D_send(int fd,int category,int dx,int dy,char* data) { char buffer[1024 * 64]; int checksum=0; strcpy(buffer,""); CONNECT_getCdkey( fd, PersonalKey, 4096); strcat(PersonalKey, getRunningKey()); checksum += util_mkint(fd,buffer, category); checksum += util_mkint(fd,buffer, dx); checksum += util_mkint(fd,buffer, dy); checksum += util_mkstring(fd,buffer, data); util_mkint(fd,buffer, checksum); util_SendMesg(fd, LSSPROTO_D_SEND, buffer); } void lssproto_FS_send(int fd,int flg) { char buffer[1024 * 64]; int checksum=0; strcpy(buffer,""); CONNECT_getCdkey( fd, PersonalKey, 4096); strcat(PersonalKey, getRunningKey()); checksum += util_mkint(fd,buffer, flg); util_mkint(fd,buffer, checksum); util_SendMesg(fd, LSSPROTO_FS_SEND, buffer); } void lssproto_HL_send(int fd,int flg) { char buffer[1024 * 64]; int checksum=0; strcpy(buffer,""); CONNECT_getCdkey( fd, PersonalKey, 4096); strcat(PersonalKey, getRunningKey()); checksum += util_mkint(fd,buffer, flg); util_mkint(fd,buffer, checksum); util_SendMesg(fd, LSSPROTO_HL_SEND, buffer); } void lssproto_PR_send(int fd,int request,int result) { char buffer[1024 * 64]; int checksum=0; strcpy(buffer,""); CONNECT_getCdkey( fd, PersonalKey, 4096); strcat(PersonalKey, getRunningKey()); checksum += util_mkint(fd,buffer, request); checksum += util_mkint(fd,buffer, result); util_mkint(fd,buffer, checksum); util_SendMesg(fd, LSSPROTO_PR_SEND, buffer); } #ifdef _PETS_SELECTCON void lssproto_PETS_send(int fd,int petarray,int result) { char buffer[1024 * 64]; int checksum=0; strcpy(buffer,""); CONNECT_getCdkey( fd, PersonalKey, 4096); strcat(PersonalKey, getRunningKey()); checksum += util_mkint(fd,buffer, petarray); checksum += util_mkint(fd,buffer, result); util_mkint(fd,buffer, checksum); util_SendMesg(fd, LSSPROTO_PETST_SEND, buffer); } #endif void lssproto_KS_send(int fd,int petarray,int result) { char buffer[1024 * 64]; int checksum=0; strcpy(buffer,""); CONNECT_getCdkey( fd, PersonalKey, 4096); strcat(PersonalKey, getRunningKey()); checksum += util_mkint(fd,buffer, petarray); checksum += util_mkint(fd,buffer, result); util_mkint(fd,buffer, checksum); util_SendMesg(fd, LSSPROTO_KS_SEND, buffer); } void lssproto_SPET_send(int fd, int standbypet, int result) { char buffer[1024 * 64]; int checksum=0; strcpy(buffer,""); CONNECT_getCdkey( fd, PersonalKey, 4096); strcat(PersonalKey, getRunningKey()); checksum += util_mkint(fd,buffer, standbypet); checksum += util_mkint(fd,buffer, result); util_mkint(fd,buffer, checksum); util_SendMesg(fd, LSSPROTO_SPET_SEND, buffer); } void lssproto_PS_send(int fd,int result,int havepetindex,int havepetskill,int toindex) { char buffer[1024 * 64]; int checksum=0; strcpy(buffer,""); CONNECT_getCdkey( fd, PersonalKey, 4096); strcat(PersonalKey, getRunningKey()); checksum += util_mkint(fd,buffer, result); checksum += util_mkint(fd,buffer, havepetindex); checksum += util_mkint(fd,buffer, havepetskill); checksum += util_mkint(fd,buffer, toindex); util_mkint(fd,buffer, checksum); util_SendMesg(fd, LSSPROTO_PS_SEND, buffer); } void lssproto_SKUP_send(int fd,int point) { char buffer[1024 * 64]; int checksum=0; strcpy(buffer,""); CONNECT_getCdkey( fd, PersonalKey, 4096); strcat(PersonalKey, getRunningKey()); checksum += util_mkint(fd,buffer, point); util_mkint(fd,buffer, checksum); util_SendMesg(fd, LSSPROTO_SKUP_SEND, buffer); } void lssproto_WN_send(int fd,int windowtype,int buttontype,int seqno,int objindex,char* data) { char buffer[1024 * 64]; int checksum=0; #ifdef _NO_WARP // shan hanjj add Begin CONNECT_set_seqno(fd,seqno); CONNECT_set_selectbutton(fd,buttontype); // shan End #endif strcpy(buffer,""); CONNECT_getCdkey( fd, PersonalKey, 4096); strcat(PersonalKey, getRunningKey()); checksum += util_mkint(fd,buffer, windowtype); checksum += util_mkint(fd,buffer, buttontype); checksum += util_mkint(fd,buffer, seqno); checksum += util_mkint(fd,buffer, objindex); checksum += util_mkstring(fd,buffer, data); util_mkint(fd,buffer, checksum); util_SendMesg(fd, LSSPROTO_WN_SEND, buffer); } void lssproto_EF_send(int fd,int effect,int level,char* option) { char buffer[1024 * 64]; int checksum=0; strcpy(buffer,""); CONNECT_getCdkey( fd, PersonalKey, 4096); strcat(PersonalKey, getRunningKey()); checksum += util_mkint(fd,buffer, effect); checksum += util_mkint(fd,buffer, level); checksum += util_mkstring(fd,buffer, option); util_mkint(fd,buffer, checksum); util_SendMesg(fd, LSSPROTO_EF_SEND, buffer); } void lssproto_SE_send(int fd,int x,int y,int senumber,int sw) { char buffer[1024 * 64]; int checksum=0; strcpy(buffer,""); CONNECT_getCdkey( fd, PersonalKey, 4096); strcat(PersonalKey, getRunningKey()); checksum += util_mkint(fd,buffer, x); checksum += util_mkint(fd,buffer, y); checksum += util_mkint(fd,buffer, senumber); checksum += util_mkint(fd,buffer, sw); util_mkint(fd,buffer, checksum); util_SendMesg(fd, LSSPROTO_SE_SEND, buffer); } void lssproto_ClientLogin_send(int fd,char* result) { char buffer[1024 * 64]; int checksum=0; strcpy(buffer,""); CONNECT_getCdkey( fd, PersonalKey, 4096); strcat(PersonalKey, getRunningKey()); checksum += util_mkstring(fd,buffer, result); util_mkint(fd,buffer, checksum); util_SendMesg(fd, LSSPROTO_CLIENTLOGIN_SEND, buffer); } void lssproto_CreateNewChar_send(int fd,char* result,char* data) { char buffer[1024 * 64]; int checksum=0; strcpy(buffer,""); CONNECT_getCdkey( fd, PersonalKey, 4096); strcat(PersonalKey, getRunningKey()); checksum += util_mkstring(fd,buffer, result); checksum += util_mkstring(fd,buffer, data); util_mkint(fd,buffer, checksum); util_SendMesg(fd, LSSPROTO_CREATENEWCHAR_SEND, buffer); } void lssproto_CharDelete_send(int fd,char* result,char* data) { char buffer[1024 * 64]; int checksum=0; strcpy(buffer,""); CONNECT_getCdkey( fd, PersonalKey, 4096); strcat(PersonalKey, getRunningKey()); checksum += util_mkstring(fd,buffer, result); checksum += util_mkstring(fd,buffer, data); util_mkint(fd,buffer, checksum); util_SendMesg(fd, LSSPROTO_CHARDELETE_SEND, buffer); } void lssproto_CharLogin_send(int fd,char* result,char* data) { char buffer[1024 * 64]; int checksum=0; strcpy(buffer,""); CONNECT_getCdkey( fd, PersonalKey, 4096); strcat(PersonalKey, getRunningKey()); checksum += util_mkstring(fd,buffer, result); checksum += util_mkstring(fd,buffer, data); util_mkint(fd,buffer, checksum); util_SendMesg(fd, LSSPROTO_CHARLOGIN_SEND, buffer); } void lssproto_CharList_send(int fd,char* result,char* data) { char buffer[1024 * 64]; int checksum=0; strcpy(buffer,""); CONNECT_getCdkey( fd, PersonalKey, 4096); strcat(PersonalKey, getRunningKey()); checksum += util_mkstring(fd,buffer, result); checksum += util_mkstring(fd,buffer, data); util_mkint(fd,buffer, checksum); util_SendMesg(fd, LSSPROTO_CHARLIST_SEND, buffer); } void lssproto_CharLogout_send(int fd,char* result,char* data) { char buffer[1024 * 64]; int checksum=0; strcpy(buffer,""); CONNECT_getCdkey( fd, PersonalKey, 4096); strcat(PersonalKey, getRunningKey()); checksum += util_mkstring(fd,buffer, result); checksum += util_mkstring(fd,buffer, data); util_mkint(fd,buffer, checksum); util_SendMesg(fd, LSSPROTO_CHARLOGOUT_SEND, buffer); } void lssproto_ProcGet_send(int fd,char* data) { char buffer[1024 * 64]; int checksum=0; strcpy(buffer,""); CONNECT_getCdkey( fd, PersonalKey, 4096); strcat(PersonalKey, getRunningKey()); checksum += util_mkstring(fd,buffer, data); util_mkint(fd,buffer, checksum); util_SendMesg(fd, LSSPROTO_PROCGET_SEND, buffer); } void lssproto_PlayerNumGet_send(int fd,int logincount,int player) { char buffer[1024 * 64]; int checksum=0; strcpy(buffer,""); CONNECT_getCdkey( fd, PersonalKey, 4096); strcat(PersonalKey, getRunningKey()); checksum += util_mkint(fd,buffer, logincount); checksum += util_mkint(fd,buffer, player); util_mkint(fd,buffer, checksum); util_SendMesg(fd, LSSPROTO_PLAYERNUMGET_SEND, buffer); } void lssproto_Echo_send(int fd,char* test) { char buffer[1024 * 64]; int checksum=0; strcpy(buffer,""); CONNECT_getCdkey( fd, PersonalKey, 4096); strcat(PersonalKey, getRunningKey()); checksum += util_mkstring(fd,buffer, test); util_mkint(fd,buffer, checksum); util_SendMesg(fd, LSSPROTO_ECHO_SEND, buffer); } // CoolFish: Trade 2001/4/18 void lssproto_TD_send(int fd, int index, char* message) { char buffer[1024 * 64]; int checksum=0; strcpy(buffer,""); CONNECT_getCdkey( fd, PersonalKey, 4096); strcat(PersonalKey, getRunningKey()); checksum += util_mkstring(fd,buffer, message); util_mkint(fd,buffer, checksum); util_SendMesg(fd, LSSPROTO_TD_SEND, buffer); } #ifdef _CHATROOMPROTOCOL // (不可开) Syu ADD 聊天室频道 void lssproto_CHATROOM_send ( int fd , char* message ) { char buffer[1024 * 64]; int checksum=0; strcpy(buffer,""); CONNECT_getCdkey( fd, PersonalKey, 4096); strcat(PersonalKey, getRunningKey()); checksum += util_mkstring(fd,buffer, message); util_mkint(fd,buffer, checksum); util_SendMesg(fd, LSSPROTO_CHATROOM_SEND, buffer); } #endif #ifdef _NEWREQUESTPROTOCOL // (不可开) Syu ADD 新增Protocol要求细项 void lssproto_RESIST_send ( int fd , char* message ) { char buffer[1024 * 64]; int checksum=0; strcpy(buffer,""); CONNECT_getCdkey( fd, PersonalKey, 4096); strcat(PersonalKey, getRunningKey()); checksum += util_mkstring(fd,buffer, message); util_mkint(fd,buffer, checksum); util_SendMesg(fd, LSSPROTO_RESIST_SEND, buffer); } #endif #ifdef _OUTOFBATTLESKILL // (不可开) Syu ADD 非战斗时技能Protocol void lssproto_BATTLESKILL_send ( int fd , char* message ) { char buffer[1024 * 64]; int checksum=0; strcpy(buffer,""); CONNECT_getCdkey( fd, PersonalKey, 4096); strcat(PersonalKey, getRunningKey()); checksum += util_mkstring(fd,buffer, message); util_mkint(fd,buffer, checksum); util_SendMesg(fd, LSSPROTO_BATTLESKILL_SEND, buffer); } #endif void lssproto_NU_send(int fd, int nu) { char buffer[1024 * 64]; int checksum=0; strcpy(buffer,""); CONNECT_getCdkey( fd, PersonalKey, 4096); strcat(PersonalKey, getRunningKey()); checksum += util_mkint(fd,buffer, nu); util_mkint(fd,buffer, checksum); util_SendMesg(fd, LSSPROTO_NU_SEND, buffer); } void lssproto_FM_send(int fd, char* message) { char buffer[1024 * 64]; int checksum=0; strcpy(buffer,""); CONNECT_getCdkey( fd, PersonalKey, 4096); strcat(PersonalKey, getRunningKey()); checksum += util_mkstring(fd,buffer, message); util_mkint(fd,buffer, checksum); util_SendMesg(fd, LSSPROTO_FM_SEND, buffer); } void lssproto_WO_send(int fd,int effect) { char buffer[1024 * 64]; int checksum=0; strcpy(buffer,""); CONNECT_getCdkey( fd, PersonalKey, 4096); strcat(PersonalKey, getRunningKey()); checksum += util_mkint(fd,buffer, effect); util_mkint(fd,buffer, checksum); util_SendMesg(fd, LSSPROTO_WO_SEND, buffer); } #ifdef _ITEM_CRACKER void lssproto_IC_send(int fd, int x, int y) { char buffer[1024 * 64]; int checksum=0; strcpy(buffer,""); CONNECT_getCdkey( fd, PersonalKey, 4096); strcat(PersonalKey, getRunningKey()); checksum += util_mkint(fd,buffer, x); checksum += util_mkint(fd,buffer, y); util_mkint(fd,buffer, checksum); util_SendMesg(fd, LSSPROTO_IC_SEND, buffer); } #endif #ifdef _MAGIC_NOCAST // 精灵:沉默 void lssproto_NC_send(int fd,int flg) { if(fd<0) return; char buffer[1024 * 64]; int checksum=0; strcpy(buffer,""); CONNECT_getCdkey( fd, PersonalKey, 4096); strcat(PersonalKey, getRunningKey()); checksum += util_mkint(fd,buffer, flg); util_mkint(fd,buffer, checksum); util_SendMesg(fd, LSSPROTO_NC_SEND, buffer); } #endif #ifdef _STREET_VENDOR void lssproto_STREET_VENDOR_send(int fd,char *message) { char buffer[1024 * 64]; int checksum = 0; strcpy(buffer,""); CONNECT_getCdkey(fd,PersonalKey,4096); strcat(PersonalKey,getRunningKey()); checksum += util_mkstring(fd,buffer,message); util_mkint(fd,buffer,checksum); util_SendMesg(fd,LSSPROTO_STREET_VENDOR_SEND,buffer); } #endif #ifdef _RIGHTCLICK void lssproto_RCLICK_send(int fd, int type, char* data) { char buffer[1024 * 64]; int checksum=0; print("\n RCLICK_send( type=%d data=%s) ", type, data ); strcpy(buffer,""); CONNECT_getCdkey( fd, PersonalKey, 4096); strcat(PersonalKey, getRunningKey()); checksum += util_mkint(fd,buffer, type); checksum += util_mkstring(fd,buffer, data); util_mkint(fd,buffer, checksum); util_SendMesg(fd, LSSPROTO_RCLICK_SEND, buffer); } #endif #ifdef _JOBDAILY void lssproto_JOBDAILY_send(int fd,char *data) { char buffer[1024 * 32]; int checksum = 0; strcpy(buffer,""); CONNECT_getCdkey(fd,PersonalKey,4096); strcat(PersonalKey,getRunningKey()); checksum += util_mkstring(fd,buffer,data); util_mkint(fd,buffer,checksum); util_SendMesg(fd,LSSPROTO_JOBDAILY_SEND,buffer); } #endif #ifdef _TEACHER_SYSTEM void lssproto_TEACHER_SYSTEM_send(int fd,char *data) { char buffer[1024 * 64]; int checksum = 0; strcpy(buffer,""); CONNECT_getCdkey(fd,PersonalKey,4096); strcat(PersonalKey,getRunningKey()); checksum += util_mkstring(fd,buffer,data); util_mkint(fd,buffer,checksum); util_SendMesg(fd,LSSPROTO_TEACHER_SYSTEM_SEND,buffer); } #endif #ifdef _ADD_STATUS_2 void lssproto_S2_send(int fd,char* data) { char buffer[1024 * 64]; int checksum=0; strcpy(buffer,""); CONNECT_getCdkey( fd, PersonalKey, 4096); strcat(PersonalKey, getRunningKey()); checksum += util_mkstring(fd,buffer, data); util_mkint(fd,buffer, checksum); util_SendMesg(fd, LSSPROTO_S2_SEND, buffer); } #endif #ifdef _ONLINE_SHOP void lssproto_SHOP_send(int fd,int shopnum,int vippoint,int piece,int pieces,int shopflag,char* res) { char buffer[1024 * 64]; int checksum=0; strcpy(buffer,""); CONNECT_getCdkey( fd, PersonalKey, 4096); strcat(PersonalKey, getRunningKey()); checksum += util_mkint(fd,buffer, shopnum); checksum += util_mkint(fd,buffer, vippoint); checksum += util_mkint(fd,buffer, piece); checksum += util_mkint(fd,buffer, pieces); checksum += util_mkint(fd,buffer, shopflag); checksum += util_mkstring(fd,buffer, res); util_mkint(fd,buffer, checksum); util_SendMesg(fd, LSSPROTO_SHOP_SEND, buffer); } #endif void lssproto_Upmap_send(int fd,int formmap,int tomap) { char buffer[1024 * 64]; int checksum=0; fd = getfdFromCharaIndex(fd); strcpy(buffer,""); checksum+=util_mkint(fd,buffer, formmap); checksum+=util_mkint(fd,buffer, tomap); util_mkint(fd,buffer, checksum); util_SendMesg(fd, LSSPROTO_UPMAP, buffer); } #ifdef _CAX_DENGON_GG void lssproto_DENGON_send(int fd, char *data, int color, int num) { if( CONNECT_checkfd(fd) == FALSE )return; #ifdef _DEBUG_SEND_CLI printf("[发送]lssproto_DENGON_send-data:%s,%d,%d\n", data, color, num); #endif char buffer[65500]; int checksum=0; strcpy(buffer,""); CONNECT_getCdkey( fd, PersonalKey, 4096); strcat(PersonalKey, getRunningKey()); checksum += util_mkstring(fd,buffer, data); checksum += util_mkint(fd,buffer, color); checksum += util_mkint(fd,buffer, num); util_mkint(fd,buffer, checksum); util_SendMesg(fd, LSSPROTO_DENGON_SEND, buffer); } #endif