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

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

?? 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寵物技能不規范:[%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, "你想讓寵物學特殊技能?可你的條件還不夠喔!", 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;
	}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美bbbbb| 91精品国产综合久久精品| 欧美午夜精品一区二区蜜桃| 久久亚洲一级片| 亚洲午夜久久久久中文字幕久| 精品亚洲成a人在线观看| 在线观看国产91| 国产精品剧情在线亚洲| 免费成人在线影院| 欧美日韩不卡在线| 日韩毛片精品高清免费| 国产精品自拍网站| 精品久久久久久久一区二区蜜臀| 午夜成人免费视频| 色天使色偷偷av一区二区| 国产欧美一区二区精品忘忧草 | 一区二区欧美精品| 不卡一区二区三区四区| 国产午夜精品在线观看| 狠狠色2019综合网| 精品日韩欧美在线| 久久国产人妖系列| 日韩欧美在线不卡| 日本中文字幕不卡| 777亚洲妇女| 丝袜a∨在线一区二区三区不卡| 91黄色激情网站| 一二三区精品视频| 精品视频在线免费观看| 午夜天堂影视香蕉久久| 欧美在线综合视频| 亚洲午夜三级在线| 3atv一区二区三区| 男女性色大片免费观看一区二区| 欧美浪妇xxxx高跟鞋交| 午夜精品久久久久久久99水蜜桃| 欧美日韩国产系列| 免费成人在线播放| 久久先锋影音av| 成人听书哪个软件好| 日韩理论片网站| 在线视频国产一区| 午夜不卡av在线| 日韩精品中文字幕在线不卡尤物| 久久国产免费看| 国产蜜臀av在线一区二区三区| caoporn国产一区二区| 亚洲人成亚洲人成在线观看图片| 欧美午夜精品电影| 美日韩一区二区| 久久精品亚洲乱码伦伦中文 | 欧美日韩卡一卡二| 日本在线不卡视频| 久久亚洲春色中文字幕久久久| 国产电影精品久久禁18| 亚洲人成亚洲人成在线观看图片 | 成人99免费视频| 一区二区三区四区不卡在线 | 欧美日免费三级在线| 日韩精品91亚洲二区在线观看 | 亚洲精品一区二区三区精华液| 国产大陆a不卡| 夜夜精品视频一区二区| 日韩欧美在线一区二区三区| 成人自拍视频在线| 午夜不卡av免费| 国产精品欧美久久久久无广告| 色狠狠综合天天综合综合| 蜜臀av一区二区在线免费观看| 中文字幕av一区二区三区| 欧美日韩国产影片| 国产99久久久久| 三级久久三级久久| 国产精品乱码一区二区三区软件| 欧美日韩一区二区在线观看视频 | 宅男在线国产精品| 成人av在线资源网| 麻豆成人在线观看| 亚洲黄一区二区三区| 欧美精品一区二区三区在线| 在线观看日韩av先锋影音电影院| 国产一区二区三区香蕉| 亚洲五月六月丁香激情| 国产精品久久久久久久久久久免费看 | 国产精品毛片久久久久久久| 91精品国产91综合久久蜜臀| 色婷婷亚洲一区二区三区| 狠狠色丁香久久婷婷综合丁香| 亚洲电影欧美电影有声小说| 亚洲欧美在线视频| 精品福利av导航| 538prom精品视频线放| 91网站视频在线观看| 国产一区二区三区在线观看精品 | 奇米影视在线99精品| 亚洲综合网站在线观看| 中文字幕的久久| 精品国产乱码91久久久久久网站| 欧美日韩精品高清| 欧美专区日韩专区| 色呦呦一区二区三区| 不卡av电影在线播放| 国产精品一区二区不卡| 狠狠色狠狠色综合系列| 美女任你摸久久| 奇米一区二区三区av| 日韩在线卡一卡二| 天堂久久一区二区三区| 亚洲图片欧美一区| 亚洲不卡一区二区三区| 亚洲国产成人高清精品| 亚洲国产成人porn| 天天免费综合色| 日韩精品免费视频人成| 日韩av一区二区三区四区| 午夜av一区二区三区| 日本网站在线观看一区二区三区| 日韩av电影一区| 麻豆精品视频在线| 国产一区二区h| 国产99久久精品| 99精品视频在线观看免费| 99久久精品久久久久久清纯| 色婷婷久久久久swag精品| 欧美性感一类影片在线播放| 欧美日韩国产乱码电影| 6080亚洲精品一区二区| 精品久久久影院| 国产精品家庭影院| 亚洲国产另类精品专区| 日本美女视频一区二区| 国产一区二区在线看| gogo大胆日本视频一区| 欧美色图激情小说| 精品国免费一区二区三区| 国产精品天干天干在线综合| 一区二区三区免费网站| 午夜精品福利久久久| 国产一区在线观看视频| 97se狠狠狠综合亚洲狠狠| 欧美久久久久免费| 久久精品水蜜桃av综合天堂| 亚洲精品国产成人久久av盗摄 | 天堂资源在线中文精品| 蜜桃传媒麻豆第一区在线观看| 成人天堂资源www在线| 欧美日韩卡一卡二| 久久精品欧美一区二区三区麻豆 | 国产永久精品大片wwwapp| 成人av免费在线播放| 欧美另类高清zo欧美| 欧美激情中文字幕| 亚洲午夜一二三区视频| 国产乱国产乱300精品| 在线观看区一区二| 久久久99久久精品欧美| 亚洲 欧美综合在线网络| 国产成人8x视频一区二区| 欧美色老头old∨ideo| 中文欧美字幕免费| 毛片av中文字幕一区二区| 91美女福利视频| 国产亚洲精品免费| 青青草原综合久久大伊人精品| bt7086福利一区国产| 精品国产免费视频| 亚洲一级不卡视频| 不卡在线观看av| 欧美变态凌虐bdsm| 亚洲电影在线播放| 成人av网站在线观看| 欧美精品一区二区久久婷婷| 无码av免费一区二区三区试看| 99精品黄色片免费大全| 久久亚洲精精品中文字幕早川悠里| 午夜亚洲福利老司机| 色中色一区二区| 亚洲图片另类小说| 成人动漫一区二区在线| 久久久久久久国产精品影院| 蜜臀久久99精品久久久久宅男| 欧美在线观看一二区| 综合激情成人伊人| 波多野结衣亚洲| 国产精品久久久久久久蜜臀| 国产成人亚洲综合a∨婷婷图片| 日韩亚洲欧美一区| 奇米影视一区二区三区小说| 欧美日韩精品系列| 亚洲国产综合在线| 精品视频资源站| 午夜在线成人av| 精品视频在线免费看| 亚洲狠狠爱一区二区三区| 欧美午夜精品一区二区蜜桃| 亚洲午夜激情网页| 欧美性受xxxx| 日韩成人午夜电影| 4438亚洲最大| 久久99这里只有精品|