[TuT] Array spremanje vozila (Napredna Verzija)

Započeo Denis_Lapi, Jul 13, 2014, 01:42:46 PRE PODNE

prethodna tema - sledeća tema

0 članova i 1 gost pregledaju ovu temu.

Pozdrav forumasi.
Posto je stari tutorijal na ovu temu nestao tj. obrisan je. Ja sam odlucio da vam ponovo napisem jer i dalje veliki broj clanova ne zna kako da ovo odradi.



-Dakle, kao sto sam naslov kaze, u ovom tutorijalu cete nauciti kako da spremate i ubacujete vozila u vas mod po Array principu.
-Sta vam omogucava ovaj sistem? Ovaj sistem vam omogucava tj. sprecava mesanje ID-ova vozila .



-Sta vam je potrebno za ovaj tutorijal? Samo dobra volja i SA:MP paket, mod ili sta vec
P.S. Ja sam ovo radio za vozila Bolnice, ali vi mozete promeniti varijable i raditi na za svoje potrebe. To mi je vec u modu bilo odradjeno tako da sam uzeo ovo jer ce vam biti lakse da shvatite.


1. Korak

-U prvom koraku cemo spremiti promenljivu koja broji koliko vozila sadrzi nas sistem array-a, takodje dodacemo i #include <a_samp> kao osnovni include fajl.
- Kako to radimo? Pa jednostavno cemo na pocetku skripte van svih publica staviti sledeci kod:



#include <a_samp> // Osnovni Include fajl

new Bolnica[2]; // Ova varijabla broji za koliko vozila ima nas sistem, u nasem slucaju su to 2 vozila


2. Korak

- U drugom koraku cemo ubacivati vozila po Array sistemu u public OnGameModeInit(). Obratite paznju na ovaj postupak jer je to ono sto je specificno od klasicnog ubacivanja.
- Kako to radimo, pa na sledeci nacin:



Bolnica[0] = CreateVehicle(416,1177.3308,-1308.4207,14.0167,268.7923, 1,2, 100); // Ovo je vozilo broj 1
Bolnica[1] = CreateVehicle(416,1176.9700,-1338.4779,14.0681,271.0920, 1,2, 100); // Ovo je vozilo broj 2
// Kao sto smo gore definisali imamo 2 vozila



3. Korak

- U trecen koraku kreiramo stock koji na osnovu na osnovu Array niza koji smo prethodno kreirali, sve clanove tog niza svrstava u istu drupu. Inace, ovaj stock ce nam kasnije sluzici u proveri koja su to vozila koja igrac ne moze da koristi ukoliko nije ispunio neki uslov, vise o tome u sledecem koraku.
- Kako kreiramo stock? Njega kreiramo van svih publica. Ja vam preporucujem da to odradite na kraju skripte.
- Kako glasi nas stock, pa ovako:



stock VozilaBolnice(carid) // Ime nase druge vozila
{
for(new i = 0; i < sizeof(Bolnica); i++)
{
if(carid == Bolnica[i]) return 1;
}
return 0;
}


Ovaj postupak necu previse da objasnjavam jer zaista nema tolike potrebe. Znaci kada god zelite da odradite jos jedan array sistem kopirajte ovaj stock, promenite mu ime i u petlji zamenite nove varijable.

4. Korak

- U 4. koraku cemo zavrsiti nas Array sistem. U njemu cemo postavljati uslove koje igrac mora da ispuni da vi mogao da vozi odradjeno vozilo. Moji ce uslovi naravno biti drugaciji nego kod vas jer ne mogu da kreiram i organizacije. S toga cu postaviti neke, mogu slobodno reci, banalne uslove. Ali sta je tu je, vazno je da shvatite osnovu svega ovoga.
- Dakle mi u ovom nasem 4. koraku moramo ubaciti proveru da li igrac moze da vozi odredjena vozila kada udje u njih.
- Kako to radimo? Prvo gde moramo da odemo je public OnPlayerStateChange(playerid, newstate, oldstate)
  U njemu cemo odratiti promenu i zavrsiti ovo sto smo poceli, ovaj 4. korak predstavlja nas cilj.
- Dakle upisujemo sledeci kod u vec navedeni public




public OnPlayerStateChange(playerid, newstate, oldstate)
{
new vozilo= GetPlayerVehicleID(playerid); // Definisemo promenljivu od koje cemo kasnije uzimati ID vozila
if(newstate == PLAYER_STATE_DRIVER)  // Ovo predstavlja poziciju igraca kada je u vozilo, u nasem slucaju to je pozicija vozaca.
{
    if(VozilaBolnice(vozilo)) // Opozivamo stock koji smo kreirali tj. drupu vozila koju ovaj stock svrstao u jedno
{
if(GetPlayerMoney(playerid) < 100) // Ovaj uslov nam definise da ako igrac ima manje od 100$ ne moze da udje u vozilo. Ovaj deo morate sebi da prilagodite u zavisnosti za sta kreirate Array, bilo to organizacija, posao ili nesto drugo
{
GameTextForPlayer(playerid, "~w~Zakljucano~n~~b~Nemate kljuceve ovog vozila !!", 4000, 5); // Ispisuje nam GameText koji traje 4 sekunde.
RemovePlayerFromVehicle(playerid); // Uklanja/izbacuje igraca iz auta ako uslov nije ispunjen.
}
}
    }
return 1;
}



*BITNO: if(newstate == PLAYER_STATE_DRIVER) - Ovaj uslov vam definise da ako igrac hoce da VOZI kola, a ne ispunjuje uslov da ga izbaci. Da nismo stavili ovaj uslov izbacivalo bi nas nas kako god da udjemo u kola. Bilo to na mestu suvozara, na zadnja dva sedista, ili bilo gde unutar vozila. Naravno pod uslovom da ne zadovoljavamo uslov koji je zadat.


Tutorijal koji sam izradio je testiran, s toga ukoliko imate bilo kakvih problema to ce biti zbog toga sto nesto niste lepo kopirali. U prilog cu vam ostaviti i pasterbin link gde cete moci da pregledate celu skriptu.
                                                                                                                                                                         
                                                                                                                                                                                                      Pozdrav, Denis_Lapi

PasterBin Link
Poslednja Izmena: Jul 13, 2014, 01:58:54 PRE PODNE od Denis_Lapi

[FS] Bank Sistem
[TuT] Array Sistem (Napredna)


"Pa krenite na mene i provesce te se super ko kapetan Kuka kada levom brise dupe"

www.denis-lapi.com


Citat: Guerrero poslato Jul 13, 2014, 17:09:13 POSLE PODNE
Pohvale za tut.
Ali imam jedno pitanje:kako da uklonim onu stariju varijantu da su odredjeni  id-ovi za odredjenu org-u ?

EDIT: je li to ovaj dio i sta jos treba da obrisem
public IsAnOwnableCar(vehicleid)
{
if(vehicleid >= 457 && vehicleid <= 1060) { return 1; } // car system
return 0;
}

Pa moras ukloniti sva vozila i sve publice koji ti sluze za to. Ali svakako da ovo nije mesto za tu raspravu, otvori temu pa cemo tamo pricati o tome. Da ne bi ovde skupljali postove. Hvala za komentar  ;)

[FS] Bank Sistem
[TuT] Array Sistem (Napredna)


"Pa krenite na mene i provesce te se super ko kapetan Kuka kada levom brise dupe"

www.denis-lapi.com

Dobar tutorial,sve fino objasnjeno,svaka cast :)
KOPAJ KRIPTOVALUTU TELEFONOM! >>> SAZNAJ VIŠE <<<
POČNI RADITI KAO PREDAVAČ ENGLESKOG JEZIKA! >>> SAZNAJ VIŠE <<<


Citat: [SF]Ivan_Ino.pwn poslato Jul 18, 2014, 00:19:44 PRE PODNE
Citat: [CC:RP]TheToretto poslato Jul 18, 2014, 00:17:21 PRE PODNE
Dobar tutorial,sve fino objasnjeno,svaka cast :)

Dobar tut al cemu refresh..

Nisam vidio,cudim se da mi je promaklo ako sam bio tu,a kakve veze ima za refresh tema 5 dana stara :P ,mozda ima jos neko da nije vidio  8)
KOPAJ KRIPTOVALUTU TELEFONOM! >>> SAZNAJ VIŠE <<<
POČNI RADITI KAO PREDAVAČ ENGLESKOG JEZIKA! >>> SAZNAJ VIŠE <<<

// Nepotrebno kopiranje citata
#Denis_Lapi
Poslednja Izmena: Decembar 31, 2014, 17:15:23 POSLE PODNE od Denis_Lapi
GAD SAM JA

Bolje da si pokazao preko iteratora jer je jednostavnije,no početnici ce i ovo razumeti.
69

Citat: C++ poslato Decembar 31, 2014, 18:45:39 POSLE PODNE
Bolje da si pokazao preko iteratora jer je jednostavnije,no početnici ce i ovo razumeti.
Postojao je jedan tut koji radi na ovaj princip pa je na neki nacin obrisan, zato sam uradio ovakav. A i mislim da ce im vise koristiti. Skoro svaki mod ima ovaj princip rada, a i sam ga koristim kod mene u modu, pa sam ga napisao ovako.
Posveticu se malo pisanju tutorijala neko vreme, jer planiram da batalim skriptanje, pa cu negde plasirati ovo sto sam naucio kroz godine.

[FS] Bank Sistem
[TuT] Array Sistem (Napredna)


"Pa krenite na mene i provesce te se super ko kapetan Kuka kada levom brise dupe"

www.denis-lapi.com