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
koristiPOTREBNO:
- Samp 0.3.7 server - download (http://sa-mp.com/)
- GPS Plugin - download (http://balkan-samp.com/forum/index.php?topic=100477.0)
- ZCMD - download (http://forum.sa-mp.com/showthread.php?t=91354)
KREIRANJE:
Na vrh skripte dodajte: [pawn]#include < RouteConnector >
enum RouteInformation
{
Destination,
CreatedObjects[1024],
bool:calculating,
Lenght
};
new PlayerRoute[MAX_PLAYERS][RouteInformation];[/pawn]
Poslje toga pod OnPlayerConnect dodajte: [pawn]PlayerRoute[playerid][Destination] = -1;[/pawn]
Pod OnPlayerDisconnect: [pawn]if(PlayerRoute[playerid][Destination] != -1) {
DisableGPS(playerid);
}[/pawn]
KOMANDE: [pawn]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;
}[/pawn]
[pawn]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;
}[/pawn]
NA DNO SKRIPTE: [pawn]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;
}[/pawn]
[pawn]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]
= CreatePlayerObject(routeid,1318,NodePosX,NodePosY,NodePosZ+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;
}[/pawn]
[pawn]forward DisableGPS(playerid);
public DisableGPS(playerid)//iskljucivanje GPS
{
for(new i = 0; i < PlayerRoute[playerid][Lenght]; ++i)
{
DestroyPlayerObject(playerid,PlayerRoute[playerid][CreatedObjects]); //brisanje objekata
}
PlayerRoute[playerid][Lenght] = 0;
PlayerRoute[playerid][Destination] = -1;
gps_RemovePlayer(playerid);
return 1;
}[/pawn]
SLIKE:
(http://i.imgur.com/P4meUb3.png)
(http://i.imgur.com/7ZK4e7T.png)