Aus 10 X,Y,Z werten random welche abgreifen aber wie?

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 Leute,
    ich habe folgendes Problem.


    In diesem Stock werden z.b 15 spawns mitgegeben.
    Wenn ich sie Printe sieht es so aus:
    X,Y,Z,Rot
    X,Y,Z,Rot
    X,Y,Z,Rot
    etc


    Derzeit mache ich es so das ich den ersten Spawn einer Variable zuweise und diese dann zum Spawnen nutze.
    Das Problem ist das jeder Spieler dann da spawnt.
    Ich habe einen dicken Denkfehler und weiß nicht wie ich Random werte abgreife.
    Die Werte müssen zusammen gehören! (Also aus einer Zeile)
    @IPrototypeI kann leider nicht mehr auf das andere Thema antworten deswegen mache ich dies da das Problem weiterhin besteht..


    Hier mein Code:

    Code
    stock static RandomSpawn(Modelidc, Float:X, Float:Y, Float:Z, Float:rZ) 
    {
    	spawnmodel = Modelidc;
    	spawnx = X;
    	spawny = Y;
    	spawnz = Z;
    	spawnzz = rZ;
    	return 1;
    }
  • Wie lässt du denn RandomSpawn aufrufen?
    Wird das beim Auslesen der Datei ausgeführt? Poste den Code dazu bitte mal.

    Hey,
    ich lade alle Spawns aus einer Datei.
    Diese Count sendet ja dann alle werte also das alle Spawns an den Stock übertragen werden.
    Funktioniert auch Problemlos.
    Möchte halt nur Random welche Abgreifen und dann nutzen.


    Code
    ++count;
    RandomSpawn(mapValues[pMmodelids], mapValues[pMXs], mapValues[pMYs], mapValues[pMZs]+offZ, mapValues[pMRZs]);
  • C
    stock static RandomSpawn(id, Modelidc, Float:X, Float:Y, Float:Z, Float:rZ)
    {
        spawnmodel[id] = Modelidc;
        spawnx[id] = X;
        spawny[id] = Y;
        spawnz[id] = Z;
        spawnzz[id] = rZ;
        return 1;
    }





    Deine Variablen änderst du von:
    new Float:spawnzz;
    zu:
    new Float:spawnzz[15];
    Für alle 5 natürlich so.



    Und beim Einlesen (count fängt bei 0 an, daher drunter):

    C
    RandomSpawn(count, mapValues[pMmodelids], mapValues[pMXs], mapValues[pMYs], mapValues[pMZs]+offZ, mapValues[pMRZs]);
    ++count;



    Dann kannst du die Koordinate so bekommen:

    C
    new rnd = random(15);
    SetPlayerPos(playerid, spawnx[rnd], spawny[rnd], spawnz[rnd]);
  • Spinnt etwas rum.
    Das problem ist.
    Jede Map hat verschieden viele Spawns.
    Nicht 15. Manchmal auch nur 4.
    Was soll ich dann machen?

  • Dann muss hier die Anzahl der Spawns der Map anstatt der 15 rein:
    new rnd = random(15);


    Ich weiß nicht wie dein System aufgebaut ist und wann du die Koordinaten lädst, daher kann ich dir das nicht genau sagen.


    Setzt du die Spawns direkt danach?
    Dann könnest du
    new rnd = random(count);
    machen.

  • Habe jetzt eine neue Gloable Variable erstelle und Counte diese hoch auf die Spawn anzahl.
    Diese nutze ich jetzt im Random.
    Funktioniert einwandfrei.
    Danke dir, @Jeffry