Namen abfrage erst nachdem Bots auf Server

Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!

Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
  • Hallo,


    ich habe da mal eine Frage, und zwar habe ich es so gemacht, dass man nur joinen kann, wenn man ein "_" im Namen hat.


    Allerdings haben meine Bots nicht so ein "_" im Namen und werden somit rausgeschmissen.


    Kann man das irgendwie machen, dass die Bots nicht abgefragt werden?


    So sieht mein Script aus:


    public CheckName(playerid)
    {
    //----------------------------------[RolePlay Namen]-----------------------------------------------//
    new psender[MAX_PLAYER_NAME];
    GetPlayerName(playerid, psender, sizeof(psender));
    if(strfind(psender,"_",false)==-1)
    {
    //SendClientMessage(playerid, COLOR_WHITE, "Dein Name ist nicht in diesem Stil: Vor_Zuname");
    ShowPlayerDialog(playerid,110,DIALOG_STYLE_MSGBOX,"German Elite Reallife: Name nicht Zugelassen","Dieser Name wird auf unserem Server nicht Akzeptiert!\nBitte verwende einen Roleplaynamen mit einem '_' wie z.B. Max_Mustermann.","Beenden","");
    Kick(playerid);
    }
    return 0;
    //-----------------------------------------------------------------------------------------------
    }

  • Also so?


    public CheckName(playerid)
    {
    //----------------------------------[RolePlay Namen]-----------------------------------------------//
    new psender[MAX_PLAYER_NAME];
    GetPlayerName(playerid, psender, sizeof(psender));
    if(IsPlayerNPC(playerid))
    }
    {
    else if(strfind(psender,"_",false)==-1)
    {
    //SendClientMessage(playerid, COLOR_WHITE, "Dein Name ist nicht in diesem Stil: Vor_Zuname");
    ShowPlayerDialog(playerid,110,DIALOG_STYLE_MSGBOX,"German Elite Reallife: Name nicht Zugelassen","Dieser Name wird auf unserem Server nicht Akzeptiert!\nBitte verwende einen Roleplaynamen mit einem '_' wie z.B. Max_Mustermann.","Beenden","");
    Kick(playerid);
    }
    return 0;
    //-----------------------------------------------------------------------------------------------
    }


    Funktioniert leider nicht...

    Einmal editiert, zuletzt von Shoxx () aus folgendem Grund: Funktioniert nicht.

  • public CheckName(playerid)
    {
    //----------------------------------[RolePlay Namen]-----------------------------------------------//
    new psender[MAX_PLAYER_NAME];
    GetPlayerName(playerid, psender, sizeof(psender));
    if(IsPlayerNPC(playerid)) return 1;
    else if(strfind(psender,"_",false)==-1)
    {
    //SendClientMessage(playerid, COLOR_WHITE, "Dein Name ist nicht in diesem Stil: Vor_Zuname");
    ShowPlayerDialog(playerid,110,DIALOG_STYLE_MSGBOX,"German Elite Reallife: Name nicht Zugelassen","Dieser Name wird auf unserem Server nicht Akzeptiert!\nBitte verwende einen Roleplaynamen mit einem '_' wie z.B. Max_Mustermann.","Beenden","");
    Kick(playerid);
    }
    return 0;
    //-----------------------------------------------------------------------------------------------
    }


    So?


    Funktioniert aber leider nicht...


    Wie müsste es richtig sein?

    Einmal editiert, zuletzt von Shoxx () aus folgendem Grund: Text change


  • public CheckName(playerid)
    {
    if(IsPlayerNPC(playerid)) return 1;
    //----------------------------------[RolePlay Namen]-----------------------------------------------//
    new psender[MAX_PLAYER_NAME];
    GetPlayerName(playerid, psender, sizeof(psender));
    if(strfind(psender,"_",false)==-1)
    {
    //SendClientMessage(playerid, COLOR_WHITE, "Dein Name ist nicht in diesem Stil: Vor_Zuname");
    ShowPlayerDialog(playerid,110,DIALOG_STYLE_MSGBOX,"German Elite Reallife: Name nicht Zugelassen","Dieser Name wird auf unserem Server nicht Akzeptiert!\nBitte verwende einen Roleplaynamen mit einem '_' wie z.B. Max_Mustermann.","Beenden","");
    Kick(playerid);
    }
    return 0;
    //-----------------------------------------------------------------------------------------------
    }


    Sollte so eig. gehen (wenn du es ganz nach oben setzt, wird garnicht erst GetPlayerName ausgeführt oder die Variable psender erstellt).
    Wird der NPC denn trotzdem gekickt?

  • Wenn schon dann "return 0;". 1 bedeutet weiter machen. 0 bedeutet aufhören.


    Also:
    if(IsPlayerNPC(playerid))return 0;

  • Wenn schon dann "return 0;". 1 bedeutet weiter machen. 0 bedeutet aufhören.


    Also:
    if(IsPlayerNPC(playerid))return 0;


    1 ist schon richtig. Im Grunde genommen ist es egal, aber vom Sinn her passt 1 besser.
    Klar wird diese Funktion da abgebrochen, allerdings wird sie ja nicht wegen eines Fehlers abgebrochen, das würde ja heißen, dass npc's den server nicht betreten dürfen.
    Die Funktion wird abgebrochen, weil der nachfolgende Code nicht weiter relevant ist und npc's diesen somit überspringen können.