Szerző Téma: Re:Egyszerû(Alapvetõ) Üzemanyag Filterscript készítése  (Megtekintve 251 alkalommal)

Nem elérhető sanyo

Re:Egyszerû(Alapvetõ) Üzemanyag Filterscript készítése
« Dátum: 2011. január 22. - 21:34:27 »
0 Show voters
Idézetet írta: Alpha date=1282726509\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"5536\" data-ipsquote-contentclass=\"forums_Topic

Egyszerû Üzemanyag Filterscript készítése
 
Mindenek elõtt, Deklarációk
Szükségünk lesz Alapvetõ Declarációkra amiben eltároljuk az üzemanyag értékeit.
 

#include <a_samp>
#undef MAX_VEHICLES
#define MAX_VEHICLES 30 // ide írd, mennyi jármû van a szerveren
// max játékos
#undef MAX_PLAYERS
#define MAX_PLAYERS 30 // ide írd mennyi a slot limit!
new fuel[MAX_VEHICLES]; //Üzemanyag jármûvenként
forward timer_fuel_lower(); //Idõzítõ az üzemanyag csökkenéshez
forward timer_refuel(playerid); //Idõzítõ a jármû tankoláshoz
new isrefuelling[MAX_PLAYERS] = 0; //Bool annak ellenörzéséhez ha már a játékos tankol
new Text:td_fuel[MAX_PLAYERS]; //Üzemanyag TextDraw

 
Szabványos üzemanyag érték beálítása
(Itt volt valami blabla amit nem tudtam lefordítani de az biztos lényegtelen)
 

public OnFilterScriptInit()//Amikor a FilterScript betöltõdik
{
    for(new i=0;i<MAX_VEHICLES;i++) {
        fuel = 100; //Alapértéknek minden jármû 100-as üzemanyag értéket kap, ami a maximum
    }
    SetTimer(\"timer_fuel_lower\",4200,true); //Idõzítõ az üzemanyag csökkenéshez
    return 1;
}

 
Elkészítjük a TextDrawot amikor a játékos spawnol
Beálítjuk a textdraw pozícióját és effektusait.
 

public OnPlayerSpawn(playerid)
{
    td_fuel[playerid] = TextDrawCreate(45,324,\"Fuel: 100\"); //Csinál 1 TextDrawot a 45,324 pozícióba
    TextDrawBackgroundColor(td_fuel[playerid],0x00000033); //Csinálunk neki egy szép hátteret
    TextDrawFont(td_fuel[playerid],3); //TextDraw Front beálítása
    TextDrawLetterSize(td_fuel[playerid],0.699999,1.700000); //Méret
    TextDrawColor(td_fuel[playerid],0x000000ff); //Szín
    TextDrawSetShadow(td_fuel[playerid],3); //Árnyék =)
    return 1;
}

 
Megmutatjuk/Elrejtjük az üzemanyag szintet ha a játékos beszáll a jármûbe vagy elhagyja
Elrejtjük a TextDrawot ha a játékos NINCS a kocsiban
 

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]); //Gyorsan csinálunk 1 kicsi frissítést az üzemanyag szinten
        TextDrawSetString(td_fuel[playerid],string);
        TextDrawShowForPlayer(playerid,td_fuel[playerid]); //Megmutatja az üzemanyag szintet ha a játékos kocsiban van
    } else {
        TextDrawHideForPlayer(playerid,td_fuel[playerid]); //Elrejtjük a TextDrawot ha a játékos nincs a kocsiban
    return 1;
}

 
Most megcsináljuk a Tankolás parancsot
 

public OnPlayerCommandText(playerid,cmdtext[]) {
    if (!strcmp(\"/refuel\",cmdtext,true,7)) {
        if (!IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid,0xFFC800FF,\"You are not in an vehicle!\"); //Ha a játékos nincs jármûben MEGÁLÍTJUK a parancsot
        if (isrefuelling[playerid]) return SendClientMessage(playerid,0xFFC800FF,\"You are already refuelling!\"); //Ha már a játékos tankol akkor MEGÁLÍTJUK a parancsot
        if (GetPlayerMoney(playerid) - 80 <0) return SendClientMessage(playerid,0xFFC800FF,\"You dont have enough money!\"); //Ha a játékosnak NINCS elég pénze akkor visszalökjük!
        GivePlayerMoney(playerid,-80); //De ha van akkor leveszünk -80$-t
        SetCameraBehindPlayer(playerid); //A játékos mögé rakjuk a kamerát mert õ így jobban lát mikor megvan fagyasztva
        TogglePlayerControllable(playerid,0); //Megfagyasztjuk a játékost
        isrefuelling[playerid] = 1; //Beálítjuk a refuel értéket 1 re hogy ne tudjon SPAMOLNI
        TextDrawSetString(td_fuel[playerid],\"Refuelling...\"); //Kicseréli a TextDrawot
        SetTimerEx(\"timer_refuel\",4500,false,\"i\",playerid); //És beálítjuk az ujratöltési idõt
        return 1;
    }
    return 0;
}

 
REMEK! Elérkeztél az utolsó lépéshez aminél az idõzítõket(timer) beálítjuk
 

public timer_fuel_lower()
{
    for(new i=0;i<MAX_PLAYERS;i++) { //Ciklus minden játékosnak
        if (isrefuelling) continue; //Megálítjuk ha a játékos tankol
        new vid = GetPlayerVehicleID(i); //Lekérjük a Kocsi ID-jét
        if (GetPlayerVehicleSeat(i) == 0) { //Ha a játékos a vezetõ
            fuel[vid] = fuel[vid] -1; //Csökkenés mértéke
            if (fuel[vid]<1) //Ha elfogyott a benzin
            {
                fuel[vid] = 0; //Beálítjuk az üzemanyag szintet 0 ra Mert ha nem álítjuk be akkor az idõzítõ lehúzza -1 -2 -3 stb. re mielött kivehetnénk a kocsiból!
                RemovePlayerFromVehicle(i); //Kiszedjük a játékost a jármûvébõl!
                GameTextForPlayer(i,\"~r~You are out of ~w~fuel~r~!\",5000,4); //Szöveg megmutatása
            }
        }
        new string[125];format(string,sizeof string,\"Fuel:%i\",fuel[vid]); //String elõkészítése a következõ üzemanyag értékhez
        TextDrawSetString(td_fuel,string); //textDraw frissítése
    }
    return 1;
}
public timer_refuel(playerid) //Amikor tankol
{
    new vid = GetPlayerVehicleID(playerid);
    fuel[vid] = fuel[vid] = 100; //Beálítjuk az üzemanyagát 100 ra
    isrefuelling[playerid] = 0;//Eltüntetjük az AntiSpam cuccost
    TextDrawSetString(td_fuel[playerid],\"Fuel:100\"); //TextDraw frissítése
    TogglePlayerControllable(playerid,1); //És levesszük a fagyasztást a játékosról
}

 
EREDETI LEÍRÁS: http://forum.sa-mp.com/showthread.php?t=169284

EREDETI SZERZÕ: gamer931215


LEFORDÍTOTTA: ALPHA

Ha valami hibát találsz kérlek jelezd!(Helyenként nem 100% osan ugyan az van leírva mert úgy kicsit értelmetlen dolog jött volna ki!)
 
egybe leirnátok nekem vagy beraknátok scriotbe?

 

SimplePortal 2.3.7 © 2008-2024, SimplePortal