- Mesaj
- 39
- Çözümler
- 4
- Beğeni
- 17
- Puan
- 424
- Ticaret Puanı
- 0
Merhaba arkadaşlar,
Filesimdeki warninglerin birçoğunu @Whistle 'ın warning çözümü videolarından destek alarak ve warezdeki fileslerin dosyalarıyla karşılaştırma yaparak çözdüm.
Sadece 2 adet kaldı. Onlar da gördüğüm kadarıyla sonradan eklenen guild flag fix'i ve uzaktan npc sistemindeki kodlardaki hatalardan kaynaklanıyor.
Warning aldığım satırların bulduğu kodların tamamı ise şu şekilde;
Çözüm konusunda yardımcı olacak arkadaşlara şimdiden teşekkürler
Filesimdeki warninglerin birçoğunu @Whistle 'ın warning çözümü videolarından destek alarak ve warezdeki fileslerin dosyalarıyla karşılaştırma yaparak çözdüm.
Sadece 2 adet kaldı. Onlar da gördüğüm kadarıyla sonradan eklenen guild flag fix'i ve uzaktan npc sistemindeki kodlardaki hatalardan kaynaklanıyor.
warningler:
char_state.cpp: In member function 'void {anonymous}::FuncFindChrForFlagBase::operator()(LPENTITY)':
char_state.cpp:151:38: warning: comparison of integer expressions of different signedness: 'DWORD' {aka 'unsigned int'} and 'long int' [-Wsign-compare]
151 | m_pkChr->GetGuild()->GetID() != pkAff->lApplyValue)
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~
shop_manager.cpp: In member function 'bool CShopManager::NPCAC(LPCHARACTER, LPCHARACTER, int)':
shop_manager.cpp:117:2: warning: 'pkShop' may be used uninitialized in this function [-Wmaybe-uninitialized]
117 | if (!pkShop)
| ^~
Warning aldığım satırların bulduğu kodların tamamı ise şu şekilde;
char_state.cpp:
class FuncFindChrForFlagBase
{
public:
FuncFindChrForFlagBase(LPCHARACTER pkChr) : m_pkChr(pkChr)
{
}
void operator () (LPENTITY ent)
{
if (!ent->IsType(ENTITY_CHARACTER))
return;
if (ent->IsObserverMode())
return;
LPCHARACTER pkChr = (LPCHARACTER) ent;
if (!pkChr->IsPC())
return;
CGuild * pkGuild = pkChr->GetGuild();
if (!pkGuild)
return;
#ifdef ENABLE_GUILD_FLAG_FIX
if (!m_pkChr || !m_pkChr->IsPC() || !m_pkChr->GetGuild())
return;
#endif
int iDist = DISTANCE_APPROX(pkChr->GetX()-m_pkChr->GetX(), pkChr->GetY()-m_pkChr->GetY());
if (iDist <= 500 &&
(pkChr->IsAffectFlag(AFF_WAR_FLAG1) ||
pkChr->IsAffectFlag(AFF_WAR_FLAG2) ||
pkChr->IsAffectFlag(AFF_WAR_FLAG3)))
{
CAffect * pkAff = pkChr->FindAffect(AFFECT_WAR_FLAG);
#ifdef ENABLE_GUILD_FLAG_FIX
sys_log(0, "FlagBase %s dist %d aff %p flag gid %d chr gid %u",
pkChr->GetName(), iDist, pkAff,
m_pkChr->GetGuild()->GetID(), pkChr->GetGuild()->GetID());
if (pkAff)
{
if (m_pkChr->GetGuild()->GetID() == pkGuild->GetID() &&
m_pkChr->GetGuild()->GetID() != pkAff->lApplyValue)
#else
sys_log(0, "FlagBase %s dist %d aff %p flag gid %d chr gid %u",
pkChr->GetName(), iDist, pkAff, m_pkChr->GetPoint(POINT_STAT),
pkChr->GetGuild()->GetID());
if (pkAff)
{
if ((DWORD) m_pkChr->GetPoint(POINT_STAT) == pkGuild->GetID() &&
m_pkChr->GetPoint(POINT_STAT) != pkAff->lApplyValue)
#endif
{
CWarMap * pMap = pkChr->GetWarMap();
BYTE idx;
if (!pMap || !pMap->GetTeamIndex(pkGuild->GetID(), idx))
return;
//if (pMap->IsFlagOnBase(idx))
{
BYTE idx_opp = idx == 0 ? 1 : 0;
#ifdef ENABLE_GUILD_FLAG_FIX
SendGuildWarScore(m_pkChr->GetGuild()->GetID(), pkAff->lApplyValue, 1);
#else
SendGuildWarScore(m_pkChr->GetPoint(POINT_STAT), pkAff->lApplyValue, 1);
#endif
//SendGuildWarScore(pkAff->lApplyValue, m_pkChr->GetPoint(POINT_STAT), -1);
pMap->ResetFlag();
//pMap->AddFlag(idx_opp);
//pkChr->RemoveAffect(AFFECT_WAR_FLAG);
char buf[256];
snprintf(buf, sizeof(buf), LC_TEXT("%s 길드가 %s 길드의 깃발을 빼앗았습니다!"), pMap->GetGuild(idx)->GetName(), pMap->GetGuild(idx_opp)->GetName());
pMap->Notice(buf);
}
}
}
}
}
LPCHARACTER m_pkChr;
};
shop_manager.cpp:
#ifdef ENABLE_UZAKTAN_NPC_SISTEMI
bool CShopManager::NPCAC(LPCHARACTER pkChr, LPCHARACTER pkChrShopKeeper, int iShopVnum)
{
if (pkChr->GetShopOwner() == pkChrShopKeeper)
return false;
if (pkChr->IsOpenSafebox() || pkChr->GetExchange() || pkChr->GetMyShop() || pkChr->IsCubeOpen())
{
pkChr->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("다른 거래창이 열린상태에서는 상점거래를 할수 가 없습니다."));
return false;
}
LPSHOP pkShop;
if (iShopVnum)
pkShop = Get(iShopVnum);
if (!pkShop)
{
sys_log(1, "SHOPAC: pkShop yok");
return false;
}
if (!iShopVnum)
{
sys_log(1, "SHOPAC: iShopVnum yok");
return false;
}
bool bOtherEmpire = false;
pkShop->AddGuest(pkChr, pkChrShopKeeper->GetVID(), bOtherEmpire);
pkChr->SetShopOwner(pkChrShopKeeper);
sys_log(0, "SHOPAC: START: %s", pkChr->GetName());
return true;
}
#endif
Çözüm konusunda yardımcı olacak arkadaşlara şimdiden teşekkürler