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

📄 npc_raceman.c

📁 石器时代8.0服务端完整源代码。可以直接编译
💻 C
📖 第 1 页 / 共 5 页
字号:
				}
				break;
			case WINDOW_BUTTONTYPE_OK:
				Raceman_SelectWindow( meindex, talkerindex,0,-1);	break;
			default:break;
			}
		break;
	case CHAR_WINDOWTYPE_RACE_SHOWRANK14:
		switch(select){
			case WINDOW_BUTTONTYPE_NEXT:
			case WINDOW_BUTTONTYPE_PREV:
				{
					int fd;
					fd = getfdFromCharaIndex( talkerindex );
					if( fd == -1 )  return;
					
					Pageindex += 10 * (( select == WINDOW_BUTTONTYPE_NEXT) ? 1 : -1);

					if(history4[Pageindex].catchcnt==0)  {
						Raceman_SelectWindow( meindex, talkerindex,0,-1);
						return;
					}
					if( Pageindex < 0 ) return; 

					buttontype = WINDOW_BUTTONTYPE_OK;
					if( history4[Pageindex+10].catchcnt==0)
						buttontype |= WINDOW_BUTTONTYPE_PREV;
					else if( Pageindex == 0)
						buttontype |= WINDOW_BUTTONTYPE_NEXT;
					else{
						buttontype |= WINDOW_BUTTONTYPE_PREV;
						buttontype |= WINDOW_BUTTONTYPE_NEXT;
					}
					//收集资料					
					strcpy(listbuf,"『高手历史无奇不有排行榜』 "); 
					for (i=Pageindex;i<Pageindex+10;i++)
					{
						if(history4[i].rank == 0 || strlen(history4[i].name) == 0 || history4[i].catchcnt == 0) break;
						sprintf(tmp_buffer,"%d %s %d ",history4[i].rank,history4[i].name , history4[i].catchcnt);
						strcat(listbuf,tmp_buffer);
					}

					lssproto_WN_send( fd, WINDOW_MESSAGETYPE_RACEMAN_RANK,
						buttontype,
						CHAR_WINDOWTYPE_RACE_SHOWRANK14,
						CHAR_getWorkInt( meindex, CHAR_WORKOBJINDEX),
						listbuf	);
				}
				break;
			case WINDOW_BUTTONTYPE_OK:
				Raceman_SelectWindow( meindex, talkerindex,0,-1);	break;
			default:break;
			}
		break;
	case CHAR_WINDOWTYPE_RACE_SHOWRANK15:
		//目前秀到哪一笔		
		switch(select){
			case WINDOW_BUTTONTYPE_NEXT:
			case WINDOW_BUTTONTYPE_PREV:
				{
					int fd;
					fd = getfdFromCharaIndex( talkerindex );
					if( fd == -1 )  return;
					
					Pageindex += 10 * (( select == WINDOW_BUTTONTYPE_NEXT) ? 1 : -1);

					if(history5[Pageindex].catchcnt==0)  {
						//Pageindex = Pageindex - 10;	无下一页一率回首页
						Raceman_SelectWindow( meindex, talkerindex,0,-1);
						return;
					}
					if( Pageindex < 0 ) return; //

					buttontype = WINDOW_BUTTONTYPE_OK;
					if( history5[Pageindex+10].catchcnt==0)
						buttontype |= WINDOW_BUTTONTYPE_PREV;
					else if( Pageindex == 0)
						buttontype |= WINDOW_BUTTONTYPE_NEXT;
					else{
						buttontype |= WINDOW_BUTTONTYPE_PREV;
						buttontype |= WINDOW_BUTTONTYPE_NEXT;
					}
					//收集资料
					strcpy(listbuf,"『家族历史无奇不有排行榜』 "); 					
					for (i=Pageindex;i<Pageindex+10;i++)
					{						
						if(history5[i].rank == 0 || strlen(history5[i].name) == 0 || history5[i].catchcnt == 0) break;
						sprintf(tmp_buffer,"%d %s %d ",history5[i].rank,history5[i].name , history5[i].catchcnt);
						strcat(listbuf,tmp_buffer);
					}

					lssproto_WN_send( fd, WINDOW_MESSAGETYPE_RACEMAN_RANK,
						buttontype,
						CHAR_WINDOWTYPE_RACE_SHOWRANK15,
						CHAR_getWorkInt( meindex, CHAR_WORKOBJINDEX),
						listbuf	);
				}
				break;
			case WINDOW_BUTTONTYPE_OK:
				Raceman_SelectWindow( meindex, talkerindex,0,-1);	break;
			default:break;
		}
		break;
	case CHAR_WINDOWTYPE_RACE_QUIZ:
		ret = Raceman_CheckAnswer( meindex , talkerindex , data );
		if(ret == TRUE)		
			Raceman_SelectWindow( meindex, talkerindex,3,-1); //答对了
		else
			Raceman_MsgDisp( meindex, talkerindex,94,-1);//答错了
		break;
	default: break;
		}
}


void Raceman_MsgDisp(int meindex,int talker,int num ,int select)
{
	char token[4096],tmp_buffer[4096];
	char buf[256],buf2[256],buf3[256];
	char argstr[NPC_UTIL_GETARGSTR_BUFSIZE];
	int  fd = getfdFromCharaIndex( talker);
	int  buttontype=0,windowtype=0,windowno=0;
	int  i;


	if(NPC_Util_GetArgStr( meindex, argstr, sizeof(argstr)) == NULL) {  //读参数
		print("MsgDisp:GetArgStrErr");
		print("NPCName=%s\n", CHAR_getChar( meindex, CHAR_NAME));
		return ;
	}
	switch( num) {
		case 0:
			// 空白处请勿更动
			strcpy( token, "                    ☆猎宠大会☆\n\n");
				strcat( token, "                 《 猎宠比赛题目 》\n");
				strcat( token, "                  《 领取猎宠证 》\n");
				strcat( token, "                   《 猎宠登记 》\n");
				strcat( token, "                  《 猎宠排行榜 》\n");
				strcat( token, "                  《 猎宠战利品 》\n\n");
				strcat( token, "                     《 离开 》\n");
			buttontype=WINDOW_BUTTONTYPE_NONE;
			windowtype=WINDOW_MESSAGETYPE_SELECT;
			windowno=CHAR_WINDOWTYPE_RACE_START; 
			break;

		case 1:	//比赛题目
			strcpy( token, "                  ☆猎宠大会报告☆\n\n");
			if( NPC_Util_GetStrFromStrWithDelim( argstr, "subject_msg",
														buf,sizeof(buf))!= NULL)
			{
				sprintf( buf2 ,"比赛题目:%s\n\n",buf);
			}
			strcat( token , buf2 );
			if( NPC_Util_GetStrFromStrWithDelim( argstr, "time_msg", 
														buf, sizeof( buf)) != NULL){
				sprintf( buf2 ,"时间限制:%s\n\n",buf);
			}
			strcat( token , buf2 );
			buttontype=WINDOW_BUTTONTYPE_OK;
			windowtype=WINDOW_MESSAGETYPE_MESSAGE;
			windowno=CHAR_WINDOWTYPE_RACE_SUBJECT; 
			break;

		case 2:	//领猎宠证
			strcpy( token, "                  ☆猎宠证核发处☆\n\n");
			NPC_Util_GetStrFromStrWithDelim( argstr, "EndFlag",buf, sizeof( buf) );
			if( strcmp(buf,"on")==0){   
				NPC_Util_GetStrFromStrWithDelim( argstr , "ending_msg", buf, sizeof( buf));
				strcat( token , buf );
				//strcat(token,"\n	比赛已经结束,无法再领取猎宠证!");   	
				windowno=CHAR_WINDOWTYPE_RACE_NORMAL; 	
			}else{
				if( NPC_Util_GetStrFromStrWithDelim( argstr, "card_msg",buf, sizeof( buf) ) != NULL)
				strcat( token, buf );
				windowno=CHAR_WINDOWTYPE_RACE_TICKET; 
			}
			buttontype=WINDOW_BUTTONTYPE_OK;
			windowtype=WINDOW_MESSAGETYPE_MESSAGE;			
			break;
		case 21://道具已满讯息
		  	if( NPC_Util_GetStrFromStrWithDelim( argstr, "itemfull_msg",buf, sizeof( buf) ) != NULL)
				strcpysafe(token, sizeof( buf), buf);
			buttontype=WINDOW_BUTTONTYPE_OK;
			windowtype=WINDOW_MESSAGETYPE_MESSAGE;
			windowno=CHAR_WINDOWTYPE_RACE_NORMAL; 
			break;
		case 22://已经有猎宠证讯息
		  	if( NPC_Util_GetStrFromStrWithDelim( argstr, "haditem_msg",buf, sizeof( buf) ) != NULL)
				strcpysafe(token, sizeof( buf), buf);
			buttontype=WINDOW_BUTTONTYPE_OK;
			windowtype=WINDOW_MESSAGETYPE_MESSAGE;
			windowno=CHAR_WINDOWTYPE_RACE_NORMAL; 
			break;
		case 3:	//猎宠登记			
			strcpy( token, "                   ☆猎宠登记处☆\n\n");
			buttontype=WINDOW_BUTTONTYPE_CANCEL;
	  		windowtype=WINDOW_MESSAGETYPE_PETSELECT;
			windowno=CHAR_WINDOWTYPE_RACE_PETSELECT;
			break;
		case 31://检查宠物
			//CHAR_getWorkInt( meindex , CHAR_WORKPETSELECT );
			if(Raceman_checkpet( meindex, talker , select , token ) == FALSE){    // false 表示已登记
				buttontype=WINDOW_BUTTONTYPE_OK;
		  		windowtype = WINDOW_MESSAGETYPE_MESSAGE;
				windowno=CHAR_WINDOWTYPE_RACE_NORMAL; 
			}else{
				//PetSelect = select-1;
				CHAR_setWorkInt( talker , CHAR_WORK_PETSELECT, select-1 );
				if( NPC_Util_GetStrFromStrWithDelim( argstr, "DelFlag",buf, sizeof( buf) ) != NULL){
					if( strcmp(buf,"on")==0)	strcat(token,"\n\n	请注意,您必须交出宠物才能登记唷!");
				}
				buttontype = WINDOW_BUTTONTYPE_YESNO;
				windowtype = WINDOW_MESSAGETYPE_MESSAGE;
				windowno=CHAR_WINDOWTYPE_RACE_CHECKIN; 
			}
			break;
		case 32://无猎宠证讯息
			if( NPC_Util_GetStrFromStrWithDelim( argstr, "nonitem_msg",buf, sizeof( buf) ) != NULL){
				strcpysafe(token, sizeof( buf), buf);
			}
			buttontype=WINDOW_BUTTONTYPE_OK;
			windowtype=WINDOW_MESSAGETYPE_MESSAGE;
			windowno=CHAR_WINDOWTYPE_RACE_NORMAL; 
			break;
		case 4:	//猎宠排行榜
			strcpy( token, "                  ☆猎宠排行榜☆\n\n");
				NPC_Util_GetStrFromStrWithDelim( argstr, "EndFlag",buf, sizeof( buf) );
				if(strcmp(buf,"off")==0){
					NPC_Util_GetStrFromStrWithDelim( argstr, "HasGame",buf, sizeof( buf) );
					i = 1;
					while( getStringFromIndexWithDelim( buf , "," , i , buf2 , sizeof(buf2) )){						
						sprintf( buf3 , "             %s\n",rankname[atoi(buf2)-1]);		
						strcat( token , buf3 );
						i++ ;
					}
				}else{

					NPC_Util_GetStrFromStrWithDelim( argstr, "GameMode",buf, sizeof( buf) );
					sprintf( buf3 , "             %s\n",historyrank[atoi(buf)-1]);		
					strcat( token , buf3 );
				}
			buttontype=WINDOW_BUTTONTYPE_NONE;
			windowtype=WINDOW_MESSAGETYPE_SELECT;
			windowno=CHAR_WINDOWTYPE_RACE_RANK; 
			break;
		case 41: //新手的比赛 限定种类比数量
			token[0]='\0';				
			strcpy(token,"『新手惊为天人排行榜』 ");
			for (i=0;i<10;i++)
			{
				if(ranktable1[i].rank == 0 || strlen(ranktable1[i].name) == 0 || ranktable1[i].catchcnt == 0) break;
				sprintf(tmp_buffer,"%d %s %d ",ranktable1[i].rank , ranktable1[i].name , ranktable1[i].catchcnt);
				strcat(token,tmp_buffer);
			}
			Pageindex = 0;  //回到第一页
			buttontype=WINDOW_BUTTONTYPE_OK|WINDOW_BUTTONTYPE_NEXT;
			windowtype=WINDOW_MESSAGETYPE_RACEMAN_RANK;
			windowno=CHAR_WINDOWTYPE_RACE_SHOWRANK1;
			break;
		case 42://个人同种类排名 
			token[0]='\0';
			strcpy(token,"『高手惊为天人排行榜』 ");
			for (i=0;i<10;i++)
			{
				if(ranktable2[i].rank == 0 || strlen(ranktable2[i].name) == 0 || ranktable2[i].catchcnt == 0) break;
				sprintf(tmp_buffer,"%d %s %d ",ranktable2[i].rank , ranktable2[i].name , ranktable2[i].catchcnt);
				strcat(token,tmp_buffer);
			}
			Pageindex = 0;
			buttontype=WINDOW_BUTTONTYPE_OK|WINDOW_BUTTONTYPE_NEXT;
			windowtype=WINDOW_MESSAGETYPE_RACEMAN_RANK;
			windowno=CHAR_WINDOWTYPE_RACE_SHOWRANK2;
			break;
		case 43://家族不同种类排名 
			token[0]='\0';
			strcpy(token,"『家族惊为天人排行榜』 ");
			for (i=0;i<10;i++)
			{
				if(ranktable3[i].rank == 0 || strlen(ranktable3[i].name) == 0 || ranktable3[i].catchcnt == 0) break;
				sprintf(tmp_buffer,"%d %s %d ",ranktable3[i].rank , ranktable3[i].name , ranktable3[i].catchcnt);
				strcat(token,tmp_buffer);
			}
			Pageindex = 0;
			buttontype=WINDOW_BUTTONTYPE_OK|WINDOW_BUTTONTYPE_NEXT;
			windowtype=WINDOW_MESSAGETYPE_RACEMAN_RANK;
			windowno=CHAR_WINDOWTYPE_RACE_SHOWRANK3;
			break;
		case 44://个人同种类排名 
			token[0]='\0';
			strcpy(token,"『高手无奇不有排行榜』 ");
			for (i=0;i<10;i++)
			{
				if(ranktable4[i].rank == 0 || strlen(ranktable4[i].name) == 0 || ranktable4[i].catchcnt == 0) break;
				sprintf(tmp_buffer,"%d %s %d ",ranktable4[i].rank , ranktable4[i].name , ranktable4[i].catchcnt);
				strcat(token,tmp_buffer);
			}
			Pageindex = 0;
			buttontype=WINDOW_BUTTONTYPE_OK|WINDOW_BUTTONTYPE_NEXT;
			windowtype=WINDOW_MESSAGETYPE_RACEMAN_RANK;
			windowno=CHAR_WINDOWTYPE_RACE_SHOWRANK4;
			break;
		case 45://家族不同种类排名 
			token[0]='\0';
			strcpy(token,"『家族无奇不有排行榜』 ");
			for (i=0;i<10;i++)
			{
				if(ranktable5[i].rank == 0 || strlen(ranktable5[i].name) == 0 || ranktable5[i].catchcnt == 0) break;
				sprintf(tmp_buffer,"%d %s %d ",ranktable5[i].rank , ranktable5[i].name , ranktable5[i].catchcnt);
				strcat(token,tmp_buffer);
			}
			Pageindex = 0;
			buttontype=WINDOW_BUTTONTYPE_OK|WINDOW_BUTTONTYPE_NEXT;
			windowtype=WINDOW_MESSAGETYPE_RACEMAN_RANK;
			windowno=CHAR_WINDOWTYPE_RACE_SHOWRANK5;
			break;
		case 411:
			token[0]='\0';
			strcpy(token,"『新手历史惊为天人排行榜』 ");
			for (i=0;i<10;i++)
			{
				if(history1[i].rank == 0 || strlen(history1[i].name) == 0 || history1[i].catchcnt == 0) break;
				sprintf(tmp_buffer,"%d %s %d ",history1[i].rank , history1[i].name , history1[i].catchcnt);
				strcat(token,tmp_buffer);
			}
			Pageindex = 0;
			buttontype=WINDOW_BUTTONTYPE_OK|WINDOW_BUTTONTYPE_NEXT;
			windowtype=WINDOW_MESSAGETYPE_RACEMAN_RANK;
			windowno=CHAR_WINDOWTYPE_RACE_SHOWRANK11;
			break;
		case 412:
			token[0]='\0';
			strcpy(token,"『高手历史惊为天人排行榜』 ");
			for (i=0;i<10;i++)
			{
				if(history2[i].rank == 0 || strlen(history2[i].name) == 0 || history2[i].catchcnt == 0) break;
				sprintf(tmp_buffer,"%d %s %d ",history2[i].rank , history2[i].name , history2[i].catchcnt);
				strcat(token,tmp_buffer);
			}
			Pageindex = 0;
			buttontype=WINDOW_BUTTONTYPE_OK|WINDOW_BUTTONTYPE_NEXT;
			windowtype=WINDOW_MESSAGETYPE_RACEMAN_RANK;
			windowno=CHAR_WINDOWTYPE_RACE_SHOWRANK12;
			break;
		case 413:
			token[0]='\0';
			strcpy(token,"『家族历史惊为天人排行榜』 ");
			for (i=0;i<10;i++)
			{
				if(history3[i].rank == 0 || strlen(history3[i].name) == 0 || history3[i].catchcnt == 0) break;
				sprintf(tmp_buffer,"%d %s %d ",history3[i].rank , history3[i].name , history3[i].catchcnt);
				strcat(token,tmp_buffer);
			}
			Pageindex = 0;
			buttontype=WINDOW_BUTTONTYPE_OK|WINDOW_BUTTONTYPE_NEXT;
			windowtype=WINDOW_MESSAGETYPE_RACEMAN_RANK;
			windowno=CHAR_WINDOWTYPE_RACE_SHOWRANK13;
			break;
		case 414:
			token[0]='\0';
			strcpy(token,"『高手历史无奇不有排行榜』 ");
			for (i=0;i<10;i++)
			{
				if(history4[i].rank == 0 || strlen(history4[i].name) == 0 || history4[i].catchcnt == 0) break;
				sprintf(tmp_buffer,"%d %s %d ",history4[i].rank , history4[i].name , history4[i].catchcnt);
				strcat(token,tmp_buffer);
			}
			Pageindex = 0;
			buttontype=WINDOW_BUTTONTYPE_OK|WINDOW_BUTTONTYPE_NEXT;
			windowtype=WINDOW_MESSAGETYPE_RACEMAN_RANK;
			windowno=CHAR_WINDOWTYPE_RACE_SHOWRANK14;
			break;
		case 415:
			token[0]='\0';
			strcpy(token,"『家族历史无奇不有排行榜』 ");

⌨️ 快捷键说明

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