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.:
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 )
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.:
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
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:
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.:
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.
Üdv,
Ronnie