Frage Für Handysystem

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,Ich will ein Handy System machen...
    Dort will ich natürlich eine Zufallsnummer generieren lassen beim Register...
    Wie frage ich ab (auch bei Offline Player) ob die nummer bereits Existiert ?
    ich Benutze NOCH Dini...

  • Wenn die Handynummer nur im Profil steht,eher schwer umsetzbar. Denn du kannst nicht ohne weiteres jede Datei in einem Ordner öffnen ( wäre nur mit Plugin möglich ).
    Du müsstest dann jedes Profil abrufen und schauen,ob der Spieler dort nicht bereits diese Handynummer besitzt.


    Einfacher wäre es,eine Datei anzulegen in der einfach nur alle belegten Handynummern drin stehen. Ob das jetzt mit SQL oder normalen Dateien gemacht wird, ist dir überlassen. Bei den normalen Dateien würde es auch mit Dini funktionieren. Der Schlüssel wäre die Handynummer,der Wert z.B. der Spielername. Du legst die Zufalls-Handynummer an und prüfst ob diese bereits in der Datei ist.
    Falls ja, neue Zufalls-Handynummer anlegen. Falls nicht,ist sie nun belegt und legst sie in der Datei als belegt an.

  • Goldkiller ? Wäre es nicht so möglich :


    for(new i=0;i<MAX_PLAYERS; i++) {
    new rand, pfad[128];
    rand = random(9000) ;// Wir generieren die Random Nummer ;)
    format(pfad, 128, "/Accounts/%s.ini",SpielerName(i)); // Pfad Einstellungen
    if(dini_Int(pfad,"HandyNummer") == rand) { // Wenn Nummer aus irgendeiner Datei = Random Zahl
    rand = random(9000); // Neu Generieren
    } else { // Wenn nicht
    format(pfad, 128, "/Accounts/%s.ini",SpielerName(playerid)); // Pfad vom Spieler !!!
    dini_IntSet(pfad,"HandyNummer",rand); // HandyNummer auf Random Zahl setzen
    }
    }


    ???


    MfG

  • Kleiner Tipp noch von mir bei
    rand = random(9000) ;// Wir generieren die Random Nummer ;)


    eher
    rand = random(9000)+1
    machen, damit kein user die Nummer 0 hat.
    Eventuell könnte man auch +1234 machen, damit es keine so glatten Zahlen gibt
    wie z.B. 600


  • Was ist mit Usern die gerade nicht Online sind ;) ? Hab mir den Code nicht vollständig angeschaut. Aber in der Schleife die Zufalls-Nummer immer neu anzulegen,nicht so clever^^.

  • Stimmt...
    Das würd schon schwieriger...
    Obwohl man kann ja extern eine Variable hochzählen lassen wenn sich ein User registriert ! Oder eine Nummer kauft (2. Ist besser :D)
    Und mit dieser Variable macht man dann die Schleife ... Würde das gehen ?


    Beispiel :


    10 User haben sich eine Nummer gekauft also Variable = 10


    Für alle 10 Datein nun abfragen ob HandyNummer nun schon vorhanden wenn sich ein anderer User eine kaufen will...
    Das müsste doch eigentlich gehen oder Goldkiller ?


    MfG


    /edit Ja das war weil ich es schnell schreiben wollte ;) Hast Recht die Zufalls Nummer sollte man außerhalb der Schleife anlegen..

  • Anscheinend hast du MAX_PICKUPS schonmal definiert ...
    Weil er ja sagt "redefinition" also neu Definierung bzw. erneute Definierung...
    Vlt. ist es auch schon von SA:MP definiert...
    Mach einfach mal aus MAX_PICKUPS --> MAXIMALE_PICKUPS vlt. ist er dann weg ;)


    MfG


    /edit

  • Hmmm ich probiere es mal anders zu defieniren...


    //edit Nun bekomme ich neue Errors...



    stock LoadPickups(pickupid)
    {
    new Pickups[64];
    format(Pickups,sizeof(Pickups),"/Pickup.%d.txt",pickupid);
    if(!fexist(Pickups))return 0;
    pInfo[pickupid][X] = dini_Float(Pickups,"PosX");
    pInfo[pickupid][Y] = dini_Float(Pickups,"PosY");
    pInfo[pickupid][Z] = dini_Float(Pickups,"PosZ");
    pInfo[pickupid][PickupId] = dini_Int(Pickups,"Pickupid");
    pInfo[pickupid][PLabel] = Create3DTextLabel("Haus",ORANGE,bInfo[pickupid][X],bInfo[pickupid][Y],bInfo[pickupid][Z],25,0); // ERROR ZEILE !!!!
    CreatePickup(pInfo[pickupid][PickupId],[pickupid][X],bInfo[pickupid][Y],bInfo[pickupid][Z]);


    return 1;
    }


    C:\Program Files (x86)\LogMeIn Hamachi\MrMonat\gamemodes\Arendium.pwn(2416) : error 017: undefined symbol "bInfo"
    C:\Program Files (x86)\LogMeIn Hamachi\MrMonat\gamemodes\Arendium.pwn(2416) : warning 215: expression has no effect
    C:\Program Files (x86)\LogMeIn Hamachi\MrMonat\gamemodes\Arendium.pwn(2416) : error 001: expected token: ";", but found "]"
    C:\Program Files (x86)\LogMeIn Hamachi\MrMonat\gamemodes\Arendium.pwn(2416) : error 029: invalid expression, assumed zero
    C:\Program Files (x86)\LogMeIn Hamachi\MrMonat\gamemodes\Arendium.pwn(2416) : fatal error 107: too many error messages on one line


    Compilation aborted.Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase



    4 Errors.


  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • Hmmm nun sind sie in der Zeile danach:


    C:\Program Files (x86)\LogMeIn Hamachi\MrMonat\gamemodes\Arendium.pwn(2417) : error 029: invalid expression, assumed zero
    C:\Program Files (x86)\LogMeIn Hamachi\MrMonat\gamemodes\Arendium.pwn(2417) : warning 215: expression has no effect
    C:\Program Files (x86)\LogMeIn Hamachi\MrMonat\gamemodes\Arendium.pwn(2417) : error 001: expected token: ";", but found "]"
    C:\Program Files (x86)\LogMeIn Hamachi\MrMonat\gamemodes\Arendium.pwn(2417) : error 029: invalid expression, assumed zero
    C:\Program Files (x86)\LogMeIn Hamachi\MrMonat\gamemodes\Arendium.pwn(2417) : fatal error 107: too many error messages on one line

  • Ich würde dir empfehlen, entweder eine Datei mit vergebten Nummern anzulegen oder die Nummer hochzählen.
    Eine Datei mit einem [Nummer]=[Besitzer] Schema, um schnell den Besitzer einer Nummer ausfindig zu machen.