コード例 #1
0
ファイル: DBPrivateInfo.cpp プロジェクト: Linfly/wx2Server
BOOL DBPrivateInfo::Save(VOID* pSource)
{
	__ENTER_FUNCTION

	enum 
	{
		DB_CharGuid	=	1,
		DB_PrivateInfo,
	};

	//INT Result;
	//if(!Delete())
	//	return FALSE;
	//ParseResult(&Result);

	
	FULLUSERDATA* pCharFullData = static_cast<FULLUSERDATA*>(pSource);
	Assert(pCharFullData);
	
	//保存私人数据
	do
	{

	

		CHAR	PrivateInfo[1024];
		memset(PrivateInfo,0,1024);
	
		Binary2String((CHAR*)(&pCharFullData->m_PrivateInfo),
					  sizeof(_PRIVATE_INFO_DB_LOAD),
					  PrivateInfo);
		DB_QUERY* pQuery = GetInternalQuery();

		if(!pQuery)
		{
			Assert(FALSE);
		}

		pQuery->Clear();
		
		pQuery->Parse(UpdateCharPrivateInfo,
					  CHAR_TABLE,
					  PrivateInfo,
					  m_CharGuid,
					  m_DBVersion);

		if(!ODBCBase::Save(pCharFullData))
			return FALSE;


	}while(0);
	
	return TRUE;

	__LEAVE_FUNCTION

	return FALSE;
}
コード例 #2
0
BOOL DBCharVisualGem::Save(VOID* pSource)
{
	__ENTER_FUNCTION
	
	FULLUSERDATA* pCharFullData = static_cast<FULLUSERDATA*>(pSource);
	Assert(pCharFullData);
	
	//保存CharVisualGem数据
	do
	{
		CHAR	VisualGemInfo[2048];
		memset(VisualGemInfo,0,2048);
	
		//获取所有装备的物品显示信息
		DB_CHAR_EQUIP_LIST eqlist;
		for(INT i = 0; i < HEQUIP_NUMBER; ++i)
		{
			_ITEM* pItem = pCharFullData->GetItem(i+DB_EQUIP_POS_START);
			if(pItem->IsNullType()) continue;

			eqlist.m_Equip[i] = pItem->m_ItemIndex;
			//eqlist.m_EquipVisual[i] = pItem->GetEquipData()->m_Visual;
			//eqlist.m_EquipGemID[i] = pItem->GetEquipmentMaxLevelGemID();
		}

		Binary2String((CHAR*)(&eqlist),
					  sizeof(DB_CHAR_EQUIP_LIST),
					  VisualGemInfo);

		DB_QUERY* pQuery = GetInternalQuery();

		if(!pQuery)
		{
			Assert(FALSE);
		}

		pQuery->Clear();
		
		pQuery->Parse(UpdateCharVisualGem,
					  CHAR_TABLE,
					  VisualGemInfo,
					  m_CharGuid,
					  m_DBVersion);

		if(!ODBCBase::Save(pCharFullData))
			return FALSE;


	}while(0);
	
	return TRUE;

	__LEAVE_FUNCTION

	return FALSE;
}
コード例 #3
0
ファイル: DBTitleInfo.cpp プロジェクト: Linfly/wx2Server
BOOL DBTitleInfo::Save(VOID* pSource)
{
	__ENTER_FUNCTION

	enum 
	{
		DB_CharGuid	=	1,
		DB_TitleInfo,
	};

	//INT Result;
	//if(!Delete())
	//	return FALSE;
	//ParseResult(&Result);

	
	FULLUSERDATA* pCharFullData = static_cast<FULLUSERDATA*>(pSource);
	Assert(pCharFullData);
	
	//保存Title数据
	do
	{
		CHAR	TitleInfo[2048*2];
		memset(TitleInfo,0,2048*2);
	
		Binary2String((CHAR*)(&pCharFullData->m_Human.m_Titles),
					  sizeof(_TITLE),
					  TitleInfo);
		DB_QUERY* pQuery = GetInternalQuery();

		if(!pQuery)
		{
			Assert(FALSE);
		}

		pQuery->Clear();
		
		pQuery->Parse(UpdateCharTitleInfo,
					  CHAR_TABLE,
					  TitleInfo,
					  m_CharGuid,
					  m_DBVersion);

		if(!ODBCBase::Save(pCharFullData))
			return FALSE;


	}while(0);
	
	return TRUE;

	__LEAVE_FUNCTION

	return FALSE;
}
コード例 #4
0
ファイル: DBCrcInfo.cpp プロジェクト: Linfly/wx2Server
BOOL DBCrcInfo::Save(VOID* pSource)
{
__ENTER_FUNCTION

	FULLUSERDATA* pCharFullData = static_cast<FULLUSERDATA*>(pSource);
	Assert(pCharFullData);

	//保存CRC校验数据
	do
	{
		//FullData
		CHAR	FullDataInfo[102400];
		memset(FullDataInfo,0,102400);

		Binary2String((CHAR*)(pCharFullData),
			sizeof(FULLUSERDATA),
			FullDataInfo);
		//LogoutTime
		UINT nLogoutTime = pCharFullData->m_Human.m_LastLogoutTime;
		
		//Prepare Query
		LONG_DB_QUERY* pQuery = GetLongInterQuery();
		if(!pQuery)
		{
			Assert(FALSE);
		}
		pQuery->Clear();

		if(m_CharGuid == INVALID_ID)
		{
			return FALSE;
		}

		//Parse Query
		pQuery->Parse(SaveCrcInfo,
			CRC32_TABLE,
			m_CharGuid,
			nLogoutTime,
			m_Crc32,
			FullDataInfo,
			1,
			m_ServerId);

		//Execute Query
		if(!ODBCBase::LongSave(pCharFullData))
			return FALSE;

	}while(0);

	return TRUE;

__LEAVE_FUNCTION

	return FALSE;
}
コード例 #5
0
ファイル: DBSouXiaList.cpp プロジェクト: jjiezheng/pap_full
BOOL DBSouXiaList::Save(VOID* pSource)
{
	__ENTER_FUNCTION

	enum 
	{
		DB_CharGuid	=	1,
		DB_SouXiaInfo,
	};

	//INT Result;
	//if(!Delete())
	//	return FALSE;
	//ParseResult(&Result);


	FULLUSERDATA* pCharFullData = static_cast<FULLUSERDATA*>(pSource);
	Assert(pCharFullData);

	//保存Title数据
	do
	{
		for (int i=0; i<MAX_SOUXIA_CONTAINER; ++i)
		{	
			//if ( pCharFullData->m_SouXia.m_SouXiaData[i].m_CurPos >=0 
			//	&& pCharFullData->m_SouXia.m_SouXiaData[i].m_SouXiaID > 0)
			//{
				CHAR	SouXiaData[2048];
				memset(SouXiaData,0,2048);

				Binary2String((CHAR*)(&(pCharFullData->m_SouXia.m_SouXiaData[i])), sizeof(SOUXIA_DATA), SouXiaData);

				DB_QUERY* pQuery = GetInternalQuery();
				if(!pQuery)
				{
					Assert(FALSE);
				}

				pQuery->Clear();

				pQuery->Parse(NewCharSouXia,m_CharGuid,pCharFullData->m_SouXia.m_SouXiaData[i].m_CurPos,SouXiaData,i);

				if(!ODBCBase::Save(pCharFullData))
					return FALSE;
			//}
		}

	}while(0);

	return TRUE;

	__LEAVE_FUNCTION

		return FALSE;
}
コード例 #6
0
ファイル: DBGuildExtraInfo.cpp プロジェクト: gitrider/wxsj2
BOOL DBGuildExtraInfo::Save(VOID* pSource)
{
__ENTER_FUNCTION

	INT Result;
	enum 
	{
		DB_GuildID	=	1,
		DB_GuildExtraInfo,
	};

	GUILD_USER_EXTRA_DATA_DB_t* pGuildExtraInfo = static_cast<GUILD_USER_EXTRA_DATA_DB_t*>(pSource);
	Assert(pGuildExtraInfo);
	
	//±£´æExtraInfoÊý¾Ý
	do
	{
		CHAR    GuildExtraInfo[MAX_LONG_COLUMN_BUFFER] = {0};

		Binary2String((CHAR*)(pGuildExtraInfo),
			sizeof(GUILD_USER_EXTRA_DATA_DB_t)*USER_ARRAY_SIZE,
			GuildExtraInfo);

		LONG_DB_QUERY* pQuery = GetLongInterQuery();
		if(!pQuery)
		{
			Assert(FALSE);
		}
		pQuery->Clear();
		pQuery->Parse(SaveWorldGuildExtraInfo,GUILD_TABLE,GuildExtraInfo,m_GuildID);

		if(!ODBCBase::LongSave(&Result))
			return FALSE;

	}while(0);
	
	return TRUE;
__LEAVE_FUNCTION
	return FALSE;
}
コード例 #7
0
BOOL DBItemList::Save(VOID* pSource)
{
	__ENTER_FUNCTION

	INT Result;
	Delete();
	ParseResult(&Result);

	enum 
	{
		DB_CharGuid	=	1,
		DB_ItemWorld,
		DB_ItemServer,
		DB_ItemGuid,
		DB_ItemType,
		DB_ItemPos,
		DB_FixAttr,  //也可以去掉,但是Login 需要读装备表
		DB_P1,
		DB_P2,
		DB_P3,
		DB_P4,
		DB_P5,
		DB_P6,
		DB_P7,
		DB_P8,
		DB_P9,
		DB_P10,
		DB_P11,
		DB_P12,
		DB_P13,
		DB_P14,
	};


	FULLUSERDATA* pCharFullData = static_cast<FULLUSERDATA*>(pSource);
	Assert(pCharFullData);

	for(INT ItemPos =0;ItemPos<=DB_BANK_POS_END;ItemPos++)
	{
		if( ItemPos >= DB_BAG_POS_START && ItemPos < (DB_BAG_POS_START+MAX_BAG_SIZE) )
		{
			//背包
		}
		else if( ItemPos >= DB_EQUIP_POS_START && ItemPos < (DB_EQUIP_POS_START+HEQUIP_NUMBER) )
		{
			//装备
		}
		else if( ItemPos >= DB_BANK_POS_START && ItemPos < (DB_BANK_POS_START+MAX_BANK_SIZE) )
		{
			//银行
		}
		else
		{
			continue;
		}

		_ITEM* pItem = pCharFullData->GetItem(ItemPos);
		
		if(pItem->IsNullType()) continue;

		DB_QUERY* pQuery = GetInternalQuery();

		if(!pQuery)
		{
			Assert(FALSE);
		}

		pQuery->Clear();

		if(m_CharGuid==INVALID_ID)
		{
			return FALSE;
		}
		
		CHAR FixAttr[MAX_FIX_ATTR_LENGTH];
		CHAR FixAttrOut[MAX_FIX_ATTR_LENGTH];
		memset(FixAttrOut,0,MAX_FIX_ATTR_LENGTH);
		INT  OutLength;
		pItem->ReadFixAttr(FixAttr,OutLength,MAX_FIX_ATTR_LENGTH);
		Binary2String(FixAttr,OutLength,FixAttrOut);

		INT PArray[14] = {0};

		pItem->ReadVarAttr((CHAR*)PArray,OutLength,sizeof(INT)*(DB_P14-DB_P1+1));

		CHAR VarAttr[256] = {0};
		Binary2String((CHAR*)(pItem->m_Param),sizeof(INT)*MAX_ITEM_PARAM,VarAttr);

		UINT dbVersion = CalcCRC((CHAR*)PArray);
		pQuery->Parse(NewCharItem,
			// ITEM_TABLE,
			m_CharGuid,	//charguid
			pItem->m_ItemGUID.m_Serial,
			pItem->m_ItemGUID.m_World,
			pItem->m_ItemGUID.m_Server,
			pItem->m_ItemIndex,
			ItemPos,
			FixAttrOut,
			PArray[0],
			PArray[1],
			PArray[2],
			PArray[3],
			PArray[4],
			PArray[5],
			PArray[6],
			PArray[7],
			PArray[8],
			PArray[9],
			PArray[10],
			PArray[11],
			PArray[12],
			PArray[13],
			1,
			dbVersion,
			pItem->m_Creator,
			VarAttr);

		if(!ODBCBase::Save(pCharFullData))
			return FALSE;


	}
	return TRUE;

	__LEAVE_FUNCTION

	return FALSE;
}
コード例 #8
0
BOOL DBAbilityList::Save(VOID* pSource)
{
	__ENTER_FUNCTION

	enum 
	{
		DB_CharGuid	=	1,
		DB_ABID,
		DB_ABLvl,
		DB_ABExp,
	};

	INT Result;
	Delete();
	ParseResult(&Result);

	FULLUSERDATA* pCharFullData = static_cast<FULLUSERDATA*>(pSource);
	Assert(pCharFullData);

	for(INT i = 0;i	< MAX_CHAR_ABILITY_NUM;i++)
	{

		if(pCharFullData->m_Ability.m_aABility[i].m_Level<=0)
			continue;

		DB_QUERY* pQuery = GetInternalQuery();

		if(!pQuery)
		{
			Assert(FALSE);
		}

		pQuery->Clear();

		if(m_CharGuid==INVALID_ID)
		{
			return FALSE;
		}

		

		pQuery->Parse(NewCharAbility,
					  ABILITY_TABLE,
					  m_CharGuid,
					  i,
					  pCharFullData->m_Ability.m_aABility[i].m_Level,
					  pCharFullData->m_Ability.m_aABility[i].m_Exp,
					  m_DBVersion
					  );

		if(!ODBCBase::Save(pCharFullData))
			return FALSE;
	}

	do
	{
		CHAR Pres[1024] = {0};

		Binary2String((CHAR*)(pCharFullData->m_Ability.m_aPrescr),
			sizeof(CHAR)*MAX_CHAR_PRESCRIPTION_BYTE,
			Pres);
		DB_QUERY* pQuery = GetInternalQuery();

		if(!pQuery)
		{
			Assert(FALSE);
		}

		pQuery->Clear();

		if(m_CharGuid==INVALID_ID)
		{
			return FALSE;
		}
		
		pQuery->Parse(UpdateCharPresList,
			CHAR_TABLE,
			Pres,
			m_CharGuid,
			m_DBVersion
			);

		if(!ODBCBase::Save(pCharFullData))
			return FALSE;

		
	} while(0);

	return TRUE;

	__LEAVE_FUNCTION

	return FALSE;
}
コード例 #9
0
ファイル: DBRelationList.cpp プロジェクト: Linfly/wx2Server
BOOL DBRelationList::Save(VOID* pSource)
{

	__ENTER_FUNCTION

	enum 
	{
		DB_CharGuid	=	1,
		DB_FGuid,
		DB_FName,
		DB_FPoint,
		DB_ReFlag,
		DB_GroupID,
		DB_ExtData,
	};

	INT Result;
	if(!Delete())
		return FALSE;
	ParseResult(&Result);

	FULLUSERDATA* pCharFullData = static_cast<FULLUSERDATA*>(pSource);
	Assert(pCharFullData);

	for(INT i =0;i<MAX_RELATION_SIZE;i++)
	{
		DB_QUERY* pQuery = GetInternalQuery();

		if(!pQuery)
		{
			Assert(FALSE);
		}

		pQuery->Clear();

		if(m_CharGuid==INVALID_ID)
		{
			return FALSE;
		}
		
		if(pCharFullData->m_Relation.m_aRelation[i].m_Member.m_MemberGUID==INVALID_ID)
			continue;

		CHAR	MemberExtData[200];
		memset(MemberExtData,0,200);
		
		RELATION_MEMBER::ReMember_ExtData	ExtData =
		pCharFullData->m_Relation.m_aRelation[i].m_Member.GetExtData();
		Binary2String((CHAR*)&ExtData,sizeof(ExtData),MemberExtData);
		pQuery->Parse(NewCharRelation,
					  RELATION_TABLE,
					  m_CharGuid,
					  pCharFullData->m_Relation.m_aRelation[i].m_Member.m_MemberGUID,
					  pCharFullData->m_Relation.m_aRelation[i].m_Member.m_szMemberName,
					  pCharFullData->m_Relation.m_aRelation[i].m_FriendPoint,
					  pCharFullData->m_Relation.m_aRelation[i].m_Type,
					  pCharFullData->m_Relation.m_aRelation[i].m_Group,
					  MemberExtData,
					  m_DBVersion);

		if(!ODBCBase::Save(pCharFullData))
			return FALSE;
	}


	//保存关系数据
	do
	{

		CHAR	CharRelationData[sizeof(_RELATION_DB_LOAD::RelationData) * 2 + 1];
		memset(CharRelationData,0, sizeof(CharRelationData));
		
		_RELATION_DB_LOAD::RelationData	ReData = pCharFullData->m_Relation.GetRelationData();

		Binary2String((CHAR*)(&ReData),sizeof(ReData),CharRelationData);

		DB_QUERY* pQuery = GetInternalQuery();

		if(!pQuery)
		{
			Assert(FALSE);
		}

		pQuery->Clear();

		pQuery->Parse(UpdateCharRelationData,
			CHAR_TABLE,
			CharRelationData,
			m_CharGuid,
			m_DBVersion);

		if(!ODBCBase::Save(pCharFullData))
			return FALSE;


	}while(0);

	return TRUE;

	__LEAVE_FUNCTION

	return FALSE;
}
コード例 #10
0
ファイル: DBPetItemInfo.cpp プロジェクト: jjiezheng/pap_full
BOOL DBPetItemInfo::Save(VOID* pSource)
{
	__ENTER_FUNCTION

	enum 
	{
		DB_PetPairData	=	1,
	};

	INT Result;

	SMUPool<PetProcreateItemSM>* pPoolPtr = static_cast<SMUPool<PetProcreateItemSM>*>(pSource);
	Assert(pPoolPtr);


	PetProcreateItem PetProItem;

	do
	{
		INT SmuCount = pPoolPtr->GetPoolMaxSize();
		
		if(SmuCount>MAX_PET_PROCREATE_ITEM_NUM)
			Assert(FALSE);

		INT UseStats;

		for(INT i = 0 ;i<SmuCount;i++)
		{
			PetProcreateItemSM*	pSMU = pPoolPtr->GetPoolObj(i);
			if(!pSMU)
			{
				Assert(pSMU);
				return FALSE;
			}

			UseStats =pSMU->GetUseStatus(SM_C_READ);
			pSMU->Lock(SM_C_READ);
			PetProcreateItem* pPetItem = &pSMU->m_PetProcreateItem;
			Assert(pPetItem);
			if(pPetItem == NULL)
			{
				pSMU->UnLock(SM_C_READ);
				Assert(FALSE);
			}

			if(pPetItem->IsInvalid() == TRUE && UseStats != PET_DELETE)
			{
				pSMU->UnLock(SM_C_READ);
				continue;
			}
			memcpy(&PetProItem,pPetItem,sizeof(PetProcreateItem));
			pSMU->m_SMUHead.UseStatus = PET_SAVED;
			pSMU->UnLock(SM_C_READ);
			
			//继续存储
			mInterface->Clear();
			CheckDBConnect("DBPetItemInfo");

			LONG_DB_QUERY* pQuery = GetLongInterQuery();
			if(!pQuery)
			{
				Assert(FALSE);
			}
			pQuery->Clear();

			CHAR PairDataList[20480] = {0};
			Binary2String(((CHAR*)pPetItem),sizeof(PetProcreateItem),
						   PairDataList);

			pQuery->Parse(SavePetItemInfo,
						  PairDataList,
						  i,
						  ((UseStats!=PET_DELETE)?1:0));

			ODBCBase::LongSave(&Result);

			//保存数据版本
			pQuery->Clear();
			pQuery->Parse(SavePetItemDataVersion,PETITEM_TABLE,PETPROCREATE_CURRENT_ITEM_VERSION,i);
			ODBCBase::LongSave(&Result);
		}

	}while(0);
	
	
	return TRUE;

	__LEAVE_FUNCTION

	return FALSE;
}
コード例 #11
0
BOOL DBCharFullData::Save(VOID* pSource)
{

	__ENTER_FUNCTION

	DB_QUERY* pQuery = GetInternalQuery();

	if(!pQuery)
	{
		Assert(FALSE);
	}

	pQuery->Clear();

	if(m_CharGuid==INVALID_ID)
	{
		return FALSE;
	}

	FULLUSERDATA* pCharFullData = static_cast<FULLUSERDATA*>(pSource);
	Assert(pCharFullData);
	


	if(!StrSafeCheck(pCharFullData->m_Human.m_Title,MAX_CHARACTER_TITLE))
		return FALSE;
	if(!StrSafeCheck(pCharFullData->m_Human.m_Passwd,MAX_PWD))
		return FALSE;
	

	CHAR CharCamp[100];
	memset(CharCamp,0,100);
	Binary2String((CHAR*)(&pCharFullData->m_Human.m_CampData),
				   sizeof(_CAMP_DATA),
				   CharCamp);

	CHAR CharSetting[2048];
	memset(CharSetting,0,2048);
	Binary2String((CHAR*)(&pCharFullData->m_Setting),
				   sizeof(_SETTING_DB_LOAD),
		           CharSetting);
	CHAR CharShopInfo[512];
	memset(CharShopInfo,0,512);


	_HUMAN_DB_LOAD::_PSHOP_INFO	ShopInfo;
	memcpy(ShopInfo.m_ShopGuid,pCharFullData->m_Human.m_ShopGuid,sizeof(_PLAYERSHOP_GUID)*MAX_SHOP_NUM_PER_PLAYER);
	memcpy(ShopInfo.m_FavoriteList,pCharFullData->m_Human.m_FavoriteList,sizeof(_PLAYERSHOP_GUID)*MAX_FAVORITE_SHOPS);

	Binary2String((CHAR*)&ShopInfo,
				 sizeof(ShopInfo),
				 CharShopInfo);

	CHAR CharCarryPet[100];
	memset(CharCarryPet,0,100);
	Binary2String((CHAR*)&pCharFullData->m_Human.m_guidCurrentPet,
				  sizeof(PET_GUID_t),
				 CharCarryPet);

	UINT dbVersion = CalcCRC(pSource);

	pQuery->Parse(UpdateCharFullData,
				  CHAR_TABLE,
				  pCharFullData->m_Human.m_Title,
				  pCharFullData->m_Human.m_Sex,
				  pCharFullData->m_Human.m_Level,
				  pCharFullData->m_Human.m_DoubleExpTime_Num,
				  pCharFullData->m_Human.m_Exp,
				  pCharFullData->m_Human.m_Money,
				  pCharFullData->m_Human.m_Passwd,
				  pCharFullData->m_Human.m_HairColor,
				  pCharFullData->m_Human.m_FaceColor,
				  pCharFullData->m_Human.m_HairModel,
				  pCharFullData->m_Human.m_FaceModel,
				  pCharFullData->m_Human.m_StartScene,
				  Float2Int(pCharFullData->m_Human.m_Position.m_fX*100),
				  Float2Int(pCharFullData->m_Human.m_Position.m_fZ*100),
				  pCharFullData->m_Human.m_LastLoginTime,
				  pCharFullData->m_Human.m_LastLogoutTime,
				  //pCharFullData->m_Human.m_DBVersion,
				  CharCamp,
				  pCharFullData->m_Human.m_MenPai,
				  pCharFullData->m_Human.m_HP,
				  pCharFullData->m_Human.m_MP,
				  pCharFullData->m_Human.m_StrikePoint,
				  pCharFullData->m_Human.m_BaseAttrLevel1.m_pAttr[CATTR_LEVEL1_STR],
				  pCharFullData->m_Human.m_BaseAttrLevel1.m_pAttr[CATTR_LEVEL1_SPR],
				  pCharFullData->m_Human.m_BaseAttrLevel1.m_pAttr[CATTR_LEVEL1_CON],
				  pCharFullData->m_Human.m_BaseAttrLevel1.m_pAttr[CATTR_LEVEL1_INT],
				  pCharFullData->m_Human.m_BaseAttrLevel1.m_pAttr[CATTR_LEVEL1_DEX],
				  pCharFullData->m_Human.m_Level1Points,
				  CharSetting,
				  CharShopInfo,
				  CharCarryPet,
				  pCharFullData->m_Human.m_GuildID,
				  pCharFullData->m_Human.m_TeamID,
				  pCharFullData->m_Human.m_PortraitID,
				  pCharFullData->m_Human.m_EnergyRegeneRate,
				  pCharFullData->m_Human.m_RMBMoney,
				  pCharFullData->m_Human.m_BankRMB,
				  pCharFullData->m_Human.m_VigorRegeneRate,
				  pCharFullData->m_Human.m_GmRight,
				  pCharFullData->m_Human.m_uPwdDelTime,
				  pCharFullData->m_Human.m_LeftDieTime,
				  pCharFullData->m_Bank.m_Money,
				  pCharFullData->m_Bank.m_CurEndIndex,
				  pCharFullData->m_Human.m_BakScene,
				  Float2Int(pCharFullData->m_Human.m_BakPosition.m_fX*100),
				  Float2Int(pCharFullData->m_Human.m_BakPosition.m_fZ*100),
				  pCharFullData->m_Human.m_Rage,
				  dbVersion,
				  m_CharGuid);
	
	if(!ODBCBase::Save(pSource))
		return FALSE;
	

	Assert(mResultCount<=1);
	mInterface->Clear();
	if(mResultCount==0)
	{
		return TRUE;
	}
	
	dbVersion = 0;

	//保存装备
	DBItemList	ItemListObject(mInterface);
	ItemListObject.SetCharGuid(m_CharGuid);
	ItemListObject.SetDBVersion(dbVersion);
	if(!ItemListObject.Save(pCharFullData))
		return FALSE;
	ItemListObject.ParseResult(pCharFullData);

	//保存技能
	DBSkillList	SkillListObject(mInterface);
	SkillListObject.SetCharGuid(m_CharGuid);
	SkillListObject.SetDBVersion(dbVersion);
	if(!SkillListObject.Save(pCharFullData))
		return FALSE;
	SkillListObject.ParseResult(pCharFullData);

	//保存心法
	DBXinFaList	XinFaListObject(mInterface);
	XinFaListObject.SetCharGuid(m_CharGuid);
	XinFaListObject.SetDBVersion(dbVersion);
	if(!XinFaListObject.Save(pCharFullData))
		return FALSE;
	XinFaListObject.ParseResult(pCharFullData);

	//保存生活技能
	DBAbilityList AbilityListObject(mInterface);
	AbilityListObject.SetCharGuid(m_CharGuid);
	AbilityListObject.SetDBVersion(dbVersion);
	if(!AbilityListObject.Save(pCharFullData))
		return FALSE;
	AbilityListObject.ParseResult(pCharFullData);

	//保存任务信息
	DBTaskList	TaskListObject(mInterface);
	TaskListObject.SetCharGuid(m_CharGuid);
	TaskListObject.SetDBVersion(dbVersion);
	if(!TaskListObject.Save(pCharFullData))
		return FALSE;
	TaskListObject.ParseResult(pCharFullData);

	//保存关系列表
	DBRelationList	RelationListObject(mInterface);
	RelationListObject.SetCharGuid(m_CharGuid);
	RelationListObject.SetDBVersion(dbVersion);
	if(!RelationListObject.Save(pCharFullData))
		return FALSE;
	RelationListObject.ParseResult(pCharFullData);

	//保存Impact 列表
	DBImpactList	ImpactListObject(mInterface);
	ImpactListObject.SetCharGuid(m_CharGuid);
	ImpactListObject.SetDBVersion(dbVersion);
	if(!ImpactListObject.Save(pCharFullData))
		return FALSE;
	ImpactListObject.ParseResult(pCharFullData);
	//保存宠物	列表
	DBPetList	PetListObject(mInterface);
	PetListObject.SetCharGuid(m_CharGuid);
	PetListObject.SetDBVersion(dbVersion);
	if(!PetListObject.Save(pCharFullData))
		return FALSE;
	PetListObject.ParseResult(pCharFullData);
	//私人信息
	DBPrivateInfo	PrivateInfoObject(mInterface);
	PrivateInfoObject.SetCharGuid(m_CharGuid);
	PrivateInfoObject.SetDBVersion(dbVersion);
	if(!PrivateInfoObject.Save(pCharFullData))
		return FALSE;
	PrivateInfoObject.ParseResult(pCharFullData);
	//称号信息
	DBTitleInfo		TitleInfoObject(mInterface);
	TitleInfoObject.SetCharGuid(m_CharGuid);
	TitleInfoObject.SetDBVersion(dbVersion);
	if(!TitleInfoObject.Save(pCharFullData))
		return FALSE;
	TitleInfoObject.ParseResult(pCharFullData);

	//冷却信息
	DBCoolDownInfo		CoolDownInfoObject(mInterface);
	CoolDownInfoObject.SetCharGuid(m_CharGuid);
	CoolDownInfoObject.SetDBVersion(dbVersion);
	if(!CoolDownInfoObject.Save(pCharFullData))
		return FALSE;
	CoolDownInfoObject.ParseResult(pCharFullData);

	//商店信息
	//DBWebShopInfo		WebShopInfo(mInterface);
	//WebShopInfo.SetCharGuid(m_CharGuid);
	//WebShopInfo.SetDBVersion(dbVersion);
	//WebShopInfo.SetWebShopInfoId(pCharFullData->m_PrivateInfo.pi.wsInfo[0].Id);
	//if(!WebShopInfo.Save(pCharFullData))
	//	return FALSE;
	//WebShopInfo.ParseResult(pCharFullData);

	return TRUE;

	__LEAVE_FUNCTION

	return FALSE;
}
コード例 #12
0
ファイル: DBGuildInfo.cpp プロジェクト: brock7/TianLong
BOOL DBGuildInfo::Save(VOID* pSource)
{
	__ENTER_FUNCTION

	enum 
	{
		DB_GuildID	=	1,
		DB_GuildName,
		DB_Guildstat,
		DB_Chiefguid,
		DB_PCount,
		DB_UCount,
		DB_MUCount,
		DB_GPoint,
		DB_GuildMoney,
		DB_CityID,
		DB_Time,
		DB_Logvity,
		DB_Contribu,
		DB_Honor,
		DB_Indlvl,
		DB_Agrlvl,
		DB_Comlvl,
		DB_Deflvl,
		DB_Techlvl,
		DB_Amblvl,
		DB_Admin,
		DB_GuildDesc,
		DB_Chiefname,
		DB_Cname,
		DB_Glvl,
	};

	INT Result;
	
	SMUPool<GuildSMU>* pPoolPtr = static_cast<SMUPool<GuildSMU>*>(pSource);
	Assert(pPoolPtr);
	//保存工会数据

	GUILD_DB	SaveGuild;
	do
	{
		INT SmuCount = pPoolPtr->GetPoolMaxSize();
		if(SmuCount>MAX_GUILD_SIZE)
			Assert(FALSE);

		INT UseStats;
		for(INT i = 0 ;i<SmuCount;i++)
		{
			GuildSMU*	pSMU = pPoolPtr->GetPoolObj(i);
			if(!pSMU)
			{
				Assert(pSMU);
				return FALSE;
			}

			UseStats =pSMU->GetUseStatus(SM_C_READ);
		
			pSMU->Lock(SM_C_READ);
				GUILD_DB* pGuild = &(pSMU->m_GuildSM);
				if(pGuild == NULL)
				{
					pSMU->UnLock(SM_C_READ);
					Assert(FALSE);
				}
				
			memcpy(&SaveGuild,pGuild,sizeof(GUILD_DB));
			pSMU->m_SMUHead.UseStatus	= GUILD_SAVED;
			if(UseStats ==GUILD_DELETE)
			{
				pGuild->CleanUp();
			}

			pSMU->UnLock(SM_C_READ);

			if(SaveGuild.m_GuildID == INVALID_ID)
				continue;
				
			CHAR	AdminInfo[4096] = {0};
			
			Binary2String((CHAR*)(&SaveGuild.m_AdminLayout),
							sizeof(GUILD_ADMIN_t),
							AdminInfo);
			
			CHAR    GuildUser[MAX_LONG_COLUMN_BUFFER] = {0};

			Binary2String((CHAR*)(SaveGuild.m_aGuildUser),
						  sizeof(GUILDUSER_DB)*USER_ARRAY_SIZE,
						  GuildUser);
			
			
			LONG_DB_QUERY* pQuery = GetLongInterQuery();
			if(!pQuery)
			{
				Assert(FALSE);
			}
			pQuery->Clear();
			pQuery->Parse(SaveWorldGuildInfo,
						  SaveGuild.m_GuildID,
						  SaveGuild.m_GuildName,
						  SaveGuild.m_Status,
						  SaveGuild.m_ChieftainGUID,
						  SaveGuild.m_nProposerCount,
						  SaveGuild.m_UserCount,
						  SaveGuild.m_MaxUserSize,
						  SaveGuild.m_GuildPoint,
						  SaveGuild.m_GuildMoney,
						  SaveGuild.m_CityID,
						  SaveGuild.m_nTime,
						  SaveGuild.m_Longevity,
						  SaveGuild.m_Contribute,
						  SaveGuild.m_Honor,
						  SaveGuild.m_nIndustryLevel,
						  SaveGuild.m_nAgrLevel,
						  SaveGuild.m_nComLevel,
						  SaveGuild.m_nDefLevel,
						  SaveGuild.m_nTechLevel,
						  SaveGuild.m_nAmbiLevel,
						  AdminInfo,
						  SaveGuild.m_GuildDesc,
						  SaveGuild.m_GuildChiefName,
						  SaveGuild.m_GuildCreatorName,
						  SaveGuild.m_GuildLevel,
						  GuildUser,
						  ((UseStats!=GUILD_DELETE)?1:0) );

			if(!ODBCBase::LongSave(&Result))
				return FALSE;
		}

	}while(0);
	
	
	return TRUE;

	__LEAVE_FUNCTION

	return FALSE;
}
コード例 #13
0
ファイル: DBImpactList.cpp プロジェクト: Linfly/wx2Server
BOOL DBImpactList::Save(VOID* pSource)
{
	
	__ENTER_FUNCTION

	enum 
	{
		DB_CharGuid	=	1,
		DB_IMData, 
	};

	INT Result;
	if(!Delete())
		return FALSE;

	ParseResult(&Result);

	FULLUSERDATA* pCharFullData = static_cast<FULLUSERDATA*>(pSource);
	Assert(pCharFullData);


	INT	ImpactCount = pCharFullData->m_Impact.m_Count;

	Assert(ImpactCount<=MAX_IMPACT_NUM);

	for(INT i=0;i<ImpactCount;i++)
	{
		DB_QUERY* pQuery = GetInternalQuery();

		if(!pQuery)
		{
			Assert(FALSE);
		}

		pQuery->Clear();

		if(m_CharGuid==INVALID_ID)
		{
			return FALSE;
		}
		
		CHAR	ImpactData[256];
		memset(ImpactData,0,256);
		Binary2String((CHAR*)(&pCharFullData->m_Impact.m_aImpacts[i]),
					  sizeof(_OWN_IMPACT),
					  ImpactData);

		pQuery->Parse( NewCharImpact,
					   IMPACT_TABLE,
					   m_CharGuid,
					   ImpactData,
					   m_DBVersion);

		if(!ODBCBase::Save(pCharFullData))
			return FALSE;

	}

	return TRUE;

	__LEAVE_FUNCTION

	return FALSE;
}
コード例 #14
0
ファイル: DBTaskList.cpp プロジェクト: brock7/TianLong
BOOL DBTaskList::Save(VOID* pSource)
{
	__ENTER_FUNCTION

	enum 
	{
		DB_CharGuid	=	1,
		DB_TaskID,
		DB_ScriptID,
		DB_Flag,
		DB_TP1,
		DB_TP2,
		DB_TP3,
		DB_TP4,
		DB_TP5,
		DB_TP6,
		DB_TP7,
		DB_TP8,
	};

	INT Result;
	if(!Delete())
		return FALSE;
	ParseResult(&Result);

	
	FULLUSERDATA* pCharFullData = static_cast<FULLUSERDATA*>(pSource);
	Assert(pCharFullData);
	
	//保存任务列表
	INT MissionCount =	pCharFullData->m_Mission.m_Count;

	for(INT i = 0;i	<	MissionCount;i++)
	{

		DB_QUERY* pQuery = GetInternalQuery();

		if(!pQuery)
		{
			Assert(FALSE);
		}

		pQuery->Clear();

		if(m_CharGuid==INVALID_ID)
		{
			return FALSE;
		}



		pQuery->Parse(NewCharTask,
					  TASK_TABLE,
					  m_CharGuid,
					  pCharFullData->m_Mission.m_aMission[i].m_idMission,
					  pCharFullData->m_Mission.m_aMission[i].m_idScript,
					  pCharFullData->m_Mission.m_aMission[i].m_yFlags,
					  pCharFullData->m_Mission.m_aMission[i].m_anParam[0],	
					  pCharFullData->m_Mission.m_aMission[i].m_anParam[1],	
					  pCharFullData->m_Mission.m_aMission[i].m_anParam[2],	
					  pCharFullData->m_Mission.m_aMission[i].m_anParam[3],	
					  pCharFullData->m_Mission.m_aMission[i].m_anParam[4],	
					  pCharFullData->m_Mission.m_aMission[i].m_anParam[5],	
					  pCharFullData->m_Mission.m_aMission[i].m_anParam[6],	
					  pCharFullData->m_Mission.m_aMission[i].m_anParam[7],	
					  m_DBVersion
					  );

		if(!ODBCBase::Save(pCharFullData))
			return FALSE;
	}
	//保存任务数据
	do
	{
		CHAR	CharMissionData[4096];
		memset(CharMissionData,0,4096);
		
		Binary2String((CHAR*)(pCharFullData->m_Mission.m_aMissionData),
					  sizeof(INT)*MAX_CHAR_MISSION_DATA_NUM,
					  CharMissionData);
		
		

		DB_QUERY* pQuery = GetInternalQuery();

		if(!pQuery)
		{
			Assert(FALSE);
		}

		pQuery->Clear();
		
		pQuery->Parse(UpdateCharTaskData,
					  CHAR_TABLE,
					  CharMissionData,
					  m_CharGuid,
					  m_DBVersion);

		if(!ODBCBase::Save(pCharFullData))
			return FALSE;


	}while(0);

	//保存任务标记
	do
	{
		
		CHAR	CharMissionFlag[2048];
		memset(CharMissionFlag,0,2048);

		Binary2String((CHAR*)(pCharFullData->m_Mission.m_aMissionHaveDoneFlags),
			sizeof(UINT)*MAX_CHAR_MISSION_FLAG_LEN,
			CharMissionFlag);

		DB_QUERY* pQuery = GetInternalQuery();

		if(!pQuery)
		{
			Assert(FALSE);
		}

		pQuery->Clear();

		pQuery->Parse(UpdateCharTaskFlag,
			CHAR_TABLE,
			CharMissionFlag,
			m_CharGuid,
			m_DBVersion);
		if(!ODBCBase::Save(pCharFullData))
			return FALSE;

	}while(0);
	
	return TRUE;

	__LEAVE_FUNCTION

	return FALSE;
}
コード例 #15
0
ファイル: DBPetList.cpp プロジェクト: gangzi4494/web-pap
BOOL DBPetList::Save(VOID* pSource)
{
    __ENTER_FUNCTION

    enum 
    {
        DB_CharGuid    =    1,
        DB_PetGuid,
        DB_PetDataID,
        DB_PetName,
        DB_PetNick,
        DB_Level,
        DB_NeedLevel,
        DB_AttType,
        DB_AIType,
        DB_Camp,
        DB_HP,
        DB_MP,
        DB_Life,
        DB_PetType,
        DB_Genera,
        DB_Enjoy,
        DB_StrPer,
        DB_ConPer,
        DB_DexPer,
        DB_SprPer,
        DB_IprPer,
        DB_Gengu,
        DB_GrowRate,
        DB_RePoint,
        DB_Exp,
        DB_Str,
        DB_Con,
        DB_Dex,
        DB_Spr,
        DB_Ipr,
        DB_Skill
    };

    INT Result;
    Delete();
    ParseResult(&Result);

    FULLUSERDATA* pCharFullData = static_cast<FULLUSERDATA*>(pSource);
    Assert(pCharFullData);

    for(INT i = 0;i <HUMAN_PET_MAX_COUNT;i++)
    {
        if(pCharFullData->m_PetList.m_aPetDB[i].m_GUID.IsNull() == TRUE)
            continue;

        DB_QUERY* pQuery = GetInternalQuery();

        if(!pQuery)
        {
            Assert(FALSE);
        }

        pQuery->Clear();

        if(m_CharGuid==INVALID_ID)
        {
            return FALSE;
        }

        CHAR PetSkill[100];
        memset(PetSkill,0,100);
        Binary2String((CHAR*)(pCharFullData->m_PetList.m_aPetDB[i].m_SkillList),
                      sizeof(_PET_SKILL)*PET_MAX_SKILL_COUNT,
                      PetSkill);

        CHAR PetCamp[100];
        memset(PetCamp,0,100);
        Binary2String((CHAR*)(&pCharFullData->m_PetList.m_aPetDB[i].m_CampData),
                       sizeof(_CAMP_DATA),
                       PetCamp);

        if(!StrSafeCheck(pCharFullData->m_PetList.m_aPetDB[i].m_szName,MAX_CHARACTER_NAME))
            return FALSE;
        if(!StrSafeCheck(pCharFullData->m_PetList.m_aPetDB[i].m_szNick,MAX_NICK_NAME))
            return FALSE;
    
        pQuery->Parse(NewCharPet,
                      PET_TABLE,
                      m_CharGuid,
                      pCharFullData->m_PetList.m_aPetDB[i].m_GUID.GetHighSection(),
                      pCharFullData->m_PetList.m_aPetDB[i].m_GUID.GetLowSection(),    
                      pCharFullData->m_PetList.m_aPetDB[i].m_nDataID,
                      pCharFullData->m_PetList.m_aPetDB[i].m_szName,
                      pCharFullData->m_PetList.m_aPetDB[i].m_szNick,
                      pCharFullData->m_PetList.m_aPetDB[i].m_nLevel,    
                      pCharFullData->m_PetList.m_aPetDB[i].m_nTakeLevel,
                      pCharFullData->m_PetList.m_aPetDB[i].m_nAttackType,
                      pCharFullData->m_PetList.m_aPetDB[i].m_AIType,    
                      PetCamp,    
                      pCharFullData->m_PetList.m_aPetDB[i].m_nHP,
                      0,
                      pCharFullData->m_PetList.m_aPetDB[i].m_nLife,    
                      pCharFullData->m_PetList.m_aPetDB[i].m_byPetType,
                      pCharFullData->m_PetList.m_aPetDB[i].m_byGeneration,    
                      pCharFullData->m_PetList.m_aPetDB[i].m_byHappiness,    
                      pCharFullData->m_PetList.m_aPetDB[i].m_nStrPerception ,    
                      pCharFullData->m_PetList.m_aPetDB[i].m_nConPerception    ,
                      pCharFullData->m_PetList.m_aPetDB[i].m_nDexPerception    ,
                      pCharFullData->m_PetList.m_aPetDB[i].m_nSprPerception ,    
                      pCharFullData->m_PetList.m_aPetDB[i].m_nIntPerception    ,
                      pCharFullData->m_PetList.m_aPetDB[i].m_nGenGu,
                      Float2Int(pCharFullData->m_PetList.m_aPetDB[i].m_fGrowRate*1000),
                      pCharFullData->m_PetList.m_aPetDB[i].m_nRemainPoint,
                      pCharFullData->m_PetList.m_aPetDB[i].m_nExp,
                      pCharFullData->m_PetList.m_aPetDB[i].m_BaseAttrLevel1.m_pAttr[CATTR_LEVEL1_STR],
                      pCharFullData->m_PetList.m_aPetDB[i].m_BaseAttrLevel1.m_pAttr[CATTR_LEVEL1_CON],
                      pCharFullData->m_PetList.m_aPetDB[i].m_BaseAttrLevel1.m_pAttr[CATTR_LEVEL1_DEX], 
                         pCharFullData->m_PetList.m_aPetDB[i].m_BaseAttrLevel1.m_pAttr[CATTR_LEVEL1_SPR], 
                      pCharFullData->m_PetList.m_aPetDB[i].m_BaseAttrLevel1.m_pAttr[CATTR_LEVEL1_INT],
                      PetSkill,
                      m_DBVersion);

          if(!ODBCBase::Save(pCharFullData))
              return FALSE;
    }
    return TRUE;

    __LEAVE_FUNCTION

    return FALSE;
}