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.