Jump to content
  • 0

pomoc CarSpawner


PR0T0TYP3

Dotaz

Čaute.

Dnes som sa rozhodol napawnit si carspawner, ale vyskytla sa menšia chyba:

Pawn code:

 

new Float:x, Float:y, Float:z;
new vz0;

OnPlayerCommandText(playerid, cmdtext[])
{
   if(!strcmp(cmdtext, "/landstalker", true))
   {
       GetPlayerPos(playerid, x, y, z);
       vz0 = CreateVehicle(400, x+2, y+1, z, 0, 0, 0, 9999999999999999999); //9999999999999 len aby nemizlo
       PutPlayerInVehicle(playerid, vz0, 0);
       SendClientMessage(playerid, 0xFF0000FF, "Spawnol si vozidlo: Landstalker, jeho id je 400, tuninguje sa v Transfenderi");
       return 1;
   }
   return 0;
 }
OnPlayerCommandText(playerid, cmdtext[])
{
   if(!strcmp(cmdtext, "/znicauta", true))
   {
       DestroyVehicle(vz0);
       SendClientMessage(playerid, 0xFF0000FF, "Zničil si všetky spawnuté autá");
       return 1;
   }

 

Na tomto nieje asi nič zlé, ale keď idem do hry, napíšem /landstalker tak mi ho spawne, keď dam /znicauta,

tak ho zničí, problém je až vtedy, keď napíšem /landstalker viac krát, zmaže iba naposledy vytvorené auto,

mohli by ste mi s tým pomôčť? Ďakujem

Link to comment
Share on other sites

9 odpovědí na tuto otázku

Recommended Posts

  • 0

if(!strcmp(cmdtext, "/landstalker", true))
   {
if(vz0 != 0) return SendClientMessage(playerid, -1, "Máš už vytvořené jedno auto..");
       GetPlayerPos(playerid, x, y, z);
       vz0 = CreateVehicle(400, x+2, y+1, z, 0, 0, 0, -1);
       PutPlayerInVehicle(playerid, vz0, 0);
       SendClientMessage(playerid, 0xFF0000FF, "Spawnol si vozidlo: Landstalker, jeho id je 400, tuninguje sa v Transfenderi");
       return 1;
   }
   return 0;
 }

 

if(!strcmp(cmdtext, "/znicauta", true))
   {
       DestroyVehicle(vz0);
vz0 = 0;
       SendClientMessage(playerid, 0xFF0000FF, "Zničil si všetky spawnuté autá");
       return 1;
   }

Link to comment
Share on other sites

  • 0
if(!strcmp(cmdtext, "/landstalker", true))
   {
if(vz0 != 0) return SendClientMessage(playerid, -1, "Máš už vytvořené jedno auto..");
       GetPlayerPos(playerid, x, y, z);
       vz0 = CreateVehicle(400, x+2, y+1, z, 0, 0, 0, -1);
       PutPlayerInVehicle(playerid, vz0, 0);
       SendClientMessage(playerid, 0xFF0000FF, "Spawnol si vozidlo: Landstalker, jeho id je 400, tuninguje sa v Transfenderi");
       return 1;
   }
   return 0;
 }

 

if(!strcmp(cmdtext, "/znicauta", true))
   {
       DestroyVehicle(vz0);
vz0 = 0;
       SendClientMessage(playerid, 0xFF0000FF, "Zničil si všetky spawnuté autá");
       return 1;
   }

 

lenze on to chce mat na viac aut nie na jedno...

Link to comment
Share on other sites

  • 0
Píše, že mu to zničí jen poslední vozidlo... udělej si podmínku na maximum aut a potom je tvoř do maxima... a zničíš je cyklusem

 

Nápad je to super, ale tvorca scriptu nieje dobrý pawner (poznám osobne), mohol by si sem tú podmienku dať?

Link to comment
Share on other sites

  • 0
if(!strcmp(cmdtext, "/landstalker", true))
   {
if(vz0 != 0) return SendClientMessage(playerid, -1, "Máš už vytvořené jedno auto..");
       GetPlayerPos(playerid, x, y, z);
       vz0 = CreateVehicle(400, x+2, y+1, z, 0, 0, 0, -1);
       PutPlayerInVehicle(playerid, vz0, 0);
       SendClientMessage(playerid, 0xFF0000FF, "Spawnol si vozidlo: Landstalker, jeho id je 400, tuninguje sa v Transfenderi");
       return 1;
   }
   return 0;
 }

 

if(!strcmp(cmdtext, "/znicauta", true))
   {
       DestroyVehicle(vz0);
vz0 = 0;
       SendClientMessage(playerid, 0xFF0000FF, "Zničil si všetky spawnuté autá");
       return 1;
   }

 

lenze on to chce mat na viac aut nie na jedno...

 

Tak musí nastavit tu proměnnou všem těm spawnutém autům a při zničení vytvořit cyklus kterej zničí všechny promenné.

 

new auto[50];
new pocet;

if(..prikaz na vytvoreni..)
{
auto[pocet] = CreateVehicle(..);
pocet ++
}

if(..prikaz na zniceni..)
{
for(new i=0;i<50;i++) if(auto[i]) DestroyVehicle(auto[i]);
pocet=0;
}

 

Melo by to byt spravne.

Pokuď chceš podmínku třeba na max. 50 aut tak

if(pocet == 50) return SCM(pid, -1, "Je vytvořeno 50 aut, musís je smazat.");

Link to comment
Share on other sites

  • 0
new vz0; to je účel, aby to bylo globální?
//9999999999999 len aby nemizlo

http://wiki.sa-mp.com/wiki/AddStaticVehicle

:thumbup: :clap: to je v skutku geniálny nápad

by to bol, kebyže sa dá statický objekt zničiť :facepalm:

 

 

Je tu viac variácii.... ukážem pár

 

#define MAX_MOJICH_VOZIDIEL 500
new Auto[MAX_MOJICH_VOZIDIEL] = {-1,...}; //vytvoríme pole premien a každej nastavíme hodnotu "-1"

stock GetFreeVehicleSlot(){
for(new i; i < MAX_MOJICH_VOZIDIEL+1;i++){
if(Auto[i] == -1) return i;
}
return -1; // žiadne auto není volné = treba najprv zmazať
}

 if(!strcmp(cmdtext, "/landstalker", true))
   {
       GetPlayerPos(playerid, x, y, z);
       new slot = GetFreeVehicleSlot();
       if(slot == -1) return SendClientMessage(playerid, 0xFF0000FF, "Uz mas spawnutých vela áut, musíš ich zničiť");
       Auta[slot] = CreateVehicle(400, x+2, y+1, z, 0, 0, 0, -1); 
       PutPlayerInVehicle(playerid, vz0, 0);
       SendClientMessage(playerid, 0xFF0000FF, "Spawnol si vozidlo: Landstalker, jeho id je 400, tuninguje sa v Transfenderi");
       return 1;
   }
   if(!strcmp(cmdtext, "/znicauta", true))
   {
      for(new i; i < MAX_MOJICH_VOZIDIEL+1;i++){
     if(Auto[i] == -1) break;   
    DestroyVehicle(Auto[i]);
     }
       SendClientMessage(playerid, 0xFF0000FF, "Zničil si všetky spawnuté autá");
       return 1;
   }
   return 0;
 }

 

Alebo si spraviť aj premenu... ale to, ako vidím, ma už predbehol čokoládový brat...

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...