Sziasztok.
Van egy benzin script de valamiért a dialóg része nem működik vagyis pontosabban maga a dialog előjön de amikor választok közülük nem csinál semmit ezt nem tudom mért.
Hagya tegyem hozzá hogy másik scriptembe jól müködik ez a megoldás.
#include <a_samp>
#include <zcmd>
#include <fixchars>
new benzin[MAX_PLAYERS];
new fuel[MAX_VEHICLES]; //Üzemanyag jármuvenként
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];
#undef MAX_VEHICLES
#undef MAX_PLAYERS
#define MAX_VEHICLES 30 // ide írd, mennyi jármu van a szerveren
#define MAX_PLAYERS 50 // ide írd mennyi a slot limit!
#define szin 0xFFC800FF
#define tankol 11
forward timer_fuel_lower(); //Idozíto az üzemanyag csökkenéshez
forward timer_refuel(playerid); //Idozíto a jármu tankoláshoz
public OnFilterScriptInit()
{
SetTimer(\"timer_fuel_lower\",4200,true);
for(new i=0;i<MAX_VEHICLES;i++) {
fuel = 100; //Alapértéknek minden jármu 100-as üzemanyag értéket kap, ami a maximum
//Idozíto az üzemanyag csökkenéshez
}
return 1;
}
public OnPlayerSpawn(playerid)
{
td_fuel[playerid] = TextDrawCreate(46,324,\"Benzin:100\"); //Csinál 1 TextDrawot a 45,324 pozícióba
TextDrawBackgroundColor(td_fuel[playerid],0x00AA00AA); //Csinálunk neki egy szép hátteret
TextDrawFont(td_fuel[playerid],3); //TextDraw Front beálítása
TextDrawLetterSize(td_fuel[playerid],1.699999,1.900000); //Méret
TextDrawColor(td_fuel[playerid],0x000000ff); //Szín
Create3DTextLabel(\"/tankol\", 0x008080FF, 659.1912,-560.1772,16.4214, 40.0, 0, 0);
Create3DTextLabel(\"/tankol\", 0x008080FF, 659.3813,-569.8978,16.4248, 40.0, 0, 0);
Create3DTextLabel(\"Jogositvány\\n/kresz\", 0x008080FF, 253.9221,69.3449,1003.6406, 30.0, 0, 0);
return 1;
}
public OnPlayerStateChange(playerid, newstate, oldstate)
{
if (newstate == PLAYER_STATE_DRIVER || newstate == PLAYER_STATE_PASSENGER)
{
if(GetVehicleModel(GetPlayerVehicleID(playerid)) == 510) return TextDrawHideForPlayer(playerid,td_fuel[playerid]);
if(GetVehicleModel(GetPlayerVehicleID(playerid)) == 531) return TextDrawHideForPlayer(playerid,td_fuel[playerid]);
for(new i=0;i<MAX_PLAYERS;i++) {
new vid = GetPlayerVehicleID(playerid);
new string[125];format(string,sizeof string,\"Benzin:%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;
}
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 vid3 = GetPlayerVehicleID(i); //Lekérjük a Kocsi ID-jét
if (GetPlayerVehicleSeat(i) == 0) { //Ha a játékos a vezeto
fuel[vid3] = fuel[vid3] -1; //Csökkenés mértéke
if (fuel[vid3]<1) //Ha elfogyott a benzin
{
if(GetVehicleModel(GetPlayerVehicleID(i)) == 510) return TextDrawHideForPlayer(i,td_fuel);
if(GetVehicleModel(GetPlayerVehicleID(i)) == 531) return TextDrawHideForPlayer(i,td_fuel);
fuel[vid3] = 0; //Beálítjuk az üzemanyag szintet 0 ra Mert ha nem álítjuk be akkor az idozíto lehúzza -1 -2 -3 stb. re mielött kivehetnénk a kocsiból!
new engine, lights, alarm, doors, bonnet, boot, objective;
GetVehicleParamsEx(vid3,engine,lights,alarm,doors,bonnet,boot,objective);
SetVehicleParamsEx(vid3,VEHICLE_PARAMS_OFF,lights,alarm,doors,bonnet,boot,objective); //Kiszedjük a játékost a jármuvébol!
SendClientMessage(i,szin,\"Kifogyott a benzin! Hozz a benzinkutról!\");
}
}
new vid1 = GetPlayerVehicleID(i);
for(new o=0;i<MAX_PLAYERS;i++) {
new string[125];format(string,sizeof string,\"Benzin:%i\",fuel[vid1]); //String elokészítése a következo üzemanyag értékhez
TextDrawSetString(td_fuel
}
}
return 0;
}
public timer_refuel(playerid) //Amikor tankol
{ new vid2 = GetPlayerVehicleID(playerid);
new engine, lights, alarm, doors, bonnet, boot, objective;
GetVehicleParamsEx(vid2,engine,lights,alarm,doors,bonnet,boot,objective);
SetVehicleParamsEx(vid2,VEHICLE_PARAMS_ON,lights,alarm,doors,bonnet,boot,objective);
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],\"Benzin:100\"); //TextDraw frissítése
TogglePlayerControllable(playerid,1); //És levesszük a fagyasztást a játékosról
}
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
if(dialogid == tankol) // LISTÁZÓS
{
if(response)
{
switch(listitem)
{
case 0:
{
if (GetPlayerMoney(playerid) - 5000 <0) return SendClientMessage(playerid,0xFFC800FF,\"Nincs elég pénzed tankolni\"); //Ha a játékosnak NINCS elég pénze akkor visszalökjük!
GivePlayerMoney(playerid,-5000); //De ha van akkor leveszünk -80$-t
SetCameraBehindPlayer(playerid); //A játékos mögé rakjuk a kamerát mert o í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
GameTextForPlayer(playerid,\"~r~Te ~w~tankolsz~r~!\",5000,4);
TextDrawSetString(td_fuel[playerid],\"Tankolas...\"); //Kicseréli a TextDrawot
SetTimerEx(\"timer_refuel\",4500,false,\"i\",playerid);
}
case 1:
{
if (GetPlayerMoney(playerid) - 6000 <0) return SendClientMessage(playerid,0xFFC800FF,\"Nincs elég pénzed tankolni\");
benzin[playerid] =1;
SendClientMessage(playerid,szin,\"Vettél egy kanna benzint!\");
GivePlayerMoney(playerid, -6000);
}
}
}
return 1;
}
return 0;
}
CMD:tankol(playerid,params[])
{
if(IsPlayerInRangeOfPoint(playerid, 30.0, 659.3813,-569.8978,16.4248))
{
if (!IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid,0xFFC800FF,\"Nem ülsz kocsiban\"); //Ha a játékos nincs jármuben MEGÁLÍTJUK a parancsot
if (isrefuelling[playerid]) return SendClientMessage(playerid,0xFFC800FF,\"Most tankoltál\"); //Ha már a játékos tankol akkor MEGÁLÍTJUK a parancsot
ShowPlayerDialog(playerid, tankol, DIALOG_STYLE_LIST, \"Mit szeretnél?\", \"Kocsiba tankolni\\nKannába tankolni\", \"Rendben\", \"Mégsem\");
} else SendClientMessage(playerid,szin,\"Nem vagy a benzinkúton.\");
return 1;
}
CMD:beleont(playerid,params[])
{
if(GetVehicleModel(GetPlayerVehicleID(playerid)) == 510) return TextDrawHideForPlayer(playerid,td_fuel[playerid]);
if(GetVehicleModel(GetPlayerVehicleID(playerid)) == 531) return TextDrawHideForPlayer(playerid,td_fuel[playerid]);
if(IsPlayerInAnyVehicle(playerid))
{
if(benzin[playerid] == 1)
{
SetTimerEx(\"timer_refuel\",4500,false,\"i\",playerid);
isrefuelling[playerid] = 1;
benzin[playerid] = 0;
}else SendClientMessage(playerid,szin,\"Nincs nállad benzin!\");
}else SendClientMessage(playerid,szin,\"Nem ülsz a kocsiban\");
return 1;
}