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

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

?? npc_welfare.c

?? 最新主流石器時(shí)代源代碼,包含諸多目前流行功能代碼.
?? C
字號(hào):
#include "version.h"

#ifdef _NPC_WELFARE
#ifdef _PROFESSION_SKILL			// WON ADD 人物職業(yè)技能

#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 "profession_skill.h"
#include "chatmagic.h"
#include "npc_welfare.h"
#include "npc_exchangeman.h"

static void NPC_Welfare_selectWindow(int meindex, int toindex, int num, int select);


//載入好康NPC的初始化
BOOL NPC_WelfareInit( int meindex )
{
    CHAR_setInt( meindex , CHAR_WHICHTYPE , CHAR_TYPEWELFARE);
    //print("名稱:%s\n",CHAR_getChar( meindex, CHAR_NAME));
    return TRUE;
}

//對(duì)話時(shí)的處理
void NPC_WelfareTalked( 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;
	}
	NPC_Welfare_selectWindow( meindex, talkerindex,0,-1);
}

static void NPC_Welfare_selectWindow( int meindex, int toindex, int num,int select)
{
	switch(num){
	  case 0:
		  //free
		NPC_WelfareMakeStr(meindex, toindex, select);
		break;
	  case 1:
		break;
	}
}

void NPC_WelfareWindowTalked( int meindex, int talkerindex, 
		int seqno, int select, char *data)
{
	int skill, i, j;
	int cost;
	int skillID=0;
	char buf[64];
	char argstr[NPC_UTIL_GETARGSTR_BUFSIZE];
	char msg[512];
	char message[64];
	int fd = getfdFromCharaIndex( talkerindex );
	double rate= 1.0;
	int skillarray;
	int p_class=0, need_class=0;
	int profession_skill_point;

	memset( message, -1, sizeof(message) );

	if( NPC_Util_CharDistance( talkerindex, meindex ) > 2) {
		return;
	}

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

	makeStringFromEscaped( data);
	getStringFromIndexWithDelim(data,"|",1,buf,sizeof(buf));
	skill=atoi(buf);
	getStringFromIndexWithDelim(data,"|",2,buf,sizeof(buf));
	cost=atoi(buf);
	
	if( NPC_Util_GetStrFromStrWithDelim( argstr, "profession_skill", msg, sizeof( msg)) != NULL){
		getStringFromIndexWithDelim(msg,",",skill,buf,sizeof(buf));
		skillID=atoi(buf);
	}


	if(skillID < 0) return ;

	if( CHAR_getWorkInt( CONNECT_getCharaindex(fd), CHAR_WORKBATTLEMODE) != BATTLE_CHARMODE_NONE) return ;

	if( NPC_Util_GetStrFromStrWithDelim( argstr, "skill_rate", msg, sizeof( msg)) != NULL){
		rate = atof( msg);
	}

	skillarray = PROFESSION_SKILL_getskillArray( skillID );

	if(skillarray == -1){
		CHAR_send_P_StatusString( talkerindex, CHAR_P_STRING_GOLD);
		return ;
	}

	// 判斷職業(yè)
	{
		if( NPC_Util_GetStrFromStrWithDelim( argstr, "profession_class", msg, sizeof(msg) ) == NULL){
			return ;
		}else{
			p_class = atoi(msg);	
		}
		
		// 技能所需職業(yè)
		need_class = PROFESSION_SKILL_getInt( skillarray, PROFESSION_SKILL_PROFESSION_CLASS );

		if( CHAR_getInt( talkerindex, PROFESSION_CLASS ) == 0 ){
			char token[256];
			memset(token, -1, sizeof(token) );
			sprintf( token, "您尚未就職!" );
			CHAR_talkToCli( talkerindex, meindex, token, CHAR_COLORYELLOW);
			CHAR_send_P_StatusString( talkerindex, CHAR_P_STRING_GOLD);
			return;

		}

		if( CHAR_getInt( talkerindex, PROFESSION_CLASS ) != need_class && need_class != 4 ){
			char token[256];
			memset(token, -1, sizeof(token) );
			sprintf( token, "此技能你不能學(xué)喔!" );
			CHAR_talkToCli( talkerindex, meindex, token, CHAR_COLORYELLOW);
			CHAR_send_P_StatusString( talkerindex, CHAR_P_STRING_GOLD);
			return;
		}
		

	}

	// 判斷剩馀點(diǎn)數(shù)
	{
		profession_skill_point = CHAR_getInt( talkerindex, PROFESSION_SKILL_POINT );
		if( profession_skill_point <= 0 ){
			char token[256];
			memset(token, -1, sizeof(token) );
			sprintf( token, "你目前沒有學(xué)習(xí)點(diǎn)數(shù)!" );
			CHAR_talkToCli( talkerindex, meindex, token, CHAR_COLORYELLOW);
			CHAR_send_P_StatusString( talkerindex, CHAR_P_STRING_GOLD);
			return;
		}
	}

	// 判斷是否達(dá)成學(xué)習(xí)的條件
	{
		int temp[4] = {0}, count = 0, flag = -1 , need_percent = -1, need_count = 0;

		for( i=0; i<4; i++){
			int limit = -1;
			flag = -1;
			limit = PROFESSION_SKILL_getInt( skillarray, PROFESSION_SKILL_LIMIT1+i*2 );
			need_percent = PROFESSION_SKILL_getInt( skillarray, PROFESSION_SKILL_LIMIT1+i*2 + 1 );
					
			if( limit!= 0  && need_percent == 0 ) need_count++;

			if( limit == 0 ){
				continue;
			}else if( limit == -1 ){
				for( j=0; j<PROFESSION_MAX_LEVEL; j++ ){
					if( CHAR_getCharSkill( talkerindex, j) > 0 ) break;
				}
				if( j >=  PROFESSION_MAX_LEVEL ){
					char token[256];	
					sprintf( token, "需先學(xué)會(huì)任1種戰(zhàn)斗技能才能學(xué)習(xí)!");
					CHAR_talkToCli( talkerindex, meindex, token, CHAR_COLORYELLOW);
					CHAR_send_P_StatusString( talkerindex, CHAR_P_STRING_GOLD);
					return;
				}
			}else{
				flag = -1;
				for( j=0; j<PROFESSION_MAX_LEVEL; j++ ){
					// 判斷技能
					if( CHAR_getCharSkill( talkerindex, j) == limit ){
						int skill_level = -1;
						CHAR_HaveSkill* hskill;
						flag = -2;
						hskill = CHAR_getCharHaveSkill( talkerindex, j );
						skill_level = SKILL_getInt( &hskill->skill, SKILL_LEVEL);	
						
						// 判斷熟練度
						if( skill_level >= need_percent ){
							flag = 1;	break;
						}					
					}
				}
				
				// 未達(dá)成條件
				if( flag == -1 && need_percent == 0 ){
						temp[count] = limit;
						count ++;					
				}else if( flag == -1 ){
					char token[256];	
					memset(token, -1, sizeof(token) );
					sprintf( token, "尚未學(xué)會(huì)%s!", PROFESSION_SKILL_getChar( limit, PROFESSION_SKILL_NAME) );
					CHAR_talkToCli( talkerindex, -1, token, CHAR_COLORYELLOW);
					CHAR_send_P_StatusString( talkerindex, CHAR_P_STRING_GOLD);
					return;
				}else if( flag == -2 ){
					char token[256];	
					memset(token, -1, sizeof(token) );
					sprintf( token, "%s熟練度不足%d!", PROFESSION_SKILL_getChar( limit, PROFESSION_SKILL_NAME), need_percent );
					CHAR_talkToCli( talkerindex, -1, token, CHAR_COLORYELLOW);
					CHAR_send_P_StatusString( talkerindex, CHAR_P_STRING_GOLD);
					return;
				}
			}
		}
	
		if( count == need_count &&  need_count != 0 ){
			char msg[256] = {0};
		
			sprintf( msg, "需先學(xué)會(huì) " );
			for( i = 0; i< count; i++ ){
				if( temp[i] != 0 ){
					char token[50] = {0};
					sprintf( token, "%s ", PROFESSION_SKILL_getChar( temp[i], PROFESSION_SKILL_NAME) );
					strcat( msg, token );
				}
			}
			sprintf( msg, "%s 任一種技能", msg );
			CHAR_talkToCli( talkerindex, -1, msg, CHAR_COLORYELLOW);
			CHAR_send_P_StatusString( talkerindex, CHAR_P_STRING_GOLD);

			return;
		}

	}

	// 判斷金錢	
	{
		cost = PROFESSION_SKILL_getInt( skillarray, PROFESSION_SKILL_COST );
		cost = cost * rate;

		if(CHAR_getInt(talkerindex,CHAR_GOLD) < cost){
			CHAR_send_P_StatusString( talkerindex, CHAR_P_STRING_GOLD);
			return;
		}
	}

#ifdef _NPC_ProfessionTrans
	//判斷轉(zhuǎn)生
	{
		if( NPC_Util_GetStrFromStrWithDelim( argstr, "trans", msg, sizeof(msg) ) != NULL){
		    int trans = atoi(msg);
			print("\n轉(zhuǎn)生要求:%d,%d",CHAR_getInt( talkerindex, CHAR_TRANSMIGRATION),trans);
			if( CHAR_getInt( talkerindex, CHAR_TRANSMIGRATION) < trans){ 
				if( NPC_Util_GetStrFromStrWithDelim( argstr, "trans_msg", msg, sizeof(msg) ) != NULL){
                    CHAR_talkToCli( talkerindex, meindex, msg, CHAR_COLORYELLOW);
				    return;
				}
				else{
                    CHAR_talkToCli( talkerindex, meindex, "您的轉(zhuǎn)生次數(shù)不夠哦。", CHAR_COLORYELLOW);
				    return;
				}
			}
		}
	}
#endif

	// 增加技能
	{
		int skill_level = 0;

		// 共通技能熟練度給50,其馀給10
		if( (skillID == 63) || (skillID == 64) || (skillID == 65)  ){
			int	Pskillid = -1;
			skill_level = 50;
			Pskillid = PROFESSION_SKILL_getskillArray( skillID );
		}else{
			skill_level = 10;
		}

		if( PROFESSION_SKILL_ADDSK( talkerindex, skillID, skill_level ) == -1 )	return;

		CHAR_DelGold( talkerindex, cost );

		CHAR_sendStatusString( talkerindex , "S");

		NPC_Welfare_selectWindow( meindex, talkerindex,0,-1);
	}

	// 傳送訊息
	{
		char token[256];
		int next_profession_skill_point = profession_skill_point-1;
		
		CHAR_setInt( talkerindex, PROFESSION_SKILL_POINT, next_profession_skill_point );
		
		memset(token, -1, sizeof(token) );
		sprintf( token, "您學(xué)習(xí)了 %s,剩馀學(xué)習(xí)點(diǎn)數(shù) %d"
				,PROFESSION_SKILL_getChar( skillarray, PROFESSION_SKILL_NAME )
				,next_profession_skill_point );
		CHAR_talkToCli( talkerindex, -1, token, CHAR_COLORYELLOW);
    
		CHAR_sendCToArroundCharacter( CHAR_getWorkInt( talkerindex , CHAR_WORKOBJINDEX ));
	}

}             

void NPC_WelfareMakeStr(int meindex,int toindex,int select)
{
	char argstr[NPC_UTIL_GETARGSTR_BUFSIZE];
	char msg[256];
	double rate=1.0;
	int i=0;
	char token[65530];
	int fd = getfdFromCharaIndex( toindex);

	if(select==0){
		sprintf(token,"0|0");
		lssproto_WN_send( fd, WINDOW_MESSAGETYPE_PETSKILLSHOP, 
			WINDOW_BUTTONTYPE_NONE, 
			CHAR_WINDOWTYPE_WINDOWPETSKILLSHOP,
			CHAR_getWorkInt( meindex, CHAR_WORKOBJINDEX),
			token);
		
	}

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

	if( NPC_Util_GetStrFromStrWithDelim( argstr, "main_msg", msg, sizeof( msg)) == NULL){
		print("mainERR");
		return ;
	}

	sprintf(token,"1|%s|%s", CHAR_getChar(meindex,CHAR_NAME), msg);
		
	if( NPC_Util_GetStrFromStrWithDelim( argstr, "skill_rate", msg, sizeof( msg)) != NULL){
		rate=atof(msg);
	}

		
	if( NPC_Util_GetStrFromStrWithDelim( argstr, "profession_skill", msg, sizeof( msg) ) != NULL){
		int skillarray;
		int skillID;
		int cost;
		char token2[265];
		char buf[64];

		i=1;
	    while( getStringFromIndexWithDelim(msg,",",i,buf,sizeof(buf)) !=FALSE ){
			i++;
			skillID=atoi(buf);

			skillarray = PROFESSION_SKILL_getskillArray( skillID );

			if( PROFESSION_SKILL_CHECKINDEX( skillarray ) == FALSE )		continue;

			cost = PROFESSION_SKILL_getInt( skillarray, PROFESSION_SKILL_COST );

			cost = (int)cost*rate;

			sprintf(token2,"|%s|%d|%s|%d",
				PROFESSION_SKILL_getChar( skillarray, PROFESSION_SKILL_NAME ),	// 技能名稱
				cost,															// 金額
				PROFESSION_SKILL_getChar( skillarray, PROFESSION_SKILL_TXT ),	// 說明
				PROFESSION_SKILL_getInt( skillarray, PROFESSION_SKILL_ICON )	// 圖示
			);
			strcat(token,token2);
		} 
	}

	lssproto_WN_send( fd, WINDOW_MESSAGETYPE_PROFESSIONSHOP, 
				WINDOW_BUTTONTYPE_NONE, 
				WINDOW_MESSAGETYPE_PROFESSIONSHOP,
				CHAR_getWorkInt( meindex, CHAR_WORKOBJINDEX),
				token);

	return;
}


#endif
#endif


?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久激情综合网| 福利视频网站一区二区三区| 91精品一区二区三区久久久久久| 亚洲国产日韩精品| 欧美高清激情brazzers| 国产资源在线一区| 国产精品毛片a∨一区二区三区| 99久久婷婷国产精品综合| 亚洲老妇xxxxxx| 日韩欧美激情四射| 成人污视频在线观看| 午夜一区二区三区视频| 久久嫩草精品久久久久| 色视频成人在线观看免| 美女脱光内衣内裤视频久久影院| 久久久不卡网国产精品一区| 色综合久久久久久久| 国内精品不卡在线| 亚洲自拍偷拍综合| 国产日产欧产精品推荐色| 欧美性色综合网| 国产精品99久久久久久有的能看 | 欧美国产一区在线| 欧美性猛交xxxxxxxx| 成人国产亚洲欧美成人综合网| 午夜精品在线看| 亚洲人成在线观看一区二区| 久久无码av三级| 欧美一区二视频| 色噜噜狠狠色综合欧洲selulu| 精品一区二区三区在线播放| 亚洲成在人线在线播放| 国产精品久久久久影院老司| 337p粉嫩大胆噜噜噜噜噜91av| 欧美日韩精品欧美日韩精品一| av男人天堂一区| 国产成人精品三级麻豆| 美女网站一区二区| 日韩—二三区免费观看av| 亚洲欧美另类小说视频| 中文字幕亚洲欧美在线不卡| 久久久久久久性| 日韩久久免费av| 欧美一区二区观看视频| 欧美日本乱大交xxxxx| 欧美色网一区二区| 欧美视频三区在线播放| 欧美日韩高清一区二区| 7777精品伊人久久久大香线蕉| 91福利视频网站| 欧美日韩精品二区第二页| 欧美日韩免费视频| 这里只有精品99re| 欧美成人一级视频| 国产欧美一二三区| 亚洲色图.com| 亚洲一级二级三级在线免费观看| 亚洲欧美另类小说| 亚洲成av人片在www色猫咪| 日韩精品福利网| 久久99久久精品欧美| 国产精品123| 91丨porny丨国产入口| 欧美视频一区二| 久久综合九色综合欧美就去吻| 国产精品你懂的在线| 一区二区三区av电影| 青青草成人在线观看| 成人av综合在线| 欧美日韩成人在线| 亚洲国产精品v| 亚洲第一主播视频| 国产精品18久久久久久久久久久久 | 欧美mv日韩mv亚洲| 国产精品毛片a∨一区二区三区| 亚洲一区视频在线| 丰满亚洲少妇av| 欧美精品1区2区3区| 国产精品女人毛片| 美脚の诱脚舐め脚责91| 成人久久久精品乱码一区二区三区| 色狠狠综合天天综合综合| 欧美一区二区三区在线电影| 中文字幕欧美三区| 久久99热99| 欧美三级电影网| 亚洲视频资源在线| 韩国成人在线视频| 欧美高清激情brazzers| 亚洲免费色视频| 成人精品高清在线| 欧美精品一区在线观看| 日韩国产一区二| 欧美视频自拍偷拍| 亚洲主播在线观看| 99精品欧美一区二区三区小说| 欧美精品一区二区三区一线天视频| 亚洲香肠在线观看| 日本精品一区二区三区四区的功能| 国产午夜精品在线观看| 免费久久精品视频| 欧美一区二区高清| 日韩国产高清影视| 欧美一区二区在线视频| 婷婷六月综合亚洲| 制服丝袜亚洲播放| 日本伊人色综合网| 日韩一区二区在线播放| 日精品一区二区三区| 欧美一区二区三区在线视频| 人妖欧美一区二区| 精品剧情在线观看| 国产乱码精品一区二区三区五月婷 | 日韩一级完整毛片| 久久99蜜桃精品| 国产日韩欧美电影| 国产精品综合一区二区| 国产精品视频一二三区| av成人老司机| 午夜伦理一区二区| 精品国产亚洲一区二区三区在线观看| 日本va欧美va精品| 国产精品色哟哟网站| 91九色02白丝porn| 美国三级日本三级久久99 | 亚洲成人激情自拍| 日韩欧美专区在线| 暴力调教一区二区三区| 五月天激情综合网| 久久精品免费在线观看| 色综合婷婷久久| 免费xxxx性欧美18vr| 国产精品一区三区| 日韩伦理电影网| 日韩一区二区免费视频| 成人黄色av网站在线| 日日夜夜免费精品| 综合电影一区二区三区 | 中文字幕av一区 二区| 精品视频免费看| 国产高清不卡一区二区| 亚洲线精品一区二区三区八戒| 久久久久久久久久久久久女国产乱| 91视视频在线观看入口直接观看www| 日本vs亚洲vs韩国一区三区 | 91福利在线观看| 国产91露脸合集magnet| 日本不卡一二三区黄网| 日韩理论电影院| 久久欧美中文字幕| 91精品国产综合久久久蜜臀图片| 成人黄色a**站在线观看| 九九**精品视频免费播放| 亚洲综合999| 中文字幕在线不卡一区二区三区| 精品国产乱子伦一区| 欧美久久久久久久久中文字幕| 99精品欧美一区二区三区综合在线| 精品在线免费观看| 久久99精品国产麻豆不卡| 视频精品一区二区| 亚洲一区二区不卡免费| 樱桃视频在线观看一区| 亚洲欧美综合另类在线卡通| 国产丝袜在线精品| 久久精品综合网| 久久精品亚洲精品国产欧美kt∨ | 91精品国产综合久久小美女| 欧美私模裸体表演在线观看| 欧美在线三级电影| 欧美视频三区在线播放| 欧美亚洲丝袜传媒另类| 欧美午夜一区二区| 欧美日韩国产区一| 日韩欧美激情在线| 欧美精品一区二区三区在线播放 | 亚洲成av人片一区二区梦乃| 亚洲国产成人高清精品| 日韩黄色一级片| 韩国精品主播一区二区在线观看 | 久久久久久久久久久99999| 久久久三级国产网站| 亚洲欧洲精品成人久久奇米网| 亚洲色图色小说| 日一区二区三区| 国产综合一区二区| 99久久久国产精品| 欧美精品99久久久**| 2021国产精品久久精品| 国产精品美女久久久久久久 | 国产精品五月天| 亚洲午夜在线视频| 美女在线一区二区| 成人精品电影在线观看| 欧美日韩精品一区二区| 国产亚洲欧洲一区高清在线观看| 国产精品二三区| 精品一区二区在线播放| 91福利在线看| 欧美国产欧美综合|