Jump to content

Coordinaten Ingame Uitlezen


Recommended Posts

Geplaatst:

Hallo,

De laatste tijd houd ik me erg bezig met SA-MP, als ik dan een object

wil plaatsen, moet ik /save typen, naar Windows gaan en zo'n bestandje uitlezen

om de locatie te weten, nu heb ik op een screen van ''Sobeit'' gezien dat dit een

Coordinaten-functie heeft, maar om gelijk een cheat te gebruiken(WAAR IK EEN HEKEL AAN HEB)

voor alleen maar de Coordinaten functie, dat vind ik toch wat overdreven, weet iemand

dus een programma/plugin wat ingame de coordinaten van de huidige locatie kan laten

zien, en deze automatisch bijwerkt als je beweegt ?

Marco.

Geplaatst: (bewerkt)

Ik ben voor je aan het werk gegaan en heb zo'n functie voor jou gemaakt:

- In deze versie heb ik gebruik gemaakt van GameTextForPlayer

- Ik moet straks weg, maar als ik vanaaf weer thuis ben, zal ik proberen om een TextDraw-meter voor je maken.

Want dat ziet er wat mooier uit.

- Deze fuctie laat 4 coördinaten zien X, Y, Z en A (Z = de hoogte en A is je rotatie)

- Deze fuctie checkt 10 keer per seconde je positie. (Als je spel erdoor gaat 'laggen = beeld gaat niet meer vloeiend), dan moet je het getal '100' in de regel 'SetTimer("positie",100, 1); verhogen) (1000 = 1 seconde)

- Je kan de postie-meter in/uitschakelen met het commando /showpos

- Voor het resultaat kan je de 2 onderste afbeeldingen bekijken.

Ik hoop dat je weet hoe je deze functies op de juiste manier moet toevoegen:

Bovenaan je script:

#define COLOR_RED 0xFF0000AA
#define COLOR_GREEN 0x00FF00AA

new Positiemeter[MAX_PLAYERS];

forward Position();

Bij public OnGameModeInit:

SetTimer("Position", 100, 1);   //verander de '100' om de frequentie te veranderen  (1000 = 1 keer per seconde)

Bij 'public OnPlayerCommandText' :

if(strcmp(cmd, "/showpos", true) == 0)
{
if(Positiemeter[playerid] == 0)
{
	Positiemeter[playerid] = 1;
	SendClientMessage(playerid, COLOR_GREEN, "Positiemeter ingeschakeld!");
}
else if(Positiemeter[playerid] == 1)
{
	Positiemeter[playerid] = 0;
	SendClientMessage(playerid, COLOR_RED, "Positiemeter uitgeschakeld!");
}
return 1;
}

Onderaan je script:

public Position()
{
for(new i = 0; i < MAX_PLAYERS; i++)
{
	if(IsPlayerConnected(i))
	{
		if(Positiemeter[i] == 1)
		{
new string[256];
new Float:X, Float:Y, Float:Z, Float:A;
GetPlayerPos(i, X, Y, Z);
GetPlayerFacingAngle(i, A);
format(string, sizeof(string), "~n~~n~~n~~n~~n~~n~~p~ X: %.3f  Y: %.3f   Z: %.3f  A: %.2f", X,Y,Z,A);
GameTextForPlayer(i, string, 200, 3);
			return 1;
		}
	}
}
return 1;
}

Voor een beter uitgelijnd script/code, klik >>hier<<

Succes ermeee ;)

Grtz Sandra

post-70241-1194284780_thumb.jpg

post-70241-1194284800_thumb.jpg

Bewerkt: door Sandra18[NL]
Geplaatst: (bewerkt)

Ik heb het ook maar eens getest, maar ik krijg de coords niet te zien onderin beeld. Ook krijg ik de warning dat het regeltje

Positioncount[playerid] == 1;

dat deze ongeldig is, het heeft geen effect. Als ik deze verwijder is de warning ook weg, maar het heeft hetzelfde effect als dat ik hem laat staan; de coords komen niet in beeld.

if(strcmp("/showpos", cmdtext, true, 10) == 0) {<BR>	if(Positioncount[playerid] == 0)<BR> {<BR>  Positioncount[playerid] == 1;<BR>  SendClientMessage(playerid, COLOR_GREEN, "Positiemeter ingeschakeld!");<BR>	}<BR>	else if(Positioncount[playerid] == 1)<BR>	{<BR>		Positioncount[playerid] = 0;<BR>		SendClientMessage(playerid, COLOR_RED, "Positiemeter uitgeschakeld!");<BR>	}<BR>	return 1;<BR>}

Dit hier is mijn algehele stukje omtrent de command, hier ligt de fout volgens mij. Weet iemand misschien wat het probleem zou kunnen zijn? :(

Edit:

Oei, ik zie dat er HTML in staat, zal wel iets fout zijn gegaan. Hopelijk begijp je het, anders zal ik eens kijken of ik het kan aanpassen. :Y

Bewerkt: door Donwell
Geplaatst: (bewerkt)
Ik heb het ook maar eens getest, maar ik krijg de coords niet te zien onderin beeld. Ook krijg ik de warning dat het regeltje

Positioncount[playerid] == 1;

dat deze ongeldig is, het heeft geen effect. Als ik deze verwijder is de warning ook weg, maar het heeft hetzelfde effect als dat ik hem laat staan; de coords komen niet in beeld.

if(strcmp("/showpos", cmdtext, true, 10) == 0) {
if(Positioncount[playerid] == 0) {  
Positioncount[playerid] == 1;
SendClientMessage(playerid, COLOR_GREEN, "Positiemeter ingeschakeld!");	}	
else if(Positioncount[playerid] == 1)	{		
Positioncount[playerid] = 0;		
SendClientMessage(playerid, COLOR_RED, "Positiemeter uitgeschakeld!");	}	
return 1;}

Je hebt zo te zien zelf wat toegevoegd aan dat commando.

Je hebt er een =teken bijgezet:

Dit heb jij:

Positioncount[playerid] == 1;

Het moet zijn:

Positioncount[playerid] = 1;

Kijk nog maar eens naar de code die ik gepost heb ;)

Als je de waarde van een variabele gaat VERANDEREN.... ....dan gebruik je 1 =teken (=)

Als je de waarde van een variabele gaat AFLEZEN.... ....dan gebruik je 2 =tekens (==)

Ik hoop dat het nu wat duidelijker is.

Groetjes Sandra

Bewerkt: door Sandra18[NL]
Geplaatst:

Ah, hij doet het. :) Bedankt voor de uitleg, vroeg me al af wat er nu precies mis ging. :7 Hoe dan ook, hartstikke bedankt. :Y

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