[TuT] Polaganje

Započeo Hitman, Maj 18, 2013, 14:08:46 POSLE PODNE

prethodna tema - sledeća tema

0 članova i 4 gostiju pregledaju ovu temu.

UVOD
  • Ovaj tutorial je pretežno za početnike ali može svakome poslužiti
  • Nisam imao ideju za Å¡ta bih mogao napraviti tutorial pa mi je palo na pamet polaganje
  • Morate znati kako dodati nove varijable za učitavanje/spremanje jer ja to neću objaÅ¡njavati
  • Trebat će nam ZCMD za komande (Download: klik)

POÄŒETAK
  • Definirat ćemo varijablu za polaganje, dodajte pri vrhu
new Polaganje[MAX_PLAYERS];
  • Za početak trebate dodati na vrh skripte(ukoliko već nemate definirano):
#define SCM SendClientMessage
  • I dodajte pod OnPlayerConnect sljedeće
Polaganje[playerid] = 0; //stavlja igraču polaganje na 0 pri connectu

VARIJABLE
  • Vi morate dodati varijablu kako bi skripta pamtila da imate vozačku
  • Ovako to kod mene izgleda (ako vi imate drukčije morate si prilagoditi):

enum pInfo
{
        pDozvola
}:
new PI[MAX_PLAYERS][pInfo];


KOMANDA /polaganje
  • Sada ćemo napraviti komandu da započnete polaganje
  • U ovoj komandi ako nemate iste nazive varijabli kao ja, morate ih zamijeniti svojim nazivima
CMD:polaganje(playerid, params[])
{
if(!IsPlayerInRangeOfPoint(playerid, 1.0, 1426.9076,-2349.7634,13.8703)) return SCM(playerid, -1, "Niste u autoskoli"); //ako niste na mjestu za polaganje izbacit će vam poruku
if(PI[playerid][pDozvola] != 0) return SCM(playerid, -1, "Vec posjedujete vozacku dozvolu!"); //ako već imate vozačku dozvolu izbacit će vam poruku
if(GetPlayerMoney(playerid) < 250) return SCM(playerid, -1, "Nemate 250$ za polaganje"); //ako nemate 250$ za polaganje izbacit će vam poruku
Polaganje[playerid] = 1; //Stavlja igraču polaganje na 1
        GivePlayerMoney(playerid, -250); // oduzima igraču 250$
        SetPlayerCheckpoint(playerid, 1436.3601,-2360.9924,13.3703,3.0); // postavlja igraču prvi checkpoint
SCM(playerid, -1, "Udjite u neko od ponudjenih vozila i zapocnite polaganje!");
SCM(playerid, -1, "Zapamtite! Ne smijete napustati vozilo tijekom polaganja!");
SCM(playerid, -1, "Isto tako ne smijete ni malo ostetiti vozilo!");
return 1;
}


CHECKPOINT
  • Sada ćemo napraviti checkpointe za polaganje
  • Ja ću napraviti samo par početnih checkpointa, vi nastavite dalje sami

if(Polaganje[playerid] == 1 && IsPlayerInRangeOfPoint(playerid, 3.0, 1436.3601,-2360.9924,13.3703) && vAutoskola(idv)) //ovdje provjerava dali je igrač započeo polaganje te dali je u checkpontu kojeg smo dobili kada smo kucali /polaganje i naravno dali je u vozilu autoškole
{
Polaganje[playerid] = 2; //stavlja igraču polaganje na 2
DisablePlayerCheckpoint(playerid); //uklanja igraču prethodni checkpoint
SetPlayerCheckpoint(playerid, 1447.5872,-2360.7622,13.3701, 3.0); //postavlja igraču novi checkpoint
SCM(playerid, -1, "Za pocetak odvozi jedan slalom"); //šalje igraču poruku
return 1;
}
if(Polaganje[playerid] == 2 && IsPlayerInRangeOfPoint(playerid, 3.0, 1447.5872,-2360.7622,13.3701)  && vAutoskola(idv)) //ovdje provjerava dali je igraču varijbala za polaganje na 2 te dali je igrač u checkpointu iznad i naravno dali je u vozilu autoÅ¡kole
{
Polaganje[playerid] = 3; //stavlja igraču polaganje na 3
DisablePlayerCheckpoint(playerid); //uklanja igraču prethodni checkpoint
SetPlayerCheckpoint(playerid, 1444.8232,-2353.9529,13.3676,3.0); //postavlja igraču novi checkpoint
return 1;
}
if(Polaganje[playerid] == 3 && IsPlayerInRangeOfPoint(playerid, 3.0, 1444.8232,-2353.9529,13.3676) && vAutoskola(idv)) //ovdje provjerava dali je igraču varijabla za polaganje na 3 te dali je igrač u checkpointu iznad i naravno dali je u vozilu autoškole
{
Polaganje[playerid] = 4; //stavlja igraču polaganje na 4
DisablePlayerCheckpoint(playerid); //uklanja igraču prethodni checkpoint
SetPlayerCheckpoint(playerid, 1439.0577,-2345.6758,13.3644,3.0); //postavlja igraču novi checkpoint
return 1;
}

//Sada ćemo napraviti posljednji checkpoint

if(Polaganje[playerid] == 4 && IsPlayerInRangeOfPoint(playerid, 3.0,1439.0577,-2345.6758,13.3644) && vAutoskola(idv)) //ovdje provjerava dali je igraču varijabla za polaganje na 4 te dali je igrač u checkpointu iznad i naravno dali je u vozilu autoškole
{
new Float:HP;
GetVehicleHealth(GetPlayerVehicleID(playerid), HP); //provjera oštećenja vozila
if(HP < 300.0) //ako vozilo ima ispod 300hp
{
Polaganje[playerid] = 0; //stavlja igraču polaganje na 0
DisablePlayerCheckpoint(playerid); //uklanja igraču checkpint
SCM(playerid, -1, "Ostetili ste vozilo, pali ste na vozackom ispitu!"); //šalje igraču poruku
SetVehicleToRespawn(GetPlayerVehicleID(playerid)); //respawn vozila s kojim ste polagali
}
else //ako vozilo ima iznad 300hp, znači položio je
{
Polaganje[playerid] = 0; //stavlja igraču polaganje na 0
PI[playerid][pDozvola] = 1; // igrač dobiva dozvolu
DisablePlayerCheckpoint(playerid); //uklanja igraču checkpoint
SetVehicleToRespawn(GetPlayerVehicleID(playerid)); //respawn vozila s kojim ste polagali
SCM(playerid, -1, "Uspjesno ste polozili vozacki ispit te dobili vozacku dozvolu!"); //šalje igraču poruku
}
return 1;
}


VOZILA AUTÅ KOLE
  • Sada ćemo napraviti da vozila autoÅ¡kole mogu voziti samo oni koji trenutno polažu

//Ovo dodajte negdje pri vrhu skripte
new AutoSkola[2]; // 2 je broj koliko ima vozila za polaganje

//Ovo dodajte kod ostalih vozila odnosno ispod public OnGameModeInit()
SetVehicleNumberPlate(AutoSkola[0] = AddStaticVehicleEx(436,1428.19995117,-2366.39990234,13.50000000,270.00000000,103,1,1000), "Autoskola"); //Stvara vozilo autoškole i pamti njegov ID u varijabli AutoSkola[0] + postavlja tablice na auto
SetVehicleNumberPlate(AutoSkola[1] = AddStaticVehicleEx(436,1428.19995117,-2363.10009766,13.50000000,270.00000000,103,1,1000), "Autoskola"); //Stvara vozilo autoškole i pamti njegov ID u varijabli AutoSkola[1] + postavlja tablice na auto

  • PronaÄ'ite public OnPlayerStateChange(playerid, newstate, oldstate) te dodajte ispod
if(newstate == PLAYER_STATE_DRIVER) //mjesto vozača
{
new carid= GetPlayerVehicleID(playerid);
if(vAutoskola(carid) && (Polaganje[playerid] != 1)) //provjerava dali je ušao u vozilo autškole i da li mu je varijabla za polaganje na 1
{
SCM(playerid, -1, "Ne mozes voziti vozilo od autoskole"); //izbacuje poruku igraču
RemovePlayerFromVehicle(playerid); //izbacuje igrača iz vozila
}

//Sada ćemo staviti da vam izbaci upozorenje ako uÄ'ete u vozilo a nemate dozvolu

if(PI[playerid][pDozvola] == 0)
{
SCM(playerid, -1, "Nemate vozacku dozvolu, pripazite na policiju!");//Å¡alje poruku
}


  • Sada ćemo napraviti stock za vozila autoÅ¡kole
  • Najbolje ga postavite gdje su vam ostali stockovi

stock vAutoskola(carid)
{
for(new iIdx = 0; iIdx < sizeof(AutoSkola); iIdx++)
{
if (AutoSkola[iIdx] == carid) return 1;
}
return 0;
}

  • I za kraj ćemo staviti da ukoliko igrač izaÄ'e iz vozila tijekom polaganja da automatski padne polaganje
  • PronaÄ'ite public OnPlayerExitVehicle(playerid, vehicleid) te dodajte ispod

new carid= GetPlayerVehicleID(playerid);
if(Polaganje[playerid] > 0 && vAutoskola(carid)) //provjerava dali je polaganje započeto te dali je u vozilu autoškole
{
Polaganje[playerid] = 0; //stavlja igraču polaganje na 0
DisablePlayerCheckpoint(playerid); //uklanja igraču checkpoint
SetVehicleToRespawn(carid); //respawna vozilo
SCM(playerid, -1, "Niste smjeli napustiti vozilo! Pali ste ispit!"); //izbacuje igraču poruku
}


KRAJ
  • Ovo je samo osnovno, vi možete 'unaprijediti' polaganje.
  • Ako ugledate neku greÅ¡ku u tutorialu, javite da ispravim.
  • Ukoliko vam neÅ¡to nije jasno, slobodno pitajte.
Poslednja Izmena: Maj 22, 2013, 15:10:20 POSLE PODNE od Hitman

Pohvale za tutorijal. No imas jednu gresku tj. nisi definirao varijablu Polaganje.
New Vision RPG/DM
Forum: www.nv-samp.com
SA:MP IP: 51.254.86.94 :8221
NV TeamSpeak3: 151.80.174.132:9972


Citat: [SC] - Rıckeη poslato Maj 18, 2013, 14:11:27 POSLE PODNE
Pohvale za tutorijal. No imas jednu gresku tj. nisi definirao varijablu Polaganje.

Hvala Å¡to si me podjestio

ado97

Dobar tutorijal , pomoći će mnogima.



Nisi napisao gdje da stave te ostale checkpoint-e ;)

Dobar tut :)




Balkan Ulice RPG opis servera: Click



-Tutorial za mijesanje ID-ova na vozilima: Click


Citat: |_sLaY_| ^_- poslato Maj 19, 2013, 00:53:09 PRE PODNE
Nisi napisao gdje da stave te ostale checkpoint-e ;)

Pa napravio sam 3 checkpointa kao primjer, dalje valjda mogu sami..


Hvala ostali.  :)

Lepo opsirno


Respect:ColdPlay,Artie,dnjl.

dobar tut,pomoci ce mnogima
btw nisam te dugo vidio na forumu:P


[FS]Rent
[FS] Vremenska prognoza
[TuT] PayDay
[TuT]PayDay sistem[UPDATED]
Moja Biografija

Respect:Mr.Gagi,FlasH,Streetboy,David (Sabljak) A.k.A SABO(T)
ÄŒovjek nije stvoren za poraze, moze biti unisten, ali ne i pobjeÄ'en!

Citat: [BS:RP]xyzcod2 poslato Maj 19, 2013, 19:10:59 POSLE PODNE
dobar tut,pomoci ce mnogima
btw nisam te dugo vidio na forumu:P

Često sam ja na forumu ali rijetko postam pa ti se čini možda :P

Hvalaa ;)

Dobar tut , pomocice ostalima.