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

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

?? pc.c

?? 最新的仙鏡傳說服務器C語言源碼
?? C
?? 第 1 頁 / 共 5 頁
字號:
	else if( (sd->weapontype1 == 1 && sd->weapontype2 == 6) ||
		(sd->weapontype1 == 6 && sd->weapontype2 == 1) ) // 抁寱 - 晙
		sd->status.weapon = 0x15;
	else if( (sd->weapontype1 == 2 && sd->weapontype2 == 6) ||
		(sd->weapontype1 == 6 && sd->weapontype2 == 2) ) // 扨庤寱 - 晙
		sd->status.weapon = 0x16;
	else
		sd->status.weapon = sd->weapontype1;

	return 0;
}

int pc_setequipindex(struct map_session_data *sd)
{
	int i,j;

	for(i=0;i<11;i++)
		sd->equip_index[i] = -1;

	for(i=0;i<MAX_INVENTORY;i++) {
		if(sd->status.inventory[i].nameid <= 0)
			continue;
		if(sd->status.inventory[i].equip) {
			for(j=0;j<11;j++)
				if(sd->status.inventory[i].equip & equip_pos[j])
					sd->equip_index[j] = i;
			if(sd->status.inventory[i].equip & 0x0002) {
				if(sd->inventory_data[i])
					sd->weapontype1 = sd->inventory_data[i]->look;
				else
					sd->weapontype1 = 0;
			}
			if(sd->status.inventory[i].equip & 0x0020) {
				if(sd->inventory_data[i]) {
					if(sd->inventory_data[i]->type == 4) {
						if(sd->status.inventory[i].equip == 0x0020)
							sd->weapontype2 = sd->inventory_data[i]->look;
						else
							sd->weapontype2 = 0;
					}
					else
						sd->weapontype2 = 0;
				}
				else
					sd->weapontype2 = 0;
			}
		}
	}
	pc_calcweapontype(sd);

	return 0;
}

int pc_isequip(struct map_session_data *sd,int n)
{
	struct item_data *item = sd->inventory_data[n];
	struct status_change *sc_data = battle_get_sc_data(&sd->bl);

 	if( battle_config.gm_allequip>0 && pc_isGM(sd)>=battle_config.gm_allequip )
		return 1;

	if(item == NULL)
		return 0;
	if(item->sex != 2 && sd->status.sex != item->sex)
		return 0;
	if(item->elv > 0 && sd->status.base_level < item->elv)
		return 0;
	if(((1<<sd->status.class)&item->class) == 0)
		return 0;
	if(map[sd->bl.m].flag.pvp && (item->flag.no_equip==1 || item->flag.no_equip==3))
		return 0;
	if(map[sd->bl.m].flag.gvg && (item->flag.no_equip==2 || item->flag.no_equip==3))
		return 0;
	if(item->equip & 0x0002 && sc_data[SC_STRIPWEAPON].timer != -1)
		return 0;
	if(item->equip & 0x0020 && sc_data[SC_STRIPSHIELD].timer != -1)
		return 0;
	if(item->equip & 0x0010 && sc_data[SC_STRIPARMOR].timer != -1)
		return 0;
	if(item->equip & 0x0100 && sc_data[SC_STRIPHELM].timer != -1)
		return 0;
	return 1;
}

/*==========================================
 * session id偵栤戣柍偟
 * char嶪偐傜憲傜傟偰偒偨僗僥乕僞僗傪愝掕
 *------------------------------------------
 */
int pc_authok(int id,struct mmo_charstatus *st)
{
	struct map_session_data *sd;
	struct party *p;
	struct guild *g;
	int i;
	unsigned long tick = gettick();

	sd = map_id2sd(id);
	if(sd==NULL)
		return 1;
	if(sd->new_fd){
		// 2廳login忬懺偩偭偨偺偱丄椉曽棊偡
		clif_authfail_fd(sd->fd,2);	// same id
		clif_authfail_fd(sd->new_fd,2);	// same id
		return 1;
	}
	memcpy(&sd->status,st,sizeof(*st));

	if(sd->status.sex != sd->sex){
		clif_authfail_fd(sd->fd,0);
		return 1;
	}

	memset(&sd->state,0,sizeof(sd->state));
	// 婎杮揑側弶婜壔
	sd->state.connect_new = 1;
	sd->bl.prev = sd->bl.next = NULL;
	sd->weapontype1 = sd->weapontype2 = 0;
	sd->view_class = sd->status.class;
	sd->speed = DEFAULT_WALK_SPEED;
	sd->state.dead_sit=0;
	sd->dir=0;
	sd->head_dir=0;
	sd->state.auth=1;
	sd->walktimer=-1;
	sd->attacktimer=-1;
	sd->skilltimer=-1;
	sd->skillitem=-1;
	sd->skillitemlv=-1;
	sd->invincible_timer=-1;

	sd->deal_locked =0;
	sd->trade_partner=0;

	sd->inchealhptick = 0;
	sd->inchealsptick = 0;
	sd->hp_sub = 0;
	sd->sp_sub = 0;
	sd->inchealspirittick = 0;
	sd->canact_tick = tick;
	sd->canmove_tick = tick;
	sd->attackabletime = tick;

	sd->spiritball = 0;
	for(i=0;i<MAX_SKILL_LEVEL;i++)
		sd->spirit_timer[i] = -1;
	for(i=0;i<MAX_SKILLTIMERSKILL;i++)
		sd->skilltimerskill[i].timer = -1;

	memset(&sd->dev,0,sizeof(struct square));
	for(i=0;i<5;i++){
		sd->dev.val1[i] = 0;
		sd->dev.val2[i] = 0;
	}
	
	// 傾僇僂儞僩曄悢偺憲怣梫媮
	intif_request_accountreg(sd);

	// 傾僀僥儉僠僃僢僋
	pc_setinventorydata(sd);
	pc_checkitem(sd);

	// pet
	sd->petDB = NULL;
	sd->pd = NULL;
	sd->pet_hungry_timer = -1;
	memset(&sd->pet,0,sizeof(struct s_pet));

	// 僗僥乕僞僗堎忢偺弶婜壔
	for(i=0;i<MAX_STATUSCHANGE;i++) {
		sd->sc_data[i].timer=-1;
		sd->sc_data[i].val1 = sd->sc_data[i].val2 = sd->sc_data[i].val3 = sd->sc_data[i].val4 = 0;
	}
	sd->sc_count=0;
	sd->status.option&=OPTION_MASK;

	// 僗僉儖儐僯僢僩娭學偺弶婜壔
	memset(sd->skillunit,0,sizeof(sd->skillunit));
	memset(sd->skillunittick,0,sizeof(sd->skillunittick));

	// 僷乕僥傿乕娭學偺弶婜壔
	sd->party_sended=0;
	sd->party_invite=0;
	sd->party_x=-1;
	sd->party_y=-1;
	sd->party_hp=-1;

	// 僊儖僪娭學偺弶婜壔
	sd->guild_sended=0;
	sd->guild_invite=0;
	sd->guild_alliance=0;

	// 僀儀儞僩娭學偺弶婜壔
	memset(sd->eventqueue,0,sizeof(sd->eventqueue));
	for(i=0;i<MAX_EVENTTIMER;i++)
		sd->eventtimer[i] = -1;

	// 埵抲偺愝掕
	pc_setpos(sd,sd->status.last_point.map ,
		sd->status.last_point.x , sd->status.last_point.y, 0);

	// pet
	if(sd->status.pet_id > 0)
		intif_request_petdata(sd->status.account_id,sd->status.char_id,sd->status.pet_id);

	// 僷乕僥傿丄僊儖僪僨乕僞偺梫媮
	if( sd->status.party_id>0 && (p=party_search(sd->status.party_id))==NULL)
		party_request_info(sd->status.party_id);
	if( sd->status.guild_id>0 && (g=guild_search(sd->status.guild_id))==NULL)
		guild_request_info(sd->status.guild_id);

	// pvp偺愝掕
	sd->pvp_rank=0;
	sd->pvp_point=0;
	sd->pvp_timer=-1;

	// 捠抦
	clif_authok(sd);
	map_addnickdb(sd);


	// 僗僥乕僞僗弶婜寁嶼側偳
	pc_calcstatus(sd,1);

	// Message of the Day偺憲怣
	{
		char buf[256];
		FILE *fp;
		if(	(fp = fopen(motd_txt, "r"))!=NULL){
			while (fgets(buf, 250, fp) != NULL){
				int i;
				for( i=0; buf[i]; i++){
					if( buf[i]=='\r' || buf[i]=='\n'){
						buf[i]=0;
						break;
					}
				}
				clif_displaymessage(sd->fd,buf);
			}
			fclose(fp);
		}
	}

	return 0;
}


/*==========================================
 * session id偵栤戣偁傝側偺偱屻巒枛
 *------------------------------------------
 */
int pc_authfail(int id)
{
	struct map_session_data *sd;

	sd = map_id2sd(id);
	if(sd==NULL)
		return 1;
	if(sd->new_fd){
		// 2廳login忬懺偩偭偨偺偱丄怴偟偄愙懕偺傒棊偡
		clif_authfail_fd(sd->new_fd,0);

		sd->new_fd=0;
		return 0;
	}
	clif_authfail_fd(sd->fd,0);
	return 0;
}


static int pc_calc_skillpoint(struct map_session_data* sd)
{
	int  i,skill,skill_point=0;
	for(i=1;i<MAX_SKILL;i++){
		if( (skill = pc_checkskill(sd,i)) > 0) {
			if(!(skill_get_inf2(i)&0x01) || battle_config.quest_skill_learn) {
				if(!sd->status.skill[i].flag)
					skill_point += skill;
				else if(sd->status.skill[i].flag > 2 && sd->status.skill[i].flag != 13) {
					skill_point += (sd->status.skill[i].flag - 2);
				}
			}
		}
	}

	return skill_point;
}

/*==========================================
 * 妎偊傜傟傞僗僉儖偺寁嶼
 *------------------------------------------
 */
int pc_calc_skilltree(struct map_session_data *sd)
{
	int i,id=0,flag;
	int c=sd->status.class;

	if(battle_config.skillup_limit && c >= 0 && c < 23) {
		int skill_point = pc_calc_skillpoint(sd);
		if(skill_point < 9)
			c = 0;
		else if(sd->status.skill_point >= sd->status.job_level && skill_point < 58 && c > 6) {
			switch(c) {
				case 7:
				case 14:
					c = 1;
					break;
				case 8:
				case 15:
					c = 4;
					break;
				case 9:
				case 16:
					c = 2;
					break;
				case 10:
				case 18:
					c = 5;
					break;
				case 11:
				case 19:
				case 20:
					c = 3;
					break;
				case 12:
				case 17:
					c = 6;
					break;
			}
		}
	}

	for(i=0;i<MAX_SKILL;i++){
		if (sd->status.skill[i].flag != 13) sd->status.skill[i].id=0;
		if (sd->status.skill[i].flag && sd->status.skill[i].flag != 13){	// card僗僉儖側傜丄
			sd->status.skill[i].lv=(sd->status.skill[i].flag==1)?0:sd->status.skill[i].flag-2;	// 杮摉偺lv偵
			sd->status.skill[i].flag=0;	// flag偼0偵偟偰偍偔
		}
	}

	if (battle_config.gm_allskill > 0 && pc_isGM(sd) >= battle_config.gm_allskill){
		// 慡偰偺僗僉儖
		for(i=1;i<158;i++)
			sd->status.skill[i].id=i;
		for(i=210;i<291;i++)
			sd->status.skill[i].id=i;
		for(i=304;i<MAX_SKILL;i++)
			sd->status.skill[i].id=i;
	}else{
		// 捠忢偺寁嶼
		do{
			flag=0;
			for(i=0;(id=skill_tree[c][i].id)>0;i++){
				int j,f=1;
				if(!battle_config.skillfree) {
					for(j=0;j<5;j++) {
						if( skill_tree[c][i].need[j].id &&
							pc_checkskill(sd,skill_tree[c][i].need[j].id) < skill_tree[c][i].need[j].lv)
							f=0;
					}
				}
				if(f && sd->status.skill[id].id==0 ){
					sd->status.skill[id].id=id;
					flag=1;
				}
			}
		}while(flag);
	}
//	if(battle_config.etc_log)
//		printf("calc skill_tree\n");
	return 0;
}



/*==========================================
 * 廳検傾僀僐儞偺妋擣
 *------------------------------------------
 */
int pc_checkweighticon(struct map_session_data *sd)
{
	int flag=0;
	if(sd->weight*2 >= sd->max_weight)
		flag=1;
	if(sd->weight*10 >= sd->max_weight*9)
		flag=2;

	if(flag==1){
		if(sd->sc_data[SC_WEIGHT50].timer==-1)
			skill_status_change_start(&sd->bl,SC_WEIGHT50,0,0,0,0,0,0);
	}else{
		skill_status_change_end(&sd->bl,SC_WEIGHT50,-1);
	}
	if(flag==2){
		if(sd->sc_data[SC_WEIGHT90].timer==-1)
			skill_status_change_start(&sd->bl,SC_WEIGHT90,0,0,0,0,0,0);
	}else{
		skill_status_change_end(&sd->bl,SC_WEIGHT90,-1);
	}
	return 0;
}


/*==========================================
 * 僷儔儊乕僞寁嶼
 * first==0偺帪丄寁嶼懳徾偺僷儔儊乕僞偑屇傃弌偟慜偐傜
 * 曄 壔偟偨応崌帺摦偱send偡傞偑丄
 * 擻摦揑偵曄壔偝偣偨僷儔儊乕僞偼帺慜偱send偡傞傛偆偵
 *------------------------------------------
 */
int pc_calcstatus(struct map_session_data* sd,int first)
{
	int b_speed,b_max_hp,b_max_sp,b_hp,b_sp,b_weight,b_max_weight,b_paramb[6],b_parame[6],b_hit,b_flee;
	int b_aspd,b_watk,b_def,b_watk2,b_def2,b_flee2,b_critical,b_attackrange,b_matk1,b_matk2,b_mdef,b_mdef2,b_class;
	int b_base_atk;
	struct skill b_skill[MAX_SKILL];
	int i,bl,index;
	int skill,aspd_rate,wele,wele_,def_ele,refinedef=0;
	int pele=0,pdef_ele=0;
	int str,dstr,dex;

	b_speed = sd->speed;
	b_max_hp = sd->status.max_hp;
	b_max_sp = sd->status.max_sp;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲国产精品黑人久久久| 欧美无乱码久久久免费午夜一区 | 91免费视频网址| 欧美日韩二区三区| 国产亚洲成av人在线观看导航| 亚洲欧美成人一区二区三区| 国产在线精品一区二区| 不卡av在线网| 26uuu精品一区二区| 亚洲国产成人av网| 97se亚洲国产综合在线| 亚洲男人的天堂在线观看| 美国一区二区三区在线播放| 精品久久人人做人人爰| 精品伦理精品一区| 亚洲成av人片| av日韩在线网站| 国产欧美综合色| 国产一区二区三区免费播放| 日韩一区二区在线观看| 亚洲成人高清在线| 在线免费观看成人短视频| 国产清纯美女被跳蛋高潮一区二区久久w| 日韩在线a电影| 欧美精品v日韩精品v韩国精品v| 一区二区三区在线观看国产| 99久久精品一区| 国产精品久久久久影院| 成人免费视频国产在线观看| 久久午夜色播影院免费高清| 麻豆91免费看| 日韩av电影天堂| 麻豆国产精品视频| 久久成人麻豆午夜电影| 亚洲国产va精品久久久不卡综合| 国产精品欧美一级免费| 欧美无砖砖区免费| 综合欧美亚洲日本| 不卡视频在线看| 国产精品色呦呦| 成人国产一区二区三区精品| 国产精品青草综合久久久久99| 国产一区二区免费在线| 中文成人av在线| 99国产精品久久久| 亚洲精品国产视频| 欧美日韩欧美一区二区| 日日夜夜免费精品| 欧美成人乱码一区二区三区| 国产一区二区三区免费| 国产精品网友自拍| 成人精品视频一区二区三区尤物| 亚洲精品免费在线观看| 麻豆一区二区99久久久久| 日韩午夜av电影| 国产精品18久久久| 中文字幕欧美激情一区| 91亚洲男人天堂| 亚洲mv大片欧洲mv大片精品| 正在播放亚洲一区| 国产成人鲁色资源国产91色综| 国产精品久久福利| 欧美日韩国产免费| 国产麻豆9l精品三级站| 亚洲精品久久久蜜桃| 欧美日韩精品是欧美日韩精品| 久久69国产一区二区蜜臀| 国产精品麻豆一区二区| 欧美日韩在线播放三区四区| 国产精品一区二区无线| 一区二区三区视频在线观看| 在线成人免费视频| 国产 欧美在线| 亚洲chinese男男1069| 久久蜜桃香蕉精品一区二区三区| av色综合久久天堂av综合| 免费高清成人在线| 亚洲人成网站色在线观看| 日韩欧美久久一区| 色天使久久综合网天天| 激情亚洲综合在线| 精品一区二区三区久久| 91亚洲精品久久久蜜桃| 91精品免费在线| 成人在线综合网| 男女激情视频一区| 亚洲综合清纯丝袜自拍| 久久精品亚洲乱码伦伦中文| 欧美电影免费观看高清完整版| av在线综合网| 国产一区二区三区免费看 | 国产999精品久久久久久绿帽| 亚洲国产精品一区二区尤物区| 久久久午夜精品理论片中文字幕| 欧美日韩一区高清| 91香蕉视频mp4| 国产精品一区二区无线| 麻豆91在线看| 日本亚洲一区二区| 亚洲午夜激情av| **欧美大码日韩| 国产丝袜在线精品| 精品久久久久久最新网址| 欧美日韩免费高清一区色橹橹 | 欧美日韩一二三区| 不卡一区二区中文字幕| 国产成人自拍高清视频在线免费播放| 日韩精品三区四区| 午夜精品福利在线| 香蕉成人啪国产精品视频综合网| 亚洲免费av高清| 亚洲精品欧美二区三区中文字幕| 国产精品丝袜久久久久久app| 久久精品日产第一区二区三区高清版| 日韩免费高清av| 日韩女优av电影| 欧美不卡一二三| 日韩午夜精品电影| 日韩免费观看高清完整版| 日韩欧美国产一区二区三区| 91精品啪在线观看国产60岁| 欧美一区二区视频在线观看2020 | 男女视频一区二区| 精品一区二区在线看| 麻豆精品视频在线观看视频| 久久99热99| 国产福利精品一区二区| 成人深夜在线观看| 91黄色激情网站| 在线不卡a资源高清| 精品欧美久久久| 亚洲国产成人私人影院tom| 国产精品三级在线观看| 亚洲精品久久7777| 人人精品人人爱| 国产精品小仙女| 99re热这里只有精品免费视频 | 麻豆久久久久久| 热久久国产精品| 99精品热视频| 久久国产精品第一页| 成人欧美一区二区三区小说 | 91麻豆精品国产91久久久久久久久 | 午夜精品久久久久影视| 亚洲综合精品久久| 亚洲福利视频一区二区| 成人av电影在线观看| 懂色av一区二区在线播放| 成人手机电影网| 欧美亚洲综合久久| 99精品久久只有精品| 91精品婷婷国产综合久久竹菊| 日韩一区二区三区视频在线| 欧美精品一区二区高清在线观看| 久久久久久久av麻豆果冻| 亚洲自拍偷拍麻豆| 免费高清在线一区| 成人性生交大片免费看在线播放| 99久久亚洲一区二区三区青草| 日本vs亚洲vs韩国一区三区二区| 成人久久18免费网站麻豆| 91国产免费看| 欧美一级日韩免费不卡| 国产日韩亚洲欧美综合| 亚洲第一福利一区| 国产剧情在线观看一区二区| 菠萝蜜视频在线观看一区| 欧美日韩视频在线第一区| 日韩一区二区影院| 亚洲欧美日韩久久精品| 日韩av午夜在线观看| 国产一区二区三区观看| 色一情一伦一子一伦一区| 欧美电影一区二区三区| 中文字幕中文乱码欧美一区二区| 中文字幕欧美一区| 国产精品99久久久久久久女警| 日本韩国欧美三级| 久久综合久久综合亚洲| 亚洲三级小视频| 成熟亚洲日本毛茸茸凸凹| 欧美日韩一区高清| 自拍偷拍亚洲综合| 免费成人深夜小野草| 欧美熟乱第一页| 国产精品久久久爽爽爽麻豆色哟哟| 亚洲成人免费看| 国产一区在线观看视频| 日韩一级精品视频在线观看| 亚洲免费观看高清完整版在线观看熊| 加勒比av一区二区| 99久久综合国产精品| 国产日本一区二区| 免费在线观看一区| 欧美日韩午夜在线视频| 一级特黄大欧美久久久| 91亚洲国产成人精品一区二三 | 韩日精品视频一区| 欧美主播一区二区三区美女| 亚洲小说春色综合另类电影|