[Source]Chat Spaming!! :p

02/12/2014 00:53 Wanetrain#1
Tag auch alle, hier mal ein kleiner Fixx um Chat Spamen zu verhindern :p

Benötigt:
- WorldServer Source
- Hirn

Also fangen wir mal an!

Geht im WorldServer in die datei "DPSrvr.cpp" und sucht nach

Quote:
CDPSrvr::OnChat
diese Funktion überschreibt ihr mit

Quote:
void CDPSrvr::OnChat( CAr & ar, DPID dpidCache, DPID dpidUser, LPBYTE lpBuf, u_long uBufSize )
{
static TCHAR sChat[1024];
if( uBufSize > 1031 )
return;

ar.ReadString( sChat, 1024 );
CString strChat = sChat;
strChat.Replace( "\\n", " " );

__time64_t nTime = _time64( NULL );

CUser* pUser = g_UserMng.GetUser( dpidCache, dpidUser );
if( IsValidObj( pUser ) && ( pUser->m_nLasChatTime + SEC( 1 ) ) < nTime )
{
if( pUser->m_dwAuthorization >= AUTH_LOGCHATTING )
g_dpDBClient.SendLogGamemaChat( pUser, strChat );

if( sChat[0] == '/' && ParsingCommand( strChat, (CMover*)pUser ) )
return;

if( pUser->IsMode( TALK_MODE ) )
return;

int nText = pUser->GetMuteText();
if( nText )
{
pUser->AddDefinedText( nText );
return;
}
if( pUser->IsMute() )
return;

if( !( pUser->HasBuff( BUFF_ITEM, II_SYS_SYS_SCR_FONTEDIT ) ) )
ParsingEffect( sChat, strlen(sChat) );

pUser->m_nLasChatTime = nTime;

g_UserMng.AddChat( pUser, strChat );
}
}
dann geht ihr in die CMover klasse, addet dort

Quote:
__time64_t m_nLasChatTime;
Anschließend noch in CMover::CMover und darin wiederrum addet ihr

Quote:
#ifdef __WORLDSERVER
m_nLasChatTime = _time64( NULL );
#endif
Fertig, Chat spaming verhindert.

Nun wer jetzt wieder kommt mit "geht doch sowieso nicht, Client meldet da was" usw, klar ihr habt in erster Linie recht aber nicht all zu ganz, der Client meldet es nur durch das Chat FENSTER, baut man sich allerdings ein Bot und greift in die in die Chat Sende funktion gleich mit ein bzw hol sich die Addressen wie hier:

Quote:
void CNeuz::SendChat( _In_ char* szStr )
{
if( !CPlayerMng::GetInstance()->m_pLocalPlayer->IsValid() )
{
Log( Error, "Invalid Player --> login!!" );
return;
}

DWORD dwThis = 0x00;
DWORD dwCall = 0x00;

_asm
{
push szStr;

mov ecx, dwThis;
call dwCall;
}
}

Addressen wurden zum Schutz von Forsaken unkenntlich gemacht.
Dann könnt ihr das Spielchen abziehen von wegen "wir senden dem server mal eben 500 nachrichten" und der Shout wird zu gespamt like Tom's hack, das ganze hab ich auf Forsaken FlyFF abgezogen, funktioniert toll.

Mit dem Fixx könnt ihr nur noch jede Sekunde Chat nachrichten schicken, könnt das auch auf 500 MS stellen, würde auch reichen aber sicher ist sicher, meint ihr net?

Klar man kann es erweitern das der User gemuted wird und co, aber wozu?

Naja es werden noch mehr kleinere fixxes geben, viel spaß noch.^^

Mfg.
02/12/2014 04:19 .SnoX#2
Eh digga hattest du langeweile gehabt, oder zu viel gute Laune?

Wenn ich von ganz oben beim T anfange und ganz unten beim h wieder aufhöre denke ich mir nur, wow hat der gute laune haha.

Zum release ist eigentlich eine nette Idee, like Tom's AH. Könnte man noch schön erweitern.
02/12/2014 12:51 Wanetrain#3
Quote:
Originally Posted by .SnoX View Post
Eh digga hattest du langeweile gehabt, oder zu viel gute Laune?

Wenn ich von ganz oben beim T anfange und ganz unten beim h wieder aufhöre denke ich mir nur, wow hat der gute laune haha.

Zum release ist eigentlich eine nette Idee, like Tom's AH. Könnte man noch schön erweitern.
Langeweile trifft es recht gut. :DD

Klar kann man noch bissl was machen aber warum? dient ja nur dazu das man es nichtmehr macht.