[TUT]Fuel system

Započeo SpawneR., Januar 11, 2013, 18:06:48 POSLE PODNE

prethodna tema - sledeća tema

0 članova i 1 gost pregledaju ovu temu.


S_TUT
Fuel system

Uvod
Pozdrav 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!

Definicija
Pre 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


Standardno
Ovo 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


Textdravovi
Ovo su textdrvovi koji vama prikazuju to stanje goriva.. Ovo mozete da prilagodite vasem Speedometru..Stavite u public OnPlayerSpawn

public 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-ova
Ovo 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 /fill
Komanda 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;
    }
   


Timeri
Tajmeri , 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
}


Credits

SpawneR - Pravljenje TUT-a i prebacivanje komanda i optimiziranje skripte
gamer931215 - Njegov TUT na sa-mp.com...

LockeR - Ideja

TUT je sa mog starog profila koji je izbrisan :)

Vrlo lijepo i korisno ;) Pohvala!
Rehab RolePlay [0.3.7-R2] - https://discord.gg/XCjRc2U

91.121.21.54:8743

napokon tutorijal gde si objasnio lepo svaku liniju  :D
cestitke


jednostavno a dobro pohvale  :P
Pravim RP,DM,TDM,STUNT, Freeroam modove od 0 za pare, nacini placanja : Paypal ili banka