[Source]Namen vorm GM Shout

03/03/2011 19:39 Pumbaaa#1
Ist mein erstes TuT, also wenns Kritik gibt, bitte sagen, damit ichs verbessern kann.
Ich weiß auch nicht, ob mein Code so optimal ist, es gibt sicher eine bessere Lösung, bin noch C++ Anfänger.

Also, als erstes öffnet ihr die FuncTextCmd.cpp und sucht nach
Code:
BOOL TextCmd_System( CScanner & scanner )
Dort findet ihr das:
Code:
{
#ifdef __WORLDSERVER
CHAR szString[512] = "";

CUser* pUser = (CUser*)scanner.dwValue;

scanner.GetLastFull();
if( strlen( scanner.token ) >= 512 )
return TRUE;
strcpy( szString, scanner.token );
StringTrimRight( szString );

g_DPCoreClient.SendSystem( szString );
#endif // __WORLDSERVER
return TRUE;
}
Nun führen wir eine neue Variable ein, ich nenne sie einfach mal szName
dann sieht das ganze so aus:
Code:
{
#ifdef __WORLDSERVER
CHAR szString[512] = "";
CHAR szName[512] = "[";

CUser* pUser = (CUser*)scanner.dwValue;

scanner.GetLastFull();
if( strlen( scanner.token ) >= 512 )
return TRUE;
strcpy( szString, scanner.token );
StringTrimRight( szString );

g_DPCoreClient.SendSystem( szString );
#endif // __WORLDSERVER
return TRUE;
}
Die Variable setzen wir auch gleich auf "[", um uns später arbeit zu ersparen xD

Dann löschen wir den Quelltest von scanner.GetLastFull(); zu g_DPCoreClient.SendSystem( szString );.

Das ganze sieht dann so aus:
Code:
{
#ifdef __WORLDSERVER
CHAR szString[512] = "";
CHAR szName[512] = "[";

CUser* pUser = (CUser*)scanner.dwValue;



#endif // __WORLDSERVER
return TRUE;
}
und fügen folgendes an die Stelle ein:
Code:
{
#ifdef __WORLDSERVER
CHAR szString[512] = "";
CHAR szName[512] = "[";
CUser* pUser = (CUser*)scanner.dwValue;

strcat( szName, pUser->GetName());
strcat( szName, "]: ");
scanner.GetLastFull();
if( strlen( scanner.token ) >= 512 )
return TRUE;
strcpy( szString, scanner.token );
StringTrimRight( szString );
strcat( szName, szString );

g_DPCoreClient.SendSystem( szName );
#endif // __WORLDSERVER
return TRUE;
}
Nun sollte der GM-Shout so aussehen:
Code:
[GM Information][NAME] TEXT
Wenn ihr nun auch noch wollt, dass dort z.B. Admin steht, müsst ihr folgendes einfügen:
Code:
{
#ifdef __WORLDSERVER
CHAR szString[512] = "";
CHAR szName[512] = "[";
CUser* pUser = (CUser*)scanner.dwValue;

//FÜR ADMIN
if(pUser->m_dwAuthorization == AUTH_ADMINISTRATOR)
strcat( szName, "Admin][" );

strcat( szName, "TestGM][" );
strcat( szName, pUser->GetName());
strcat( szName, "]: ");
scanner.GetLastFull();
if( strlen( scanner.token ) >= 512 )
return TRUE;
strcpy( szString, scanner.token );
StringTrimRight( szString );
strcat( szName, szString );

g_DPCoreClient.SendSystem( szName );
#endif // __WORLDSERVER
return TRUE;
}
Wenn ihr dies nicht nur für Admin machen wollt, müsst ihr immer ein
Code:
else if(pUser->m_dwAuthorization == AUTHORIZATION)
strcat( szName, "Admin][" );
hinzufügen.


Hier noch eine Liste, mit den verschiedenen Autorisierungen, die /sys verwenden können:
Code:
AUTH_GAMEMASTER1 //Gamemaster lvl 1
AUTH_GAMEMASTER2 //Gamemaster lvl 2
AUTH_GAMEMASTER3 //Gamemaster lvl 3
AUTH_ADMINISTRATOR //Administrator
Hoffe euch hat der Guide gefallen, Kritik ist erwünscht.

Mfg. Pumbaaa
03/03/2011 19:49 Fullscreen#2
Muhahahaha, Kritik ist erwünscht, doch ich gebe keine Kritik. Boah bin ich fies.

_____________________________

Sehr Guter Guide, finde ich gut ;)
03/03/2011 19:58 Pumbaaa#3
Danke,
Achja, hätte ich fast vergessen, was eigentlich ganz einfach ist:
Wie man das [GM Information] davor wegbekommt.
Such in deinem Resource Ordner von deinen Files dei Datei textclient.txt.txt.

Öffne diese und such nach [GM Information]
Das "[GM Information]" löschst du, sodass dort nurnoch %s steht.
Abspeichern, mergen und Spass haben ;D
03/03/2011 20:28 Sedrika#4
NIce gemacht, wussten vll einige schon aber für die mühe ein Thx.
03/03/2011 22:23 ©ross#5
geht einfacher :)

nja, obs gut is oder nich zu sharen muss jeder selber wissen.

Gratz zum rausfinden ;)

greetings
03/03/2011 23:22 .Crasy#6
Quote:
Originally Posted by ©ross View Post
geht einfacher :)

nja, obs gut is oder nich zu sharen muss jeder selber wissen.

Gratz zum rausfinden ;)

greetings
Jo, viel einfacher o.O

in der TXT (textClient) das "GM Information" weg machen und %s hin, dann hinten nur noch im code ein , und den Namen auslesen, fertig :oo

Wobei ich es ehrlich gesagt, scheiße finde, denn ein GM wird sowieso voll gespamt sobald da ein Name steht, stellt euch einfach mal vor ihr wärt auf Offi GM, dann steht da z.b. "Bla[GM] Hallo" oder so, und ja den wird man 100% voll Spamen.
04/05/2011 15:12 fumer3#7
Quote:
Originally Posted by .Crasy View Post

dann hinten nur noch im code ein , und den Namen auslesen, fertig :oo
Hm, check ich nicht xD
05/12/2011 15:06 domme93#8
mal ne ganz doofe frage, wo ist diese FuncTextCmd.cpp? finde die nicht. Wenn es hilft, ich benutz Virtuos v3 files (V17).^^
05/12/2011 15:35 Roshah#9
Ehm achte mal auf die endung cpp = C++ und das kannste nur im Source machen und nicht in denn Files.
05/12/2011 20:13 Meikbrosoft#10
Quote:
Originally Posted by domme93 View Post
mal ne ganz doofe frage, wo ist diese FuncTextCmd.cpp? finde die nicht. Wenn es hilft, ich benutz Virtuos v3 files (V17).^^
Du brauchst den Source hier der download -> [Only registered and activated users can see links. Click Here To Register...]
07/12/2011 13:20 Karamelleis#11
Quote:
AUTH_GAMEMASTER1 //Gamemaster lvl 1
Da hast du einen kleinen Fehler gemacht die 1 muss nämlich weg sonst kommt ein Error beim compilen das ganze müsste dann so in der Funktion von dir aussehen :

Quote:
if(pUser->m_dwAuthorization == AUTH_GAMEMASTER)
strcat( szName, "GM][" );
Jedoch hab ich eine Frage, wenn jemand den Hack von Yannick benutzen würde um seinem Char Fake GM rechte zu geben würde er dann in die Bedingung AUTH_GAMEMASTER gehören und somit den ensprechenden namen vor einer /sys Nachricht haben ? Oder geht das ganze erst gar nicht? ;)

EDIT : Habe mir die Frage eigentlich selber beantwortet. Ich bin der Meinung, dass man durch den GM Fake Hack die Bedingung erfüllen würde und daher habe ich es bei mir entfernt. Ich würde dies auch den anderen Servern empfehlen wenn ihr nicht wollt, dass sich jemand als Fake GM mit der /sys Nachricht ausgibt.