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

📄 npc_newnpcman.c

📁 石器时代2.0完整版源代码.已经加入新功能. 在REDHAT9下GCC3.4编译成功.
💻 C
📖 第 1 页 / 共 3 页
字号:
		break;	case NPC_PROGRAMEGINEER_SELECT2:		NPC_NewNpcMan_selectWindow( meindex, talkerindex, WINDOW_SELECT2, atoi( data));		break;	case NPC_PROGRAMEGINEER_SELECT3:		NPC_NewNpcMan_selectWindow( meindex, talkerindex, WINDOW_SELECT3, atoi( data));		break;	case NPC_PROGRAMEGINEER_SELECTLOSTPET:		NPC_NewNpcMan_selectWindow( meindex, talkerindex, WINDOW_SELECTLOSTPET, atoi( data));		break;	case NPC_PROGRAMEGINEER_DEFIND:		NPC_NewNpcMan_selectWindow( meindex, talkerindex, WINDOW_DEFIND, atoi( data));		break;	case NPC_PROGRAMEGINEER_END:		NPC_NewNpcMan_selectWindow( meindex, talkerindex, WINDOW_END, atoi( data));		break;	}}BOOL CHECK_ITEMEQUIT( int toindex){	int i, itemindex;	char token[256];	for (i = CHAR_STARTITEMARRAY; i < CHAR_MAXITEMHAVE; i ++) {		itemindex = CHAR_getItemIndex( toindex, i);		if( ITEM_getInt( itemindex, ITEM_ID) == 19646 ){			CHAR_DelItem( toindex, i);			itemindex = -1;			itemindex = ITEM_makeItemAndRegist( 1292);			if( !ITEM_CHECKINDEX( itemindex) ){			}else{				int ret = CHAR_addItemSpecificItemIndex( toindex, itemindex);				if( ret < 0 || ret >= CHAR_MAXITEMHAVE ) {					ITEM_endExistItemsOne( itemindex);					continue;				}				sprintf( token,"拿到%s", ITEM_getChar( itemindex, ITEM_NAME));				CHAR_talkToCli( toindex, -1, token, CHAR_COLORYELLOW );				CHAR_sendItemDataOne( toindex, ret);				continue;			}		}		if( ITEM_getInt( itemindex, ITEM_ID) == 1292 &&			ITEM_getInt( itemindex, ITEM_MAXDAMAGECRUSHE) > 0 ){			ITEM_setInt( itemindex, ITEM_MAXDAMAGECRUSHE, 0);			ITEM_setInt( itemindex, ITEM_DAMAGECRUSHE, 0);			sprintf(token,"修正%s损坏度", ITEM_getChar( itemindex, ITEM_NAME));			CHAR_sendItemDataOne( toindex, i);			CHAR_talkToCli( toindex, -1, token, CHAR_COLORYELLOW);		}	}		// 寄放店	for (i = 0; i < CHAR_MAXPOOLITEMHAVE; i++) {		if( ITEM_getInt( itemindex, ITEM_ID) == 1292 &&			ITEM_getInt( itemindex, ITEM_MAXDAMAGECRUSHE) > 0 ){			ITEM_setInt( itemindex, ITEM_MAXDAMAGECRUSHE, 0);			ITEM_setInt( itemindex, ITEM_DAMAGECRUSHE, 0);			sprintf(token,"修正寄放店中%s损坏度", ITEM_getChar( itemindex, ITEM_NAME));			CHAR_talkToCli( toindex, -1, token, CHAR_COLORYELLOW);		}	}	return TRUE;}BOOL CHECK_PETBBI( int toindex){	int i, petindex, PetID;	BOOL Finds = FALSE;	char token[256];	for( i=0; i < CHAR_MAXPETHAVE; i++)	{		int parry, array, PetBBI;		petindex = CHAR_getCharPet( toindex, i);		if( !CHAR_CHECKINDEX( petindex) ) continue;		PetID = CHAR_getInt( petindex, CHAR_PETID);		array = ENEMY_getEnemyArrayFromTempNo( PetID);		if( !ENEMY_CHECKINDEX( array)) continue;		parry = ENEMYTEMP_getEnemyTempArray( array);		PetBBI = ENEMYTEMP_getInt( parry, E_T_IMGNUMBER);		if( CHAR_getInt( petindex, CHAR_BASEBASEIMAGENUMBER) != PetBBI ||			CHAR_getInt( petindex, CHAR_BASEIMAGENUMBER) != PetBBI ){			CHAR_setInt( petindex, CHAR_BASEBASEIMAGENUMBER, PetBBI);			CHAR_setInt( petindex, CHAR_BASEIMAGENUMBER, PetBBI);			sprintf( token, "修正%s图号", CHAR_getUseName( petindex));			CHAR_talkToCli( toindex, -1, token, CHAR_COLORYELLOW);			Finds = TRUE;		}		CHAR_setInt( petindex, CHAR_EARTHAT, ENEMYTEMP_getInt( parry, E_T_EARTHAT) );		CHAR_setInt( petindex, CHAR_WATERAT, ENEMYTEMP_getInt( parry, E_T_WATERAT) );		CHAR_setInt( petindex, CHAR_FIREAT, ENEMYTEMP_getInt( parry, E_T_FIREAT) );		CHAR_setInt( petindex, CHAR_WINDAT, ENEMYTEMP_getInt( parry, E_T_WINDAT) );	}	for( i=0; i<CHAR_MAXPETHAVE; i++){		char szPet[128];		petindex = CHAR_getCharPet(toindex, i);		if( !CHAR_CHECKINDEX( petindex) )continue;		CHAR_complianceParameter( petindex );		snprintf( szPet, sizeof( szPet ), "K%d", i);		CHAR_sendStatusString( toindex, szPet );		snprintf( szPet, sizeof( szPet ), "W%d", i);		CHAR_sendStatusString( toindex, szPet );	}	if( Finds == FALSE ){		sprintf( token, "没有错误图号的宠物");		CHAR_talkToCli( toindex, -1, token, CHAR_COLORYELLOW);	}	return Finds;}void NPC_reCheckMyPetUnusual( int meindex, int toindex)//检查宠物异常{	char *buf=NULL;	int petindex,i;	for( i=0; i<CHAR_MAXPETHAVE; i++)	{		petindex = CHAR_getCharPet( toindex, i);		if( !CHAR_CHECKINDEX( petindex) )continue;		if( (buf=CHAR_getChar( petindex, CHAR_NAME)) == "\0" ||			strlen( buf) <= 0 ){			char *PetNAME;			int array, parry, petID;			petID = CHAR_getInt( petindex, CHAR_PETID);			array = ENEMY_getEnemyArrayFromTempNo( petID);			if( !ENEMY_CHECKINDEX( array)){				print("ANDY Pet(ID:%d) err Array:%d (file:%s %d) !! \n",					petID, array, __FILE__, __LINE__ );				continue;			}			parry = ENEMYTEMP_getEnemyTempArray( array);			if( (PetNAME = ENEMYTEMP_getChar( parry, E_T_NAME)) == "\0" ||				strlen( PetNAME) <= 0 ){				print("ANDY Pet(ID:%d) Array:%d err Name:%s (file:%s %d) !! \n",					petID, array, (PetNAME==NULL)?"NULL":PetNAME, __FILE__, __LINE__ );				continue;			}			CHAR_setChar( petindex, CHAR_NAME, PetNAME);			CHAR_setChar( petindex, CHAR_USERPETNAME , "");			//andy_log			print("ANDY Pet(ID:%d) Name -> %s (%s:%s)(file:%s %d) !! \n",				petID, PetNAME, CHAR_getUseName( toindex),				CHAR_getChar( toindex, CHAR_CDKEY), __FILE__, __LINE__ );		}	}	for( i=0; i<CHAR_MAXPETHAVE; i++){		char szPet[256];		petindex = CHAR_getCharPet(toindex, i);		if( !CHAR_CHECKINDEX( petindex) )continue;		CHAR_complianceParameter( petindex );		snprintf( szPet, sizeof( szPet ), "K%d", i);		CHAR_sendStatusString( toindex, szPet );		snprintf( szPet, sizeof( szPet ), "W%d", i);		CHAR_sendStatusString( toindex, szPet );	}}//更换宠物BOOL CHECK_ReplacePET( int toindex){	int i, petindex;	BOOL Finds = FALSE;	char szPet[256];	if( CHAR_getWorkInt( toindex, CHAR_WORKBATTLEMODE) != BATTLE_CHARMODE_NONE ) return FALSE;	for( i=0; i<CHAR_MAXPETHAVE; i++)	{		int array, ret;		petindex = CHAR_getCharPet( toindex, i);		if( !CHAR_CHECKINDEX( petindex) )continue;		if( CHAR_getInt( petindex, CHAR_PETID) != 1133 ) continue;		if( CHAR_getInt( petindex, CHAR_SLOT) != 7 ) continue;		if( CHAR_getInt( petindex, CHAR_TRANSMIGRATION ) > 0 )continue;		if( i == CHAR_getInt( toindex, CHAR_DEFAULTPET) )	{			int fd = getfdFromCharaIndex( toindex);			CHAR_setInt( toindex, CHAR_DEFAULTPET, -1);			lssproto_KS_send( fd, -1, TRUE);		}		snprintf( szPet,sizeof( szPet), "交出%s。", CHAR_getUseName( petindex) );		CHAR_talkToCli( toindex, -1, szPet, CHAR_COLORYELLOW);		LogPet(			CHAR_getChar( toindex, CHAR_NAME ),			CHAR_getChar( toindex, CHAR_CDKEY ),			CHAR_getChar( petindex, CHAR_NAME),			CHAR_getInt( petindex, CHAR_LV),			"TenseiDel",			CHAR_getInt( toindex,CHAR_FLOOR),			CHAR_getInt( toindex,CHAR_X ),			CHAR_getInt( toindex,CHAR_Y ),			CHAR_getChar( petindex, CHAR_UNIQUECODE)		);		Finds = TRUE;		CHAR_setCharPet( toindex, i, -1);		CHAR_endCharOneArray( petindex );		array = ENEMY_getEnemyArrayFromTempNo( 1133);		if( !ENEMY_CHECKINDEX( array)) continue;		ret = ENEMY_createPetFromEnemyIndex( toindex, array);		if( !CHAR_CHECKINDEX( ret ) ) continue;		snprintf( szPet, sizeof( szPet), "拿到%s。", CHAR_getUseName( ret) );		CHAR_talkToCli( toindex, -1, szPet,  CHAR_COLORWHITE);		LogPet(			CHAR_getChar( toindex, CHAR_NAME ),			CHAR_getChar( toindex, CHAR_CDKEY ),			CHAR_getChar( ret, CHAR_NAME),			CHAR_getInt( ret, CHAR_LV),			"TenseiGet",			CHAR_getInt( toindex,CHAR_FLOOR),			CHAR_getInt( toindex,CHAR_X ),			CHAR_getInt( toindex,CHAR_Y ),			CHAR_getChar( ret, CHAR_UNIQUECODE)		);	}	for( i=0; i<CHAR_MAXPETHAVE; i++){		petindex = CHAR_getCharPet(toindex, i);		if( !CHAR_CHECKINDEX( petindex) )continue;		CHAR_complianceParameter( petindex );		snprintf( szPet, sizeof( szPet ), "K%d", i);		CHAR_sendStatusString( toindex, szPet );		snprintf( szPet, sizeof( szPet ), "W%d", i);		CHAR_sendStatusString( toindex, szPet );	}	return Finds;}//还原铁枪三堆叠void NPC_reCheckItemPilenum( int meindex, int toindex){	int i, itemindex;	for( i=0; i<CHAR_MAXITEMHAVE; i++){		itemindex = CHAR_getItemIndex( toindex , i );		if( !ITEM_CHECKINDEX( itemindex) ) continue;//ITEM_USEPILENUMS		if( ITEM_getInt( itemindex, ITEM_ID) != 20284 ) continue;		if( ITEM_getInt( itemindex, ITEM_CANBEPILE) != 1 ) continue;		if( ITEM_getInt( itemindex, ITEM_USEPILENUMS) > 1 ){			int itemID, pilenum=1, newindex;			itemID = ITEM_getInt( itemindex, ITEM_ID);			if( !ITEM_CHECKITEMTABLE( itemID) ) continue;			pilenum = ITEM_getInt( itemindex, ITEM_USEPILENUMS);			while( pilenum > 1 ){				int ti = CHAR_findEmptyItemBox( toindex);				if( ti == -1 ){					CHAR_sendItemDataOne( toindex, i);					CHAR_talkToCli( toindex, -1, "道具栏位已满。", CHAR_COLORYELLOW);					return;				}				newindex = ITEM_makeItemAndRegist( itemID);				if( !ITEM_CHECKINDEX( newindex) ) break;				CHAR_setItemIndex( toindex , ti, newindex);				CHAR_sendItemDataOne( toindex, ti);				pilenum--;				ITEM_setInt( itemindex, ITEM_USEPILENUMS, pilenum);			}			if( ITEM_getInt( itemindex, ITEM_CANBEPILE) != ITEMTBL_getInt( itemID, ITEM_CANBEPILE) )				ITEM_setInt( itemindex, ITEM_CANBEPILE, ITEMTBL_getInt( itemID, ITEM_CANBEPILE) );			CHAR_sendItemDataOne( toindex, i);		}	}	CHAR_talkToCli( toindex, -1, "铁枪三处理完毕。", CHAR_COLORYELLOW);}#ifdef _PET_LOSTPETBOOL NPC_reFindMyLostPet( int meindex, int toindex, char *buf){	//地上0 溜宠 1 宠邮 2	FILE *fp = NULL;	char *CdKey=NULL;	int lv=0, cost, ltime, count=0, i, type;	char filename[256], line[2048], buf1[256];	char petname[256], typebuf[256];	char buf2[10][256]={"\n","\n","\n","\n","\n",						"\n","\n","\n","\n","\n" };	CdKey = CHAR_getChar( toindex, CHAR_CDKEY );	if( CdKey == "\0" ) return FALSE;	sprintf( filename, "lostpet/%s.txt", CdKey);	strcpy( buf, "==宠物遗失纪录==\n");	if( (fp=fopen( filename, "r")) == NULL ) return FALSE;	while( fgets( line , sizeof( line ) , fp ) && count < 7){		if( line == NULL ) continue;		if( getStringFromIndexWithDelim( line, "|", 1, buf1, sizeof( buf1)) == FALSE ) continue;		if( strcmp( CHAR_getChar( toindex, CHAR_CDKEY ), buf1 )) continue;		if( getStringFromIndexWithDelim( line, "|", 6, buf1, sizeof( buf1)) == FALSE ) continue;			ltime = atoi(buf1);			ltime = time( NULL) - ltime;			ltime = ltime/(60*60*24);			if( ltime > 14 ) continue;//续放14天		if( getStringFromIndexWithDelim( line, "|", 2, petname, sizeof( petname)) == FALSE ) continue;		if( getStringFromIndexWithDelim( line, "|", 3, buf1, sizeof( buf1)) == FALSE ) continue;		lv = atoi( buf1);		if( getStringFromIndexWithDelim( line, "|", 4, buf1, sizeof( buf1)) == FALSE ) continue;		cost = atoi( buf1);		if( getStringFromIndexWithDelim( line, "#", 3, buf1, sizeof( buf1)) == FALSE ) continue;		type = atoi( buf1);		if( type == 1 ){			strcpy( typebuf, "溜宠");		}else if( type == 2 ){			strcpy( typebuf, "宠邮");		}else{			strcpy( typebuf, "地上");		}		sprintf( buf2[count++], "%s LV:%d石币:%d(%d天%s)\n", petname, lv, cost, ltime, typebuf);	}	fclose( fp);	for( i=0; i<7; i++){		strcat( buf, buf2[i]);	}	if( count == 0 ) return FALSE;	return TRUE;}BOOL NPC_getLostPetString( int meindex, int toindex){	FILE *fp = NULL;	char *CdKey=NULL;	int count=0, i, ltime;	char filename[256], line[2048], buf1[256];	for( i=0; i<7; i++)		strcpy( petstring[i], "");	CdKey = CHAR_getChar( toindex, CHAR_CDKEY );	if( CdKey == "\0" ) return FALSE;	sprintf( filename, "lostpet/%s.txt", CdKey);	if( (fp=fopen( filename, "r")) == NULL ) return FALSE;	while( fgets( line , sizeof( line ) , fp ) && count < 7){		if(strlen( line) <= 0 ) continue;//		if( getStringFromIndexWithDelim( line, "#", 2, buf1, sizeof( buf1)) == FALSE ) return FALSE;// Terry fix 读取时没有判断时间 2004/09/22		if(getStringFromIndexWithDelim(line,"|",6,buf1,sizeof(buf1)) == FALSE) continue;		ltime = atoi(buf1);		ltime = time( NULL) - ltime;		ltime = ltime/(60*60*24);		if(ltime > 14) continue;//续放14天// Terry end		strcpy( petstring[count++], line);	}	fclose( fp);	return TRUE;}BOOL NPC_backupLostPetString( int toindex){	FILE *fp = NULL;	char *CdKey=NULL;	int i, count=0;	char filename[256];	CdKey = CHAR_getChar( toindex, CHAR_CDKEY );	if( CdKey == "\0" ) return FALSE;	sprintf( filename, "lostpet/%s.txt", CdKey);	if( (fp=fopen( filename, "w")) == NULL ) return FALSE;	for( i=0; i<7; i++){		if( strlen( petstring[i]) <= 0 ) continue;		fprintf( fp, "%s", petstring[i]);		count++;	}	fclose( fp);	if( count == 0 )		remove( filename);	return TRUE;}/*#ifdef _NEW_WARPMAN#include "npc_newnpcman.h"#define NEWNPCMAN_STANDBY	5000#define NEWNPCMAN_WAITTIME	150enum{NPC_NEWNPCMAN_START=21,

⌨️ 快捷键说明

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