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: ALPHAHa 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!)