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

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

?? npc_riderman.c

?? 最新主流石器時代源代碼,包含諸多目前流行功能代碼.
?? C
?? 第 1 頁 / 共 3 頁
字號:
#include "version.h"
#include <string.h>
#include "char.h"
#include "object.h"
#include "char_base.h"
#include "npcutil.h"
#include "configfile.h"
#include "lssproto_serv.h"
#include "saacproto_cli.h"
#include "npc_riderman.h"
#include "family.h"
#include "log.h"

extern	int	familyNumTotal;
extern	char	familyListBuf[MAXFAMILYLIST]; 
extern	tagRidePetTable	ridePetTable[296];
extern	struct  FM_POINTLIST fmpointlist;

char sendbuf[1024];
char buf[1024];
char subbuf[128];
int i, j;

/* 
 * 澀爛今木兇它奴件玉它毛請允NPC
 * 棵啞  平旦玄失玉矛件民乓□仁日中卅日綜木月井手[
 *
 */
 
struct	{
	int		windowno;
	int		windowtype;
	int		buttontype;
	int		takeitem;
	int		giveitem;
	int		takegold;
	char	message[4096];
	int		letter[4];
}w;

struct	{
	BOOL	use;
	int		checkhaveitem;
	int		checkhaveitemgotowin;
	int		checkdonthaveitem;
	int		checkdonthaveitemgotowin;
	int		warp;
	int		battle;
	int		gotowin;
}buttonproc[13];		/* ok,cancel, yes,no,prev,next 及凜及質   */





enum {
	CHAR_WORK_MSGCOLOR	= CHAR_NPCWORKINT1,
};

static void NPC_Riderman_selectWindow( int meindex, int toindex, int num);
static BOOL NPC_Riderman_readData( int meindex, int windowno, BOOL chkflg);
static int NPC_Riderman_restoreButtontype( char *data );
// static BOOL getLetter(int meindex,int talker );
// static BOOL checkLetter(int meindex,int talker );

/*********************************
* 賡渝質  
*********************************/
BOOL NPC_RidermanInit( int meindex )
{
	char	argstr[NPC_UTIL_GETARGSTR_BUFSIZE];
	char	buf[1024];
	//int		i;
	//char	secondToken[1024];
	
	// Robin test
	// print(" riderman_Init ");	
	
	NPC_Util_GetArgStr( meindex, argstr, sizeof( argstr));
	
	if( NPC_Util_GetStrFromStrWithDelim( argstr, "conff", buf, sizeof( buf))
		== NULL ) 
	{
		print( "riderman:沒有指定設定的檔案 。\n");
		return FALSE;
	}
	/* 賡渝凜卞澀爛犯□正毛民尼永弁仄化支月 */
	if( !NPC_Riderman_readData( meindex, -1, TRUE) ) {
		return FALSE;
	}
	
	CHAR_setInt( meindex , CHAR_WHICHTYPE , CHAR_TYPEWINDOWMAN );
	
	return TRUE;
}




/*********************************
*   仄井仃日木兇凜及質  
*********************************/
void NPC_RidermanTalked( int meindex , int talkerindex , char *szMes ,int color )
{
	//print(" Rideman_fmindex:%d ", CHAR_getInt( meindex, CHAR_FMINDEX) );
	
	NPC_Riderman_selectWindow( meindex, talkerindex, 1 );
	
}
/*********************************
* 葦日木兇凜及質  
*********************************/
void NPC_RidermanLooked( int meindex , int lookedindex)
{

	//print(" Look:me:%d,looked:%d ",meindex,lookedindex);
	NPC_Riderman_selectWindow( meindex, lookedindex,1 );
	
}

static void NPC_Riderman_selectWindow( int meindex, int toindex, int num)
{

	int		fd;
	char	buf[256];
	
	/* 皿伊奶乩□卞覆仄化分仃  殺允月 */
	if( CHAR_getInt( toindex , CHAR_WHICHTYPE ) != CHAR_TYPEPLAYER ) {
		return;
	}
	/* ㄠ弘伉永玉動  及心 */
	if( !NPC_Util_charIsInFrontOfChar( toindex, meindex, 1 )) return; 

	if( !NPC_Riderman_readData( meindex, num, FALSE) ) {
		print( "riderman:readdata error\n");
		return;
	}
	
	fd = getfdFromCharaIndex( toindex);
	if( fd != -1 ) {
		lssproto_WN_send( fd, w.windowtype, 
						w.buttontype,
						w.windowno+100,
						CHAR_getWorkInt( meindex, CHAR_WORKOBJINDEX),
						makeEscapeString( w.message, buf, sizeof(buf)));
	}
}

void NPC_RidermanWindowTalked( int meindex, int talkerindex, 
								int seqno, int select, char *data)

{
	
	
	int		button = -1;
	char	buf[512];

	/* ㄠ弘伉永玉動  及心 */
	if( NPC_Util_CharDistance( talkerindex, meindex ) > 1) return;
	
	/* 仇及它奴件玉它  寞及犯□正毛  心  戈 */	
	if( !NPC_Riderman_readData( meindex, seqno - 100, FALSE) ) {
		print( "riderman:readdata error\n");
		return;
	}
	/* 瓷仄兇示正件毛譬屯月 */
	if( w.windowtype == WINDOW_MESSAGETYPE_SELECT ) {
		button = atoi( data)+5;
		if( button > 12 ) {
			print( "riderman:invalid button[%d]\n", button);
			return;
		}
	}
	else if( select & WINDOW_BUTTONTYPE_OK) button = 0;
	else if( select & WINDOW_BUTTONTYPE_CANCEL) button = 1;
	else if( select & WINDOW_BUTTONTYPE_YES) button = 2;
	else if( select & WINDOW_BUTTONTYPE_NO) button = 3;
	else if( select & WINDOW_BUTTONTYPE_PREV) button = 4;
	else if( select & WINDOW_BUTTONTYPE_NEXT) button = 5;
	else {
		print( "riderman:invalid button[%d]\n", select);
		return;
	}
	if( buttonproc[button].use == TRUE ) {
		int	fd;
		int	newwin = -1;
	
		fd = getfdFromCharaIndex( talkerindex);
		
		/* 示正件卞方勻化質  毛孔曰歹仃月 */
		if( newwin == -1 ) {
			newwin = buttonproc[button].gotowin;
		}
		

		//print(" takegold:%d ", w.takegold );
		
		// Robin
		// 學習 Lv 40
		if( newwin == 6 )	{
			
			int charImg;
			// int i, petindex, bFind = 0;
			
			charImg = CHAR_getInt( talkerindex, CHAR_BASEBASEIMAGENUMBER);
			if( CHAR_getInt( talkerindex, CHAR_LEARNRIDE ) >= 40 )
			{
				lssproto_WN_send( fd, WINDOW_MESSAGETYPE_MESSAGE,
					WINDOW_BUTTONTYPE_OK, -1, -1,
					makeEscapeString( "\n\n你已經學會初級班了呀。\n不需要再學了。",
							buf, sizeof(buf)));
				return;
			}

#if 0
			if( !checkLetter( meindex, talkerindex) )
			{
				lssproto_WN_send( fd, WINDOW_MESSAGETYPE_MESSAGE,
					WINDOW_BUTTONTYPE_OK, -1, -1,
					makeEscapeString( "\n\n很抱歉喔!\n學習騎乘寵物需要本莊園族長的同意書。",
							buf, sizeof(buf)));
				return;					
			}

			for( i=0; i<CHAR_MAXPETHAVE ; i++)
			{
				if( bFind ) break;
				petindex = CHAR_getCharPet( talkerindex, i );
				if( CHAR_CHECKINDEX(petindex) )
				{
					int petImg, j;
					
					//if( CHAR_getWorkInt( petindex, CHAR_WORKFIXAI ) < 100 )
					//	continue;
					petImg = CHAR_getInt( petindex, CHAR_BASEBASEIMAGENUMBER);
					for( j=0; j<arraysizeof(ridePetTable); j++)
					{
						if( ridePetTable[j].charNo == charImg
						    && ridePetTable[j].petNo == petImg )
						{
							bFind = 1;
							break;
						}
					}
				}
			}
			if( bFind != 1 )
			{
				lssproto_WN_send( fd, WINDOW_MESSAGETYPE_MESSAGE,
					WINDOW_BUTTONTYPE_OK, -1, -1,
					makeEscapeString( "\n\n你身上沒有適合騎乘的寵物。請先準備一只。",
							buf, sizeof(buf)));
				return;
			}

			if( !getLetter( meindex, talkerindex) )	return;
#endif

			if( CHAR_getInt( talkerindex, CHAR_GOLD ) < w.takegold )
			{
				char buf2[512];
				
				sprintf( buf2, "\n很抱歉喔!你的學費不足!\n學習騎乘寵物初級班需要%d石幣。", w.takegold);
				lssproto_WN_send( fd, WINDOW_MESSAGETYPE_MESSAGE,
					WINDOW_BUTTONTYPE_OK, -1, -1,
					makeEscapeString( buf2, buf, sizeof(buf)));
				return;
			}
			CHAR_DelGold( talkerindex, w.takegold );

			CHAR_setInt( talkerindex, CHAR_LEARNRIDE, 40 );
			CHAR_send_P_StatusString( talkerindex, CHAR_P_STRING_GOLD );
			CHAR_send_P_StatusString( talkerindex, CHAR_P_STRING_LEARNRIDE );
			
			//sprintf( buf, "R|L|1" );
			//lssproto_FM_send( fd, buf );
			lssproto_WN_send( fd, WINDOW_MESSAGETYPE_MESSAGE,
					WINDOW_BUTTONTYPE_OK, -1, -1,
					makeEscapeString(
						"\n\n恭喜你!你已經完成騎乘初級班了。\n可以騎乘 Lv40 以下的寵物,\n請小心騎乘喔!",
						buf, sizeof(buf)));
						
			// 家族收入
			{
			 int fmindex, fmindexi, village, i;
			 char fmname[256], token[256], buf2[64];
			
			 sprintf( buf2, "%d", w.takegold/5 );
			 for( i=0 ; i<FMPOINTNUM ; i++ ) {
				getStringFromIndexWithDelim(fmpointlist.pointlistarray[i], "|", 9, token, sizeof(token));
				village = atoi(token);
				if( village == CHAR_getInt( meindex, CHAR_FMINDEX ) ) {
					getStringFromIndexWithDelim(fmpointlist.pointlistarray[i], "|", 5, token, sizeof(token));
					fmindex = atoi(token);
					getStringFromIndexWithDelim(fmpointlist.pointlistarray[i], "|", 6, token, sizeof(token));
					strcpy(fmname, token);
					getStringFromIndexWithDelim(fmpointlist.pointlistarray[i], "|", 8, token, sizeof(token));
					fmindexi = atoi(token);
					saacproto_ACFixFMData_send( acfd, fmname, fmindex, fmindexi,
						FM_FIX_FMGOLD, buf2 , "",
						CHAR_getWorkInt(meindex, CHAR_WORKFMCHARINDEX),
						CONNECT_getFdid(fd) );
					
					//print(" rider_fm:%s ", fmname);
				}
			 }
			}
			
			return;
		}
		
		// 學習 Lv 80
		if( newwin == 7 )	{
			
			int charImg;
			// int i, petindex, bFind = 0;
			
			
			charImg = CHAR_getInt( talkerindex, CHAR_BASEBASEIMAGENUMBER);
			if( CHAR_getInt( talkerindex, CHAR_LEARNRIDE ) >= 80 )
			{
				lssproto_WN_send( fd, WINDOW_MESSAGETYPE_MESSAGE,
					WINDOW_BUTTONTYPE_OK, -1, -1,
					makeEscapeString( "\n\n你已經學會中級班了呀。\n不需要再學了。",
							buf, sizeof(buf)));
				return;
			}
			else if( CHAR_getInt( talkerindex, CHAR_LEARNRIDE ) < 40 )
			{
				lssproto_WN_send( fd, WINDOW_MESSAGETYPE_MESSAGE,
					WINDOW_BUTTONTYPE_OK, -1, -1,
					makeEscapeString( "\n\n你必須先學過初級班才能來中級班唷。",
							buf, sizeof(buf)));
				return;
			}

#if 0
			if( !checkLetter( meindex, talkerindex) )
			{
				lssproto_WN_send( fd, WINDOW_MESSAGETYPE_MESSAGE,
					WINDOW_BUTTONTYPE_OK, -1, -1,
					makeEscapeString( "\n\n很抱歉喔!\n學習騎乘寵物需要本莊園族長的同意書。",
							buf, sizeof(buf)));
				return;					
			}

			for( i=0; i<CHAR_MAXPETHAVE ; i++)
			{
				if( bFind ) break;
				petindex = CHAR_getCharPet( talkerindex, i );
				if( CHAR_CHECKINDEX(petindex) )
				{
					int petImg, j;
					
					petImg = CHAR_getInt( petindex, CHAR_BASEBASEIMAGENUMBER);
					for( j=0; j<arraysizeof(ridePetTable); j++)
					{
						if( ridePetTable[j].charNo == charImg
						    && ridePetTable[j].petNo == petImg )
						{
							bFind = 1;
							break;
						}
					}
				}
			}			
			if( bFind != 1 )
			{
				lssproto_WN_send( fd, WINDOW_MESSAGETYPE_MESSAGE,
					WINDOW_BUTTONTYPE_OK, -1, -1,
					makeEscapeString( "\n\n請先準備一只適合自己騎乘的寵物。",
							buf, sizeof(buf)));
				return;
			}

			if( !getLetter( meindex, talkerindex) ) return;
#endif

			if( CHAR_getInt( talkerindex, CHAR_GOLD ) < w.takegold )
			{
				char buf2[512];
				
				sprintf( buf2, "\n很抱歉喔!你的學費不足!\n學習騎乘寵物中級班需要%d石幣", w.takegold);

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久草中文综合在线| 精品在线播放午夜| 日本成人在线看| 成+人+亚洲+综合天堂| 91精品国产福利| 亚洲色图20p| va亚洲va日韩不卡在线观看| 日韩一卡二卡三卡四卡| 一区二区三区欧美在线观看| 久久精工是国产品牌吗| 欧美精品v日韩精品v韩国精品v| 国产欧美一区二区精品性| 蜜桃传媒麻豆第一区在线观看| 色诱亚洲精品久久久久久| 久久精品一区二区三区不卡 | 欧美电影一区二区| 欧美二区乱c少妇| 亚洲精品国产一区二区三区四区在线| 国产乱码字幕精品高清av| 欧美日韩精品一区二区| 一区二区三区在线影院| 成人妖精视频yjsp地址| 中文一区二区在线观看| 国产精品一区二区在线看| 精品国产一区二区国模嫣然| 天堂蜜桃91精品| 欧美日韩国产片| 天堂va蜜桃一区二区三区漫画版| 91香蕉视频污在线| 自拍av一区二区三区| 99久久精品99国产精品| 国产精品色在线观看| 成人午夜伦理影院| 国产精品成人网| 亚洲va在线va天堂| 精品国产三级a在线观看| 亚洲自拍偷拍图区| 色偷偷久久人人79超碰人人澡 | 亚洲国产精品一区二区www | 欧美白人最猛性xxxxx69交| 图片区小说区国产精品视频| 欧美夫妻性生活| 老司机一区二区| 久久午夜色播影院免费高清| 国产精品456| 最新久久zyz资源站| 在线免费亚洲电影| 亚洲成人免费看| 日韩一区二区三区免费看| 国产一区二区三区四区五区美女| 久久青草国产手机看片福利盒子| 国产成人综合网| 成人欧美一区二区三区小说| 欧美日韩国产综合久久| 91色婷婷久久久久合中文| 免费一区二区视频| 26uuuu精品一区二区| 懂色av中文一区二区三区| 最新中文字幕一区二区三区| 欧美日韩成人激情| 成人综合婷婷国产精品久久蜜臀 | 欧美裸体bbwbbwbbw| 久久se精品一区二区| 中文子幕无线码一区tr| 欧美日韩一区不卡| 豆国产96在线|亚洲| 亚洲福利一区二区| 国产午夜精品一区二区三区四区| 色88888久久久久久影院野外| 丝袜美腿亚洲一区| 国产精品欧美一区二区三区| 欧美日韩中字一区| 日本不卡一区二区三区| 国产在线精品国自产拍免费| 亚洲成人免费影院| 精品久久人人做人人爰| 色综合天天综合色综合av| 青青草原综合久久大伊人精品优势| 久久精品免视看| 欧美日韩精品久久久| 国产69精品一区二区亚洲孕妇 | 日韩午夜激情av| 91麻豆国产自产在线观看| 久久福利视频一区二区| 亚洲自拍与偷拍| 国产精品国产馆在线真实露脸| 日韩一级免费观看| 欧美艳星brazzers| 成人av在线资源网站| 久久不见久久见免费视频7| 亚洲一级二级三级| 中文字幕制服丝袜一区二区三区 | 日韩欧美色电影| 亚洲欧美一区二区在线观看| 日韩中文字幕1| 国产精品伦一区二区三级视频| 欧美成人a在线| 91麻豆精品国产91久久久资源速度| 97久久超碰精品国产| 国产精品91一区二区| 精品亚洲成a人在线观看 | 久久亚洲二区三区| 欧美高清视频一二三区 | 黑人巨大精品欧美黑白配亚洲| 亚洲专区一二三| 亚洲精品久久久久久国产精华液| 国产日韩欧美精品综合| 久久久久久久一区| 久久久精品tv| 国产精品 欧美精品| 亚洲天堂久久久久久久| 99久久综合狠狠综合久久| 色综合久久久久久久| 亚洲午夜精品网| 亚洲激情成人在线| 一区二区三区四区av| 亚洲福利视频一区| 亚洲1区2区3区4区| 日本伊人午夜精品| 奇米四色…亚洲| 国产一区二区免费看| 丁香激情综合五月| 99re成人在线| 色菇凉天天综合网| 欧美日韩国产片| 日韩你懂的在线观看| 26uuu亚洲综合色| 中文字幕不卡在线| 亚洲激情五月婷婷| 香蕉成人伊视频在线观看| 日韩电影在线一区二区| 精品亚洲porn| 国产91丝袜在线18| 色婷婷av一区二区三区gif| 欧美日韩在线播放一区| 一区二区欧美国产| 亚洲成人在线免费| 欧美变态凌虐bdsm| 国产视频一区二区三区在线观看| 国产夜色精品一区二区av| 中文字幕不卡在线播放| 亚洲一卡二卡三卡四卡五卡| 无吗不卡中文字幕| 国产精品1区2区| 欧美在线视频不卡| ww久久中文字幕| 亚洲美女电影在线| 美腿丝袜亚洲一区| 91在线视频播放| 91精品久久久久久蜜臀| 国产精品午夜电影| 免费观看日韩电影| 成人免费三级在线| 欧美一区二视频| 国产精品久久福利| 免费观看一级欧美片| 97精品国产露脸对白| 欧美一区二区三区四区五区 | 99免费精品在线观看| 欧美三级日韩在线| 国产精品久久久久久久久搜平片| 在线看不卡av| 欧美片在线播放| 国产精品1区2区3区| 欧洲精品视频在线观看| 久久一区二区视频| 亚洲成人在线免费| 色国产精品一区在线观看| 久久精品在这里| 久久精品av麻豆的观看方式| 在线日韩av片| 国产精品国产自产拍高清av| 日本中文在线一区| 欧美主播一区二区三区美女| 亚洲国产成人一区二区三区| 日本中文字幕一区二区有限公司| 91啪在线观看| 中文字幕精品在线不卡| 久久 天天综合| 欧美一级日韩一级| 亚洲福利视频一区二区| 日本高清不卡aⅴ免费网站| 国产精品久久午夜夜伦鲁鲁| 国内欧美视频一区二区| 欧美日韩亚州综合| 亚洲成a人片在线不卡一二三区| 99久久精品免费精品国产| 国产欧美日韩在线视频| 国内成人精品2018免费看| 欧美老人xxxx18| 色综合久久天天| 99久久精品99国产精品| 欧美女孩性生活视频| 夜夜精品视频一区二区| 一本一道波多野结衣一区二区| 亚洲欧洲日韩av| 成人一区二区三区在线观看| 国产精品天天看| av成人老司机| 亚洲黄一区二区三区|