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

📄 npc_manorsman.c

📁 石器时代2.0完整版源代码.已经加入新功能. 在REDHAT9下GCC3.4编译成功.
💻 C
📖 第 1 页 / 共 2 页
字号:
							else{#ifdef _MANOR_PKRULE	#ifdef _FIX_FAMILY_PK_LIMIT	   // WON ADD 将可挑战庄园的由前十大改为前二十大               sprintf(buf, "你的家族声望尚未进入前二十大家族,请再加油。");	#else               sprintf(buf, "你的家族声望尚未进入前十大家族,请再加油。");	#endif#else               sprintf(buf, "你的家族声望尚不足以挑战\n"                            "拥有这个庄园的家族,请再加油。");#endif                lssproto_WN_send( fd, WINDOW_MESSAGETYPE_MESSAGE,						              	    	WINDOW_BUTTONTYPE_OK,													   			CHAR_WINDOWTYPE_CHECKMAN_END,												    			CHAR_getWorkInt(meindex, CHAR_WORKOBJINDEX),													   			buf);		   	      }            }						else if(check == 2){              sprintf(buf, "你的家族正在挑战其他庄园,\n"                           "请把机会留给其他家族吧!");              lssproto_WN_send( fd, WINDOW_MESSAGETYPE_MESSAGE,													    	WINDOW_BUTTONTYPE_OK,											    			CHAR_WINDOWTYPE_CHECKMAN_END,											    			CHAR_getWorkInt(meindex, CHAR_WORKOBJINDEX),											    			buf);            }						else{              sprintf(buf, "一个家族只能拥有一个庄园,\n"                           "如果庄园家族之间需要切磋\n"                           "请到家族PK场。");              lssproto_WN_send( fd, WINDOW_MESSAGETYPE_MESSAGE,              	    						WINDOW_BUTTONTYPE_OK,											    			CHAR_WINDOWTYPE_CHECKMAN_END,											    			CHAR_getWorkInt(meindex, CHAR_WORKOBJINDEX),										    				buf);            }          }					else{            sprintf(buf, "这个庄园已经是你的家族的喔。");            lssproto_WN_send( fd, WINDOW_MESSAGETYPE_MESSAGE,              						  	WINDOW_BUTTONTYPE_OK,									    				CHAR_WINDOWTYPE_CHECKMAN_END,											   			CHAR_getWorkInt(meindex, CHAR_WORKOBJINDEX),										    			buf);          }        }				else{          sprintf(buf, "现在并没有庄园家族!\n"                       "直接去申请迁入就可以了哟。");          lssproto_WN_send( fd, WINDOW_MESSAGETYPE_MESSAGE,			              	    	WINDOW_BUTTONTYPE_OK,    												CHAR_WINDOWTYPE_CHECKMAN_END,									    			CHAR_getWorkInt(meindex, CHAR_WORKOBJINDEX),									    			buf);        }      }			else{        sprintf(buf, "只有族长可以下战书喔。");        lssproto_WN_send( fd, WINDOW_MESSAGETYPE_MESSAGE,              	    			WINDOW_BUTTONTYPE_OK,									   			CHAR_WINDOWTYPE_CHECKMAN_END,								    			CHAR_getWorkInt(meindex, CHAR_WORKOBJINDEX),								    			buf);      }    }    break;  case CHAR_WINDOWTYPE_CHECKMAN_MAIN:	      if (select==WINDOW_BUTTONTYPE_YES) {#ifdef _FMVER21          if ((CHAR_getInt(talkerindex,CHAR_FMLEADERFLAG)==FMMEMBER_LEADER) && #else      if ((CHAR_getInt(talkerindex,CHAR_FMLEADERFLAG)==1) &&     #endif                (CHAR_getWorkInt(talkerindex, CHAR_WORKFMSETUPFLAG)==1) &&             (hadfmindex != -1) &&		  (hadfmindex - 1 != tkfmindex)    #ifndef _MANOR_PKRULE          && (tkfmdp >= hadfmpopular)#endif		  ){#ifndef _ACFMPK_LIST		  struct tm tm1; #endif#ifdef _MANOR_PKRULE	  time_t timep;	  struct tm *p;		  	  time(&timep);	  p = gmtime(&timep);			  if( p->tm_hour+8 > 24)	  	  p->tm_hour = p->tm_hour-16;	  else		  p->tm_hour = p->tm_hour+8;		 	  if(p->tm_hour<18 && p->tm_hour>2){		  sprintf(buf, "请於下午6:00至凌晨3:00再来约战吧!");		  lssproto_WN_send( fd, WINDOW_MESSAGETYPE_MESSAGE,             	    	WINDOW_BUTTONTYPE_OK,   			        CHAR_WINDOWTYPE_CHECKMAN_END,   			        CHAR_getWorkInt(meindex, CHAR_WORKOBJINDEX),   			        buf);		  break;	  }		  #endif			// WON ADD 修正家族pk场的约战问题			if( fmpks[fmpks_pos+1].flag != FMPKS_FLAG_NONE ){			     sprintf(buf, "这个庄园已经有人约战了喔。");					 lssproto_WN_send( fd, WINDOW_MESSAGETYPE_MESSAGE,						 WINDOW_BUTTONTYPE_OK,						 CHAR_WINDOWTYPE_CHECKMAN_END,						 CHAR_getWorkInt(meindex, CHAR_WORKOBJINDEX),						 buf);					 return;			}#ifdef _ACFMPK_LIST		NPC_ManorSavePKSchedule(meindex, talkerindex, 0);		sprintf( buf, "庄园挑战登陆确认中,请稍後。");		CHAR_talkToCli( talkerindex, meindex, buf, CHAR_COLORYELLOW);#else		NPC_ManorSavePKSchedule(meindex, talkerindex, 0);#endif              }    }    break;  }}void NPC_CleanPkList( int ti){// Terry fix 要清为-1不能清为0/*	fmpks[ ti+1 ].host_index = 0;	fmpks[ ti+1].guest_index=0;	fmpks[ ti].host_index=0;	fmpks[ ti].guest_index=0;*/	fmpks[ ti+1 ].host_index = -1;	fmpks[ ti+1].guest_index=-1;	fmpks[ ti].host_index=-1;	fmpks[ ti].guest_index=-1;	strcpy(fmpks[ ti+1].host_name,"");	strcpy(fmpks[ ti+1].guest_name,"");	strcpy(fmpks[ ti].host_name,"");	strcpy(fmpks[ ti].guest_name,"");	strcpy(fmpks[ ti+2].host_name,"");}void NPC_ManorSmanLoop(int meindex){	struct tm tm1;	int fmpks_pos;	if(CHAR_CHECKINDEX(meindex) == FALSE){		printf("\nNPC_ManorSmanLoop error!(meindex:%d)",meindex);		return;	}	fmpks_pos = CHAR_getWorkInt(meindex, NPC_WORK_ID)*MAX_SCHEDULE;  memcpy( &tm1, localtime( (time_t *)&NowTime.tv_sec), sizeof( tm1));  switch (fmpks[fmpks_pos+1].flag) {  case FMPKS_FLAG_NONE:     break;  case FMPKS_FLAG_MANOR_PREPARE:    if(fmpks[fmpks_pos+1].dueltime <= NowTime.tv_sec){      memcpy(&fmpks[fmpks_pos], &fmpks[fmpks_pos+1], sizeof(FamilyPKSchedule));      fmpks[fmpks_pos].dueltime = tm1.tm_hour * 100 + tm1.tm_min;      fmpks[fmpks_pos].flag = FMPKS_FLAG_SCHEDULED;      fmpks[fmpks_pos+1].dueltime = 0;      fmpks[fmpks_pos+1].flag = FMPKS_FLAG_MANOR_BATTLEBEGIN;      NPC_talkToFloor(CHAR_getInt(meindex, CHAR_FLOOR) , fmpks[fmpks_pos].host_index,         	fmpks[fmpks_pos].guest_index, "庄园争夺战已经开始,请尽快入场!");    }    break;  case FMPKS_FLAG_MANOR_PEACE:    if (fmpks[fmpks_pos+1].dueltime <= NowTime.tv_sec) {      fmpks[fmpks_pos+1].dueltime = 0;      fmpks[fmpks_pos+1].flag = FMPKS_FLAG_NONE;    }    break;  case FMPKS_FLAG_MANOR_BATTLEBEGIN:    break;  case FMPKS_FLAG_MANOR_BATTLEEND:		{			fmpks[fmpks_pos].flag = FMPKS_FLAG_NONE;			fmpks[fmpks_pos+1].dueltime = CHAR_getWorkInt(meindex, NPC_WORK_PEACEWAIT) + NowTime.tv_sec;			fmpks[fmpks_pos+1].flag = FMPKS_FLAG_MANOR_PEACE_SAVE;			NPC_CleanPkList( fmpks_pos);		}    break;  case FMPKS_FLAG_MANOR_PEACE_SAVE:    fmpks[fmpks_pos+1].flag = FMPKS_FLAG_MANOR_PEACE;    break;  case FMPKS_FLAG_MANOR_OTHERPLANET:    break;  case FMPKS_FLAG_MANOR_READYTOFIGHT:  case FMPKS_FLAG_MANOR_CLEANFLAG:    fmpks[fmpks_pos].flag = FMPKS_FLAG_NONE;    fmpks[fmpks_pos+1].dueltime = CHAR_getWorkInt(meindex, NPC_WORK_PEACEWAIT) + NowTime.tv_sec;    fmpks[fmpks_pos+1].flag = FMPKS_FLAG_NONE;		NPC_CleanPkList( fmpks_pos);    break;  }  CHAR_setWorkInt(meindex, NPC_WORK_PREVLOOPTIME, NowTime.tv_sec);}void NPC_ManorLoadPKSchedule(int meindex){#ifdef _ACFMPK_LIST	int fmpks_pos = CHAR_getWorkInt(meindex, NPC_WORK_ID);	saacproto_ACLoadFmPk_send(acfd, fmpks_pos);#else	char filename[256], tmp[4096], token[256];	FILE *f;	int fmpks_pos = CHAR_getWorkInt(meindex, NPC_WORK_ID)*MAX_SCHEDULE;	snprintf(filename,sizeof(filename), "%s%d_%d_%d",		       SCHEDULEFILEDIR, CHAR_getInt(meindex, CHAR_FLOOR),			   CHAR_getInt(meindex, CHAR_X),			CHAR_getInt(meindex, CHAR_Y) );	if( ! (f=fopen( filename, "r" )) ){	// create new schedule file		f = fopen( filename, "w" );		if( !f ){			print( "ERROR:Can't create Schedule file %s!\n",filename );			return;		}		strcpy(tmp,"0|-1|-1|-1|-1|-1|-1|-1|-1\n");		fwrite(tmp, strlen(tmp), 1, f);	}	fseek(f, 0, SEEK_SET);	// 档案开头	fgets(tmp, sizeof(tmp), f);	fmpks[fmpks_pos].flag=-1;	// 时间	if (getStringFromIndexWithDelim(tmp,"|",1,token,sizeof(token))) {		fmpks[fmpks_pos+1].dueltime=atoi(token);	}	// 主队 familyindex	if (getStringFromIndexWithDelim(tmp,"|",2,token,sizeof(token))) {	    fmpks[fmpks_pos+1].host_index=atoi(token);	}	// 主队 家族名	if (getStringFromIndexWithDelim(tmp,"|",3,token,sizeof(token))) {		strcpy(fmpks[fmpks_pos+1].host_name,makeStringFromEscaped(token));	}	// 客队 familyindex	if (getStringFromIndexWithDelim(tmp,"|",4,token,sizeof(token))) {	    fmpks[fmpks_pos+1].guest_index=atoi(token);	}	// 客队 家族名	if (getStringFromIndexWithDelim(tmp,"|",5,token,sizeof(token))) {	    strcpy(fmpks[fmpks_pos+1].guest_name,makeStringFromEscaped(token));	}	// 准备时间	if (getStringFromIndexWithDelim(tmp,"|",6,token,sizeof(token))) {		fmpks[fmpks_pos+1].prepare_time=atoi(token);	}	// 最大人数	if (getStringFromIndexWithDelim(tmp,"|",7,token,sizeof(token))) {		fmpks[fmpks_pos+1].max_player=atoi(token);	}	// 旗标	if (getStringFromIndexWithDelim(tmp,"|",8,token,sizeof(token))) {		fmpks[fmpks_pos+1].flag=atoi(token);	}	// 对战星球	if (getStringFromIndexWithDelim(tmp,"|",9,token,sizeof(token))) {		strcpy(fmpks[fmpks_pos+2].host_name,makeStringFromEscaped(token));	}  	// no schedule	fmpks[fmpks_pos].flag=-1;	// prepare time expired?	if ((fmpks[fmpks_pos+1].flag==FMPKS_FLAG_MANOR_PREPARE) &&		  (fmpks[fmpks_pos+1].dueltime<NowTime.tv_sec)) {		fmpks[fmpks_pos].flag=-1;// Terry fix 要清为-1不能清为0//		fmpks[fmpks_pos].host_index=0;		fmpks[fmpks_pos].host_index=-1;		strcpy(fmpks[fmpks_pos].host_name,"");// Terry fix 要清为-1不能清为0//		fmpks[fmpks_pos].guest_index=0;		fmpks[fmpks_pos].guest_index=-1;		strcpy(fmpks[fmpks_pos].guest_name,"");		fmpks[fmpks_pos+1].flag=-1;		fmpks[fmpks_pos+1].dueltime=0;	//    fmpks[fmpks_pos+1].dueltime=NowTime.tv_sec+30*60;	// add more 30 minutes	}	fclose(f);#endif // end AC_SEND_FM_PK}#ifdef _ACFMPK_LISTvoid NPC_ManorSavePKSchedule(int meindex, int toindex, int flg){	int fmpks_pos, manorid, dueltime;	char msg[1024], n1[256], n2[256], n3[256];	char token[256], hadfmname[256];	int hadfmindex=0, hadfmpopular=0, tkfmindex=0;	int PkFlg=0;	if( toindex == -1 ){		dueltime = CHAR_getWorkInt(meindex, NPC_WORK_PEACEWAIT) + NowTime.tv_sec;		sprintf(msg, "%d|%d|%s|%d|%s|%d|%d|%d|%s",			dueltime, 0, "", 0, "", 0, 0, flg, "");		PkFlg = 0;	}else{		struct tm tm1;		int index;		tkfmindex = CHAR_getWorkInt(toindex, CHAR_WORKFMINDEXI);		fmpks_pos = CHAR_getWorkInt(meindex, NPC_WORK_ID) * MAX_SCHEDULE;		manorid = CHAR_getWorkInt(meindex, NPC_WORK_MANORID);		memcpy( &tm1, localtime( (time_t *)&NowTime.tv_sec), sizeof( tm1));		dueltime = CHAR_getWorkInt(meindex, NPC_WORK_CHALLENGEWAIT) + NowTime.tv_sec - tm1.tm_min*60 + 1800;		getStringFromIndexWithDelim( fmpointlist.pointlistarray[manorid-1], "|", 5, token, sizeof(token));		hadfmindex = atoi( token);		getStringFromIndexWithDelim( fmpointlist.pointlistarray[manorid-1], "|", 7, token, sizeof(token));		hadfmpopular = atoi( token);		getStringFromIndexWithDelim( fmpointlist.pointlistarray[manorid-1], "|", 6, token, sizeof(token));		strcpy( hadfmname, token);		makeEscapeString( hadfmname, n1, sizeof(n1));		makeEscapeString( CHAR_getChar(toindex, CHAR_FMNAME), n2, sizeof(n2));				makeEscapeString( getGameserverID(), n3, sizeof(n3));		sprintf(msg, "%d|%d|%s|%d|%s|%d|%d|%d|%s",			dueltime, hadfmindex-1, n1, tkfmindex, n2, 15, 50, FMPKS_FLAG_MANOR_OTHERPLANET, n3);		PkFlg = 1;		{			char buf1[256];			sprintf( buf1,"%d", CHAR_getWorkInt( meindex, NPC_WORK_ID) );			Logfmpk(				 n1, hadfmindex-1, 0,				 n2, tkfmindex, 0,				 "", buf1, n3, 1);		}	}	saacproto_ACSendFmPk_send( acfd, -1, PkFlg, CHAR_getWorkInt( meindex, NPC_WORK_ID), msg);}#endif

⌨️ 快捷键说明

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