IP beim Registerieren Speichern

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
  • Tut mir leid, aber lernst du eigentlich irgendetwas das ich dir schreibe ??


    dini_Set(Date,WertName,Wert);


    Alles was sonst drinnen steht ist falsch und muss über ein format geregelt werden!
    Bitte, lies dir durch was ich schreibe und mach es nicht 10 Zeilen später sofort wieder falsch..


    @iFeet ich hatte es ihm vorhin sowieso vorgekaut...


    http://wiki.sa-mp.com/wiki/Useful_Functions#dini_Set


    Schau dir den Link an...

  • new playersip[16],name[24],str[50];
    GetPlayerName(playerid,name,sizeof(name));
    GetPlayerIp(playerid,playersip,sizeof(playersip));
    format(str,sizeof(str),"/Accounts/%s.txt",name);
    if(dini_Isset(str, "IP"))
    {
    return 1;
    }
    else
    {
    dini_Set(str,"IP", playersip);
    }

    3HZXdYd.png

    2 Mal editiert, zuletzt von Jeffry ()

  • Es kommt in dieser Zeile: if(dini_Isset(str, "IP" ,name))
    Dieser Fehler:

    Code
    C:\Users\Patrick\Desktop\IRP-City\gamemodes\Deathmatch.pwn(333) : warning 202: number of arguments does not match definition
    Pawn compiler 3.2.3664	 	 	Copyright (c) 1997-2006, ITB CompuPhase
    
    
    
    
    1 Warning.


    Ich verzweifle langsam ich weiß echt nichtwie.

  • if(dialogid==DIALOG_REGISTER)
    {
    if(response==0)
    {
    SendClientMessage(playerid,BLAU,"Du hast den Vorgang abgebrochen.");
    Kick(playerid);
    return 1;
    }
    if(response==1)
    {
    if(!strlen(inputtext))
    {
    SendClientMessage(playerid,BLAU,"Das Passwort war nicht lang genug.");
    ShowPlayerDialog(playerid,DIALOG_REGISTER,DIALOG_STYLE_INPUT,"Registration","Willkommen auf Liberty Deathmatch Network,\n\nGib bitte das gewünschte Passwort ein","Register","Abbrechen");
    return 1;
    }
    else
    {
    Register(playerid,inputtext);
    return 1;
    }
    }
    }


    stock Register(playerid,key[])
    {
    new name[MAX_PLAYER_NAME], pfad[64];
    GetPlayerName(playerid,name,sizeof(name));
    dini_Create(pfad);
    dini_Set(pfad,"Passwort",key);
    dini_IntSet(pfad,"Respektpunkte",0);
    dini_IntSet(pfad,"IP",0);
    dini_IntSet(pfad,"Adminlevel",0);
    dini_IntSet(pfad,"Level",0);
    dini_IntSet(pfad,"Geld",0);
    dini_IntSet(pfad,"Baned",0);
    dini_IntSet(pfad,"Donator",0);
    dini_IntSet(pfad,"Tode",0);
    dini_IntSet(pfad,"Kills",0);
    dini_IntSet(pfad,"Banned1",0);
    dini_IntSet(pfad,"Mute",0);
    dini_IntSet(pfad,"Kick1",0);
    dini_IntSet(pfad,"Team",0);
    dini_IntSet(pfad,"Klassen",0);
    SendClientMessage(playerid,GRÜN,"Erfolgreich registriert.");
    ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_INPUT,"Anmeldung","Willkommen auf Liberty Deathmatch Network,\n\nDein Account wurde gefunden. Gib bitte das Passwort ein.\n{FF0000}WICHITG: Gib dein Passwort an niemanden weiter auch nicht an Admins oder Supporter.","Login","Abbrechen");
    SetPlayerScore(playerid,0);
    SetPVarInt(playerid,"loggedin",1);
    pFirstLog[playerid] = true;
    return 1;
    }


    Danke das du mir hilfst

  • 1.)
    Ändere in dem Code von vorhin noch:
    format(str,sizeof(str),"/Accounts/%s,txt",name);
    zu:
    format(str,sizeof(str),"/Accounts/%s.txt",name);


    Es geht zwar auch mit , allerdings ist das ziemlich unschön.



    2.)
    Füge beim Register vor dini_Create ein:
    format(pfad,sizeof(pfad),"/Accounts/%s.txt",name);


  • In der Datei zeigt er das an


  • Ja, und?
    dini_IntSet(pfad,"IP",0);
    Du hast der IP ja auch keinen Wert zugewiesen. Das solltest du schon machen.


    Ändere dann:
    dini_IntSet(pfad,"IP",0);


    zu:
    new playersip[16];
    GetPlayerIp(playerid,playersip,sizeof(playersip));
    dini_Set(pfad,"IP", playersip);

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • Mit dini gar nicht (zumindest nicht wirklich effektiv).
    Da musst du auf MySQL zurückgreifen, nur damit kannst du das wirklich effektiv machen.


    SQL
    SELECT * FROM accounts WHERE IP = '127.0.0.1';


    Das würde dir alle Zeilen mit der selben IP in der Tabelle accounts ausgeben.


    Um MySQL verstehen zu lernen empfehle ich dir w3schools: http://www.w3schools.com/sql/default.asp


    Denkst du das würde so gehen:


    ocmd:multiaccount(playerid,params[])
    {
    if(!isPlayerAnAdmin(playerid,2))return SendClientMessage(playerid,-1,"Du hast kein Admin Level 2");
    {
    new pID,string[128],name[20];
    if(sscanf(params,"u",pID)) return SendClientMessage(playerid,-1,"Tippe : /multiaccount [IP]");
    {
    new playersip[16];
    GetPlayerIp(pID,playersip,sizeof(playersip));
    GetPlayerName(playerid,name[playerid],MAX_PLAYER_NAME);
    format(string,sizeof(string),"Auf der IP laufen diese Accounts:");
    format(string,sizeof(string),"/Accounts/%s.txt",name);
    if(dini_Isset(string, "IP"))
    {
    SendClientMessage(playerid,ROT,"%s",name);
    }
    SendClientMessage(playerid,-1,string);
    return 1;
    }
    }
    }

  • Nein, das würde sie, wenn überhaupt, die IP des Spielers den du eingegeben hast ausgeben.


    Wie gesagt, es geht nicht wirklich effektiv mit dini. Es geht zwar, das zerlegt dir aber den Server irgendwann, weil die Abfrage viel zu lange dauern würde.

  • Beitrag von The Sensei ()

    Dieser Beitrag wurde gelöscht, Informationen über den Löschvorgang sind nicht verfügbar.
  • Jeffry


    Habe einen Code zusammen gebaut dieser Funktioniert auch,


    aber er zeigt mir immer nur 3x den Gleichen Account ich will das er mir verschiedene Accounts zeigt.
    bzw. er zeigt mir immer nur meinen Account an.
    ocmd:multiaccount(playerid,params[])
    {
    if(!isPlayerAnAdmin(playerid,2))return SendClientMessage(playerid,-1,"Du hast kein Admin Level 2");
    {
    new pID,string[128],name[20];
    if(sscanf(params,"u",pID)) return SendClientMessage(playerid,-1,"Tippe : /multiaccount [IP]");
    {
    new playersip[16];
    GetPlayerIp(pID,playersip,sizeof(playersip));
    GetPlayerName(playerid,name[playerid],MAX_PLAYER_NAME);
    format(string,sizeof(string),"Auf der IP laufen diese Accounts:");
    format(string,sizeof(string),"/Accounts/%s.txt",name);
    if(strcmp(string, "IP", false) == 0)
    {
    SendClientMessage(playerid,ROT,"Name: %s",name);
    }
    SendClientMessage(playerid,-1,string);
    SendClientMessage(playerid,-1,string);
    SendClientMessage(playerid,-1,string);
    return 1;
    }
    }
    }