*Problemă/Întrebare: Cum imi dau seama din ce motiv pica serverul?
Tipologie server: -
*Resursă folosită:-
*ServerFiles utilizat:-
*Syserr:-
Poză:-
*Detalii suplimentare: O data la cateva ore, serverul cade / pica, fara motiv. Sau cel putin, nu stiu eu motivul.
Cum as putea afla de ce cade? In syserr apar doar erori care nu pun in pericol serverul ca sa dea crash.
Am auzit ceva despre un GDB (Game Debugger) care creaza un fisier game.core, dar nu am asa ceva.. ruleaza serverul pe FREEBSD 12.3 daca ajuta cu ceva.
Cum iti dai seama de crash core
- Z I C K
-

- Mesaje: 268
- Membru din: 26 Dec 2013, 20:11
- Regat: Jinno
- Aprecieri: 183
- Mulţumiri: 789
- Discord: Copiază ID
asta este in gdb game.core :
#0 ITEM_MANAGER::CreateDropItemVector (this=0xffffa664, pkChr=0x0,
pkKiller=0x344ea000, vec_item=...) at item_manager.cpp:848
#1 0x08182f92 in CInputMain::TargetInfoLoad (this=0x59c4021c, ch=0x344ea000,
c_pData=0x581ce8c0 ";4t\027\201\210\033w\037\002") at input_main.cpp:71
#2 0x08188654 in CInputMain::Analyze (this=0x59c4021c, d=0x59c40180,
bHeader=<optimized out>, c_pData=0x581ce8c0 ";4t\027\201\210\033w\037\002")
at input_main.cpp:3441
#3 0x0816fb2b in CInputProcessor::Process (this=0x59c4021c,
lpDesc=0x59c40180, c_pvOrig=0x581ce8c0, iBytes=69,
r_iBytesProceed=@0xffffa554: 0) at input.cpp:103
#4 0x08138de3 in DESC::ProcessInput (this=0x59c40180) at desc.cpp:313
#5 0x08297194 in io_loop (fdw=0x2913a280) at main.cpp:1072
#6 0x08297bc1 in idle () at main.cpp:949
#7 0x08299221 in main (argc=1, argv=0xffffdc5c) at main.cpp:610
#0 ITEM_MANAGER::CreateDropItemVector (this=0xffffa664, pkChr=0x0,
pkKiller=0x344ea000, vec_item=...) at item_manager.cpp:848
#1 0x08182f92 in CInputMain::TargetInfoLoad (this=0x59c4021c, ch=0x344ea000,
c_pData=0x581ce8c0 ";4t\027\201\210\033w\037\002") at input_main.cpp:71
#2 0x08188654 in CInputMain::Analyze (this=0x59c4021c, d=0x59c40180,
bHeader=<optimized out>, c_pData=0x581ce8c0 ";4t\027\201\210\033w\037\002")
at input_main.cpp:3441
#3 0x0816fb2b in CInputProcessor::Process (this=0x59c4021c,
lpDesc=0x59c40180, c_pvOrig=0x581ce8c0, iBytes=69,
r_iBytesProceed=@0xffffa554: 0) at input.cpp:103
#4 0x08138de3 in DESC::ProcessInput (this=0x59c40180) at desc.cpp:313
#5 0x08297194 in io_loop (fdw=0x2913a280) at main.cpp:1072
#6 0x08297bc1 in idle () at main.cpp:949
#7 0x08299221 in main (argc=1, argv=0xffffdc5c) at main.cpp:610
- Z I C K
-

- Mesaje: 268
- Membru din: 26 Dec 2013, 20:11
- Regat: Jinno
- Aprecieri: 183
- Mulţumiri: 789
- Discord: Copiază ID
Aici este functia CreateDropItemVector :
#ifdef __SEND_TARGET_INFO__
bool ITEM_MANAGER::CreateDropItemVector(LPCHARACTER pkChr, LPCHARACTER pkKiller, std::vector<LPITEM> & vec_item)
{
if (pkChr->IsPolymorphed() || pkChr->IsPC())
{
return false;
}
int iLevel = pkKiller->GetLevel();
BYTE bRank = pkChr->GetMobRank();
LPITEM item = NULL;
std::vector<CItemDropInfo>::iterator it = g_vec_pkCommonDropItem[bRank].begin();
while (it != g_vec_pkCommonDropItem[bRank].end())
{
const CItemDropInfo & c_rInfo = *(it++);
if (iLevel < c_rInfo.m_iLevelStart || iLevel > c_rInfo.m_iLevelEnd)
continue;
TItemTable * table = GetTable(c_rInfo.m_dwVnum);
if (!table)
continue;
item = NULL;
if (table->bType == ITEM_POLYMORPH)
{
if (c_rInfo.m_dwVnum == pkChr->GetPolymorphItemVnum())
{
item = CreateItem(c_rInfo.m_dwVnum, 1, 0, true);
if (item)
item->SetSocket(0, pkChr->GetRaceNum());
}
}
else
item = CreateItem(c_rInfo.m_dwVnum, 1, 0, true);
if (item) vec_item.push_back(item);
}
// Drop Item Group
{
itertype(m_map_pkDropItemGroup) it;
it = m_map_pkDropItemGroup.find(pkChr->GetRaceNum());
if (it != m_map_pkDropItemGroup.end())
{
typeof(it->second->GetVector()) v = it->second->GetVector();
for (DWORD i = 0; i < v.size(); ++i)
{
item = CreateItem(v.dwVnum, v.iCount, 0, true);
if (item)
{
if (item->GetType() == ITEM_POLYMORPH)
{
if (item->GetVnum() == pkChr->GetPolymorphItemVnum())
{
item->SetSocket(0, pkChr->GetRaceNum());
}
}
vec_item.push_back(item);
}
}
}
}
// MobDropItem Group
{
itertype(m_map_pkMobItemGroup) it;
it = m_map_pkMobItemGroup.find(pkChr->GetRaceNum());
if ( it != m_map_pkMobItemGroup.end() )
{
CMobItemGroup* pGroup = it->second;
// MOB_DROP_ITEM_BUG_FIX
// 20050805.myevan.MobDropItem ? ???? ?? ?? CMobItemGroup::GetOne() ??? ?? ?? ??
if (pGroup && !pGroup->IsEmpty())
{
const CMobItemGroup::SMobItemGroupInfo& info = pGroup->GetOne();
item = CreateItem(info.dwItemVnum, info.iCount, 0, true, info.iRarePct);
if (item) vec_item.push_back(item);
}
// END_OF_MOB_DROP_ITEM_BUG_FIX
}
}
// Level Item Group
{
itertype(m_map_pkLevelItemGroup) it;
it = m_map_pkLevelItemGroup.find(pkChr->GetRaceNum());
if ( it != m_map_pkLevelItemGroup.end() )
{
if ( it->second->GetLevelLimit() <= (DWORD)iLevel )
{
typeof(it->second->GetVector()) v = it->second->GetVector();
for ( DWORD i=0; i < v.size(); i++ )
{
DWORD dwVnum = v.dwVNum;
item = CreateItem(dwVnum, v.iCount, 0, true);
if ( item ) vec_item.push_back(item);
}
}
}
}
// BuyerTheitGloves Item Group
{
// by mhh ?? ??? ??? ?? drop ? ???? ??
if (pkKiller->GetPremiumRemainSeconds(PREMIUM_ITEM) > 0 ||
pkKiller->IsEquipUniqueGroup(UNIQUE_GROUP_DOUBLE_ITEM))
{
itertype(m_map_pkGloveItemGroup) it;
it = m_map_pkGloveItemGroup.find(pkChr->GetRaceNum());
if (it != m_map_pkGloveItemGroup.end())
{
typeof(it->second->GetVector()) v = it->second->GetVector();
for (DWORD i = 0; i < v.size(); ++i)
{
DWORD dwVnum = v.dwVnum;
item = CreateItem(dwVnum, v.iCount, 0, true);
if (item) vec_item.push_back(item);
}
}
}
}
// ??
if (pkChr->GetMobDropItemVnum())
{
itertype(m_map_dwEtcItemDropProb) it = m_map_dwEtcItemDropProb.find(pkChr->GetMobDropItemVnum());
if (it != m_map_dwEtcItemDropProb.end())
{
item = CreateItem(pkChr->GetMobDropItemVnum(), 1, 0, true);
if (item) vec_item.push_back(item);
}
}
if (pkChr->IsStone())
{
if (pkChr->GetDropMetinStoneVnum())
{
item = CreateItem(pkChr->GetDropMetinStoneVnum(), 1, 0, true);
if (item) vec_item.push_back(item);
}
}
return vec_item.size();
}
#endif#ifdef __SEND_TARGET_INFO__
bool ITEM_MANAGER::CreateDropItemVector(LPCHARACTER pkChr, LPCHARACTER pkKiller, std::vector<LPITEM> & vec_item)
{
//// // // //
if ((pkChr == NULL) || (pkKiller == NULL))
return false;
//// // // // //// // // // //// // // //
if (pkChr->IsPolymorphed() || pkChr->IsPC())
{
return false;
}
int iLevel = pkKiller->GetLevel();
BYTE bRank = pkChr->GetMobRank();
LPITEM item = NULL;
std::vector<CItemDropInfo>::iterator it = g_vec_pkCommonDropItem[bRank].begin();
while (it != g_vec_pkCommonDropItem[bRank].end())
{
const CItemDropInfo & c_rInfo = *(it++);
if (iLevel < c_rInfo.m_iLevelStart || iLevel > c_rInfo.m_iLevelEnd)
continue;
TItemTable * table = GetTable(c_rInfo.m_dwVnum);
if (!table)
continue;
item = NULL;
if (table->bType == ITEM_POLYMORPH)
{
if (c_rInfo.m_dwVnum == pkChr->GetPolymorphItemVnum())
{
item = CreateItem(c_rInfo.m_dwVnum, 1, 0, true);
if (item)
item->SetSocket(0, pkChr->GetRaceNum());
}
}
else
item = CreateItem(c_rInfo.m_dwVnum, 1, 0, true);
if (item) vec_item.push_back(item);
}
// Drop Item Group
{
itertype(m_map_pkDropItemGroup) it;
it = m_map_pkDropItemGroup.find(pkChr->GetRaceNum());
if (it != m_map_pkDropItemGroup.end())
{
typeof(it->second->GetVector()) v = it->second->GetVector();
for (DWORD i = 0; i < v.size(); ++i)
{
item = CreateItem(v.dwVnum, v.iCount, 0, true);
if (item)
{
if (item->GetType() == ITEM_POLYMORPH)
{
if (item->GetVnum() == pkChr->GetPolymorphItemVnum())
{
item->SetSocket(0, pkChr->GetRaceNum());
}
}
vec_item.push_back(item);
}
}
}
}
// MobDropItem Group
{
itertype(m_map_pkMobItemGroup) it;
it = m_map_pkMobItemGroup.find(pkChr->GetRaceNum());
if ( it != m_map_pkMobItemGroup.end() )
{
CMobItemGroup* pGroup = it->second;
// MOB_DROP_ITEM_BUG_FIX
// 20050805.myevan.MobDropItem ? ???? ?? ?? CMobItemGroup::GetOne() ??? ?? ?? ??
if (pGroup && !pGroup->IsEmpty())
{
const CMobItemGroup::SMobItemGroupInfo& info = pGroup->GetOne();
item = CreateItem(info.dwItemVnum, info.iCount, 0, true, info.iRarePct);
if (item) vec_item.push_back(item);
}
// END_OF_MOB_DROP_ITEM_BUG_FIX
}
}
// Level Item Group
{
itertype(m_map_pkLevelItemGroup) it;
it = m_map_pkLevelItemGroup.find(pkChr->GetRaceNum());
if ( it != m_map_pkLevelItemGroup.end() )
{
if ( it->second->GetLevelLimit() <= (DWORD)iLevel )
{
typeof(it->second->GetVector()) v = it->second->GetVector();
for ( DWORD i=0; i < v.size(); i++ )
{
DWORD dwVnum = v.dwVNum;
item = CreateItem(dwVnum, v.iCount, 0, true);
if ( item ) vec_item.push_back(item);
}
}
}
}
// BuyerTheitGloves Item Group
{
// by mhh ?? ??? ??? ?? drop ? ???? ??
if (pkKiller->GetPremiumRemainSeconds(PREMIUM_ITEM) > 0 ||
pkKiller->IsEquipUniqueGroup(UNIQUE_GROUP_DOUBLE_ITEM))
{
itertype(m_map_pkGloveItemGroup) it;
it = m_map_pkGloveItemGroup.find(pkChr->GetRaceNum());
if (it != m_map_pkGloveItemGroup.end())
{
typeof(it->second->GetVector()) v = it->second->GetVector();
for (DWORD i = 0; i < v.size(); ++i)
{
DWORD dwVnum = v.dwVnum;
item = CreateItem(dwVnum, v.iCount, 0, true);
if (item) vec_item.push_back(item);
}
}
}
}
// ??
if (pkChr->GetMobDropItemVnum())
{
itertype(m_map_dwEtcItemDropProb) it = m_map_dwEtcItemDropProb.find(pkChr->GetMobDropItemVnum());
if (it != m_map_dwEtcItemDropProb.end())
{
item = CreateItem(pkChr->GetMobDropItemVnum(), 1, 0, true);
if (item) vec_item.push_back(item);
}
}
if (pkChr->IsStone())
{
if (pkChr->GetDropMetinStoneVnum())
{
item = CreateItem(pkChr->GetDropMetinStoneVnum(), 1, 0, true);
if (item) vec_item.push_back(item);
}
}
return vec_item.size();
}
#endif- Z I C K
-

- Mesaje: 268
- Membru din: 26 Dec 2013, 20:11
- Regat: Jinno
- Aprecieri: 183
- Mulţumiri: 789
- Discord: Copiază ID
Cr3zy scrie: ↑08 Apr 2020, 20:56#ifdef __SEND_TARGET_INFO__ bool ITEM_MANAGER::CreateDropItemVector(LPCHARACTER pkChr, LPCHARACTER pkKiller, std::vector<LPITEM> & vec_item) { //// // // // if ((pkChr == NULL) || (pkKiller == NULL)) return false; //// // // // //// // // // //// // // // if (pkChr->IsPolymorphed() || pkChr->IsPC()) { return false; } int iLevel = pkKiller->GetLevel(); BYTE bRank = pkChr->GetMobRank(); LPITEM item = NULL; std::vector<CItemDropInfo>::iterator it = g_vec_pkCommonDropItem[bRank].begin(); while (it != g_vec_pkCommonDropItem[bRank].end()) { const CItemDropInfo & c_rInfo = *(it++); if (iLevel < c_rInfo.m_iLevelStart || iLevel > c_rInfo.m_iLevelEnd) continue; TItemTable * table = GetTable(c_rInfo.m_dwVnum); if (!table) continue; item = NULL; if (table->bType == ITEM_POLYMORPH) { if (c_rInfo.m_dwVnum == pkChr->GetPolymorphItemVnum()) { item = CreateItem(c_rInfo.m_dwVnum, 1, 0, true); if (item) item->SetSocket(0, pkChr->GetRaceNum()); } } else item = CreateItem(c_rInfo.m_dwVnum, 1, 0, true); if (item) vec_item.push_back(item); } // Drop Item Group { itertype(m_map_pkDropItemGroup) it; it = m_map_pkDropItemGroup.find(pkChr->GetRaceNum()); if (it != m_map_pkDropItemGroup.end()) { typeof(it->second->GetVector()) v = it->second->GetVector(); for (DWORD i = 0; i < v.size(); ++i) { item = CreateItem(v.dwVnum, v.iCount, 0, true); if (item) { if (item->GetType() == ITEM_POLYMORPH) { if (item->GetVnum() == pkChr->GetPolymorphItemVnum()) { item->SetSocket(0, pkChr->GetRaceNum()); } } vec_item.push_back(item); } } } } // MobDropItem Group { itertype(m_map_pkMobItemGroup) it; it = m_map_pkMobItemGroup.find(pkChr->GetRaceNum()); if ( it != m_map_pkMobItemGroup.end() ) { CMobItemGroup* pGroup = it->second; // MOB_DROP_ITEM_BUG_FIX // 20050805.myevan.MobDropItem ? ???? ?? ?? CMobItemGroup::GetOne() ??? ?? ?? ?? if (pGroup && !pGroup->IsEmpty()) { const CMobItemGroup::SMobItemGroupInfo& info = pGroup->GetOne(); item = CreateItem(info.dwItemVnum, info.iCount, 0, true, info.iRarePct); if (item) vec_item.push_back(item); } // END_OF_MOB_DROP_ITEM_BUG_FIX } } // Level Item Group { itertype(m_map_pkLevelItemGroup) it; it = m_map_pkLevelItemGroup.find(pkChr->GetRaceNum()); if ( it != m_map_pkLevelItemGroup.end() ) { if ( it->second->GetLevelLimit() <= (DWORD)iLevel ) { typeof(it->second->GetVector()) v = it->second->GetVector(); for ( DWORD i=0; i < v.size(); i++ ) { DWORD dwVnum = v.dwVNum; item = CreateItem(dwVnum, v.iCount, 0, true); if ( item ) vec_item.push_back(item); } } } } // BuyerTheitGloves Item Group { // by mhh ?? ??? ??? ?? drop ? ???? ?? if (pkKiller->GetPremiumRemainSeconds(PREMIUM_ITEM) > 0 || pkKiller->IsEquipUniqueGroup(UNIQUE_GROUP_DOUBLE_ITEM)) { itertype(m_map_pkGloveItemGroup) it; it = m_map_pkGloveItemGroup.find(pkChr->GetRaceNum()); if (it != m_map_pkGloveItemGroup.end()) { typeof(it->second->GetVector()) v = it->second->GetVector(); for (DWORD i = 0; i < v.size(); ++i) { DWORD dwVnum = v.dwVnum; item = CreateItem(dwVnum, v.iCount, 0, true); if (item) vec_item.push_back(item); } } } } // ?? if (pkChr->GetMobDropItemVnum()) { itertype(m_map_dwEtcItemDropProb) it = m_map_dwEtcItemDropProb.find(pkChr->GetMobDropItemVnum()); if (it != m_map_dwEtcItemDropProb.end()) { item = CreateItem(pkChr->GetMobDropItemVnum(), 1, 0, true); if (item) vec_item.push_back(item); } } if (pkChr->IsStone()) { if (pkChr->GetDropMetinStoneVnum()) { item = CreateItem(pkChr->GetDropMetinStoneVnum(), 1, 0, true); if (item) vec_item.push_back(item); } } return vec_item.size(); } #endif
item_manager.cpp: In member function 'bool ITEM_MANAGER::CreateDropItemVector(CH ARACTER*, CHARACTER*, std::vector<CItem*, std::allocator<CItem*> >&)': item_manager.cpp:906: error: 'const class std::vector<CDropItemGroup::SDropItemG roupInfo, std::allocator<CDropItemGroup::SDropItemGroupInfo> >' has no member na med 'dwVnum' item_manager.cpp:906: error: 'const class std::vector<CDropItemGroup::SDropItemG roupInfo, std::allocator<CDropItemGroup::SDropItemGroupInfo> >' has no member na med 'iCount' item_manager.cpp:959: error: 'const class std::vector<CLevelItemGroup::SLevelIte mGroupInfo, std::allocator<CLevelItemGroup::SLevelItemGroupInfo> >' has no membe r named 'dwVNum' item_manager.cpp:960: error: 'const class std::vector<CLevelItemGroup::SLevelIte mGroupInfo, std::allocator<CLevelItemGroup::SLevelItemGroupInfo> >' has no membe r named 'iCount' item_manager.cpp:983: error: 'const class std::vector<CBuyerThiefGlovesItemGroup ::SThiefGroupInfo, std::allocator<CBuyerThiefGlovesItemGroup::SThiefGroupInfo> > ' has no member named 'dwVnum' item_manager.cpp:984: error: 'const class std::vector<CBuyerThiefGlovesItemGroup ::SThiefGroupInfo, std::allocator<CBuyerThiefGlovesItemGroup::SThiefGroupInfo> > ' has no member named 'iCount'
In sursa.
- Z I C K
-

- Mesaje: 268
- Membru din: 26 Dec 2013, 20:11
- Regat: Jinno
- Aprecieri: 183
- Mulţumiri: 789
- Discord: Copiază ID
Am pus, am compilat. Am urcat game pe server, astept sa vad daca o sa mai pice.Cr3zy scrie: ↑08 Apr 2020, 21:02 Nu da paste la tot codul pune doar verificare pe care am pus oCod: Selectaţi tot
if ((pkChr == NULL) || (pkKiller == NULL)) return false;
Multumesc mult!
- Ionuţ M.
-

- Mesaje: 2680
- Membru din: 28 Noi 2015, 22:02
- Aprecieri: 170
- Mulţumiri: 12723
- Rezolvări prob.: 2
- Discord: Copiază ID
- Contact:
Arhivat.
-
- Informaţie
-
Cine este conectat
Utilizatori ce ce navighează pe acest forum: Niciun utilizator înregistrat și 74 vizitatori

