Jump to content
Geplaatst:
comment_1592746

Tutorial: Velocity

Wat is velocity?

Velocity is de hoeveelheid x, y, z coords van de huidige positie waarnaar de speler zich beweegt ik geef een voorbeeld:

Speler: X: 2540.0 Y: 1250.0 Z: 10.0

De speler gaat nu bijvoorbeeld in een auto beginnen rijden.

Velocity: X: 5.0 Y: 2.0 Z: 0.0

X+X(Velocity) = 2545.0 Y+Y(Velocity) = 1252 Z+Z(Velocity) = 10.0

De speler zal dus eindigen op die coords als de huidige actie niet onderbroken word de velocity past zich de hele tijd aan, als je stil staat is het vanzelfsprekend dat alles in de velocity op 0 staat.

Functies

SetPlayerVelocity(playerid, Float:x, Float:y, Float:z);

Je kan met deze functie handmatig een speler zijn velocity instellen, dit werkt enkel als de speler te voet is.

SetVehicleVelocity(vehicleid, Float:x, Float:y, Float:z);

Stel de velocity van een voertuig in.

GetPlayerVelocity(playerid, &Float:x, &Float:y, &Float:z);

Verkrijg de velocity van een speler en slaag deze op.

GetVehicleVelocity(vehicleid, &Float:x, &Float:y, &Float:z);

Verkrijg de velocity van een voertuig en slaag deze op.

Voorbeelden

Je kan met velocity een speler in de lucht laten springen net als een voertuig ik geef een voorbeeld van hoe je een /jump commando maakt:

// Bij OnPlayerCommandText
if (!strcmp("/jump", cmdtext)) // commando /jump
{
   	if(IsPlayerInAnyVehicle(playerid)) // Kijk of de speler in een voertuig zit.
   	{
           	SetVehicleVelocity(GetPlayerVehicleID(playerid), 0.0, 0.0,3); // Laat voertuig springen.
   	}
   	else
   	{
           	SetPlayerVelocity(playerid,0.0,0.0,25); // Laat speler springen.
   	}
   	return 1;
}

Een speedboost functie die ook werkt te voet:

// Bij OnPlayerCommandText
if (!strcmp("/speed", cmdtext)) // commando /jump
{
   	new Float:x, Float:y, Float:z;
   	if(IsPlayerInAnyVehicle(playerid)) // Kijk of de speler in een voertuig zit.
   	{
           	GetVehicleVelocity(GetPlayerVehicleID(playerid),x,y,z); // Haal de huidige speler velocity op.
           	SetVehicleVelocity(GetPlayerVehicleID(playerid), x*1.2, y*1.2, z*1.2); // Stel voertuig velocity in (*1.2)
   	}
   	else
   	{
           	GetPlayerVelocity(playerid,x,y,z); // Haal de huidige speler velocity op.
           	SetPlayerVelocity(playerid, x*1.2, y*1.2, z*1.2); // Stel speler velocity in (*1.2).
   	}
   	return 1;
}

Snelheid (in kmh) ophalen van de speler (met dank aan Wanted):

stock GetPlayerSpeed(playerid) // zet dit vanonder in je gamemode!
{
   	new Float:X, Float:Y, Float:Z;
   	if(IsPlayerInAnyVehicle(playerid))
   	{
           	GetVehicleVelocity(GetPlayerVehicleID(playerid), X, Y, Z);
           	return floatround(floatmul(floatmul(floatsqroot(floatpower(floatabs(X), 2) + floatpower(floatabs(Y), 2) + floatpower(floatabs(Z), 2)), 100), 1.621371192), floatround_round);
   	}
   	else
   	{
           	GetPlayerVelocity(playerid, X, Y, Z);
           	return floatround(floatmul(floatmul(floatsqroot(floatpower(floatabs(X), 2) + floatpower(floatabs(Y), 2) + floatpower(floatabs(Z), 2)), 100), 1.621371192), floatround_round);
   	}
}

// voorbeeld om snelheid voor speler op te halen.
new Str[128];
format(Str, sizeof(Str), "Je rijd nu %d kilometer per uur!", GetPlayerSpeed(playerid));
SendClientMessage(playerid, Str);
return 1;

Mijn tutorial is nu afgelopen, heb je ideeën of vragen, meld het in dit topic.

Bewerkt: door megadreams

Featured Replies

Geplaatst:
comment_1596658

format(Str, sizeof(Str), "Je rijd nu %d kilometer per uur!", GetPlayerSpeed(playerid));
SendClientMessage(playerid, Str);
return 1;

Je rijd? Rijdt :D

Bewerkt: door CBS

Geplaatst:
  • Auteur
comment_1596673

Dat stukje code is door Wanted gemaakt die spellingsfout is dus niet door mij knipoog.gif xd

Het is toch maar een voorbeeldje.

Bewerkt: door megadreams

Geplaatst:
comment_1596902

format(Str, sizeof(Str), "Je rijd nu %d kilometer per uur!", GetPlayerSpeed(playerid));
SendClientMessage(playerid, Str);
return 1;

Je rijd? Rijdt :D

Ik ben ook niet de beste in Nederlands. :$

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.