[TUT] Kreiranje Advanced GPS Systema


Započeo Vuzimir, Oktobar 26, 2015, 10:28:04 PRE PODNE

prethodna tema - sledeća tema

0 članova i 1 gost pregledaju ovu temu.

UVOD:

- Pozdrav svima, u ovom tutorialu cu vam pokazati kako koristiti Advanced GPS Plugin by Gamer_Z.
  Zasto ovaj tut? Pa u zadnje vrijeme dobijam puno pitanja kako korstiti ovaj plugin i vidim da mnogo njih ne razumje ovaj plugin kako radi i kako se
  koristi


POTREBNO:

KREIRANJE:
Na vrh skripte dodajte:
#include < RouteConnector >
enum RouteInformation
{
	Destination,
	CreatedObjects[1024],
	bool:calculating,
	Lenght
};
new PlayerRoute[MAX_PLAYERS][RouteInformation];


Poslje toga pod OnPlayerConnect dodajte:
PlayerRoute[playerid][Destination] = -1;


Pod OnPlayerDisconnect:
if(PlayerRoute[playerid][Destination] != -1) {
		DisableGPS(playerid);
	}


KOMANDE:
CMD:gpslokacija(playerid, params[]) {
	if(PlayerRoute[playerid][calculating]) { //ovo ce provjeravti dali je ruta kreirana
		SendClientMessage(playerid,GRAD2,"Prvo obrisite vasu izabranu rutu. /gpsoff");
		return 1;
	}
	if(PlayerRoute[playerid][Destination] != -1) { //ovo ce biti sigurnosna provjera da ne kreira igracu 2 rute prvo da iskljuci staru
		DisableGPS(playerid);
	}
	new PlayerClosest = NearestPlayerNode(playerid); //ovo ce uzeti najblizu tacku gdje se igrac nalazi
	new TempDestination = NearestNodeFromPoint(X,Y,Z); //ovo se uzeti najblizu tacku na odredjenim kordinatama X,Y,Z
	
	if(PlayerClosest == TempDestination) { //ako se igrac vec nalazi na odredistu
		    SCM(playerid,GRAD2,"Nalazite se vec na tom odredistu.");
		    return 1;
	}
	if(PlayerClosest == -1) { //ukoliko je igrac daleko od najblize tacke na putu
		SendClientMessage(playerid,GRAD2,"Satelit ne moze da vas pronadje na ovoj lokacij, izadjite na najblizu cestu.");
		return 1;
	}
	if(TempDestination == -1) { //ukoliko je odrediste X,Y,Z daleko od najblize tacke na putu
		SendClientMessage(playerid,GRAD2,"Satelit ne moze da pronadje odrediste, molimo pokusajte ponovo.");
		return 1;
	}
	if(CalculatePath(PlayerClosest,TempDestination,playerid, .GrabNodePositions = true)) { //ukoliko se ruta kreira
		PlayerRoute[playerid][calculating] = true;
	SendClientMessage(playerid,GRAD2,"Kreiranje rute, molimo sacekajte.");
		}
	else { //ako se desi neka greska...
		SendClientMessage(playerid,GRAD2,"Nepoznata greska, molimo pokusajte ponovo.");
	}
	return 1;
}


CMD:gpsoff(playerid, params[]) {
	if(PlayerRoute[playerid][Destination] == -1) return SCM(playerid,-1,"Vas GPS nije ukljucen.");
	SCM(playerid,-1,"Vas GSP je iskljucen!");
	DisableGPS(playerid);
	return 1;
}


NA DNO SKRIPTE:
public OnPlayerClosestNodeIDChange(playerid,old_NodeID,new_NodeID) { //kada igrac stigne na odrediste
	if(new_NodeID != -1) {
		if(PlayerRoute[playerid][Destination] == new_NodeID) {
			SendClientMessage(playerid,-1,"Stigli ste na odrediste.");
			DisableGPS(playerid);
		}
	}
	return 1;
}


public GPS_WhenRouteIsCalculated(routeid,node_id_array[],amount_of_nodes,Float:distance,Float:Polygon[],Polygon_Size,Float:NodePosX[],Float:NodePosY[],Float:NodePosZ[])//Kada se ruta kreira
{
	PlayerRoute[routeid][calculating] = false; //stavlja kreiranje rute na false
	if(amount_of_nodes > 1) { //ako je broj tacaka na putu vece od 1
	    for(new i = 0; i < amount_of_nodes; ++i) {
			PlayerRoute[routeid][CreatedObjects][i] = CreatePlayerObject(routeid,1318,NodePosX[i],NodePosY[i],NodePosZ[i]+1.0,0.0,0.0,0.0,150.0); //kreiranje objekata po putu...
	    }
	    PlayerRoute[routeid][Lenght] = amount_of_nodes; //postavlja broj tacaka na putu
		PlayerRoute[routeid][Destination] = node_id_array[amount_of_nodes-1]; //postavlja destinaciju
	    gps_AddPlayer(routeid); //dodaje igraca na tu rutu
	    SendClientMessage(routeid,-1,"Ruta kreirana, srecan put!");
	}
	else {
		SendClientMessage(routeid,GRAD2,"Satelit ne moze da vas pronadje na ovoj lokacij, izadjite na najblizu cestu.");
	}

	return 1;
}


forward DisableGPS(playerid); 
public DisableGPS(playerid)//iskljucivanje GPS
{
	for(new i = 0; i < PlayerRoute[playerid][Lenght]; ++i)
	{
		DestroyPlayerObject(playerid,PlayerRoute[playerid][CreatedObjects][i]); //brisanje objekata
	}
	PlayerRoute[playerid][Lenght] = 0;
	PlayerRoute[playerid][Destination] = -1;
	gps_RemovePlayer(playerid);
	return 1;
}


SLIKE:



Poslednja Izmena: Oktobar 26, 2015, 11:34:47 PRE PODNE od Vuzimir

My Bike KTM 450 SXF 2008



[]Flynâ„¢

*

Never look down on anybody unless you're helping them up.