|
You last visited: Today at 08:37
Advertisement
5 line of awakening ?
Discussion on 5 line of awakening ? within the Flyff Private Server forum part of the Flyff category.
02/18/2019, 17:45
|
#1
|
elite*gold: 0
Join Date: Feb 2019
Posts: 8
Received Thanks: 1
|
5 line of awakening ?
anyone have a release for 5 line awakening ? if he can share with me i will be very happy
tnx!!
|
|
|
02/19/2019, 15:13
|
#2
|
elite*gold: 0
Join Date: Mar 2012
Posts: 1,947
Received Thanks: 255
|
Do you mean ?
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 CItemBase
Code:
#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;
#endif
Code:
#if __VER >= 11 // __SYS_IDENTIFY
ar >> m_iRandomOptItemId;
#ifdef __5LAWAKES
ar >> nAdjItemId;
#endif
Item.h
Code:
class CItemElem : public CItemBase
Code:
#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;
#endif
Code:
#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)
Code:
#ifdef __5LAWAKES
*pnRandomOptItemId &= 0xFFFF0000000000FF;
#else
*pnRandomOptItemId &= 0xC0000000000000FF;
#endif
If you use __FASHION_COMBINE
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 CRandomOptionProperty
Code:
#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);
#else
Code:
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_AWAKE
Code:
#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 CWndNeuz
Code:
#ifdef __5LAWAKES
void SetData( BYTE byObjID, DWORD dwSerialNum, __int64 n64NewOption, __int64 nAdjOpt);
#else
void SetData(BYTE byObjID, DWORD dwSerialNum, __int64 n64NewOption);
#endif
Code:
__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 100
Code:
Blessing 100 0 0 0 0
Code:
SystemPet 35 35 30 0 0
|
|
|
02/19/2019, 15:45
|
#3
|
elite*gold: 0
Join Date: Jan 2015
Posts: 183
Received Thanks: 702
|
Quote:
Originally Posted by Graphicscore
Do you mean ?
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 CItemBase
Code:
#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;
#endif
Code:
#if __VER >= 11 // __SYS_IDENTIFY
ar >> m_iRandomOptItemId;
#ifdef __5LAWAKES
ar >> nAdjItemId;
#endif
Item.h
Code:
class CItemElem : public CItemBase
Code:
#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;
#endif
Code:
#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)
Code:
#ifdef __5LAWAKES
*pnRandomOptItemId &= 0xFFFF0000000000FF;
#else
*pnRandomOptItemId &= 0xC0000000000000FF;
#endif
If you use __FASHION_COMBINE
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 CRandomOptionProperty
Code:
#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);
#else
Code:
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_AWAKE
Code:
#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 CWndNeuz
Code:
#ifdef __5LAWAKES
void SetData( BYTE byObjID, DWORD dwSerialNum, __int64 n64NewOption, __int64 nAdjOpt);
#else
void SetData(BYTE byObjID, DWORD dwSerialNum, __int64 n64NewOption);
#endif
Code:
__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 100
Code:
Blessing 100 0 0 0 0
Code:
SystemPet 35 35 30 0 0
|
Du hast gerade ohne Eigennutzen für jemanden 20 Minuten deiner wertvollen Zeit geopfert. Dafür hast du meinen Respekt.
|
|
|
Similar Threads
|
[Guide]CoEmuV2 Line 30 and line 34 error FIX *Changed Name*
02/26/2021 - CO2 PServer Guides & Releases - 57 Replies
CoEmu V2 Common 2 Error fixes
After you have followed one of these 3 guides
*ORIGINAL AMAZING RELEASE* CoEmuv2.Nano(5095) Source Code
GOOD VIDEO GUIDE Video+All Files+Source oF CoEmu v2
Setup Explained Guide (Pics) CoEmu v2 Source Setup
NONE OF THE ABOVE GUIDES ARE CREATED BY ME
|
5 Line Awakening
12/18/2017 - Flyff PServer Guides & Releases - 17 Replies
nope
|
5-Line Awakenings + Awakening Transfer
07/20/2015 - Flyff PServer Guides & Releases - 1 Replies
#CloseThread > Decided to sell.
|
Line in als Line Out nutzen
10/10/2010 - Technical Support - 9 Replies
Hi Leutz
Ich habe folgendes Problem
ich möchte meinen Line in(blau) als Line out (grün) nutzen
ist dies i-wie möglich?
wiso?
mein line out (grün) ist anscheinend kaputt da er keinen ton von sich gibt
|
All times are GMT +1. The time now is 08:41.
|
|