Balkan SA:MP

PAWN skriptanje, gamemodovi, filterskripte, include fajlovi, mape, pluginovi => Razgovor u vezi PAWN - skriptanja => Temu započeo: #Bobby poslato Novembar 22, 2015, 15:40:22 POSLE PODNE

Naslov: [POMOC] Prikolica
Poruka od: #Bobby poslato Novembar 22, 2015, 15:40:22 POSLE PODNE
Skripta koju koristim: Trucking.
Detaljan opis problema: Pozdrav, znači zanima me kako da napravim da ako igrač ima pokrenut posao, kada mu se otkači prikolica sa kamiona da se posao automatski zaustavi, i oduzme mu odredjenu količinu novaca, izvinjavam se ako sam otvorio temu na krivom mjestu. :-*
Naslov: Odg: [POMOC] Prikolica
Poruka od: LuKsA poslato Novembar 25, 2015, 10:39:40 PRE PODNE
Mozes kroz neki timer po igracu (A moze biti i globalni, ali bolje je po igracu jer ce globalni loopat sve igrace online).

https://wiki.sa-mp.com/wiki/IsTrailerAttachedToVehicle ovo koristis sa vehicle ID-om i provjeris :) primjer:

if(!IsTrailerAttachedToVehicle(vehid))
{
     //kod za zaustaviti posao
}

PS. Ako ces radit timer po igracu, nezaboravi ga zaustavit(killat).
Naslov: Odg: [POMOC] Prikolica
Poruka od: Assassin007 poslato Novembar 25, 2015, 13:24:39 POSLE PODNE
Ne moraš opće stavljati tajmer mozes preko bool variable koja provjerava dali je prikolica zakacena ako je bool true onda radi posao ako je bool false onda posao prekida i oduzima mu pare
Naslov: Odg: [POMOC] Prikolica
Poruka od: LuKsA poslato Novembar 25, 2015, 20:17:50 POSLE PODNE
Citat: Assassin007 poslato Novembar 25, 2015, 13:24:39 POSLE PODNE
Ne moraš opće stavljati tajmer mozes preko bool variable koja provjerava dali je prikolica zakacena ako je bool true onda radi posao ako je bool false onda posao prekida i oduzima mu pare

Ajde mi onda reci kad ce se ta "bool" varijabla pokretat? Ne lupetaj ako neznas.. Mora biti neki event gdje ce se provjeravat. Moras stavit nesto vremenski da se provjerava, jedino ako on misli provjeravat kod zavrsetka posla i sl. Ali koliko vidim on želi da kad mu se prikolica otkači da odmah mu napiše da mu je otkačena, to može postići samo s timerom, nikako drugačije.

Reci mi sta bi postigo s tvojom "bool varijablom", bezveze opterećuješ mod dodatnim varijablama koje su totalno bespotrebne. Zapamti: Uvijek koristi uvedene "default" funkcije iz pawn-a prije nego svoje ručno napravljene, jer su one najbrže i najefikasnije. + tvoja bool varijabla nebi uvijek mogla znati kada je prikolica zakacena a kada nije, to bi opet morao rjesiti sa IsTrailerAttachedToVehicle.
Naslov: Odg: [POMOC] Prikolica
Poruka od: Assassin007 poslato Novembar 25, 2015, 21:07:47 POSLE PODNE
Citat: LuKsA poslato Novembar 25, 2015, 20:17:50 POSLE PODNE
Citat: Assassin007 poslato Novembar 25, 2015, 13:24:39 POSLE PODNE
Ne moraš opće stavljati tajmer mozes preko bool variable koja provjerava dali je prikolica zakacena ako je bool true onda radi posao ako je bool false onda posao prekida i oduzima mu pare

Ajde mi onda reci kad ce se ta "bool" varijabla pokretat? Ne lupetaj ako neznas.. Mora biti neki event gdje ce se provjeravat. Moras stavit nesto vremenski da se provjerava, jedino ako on misli provjeravat kod zavrsetka posla i sl. Ali koliko vidim on želi da kad mu se prikolica otkači da odmah mu napiše da mu je otkačena, to može postići samo s timerom, nikako drugačije.

Reci mi sta bi postigo s tvojom "bool varijablom", bezveze opterećuješ mod dodatnim varijablama koje su totalno bespotrebne. Zapamti: Uvijek koristi uvedene "default" funkcije iz pawn-a prije nego svoje ručno napravljene, jer su one najbrže i najefikasnije. + tvoja bool varijabla nebi uvijek mogla znati kada je prikolica zakacena a kada nije, to bi opet morao rjesiti sa IsTrailerAttachedToVehicle.


Broj 1. Varijabla bih se pokretala kada bih pokrenuo posao.

Broj 2. On zeli koliko sam ja skuzio da kada mu prikolica otpadne da se prekine posao i da mu naplati to sto mu je pala prikolica.

Broj 3. Kao prvo bool variabla je najmanja variabla koja postoj sastoji se samo od true ili false (zauzima najmanje prostora) i nije beskorisna kada se koristi.

Broj 4 Priznajem upravu si sa default samp funkcijama ali sta je to nego bool varijabla reci ti meni.

Broj 5 Ti bih stavljao tajmere koji usporuju mod ne mnog nego previse umisto varijable daj molim te.

Ako niste znali varijabla (bool) provjerava dali je tvrdnja istinita ili nije a memorija jedne varijable je maksimalno do jedan bayte
A variable is basically a bit of memory, it's where data is stored and can be changed and read as required. Variables are one or more cells, a cell is 32 bits (4 bytes)
Timer
https://wiki.sa-mp.com/wiki/SetTimer
The use of many timers will result in increased memory/cpu usage.
samo procitaj ovu liniju na toj stranici i dovoljno je reci.
Naslov: Odg: [POMOC] Prikolica
Poruka od: [CH]Lenon poslato Novembar 25, 2015, 21:09:52 POSLE PODNE
@Assassin007 ti moras imati neki timer gdje ce se provjeravati da li mu je prikacena prikolica ili ne (jer on zeli da cim mu se otkaci prikolica da mu se posao prekine), koji dio ti ne shvatas?
Naslov: Odg: [POMOC] Prikolica
Poruka od: Assassin007 poslato Novembar 25, 2015, 21:43:29 POSLE PODNE
Zasto bih to radio kada moze jednostavno napraviti bool variablu

Sta bih ta bool varijabla provjeravala
evo primjer bool:inJob
if(InJob[playerid] == true) return SendClientMessage(playerid, 0xFF0000FF, "You're currently in a mission. Please finish it to start another delivery."); /// linija koja provjerava dali igrac na poslu
if(GetVehicleModel(GetPlayerVehicleID(playerid)) == 482) /// linija koja provjerava dali je igrac u vozilu ako su ove dvije linije zadovoljenje onda
{
if(IsTrailerAttachedToVehicle(vehicleid))// dali je prikolica zakacena za odredjeno vozilo uradi ovo ispod
{
InJob[playerid] = true; // stavljamo mu posao na true zato jer kada bih usli u skiptu malo dublje kao default moramo staviti InJob false zato kad se igrac konektuje nece raditi posao
DeliveryMan[playerid] = true;// koji posao da radi
return 1; /// 1: The vehicle has a trailer attached.
}
if(IsTrailerAttachedToVehicle(vehicleid)) // ako prikolica nije zakacena za prikolicu uradi ovo ispod
{
InJob[playerid] = false; // zavrsi s poslom i moze napraviti jos jedan if koji mu govori da nije obavio posao kako treba
DeliveryMan[playerid] = false;//
return 0;//0: The vehicle does not have a trailer attached.
}
Naslov: Odg: [POMOC] Prikolica
Poruka od: [CH]Lenon poslato Novembar 25, 2015, 21:45:01 POSLE PODNE
Procitaj jos 150 puta sta on hoce...
Naslov: Odg: [POMOC] Prikolica
Poruka od: K ROSE poslato Novembar 25, 2015, 22:06:02 POSLE PODNE
Zašto komplikujete stvar više ?
Pametujete tu umjesto da momku pomognete da napravi to što je zamislio.

Cuj da pravi tajmer koji ce da provjerava dali je otkacena, pa ja ne znam dali da se  :D ili da  :'(
Å ta ce praviti svoj neki tajmer kad moze dodati pod Onplayerupdate ?


[pawn]public OnPlayerUpdate(playerid)
{
   if(Transport[playerid] == 1) // ako je poceo sa poslom
   {
            new newcar = GetPlayerVehicleID(playerid);
       new trailerid = GetVehicleTrailer(newcar);
      if(trailerid == 0) // ako nije zakacio prikolicu sta da se desi
      {
         FailMissionTransport(playerid);
      }
   }
}

stock FailMissionTransport(player)
{
   Transport[player] = 0; // stavlja varijablu posla na 0, dakle ne radi vise posao
   DisablePlayerCheckpoint(player); // gasi checkpointe
   new trailerid = GetVehicleTrailer(GetPlayerVehicleID(player));
   SetVehicleToRespawn(trailerid); // respawnuje jebenu prikolicu
   SCM(player, COLOR_LIGHTBLUE, "Alo kako to voziÅ¡"); // poruku koju ispisuje kada mu se otkaci prikolica
   SafeGivePlayerMoney(player, - 1000); // skida pare
   return 1;
}
 
[/pawn]
Naslov: Odg: [POMOC] Prikolica
Poruka od: LuKsA poslato Novembar 25, 2015, 22:39:28 POSLE PODNE
Citat: K ROSE poslato Novembar 25, 2015, 22:06:02 POSLE PODNE
Zašto komplikujete stvar više ?
Pametujete tu umjesto da momku pomognete da napravi to što je zamislio.

Cuj da pravi tajmer koji ce da provjerava dali je otkacena, pa ja ne znam dali da se  :D ili da  :'(
Å ta ce praviti svoj neki tajmer kad moze dodati pod Onplayerupdate ?


[pawn]public OnPlayerUpdate(playerid)
{
   if(Transport[playerid] == 1) // ako je poceo sa poslom
   {
            new newcar = GetPlayerVehicleID(playerid);
       new trailerid = GetVehicleTrailer(newcar);
      if(trailerid == 0) // ako nije zakacio prikolicu sta da se desi
      {
         FailMissionTransport(playerid);
      }
   }
}

stock FailMissionTransport(player)
{
   Transport[player] = 0; // stavlja varijablu posla na 0, dakle ne radi vise posao
   DisablePlayerCheckpoint(player); // gasi checkpointe
   new trailerid = GetVehicleTrailer(GetPlayerVehicleID(player));
   SetVehicleToRespawn(trailerid); // respawnuje jebenu prikolicu
   SCM(player, COLOR_LIGHTBLUE, "Alo kako to voziÅ¡"); // poruku koju ispisuje kada mu se otkaci prikolica
   SafeGivePlayerMoney(player, - 1000); // skida pare
   return 1;
}
 
[/pawn]

Ajoj sad ti gluposti radis :) OnPlayerUpdate se previse puta pokrece u sekundi, bolje koristit timer.

@Assassin007, Imam u pawnu (i ostalim programskim jezicima) iskustva više od 5 godina, valjda znam šta pričam, pročitaj autorov post još 20 puta možda ćeš skužit :D
Naslov: Odg: [POMOC] Prikolica
Poruka od: K ROSE poslato Novembar 25, 2015, 22:42:44 POSLE PODNE
Wau, nema potreba za pravljenje tajmera.
OnPlayerUpdate se pokrece šta ja znam svake sekunde, cak i brze uglavnom u njega nek to ubaci, realnije ce izgledati da mu odma to sve odradi u sekundi, a ne da ceka 5 sekundi.
Nema veze sto se on pokrece vise puta u sekundi, ovdje je sve dobro napravljeno, i nece biti frke.

Naslov: Odg: [POMOC] Prikolica
Poruka od: Assassin007 poslato Novembar 25, 2015, 22:48:12 POSLE PODNE
Ja odustajem od ovoga jer mi se svadjamo oko teme koja je starija od 3 dana, a autor ove teme vjerovatno nece ni procitati.
Naslov: Odg: [POMOC] Prikolica
Poruka od: K ROSE poslato Novembar 25, 2015, 22:56:22 POSLE PODNE
Vala procitao ili ne procitao na njemu je, ja sam stavio rijeÅ¡enje i vecina od vas mu je objasnila, a sad je na njemu ako hoce  to da ima nek se sjeti teme koju je otvorio.

Naslov: Odg: [POMOC] Prikolica
Poruka od: LuKsA poslato Novembar 27, 2015, 12:35:46 POSLE PODNE
Citat: K ROSE poslato Novembar 25, 2015, 22:42:44 POSLE PODNE
Wau, nema potreba za pravljenje tajmera.
OnPlayerUpdate se pokrece šta ja znam svake sekunde, cak i brze uglavnom u njega nek to ubaci, realnije ce izgledati da mu odma to sve odradi u sekundi, a ne da ceka 5 sekundi.
Nema veze sto se on pokrece vise puta u sekundi, ovdje je sve dobro napravljeno, i nece biti frke.



Nije istina da se poziva jednom u sekundi vec vise od 10 puta i upravo tako se opterecuje skripta(mada je to mala provjera ali treba paziti oko svega ako zelis kvalitetnu i optimiziranu skriptu).
Naslov: Odg: [POMOC] Prikolica
Poruka od: #Bobby poslato Novembar 28, 2015, 21:24:58 POSLE PODNE
E ovako nisam uspio riješit do kraja, znači kada otkačim prikolicu dok mi je posao pokrenut, umjesto da pokaže jednu poruku, počne ih ponavljat svake sekunde i tako u nedogled...

#nekohelpppp?

[pawn]public OnPlayerUpdate(playerid)
{
   if(MissionStatus[playerid] == 1)
   {
       new vehicleid = GetPlayerVehicleID(playerid);
      if(!IsTrailerAttachedToVehicle(vehicleid))
      {
         SendClientMessage(playerid,COLOR_WHITE,"{F81414}#ERROR: Prikolica je otkacena s kamiona dok je posao bio pokrenut, posao je sada zaustavljen.");
      }
   }
    return 1;
}[/pawn]
Naslov: Odg: [POMOC] Prikolica
Poruka od: [CH]Lenon poslato Novembar 28, 2015, 21:27:32 POSLE PODNE

public OnPlayerUpdate(playerid)
{
if(MissionStatus[playerid] == 1)
{
    new vehicleid = GetPlayerVehicleID(playerid);
if(!IsTrailerAttachedToVehicle(vehicleid))
{
SendClientMessage(playerid,COLOR_WHITE,"{F81414}#ERROR: Prikolica je otkacena s kamiona dok je posao bio pokrenut, posao je sada zaustavljen.");
                        MissionStatus[playerid] = 0;
}
}
    return 1;
}
Naslov: Odg: [POMOC] Prikolica
Poruka od: #Bobby poslato Novembar 28, 2015, 21:36:33 POSLE PODNE
Riješeno, može lock!! :D