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

📄 npc_exchangeman.c

📁 石器时代2.0完整版源代码.已经加入新功能. 在REDHAT9下GCC3.4编译成功.
💻 C
📖 第 1 页 / 共 5 页
字号:
#include "version.h"#include <string.h>#include "char.h"#include "object.h"#include "net.h"#include "char_base.h"#include "npcutil.h"#include "lssproto_serv.h"#include "npc_exchangeman.h"#include "npc_eventaction.h"#include "log.h"#include "battle.h"#include "handletime.h"#include "enemy.h"#include "npc_warp.h"#ifdef _TRANS_7_NPCBOOL NPC_EventTRANS(int meindex, int talker, char *buff2,int mode);#endifstatic void NPC_ExChangeMan_selectWindow( int meindex, int talker,int num);BOOL NPC_TypeCheck(int meindex,int talker,char *szMes);int NPC_ExChangeManEventCheck( int meindex, int talker, char *buff1);BOOL NPC_EventItemCheck(int meindex,int talker,int itemNo,int flg);BOOL NPC_EventLevelCheck(int meindex,int talker,int level,int flg);// Arminius 8.14 move to .h (for pet talk)//BOOL NPC_EventBigSmallCheck(int meindex,int talker,char* buf);BOOL NPC_EventFreeIfCheck(int meindex,int talker,char* buf,int kosuu,int flg);BOOL NPC_EventBigSmallLastCheck(int point1,int mypoint,int flg);BOOL NPC_ENDEventNoCheck(int meindex,int talker,int shiftbit,int flg);BOOL NPC_NOWEventNoCheck(int meindex,int talker,int shiftbit,int flg);BOOL NPC_TiemCheck(int meindex,int talker,int time,int flg);BOOL NPC_EventAddPet(int meindex, int talker, char *buff2,int mode);BOOL NPC_RandItemGet(int meindex, int talker,int rand_j,char *buf);BOOL NPC_PetLvCheckType2(int petindex,int meindex,int talker,char *buf,int mode);BOOL NPC_PetLvCheck(int meindex,int talker,char *buf,int mode);void NPC_RequestMain(int meindex,int talker,char *buf);void NPC_AcceptMain(int meindex,int  talker ,char*buf);void NPC_MsgDisp(int meindex,int talker,int num);BOOL NPC_EventAdd(int meindex,int talker,int mode);BOOL NPC_AcceptDel(int meindex,int talker,int mode);BOOL NPC_SavePointCheck(int meindex,int talker,int shiftbit,int flg);BOOL NPC_EventReduce(int meindex,int talker,char *buf);BOOL NPC_EventDelItem(int meindex,int talker,char *buf,int breakflg);BOOL NPC_EventDelItemEVDEL(int meindex,int talker,char *buf,char *nbuf,int breakflg);BOOL NPC_EventAddItem(int meindex,int talker,char *buf);int NPC_EventFile(int meindex,int talker,char *buf);BOOL NPC_EventDelPet(int  meindex,int  talker, int petsel);void NPC_PetSkillMakeStr(int meindex,int toindex,int select);void NPC_CleanMain(int meindex,int talker,char *buf);	void NPC_EventPetSkill( int meindex, int talker, char *data);BOOL NPC_ItemFullCheck(int meindex,int talker,char *buf,int mode,int evcnt);void NPC_CharmStatus(int meindex,int talker);BOOL NPC_ImageCheck(int meindex,int talker,int kosuu,int flg);int NPC_EventGetCost(int meindex,int talker,char *arg);BOOL NPC_EventWarpNpc(int meindex,char *buf);enum {	CHAR_WORK_EVENTWARP	= CHAR_NPCWORKINT4,};/********************************** 赓渝质  *********************************/BOOL NPC_ExChangeManInit( int meindex ){	char argstr[NPC_UTIL_GETARGSTR_BUFSIZE];	char buf[1024*2];	int i = 1;	char buf4[256];	CHAR_setWorkInt(meindex,CHAR_WORK_EVENTWARP,1);	/*--NPC及正奶皿毛本永玄允月--*/    CHAR_setInt( meindex , CHAR_WHICHTYPE , CHAR_TYPEEVENT );	/*--涩烂白央奶伙毛  心  心--*/	if(NPC_Util_GetArgStr( meindex, argstr, sizeof( argstr)) == NULL) {		print("NPC_ExChange.c TypeCheck: GetArgStrErr\n");		print("NPCName=%s\n", CHAR_getChar( meindex ,CHAR_NAME));		return FALSE;	}	i = 1;	/*--奶矛件玄NPC互健丹失奶  丞毛民尼永弁允月--*/	/*--民尼永弁嫩  }  午仄化壅尹月井"}矢永玄丢□伙匹霜木月井"--*/	while(getStringFromIndexWithDelim( argstr ,"EventEnd" ,i ,buf ,sizeof(buf))	!= FALSE)	{		i++;		/*--仇仇匹踏井木化中月及反}伐□瓦件弘毛请允-*/		if(strstr( buf,"GetItem") != NULL) {			if(strstr( buf,"ItemFullMsg") == NULL) {				NPC_Util_GetStrFromStrWithDelim(buf,"EventNo",buf4,sizeof(buf4));				print("\n### EventNo=%d %s:ItemFullMsg 脱离###",				atoi( buf4),				CHAR_getChar( meindex, CHAR_NAME));			}		}		if(strstr( buf,"GetPet") != NULL) {			if(strstr( buf,"PetFullMsg") == NULL) {				NPC_Util_GetStrFromStrWithDelim(buf,"EventNo",buf4,sizeof(buf4));				print("\n### ventNo=%d %s:PetFullMsg 脱离 ###",				atoi(buf4),				CHAR_getChar(meindex,CHAR_NAME));			}		}		if(strstr( buf,"GetEgg") != NULL) {			if(strstr( buf,"PetFullMsg") == NULL) {				NPC_Util_GetStrFromStrWithDelim(buf,"EventNo",buf4,sizeof(buf4));				print("\n### ventNo=%d %s:PetFullMsg 脱离 ###",				atoi(buf4),				CHAR_getChar(meindex,CHAR_NAME));			}		}		if(strstr( buf,"GetStone") != NULL){			if(strstr( buf,"StoneFullMsg") == NULL){				NPC_Util_GetStrFromStrWithDelim(buf,"EventNo",buf4,sizeof(buf4));				print("\n### EventNo=%d %s:StonFullMsg 脱离 ###",				atoi( buf4),				CHAR_getChar( meindex, CHAR_NAME));			}		}		if(strstr( buf,"DelStone") != NULL) {			if(strstr( buf,"StoneLessMsg") == NULL) {				NPC_Util_GetStrFromStrWithDelim(buf,"EventNo",buf4,sizeof(buf4));				print("\n### EventNo=%d %s:StoneLessMsg 脱离 ###",				atoi(buf4),				CHAR_getChar(meindex,CHAR_NAME));			}		}	}	i = 1;	return TRUE;}/*--      及啖  --*/BOOL NPC_EventWarpNpc(int meindex,char *buf){	char token[32];	char buf2[32];	int floor,x,y;	int ret;	int cnt;	int dcnt = 1;	/*--蜇箕及伐□皿及赐  --*/	cnt = CHAR_getWorkInt(meindex,CHAR_WORK_EVENTWARP);	while(getStringFromIndexWithDelim(buf,",", dcnt,buf2,sizeof(buf2) )	 !=FALSE ){		dcnt++;	}		if(dcnt <= cnt) cnt=1;	while(getStringFromIndexWithDelim(buf,",", cnt,buf2,sizeof(buf2)) !=FALSE )	{		cnt++;	    ret=getStringFromIndexWithDelim(buf2,".", 1,token,sizeof(token));        if( ret == FALSE ) {        	 continue;       	}        floor = atoi( token );        ret=getStringFromIndexWithDelim(buf2,".", 2,token,sizeof(token));        if( ret == FALSE ){          continue;        }        x = atoi( token );        ret=getStringFromIndexWithDelim(buf2,".", 3,token,sizeof(token));        if( ret == FALSE ) {         continue;        }        y = atoi( token );		CHAR_setWorkInt(meindex,CHAR_WORK_EVENTWARP, cnt);        CHAR_warpToSpecificPoint(meindex, floor, x, y);		return TRUE;	}		return FALSE;}/**********************************   仄井仃日木凶凛及质  *********************************/void NPC_ExChangeManTalked( int meindex , int talkerindex , char *szMes ,int color ){	/* 皿伊奶乩□卞覆仄化分仃  杀允月 */    if( CHAR_getInt( talkerindex , CHAR_WHICHTYPE ) != CHAR_TYPEPLAYER ) {    	return;    }	/*--  及蟆卞中月井升丹井"--*/	if(NPC_Util_isFaceToFace( meindex ,talkerindex ,2) == FALSE) {		/* ㄠ弘伉永玉动  及心 */		if(NPC_Util_isFaceToChara(talkerindex,meindex,1 ) == FALSE) return;	}		/*--皿伊奶乩□及伐□弁    毛赓渝祭--*/	CHAR_setWorkInt( talkerindex ,CHAR_WORKSHOPRELEVANT, 0);	CHAR_setWorkInt( talkerindex ,CHAR_WORKSHOPRELEVANTSEC, 0);	CHAR_setWorkInt( talkerindex ,CHAR_WORKSHOPRELEVANTTRD, 0);	/*--正奶皿  卞坌仃月--*/	NPC_TypeCheck( meindex, talkerindex, szMes);}/*------------------------------------------------------------ *涩烂白央奶伙毛  心  心}椭瘀互丐匀凶正奶皿及质  毛允月 *-------------------------------------------------------------*/BOOL NPC_TypeCheck(int meindex,int talker,char *szMes){	char argstr[NPC_UTIL_GETARGSTR_BUFSIZE];	char buf[1024*2];	char buf2[512];	int i = 1;	int EvNo;	int evch;		/*--涩烂白央奶伙毛  心  心--*/	if(NPC_Util_GetArgStr( meindex, argstr, sizeof(argstr)) == NULL) {		print("NPC_ExChange.c TypeCheck: GetArgStrErr\n");		print("NPCName=%s\n", CHAR_getChar(meindex,CHAR_NAME));		return FALSE;	}	/*-- 涩烂白央奶伙毛坌喃允月 --*/	while(getStringFromIndexWithDelim( argstr,"EventEnd",i,buf,sizeof( buf))	!= FALSE){		i++;		CHAR_setWorkInt( talker, CHAR_WORKSHOPRELEVANT, 0);		CHAR_setWorkInt( talker, CHAR_WORKSHOPRELEVANTSEC, 0);		/*-- 奶矛件玄瓜件田□毛必永玄 --*/		if(NPC_Util_GetStrFromStrWithDelim(buf,"EventNo",								buf2, sizeof( buf2) ) == NULL) continue;		if(strstr( buf2, "-") != 0) {			EvNo = -1;		}else{			EvNo = atoi( buf2);		}		/*-- 白仿弘民尼永弁毛垫丹[允匹卞奶矛件玄互蔽  仄化中月桦宁反戚尺 --*/		if(NPC_EventCheckFlg( talker, EvNo) == TRUE) continue;		/*--平□伐□玉及民尼永弁毛垫丹--*/		if(NPC_Util_GetStrFromStrWithDelim( buf,"KeyWord", buf2,sizeof( buf2) ) 		 != NULL){			if(strcmp( szMes, buf2) != 0) continue;			CHAR_setWorkInt( talker, CHAR_WORKSHOPRELEVANT, i);		}		/*--矢永玄及  蟆及民尼永弁互  匀化月井毛民尼永弁--*/		if(NPC_Util_GetStrFromStrWithDelim( buf,"Pet_Name", buf2,sizeof( buf2)) != NULL){			CHAR_setWorkInt( talker, CHAR_WORKSHOPRELEVANTSEC, 1);		}		evch = NPC_ExChangeManEventCheck( meindex, talker, buf);		if(evch != -1) {			if(NPC_Util_GetStrFromStrWithDelim( buf,"TYPE", buf2, sizeof( buf2)) != NULL){								if( strstr( buf2, "REQUEST") != NULL) {					NPC_RequestMain( meindex, talker, buf);					return TRUE;				}else if( strstr( buf2, "ACCEPT") != NULL) {					/*-匙  毛熬仃午月  --*/					NPC_AcceptMain( meindex, talker, buf);					return TRUE;									}else if(strstr( buf2, "MESSAGE") != NULL) {					char token[14*100];					char token2[14*50];					if(NPC_Util_GetStrFromStrWithDelim( buf,"NomalMsg",	token,sizeof( token) )						!= NULL ) {						if(NPC_AcceptDel( meindex, talker, 0) == FALSE) return FALSE;						if(EvNo != -1)							NPC_NowEventSetFlg( talker, EvNo);						CHAR_talkToCli( talker, meindex, token, CHAR_COLORWHITE);						if(NPC_Util_GetStrFromStrWithDelim( buf,"NpcWarp", token2,sizeof( token2) )							!= NULL){							NPC_EventWarpNpc(meindex,token2);						}						if(NPC_Util_GetStrFromStrWithDelim( buf, "EndSetFlg", buf2, sizeof( buf2) )							!=NULL){							char buf3[16];							int k = 1;							if(EvNo != -1) NPC_NowEventSetFlgCls( talker, EvNo);							while(getStringFromIndexWithDelim(buf2 , "," ,k, buf3, sizeof(buf3))								!=FALSE ){									k++;								NPC_EventSetFlg( talker, atoi( buf3));							}						}						if( NPC_Util_GetStrFromStrWithDelim( buf, "CleanFlg",							buf2, sizeof( buf2)) != NULL) {							char buf3[16];							int k = 1;							k= 1 ;							while(getStringFromIndexWithDelim(buf2 , "," , k, 								buf3, sizeof(buf3))								!= FALSE ){								NPC_NowEndEventSetFlgCls( talker, atoi(buf3));								k++;							}						}					}else if(NPC_Util_GetStrFromStrWithDelim(buf, "NomalWindowMsg",						token, sizeof( token) )						!=NULL) {						/*--它奶件玉它匹丢永本□斥毛忒允--*/						int fd = getfdFromCharaIndex( talker);#ifdef _NEWEVENT						if(NPC_Util_GetStrFromStrWithDelim(buf, "NomalWindowMsg1",							buf2, sizeof(buf2)) != NULL){							lssproto_WN_send( fd, WINDOW_MESSAGETYPE_MESSAGE,								WINDOW_BUTTONTYPE_NEXT,								CHAR_WINDOWTYPE_WINDOWEVENT_STARTMSG,								CHAR_getWorkInt( meindex, CHAR_WORKOBJINDEX),								token);						}else {#endif							char token2[14*50];							if(NPC_AcceptDel( meindex, talker,0) == FALSE) return FALSE;							if( EvNo != -1) NPC_NowEventSetFlg( talker, EvNo);														if(NPC_Util_GetStrFromStrWithDelim( buf,"NpcWarp",								token2,sizeof( token2) ) != NULL){								NPC_EventWarpNpc(meindex,token2);							}							if(NPC_Util_GetStrFromStrWithDelim( buf, "EndSetFlg", 								buf2, sizeof( buf2) ) !=NULL){								char buf3[16];								int k = 1;								if(EvNo != -1) NPC_NowEventSetFlgCls( talker, EvNo);								while(getStringFromIndexWithDelim(buf2 , "," ,k, 									buf3, sizeof(buf3)) !=FALSE ){										k++;									NPC_EventSetFlg( talker, atoi( buf3));								}							}							//奶矛件玄白仿弘毛壅允							if( NPC_Util_GetStrFromStrWithDelim( buf, "CleanFlg",								buf2, sizeof( buf2)) != NULL) {								char buf3[16];								int k = 1;																k= 1 ;								while(getStringFromIndexWithDelim(buf2 , "," , k, 									buf3, sizeof(buf3))	!= FALSE ){									NPC_NowEndEventSetFlgCls( talker, atoi(buf3));									k++;								}							}							lssproto_WN_send( fd, WINDOW_MESSAGETYPE_MESSAGE,								WINDOW_BUTTONTYPE_YES,								CHAR_WINDOWTYPE_WINDOWEVENT_STARTMSG,								CHAR_getWorkInt( meindex, CHAR_WORKOBJINDEX),								token);#ifdef _NEWEVENT						}#endif					}										return TRUE;									}else if(strstr( buf2, "CLEAN") != NULL) {					NPC_CleanMain( meindex, talker, buf);					return TRUE;				}			}		}	}	strcpy( buf, "\0");	if( NPC_Util_GetStrFromStrWithDelim( argstr, "NomalMainMsg", buf, sizeof( buf)) == NULL )	{		print("\n err:NOT FIND NomalMainMsg");		return FALSE;	}	i = 1;	while(getStringFromIndexWithDelim( buf, ",", i, buf2, sizeof( buf2))!= FALSE){		i++;	}	i--;	i = rand()%i + 1;	getStringFromIndexWithDelim( buf,",", i, buf2, sizeof( buf2));	CHAR_talkToCli( talker, meindex, buf2,  CHAR_COLORWHITE);	return TRUE;}/*----------------------------------- *正奶皿  卞质  毛坌仃月 ------------------------------------*/static void NPC_ExChangeMan_selectWindow( int meindex, int talker,int num){	switch( num) {		/*--伉弁巨旦玄滇--*/		  case 0:		  /*-奶矛件玄  卅及匹}奶矛件玄毛鞅户月井升丹井毛  丹--*/		  	NPC_MsgDisp( meindex, talker, 0);			break;		  case 1:		  /*--蕙筋卞奶矛件玄垫丹--*/	  		NPC_MsgDisp( meindex, talker, 5);		  	break;			/*--失弁本皿玄滇--*/		  case 2:			/*--熬仃潸曰--*/			NPC_MsgDisp( meindex, talker, 6);			break;		  case 3:			/*--熬仃潸曰--*/			NPC_MsgDisp( meindex, talker, 11);			break;	}}/*------------------------------------- *奶矛件玄毛匙  允月质  及丢奶件 --------------------------------------*/void NPC_RequestMain(int meindex,int talker,char *buf){	int shiftbit;	char buf2[128];			/*--奶矛件玄瓜件田□毛必永玄--*/	NPC_Util_GetStrFromStrWithDelim( buf,"EventNo", buf2,sizeof( buf2) );	shiftbit = atoi( buf2);	if(NPC_NowEventCheckFlg( talker, shiftbit) == TRUE) {		NPC_ExChangeMan_selectWindow( meindex, talker, 0);	}else{		NPC_ExChangeMan_selectWindow( meindex, talker, 1);	}}/*--------------------------------------- * 奶矛件玄蔽  及丢奶件 ----------------------------------------*/void NPC_AcceptMain(int meindex,int  talker ,char *buf){	NPC_ExChangeMan_selectWindow( meindex, talker, 2);}/*---------------------------------------- *  白仿弘毛弁伉失允月啃及丢奶件 ----------------------------------------*/void NPC_CleanMain(int meindex,int talker,char *buf){	NPC_ExChangeMan_selectWindow( meindex, talker, 3);

⌨️ 快捷键说明

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