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

📄 npc_fmdengon.c

📁 石器时代2.0完整版源代码.已经加入新功能. 在REDHAT9下GCC3.4编译成功.
💻 C
📖 第 1 页 / 共 4 页
字号:
#endif							makeEscapeString( numberlistbuf, buf, sizeof(buf)));          }          break;				case WINDOW_BUTTONTYPE_OK:          break;				default:          break;        }    }        // 家族强者表(前叁十)    else if( seqno == CHAR_WINDOWTYPE_FM_DPTOP)    {			char listbuf[4096],tmp_buffer[4096];			int  listindex;			getStringFromIndexWithDelim(data,"|",1,tmp_buffer,sizeof(tmp_buffer));			listindex = atoi(tmp_buffer);						switch( select ){			case WINDOW_BUTTONTYPE_NEXT:			case WINDOW_BUTTONTYPE_PREV:				{					int fd,i;					fd = getfdFromCharaIndex( talker );					if( fd == -1 )  return;										listindex += 10 * (( select == WINDOW_BUTTONTYPE_NEXT) ? 1 : -1);										if( listindex >= 30) 						return;					//listindex = 20;					//listindex -= 10;					//else if( listindex < 1 ) 					//    listindex = 0;					if (listindex < 0) return;										buttontype = WINDOW_BUTTONTYPE_OK;					if( (listindex + 10) >= 30) 						buttontype |= WINDOW_BUTTONTYPE_PREV;					else if( listindex==0 )						buttontype |= WINDOW_BUTTONTYPE_NEXT;					else{						buttontype |= WINDOW_BUTTONTYPE_PREV;						buttontype |= WINDOW_BUTTONTYPE_NEXT;					}										strcpy( listbuf, fmdptop.topmemo[listindex]);					strcat( listbuf, "\n");					for( i=(listindex+1); i<listindex+10; i++){						strcat( listbuf, fmdptop.topmemo[i]);						strcat( listbuf, "\n");					}					sprintf(tmp_buffer, "%d\n", listindex);					strcat( listbuf, tmp_buffer);					#ifdef _FMVER21              					lssproto_WN_send( fd, WINDOW_FMMESSAGETYPE_TOP30DP,#else					lssproto_WN_send( fd, WINDOW_FMMESSAGETYPE_DP,#endif              						buttontype,						CHAR_WINDOWTYPE_FM_DPTOP,#ifndef _FM_MODIFY						CHAR_getWorkInt( index, CHAR_WORKOBJINDEX),#else						-1,#endif						makeEscapeString( listbuf, buf, sizeof(buf)));				}				break;			case WINDOW_BUTTONTYPE_OK:				break;			default:				break;			}    }    // 据点列表    else if( seqno == CHAR_WINDOWTYPE_FM_POINTLIST)    {			char pointbuf[1024];			int  pointlistindex;			strcpy( pointbuf, "");			pointlistindex = 0;			buttonevent = atoi(data);						switch( select ){			case WINDOW_BUTTONTYPE_NEXT:			case WINDOW_BUTTONTYPE_PREV:				{					int fd;										fd = getfdFromCharaIndex( talker );					if( fd == -1 )  return;#ifdef _FIX_FM_FMPOINT					char x[4];					char y[4];					char fmindex[4];					char name[32];					int windowtype = WINDOW_MESSAGETYPE_MESSAGE;					pointlistindex += 5 * (( select == WINDOW_BUTTONTYPE_NEXT) ? 1 : -1);										if( pointlistindex > 5) 						pointlistindex -= 5;					else if( pointlistindex < 1 ) 						pointlistindex = 0;											buttontype = WINDOW_BUTTONTYPE_OK;					if( CHAR_getInt( talker, CHAR_FMLEADERFLAG) == FMMEMBER_LEADER &&						          CHAR_getWorkInt(talker, CHAR_WORKFMSETUPFLAG)==1){						if(select==WINDOW_BUTTONTYPE_NEXT)							CHAR_setInt( talker, CHAR_LISTPAGE,1);						else if(select==WINDOW_BUTTONTYPE_PREV)							CHAR_setInt( talker, CHAR_LISTPAGE,0);						int tkfmindex = CHAR_getWorkInt(talker, CHAR_WORKFMINDEXI);						int i,check=TRUE;						char fmindex[4];						for(i=0; i<MANORNUM; i++){	// 10个庄园						  getStringFromIndexWithDelim(fmpointlist.pointlistarray[i], "|", 5, fmindex, sizeof(fmindex));						  if(tkfmindex==atoi(fmindex)-1 ){						  	 check=FALSE;						   	 break;						  }						}					  if(check==TRUE){							for (i=CHAR_getInt( talker, CHAR_LISTPAGE); i<CHAR_getInt( talker, CHAR_LISTPAGE)+5; i++){	// 10个庄园							  getStringFromIndexWithDelim(fmpointlist.pointlistarray[i], "|", 5, fmindex, sizeof(fmindex));						 	  if(atoi(fmindex)<=0 ){						   		check=TRUE;						    	break;						  	}						  }						}					  if(check==TRUE){					   	windowtype = WINDOW_MESSAGETYPE_SELECT;							strcpy(pointbuf,"3\n             “家族据地列表”\n\n");					  }else{					  	windowtype = WINDOW_MESSAGETYPE_MESSAGE;					   	strcpy(pointbuf,"             “家族据地列表”\n\n");													}					}else{						strcpy(pointbuf,"             “家族据地列表”\n\n");					}					strcat(pointbuf," “地 点”“东”“南”“状  态”\n");					if( (pointlistindex + 5) > 5){							getStringFromIndexWithDelim( fmpointlist.pointlistarray[5],"|",3, x, sizeof( x));							getStringFromIndexWithDelim( fmpointlist.pointlistarray[5],"|",4, y, sizeof( y));							getStringFromIndexWithDelim( fmpointlist.pointlistarray[5],"|",5, fmindex, sizeof( fmindex));							getStringFromIndexWithDelim( fmpointlist.pointlistarray[5],"|",6, name, sizeof( name));							if(atoi(fmindex)<=0)strcpy(name,"  未占领");							sprintf(pointbuf,"%s  塔 尔 塔  %3s   %3s   %s\n", pointbuf, x, y, name);							getStringFromIndexWithDelim( fmpointlist.pointlistarray[6],"|",3, x, sizeof( x));							getStringFromIndexWithDelim( fmpointlist.pointlistarray[6],"|",4, y, sizeof( y));							getStringFromIndexWithDelim( fmpointlist.pointlistarray[6],"|",5, fmindex, sizeof( fmindex));							getStringFromIndexWithDelim( fmpointlist.pointlistarray[6],"|",6, name, sizeof( name));							if(atoi(fmindex)<=0)strcpy(name,"  未占领");							sprintf(pointbuf,"%s  尼 克 斯  %3s   %3s   %s\n", pointbuf, x, y, name);							getStringFromIndexWithDelim( fmpointlist.pointlistarray[7],"|",3, x, sizeof( x));							getStringFromIndexWithDelim( fmpointlist.pointlistarray[7],"|",4, y, sizeof( y));							getStringFromIndexWithDelim( fmpointlist.pointlistarray[7],"|",5, fmindex, sizeof( fmindex));							getStringFromIndexWithDelim( fmpointlist.pointlistarray[7],"|",6, name, sizeof( name));							if(atoi(fmindex)<=0)strcpy(name,"  未占领");							sprintf(pointbuf,"%s  弗 列 顿  %3s   %3s   %s\n", pointbuf, x, y, name);							getStringFromIndexWithDelim( fmpointlist.pointlistarray[8],"|",3, x, sizeof( x));							getStringFromIndexWithDelim( fmpointlist.pointlistarray[8],"|",4, y, sizeof( y));							getStringFromIndexWithDelim( fmpointlist.pointlistarray[8],"|",5, fmindex, sizeof( fmindex));							getStringFromIndexWithDelim( fmpointlist.pointlistarray[8],"|",6, name, sizeof( name));							if(atoi(fmindex)<=0)strcpy(name,"  未占领");							sprintf(pointbuf,"%s  亚 伊 欧  %3s   %3s   %s\n", pointbuf, x, y, name);							getStringFromIndexWithDelim( fmpointlist.pointlistarray[9],"|",3, x, sizeof( x));							getStringFromIndexWithDelim( fmpointlist.pointlistarray[9],"|",4, y, sizeof( y));							getStringFromIndexWithDelim( fmpointlist.pointlistarray[9],"|",5, fmindex, sizeof( fmindex));							getStringFromIndexWithDelim( fmpointlist.pointlistarray[9],"|",6, name, sizeof( name));							if(atoi(fmindex)<=0)strcpy(name,"  未占领");							sprintf(pointbuf,"%s  瑞尔亚斯  %3s   %3s   %s\n", pointbuf, x, y, name);							buttontype |= WINDOW_BUTTONTYPE_PREV;					}else if( pointlistindex==0 ){							getStringFromIndexWithDelim( fmpointlist.pointlistarray[0],"|",3, x, sizeof( x));							getStringFromIndexWithDelim( fmpointlist.pointlistarray[0],"|",4, y, sizeof( y));							getStringFromIndexWithDelim( fmpointlist.pointlistarray[0],"|",5, fmindex, sizeof( fmindex));							getStringFromIndexWithDelim( fmpointlist.pointlistarray[0],"|",6, name, sizeof( name));							if(atoi(fmindex)<=0)strcpy(name,"  未占领");							sprintf(pointbuf,"%s  萨姆吉尔  %3s   %3s   %s\n", pointbuf, x, y, name);							getStringFromIndexWithDelim( fmpointlist.pointlistarray[1],"|",3, x, sizeof( x));							getStringFromIndexWithDelim( fmpointlist.pointlistarray[1],"|",4, y, sizeof( y));							getStringFromIndexWithDelim( fmpointlist.pointlistarray[1],"|",5, fmindex, sizeof( fmindex));							getStringFromIndexWithDelim( fmpointlist.pointlistarray[1],"|",6, name, sizeof( name));							if(atoi(fmindex)<=0)strcpy(name,"  未占领");							sprintf(pointbuf,"%s  玛丽娜斯  %3s   %3s   %s\n", pointbuf, x, y, name);							getStringFromIndexWithDelim( fmpointlist.pointlistarray[2],"|",3, x, sizeof( x));							getStringFromIndexWithDelim( fmpointlist.pointlistarray[2],"|",4, y, sizeof( y));							getStringFromIndexWithDelim( fmpointlist.pointlistarray[2],"|",5, fmindex, sizeof( fmindex));							getStringFromIndexWithDelim( fmpointlist.pointlistarray[2],"|",6, name, sizeof( name));							if(atoi(fmindex)<=0)strcpy(name,"  未占领");							sprintf(pointbuf,"%s  加  加  %3s   %3s   %s\n", pointbuf, x, y, name);							getStringFromIndexWithDelim( fmpointlist.pointlistarray[3],"|",3, x, sizeof( x));							getStringFromIndexWithDelim( fmpointlist.pointlistarray[3],"|",4, y, sizeof( y));							getStringFromIndexWithDelim( fmpointlist.pointlistarray[3],"|",5, fmindex, sizeof( fmindex));							getStringFromIndexWithDelim( fmpointlist.pointlistarray[3],"|",6, name, sizeof( name));							if(atoi(fmindex)<=0)strcpy(name,"  未占领");							sprintf(pointbuf,"%s  卡鲁他那  %3s   %3s   %s\n", pointbuf, x, y, name);							getStringFromIndexWithDelim( fmpointlist.pointlistarray[4],"|",3, x, sizeof( x));							getStringFromIndexWithDelim( fmpointlist.pointlistarray[4],"|",4, y, sizeof( y));							getStringFromIndexWithDelim( fmpointlist.pointlistarray[4],"|",5, fmindex, sizeof( fmindex));							getStringFromIndexWithDelim( fmpointlist.pointlistarray[4],"|",6, name, sizeof( name));							if(atoi(fmindex)<=0)strcpy(name,"  未占领");							sprintf(pointbuf,"%s  伊  甸  %3s   %3s   %s\n", pointbuf, x, y, name);							buttontype |= WINDOW_BUTTONTYPE_NEXT;					}else{							buttontype |= WINDOW_BUTTONTYPE_PREV;							buttontype |= WINDOW_BUTTONTYPE_NEXT;					}#else					int i;					pointlistindex += 10 * (( select == WINDOW_BUTTONTYPE_NEXT) ? 1 : -1);										if( pointlistindex > FMPOINTNUM) 						pointlistindex -= 10;					else if( pointlistindex < 1 ) 						pointlistindex = 0;										buttontype = WINDOW_BUTTONTYPE_OK;					if( (pointlistindex + 10) > FMPOINTNUM) 						buttontype |= WINDOW_BUTTONTYPE_PREV;					else if( pointlistindex==0 )						buttontype |= WINDOW_BUTTONTYPE_NEXT;					else{						buttontype |= WINDOW_BUTTONTYPE_PREV;						buttontype |= WINDOW_BUTTONTYPE_NEXT;					}										strcpy( pointbuf, fmpointlist.pointlistarray[pointlistindex]);					strcat( pointbuf, "\n");					for( i=(pointlistindex+1); i<pointlistindex+10; i++){						strcat( pointbuf, fmpointlist.pointlistarray[i]);						strcat( pointbuf, "\n");					}#endif#ifdef _FIX_FM_FMPOINT					lssproto_WN_send( fd, windowtype,#else					lssproto_WN_send( fd, WINDOW_FMMESSAGETYPE_POINTLIST,#endif						buttontype,						CHAR_WINDOWTYPE_FM_POINTLIST,#ifndef _FM_MODIFY						CHAR_getWorkInt( index, CHAR_WORKOBJINDEX),#else						-1,#endif#ifndef _FIX_FM_FMPOINT					pointbuf);	#else					makeEscapeString( pointbuf, buf, sizeof(buf)));#endif				}				break;			case WINDOW_BUTTONTYPE_OK:				break;			default:#ifdef _FIX_FM_FMPOINT					ApplyFamilyPoint( index, talker, atoi(data)+CHAR_getInt( talker, CHAR_LISTPAGE)*5);#endif				break;			}    }            // 家族强者表(自己及前十大)    else if( seqno == CHAR_WINDOWTYPE_FM_DPME )    {			switch( select ){			case WINDOW_BUTTONTYPE_PREV:				{					int  fd;										fd = getfdFromCharaIndex( talker );					if( fd == -1 )  return;										if( NowTime.tv_sec > READTIME3 ){						saacproto_ACShowTopFMList_send(acfd, FM_TOP_INTEGRATE);						saacproto_ACShowTopFMList_send(acfd, FM_TOP_ADV);    						saacproto_ACShowTopFMList_send(acfd, FM_TOP_FEED);						saacproto_ACShowTopFMList_send(acfd, FM_TOP_SYNTHESIZE);						saacproto_ACShowTopFMList_send(acfd, FM_TOP_DEALFOOD);						saacproto_ACShowTopFMList_send(acfd, FM_TOP_PK);                           						READTIME3 = NowTime.tv_sec+FM_WAITTIME;					}										strcpy( NPC_sendbuf, "\n              三十大家族声望列表\n");					strcat( NPC_sendbuf, "              十大冒险家族\n");					strcat( NPC_sendbuf, "              十大饲育家族\n");					strcat( NPC_sendbuf, "              十大合成家族\n");					strcat( NPC_sendbuf, "              十大料理家族\n");					strcat( NPC_sendbuf, "              十大战斗家族\n");					strcat( NPC_sendbuf, "              自己家族声望列表\n");							lssproto_WN_send( fd, WINDOW_MESSAGETYPE_SELECT,						WINDOW_BUTTONTYPE_NONE,						CHAR_WINDOWTYPE_FM_DPSELECT,#ifndef _FM_MODIFY						CHAR_getWorkInt( index, CHAR_WORKOBJINDEX),#else						-1,#endif						makeEscapeString( NPC_sendbuf, buf, sizeof(buf)));                				}				break;			case WINDOW_BUTTONTYPE_OK:				break;			default:				break;			}			    }  }// call FmDengon NPC event#ifndef _FM_MODIFYvoid NPC_FmDengonLooked( int meindex, int lookedindex ){    char buf[DENGONFILEENTRYSIZE*MESSAGEINONEWINDOW*2];    char menubuf[4096];    int  fd;        if (!CHAR_CHECKINDEX(lookedindex)) return;        fd = getfdFromCharaIndex( lookedindex );    if( fd == -1 )  return;        // 必须站在布告栏的前面一格    if( NPC_Util_CharDistance( lookedindex, meindex ) > 1) return;    // 空白处请勿更动    strcpy( menubuf, "                『家族布告栏』\n\n");	strcat( menubuf, "                 家族成员列表\n");	strcat( menubuf, "                   家族留言\n");	strcat( menubuf, "                家族之间留言板\n");	strcat( menubuf, "                 申请家族据点\n");	strcat( menubuf, "                家族之间强者表");            lssproto_WN_send(fd, WINDOW_MESSAGETYPE_SELECT,        	     WINDOW_BUTTONTYPE_CANCEL,                     CHAR_WINDOWTYPE_FM_SELECT, 		     CHAR_getWorkInt( meindex, CHAR_WORKOBJINDEX),		     makeEscapeString( menubuf, buf, sizeof(buf)));        }#elsevoid NPC_FmDengonLooked( int meindex, int lookedindex ){    char buf[DENGONFILEENTRYSIZE*MESSAGEINONEWINDOW*2];    char menubuf[4096];    int  fd;        if (!CHAR_CHECKINDEX(lookedindex)) return;        fd = getfdFromCharaIndex( lookedindex );    if( fd == -1 )  return;        // 空白处请勿更动    strcpy( menubuf, "                『家族布告栏』\n\n");		strcat( menubuf, "                 家族成员列表\n");		strcat( menubuf, "                   家族留言\n");		strcat( menubuf, "                家族之间留言板\n");		strcat( menubuf, "                 申请家族据点\n");		strcat( menubuf, "                家族之间强者表");            lssproto_WN_send(fd,										 WINDOW_MESSAGETYPE_SELECT,        						 WINDOW_BUTTONTYPE_CANCEL,                     CHAR_WINDOWTYPE_FM_SELECT, 										 -1,										 makeEscapeString( menubuf, buf, sizeof(buf)));        }#endif#ifdef _FIX_FM_FMPOINTvoid ApplyFamilyPoint( int meindex, int toindex, int select){		int fd = getfdFromCharaIndex(toindex);		if (fd == -1) return;		char fmindex[4];		char buf[64];		int tkfmindex = CHAR_getWorkInt(toindex, CHAR_WORKFMINDEXI);		int i,check=0;		for (i=0; i<=MANORNUM-1; i++) {	// 10个庄园       getStringFromIndexWithDelim(fmpointlist.pointlistarray[i], "|", 5, fmindex, sizeof(fmindex));       if (tkfmindex==atoi(fmindex)-1){       	 return;       }    }    if(memberlist[tkfmindex].fmjoinnum<30)    	check=1;    else if(CHAR_getInt( toindex, CHAR_FAME)<300000)    	check=2;		getStringFromIndexWithDelim( fmpointlist.pointlistarray[select-1],"|",5, fmindex, sizeof( fmindex));		if(atoi(fmindex)<=0 && check==0){			saacproto_ACFixFMPoint_send(acfd,CHAR_getChar(toindex, CHAR_FMNAME),tkfmindex+1,tkfmindex,																		CHAR_getChar(toindex, CHAR_FMNAME),tkfmindex+1,tkfmindex,select);			sprintf(buf, "恭喜你!\n    该庄园已经是你的了。");			lssproto_WN_send( fd, WINDOW_MESSAGETYPE_MESSAGE,	WINDOW_BUTTONTYPE_OK,	    												0,	CHAR_getWorkInt(meindex, CHAR_WORKOBJINDEX),	buf);	  }else{	  	if(check==0)					sprintf(buf, "该庄园据点已有人占领了,请到该庄园的踢馆管理员处申请踢馆抢夺庄园吧!");			else if(check==1)					sprintf(buf, "很抱歉,申请庄园据点家族人必数需满30人!");			else if(check==2)					sprintf(buf, "很抱歉,申请庄园据点家族声望必需3000以上!");			lssproto_WN_send( fd, WINDOW_MESSAGETYPE_MESSAGE,	WINDOW_BUTTONTYPE_OK,	    												0,	CHAR_getWorkInt(meindex, CHAR_WORKOBJINDEX),	buf);	  }}#endif

⌨️ 快捷键说明

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