Balkan SA:MP

PAWN skriptanje, gamemodovi, filterskripte, include fajlovi, mape, pluginovi => Razgovor u vezi PAWN - skriptanja => Temu započeo: Fr0z3n poslato Mart 25, 2020, 17:21:31 POSLE PODNE

Naslov: Oko respawna vozila
Poruka od: Fr0z3n poslato Mart 25, 2020, 17:21:31 POSLE PODNE
Problem(error/warning): Mozda je glupo pitanje, ali kako da napravim auto respawn svih vozila osim onih u kojima su igraci svakih 30min
i da iskoci u chat tipa pokrenut je respawn svih vozila, vozila ce se respawnovati za 30sec i onda posle 30 sec da se vozila respawnaju i da izadje u chat sva vozila su respawnovana?
Pawno Code: [Izaberi]
Debug iz server_log(ukoliko je u pitanju crashanje servera - crashdetect log): Ne desava se
Slika ://
Naslov: Odg: Oko respawna vozila
Poruka od: Arkoo poslato Mart 26, 2020, 00:10:33 PRE PODNE
Prvo napravis tajmer npr
settimer("predrespawn....blabla      //ovaj ide pod ongamemodeinit   
[pawn]forward predrespawn();
public predrespawn()
{
  //Poruka da ce respawn poceti za npr 30sek
//ovde taj tajmer dole respawnuj
}
[/pawn]
to je tajmer koji ce ispisati poruku svim igracima da ce respawn biti za naprimjer 30sekundi i u tom publicu gdje ispisuje poruku dodas jedan tajmer na 30sekundi

settimer(respawnuj bla blabla

[pawn]forward respawnuj();
public respawnuj()
{
   for(new auto = 1; auto <= 1200; auto++)
   {
         if(IsVehicleEmpty(auto))
     {
         SetVehicleToRespawn(auto);
}
         }
//ovde mozes poruku da su sva vozila respawnovana
}
//ovo ti je funkcija isvehicleempty
stock IsVehicleEmpty(vehicleid)
{
  for(new i; i < MAX_PLAYERS; i++)
  {
    if(IsPlayerConnected(i) && IsPlayerInAnyVehicle(i) && GetPlayerVehicleID(i) == vehicleid) return 0;
  }
  return 1;
}[/pawn]
Nadam se da ces se snaci :D
Naslov: Odg: Oko respawna vozila
Poruka od: dazer poslato Mart 26, 2020, 00:36:41 PRE PODNE
Ovo ti je iz jednog moda, ubiti je jako lagano za napravitii nadam se da ces shvatiti

Prvo dodas funkciju za vreme

[pawn]task SyncTime[60000]()
{
   if( tmpminute == 30 )
   {
       defer VehicleRespawn[58000](0, 1);
      SendClientMessageToAll( 0x41BAB4FF, "(RESPAWN): Server je automatski aktivirao respawn svih vozila." );
      SendClientMessageToAll( 0x41BAB4FF, "(RESPAWN): Respawn ce biti pokrenut za {FFFFFF}(1) {41BAB4}minut." );
   }
   return (true);
}[/pawn]OVO SAD RADI SVAKIH 30min RESPAWN, prilagodi sebi kako ti odgovara, samo umjesto if( tmpminute == 30 ) umjesto ovih 30 stavi koliko minuta zelis

Zatim dodas funkciju koja ce uraditi taj respawn
[pawn]timer VehicleRespawn[10]( vehicleid, provjera )
{
    if(provjera == 1)
   {
       foreach( new i : Player )
      {
         if( IsPlayerInAnyVehicle( i ) )
         {
            if( !occupied[ GetPlayerVehicleID( i ) ] ) occupied[ GetPlayerVehicleID( i ) ] = true;
         }
      }
      defer VehicleRespawn[2000](0, 0);
   }
   else
   {
      if( vehicleid != IVI )
      {
          if( Parked[ vehicleid ] != -1 ) occupied[ vehicleid ] = true;
            if( !occupied[ vehicleid ] )
         {
                 SetVehicleToRespawn( vehicleid );
           }
           else occupied[ vehicleid ] = false;
      }
       if( vehicleid+1 <= GetVehiclePoolSize() ) defer VehicleRespawn(vehicleid+1, 0);
        else ServerInfo[ RRVehicle ] = false, SendClientMessageToAll( 0x41BAB4FF, "(RESPAWN): Respawn svih vozila zavrsen." );
   }
      return(true);
}[/pawn] Tu se nalazi provjera ako se voilo koristi tocnije ako je igrac u njemu da se to ne respawna, a ostalo da se respawna, te na kraju posalje poruku

Nadam se da si shvatio, ukoliko ti nesto nije jasno javi mi se u PP pa cu ti objasniti ako treba.
Naslov: Odg: Oko respawna vozila
Poruka od: Fr0z3n poslato Mart 26, 2020, 15:14:20 POSLE PODNE
Citat: Miki11 poslato Mart 26, 2020, 00:36:41 PRE PODNE
Ovo ti je iz jednog moda, ubiti je jako lagano za napravitii nadam se da ces shvatiti

Prvo dodas funkciju za vreme

[pawn]task SyncTime[60000]()
{
   if( tmpminute == 30 )
   {
       defer VehicleRespawn[58000](0, 1);
      SendClientMessageToAll( 0x41BAB4FF, "(RESPAWN): Server je automatski aktivirao respawn svih vozila." );
      SendClientMessageToAll( 0x41BAB4FF, "(RESPAWN): Respawn ce biti pokrenut za {FFFFFF}(1) {41BAB4}minut." );
   }
   return (true);
}[/pawn]OVO SAD RADI SVAKIH 30min RESPAWN, prilagodi sebi kako ti odgovara, samo umjesto if( tmpminute == 30 ) umjesto ovih 30 stavi koliko minuta zelis

Zatim dodas funkciju koja ce uraditi taj respawn
[pawn]timer VehicleRespawn[10]( vehicleid, provjera )
{
    if(provjera == 1)
   {
       foreach( new i : Player )
      {
         if( IsPlayerInAnyVehicle( i ) )
         {
            if( !occupied[ GetPlayerVehicleID( i ) ] ) occupied[ GetPlayerVehicleID( i ) ] = true;
         }
      }
      defer VehicleRespawn[2000](0, 0);
   }
   else
   {
      if( vehicleid != IVI )
      {
          if( Parked[ vehicleid ] != -1 ) occupied[ vehicleid ] = true;
            if( !occupied[ vehicleid ] )
         {
                 SetVehicleToRespawn( vehicleid );
           }
           else occupied[ vehicleid ] = false;
      }
       if( vehicleid+1 <= GetVehiclePoolSize() ) defer VehicleRespawn(vehicleid+1, 0);
        else ServerInfo[ RRVehicle ] = false, SendClientMessageToAll( 0x41BAB4FF, "(RESPAWN): Respawn svih vozila zavrsen." );
   }
      return(true);
}[/pawn] Tu se nalazi provjera ako se voilo koristi tocnije ako je igrac u njemu da se to ne respawna, a ostalo da se respawna, te na kraju posalje poruku

Nadam se da si shvatio, ukoliko ti nesto nije jasno javi mi se u PP pa cu ti objasniti ako treba.

pm sam ti imam errore