Im add Roulette system of GOW ERENDORA but complie erro , help me fix pls
problem
Full lottery.cpp
f:\1Makegame\flyff\Source\WORLDSERVER\Lottery.cpp( 41): error C2440: 'initializing' : cannot convert from 'std::_Tree<_Traits>::iterator' to 'std::_Tree<_Traits>::iterator'
with
[
_Traits=std::_Tmap_traits<std::string,int,std::les s<std::string>,std::allocator<std::pair<const std::string,int>>,false>
]
and
[
_Traits=std::_Tmap_traits<CString,int,std::less<CS tring>,std::allocator<std::pair<const CString,int>>,false>
]
with
[
_Traits=std::_Tmap_traits<std::string,int,std::les s<std::string>,std::allocator<std::pair<const std::string,int>>,false>
]
and
[
_Traits=std::_Tmap_traits<CString,int,std::less<CS tring>,std::allocator<std::pair<const CString,int>>,false>
]
problem
if( nIdx < 12 )
{
//m_arPriceList[nIdx].dwItemId = CScript::m_defines.find(s.Token).second;
map<CString,int>::iterator it = CScript::m_defines.find(s.token);
m_arPriceList[nIdx].dwItemId = it->second;
dwEntireProb += s.GetNumber();
m_arPriceList[nIdx++].dwProbability = dwEntireProb;
}
{
//m_arPriceList[nIdx].dwItemId = CScript::m_defines.find(s.Token).second;
map<CString,int>::iterator it = CScript::m_defines.find(s.token);
m_arPriceList[nIdx].dwItemId = it->second;
dwEntireProb += s.GetNumber();
m_arPriceList[nIdx++].dwProbability = dwEntireProb;
}
{
pPrice = new SCRATCHCARDPRICE();
map<CString, int>::iterator it = CScript::m_defines.find(s.token);
pPrice->dwItemId = it->second;
pPrice->nItemCount = (short)s.GetNumber();
pPrice->dwProbability = (dwEntireProb += s.GetNumber());
vecPrices.push_back(pPrice);
s.GetToken_NoDef();
}
pPrice = new SCRATCHCARDPRICE();
map<CString, int>::iterator it = CScript::m_defines.find(s.token);
pPrice->dwItemId = it->second;
pPrice->nItemCount = (short)s.GetNumber();
pPrice->dwProbability = (dwEntireProb += s.GetNumber());
vecPrices.push_back(pPrice);
s.GetToken_NoDef();
}
Full lottery.cpp
#include "stdafx.h"
#ifdef __SYS_LOTTERY
#include "Lottery.h"
CRoulette::CRoulette()
{
memset(m_arPriceList,0xff,sizeof(m_arPriceList));
m_nDaysNext = 1;
}
CRoulette *CRoulette::Instance()
{
static CRoulette ins;
return &ins;
}
BOOL CRoulette::Load()
{
CScript s;
if( !s.Load("Roulette.inc") )
{
Error("Roulette.inc - file not found");
return FALSE;
}
s.GetToken();
while( s.tok != FINISHED )
{
if( s.Token == "PRICE_LIST" )
{
s.GetToken(); // {
int nIdx = 0;
DWORD dwEntireProb = 0;
s.GetToken_NoDef();
while( s.Token != "}" )
{
if( nIdx < 12 )
{
//m_arPriceList[nIdx].dwItemId = CScript::m_defines.find(s.Token).second;
map<CString,int>::iterator it = CScript::m_defines.find(s.token);
m_arPriceList[nIdx].dwItemId = it->second;
dwEntireProb += s.GetNumber();
m_arPriceList[nIdx++].dwProbability = dwEntireProb;
}
s.GetToken_NoDef();
}
if( nIdx != 12 )
Error("CRoulette::Load more or less than 12 prices");
}else if( s.Token == "DAYS_NEXT" )
{
m_nDaysNext = s.GetNumber();
}
s.GetToken();
}
return TRUE;
}
void CRoulette::SerializePriceList(CAr & ar)
{
for( int i = 0; i < 12; ++i )
ar << m_arPriceList[i].dwItemId;
}
DWORD CRoulette::GetRandomPrice()
{
DWORD dwRan = xRandom(10000);
for( int i = 0; i < 12; ++i )
{
if( dwRan <= m_arPriceList[i].dwProbability )
return m_arPriceList[i].dwItemId;
}
return NULL_ID;
}
CScratchCard::CScratchCard()
{
m_mapPriceList.clear();
}
CScratchCard::~CScratchCard()
{
for( map<DWORD,vector<SCRATCHCARDPRICE*> >::iterator it = m_mapPriceList.begin(); it != m_mapPriceList.end(); ++it )
{
while( !it->second.empty() )
{
SAFE_DELETE(it->second.back());
it->second.pop_back();
}
}
m_mapPriceList.clear();
}
CScratchCard *CScratchCard::Instance()
{
static CScratchCard ins;
return &ins;
}
BOOL CScratchCard::Load()
{
CScript s;
if( s.Load("ScratchCard.inc") == FALSE )
return FALSE;
DWORD dwProbability = 0;
SCRATCHCARDPRICE *pPrice = NULL;
s.GetToken();
while( s.tok != FINISHED )
{
if( s.Token == "ScratchIt" )
{
DWORD dwItemId = s.GetNumber();
DWORD dwEntireProb = 0;
vector<SCRATCHCARDPRICE*> vecPrices;
s.GetToken(); // {
s.GetToken_NoDef();
while( *s.token != '}' )
{
pPrice = new SCRATCHCARDPRICE();
map<CString, int>::iterator it = CScript::m_defines.find(s.token);
pPrice->dwItemId = it->second;
pPrice->nItemCount = (short)s.GetNumber();
pPrice->dwProbability = (dwEntireProb += s.GetNumber());
vecPrices.push_back(pPrice);
s.GetToken_NoDef();
}
m_mapPriceList.insert(make_pair(dwItemId,vecPrices ));
}
s.GetToken();
}
return TRUE;
}
void CScratchCard::GetRandomScratchPrice(DWORD dwScratchId, PDWORD pPrice, PDWORD pCount)
{
map<DWORD,vector<SCRATCHCARDPRICE*> >::iterator it = m_mapPriceList.find(dwScratchId);
if( it == m_mapPriceList.end() )
return;
for( int i = 0; i < 2; ++i )
{
DWORD dwRan = xRandom(10000);
for( unsigned j = 0; j < it->second.size(); ++j )
{
if( dwRan <= it->second[j]->dwProbability )
{
pPrice[i] = it->second[j]->dwItemId;
pCount[i] = it->second[j]->nItemCount;
break;
}
}
}
}
#endif // __SYS_LOTTERY
#ifdef __SYS_LOTTERY
#include "Lottery.h"
CRoulette::CRoulette()
{
memset(m_arPriceList,0xff,sizeof(m_arPriceList));
m_nDaysNext = 1;
}
CRoulette *CRoulette::Instance()
{
static CRoulette ins;
return &ins;
}
BOOL CRoulette::Load()
{
CScript s;
if( !s.Load("Roulette.inc") )
{
Error("Roulette.inc - file not found");
return FALSE;
}
s.GetToken();
while( s.tok != FINISHED )
{
if( s.Token == "PRICE_LIST" )
{
s.GetToken(); // {
int nIdx = 0;
DWORD dwEntireProb = 0;
s.GetToken_NoDef();
while( s.Token != "}" )
{
if( nIdx < 12 )
{
//m_arPriceList[nIdx].dwItemId = CScript::m_defines.find(s.Token).second;
map<CString,int>::iterator it = CScript::m_defines.find(s.token);
m_arPriceList[nIdx].dwItemId = it->second;
dwEntireProb += s.GetNumber();
m_arPriceList[nIdx++].dwProbability = dwEntireProb;
}
s.GetToken_NoDef();
}
if( nIdx != 12 )
Error("CRoulette::Load more or less than 12 prices");
}else if( s.Token == "DAYS_NEXT" )
{
m_nDaysNext = s.GetNumber();
}
s.GetToken();
}
return TRUE;
}
void CRoulette::SerializePriceList(CAr & ar)
{
for( int i = 0; i < 12; ++i )
ar << m_arPriceList[i].dwItemId;
}
DWORD CRoulette::GetRandomPrice()
{
DWORD dwRan = xRandom(10000);
for( int i = 0; i < 12; ++i )
{
if( dwRan <= m_arPriceList[i].dwProbability )
return m_arPriceList[i].dwItemId;
}
return NULL_ID;
}
CScratchCard::CScratchCard()
{
m_mapPriceList.clear();
}
CScratchCard::~CScratchCard()
{
for( map<DWORD,vector<SCRATCHCARDPRICE*> >::iterator it = m_mapPriceList.begin(); it != m_mapPriceList.end(); ++it )
{
while( !it->second.empty() )
{
SAFE_DELETE(it->second.back());
it->second.pop_back();
}
}
m_mapPriceList.clear();
}
CScratchCard *CScratchCard::Instance()
{
static CScratchCard ins;
return &ins;
}
BOOL CScratchCard::Load()
{
CScript s;
if( s.Load("ScratchCard.inc") == FALSE )
return FALSE;
DWORD dwProbability = 0;
SCRATCHCARDPRICE *pPrice = NULL;
s.GetToken();
while( s.tok != FINISHED )
{
if( s.Token == "ScratchIt" )
{
DWORD dwItemId = s.GetNumber();
DWORD dwEntireProb = 0;
vector<SCRATCHCARDPRICE*> vecPrices;
s.GetToken(); // {
s.GetToken_NoDef();
while( *s.token != '}' )
{
pPrice = new SCRATCHCARDPRICE();
map<CString, int>::iterator it = CScript::m_defines.find(s.token);
pPrice->dwItemId = it->second;
pPrice->nItemCount = (short)s.GetNumber();
pPrice->dwProbability = (dwEntireProb += s.GetNumber());
vecPrices.push_back(pPrice);
s.GetToken_NoDef();
}
m_mapPriceList.insert(make_pair(dwItemId,vecPrices ));
}
s.GetToken();
}
return TRUE;
}
void CScratchCard::GetRandomScratchPrice(DWORD dwScratchId, PDWORD pPrice, PDWORD pCount)
{
map<DWORD,vector<SCRATCHCARDPRICE*> >::iterator it = m_mapPriceList.find(dwScratchId);
if( it == m_mapPriceList.end() )
return;
for( int i = 0; i < 2; ++i )
{
DWORD dwRan = xRandom(10000);
for( unsigned j = 0; j < it->second.size(); ++j )
{
if( dwRan <= it->second[j]->dwProbability )
{
pPrice[i] = it->second[j]->dwItemId;
pCount[i] = it->second[j]->nItemCount;
break;
}
}
}
}
#endif // __SYS_LOTTERY