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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? npc_freepetskillshop.c

?? 最新主流石器時代源代碼,包含諸多目前流行功能代碼.
?? 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 "pet_skill.h"
#include "readmap.h"
#include "battle.h"
#include "configfile.h"
#include "util.h"
#include "npc_eventaction.h"
#include "npc_freepetskillshop.h"

#ifdef _CFREE_petskill

enum {
	CHAR_WORK_SKILLSELECT	= CHAR_NPCWORKINT1,
};

enum {
	SELECTSKILL_START=10,
	SELECTSKILL_TEACH=23,
	SELECTSKILL_END=30,
};

enum {
	START_WINDOW=0,
	SKILL_WINDOW,
	MEEND_WINDOW,
};

static void NPC_FreePetSkillShop_selectWindow( int meindex, int toindex, int num,int select);
BOOL NPC_FreePetSkillMakeStr(int meindex,int toindex, int select);
//BOOL NPC_CHECKFREEPETSKILL( int toindex, int petindex, int skillID);
BOOL NPC_SkillShopItemCheck(int meindex,int talker,int itemNo, int cou);
BOOL NPC_SkillShopDelItems(int meindex,int talker, char *buf);
BOOL NPC_SkillShopPetCheck( int toindex, int petindex, int skillID );
BOOL NPC_SkillShopWarp( int meindex, int talkindex);

#define MAXNPCPOINT 10

BOOL NPC_FreePetSkillShopInit( int meindex )
{
	char npcarg[NPC_UTIL_GETARGSTR_BUFSIZE];
	char msg[256];
    CHAR_setInt( meindex , CHAR_WHICHTYPE , CHAR_FREESKILLSHOP );
	CHAR_setWorkInt( meindex, CHAR_WORK_SKILLSELECT, 0);

	if(NPC_Util_GetArgStr( meindex, npcarg, sizeof(npcarg))==NULL){
		print("GetArgStrErr NO arg !!");
		return FALSE;
	}

	if( NPC_Util_GetStrFromStrWithDelim( npcarg, "pet_skill", msg, sizeof( msg)) != NULL){
		char buf[256], filename[256];
		int k=1, skillID, skillarray;
		while( getStringFromIndexWithDelim( msg, ",", k, buf, sizeof( buf) ) ){
			k++;
			skillID=atoi(buf);
			skillarray = PETSKILL_getPetskillArray( skillID);
			if( PETSKILL_CHECKINDEX( skillarray) == FALSE ) continue;
			if( PETSKILL_getInt( skillarray, PETSKILL_ILLEGAL) == 1){
				if( NPC_Util_CheckAssignArgFile( meindex, filename) != NULL ){
						print("\n寵物技能不規(guī)范:[%d-%s] ->文件:%s\n",
						skillID,
						PETSKILL_getChar( skillarray, PETSKILL_NAME),
						filename );
				}
			}
		}
	}else{
		return FALSE;
	}

    return TRUE;
}
void NPC_FreePetSkillShopTalked( int meindex , int talkerindex , char *szMes ,int color )
{
    if( CHAR_getInt( talkerindex , CHAR_WHICHTYPE ) != CHAR_TYPEPLAYER ) {
    	return;
    }
	if(NPC_Util_isFaceToFace(talkerindex,meindex,2 )==FALSE){
		if( NPC_Util_CharDistance( talkerindex, meindex ) > 1) return;
	}
	CHAR_setWorkInt( talkerindex, CHAR_WORKSHOPRELEVANT, 1 );

	NPC_FreePetSkillShop_selectWindow( meindex, talkerindex, START_WINDOW,-1);
}

static void NPC_FreePetSkillShop_selectWindow( int meindex, int toindex, int num,int select)
{
	char npcarg[NPC_UTIL_GETARGSTR_BUFSIZE];
	char token[1024];
	int fd = getfdFromCharaIndex( toindex);
	int buttontype = 0, windowtype = 0, windowno = 0;
	char buf1[256];
	
	if(NPC_Util_GetArgStr( meindex, npcarg, sizeof(npcarg))==NULL){
		print("GetArgStrErr");
		return ;
	}

	switch(num)	{
	  case START_WINDOW:
		  {
		  BOOL Evflg = TRUE;
		if( NPC_Util_GetStrFromStrWithDelim( npcarg, "start_msg", token, sizeof( token)) == NULL)	{
			CHAR_setWorkInt( toindex, CHAR_WORKSHOPRELEVANT, 0);
			return;
		}
		if( CHAR_getWorkInt( toindex, CHAR_WORKSHOPRELEVANT) != 1 )	{
			CHAR_setWorkInt( toindex, CHAR_WORKSHOPRELEVANT, 0);
			return;
		}
		//玩家條件判斷
		if( NPC_Util_GetStrFromStrWithDelim( npcarg, "FREE", buf1, sizeof( buf1)) != NULL ) {
			if( NPC_ActionPassCheck( meindex, toindex, buf1) == FALSE )	{
				 Evflg = FALSE;
			}
		}
		if( Evflg == FALSE)	{
			CHAR_talkToCli( toindex, -1, "你想讓寵物學(xué)特殊技能?可你的條件還不夠喔!", CHAR_COLORYELLOW);
			CHAR_setWorkInt( toindex, CHAR_WORKSHOPRELEVANT, 0);
			return;
		}else	{
			windowtype = WINDOW_MESSAGETYPE_MESSAGE;
			buttontype = WINDOW_BUTTONTYPE_NEXT;
			windowno = SELECTSKILL_START;
			CHAR_setWorkInt( toindex, CHAR_WORKSHOPRELEVANT, 2);
			lssproto_WN_send( fd, windowtype, buttontype, windowno,
					CHAR_getWorkInt( meindex, CHAR_WORKOBJINDEX), token	);
		}
		  }
		break;
	  case SKILL_WINDOW:
		  if( NPC_FreePetSkillMakeStr( meindex, toindex, select) == FALSE )	{
			print("\n npc_freepetskillshop.c 錯誤");
		  }
		break;
	  case MEEND_WINDOW:
		break;
	}
}

void NPC_FreePetSkillShopWindowTalked( int meindex, int talkerindex, int seqno, int select, char *data)
{
	int skill;
	int pet;
	int slot;
	int cost;
	int skillID=0;
	int petskillindex;
	char buf[64];
	char argstr[NPC_UTIL_GETARGSTR_BUFSIZE];
	char msg[512];
	int petindex;
	char msgbuf[128];
	double rate= 1.0;

	if(NPC_Util_GetArgStr( meindex, argstr, sizeof(argstr))==NULL){
		print("GetArgStrErr");
		return;
	}

    if( CHAR_getInt( talkerindex , CHAR_WHICHTYPE ) != CHAR_TYPEPLAYER ) {
    	return;
    }
	if(NPC_Util_isFaceToFace(talkerindex,meindex,2 )==FALSE){
		if( NPC_Util_CharDistance( talkerindex, meindex ) > 1) return;
	}
	if( CHAR_getWorkInt( talkerindex, CHAR_WORKBATTLEMODE) != BATTLE_CHARMODE_NONE)
		return ;


	switch( seqno)	{
	case SELECTSKILL_START:
		if( CHAR_getWorkInt( talkerindex, CHAR_WORKSHOPRELEVANT) != 2 )	{
			CHAR_setWorkInt( talkerindex, CHAR_WORKSHOPRELEVANT, 0);
			return;
		}
		NPC_FreePetSkillShop_selectWindow( meindex, talkerindex, SKILL_WINDOW, -1);
		break;
	case SELECTSKILL_TEACH:
		if( CHAR_getWorkInt( talkerindex, CHAR_WORKSHOPRELEVANT) != 3 )	{
			CHAR_setWorkInt( talkerindex, CHAR_WORKSHOPRELEVANT, 0);
			return;
		}
		makeStringFromEscaped( data);
		getStringFromIndexWithDelim(data,"|",1,buf,sizeof(buf));
		skill=atoi(buf);
		getStringFromIndexWithDelim(data,"|",2,buf,sizeof(buf));
		pet=atoi(buf);
		getStringFromIndexWithDelim(data,"|",3,buf,sizeof(buf));
		slot=atoi(buf);
		getStringFromIndexWithDelim(data,"|",4,buf,sizeof(buf));
		cost=atoi(buf);

		if( NPC_Util_GetStrFromStrWithDelim( argstr, "pet_skill", msg, sizeof( msg)) != NULL){
			getStringFromIndexWithDelim(msg,",",skill,buf,sizeof(buf));
			skillID=atoi(buf);
		}
		slot--;
		if( slot < 0 )	return;

		petindex = CHAR_getCharPet( talkerindex, pet-1);
		if( !CHAR_CHECKINDEX(petindex) ){
    		CHAR_send_P_StatusString( talkerindex, CHAR_P_STRING_GOLD);
    		return ;
		}
		if( NPC_Util_GetStrFromStrWithDelim( argstr, "skill_rate", msg, sizeof( msg)) != NULL){
			rate = atof( msg);
		}
		petskillindex =  PETSKILL_getPetskillArray( skillID );
		if( !PETSKILL_CHECKINDEX( petskillindex)){
	 		CHAR_send_P_StatusString( talkerindex, CHAR_P_STRING_GOLD);
			return ;
		}

		cost = PETSKILL_getInt( petskillindex, PETSKILL_COST );
		cost = cost * rate;

		//條件判斷
		if(CHAR_getInt(talkerindex,CHAR_GOLD) < cost){
			CHAR_send_P_StatusString( talkerindex, CHAR_P_STRING_GOLD);
			return;
		}

		if( NPC_CHECKFREEPETSKILL( talkerindex, petindex, skillID ) == TRUE ){

			if( Action_RunDoEventAction( meindex, talkerindex, argstr) == FALSE ){
				CHAR_talkToCli( talkerindex, -1, "所需物品不足!!", CHAR_COLORYELLOW);
				CHAR_send_P_StatusString( talkerindex, CHAR_P_STRING_GOLD);
				CHAR_setWorkInt( talkerindex, CHAR_WORKSHOPRELEVANT, 0);
				return;
			}

			CHAR_setPetSkill( petindex, slot, skillID);
			CHAR_setInt( talkerindex, CHAR_GOLD, ( CHAR_getInt( talkerindex, CHAR_GOLD) - cost) );
			snprintf( msgbuf, sizeof( msgbuf ), "W%d",pet-1);
			CHAR_sendStatusString( talkerindex, msgbuf );
			CHAR_sendStatusString( talkerindex, "P");
			CHAR_send_P_StatusString( talkerindex, CHAR_P_STRING_GOLD);
			//WARP
			if( NPC_SkillShopWarp( meindex, talkerindex) == TRUE )
					return;
		}else	{
			CHAR_send_P_StatusString( talkerindex, CHAR_P_STRING_GOLD);
			CHAR_talkToCli( talkerindex, -1, "條件不足!!", CHAR_COLORYELLOW);
		}
		//ADD
		NPC_FreePetSkillShop_selectWindow( meindex, talkerindex, SKILL_WINDOW, -1);
		break;
	case SELECTSKILL_END:
		break;
	}
	
	return;
}

BOOL NPC_CHECKFREEPETSKILL( int toindex, int petindex, int skillID)
{
	int skillindex=-1;
	char SCode[256];
	char Free[256];
	int i, petID;
	skillindex =  PETSKILL_getPetskillArray( skillID );
	memset( Free, 0, sizeof( Free));
	if( !PETSKILL_CHECKINDEX( skillindex) )	{
		return FALSE;
	}

	petID = CHAR_getInt( petindex, CHAR_PETID);
	sprintf( SCode, "%s", PETSKILL_getChar( skillindex, PETSKILL_KINDCODE));
	sprintf( Free, "%s", PETSKILL_getChar( skillindex, PETSKILL_FREE));

	//CHECK CODE
	if( !strcmp( SCode, "\0"))	{
		return TRUE;
	}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲一二三四久久| 欧美一级日韩不卡播放免费| 国产亚洲欧美日韩日本| 美女一区二区久久| 日韩精品一区二区在线| 日韩av中文在线观看| 欧美日本视频在线| 久久99精品国产麻豆婷婷| 欧美tk丨vk视频| 国产毛片精品一区| 国产蜜臀97一区二区三区| 不卡视频一二三四| 综合色中文字幕| 在线播放中文一区| 精品综合免费视频观看| 欧美国产一区视频在线观看| 国产乱码精品1区2区3区| 亚洲国产精品激情在线观看 | 中文字幕一区在线观看| 99综合影院在线| 亚洲欧美国产高清| 欧美一区二区三区四区久久| 久久精品国产77777蜜臀| 久久综合色8888| 色老头久久综合| 久久国产精品色婷婷| 亚洲欧美另类综合偷拍| 日韩欧美成人午夜| 欧美午夜片在线看| 国产传媒久久文化传媒| 日韩成人一区二区| 亚洲色图视频网站| 亚洲精品一区二区三区在线观看| 日本乱人伦aⅴ精品| 成人午夜在线视频| 韩国一区二区三区| 蜜臀av亚洲一区中文字幕| 亚洲欧美在线高清| 国产精品伦一区二区三级视频| 日韩一区二区精品| 欧美精品黑人性xxxx| 91福利区一区二区三区| 波多野结衣中文字幕一区二区三区| 水野朝阳av一区二区三区| 亚洲免费三区一区二区| ●精品国产综合乱码久久久久| 精品久久久久99| 精品国产青草久久久久福利| 欧美精选午夜久久久乱码6080| 色哟哟国产精品免费观看| av在线播放成人| 一本一道久久a久久精品| 91国产免费观看| 欧美亚洲一区二区在线观看| 成人不卡免费av| 91成人国产精品| 777奇米四色成人影色区| 555www色欧美视频| 精品久久99ma| 久久精品亚洲麻豆av一区二区 | 亚洲欧美一区二区三区国产精品| 国产精品久99| 亚洲国产毛片aaaaa无费看| 亚洲一区在线观看网站| 日韩精品三区四区| 豆国产96在线|亚洲| 91看片淫黄大片一级在线观看| 欧美最猛黑人xxxxx猛交| 91精品国产色综合久久不卡蜜臀| 欧美成人一区二区三区| 国产人成一区二区三区影院| 亚洲欧美在线观看| 午夜婷婷国产麻豆精品| 国产高清精品网站| 91日韩在线专区| 日韩你懂的在线观看| 自拍av一区二区三区| 日本人妖一区二区| av激情亚洲男人天堂| 日韩三级免费观看| 亚洲精选一二三| 国产激情视频一区二区三区欧美| 99久久久久免费精品国产 | 欧美三级电影一区| 国产欧美日本一区二区三区| 亚洲精品老司机| 国内精品伊人久久久久av一坑| 91色婷婷久久久久合中文| 日韩三级在线观看| 一区二区三区中文在线观看| 国产九九视频一区二区三区| 精品国产污网站| 亚洲激情图片qvod| 精品一区二区免费在线观看| 97精品久久久久中文字幕| 精品区一区二区| 国产乱码一区二区三区| 精品久久一二三区| 开心九九激情九九欧美日韩精美视频电影| 一本色道久久综合亚洲91| 亚洲麻豆国产自偷在线| 欧美性极品少妇| 偷拍亚洲欧洲综合| 欧美久久一区二区| 午夜精品福利一区二区蜜股av| 精品视频一区二区三区免费| 日韩成人精品视频| 日韩欧美一级二级三级| 高清在线不卡av| 亚洲激情第一区| 日韩一级片在线观看| 国产大陆亚洲精品国产| 综合网在线视频| 日韩一区二区三区在线观看| 久久精品国产秦先生| 国产精品欧美久久久久无广告| 91成人看片片| 国产在线视频不卡二| 亚洲人xxxx| 精品国产伦理网| 在线观看一区日韩| 国产99精品国产| 天堂资源在线中文精品| 国产精品欧美经典| 欧美电影免费观看高清完整版在线 | va亚洲va日韩不卡在线观看| 五月婷婷综合在线| 国产精品国产自产拍高清av| 91麻豆精品91久久久久同性| 99精品国产99久久久久久白柏| 亚洲va在线va天堂| 成人免费视频在线观看| 日韩一卡二卡三卡四卡| 粉嫩av一区二区三区在线播放| 日本欧美一区二区三区乱码 | 在线不卡一区二区| 在线观看亚洲精品视频| 成人av电影在线观看| 蜜臀精品久久久久久蜜臀| 亚洲妇熟xx妇色黄| 一区二区三区四区精品在线视频| 欧美激情在线一区二区三区| 久久综合色之久久综合| 欧美成人在线直播| 91精品欧美综合在线观看最新| 欧美伊人精品成人久久综合97 | 日韩理论片一区二区| 国产精品你懂的在线欣赏| 亚洲国产精品成人综合 | 激情偷乱视频一区二区三区| 美国三级日本三级久久99| 另类综合日韩欧美亚洲| 久久99久久久久久久久久久| 老鸭窝一区二区久久精品| 精品一区二区在线观看| 精品无人码麻豆乱码1区2区| 久久69国产一区二区蜜臀| 岛国av在线一区| 色94色欧美sute亚洲线路二| 欧美日韩免费一区二区三区视频| 精品视频全国免费看| 久久久影院官网| 亚洲午夜免费电影| 国产自产视频一区二区三区| 国产**成人网毛片九色| 欧美三日本三级三级在线播放| 精品国一区二区三区| 亚洲综合清纯丝袜自拍| 免费欧美在线视频| 色悠久久久久综合欧美99| 日韩欧美色综合| 尤物视频一区二区| 国产成人自拍网| 欧美一区二区三区男人的天堂| 中文字幕乱码亚洲精品一区| 一区二区三区在线观看网站| 精品一区二区三区在线观看| a美女胸又www黄视频久久| 欧美色图一区二区三区| 中日韩av电影| 成人午夜激情影院| 26uuu亚洲| 精品在线亚洲视频| 欧美精品日韩一本| 亚洲国产欧美日韩另类综合| 91丨porny丨国产入口| 国产色婷婷亚洲99精品小说| 另类成人小视频在线| 制服丝袜成人动漫| 男女激情视频一区| 欧美日韩在线播| 玉米视频成人免费看| 色婷婷香蕉在线一区二区| 国产精品视频一区二区三区不卡| 韩日av一区二区| 欧美激情一区二区三区全黄| 国产一区高清在线| 欧美激情在线一区二区| 9人人澡人人爽人人精品| 亚洲日本一区二区|