Szerző Téma: [Leírás]Véletlenszerû spawn hely.  (Megtekintve 301 alkalommal)

[Leírás]Véletlenszerû spawn hely.
« Dátum: 2012. április 22. - 21:11:50 »
0 Show voters
Véletlenszerû Spawn
 
A megoldása nagyon egyszerû. A legalkalmasabb megoldás, ha létrehozunk a koordinátáknak egy tömböt, majd véletlenszerûen kiválasztunk belõle.
1. Tömb.:
Kód: [Kijelölés]
new Float: Tömbneve [ A ] [ B ] =
{
    { X, Y, Z },
    { x, Y, Z } ( Utolsó utána nem kell vesszõ! )
};
Nézzük sorba:
- Float, vagyis lebegõpontos, mivel a koordinátákat lebegõpontos számként adjuk meg.
- [ A ], A tömb mérete. ( Szerintem egyértelmû, sorok száma ) ( Nem kötelezõ megadni )
- [ B ], A sorokban, lévõ értékek száma. ( Veszõvel vannak elválasztva )
Kód: (Példa)
new Float: RandomSpawn [ 3 ] [ 3 ] =
{
    { 145.2345, 2244.5354, 45.5363 },
    { 562.3632, 1256.2324, 25.0000 },
    { 322.4325, 1999.4635, 74.2332 }
};
2. Hivatkozás a tömbre.:
Kód: [Kijelölés]
new rand = random ( Érték );
- Ezt, általában rövidítés miatt használjuk.
- Érték, vagyis a random milyen értékek között válasszon.
- Az érték megadása úgy a legegyszerûbb, ha a tömb méretét kérdezzük le.
Játékos pozíciójának megadása:
A SetSpawnInfo függvényt használjuk, aminek 13 paramétere van.
   1. Játékos azonosítója. ( Player ID )
   2. Játékos Csapata ( GetPlayerTeam ( playerid ) )
   3. Játékos Karaktere ( GetPlayerSkin ( playerid ) )
   4. X, koordináta ( Szélesség értéke )   \\
   5. Y, koordináta ( Hosszúság értéke )   | - Játékos pozicíója
   6. Z, koordináta ( Magasság értéke )   /
   7. Forgási szög. ( Saját tengelye körül )
   8. Fegyver (1)
   9. Fegyver (1) Lõszermennyiség
   10. Fegyver (2)
   11. Fegyver (2) Lõszermennyiség
   12. Fegyver (3)
   13. Fegyver (3) Lõszermennyiség
Kód:
SetSpawnInfo ( playerid, GetPlayerTeam ( playerid ), GetPlayerSkin ( playerid ),  X, Y, Z, Angle, 0, 0, 0, 0, 0, 0 );
Játékos pozíciójának megadása a tömbbõl.:
SetSpawnInfo ( playerid, GetPlayerTeam ( playerid ), GetPlayerSkin ( playerid ), Tömbneve [ Tömbmérete ] [ X ], Tömbneve [ Tömbmérete ] [ Y ], Tömbneve [ Tömbmérete ] [ Z ], Angle, 0, 0, 0, 0, 0, 0 );
Mi esetünkbe:
Kód:
SetSpawnInfo ( playerid, GetPlayerTeam ( playerid ), GetPlayerSkin ( playerid ), RandomSpawn [ 3 ] [ 0 ], RandomSpawn [ 3 ] [ 1 ], RandomSpawn [ 3 ] [ 2 ], 0, 0, 0, 0, 0, 0, 0  );
- Ez a kód, a \'playerid\' azonosítójú játékosnak, az X, Y, Z koordinátáit, a RandomSpawn tömbbõl kiválasztott értékre változtatja meg.
3. Példa.:
Kód: ( Összetett példa)
new RandomSpawn [ 5 ] [ 3 ] = {
    { 1480.6473, 2213.5718, 11.0234 },
    { 1400.5906, 2225.6960, 11.0234 },
    { 1598.8419, 2221.5676, 11.0625 },
    { 1318.7759, 1251.3580, 10.8203 },
    { 1558.0731, 1007.8292, 10.8125 }
};
public OnPlayerRequestClass ( playerid, classid  )
    new rand = random ( sizeof ( RandomSpawn ) );
    new Float: Angle = GetPlayerFacingAngle ( playerid, Angle );
    SetSpawnInfo ( playerid, GetPlayerTeam ( playerid ), GetPlayerSkin ( playerid ), RandomSpawn [ rand ] [ 0 ], RandomSpawn [ rand ] [ 1 ], RandomSpawn [ rand ] [ 2 ], Angle, 0, 0, 0, 0, 0, 0  );
    return 1;
}
Hát ennyi lett volna, sok sikert a megvalósításhoz.

 

SimplePortal 2.3.7 © 2008-2024, SimplePortal