anyone have a release for 5 line awakening ? if he can share with me i will be very happy
tnx!!
tnx!!
__5LAWAKES
CDbManager::GetBank( CMover* pMover, CQuery *qry, LPDB_OVERLAPPED_PLUS lpDbOverlappedPlus, int nSlot )
#if __VER >= 11 // __SYS_IDENTIFY __int64 iRandomOptItemId = GetInt64PaFromStr(ExtBank, &CountStr); pMover->m_Bank[nSlot].m_apItem[nExtBankCount].SetRandomOptItemId(iRandomOptItemId); #ifdef __5LAWAKES pMover->m_Bank[nSlot].m_apItem[nExtBankCount].SetnAdjItemId(GetInt64PaFromStr(ExtBank, &CountStr)); #endif #else
CDbManager::GetBankMover( CMover* pMover, CQuery *qry, int nSlot )
#if __VER >= 11 // __SYS_IDENTIFY pMover->m_Bank[nSlot].m_apItem[nExtBankCount].SetRandomOptItemId( GetInt64PaFromStr( ExtBank, &CountStr ) ); #ifdef __5LAWAKES pMover->m_Bank[nSlot].m_apItem[nExtBankCount].SetnAdjItemId(GetInt64PaFromStr(ExtBank, &CountStr)); #endif
CDbManager::GetGuildBank( CItemContainer< CItemElem >* GuildBank, CQuery *qry )
#if __VER >= 11 // __SYS_IDENTIFY __int64 iRandomOptItemId = GetInt64PaFromStr( ExtBank, &CountStr ); GuildBank->m_apItem[nExtBank].SetRandomOptItemId( iRandomOptItemId ); #ifdef __5LAWAKES GuildBank->m_apItem[nExtBank].SetnAdjItemId(GetInt64PaFromStr(ExtBank, &CountStr)); #endif #else // __SYS_IDENTIFY
CDbManager::GetPocket( CMover* pMover, CQuery* pQuery, LPDB_OVERLAPPED_PLUS lpDbOverlappedPlus )
__int64 iRandomOptItemId = GetInt64PaFromStr( szExt, &nOffset ); pPocket->m_apItem[i].SetRandomOptItemId(iRandomOptItemId); #ifdef __5LAWAKES pPocket->m_apItem[i].SetnAdjItemId(GetInt64PaFromStr(szExt, &nOffset)); #endif #if __VER >= 15 // __PETVIS pPocket->m_apItem[i].m_bTranformVisPet = static_cast<BOOL>( GetIntPaFromStr( szExt, &nOffset ) ); #endif // __PETVIS i++; nOffset++;
CDbManager::GetInventory( CMover* pMover, CQuery *qry, LPDB_OVERLAPPED_PLUS lpDbOverlappedPlus )
#if __VER >= 11 // __SYS_IDENTIFY __int64 iRandomOptItemId = GetInt64PaFromStr( ExtInven, &CountStr ); pMover->m_Inventory.m_apItem[nExtInven].SetRandomOptItemId( iRandomOptItemId ); #ifdef __5LAWAKES pMover->m_Inventory.m_apItem[nExtInven].SetnAdjItemId(GetInt64PaFromStr(ExtInven, &CountStr)); #endif
CDbManager::SaveOneItem( CItemElem* pItemElem, PItemStruct pItemStruct )
#if __VER >= 11 // __SYS_IDENTIFY sprintf(pItemStruct->szExt, "%d,%d,%I64d" #ifdef __5LAWAKES ",%I64d" #endif #if __VER >= 15 // __PETVIS ",%d" #endif "/", pItemElem->m_bCharged, pItemElem->m_dwKeepTime, pItemElem->GetRandomOptItemId() #ifdef __5LAWAKES , pItemElem->GetnAdjItemId() #endif #if __VER >= 15 // __PETVIS , static_cast<int>(pItemElem->m_bTranformVisPet) #endif ); #else sprintf( pItemStruct->szExt, "%d,%d,%d/", pItemElem->m_bCharged, pItemElem->m_dwKeepTime, pItemElem->GetRandomOptItemId() ); #endif
CItemElem::CItemElem()
#if __VER >= 11 // __SYS_IDENTIFY m_iRandomOptItemId = 0; #ifdef __5LAWAKES nAdjItemId = 0; #endif
CItemElem& CItemElem::operator =( CItemElem & ie )
#if __VER >= 11 // __SYS_IDENTIFY m_iRandomOptItemId = ie.GetRandomOptItemId(); #ifdef __5LAWAKES nAdjItemId = ie.GetnAdjItemId(); #endif
class CItemElem : public CItemBase
#ifdef __5LAWAKES
private:
__int64 nAdjItemId;
public:
__int64 GetnAdjItemId(){ return nAdjItemId; }
__int64* GetnAdjItemIdPtr(){ return &nAdjItemId; }
void SetnAdjItemId(__int64 inAjdItemSet){ nAdjItemId = inAjdItemSet; }
#endif
CItemElem::Serialize( CAr & ar )
#if __VER >= 11 // __SYS_IDENTIFY ar << m_iRandomOptItemId; #ifdef __5LAWAKES ar << nAdjItemId; #endif
#if __VER >= 11 // __SYS_IDENTIFY ar >> m_iRandomOptItemId; #ifdef __5LAWAKES ar >> nAdjItemId; #endif
class CItemElem : public CItemBase
#ifdef __5LAWAKES
private:
__int64 nAdjItemId;
__int64 nNewAdjItemId;
public:
__int64 GetnAdjItemId() { return nAdjItemId; }
__int64* GetnAdjItemIdPtr() { return &nAdjItemId; }
void SetnAdjItemId(__int64 inAjdItemSet) { nAdjItemId = inAjdItemSet; }
__int64 GetnNewAdjItemId() { return nNewAdjItemId; }
__int64* GetnNewAdjItemIdPtr() { return &nNewAdjItemId; }
void SetnNewAdjItemId(__int64 inAjdItemSet) { nNewAdjItemId = inAjdItemSet; }
void SetNewRandomOptId(__int64 iDst){ m_n64NewRandomOption = iDst; }
#endif
CItemElem::CItemElem()
m_iRandomOptItemId = 0; m_n64NewRandomOption = 0; #ifdef __5LAWAKES nAdjItemId = 0; #endif
CMover::SetDestParamRandomOptExtension( CItemElem* pItemElem )
#if __VER >= 11 // __SYS_IDENTIFY
#ifdef __5LAWAKES
byte cbOption = g_xRandomOptionProperty->GetAdjSize(pItemElem->GetnAdjItemId());
for (int i = 0; i < cbOption; i++)
{
int nDst, nAdj;
if (g_xRandomOptionProperty->GetDstAdj(pItemElem->GetRandomOptItemId(), pItemElem->GetnAdjItemId(), i, &nDst, &nAdj))
SetDestParam(nDst, nAdj, NULL_CHGPARAM);
}
#else
int cbOption = g_xRandomOptionProperty->GetRandomOptionSize( pItemElem->GetRandomOptItemId() );
for( int i = 0; i < cbOption; i++ )
{
int nDst, nAdj;
if( g_xRandomOptionProperty->GetParam( pItemElem->GetRandomOptItemId(), i, &nDst, &nAdj ) )
SetDestParam( nDst, nAdj, NULL_CHGPARAM );
}
#endif
CMover::ResetDestParamRandomOptExtension( CItemElem* pItemElem )
#if __VER >= 11 // __SYS_IDENTIFY
#ifdef __5LAWAKES
byte cbOption = g_xRandomOptionProperty->GetDstSize(pItemElem->GetRandomOptItemId());
for (int i = 0; i < cbOption; ++i)
{
int nDst, nAdj;
if(g_xRandomOptionProperty->GetDstAdj(pItemElem->GetRandomOptItemId(), pItemElem->GetnAdjItemId(), i, &nDst, &nAdj))
ResetDestParam( nDst, nAdj, TRUE );
}
#else
int cbOption = g_xRandomOptionProperty->GetRandomOptionSize( pItemElem->GetRandomOptItemId() );
for( int i = 0; i < cbOption; i++ )
{
int nDst, nAdj;
if( g_xRandomOptionProperty->GetParam( pItemElem->GetRandomOptItemId(), i, &nDst, &nAdj ) )
ResetDestParam( nDst, nAdj, TRUE );
}
#endif
#if __VER >= 15 // __PETVIS #define UI_PETVIS_SIZE 15 #define UI_PETVIS_ITEM 16 #define UI_PETVIS_ITEMSWAP 17 #define UI_TRANSFORM_VISPET 18 const int PETVIS_DEFAULT_VIS_SLOT_SZIE = 2; #endif
#ifdef __5LAWAKES #define UI_ADJRANDOMOPT 30 #endif
CMover::UpdateItemEx(unsigned char id, char cParam, __int64 iValue)
case UI_RANDOMOPTITEMID: pItemElem->SetRandomOptItemId(iValue); break; #ifdef __5LAWAKES case UI_ADJRANDOMOPT: pItemElem->SetnAdjItemId(iValue); break; #endif
CRandomOptionProperty::InitializeRandomOption(__int64* pnRandomOptItemId)
#ifdef __5LAWAKES *pnRandomOptItemId &= 0xFFFF0000000000FF; #else *pnRandomOptItemId &= 0xC0000000000000FF; #endif
bool CRandomOptionProperty::MergeRandomOption(CItemElem* pItemElemMain, CItemElem* pItemElemDestroy)
#ifdef __5LAWAKES int nMainSize = GetDstSize(pItemElemMain->GetRandomOptItemId()); int nDestroySize = GetDstSize(pItemElemDestroy->GetRandomOptItemId()); #else int nMainSize = GetRandomOptionSize(pItemElemMain->GetRandomOptItemId()); int nDestroySize = GetRandomOptionSize(pItemElemDestroy->GetRandomOptItemId()); #endif
#ifndef __5LAWAKES
if (GetParam(pItemElemDestroy->GetRandomOptItemId(), i, &nDst, &nAdj))
SetParam(pItemElemMain->GetRandomOptItemIdPtr(), nDst, nAdj);
#else
if (GetDstAdj(pItemElemDestroy->GetRandomOptItemId(), pItemElemDestroy->GetnAdjItemId(), i, &nDst, &nAdj))
{
SetDsts(pItemElemMain->GetRandomOptItemIdPtr(), i + nMainSize, nDst);
SetAdjs(pItemElemMain->GetnAdjItemIdPtr(), i + nMainSize, nAdj);
}
#endif
#ifdef __5LAWAKES
#ifdef __WORLDSERVER
void CRandomOptionProperty::GenDstAdj(CItemElem* pItemElem, int nRandomOptionKind, int nParts, bool noProtect)
{
__int64 nDstSet = 0;
__int64 nAdjSet = 0;
SetValues(&nDstSet, &nAdjSet, nRandomOptionKind, nParts);
if (noProtect)
{
pItemElem->SetRandomOptItemId(nDstSet);
pItemElem->SetnAdjItemId(nAdjSet);
}
else
{
pItemElem->SetNewRandomOptId(nDstSet);
pItemElem->SetnNewAdjItemId(nAdjSet);
}
}
void CRandomOptionProperty::SetValues(__int64* nDstSet, __int64* nAdjSet, int nRandomKind, int nParts)
{
__int64 nBonus = 0;
byte nloop = 5;
if(nRandomKind >= eBlessing)
nloop = 3;
for (int i = 0; i < nloop; i++)
{
nBonus = 0;
RANDOM_OPTION* pRandomOption = DetermineRandomOptionDst(nRandomKind, nParts);
nBonus = pRandomOption->nDst;
nBonus = nBonus << ( 8 + (8 * i));
*nDstSet = *nDstSet | nBonus;
nBonus = 0;
short nAdj = DetermineRandomOptionAdj(pRandomOption, false);
if (nAdj < 0)
{
nBonus |= 0x200;
nBonus = nBonus | (-nAdj);
}
else
nBonus = nBonus | nAdj;
nBonus = nBonus << (10 * i);
*nAdjSet = *nAdjSet | nBonus;
}
}
#endif
void CRandomOptionProperty::SetDsts(__int64* Dstset, byte ati, byte nDst)
{
__int64 wew = nDst;
wew = wew << (8 + (ati * 8));
*Dstset = *Dstset | wew;
}
void CRandomOptionProperty::SetAdjs(__int64* Adjset, byte ati, short nAdj)
{
__int64 nAdjz = 0;
if (nAdj < 0) {
nAdjz |= 0x200;
nAdjz = nAdjz | (-nAdj);
}
else { nAdjz = nAdjz | nAdj; }
nAdjz = nAdjz << (10 * ati);
*Adjset = *Adjset | nAdjz;
}
byte CRandomOptionProperty::GetDstSize(__int64 nDstList, bool Safe)
{
byte nSize = 0;
if (!Safe)
{
bool bCheckedSafeFlag = false;
bCheckedSafeFlag = IsCheckedSafeFlag(nDstList);
if (bCheckedSafeFlag == true) { return nSize; }
}
__int64 i = 0xFF << 8;
for (int j = 0; j < 5; j++)
{
if (nDstList & i)
{
nSize++;
i = i << 8;
}
else
return nSize;
}
return nSize;
}
byte CRandomOptionProperty::GetAdjSize(__int64 nAdjList)
{
byte nSize = 0;
__int64 i = 0x3FF;
for (int j = 0; j < 5; j++)
{
if (nAdjList & i)
{
nSize++;
i = i << 10;
}
else
return nSize;
}
return nSize;
}
void CRandomOptionProperty::ResetAdjs(__int64* wew)
{
*wew &= 0x0000000000000000;
}
BOOL CRandomOptionProperty::GetDstAdj(__int64 nDstId, __int64 nAdjId, int i, int* pnDst, int* pnAdj)
{
int nDst = static_cast<int>(nDstId >> (8 + (i * 8)));
int nAdj = static_cast<int>(nAdjId >> (10 * i));
*pnAdj = nAdj & 0x1FF;
if (nAdj & 0x200)
*pnAdj = -*pnAdj;
*pnDst = nDst & 0xFF;
return TRUE;
}
#endif
#ifdef __5LAWAKES #define MAX_RANDOM_OPTION 5 #else #define MAX_RANDOM_OPTION 3 #endif
#ifdef __5LAWAKES #define _AWAKE_SAFE_FLAG 0x100000000000000 #else #define _AWAKE_SAFE_FLAG 0x2000000000000000 #endif
class CRandomOptionProperty
#ifdef __5LAWAKES public: void GenDstAdj(CItemElem* pItemElem, int nRandomOptionKind, int nParts, bool noProtect = true); void SetValues(__int64* nDstSet, __int64* nAdjSet, int nRandomKind, int nParts); void SetDsts(__int64* Dstset, byte ati, byte nDst); void SetAdjs(__int64* Adjset, byte ati, short nAdj); byte GetDstSize(__int64 nRandomOptDstId, bool Safe = true); byte GetAdjSize(__int64 nRandomOptAdjId); void ResetAdjs(__int64* pnRandomOptAdjId); BOOL GetDstAdj(__int64 nDstId, __int64 nAdjId, int i, int* pnDst, int* pnAdj); #endif
BOOL TextCmd_SetRandomOption(CScanner & s)
{
#ifdef __WORLDSERVER
CUser* pUser = (CUser*)s.dwValue;
CItemElem* pItemElem = pUser->m_Inventory.GetAt(0);
if (pItemElem)
{
if (g_xRandomOptionProperty->GetRandomOptionKind(pItemElem) >= 0)
{
g_xRandomOptionProperty->InitializeRandomOption(pItemElem->GetRandomOptItemIdPtr());
#ifdef __5LAWAKES
g_xRandomOptionProperty->ResetAdjs(pItemElem->GetnAdjItemIdPtr());
__int64 DstSet = 0, AdjSet = 0;
#endif
unsigned char nDst = 0; short nAdj = 0; byte nloopcnt = 0;
nDst = s.GetNumber();
while (s.tok != FINISHED)
{
nAdj = s.GetNumber();
if (nDst < 1 || nDst > MAX_ADJPARAMARY){
pUser->AddText("You went over or under the required Dst amount");
break;
}
if (nAdj < -512 || nAdj > 512){
pUser->AddText("Max Adj = 512, Min adj = -512. Stop overflowing you hoe");
break;
}
#ifdef __5LAWAKES
g_xRandomOptionProperty->SetDsts(&DstSet, nloopcnt, nDst);
g_xRandomOptionProperty->SetAdjs(&AdjSet, nloopcnt, nAdj);
#else
BOOL TextCmd_GenRandomOption(CScanner & s)
{
#ifdef __WORLDSERVER
CUser* pUser = (CUser*)s.dwValue;
CItemElem* pItemElem = pUser->m_Inventory.GetAt(0);
if (pItemElem)
{
int nRandomOptionKind = g_xRandomOptionProperty->GetRandomOptionKind(pItemElem);
if (nRandomOptionKind >= 0)
{
#ifdef __AWAKENINGCOMMAND
const unsigned int cost = 1000000;
if (pUser->GetGold() < nAwakeCost){
pUser->AddText("Not enough Gold");
return false;
}
pUser->AddGold(-(nCost));
#endif
g_xRandomOptionProperty->InitializeRandomOption(pItemElem->GetRandomOptItemIdPtr());
#ifdef __5LAWAKES
g_xRandomOptionProperty->ResetAdjs(pItemElem->GetnAdjItemIdPtr());
g_xRandomOptionProperty->GenDstAdj(pItemElem, nRandomOptionKind, pItemElem->GetProp()->dwParts);
#else
g_xRandomOptionProperty->GenRandomOption(pItemElem->GetRandomOptItemIdPtr(), nRandomOptionKind, pItemElem->GetProp()->dwParts);
pUser->UpdateItemEx((BYTE)(pItemElem->m_dwObjId), UI_RANDOMOPTITEMID, pItemElem->GetRandomOptItemId());
#endif
}
}
#endif
return true;
}
BOOL TextCmd_InitializeRandomOption(CScanner & s)
{
#ifdef __WORLDSERVER
CUser* pUser = (CUser*)s.dwValue;
CItemElem* pItemElem = pUser->m_Inventory.GetAt(0);
if (pItemElem)
{
int nRandomOptionKind = g_xRandomOptionProperty->GetRandomOptionKind(pItemElem);
if (nRandomOptionKind >= 0)
{
#ifdef __5LAWAKES
g_xRandomOptionProperty->ResetAdjs(pItemElem->GetnAdjItemIdPtr());
pUser->UpdateItemEx((BYTE)(pItemElem->m_dwObjId), UI_ADJRANDOMOPT, pItemElem->GetnAdjItemId());
#endif
g_xRandomOptionProperty->InitializeRandomOption(pItemElem->GetRandomOptItemIdPtr());
pUser->UpdateItemEx((BYTE)(pItemElem->m_dwObjId), UI_RANDOMOPTITEMID, pItemElem->GetRandomOptItemId());
}
}
#endif
return true;
}
CWndMgr::PutAwakeningBlessing( CItemElem* pItemElem, CEditString* pEdit )
#ifdef __5LAWAKES byte nSize = g_xRandomOptionProperty->GetDstSize(pItemElem->GetRandomOptItemId()); #else int nSize = g_xRandomOptionProperty->GetRandomOptionSize( pItemElem->GetRandomOptItemId() ); #endif #ifdef __PROTECT_AWAKE bool bSafe = g_xRandomOptionProperty->IsCheckedSafeFlag(pItemElem->GetRandomOptItemId()); #ifndef __5LAWAKES if (bSafe) nSize = g_xRandomOptionProperty->GetViewRandomOptionSize(pItemElem->GetRandomOptItemId()); #endif #endif //__PROTECT_AWAKE
#ifdef __5LAWAKES if (!g_xRandomOptionProperty->GetDstAdj(pItemElem->GetRandomOptItemId(), pItemElem->GetnAdjItemId(), i, &nDst, &nAdj)) #else if( !g_xRandomOptionProperty->GetParam( pItemElem->GetRandomOptItemId(), i, &nDst, &nAdj ) ) #endif
CDPSrvr::OnBlessednessCancel(CAr & ar, DPID dpidCache, DPID dpidUser, LPBYTE lpBuf, u_long uBufSize)
g_xRandomOptionProperty->InitializeRandomOption(pItem->GetRandomOptItemIdPtr()); pUser->UpdateItemEx((BYTE)(pItem->m_dwObjId), UI_RANDOMOPTITEMID, pItem->GetRandomOptItemId()); #ifdef __5LAWAKES g_xRandomOptionProperty->ResetAdjs(pItem->GetnAdjItemIdPtr()); pUser->UpdateItemEx((BYTE)(pItem->m_dwObjId), UI_ADJRANDOMOPT, pItem->GetnAdjItemId()); #endif
CDPSrvr::OnAwakening(CAr & ar, DPID dpidCache, DPID dpidUser, LPBYTE lpBuf, u_long uBufSize)
} g_xRandomOptionProperty->InitializeRandomOption(pItem->GetRandomOptItemIdPtr()); #ifdef __5LAWAKES g_xRandomOptionProperty->ResetAdjs(pItem->GetnAdjItemIdPtr()); g_xRandomOptionProperty->GenDstAdj(pItem, nRandomOptionKind, pItem->GetProp()->dwParts); pUser->UpdateItemEx((BYTE)(pItem->m_dwObjId), UI_ADJRANDOMOPT, pItem->GetnAdjItemId()); #else g_xRandomOptionProperty->GenRandomOption(pItem->GetRandomOptItemIdPtr(), nRandomOptionKind, pItem->GetProp()->dwParts); #endif
CDPSrvr::DoUseItemTarget_GenRandomOption(CUser* pUser, CItemElem* pTarget, int nKind, int nOk, int nMismatchKind, int nHasOption, const char* szOperation, const char* szReceive)
if ( #ifdef __5LAWAKES g_xRandomOptionProperty->GetDstSize(pTarget->GetRandomOptItemId(), false) > 0 #else g_xRandomOptionProperty->GetRandomOptionSize(pTarget->GetRandomOptItemId()) > 0 #endif #if __VER >= 12 // __J12_0 && (nKind != CRandomOptionProperty::eBlessing && nKind != CRandomOptionProperty::eEatPet) #endif )
bool bCheckedSafeFlag = false;
bCheckedSafeFlag = g_xRandomOptionProperty->IsCheckedSafeFlag(pTarget->GetRandomOptItemId());
if (bCheckedSafeFlag == true)
{
g_xRandomOptionProperty->ResetSafeFlag(pTarget->GetRandomOptItemIdPtr());
g_xRandomOptionProperty->InitializeRandomOption(pTarget->GetNewRandomOptionPtr());
#ifdef __5LAWAKES
g_xRandomOptionProperty->ResetAdjs(pTarget->GetnNewAdjItemIdPtr());
g_xRandomOptionProperty->GenDstAdj(pTarget, nRandomOptionKind, pTarget->GetProp()->dwParts, false);
#else
g_xRandomOptionProperty->GenRandomOption(pTarget->GetNewRandomOptionPtr(), nRandomOptionKind, pTarget->GetProp()->dwParts, true);
#endif
TCHAR szNewOption[128];
::memset(szNewOption, 0, sizeof(szNewOption));
::_stprintf(szNewOption, "%I64d", pTarget->GetNewRandomOption());
g_DPSrvr.PutItemLog(pUser, "z", szNewOption, pTarget, 1);
#ifdef __5LAWAKES
pUser->SendNewRandomOption((BYTE)(pTarget->m_dwObjId), (DWORD)(pTarget->GetSerialNumber()), pTarget->GetNewRandomOption(), pTarget->GetnNewAdjItemId());
#else
pUser->SendNewRandomOption((BYTE)(pTarget->m_dwObjId), (DWORD)(pTarget->GetSerialNumber()), pTarget->GetNewRandomOption());
#endif
}
else
{
g_xRandomOptionProperty->InitializeRandomOption(pTarget->GetRandomOptItemIdPtr());
#ifdef __5LAWAKES
g_xRandomOptionProperty->ResetAdjs(pTarget->GetnAdjItemIdPtr());
g_xRandomOptionProperty->GenDstAdj(pTarget, nRandomOptionKind, pTarget->GetProp()->dwParts);
#else
g_xRandomOptionProperty->GenRandomOption(pTarget->GetRandomOptItemIdPtr(), nRandomOptionKind, pTarget->GetProp()->dwParts);
#endif
}
#ifdef __5LAWAKES
pUser->UpdateItemEx((BYTE)(pTarget->m_dwObjId), UI_ADJRANDOMOPT, pTarget->GetnAdjItemId());
#endif
pUser->UpdateItemEx((BYTE)(pTarget->m_dwObjId), UI_RANDOMOPTITEMID, pTarget->GetRandomOptItemId())
CDPSrvr::DoUseItemTarget_InitializeRandomOption(CUser* pUser, CItemElem* pTarget, int nKind, int nOk, int nError, const char* szOperation, const char* szRecv)
else
{
g_xRandomOptionProperty->InitializeRandomOption(pTarget->GetRandomOptItemIdPtr());
#ifdef __5LAWAKES
g_xRandomOptionProperty->ResetAdjs(pTarget->GetnAdjItemIdPtr());
#endif
}
#ifdef __5LAWAKES pUser->UpdateItemEx((BYTE)(pTarget->m_dwObjId), UI_ADJRANDOMOPT, pTarget->GetnAdjItemId()); #endif pUser->UpdateItemEx((BYTE)(pTarget->m_dwObjId), UI_RANDOMOPTITEMID, pTarget->GetRandomOptItemId());
CWndSelectAwakeCase::CWndSelectAwakeCase( )
m_n64NewOption = 0; #ifdef __5LAWAKES m_nAdjOpt = 0; #endif
CWndSelectAwakeCase::OutputOptionString( C2DRender* p2DRender, CItemElem* pItemElem, BOOL bNew )
if (!bNew)
{
#ifdef __5LAWAKES
nSize = g_xRandomOptionProperty->GetDstSize(pItemElem->GetRandomOptItemId());
#else
nSize = g_xRandomOptionProperty->GetRandomOptionSize(pItemElem->GetRandomOptItemId());
#endif
}
else
{
#ifdef __5LAWAKES
nSize = g_xRandomOptionProperty->GetDstSize(m_n64NewOption, false);
#else
nSize = g_xRandomOptionProperty->GetViewRandomOptionSize(m_n64NewOption);
#endif
}
__int64 n64Options = 0;
n64Options = ( bNew ? m_n64NewOption : pItemElem->GetRandomOptItemId());
#ifdef __5LAWAKES
__int64 nAdjOptions = 0;
nAdjOptions = (bNew ? m_nAdjOpt : pItemElem->GetnAdjItemId());
#endif
CString str;
int nDst = 0, nAdj = 0;
for (int i = 0; i < nSize; ++i)
{
#ifdef __5LAWAKES
if (!g_xRandomOptionProperty->GetDstAdj(n64Options, nAdjOptions, i, &nDst, &nAdj))
#else
if (!g_xRandomOptionProperty->GetParam(n64Options, i, &nDst, &nAdj))
#endif
continue;
CWndSelectAwakeCase::SetData(BYTE byObjID, DWORD dwSerialNum, __int64 n64NewOption)
#ifdef __5LAWAKES
void CWndSelectAwakeCase::SetData( BYTE byObjID, DWORD dwSerialNum, __int64 n64NewOption, __int64 nAdjOpt )
#else
void CWndSelectAwakeCase::SetData(BYTE byObjID, DWORD dwSerialNum, __int64 n64NewOption)
#endif
{
m_byObjID = byObjID;
m_dwSerialNum = dwSerialNum;
m_n64NewOption = n64NewOption;
#ifdef __5LAWAKES
m_nAdjOpt = nAdjOpt;
#endif
CWndSelectAwakeCase : public CWndNeuz
#ifdef __5LAWAKES void SetData( BYTE byObjID, DWORD dwSerialNum, __int64 n64NewOption, __int64 nAdjOpt); #else void SetData(BYTE byObjID, DWORD dwSerialNum, __int64 n64NewOption); #endif
__int64 m_n64NewOption; #ifdef __5LAWAKES __int64 m_nAdjOpt; #endif
CDPClient::OnSafeAwakening(CAr& ar)
#ifdef __5LAWAKES __int64 nAdjOpt = 0; ar >> nAdjOpt; #endif if (!g_pPlayer) return; g_WndMng.m_pWndSelectAwakeCase = new CWndSelectAwakeCase; #ifdef __5LAWAKES g_WndMng.m_pWndSelectAwakeCase->SetData(byItemObjID, dwSerialNumber, n64NewRandomOption, nAdjOpt); #else g_WndMng.m_pWndSelectAwakeCase->SetData(byItemObjID, dwSerialNumber, n64NewRandomOption); #endif
void SelectAwakeningValue( DWORD dwItemObjID, DWORD dwSerialNumber, BYTE bySelectFlag ); #ifdef __5LAWAKES void SendNewRandomOption(unsigned char id, DWORD dwSerialNumber, __int64 n64NewRandomOption, __int64 nAdjOpt); #else void SendNewRandomOption( unsigned char id, DWORD dwSerialNumber, __int64 n64NewRandomOption ); #endif
#ifdef __5LAWAKES
void CUser::SendNewRandomOption(unsigned char id, DWORD dwSerialNumber, __int64 n64NewRandomOption, __int64 nAdjOpt)
#else
void CUser::SendNewRandomOption(unsigned char id, DWORD dwSerialNumber, __int64 n64NewRandomOption)
#endif
{
if (IsDelete()) return;
m_Snapshot.cb++;
m_Snapshot.ar << GetId();
m_Snapshot.ar << SNAPSHOTTYPE_ITEM_SELECT_AWAKENING_VALUE;
m_Snapshot.ar << id << dwSerialNumber << n64NewRandomOption;
#ifdef __5LAWAKES
m_Snapshot.ar << nAdjOpt;
#endif
}
CUser::SelectAwakeningValue(DWORD dwItemObjID, DWORD dwSerialNumber, BYTE bySelectFlag)
#ifndef __5LAWAKES
bRetValue = pItem->SelectRandomOption(bySelectFlag); //old way
if (bRetValue == true)
{
UpdateItemEx((BYTE)(pItem->m_dwObjId), UI_RANDOMOPTITEMID, pItem->GetRandomOptItemId());
TCHAR szSelectValue[128];
::memset(szSelectValue, 0, sizeof(szSelectValue));
if (bySelectFlag == 1) // _AWAKE_OLD_VALUE
{
::_stprintf(szSelectValue, "SELECT _AWAKE_OLD_VALUE");
}
else if (bySelectFlag == 2) // _AWAKE_NEW_VALUE
{
::_stprintf(szSelectValue, "SELECT _AWAKE_NEW_VALUE");
}
else
{
::_stprintf(szSelectValue, "SELECT ERROR");
}
g_DPSrvr.PutItemLog(this, "z", szSelectValue, pItem, 1);
}
#else
if (bySelectFlag == 1)
{
pItem->SetNewRandomOptId(0);
pItem->SetnNewAdjItemId(0);
}
else if (bySelectFlag == 2)
{
__int64 nNewOpt = (pItem->GetRandomOptItemId() & 0xF0000000000000FF) | pItem->GetNewRandomOption();
pItem->SetRandomOptItemId(nNewOpt);
UpdateItemEx((BYTE)(pItem->m_dwObjId), UI_RANDOMOPTITEMID, nNewOpt);
nNewOpt = pItem->GetnNewAdjItemId();
pItem->SetnAdjItemId(nNewOpt);
UpdateItemEx((BYTE)(pItem->m_dwObjId), UI_ADJRANDOMOPT, nNewOpt);
pItem->SetNewRandomOptId(0);
pItem->SetnNewAdjItemId(0);
}
#endif
Awakening 0 0 0 0 100
Blessing 100 0 0 0 0
SystemPet 35 35 30 0 0
EatPet 100 0 0 0 0
Du hast gerade ohne Eigennutzen für jemanden 20 Minuten deiner wertvollen Zeit geopfert. Dafür hast du meinen Respekt.Quote:
Do you mean?Code:__5LAWAKES
You need to define __5LAWAKES in Client , Worldserver and Databaseserver.
I literally spend 20 minutes copying this into here. Hope your happy now lol.
No support at all. Use at your own risk.
__5LAWAKES
DbManagerFun.cpp
Code:CDbManager::GetBank( CMover* pMover, CQuery *qry, LPDB_OVERLAPPED_PLUS lpDbOverlappedPlus, int nSlot )-Code:#if __VER >= 11 // __SYS_IDENTIFY __int64 iRandomOptItemId = GetInt64PaFromStr(ExtBank, &CountStr); pMover->m_Bank[nSlot].m_apItem[nExtBankCount].SetRandomOptItemId(iRandomOptItemId); #ifdef __5LAWAKES pMover->m_Bank[nSlot].m_apItem[nExtBankCount].SetnAdjItemId(GetInt64PaFromStr(ExtBank, &CountStr)); #endif #else
Code:CDbManager::GetBankMover( CMover* pMover, CQuery *qry, int nSlot )-Code:#if __VER >= 11 // __SYS_IDENTIFY pMover->m_Bank[nSlot].m_apItem[nExtBankCount].SetRandomOptItemId( GetInt64PaFromStr( ExtBank, &CountStr ) ); #ifdef __5LAWAKES pMover->m_Bank[nSlot].m_apItem[nExtBankCount].SetnAdjItemId(GetInt64PaFromStr(ExtBank, &CountStr)); #endif
Code:CDbManager::GetGuildBank( CItemContainer< CItemElem >* GuildBank, CQuery *qry )-Code:#if __VER >= 11 // __SYS_IDENTIFY __int64 iRandomOptItemId = GetInt64PaFromStr( ExtBank, &CountStr ); GuildBank->m_apItem[nExtBank].SetRandomOptItemId( iRandomOptItemId ); #ifdef __5LAWAKES GuildBank->m_apItem[nExtBank].SetnAdjItemId(GetInt64PaFromStr(ExtBank, &CountStr)); #endif #else // __SYS_IDENTIFY
Code:CDbManager::GetPocket( CMover* pMover, CQuery* pQuery, LPDB_OVERLAPPED_PLUS lpDbOverlappedPlus )-Code:__int64 iRandomOptItemId = GetInt64PaFromStr( szExt, &nOffset ); pPocket->m_apItem[i].SetRandomOptItemId(iRandomOptItemId); #ifdef __5LAWAKES pPocket->m_apItem[i].SetnAdjItemId(GetInt64PaFromStr(szExt, &nOffset)); #endif #if __VER >= 15 // __PETVIS pPocket->m_apItem[i].m_bTranformVisPet = static_cast<BOOL>( GetIntPaFromStr( szExt, &nOffset ) ); #endif // __PETVIS i++; nOffset++;
Code:CDbManager::GetInventory( CMover* pMover, CQuery *qry, LPDB_OVERLAPPED_PLUS lpDbOverlappedPlus )Code:#if __VER >= 11 // __SYS_IDENTIFY __int64 iRandomOptItemId = GetInt64PaFromStr( ExtInven, &CountStr ); pMover->m_Inventory.m_apItem[nExtInven].SetRandomOptItemId( iRandomOptItemId ); #ifdef __5LAWAKES pMover->m_Inventory.m_apItem[nExtInven].SetnAdjItemId(GetInt64PaFromStr(ExtInven, &CountStr)); #endif
DBManagerSave.cpp
Code:CDbManager::SaveOneItem( CItemElem* pItemElem, PItemStruct pItemStruct )Code:#if __VER >= 11 // __SYS_IDENTIFY sprintf(pItemStruct->szExt, "%d,%d,%I64d" #ifdef __5LAWAKES ",%I64d" #endif #if __VER >= 15 // __PETVIS ",%d" #endif "/", pItemElem->m_bCharged, pItemElem->m_dwKeepTime, pItemElem->GetRandomOptItemId() #ifdef __5LAWAKES , pItemElem->GetnAdjItemId() #endif #if __VER >= 15 // __PETVIS , static_cast<int>(pItemElem->m_bTranformVisPet) #endif ); #else sprintf( pItemStruct->szExt, "%d,%d,%d/", pItemElem->m_bCharged, pItemElem->m_dwKeepTime, pItemElem->GetRandomOptItemId() ); #endif
Obj.cpp
Code:CItemElem::CItemElem()-Code:#if __VER >= 11 // __SYS_IDENTIFY m_iRandomOptItemId = 0; #ifdef __5LAWAKES nAdjItemId = 0; #endif
Code:CItemElem& CItemElem::operator =( CItemElem & ie )Code:#if __VER >= 11 // __SYS_IDENTIFY m_iRandomOptItemId = ie.GetRandomOptItemId(); #ifdef __5LAWAKES nAdjItemId = ie.GetnAdjItemId(); #endif
Obj.h
Code:class CItemElem : public CItemBaseCode:#ifdef __5LAWAKES private: __int64 nAdjItemId; public: __int64 GetnAdjItemId(){ return nAdjItemId; } __int64* GetnAdjItemIdPtr(){ return &nAdjItemId; } void SetnAdjItemId(__int64 inAjdItemSet){ nAdjItemId = inAjdItemSet; } #endif
ObjSerialize.cpp
Code:CItemElem::Serialize( CAr & ar )Code:#if __VER >= 11 // __SYS_IDENTIFY ar << m_iRandomOptItemId; #ifdef __5LAWAKES ar << nAdjItemId; #endifCode:#if __VER >= 11 // __SYS_IDENTIFY ar >> m_iRandomOptItemId; #ifdef __5LAWAKES ar >> nAdjItemId; #endif
Item.h
Code:class CItemElem : public CItemBaseCode:#ifdef __5LAWAKES private: __int64 nAdjItemId; __int64 nNewAdjItemId; public: __int64 GetnAdjItemId() { return nAdjItemId; } __int64* GetnAdjItemIdPtr() { return &nAdjItemId; } void SetnAdjItemId(__int64 inAjdItemSet) { nAdjItemId = inAjdItemSet; } __int64 GetnNewAdjItemId() { return nNewAdjItemId; } __int64* GetnNewAdjItemIdPtr() { return &nNewAdjItemId; } void SetnNewAdjItemId(__int64 inAjdItemSet) { nNewAdjItemId = inAjdItemSet; } void SetNewRandomOptId(__int64 iDst){ m_n64NewRandomOption = iDst; } #endif
Item.cpp
Code:CItemElem::CItemElem()Code:m_iRandomOptItemId = 0; m_n64NewRandomOption = 0; #ifdef __5LAWAKES nAdjItemId = 0; #endif
Mover.cpp
Code:CMover::SetDestParamRandomOptExtension( CItemElem* pItemElem )-Code:#if __VER >= 11 // __SYS_IDENTIFY #ifdef __5LAWAKES byte cbOption = g_xRandomOptionProperty->GetAdjSize(pItemElem->GetnAdjItemId()); for (int i = 0; i < cbOption; i++) { int nDst, nAdj; if (g_xRandomOptionProperty->GetDstAdj(pItemElem->GetRandomOptItemId(), pItemElem->GetnAdjItemId(), i, &nDst, &nAdj)) SetDestParam(nDst, nAdj, NULL_CHGPARAM); } #else int cbOption = g_xRandomOptionProperty->GetRandomOptionSize( pItemElem->GetRandomOptItemId() ); for( int i = 0; i < cbOption; i++ ) { int nDst, nAdj; if( g_xRandomOptionProperty->GetParam( pItemElem->GetRandomOptItemId(), i, &nDst, &nAdj ) ) SetDestParam( nDst, nAdj, NULL_CHGPARAM ); } #endif
Code:CMover::ResetDestParamRandomOptExtension( CItemElem* pItemElem )Code:#if __VER >= 11 // __SYS_IDENTIFY #ifdef __5LAWAKES byte cbOption = g_xRandomOptionProperty->GetDstSize(pItemElem->GetRandomOptItemId()); for (int i = 0; i < cbOption; ++i) { int nDst, nAdj; if(g_xRandomOptionProperty->GetDstAdj(pItemElem->GetRandomOptItemId(), pItemElem->GetnAdjItemId(), i, &nDst, &nAdj)) ResetDestParam( nDst, nAdj, TRUE ); } #else int cbOption = g_xRandomOptionProperty->GetRandomOptionSize( pItemElem->GetRandomOptItemId() ); for( int i = 0; i < cbOption; i++ ) { int nDst, nAdj; if( g_xRandomOptionProperty->GetParam( pItemElem->GetRandomOptItemId(), i, &nDst, &nAdj ) ) ResetDestParam( nDst, nAdj, TRUE ); } #endif
Mover.h
Code:#if __VER >= 15 // __PETVIS #define UI_PETVIS_SIZE 15 #define UI_PETVIS_ITEM 16 #define UI_PETVIS_ITEMSWAP 17 #define UI_TRANSFORM_VISPET 18 const int PETVIS_DEFAULT_VIS_SLOT_SZIE = 2; #endifCode:#ifdef __5LAWAKES #define UI_ADJRANDOMOPT 30 #endif
MoverParam.cpp
Code:CMover::UpdateItemEx(unsigned char id, char cParam, __int64 iValue)Code:case UI_RANDOMOPTITEMID: pItemElem->SetRandomOptItemId(iValue); break; #ifdef __5LAWAKES case UI_ADJRANDOMOPT: pItemElem->SetnAdjItemId(iValue); break; #endif
RandomOption.cpp
Code:CRandomOptionProperty::InitializeRandomOption(__int64* pnRandomOptItemId)If you use __FASHION_COMBINECode:#ifdef __5LAWAKES *pnRandomOptItemId &= 0xFFFF0000000000FF; #else *pnRandomOptItemId &= 0xC0000000000000FF; #endif
Code:bool CRandomOptionProperty::MergeRandomOption(CItemElem* pItemElemMain, CItemElem* pItemElemDestroy)Code:#ifdef __5LAWAKES int nMainSize = GetDstSize(pItemElemMain->GetRandomOptItemId()); int nDestroySize = GetDstSize(pItemElemDestroy->GetRandomOptItemId()); #else int nMainSize = GetRandomOptionSize(pItemElemMain->GetRandomOptItemId()); int nDestroySize = GetRandomOptionSize(pItemElemDestroy->GetRandomOptItemId()); #endif-Code:#ifndef __5LAWAKES if (GetParam(pItemElemDestroy->GetRandomOptItemId(), i, &nDst, &nAdj)) SetParam(pItemElemMain->GetRandomOptItemIdPtr(), nDst, nAdj); #else if (GetDstAdj(pItemElemDestroy->GetRandomOptItemId(), pItemElemDestroy->GetnAdjItemId(), i, &nDst, &nAdj)) { SetDsts(pItemElemMain->GetRandomOptItemIdPtr(), i + nMainSize, nDst); SetAdjs(pItemElemMain->GetnAdjItemIdPtr(), i + nMainSize, nAdj); } #endif
Code:#ifdef __5LAWAKES #ifdef __WORLDSERVER void CRandomOptionProperty::GenDstAdj(CItemElem* pItemElem, int nRandomOptionKind, int nParts, bool noProtect) { __int64 nDstSet = 0; __int64 nAdjSet = 0; SetValues(&nDstSet, &nAdjSet, nRandomOptionKind, nParts); if (noProtect) { pItemElem->SetRandomOptItemId(nDstSet); pItemElem->SetnAdjItemId(nAdjSet); } else { pItemElem->SetNewRandomOptId(nDstSet); pItemElem->SetnNewAdjItemId(nAdjSet); } } void CRandomOptionProperty::SetValues(__int64* nDstSet, __int64* nAdjSet, int nRandomKind, int nParts) { __int64 nBonus = 0; byte nloop = 5; if(nRandomKind >= eBlessing) nloop = 3; for (int i = 0; i < nloop; i++) { nBonus = 0; RANDOM_OPTION* pRandomOption = DetermineRandomOptionDst(nRandomKind, nParts); nBonus = pRandomOption->nDst; nBonus = nBonus << ( 8 + (8 * i)); *nDstSet = *nDstSet | nBonus; nBonus = 0; short nAdj = DetermineRandomOptionAdj(pRandomOption, false); if (nAdj < 0) { nBonus |= 0x200; nBonus = nBonus | (-nAdj); } else nBonus = nBonus | nAdj; nBonus = nBonus << (10 * i); *nAdjSet = *nAdjSet | nBonus; } } #endif void CRandomOptionProperty::SetDsts(__int64* Dstset, byte ati, byte nDst) { __int64 wew = nDst; wew = wew << (8 + (ati * 8)); *Dstset = *Dstset | wew; } void CRandomOptionProperty::SetAdjs(__int64* Adjset, byte ati, short nAdj) { __int64 nAdjz = 0; if (nAdj < 0) { nAdjz |= 0x200; nAdjz = nAdjz | (-nAdj); } else { nAdjz = nAdjz | nAdj; } nAdjz = nAdjz << (10 * ati); *Adjset = *Adjset | nAdjz; } byte CRandomOptionProperty::GetDstSize(__int64 nDstList, bool Safe) { byte nSize = 0; if (!Safe) { bool bCheckedSafeFlag = false; bCheckedSafeFlag = IsCheckedSafeFlag(nDstList); if (bCheckedSafeFlag == true) { return nSize; } } __int64 i = 0xFF << 8; for (int j = 0; j < 5; j++) { if (nDstList & i) { nSize++; i = i << 8; } else return nSize; } return nSize; } byte CRandomOptionProperty::GetAdjSize(__int64 nAdjList) { byte nSize = 0; __int64 i = 0x3FF; for (int j = 0; j < 5; j++) { if (nAdjList & i) { nSize++; i = i << 10; } else return nSize; } return nSize; } void CRandomOptionProperty::ResetAdjs(__int64* wew) { *wew &= 0x0000000000000000; } BOOL CRandomOptionProperty::GetDstAdj(__int64 nDstId, __int64 nAdjId, int i, int* pnDst, int* pnAdj) { int nDst = static_cast<int>(nDstId >> (8 + (i * 8))); int nAdj = static_cast<int>(nAdjId >> (10 * i)); *pnAdj = nAdj & 0x1FF; if (nAdj & 0x200) *pnAdj = -*pnAdj; *pnDst = nDst & 0xFF; return TRUE; } #endif
RandomOption.h
Code:#ifdef __5LAWAKES #define MAX_RANDOM_OPTION 5 #else #define MAX_RANDOM_OPTION 3 #endif-Code:#ifdef __5LAWAKES #define _AWAKE_SAFE_FLAG 0x100000000000000 #else #define _AWAKE_SAFE_FLAG 0x2000000000000000 #endif
Code:class CRandomOptionPropertyCode:#ifdef __5LAWAKES public: void GenDstAdj(CItemElem* pItemElem, int nRandomOptionKind, int nParts, bool noProtect = true); void SetValues(__int64* nDstSet, __int64* nAdjSet, int nRandomKind, int nParts); void SetDsts(__int64* Dstset, byte ati, byte nDst); void SetAdjs(__int64* Adjset, byte ati, short nAdj); byte GetDstSize(__int64 nRandomOptDstId, bool Safe = true); byte GetAdjSize(__int64 nRandomOptAdjId); void ResetAdjs(__int64* pnRandomOptAdjId); BOOL GetDstAdj(__int64 nDstId, __int64 nAdjId, int i, int* pnDst, int* pnAdj); #endif
FuncTextCmd.cpp
Code:BOOL TextCmd_SetRandomOption(CScanner & s) { #ifdef __WORLDSERVER CUser* pUser = (CUser*)s.dwValue; CItemElem* pItemElem = pUser->m_Inventory.GetAt(0); if (pItemElem) { if (g_xRandomOptionProperty->GetRandomOptionKind(pItemElem) >= 0) { g_xRandomOptionProperty->InitializeRandomOption(pItemElem->GetRandomOptItemIdPtr()); #ifdef __5LAWAKES g_xRandomOptionProperty->ResetAdjs(pItemElem->GetnAdjItemIdPtr()); __int64 DstSet = 0, AdjSet = 0; #endif unsigned char nDst = 0; short nAdj = 0; byte nloopcnt = 0; nDst = s.GetNumber(); while (s.tok != FINISHED) { nAdj = s.GetNumber(); if (nDst < 1 || nDst > MAX_ADJPARAMARY){ pUser->AddText("You went over or under the required Dst amount"); break; } if (nAdj < -512 || nAdj > 512){ pUser->AddText("Max Adj = 512, Min adj = -512. Stop overflowing you hoe"); break; } #ifdef __5LAWAKES g_xRandomOptionProperty->SetDsts(&DstSet, nloopcnt, nDst); g_xRandomOptionProperty->SetAdjs(&AdjSet, nloopcnt, nAdj); #elseCode:BOOL TextCmd_GenRandomOption(CScanner & s) { #ifdef __WORLDSERVER CUser* pUser = (CUser*)s.dwValue; CItemElem* pItemElem = pUser->m_Inventory.GetAt(0); if (pItemElem) { int nRandomOptionKind = g_xRandomOptionProperty->GetRandomOptionKind(pItemElem); if (nRandomOptionKind >= 0) { #ifdef __AWAKENINGCOMMAND const unsigned int cost = 1000000; if (pUser->GetGold() < nAwakeCost){ pUser->AddText("Not enough Gold"); return false; } pUser->AddGold(-(nCost)); #endif g_xRandomOptionProperty->InitializeRandomOption(pItemElem->GetRandomOptItemIdPtr()); #ifdef __5LAWAKES g_xRandomOptionProperty->ResetAdjs(pItemElem->GetnAdjItemIdPtr()); g_xRandomOptionProperty->GenDstAdj(pItemElem, nRandomOptionKind, pItemElem->GetProp()->dwParts); #else g_xRandomOptionProperty->GenRandomOption(pItemElem->GetRandomOptItemIdPtr(), nRandomOptionKind, pItemElem->GetProp()->dwParts); pUser->UpdateItemEx((BYTE)(pItemElem->m_dwObjId), UI_RANDOMOPTITEMID, pItemElem->GetRandomOptItemId()); #endif } } #endif return true; }Code:BOOL TextCmd_InitializeRandomOption(CScanner & s) { #ifdef __WORLDSERVER CUser* pUser = (CUser*)s.dwValue; CItemElem* pItemElem = pUser->m_Inventory.GetAt(0); if (pItemElem) { int nRandomOptionKind = g_xRandomOptionProperty->GetRandomOptionKind(pItemElem); if (nRandomOptionKind >= 0) { #ifdef __5LAWAKES g_xRandomOptionProperty->ResetAdjs(pItemElem->GetnAdjItemIdPtr()); pUser->UpdateItemEx((BYTE)(pItemElem->m_dwObjId), UI_ADJRANDOMOPT, pItemElem->GetnAdjItemId()); #endif g_xRandomOptionProperty->InitializeRandomOption(pItemElem->GetRandomOptItemIdPtr()); pUser->UpdateItemEx((BYTE)(pItemElem->m_dwObjId), UI_RANDOMOPTITEMID, pItemElem->GetRandomOptItemId()); } } #endif return true; }
WndManager.cpp
Code:CWndMgr::PutAwakeningBlessing( CItemElem* pItemElem, CEditString* pEdit )Code:#ifdef __5LAWAKES byte nSize = g_xRandomOptionProperty->GetDstSize(pItemElem->GetRandomOptItemId()); #else int nSize = g_xRandomOptionProperty->GetRandomOptionSize( pItemElem->GetRandomOptItemId() ); #endif #ifdef __PROTECT_AWAKE bool bSafe = g_xRandomOptionProperty->IsCheckedSafeFlag(pItemElem->GetRandomOptItemId()); #ifndef __5LAWAKES if (bSafe) nSize = g_xRandomOptionProperty->GetViewRandomOptionSize(pItemElem->GetRandomOptItemId()); #endif #endif //__PROTECT_AWAKECode:#ifdef __5LAWAKES if (!g_xRandomOptionProperty->GetDstAdj(pItemElem->GetRandomOptItemId(), pItemElem->GetnAdjItemId(), i, &nDst, &nAdj)) #else if( !g_xRandomOptionProperty->GetParam( pItemElem->GetRandomOptItemId(), i, &nDst, &nAdj ) ) #endif
DPSrvr.cpp
Code:CDPSrvr::OnBlessednessCancel(CAr & ar, DPID dpidCache, DPID dpidUser, LPBYTE lpBuf, u_long uBufSize)-Code:g_xRandomOptionProperty->InitializeRandomOption(pItem->GetRandomOptItemIdPtr()); pUser->UpdateItemEx((BYTE)(pItem->m_dwObjId), UI_RANDOMOPTITEMID, pItem->GetRandomOptItemId()); #ifdef __5LAWAKES g_xRandomOptionProperty->ResetAdjs(pItem->GetnAdjItemIdPtr()); pUser->UpdateItemEx((BYTE)(pItem->m_dwObjId), UI_ADJRANDOMOPT, pItem->GetnAdjItemId()); #endif
Code:CDPSrvr::OnAwakening(CAr & ar, DPID dpidCache, DPID dpidUser, LPBYTE lpBuf, u_long uBufSize)-Code:} g_xRandomOptionProperty->InitializeRandomOption(pItem->GetRandomOptItemIdPtr()); #ifdef __5LAWAKES g_xRandomOptionProperty->ResetAdjs(pItem->GetnAdjItemIdPtr()); g_xRandomOptionProperty->GenDstAdj(pItem, nRandomOptionKind, pItem->GetProp()->dwParts); pUser->UpdateItemEx((BYTE)(pItem->m_dwObjId), UI_ADJRANDOMOPT, pItem->GetnAdjItemId()); #else g_xRandomOptionProperty->GenRandomOption(pItem->GetRandomOptItemIdPtr(), nRandomOptionKind, pItem->GetProp()->dwParts); #endif
Code:CDPSrvr::DoUseItemTarget_GenRandomOption(CUser* pUser, CItemElem* pTarget, int nKind, int nOk, int nMismatchKind, int nHasOption, const char* szOperation, const char* szReceive)Code:if ( #ifdef __5LAWAKES g_xRandomOptionProperty->GetDstSize(pTarget->GetRandomOptItemId(), false) > 0 #else g_xRandomOptionProperty->GetRandomOptionSize(pTarget->GetRandomOptItemId()) > 0 #endif #if __VER >= 12 // __J12_0 && (nKind != CRandomOptionProperty::eBlessing && nKind != CRandomOptionProperty::eEatPet) #endif )-Code:bool bCheckedSafeFlag = false; bCheckedSafeFlag = g_xRandomOptionProperty->IsCheckedSafeFlag(pTarget->GetRandomOptItemId()); if (bCheckedSafeFlag == true) { g_xRandomOptionProperty->ResetSafeFlag(pTarget->GetRandomOptItemIdPtr()); g_xRandomOptionProperty->InitializeRandomOption(pTarget->GetNewRandomOptionPtr()); #ifdef __5LAWAKES g_xRandomOptionProperty->ResetAdjs(pTarget->GetnNewAdjItemIdPtr()); g_xRandomOptionProperty->GenDstAdj(pTarget, nRandomOptionKind, pTarget->GetProp()->dwParts, false); #else g_xRandomOptionProperty->GenRandomOption(pTarget->GetNewRandomOptionPtr(), nRandomOptionKind, pTarget->GetProp()->dwParts, true); #endif TCHAR szNewOption[128]; ::memset(szNewOption, 0, sizeof(szNewOption)); ::_stprintf(szNewOption, "%I64d", pTarget->GetNewRandomOption()); g_DPSrvr.PutItemLog(pUser, "z", szNewOption, pTarget, 1); #ifdef __5LAWAKES pUser->SendNewRandomOption((BYTE)(pTarget->m_dwObjId), (DWORD)(pTarget->GetSerialNumber()), pTarget->GetNewRandomOption(), pTarget->GetnNewAdjItemId()); #else pUser->SendNewRandomOption((BYTE)(pTarget->m_dwObjId), (DWORD)(pTarget->GetSerialNumber()), pTarget->GetNewRandomOption()); #endif } else { g_xRandomOptionProperty->InitializeRandomOption(pTarget->GetRandomOptItemIdPtr()); #ifdef __5LAWAKES g_xRandomOptionProperty->ResetAdjs(pTarget->GetnAdjItemIdPtr()); g_xRandomOptionProperty->GenDstAdj(pTarget, nRandomOptionKind, pTarget->GetProp()->dwParts); #else g_xRandomOptionProperty->GenRandomOption(pTarget->GetRandomOptItemIdPtr(), nRandomOptionKind, pTarget->GetProp()->dwParts); #endif } #ifdef __5LAWAKES pUser->UpdateItemEx((BYTE)(pTarget->m_dwObjId), UI_ADJRANDOMOPT, pTarget->GetnAdjItemId()); #endif pUser->UpdateItemEx((BYTE)(pTarget->m_dwObjId), UI_RANDOMOPTITEMID, pTarget->GetRandomOptItemId())
Code:CDPSrvr::DoUseItemTarget_InitializeRandomOption(CUser* pUser, CItemElem* pTarget, int nKind, int nOk, int nError, const char* szOperation, const char* szRecv)Code:else { g_xRandomOptionProperty->InitializeRandomOption(pTarget->GetRandomOptItemIdPtr()); #ifdef __5LAWAKES g_xRandomOptionProperty->ResetAdjs(pTarget->GetnAdjItemIdPtr()); #endif }Code:#ifdef __5LAWAKES pUser->UpdateItemEx((BYTE)(pTarget->m_dwObjId), UI_ADJRANDOMOPT, pTarget->GetnAdjItemId()); #endif pUser->UpdateItemEx((BYTE)(pTarget->m_dwObjId), UI_RANDOMOPTITEMID, pTarget->GetRandomOptItemId());
WndAwakening.cpp
Code:CWndSelectAwakeCase::CWndSelectAwakeCase( )-Code:m_n64NewOption = 0; #ifdef __5LAWAKES m_nAdjOpt = 0; #endif
Code:CWndSelectAwakeCase::OutputOptionString( C2DRender* p2DRender, CItemElem* pItemElem, BOOL bNew )-Code:if (!bNew) { #ifdef __5LAWAKES nSize = g_xRandomOptionProperty->GetDstSize(pItemElem->GetRandomOptItemId()); #else nSize = g_xRandomOptionProperty->GetRandomOptionSize(pItemElem->GetRandomOptItemId()); #endif } else { #ifdef __5LAWAKES nSize = g_xRandomOptionProperty->GetDstSize(m_n64NewOption, false); #else nSize = g_xRandomOptionProperty->GetViewRandomOptionSize(m_n64NewOption); #endif } __int64 n64Options = 0; n64Options = ( bNew ? m_n64NewOption : pItemElem->GetRandomOptItemId()); #ifdef __5LAWAKES __int64 nAdjOptions = 0; nAdjOptions = (bNew ? m_nAdjOpt : pItemElem->GetnAdjItemId()); #endif CString str; int nDst = 0, nAdj = 0; for (int i = 0; i < nSize; ++i) { #ifdef __5LAWAKES if (!g_xRandomOptionProperty->GetDstAdj(n64Options, nAdjOptions, i, &nDst, &nAdj)) #else if (!g_xRandomOptionProperty->GetParam(n64Options, i, &nDst, &nAdj)) #endif continue;
Code:CWndSelectAwakeCase::SetData(BYTE byObjID, DWORD dwSerialNum, __int64 n64NewOption)Code:#ifdef __5LAWAKES void CWndSelectAwakeCase::SetData( BYTE byObjID, DWORD dwSerialNum, __int64 n64NewOption, __int64 nAdjOpt ) #else void CWndSelectAwakeCase::SetData(BYTE byObjID, DWORD dwSerialNum, __int64 n64NewOption) #endif { m_byObjID = byObjID; m_dwSerialNum = dwSerialNum; m_n64NewOption = n64NewOption; #ifdef __5LAWAKES m_nAdjOpt = nAdjOpt; #endif
WndAwakening.h
Code:CWndSelectAwakeCase : public CWndNeuzCode:#ifdef __5LAWAKES void SetData( BYTE byObjID, DWORD dwSerialNum, __int64 n64NewOption, __int64 nAdjOpt); #else void SetData(BYTE byObjID, DWORD dwSerialNum, __int64 n64NewOption); #endifCode:__int64 m_n64NewOption; #ifdef __5LAWAKES __int64 m_nAdjOpt; #endif
DPClient.cpp
Code:CDPClient::OnSafeAwakening(CAr& ar)Code:#ifdef __5LAWAKES __int64 nAdjOpt = 0; ar >> nAdjOpt; #endif if (!g_pPlayer) return; g_WndMng.m_pWndSelectAwakeCase = new CWndSelectAwakeCase; #ifdef __5LAWAKES g_WndMng.m_pWndSelectAwakeCase->SetData(byItemObjID, dwSerialNumber, n64NewRandomOption, nAdjOpt); #else g_WndMng.m_pWndSelectAwakeCase->SetData(byItemObjID, dwSerialNumber, n64NewRandomOption); #endif
User.h
Code:void SelectAwakeningValue( DWORD dwItemObjID, DWORD dwSerialNumber, BYTE bySelectFlag ); #ifdef __5LAWAKES void SendNewRandomOption(unsigned char id, DWORD dwSerialNumber, __int64 n64NewRandomOption, __int64 nAdjOpt); #else void SendNewRandomOption( unsigned char id, DWORD dwSerialNumber, __int64 n64NewRandomOption ); #endif
User.cpp
-Code:#ifdef __5LAWAKES void CUser::SendNewRandomOption(unsigned char id, DWORD dwSerialNumber, __int64 n64NewRandomOption, __int64 nAdjOpt) #else void CUser::SendNewRandomOption(unsigned char id, DWORD dwSerialNumber, __int64 n64NewRandomOption) #endif { if (IsDelete()) return; m_Snapshot.cb++; m_Snapshot.ar << GetId(); m_Snapshot.ar << SNAPSHOTTYPE_ITEM_SELECT_AWAKENING_VALUE; m_Snapshot.ar << id << dwSerialNumber << n64NewRandomOption; #ifdef __5LAWAKES m_Snapshot.ar << nAdjOpt; #endif }
Code:CUser::SelectAwakeningValue(DWORD dwItemObjID, DWORD dwSerialNumber, BYTE bySelectFlag)Code:#ifndef __5LAWAKES bRetValue = pItem->SelectRandomOption(bySelectFlag); //old way if (bRetValue == true) { UpdateItemEx((BYTE)(pItem->m_dwObjId), UI_RANDOMOPTITEMID, pItem->GetRandomOptItemId()); TCHAR szSelectValue[128]; ::memset(szSelectValue, 0, sizeof(szSelectValue)); if (bySelectFlag == 1) // _AWAKE_OLD_VALUE { ::_stprintf(szSelectValue, "SELECT _AWAKE_OLD_VALUE"); } else if (bySelectFlag == 2) // _AWAKE_NEW_VALUE { ::_stprintf(szSelectValue, "SELECT _AWAKE_NEW_VALUE"); } else { ::_stprintf(szSelectValue, "SELECT ERROR"); } g_DPSrvr.PutItemLog(this, "z", szSelectValue, pItem, 1); } #else if (bySelectFlag == 1) { pItem->SetNewRandomOptId(0); pItem->SetnNewAdjItemId(0); } else if (bySelectFlag == 2) { __int64 nNewOpt = (pItem->GetRandomOptItemId() & 0xF0000000000000FF) | pItem->GetNewRandomOption(); pItem->SetRandomOptItemId(nNewOpt); UpdateItemEx((BYTE)(pItem->m_dwObjId), UI_RANDOMOPTITEMID, nNewOpt); nNewOpt = pItem->GetnNewAdjItemId(); pItem->SetnAdjItemId(nNewOpt); UpdateItemEx((BYTE)(pItem->m_dwObjId), UI_ADJRANDOMOPT, nNewOpt); pItem->SetNewRandomOptId(0); pItem->SetnNewAdjItemId(0); } #endif
RandomOption.inc
Code:Awakening 0 0 0 0 100Code:Blessing 100 0 0 0 0Code:SystemPet 35 35 30 0 0Code:EatPet 100 0 0 0 0