예제 #1
0
// パーティマップ更新要求
int mapif_parse_PartyChangeMap(int fd,int party_id,int account_id,char *map,int online,int lv)
{
	struct party *p;
	int i;
	p=numdb_search(party_db,party_id);
	if(p==NULL){
		return 0;
	}
	for(i=0;i<MAX_PARTY;i++){
		if(p->member[i].account_id==account_id){
			int flag=0;
			
			memcpy(p->member[i].map,map,16);
			p->member[i].online=online;
			p->member[i].lv=lv;
			mapif_party_membermoved(p,i);

			if( p->exp>0 && !party_check_exp_share(p) ){
				p->exp=0;
				flag=1;
			}
			if(flag)
				mapif_party_optionchanged(fd,p,0,0);
			break;
		}
	}
	if(online==0)	// 誰かがログアウトするごとにセーブ
		inter_party_save();
	return 0;
}
예제 #2
0
// セーブ
int inter_save()
{
	inter_storage_save();
	inter_party_save();
	inter_guild_save();
	inter_pet_save();

	return 0;
}
예제 #3
0
// パーティ脱退要求
int mapif_parse_PartyLeave(int fd,int party_id,int account_id)
{
	struct party *p=NULL;
	p=numdb_search(party_db,party_id);
	if(p!=NULL){
		int i;
		for(i=0;i<MAX_PARTY;i++){
			if(p->member[i].account_id==account_id){
				mapif_party_leaved(party_id,account_id,p->member[i].name);
				
				memset(&p->member[i],0,sizeof(struct party_member));
				if( party_check_empty(p)==0 )
					mapif_party_info(-1,p);// まだ人がいるのでデータ送信
				else
					inter_party_save();	// 解散したのでセーブ
				return 0;
			}
		}
	}
	return 0;
}
예제 #4
0
파일: inter.cpp 프로젝트: Binford2000/tmwa
// セーブ
void inter_save(void)
{
    inter_party_save();
    inter_storage_save();
    inter_accreg_save();
}