undefined symbol "i"

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
  • Gute Nacht,
    ich halte mich mal kurz und poste nur die Fehlermeldungen & den Quellcode, ich hoffe Ihr könnt mir helfen!


    public OnRconLoginAttempt(ip[], password[], success)
    {
    if(!success) //If the password was incorrect
    {
    printf("FAILED RCON LOGIN BY IP %s USING PASSWORD %s",ip, password);
    new pip[16];
    for(new i=0; i<MAX_PLAYERS; i++) //Loop through all players
    {
    GetPlayerIp(i, pip, sizeof(pip));
    if(!strcmp(ip, pip, true)) //If a player's IP is the IP that failed the login
    {
    SendClientMessage(i, 0xFFFFFFFF, "Wrong Password. Bye!"); //Send a message
    Ban(i); //They are now banned.
    if(PlayerInfo[i][pAdmin] >= 2000)
    {
    new string[256];
    format(string,"Der User mit der IP: %s wollte sich als Rcon mit dem Passwort %s einloggen.",ip, password);
    SendClientMessage(i,0xCD0000FF,string);
    }
    }
    }
    }
    return 1;
    }
    (Original Rcon Script von hier)


    //Edit: Einige Fehler schon gefixxt, Quellcode & Fehler aktualisiert.

    Einmal editiert, zuletzt von [NRL] TraXters ()

  • Du hattest da offenbar ein paar Sachen vergessen.
    Versuch's mal damit:


    public OnRconLoginAttempt(ip[], password[], success)
    {
    if(!success) //If the password was incorrect
    {
    printf("FAILED RCON LOGIN BY IP %s USING PASSWORD %s",ip, password);
    new pip[16];
    for(new i=0; i <MAX_PLAYERS; i++) //Loop through all players
    {
    GetPlayerIp(i, pip, sizeof(pip));
    if(!strcmp(ip, pip, true)) //If a player's IP is the IP that failed the login
    {
    SendClientMessage(i, 0xFFFFFFFF, "Wrong Password. Bye!"); //Send a message
    Ban(i); //They are now banned.
    }//if
    else if(PlayerInfo[i][pAdmin] >= 2000)
    {
    new string[256];
    format(string,"Der User mit der IP: %s wollte sich als Rcon mit dem Passwort %s einloggen.",ip, password);
    SendClientMessage(i,0xCD0000FF,string);
    }//else-if
    }//for-Schleife
    }//if(!success)
    return 1;
    }//public

  • Hey Luc,
    leider kommt dieser Fehler: error 035: argument type mismatch (argument 2)
    in dieser Zeile:
    format(string,"Der User mit der IP: %s wollte sich als Rcon mit dem Passwort %s einloggen.",ip, password);

  • So funktioniert es:


    public OnRconLoginAttempt(ip[], password[], success)
    {
    if(!success) //If the password was incorrect
    {
    printf("Ein Spieler mit der IP %s hat sich versucht mit dem Passwort %s als RCON einzuloggen!",ip, password);
    new pip[16];
    for(new i=0; i<MAX_PLAYERS; i++) //Loop through all players
    {
    GetPlayerIp(i, pip, sizeof(pip));
    if(!strcmp(ip, pip, true)) //If a player's IP is the IP that failed the login
    {
    SendClientMessage(i, 0xFFFFFFFF, "Falschen Passwort! Tschüss"); //Send a message
    Ban(i); //They are now banned.
    if(SpielerInfo[i][Adminlevel] >= 2000)
    {
    new string[256];
    format(string, sizeof(string),"Der User mit der IP: %s wollte sich als Rcon mit dem Passwort %s einzuloggen.",ip, password);
    SendClientMessage(i,0xCD0000FF,string);
    }
    }
    }
    }
    return 1;
    }


    Bei weiteren Fragen einfach melden^^


    //edit
    Das ist auch falsch so wie es ist...
    es gehört nicht so



    format(string,"Der User mit der IP: %s wollte sich als Rcon mit dem Passwort %s einloggen.",ip, password);


    sondern so





    format(string,sizeof(string),"Der User mit der IP: %s wollte sich als Rcon mit dem Passwort %s einloggen.",ip, password);

  • Okay funktioniert jetzt! Vielen Dank Luc & TheGodfather1337 :)

  • Okay funktioniert jetzt! Vielen Dank Luc & TheGodfather1337 :)


    Kein Problem, allerdings kann es zu problemen kommen da du "Ban(i);" dort stehen hast,
    dass bedeutet das "i" gebannt wird, da "i" für alle gilt, die AdminLevel 2000 haben, werden automatisch alle gebannt die AdminLevel 2000 haben...


    (Bin mir da nicht sicher, aber dürfte meines erachtens so sein^^)


  • Kein Problem, allerdings kann es zu problemen kommen da du "Ban(i);" dort stehen hast,
    dass bedeutet das "i" gebannt wird, da "i" für alle gilt, die AdminLevel 2000 haben, werden automatisch alle gebannt die AdminLevel 2000 haben...

    Eigentlich sollte das nicht der Fall sein. Die Variabele "i" wird ja bereits in der for-Schleife definiert.
    Das Ban(i); wird vor der if-Abfrage mit dem Admin-Level ausgeführt.
    Die Abfrage hat nur zur Folge, dass eine Meldung an den User gesendet wird, was eigentlich sinnlos ist, da dieser bereits gebannt sein sollte.


    Mit freundlichen Grüßen, Luc

  • Die Abfrage hat nur zur Folge, dass eine Meldung an den User gesendet wird, was eigentlich sinnlos ist, da dieser bereits gebannt sein sollte.


    Eigentlich nicht.
    1.SendClientMessage(i, 0xFFFFFFFF, "Fail? Naja Bye!");
    2.Ban(i);


    Also sieht er die Nachricht noch.


  • Eigentlich nicht.
    1.SendClientMessage(i, 0xFFFFFFFF, "Fail? Naja Bye!");
    2.Ban(i);


    Also sieht er die Nachricht noch.

    Ja richtig. In diesem Zusammenhang schon.
    Mein Post war auch eher auf die if-Abfrage danach gerichtet.
    if(SpielerInfo[i][Adminlevel] >= 2000)
    {
    new string[256];
    format(string, sizeof(string),"Der User mit der IP: %s wollte sich als Rcon mit dem Passwort %s einzuloggen.",ip, password);
    SendClientMessage(i,0xCD0000FF,string);
    }


    Wozu sollte dann nochmal extra abgefragt werden, ob der Spieler Admin ist? Wenn ja, dann soll ihm selbst die Nachricht geschickt werden,
    dass er selbst versucht hat, sich einzuloggen? Immer schön aufpassen mit den Variablen. "i" steht in dieser for-Schleife nur für den einzelnen Spieler, und nicht für das gesamte Admin-Team.

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen