pvar 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
  • hey,


    wie muss der code richtig aussehen um eine nummer einen spieler zuzuweisen und dann als pvar in einer .ini zu speichern?


    so geht es nicht


    SetPVarInt(playerid,"HandyNummer")1000+ random(999)+random (999));




    eure hilfe wäre super, ich verzweifel seit drei tagen schon dran...

    Mein Selfmade:

    1.Haussytem [99/100%]
    2.Handysystem [95/100%]
    3.Payday [95/100%]
    4.Autosystem [100/100%]
    5. kleinigkeiten, wo ich noch bugs habe^^ [75/100%]
    Wer mir helfen möchte und vorallem Lust oder Zeit hat, darf sich natürlich bei mir melden. :D


    >> ¡Einfach PN an mich! <<

    Marco

    Einmal editiert, zuletzt von [MM]Marco ()

  • Du solltest mal die Klammern richtig setzen.
    SetPVarInt(playerid,"HandyNummer", ( 1000+ random(999)+random (999) );
    // Was macht es eigentlich für einen Sinn,2x + random(999) zu machen ? Wenn die Zahl zwischen 1000 und 2000 liegen soll, müsstest eh random(1000) nehmen ( da random(1000) = 0 .. 999 ).
    Das gewährleistet aber nicht,dass zufällig mehrere Spieler die gleiche Zufallszahl bekommen.

    Zitat

    als pvar in einer .ini zu speichern?


    Welche Include benutzt du dafür denn? DINI ? SINI ?


    Es heisst übrigens "seit 3 Tagen".

  • hab ich auch gemerkt^^


    ich benutze DINI.


    kann man es auch machen das jeder spieler dann +19 bekommt also immer 19 addiert wird: 1. spieler 19, 2. spieler 38 usw?
    ich hab das jetzt so gemacht:



    SetPVarInt(playerid, "HandyNummer",1000+random(999)+3+playerid+random(99));


    wie kann ich jetzt abfragen ob die nummer vorhanden ist, also wenn man /call [nummer] eingibt soll man ne nachricht falls die nummer nicht vergeben ist.



    P.S.:








    Zitat

    Es heisst übrigens "seit 3 Tagen".


    Das passiert wenn man zu lange ohne motivation alles probiert und nichts klappt...^^

    Mein Selfmade:

    1.Haussytem [99/100%]
    2.Handysystem [95/100%]
    3.Payday [95/100%]
    4.Autosystem [100/100%]
    5. kleinigkeiten, wo ich noch bugs habe^^ [75/100%]
    Wer mir helfen möchte und vorallem Lust oder Zeit hat, darf sich natürlich bei mir melden. :D


    >> ¡Einfach PN an mich! <<

    Marco

  • Das wird so einfach nicht gehen. Hier mal,wie es funktionieren sollte.
    stock CheckPhonenumber( number ) {
    for(new i = 0 ; i < MAX_PLAYERS ; i++) {
    if( number == GetPVarInt(i,"HandyNummer") ) {
    return i; // Wir geben die Spieler-ID zurück
    }
    }
    return INVALID_PLAYER_ID; // kein Spieler besitzt die ID.Also noch frei
    }



    // Beim vergeben der Nummer.Nehme an Befehl
    new
    phonenumber;
    do {
    phonenumber = 1000 + random(999) + 3 + playerid + random(99); // Ist auch nicht viel zufälliger als zuvor.Aber mir egal.
    }
    while( CheckPhonenumber(phonenumber) != INVALID_PLAYER_ID );


    // Beim überprüfen ob Nummer vorhanden.Nehme an Befehl
    new
    phone_playerid;
    phone_playerid = CheckPhonenumber( <Variable_der_Nummer> );
    if( phone_playerid != INVALID_PLAYER_ID ) {
    // der Spieler hinter phone_playerid hat die genannte Nummer
    }
    else {
    // Nummer nicht vergeben
    }


    Zitat

    kann man es auch machen das jeder spieler dann +19 bekommt also immer 19 addiert wird: 1. spieler 19, 2. spieler 38 usw?
    ich hab das jetzt so gemacht:


    Mathe ?
    ( playerid + 1 ) * 19.


    Die Nummern zu speichern bringt aber nichts. Du müsste "Globale" Nummern festlegen. Damit es keine überschneidungen gibt,müsstest du die Nummern in eine Liste eintragen und beim generieren einer neuen Nummer überprüfen,ob die noch nicht belegt ist.Wer sie in diesem Moment besitzt,ist eigentlich egal. Wichtig ist vorerst ja nur,ob sie noch frei ist oder nicht.

  • also du sagtest ich soll die nummer global vergeben? wie soll ich das denn machen? ich wollte es nämlich so machen, das man erst eine nummer bekommt, wenn man sich ein handy kauft^^




    Zitat

    phonenumber = 1000 + random(999) + 3 + playerid + random(99); // Ist auch nicht viel zufälliger als zuvor.Aber mir egal.






    wie würdest du es denn machen? :D


    danke, das du mir hilfst ;)


    //edit:


    also soweit ichs verstanden hab wird im stock alles ausgelesen und abgefragt oder?


    mhm... ich bekomme auch noch ein paar errors... ich glaube das geht so nicht...

    Mein Selfmade:

    1.Haussytem [99/100%]
    2.Handysystem [95/100%]
    3.Payday [95/100%]
    4.Autosystem [100/100%]
    5. kleinigkeiten, wo ich noch bugs habe^^ [75/100%]
    Wer mir helfen möchte und vorallem Lust oder Zeit hat, darf sich natürlich bei mir melden. :D


    >> ¡Einfach PN an mich! <<

    Marco

    2 Mal editiert, zuletzt von [MM]Marco ()

  • Das könntest du auf 2 Varianten machen ( Fallen mir spontan nur ein ).


    1. Variante.
    Du zählst beim vergeben der Telefonnummer immer +1. Du musst aber einen globalen Wert haben, der die nächste freie Telefonnummer bestimmt.

    Zitat

    //telefonnummer.cfg
    Telefonnummer.Free=1201


    Immer wenn eine neue Nummer vergeben wird,wird Telefonnummer.Free + 1 gerechnet. Du musst aber sicher stellen,dass Telefonnummer.Free immer gespeichert wird wenn es geändert wurde ( Reicht eigentlich beim beenden des Gamemodes / Filterscriptes ) , damit eine Nummer nicht doppelt vergeben wird.
    Du könntest natürlich auch bei Nummern von 150000 Anfangen und immer + 18 rechnen oder auch + random(500) . Die Sache dabei ist nur, dass die Nummer chronologisch der Größe nach verteilt werden. Ist aber leichter zum umsetzen.
    Nimmst du allerdings nicht immer Telefonnummer.Free+1 , so brauchst du trotzdem eine Liste wie in Variante 2. , denn nur bei +1 kannst du sicher gehen, dass alle Nummern ab einem bestimmten Startwert ( zB. 1000 ) bis Telefonnummer.Free ( 1201 im Beispiel ) in gebrauch sind.


    2. Variante.
    Du generierst wirklich immer eine zufällige Zahl. Ist die Nummer nicht vergeben, wird sie in eine Liste eingetragen.

    Zitat

    //telefonnummer.cfg
    1534
    54323
    64300


    Um zu prüfen ob die Nummer nicht vergeben ist, musst du alle Einträge in der Datei / Liste durchgehen und prüfen ob sie deiner aktuell generierten Nummer entspricht.

  • ok danke das war ne super erklärung!


    ich werde mich morgen darum kümmern ^^



    LG


    Marco

    Mein Selfmade:

    1.Haussytem [99/100%]
    2.Handysystem [95/100%]
    3.Payday [95/100%]
    4.Autosystem [100/100%]
    5. kleinigkeiten, wo ich noch bugs habe^^ [75/100%]
    Wer mir helfen möchte und vorallem Lust oder Zeit hat, darf sich natürlich bei mir melden. :D


    >> ¡Einfach PN an mich! <<

    Marco

  • ok.... das ist so peinlich,


    darüber sollten wir kein wort mehr verlieren...^^


    so habs jetzt richtig gemacht, ich weiß jetzt nur nicht ob ich hier die nummer aus der account .ini oder aus der Telefonnumer.txt auslesen muss:


    Zitat

    phone_playerid = CheckPhonenumber( <Variable_der_Nummer> );

    Mein Selfmade:

    1.Haussytem [99/100%]
    2.Handysystem [95/100%]
    3.Payday [95/100%]
    4.Autosystem [100/100%]
    5. kleinigkeiten, wo ich noch bugs habe^^ [75/100%]
    Wer mir helfen möchte und vorallem Lust oder Zeit hat, darf sich natürlich bei mir melden. :D


    >> ¡Einfach PN an mich! <<

    Marco

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