⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 callfromcli.c

📁 石器时代8.0服务端完整源代码。可以直接编译
💻 C
📖 第 1 页 / 共 5 页
字号:
	if((CHAR_getInt(fd_charaindex,CHAR_FLOOR) >= 8200 && CHAR_getInt(fd_charaindex,CHAR_FLOOR) <= 8213) ||		 (CHAR_getInt(fd_charaindex,CHAR_FLOOR) >= 30017 && CHAR_getInt(fd_charaindex,CHAR_FLOOR) <= 30021)		){		return ; 	}#endif	if( flg == TRUE ) {#ifdef _ESCAPE_RESET // 使用恶宝逃跑後x分钟内不可求救		if( getStayEncount( fd ) ) {			//print(" 恶宝中组队 ");			if( time(NULL) - CHAR_getWorkInt( fd_charaindex, CHAR_WORKLASTESCAPE) < 5*60 ) {				lssproto_HL_send( fd, FALSE);				//print(" 恶宝逃跑後组队 ");				CHAR_talkToCli( fd_charaindex, -1, "暂时不可以求救。", CHAR_COLORYELLOW);				return;			}		}#endif		/* 云踞仃乒□玉及白仿弘  化月 */		BattleArray[CHAR_getWorkInt( fd_charaindex,			CHAR_WORKBATTLEINDEX)].Side[			CHAR_getWorkInt( fd_charaindex,			CHAR_WORKBATTLESIDE)].flg |= BSIDE_FLG_HELP_OK;		snprintf( msgbuf, sizeof( msgbuf),				  "%s 在求救!",				  CHAR_getChar( fd_charaindex, CHAR_NAME));	}	else {		/* 云踞仃乒□玉及白仿弘  午允 */		BattleArray[CHAR_getWorkInt( fd_charaindex,			CHAR_WORKBATTLEINDEX)].Side[			CHAR_getWorkInt( fd_charaindex,			CHAR_WORKBATTLESIDE)].flg &= ~BSIDE_FLG_HELP_OK;		snprintf( msgbuf, sizeof( msgbuf),				  "%s 决定拒绝帮助。",				  CHAR_getChar( fd_charaindex, CHAR_NAME));	}	/* 云踞仃橇谪互  歹匀凶仪毛爵  醮棉卞(愤坌殖戈)霜耨 */	for( i = 0; i < 5; i ++ ) {		int toindex = BattleArray[CHAR_getWorkInt(					    fd_charaindex, CHAR_WORKBATTLEINDEX)].Side[						CHAR_getWorkInt( fd_charaindex,						CHAR_WORKBATTLESIDE)].Entry[i].charaindex;		if( CHAR_CHECKINDEX( toindex)) {			int tofd = getfdFromCharaIndex( toindex );			if( tofd != -1 ) {				lssproto_HL_send( tofd, flg);			}			/* 丢永本□斥霜耨 */			CHAR_talkToCli( toindex, -1, msgbuf, CHAR_COLORYELLOW);			/* 云踞仃CA  憎]引凶反壅允 */			CHAR_sendBattleEffect( toindex, ON);		}	}}/*------------------------------------------------------------ * proc 毛仁木午蜕歹木凶[ ------------------------------------------------------------*/void lssproto_ProcGet_recv( int fd ){	outputNetProcLog( fd, 1);}/*------------------------------------------------------------ * 皿伊奶乩□醒毛仁木午蜕歹木凶[ ------------------------------------------------------------*/void lssproto_PlayerNumGet_recv( int fd ){	int		i;	int		clicnt  =0;	int		playercnt = 0;    for( i = 0; i < ConnectLen; i ++ ) {        if( CONNECT_getUse_debug(i,1017) ){            if( CONNECT_getCtype(i) == CLI) {            	clicnt ++;            	if( CONNECT_getCharaindex(i) >= 0 ) playercnt++;            }		}	}	lssproto_PlayerNumGet_send( fd, clicnt, playercnt);}/*------------------------------------------------------------ * 棋爵邰菲  戏[ ------------------------------------------------------------*/void lssproto_LB_recv( int fd,int x,int y ){    int fd_charaindex;    CHECKFDANDTIME;    fd_charaindex = CONNECT_getCharaindex( fd );    {//ttom avoid warp at will       int ix,iy;       ix=CHAR_getInt(fd_charaindex, CHAR_X);       iy=CHAR_getInt(fd_charaindex, CHAR_Y);       if( (ix!=x)||(iy!=y)){         //print("\n<LB>--Error!!!!");         //print("\n<LB>origion x=%d,y=%d",ix,iy);         //print("\n<LB>modify  X=%d,Y=%d",x,y);         x=ix;         y=iy;       }    }       CHAR_setMyPosition( fd_charaindex, x,y,TRUE);	/* 杀梁匹五月井民尼永弁仄化杀梁允月 */	BATTLE_WatchTry( fd_charaindex );}/*------------------------------------------------------------ * 扑乓永玄母它件质  钒铵 ------------------------------------------------------------*/void lssproto_Shutdown_recv( int fd,char* passwd,int min ){	char	buff[256];	if( strcmp( passwd, "hogehoge") == 0 ) {	    int     i;	    int     playernum = CHAR_getPlayerMaxNum();		snprintf( buff, sizeof( buff),"极度的系统公告。");	    for( i = 0 ; i < playernum ; i++) {	        if( CHAR_getCharUse(i) != FALSE ) {				CHAR_talkToCli( i, -1, buff, CHAR_COLORYELLOW);			}		}		SERVSTATE_setLimittime(min);		SERVSTATE_setShutdown( NowTime.tv_sec );		SERVSTATE_setDsptime( 0 );	}}void lssproto_PMSG_recv( int fd,int index,int petindex,int itemindex,						char* message,int color ){	// CoolFish: Prevent Trade Cheat 2001/4/18	int fd_charaindex;	fd_charaindex = CONNECT_getCharaindex(fd);	if (CHAR_getWorkInt(fd_charaindex, CHAR_WORKTRADEMODE) != CHAR_TRADE_FREE)	    	return;	PETMAIL_sendPetMail( CONNECT_getCharaindex( fd ),							index, petindex, itemindex, message, color);}/*------------------------------------------------------------ * 矢永玄  银迕熬耨 ------------------------------------------------------------*/void lssproto_PS_recv( int fd, int havepetindex, int havepetskill, int toindex, char* data ){    int to_charaindex = Callfromcli_Util_getTargetCharaindex( fd, toindex);	int charaindex = CONNECT_getCharaindex( fd );	int	petindex;	BOOL	ret;	petindex = CHAR_getCharPet( charaindex, havepetindex);	if( !CHAR_CHECKINDEX( petindex)) return;		ret = PETSKILL_Use( petindex, havepetskill, to_charaindex, data );	lssproto_PS_send( fd, ret, havepetindex, havepetskill, toindex);}/*------------------------------------------------------------ * 甄  毛本永玄允月 ------------------------------------------------------------*/void lssproto_SP_recv( int fd,int x,int y, int dir  ){    int fd_charaindex;    fd_charaindex = CONNECT_getCharaindex( fd );    {//ttom avoid the warp at will       int i_x,i_y;       i_x=CHAR_getInt(fd_charaindex, CHAR_X);       i_y=CHAR_getInt(fd_charaindex, CHAR_Y);                                if((i_x!=x)||(i_y!=y)){           x=i_x;           y=i_y;       }    }//ttom                                                                                           CHAR_setMyPosition_main( fd_charaindex, x,y,dir,TRUE);}/*------------------------------------------------------------ * CoolFish: Trade Command 2001/4/18 ------------------------------------------------------------*/void lssproto_TD_recv( int fd, char* message ){      int fd_charaindex;      CHECKFDANDTIME;                fd_charaindex = CONNECT_getCharaindex( fd );      print(" MAP_TRADEPICKUP_check0 ");      CHAR_Trade(fd, fd_charaindex, message);}/*------------------------------------------------------------ * CoolFish: Family Command 2001/5/24 ------------------------------------------------------------*/void lssproto_FM_recv( int fd, char* message ){      int fd_charaindex;      struct timeval recvtime;      CHECKFDANDTIME;            // add code by shan      CONNECT_getLastrecvtime( fd, &recvtime);      if( time_diff( NowTime, recvtime) < 0.5 ){          return;      }      CONNECT_setLastrecvtime(fd, &NowTime);      fd_charaindex = CONNECT_getCharaindex( fd );            if( checkStringErr( message ) )	return;            CHAR_Family(fd, fd_charaindex, message);      }// shan 2002/01/10void lssproto_PETST_recv( int fd,  int nPet, int sPet ){      int charaindex;	  int i, nums=0;      CHECKFDANDTIME;            charaindex = CONNECT_getCharaindex( fd );            	  if (!CHAR_CHECKINDEX( charaindex ) )	return;	  if( CHAR_getWorkInt( charaindex, CHAR_WORKBATTLEMODE)		!= BATTLE_CHARMODE_NONE) return ;	  	  for( i=0; i<5; i++)	{		if( CHAR_getWorkInt( charaindex, CHAR_WORK_PET0_STAT+i) == TRUE )			nums++;	  }	  if( nums <= 3 )		CHAR_setWorkInt( charaindex, CHAR_WORK_PET0_STAT+nPet, sPet);	     }void lssproto_BM_recv(int fd, int iindex){#ifdef _BLACK_MARKET	int charaindex;          CHECKFDANDTIME;          charaindex = CONNECT_getCharaindex( fd);            	if(!CHAR_CHECKINDEX( charaindex)) return;	if( CHAR_getWorkInt( charaindex, CHAR_WORKBATTLEMODE)		!= BATTLE_CHARMODE_NONE) return ;		ITEM_BM_Exchange( charaindex, iindex);#endif}#ifdef _MIND_ICONvoid lssproto_MA_recv(int fd, int x, int y, int nMind){	int charaindex;          CHECKFDANDTIME;    	charaindex = CONNECT_getCharaindex( fd);            	if(!CHAR_CHECKINDEX( charaindex)) return;		if( CHAR_getWorkInt( charaindex, CHAR_WORKBATTLEMODE) != BATTLE_CHARMODE_NONE) return ;				{       int i_x, i_y;       i_x = CHAR_getInt( charaindex, CHAR_X);       i_y = CHAR_getInt( charaindex, CHAR_Y);                                if((i_x!=x)||(i_y!=y)){                x = i_x;           y = i_y;       }    }		//print("\nshan------------------>mind action->%d x->%d y->%d", nMind, x, y);	CHAR_setMyPosition( charaindex, x, y, TRUE);	CHAR_setWorkInt( charaindex, CHAR_MIND_NUM, nMind);	CHAR_sendMindEffect( charaindex, CHAR_getWorkInt( charaindex, CHAR_MIND_NUM));		if(CHAR_getWorkInt( charaindex, CHAR_MIND_NUM) != 101290 &&	   CHAR_getWorkInt( charaindex, CHAR_MIND_NUM) != 101294   &&	   CHAR_getWorkInt( charaindex, CHAR_MIND_NUM) != 101288 )	CHAR_setWorkInt( charaindex, CHAR_MIND_NUM, 0);	//print("\nshan------------------>end");		return;}#endifBOOL checkStringErr( char *checkstring ){        int i,ach;        for (i=0,ach=0;i<strlen(checkstring);i++) {        	if ((unsigned char)checkstring[i]==0xff) { ach=1; break; } // Force no 0xff                if ((unsigned char)checkstring[i]==0x80) { ach=1; break; } // Force no 0x80                if ((unsigned char)checkstring[i]==0x7f) { ach=1; break; } // Force no 0x7f                if ((unsigned char)checkstring[i]<=0x20) { ach=1; break; } // Force greater than 0x20                if (ach) {                	if ((((unsigned char)checkstring[i]>=0x40)&&((unsigned char)checkstring[i]<=0x7e))||                        (((unsigned char)checkstring[i]>=0xa1)&&((unsigned char)checkstring[i]<=0xfe))) ach=0;                } else {                	if (((unsigned char)checkstring[i]>=0xa1)&&((unsigned char)checkstring[i]<=0xfe)) ach=1;                }	}	if (ach)	{		print(" StringDog! ");		return	TRUE;	}		return FALSE;	}#ifdef _FIX_DEL_MAP           // WON ADD 玩家抽地图送监狱void lssproto_DM_recv( int fd ){	 int index;	 index = CONNECT_getCharaindex( fd ); 	 if( !CHAR_CHECKINDEX( index)) return;	 CHAR_warpToSpecificPoint(index,117,225,13);}#endif#ifdef _CHECK_GAMESPEEDvoid lssproto_CS_recv( int fd ){	 int index, Ttime, NowTimes;	 index = CONNECT_getCharaindex( fd ); 	 if( !CHAR_CHECKINDEX( index)) return;	 NowTimes = (int)time(NULL);	 Ttime = getGameSpeedTime( fd);	 setGameSpeedTime( fd, NowTimes);	 if( CHAR_getWorkInt( index, CHAR_WORKFLG) & WORKFLG_DEBUGMODE )	{		 }else if( (NowTimes-Ttime) < 20 ){		lssproto_CS_send( fd, 20 - (NowTimes-Ttime));	 }}#endif#ifdef _TEAM_KICKPARTYvoid lssproto_KTEAM_recv( int fd, int si){	int charaindex=-1, pindex;	if( si < 0 || si > 5 ) return;	charaindex = CONNECT_getCharaindex( fd );	if( !CHAR_CHECKINDEX( charaindex) ) return;	if( CHAR_getWorkInt( charaindex, CHAR_WORKPARTYMODE) != CHAR_PARTY_LEADER ) return;	pindex = CHAR_getWorkInt( charaindex, si + CHAR_WORKPARTYINDEX1);	if( !CHAR_CHECKINDEX( pindex) ) return;	if( CHAR_getWorkInt( pindex, CHAR_WORKPARTYMODE) == CHAR_PARTY_LEADER ) return;	if( CHAR_DischargeParty( pindex, 0) == FALSE ){		CHAR_talkToCli( charaindex, -1, "踢除失败!", CHAR_COLORYELLOW);	}else{		char buf1[256];		sprintf( buf1, "队长[%s]将你踢除!", CHAR_getUseName( charaindex ));		CHAR_talkToCli( pindex, -1, buf1, CHAR_COLORYELLOW);		sprintf( buf1, "将[%s]踢除出团队!", CHAR_getUseName( pindex ));		CHAR_talkToCli( charaindex, -1, buf1, CHAR_COLORYELLOW);	}}#endif#ifdef _CHATROOMPROTOCOL			// (不可开) Syu ADD 聊天室频道void lssproto_CHATROOM_recv (int fd , char *data){	ChatRoom_recvall ( fd , data ) ; }#endif#ifdef _NEWREQUESTPROTOCOL			// (不可开) Syu ADD 新增Protocol要求细项void lssproto_RESIST_recv (int fd ){	int charindex = -1 ;	char token[256];	charindex = CONNECT_getCharaindex( fd );	if( !CHAR_CHECKINDEX( charindex) ) return;	sprintf ( token , "%d|%d|%d|%d|%d|%d|%d|%d" , 		CHAR_getInt( charindex, CHAR_EARTH_RESIST ) ,		CHAR_getInt( charindex, CHAR_WATER_RESIST ) ,		CHAR_getInt( charindex, CHAR_FIRE_RESIST ) ,		CHAR_getInt( charindex, CHAR_WIND_RESIST ) ,				CHAR_getInt( charindex, CHAR_EARTH_EXP ) ,		CHAR_getInt( charindex, CHAR_WATER_EXP ) ,		CHAR_getInt( charindex, CHAR_FIRE_EXP ) ,		CHAR_getInt( charindex, CHAR_WIND_EXP ) 		);	lssproto_RESIST_send ( fd , token ) ; }#endif#ifdef _OUTOFBATTLESKILL			// (不可开) Syu ADD 非战斗时技能Protocolvoid lssproto_BATTLESKILL_recv (int fd, int iNum){	int charaindex = CONNECT_getCharaindex( fd );#ifndef _PROSKILL_OPTIMUM	int skillindex=-1,char_pskill=-1,profession_skill=-1;#endif	if( !CHAR_CHECKINDEX( charaindex) ) return;	if( CHAR_getWorkInt( charaindex, CHAR_WORKBATTLEMODE) != BATTLE_CHARMODE_NONE ) return;#ifndef _PROSKILL_OPTIMUM	// Robin fix cancel 此处略过职业检查, 改在 PROFESSION_SKILL_Use 中检查	// 人物的职业	char_pskill = CHAR_getInt( charaindex, PROFESSION_CLASS );		skillindex = PROFESSION_SKILL_GetA

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -