Automatski Respawn


Započeo Fr0z3n, Januar 01, 2020, 20:28:38 POSLE PODNE

prethodna tema - sledeća tema

0 članova i 1 gost pregledaju ovu temu.

Pozdrav.

Moze li mi neko pokazati kako da napravim da se svakih 30min respawnuju sva vozila i da 20sec ranije iskoci tekst u chatu tipa

[Server]Respawn vozila sledi za 20 sekundi molimo udjite u svoje vozilo da se ne bi respawnovalo

napravis tajmer koji se pokrece svakih 29min i 40 sekundi i taj tajmer pokrece funkciju za poruku koja pokrece tajmer koji se ne ponavlja i koji ce izvrsiti funkciju respawna za 20 sekundi

Ja bih to ovako uradio, ima par gresaka sigurno ali eto sklepano na brzinu.

OnGameModeInit(){

	SetTimerEx("RespawnVozila", 1740000, false, "i", 0); //podesavas da na 29 minuta tajmer ide loop vazda

	return true;
}

forward RespawnVozila(num);
public RespawnVozila(num){

	if(num){ // proslo minut
		SetTimerEx("RespawnVozila", 1740000, false, "i", 0);

		foreach(new i : Vehicle) //ako ne radi ovako napravi iter
			SetVehicleToRespawn(i); // rtca svako vozilo pojedinacno
	}

	else //proslo 29 min
		SetTimerEx("RespawnVozila", 60000, false, "i", 1), // podesavas da obavjesti da ce respawn
		SendClientMessageToAll(-1, "Respawn vozila za minut");

	return true;
}
Third-party Pawn Developer

daddyDOT

*

Balkan SA:MP designer

Nisam s vremenom nešto pa sam nabrzinu skockao nešto slično LVG modu sad ako ima šta prilagodi, nezz koji mod koristiš:

SetTimer("RespawnPoruka", 1800000, true);

FUNCTION: RespawnPoruka()
{
	new string[256];
	format(string,sizeof(string),"[Server]Respawn vozila sledi za 20 sekundi molimo udjite u svoje vozilo da se ne bi respawnovalo");
	SendClientMessageToAll(-1,string);
	SetTimer("RespawnStart", 20000, 0);
	return true;
}

FUNCTION: RespawnStart()
{
	new s[256];
	format(s, sizeof(s), "{80C8FE}RESPAWN: {FFFFFF}Sva vozila (non-ownable) su respawnovana, sledeci respawn za sat vremena!");
	SendClientMessageToAll(-1,s);
	RespawnujSve();
	return true;
}

FUNCTION: RespawnujSve()
{
    if(stvoreni == 0)
	{
		for(new car = 1; car <= brojvozila; car++)
		{
		    if(!OwnableVozilo(car))
		    {
		        if(IsVehicleEmpty(car))
				{
			        if(GetVehicleModel(car) != 435 && GetVehicleModel(car) != 584)
			        {
						SetVehicleToRespawn(car);
					}
				}
			}
		}
	}
	else
	{
	    for(new car = 1; car <= sbrojvozila+stvoreni; car++)
		{
		    if(!OwnableVozilo(car))
		    {
		        if(IsVehicleEmpty(car))
				{
			        if(GetVehicleModel(car) != 435 && GetVehicleModel(car) != 584)
			        {
						SetVehicleToRespawn(car);
					}
				}
			}
		}
	}
	return true;
}

Citat: daddy. poslato Januar 01, 2020, 20:46:39 POSLE PODNE
Nisam s vremenom nešto pa sam nabrzinu skockao nešto slično LVG modu sad ako ima šta prilagodi, nezz koji mod koristiš:

SetTimer("RespawnPoruka", 1800000, true);

FUNCTION: RespawnPoruka()
{
	new string[256];
	format(string,sizeof(string),"[Server]Respawn vozila sledi za 20 sekundi molimo udjite u svoje vozilo da se ne bi respawnovalo");
	SendClientMessageToAll(-1,string);
	SetTimer("RespawnStart", 20000, 0);
	return true;
}

FUNCTION: RespawnStart()
{
	new s[256];
	format(s, sizeof(s), "{80C8FE}RESPAWN: {FFFFFF}Sva vozila (non-ownable) su respawnovana, sledeci respawn za sat vremena!");
	SendClientMessageToAll(-1,s);
	RespawnujSve();
	return true;
}

FUNCTION: RespawnujSve()
{
    if(stvoreni == 0)
	{
		for(new car = 1; car <= brojvozila; car++)
		{
		    if(!OwnableVozilo(car))
		    {
		        if(IsVehicleEmpty(car))
				{
			        if(GetVehicleModel(car) != 435 && GetVehicleModel(car) != 584)
			        {
						SetVehicleToRespawn(car);
					}
				}
			}
		}
	}
	else
	{
	    for(new car = 1; car <= sbrojvozila+stvoreni; car++)
		{
		    if(!OwnableVozilo(car))
		    {
		        if(IsVehicleEmpty(car))
				{
			        if(GetVehicleModel(car) != 435 && GetVehicleModel(car) != 584)
			        {
						SetVehicleToRespawn(car);
					}
				}
			}
		}
	}
	return true;
}



Hvala ti pomogao si mi sada znam :)

Mozete lock.

daddyDOT

*

Balkan SA:MP designer


Citat: daddy. poslato Januar 01, 2020, 20:46:39 POSLE PODNE
Nisam s vremenom nešto pa sam nabrzinu skockao nešto slično LVG modu sad ako ima šta prilagodi, nezz koji mod koristiš:

SetTimer("RespawnPoruka", 1800000, true);

FUNCTION: RespawnPoruka()
{
	new string[256];
	format(string,sizeof(string),"[Server]Respawn vozila sledi za 20 sekundi molimo udjite u svoje vozilo da se ne bi respawnovalo");
	SendClientMessageToAll(-1,string);
	SetTimer("RespawnStart", 20000, 0);
	return true;
}

FUNCTION: RespawnStart()
{
	new s[256];
	format(s, sizeof(s), "{80C8FE}RESPAWN: {FFFFFF}Sva vozila (non-ownable) su respawnovana, sledeci respawn za sat vremena!");
	SendClientMessageToAll(-1,s);
	RespawnujSve();
	return true;
}

FUNCTION: RespawnujSve()
{
    if(stvoreni == 0)
	{
		for(new car = 1; car <= brojvozila; car++)
		{
		    if(!OwnableVozilo(car))
		    {
		        if(IsVehicleEmpty(car))
				{
			        if(GetVehicleModel(car) != 435 && GetVehicleModel(car) != 584)
			        {
						SetVehicleToRespawn(car);
					}
				}
			}
		}
	}
	else
	{
	    for(new car = 1; car <= sbrojvozila+stvoreni; car++)
		{
		    if(!OwnableVozilo(car))
		    {
		        if(IsVehicleEmpty(car))
				{
			        if(GetVehicleModel(car) != 435 && GetVehicleModel(car) != 584)
			        {
						SetVehicleToRespawn(car);
					}
				}
			}
		}
	}
	return true;
}


Ipak ne radi ili ja nemam znanje da prilagodim ako ti nesto znaci koristim YSi procese pa ako mozes da napravis da je kompitabilan sa njim jer sam ipack pocetnik... :-X

Za ovo obavezno koristi y_iterate koji dodajes sa:
#include <YSI_Data\y_iterate>
Ako koristis stariju verziju YSI-a samo prepravi mesto includovanja i promeni sintaksu foreacha.
public OnGameModeInit(){
	SetTimer("RespawnMessage", 18000000, true);
	return 1;
}

IsVehicleEmpty(carid)
{
    foreach(new i : Player)
        if(IsPlayerInVehicle(i, carid)) return 0;

    return 1;
}

forward RespawnMessage();
forward RespawnCars();

public RespawnMessage(){
	SetTimer("RespawnCars", 20000, false);
	SendClientMessageToAll(-1,"Sva prazna vozila ce biti respawnovana za 20 sekundi.");
	return 1;
}

public RespawnCars(){
	foreach(new vozilo : Vehicles){
		if(IsVehicleEmpty(vozilo)
			SetVehicleToRespawn(vozilo);
	}
	SendClientMessageToAll(-1,"Sva prazna vozila su respawnovana. Sledeci respawn je za 30 minuta.");
	return 1;
}

Citat: malipablo poslato Januar 02, 2020, 00:03:49 PRE PODNE
Za ovo obavezno koristi y_iterate koji dodajes sa:
#include <YSI_Data\y_iterate>
Ako koristis stariju verziju YSI-a samo prepravi mesto includovanja i promeni sintaksu foreacha.
public OnGameModeInit(){
	SetTimer("RespawnMessage", 18000000, true);
	return 1;
}

IsVehicleEmpty(carid)
{
    foreach(new i : Player)
        if(IsPlayerInVehicle(i, carid)) return 0;

    return 1;
}

forward RespawnMessage();
forward RespawnCars();

public RespawnMessage(){
	SetTimer("RespawnCars", 20000, false);
	SendClientMessageToAll(-1,"Sva prazna vozila ce biti respawnovana za 20 sekundi.");
	return 1;
}

public RespawnCars(){
	foreach(new vozilo : Vehicles){
		if(IsVehicleEmpty(vozilo)
			SetVehicleToRespawn(vozilo);
	}
	SendClientMessageToAll(-1,"Sva prazna vozila su respawnovana. Sledeci respawn je za 30 minuta.");
	return 1;
}


Da izgleda da je ovo starija verzija a kako da promenim foreach sintaxu?

Samo zamenis: foreach(new i : Player)   ->   foreach(Player,i) i isto za vozila, i u prvom tajmeru postavis vrednost 1780000 umesto 1800000 jer ima jos jedan tajmer za popunjavanje ostalih 20sekundi

Samo da napomenem, ovo što su ti gore dali je katastrofa za respawn svih vozila...
Kreiraj iterator za svako vozilo i ažuriraj ga na promeni stanja, ovako bespotrebno loop kroz sve igrače, glupost teška, balkanci...

Kreiraš task koji se ponavlja na svakih koliko već i tjt

Citat: P47R14RCH poslato Januar 02, 2020, 00:42:44 PRE PODNE
Samo da napomenem, ovo što su ti gore dali je katastrofa za respawn svih vozila...
Kreiraj iterator za svako vozilo i ažuriraj ga na promeni stanja, ovako bespotrebno loop kroz sve igrače, glupost teška, balkanci...

Kreiraš task koji se ponavlja na svakih koliko već i tjt


Imas li ti mozda vec gotovo?