Jump to content

command die alleen in een bepaalt gebied kan worden uitgevoerd

Featured Replies

Geplaatst:
comment_1286312

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

Recent actief 0

  • Er zijn hier geen geregistreerde gebruikers aanwezig.