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

📄 npc_fmwarpman.c

📁 石器时代2.0完整版源代码.已经加入新功能. 在REDHAT9下GCC3.4编译成功.
💻 C
📖 第 1 页 / 共 3 页
字号:
									{					lssproto_WN_send( fd, WINDOW_MESSAGETYPE_MESSAGE,						WINDOW_BUTTONTYPE_OK, -1, -1,						makeEscapeString("\n这场战斗你好像还没同意呢!\n下次请记得提早来跟我确认~", token, sizeof(token)));					return;				}#ifdef _FMVER21		   					if (CHAR_getInt(toindex, CHAR_FMLEADERFLAG) == FMMEMBER_APPLY)#else					if (CHAR_getInt(toindex, CHAR_FMLEADERFLAG) == 0)#endif		   					{					char	tmpbuf[256];					sprintf(tmpbuf, "\n你还没有正式加入%s家族,所以不能进场!", fmpks[fmpks_pos].guest_name);					lssproto_WN_send(fd, WINDOW_MESSAGETYPE_MESSAGE,						WINDOW_BUTTONTYPE_OK, -1, -1,						makeEscapeString(tmpbuf, token, sizeof(token)));					return;				}				//andy_add 2003/06/17				CHECK_FMPknumInFloor( meindex);				if( CHAR_getWorkInt( meindex, NPC_WORK_FMNUMII) > (fmpks[fmpks_pos].max_player - 1)){					lssproto_WN_send( fd, WINDOW_MESSAGETYPE_MESSAGE,						WINDOW_BUTTONTYPE_OK, -1, -1,						makeEscapeString("已经不能再进去罗~!\n家族进场人数已经到达设定上限了!", token, sizeof(token)));					return;				}			}			if(NPC_Util_GetStrFromStrWithDelim( npcarg, "FreeMsg", buf2, sizeof( buf2)) == NULL) return;			CONNECT_set_pass(fd, TRUE);			CONNECT_set_first_warp(fd, TRUE);			sprintf(token, buf2, fmpks[fmpks_pos].guest_name, fmpks[fmpks_pos].host_name,				tm1.tm_hour, tm1.tm_min);			CHAR_setWorkInt( toindex , CHAR_WORKFMMANINDEX, meindex );			CHAR_setWorkInt( toindex , CHAR_WORKSHOPRELEVANTTRD , -1 );		} else if ((((CHAR_getWorkInt(toindex, CHAR_WORKFMINDEXI) == fmpks[fmpks_pos + 1].host_index)			&& (strcmp(CHAR_getChar(toindex, CHAR_FMNAME), fmpks[fmpks_pos + 1].host_name) == 0))			|| ((CHAR_getWorkInt(toindex, CHAR_WORKFMINDEXI) == fmpks[fmpks_pos + 1].guest_index)			&& (strcmp(CHAR_getChar(toindex, CHAR_FMNAME), fmpks[fmpks_pos + 1].guest_name) == 0)))			&& (((fmpks[fmpks_pos + 1].flag == FMPKS_FLAG_SCHEDULED)			   || (fmpks[fmpks_pos + 1].flag == FMPKS_FLAG_MANOR_PREPARE)))				 )		{			if(NPC_Util_GetStrFromStrWithDelim( npcarg, "NextMsg", buf2, sizeof( buf2)) == NULL) return;			sprintf(token, buf2, fl, tm1.tm_hour, tm1.tm_min);			CONNECT_set_pass(fd, FALSE);			CONNECT_set_first_warp(fd, FALSE);		}		else if ((strcmp(fmpks[fmpks_pos].host_name, "") ==  0) || (strcmp(fmpks[fmpks_pos].guest_name, "") == 0))		{			if(NPC_Util_GetStrFromStrWithDelim( npcarg, "TalkMsg", buf2, sizeof( buf2)) == NULL) return;			sprintf(token, buf2);			CONNECT_set_pass(fd, FALSE);			CONNECT_set_first_warp(fd, FALSE);		}		else		{			if(NPC_Util_GetStrFromStrWithDelim( npcarg, "AskMsg", buf2, sizeof( buf2)) == NULL) return;			CONNECT_set_pass(fd, FALSE);			CONNECT_set_first_warp(fd, FALSE);			sprintf(token, buf2, fmpks[fmpks_pos].guest_name, fmpks[fmpks_pos].host_name);		}	}	else if (CHAR_getWorkInt(meindex, NPC_WORK_MODEFLAG) == NPC_STATEBUSY) // 两家族战斗中	{		if (((CHAR_getWorkInt(toindex, CHAR_WORKFMINDEXI) == fmpks[fmpks_pos].host_index)			&& (strcmp(CHAR_getChar(toindex, CHAR_FMNAME), fmpks[fmpks_pos].host_name) == 0))			|| ((CHAR_getWorkInt(toindex, CHAR_WORKFMINDEXI) == fmpks[fmpks_pos].guest_index)			&& (strcmp(CHAR_getChar(toindex, CHAR_FMNAME), fmpks[fmpks_pos].guest_name) == 0)))		{			if(NPC_Util_GetStrFromStrWithDelim( npcarg, "BusyMsg", buf2, sizeof( buf2)) == NULL){				print("\nGet BusyMsg Message Error");				return;			}			NPC_GetPKFMNum(floor,				fmpks[fmpks_pos].host_index,				fmpks[fmpks_pos].guest_index,				&num1, &num2);			sprintf(token, buf2, 				fmpks[fmpks_pos].host_name, num1,				fmpks[fmpks_pos].guest_name, num2,				tm1.tm_hour, tm1.tm_min);		} else if ((((CHAR_getWorkInt(toindex, CHAR_WORKFMINDEXI) == fmpks[fmpks_pos + 1].host_index)			&& (strcmp(CHAR_getChar(toindex, CHAR_FMNAME), fmpks[fmpks_pos + 1].host_name) == 0))			|| ((CHAR_getWorkInt(toindex, CHAR_WORKFMINDEXI) == fmpks[fmpks_pos + 1].guest_index)			&& (strcmp(CHAR_getChar(toindex, CHAR_FMNAME), fmpks[fmpks_pos + 1].guest_name) == 0)))			&& (((fmpks[fmpks_pos + 1].flag == FMPKS_FLAG_SCHEDULED)			   || (fmpks[fmpks_pos + 1].flag == FMPKS_FLAG_MANOR_PREPARE)))				 )		{			if(NPC_Util_GetStrFromStrWithDelim( npcarg, "NextMsg", buf2, sizeof( buf2)) == NULL) return;			sprintf(token, buf2, fl, tm1.tm_hour, tm1.tm_min);		} else {			if(NPC_Util_GetStrFromStrWithDelim( npcarg, "AskMsg", buf2, sizeof( buf2)) == NULL) return;			sprintf(token, buf2, fmpks[fmpks_pos].guest_name, fmpks[fmpks_pos].host_name);		}		CONNECT_set_pass(fd, FALSE);		CONNECT_set_first_warp(fd, FALSE);	}	else if (CHAR_getWorkInt(meindex, NPC_WORK_MODEFLAG) == NPC_STATEWAIT) // 两家族战斗结束	{		if (((CHAR_getWorkInt(toindex, CHAR_WORKFMINDEXI) == fmpks[fmpks_pos].host_index)			&& (strcmp(CHAR_getChar(toindex, CHAR_FMNAME), fmpks[fmpks_pos].host_name) == 0))			|| ((CHAR_getWorkInt(toindex, CHAR_WORKFMINDEXI) == fmpks[fmpks_pos].guest_index)			&& (strcmp(CHAR_getChar(toindex, CHAR_FMNAME), fmpks[fmpks_pos].guest_name) == 0)))		{			char tmpbuf[256];			if(NPC_Util_GetStrFromStrWithDelim( npcarg, "EndMsg", buf2, sizeof( buf2)) == NULL){				print("\nGet EndMsg Message Error");				return;			}			NPC_GetPKFMNum(floor,				fmpks[fmpks_pos].host_index,				fmpks[fmpks_pos].guest_index,				&num1, &num2);			if (strcmp(CHAR_getWorkChar(meindex, NPC_WORK_WINFMNAME), "") == 0)				sprintf(tmpbuf, "双方平手!");			else sprintf(tmpbuf, "%s获胜了!!", CHAR_getWorkChar(meindex, NPC_WORK_WINFMNAME));			sprintf(token, buf2,  fmpks[fmpks_pos].guest_name,				fmpks[fmpks_pos].host_name, tmpbuf);		} else if ((((CHAR_getWorkInt(toindex, CHAR_WORKFMINDEXI) == fmpks[fmpks_pos + 1].host_index)			&& (strcmp(CHAR_getChar(toindex, CHAR_FMNAME), fmpks[fmpks_pos + 1].host_name) == 0))			|| ((CHAR_getWorkInt(toindex, CHAR_WORKFMINDEXI) == fmpks[fmpks_pos + 1].guest_index)			&& (strcmp(CHAR_getChar(toindex, CHAR_FMNAME), fmpks[fmpks_pos + 1].guest_name) == 0)))			&& (((fmpks[fmpks_pos + 1].flag == FMPKS_FLAG_SCHEDULED)			   || (fmpks[fmpks_pos + 1].flag == FMPKS_FLAG_MANOR_PREPARE)))				 )		{			if(NPC_Util_GetStrFromStrWithDelim( npcarg, "NextMsg", buf2, sizeof( buf2)) == NULL) return;			sprintf(token, buf2, fl, tm1.tm_hour, tm1.tm_min);		} else {			if(NPC_Util_GetStrFromStrWithDelim( npcarg, "AskMsg", buf2, sizeof( buf2)) == NULL) return;			sprintf(token, buf2, fmpks[fmpks_pos].guest_name, fmpks[fmpks_pos].host_name);		}		CONNECT_set_pass(fd, FALSE);		CONNECT_set_first_warp(fd, FALSE);	}	/*-仇仇匹霜耨允月--*/	lssproto_WN_send( fd, WINDOW_MESSAGETYPE_MESSAGE,		WINDOW_BUTTONTYPE_YESNO,		CHAR_WINDOWTYPE_WINDOWWARPMAN_MAIN, 		CHAR_getWorkInt( meindex, CHAR_WORKOBJINDEX),		token);	}int NPC_FMFloorUse(int floor){	int	i;	int	players = 0;	int     playernum = CHAR_getPlayerMaxNum();	/* 皿伊奶乩□民尼永弁 */	for( i=0 ; i< playernum ; i++ ){		if( CHAR_getCharUse(i) == FALSE )continue;			if(CHAR_getInt(i,CHAR_FLOOR)==floor){				players++;			}	}	return players;}void NPC_GetPKFMNum(int floor, int index1, int index2, int *num1, int *num2){	int	i = 0, charindex;	*num1 = 0; *num2 = 0;	/* 皿伊奶乩□民尼永弁 */	for (i = 0 ; i < FAMILY_MAXMEMBER; i++ ){		charindex = familyMemberIndex[ index1][i];		if( CHAR_getCharUse( charindex) ){			if (CHAR_getInt(charindex, CHAR_FLOOR) == floor)				*num1 = *num1 + 1;		}else			familyMemberIndex[ index1][i] = -1;		charindex = familyMemberIndex[index2][i];		if (CHAR_getCharUse(charindex)){			if (CHAR_getInt(charindex, CHAR_FLOOR) == floor)				*num2 = *num2 + 1;		}else			familyMemberIndex[ index2][i] = -1;	}}void NPC_FMBATTLESET(int floor, int index1, int index2, int flag){	int	i = 0, charindex;	for (i = 0; i < FAMILY_MAXMEMBER; i++)	{		charindex = familyMemberIndex[index1][i];		if (CHAR_getCharUse(charindex))		{			if (CHAR_getInt(charindex ,CHAR_FLOOR) == floor)			{			        CHAR_setWorkInt( charindex, CHAR_WORKBATTLEFLAG, flag);			        if(flag==1)    				    CHAR_setFlg(charindex, CHAR_ISDUEL, 1);		        }		}		else			familyMemberIndex[index1][i] = -1;		charindex = familyMemberIndex[index2][i];		if (CHAR_getCharUse(charindex))		{			if (CHAR_getInt(charindex ,CHAR_FLOOR) == floor)			{			        CHAR_setWorkInt( charindex, CHAR_WORKBATTLEFLAG, flag);			        if(flag==1)			            CHAR_setFlg(charindex, CHAR_ISDUEL, 1);			}		}		else			familyMemberIndex[index2][i] = -1;	}}void NPC_CleanPK(int floor, int meindex){	int	i;	int     playernum = CHAR_getPlayerMaxNum();	int	fl = CHAR_getInt(meindex, CHAR_FLOOR);	int	x = CHAR_getInt(meindex, CHAR_X);	int	y = CHAR_getInt(meindex, CHAR_Y);	for( i=0 ; i< playernum ; i++ )	{	   if( CHAR_getCharUse(i) == FALSE )continue;	   	if(CHAR_getInt(i,CHAR_FLOOR)==floor)	   		CHAR_warpToSpecificPoint(i, fl, x, y);	}}void NPC_talkToFloor(int floor, int index1, int index2, char *data){	int 	i = 0, charindex;	for (i = 0; i < FAMILY_MAXMEMBER; i++)	{		charindex = familyMemberIndex[index1][i];		if (CHAR_getCharUse(charindex))		{//			print("charname:%s fmname:%s\n", //				CHAR_getChar(charindex, CHAR_NAME),//				CHAR_getChar(charindex, CHAR_FMNAME));			if (CHAR_getInt(charindex, CHAR_FLOOR) == floor)				CHAR_talkToCli(charindex, -1, data, CHAR_COLORYELLOW);		}		else			familyMemberIndex[index1][i] = -1;		charindex = familyMemberIndex[index2][i];		if (CHAR_getCharUse(charindex))		{//			print("charname:%s fmname:%s\n", //				CHAR_getChar(i, CHAR_NAME),//				CHAR_getChar(i, CHAR_FMNAME));			if (CHAR_getInt(charindex, CHAR_FLOOR) == floor)				CHAR_talkToCli(charindex, -1, data, CHAR_COLORRED);		}		else			familyMemberIndex[index2][i] = -1;	}}void NPC_WarpFamily(int floor, int index1, int index2, int fl, int x, int y){        int     i, charindex1, charindex2;        for (i = 0; i < FAMILY_MAXMEMBER; i++){                charindex1 = familyMemberIndex[index1][i];                charindex2 = familyMemberIndex[index2][i];                if (CHAR_getCharUse(charindex1))                {                   if (CHAR_getInt(charindex1, CHAR_FLOOR) == floor)                   {                   	CHAR_setWorkInt(charindex1, CHAR_WORKBATTLEFLAG, FALSE);                   	CHAR_warpToSpecificPoint(charindex1, fl, x, y);                   }                }                else                         familyMemberIndex[index1][i] = -1;                if (CHAR_getCharUse(charindex2))                {                   if (CHAR_getInt(charindex2, CHAR_FLOOR) == floor)                   {                   	CHAR_setWorkInt(charindex2, CHAR_WORKBATTLEFLAG, FALSE);                   	CHAR_warpToSpecificPoint(charindex2, fl, x, y);                   }                }                else                         familyMemberIndex[index1][i] = -1;        }}void NPC_BattleOut(int index1, int index2){        int i, charindex1, charindex2;        for (i = 0; i < FAMILY_MAXMEMBER; i++)        {                charindex1 = familyMemberIndex[index1][i];                charindex2 = familyMemberIndex[index2][i];                if(CHAR_getCharUse(charindex1)){                         if(CHAR_getWorkInt( charindex1, CHAR_WORKBATTLEMODE) != BATTLE_CHARMODE_NONE)                                 BATTLE_WatchStop(charindex1);                }                else                         familyMemberIndex[index1][i] = -1;                if(CHAR_getCharUse(charindex2)){                         if(CHAR_getWorkInt( charindex2, CHAR_WORKBATTLEMODE) != BATTLE_CHARMODE_NONE)                                 BATTLE_WatchStop(charindex2);                }                else                         familyMemberIndex[index2][i] = -1;        }   }void CheckLeavePK(int npcindex, int floor, int index1, int index2){	int 	i = 0, charindex, fl = 0, x = 0, y = 0;	fl = CHAR_getInt(npcindex, CHAR_FLOOR);	x = CHAR_getInt(npcindex, CHAR_X);	y = CHAR_getInt(npcindex, CHAR_Y);	for (i = 0; i < FAMILY_MAXMEMBER; i++)	{	   charindex = familyMemberIndex[index1][i];	   if (CHAR_getCharUse(charindex)){	      if (CHAR_getInt(charindex, CHAR_FLOOR) == floor){	         if (CHAR_getWorkInt(charindex, CHAR_WORKFMPKFLAG) < 0){	            if (CHAR_getWorkInt(charindex, CHAR_WORKPARTYMODE) != CHAR_PARTY_NONE)	            	CHAR_DischargeParty( charindex, 0);	            CHAR_setWorkInt(charindex, CHAR_WORKWARPCHECK, FALSE);	            CHAR_setWorkInt(charindex, CHAR_WORKBATTLEFLAG, FALSE);	            CHAR_warpToSpecificPoint(charindex, fl, x, y);	            CHAR_talkToCli(charindex, -1, "战败离场", CHAR_COLORRED);	         }	      }	   }else	      familyMemberIndex[index1][i] = -1;	   charindex = familyMemberIndex[index2][i];	   if (CHAR_getCharUse(charindex)){	      if (CHAR_getInt(charindex, CHAR_FLOOR) == floor){	         if (CHAR_getWorkInt(charindex, CHAR_WORKFMPKFLAG) < 0){	            if (CHAR_getWorkInt(charindex, CHAR_WORKPARTYMODE) != CHAR_PARTY_NONE)	            	CHAR_DischargeParty(charindex, 0);	            CHAR_setWorkInt(charindex, CHAR_WORKWARPCHECK, FALSE);	            CHAR_setWorkInt(charindex, CHAR_WORKBATTLEFLAG, FALSE);	            CHAR_warpToSpecificPoint(charindex, fl, x, y);	            CHAR_talkToCli(charindex, -1, "战败离场", CHAR_COLORRED);	         }	      }	   }else	      familyMemberIndex[index2][i] = -1;	}}

⌨️ 快捷键说明

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