Kill Command

12/20/2011 22:42 Sedrika#1
.
12/20/2011 22:47 .Tear#2
und was is da der sinn von? :/ Auser user in der PvP zu ärgern.. xD
12/20/2011 22:52 Sedrika#3
Einfach nur das selbe wie damals in den guten alten Caali zeiten, einen kill befehl xD
".kill" :D
12/20/2011 22:53 Sekkusu[DW]#4
Das is ne geile Idee xDDD
Man ey wieso kommen mir solche Ideen nicht, ich sitze immer darum und überlege was kann ich so neu machen, mir fällt nie was ein >:
12/20/2011 22:55 Sedrika#5
Quote:
Originally Posted by DarkLinkSan View Post
Hauptsache Sedrika hat was neues released :> XD
Spam gemeldet
Quote:
Originally Posted by Marvin! View Post
Frag das in dem Thread wo man mit einem Befehl ingame Chars erstellen kann.
Wär machbar :D
Quote:
Originally Posted by Sekkusu[DW] View Post
Das is ne geile Idee xDDD
Man ey wieso kommen mir solche Ideen nicht, ich sitze immer darum und überlege was kann ich so neu machen, mir fällt nie was ein >:
Weil du überlegst, ich such etwas, um spaß zu haben :awesome:
Quote:
Originally Posted by .Tear View Post
Könnens ja kombinieren.. der chara wird einfach totliegend erstellt.. -_-
Spam nicht, achja gemeldet.
12/21/2011 10:46 Pumbaaa#6
meinste echt CMover * pTarget = ( CUser *) s. GetToken (); geht? :D strings in user casten? :D
12/21/2011 12:34 Krustenkäse#7
Quote:
Originally Posted by Pumbaaa View Post
meinste echt CMover * pTarget = ( CUser *) s. GetToken (); geht? :D strings in user casten? :D
kann eigentlich schon gehen, weil GetToken() nen tokenType(int) returnt und net nen String^^... aber das würde dir net den richtigen CUser geben^^
Code:
  CUser* pUser    = (CUser*)s.dwValue;
das is der richtige Code^^
12/21/2011 12:44 Sedrika#8
ich sagte doch, kanns net testen, aber nur mover hat dodie.
12/21/2011 13:24 Pumbaaa#9
CUser erbt von CMover, also hat CUser genauso DoDie wie CMover, außer DoDie is private, was ich bezweifle.

@Krustenkäse: Stimmt, hast Recht, hatte keinen Source vor mir...

@Sedrika: Ich würd dir vorschlagen, die PlayerID via CPlayerDataCenter::GetInstance()->GetPlayerId( s.token ); und dann den User via g_UserMng.GetUserrByID( id ); herauszusuchen.

EDIT: Jap, DoDie is public, du kannst die Funktion auch mit einem Objekt der Klasse CUser callen.

EDIT2:
Quote:
Originally Posted by Krustenkäse View Post
Code:
  CUser* pUser    = (CUser*)s.dwValue;
das is der richtige Code^^
Der Cast returniert in dem Fall aber auch nicht den richtigen User. Soweit ich das verstanden hab, wird mit dem Code der User, der den Command ausgeführt hat, zurückgegeben.
12/21/2011 13:49 Achileus#10
Quote:
Originally Posted by Sedrika View Post
Da ich aktuell nicht testen kann, ob es funktioniert, würd ich jemanden bitten, diesen Befehl einmal für mich zu testen, wenns geht, viel spaß.

PHP Code:
ON_TEXTCMDFUNCTextCmd_KillPlayer,                "kill",                    "kill",            "kill",    "kill"TCM_SERVERAUTH_ADMINISTRATOR"" 
PHP Code:
BOOL TextCmd_KillPlayerCScanner)
{
#ifdef __WORLDSERVER
    
CUserpUser = (CUser*)s.dwValue;
    
CMoverpTarget = (CUser*)s.GetToken();
    if( 
IsValidObj( (CObj*)pTarget ) && !pTarget->IsNPC() )
        
pTarget->DoDiepUser );
#endif // __WORLDSERVER
    
return TRUE;

Ausführung wie folgt: /kill Sedrika

Danach sollte der besagte spieler sterben.
Wenns geht, bitte sagen und wenn nicht, auch melden, dankeee.

Die idee hatte ich schon seit 1-2 Wochen aber zuwenig ahnung das umzusetzen ^^ . Was ich mir auch noch gedacht habe /heal player HP z.B

/heal Achi 9999 .

P:S :Noch ein paar ideen .

/Chatt Playername text .. .

z.B

/Chatt Achileus Hallo ich bin Achileus Offi hat ja schon sowas das andere reden können aber dann muss man immer denn player anklicken ^^ .

oder

was etwas schwerer ist

/rollback Playername

weiß nicht ob das möglich ist das sind natürlich alles Befehle for fun^^.
12/21/2011 13:51 Sedrika#11
Umgeschrieben hab ich es grad auf folgendes:

PHP Code:
BOOL TextCmd_KillPlayerCScanner)
{
#ifdef __WORLDSERVER
    
CUserpUser = (CUser*)s.dwValue;
    if( 
strcmppUser->GetName(), s.Token) ){
        
u_long PlayerID CPlayerDataCenter::GetInstance()->GetPlayerIds.token );
        if( 
PlayerID )
            
pUser->DoDiepUser );
    }
#endif // __WORLDSERVER
    
return TRUE;

Der Compiler zeigt da keinen error an, ich warte grad bis ich testen kann ^^ MSSQL install ebend.
12/21/2011 14:02 xFruchti.#12
Lol Sedrika als ob du gedanken lesen könntest -;o
Sowas hatte ich heute vor
12/21/2011 14:04 Pumbaaa#13
Quote:
Originally Posted by Sedrika View Post
Umgeschrieben hab ich es grad auf folgendes:

PHP Code:
BOOL TextCmd_KillPlayerCScanner)
{
#ifdef __WORLDSERVER
    
CUserpUser = (CUser*)s.dwValue;
    if( 
strcmppUser->GetName(), s.Token) ){
        
u_long PlayerID CPlayerDataCenter::GetInstance()->GetPlayerIds.token );
        if( 
PlayerID )
            
pUser->DoDiepUser );
    }
#endif // __WORLDSERVER
    
return TRUE;

Der Compiler zeigt da keinen error an, ich warte grad bis ich testen kann ^^ MSSQL install ebend.

lol hör auf dich selbst zu töten :D:D

für /kill PLAYERNAME wäre dieser Code optimal:
Code:
BOOL TextCmd_KillPlayer( CScanner& s )
{
#ifdef __WORLDSERVER
    CUser* pUser = (CUser*)s.dwValue;
    s.GetToken();
    if( strcmp( pUser->GetName(), s.Token) != 0 ){
        u_long PlayerID = CPlayerDataCenter::GetInstance()->GetPlayerId( s.token );
       if( PlayerID <= 0 )
           return FALSE;
       CUser *SilenceIKillYou = g_UserMng.GetUserByID( PlayerID );
       if( SilenceIKillYou && IsValidObj( SilenceIKillYou ) )
       {
            SilenceIKillYou->DoDie((CCtrl*)pUser);
       }
    }
#endif // __WORLDSERVER
    return TRUE;
}
12/21/2011 14:15 Achileus#14
Habe ja oben paar befehle ich teste mal das eben von pumbaa aus


P:S Kommt ein Fehler


CUser *SilenceIKillYou = g_UserMng.GetPlayerByID( PlayerID );


Source\FlyFF Source\_Interface\FuncTextCmd.cpp(5133) : error C2039: 'GetPlayerByID' : is not a member of 'CUserMng'
User.h(789) : see declaration of 'CUserMng'



Sedrika ´s compilt geht aber nicht Ingame wenn ich kill eingebe dann sterbe ich nicht und wenn ich kill + playername eingabe passiert auch nichts ,.
12/21/2011 14:24 Pumbaaa#15
Quote:
Originally Posted by Achileus View Post
Die idee hatte ich schon seit 1-2 Wochen aber zuwenig ahnung das umzusetzen ^^ . Was ich mir auch noch gedacht habe /heal player HP z.B

/heal Achi 9999 .

Code:
s.GetToken();
u_long idTarget = CPlayerDataCenter::GetInstance()->GetPlayerId( s.token );
if( idTarget <= 0 )
   return FALSE;
CUser *pTarget = g_UserMng.GetUserByID( idTarget );
if( IsValidObj( pTarget ) )
{
     int nVal = s.GetNumber() + pTarget->GetHitPoint();
     if( nVal > pTarget->GetMaxHitPoint() )
         nVal = pTarget->GetMaxHitPoint();
     pTarget->SetHitPoint( nVal );
}
P:S :Noch ein paar ideen .

/Chatt Playername text .. .

z.B

/Chatt Achileus Hallo ich bin Achileus Offi hat ja schon sowas das andere reden können aber dann muss man immer denn player anklicken ^^ .

Code:
s.GetToken();
u_long idTarget = CPlayerDataCenter::GetInstance()->GetPlayerId( s.token );
if( idTarget <= 0 )
   return FALSE;
CUser *pTarget = g_UserMng.GetUserByID( idTarget );
if( IsValidObj( pTarget ) )
{
     TCHAR szChr[1024];
     s.GetLastFull();
     if( strlen( s.token ) > 260 )
        return FALSE;
    strcpy( szChr, s.token );
    StingTrimRight( szChr );
    g_UserMng.AddChat( (CCtrl*)pTarget, (LPCSTR)szChr );
}
oder

was etwas schwerer ist

/rollback Playername

weiß nicht ob das möglich ist das sind natürlich alles Befehle for fun^^.
rollback ka


Quote:
Originally Posted by Achileus View Post
Habe ja oben paar befehle ich teste mal das eben von pumbaa aus


P:S Kommt ein Fehler


CUser *SilenceIKillYou = g_UserMng.GetPlayerByID( PlayerID );


Source\FlyFF Source\_Interface\FuncTextCmd.cpp(5133) : error C2039: 'GetPlayerByID' : is not a member of 'CUserMng'
User.h(789) : see declaration of 'CUserMng'



Sedrika ´s compilt geht aber nicht Ingame wenn ich kill eingebe dann sterbe ich nicht und wenn ich kill + playername eingabe passiert auch nichts ,.
GetUserByID *shame on me* >>