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

📄 npc_freepetskillshop.c

📁 石器时代2.0完整版源代码.已经加入新功能. 在REDHAT9下GCC3.4编译成功.
💻 C
📖 第 1 页 / 共 2 页
字号:
	for( i=0; i<arraysizeof( Code_skill); i++)	{		if( Code_skill[i].PetId == petID )	{			break;		}	}	//找不到这只宠物	if( i == arraysizeof( Code_skill) )	{		{			char buff1[256];			sprintf( buff1, "%s不能学特殊技能!!", CHAR_getChar( petindex, CHAR_NAME));			CHAR_talkToCli( toindex, -1, buff1, CHAR_COLORYELLOW);		}		return FALSE;	}	if( strstr( Code_skill[i].Code, SCode ) != NULL )	{		if( NPC_SkillShopPetCheck( toindex, petindex, skillID) == FALSE )	{			char buff1[256];			sprintf( buff1, "%s现在还不能学%s!", CHAR_getChar( petindex, CHAR_NAME),									PETSKILL_getChar( skillindex, PETSKILL_NAME) );			CHAR_talkToCli( toindex, -1, buff1, CHAR_COLORYELLOW);			return  FALSE;		}		return TRUE;	}else	{			char buff1[256];			sprintf( buff1, "%s不能学%s!!", CHAR_getChar( petindex, CHAR_NAME),						PETSKILL_getChar( skillindex, PETSKILL_NAME) );			CHAR_talkToCli( toindex, -1, buff1, CHAR_COLORYELLOW);	}	return FALSE;}BOOL NPC_FreePetSkillMakeStr(int meindex,int toindex,int select){	char argstr[NPC_UTIL_GETARGSTR_BUFSIZE];	char msg[256];	double rate=1.0;	int i=0;	char token[NPC_UTIL_GETARGSTR_LINEMAX];	int fd = getfdFromCharaIndex( toindex);	if(select==0){		sprintf(token,"0|0");		lssproto_WN_send( fd, WINDOW_MESSAGETYPE_PETSKILLSHOP, 			WINDOW_BUTTONTYPE_NONE, 			CHAR_WINDOWTYPE_WINDOWPETSKILLSHOP,			CHAR_getWorkInt( meindex, CHAR_WORKOBJINDEX),			token);	}	if(NPC_Util_GetArgStr( meindex, argstr, sizeof(argstr))==NULL){		print("GetArgStrErr");		return FALSE;	}	if( NPC_Util_GetStrFromStrWithDelim( argstr, "main_msg", msg, sizeof( msg)) == NULL){		print("\n CAN'T FIND main_msg !!");		return FALSE;	}	sprintf(token,"1|%s|%s", CHAR_getChar(meindex,CHAR_NAME), msg);	if( NPC_Util_GetStrFromStrWithDelim( argstr, "skill_rate", msg, sizeof( msg)) != NULL){		rate=atof(msg);	}	if( NPC_Util_GetStrFromStrWithDelim( argstr, "pet_skill", msg, sizeof( msg)) != NULL)	{		int skillarray;		int skillID;		int cost;		char token2[265];		char buf[64];		i=1;	    while( getStringFromIndexWithDelim(msg,",",i,buf,sizeof(buf)) !=FALSE )	{			i++;			skillID=atoi(buf);			skillarray = PETSKILL_getPetskillArray( skillID);			if( PETSKILL_CHECKINDEX( skillarray) == FALSE )				continue;			if( PETSKILL_getInt( skillarray, PETSKILL_ILLEGAL) == 1) continue;			cost = PETSKILL_getInt(skillarray,PETSKILL_COST);			cost = (int)cost*rate;			sprintf(token2,"|%s|%d|%s",	PETSKILL_getChar(skillarray, PETSKILL_NAME), 															cost, PETSKILL_getChar(skillarray, PETSKILL_COMMENT));			strcat(token,token2);			}		}		CHAR_setWorkInt( toindex, CHAR_WORKSHOPRELEVANT, 3);		lssproto_WN_send( fd, WINDOW_MESSAGETYPE_PETSKILLSHOP, 				WINDOW_BUTTONTYPE_NONE, 				SELECTSKILL_TEACH,				CHAR_getWorkInt( meindex, CHAR_WORKOBJINDEX),				token);	return TRUE;}BOOL NPC_SkillShopItemCheck(int meindex,int talker,int itemNo, int cou){	int i;	int itemindex=-1;	int num=0;	for( i=CHAR_STARTITEMARRAY;i<CHAR_MAXITEMHAVE;i++ ){		itemindex = CHAR_getItemIndex( talker , i );		if( ITEM_CHECKINDEX( itemindex) )	{			if( itemNo == ITEM_getInt(itemindex ,ITEM_ID ) )	{				num++;			}		}		if( num >= cou )			return TRUE;	}	return FALSE;}BOOL NPC_SkillShopDelItems(int meindex,int talker, char *buf){	char buf1[256];	char item[256], cout[256];	int i=1;	BOOL Evflg=TRUE;	while( getStringFromIndexWithDelim( buf, ",", i,buf1, sizeof( buf1)) != FALSE )	{		i++;		if( strstr( buf1, "*") != NULL )	{			getStringFromIndexWithDelim( buf1, "*", 1, item, sizeof( item));			getStringFromIndexWithDelim( buf1, "*", 2, cout, sizeof( cout));		}else	{			strcpy( item, buf1);			strcpy( cout, "1");		}		if( NPC_SkillShopItemCheck( meindex, talker, atoi( item), atoi( cout)) == FALSE )	{			Evflg=FALSE;			break;		}		if( Evflg == FALSE )			break;	}	if( Evflg == FALSE )		return FALSE;	if( NPC_ActionDelItem( talker, buf) == TRUE )	{		return TRUE;	}	return FALSE;}BOOL NPC_SkillShopPetCheck( int toindex, int petindex, int skillID ){	char Free[256];	int i;	char data[256], msg[256];	int skillindex =  PETSKILL_getPetskillArray( skillID );	memset( Free, 0, sizeof( Free));	sprintf( Free, "%s", PETSKILL_getChar( skillindex, PETSKILL_FREE));	if( NPC_Util_GetStrFromStrWithDelim( Free, "FREE", data, sizeof( data)) != NULL ) {		BOOL EvFlg = TRUE;		i=1;		while( getStringFromIndexWithDelim( data, "|", i, msg, sizeof( msg)) != FALSE )	{			i++;			if( strstr( msg, "LV") != NULL )	{				char LvStr[256];				int LV=0;				if( strstr( msg, ">" ) != NULL )	{					if( getStringFromIndexWithDelim( msg, ">", 2, LvStr, sizeof( LvStr)) != FALSE )	{						LV = atoi( LvStr);						if( CHAR_getInt( petindex, CHAR_LV) <= LV )							EvFlg = FALSE;					}				}else if( strstr( msg, "<")) {					if( getStringFromIndexWithDelim( msg, "<", 2, LvStr, sizeof( LvStr)) != FALSE )	{						LV = atoi( LvStr);						if( CHAR_getInt( petindex, CHAR_LV) >= LV )							EvFlg = FALSE;					}				}			}else if( strstr( msg, "SK") != NULL )	{				int j=0, PskId=-1, ID;				char strSK[256];				int petskillindex;				getStringFromIndexWithDelim( msg, "=", 2, strSK, sizeof( strSK) );				ID = atoi( strSK);				for( j=0; j < CHAR_MAXPETSKILLHAVE; j++)	{					PskId = CHAR_getPetSkill( petindex, j);					petskillindex =  PETSKILL_getPetskillArray( PskId );					if( !PETSKILL_CHECKINDEX( petskillindex))						continue;					if( ID == PskId )	{						if( strstr( msg, "!=") !=NULL )							EvFlg = FALSE;						break;					}				}				if( j == CHAR_MAXPETSKILLHAVE )	{					EvFlg = FALSE;					break;				}			}			if( EvFlg == FALSE )				break;		}		if( EvFlg == FALSE )	{			return FALSE;		}else	{			return TRUE;		}	}	return TRUE;}BOOL NPC_SkillShopWarp( int meindex, int talkindex){	char npcarg[NPC_UTIL_GETARGSTR_BUFSIZE];	char data[1024], buf1[256], buf2[256];	int i=1, j=1;	BOOL EvFlg=FALSE;	struct	{		int FLOOR;		int X;		int Y;	}Points[MAXNPCPOINT];	if(NPC_Util_GetArgStr( meindex, npcarg, sizeof(npcarg))==NULL){		print("GetArgStrErr");		return FALSE;	}		for( i=0;i<MAXNPCPOINT;i++)	{		Points[i].FLOOR = -1;		Points[i].X = -1;		Points[i].Y = -1;	}	//WARP	//NPC_POINT	if( NPC_Util_GetStrFromStrWithDelim( npcarg, "NPC_POINT", data, sizeof( data)) != NULL ) {		int where=0;		i=1;		j=0;		while( getStringFromIndexWithDelim( data, ";", i, buf1, sizeof( buf1)) != FALSE )	{			i++;			getStringFromIndexWithDelim( buf1, ",", 1, buf2, sizeof( buf2));			Points[j].FLOOR = atoi( buf2);			getStringFromIndexWithDelim( buf1, ",", 2, buf2, sizeof( buf2));			Points[j].X = atoi( buf2);			getStringFromIndexWithDelim( buf1, ",", 3, buf2, sizeof( buf2));			Points[j].Y = atoi( buf2);			j++;			if( j >= MAXNPCPOINT )				break;		}		where = RAND( 0, i-1);		CHAR_warpToSpecificPoint( meindex, Points[where].FLOOR,	Points[where].X, Points[where].Y);		EvFlg = TRUE;	}	if( NPC_Util_GetStrFromStrWithDelim( npcarg, "WARP", data, sizeof( data)) != NULL ) {		int P_Floor,P_X,P_Y;		getStringFromIndexWithDelim( data, ",", 1, buf2, sizeof( buf2));		P_Floor = atoi( buf2);		getStringFromIndexWithDelim( data, ",", 2, buf2, sizeof( buf2));		P_X = atoi( buf2);		getStringFromIndexWithDelim( data, ",", 3, buf2, sizeof( buf2));		P_Y = atoi( buf2);		CHAR_warpToSpecificPoint( talkindex, P_Floor, P_X, P_Y);		EvFlg = TRUE;	}	return EvFlg;}#endif

⌨️ 快捷键说明

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