Balkan SA:MP

San Andreas Multiplayer - www.sa-mp.com => Tutorijali u vezi SA-MPa => Temu započeo: .ysi poslato Februar 08, 2022, 01:42:39 PRE PODNE

Naslov: [TUTORIAL] Kako napraviti Posao ?
Poruka od: .ysi poslato Februar 08, 2022, 01:42:39 PRE PODNE
Kako napraviti posao ?

Ovo cu napraviti bez gledanja u bilo kakav mod tkd ako nesto pogresim molim vas da me ispravite  :)

Checkpoints

Najprije cemo uci u sampdebug / obicni samp srw i sacuvati checkpointe sa /save [bilo sta] CP for JOB
Posle kada sacuvamo CP ici cemo u Computer / Documents / GTA San Andreas User Files / SAMP / savedpositions i tu ce vam pisati cordinate od vasih CP
Znaci nama samo trebaju X,Y,Z - https://imgur.com/a/PlUuYTX

News

Ovo cemo dodati negdje u vrhu skripte(sto se mene tice dodao bih odmah posle #defines ili gde nam stoje svi news):
[pawn]
new PosaoCP[MAX_PLAYERS]=-1;
new PosaoVozilo[1]; //stavite koliko imate vozila,u mom slucaju jedno
[/pawn]

I da,trebat ce vam Login / Register System za ovo gde mozete naci na slijedecem linku: https://balkan-samp.com/forum/index.php?topic=141107.0

Dodajte pPosao...

Komande

[pawn]
CMD:posao(playerid, params[])
{
   if(IsPlayerInRangeOfPoint(playerid, 3.0, vase kordinate)) return SendClientMessage(playerid, -1, "Niste na mestu za zaposljavanje.");
   PlayerInfo[playerid][pPosao] = 1; //zavisi koji je posao,ako imate vise poslova povecavate cifru sa 1 na vise
   return 1;
}

CMD:linija(playerid, params[])
{
   if(PlayerInfo[playerid][pPosao] == 1) return SendClientMessage(playerid, -1, "Niste zaposljen kao Bus Vozac");
   SetPlayerCheckpoint(playerid, vase kordinate, 2);
   PosaoCP[playerid] = 1;
   return 1;
}
[/pawn]

OnPlayerEnterCheckpoint

Ovo dodajte pod OnPlayerEnterCheckpoint
[pawn]
        switch(PosaoCP[playerid])
   {
       case 1:
       {
                //kada udje u 1 CP da mu nestane(DisablePlayerCheckpoint) i stvori drugi (SetPlayerCheckpoint)
           DisablePlayerCheckpoint(playerid);
                SCM(playerid, -1, ""IGBOJA"(ZADATAK) "BIJELA"Uspesno ste dosli do odredjene lokacije,nastavite dalje.");
      SetPlayerCheckpoint(playerid, stavite svoje kordinate X Y Z, 2);
      PosaoCP[playerid] = 2;
       }
       case 2:
       {
           DisablePlayerCheckpoint(playerid);
      SCM(playerid, -1, ""IGBOJA"(ZADATAK) "BIJELA"Uspesno ste dosli do odredjene lokacije,nastavite dalje.");
      SetPlayerCheckpoint(playerid, stavite svoje kordinate X Y Z, 2);
      PosaoCP[playerid] = 3;
       }
       case 3:
       {
                //kada udje u zadnji cp da mu nestane(Disable) i dadne platu
           DisablePlayerCheckpoint(playerid);
                GivePlayerMoney(playerid, vasa kolicina);
      SCM(playerid, -1, ""IGBOJA"(ZADATAK) "BIJELA"Zavrsio si posao,dobio si platu od 'vasa kolicina'");
      PosaoCP[playerid] = -1;
       }
}
[/pawn]

Posao Vozila

Najprije dodajte stock PosaoVozila:  //morao sam izvodjiti iz IG moda
[pawn]
stock PosaoVozila(carid) 
{
   for(new i = 0; i < sizeof(PosaoVozilo); i++)
   {
      if(carid == PosaoVozilo) return 1;
   }
   return 0;
}
[/pawn]

Pod OnGameModeInit dodat cemo: //dodajemo vozilo da se spawnuje
[pawn]
PosaoVozilo[0] = CreateVehicle(vehicletype, Float:x, Float:y, Float:z, Float:rotation, color1, color2, respawn_delay, addsiren=0)
[/pawn]

Sada idemo pod OnPlayerEnterVehicle
[pawn]
if(PosaoVozila(vehicleid)) //sto znaci da kada igrac pokusa uci u vozilo,a pritom da nijie zaposlen kao taj posao izbacit ce ga iz vozila
      {
         if(PlayerInfo[playerid][pPosao] < 1)
         {
            new Float:Poz[3];
                     GetPlayerPos(playerid, Poz[0], Poz[1], Poz[2]);
            SetPlayerPos(playerid, Poz[0], Poz[1]+0.1, Poz[2]);
            GameTextForPlayer(playerid, "Samo zaposleni kao Bus Vozac", 5000, 5);
         }
      }
[/pawn]

Kraj

U glavnom ovako na ovaj princip se pravi neki posao(barem ja tako mislim)
Ako sam nesto zaboravio molim vas ispravite me...
Nadam se da ce nekome posluziti,LP.
Naslov: Odg: [TUTORIAL] Kako napraviti Posao ?
Poruka od: choppa100 poslato Februar 08, 2022, 02:04:05 PRE PODNE
A zasto ti pokusavas nekoga da naucis to kada ni sam ne znas?
Naslov: Odg: [TUTORIAL] Kako napraviti Posao ?
Poruka od: schatzi poslato Februar 08, 2022, 07:37:11 PRE PODNE
Da si uradio sam svoje ne verujem ali ipak dobro takav tutorijal isti sam vec video ne ovde
Naslov: Odg: [TUTORIAL] Kako napraviti Posao ?
Poruka od: Aezakmi poslato Februar 08, 2022, 08:47:12 PRE PODNE
Citat: _audi poslato Februar 08, 2022, 07:37:11 PRE PODNE
Da si uradio sam svoje ne verujem ali ipak dobro takav tutorijal isti sam vec video ne ovde
TazGee.
Naslov: Odg: [TUTORIAL] Kako napraviti Posao ?
Poruka od: fajnydzieciak poslato Februar 08, 2022, 15:44:24 POSLE PODNE
News
SCM
hshahs
Naslov: Odg: [TUTORIAL] Kako napraviti Posao ?
Poruka od: Galardo poslato Februar 08, 2022, 16:22:47 POSLE PODNE
Citat: srbski southclaws poslato Februar 08, 2022, 15:44:24 POSLE PODNE
News
SCM
hshahs
BBC News
Naslov: Odg: [TUTORIAL] Kako napraviti Posao ?
Poruka od: Fr0z3n poslato Februar 08, 2022, 17:14:42 POSLE PODNE
Idemo ovako

pogresno
[pawn]new PosaoVozilo[1]; //stavite koliko imate vozila,u mom slucaju jedno[/pawn]
ispravno
[pawn]const PosaoVozilo = 1; //stavite koliko imate vozila,u mom slucaju jedno[/pawn]

nije lose ovo ali zasto da bezveze kucas parametre koji nista ne znace
[pawn]if(PlayerInfo[playerid][pPosao] == 1) return SendClientMessage(playerid, -1, "Niste zaposljen kao Bus Vozac");[/pawn]
moze
[pawn]if(PlayerInfo[playerid][pPosao]) return SendClientMessage(playerid, -1, "Niste zaposljen kao Bus Vozac");[/pawn]

ovo mi se ne svidja
[pawn]switch(PosaoCP[playerid])
   {
       case 1:
       {
                //kada udje u 1 CP da mu nestane(DisablePlayerCheckpoint) i stvori drugi (SetPlayerCheckpoint)
           DisablePlayerCheckpoint(playerid);
                SCM(playerid, -1, ""IGBOJA"(ZADATAK) "BIJELA"Uspesno ste dosli do odredjene lokacije,nastavite dalje.");
      SetPlayerCheckpoint(playerid, stavite svoje kordinate X Y Z, 2);
      PosaoCP[playerid] = 2;
       }
       case 2:
       {
           DisablePlayerCheckpoint(playerid);
      SCM(playerid, -1, ""IGBOJA"(ZADATAK) "BIJELA"Uspesno ste dosli do odredjene lokacije,nastavite dalje.");
      SetPlayerCheckpoint(playerid, stavite svoje kordinate X Y Z, 2);
      PosaoCP[playerid] = 3;
       }
       case 3:
       {
                //kada udje u zadnji cp da mu nestane(Disable) i dadne platu
           DisablePlayerCheckpoint(playerid);
                GivePlayerMoney(playerid, vasa kolicina);
      SCM(playerid, -1, ""IGBOJA"(ZADATAK) "BIJELA"Zavrsio si posao,dobio si platu od `vasa kolicina`");
      PosaoCP[playerid] = -1;
       }[/pawn]

ovako je vec bolje

[pawn]switch(PosaoCP[playerid])
   {
       case 1:
       {
                //kada udje u 1 CP da mu nestane(DisablePlayerCheckpoint) i stvori drugi (SetPlayerCheckpoint)
           DisablePlayerCheckpoint(playerid);
                SCM(playerid, -1, ""IGBOJA"(ZADATAK) "BIJELA"Uspesno ste dosli do odredjene lokacije,nastavite dalje.");
      SetPlayerCheckpoint(playerid, stavite svoje kordinate X Y Z, 2);
      PosaoCP[playerid]++;
                return 1;
       }
       case 2:
       {
           DisablePlayerCheckpoint(playerid);
      SCM(playerid, -1, ""IGBOJA"(ZADATAK) "BIJELA"Uspesno ste dosli do odredjene lokacije,nastavite dalje.");
      SetPlayerCheckpoint(playerid, stavite svoje kordinate X Y Z, 2);
      PosaoCP[playerid]++;
                return 1;
       }
       case 3:
       {
                //kada udje u zadnji cp da mu nestane(Disable) i dadne platu
           DisablePlayerCheckpoint(playerid);
                GivePlayerMoney(playerid, vasa kolicina);
      SCM(playerid, -1, ""IGBOJA"(ZADATAK) "BIJELA"Zavrsio si posao,dobio si platu od `vasa kolicina`");
      PosaoCP[playerid] = -1;
                return 1;
       }[/pawn]

za ovo i da ne pricam nista
[pawn]SCM(playerid, -1, ""IGBOJA"(ZADATAK) "BIJELA"Uspesno ste dosli do odredjene lokacije,nastavite dalje.");[/pawn]

ovo mozes skratiti
[pawn]stock PosaoVozila(carid)
{
   for(new i = 0; i < sizeof(PosaoVozilo); i++)
   {
      if(carid == PosaoVozilo) return 1;
   }
   return 0;
}[/pawn]

ovako
[pawn]stock PosaoVozila(carid)
{
   for(new i = 0; i < sizeof(PosaoVozilo); i++)
      if(carid == PosaoVozilo) return 1;
   return 0;
}[/pawn]

kada uzimas korditane nemoj ovako koristiti zato sto je sporije
[pawn]new Float:Poz[3];[/pawn]
brze
[pawn]new
   Float:X,
   Float:Y,
   Float:C;[/pawn]

Nisam sve pregledao, ali verujem da ima mnogo vise gresaka nego sto sam napisao ovde... Svako dobro!
Naslov: Odg: [TUTORIAL] Kako napraviti Posao ?
Poruka od: Terza Lazarevic poslato Februar 08, 2022, 21:16:20 POSLE PODNE
odlicno
Naslov: Odg: [TUTORIAL] Kako napraviti Posao ?
Poruka od: choppa100 poslato Februar 08, 2022, 21:18:20 POSLE PODNE
Citat: Terza Lazarevic poslato Februar 08, 2022, 21:16:20 POSLE PODNE
odlicno
Ne, uopste nije odlicno.
Naslov: Odg: [TUTORIAL] Kako napraviti Posao ?
Poruka od: Terza Lazarevic poslato Februar 08, 2022, 21:21:40 POSLE PODNE
Citat: bishop. poslato Februar 08, 2022, 21:18:20 POSLE PODNE
Ne, uopste nije odlicno.
da jeste
Naslov: Odg: [TUTORIAL] Kako napraviti Posao ?
Poruka od: fajnydzieciak poslato Februar 08, 2022, 21:50:14 POSLE PODNE
Citat: bishop. poslato Februar 08, 2022, 21:18:20 POSLE PODNE
Ne, uopste nije odlicno.
Ma sta ce mucenik nije video dalje od anderpojinta.
Bitno njemu da radi. Sad kako radi, to koga boli qrac.
Naslov: Odg: [TUTORIAL] Kako napraviti Posao ?
Poruka od: choppa100 poslato Februar 08, 2022, 22:20:32 POSLE PODNE
Citat: Terza Lazarevic poslato Februar 08, 2022, 21:21:40 POSLE PODNE
da jeste
Da, tebi je odlicno jer ne znas pola ovih stvari i ne znas kako sta funkcionise, a ni on ocigledno.
Pogledaj sta je Fr0z3n napisao, a i ostali su pomenuli po nesto iz zezanja, sto je jako lose.

Citat: srbski southclaws poslato Februar 08, 2022, 21:50:14 POSLE PODNE
Ma sta ce mucenik nije video dalje od anderpojinta.
Bitno njemu da radi. Sad kako radi, to koga boli qrac.
A to je tuzno brate. Oni su videli da to isto radi na takvom nekom gamemodu ili od nekog youtubera koji je juce naucio dve funkcije i odlucio da uci druge, pa onda ljudi misle da je tako ispravno.
Naslov: Odg: [TUTORIAL] Kako napraviti Posao ?
Poruka od: MirsoN poslato Februar 08, 2022, 22:35:26 POSLE PODNE
Citat: bishop. poslato Februar 08, 2022, 22:20:32 POSLE PODNE
Da, tebi je odlicno jer ne znas pola ovih stvari i ne znas kako sta funkcionise, a ni on ocigledno.
Pogledaj sta je Fr0z3n napisao, a i ostali su pomenuli po nesto iz zezanja, sto je jako lose.
A to je tuzno brate. Oni su videli da to isto radi na takvom nekom gamemodu ili od nekog youtubera koji je juce naucio dve funkcije i odlucio da uci druge, pa onda ljudi misle da je tako ispravno.

Kako voliš kad misliš da ispadaš pametan a ustvari ispadneš glup ko noga lik sarkastično kaže odlično ti nešto nabrajaš čovjeku koji živi od kodiranja i programiranja.. Svašta
Naslov: Odg: [TUTORIAL] Kako napraviti Posao ?
Poruka od: realshoota_ poslato Februar 08, 2022, 22:45:50 POSLE PODNE
E Mirsone samo ti ispadas glup.
Naslov: Odg: [TUTORIAL] Kako napraviti Posao ?
Poruka od: choppa100 poslato Februar 08, 2022, 22:47:44 POSLE PODNE
Citat: MirsoN poslato Februar 08, 2022, 22:35:26 POSLE PODNE
Kako voliš kad misliš da ispadaš pametan a ustvari ispadneš glup ko noga lik sarkastično kaže odlično ti nešto nabrajaš čovjeku koji živi od kodiranja i programiranja.. Svašta
Ne mislim ja nista, samo sam rekao da je ovo kurcina.
A ko to zivi od kodiranja? Ovaj sto ima Ghetto profilnu? Hahahahaha
Naslov: Odg: [TUTORIAL] Kako napraviti Posao ?
Poruka od: Slade poslato Februar 08, 2022, 22:59:38 POSLE PODNE
Mislim ono lik je objavio FS-inc ili sta, svoj code, ne radite na projektu zajedno da pisete 1000 rijeci kao odgovor, ne review-ate PR na nekom softwareu na kojem zajedno radite, zasto se opterecujete na tudji kod koji vas nista ne steti, ne moze niko za 3 dana rada u nekom jeziku pisati najbolji moguci kod, narocito kao pocetnik u programiranju, mislim da nema potrebe da se ispravljate liniju po liniju.

Citat: Fr0z3n poslato Februar 08, 2022, 17:14:42 POSLE PODNE
kada uzimas korditane nemoj ovako koristiti zato sto je sporije
[pawn]new Float:Poz[3];[/pawn]
brze
[pawn]new
   Float:X,
   Float:Y,
   Float:C;[/pawn]

Recimo ovo, znam da je citav reply iz dobre namjere, ali ovaj chunk koda, kako je brze? Koliko ms tacno i kako utice na gamemode? Jer deklarisati kao niz je definitivno preglednije. Ne mozes napisati brze je a nisi nam provide nikakav benchmark, ako je brze 5 ns zasto bi zrtvovali preglednost zbog 5 ns ? Zasto se generalno baviti mikrooptimizacijama? Modovi puno goreg koda od ovog su handlali po 500-1000 igraca.
Naslov: Odg: [TUTORIAL] Kako napraviti Posao ?
Poruka od: Fr0z3n poslato Februar 08, 2022, 23:21:05 POSLE PODNE
Pa pazi na 500-600 mesta da odradis isto to vec prelazi u sekunde, sto se tice tih "servera" sto su handlali sa 1000 igraca nisu prelazili 5-6 dana bez restarta, po mom misljenju svaka minimalna optimizacija je dobrodosla, kako za rad servera, tako i za skriptera.
Naslov: Odg: [TUTORIAL] Kako napraviti Posao ?
Poruka od: Slade poslato Februar 08, 2022, 23:25:48 POSLE PODNE
Slazem se, i za oko je takodjer vidno, ali ti pricas o stabilnosti, koja nuzno ne ovisi o optimizaciji koda, i kada ga vec ucis malo objasni problem, nemoj samo zamjeniti linije, ti tu fakticki radis posao za njega, ovo je bolje - zasto? format, takodjer odma svi navrnete kao da je ubio covjeka (opet ti si ga najvise ispostovao jer si ga ispravio umjesto izvrijedjao).

Framework jeste star, ali to nije razlog da se razapnu novi ljudi u skriptanju, i ti prije 5-10 god nisi imao blage, to se vremenom udje, svakako kod programiranja on mora poceti razumjevati logiku samog programiranja, a onda se baviti optimizacijom, dakle po meni bi bio problem sto je on taj code vjerovatno izvukao iz nekog moda, sto automatski gasi njegovu logiku za programskim codeom jer je naucio raditi po sablonu i dodati CP manje-vise. To je stvar koja treba da se prati, optimizacija se nauci vremenom dok se radi.
Naslov: Odg: [TUTORIAL] Kako napraviti Posao ?
Poruka od: xLanmi poslato Februar 09, 2022, 20:51:30 POSLE PODNE
Citat: Fr0z3n poslato Februar 08, 2022, 17:14:42 POSLE PODNE

ovako je vec bolje

[pawn]switch(PosaoCP[playerid])
   {
       case 1:
       {
                //kada udje u 1 CP da mu nestane(DisablePlayerCheckpoint) i stvori drugi (SetPlayerCheckpoint)
           DisablePlayerCheckpoint(playerid);
                SCM(playerid, -1, ""IGBOJA"(ZADATAK) "BIJELA"Uspesno ste dosli do odredjene lokacije,nastavite dalje.");
      SetPlayerCheckpoint(playerid, stavite svoje kordinate X Y Z, 2);
      PosaoCP[playerid]++;
                return 1;
       }
       case 2:
       {
           DisablePlayerCheckpoint(playerid);
      SCM(playerid, -1, ""IGBOJA"(ZADATAK) "BIJELA"Uspesno ste dosli do odredjene lokacije,nastavite dalje.");
      SetPlayerCheckpoint(playerid, stavite svoje kordinate X Y Z, 2);
      PosaoCP[playerid]++;
                return 1;
       }
       case 3:
       {
                //kada udje u zadnji cp da mu nestane(Disable) i dadne platu
           DisablePlayerCheckpoint(playerid);
                GivePlayerMoney(playerid, vasa kolicina);
      SCM(playerid, -1, ""IGBOJA"(ZADATAK) "BIJELA"Zavrsio si posao,dobio si platu od `vasa kolicina`");
      PosaoCP[playerid] = -1;
                return 1;
       }[/pawn]

Ako vec coveka ucis onda ga uci pravilno :)

Primer: Ako koristis switch za posaoCP i u istom kodu koristis istu funkciju : [pawn] DisablePlayerCheckpoint(playerid); [/pawn] Koristiti u proveri da li je checkpoint PosaoCP pa onda Disable pa switch. 
Reuse istog code u 3 case , nema smisla ...

Ako vec pametujete, onda pricajte ispravno.

@tema
Korisno, ali razmisljaj logicki kada skriptas i samo vezbaj.
Vremenom, kodiranjem, postaces bolji :)

#PEACE
Naslov: Odg: [TUTORIAL] Kako napraviti Posao ?
Poruka od: Fr0z3n poslato Februar 10, 2022, 01:52:10 PRE PODNE
Citat: xLanmi poslato Februar 09, 2022, 20:51:30 POSLE PODNE
Ako vec coveka ucis onda ga uci pravilno :)

Primer: Ako koristis switch za posaoCP i u istom kodu koristis istu funkciju : [pawn] DisablePlayerCheckpoint(playerid); [/pawn] Koristiti u proveri da li je checkpoint PosaoCP pa onda Disable pa switch. 
Reuse istog code u 3 case , nema smisla ...

Ako vec pametujete, onda pricajte ispravno.

@tema
Korisno, ali razmisljaj logicki kada skriptas i samo vezbaj.
Vremenom, kodiranjem, postaces bolji :)

#PEACE

"Ako vec coveka ucis onda ga uci pravilno" Ne znam da li si glup ili stvarno mislis da cu svaku stvar da mu ispravljam u kodu
Naslov: Odg: [TUTORIAL] Kako napraviti Posao ?
Poruka od: xLanmi poslato Februar 10, 2022, 09:29:11 PRE PODNE
Citat: Fr0z3n poslato Februar 10, 2022, 01:52:10 PRE PODNE
"Ako vec coveka ucis onda ga uci pravilno" Ne znam da li si glup ili stvarno mislis da cu svaku stvar da mu ispravljam u kodu
Pa ako si poceo onda i zavrsi...
Naslov: Odg: [TUTORIAL] Kako napraviti Posao ?
Poruka od: Vund3R poslato Februar 16, 2022, 01:54:51 PRE PODNE
hmm hmm