SA-MP Forums Archive
[FilterScript] xNavigator - Navigation System ~ with Direction Arrow! - Printable Version

+- SA-MP Forums Archive (https://sampforum.blast.hk)
+-- Forum: SA-MP Scripting and Plugins (https://sampforum.blast.hk/forumdisplay.php?fid=8)
+--- Forum: Filterscripts (https://sampforum.blast.hk/forumdisplay.php?fid=17)
+--- Thread: [FilterScript] xNavigator - Navigation System ~ with Direction Arrow! (/showthread.php?tid=663695)



xNavigator - Navigation System ~ with Direction Arrow! - XpDeviL - 08.02.2019

Hi everyone,

With this system you can use a nice navigation feature on your server.
In addition to marking the selected location on the map, you can also see the direction of the location by the arrow on the top of the vehicle.


» Features » Images






» Download

» MediaFire «


» Note

I used zcmd as a command system when coding the system. I’ve also added it in the rar.


Re: xNavigator - Navigation System ~ with Direction Arrow! - TheSlenderman - 08.02.2019

It reminds me of the Need For Speed Underground 2 for some reason haha, even tho the arrow in that game was blue as far as I remember. You done a good job.


Re: xNavigator - Navigation System ~ with Direction Arrow! - Pottus - 09.02.2019

Never check if floats are equal to a specific value! Always <= or >=

Code:
if (yc == 0.0 || xc == 0.0)
	{
		if(yc == 0 && xc > 0) angle = 0.0;
		else if(yc == 0 && xc < 0) angle = 180.0;
		else if(yc > 0 && xc == 0) angle = 90.0;
		else if(yc < 0 && xc == 0) angle = 270.0;
		else if(yc == 0 && xc == 0) angle = 0.0;
	}
Why bother making extra variables and assignments here? This can be useful when you have more code but this is just a short bit of code why bother?

Code:
	pPos[0] = NavData[pNavID[playerid]][NAV_X];
	pPos[1] = NavData[pNavID[playerid]][NAV_Y];
	pPos[2] = NavData[pNavID[playerid]][NAV_Z];
Where is OnFilterScriptExit() with clean up code?

How do you know that will work for all vehicles and look good?
Code:
AttachObjectToVehicle(ok[playerid], GetPlayerVehicleID(playerid), 0.000000, 0.000000, 1.399998, 0.000000, 90.0, rot + 180);
Alright that is nice but what about checking if the player is a driver?
Code:
if(!IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid, -1, "{FF0000}<!> You must be in a vehicle to use navigation!");
Always define your dialog id's! That way if there is a collision all you have to do is change the id once.
Code:
ShowPlayerDialog(playerid, 112, DIALOG_STYLE_LIST, "[Navigation] Locations", string, "Select", "Close");
Critical issue here.
Code:
if(IsValidObject(ok[playerid])) DestroyObject(ok[playerid]);
If you have the dialog open and you exit a vehicle that object will be destroyed. Now if someone creates an object for any reason and it takes that id and it so happens the player was put back into a vehicle then there is the potential for objects to be deleted.

Always avoid creating player textdraws when a player connects. Reason being, maybe they disconnect. Maybe they fail to log in. What is the point of creating textdraws that majority of the time probably won't be used? Create when a player types a command or when a player actually logs in (gamemodes).

Code:
public OnPlayerConnect(playerid)
{
	NAVpTD[playerid] = CreatePlayerTextDraw(playerid, 405.724487, 415.166564, "Distance Left: ~y~0000.00m");
	PlayerTextDrawLetterSize(playerid, NAVpTD[playerid], 0.179326, 1.109999);
	PlayerTextDrawAlignment(playerid, NAVpTD[playerid], 1);
	PlayerTextDrawColor(playerid, NAVpTD[playerid], -1);
	PlayerTextDrawSetShadow(playerid, NAVpTD[playerid], 0);
	PlayerTextDrawSetOutline(playerid, NAVpTD[playerid], 0);
	PlayerTextDrawBackgroundColor(playerid, NAVpTD[playerid], 255);
	PlayerTextDrawFont(playerid, NAVpTD[playerid], 2);
	PlayerTextDrawSetProportional(playerid, NAVpTD[playerid], 1);
	PlayerTextDrawSetShadow(playerid, NAVpTD[playerid], 0);
	return 1;
}



Re: xNavigator - Navigation System ~ with Direction Arrow! - XpDeviL - 09.02.2019

Quote:
Originally Posted by Pottus
View Post
Why bother making extra variables and assignments here? This can be useful when you have more code but this is just a short bit of code why bother?

Code:
	pPos[0] = NavData[pNavID[playerid]][NAV_X];
	pPos[1] = NavData[pNavID[playerid]][NAV_Y];
	pPos[2] = NavData[pNavID[playerid]][NAV_Z];
Where is OnFilterScriptExit() with clean up code?
I wrote this system a long time ago for my gamemode. Now I took it from the gm. So there could be useless codes that overlooked. Sorry about them. Thanks for the info. I’ll be more carefull next time.


Re: xNavigator - Navigation System ~ with Direction Arrow! - Pottus - 09.02.2019

Quote:
Originally Posted by XpDeviL
View Post
I wrote this system a long time ago for my gamemode. Now I took it from the gm. So there could be useless codes that overlooked. Sorry about them. Thanks for the info. I’ll be more carefull next time.
There is a lot in this most of it is harmless but a few critical mistakes.


Re: xNavigator - Navigation System ~ with Direction Arrow! - XpDeviL - 09.02.2019

Quote:
Originally Posted by Pottus
View Post
There is a lot in this most of it is harmless but a few critical mistakes.
Nice analyse by the way I should use you as my compiler


Re: xNavigator - Navigation System ~ with Direction Arrow! - Pottus - 09.02.2019

Quote:
Originally Posted by XpDeviL
View Post
Nice analyse by the way I should use you as my compiler
Yeah I am really good at knowing what to look for when looking at a script of where the break points/bugs are.