Quote:
Originally Posted by Offspringfan1234
Hm, did you code it yourself or do you have a link for me as reference? If you did it yourself you could post some of the code or write it to me via pm. Then I'll try to check it in the next days.
If its from a release then just post the link and your sourcecode :)
|
I just copy and paste I think the code is from the Origin flyff define as _INFO_DROP Credits to Saley for the release & Snowers #FR Dev
Download Link
I think there is a different code here in the DPSrvr.cpp
*JUST FOR COMPARING*
Here's my Lottery code
#ifdef __SYS_LOTTERY
void CDPSrvr::OnRouletteStart(CAr & ar, DPID dpidCache, DPID dpidUser, LPBYTE, u_long)
{
CUser *pUser = g_UserMng.GetUser(dpidCache,dpidUser);
if( IsInvalidObj(pUser) )
return;
if( !pUser->CanUseRoulette() )
return;
pUser->AddRouletteStart();
}
void CDPSrvr::OnRouletteInit(CAr & ar, DPID dpidCache, DPID dpidUser, LPBYTE, u_long)
{
CUser *pUser = g_UserMng.GetUser(dpidCache,dpidUser);
if( IsInvalidObj(pUser) )
return;
if( !pUser->CanUseRoulette() )
{
CTimeSpan tsNext = pUser->GetNextRouletteUseTime() - CTime::GetCurrentTime();
CString strError;
strError.Format("You can use the roulette again in %s", tsNext.Format("%D days, %H hours and %M Minutes"));
pUser->AddText(strError);
return;
}
pUser->AddRouletteInit();
}
void CDPSrvr::OnRouletteEnd(CAr & ar, DPID dpidCache, DPID dpidUser, LPBYTE, u_long)
{
CUser *pUser = g_UserMng.GetUser(dpidCache,dpidUser);
if( IsInvalidObj(pUser) )
return;
if( !pUser->CanUseRoulette() )
return;
DWORD dwItemId = pUser->GetRouletteWin();
if( !prj.GetItemProp(dwItemId) )
return;
CItemElem itemElem;
itemElem.m_dwItemId = dwItemId;
itemElem.m_nItemNum = 1;
itemElem.SetFlag(2);
itemElem.SetSerialNumber();
if( pUser->m_Inventory.IsFull(&itemElem,prj.GetItemProp(dwIt emId),1) )
{
pUser->AddDefinedText(TID_GAME_LACKSPACE);
pUser->SetRouletteWin(NULL_ID);
return;
}
pUser->CreateItem(&itemElem);
pUser->EndRoulette();
}
void CDPSrvr::OnScratchCardInit(CAr & ar, DPID dpidCache, DPID dpidUser, LPBYTE, u_long)
{
CUser *pUser = g_UserMng.GetUser(dpidCache,dpidUser);
if( IsInvalidObj(pUser) )
return;
OBJID objidScratchCard;
CItemElem *pScratchElem = NULL;
ar >> objidScratchCard;
pScratchElem = pUser->m_Inventory.GetAtId(objidScratchCard);
if( !pScratchElem )
return;
if( pScratchElem->GetProp()->dwItemKind3 != IK3_SCRATCH )
return;
pUser->InitScratchCard(pScratchElem->m_dwItemId);
pUser->RemoveItem((BYTE)objidScratchCard,1);
}
void CDPSrvr::OnScratchCardGet(CAr & ar, DPID dpidCache, DPID dpidUser, LPBYTE, u_long)
{
CUser *pUser = g_UserMng.GetUser(dpidCache,dpidUser);
if( IsInvalidObj(pUser) )
return;
DWORD dwItemId;
DWORD dwCount;
int nIndex;
ar >> nIndex;
if( pUser->GetScratchCardWin(&dwItemId,&dwCount,nIndex) )
{
CItemElem itemElem;
itemElem.m_dwItemId = dwItemId;
itemElem.m_nItemNum = dwCount;
itemElem.SetFlag(2);
itemElem.SetSerialNumber();
if( pUser->m_Inventory.IsFull(&itemElem,itemElem.GetProp(),( short)dwCount) )
{
g_dpDBClient.SendQueryPostMail(pUser->m_idPlayer,0,itemElem,0,"Lottery","Your scratch card win!");
}else
{
pUser->CreateItem(&itemElem);
}
pUser->SetScratchCardWin(NULL_ID,NULL_ID,nIndex);
}
}
#endif
Origin Source Code for Lottery
#ifdef __SYS_LOTTERY
void CDPSrvr::OnRouletteStart(CAr & ar, DPID dpidCache, DPID dpidUser, LPBYTE, u_long)
{
CUser *pUser = g_UserMng.GetUser(dpidCache,dpidUser);
if( IsInvalidObj(pUser) )
return;
if( !pUser->CanUseRoulette() )
return;
pUser->AddRouletteStart();
}
void CDPSrvr::OnRouletteInit(CAr & ar, DPID dpidCache, DPID dpidUser, LPBYTE, u_long)
{
CUser *pUser = g_UserMng.GetUser(dpidCache,dpidUser);
if( IsInvalidObj(pUser) )
return;
if( !pUser->CanUseRoulette() )
{
CTimeSpan tsNext = pUser->GetNextRouletteUseTime() - CTime::GetCurrentTime();
CString strError;
strError.Format("Vous pouvez ?nouveau tourner la roue dans %s", tsNext.Format("%D jours, %H heures et %M Minutes"));
pUser->AddText(strError);
return;
}
pUser->AddRouletteInit();
}
void CDPSrvr::OnRouletteEnd(CAr & ar, DPID dpidCache, DPID dpidUser, LPBYTE, u_long)
{
try{
CUser *pUser = g_UserMng.GetUser(dpidCache,dpidUser);
if( IsInvalidObj(pUser) )
return;
if( !pUser->CanUseRoulette() )
return;
DWORD dwItemId = pUser->GetRouletteWin();
if( !prj.GetItemProp(dwItemId) )
return;
CItemElem itemElem;
itemElem.m_dwItemId = dwItemId;
itemElem.m_nItemNum = 1;
itemElem.SetFlag(2);
itemElem.SetSerialNumber();
if( pUser->m_Inventory.IsFull(&itemElem,prj.GetItemProp(dwIt emId),1) )
{
pUser->AddDefinedText(TID_GAME_LACKSPACE);
pUser->SetRouletteWin(NULL_ID);
return;
}
pUser->CreateItem(&itemElem);
pUser->EndRoulette();
}
catch(...)
{
Error("Une erreur s'est produite avec la fonction OnRouletteEnd");
}
}
void CDPSrvr::OnScratchCardInit(CAr & ar, DPID dpidCache, DPID dpidUser, LPBYTE, u_long)
{
try{
CUser *pUser = g_UserMng.GetUser(dpidCache,dpidUser);
if( IsInvalidObj(pUser) )
return;
OBJID objidScratchCard;
CItemElem *pScratchElem = NULL;
ar >> objidScratchCard;
pScratchElem = pUser->m_Inventory.GetAtId(objidScratchCard);
if( !pScratchElem )
return;
if( pScratchElem->GetProp()->dwItemKind3 != IK3_SCRATCH )
return;
pUser->InitScratchCard(pScratchElem->m_dwItemId);
pUser->RemoveItem((BYTE)objidScratchCard,1);
}
catch(...)
{
Error("Une erreur s'est produite avec la fonction OnScratchCardInit");
}
}
void CDPSrvr::OnScratchCardGet(CAr & ar, DPID dpidCache, DPID dpidUser, LPBYTE, u_long)
{
try{
CUser *pUser = g_UserMng.GetUser(dpidCache,dpidUser);
if( IsInvalidObj(pUser) )
return;
DWORD dwItemId;
DWORD dwCount;
int nIndex;
ar >> nIndex;
if( pUser->GetScratchCardWin(&dwItemId,&dwCount,nIndex) )
{
CItemElem itemElem;
itemElem.m_dwItemId = dwItemId;
itemElem.m_nItemNum = dwCount;
itemElem.SetFlag(2);
itemElem.SetSerialNumber();
if( pUser->m_Inventory.IsFull(&itemElem,itemElem.GetProp(),( short)dwCount) )
{
g_dpDBClient.SendQueryPostMail(pUser->m_idPlayer,0,itemElem,0,"Lotterie","Vos gains !");
}else
{
pUser->CreateItem(&itemElem);
}
pUser->SetScratchCardWin(NULL_ID,NULL_ID,nIndex);
}
}
catch(...)
{
Error("Une erreur s'est produite avec la fonction OnScratchCardGet");
}
}
#endif
_INFO_DROP
#ifdef __INFO_DROP
void CDPSrvr::OnInfoDrop( CAr & ar, DPID dpidCache, DPID dpidUser, LPBYTE lpBuf, u_long uBufSize )
{
try{
CUser* pUser = g_UserMng.GetUser( dpidCache, dpidUser );
if( IsValidObj( pUser ) )
{
DWORD dwID;
ar >> dwID;
if( dwID == NULL_ID)
return;
MoverProp* pMover = prj.GetMoverProp( dwID );
if( !pMover)
return;
vector<t_info> info;
size_t nSize = 0;
for( vector<t_info>::const_iterator it = CInfoDrop::GetInstance()->GetInfoDrop().begin(); it != CInfoDrop::GetInstance()->GetInfoDrop().end(); ++it )
{
if( dwID == it->dwID )
{
t_info tmp;
memset( &tmp, 0, sizeof( tmp ) );
tmp.dwID = it->dwID;
tmp.dwIndex = it->dwIndex;
tmp.dwProbability = it->dwProbability;
info.push_back( tmp );
nSize++;
}
}
if( info.size() > 0 && info.size() < 80 )
pUser->AddInfoDrop( info, nSize );
info.clear();
}
}
catch(...)
{
Error("Une erreur s'est produite avec la fonction OnInfoDrop");
}
}
#endif //__INFO_DROP
I there something to change? or let say compatible? sorry I've got not Idea about this thing