[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: [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:



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

My Bike KTM 450 SXF 2008