亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? npc_warpman.c

?? 石器時代8.0服務端完整源代碼。可以直接編譯
?? C
?? 第 1 頁 / 共 3 頁
字號:
#include "version.h"
#include <string.h>
#include "char.h"
#include "object.h"
#include "char_base.h"
#include "npcutil.h"
#include "lssproto_serv.h"
#include "saacproto_cli.h"
#include "npc_warpman.h"
#include "map_deal.h"
#include "readmap.h"
#include "battle.h"
#include "npc_exchangeman.h"
#include "log.h"
#include "enemy.h"
#include "handletime.h"
#include "npc_eventaction.h"

static void NPC_WarpMan_selectWindow( int meindex, int toindex, int num,int select);
//ANDY_END
BOOL NPC_GetDuelPointCheck(int meindex,int talker);
BOOL NPC_PARTY_CHAECK( int meindex, int talkerindex);
void NPC_ERR_DiSP(int meindex,int talker,int errNO);

BOOL NPC_BigSmallLastCheck(int point1,int mypoint,int flg);

//BOOL NPC_ItemCheck(int meindex,int talker,int itemNo,int flg);
int NPC_FloorUse(int talker,int floor);
BOOL NPC_WarpMsg(int meindex,int talker,char *buf);
BOOL NPC_NpcWarpMsg(int meindex,int talker,char *arg);
int NPC_FloorUseOtherFloor(int charaindex, char *buf);


#ifdef  _NPC_ADDLEVELUP
void NPC_LevelAndTransUp( int meindex, int charindex, int level, int skillpoint, int exp, int ridepet);
#endif

#define WARPMAN_STANDBY 3000
#define WARPMAN_WAIT 150
//ANDY_ADD
int CheckWarpMsg( int meindex, int talkerindex,char *npcarg ,char *TalkStr);

#ifdef _TREASURE_BOX
BOOL NPC_TreasureEventRunMsg( int meindex);
#endif

BOOL NPC_TreasureRandItemGet(int meidex,int talker,int rand_j,char *buf);

enum {
	NPC_WORK_CURRENTTIME = CHAR_NPCWORKINT1,
	NPC_TIME_BORN = CHAR_NPCWORKINT2,
	NPC_TIME_DEAD = CHAR_NPCWORKINT3,
	NPC_TIME_MODE = CHAR_NPCWORKINT4,

	NPC_TIME_EVENTMODE = CHAR_NPCWORKINT6,// 1
	NPC_TIME_EVENTTIME = CHAR_NPCWORKINT7,
	NPC_TIME_EVENONBBI = CHAR_NPCWORKINT8,
	NPC_TIME_EVENOFFDBBI = CHAR_NPCWORKINT9,
	NPC_TIME_EVENTNUM = CHAR_NPCWORKINT10,
};

enum{
	NPC_EVENTMODE_NONE,
	NPC_EVENTMODE_OPEN,
	NPC_EVENTMODE_EVENT,
};

#ifdef _NEW_WARPMAN
static void NPC_NewWarpMan_selectWindow( int meindex, int toindex, int num,int select,char *TalkStr);

enum	{
	WARP_MAN=0,
	NEW_WARPMAN,
	NEW_WARPMAN_END
	};
#endif
#define TIMECHECKLOOP 20
// Robin 0518
//BOOL checkend = FALSE;


BOOL NPC_WarpManInit( int meindex )
{
	char npcarg[NPC_UTIL_GETARGSTR_BUFSIZE];
	char buff2[256];
	char buf[1024];
	int fl,x,y;
		
	if(NPC_Util_GetArgStr( meindex, npcarg, sizeof(npcarg))==NULL){
		print("WarpMan:GetArgStrErr");
		return FALSE;
	}
   	CHAR_setInt( meindex , CHAR_WHICHTYPE , CHAR_TYPEWARPMAN );
#ifdef _NEW_WARPMAN
	if( strstr( npcarg,"NEWWARPMAN") )      {
			//timeman 功能
			CHAR_setWorkInt( meindex, NPC_TIME_MODE, 1);
			if(NPC_Util_GetStrFromStrWithDelim( npcarg, "NEWTIME", buff2, sizeof( buff2)) != NULL ){
				CHAR_setInt( meindex, CHAR_LOOPINTERVAL, 60*1000);
			}
#ifdef _TREASURE_BOX
			CHAR_setWorkInt( meindex, NPC_TIME_EVENTMODE, NPC_EVENTMODE_NONE);
			if(NPC_Util_GetStrFromStrWithDelim( npcarg, "TREASURE_BOX", buff2, sizeof( buff2)) != NULL ){
				if( strstr( buff2, "ON") != NULL ){
					CHAR_setWorkInt( meindex, NPC_TIME_EVENTMODE, NPC_EVENTMODE_EVENT);
					CHAR_setWorkInt( meindex, NPC_TIME_EVENTTIME, NowTime.tv_sec);
					if(NPC_Util_GetStrFromStrWithDelim( npcarg, "TREASURE_ONBBI", buff2, sizeof( buff2)) != NULL )
						CHAR_setWorkInt( meindex, NPC_TIME_EVENONBBI, atoi( buff2));
					if(NPC_Util_GetStrFromStrWithDelim( npcarg, "TREASURE_OFFDBBI", buff2, sizeof( buff2)) != NULL )
						CHAR_setWorkInt( meindex, NPC_TIME_EVENOFFDBBI, atoi( buff2));
					CHAR_setWorkInt( meindex, NPC_TIME_EVENTNUM, 0 );
				}
			}

#endif
			return TRUE;
	}else{
#endif
		if(NPC_Util_GetStrFromStrWithDelim( npcarg, "WARP", buf, sizeof( buf))==NULL){
			char filename[256];
			 if( NPC_Util_CheckAssignArgFile( meindex, filename) != NULL )
				 print("\n Warpman Err -> file:%s", filename);
			return FALSE;
		}
		getStringFromIndexWithDelim(buf,",",1,buff2,sizeof(buff2));
		fl=atoi(buff2);
		getStringFromIndexWithDelim(buf,",",2,buff2,sizeof(buff2));
		x=atoi(buff2);
		getStringFromIndexWithDelim(buf,",",3,buff2,sizeof(buff2));
		y=atoi(buff2);
		if( MAP_IsValidCoordinate( fl,x,y )== FALSE ){
			char filename[256];
			NPC_Util_CheckAssignArgFile( meindex, filename);
			print( "\nWarp NPC: filename:%s\n 3.Invalid warpman ERR %d %d %d" , filename, fl , x , y );
			return FALSE;
		}
#ifdef _NEW_WARPMAN
	}
#endif
	return TRUE;
}

void NPC_WarpManTalked( int meindex , int talkerindex , char *szMes ,int color )
{
	char npcarg[NPC_UTIL_GETARGSTR_BUFSIZE];
	char token[256];
	int RunType=-1;
	
	CHAR_setWorkInt( talkerindex, CHAR_WORKWARPCHECK, FALSE );
	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;
	}
	if(NPC_Util_GetArgStr( meindex, npcarg, sizeof(npcarg))==NULL){
		print("GetArgStrErr");
		return ;
	}

#ifdef _NEW_WARPMAN
	if( strstr( npcarg,"NEWWARPMAN") )      {
#ifdef _TREASURE_BOX
		if( CHAR_getWorkInt( meindex, NPC_TIME_EVENTMODE) == NPC_EVENTMODE_OPEN )
			return;
#endif
		NPC_NewWarpMan_selectWindow( meindex ,talkerindex, 0, -1, szMes);
		return;
	}else	{
		if(NPC_PARTY_CHAECK( meindex, talkerindex) == FALSE)	{//有組隊
			NPC_ERR_DiSP( meindex, talkerindex, 1);
			return;
		}
		
		
		RunType = CheckWarpMsg( meindex, talkerindex, npcarg , szMes);
		if( RunType !=0 )	{
			if( RunType == 1 )	{
				if( NPC_Util_GetStrFromStrWithDelim( npcarg, "nomal_msg", token, sizeof(token)) != NULL)	{
					CHAR_talkToCli( talkerindex, meindex,token,CHAR_COLORWHITE);
				}
			}
			return;
		}
	}
#else
	
	
	if(NPC_PARTY_CHAECK( meindex, talkerindex) == FALSE)	{//有組隊
		NPC_ERR_DiSP( meindex, talkerindex, 1);
		return;
	}
	RunType = CheckWarpMsg( meindex, talkerindex, npcarg , szMes);
	if( RunType !=0 )	{
		if( RunType == 1 )	{
			if( NPC_Util_GetStrFromStrWithDelim( npcarg, "nomal_msg", token, sizeof(token)) != NULL)	{
				CHAR_talkToCli( talkerindex, meindex,token,CHAR_COLORWHITE);
			}
		}
		return;
	}
#endif
	
	CHAR_setWorkInt( talkerindex, CHAR_WORKSHOPRELEVANT, 0);
	CHAR_setWorkInt( talkerindex , CHAR_WORKSHOPRELEVANTTRD , 0 );
	if(strstr(npcarg,"DR")!=NULL)	{
		CHAR_setWorkInt( talkerindex , CHAR_WORKSHOPRELEVANTSEC , -1 );
		if(NPC_GetDuelPointCheck(meindex,talkerindex)==FALSE)	return;
	}else{
		NPC_WarpMan_selectWindow( meindex, talkerindex,0,-1);
	}
}

static void NPC_WarpMan_selectWindow( int meindex, int toindex, int num,int select)
{
	
	char npcarg[NPC_UTIL_GETARGSTR_BUFSIZE];
	char token[1024];
	char buf[256];
	char buf2[1024];
	char buf3[256];
	int fl=0	;
	int money=100	;
	int fd = getfdFromCharaIndex( toindex);
	char tmp[64];

	if(NPC_Util_GetArgStr( meindex, npcarg, sizeof(npcarg))==NULL){
		print("GetArgStrErr");
		CHAR_setWorkInt( toindex, CHAR_WORKSHOPRELEVANT, 0);
		return ;
	}

        if(NPC_PARTY_CHAECK( meindex, toindex) == FALSE)	{
		    NPC_ERR_DiSP( meindex, toindex, 1);
		    return;
		}


	if( CHAR_getWorkInt( toindex, CHAR_WORKSHOPRELEVANT) != 0 )	{
		return;
	}else	{
		CHAR_setWorkInt( toindex, CHAR_WORKSHOPRELEVANT, 1);
	}

	if(strstr(npcarg,"%4d")!=NULL){
		int flwork = 0;
		int work;
		NPC_Util_GetStrFromStrWithDelim( npcarg, "WARP", buf, sizeof( buf));
		getStringFromIndexWithDelim(buf,",",1,buf3,sizeof(buf3));
		work = atoi( buf3);
		fl = NPC_FloorUse( toindex, atoi(buf3));		

		if(NPC_Util_GetStrFromStrWithDelim( npcarg, "Floor", buf3, sizeof( buf3)) != NULL){
			flwork = NPC_FloorUseOtherFloor(work, buf3);
		}
		fl = fl +flwork;
	}

	NPC_Util_GetStrFromStrWithDelim( npcarg, "FREE", buf, sizeof( buf));

	if( (NPC_ActionPassCheck(meindex,toindex,buf)==TRUE) || (strstr(buf,"ALLFREE")!=NULL) ){
		if(NPC_Util_GetStrFromStrWithDelim( npcarg, "FreeMsg", buf2, sizeof( buf2))==NULL) return;
		      CONNECT_set_pass(fd,TRUE);
		      CONNECT_set_first_warp(fd,TRUE);
		if(strstr(buf2,"%4d") != NULL){
			sprintf(token,buf2,fl);
		}else{
			strcpy(token,buf2);
		}
		CHAR_setWorkInt( toindex , CHAR_WORKSHOPRELEVANTTRD , -1 );
		CHAR_setWorkInt( toindex, CHAR_WORKSHOPRELEVANT, 2);
	}else	{
		if(NPC_Util_GetStrFromStrWithDelim( npcarg, "PayMsg", buf2, sizeof( buf2)) != NULL){
		       CONNECT_set_pass(fd,FALSE);
		       CONNECT_set_first_warp(fd,FALSE);
			if(strstr(buf2,"%8d") != NULL){
				NPC_Util_GetStrFromStrWithDelim( npcarg, "MONEY", tmp, sizeof( tmp));
				if(strstr(tmp,"LV")!=NULL){
					int level;
					char buff2[32];
						
					level = CHAR_getInt(toindex,CHAR_LV);
					getStringFromIndexWithDelim(tmp,"*",2,buff2,sizeof(buff2));
					money = level*atoi(buff2);
				}else{
					money=atoi(tmp);
				}
				if(strstr(buf2,"%4d") != NULL){
					sprintf(token,buf2,fl,money);
				}else{
					sprintf(token,buf2,money);
				}
			}else if(strstr(buf2,"%4d") != NULL){
				sprintf(token,buf2,fl);
				NPC_Util_GetStrFromStrWithDelim( npcarg, "MONEY", tmp, sizeof( tmp));
				if( strstr( tmp,"-" ) != NULL){
					money=10000001;
					lssproto_WN_send( fd, WINDOW_MESSAGETYPE_MESSAGE,
								WINDOW_BUTTONTYPE_OK,
								CHAR_WINDOWTYPE_WINDOWWARPMAN_MAIN, 
								CHAR_getWorkInt( meindex, CHAR_WORKOBJINDEX),
								token);
					return ;
				}
			}else{
				strcpy(token,buf2);
				NPC_Util_GetStrFromStrWithDelim( npcarg, "MONEY", tmp, sizeof( tmp));
				if( strstr( tmp,"-" ) != NULL){
					money=10000001;
					lssproto_WN_send( fd, WINDOW_MESSAGETYPE_MESSAGE,
								WINDOW_BUTTONTYPE_OK,
								CHAR_WINDOWTYPE_WINDOWWARPMAN_MAIN, 
								CHAR_getWorkInt( meindex, CHAR_WORKOBJINDEX),
								token);
					return ;
				}else{
					money = atoi(tmp);
				}
			}
			if(CHAR_getInt(toindex,CHAR_FLOOR)==117){
			   money=CHAR_getInt(toindex,CHAR_GOLD);
			   if (money>=10) money*=0.9; 
			   else if( money == 0 ) {
				   CHAR_warpToSpecificPoint(toindex,117,225,13);
				   return;
			   }
			}
			CHAR_setWorkInt( toindex , CHAR_WORKSHOPRELEVANTTRD , money );
			CONNECT_set_pass(fd,TRUE);
			CONNECT_set_first_warp(fd,TRUE);
		
		}else if(NPC_Util_GetStrFromStrWithDelim( npcarg, "NomalMsg", token,sizeof(token)) !=NULL){
			CHAR_setWorkInt( toindex , CHAR_WORKSHOPRELEVANTTRD , -2 );
			CHAR_setWorkInt( toindex, CHAR_WORKSHOPRELEVANT, -1);
			lssproto_WN_send( fd, WINDOW_MESSAGETYPE_MESSAGE,
								WINDOW_BUTTONTYPE_OK,
								CHAR_WINDOWTYPE_WINDOWWARPMAN_MAIN, 
								CHAR_getWorkInt( meindex, CHAR_WORKOBJINDEX),
								token);
		}
	}
	lssproto_WN_send( fd, WINDOW_MESSAGETYPE_MESSAGE,
						WINDOW_BUTTONTYPE_YESNO,
						CHAR_WINDOWTYPE_WINDOWWARPMAN_MAIN, 
						CHAR_getWorkInt( meindex, CHAR_WORKOBJINDEX),
						token);
}

void NPC_WarpManWindowTalked( int meindex, int talkerindex, 
								int seqno, int select, char *data)
{
	char npcarg[NPC_UTIL_GETARGSTR_BUFSIZE];
	char buf[NPC_UTIL_GETARGSTR_BUFSIZE];
#ifdef _NEW_WARPMAN
	BOOL checkp=TRUE;
	char buf1[1024];
	int talkNo = 1;
	BOOL tenflg=FALSE;
#else
	int fl,x,y;
#endif
	char buff2[256];
	int fd = getfdFromCharaIndex( talkerindex );
	if( NPC_Util_CharDistance( talkerindex, meindex ) > 2)
		return;
	if(NPC_Util_GetArgStr( meindex, npcarg, sizeof(npcarg))==NULL){
		print("GetArgStrErr");
		return ;
	}
	if( CHAR_getWorkInt( talkerindex, CHAR_WORKSHOPRELEVANT) < 1 )	{
		CHAR_setWorkInt( talkerindex, CHAR_WORKSHOPRELEVANT, -1);
		return;
	}

#ifdef _NEW_WARPMAN
	if( seqno == NEW_WARPMAN )    {
		int eqnum=0;
		eqnum = CHAR_getWorkInt( talkerindex, CHAR_WORKSHOPRELEVANT);
		sprintf(buf1,"%s", "NOFREE");

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产一区二区精品久久99| 欧美另类一区二区三区| 日本乱人伦aⅴ精品| 欧美一区二区三区思思人| 中文字幕中文字幕在线一区| 日韩二区三区四区| 91亚洲精品久久久蜜桃| 久久综合丝袜日本网| 日韩va欧美va亚洲va久久| 不卡的看片网站| 国产亚洲精久久久久久| 日av在线不卡| 欧美高清视频一二三区 | 成人一区二区三区| 日韩视频免费直播| 午夜视频久久久久久| 色www精品视频在线观看| 欧美精彩视频一区二区三区| 免费不卡在线观看| 欧美丰满少妇xxxxx高潮对白 | 精品国产乱码久久久久久免费 | 成人免费在线观看入口| 国产成人综合自拍| 久久久久久综合| 精品一区二区三区在线播放视频| 欧美色图在线观看| 亚洲欧美色图小说| 99精品视频在线播放观看| 国产女主播视频一区二区| 国产很黄免费观看久久| 精品入口麻豆88视频| 久久精品国产色蜜蜜麻豆| 538在线一区二区精品国产| 亚洲成人综合视频| 欧美久久久久中文字幕| 午夜影院久久久| 欧美二区在线观看| 日本三级亚洲精品| 日韩欧美国产麻豆| 国产精品自拍毛片| 国产精品久久久久久久久免费桃花| 国产成a人亚洲精| 国产精品久久久久久久久免费丝袜| 成人毛片老司机大片| 国产精品久久久久久妇女6080 | 国产成人在线免费| 国产精品人妖ts系列视频| av不卡在线观看| 亚洲一区二区在线观看视频| 在线观看欧美日本| 免费的国产精品| 欧美国产欧美综合| 91国在线观看| 久久国产精品99久久人人澡| 欧美极品美女视频| 色94色欧美sute亚洲13| 日本v片在线高清不卡在线观看| 久久亚洲综合色一区二区三区| 成人动漫一区二区在线| 依依成人综合视频| 日韩精品一区二区三区中文精品| 国产电影精品久久禁18| 亚洲黄色免费电影| 日韩精品一区二区三区视频播放| 成人性生交大片免费看中文| 一区二区视频在线看| 日韩欧美一级片| 91丨九色丨蝌蚪丨老版| 男人的j进女人的j一区| 一区二区中文字幕在线| 69堂成人精品免费视频| 成人综合激情网| 日韩精品每日更新| 国产精品久久久久天堂| 日韩欧美不卡一区| 在线视频你懂得一区二区三区| 看电影不卡的网站| 亚洲精品视频在线观看免费| 日韩欧美成人激情| 欧美三级午夜理伦三级中视频| 粉嫩在线一区二区三区视频| 日本sm残虐另类| 一区二区三区在线播放| 久久久精品tv| 欧美美女网站色| 色婷婷亚洲婷婷| 国产91综合一区在线观看| 久久激情五月婷婷| 久久国产婷婷国产香蕉| 亚洲精品中文在线影院| 久久日一线二线三线suv| 91精彩视频在线| 成人亚洲一区二区一| 午夜久久久久久久久| 亚洲视频免费在线观看| 2022国产精品视频| 日韩欧美精品在线| 欧美日韩国产另类不卡| 色婷婷国产精品综合在线观看| 国产成人免费在线观看| 青青草97国产精品免费观看 | 黑人巨大精品欧美一区| 亚洲3atv精品一区二区三区| 国产精品无码永久免费888| 精品国产一区二区在线观看| 欧美色区777第一页| 欧美亚洲另类激情小说| 欧美综合天天夜夜久久| 不卡的看片网站| 99久久伊人久久99| 成人免费看片app下载| 国产成人综合自拍| 国产成人日日夜夜| 精品一区在线看| 精品亚洲成a人| 狠狠狠色丁香婷婷综合久久五月| 青青草97国产精品免费观看 | 日韩欧美亚洲国产精品字幕久久久| 欧洲精品在线观看| 欧美日韩精品一区二区| 欧美日韩精品是欧美日韩精品| 欧美日韩国产a| 91麻豆精品久久久久蜜臀| 欧美一级久久久| 精品国产乱码久久久久久夜甘婷婷| 欧美成va人片在线观看| 精品国产精品网麻豆系列| 2020国产精品自拍| 中文字幕不卡在线观看| 亚洲精品第一国产综合野| 亚洲成人av一区二区| 日本欧美一区二区| 国产一区 二区 三区一级| 国产成人啪午夜精品网站男同| 99re8在线精品视频免费播放| 色成人在线视频| 日韩精品中午字幕| 国产精品萝li| 亚洲福利国产精品| 美脚の诱脚舐め脚责91| 丁香啪啪综合成人亚洲小说 | 国产成人综合在线| 91美女精品福利| 51精品国自产在线| 国产日韩高清在线| 一区二区三区高清| 精品一区二区三区的国产在线播放| 国产乱对白刺激视频不卡| 色综合网站在线| 日韩欧美电影一区| 亚洲人成精品久久久久| 青青草91视频| 91在线精品一区二区三区| 88在线观看91蜜桃国自产| 欧美精彩视频一区二区三区| 午夜精品一区二区三区免费视频| 国产精品原创巨作av| 欧美无砖砖区免费| 久久久国产午夜精品| 亚洲成人激情自拍| 成人黄色免费短视频| 欧美一区二区视频在线观看 | 久久嫩草精品久久久久| 亚洲精品老司机| 国产麻豆精品在线| 欧美日韩久久久| 亚洲色图一区二区三区| 精品影院一区二区久久久| 欧美午夜精品久久久久久孕妇| 久久精品亚洲麻豆av一区二区| 亚洲18女电影在线观看| kk眼镜猥琐国模调教系列一区二区| 91麻豆精品91久久久久同性| 亚洲视频精选在线| 国产精品888| 精品国产麻豆免费人成网站| 亚洲123区在线观看| 在线看日本不卡| 亚洲欧洲国产日韩| 极品少妇xxxx精品少妇| 欧美日韩国产系列| 亚洲理论在线观看| 91丨九色porny丨蝌蚪| 国产女主播一区| 国产精品一区三区| 日韩一区二区中文字幕| 天天色天天爱天天射综合| 在线观看视频一区二区| 国产精品高潮呻吟| 国产精品69毛片高清亚洲| 2023国产一二三区日本精品2022| 免费成人小视频| 欧美本精品男人aⅴ天堂| 蜜臀a∨国产成人精品| 91精品国产色综合久久ai换脸 | 国产精品一区专区| 久久久久久久久岛国免费| 极品尤物av久久免费看| 欧美xxxxxxxxx| 国产美女精品在线|