Szerző Téma: Dialog probléma  (Megtekintve 1180 alkalommal)

Dialog probléma
« Dátum: 2015. március 11. - 18:51:36 »
0 Show voters
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
  • ,string);

}
    }
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;
}
« Utoljára szerkesztve: 2015. március 11. - 22:16:45 írta narancs741 »

Dialog probléma
« Válasz #1 Dátum: 2015. március 11. - 19:28:14 »
0 Show voters
:mistrust:



{
    if(listitem == 0)
 

Dupla hozzászólás automatikusan összefûzve. ( 2015. március 11. - 19:29:10 )

Vagy is amit küldtem azt jelenti mit csináljon ha pl az 1ikre katint :D

Dialog probléma
« Válasz #2 Dátum: 2015. március 11. - 20:09:35 »
0 Show voters
Pontosan hol is lenne ennek a helye?

Dialog probléma
« Válasz #3 Dátum: 2015. március 11. - 20:54:56 »
0 Show voters

Dialog probléma
« Válasz #4 Dátum: 2015. március 11. - 21:36:00 »
0 Show voters
Nem jó :/

Nem elérhető huhboy

  • 894
  • huhboy
    • Profil megtekintése
Dialog probléma
« Válasz #5 Dátum: 2015. március 11. - 23:57:05 »
0 Show voters
jó a kód. és ha használsz switch-es listitem-et, nem kell csucsu megoldása...valószínűleg csak egy dialogid ütközésed van, azért nem csinál semmit.
a #define tankol 11 helyett
#define tankol 11200
és így nem lesz id ütközésed.

Dialog probléma
« Válasz #6 Dátum: 2015. március 12. - 08:20:26 »
0 Show voters
átírtam 1120 de úgyse jó! átnéztem az egészet semelyik dialógom nincs azonos id-n.
:no:

Nem elérhető huhboy

  • 894
  • huhboy
    • Profil megtekintése
Dialog probléma
« Válasz #7 Dátum: 2015. március 12. - 09:07:28 »
0 Show voters
próbáld meg beírni a módba...

Dialog probléma
« Válasz #8 Dátum: 2015. március 12. - 09:25:16 »
0 Show voters
Juh háát nem szívesen tennék olyat hiszen sok idő de ha nem lesz már megoldás :/ :crybaby:

Nem elérhető huhboy

  • 894
  • huhboy
    • Profil megtekintése
Dialog probléma
« Válasz #9 Dátum: 2015. március 12. - 10:30:57 »
0 Show voters
ezt bemásolni kb 2 perc.....de ha nem akarod, még pröbáld meg a server.cfg-ben a filterscripts sorban legelőre tenni...

Dialog probléma
« Válasz #10 Dátum: 2015. március 12. - 11:15:38 »
0 Show voters
Ezért hülye ötlet az fs..

Dialog probléma
« Válasz #11 Dátum: 2015. március 12. - 11:16:33 »
0 Show voters
nézd át az összes scripted, és a mododat, hogy OnDialogResponse utolsó visszatérési értéke mindig 0 legyen, mert ha kár 1 scriptben is 1-el térsz vissza, akkor csak a modban lévő dialogok fognak működni, a többi nem..
bemásolgatás előtt legyen ez az első..

Dialog probléma
« Válasz #12 Dátum: 2015. március 12. - 14:32:31 »
0 Show voters
Átmásoltam és működik :)
TengeriMalac. Szeritnem neked lett volna igazad!
Köszönöm mindenkinek!

 

SimplePortal 2.3.7 © 2008-2024, SimplePortal