Jump to content

command die alleen in een bepaalt gebied kan worden uitgevoerd


Recommended Posts

Geplaatst:

Ik snap niet echt hoe je een command maakt die alleen in een bepaalt gebied (area) werkt, zoals voor een deur.

zou iemand hiervan een voorbeeldje wilen geven?

Geplaatst: (bewerkt)

PlayerToPoint of IsPlayerInArea.

Persoonlijke voorkeur gaat uit naar PlayerToPoint in dit geval.

Je kan dan een kleine radius nemen, met de coördinaten van de pickup (of zo) aan de deur.

PlayerToPoint(Float:radius, playerid, Float:X, Float:Y, Float:Z)
{
new Float:oldpos[3], Float:temppos[3];
GetPlayerPos(playerid, oldpos[0], oldpos[1], oldpos[2]);
temppos[0] = (oldpos[0] -X);
temppos[1] = (oldpos[1] -Y);
temppos[2] = (oldpos[2] -Z);
if(((temppos[0] < radius) && (temppos[0] > -radius)) && ((temppos[1] < radius) && (temppos[1] > -radius)) && ((temppos[2] < radius) && (temppos[2] > -radius)))
{
	return true;
}
return false;
}

Dus:

if(!strcmp("/enter", cmdtext, true))
{
if(!PlayerToPoint(3.0, playerid, 1234.56, 2356.54, 24.25) return false;
SetPlayerPos(playerid, ...);
SetPlayerInterior(playerid, ...);
return 1;
}

Bewerkt: door Big Boss
Geplaatst:

Hier snap ik helemaal niks van, zou je het iets beter willen uit leggen want ik zoek al een tijdje hoe dat werkt

Geplaatst:
Hier snap ik helemaal niks van, zou je het iets beter willen uit leggen want ik zoek al een tijdje hoe dat werkt

Die bovenste code zet je in ergens (onderaan) je script. Je hoeft hem alleen maar te kopiëren en te plakken en niets er aan veranderen. Dat is een functie die de afstand tussen een speler tot een bepaald punt berekend. Als die afstand kleiner is dan de ingevulde maximum afstand (radius), dan word het positief (return 1;), en anders (als de speler verder is dan de maximum afstand, word de functie negatief (return 0;)

Om dus de PlayerToPoint-functie te gebruiken, moet je de if(PlayerToPoint(radius, playerid, x, y, z)) goed invullen en op de juiste plaats in jouw commando zetten.

Bijvoorbeeld de deur die jij bedoeld, heeft de coordinaten:

X = 837.4

Y = -1239.7

Z = 10.40

en je wilt dat de speler alleen het commando kan gebruiken als die minder dan 3 coordinaten (meter) van de deur vandaan is.

Dan zet je in je commando:

if(strcmp(cmdtext, "/opendeur", true)==0)
{
if(PlayerToPoint(3.0, playerid, 837.4, -1239.7, 10.40)
{
	SetPlayerPos(playerid, ...);
	SetPlayerInterior(playerid, ...);
}
else
{
	SendClientMessage(playerid, 0xFF0000AA, "Je bent niet dicht genoeg bij de deur!!");
}
return 1;
}

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...