S_TUT
Fuel system
UvodPozdrav vima , odlucio sam da napravim jos jedan svoj TUT u vezi pravljenje fuel systema... Fuel system je jako vazan za dobar RP i ne oduzima mnogo vremena... krenimo!DefinicijaPre svega sve moramo da definisemo na vrhu srkipte .. svaka linija je objasnjena cemu sluzi... new fuel[MAX_VEHICLES]; //gorivo po vozilu
forward timer_fuel_lower(); //timer akda imate manje goriva
forward timer_refuel(playerid); //timer kada trebate da napunite rezervoar
new isrefuelling[MAX_PLAYERS] = 0; //provera da li igra vec puni gorivo
new Text:td_fuel[MAX_PLAYERS]; // texdraw
StandardnoOvo je standardno , znaci ovo satavite u OnGameModeInit da kad igra udje u neko vozilo nakon restarta servera to vozilo ima 100 l goriva.for(new i=0;i<MAX_VEHICLES;i++) {
fuel[i] = 100; //postavlja gorivo na 100
}
SetTimer("timer_fuel_lower",4200,true); //timer
TextdravoviOvo su textdrvovi koji vama prikazuju to stanje goriva.. Ovo mozete da prilagodite vasem Speedometru..Stavite u public OnPlayerSpawnpublic OnPlayerSpawn(playerid)
{
td_fuel[playerid] = TextDrawCreate(45,324,"Fuel: 100"); //Pravi textdraw
TextDrawBackgroundColor(td_fuel[playerid],0x00000033); //postavlja pozadinu
TextDrawFont(td_fuel[playerid],3); //font
TextDrawLetterSize(td_fuel[playerid],0.699999,1.700000); //velicina
TextDrawColor(td_fuel[playerid],0x000000ff); // boja
TextDrawSetShadow(td_fuel[playerid],3); //senka
return 1;
}
Pokazivanje/uklanjanje TD-ovaOvo sluzi da pokazi ili ukloni TD nako ulaska ili izlaska iz vozila... Sravite pod public OnPlayerStateChange..public OnPlayerStateChange(playerid, newstate, oldstate)
{
if (newstate == PLAYER_STATE_DRIVER || newstate == PLAYER_STATE_PASSENGER)
{
new vid = GetPlayerVehicleID(playerid);
new string[125];format(string,sizeof string,"Fuel:%i",fuel[vid]); //realno gorivo
TextDrawSetString(td_fuel[playerid],string);
TextDrawShowForPlayer(playerid,td_fuel[playerid]); //Pokazuje da li osoba vozi vozilo..
} else {
TextDrawHideForPlayer(playerid,td_fuel[playerid]); //krije ukoliko igrac nije vozac
}
return 1;
}
Komanda /fillKomanda da napunite vozilo gorivom...CMD:fill (playerid, params[] ) {
if (!IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid,0xFFC800FF,"Niste u vozilu!"); //proverava da li je igrac u vozilu
if (isrefuelling[playerid]) return SendClientMessage(playerid,0xFFC800FF,"Vec punis gorvio!"); //proverava da li je igrac u toku punjenja goriva kucao komandu
if (GetPlayerMoney(playerid) - 80 <0) return SendClientMessage(playerid,0xFFC800FF,"nemas dovoljno novca!"); //Proverava da li igrac ima 80$
if(IsPlayerInRangeOfPoint(playerid, 2, -228.1517,1217.3269,19.7352))
{
GivePlayerMoney(playerid,-80); //Oduima igracu 80$
SetCameraBehindPlayer(playerid); //Stavlja kameru iza igraca..
TogglePlayerControllable(playerid,0); //Feeza igraca na nekoliko sec
isrefuelling[playerid] = 1; //stavlja refueling na 1 tako da nemoze igrac da spama /fill
TextDrawSetString(td_fuel[playerid],"Punjenje..."); //Stavja igracu TD
SetTimerEx("timer_refuel",4500,false,"i",playerid); //stavlja timer
}
else { SendClientMessage(playerid, SIVA, "Nisi kod pumpe!"); return 1; }
return 1;
}
TimeriTajmeri , postavite ih na dno skripte... public timer_fuel_lower()
{
for(new i=0;i<MAX_PLAYERS;i++) { // loop
if (isrefuelling[i]) continue; //stopira u punjenju
new vid = GetPlayerVehicleID(i); //uzima ID vozila
if (GetPlayerVehicleSeat(i) == 0) { //da li je igrac vozac
fuel[vid] = fuel[vid] -1; //punjenje
if (fuel[vid]<1) //da li je vozilo prazno
{
fuel[vid] = 0; //stavlja gorivo na 0
RemovePlayerFromVehicle(i); //izbacuje igraca iz vozila
GameTextForPlayer(i,"~r~Nemas ~w~goriva~r! , zovi slep sluzbu!",5000,4); //text
}
}
new string[125];format(string,sizeof string,"Fuel:%i",fuel[vid]); //string
TextDrawSetString(td_fuel[i],string); //ubacuje TD
}
return 1;
}
public timer_refuel(playerid)
{
new vid = GetPlayerVehicleID(playerid);
fuel[vid] = fuel[vid] = 100; //stavlja gorivo na 100
isrefuelling[playerid] = 0;//specava spam komandom /fil
TextDrawSetString(td_fuel[playerid],"Fuel:100"); //pokazuje TD
TogglePlayerControllable(playerid,1); //unfreeza igraca
}
CreditsSpawneR - Pravljenje TUT-a i prebacivanje komanda i optimiziranje skripte
gamer931215 - Njegov TUT na sa-mp.com... LockeR -
IdejaTUT je sa mog starog profila koji je izbrisan :)
Vrlo lijepo i korisno ;) Pohvala!
napokon tutorijal gde si objasnio lepo svaku liniju :D
cestitke
jednostavno a dobro pohvale :P