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

📄 npc_autopk.c

📁 石器时代2.0完整版源代码.已经加入新功能. 在REDHAT9下GCC3.4编译成功.
💻 C
📖 第 1 页 / 共 2 页
字号:
	getStringFromIndexWithDelim(line,"|", 1, hstime, sizeof(hstime));	getStringFromIndexWithDelim(line,"|", 2, history[0].winnum, sizeof(history[0].winnum));	getStringFromIndexWithDelim(line,"|", 3, history[0].name, sizeof(history[0].name));	if(strlen(history[0].name)==0)		strcpy(history[0].name,"无");	getStringFromIndexWithDelim(line,"|", 4, history[1].winnum, sizeof(history[1].winnum));	getStringFromIndexWithDelim(line,"|", 5, history[1].name, sizeof(history[1].name));	if(strlen(history[1].name)==0)		strcpy(history[1].name,"无");	getStringFromIndexWithDelim(line,"|", 6, history[2].winnum, sizeof(history[2].winnum));	getStringFromIndexWithDelim(line,"|", 7, history[2].name, sizeof(history[2].name));	if(strlen(history[2].name)==0)		strcpy(history[2].name,"无");	getStringFromIndexWithDelim(line,"|", 8, history[3].winnum, sizeof(history[3].winnum));	getStringFromIndexWithDelim(line,"|", 9, history[3].name, sizeof(history[3].name));	if(strlen(history[3].name)==0)		strcpy(history[3].name,"无");	getStringFromIndexWithDelim(line,"|", 10, history[4].winnum, sizeof(history[4].winnum));	getStringFromIndexWithDelim(line,"|", 11, history[4].name, sizeof(history[4].name));	if(strlen(history[4].name)==0)		strcpy(history[4].name,"无");	sprintf(token, "              ★乱舞格斗PK赛历史★\n"	               "             第 %s 届乱舞格斗获奖名单\n",hstime);	strcat(token, "“名次”“杀人”“玩    家”\n");	sprintf(buf,  " 冠军%7d     %s\n"								" 亚军%7d     %s\n"								" 季军%7d     %s\n"								" 优胜%7d     %s\n"								" 优胜%7d     %s\n"								,atoi(history[0].winnum),history[0].name								,atoi(history[1].winnum),history[1].name								,atoi(history[2].winnum),history[2].name								,atoi(history[3].winnum),history[3].name								,atoi(history[4].winnum),history[4].name);	strcat(token,buf);	if(fgets(line, sizeof(line), fp) == NULL){		fclose(fp);		return TRUE;	}else{		fclose(fp);		return FALSE;	}}void AutoPk_SetHistoryStr( void ){	FILE* fp;	char token[1024*16];	char line[64];	char time[4];  fp=fopen("./data/autopk/autopkhistory.txt","r");	if(fgets(line, sizeof(line), fp) == NULL)		strcpy(time,"1");	else		getStringFromIndexWithDelim(line,"|",1,time,sizeof(time));	sprintf(token, "%d|%d|%s|%d|%s|%d|%s|%d|%s|%d|%s|\n",atoi(time)+1 									                      ,ship[0].winnum,ship[0].name																				,ship[1].winnum,ship[1].name																				,ship[2].winnum,ship[2].name																				,ship[3].winnum,ship[3].name																				,ship[4].winnum,ship[4].name);	int i;	strcat(token,line);	for(i=1; i<20; i++){		if(fgets(line, sizeof(line), fp) == NULL)break;		strcat(token,line);	}	fclose(fp);		fp=fopen("./data/autopk/autopkhistory.txt","w");  fwrite(token, strlen(token), 1, fp);  fclose(fp);}void AutoPk_PKNum( char *token ){	int playernum = CHAR_getPlayerMaxNum();	int i,num=0,j=0;	char buf[64];	for(i=0;i<playernum;i++){		if(CHAR_CHECKINDEX(i) == FALSE) continue;		if(CHAR_getInt(i, CHAR_FLOOR) == 20000 )		{			if(++j>5)break;		 	sprintf(buf, "%3d%5d    %s\n",			                            CHAR_getInt( i, CHAR_TRANSMIGRATION),			                            CHAR_getInt( i, CHAR_LV),			                            CHAR_getChar( i, CHAR_NAME));			num++;			strcat(token,buf);		}	}	sprintf(buf, "当前参加PK比赛人数为:%d人",num);	strcat(token,buf);}void AutoPk_PKSystemTalk( char *token1, char *token2 ){	int playernum = CHAR_getPlayerMaxNum();	int i;	for(i=0;i<playernum;i++){		if(CHAR_CHECKINDEX(i) == FALSE) continue;		if(CHAR_getInt(i, CHAR_FLOOR) == 20000 )		 	CHAR_talkToCli( i, -1, token1, CHAR_COLORRED );		else			CHAR_talkToCli( i, -1, token2, CHAR_COLORRED );	}}void AutoPk_PKSystemInfo(){	autopktime--;	if(autopktime>0){		char buf1[64];		char buf2[128];		sprintf(buf1, "距离截止参加PK比赛时间还剩%d分钟!",autopktime);		if(awardpetid!=-1 && awarditemid==-1)			sprintf(buf2,"距离截止参加PK比赛时间还剩%d分钟,本次比赛奖品为:编号:%d,宠物:%s",autopktime-2,awardpetid,awardpet);		else if(awardpetid==-1 && awarditemid!=-1)			sprintf(buf2,"距离截止参加PK比赛时间还剩%d分钟,本次比赛奖品为:编号:%d,物品:%s",autopktime-2,awarditemid,awarditem);		else if(awardpetid!=-1 && awarditemid!=-1)			sprintf(buf2,"距离截止参加PK比赛时间还剩%d分钟,本次比赛奖品为:编号:%d,宠物:%s和编号:%d,物品:%s",autopktime-2,awardpetid,awardpet,awarditemid,awarditem);		else			sprintf(buf2, "距离正式PK比赛时间还剩%d分钟!",autopktime);		AutoPk_PKSystemTalk(buf1, buf2);	}else if(autopktime==0){		int i,charaindex,num=0;		int playernum=CHAR_getPlayerMaxNum();		for(i=0;i<playernum;i++){			if(CHAR_CHECKINDEX(i) == FALSE) continue;				if(CHAR_getInt(i, CHAR_FLOOR) == 20000 ){					num++;					charaindex=i;					if(num>1)break;				}		}		if(num>1){			AutoPk_PKSystemTalk("比赛正式开始咯!","比赛正式开始咯!");		}else{			if(CHAR_CHECKINDEX(charaindex)){				int fl = 0, x = 0, y = 0;				CHAR_getElderPosition(CHAR_getInt(charaindex, CHAR_LASTTALKELDER), &fl, &x, &y);				CHAR_warpToSpecificPoint(charaindex, fl, x, y);			}			AutoPk_PKSystemTalk("由于参加比赛人数过少,所以取消比赛!","由于参加比赛人数过少,所以取消比赛!");		}	}}void AutoPk_PKTimeSet( int pktime ){	autopktime=pktime;	ship[0].winnum=0;	strcpy(ship[0].cdkey, "\0");	strcpy(ship[0].name, "\0");	ship[1].winnum=0;	strcpy(ship[1].cdkey, "\0");	strcpy(ship[1].name, "\0");	ship[2].winnum=0;	strcpy(ship[2].cdkey, "\0");	strcpy(ship[2].name, "\0");	baward=FALSE;}int AutoPk_PKTimeGet( void ){	return autopktime;}void AutoPk_AwardSet( int petid, char *pet, int itemid, char *item ){	if(petid>0){		awardpetid=petid;		strcpy(awardpet,pet);	}else{		awardpetid=-1;	}	if(itemid>0){		awarditemid=itemid;		strcpy(awarditem,item);	}else{		awarditemid=-1;	}}void AutoPk_ChampionShipSet( char *cdkey, char *name, int winnum, int win ){	if(win==0){		char token[64];		if(winnum>ship[0].winnum){			sprintf( token, "%s排名第一,杀人总数%d人!", name, winnum);			AutoPk_PKSystemTalk(token,token);			if(strstr(ship[0].cdkey,cdkey) && strstr(ship[0].name,name)){				ship[0].winnum=winnum;			}else if(strstr(ship[1].cdkey,cdkey) && strstr(ship[1].name,name)){				ship[1].winnum=ship[0].winnum;				strcpy(ship[1].cdkey, ship[0].cdkey);				strcpy(ship[1].name, ship[0].name);				ship[0].winnum=winnum;				strcpy(ship[0].cdkey, cdkey);				strcpy(ship[0].name, name);			}else{				ship[2].winnum=ship[1].winnum;				strcpy(ship[2].cdkey, ship[1].cdkey);				strcpy(ship[2].name, ship[1].name);				ship[1].winnum=ship[0].winnum;				strcpy(ship[1].cdkey, ship[0].cdkey);				strcpy(ship[1].name, ship[0].name);				ship[0].winnum=winnum;				strcpy(ship[0].cdkey, cdkey);				strcpy(ship[0].name, name);			}		}else if(winnum>ship[1].winnum){			sprintf( token, "%s排名第二,杀人总数%d人!", name, winnum);			AutoPk_PKSystemTalk(token,token);			if(strstr(ship[1].cdkey,cdkey) && strstr(ship[1].name,name)){				ship[1].winnum=winnum;			}else{				ship[2].winnum=ship[1].winnum;				strcpy(ship[2].cdkey, ship[1].cdkey);				strcpy(ship[2].name, ship[1].name);				ship[1].winnum=winnum;				strcpy(ship[1].cdkey, cdkey);				strcpy(ship[1].name, name);			}		}else if(winnum>ship[2].winnum){			sprintf( token, "%s排名第三,杀人总数%d人!", name, winnum);			AutoPk_PKSystemTalk(token,token);			ship[2].winnum=winnum;			strcpy(ship[2].cdkey, cdkey);			strcpy(ship[2].name, name);		}	}else if(win==1){		ship[3].winnum=winnum;		strcpy(ship[3].cdkey, cdkey);		strcpy(ship[3].name, name);	}else if(win==2){		ship[4].winnum=winnum;		strcpy(ship[4].cdkey, cdkey);		strcpy(ship[4].name, name);	}}void AutoPk_GetChampionShip( void ){	char token[64];	if(strlen(ship[0].cdkey)>0){		sprintf( token, "恭喜%s获得本次PK比赛冠军,杀人总数%d人!", ship[0].name, ship[0].winnum);		AutoPk_PKSystemTalk(token,token);	}	if(strlen(ship[1].cdkey)>0){		sprintf( token, "恭喜%s获得本次PK比赛亚军,杀人总数%d人!", ship[1].name, ship[1].winnum);		AutoPk_PKSystemTalk(token,token);	}	if(strlen(ship[2].cdkey)>0){		sprintf( token, "恭喜%s获得本次PK比赛季军,杀人总数%d人!", ship[2].name, ship[2].winnum);		AutoPk_PKSystemTalk(token,token);	}	sprintf( token, "恭喜%s和%s获得本次PK比赛优胜奖!", ship[3].name,ship[4].name);	AutoPk_PKSystemTalk(token,token);		AutoPk_SetHistoryStr();		baward = TRUE;}BOOL AutoPk_AddItem( int charindex, int index ){	char msgbuf[64];	int	ret;	int spaceNum=5,i,itemindex=-1;  itemindex = CHAR_findEmptyItemBox( charindex );	if( itemindex < 0 )	{		CHAR_talkToCli( charindex, -1, "物品栏空间不足!!",  CHAR_COLORYELLOW);		return FALSE;	}	itemindex = ITEM_makeItemAndRegist( award[index].awarditemid );	if(itemindex == -1)		return FALSE;	ret = CHAR_addItemSpecificItemIndex( charindex, itemindex);	if( ret < 0 || ret >= CHAR_MAXITEMHAVE ) {		ITEM_endExistItemsOne( itemindex );		print ("\n ret error!!");		return FALSE;	}	sprintf( msgbuf,"拿到%s",ITEM_getChar( itemindex, ITEM_NAME));	CHAR_talkToCli( charindex, -1, msgbuf, CHAR_COLORYELLOW );	CHAR_sendItemDataOne( charindex, ret);	return TRUE;}BOOL AutoPk_AddPet( int charindex, int index){	int	ret;	char msgbuf[64];	int	enemynum;	int	i,j;	int petindex, petindex2;	for( i = 0 ;i < CHAR_MAXPETHAVE ; i++) {		petindex = CHAR_getCharPet( charindex, i);		if( petindex == -1  )			break;	}  if( i == CHAR_MAXPETHAVE )      {		snprintf( msgbuf,sizeof( msgbuf), "宠物已满!!");		CHAR_talkToCli( charindex, -1, msgbuf,  CHAR_COLORYELLOW);		return FALSE;	}	enemynum = ENEMY_getEnemyNum();	for( i = 0; i < enemynum; i ++ ) {		if( ENEMY_getInt( i, ENEMY_ID) == award[index].awardpetid) {				break;			}	}	if( i == enemynum )		return FALSE;	ret = ENEMY_createPetFromEnemyIndex( charindex, i);	for( i = 0; i < CHAR_MAXPETHAVE; i ++ )	{		if( CHAR_getCharPet( charindex, i ) == ret )			break;	}	petindex2 = CHAR_getCharPet(charindex, i);	if( !CHAR_CHECKINDEX( petindex2) )		return FALSE;	snprintf( msgbuf,sizeof( msgbuf), "拿到%s。", CHAR_getChar(petindex2,CHAR_NAME));	CHAR_talkToCli( charindex, -1, msgbuf,  CHAR_COLORYELLOW);	CHAR_setInt(petindex2,CHAR_VARIABLEAI,10000);	for(j = 0; j < CHAR_MAXPETHAVE; j++){		petindex = CHAR_getCharPet(charindex, j);		if( !CHAR_CHECKINDEX( petindex) )			continue;		CHAR_complianceParameter( petindex );		snprintf( msgbuf, sizeof( msgbuf ), "K%d", j );		CHAR_sendStatusString( charindex, msgbuf );		snprintf( msgbuf, sizeof( msgbuf ), "W%d", j );		CHAR_sendStatusString( charindex, msgbuf );	}	return TRUE;}void NPC_AUTOPKHealerTalked( int meindex ){  if( CHAR_getInt( meindex , CHAR_WHICHTYPE ) != CHAR_TYPEPLAYER )	return;	if( (CHAR_getWorkInt( meindex, CHAR_WORKPARTYMODE) == 0)	|| (CHAR_getWorkInt( meindex, CHAR_WORKPARTYMODE) == 2) )	{		NPC_HealerAllHeal( meindex);		CHAR_talkToCli( meindex, -1,"恭喜你获胜,体力已全部回复。",CHAR_COLORBLUE);	}else{		int i = 0;		int otherindex;		for( i=0 ; i < CHAR_PARTYMAX ; i++)		{			otherindex = CHAR_getWorkInt( meindex, CHAR_WORKPARTYINDEX1 + i);			if(otherindex != -1){				NPC_HealerAllHeal( otherindex);				CHAR_talkToCli( otherindex, -1,"恭喜你获胜,体力已全部回复。",CHAR_COLORBLUE);			}		}	}}BOOL AutoPk_GetAwardStr( void ){	FILE* fp;	int i=0;	int j=0;	int enemynum = ENEMY_getEnemyNum();	fp = fopen("./data/autopk/autopkaward.txt", "r");	if (fp == NULL)	{		print("查看比赛奖品文件打开错误\n");		return FALSE;	}	for(i=0;i<5;i++){		char	line[64],buf[32];		if (fgets(line, sizeof(line), fp) == NULL)break;		chop(line);		getStringFromIndexWithDelim(line,"|", 1, buf, sizeof(buf));		award[i].awardpetid=atoi(buf);		if(award[i].awardpetid!=-1){			for( j=0; j <enemynum ; j++ )	        if(ENEMY_getInt( j, ENEMY_ID)==award[i].awardpetid)	        	break;	    if(j!=enemynum){	    	strcpy(award[i].awardpet, ENEMY_getChar( j, ENEMY_NAME));	    }else{	    	award[i].awardpetid=-1;	    	strcpy(award[i].awardpet, "\0");	    }    }		getStringFromIndexWithDelim(line,"|", 2, buf, sizeof(buf));		award[i].awarditemid=atoi(buf);		if(award[i].awarditemid>0 && award[i].awarditemid <= getItemnum() )			strcpy(award[i].awarditem,ITEM_getNameFromNumber(award[i].awarditemid));		else			strcpy(award[i].awarditem, "\0");		award[i].draw=AWARDNO;	}	fclose(fp);	return TRUE;}void AutoPk_SetAwardStr( char *token ){	FILE* fp;	int i=0;	fp = fopen("./data/autopk/autopkaward.txt", "w");  fwrite(token, strlen(token), 1, fp);	fclose(fp);}#endif

⌨️ 快捷键说明

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