Jump to content

vraagje over Floats e.d.


Ymosky

Recommended Posts

Heej all, kzit met een probleempje, is een beetje moeilijk uit te leggen, maar kzal het proberen:

Ik heb op het moment een DM-systeem draaien, waarin verschillende Deathmatch's in een rotatie staan. Nu heeft iedere DM zijn eigen coördinaten waar je bij het commando /dmjoin en bij de OnPlayerSpawn naar toe word geteleporteerd.

Die coordinaten staan netjes in een float, zodat er verschillende positie's zijn waar de spelers gespawnd worden.

Zo'n float ziet er dan dus zo uit:

new Float:DmPlayerSpawns[3][3] = {
{1895.9885,1627.8905,75.7188},
{1960.5907,1661.8385,75.7188},
{1960.2485,1594.9419,75.7188}
};

Zo heb ik er verschillende instaan, naar welke positie je geteleport word is afhankelijk van welke DM actief is. Maar dat levert uiteindelijk een chaos op bij zowel het /dmjoin commando als bij de OnPlayerSpawn. Want daar heb ik nu iets als dit:

if (IsDM1Allowed == 1)
{
SetPlayerPos(playerid,DmPlayerSpawns[rand][0],DmPlayerSpawns[rand][1],DmPlayerSpawns[rand][2]);
// de rest
}
if (IsDM2Allowed == 1)
SetPlayerPos(playerid,DmPlayerSpawns2[rand][0],DmPlayerSpawns2[rand][1],DmPlayerSpawns2[rand][2]);
// de rest
}
// enz. enz.

Werkt allemaal prima, daar niet van, maar geweldig is het niet :puh:

Nu is het idee om 1 nieuwe float te maken, die bij het starten van een deathmatch "gewijzigd" word, zodat ik bij de dmjoin en bij de OnPlayerSpawn eenvoudig 1 teleport kan plaatsen. Een stuk makkelijker met het toevoegen van meerdere DM's, en qua script ook een stuk effecienter, overzichtelijker enz.

Alleen wil dat eigenlijk nog niet zo lukken. :$

Wat volgens mij mogelijk is is het volgende:

new Float: DMpos[3][3] = {
{0.0 , 0.0 , 0.0},
{0.0 , 0.0 , 0.0},
{0.0 , 0.0 , 0.0}
};

En daarmee kan ik bij iedere nieuwe DM alle coordinaten in "DMpos" aanpassen, maar dan krijg ik dus iets in deze richting:

DMpos[0][0] = 1895.9885;
DMpos[0][1] = 1627.8905;
DMpos[0][2] = 75.7188;
DMpos[1][0] = 1960.5907;
DMpos[1][1] = 1661.8385;
DMpos[1][2] = 75.7188;
DMpos[2][0] = 1960.2485;
DMpos[2][1] = 1594.9419;
DMpos[2][2] = 75.7188;

Kan er mee door opzich, maar geweldig vind ik het nog steeds niet.. :puh: weet iemand hiervoor een betere/makkelijkere/efficinetere manier?

Link to comment
Delen op andere websites

Zelf heb ik een spawnscript wat op ongeveer dezelfde manier werkt, maar dan nog met een enum erbij. Ik zal je de code even laten zien.

enum HOUSE
{
naam[128],
Float:x,
Float:y,
Float:z,
Float:angle
}

new Huizen[][HOUSE] = {
{"Gastenlocatie", 313.4830,-121.4031,3.5354,85.8133},
{"Huis 1", 313.5813,-92.2738,3.5354,88.5361},
{"Huis 2", 295.1910,-55.1505,2.7772,8.6621},
{"Huis 3", 271.6314,-49.2375,2.7772,5.8654},
{"Huis 4", 252.2988,-92.4656,3.5354,272.5665},
{"Huis 5", 252.0185,-121.4574,3.5354,267.7662},
{"Huis 6", 344.1266,-71.0004,2.4308,267.9598},
{"Huis 7", 330.9611,-39.9015,2.2255,266.4325},
{"Huis 8", 342.1291,62.4529,3.8460,100.5979},
{"Huis 9", 340.3252,33.7847,6.4104,123.4464},
{"Huis 10", 317.3200,54.8695,3.3750,234.5096},
{"Huis 11", 309.3769,43.9577,2.8880,30.2144},
{"Huis 12", 285.7070,41.4808,2.5295,203.2775},
{"Huis 13", 316.5920,17.5423,4.5156,12.7549},
{"Caravan 1", 261.1513, -270.4709, 1.5781, 314.4856},
{"Caravan 2", 264.3391, -288.3199, 1.5781, 263.9758},
{"Caravan 3", 259.7169, -302.4626, 1.9184, 234.0459},
{"Caravan 4", 235.1489, -308.9238, 1.5836, 183.4591}
};

Hierdoor word je script een stuk duidelijker, omdat je ook gewoon bijvoorbeeld de x-waarde van de 3e rij simpel kan opvragen (3e rij = huis 3), op de volgende manier:

SetPlayerPos(playerid, Huizen[3][x], Huizen[3][y], Huizen[3][z]);

Maar nu wil jij weten hoe je per DM een andere spawn kan hebben.

Stel, je maakt nog een extra variabele, en die noem je "WelkeDMIsActief". Gewoon een integer, want het word een geheel getal. Daar sla je dan in op welke DM er actief is, van 1 t/m het aantal DM's wat je wil hebben. Probleem is nu alleen dat je DM bij 1 begint, en je variabele bij 0. Gelukkig simpel op te lossen, want je kan er ook op deze manier naar verwijzen:

SetPlayerPos(playerid, Huizen[WelkeDMIsActief - 1][x], Huizen[WelkeDMIsActief - 1][y], Huizen[WelkeDMIsActief - 1][z]);

Enzovoorts.

Ik hoop dat je hier wat aan hebt, zo niet moet je het maar even zeggen :)

Bewerkt: door David22
Link to comment
Delen op andere websites

  • 2 weken later...

Een beetje heel erg laat, maar alsnog bedankt! :tu:

Het hele spul heb ik inmiddels draaiend, al heb ik het wel (toch) op mn eigen manier gedaan. Werkt in ieder geval en is voor simpele zielen als ik tenminste te begrijpen... :$

Maaruh... die enum lijkt me wel best handig, maar om eerlijk te zijn kom ik bij de sampwiki er niet echt aan uit. Misschien tip voor iemand die tijd/zin heeft om een Nederlandstalig tut te schrijven? :*D

Bewerkt: door Ymosky
Link to comment
Delen op andere websites

Een beetje heel erg laat, maar alsnog bedankt! :tu:

Het hele spul heb ik inmiddels draaiend, al heb ik het wel (toch) op mn eigen manier gedaan. Werkt in ieder geval en is voor simpele zielen als ik tenminste te begrijpen... :$

Maaruh... die enum lijkt me wel best handig, maar om eerlijk te zijn kom ik bij de sampwiki er niet echt aan uit. Misschien tip voor iemand die tijd/zin heeft om een Nederlandstalig tut te schrijven? :*D

Ik zal een dezer dagen wel eens wat schrijven ;)

Link to comment
Delen op andere websites

  • 3 weken later...

Een reactie plaatsen

Je kan nu een reactie plaatsen en pas achteraf registreren. Als je al lid bent, log eerst in om met je eigen account een reactie te plaatsen.

Gast
Op dit onderwerp reageren...

×   Je hebt text geplaatst met opmaak.   Opmaak verwijderen

  Only 75 emoji are allowed.

×   Je link is automatisch ingevoegd.   In plaats daarvan weergeven als link

×   Je vorige bewerkingen zijn hersteld.   Alles verwijderen

×   You cannot paste images directly. Upload or insert images from URL.

  • Recent actief   0 leden

    • Er zijn hier geen geregistreerde gebruikers aanwezig.
×
×
  • Create New...