Balkan SA:MP

PAWN skriptanje, gamemodovi, filterskripte, include fajlovi, mape, pluginovi => Razgovor u vezi PAWN - skriptanja => Temu započeo: ShadowNET poslato Mart 26, 2016, 15:29:23 POSLE PODNE

Naslov: [Pomoc] Trafic Distance
Poruka od: ShadowNET poslato Mart 26, 2016, 15:29:23 POSLE PODNE
Skripta koju koristim:0
Detaljan opis problema:Radim dynamican system trafika.I sad komandom napravitrafiku upisujem kordinate (x y z) mesta de sam uneo cmd u neki fajl.I sad kada imam vise trafika, kako da napravim da kada kupujem trafike skripta prodje kroz sve trafike na serveru i pomocu [pawn]IsPlayerInRangeOfPoint[/pawn] proveri da li je blizu neke trafike.
napomena da je svaka tarfika definisana sa ID-jem.
Dio skripte:Evo ja sam probao ovako al kada imam vise trafika radi samo na jednoj.
[pawn]CMD:kupitrafiku(playerid, params[])
{
   for(new t = 0; t < sizeof(TrafikInfo); t++)
   {
      if(!IsPlayerInRangeOfPoint(playerid, 2.0, TrafikInfo[t][TrafikaX], TrafikInfo[t][TrafikaY], TrafikInfo[t][TrafikaZ])) return SCM(playerid, Error, "Nisi blizu ni jedne trafike");
      if(TrafikInfo[t][TrafikaKupljena] == 1) return SCM(playerid, Error, "Ova trafika je vec kupljena");
      if(PlayerInfo[playerid][pTrafika] == 1) return SCM(playerid, Error, "Vec posedujes trafiku");
      new message[128];
      format(message, sizeof(message), "Uspesno si kupio trafiku ID: %d", TrafikInfo[t][TrafikID]);
      SCM(playerid, Zelena, message);
      break;
   }
   return 1;
}[/pawn]
Neke slike/video za lakse dobivanje pomoci(neobavezno):
Naslov: Odg: [Pomoc] Trafic Distance
Poruka od: Vuzimir poslato Mart 26, 2016, 16:59:26 POSLE PODNE
ovako probaj: [pawn]CMD:kupitrafiku(playerid, params[])
{
   for(new t = 0; t < sizeof(TrafikInfo); t++)
   {
      if(!IsPlayerInRangeOfPoint(playerid, 2.0, TrafikInfo[t][TrafikaX], TrafikInfo[t][TrafikaY], TrafikInfo[t][TrafikaZ])) {
         SCM(playerid, Error, "Nisi blizu ni jedne trafike");
         continue;
      }
      if(TrafikInfo[t][TrafikaKupljena] == 1) {
         SCM(playerid, Error, "Ova trafika je vec kupljena");
         continue;
      }
      if(PlayerInfo[playerid][pTrafika] == 1) {
         SCM(playerid, Error, "Vec posedujes trafiku");
         continue;
      }
      new message[35];
      format(message, sizeof(message), "Uspesno si kupio trafiku ID: %d", TrafikInfo[t][TrafikID]);
      SCM(playerid, Zelena, message);
      break;
   }
   return 1;
}[/pawn]

i pazi na stringove nema potrebe da je 128 kada je dovoljno 35...
Naslov: Odg: [Pomoc] Trafic Distance
Poruka od: ShadowNET poslato Mart 26, 2016, 19:35:24 POSLE PODNE
Sada kupuje trafike ali kada kupim trafiku on napise Nisi blizu ni jedne trafike i onda  Uspesno si kupio trafiku ID
Znaci salje i jedno i drugo
Naslov: Odg: [Pomoc] Trafic Distance
Poruka od: GoodbyeSamp poslato Mart 27, 2016, 01:10:32 PRE PODNE
a gde else?
Naslov: Odg: [Pomoc] Trafic Distance
Poruka od: ShadowNET poslato Mart 27, 2016, 11:30:15 PRE PODNE
Sta ce mi else funkcija prolazi korz provere i ako je sve uredu odradi posao.
Zna li neko do cega je?
Naslov: Odg: [Pomoc] Trafic Distance
Poruka od: Vuzimir poslato Mart 27, 2016, 13:31:10 POSLE PODNE
Citat: ShadowNET poslato Mart 27, 2016, 11:30:15 PRE PODNE
Sta ce mi else funkcija prolazi korz provere i ako je sve uredu odradi posao.
Zna li neko do cega je?

Znaci samo kad se kupi ispise onda da nisi blizu pa kupi? prvo da nisi blizu pa da si kupio? Msm ono ce uvjek ispisati da nisi blizu trafike jer je u loopu tako stavljeno ako imas 100 trafika i 101 ti trebas da kupis za svih 100 prvih ce napisati da nisi blizu njih...

ovako dodaj: [pawn]CMD:kupitrafiku(playerid, params[])
{
   new kupio = 0;
   if(PlayerInfo[playerid][pTrafika] == 1) {
      SCM(playerid, Error, "Vec posedujes trafiku");
      return 1;
   }
   for(new t = 0; t < sizeof(TrafikInfo); t++)
   {
      if(TrafikInfo[t][TrafikaKupljena] == 1) {
         SCM(playerid, Error, "Ova trafika je vec kupljena");
         break;
      }
      new message[35];
      format(message, sizeof(message), "Uspesno si kupio trafiku ID: %d", TrafikInfo[t][TrafikID]);
      SCM(playerid, Zelena, message);
      kupio = 1;
      break;
   }
   if(kupio == 0) {
      SCM(playerid, Error, "Nisi blizu ni jedne trafike");
   }
   return 1;
}[/pawn]
Naslov: Odg: [Pomoc] Trafic Distance
Poruka od: ShadowNET poslato Mart 27, 2016, 15:31:40 POSLE PODNE
Problem.Kod koje god trafike da stanem uvek pise kupio si trafiku ID 0
Naslov: Odg: [Pomoc] Trafic Distance
Poruka od: Vuzimir poslato Mart 27, 2016, 15:33:50 POSLE PODNE
ovako dodaj: [pawn]CMD:kupitrafiku(playerid, params[])
{
   new kupio = 0;
   if(PlayerInfo[playerid][pTrafika] == 1) {
      SCM(playerid, Error, "Vec posedujes trafiku");
      return 1;
   }
   for(new t = 0; t < sizeof(TrafikInfo); t++)
   {
        if(IsPlayerInRangeOfPoint(playerid, 2.0, TrafikInfo[t][TrafikaX], TrafikInfo[t][TrafikaY], TrafikInfo[t][TrafikaZ])) {
         if(TrafikInfo[t][TrafikaKupljena] == 1) {
            SCM(playerid, Error, "Ova trafika je vec kupljena");
            break;
         }
         new message[35];
         format(message, sizeof(message), "Uspesno si kupio trafiku ID: %d", TrafikInfo[t][TrafikID]);
         SCM(playerid, Zelena, message);
         kupio = 1;
         break;
      }
    }
   if(kupio == 0) {
      SCM(playerid, Error, "Nisi blizu ni jedne trafike");
   }
   return 1;
}[/pawn][/pawn]
Naslov: Odg: [Pomoc] Trafic Distance
Poruka od: ShadowNET poslato Mart 28, 2016, 18:43:16 POSLE PODNE
Moze lock