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

📄 npc_mic.c

📁 石器时代2.0完整版源代码.已经加入新功能. 在REDHAT9下GCC3.4编译成功.
💻 C
字号:
#include "version.h"#include <stdio.h>#include <string.h>#include "common.h"#include "char_base.h"#include "char.h"#include "npcutil.h"#include "npc_mic.h"#include "saacproto_cli.h"#include "lssproto_serv.h"#include "battle.h"enum {	CHAR_WORK_FLOOR = CHAR_NPCWORKINT1,	CHAR_WORK_LX = CHAR_NPCWORKINT2,	CHAR_WORK_LY = CHAR_NPCWORKINT3,	CHAR_WORK_RX = CHAR_NPCWORKINT4,	CHAR_WORK_RY = CHAR_NPCWORKINT5,	CHAR_WORK_MODE = CHAR_NPCWORKINT6,	CHAR_WORK_TYPE = CHAR_NPCWORKINT7,	CHAR_WORK_WIND = CHAR_NPCWORKINT8,	CHAR_WORK_FMFL = CHAR_NPCWORKINT9,};BOOL NPC_MicInit( int meindex ){	int		i;	int	 	arg_param[8];	char 	argstr[256];	char	buf[64];			NPC_Util_GetArgStr( meindex, argstr, sizeof(argstr));    if( strstr(argstr, "FREE")!=NULL){   		CHAR_setWorkInt(meindex,CHAR_WORK_TYPE,1);   	}    if( strstr(argstr, "WIND")!=NULL){   		CHAR_setWorkInt(meindex,CHAR_WORK_WIND,1);   	}   		if( strstr( argstr , "|" ) != NULL){		for( i = 1; i < 9; i ++ ) {		    if( getStringFromIndexWithDelim(argstr, "|" , i , buf,sizeof(buf) )	    		== FALSE ) 	    	    {	    		printf( "NPC_MIC:省略参数\n");	    		arg_param[i-1] = 0;	    		continue;	    	    }	   	    arg_param[i-1] = atoi(buf);		}		CHAR_setWorkInt( meindex, CHAR_WORK_FLOOR, arg_param[0]);		CHAR_setWorkInt( meindex, CHAR_WORK_LX, min( arg_param[1],arg_param[3]));		CHAR_setWorkInt( meindex, CHAR_WORK_LY, min( arg_param[2],arg_param[4]));		CHAR_setWorkInt( meindex, CHAR_WORK_RX, max( arg_param[1],arg_param[3]));		CHAR_setWorkInt( meindex, CHAR_WORK_RY, max( arg_param[2],arg_param[4]));		CHAR_setInt( meindex, CHAR_WHICHTYPE, CHAR_TYPEMIC);				CHAR_setWorkInt( meindex, CHAR_WORK_FMFL, arg_param[7]);		return TRUE;	}else{		CHAR_setInt( meindex, CHAR_WHICHTYPE, CHAR_TYPEMIC);		CHAR_setWorkInt( meindex, CHAR_WORK_MODE, 1);		return TRUE;	}	return FALSE;}void NPC_MicTalked( int meindex , int talkerindex , char *msg ,int color ){	int	i;    	int     playernum;	int	x,y;	char	message[4096];	char	buf[2048];	   	if( CHAR_getInt(talkerindex,CHAR_WHICHTYPE) != CHAR_TYPEPLAYER) return;	if(CHAR_getWorkInt(meindex,CHAR_WORK_TYPE) == 0){		if(NPC_Util_isFaceToChara(talkerindex,meindex,1 ) ==FALSE) return;	}			snprintf( buf, sizeof( buf), "%s\n%s",				CHAR_getChar( talkerindex, CHAR_NAME),				msg);		// Robin 0621 族长广播	print(" MIC_FL:%d ", CHAR_getWorkInt( meindex, CHAR_WORK_FMFL ));	if( CHAR_getWorkInt( meindex, CHAR_WORK_FMFL ) != 0 )	{#ifdef _FMVER21			if( CHAR_getInt( talkerindex, CHAR_FMLEADERFLAG ) == FMMEMBER_LEADER) #else		if( CHAR_getInt( talkerindex, CHAR_FMLEADERFLAG ) == 1) #endif				    // && ( CHAR_getWorkInt( talkerindex, CHAR_WORKFMFLOOR) == CHAR_getWorkInt( meindex, CHAR_WORK_FLOOR ) ) )		{			print(" FMLeaderTalk_send:%s,%d,%d,%s ",				CHAR_getChar( talkerindex, CHAR_FMNAME), CHAR_getInt( talkerindex, CHAR_FMINDEX),				CHAR_getWorkInt( talkerindex, CHAR_WORKFMINDEXI), buf);						sprintf(message, "[族长广播]%s", buf);			saacproto_ACFMAnnounce_send( acfd, 						CHAR_getChar( talkerindex, CHAR_FMNAME), 						CHAR_getInt( talkerindex, CHAR_FMINDEX),						CHAR_getWorkInt( talkerindex, CHAR_WORKFMINDEXI),						message,						color					);			return;		}	    		}	    		makeEscapeString( buf, message, sizeof(buf));	playernum = CHAR_getPlayerMaxNum();	for( i = 0; i < playernum; i ++ ) {		BOOL flg = FALSE;	        if( CHAR_getCharUse(i) == FALSE ) continue;            	if( CHAR_getInt( i, CHAR_WHICHTYPE) != CHAR_TYPEPLAYER ) continue;		if( CHAR_getInt( i, CHAR_FLOOR) != CHAR_getWorkInt( meindex, CHAR_WORK_FLOOR) ){			continue;		}		if( CHAR_getWorkInt( meindex, CHAR_WORK_MODE) == 0 ) {			x = CHAR_getInt( i, CHAR_X);			y = CHAR_getInt( i, CHAR_Y);			if( x >= CHAR_getWorkInt( meindex, CHAR_WORK_LX) && 				x <= CHAR_getWorkInt( meindex, CHAR_WORK_RX) &&				y >= CHAR_getWorkInt( meindex, CHAR_WORK_LY) &&				y <= CHAR_getWorkInt( meindex, CHAR_WORK_RY)){				flg = TRUE;			}		}else {			flg = TRUE;		}		if( flg) {			CHAR_talkToCli( i, talkerindex, msg, CHAR_COLORYELLOW);			if( CHAR_getWorkInt( meindex, CHAR_WORK_WIND) == 1 ) {				if( CHAR_getWorkInt( i, CHAR_WORKBATTLEMODE) 					== BATTLE_CHARMODE_NONE) 				{					int fd = getfdFromCharaIndex( i);					if( fd != -1 ) {						lssproto_WN_send( fd, WINDOW_MESSAGETYPE_MESSAGE,										WINDOW_BUTTONTYPE_OK, 										CHAR_WINDOWTYPE_MICMESSAGE,										CHAR_getWorkInt( meindex, CHAR_WORKOBJINDEX),										message);					}				}			}		}	}}

⌨️ 快捷键说明

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