Balkan SA:MP

PAWN skriptanje, gamemodovi, filterskripte, include fajlovi, mape, pluginovi => Razgovor u vezi PAWN - skriptanja => Temu započeo: Fr0z3n poslato Januar 01, 2020, 20:28:38 POSLE PODNE

Naslov: Automatski Respawn
Poruka od: Fr0z3n poslato Januar 01, 2020, 20:28:38 POSLE PODNE
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
Naslov: Odg: Automatski Respawn
Poruka od: malipablo poslato Januar 01, 2020, 20:40:15 POSLE PODNE
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
Naslov: Odg: Automatski Respawn
Poruka od: Salesman poslato Januar 01, 2020, 20:40:30 POSLE PODNE
Ja bih to ovako uradio, ima par gresaka sigurno ali eto sklepano na brzinu.

[pawn]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;
}[/pawn]
Naslov: Odg: Automatski Respawn
Poruka od: daddyDOT 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;
}
Naslov: Odg: Automatski Respawn
Poruka od: Fr0z3n poslato Januar 01, 2020, 20:49:09 POSLE PODNE
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.
Naslov: Odg: Automatski Respawn
Poruka od: daddyDOT poslato Januar 01, 2020, 20:50:44 POSLE PODNE
Citat: Fr0z3n poslato Januar 01, 2020, 20:49:09 POSLE PODNE

Hvala ti pomogao si mi sada znam :)

Mozete lock.
Možeš i ti, ;)
Naslov: Odg: Automatski Respawn
Poruka od: Fr0z3n poslato Januar 01, 2020, 23:46:45 POSLE PODNE
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
Naslov: Odg: Automatski Respawn
Poruka od: 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.
[pawn]
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;
}
[/pawn]
Naslov: Odg: Automatski Respawn
Poruka od: Fr0z3n poslato Januar 02, 2020, 00:12:41 PRE PODNE
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.
[pawn]
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;
}
[/pawn]

Da izgleda da je ovo starija verzija a kako da promenim foreach sintaxu?
Naslov: Odg: Automatski Respawn
Poruka od: malipablo poslato Januar 02, 2020, 00:14:25 PRE PODNE
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
Naslov: Odg: Automatski Respawn
Poruka od: 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
Naslov: Odg: Automatski Respawn
Poruka od: Fr0z3n poslato Januar 02, 2020, 01:47:04 PRE PODNE
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?