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

📄 npc_windowhealer.c

📁 石器时代2.0完整版源代码.已经加入新功能. 在REDHAT9下GCC3.4编译成功.
💻 C
📖 第 1 页 / 共 2 页
字号:
#include "version.h"#include <string.h>#include "char.h"#include "object.h"#include "char_base.h"#include "npcutil.h"#include "lssproto_serv.h"#include "npc_windowhealer.h"#define RATE  1000/*  * 涩烂今木凶它奴件玉它毛请允NPC * */enum {	CHAR_WORK_LEVEL	= CHAR_NPCWORKINT1,	CHAR_WORK_RANGE	= CHAR_NPCWORKINT2,	CHAR_WORK_HP	= CHAR_NPCWORKINT3,	CHAR_WORK_MP	= CHAR_NPCWORKINT4,};static void NPC_WindowHealer_selectWindow( int meindex, int toindex, int num);void NPC_WindowHealerAllHeal( int talker,int mode );BOOL NPC_WindowHealerLevelCheck(int meindex,int talker);BOOL NPC_WindowMoneyCheck(int meindex,int talker,int mode);int NPC_WindowCostCheck(int meindex,int talker);BOOL NPC_PetHealerCheck(int talker);int NPC_WindowCostCheckMp(int meindex,int talker);/******************************************************************/BOOL NPC_WindowHealerInit( int meindex ){	char *npcarg;	char buf2[256];	int range=1;	int rate;	double drate;    CHAR_setInt( meindex , CHAR_WHICHTYPE , CHAR_TYPEHEALER );    npcarg = CHAR_getChar(meindex,CHAR_NPCARGUMENT);	/*--荚汊允月午五及云嗯毛潸月伊矛伙毛筏盛--*/	if(getStringFromIndexWithDelim(npcarg,"|",1,buf2,sizeof(buf2))!=FALSE){		CHAR_setWorkInt(meindex,CHAR_WORK_LEVEL,atoi(buf2));	}else{		return FALSE;	}	if(getStringFromIndexWithDelim(npcarg, "|", 2, buf2, sizeof( buf2)) != FALSE ){		drate = atof(buf2);		if(drate==0) {			rate=500;		}else{			rate=(int) (drate * RATE);		}		CHAR_setWorkInt(meindex,CHAR_WORK_HP,rate);	}	if(getStringFromIndexWithDelim(npcarg, "|", 3, buf2, sizeof( buf2)) != FALSE ){		drate = atof(buf2);		if(drate==0){			rate=2000;		}else{			rate=(int)( drate * RATE);		}		CHAR_setWorkInt(meindex,CHAR_WORK_MP,rate);	}	if(getStringFromIndexWithDelim(npcarg, "|", 4, buf2, sizeof( buf2)) != FALSE ){		range=atoi(buf2);		if(range == 0){			range=1;		}	}	CHAR_setWorkInt(meindex,CHAR_WORK_RANGE,range);    return TRUE;}void NPC_WindowHealerTalked( int meindex , int talkerindex , char *szMes ,int color ){    if( CHAR_getInt( talkerindex , CHAR_WHICHTYPE ) != CHAR_TYPEPLAYER ) {    	return;    }	if( NPC_Util_CharDistance( talkerindex, meindex ) 		> CHAR_getWorkInt(meindex,CHAR_WORK_RANGE)){		return;	}	if( (CHAR_getWorkInt(talkerindex,CHAR_WORKPARTYMODE) == 0)	 || (CHAR_getWorkInt(talkerindex,CHAR_WORKPARTYMODE) == 2) ){		NPC_WindowHealer_selectWindow( meindex, talkerindex,0);	}else{		int i=0;		int otherindex;		for( i=0 ; i < CHAR_PARTYMAX ;i++){			otherindex=CHAR_getWorkInt(talkerindex,CHAR_WORKPARTYINDEX1+i);			if(otherindex != -1){				NPC_WindowHealer_selectWindow( meindex, otherindex,0);			}		}	}}void NPC_WindowHealerLooked( int meindex , int lookedindex){    if( CHAR_getInt( lookedindex , CHAR_WHICHTYPE ) != CHAR_TYPEPLAYER ) {    	return;    }	if( NPC_Util_CharDistance( lookedindex, meindex ) 		> CHAR_getWorkInt(meindex,CHAR_WORK_RANGE)){		 return;	}	NPC_WindowHealer_selectWindow( meindex, lookedindex,0);}static void NPC_WindowHealer_selectWindow( int meindex, int toindex, int num){	char token[1024];	char escapedname[1024];	int fd = getfdFromCharaIndex( toindex);	int buttontype=0;	int windowtype=0;	int windowno=0;	/*--它奶件玉它正奶皿丢永本□斥互云云中及匹燮卞涩烂--*/  	windowtype=WINDOW_MESSAGETYPE_MESSAGE;	switch( num){	  case 0:		sprintf(token,"    哎呀!你受伤了吗?  \n\n "				  "       < 耐久力回复>      \n"					"       <  气力回复 >      \n"					"      < 耐久力·气力回复 >   \n\n"				  "       <宠物回复(免费)>     "			);	  	buttontype=WINDOW_BUTTONTYPE_CANCEL;	  	windowtype=WINDOW_MESSAGETYPE_SELECT;	  	windowno=CHAR_WINDOWTYPE_WINDOWHEALER_STARTMSG; 	  	break;	  case 1:		if( CHAR_getInt(toindex,CHAR_HP) ==CHAR_getWorkInt( toindex, CHAR_WORKMAXHP)){			if(NPC_PetHealerCheck(toindex)==FALSE){				sprintf(token,				"       < 耐久力回复 >"				"\n\n\n\n    似乎没有必要回复唷! ");		  	}else{		  		sprintf(token,				"       < 耐久力回复 >"				"\n\n          似乎没有必要回复唷! "					  "\n\n   因为宠物好像也受伤了!"					  "\n                            先帮他回复吧!");		  			  		NPC_WindowHealerAllHeal(toindex,0 );		  	}		  	buttontype=WINDOW_BUTTONTYPE_OK;		  	windowno=CHAR_WINDOWTYPE_WINDOWHEALER_HPMSG; 			break;		}else if(NPC_WindowHealerLevelCheck(meindex,toindex)==TRUE){			sprintf(token,"       < 耐久力回复 >"					"\n\n\n       是要回复耐久力没错吧!    "					"\n\n 现在的等级可以免费帮你回复唷!");				}else{			int gold;			gold=NPC_WindowCostCheck(meindex,toindex);			sprintf(token,"       < 耐久力回复 >"				"\n\n\n       是要回复耐久力没错吧!    "				 "\n\n     收您%d的STONE 。"				 ,gold);		}	  	buttontype=WINDOW_BUTTONTYPE_YESNO;	  	windowno=CHAR_WINDOWTYPE_WINDOWHEALER_HPMSG; 	  	break;	  case 2:		if( CHAR_getInt(toindex,CHAR_MP) ==CHAR_getWorkInt( toindex, CHAR_WORKMAXMP)){			if(NPC_PetHealerCheck(toindex)==FALSE){				sprintf(token,  "        < 气力回复 >"					"\n\n\n\n    似乎没有必要回复唷! ");			}else{			sprintf(token,  "        < 气力回复 >"					"\n\n          似乎没有必要回复唷! "					  "\n\n   因为宠物好像也受伤了!"					  "\n                            先帮他回复吧!");				NPC_WindowHealerAllHeal(toindex,0 );			}		  	buttontype=WINDOW_BUTTONTYPE_OK;		  	windowno=CHAR_WINDOWTYPE_WINDOWHEALER_SPIRITMSG; 			break;		}		if(NPC_WindowHealerLevelCheck(meindex,toindex)==TRUE){			sprintf(token,"        < 气力回复>"					  "\n\n       是要回复气力没错吧!     "					  "\n\n 现在的等级可以免费帮你回复唷!");		}else{			int cost;			cost=NPC_WindowCostCheckMp(meindex,toindex);			sprintf(token,"        < 气力回复>"					"\n\n\n       是要回复气力没错吧! " 					  "\n\n    收您%d的STONE 。",					cost);		}	  	buttontype=WINDOW_BUTTONTYPE_YESNO;	  	windowno=CHAR_WINDOWTYPE_WINDOWHEALER_SPIRITMSG; 	  	break;	  case 3:		sprintf(token,	    "\n      <耐久力已回复>"						    "\n    <宠物也已回复一般状态>"						"\n\n\n       这样子就没问题了!    ");	  	NPC_WindowHealerAllHeal( toindex ,1 );	  	buttontype=WINDOW_BUTTONTYPE_OK;	  	windowno=CHAR_WINDOWTYPE_WINDOWHEALER_OKHPMSG; 	  	break;	  case 4:		sprintf(token,	    "\n      <气力已回复>"						    "\n   <宠物也已回复一般状态>"						"\n\n\n      这样子就没问题了!    ");	  	NPC_WindowHealerAllHeal( toindex ,2 );	 	buttontype=WINDOW_BUTTONTYPE_OK;	  	windowno=CHAR_WINDOWTYPE_WINDOWHEALER_OKSPIRITMSG; 	  	break;	  case 6:		{			int cost=0;			if(CHAR_getInt(toindex,CHAR_HP) < CHAR_getWorkInt( toindex, CHAR_WORKMAXHP))			{				cost+=NPC_WindowCostCheck(meindex,toindex);			}			if( CHAR_getInt(toindex,CHAR_MP) < CHAR_getWorkInt( toindex, CHAR_WORKMAXMP))			{				cost=cost+NPC_WindowCostCheckMp(meindex,toindex);			}					if(cost==0) {				if(NPC_PetHealerCheck(toindex)==FALSE){				sprintf(token,						"      < 耐久力气力回复 >"				"\n\n\n\n    似乎没有必要回复唷! ");				}else{				sprintf(token,"      < 耐久力气力回复 >"					"\n\n          似乎没有必要回复唷! "					  "\n\n   因为宠物好像也受伤了!"					  "\n                            先帮他回复吧!");				NPC_WindowHealerAllHeal(toindex,0 );			}													  	buttontype=WINDOW_BUTTONTYPE_OK;			  	windowtype=WINDOW_MESSAGETYPE_MESSAGE;			  	windowno=CHAR_WINDOWTYPE_WINDOWHEALER_SPIRITMSG; 				break;			}else{				sprintf(token,"     < 耐久力气力回复 >"						"\n\n\n     是要回复耐久力气力没错吧!"						"\n\n     收您%d的STONE 。",cost);			}		}		if(NPC_WindowHealerLevelCheck(meindex,toindex)==TRUE){			sprintf(token,"      < 耐久力气力回复 >"					"\n\n\n      是要回复耐久力气力没错吧!"					"\n\n 现在的等级可以免费帮你回复唷!");		}		  	buttontype=WINDOW_BUTTONTYPE_YESNO;	  	windowtype=WINDOW_MESSAGETYPE_MESSAGE;	  	windowno=CHAR_WINDOWTYPE_WINDOWHEALER_ALLMSG; 	  	break;	  case 7:		sprintf(token,"     <耐久力气力已回复>"				  "\n    <宠物也已回复一般状态>"				  "\n\n\n    这样一来就回复健康了!");	  		  	NPC_WindowHealerAllHeal( toindex ,3 );		buttontype=WINDOW_BUTTONTYPE_OK;	  	windowtype=WINDOW_MESSAGETYPE_MESSAGE;	  	windowno=CHAR_WINDOWTYPE_WINDOWHEALER_OKALLMSG; 	  	break;	  case 8:		sprintf(token,"\n\n\n\n   真可惜似乎所带的金钱不够唷!");		buttontype=WINDOW_BUTTONTYPE_OK;	  	windowtype=WINDOW_MESSAGETYPE_MESSAGE;	  	windowno=CHAR_WINDOWTYPE_WINDOWHEALER_OKHPMSG; 	  	break;	  case 9:		sprintf(token,"       <宠物回复>      "				"\n\n\n       已经没问题了啦!     "				  "\n\n  但是太勉强的话也不行唷!  ");		NPC_WindowHealerAllHeal(toindex,0 );		buttontype=WINDOW_BUTTONTYPE_OK;	  	windowtype=WINDOW_MESSAGETYPE_MESSAGE;	  	windowno=CHAR_WINDOWTYPE_WINDOWHEALER_OKHPMSG; 	  	break;	  case 10:		sprintf(token,"       <宠物回复>      "				"\n\n\n  似乎没有必要回复宠物的样子。 "				  "\n\n  但是太勉强的话也不行唷!  ");		buttontype=WINDOW_BUTTONTYPE_OK;	  	windowtype=WINDOW_MESSAGETYPE_MESSAGE;	  	windowno=CHAR_WINDOWTYPE_WINDOWHEALER_OKHPMSG; 	  	break;	}	makeEscapeString( token, escapedname, sizeof(escapedname));	/*-仇仇匹霜耨允月--*/	lssproto_WN_send( fd, windowtype, 					buttontype, 					windowno,					CHAR_getWorkInt( meindex, CHAR_WORKOBJINDEX),					escapedname);}

⌨️ 快捷键说明

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