Alle Accounts abfragen (Dini)

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
  • Moin,,


    bin noch recht Noob auf dem Gebiet, meine Frage: wie kann ich via. Dini jeden existierenden Account abfragen.
    Damit ihr versteht was ich meine, ich habe ein Handy-System geschrieben, wo abgefragt wird, ob die Nummer des Spielers bereits existiert, das gilt aber nur für die die online sind.


    Die Nummer wird in der .ini des jeweiligen Accounts gespeichert. Nun möchte ich abfragen wer alles die Nummer hat, auch die offline sind, sprich, dass ich nicht 5x die selbe Nummer an den Spieler gebe.
    Danke im Voraus :D


    btw, habe die Abfrage aktuell so falls es wen juckt xD


    Code
    for (new i = 0; i < MAX_PLAYERS; i ++) {
    		if (Player[i][handynumber] == number) {
    		   return SendClientMessage(playerid, COLOR_GREY, "Fehler: Diese Nummer wird bereits genutzt.");
    		}
    	}
  • Bei Dateien könntest du das was du jetzt machen möchtest am einfachsten umsetzen wenn eine individuelle Zahl bei jeder Datei vorhanden ist.
    Sagen wir jede Datei heißt "Account (eine individuelle Zahl).ini"
    dann könnte man über eine Schleife jeden einzelnen Account abfragen. Das würde dann so funktionieren.
    new pfad[32],i;
    for(;i<MAX_ACCOUNTS;i++)
    {
    format(pfad,32,"/Account%i.ini",i);
    //jetzt hast du einen konkreten Pfad mit der du über jedes beliebige filesystem die Inhalte abfragen kannst
    }

  • Sollte eigentlich so funktionieren! :)

  • Für sowas ist SQL sinnvoll.
    Dann einfach



    SQL
    SELECT `Handynummer`, `Name` FROM `accounts` WHERE `Handynummer` = "1234565234"

    und prüfen ob ein Resultat kommt. Falls ja, ist die Nummer vergeben und man kann sogar ausgeben an wen sie vergeben ist.
    Ansonsten ein File erstellen und alle Nummern untereinander und prüfen ob die Nummer in dem File existiert.
    Für größere Playerbases musst du aber wohl oder übel auf SQL umsteigen.

  • Sollte eigentlich so funktionieren! :)

    Wird nicht für Spieler die Offline sind funktionieren

  • (My)SQL zu nutzen würde da natürlich am meisten Sinn machen.


    Wenn du es aber ohne SQL machen willst, dann empfehle ich es aus Performancegründen so:
    new numberFile[32];
    format(numberFile, 32, "PhoneNumbers/%d.ini", number);
    if(dini_Exists(numberFile))
    {
    return SendClientMessage(playerid, COLOR_GREY, "Fehler: Diese Nummer wird bereits genutzt.");
    }
    else
    {
    dini_Create(numberFile);
    //Nummer vergeben
    }


    Sprich, du erstellst für jede existierende Nummer (sobald sie existiert) eine separate Datei im Ordner "PhoneNumbers".


    In diese Datei kannst du dann auch Informationen zu dieser Nummer packen, zum Beispiel den Besitzer, das Guthaben, etc.
    Den Besitzer würde ich auf jeden Fall eintragen, somit hast du immer die direkte Verbindung.
    In die User-File des Besitzers schreibst du dann die Nummer rein, so kommst du immer von User zu Nummer und von Nummer zu User.