Beiträge von Simon2202

    Hallo!


    Ich wollte mir ein kleines Lottosystem schreiben, der User kann halt sich 6 Zahlen aussuchen aus denen dann gezogen wird usw.


    Der Befehl zum Zahlen auswählen sieht so aus:


    Die SendClientMessage "SCM(playerid,frot,"Zahl %d : %d",i+1,pZahlen[playerid][i]);
    Gibt aber nur das ganze ein wie ich es eingegeben habe.



    Gibt es eine Möglichkeit, wenn der Spieler den Befehl so eingibt: /lotto 123456


    Jede einzelne Zahl einzeln abzuspeichern?




    Mfg

    Debug das ganze mal so-

    Schreib das ganze so, ist bisschen übersichtlicher und so sollte es gehen:


    Ouuh oke^^...


    Du erstellst eine Globale Variable (irgendwo ganz oben im Script)

    Code
    new pJailTime[MAX_PLAYERS];



    Dann fragst du unter OnPlayerDeath ab ob er Wanteds hat und teleportierst ihn in dein Gefängnis:


    Code
    if(GetPlayerWantedLevel(playerid) > 0)
    					    {
    					        pJailTime[playerid] = GetPlayerWantedLevel(playerid) * 10;
    					        SetPlayerWantedLevel(playerid,0);
    					        //Spieler ins Gefängnis teleportieren
    					    }


    Dann erstellst du (WENN du noch keinen hast) unter OnGameModeInit einen Timer der jede Sekunde aufgerufen wird:


    Code
    SetTimer("sekundentimer",1000,1);

    Und unten ins Script kommt dann das rein:



    Sollte passen, bei Fragen oder wenn was nicht funktioniert einfach sagen.

    Teile es in kleine Teile, dann geht das leichter. Was musst du tun:


    1. Bei "OnPlayerDeath" abfragen ob er Wanteds hatte. Wenn ja -> Gefängnis


    2. Das mit der Zeit kannst du über 2 arten machen:


    2.1: Du nimmst dir nen Timer der Global jede Sekunde aufgerufen wird (falls du noch keinen im Script erstellt hast). Setzt wenn er stirbt seine Wanted Anzahl auf die Wanteds * 10 und lässt jedes mal wenn der Timer aufgerufen wird die Anzahl bis 0 runter zählen, wenn es 0 ist -> SpawnPlayer()


    2.2: Du erstellst eine globale Variable (z.B: pJailTime[MAX_PLAYERS]) und wenn er stirbt/in den Knast kommt: pJailTime[playerid] = gettime()+(wantedanzahl)*10
    Dann fragst du wieder in einem Sekunden Timer ab ob "gettime()" gleich pJailTime[playerid] ist.



    Vielleicht gibt es noch eine dritte, die weiß sicher Jeffry.

    Für das ganze brauchst du einen Timer der im Script regelmäßig jede Sekunde oder jede Minute aufgerufen wird. Falls du bereits so einen hast verwende einfach den.


    Falls du in dem Timer noch keine Schleife durch alle Spieler hast erstellst du eine.


    Wenn du schon eine hast, kannst du auch diese einfach nochmal verwenden.


    In der Schleife musst du abfragen ob "GetPlayerWantedLevel(i)" 0 ist. Wenn ja: SpawnPlayer(i);

    Sorry, da gehört natürlich noch eine Abfrage rein ob er schon bereit ist:



    Btw: du musst dort wo du sie dann teleportieren lässt bzw das spiel startest noch "playerready[i]" auf 0 setzen hab ich oben vergessen.

    Ahm, ich hab mir mal deinen Code angeschaut du schreibst den viel zu umständlich.
    Ich würde dir das so vorschlagen:


    Du erstellst 2 globale Variablen:


    Code
    new zolltore = 20;
    new zolltorvar[zolltore+1]; //Das +1 ist weil du beim Array immer eins mehr angeben solltest.



    Dort wo du die Zolltore erstellst, darunter einfach:

    Code
    for(new i=0;i<zolltore;i++)//Schleife durch alle zolltore
      {
       zolltorvar[i] = 0;
      }

    Das setzt beim Server start die variable "zolltorvar" für jedes Tor auf 0 (Ich schätze du erstellst sie ja geschlossen? Wenn sie offen erstellt werden setzt du es einfach auf 1



    Und der Befehl sieht dann so aus :


    Das geht einfach eine Schleife durch und fragt über das Array ab ob "zolltorvar" 1 od 0 ist und setzt in einer Schleife das richtige.




    Es ist ungetestet! Aber sollte funktionieren, falls nicht sags hier oder schreib mir eine PN