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

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專(zhuān)輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? npc_warp.c

?? 最新主流石器時(shí)代源代碼,包含諸多目前流行功能代碼.
?? C
字號(hào):
#include "version.h"
#include <string.h>
#include "object.h"
#include "char_base.h"
#include "char.h"
#include "map_deal.h"
#include "readmap.h"
#include "npccreate.h"
#include "npcutil.h"
#include "handletime.h"
#include "npc_eventaction.h"

//#define _RECORD_NPCMAN_ //紀(jì)錄

BOOL NPC_TimeWarpCheck(int meindex,char *buf,int mode);

static void NPC_WarpsetNeverMake( int charaindex )
{
    int cindex;
    cindex = CHAR_getInt(charaindex,CHAR_NPCCREATEINDEX);
    if( NPC_CHECKCREATEINDEX(cindex) )
        NPC_create[cindex].workdata[NPC_CREATEWORKNEVERMAKE] = 1;
}

BOOL NPC_WarpInit( int charaindex )
{
	char arg[NPC_UTIL_GETARGSTR_BUFSIZE];
    int ret;
    int floor=-1,x=-1,y=-1;
    char    token[128];

#ifdef _RECORD_NPCMAN_ //紀(jì)錄
	char evtype[256];
	char evtime[256];
	char argfile[256];

	if( NPC_Util_CheckAssignArgFile( charaindex, argfile) == NULL )
		sprintf( argfile, "NULL");
#endif

	CHAR_setInt( charaindex, CHAR_WHICHTYPE , CHAR_TYPEWARP );
    if( NPC_Util_GetArgStr( charaindex, arg, sizeof( arg)) == NULL )	{
		print("\n GetArgStr ERR!!");
		return FALSE;
	}
#ifdef _NEW_WARPPOINT
	if( strstr( arg, "FREEMORE") != NULL )	{
#ifdef _RECORD_NPCMAN_ //紀(jì)錄
		sprintf( evtype, "FREE");
		sprintf( evtime, "NULL");
#endif
		CHAR_setWorkInt( charaindex, CHAR_WORKEVENTTYPE, CHAR_EVENT_WARP);
	}else	{
#endif
#ifdef _MAP_WARPPOINT
		return FALSE;
#endif
#ifdef _RECORD_NPCMAN_ //紀(jì)錄
		sprintf( evtype, "NONE");
#endif
		ret=getStringFromIndexWithDelim(arg,"|", 1,token,sizeof(token));
		if( ret ) floor = atoi( token );
		ret=getStringFromIndexWithDelim(arg,"|", 2,token,sizeof(token));
		if( ret ) x = atoi( token );
		ret=getStringFromIndexWithDelim(arg,"|", 3,token,sizeof(token));
		if( ret ) y = atoi( token );
		if( MAP_IsValidCoordinate( floor,x,y )== FALSE ){
			NPC_WarpsetNeverMake( charaindex );
			//print( "Warp NPC:Invalid arg:%s\n", arg );
			print( "Warp Npc Err:%d:%d:%d->(%s)\n",
        		CHAR_getInt( charaindex, CHAR_FLOOR ),
        		CHAR_getInt( charaindex, CHAR_X ),
        		CHAR_getInt( charaindex, CHAR_Y ),
        		arg );
			return FALSE;
		}
		ret=getStringFromIndexWithDelim(arg,"|",4,token,sizeof(token));
		if(ret==TRUE){
			int day;
			day=NPC_TimeWarpCheck(charaindex,token,0);
				if(day==0){
#ifdef _RECORD_NPCMAN_ //紀(jì)錄
					sprintf( evtime, "N");
#endif
					CHAR_setWorkInt( charaindex, CHAR_WORKEVENTTYPE, CHAR_EVENT_WARP_NIGHT);
				}else if(day==1){
#ifdef _RECORD_NPCMAN_ //紀(jì)錄
					sprintf( evtime, "M");
#endif
					CHAR_setWorkInt( charaindex, CHAR_WORKEVENTTYPE, CHAR_EVENT_WARP_MORNING);
				}else if(day==2){
#ifdef _RECORD_NPCMAN_ //紀(jì)錄
					sprintf( evtime, "A");
#endif
					CHAR_setWorkInt( charaindex, CHAR_WORKEVENTTYPE, CHAR_EVENT_WARP_NOON);
				}else{
#ifdef _RECORD_NPCMAN_ //紀(jì)錄
					sprintf( evtime, "NULL");
#endif
					CHAR_setWorkInt( charaindex, CHAR_WORKEVENTTYPE, CHAR_EVENT_WARP);
				}
		}else{
#ifdef _RECORD_NPCMAN_ //紀(jì)錄
					sprintf( evtime, "NULL");
#endif
			CHAR_setWorkInt( charaindex, CHAR_WORKEVENTTYPE, CHAR_EVENT_WARP);
		}
#ifdef _NEW_WARPPOINT
	}
#endif
    CHAR_setFlg( charaindex,CHAR_ISVISIBLE, 0 );
    CHAR_setFlg( charaindex,CHAR_ISOVERED,1 );
    CHAR_setFlg( charaindex,CHAR_ISATTACKED,0 );
    CHAR_setFlg( charaindex,CHAR_ISATTACK,0 );

#ifdef _RECORD_NPCMAN_ //紀(jì)錄
	{
		FILE *fp=NULL;
		char filename[256];
		sprintf( filename,"./data/npc/%s", "mapwarp.txt");
		if( (fp = fopen( filename, "a+")) != NULL ) {
			fprintf( fp, "%s:%s:%d,%d,%d:%d,%d,%d:%s\n",
				evtype, evtime,
				CHAR_getInt( charaindex, CHAR_FLOOR),
				CHAR_getInt( charaindex, CHAR_X),
				CHAR_getInt( charaindex, CHAR_Y),
				floor, x, y, argfile );
			fclose( fp);
		}else {
		}
	}
#endif
    return TRUE;
}

void NPC_WarpWarpCharacter( int warpnpcindex, int charaindex )
{
	char	arg[NPC_UTIL_GETARGSTR_BUFSIZE];
	int i=0;
#ifdef _NEW_WARPPOINT
	char buf1[256], buf2[256], buf3[256], freemsg[256];
	BOOL nBefind = FALSE;
	struct wapepoints	{
		int m_floor;
		int m_x;
		int m_y;
	}Wpoint[10]={
		{-1,0,0}, {-1,0,0}, {-1,0,0}, {-1,0,0}, {-1,0,0},
		{-1,0,0}, {-1,0,0}, {-1,0,0}, {-1,0,0}, {-1,0,0}
	};
	int iRand=0;
#endif
    if( CHAR_getInt( charaindex,CHAR_WHICHTYPE ) != CHAR_TYPEPLAYER ){
        return;
    }

    if( NPC_Util_GetArgStr( warpnpcindex, arg, sizeof( arg)) == NULL ){
		return;
	}

	{
        char    token[16];
        int     floor=0,x=0,y=0;
        int     ret;

#ifdef _NEW_WARPPOINT
	i=1;
	if( strstr( arg, "FREEMORE") != NULL )	{
		int k=1, pw=-1;
		while( getStringFromIndexWithDelim( arg, "OVER", i, buf1, sizeof( buf1)) != FALSE )	{
			i++;
			if( NPC_Util_GetStrFromStrWithDelim( buf1, "FREE", buf2, sizeof( buf2)) == NULL )
				continue;
			if( NPC_ActionPassCheck( warpnpcindex, charaindex, buf2) == FALSE )	{
				continue;
			}else	{
				iRand=0;
				if( NPC_Util_GetStrFromStrWithDelim( buf1, "TO", buf2, sizeof( buf2)) != FALSE )	{
					k=1;
					while( getStringFromIndexWithDelim(  buf2, "&", k, freemsg, sizeof( freemsg)) != FALSE ){
						k++;
						if( getStringFromIndexWithDelim( freemsg, ",", 1, buf3, sizeof( buf3)) == FALSE )
							break;
						Wpoint[iRand].m_floor = atoi( buf3);
						if( getStringFromIndexWithDelim( freemsg, ",", 2, buf3, sizeof( buf3)) == FALSE )
							break;
						Wpoint[iRand].m_x = atoi( buf3);
						if( getStringFromIndexWithDelim( freemsg, ",", 3, buf3, sizeof( buf3)) == FALSE )
							break;
						Wpoint[iRand].m_y = atoi( buf3);
						iRand++;
						nBefind = TRUE;
						if( iRand >= arraysizeof( Wpoint))
							break;
					}
					break;
				}
			}
			if( nBefind == TRUE )
				break;
		}

		if( nBefind == FALSE || iRand <= 0){	//沒(méi)找到條件
			floor = CHAR_getInt( warpnpcindex, CHAR_FLOOR);
			x = CHAR_getInt( warpnpcindex, CHAR_X);
			y = CHAR_getInt( warpnpcindex, CHAR_Y);
		}else	{
			pw = RAND( 0, (iRand-1));
			floor = Wpoint[pw].m_floor;
			x = Wpoint[pw].m_x;
			y = Wpoint[pw].m_y;
			if( NPC_Util_GetStrFromStrWithDelim( arg, "CHECKPARTY", buf1, sizeof( buf1)) != NULL ) {
				if( strstr( buf1, "TRUE") != NULL ){
					if( CHAR_getWorkInt( charaindex, CHAR_WORKPARTYMODE ) == CHAR_PARTY_LEADER )	{
						CHAR_DischargeParty( charaindex, 0); // 拆隊(duì)
					}
				}
			}
			if( MAP_IsValidCoordinate( floor,x,y )== FALSE ){
				print( "*Warp NPC:Invalid %d %d %d" , floor,x,y );
				return;
			}
			k=0;
		}
	}else	{
#endif
        ret=getStringFromIndexWithDelim(arg,"|", 1,token,sizeof(token));
        if( ret == FALSE )return;
        floor = atoi( token );

        ret=getStringFromIndexWithDelim(arg,"|", 2,token,sizeof(token));
        if( ret == FALSE )return;
        x = atoi( token );

        ret=getStringFromIndexWithDelim(arg,"|", 3,token,sizeof(token));
        if( ret == FALSE )return;
        y = atoi( token );
#ifdef _NEW_WARPPOINT
	}
#endif
		{
		  int ff=floor;

		  int of=CHAR_getInt(charaindex, CHAR_FLOOR);
		  int fd=CHAR_getWorkInt( charaindex, CHAR_WORKFD);
		  int eqen=getEqNoenemy(fd);
	  		if (eqen<200) {
			  if (eqen>=120) {
				if ((ff==100)||(ff==200)||(ff==300)||(ff==400)||(ff==500)) {
				  if ((of!=100)&&(of!=200)&&(of!=300)&&(of!=400)&&(of!=500)) {
					CHAR_talkToCli(charaindex, -1,
					  "太陽(yáng)神的首飾發(fā)出一道奇異的光芒,隱藏了你的行蹤。", CHAR_COLORWHITE);
				  }
				} else {
				  if ((of==100)||(of==200)||(of==300)||(of==400)||(of==500)) {
					CHAR_talkToCli(charaindex, -1, "環(huán)繞著你的光芒消失了。", CHAR_COLORWHITE);
				  }
				}
			  } else if (eqen>=80) {
				if ((ff==100)||(ff==200)||(ff==300)||(ff==400)) {
				  if ((of!=100)&&(of!=200)&&(of!=300)&&(of!=400)) {
					CHAR_talkToCli(charaindex, -1,
					  "太陽(yáng)神的首飾發(fā)出一道奇異的光芒,隱藏了你的行蹤。", CHAR_COLORWHITE);
				  }
				} else {
				  if ((of==100)||(of==200)||(of==300)||(of==400)) {
					CHAR_talkToCli(charaindex, -1, "環(huán)繞著你的光芒消失了。", CHAR_COLORWHITE);
				  }
				}
			  } else if (eqen>=40) {
				if ((ff==100)||(ff==200)) {
				  if ((of!=100)&&(of!=200)) {
					CHAR_talkToCli(charaindex, -1,
					  "太陽(yáng)神的首飾發(fā)出一道奇異的光芒,隱藏了你的行蹤。", CHAR_COLORWHITE);
				  }
				} else {
				  if ((of==100)||(of==200)) {
					CHAR_talkToCli(charaindex, -1, "環(huán)繞著你的光芒消失了。", CHAR_COLORWHITE);
				  }
				}
			  }
			}
		}

#ifdef _DROPSTAKENEW
		{
			i = 0;
			for (i = 0; i < MAXSTAKENUM; i++){
				if (CHAR_getWorkInt(charaindex, CHAR_WORKSTAKETYPE1 + i) > 0){
					char tmpbuf[256];
					snprintf(tmpbuf, sizeof(tmpbuf), "由於你離開(kāi)了房間,所以將無(wú)法取回彩券!");
					CHAR_setWorkInt(charaindex, CHAR_WORKSTAKETYPE1 + i, 0);
					CHAR_talkToCli(charaindex, -1, tmpbuf, CHAR_COLORYELLOW);
				}
			}
			CHAR_setWorkInt(charaindex, CHAR_WORKSTAKEFLAG, 0);
#ifdef _FIX_GAMBLENUM		
			if(CHAR_getInt(charaindex, CHAR_GAMBLENUM) < 0)
				CHAR_setInt(charaindex, CHAR_GAMBLENUM, 0);			
#endif
		}
#endif
		if( floor == -1)	{
			return;
		}else	{
			if( MAP_IsValidCoordinate( floor,x,y )== FALSE ){
				print( "Warp NPC:Invalid %d %d %d" , floor,x,y );
				return;
			}

			CHAR_warpToSpecificPoint(charaindex, floor, x, y);
		}
    }
}

void NPC_WarpWatch( int meobjindex, int objindex, CHAR_ACTION act,
                    int x,int y,int dir, int* opt,int optlen )
{
    int     meindex,moveindex;
    if( OBJECT_getType( objindex ) != OBJTYPE_CHARA )return;

    meindex = OBJECT_getIndex(meobjindex);
    moveindex = OBJECT_getIndex(objindex);

    if( CHAR_getInt( moveindex,CHAR_WHICHTYPE ) != CHAR_TYPEPLAYER ){
        return;
    }
    if( act != CHAR_ACTWALK )return;

    if( opt[0] == x && opt[1] == y )return;
    if( CHAR_getInt(meindex,CHAR_X) == x && CHAR_getInt(meindex,CHAR_Y) == y )	{
        NPC_WarpWarpCharacter( meindex, moveindex );
	}
}

void NPC_WarpPostOver( int meindex, int charaindex )
{
    NPC_WarpWarpCharacter( meindex, charaindex );
}

int NPC_WarpSearchByPosition( int fl , int x, int y)
{
    OBJECT  object;
    for( object=MAP_getTopObj(fl,x,y) ; object ;
         object=NEXT_OBJECT(object)){
        int objindex = GET_OBJINDEX(object);
        if( OBJECT_getType( objindex ) == OBJTYPE_CHARA
            && CHAR_getInt( OBJECT_getIndex(objindex), CHAR_WHICHTYPE)
            == CHAR_TYPEWARP ){
            return OBJECT_getIndex(objindex);
        }
    }
    return -1;
}


int NPC_TimeWarpCheck(int meindex,char *buf,int mode)
{
	LSTIME		nowlstime;
	char *time[4]={"N","M","A"};
	int now;
	int i=0;
	RealTimeToLSTime( NowTime.tv_sec, &nowlstime);
	now = getLSTime( &nowlstime);
	if(mode==0){
		for( i=0 ; i < 3 ; i++){
			if(strstr( buf,time[i]) != NULL){
				 return i;
			}
		}
		return -1;;
	}
	if(mode==1){
		if(now==CHAR_getWorkInt( meindex, CHAR_WORKEVENTTYPE)){
			return now;
		}
		return -1;
	}
	return -1;
}

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
午夜精品久久久久久久蜜桃app| 日韩欧美在线观看一区二区三区| 亚洲18女电影在线观看| 337p日本欧洲亚洲大胆精品| 在线视频你懂得一区| 国产精华液一区二区三区| 亚洲自拍都市欧美小说| 国产欧美一区二区在线| 日韩三级电影网址| 日本国产一区二区| 成人性生交大片免费| 蜜桃视频在线观看一区二区| 伊人一区二区三区| 综合中文字幕亚洲| 国产欧美日韩在线视频| 日韩欧美的一区| 欧美欧美欧美欧美| 日本韩国精品一区二区在线观看| 成人性生交大片免费看视频在线| 精品一区二区三区香蕉蜜桃 | 亚洲成va人在线观看| 国产精品国产三级国产aⅴ中文| xf在线a精品一区二区视频网站| 欧美日韩亚洲综合在线 欧美亚洲特黄一级 | 日韩一级成人av| 久久久久亚洲综合| 国产69精品久久777的优势| 三级不卡在线观看| 久久一区二区视频| 91污片在线观看| 丝袜国产日韩另类美女| 久久精品一区二区三区不卡牛牛| 99r国产精品| 精品午夜久久福利影院 | 亚洲成人激情综合网| 中文欧美字幕免费| 久久久精品影视| 国产欧美精品一区| 日本一区二区三区免费乱视频| 久久婷婷国产综合精品青草| 精品久久久久av影院 | 一区二区三区精密机械公司| 椎名由奈av一区二区三区| 国产精品成人网| 亚洲视频一区二区免费在线观看| 亚洲人123区| 亚洲国产成人精品视频| 香蕉成人伊视频在线观看| 午夜精品福利视频网站| 日韩福利电影在线| 国产综合久久久久久久久久久久| 国产精品1区二区.| 99久久免费视频.com| caoporen国产精品视频| 日本高清视频一区二区| 欧美日韩国产综合视频在线观看| 日韩一二三区不卡| 欧美精品一区二区蜜臀亚洲| 日本一二三不卡| 亚洲另类在线制服丝袜| 日韩国产成人精品| 国产精品一区二区久久精品爱涩| 成人激情开心网| 在线一区二区三区四区五区| 8x8x8国产精品| 国产网站一区二区| 亚洲免费看黄网站| 免费的国产精品| 风流少妇一区二区| 欧美无乱码久久久免费午夜一区 | 久久久电影一区二区三区| 国产精品超碰97尤物18| 亚洲午夜精品在线| 国内成人精品2018免费看| 成人97人人超碰人人99| 欧美人妇做爰xxxⅹ性高电影| 精品捆绑美女sm三区| 伊人性伊人情综合网| 欧美精品少妇一区二区三区 | 国产精品资源在线| 99久久久精品免费观看国产蜜| 97久久超碰精品国产| 欧美高清视频www夜色资源网| 欧美日韩美少妇| 日本一区二区电影| 亚洲123区在线观看| 国产乱一区二区| 欧美美女一区二区| 精品一区二区三区免费播放| 97久久久精品综合88久久| 这里只有精品电影| 自拍偷在线精品自拍偷无码专区| 日韩国产精品91| 91女人视频在线观看| 精品国内片67194| 一区二区三区成人| 高清beeg欧美| 精品国产a毛片| 天堂成人国产精品一区| www.久久精品| 337p粉嫩大胆色噜噜噜噜亚洲| 一区二区三区高清| 成人永久aaa| 精品国产91洋老外米糕| 亚洲国产另类av| 91小视频免费看| 日本一区二区三级电影在线观看 | 理论片日本一区| 在线国产亚洲欧美| 国产精品美女久久久久aⅴ国产馆 国产精品美女久久久久av爽李琼 国产精品美女久久久久高潮 | 丰满亚洲少妇av| 日韩免费看网站| 丝袜脚交一区二区| 精品视频免费看| 亚洲婷婷综合久久一本伊一区| 国产激情视频一区二区三区欧美| 日韩欧美的一区二区| 日韩国产一二三区| 欧美日韩国产综合一区二区| 亚洲综合久久av| 91精品91久久久中77777| 亚洲婷婷综合色高清在线| 成人免费三级在线| 国产蜜臀97一区二区三区| 国产美女精品在线| 精品久久人人做人人爽| 精品一区精品二区高清| 日韩亚洲电影在线| 亚洲成av人片一区二区梦乃| 欧美专区亚洲专区| 亚洲精选免费视频| 色视频一区二区| 亚洲精品欧美在线| 中文字幕不卡一区| 色综合久久久久久久久| 国产精品正在播放| 日韩精品电影在线观看| 国产午夜亚洲精品不卡| 色呦呦网站一区| 成人综合激情网| 全部av―极品视觉盛宴亚洲| 欧美第一区第二区| 在线看不卡av| 成人美女视频在线观看| 亚洲午夜一区二区| 亚洲欧美日韩国产一区二区三区 | 亚洲女性喷水在线观看一区| 成人丝袜视频网| 中文字幕亚洲区| 色狠狠色噜噜噜综合网| 亚洲成人在线免费| 欧美一区二区福利视频| 久久99国产精品尤物| 国产日产精品一区| 99久久99久久久精品齐齐| 洋洋av久久久久久久一区| 欧美一区二区精品久久911| 激情文学综合网| 国产精品久久久久久久久久久免费看| 99精品在线观看视频| 丝袜a∨在线一区二区三区不卡| 精品免费99久久| 成人精品在线视频观看| 亚洲精品一二三四区| 在线播放日韩导航| 丁香啪啪综合成人亚洲小说| 一区二区三区国产豹纹内裤在线| 欧美高清视频一二三区 | 4hu四虎永久在线影院成人| 精品无码三级在线观看视频| 国产精品久久久久久久久免费丝袜| 在线视频综合导航| 黄网站免费久久| 亚洲品质自拍视频| 日韩欧美国产小视频| eeuss鲁片一区二区三区| 日韩av在线发布| 一区在线播放视频| 欧美一级xxx| 色综合天天天天做夜夜夜夜做| 日本一区中文字幕| 综合中文字幕亚洲| 久久亚洲一级片| 欧美天堂一区二区三区| 国产一区二区在线观看免费| 一区二区三区精品久久久| 久久精品一区二区三区四区| 欧美日韩二区三区| 成人开心网精品视频| 日韩精品午夜视频| 最近中文字幕一区二区三区| 精品国产a毛片| 欧美另类变人与禽xxxxx| 成人免费视频播放| 久久不见久久见免费视频1| 亚洲免费av高清| 国产精品―色哟哟| 日韩精品一区在线| 337p亚洲精品色噜噜| 日本电影亚洲天堂一区|