Jump to content

script Respawn aut


Tomas99

Recommended Posts

Zdravím vás lidi.

 

Tak jsem se maličko nudil a někdo po mě chtěl udělat script na respawn prázdních aut. Pak už jsi o něj neřekl tak ho dám tady vám.

 

Vozidla se respawnují bud po určité době, kterou lze změnit na  řádku 6 a7

 Nebo je můžete respawnout pomocí příkazu /rc

 

 

 

#include <a_samp>

#define FILTERSCRIPT

#define RESPAWN_MESSAGE
#define RESPAWN_TIME 60000
#define RESPAWN_DELAY 10000 

#define COLOR_RED 0xAA3333AA
#define COLOR_LIME 0x10F441AA

new string[24+MAX_PLAYERS];

#if defined FILTERSCRIPT
public OnFilterScriptInit()
{
    SetTimer("respawn_delay", RESPAWN_TIME, true);
    return 1;
}
public OnPlayerCommandText(playerid, cmdtext[])
{
    if(!strcmp(cmdtext, "/rc", true))
    {
    new Float:delay = RESPAWN_DELAY / 1000;
    if (IsPlayerAdmin(playerid)){
        format(string, sizeof(string), "[RESPAWN] Všechny prázdné vozidla budou respawnuti za: %.0f Sekund!", delay);
        SendClientMessageToAll(COLOR_RED, string);
        SetTimer("respawn", RESPAWN_DELAY, false);
        return 1;
    }else{
                SendClientMessage(playerid, COLOR_RED, "Nejste Administrátor!");
                return 1;
        }
    }
	return 0;
}

forward respawn();
forward respawn_delay();
forward a_respawn();

public respawn()
{
                for(new car = 1; car <= MAX_VEHICLES; car++)
        {
                if(IsVehicleEmpty(car)) SetVehicleToRespawn(car);
        }
      			SendClientMessageToAll(COLOR_LIME, "[RESPAWN] Všechny prázdná vozidla na serveru byli respawnuti!");
}

public a_respawn()
{
                for(new car = 1; car <= MAX_VEHICLES; car++)
        {
                if(IsVehicleEmpty(car)) SetVehicleToRespawn(car);
        }
}

public respawn_delay()
{
new Float:delay = RESPAWN_DELAY / 1000;
SetTimer("respawn", RESPAWN_DELAY, false);
format(string, sizeof(string), "[RESPAWN] Všechny prázdné vozidla budou respawnuti %.0f Sekund!", delay);
SendClientMessageToAll(COLOR_RED, string);
}



stock IsVehicleEmpty(vehicleid)
{
        for(new i=0; i<MAX_PLAYERS; i++)
        {
                if(IsPlayerInVehicle(i, vehicleid)) return 0;
        }
        return 1;
}
#endif

 

 

Link to comment
Share on other sites

new string[24+MAX_PLAYERS];
~> Právě jsi deklaroval proměnnou s polem 524. Chat ti stejně vezme sotva 144+1/PM.

~> Proč udáváš čas v milisekundách a pak to zase dělíš?

~> Proč přidáváš zbytečně ten preprocesor?

~> Raději jsem udělal svojí verzi, zcela novou, protože upřímně...

 

 

 

 

#include <a_samp>
#define dRespawnTime (5) /* Sekundy */

new 
	sString[144 + 1];

IsVehicleEmpty(vehicleid) {

	for(new i = 0, j = GetPlayerPoolSize(); i <= j; i++) {
		
		if(IsPlayerInAnyVehicle(i) && GetPlayerVehicleID(i) == vehicleid) return false;
  }
	return true;
}

GetPlayerNick(playerid) {

	new 
		sNick[MAX_PLAYER_NAME + 1];
	GetPlayerName(playerid, sNick, sizeof(sNick));
	return sNick;
}

forward tOnPlayerRespawnCars(playerid);
forward tOnGlobalRespawnCars();

public 
	OnFilterScriptInit() {

	SetTimer("tOnGlobalRespawnCars", dRespawnTime * 1000, true);
	return true;	
}

public 
	OnPlayerCommandText(playerid, cmdtext[]) {

	if (!strcmp("/rc", cmdtext)) {

		if (!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, 0xFF000000, "Nemáte dostatečné oprávnění");
		format(sString, sizeof(sString), "Všechna prázdná vozidla budou respawnuta za %i sekund", dRespawnTime);	
		SendClientMessageToAll(0xFF000000, sString);
		SetTimerEx("tOnPlayerRespawnCars", dRespawnTime * 1000, false, "i", playerid);
		return true;	
	}
	return false;
}

public 
	tOnPlayerRespawnCars(playerid) {


	for(new iVehicles=1, j = GetVehiclePoolSize(); iVehicles<=j; iVehicles++) if(IsVehicleEmpty(iVehicles)) SetVehicleToRespawn(iVehicles); 		
	format(sString, sizeof(sString), "Administrátor %s respawnul všechna vozidla", GetPlayerNick(playerid));
	SendClientMessageToAll(0xFF000000, sString);
	return true;
}

public 
	tOnGlobalRespawnCars() {

	for(new iVehicles=1, j = GetVehiclePoolSize(); iVehicles<=j; iVehicles++) if(IsVehicleEmpty(iVehicles)) SetVehicleToRespawn(iVehicles); 		
	SendClientMessageToAll(0xFF000000, "Všechna prázdná vozidla byla respawnuta");
	return true;
}

 

 

~> Pro remcaly jsem to vyzkoušel a funguje to v pohodě. Jak příkazem tak automaticky. 2/10 za shanu, a že to zase není zase tak extrémní hrůza, jako umí někteří "vytvořit"(či okopčit).

Link to comment
Share on other sites

Ani nevím proč jsem to tak udělal, taky jsem si toho již všimnul, ale už se mi to nechtělo upravovat. A jinak děkuju za tvůj názor. Kouknu na ten tvůj kod. :)

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...