Jump to content

[Tutorial] SavePos, LoadPos, GetPos, MyPos.


Crusher!!

Recommended Posts

Tutorial

SavePos, LoadPos, GetPos, MyPos

Deze tutorial gaat over het maken van de commands, SavePos, LoadPos, GetPos, MyPos.

zeer handig als je beginnende scripter bent en wilt gaan werken met Floats.

mijn 1e post is makkelijk en mijn 2e post word het wat moeilijker!!

We Beginnen met de command SavePos (Het opslaan van jouw Positie X,Y,Z)

=========================================================================

=========================================================================

SavePos

Het Saven van je Positie

Om jouw positie te saven moet de server die onthouden.

Om er voor te zorgen dat het niet steeds veranderd als iemand /SavePos doet plaatsen we [MAX_PLAYERS] achter de floats:

new Float:PosX[MAX_PLAYERS];
new Float:PosY[MAX_PLAYERS];
new Float:PosZ[MAX_PLAYERS];
new Float:PosA[MAX_PLAYERS];

Het commando van SavePos is vrij makkelijk:

if(strcmp(cmdtext, "/SavePos", true) == 0)
{
if(IsPlayerInAnyVehicle(playerid)) 
		   //Kijken of de speler in een voertuig (auto, boot, vliegtuig, ETC..) zit.
{
	// Als speler in een voertuig zit.
	new Voertuig = GetPlayerVehicleID(playerid);
	GetVehiclePos(Voertuig, posx[playerid], posy[playerid], posz[playerid]);
	GetVehicleZAngle(Voertuig, zangle[playerid]);
} 
else 
{
	// Als de speler NIET in een voertuig zit. (Lopend)
	GetPlayerPos(playerid, posx[playerid], posy[playerid], posz[playerid]);
	GetPlayerFacingAngle(playerid, zangle[playerid]);
}
return 1;
}

Het commande /SavePos.

deze lijn kijkt of je in een voertuig zit,

if(IsPlayerInAnyVehicle(playerid))

Zoja dan pakt de server de positie van het voertuig. om te saven.

dat gaat zo

GetVehiclePos(Voertuig, PosX[playerid], PosY[playerid], PosZ[playerid]);
// [playerid], zorgt ervoor dat die positie alleen voor de speler is die /save heeft gedaan.

GetVehicleZAngle(Voertuig, PosA[playerid]);
// Hier Halen we Angle (naar welke kant het voertuig staat) op.

als de speler niet in een voertuig zit.

GetPlayerPos(playerid, posx[playerid], posy[playerid], posz[playerid]);
// [playerid], zorgt ervoor dat die positie alleen voor de speler is die /save heeft gedaan.

GetPlayerFacingAngle(playerid, zangle[playerid]);
// Hier Halen we Angle op, (waar je heen kijkt), weer dat [playerid] dat ervoor zorgt dat het alleen voor de speler is die /save heeft gedaan.

Dit is alles over de command /SavePos.

[/size]

=========================================================================

=========================================================================

LoadPos

Je positie laden.

We hebben net de command /SavePos gedaan dan gaan we nu verder met de command /LoadPos.

Deze command is vrij simpel.

if(strcmp(cmdtext, "/LoadPos", true) == 0)
{
  if(IsPlayerInAnyVehicle(playerid))
  {
		// als de speler in een voertuig zit.
		new Voertuig = GetPlayerVehicleID(playerid);
		SetVehiclePos(Voertuig, PosX[playerid], PosY[playerid], PosZ[playerid]);
		SetVehicleZAngle(VehicleID, PosA[playerid]);
  }
  else
  {
		// Als de speler NIET in een voertuig zit (Lopend)
		SetPlayerPos(Playerid, PosX[playerid], PosY[playerid], PosZ[playerid]);			
		SetPlayerFacingAngle(playerid, PosA[playerid]);
  }
return 1;
}

Hier heb ik niet veel over te vertellen, want ik heb dat al uitgelegd by /SavePos.

alleen het enige verschil is

GetVehiclePos(Voertuig, PosX[playerid], PosY[playerid], PosZ[playerid]);
//SavePos
SetVehiclePos(Voertuig, PosX[playerid], PosY[playerid], PosZ[playerid]);
//LoadPos

(deze zijn willekeurig uit de commands: /LoadPos, /SavePos)

de letter "G" en "S" aan het begin ("Get"/"Set")

Dit is alles over de command /LoadPos.

Bewerkt: door Crusher!!
Link to comment
Delen op andere websites

GetPos

De Positie van een speler bekijken.

Dit is ook niet zo moeilijk, maar je moet wel met Multi-Param kunnen werken

als je dat niet kan raad ik je aan deze tutorial te lezen: Multi-Param tutorial

public OnPlayerCommandText(playerid, cmdtext[])
{
new cmd[256], idx, tmp[256], Float:gpX, Float:gpY, Float:gpZ, Float:gpA, gpInterioor, String[256];
cmd = strtok(cmdtext, idx);

if(strcmp(cmd, "/GetPos", true)==0)
{
new Get_ID;
tmp = strtok(cmdtext, idx);

if(!strlen(tmp))
{
SendClientMessage(playerid, kleur, "Oeps, een foutje, Gebruik: /GetPos [ID]");
return 1; 
}
GetPosID = strval(tmp);

GetPlayerPos(GetPosID, gpX, gpY, gpZ);
GetPlayerFacingAngle(GetPosID, gpA);
GetPlayerInterioor(GetPosID, gpInterioor);

format(String, sizeof(String), "Jouw positie: X: %d, Y: %d, Z: %d, Angle:%d, Interioor: %d",gpX,gpY,gpZ,gpA,gpInterioor);

SendClientMessage(playerid, kleur, String);
return 1;
}

return 0;
}

ergens onder aan je script plak je dit

strtok(const string[], &index)
{
new length = strlen(string);
while ((index < length) && (string[index] <= ' '))
{
	index++;
}
new result[20], offset = index;
while ((index < length) && (string[index] > ' ') && ((index - offset) < (sizeof(result) - 1)))
{
	result[index - offset] = string[index];
	index++;
}
result[index - offset] = EOS;
return result;
}

Informatie volgt later!!!!

=========================================================================

=========================================================================

MyPos

Je eigenpositie bekijken.

In deze command zit maar 1 moeilijk ding: format.

je begint met

new Float:MyPos_X, Float:MyPos_Y, Float:MyPos_Z, Float:MyPos_A, MyPos_String[256], MyPos_Interioor;

Bij een string (MyPos_String) Moet een bepaalde grote bij, hoe dat precies zit weet ik niet maar nu gebruiken we even: 256 ( [256] )

MyPos_Interioor?, ja we gaan ook maken dat je de interioor waar je inbent kan bekijken,

Moet daar geen Float: voor?, Nee want een float is met 2cijfers 0.0 of 1.1

een interioor ID is maar 1cijfer 0 of 1 of 2 of 3 enz.. enz..

niet getreurd :puh: want verder hebben we weer de Floats die we aanmaken (new Float:).

if (strcmp("/getpos", cmdtext, true, 10) == 0)
{
GetPlayerPos(playerid, MyPos_X, MyPos_Y, MyPos_Z);
GetPlayerFacingAngle(playerid, MyPos_A);
GetPlayerInterioor(playerid, MyPos_Interioor);

Tot hier snappen de meeste het nog nu gaan de aan de string (MyPos_String) een tekst toevoegen.

format(MyPos_String, sizeof(MyPos_String), "Hier komt dan de tekst");

als je het zo gebruikt zou je net zo goed SendClientMessage kunnen gebruiken, alleen bij SendClientMessage kan je geen Floats toevoegen of andere waardes toevoegen.

format(MyPos_String, sizeof(MyPos_String), "Jouw positie: X: %d, Y: %d, Z: %d, Angle:%d, Interioor: %d");

%d ??, %d linkt door naar de varible die er achter staat

voorbeeld

1: %d, 2: %d één, twee

De %d achter 1 linkt door naar 'één' en de %d achter de 2 linkt door naar 'twee'

best simpel eigenlijk

format(MyPos_String, sizeof(MyPos_String), "Jouw positie: X: %d, Y: %d, Z: %d, Angle:%d, Interioor: %d",MyPos_X, MyPos_Y, MyPos_Z, MyPos_A, MyPos_Interioor);

zo wordt het :D, voor de gene die het nog niet snappen: Wiki Sa-mp

Om de string te verstuuren

gebruiken we wel SendClientMessage alleen vullen we die iets anders in, namelijk zo:

SendClientMessage(playerid, kleur, MyPos_String);

dit snap je vast wel :D

je command is nu

if (strcmp("/getpos", cmdtext, true, 10) == 0)
{
GetPlayerPos(playerid, MyPos_X, MyPos_Y, MyPos_Z);
GetPlayerFacingAngle(playerid, MyPos_A);
GetPlayerInterioor(playerid, MyPos_Interioor);
format(MyPos_String, sizeof(MyPos_String), "Jouw positie: X: %d, Y: %d, Z: %d, Angle:%d, Interioor: %d",MyPos_X, MyPos_Y, MyPos_Z, MyPos_A, MyPos_Interioor);
SendClientMessage(playerid, kleur, MyPos_String);

ff return 1; dr onder enzo.

if (strcmp("/getpos", cmdtext, true, 10) == 0)
{
GetPlayerPos(playerid, MyPos_X, MyPos_Y, MyPos_Z);
GetPlayerFacingAngle(playerid, MyPos_A);
GetPlayerInterioor(playerid, MyPos_Interioor);
format(MyPos_String, sizeof(MyPos_String), "Jouw positie: X: %d, Y: %d, Z: %d, Angle:%d, Interioor: %d",MyPos_X, MyPos_Y, MyPos_Z, MyPos_A, MyPos_Interioor);
SendClientMessage(playerid, kleur, MyPos_String);
return 1;
}

het is nu klaar!, Dus zo maak je /MyPos CMD :D

=========================================================================

=========================================================================



Voor nog meer tutorials kijk bij de

KLIK> Pawn_Master_Tutorial_List.png <KLIK

Bewerkt: door Crusher!!
Link to comment
Delen op andere websites

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