Nur bestimme Personen dürfen Server betreten

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 liebe Scripter,


    Ich fang gerade ein Selfmade Script an und ich möchte das auf den Server nur die kommen, welche im Script stehen.


    Meine Codes:



    new BetaServerTester[] =
    {
    "["ServerTag"]Justin",
    "["ServerTag"]Blackmann98",
    "["ServerTag"]BlackMonday"
    };


    Und bei OnPlayerConnect:

    new playrname[16];
    new BetaString[255];
    GetPlayerName(playerid, playrname, sizeof(playrname));
    if(!strfind(playrname,BetaServerTester,true))
    {
    Nachricht(playerid,Rot,"Sie wurden vom Server gekickt,da Sie einen nicht in der BetaServerTester Gruppe des Servers sind.");
    SetTimerEx("SpielerEntfernen",1000,false,"i",playerid);
    format(BetaString, sizeof(BetaString), "%s wurde vom Server gekickt.", playrname);
    NachrichtAnAlle(Rot,BetaString);
    return 0;
    }


    Das Problem ist, wenn ich das so stehen habe, kann man sich trotzdem registrieren auch wenn man nicht in der Gruppe steht.


    Ich bräuchte bitte eure Hilfe. Danke :)

    Mit freundlichen Grüßen,
    Dachdecker

  • Naja das ist ein Array, da musst du durchgehen


    So in etwa

    for (new i=0; i < sizeof(BetaServerTester); i++)
    {
    if(strfind(playrname,BetaServerTester[i],true))
    {
    // Hier die Registration oder den Login aufrufen
    return 1;
    }
    }

    // Hier wenn er nicht gefunden wurde
    return 1;

    ik bin der vito c:

  • new BetaServerTester[3][MAX_PLAYER_NAME] =
    {
    "["ServerTag"]Justin",
    "["ServerTag"]Blackmann98",
    "["ServerTag"]BlackMonday"
    };
    Hier muss ein zweidimensionales Array erstellt werden.



    new playrname[MAX_PLAYER_NAME];
    new BetaString[145];
    GetPlayerName(playerid, playrname, sizeof(playrname));
    for(new i=0; i<sizeof(BetaServerTester); i++)
    {
    if(strfind(playrname,BetaServerTester[i],true) != -1)
    {
    Nachricht(playerid,Rot,"Sie wurden vom Server gekickt,da Sie einen nicht in der BetaServerTester Gruppe des Servers sind.");
    SetTimerEx("SpielerEntfernen",1000,false,"i",playerid);
    format(BetaString, sizeof(BetaString), "%s wurde vom Server gekickt.", playrname);
    NachrichtAnAlle(Rot,BetaString);
    return 0;
    }
    }
    Und hier musst du diese Schleife einbauen. Außerdem sollte die Nachricht nicht länger als 145 Zeichen sein.

  • Dann ändere in meiner Version mal:
    if(strfind(playrname,BetaServerTester[i],true) != -1)
    zu:
    printf("name: %s | suche: %s | %d", playrname,BetaServerTester[i], strfind(playrname,BetaServerTester[i],true));
    if(strfind(playrname,BetaServerTester[i],true) != -1)


    Und poste dann was im Log steht, wenn du versuchst dich zu registrieren.

  • Wenn jemand den Server betritt kommt das:



    [14:06:03] name: ZeRoX | suche: [JRL]Justin | -1
    [14:06:03] name: ZeRoX | suche: [JRL]Blackmann98 | -1
    [14:06:03] name: ZeRoX | suche: [JRL]BlackMonday | -1
    [14:06:03] name: ZeRoX | suche: [JRL]ZeRoX | -1

    Mit freundlichen Grüßen,
    Dachdecker

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • Einfach
    if(strfind(playrname,BetaServerTester[i],true) != -1)
    zu:
    if(strfind(BetaServerTester[i],playrname,true) != -1)


    Weil, du suchst den Spieler-Name im verbotenen Name, zuvor war es andersherum. Durch den Print habe ich gesehen wie rum du es haben willst, daher muss es so rum sein.

  • Ich habe es selbst gefunden, es liegt am sscanf2 Include. Ich werde wohl eine neue Version suchen müssen.



    // Server Log:




    [18:40:33] Error: Function not registered: 'SSCANF_Init'
    [18:40:33] Error: Function not registered: 'SSCANF_Join'
    [18:40:33] Error: Function not registered: 'SSCANF_Leave'
    [18:40:33] Script[gamemodes/NewScript.amx]: Run time error 19: "File or function is not found"
    [18:40:33] Number of vehicle models: 0



    Ich habe die Version 2.8.1 probiert, geht trotzdem nicht :(

    Mit freundlichen Grüßen,
    Dachdecker

  • Ihr macht es aber schon kompliziert, dafür dass man auch einfach ein Passwort auf den Server setzen kann:
    http://wiki.sa-mp.com/wiki/Server.cfg

    Zitat

    password (p) Locking your server is another option that is available for the root server administrator. You can use this to lock unwanted visitors from the server. (p) symbolizes the password that will be used. By default your server will not have a password.