Započeo [BR]Maki187
•10. Mar. 2012.• Zaključano[TuT] Izrada posla - Kosac Trave (ZCMD/YCMD/STRCMP)
8,651
pregleda
22
postova
Crime Lord
Balkan SA:MP
SA-MP Doprinos
Balkan SA:MP
SA-MP DoprinosNovi Član
240 / 250 XP
Početnik(0)
947
Postovi:
80
Teme:
Pridružio se:Jun 2011
10. Mar. 2012.
U ovom tut-u cu vam pokazati kako da napravite jednostavan posao, u ovom slucaju kosaca trave, ovaj posao je namenjen svim modovima, pocevsi od GF edita, do onih od nule... (zavisi kako ga podesite)
Ujedno ovo mi je prvi tut 😄
Pa da pocnemo:
1.)
na vrh moda stavite varijablu
pod OnPlayerConect stavite ovo:
2.)
Sad prelazimo na ubacivanje vozila za kosaca, to ce te uraditi ovako:
na vrh skripte dodajemo
zatim kod ostalih stockova ubacite sledecu proveru
sad pod OnGameModeInit dodajte sledece
samo zapamtite, vozila idu od 0, ne od 1! (treba da ide kosilica ... kosilica, a nikako nesme da ide kosilica ... kosilica
3.)
Prelazimo na komandu koja pokrece posao, samo zapamtite, PlayerInfo promenite onako kako je vama u modu...
ZCMD Komanda:
YCMD Komanda:
STRCMP Komanda:
Moja preporuka vam je da koristite ZCMD (mada je YCMD skoro isto), strcmp nikako...
4.)
Posto smo napravili komandu kojom pokrecemo posao, moramo da napravimo i komandu koju obustavljamo posao, ako nezelimo da ga dovrismo do kraja...
ZCMD Komanda:
YCMD Komanda:
STRCMP Komanda:
5.)
Sad prelazimo na postavljanje CP-a (markera)
pod OnPlayerEnterCheckpoint(playerid) stavite sledece
Ovim je ceo posao gotov, akd dodjete do poslednjeg cp-a, dobiajte 100 dolara...
Posao je testiran, na brzinu, tako da ako nes neradi, javite 🙂
6.)
Ovo mozete i nemorate da ubacite, a to je zaposljavanje...
pod OnGameModeInit dodajte sledece
a sad nam treba i komanda za zaposljavanje
ZCMD Komanda:
YCMD Komanda:
STRCMP Komanda:
7.)
I potrebna nam je i komanda za otkaz (ovu komandu je uradio ναηιℓℓα.ιη¢)
ZCMD Komanda:
YCMD Komanda:
STRCMP Komanda:
Naravno nezaboravite da PlayerInfo promenite u ono kako vama stoji u modu.
Ujedno ovo mi je prvi tut 😄
Pa da pocnemo:
1.)
na vrh moda stavite varijablu
new KosiTravu; // ovde se svakom igracu cuva njegova varijabla
#define BELA 0xFFFFFFAA // definisemo belu boju
#define SIVA 0xBFC0C2FF // definisemo sivu bojupod OnPlayerConect stavite ovo:
KosiTravu = 0; // kad se igrac konektuje, stavi mu ovu varijablu na 0, sto znaci da trenutno nekosi travu2.)
Sad prelazimo na ubacivanje vozila za kosaca, to ce te uraditi ovako:
na vrh skripte dodajemo
new kosilica; // broj 2 je broj max vozila, menjate ga po zelji, tj koliko vozila ubacitezatim kod ostalih stockova ubacite sledecu proveru
stock VoziloKosaca(carid)
{
for(new i = 0; i < sizeof(kosilica); i++) // prolazi kroz sva vozila za kosenje i proverava da li se u njemu nalazite
{
if(carid == kosilica) return 1;
}
return 0;
}sad pod OnGameModeInit dodajte sledece
kosilica = AddStaticVehicleEx(572,1960.2535,-1228.7362,19.5318,99.1372,0,0,40); //dodali smo vozilo(kosilicu) u mod
kosilica = AddStaticVehicleEx(572,1960.2535,-1228.7362,19.5318,99.1372,0,0,40); //dodali smo vozilo(kosilicu) u mod
samo zapamtite, vozila idu od 0, ne od 1! (treba da ide kosilica ... kosilica, a nikako nesme da ide kosilica ... kosilica
3.)
Prelazimo na komandu koja pokrece posao, samo zapamtite, PlayerInfo promenite onako kako je vama u modu...
ZCMD Komanda:
CMD:kositravu(playerid, params[])
{
new idv = GetPlayerVehicleID(playerid);
if(PlayerInfo != 1) // proverava jel igrac ima odgovarajuci posao
{
SendClientMessage(playerid, SIVA, "Nisi Kosac Trave! ");
return 1;
}
if(KosiTravu >= 1) // proverava jel igrac vec zapoceo sa kosenjem trave
{
SendClientMessage(playerid, SIVA, "Vec kosis travu!");
return 1;
}
if(!VoziloKosaca(idv)) // proverava jel igrac u vozilu kosaca, ako nije nemoze da kosi travu
{
SendClientMessage(playerid, SIVA, "Nisi u vozilu kosaca trave!");
return 1;
}
if(VoziloKosaca(idv)) // proverava da li je igrac u vozilu kosaca, ako jeste, nastavlja komandu...
{
KosiTravu = 1; // postavlja igracu varijablu na 1, sto znaci da je zapoceo posao
SetPlayerCheckpoint(playerid,1905.4629,-1228.2189,16.2359, 5.0); // postavlja igracu CP(marker) na zeljene koordinate
SendClientMessage(playerid, BELA, "Vozite do crvenog markera!");
}
return 1;
}
YCMD Komanda:
YCMD:kositravu(playerid, params[], help)
{
#pragma unused help
new idv = GetPlayerVehicleID(playerid);
if(PlayerInfo != 1) // proverava jel igrac ima odgovarajuci posao
{
SendClientMessage(playerid, SIVA, "Nisi Kosac Trave! ");
return 1;
}
if(KosiTravu >= 1) // proverava jel igrac vec zapoceo sa kosenjem trave
{
SendClientMessage(playerid, SIVA, "Vec kosis travu!");
return 1;
}
if(!VoziloKosaca(idv)) // proverava jel igrac u vozilu kosaca, ako nije nemoze da kosi travu
{
SendClientMessage(playerid, SIVA, "Nisi u vozilu kosaca trave!");
return 1;
}
if(VoziloKosaca(idv)) // proverava da li je igrac u vozilu kosaca, ako jeste, nastavlja komandu...
{
KosiTravu = 1; // postavlja igracu varijablu na 1, sto znaci da je zapoceo posao
SetPlayerCheckpoint(playerid,1905.4629,-1228.2189,16.2359, 5.0); // postavlja igracu CP(marker) na zeljene koordinate
SendClientMessage(playerid, BELA, "Vozite do crvenog markera!");
}
return 1;
}STRCMP Komanda:
if(strcmp(cmdtext, "/kositravu", true))
{
new idv = GetPlayerVehicleID(playerid);
if(PlayerInfo != 1) // proverava jel igrac ima odgovarajuci posao
{
SendClientMessage(playerid, SIVA, "Nisi Kosac Trave! ");
return 1;
}
if(KosiTravu >= 1) // proverava jel igrac vec zapoceo sa kosenjem trave
{
SendClientMessage(playerid, SIVA, "Vec kosis travu!");
return 1;
}
if(!VoziloKosaca(idv)) // proverava jel igrac u vozilu kosaca, ako nije nemoze da kosi travu
{
SendClientMessage(playerid, SIVA, "Nisi u vozilu kosaca trave!");
return 1;
}
if(VoziloKosaca(idv)) // proverava da li je igrac u vozilu kosaca, ako jeste, nastavlja komandu...
{
KosiTravu = 1; // postavlja igracu varijablu na 1, sto znaci da je zapoceo posao
SetPlayerCheckpoint(playerid,1905.4629,-1228.2189,16.2359, 5.0); // postavlja igracu CP(marker) na zeljene koordinate
SendClientMessage(playerid, BELA, "Vozite do crvenog markera!");
}
return 1;
}Moja preporuka vam je da koristite ZCMD (mada je YCMD skoro isto), strcmp nikako...
4.)
Posto smo napravili komandu kojom pokrecemo posao, moramo da napravimo i komandu koju obustavljamo posao, ako nezelimo da ga dovrismo do kraja...
ZCMD Komanda:
CMD:stopkosenje(playerid, params[])
{
new idv = GetPlayerVehicleID(playerid);
if(PlayerInfo != 1)// proverava jel igrac ima odgovarajuci posao
{
SendClientMessage(playerid, SIVA, "Nisi Kosac trave!");
return 1;
}
if(KosiTravu >= 1) // proverava da li igrac kosi travu
{
KosiTravu = 0;
DisablePlayerCheckpoint(playerid);
SendClientMessage(playerid, BELA, "Prekinuo si kosenje trave!");
if(VoziloKosaca(idv)) // ako igrac nije izaso iz vozila a zapoceo je kosenje, respawnuje vozilo
{
SetVehicleToRespawn(idv);
}
}
else // ako igrac nije zapoceo kosenje, salje mu poruku
{
SendClientMessage(playerid, SIVA, "Nisi ni zapoceo kosenje trave!");
return 1;
}
return 1;
}
YCMD Komanda:
YCMD:stopkosenje(playerid, params[], help)
{
#pragma unused help
new idv = GetPlayerVehicleID(playerid);
if(PlayerInfo != 1) // proverava jel igrac ima odgovarajuci posao
{
SendClientMessage(playerid, SIVA, "Nisi Kosac trave!");
return 1;
}
if(KosiTravu >= 1) // proverava da li igrac kosi travu
{
KosiTravu = 0;
DisablePlayerCheckpoint(playerid);
SendClientMessage(playerid, BELA, "Prekinuo si kosenje trave!");
if(VoziloKosaca(idv)) // ako igrac nije izaso iz vozila a zapoceo je kosenje, respawnuje vozilo
{
SetVehicleToRespawn(idv);
}
}
else // ako igrac nije zapoceo kosenje, salje mu poruku
{
SendClientMessage(playerid, SIVA, "Nisi ni zapoceo kosenje trave!");
return 1;
}
return 1;
}STRCMP Komanda:
if(strcmp(cmdtext, "/stopkosenje", true))
{
new idv = GetPlayerVehicleID(playerid);
if(PlayerInfo != 1) // proverava jel igrac ima odgovarajuci posao
{
SendClientMessage(playerid, SIVA, "Nisi Kosac trave!");
return 1;
}
if(KosiTravu >= 1)// proverava da li igrac kosi travu
{
KosiTravu = 0;
DisablePlayerCheckpoint(playerid);
SendClientMessage(playerid, BELA, "Prekinuo si kosenje trave!");
if(VoziloKosaca(idv)) // ako igrac nije izaso iz vozila a zapoceo je kosenje, respawnuje vozilo
{
SetVehicleToRespawn(idv);
}
}
else // ako igrac nije zapoceo kosenje, salje mu poruku
{
SendClientMessage(playerid, SIVA, "Nisi ni zapoceo kosenje trave!");
return 1;
}
return 1;
}5.)
Sad prelazimo na postavljanje CP-a (markera)
pod OnPlayerEnterCheckpoint(playerid) stavite sledece
if(KosiTravu == 1) // proverava da li je igraceva varijablva za kosenje na 1
{
new idv = GetPlayerVehicleID(playerid); // uzima id vozila
if(VoziloKosaca(idv)) // proverava jel u vozilu kosaca
{
KosiTravu = 2; // stavlja igracu varijablu na 2
DisablePlayerCheckpoint(playerid); // uklanja stari CP
SetPlayerCheckpoint(playerid,1908.1815,-1177.1769,22.9238, 5.0); // postavlja igracu novi cp
}
return 1;
}
if(KosiTravu == 2) // proverava da li je igraceva varijablva za kosenje na 2
{
new idv = GetPlayerVehicleID(playerid); // uzima id vozila
if(VoziloKosaca(idv)) // proverava jel u vozilu kosaca
{
KosiTravu = 3; // stavlja igracu varijablu na 3
DisablePlayerCheckpoint(playerid); // uklanja stari CP
SetPlayerCheckpoint(playerid,2026.7825,-1158.4764,21.7321, 5.0); // postavlja igracu novi cp
}
return 1;
}
if(KosiTravu == 3) // proverava da li je igraceva varijablva za kosenje na 3
{
new idv = GetPlayerVehicleID(playerid); // uzima id vozila
if(VoziloKosaca(idv)) // proverava jel u vozilu kosaca
{
KosiTravu = 4; // stavlja igracu varijablu na 4
DisablePlayerCheckpoint(playerid); // uklanja stari CP
SetPlayerCheckpoint(playerid,2035.3783,-1230.5975,22.1612, 5.0); // postavlja igracu novi cp
}
return 1;
}
if(KosiTravu == 4) // proverava da li je igraceva varijablva za kosenje na 4
{
new idv = GetPlayerVehicleID(playerid); // uzima id vozila
if(VoziloKosaca(idv)) // proverava jel u vozilu kosaca
{
KosiTravu = 5; // stavlja igracu varijablu na 5
DisablePlayerCheckpoint(playerid); // uklanja stari CP
SetPlayerCheckpoint(playerid,1905.4629,-1228.2189,16.2359, 5.0); // postavlja igracu novi cp
}
return 1;
}
if(KosiTravu == 5) // proverava da li je igraceva varijablva za kosenje na 4
{
new idv = GetPlayerVehicleID(playerid); // uzima id vozila
if(VoziloKosaca(idv)) // proverava jel u vozilu kosaca
{
KosiTravu = 0; // stavlja igracu varijablu na 0
DisablePlayerCheckpoint(playerid); // uklanja stari CP
GivePlayerMoney(playerid, 100); // daje igracu 100 dolara
SendClientMessage(playerid, BELA, "Prekinuo si kosenje trave!");
// ovim poslednjim CP-om smo zavrsili posao :)
}
return 1;
}
Ovim je ceo posao gotov, akd dodjete do poslednjeg cp-a, dobiajte 100 dolara...
Posao je testiran, na brzinu, tako da ako nes neradi, javite 🙂
6.)
Ovo mozete i nemorate da ubacite, a to je zaposljavanje...
pod OnGameModeInit dodajte sledece
AddStaticPickup(1274, 1, 1961.4186,-1232.6809,19.9813);// dodali smo pickup za kosacaa sad nam treba i komanda za zaposljavanje
ZCMD Komanda:
CMD:takejob(playerid, params[])
{
if(PlayerInfo > 0) // proverava jel igracev posao veci od 0
{
SendClientMessage(playerid, SIVA, "Vec si zaposlen, kucaj /otkaz da bi dao otkaz.");
return 1;
}
if(IsPlayerInRangeOfPoint(playerid, 2, 1961.4186,-1232.6809,19.9813)) // proverava da li se igrac nalazi an tim koordinatama
{
PlayerInfo = 1; // psotavlja igracu posao na 1
SendClientMessage(playerid, BELA, "Uspesno si se zaposlio kao kosac trave.");
SendClientMessage(playerid, BELA, "Komande: /kositravu | /stopkosenje");
}
else { SendClientMessage(playerid, SIVA, "Nisi kod kosaca!"); return 1; } // ako igrac nije na odredjenim koordinatama, salje mu poruku.
return 1;
}
YCMD Komanda:
YCMD:takejob(playerid, params[], help)
{
#pragma unused help
if(PlayerInfo > 0) // proverava jel igracev posao veci od 0
{
SendClientMessage(playerid, SIVA, "Vec si zaposlen, kucaj /otkaz da bi dao otkaz.");
return 1;
}
if(IsPlayerInRangeOfPoint(playerid, 2, 1961.4186,-1232.6809,19.9813)) // proverava da li se igrac nalazi an tim koordinatama
{
PlayerInfo = 1; // psotavlja igracu posao na 1
SendClientMessage(playerid, BELA, "Uspesno si se zaposlio kao kosac trave.");
SendClientMessage(playerid, BELA, "Komande: /kositravu | /stopkosenje");
}
else { SendClientMessage(playerid, SIVA, "Nisi kod kosaca!"); return 1; } // ako igrac nije na odredjenim koordinatama, salje mu poruku.
return 1;
}STRCMP Komanda:
if(strcmp(cmdtext, "/takejob", true))
{
if(PlayerInfo > 0) // proverava jel igracev posao veci od 0
{
SendClientMessage(playerid, SIVA, "Vec si zaposlen, kucaj /otkaz da bi dao otkaz.");
return 1;
}
if(IsPlayerInRangeOfPoint(playerid, 2, 1961.4186,-1232.6809,19.9813)) // proverava da li se igrac nalazi an tim koordinatama
{
PlayerInfo = 1; // psotavlja igracu posao na 1
SendClientMessage(playerid, BELA, "Uspesno si se zaposlio kao kosac trave.");
SendClientMessage(playerid, BELA, "Komande: /kositravu | /stopkosenje");
}
else { SendClientMessage(playerid, SIVA, "Nisi kod kosaca!"); return 1; } // ako igrac nije na odredjenim koordinatama, salje mu poruku.
return 1;
}7.)
I potrebna nam je i komanda za otkaz (ovu komandu je uradio ναηιℓℓα.ιη¢)
ZCMD Komanda:
CMD:otkaz(playerid, params[])
{
if(PlayerInfo < 1) return SendClientMessage(playerid,-1,"Niste zaposljeni!"); // proverava da li ej igrac zaposlen
PlayerInfo = 0; // stavlja mu posao na 0 (nezaposlen)
SendClientMessage(playerid,-1,"Dali ste otkaz");
return true;
}
YCMD Komanda:
YCMD:otkaz(playerid, params[], help)
{
#pragma unused help
if(PlayerInfo < 1) return SendClientMessage(playerid,-1,"Niste zaposljeni!"); // proverava da li ej igrac zaposlen
PlayerInfo = 0; // stavlja mu posao na 0 (nezaposlen)
SendClientMessage(playerid,-1,"Dali ste otkaz");
return true;
}STRCMP Komanda:
if(strcmp(cmdtext, "/otkaz", true))
{
if(PlayerInfo < 1) return SendClientMessage(playerid,-1,"Niste zaposljeni!"); // proverava da li ej igrac zaposlen
PlayerInfo = 0; // stavlja mu posao na 0 (nezaposlen)
SendClientMessage(playerid,-1,"Dali ste otkaz");
return true;
}Naravno nezaboravite da PlayerInfo promenite u ono kako vama stoji u modu.
Underboss
Balkan SA:MP
SA-MP Doprinos
Balkan SA:MP
SA-MP DoprinosNovi Član
240 / 250 XP
Početnik(0)
554
Postovi:
96
Teme:
Pridružio se:Feb. 2012
10. Mar. 2012.
STRCMP ti ni netreba
YCMD samo sa puno komandi a ne u FSovima i slicno
ZCMD uvijek i 100 %
nije ti definirano BELA sto ce zbuniti mnoge
inace solidan tut
YCMD samo sa puno komandi a ne u FSovima i slicno
ZCMD uvijek i 100 %
nije ti definirano BELA sto ce zbuniti mnoge
inace solidan tut
Crime Lord
Balkan SA:MP
SA-MP Doprinos
Balkan SA:MP
SA-MP DoprinosNovi Član
240 / 250 XP
Početnik(0)
947
Postovi:
80
Teme:
Pridružio se:Jun 2011
10. Mar. 2012.
Hvala, eno definisao sam boju, to sam zab da uradim... hvala
strcmp sam stavio jer obicno pocetnici koji ne znaju da urade posao, koriste strcmp, i tvrdoglavi su pa nece da koriste zcmd, zato sam im stavio, pa nek odluce sta ce koristiti 🙂
strcmp sam stavio jer obicno pocetnici koji ne znaju da urade posao, koriste strcmp, i tvrdoglavi su pa nece da koriste zcmd, zato sam im stavio, pa nek odluce sta ce koristiti 🙂
Crime Lord
Balkan SA:MP
SA-MP Doprinos
Balkan SA:MP
SA-MP DoprinosNovi Član
240 / 250 XP
Početnik(0)
947
Postovi:
80
Teme:
Pridružio se:Jun 2011
10. Mar. 2012.
hvala...
a valjda znaju da urade zaposljavanje i otkaz... 😄
@vanila , hvala, to mi je reko i Gagi, al ja sve ovako skriptam, posto mi je lakse da se snadjem, onako se zbunim i nzm sta sam hteo 😄
btw, tek sam sad video sta pise u pravilu, al jbg, tut je vec postavljen 😛
a valjda znaju da urade zaposljavanje i otkaz... 😄
@vanila , hvala, to mi je reko i Gagi, al ja sve ovako skriptam, posto mi je lakse da se snadjem, onako se zbunim i nzm sta sam hteo 😄
btw, tek sam sad video sta pise u pravilu, al jbg, tut je vec postavljen 😛
Godfather
Balkan SA:MP
SA-MP Doprinos
Balkan SA:MP
SA-MP DoprinosNovi Član
240 / 250 XP
Početnik(0)
2,079
Postovi:
24
Teme:
Pridružio se:Feb. 2011
10. Mar. 2012.
Takoder definiraj sve boje Siva i ostale ...
jednostavno kod tavih tutova stavis za boju bijelu tj. -1 ...
jednostavno kod tavih tutova stavis za boju bijelu tj. -1 ...
Kingpin
Balkan SA:MP
SA-MP Doprinos
Balkan SA:MP
SA-MP DoprinosNovi Član
240 / 250 XP
Početnik(0)
1,126
Postovi:
91
Teme:
Pridružio se:Jul 2010
10. Mar. 2012.
Quote from March 10, 2012, 6:11 pm:
btw, tek sam sad video sta pise u pravilu, al jbg, tut je vec postavljen 😛
Neka, koristan je tutorijal, mnogo bolji od onog tako da nije problem. Od sad pa na dalje vise nema potrebe bilo kakav tutorijal vezan za posao.
Zato ti kazem da ga dovrsis i napravis te 2 komande.
Crime Lord
Balkan SA:MP
SA-MP Doprinos
Balkan SA:MP
SA-MP DoprinosNovi Član
240 / 250 XP
Početnik(0)
947
Postovi:
80
Teme:
Pridružio se:Jun 2011
Enforcer
Balkan SA:MP
SA-MP Doprinos
Balkan SA:MP
SA-MP DoprinosNovi Član
90 / 100 XP
Početnik(0)
212
Postovi:
55
Teme:
Pridružio se:Nov. 2011
Crime Lord
Balkan SA:MP
SA-MP Doprinos
Balkan SA:MP
SA-MP DoprinosNovi Član
240 / 250 XP
Početnik(0)
947
Postovi:
80
Teme:
Pridružio se:Jun 2011
10. Mar. 2012.
Mozda zato sto nisi sebi postavio posao na 1 ? -.-
ili ako koristis i STRCMP, onda umesto if(strcmp(cmdtext, "/stopkosenje", true)) stavi
if(!strcmp(cmdtext, "/stopkosenje", true))
isto je i za pocetak posla
ili ako koristis i STRCMP, onda umesto if(strcmp(cmdtext, "/stopkosenje", true)) stavi
if(!strcmp(cmdtext, "/stopkosenje", true))
isto je i za pocetak posla
Morate biti prijavljeni da biste odgovorili na ovu temu.
Prijava