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

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

?? storage.c

?? 最新的仙鏡傳說服務器C語言源碼
?? C
字號:
// storage.c#include <stdio.h>#include <stdlib.h>#include <string.h>#include "db.h"#include "itemdb.h"#include "clif.h"#include "intif.h"#include "pc.h"#include "storage.h"#include "guild.h"#ifdef MEMWATCH#include "memwatch.h"#endifstatic struct dbt *storage_db;static struct dbt *guild_storage_db;int do_init_storage(void) // map.c::do_init()偐傜屇偽傟傞{	storage_db=numdb_init();	guild_storage_db=numdb_init();	return 1;}void do_final_storage(void) // map.c::do_final()偐傜屇偽傟傞{}struct storage *account2storage(int account_id){	struct storage *stor;	stor=numdb_search(storage_db,account_id);	if(stor == NULL) {		stor = calloc(sizeof(struct storage), 1);		if(stor == NULL){			printf("storage: out of memory!\n");			exit(0);		}		memset(stor,0,sizeof(struct storage));		stor->account_id=account_id;		numdb_insert(storage_db,stor->account_id,stor);	}	return stor;}int storage_delete(int account_id){	struct storage *stor = numdb_search(storage_db,account_id);	if(stor) {		numdb_erase(storage_db,account_id);		free(stor);	}	return 0;}/*========================================== * 僇僾儔憅屔傪奐偔 *------------------------------------------ */int storage_storageopen(struct map_session_data *sd){	struct storage *stor;	if((stor = numdb_search(storage_db,sd->status.account_id)) != NULL) {		stor->storage_status = 1;		sd->state.storage_flag = 0;		clif_storageitemlist(sd,stor);		clif_storageequiplist(sd,stor);		clif_updatestorageamount(sd,stor);		return 0;	}	else		intif_request_storage(sd->status.account_id);	return 0;}/*========================================== * 僇僾儔憅屔傊傾僀僥儉捛壛 *------------------------------------------ */int storage_additem(struct map_session_data *sd,struct storage *stor,struct item *item_data,int amount){	struct item_data *data;	int i;	if(item_data->nameid <= 0 || amount <= 0)		return 1;	data = itemdb_search(item_data->nameid);	i=MAX_STORAGE;	if(!itemdb_isequip2(data)){		// 憰旛昳偱偼側偄偺偱丄婛強桳昳側傜屄悢偺傒曄壔偝偣傞		for(i=0;i<MAX_STORAGE;i++){			if(stor->storage[i].nameid == item_data->nameid &&				stor->storage[i].card[0] == item_data->card[0] && stor->storage[i].card[1] == item_data->card[1] &&				stor->storage[i].card[2] == item_data->card[2] && stor->storage[i].card[3] == item_data->card[3]){				if(stor->storage[i].amount+amount > MAX_AMOUNT)					return 1;				stor->storage[i].amount+=amount;				clif_storageitemadded(sd,stor,i,amount);				break;			}		}	}	if(i>=MAX_STORAGE){		// 憰旛昳偐枹強桳昳偩偭偨偺偱嬻偒棑傊捛壛		for(i=0;i<MAX_STORAGE;i++){			if(stor->storage[i].nameid==0){				memcpy(&stor->storage[i],item_data,sizeof(stor->storage[0]));				stor->storage[i].amount=amount;				stor->storage_amount++;				clif_storageitemadded(sd,stor,i,amount);				clif_updatestorageamount(sd,stor);				break;			}		}		if(i>=MAX_STORAGE)			return 1;	}	return 0;}/*========================================== * 僇僾儔憅屔傾僀僥儉傪尭傜偡 *------------------------------------------ */int storage_delitem(struct map_session_data *sd,struct storage *stor,int n,int amount){	if(stor->storage[n].nameid==0 || stor->storage[n].amount<amount)		return 1;	stor->storage[n].amount-=amount;	if(stor->storage[n].amount==0){		memset(&stor->storage[n],0,sizeof(stor->storage[0]));		stor->storage_amount--;		clif_updatestorageamount(sd,stor);	}	clif_storageitemremoved(sd,n,amount);	return 0;}/*========================================== * 僇僾儔憅屔傊擖傟傞 *------------------------------------------ */int storage_storageadd(struct map_session_data *sd,int index,int amount){	struct storage *stor;	stor=account2storage(sd->status.account_id);	if( (stor->storage_amount <= MAX_STORAGE) && (stor->storage_status == 1) ) { // storage not full & storage open		if(index>=0 && index<MAX_INVENTORY) { // valid index			if( (amount <= sd->status.inventory[index].amount) && (amount > 0) ) { //valid amount				if(storage_additem(sd,stor,&sd->status.inventory[index],amount)==0)				// remove item from inventory					pc_delitem(sd,index,amount,0);			} // valid amount		}// valid index	}// storage not full & storage open	return 0;}/*========================================== * 僇僾儔憅屔偐傜弌偡 *------------------------------------------ */int storage_storageget(struct map_session_data *sd,int index,int amount){	struct storage *stor;	int flag;	stor=account2storage(sd->status.account_id);	if(stor->storage_status == 1) { //  storage open		if(index>=0 && index<MAX_STORAGE) { // valid index			if( (amount <= stor->storage[index].amount) && (amount > 0) ) { //valid amount				if((flag = pc_additem(sd,&stor->storage[index],amount)) == 0)					storage_delitem(sd,stor,index,amount);				else					clif_additem(sd,0,0,flag);			} // valid amount		}// valid index	}// storage open	return 0;}/*========================================== * 僇僾儔憅屔傊僇乕僩偐傜擖傟傞 *------------------------------------------ */int storage_storageaddfromcart(struct map_session_data *sd,int index,int amount){	struct storage *stor;	stor=account2storage(sd->status.account_id);	if( (stor->storage_amount <= MAX_STORAGE) && (stor->storage_status == 1) ) { // storage not full & storage open		if(index>=0 && index<MAX_INVENTORY) { // valid index			if( (amount <= sd->status.cart[index].amount) && (amount > 0) ) { //valid amount				if(storage_additem(sd,stor,&sd->status.cart[index],amount)==0)					pc_cart_delitem(sd,index,amount,0);			} // valid amount		}// valid index	}// storage not full & storage open	return 0;}/*========================================== * 僇僾儔憅屔偐傜僇乕僩傊弌偡 *------------------------------------------ */int storage_storagegettocart(struct map_session_data *sd,int index,int amount){	struct storage *stor;	stor=account2storage(sd->status.account_id);	if(stor->storage_status == 1) { //  storage open		if(index>=0 && index<MAX_STORAGE) { // valid index			if( (amount <= stor->storage[index].amount) && (amount > 0) ) { //valid amount				if(pc_cart_additem(sd,&stor->storage[index],amount)==0){					storage_delitem(sd,stor,index,amount);				}			} // valid amount		}// valid index	}// storage open	return 0;}/*========================================== * 僇僾儔憅屔傪暵偠傞 *------------------------------------------ */int storage_storageclose(struct map_session_data *sd){	struct storage *stor;	stor=account2storage(sd->status.account_id);	stor->storage_status=0;	sd->state.storage_flag = 0;	clif_storageclose(sd);	return 0;}/*========================================== * 儘僌傾僂僩帪奐偄偰偄傞僇僾儔憅屔偺曐懚 *------------------------------------------ */int storage_storage_quit(struct map_session_data *sd){	struct storage *stor;	stor = numdb_search(storage_db,sd->status.account_id);	if(stor) stor->storage_status = 0;	return 0;}int storage_storage_save(struct map_session_data *sd){	struct storage *stor;	stor=numdb_search(storage_db,sd->status.account_id);	if(stor) intif_send_storage(stor);	return 0;}struct guild_storage *guild2storage(int guild_id){	struct guild_storage *gs = NULL;	if(guild_search(guild_id) != NULL) {		gs=numdb_search(guild_storage_db,guild_id);		if(gs == NULL) {			gs = calloc(sizeof(struct guild_storage), 1);			if(gs==NULL){				printf("storage: out of memory!\n");				exit(0);			}			gs->guild_id=guild_id;			numdb_insert(guild_storage_db,gs->guild_id,gs);		}	}	return gs;}int guild_storage_delete(int guild_id){	struct guild_storage *gstor = numdb_search(guild_storage_db,guild_id);	if(gstor) {		numdb_erase(guild_storage_db,guild_id);		free(gstor);	}	return 0;}int storage_guild_storageopen(struct map_session_data *sd){	struct guild_storage *gstor;	if(sd->status.guild_id <= 0)		return 2;	if((gstor = numdb_search(guild_storage_db,sd->status.guild_id)) != NULL) {		if(gstor->storage_status)			return 1;		gstor->storage_status = 1;		sd->state.storage_flag = 1;		clif_guildstorageitemlist(sd,gstor);		clif_guildstorageequiplist(sd,gstor);		clif_updateguildstorageamount(sd,gstor);		return 0;	}	else {		gstor = guild2storage(sd->status.guild_id);		gstor->storage_status = 1;		intif_request_guild_storage(sd->status.account_id,sd->status.guild_id);	}	return 0;}int guild_storage_additem(struct map_session_data *sd,struct guild_storage *stor,struct item *item_data,int amount){	struct item_data *data;	int i;	if(item_data->nameid <= 0 || amount <= 0)		return 1;	data = itemdb_search(item_data->nameid);	i=MAX_GUILD_STORAGE;	if(!itemdb_isequip2(data)){		// 憰旛昳偱偼側偄偺偱丄婛強桳昳側傜屄悢偺傒曄壔偝偣傞		for(i=0;i<MAX_GUILD_STORAGE;i++){			if(stor->storage[i].nameid == item_data->nameid &&				stor->storage[i].card[0] == item_data->card[0] && stor->storage[i].card[1] == item_data->card[1] &&				stor->storage[i].card[2] == item_data->card[2] && stor->storage[i].card[3] == item_data->card[3]){				if(stor->storage[i].amount+amount > MAX_AMOUNT)					return 1;				stor->storage[i].amount+=amount;				clif_guildstorageitemadded(sd,stor,i,amount);				break;			}		}	}	if(i>=MAX_GUILD_STORAGE){		// 憰旛昳偐枹強桳昳偩偭偨偺偱嬻偒棑傊捛壛		for(i=0;i<MAX_GUILD_STORAGE;i++){			if(stor->storage[i].nameid==0){				memcpy(&stor->storage[i],item_data,sizeof(stor->storage[0]));				stor->storage[i].amount=amount;				stor->storage_amount++;				clif_guildstorageitemadded(sd,stor,i,amount);				clif_updateguildstorageamount(sd,stor);				break;			}		}		if(i>=MAX_GUILD_STORAGE)			return 1;	}	return 0;}int guild_storage_delitem(struct map_session_data *sd,struct guild_storage *stor,int n,int amount){	if(stor->storage[n].nameid==0 || stor->storage[n].amount<amount)		return 1;	stor->storage[n].amount-=amount;	if(stor->storage[n].amount==0){		memset(&stor->storage[n],0,sizeof(stor->storage[0]));		stor->storage_amount--;		clif_updateguildstorageamount(sd,stor);	}	clif_storageitemremoved(sd,n,amount);	return 0;}int storage_guild_storageadd(struct map_session_data *sd,int index,int amount){	struct guild_storage *stor;	if((stor=guild2storage(sd->status.guild_id)) != NULL) {		if( (stor->storage_amount <= MAX_GUILD_STORAGE) && (stor->storage_status == 1) ) { // storage not full & storage open			if(index>=0 && index<MAX_INVENTORY) { // valid index				if( (amount <= sd->status.inventory[index].amount) && (amount > 0) ) { //valid amount					if(guild_storage_additem(sd,stor,&sd->status.inventory[index],amount)==0)					// remove item from inventory						pc_delitem(sd,index,amount,0);				} // valid amount			}// valid index		}// storage not full & storage open	}	return 0;}int storage_guild_storageget(struct map_session_data *sd,int index,int amount){	struct guild_storage *stor;	int flag;	if((stor=guild2storage(sd->status.guild_id)) != NULL) {		if(stor->storage_status == 1) { //  storage open			if(index>=0 && index<MAX_GUILD_STORAGE) { // valid index				if( (amount <= stor->storage[index].amount) && (amount > 0) ) { //valid amount					if((flag = pc_additem(sd,&stor->storage[index],amount)) == 0)						guild_storage_delitem(sd,stor,index,amount);					else						clif_additem(sd,0,0,flag);				} // valid amount			}// valid index		}// storage open	}	return 0;}int storage_guild_storageaddfromcart(struct map_session_data *sd,int index,int amount){	struct guild_storage *stor;	if((stor=guild2storage(sd->status.guild_id)) != NULL) {		if( (stor->storage_amount <= MAX_GUILD_STORAGE) && (stor->storage_status == 1) ) { // storage not full & storage open			if(index>=0 && index<MAX_INVENTORY) { // valid index				if( (amount <= sd->status.cart[index].amount) && (amount > 0) ) { //valid amount					if(guild_storage_additem(sd,stor,&sd->status.cart[index],amount)==0)						pc_cart_delitem(sd,index,amount,0);				} // valid amount			}// valid index		}// storage not full & storage open	}	return 0;}int storage_guild_storagegettocart(struct map_session_data *sd,int index,int amount){	struct guild_storage *stor;	if((stor=guild2storage(sd->status.guild_id)) != NULL) {		if(stor->storage_status == 1) { //  storage open			if(index>=0 && index<MAX_GUILD_STORAGE) { // valid index				if( (amount <= stor->storage[index].amount) && (amount > 0) ) { //valid amount					if(pc_cart_additem(sd,&stor->storage[index],amount)==0){						guild_storage_delitem(sd,stor,index,amount);					}				} // valid amount			}// valid index		}// storage open	}	return 0;}int storage_guild_storageclose(struct map_session_data *sd){	struct guild_storage *stor;	if((stor=guild2storage(sd->status.guild_id)) != NULL) {		intif_send_guild_storage(sd->status.account_id,stor);		stor->storage_status = 0;		sd->state.storage_flag = 0;	}	clif_storageclose(sd);	return 0;}int storage_guild_storage_quit(struct map_session_data *sd,int flag){	struct guild_storage *stor;	stor = numdb_search(guild_storage_db,sd->status.guild_id);	if(stor) {		if(!flag)			intif_send_guild_storage(sd->status.account_id,stor);		stor->storage_status = 0;		sd->state.storage_flag = 0;	}	return 0;}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩女优av电影在线观看| 亚洲成人1区2区| 亚洲一区二区五区| 国产精品一区二区三区乱码| 一本大道久久a久久精品综合| 91精品国产色综合久久ai换脸| 中文字幕乱码久久午夜不卡| 日韩中文字幕区一区有砖一区 | 亚洲高清中文字幕| 国产成人精品三级| 91精品国产综合久久福利| 国产精品久久一级| 国产91高潮流白浆在线麻豆 | 成人激情动漫在线观看| 欧美一区二区视频在线观看2022| 亚洲免费观看高清| 91在线云播放| 中文av字幕一区| 激情丁香综合五月| 欧美一区二区三区不卡| 亚洲高清三级视频| 色屁屁一区二区| 亚洲人成伊人成综合网小说| 成人av免费在线播放| 国产欧美日韩在线看| 精品亚洲欧美一区| 亚洲精品在线网站| 韩国欧美国产1区| 精品少妇一区二区三区免费观看| 三级在线观看一区二区| 欧美日韩中文一区| 无码av中文一区二区三区桃花岛| 91网站在线播放| 亚洲免费观看高清在线观看| 色哟哟国产精品免费观看| 综合av第一页| 99久久免费精品| 中文字幕日韩精品一区| av亚洲精华国产精华精| 亚洲欧洲日产国码二区| 一本到高清视频免费精品| 亚洲黄色片在线观看| 在线免费观看成人短视频| 一区二区三区蜜桃| 欧美午夜不卡视频| 免费在线观看一区二区三区| 日韩亚洲欧美一区| 国产成人综合精品三级| 国产精品视频在线看| 91原创在线视频| 亚洲综合一区在线| 欧美一级精品在线| 国产精品一区免费视频| 国产精品久久久久久久久久久免费看 | 欧美日韩在线综合| 日本亚洲最大的色成网站www| 7777精品伊人久久久大香线蕉超级流畅 | 亚洲色图色小说| 欧美美女黄视频| 经典三级在线一区| 国产精品久久久久婷婷二区次| 99re热视频这里只精品| 午夜成人免费电影| 亚洲精品在线一区二区| 一本色道久久加勒比精品| 日本怡春院一区二区| 亚洲国产高清aⅴ视频| 色94色欧美sute亚洲线路一久| 午夜精品爽啪视频| 国产欧美精品国产国产专区| 色偷偷88欧美精品久久久| 美女在线视频一区| 亚洲精品欧美在线| 久久综合999| 欧美日韩一区二区三区在线| 九色综合国产一区二区三区| 亚洲欧美激情插| 欧美成人午夜电影| 在线观看欧美日本| 国产福利一区二区三区视频在线| 亚洲一区在线看| 久久精品日产第一区二区三区高清版| 色女孩综合影院| 国产精品66部| 秋霞午夜鲁丝一区二区老狼| 一色屋精品亚洲香蕉网站| 日韩三级av在线播放| 91久久精品国产91性色tv| 国产精品一区二区在线播放 | 国产成人精品亚洲午夜麻豆| 天天综合网天天综合色| 国产精品久久久久四虎| 久久影音资源网| 91精品国产综合久久久久久久| 成人午夜碰碰视频| 国产永久精品大片wwwapp| 午夜精品久久久久久久久久久| 国产精品久久久久天堂| 久久精品一区二区三区不卡 | 韩国av一区二区三区在线观看| 亚洲永久精品大片| 综合激情成人伊人| 国产精品久99| 国产色一区二区| 久久婷婷国产综合精品青草 | 亚洲国产成人一区二区三区| 91麻豆精品国产91久久久使用方法 | 国产精品麻豆99久久久久久| 精品美女一区二区| 91精品国产一区二区三区蜜臀 | 成a人片国产精品| 国产成人8x视频一区二区| 久久99精品国产麻豆婷婷 | 粉嫩aⅴ一区二区三区四区| 秋霞成人午夜伦在线观看| 亚洲国产综合在线| 亚洲国产综合色| 日韩精品久久久久久| 日韩黄色一级片| 老司机免费视频一区二区 | 亚洲一线二线三线视频| 一区二区三区电影在线播| 亚洲精品高清视频在线观看| 一区二区在线看| 亚洲一区二区三区不卡国产欧美| 亚洲国产日韩综合久久精品| 午夜精品在线视频一区| 免费在线一区观看| 国内精品自线一区二区三区视频| 激情国产一区二区| 东方aⅴ免费观看久久av| 91麻豆福利精品推荐| 欧美中文字幕一区二区三区亚洲| 欧美在线你懂得| 91精品国产乱码久久蜜臀| 日韩片之四级片| 国产亚洲一二三区| 亚洲人吸女人奶水| 日韩av电影免费观看高清完整版| 麻豆精品视频在线观看| 国产经典欧美精品| 一本大道av一区二区在线播放| 欧美日韩国产综合一区二区| 精品久久久久久最新网址| 中文字幕在线免费不卡| 一区二区视频在线看| 日本va欧美va欧美va精品| 国产一区二区美女| 91久久久免费一区二区| 欧美一卡二卡在线| 国产精品进线69影院| 婷婷中文字幕一区三区| 国产精品综合一区二区| 色视频成人在线观看免| 精品国产电影一区二区| 自拍偷拍欧美激情| 麻豆精品一区二区三区| 91在线云播放| 精品国产成人在线影院 | 色噜噜偷拍精品综合在线| 日韩亚洲欧美在线| 亚洲欧美成人一区二区三区| 蜜桃久久久久久| 91免费看`日韩一区二区| 2020国产精品自拍| 亚洲综合在线第一页| 成人在线视频一区二区| 欧美丰满少妇xxxxx高潮对白| 中文子幕无线码一区tr| 免费美女久久99| 欧美少妇bbb| 亚洲天堂av一区| 国产精品一级片在线观看| 7777精品伊人久久久大香线蕉经典版下载| 国产三级精品三级在线专区| 日日骚欧美日韩| 91久久精品午夜一区二区| 日本一区二区三区免费乱视频| 日本一道高清亚洲日美韩| 91日韩在线专区| 国产精品成人在线观看| 国产成人午夜精品5599| 日韩三级中文字幕| 视频一区中文字幕国产| 色综合一区二区| 国产精品乱码久久久久久| 韩国女主播一区| 精品成人私密视频| 奇米在线7777在线精品 | 色哟哟在线观看一区二区三区| 久久亚洲精品小早川怜子| 五月天精品一区二区三区| 在线亚洲欧美专区二区| 亚洲三级免费观看| 成人激情免费视频| 亚洲欧洲国产日本综合| 91在线码无精品| 亚洲精品欧美综合四区| 色视频欧美一区二区三区| 亚洲曰韩产成在线|