Jump to content
  • 0

pomoc ZnizenieAuta


IchNar

Dotaz

Popis problému:


Mám spravené /createvehicle,čo vytvorí auto,potom mám /destroycars,čo tie všetky autá zničí,ale chcel som poradiť ako mám spraviť príkaz,aby zničili len jedno auto to čo bolo posledné vytvorené.


Chyby/varování kompilátoru a při běhu:


Kód:

 

//vytvaranie auta
CMD:createvehicle(playerid,params[])
{
	new Float:x,Float:y,Float:z;
	new menoauta[128],string[128],farba1,farba2,vehicle;
	if(AdminLevel[playerid] < 2)return SendClientMessage(playerid,COLOR_RED,"[!] {FFFFFF}Nemáš oprávnenie na tento príkaz");
	if(sscanf(params,"s[128]ii",menoauta,farba1,farba2))return SendClientMessage(playerid,COLOR_RED,"[!] {FFFFFF}Musíš zadať /createvehicle [ID/meno auta] [FARBA1] [FARBA2]");
	if(Server[cars] == 50)return SendClientMessage(playerid,COLOR_RED,"[!] {FFFFFF}Nemôžeš vytvoriť viac ako 50 áut,musíš ich najprv zničit /destroycars");
	if(farba1 > 126 || farba1 < 0 || farba2 > 126 || farba2 < 0)return SendClientMessage(playerid,COLOR_RED,"[!] {FFFFFF}Rozmezie ID farieb je od 0-126");
	if(IsNumeric(menoauta))
	{
           vehicle = strval(menoauta);
	}
	else
	{
            vehicle = ReturnVehicleID(menoauta);
	}
	if(vehicle  < 400 || vehicle > 611)return SendClientMessage(playerid,COLOR_RED,"[!] {FFFFFF}Rozmezie id áut je od 400-611");
	new Float:a;
	GetPlayerFacingAngle(playerid,a);
	GetPlayerPos(playerid,x,y,z);
	if(IsPlayerInAnyVehicle(playerid) == 1)
	{
		   GetXYInFrontOfPlayer(playerid,x,y,8);
	}
	else
	{
           GetXYInFrontOfPlayer(playerid,x,y,8);
	}
	Auta[Server[cars]] = CreateVehicle(vehicle,x,y,z,a+90,farba1,farba2,0,0);
	LinkVehicleToInterior(Auta[Server[cars]],GetPlayerInterior(playerid));
	format(string,sizeof(string),"[%d/50]Úspešne si si spawnol %s,použi /destroycars pre zničenie",Server[cars]+1,VehicleNames[vehicle - 400]);
	Benzin[Auta[Server[cars]]] = 100;
	SendClientMessage(playerid,COLOR_RED,string);
	Server[cars]++;
	return 1;
}
//nicenie vsetkych aut
CMD:destroycars(playerid,params[])
{
	new destroying[MAX_PLAYERS];
    if(AdminLevel[playerid] < 2)return SendClientMessage(playerid,COLOR_RED,"[!] {FFFFFF}Nemáš oprávnenie na tento príkaz");
    if(Server[cars] == 0)return SendClientMessage(playerid,COLOR_RED,"[!] {FFFFFF}Žiadne vozidlo nieje vytvorené");
       for(new E=0;E<50;E++)
       {
              if(Auta[E])
              {
				   destroying[playerid] = 1;
                   DestroyVehicle(Auta[E]);
		           Server[cars] = 0;
	          }
       }
       if(destroying[playerid] == 1)
       {
			   SendClientMessage(playerid,COLOR_RED,"[!] {FFFFFF}Vytvorené autá boli úspešne zničené");
			   destroying[playerid] = 0;
       }
     return 1;
}

 




Dodatečné poznámky:

Link to comment
Share on other sites

4 odpovědí na tuto otázku

Recommended Posts

  • 0
  • Administrátor

CMD:destroylastcar()

{

     new id = CreateVehicle(blablalbalba);

 

    DestroyVehicle(id);

    if( id > 0 ) DestroyVehicle(id-1);

 

}

  • Líbí se mi to! (+1) 1
Link to comment
Share on other sites

  • 0

Trošku jsem ti poupravil ten kód a přidal ten, co jsi žádal icon_e_wink.gif

 

 

 

//vytvaranie auta
CMD:createvehicle(playerid,params[])
{
	new Float:x,Float:y,Float:z, Float: a;
	new menoauta[128],string[128],farba1,farba2,vehicle;
	
	if(AdminLevel[playerid] < 2)return SendClientMessage(playerid,COLOR_RED,"[!] {FFFFFF}Nemáš oprávnenie na tento príkaz");
	if(sscanf(params,"s[128]ii",menoauta,farba1,farba2))return SendClientMessage(playerid,COLOR_RED,"[!] {FFFFFF}Musíš zadať /createvehicle [ID/meno auta] [FARBA1] [FARBA2]");
	if(Server[cars] == 50)return SendClientMessage(playerid,COLOR_RED,"[!] {FFFFFF}Nemôžeš vytvoriť viac ako 50 áut,musíš ich najprv zničit /destroycars");
	if(farba1 > 126 || farba1 < 0 || farba2 > 126 || farba2 < 0)return SendClientMessage(playerid,COLOR_RED,"[!] {FFFFFF}Rozmezie ID farieb je od 0-126");
	if(IsNumeric(menoauta)){	vehicle = strval(menoauta);	}
	else{	vehicle = ReturnVehicleID(menoauta);	}
	if(vehicle  < 400 || vehicle > 611)return SendClientMessage(playerid,COLOR_RED,"[!] {FFFFFF}Rozmezie id áut je od 400-611");
	
	GetPlayerFacingAngle(playerid,a);
	GetPlayerPos(playerid,x,y,z);
 	GetXYInFrontOfPlayer(playerid,x,y,8); // ta podmínka, co jsi tady měl byla úplně zbytečná, protože vždy se tak funkce zavolala

	Auta[Server[cars]] = CreateVehicle(vehicle,x,y,z,a+90,farba1,farba2,0,0);
	LinkVehicleToInterior(Auta[Server[cars]],GetPlayerInterior(playerid));
	Benzin[Auta[Server[cars]]] = 100;
	Server[cars]++;

	format(string,sizeof(string),"[%d/50]Úspešne si si spawnol %s,použi /destroycars pre zničenie",Server[cars],VehicleNames[vehicle - 400]);
	SendClientMessage(playerid,COLOR_RED,string);
	
	return 1;
}

//nicenie vsetkych aut
CMD:destroycars(playerid,params[])
{
	//ta proměnná destroying byla úplně k ničemu...
    if(AdminLevel[playerid] < 2)return SendClientMessage(playerid,COLOR_RED,"[!] {FFFFFF}Nemáš oprávnenie na tento príkaz");
    if(Server[cars] == 0)return SendClientMessage(playerid,COLOR_RED,"[!] {FFFFFF}Žiadne vozidlo nieje vytvorené");
	for(new E=0; E < Server[cars]; E++) //optimalizovanější - neprojíždí věech 50 možných, ale jen ty co skutečně existují 
    {
    	if(Auta[E])
     	{
      		DestroyVehicle(Auta[E]);
        }
	}
	Server[cars] = 0;
	SendClientMessage(playerid,COLOR_RED,"[!] {FFFFFF}Vytvorené autá boli úspešne zničené");
 	return 1;
}

//ničení posledního vytvořeného
CMD:destroylastcar(playerid,params[])
{
    if(AdminLevel[playerid] < 2)return SendClientMessage(playerid,COLOR_RED,"[!] {FFFFFF}Nemáš oprávnenie na tento príkaz");
    if(Server[cars] == 0)return SendClientMessage(playerid,COLOR_RED,"[!] {FFFFFF}Žiadne vozidlo nieje vytvorené");
    if(Auta[Server[cars]-1]) //jen pro jistotu
    {
	DestroyVehicle(Auta[Server[cars]-1]);
	Server[cars]--;
	SendClientMessage(playerid,COLOR_RED,"[!] {FFFFFF}Posledne vytvorené auto bolo úspešne zničené");
    }
    return 1;
} 

 

 

Edited by GaRGoyLeS
  • Líbí se mi to! (+1) 1
Link to comment
Share on other sites

  • 0

Popis problému:

 

Mám spravené /createvehicle,čo vytvorí auto,potom mám /destroycars,čo tie všetky autá zničí,ale chcel som poradiť ako mám spraviť príkaz,aby zničili len jedno auto to čo bolo posledné vytvorené.

To, že to přetáhneš z eXisu a trošku předěláš, si moc nepomůžeš... Máš 2 nejlepší možnosti. Za 1. pokud chceš vždycky u každého admina nechat, aby mohl vytvořit pouze jedno auto, tak to je snadné, prostě uložíš do proměnné id vozidla. Pokud chceš ale nějakou řadu, kdy vytváříš postupně auta, a pak je po zpátku ničíš, tak to je nejlepší si udělat pole, zkusit cyklus z konce a vracet se s tím, že kontroluješ, zda dané auto vytvořil(či existuje) a prostě ho zničit.

  • Líbí se mi to! (+1) 1
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...