IP Adresse wird falsch abgespeichert.

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 Community.


    Ich habs auf meinem MySQL server so gemacht damit die IP adresse abgespeichert wird,...zwar werden einpaar zahlen abgespeichert, aber vollkommend falsche....


    ganz oben:
    enum SpielerDaten
    {
    pIPAdresse
    }


    bei SavePlayer

    new IPAdresse[30];


    GetPlayerIp(playerid,IPAdresse, sizeof(IPAdresse));


    mysql_SetString("accounts", "IP-Adresse",IPAdresse, "Name", SpielerInfo[playerid][pSpieler]);


    weis villt jemand warum das nicht richtig abgespeichert wird?,....
    Also wenn es abspeichert steht da nur 225.225.225 als IP adresse, und ich habe eine ganz andere.

  • mysql_SetString("accounts", "IP-Adresse",IPAdresse, "Name", SpielerInfo[playerid][pSpieler]);
    zu
    mysql_SetString("accounts", "IP-Adresse",SpielerInfo[playerid][pIPAdresse], "Name", SpielerInfo[playerid][pSpieler]);
    Die IP holst du dir einmal wenn er Connected, denn die IP ändert sich nicht einfach mitten im Spiel und wenn nur mit einen Timeout

    All in all it's just another brick in the wall

  • Also ich habs jetz soo


    enum SpielerDaten
    {
    pIPAdresse[16+1]//sicherheit
    }



    public OnPlayerConnect(playerid)
    {
    GetPlayerIp(playerid, SpielerInfo[playerid][pIPAdresse], 16);
    }


    bei SavePlayer


    SavePlayer(playerid)
    {
    mysql_SetString("accounts", "IP-Adresse",SpielerInfo[playerid][pIPAdresse], "Name", SpielerInfo[playerid][pSpieler]);
    }


    Und bei einem befehl also /checkip habe ich nochmal


    ocmd:checkip(playerid,params[])
    {
    new pID, IP[20];
    GetPlayerIp(pID, IP, sizeof(IP));
    format(string1, sizeof string1,"IP-Adresse:{FFFFFF} %s",IP);
    SendClientMessage(playerid,COLOR_LIGHTRED,string1);
    return 1;
    }



    und nirgendsmehr was mit IP zutun hat, ist das etwas falsch?,..weil die IP bleibt weiterhin 255.255.255...
    Sorry wenn ich zu dumm dafür bin , aber ich checke das gerade nicht xD

  • Ja das ist mein Ganzer befehl


    ocmd:checkip(playerid,params[])
    {
    new pID, SpielerName[MAX_PLAYER_NAME], string[70],string1[70],IP[20];
    GetPlayerIp(pID, IP, sizeof(IP));
    GetPlayerName(pID, SpielerName, sizeof(SpielerName));
    if(SpielerInfo[playerid][pEingeloggt] == 0) return SendClientMessage(playerid,COLOR_LIGHTRED,"SERVER: {FFFFFF}Du bist nicht eingeloggt.");
    if(SpielerInfo[playerid][pAdmin] <= 2) return SendClientMessage(playerid,COLOR_LIGHTRED,"SERVER: {FFFFFF}Du darfst diesen Befehl nicht ausführen.");
    if(sscanf(params,"u",pID))return SendClientMessage(playerid,COLOR_LIGHTRED,"FEHLER: {FFFFFF}/checkip [SpielerName/SpielerID]");
    format(string, sizeof string,"SpielerName:{FFFFFF} %s",SpielerName);
    SendClientMessage(playerid,COLOR_LIGHTRED,string);
    format(string1, sizeof string1,"IP-Adresse:{FFFFFF} %s",IP);
    SendClientMessage(playerid,COLOR_LIGHTRED,string1);
    return 1;
    }


    Hier.

  • hmm wenn ich playerid nehmen würde, wird dann doch die IP von dem spieler angezeigt der den Befehl auslöst?... oder nicht?


    Sorry, du musst mir etwas auf die sprünge helfen,...ich verstehe das irgendwie nicht,...

  • Meinst du ich muss das so machen?


    Alsoo wie ich dich verstanden habe,


    ocmd:checkip(playerid,params[])
    {
    new playerid, SpielerName[MAX_PLAYER_NAME], string[70],string1[70],IP[20];
    GetPlayerIp(playerid, IP, sizeof(IP));
    GetPlayerName(playerid, SpielerName, sizeof(SpielerName));
    if(SpielerInfo[playerid][pEingeloggt] == 0) return SendClientMessage(playerid,COLOR_LIGHTRED,"SERVER: {FFFFFF}Du bist nicht eingeloggt.");
    if(SpielerInfo[playerid][pAdmin] <= 2) return SendClientMessage(playerid,COLOR_LIGHTRED,"SERVER: {FFFFFF}Du darfst diesen Befehl nicht ausführen.");
    if(sscanf(params,"u",playerid))return SendClientMessage(playerid,COLOR_LIGHTRED,"FEHLER: {FFFFFF}/checkip [SpielerName/SpielerID]");
    format(string, sizeof string,"SpielerName:{FFFFFF} %s",SpielerName);
    SendClientMessage(playerid,COLOR_LIGHTRED,string);
    format(string1, sizeof string1,"IP-Adresse:{FFFFFF} %s",IP);
    SendClientMessage(playerid,COLOR_LIGHTRED,string1);
    return 1;
    }


    Wenns so sein sollte, dann wird es doch so ausgelöst, das die IP vom befehl auslöser angezeigt wird,...soweit mein wissensstand.

  • naja ich hab mich in 1 Punkt vertan

    Spoiler anzeigen
    ocmd:checkip(playerid,params[])
    {
    new pID, SpielerName[MAX_PLAYER_NAME], string[70], IP[17];
    if(SpielerInfo[playerid][pEingeloggt] == 0) return SendClientMessage(playerid,COLOR_LIGHTRED,"SERVER: {FFFFFF}Du bist nicht eingeloggt.");
    if(SpielerInfo[playerid][pAdmin] <= 2) return SendClientMessage(playerid,COLOR_LIGHTRED,"SERVER: {FFFFFF}Du darfst diesen Befehl nicht ausführen.");
    if(sscanf(params,"u",pID))return SendClientMessage(playerid,COLOR_LIGHTRED,"FEHLER: {FFFFFF}/checkip [SpielerName/SpielerID]");
    GetPlayerIp(pID, IP, 17);
    GetPlayerName(pID, SpielerName, sizeof(SpielerName));
    format(string, sizeof string,"SpielerName:{FFFFFF} %s",SpielerName);
    SendClientMessage(playerid,COLOR_LIGHTRED,string);
    format(string, sizeof string,"IP-Adresse:{FFFFFF} %s",IP);
    SendClientMessage(playerid,COLOR_LIGHTRED,string);
    return 1;
    }

    All in all it's just another brick in the wall

  • Nungut ich bin langsam am verzweifeln, ich habe jetz ALLES so gemacht wie du es mir gesagt hast, aber immer noch steht da die ip: 255.255.255
    aber ingame dieses befehl /checkip funktioniert...
    Ich weis auch garnicht woran das liegen kann...

  • Das mit der 255.255.255 ist ein Fehler wenn man GetPlayerIp unter OnPlayerDisconnect nutzt. Mach es so wie Beavis gesagt hat, und Speicher die IP beim Verbinden bzw Einloggen/Registrieren, und nutze ab da an nur noch die variable.

    The fact is, I am right. And if you think I'm wrong, you are wrong.

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