[FIX] PM flooder kick hack Magyarul.

Indította Samurai, 2016-03-02, 11:01:18

2016-03-02, 11:01:18 Utolsó szerkesztés: 2016-03-02, 11:03:02 Szerző: gterx
Sziasztok mivel sokan nem tudják értelmezni a disco által kirakott pm hack védelmet ezért gondoltam elkészítem a Magyar leírást.

Char.h:

Keressetek rá erre:

class CHARACTER : public CEntity, public CFSM, public CHorseRider

Adjátok alá ezt:

public:
void ClearPMCounter(void)       { m_iPMCounter = 0; }
void IncreasePMCounter(void)    { m_iPMCounter++; }
void SetLastPMPulse(void);
int  GetPMCounter(void)   const { return m_iPMCounter; }
int  GetLastPMPulse(void) const { return m_iLastPMPulse; }

protected:
int m_iLastPMPulse;
int m_iPMCounter;


Így nézzen ki:

class CHARACTER : public CEntity, public CFSM, public CHorseRider
{
public:
void ClearPMCounter(void)       { m_iPMCounter = 0; }
void IncreasePMCounter(void)    { m_iPMCounter++; }
void SetLastPMPulse(void);
int  GetPMCounter(void)   const { return m_iPMCounter; }
int  GetLastPMPulse(void) const { return m_iLastPMPulse; }

protected:
int m_iLastPMPulse;
int m_iPMCounter;


char.cpp

Fájl végére beilleszted ezt:

void CHARACTER::SetLastPMPulse(void)
{
      m_iLastPMPulse = thecore_pulse() + 25;
}


Rákeresel erre:

CEntity::Initialize(ENTITY_CHARACTER);

Alá illeszted ezt:

m_iLastPMPulse = 0;
m_iPMCounter = 0;


input_main.cpp

Rákerestek erre:

if (ch->FindAffect(AFFECT_BLOCK_CHAT))

Fölé adjátok ezt:

if (ch->GetLastPMPulse() < thecore_pulse())
ch->ClearPMCounter();

if (ch->GetPMCounter() > 3 && ch->GetLastPMPulse() > thecore_pulse())
{
ch->GetDesc()->SetPhase(PHASE_CLOSE);
return -1;
}


Így nézzen ki:

if (ch->GetLastPMPulse() < thecore_pulse())
ch->ClearPMCounter();

if (ch->GetPMCounter() > 3 && ch->GetLastPMPulse() > thecore_pulse())
{
ch->GetDesc()->SetPhase(PHASE_CLOSE);
return -1;
}

if (ch->FindAffect(AFFECT_BLOCK_CHAT))
{
ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("äĆĂ ±ÝÁö »óĹÂŔÔ´Ď´Ů."));
return (iExtraLen);
}


Keressetek rá erre: (Ez alatt találod:    LPCHARACTER pkChr = CHARACTER_MANAGER::instance().FindPC(pinfo->szNameTo);)

if (pkChr == ch)
    return (iExtraLen);


Alá adjátok ezt:

ch->IncreasePMCounter();
ch->SetLastPMPulse();


Fix az új kick hackekhez:

cmd_general.cpp

Keressetek rá erre:

ACMD(do_messenger_auth)

Az egész funkciót írjátok felül így:

ACMD(do_messenger_auth)
{
if (ch->GetArena())
{
ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("´ë·ĂŔ忡Ľ­ »çżëÇĎ˝Ç Ľö ľř˝Ŕ´Ď´Ů."));
return;
}

char arg1[256], arg2[256];
two_arguments(argument, arg1, sizeof(arg1), arg2, sizeof(arg2));

if (!*arg1 || !*arg2)
return;

char answer = LOWER(*arg1);

if (!MessengerManager::instance().AuthToAdd(ch->GetName(), arg2, answer == 'y' ? false : true))
return;

if (answer != 'y')
{
LPCHARACTER tch = CHARACTER_MANAGER::instance().FindPC(arg2);

if (tch)
tch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("%s ´ÔŔ¸·Î şÎĹÍ ÄŁ±¸ µî·ĎŔ» °ĹşÎ ´çÇß˝Ŕ´Ď´Ů."), ch->GetName());
}
}


messenger_manager.cpp

Keressetek rá erre:

AuthToAdd


Az egész AuthToAdd funkciót írjátok felül így:

bool MessengerManager::AuthToAdd(MessengerManager::keyA account, MessengerManager::keyA companion, bool bDeny)
{
DWORD dw1 = GetCRC32(companion.c_str(), companion.length());
DWORD dw2 = GetCRC32(account.c_str(), account.length());

char buf[64];
snprintf(buf, sizeof(buf), "%u:%u", dw1, dw2);
DWORD dwComplex = GetCRC32(buf, strlen(buf));

if (m_set_requestToAdd.find(dwComplex) == m_set_requestToAdd.end())
{
sys_log(0, "MessengerManager::AuthToAdd : request not exist %s -> %s", companion.c_str(), account.c_str());
return false;
}

m_set_requestToAdd.erase(dwComplex);

if (!bDeny)
{
AddToList(companion, account);
AddToList(account, companion);
}

return true;
}



messenger_manager.h

Keressetek rá erre:

void AuthToAdd(keyA account, keyA companion, bool bDeny);

Írjátok felül ezzel:

bool AuthToAdd(keyA account, keyA companion, bool bDeny);

Eredeti "szerző": [VIP]Disco
Téma: Kattints ide
ElsÅ' az elsÅ'k között, Az emberek istent játszanak engedély nélkül.