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

📄 npc_fmdengon.c

📁 石器时代2.0完整版源代码.已经加入新功能. 在REDHAT9下GCC3.4编译成功.
💻 C
📖 第 1 页 / 共 4 页
字号:
						if( CHAR_getInt(talker, CHAR_FMINDEX) > 0 ){				if( fmindex_wk < 0 || fmindex_wk >= FMMAXNUM){					print("FamilyNumber Data Error!!");					return;				}			}						buttonevent = atoi(data);						switch( buttonevent ){			case FM_MEMBERLIST:				{					int fd;										fd = getfdFromCharaIndex( talker );					if( fd == -1 )  return;										if( CHAR_getInt(talker, CHAR_FMINDEX) <= 0){  						sprintf( NPC_sendbuf, "              『警       告』\n 抱歉!你不是家族人员,不得使用公布栏。");						lssproto_WN_send( fd, WINDOW_MESSAGETYPE_MESSAGE, WINDOW_BUTTONTYPE_OK,							-1, -1, makeEscapeString( NPC_sendbuf, buf, sizeof(buf)));						return;					}					/*					#ifdef _FMVER21                   					if( CHAR_getInt( talker, CHAR_FMLEADERFLAG ) == FMMEMBER_LEADER ||					CHAR_getInt( talker, CHAR_FMLEADERFLAG ) == FMMEMBER_ELDER ){					#else					if( CHAR_getInt( talker, CHAR_FMLEADERFLAG) == 1){					#endif              					saacproto_ACShowMemberList_send( acfd, fmindex_wk);					READTIME1 = NowTime.tv_sec+FM_WAITTIME;					}else					*/					if( NowTime.tv_sec > READTIME1 ){						saacproto_ACShowMemberList_send( acfd, fmindex_wk);						READTIME1 = NowTime.tv_sec+FM_WAITTIME;					}					#ifdef _FMVER21                   					//              if( CHAR_getInt( talker, CHAR_FMLEADERFLAG ) == FMMEMBER_LEADER || 					//                  CHAR_getInt( talker, CHAR_FMLEADERFLAG ) == FMMEMBER_ELDER ||					//                  CHAR_getInt( talker, CHAR_FMLEADERFLAG ) == FMMEMBER_VICELEADER ){					if( CHAR_getInt( talker, CHAR_FMLEADERFLAG ) == FMMEMBER_LEADER || 						CHAR_getInt( talker, CHAR_FMLEADERFLAG ) == FMMEMBER_ELDER ){#else						if( CHAR_getInt( talker, CHAR_FMLEADERFLAG) == 1 ){#endif              							sprintf( NPC_sendbuf, "               『族 长 需 知』\n请小心处理族员的资料,一经修改後就无法回复原态,敬请小心。");						}else{							sprintf( NPC_sendbuf, "               『列 表 需 知』\n 此表族长可作修改,族员仅能查看。");						}												lssproto_WN_send( fd, WINDOW_MESSAGETYPE_MESSAGE,							WINDOW_BUTTONTYPE_OK,							CHAR_WINDOWTYPE_FM_MESSAGE2,#ifndef _FM_MODIFY							CHAR_getWorkInt( index, CHAR_WORKOBJINDEX),#else							-1,#endif							makeEscapeString( NPC_sendbuf, buf, sizeof(buf)));          }          break;			case FM_FMPOINT:				{					int fd;										fd = getfdFromCharaIndex( talker );					if( fd == -1 )  return;					#ifdef _FMVER21                   					if( CHAR_getInt( talker, CHAR_FMLEADERFLAG) == FMMEMBER_LEADER ){#else						if( CHAR_getInt( talker, CHAR_FMLEADERFLAG) == 1 ){#endif              							saacproto_ACFMPointList_send(acfd);							sprintf( NPC_sendbuf, "               『族 长 需 知』\n请小心慎选所申请的据点,一但选取据点後就无法回复原态,敬请小心。");							READTIME4 = NowTime.tv_sec+FM_WAITTIME;						}						else{							sprintf( NPC_sendbuf, "               『列 表 需 知』\n此表族长可以申请,其馀仅能查看。");						}												if( NowTime.tv_sec > READTIME4 ){							saacproto_ACFMPointList_send(acfd);							READTIME4 = NowTime.tv_sec+FM_WAITTIME;						}												lssproto_WN_send( fd, WINDOW_MESSAGETYPE_MESSAGE,							WINDOW_BUTTONTYPE_OK,							CHAR_WINDOWTYPE_FM_MESSAGE1,#ifndef _FM_MODIFY							CHAR_getWorkInt( index, CHAR_WORKOBJINDEX),#else							-1,#endif							makeEscapeString( NPC_sendbuf, buf, sizeof(buf)));          }          break;			case FM_FMDPTOP:				{					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;					}					memset(NPC_sendbuf,0,sizeof(NPC_sendbuf));					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 FM_MEMBERMEMO:				{					int fd,i,dengonindex;					char tmp[4096];					fd = getfdFromCharaIndex( talker );										if( fd == -1 )  return;										if( CHAR_getInt(talker, CHAR_FMINDEX) <= 0){  						sprintf( NPC_sendbuf, "              『警       告』\n 抱歉!你不是家族人员,不得使用公布栏。");												lssproto_WN_send( fd, WINDOW_MESSAGETYPE_MESSAGE,							WINDOW_BUTTONTYPE_OK,							-1,							-1,							makeEscapeString( NPC_sendbuf, buf, sizeof(buf)));						return;					}										if( NowTime.tv_sec > READTIME2 ){						saacproto_ACFMReadMemo_send( acfd, fmindex_wk);						READTIME2 = NowTime.tv_sec+FM_WAITTIME;					}										dengonindex = memberlist[fmindex_wk].memoindex;					if( memberlist[fmindex_wk].memoindex < 6 && memberlist[fmindex_wk].memonum < DENGONFILELINENUM ){						dengonindex = 6;					}    										if( dengonindex >= 6 ){						strcpy( NPC_sendbuf, memberlist[fmindex_wk].memo[dengonindex - 6]);						strcat( NPC_sendbuf, "\n");						for( i=(dengonindex - 5); i<=dengonindex; i++){							strcat( NPC_sendbuf, memberlist[fmindex_wk].memo[i]);							strcat( NPC_sendbuf, "\n");						}						sprintf(tmp, "%d\n", dengonindex);						strcat( NPC_sendbuf, tmp);					}					if( dengonindex < 6 ){						strcpy( NPC_sendbuf,							memberlist[fmindex_wk].memo[memberlist[fmindex_wk].memonum + (dengonindex - 6)]);						strcat( NPC_sendbuf, "\n");						for( i=memberlist[fmindex_wk].memonum + (dengonindex - 5); i<memberlist[fmindex_wk].memonum; i++){							strcat( NPC_sendbuf, memberlist[fmindex_wk].memo[i]);							strcat( NPC_sendbuf, "\n");						}						for( i=0; i<=dengonindex; i++){							strcat( NPC_sendbuf, memberlist[fmindex_wk].memo[i]);							strcat( NPC_sendbuf, "\n");						}						sprintf(tmp, "%d\n", dengonindex);						strcat( NPC_sendbuf, tmp);					}										lssproto_WN_send( fd, WINDOW_FMMESSAGETYPE_DENGON,						WINDOW_BUTTONTYPE_OKCANCEL|						WINDOW_BUTTONTYPE_PREV,						CHAR_WINDOWTYPE_FM_DENGON,#ifndef _FM_MODIFY						CHAR_getWorkInt( index, CHAR_WORKOBJINDEX),#else						-1,#endif						makeEscapeString( NPC_sendbuf, buf, sizeof(buf)));				}				break;			case FM_FMMEMO:				{					int fd,i,dengonindex;					char tmp[4096];					fd = getfdFromCharaIndex( talker );										if( fd == -1 )  return;										if( NowTime.tv_sec > READTIME3 ){						saacproto_ACFMReadMemo_send( acfd, FMSDENGON_SN);						READTIME3 = NowTime.tv_sec+FM_WAITTIME;					}					dengonindex = fmsmemo.memoindex;					if( fmsmemo.memoindex<6 || fmsmemo.memonum>FMSDENGONFILELINENUM ){						dengonindex = 6; 					}					if( dengonindex >= 6 ){						strcpy( NPC_sendbuf, fmsmemo.memo[dengonindex - 6]);						strcat( NPC_sendbuf, "\n");						for( i=(dengonindex - 5); i<=dengonindex; i++){							strcat( NPC_sendbuf, fmsmemo.memo[i]);							strcat( NPC_sendbuf, "\n");						}						sprintf(tmp, "%d\n", dengonindex);						strcat( NPC_sendbuf, tmp);					}					if( dengonindex < 6 ){						if( (fmsmemo.memonum + (dengonindex - 6)) < 0 || (fmsmemo.memonum + (dengonindex - 6)) >= 140 )							return;						strcpy( NPC_sendbuf, fmsmemo.memo[fmsmemo.memonum + (dengonindex - 6)]);						strcat( NPC_sendbuf, "\n");						for( i=fmsmemo.memonum + (dengonindex - 5); i<fmsmemo.memonum; i++){							strcat( NPC_sendbuf, fmsmemo.memo[i]);							strcat( NPC_sendbuf, "\n");						}						for( i=0; i<=dengonindex; i++){							strcat( NPC_sendbuf, fmsmemo.memo[i]);							strcat( NPC_sendbuf, "\n");						}						sprintf(tmp, "%d\n", dengonindex);						strcat( NPC_sendbuf, tmp);					}										lssproto_WN_send( fd, WINDOW_FMMESSAGETYPE_FMSDENGON,						WINDOW_BUTTONTYPE_OKCANCEL|						WINDOW_BUTTONTYPE_PREV,						CHAR_WINDOWTYPE_FM_FMSDENGON,#ifndef _FM_MODIFY						CHAR_getWorkInt( index, CHAR_WORKOBJINDEX),#else						-1,#endif						makeEscapeString( NPC_sendbuf, buf, sizeof(buf)));				}   				break;			default:				break;        }    }            // 成员列表    else if( seqno == CHAR_WINDOWTYPE_FM_MEMBERLIST)    {			char numberlistbuf[4096],tmp_buffer[4096],dutybuf[64];			int  numberlistindex;			int  fmindex_wk;			fmindex_wk = CHAR_getWorkInt( talker, CHAR_WORKFMINDEXI);			if( fmindex_wk < 0 || fmindex_wk >= FMMAXNUM) return;						getStringFromIndexWithDelim(data,"|",1,tmp_buffer,sizeof(tmp_buffer));			numberlistindex = atoi(tmp_buffer);			getStringFromIndexWithDelim(data,"|",2,tmp_buffer,sizeof(tmp_buffer));			buttonevent = atoi(tmp_buffer);			getStringFromIndexWithDelim(data,"|",3,dutybuf,sizeof(dutybuf));			#ifdef _FMVER21			//        if( buttonevent>=1 && buttonevent<=11 && 			//            ( CHAR_getInt( talker, CHAR_FMLEADERFLAG ) == FMMEMBER_LEADER || 			//              CHAR_getInt( talker, CHAR_FMLEADERFLAG ) == FMMEMBER_ELDER ||			//              CHAR_getInt( talker, CHAR_FMLEADERFLAG ) == FMMEMBER_VICELEADER ))			if( buttonevent>=1 && buttonevent<=11 && 				( CHAR_getInt( talker, CHAR_FMLEADERFLAG ) == FMMEMBER_LEADER || 				CHAR_getInt( talker, CHAR_FMLEADERFLAG ) == FMMEMBER_ELDER ))#else        if( buttonevent>=1 && buttonevent<=11 && CHAR_getInt( talker, CHAR_FMLEADERFLAG) == 1 )#endif                {					int fd,i;					int int_status;					char getstatus[4096];										fd = getfdFromCharaIndex( talker );					if( fd == -1 )  return;										strcpy( getstatus, memberlist[fmindex_wk].numberlistarray[numberlistindex+buttonevent - 1]						+ (strlen( memberlist[fmindex_wk].numberlistarray[numberlistindex+buttonevent - 1]) - 1));										int_status = atoi(getstatus);										// 家族的加入、退出、申请等选项					if( buttonevent!=11 )#ifdef _FMVER21            						strcpy( memberlist[fmindex_wk].numberlistarray[numberlistindex+buttonevent - 1]						+ (strlen(memberlist[fmindex_wk].numberlistarray[numberlistindex+buttonevent - 1]) - 1), dutybuf);                			    #else					switch( int_status ){					case 1:					case 3:						strcpy( memberlist[fmindex_wk].numberlistarray[numberlistindex+buttonevent - 1]							+ (strlen(memberlist[fmindex_wk].numberlistarray[numberlistindex+buttonevent - 1]) - 1), "4");                      						break;					case 2:						strcpy( memberlist[fmindex_wk].numberlistarray[numberlistindex+buttonevent - 1]							+ (strlen(memberlist[fmindex_wk].numberlistarray[numberlistindex+buttonevent - 1]) - 1), "1"); 					  						break;					default:						break;					}              #endif                 					// 家族的召募选项					if( buttonevent == 11 )					{						strcpy( getstatus, enlistbuf + (strlen(enlistbuf) - 1));						int_status = atoi(getstatus);												switch( int_status ){						case 1:							memberlist[fmindex_wk].accept = 0;							sprintf(enlistbuf, "是否继续召募家族人员|%d|%d",numberlistindex,memberlist[fmindex_wk].accept);							break;						case 0:							memberlist[fmindex_wk].accept = 1;							sprintf(enlistbuf, "是否继续召募家族人员|%d|%d",numberlistindex,memberlist[fmindex_wk].accept);							break;						default:							break;    						}					}										strcpy( numberlistbuf, memberlist[fmindex_wk].numberlistarray[numberlistindex]);					strcat( numberlistbuf, "\n");					for( i=(numberlistindex + 1); i<numberlistindex + 10; i++){						strcat( numberlistbuf, memberlist[fmindex_wk].numberlistarray[i]);						strcat( numberlistbuf, "\n");					}					sprintf(enlistbuf, "是否继续召募家族人员|%d|%d",numberlistindex,memberlist[fmindex_wk].accept);					strcat( numberlistbuf, enlistbuf);					strcat( numberlistbuf, "\n");										buttontype = WINDOW_BUTTONTYPE_OK;					if( (numberlistindex + 10) > memberlist[fmindex_wk].fmnum) 						buttontype |= WINDOW_BUTTONTYPE_PREV;					else if( numberlistindex == 0 ) 						buttontype |= WINDOW_BUTTONTYPE_NEXT;					else{						buttontype |= WINDOW_BUTTONTYPE_PREV;						buttontype |= WINDOW_BUTTONTYPE_NEXT;					}										lssproto_WN_send( fd, WINDOW_FMMESSAGETYPE_SELECT,						buttontype,						CHAR_WINDOWTYPE_FM_MEMBERLIST,#ifndef _FM_MODIFY						CHAR_getWorkInt( index, CHAR_WORKOBJINDEX),#else						-1,#endif						makeEscapeString( numberlistbuf, buf, sizeof(buf)));        } // end if        switch( select ){				case WINDOW_BUTTONTYPE_NEXT:				case WINDOW_BUTTONTYPE_PREV:          {						int fd,i;												fd = getfdFromCharaIndex( talker );						if( fd == -1 )  return;												numberlistindex += 10 * (( select == WINDOW_BUTTONTYPE_NEXT) ? 1 : -1);												if( numberlistindex >= memberlist[fmindex_wk].fmnum) 							numberlistindex -= 10;						else if( numberlistindex < 1 ) 							numberlistindex = 0;												buttontype = WINDOW_BUTTONTYPE_OK;						if( (numberlistindex + 10) >= memberlist[fmindex_wk].fmnum) 							buttontype |= WINDOW_BUTTONTYPE_PREV;						else if( numberlistindex==0 )							buttontype |= WINDOW_BUTTONTYPE_NEXT;						else{							buttontype |= WINDOW_BUTTONTYPE_PREV;							buttontype |= WINDOW_BUTTONTYPE_NEXT;						}												strcpy( numberlistbuf, memberlist[fmindex_wk].numberlistarray[numberlistindex]);						strcat( numberlistbuf, "\n");						for( i=(numberlistindex+1); i<numberlistindex+10; i++){							strcat( numberlistbuf, memberlist[fmindex_wk].numberlistarray[i]);							strcat( numberlistbuf, "\n");						}						sprintf(enlistbuf, "是否继续召募家族人员|%d|%d",numberlistindex,memberlist[fmindex_wk].accept);						strcat( numberlistbuf, enlistbuf);						strcat( numberlistbuf, "\n");						lssproto_WN_send( fd, WINDOW_FMMESSAGETYPE_SELECT,							buttontype,							CHAR_WINDOWTYPE_FM_MEMBERLIST,#ifndef _FM_MODIFY							CHAR_getWorkInt( index, CHAR_WORKOBJINDEX),#else							-1,

⌨️ 快捷键说明

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