Szerző Téma: Dialog segítség  (Megtekintve 1360 alkalommal)

Nem elérhető Adii

Dialog segítség
« Dátum: 2017. február 18. - 04:46:34 »
0 Show voters
Sziasztok!
 
Egy dialoggal lenne problémám, tutorialt is néztem már, mindent, de semmi...Szóval, létrehoztam a parancsot, amire előjöjjön a dialog, aztán OnDialogResponse-ban a másik felét, hogy mit csináljon, ha rákattint a játékos, de amikor rákattintok semmit sem csinál csak bezáródik az ablak.
 

if(dialogid == 9999)
{
    new string[128];
    if (listitem == 0)
        {
            if(PlayerInfo[playerid][pMoney] < 100)
            {
            PlayerInfo[playerid][pHasCellphone] = 1;
            GiveZaiatMoney(playerid, -100);
            format(string, sizeof(string), \"* %s vásárolt egy telefont 100$-ért.\", RPN(playerid));
         SendNearbyMessage(playerid, 15, string, COLOR_PURPLE, COLOR_PURPLE, COLOR_PURPLE, COLOR_PURPLE, COLOR_PURPLE);
         SendClientMessage(playerid, COLOR_WHITE, \"SIM kártyát a telefontársaság boltjában vehetsz.\");
      }
      else
      {
         SendClientMessage(playerid, COLOR_GREY, \"Nincs elég pénzed.\");
         return 1;
      }
        }
        if(listitem == 1)
        {
            if(PlayerInfo[playerid][pMoney] < 500)
            {
          PlayerInfo[playerid][pHasCellphone] = 2;
         GiveZaiatMoney(playerid, -500);
         format(string, sizeof(string), \"* %s vásárolt egy okostelefont 500$-ért.\", RPN(playerid));
         SendNearbyMessage(playerid, 15, string, COLOR_PURPLE, COLOR_PURPLE, COLOR_PURPLE, COLOR_PURPLE, COLOR_PURPLE);
         SendClientMessage(playerid, COLOR_WHITE, \" Használat: /smartphone.\");
      }
      else
      {
          SendClientMessage(playerid, COLOR_GREY, \"Nincs elég pénzed.\");
         return 1;
      }
    }
    if(listitem == 2)
    {
           new number, File:file = fopen(\"cellphones.cfg\", io_read);
         if(!IsPlayerLoggedIn(playerid)) return SendClientMessage(playerid, COLOR_GREY, \"Be kell jelentkezned mielőtt használnád ezt a parancsot.\");
      if(!PlayerInfo[playerid][pHasCellphone]) return SendClientMessage(playerid, COLOR_GREY, \"Még nincs telefonod!\");
      if(!IsPlayerInRangeOfPoint(playerid, 2, 961.0096,-0.2835,1001.1558)) return SendClientMessage(playerid, COLOR_GREY, \"Nem vagy az AT&T cégnél!\");
      //if(sscanf(params, \"i\", number)) return SendClientMessage(playerid, COLOR_WHITE, \"Használat: /buysim [Kívánt telefonszám]\");
      if(number == 0) return SendClientMessage(playerid, COLOR_GREY, \"Érvénytelen telefonszám.\");
       if(PlayerInfo[playerid][pCellphone] == number) return SendClientMessage(playerid, COLOR_GREY, \"Már ez a telefonszámod!\");
      new idx = 1;
      while(fread(file, string))
      {
          if(strval(string) == number) return SendClientMessage(playerid, COLOR_GREY, \"El a telefonszám már létezik!\");
          if(strval(string) == PlayerInfo[playerid][pCellphone])
          {
            fdeleteline(\"cellphones.cfg\", idx);
          }
          idx ++;
      }
      fclose(file);
      file = fopen(\"cellphones.cfg\", io_append);
      format(string, sizeof(string), \"%d\\r\\n\", number);
      fwrite(file, string);
      fclose(file);
      format(string, sizeof(string), \"* %s vett egy SIM-kártyát\", RPN(playerid));
      SendNearbyMessage(playerid, 15, string, COLOR_PURPLE, COLOR_PURPLE, COLOR_PURPLE, COLOR_PURPLE, COLOR_PURPLE);
      if(!PlayerInfo[playerid][pCellphone])
      {
          SendClientMessage(playerid, COLOR_WHITE, \" Az AT&T ingyen adta az első SIM-kártyát.\");
          SendClientMessage(playerid, COLOR_WHITE, \" Használat: /call és /sms.\");
      }
      else
      {
         GiveZaiatMoney(playerid, -500);
         TaxMoney += 500;
          SendClientMessage(playerid, COLOR_WHITE, \" A cég felszámolt 500$-t mert megváltoztattad a telefonszámod.\");
      }
      PlayerInfo[playerid][pCellphone] = number;
      return 1;
    }

 
 

Nem elérhető 1Mark6

  • 437
    • Profil megtekintése
Dialog segítség
« Válasz #1 Dátum: 2017. február 18. - 09:24:06 »
0 Show voters
Valószinűleg ez a dialog ID már felvan használva valahol, esetleg filterszkriptben, vagy csak magánál a parancsnál elírtad az ID-t. Az esetek többségében ez okozza a problémát.

Nem elérhető wRt

Dialog segítség
« Válasz #2 Dátum: 2017. február 18. - 12:21:20 »
0 Show voters

public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
    if(dialogid == 9999)
    {
        if(response)
        {
            switch(listitem)
            {
                case 0: {}
                case 1: {}
                case 2: {}
   }
        }
        else
        {
        }
        return 1;
    }
    return 0;
}

 
 
 
Egyébként - bár nem vagyok tisztában a szkripted céljával - valószínűleg a feltételeknél is van egy - két hiba, ugyanis például az egyik feltétel szerint a játékos csak akkor vásárolhat telefont, ha kevesebb mint $500-al rendelkezik.

Nem elérhető 1Mark6

  • 437
    • Profil megtekintése
Dialog segítség
« Válasz #3 Dátum: 2017. február 18. - 22:12:10 »
0 Show voters
Az teljesen mindegy, hogy switch, vagy feltétel vizsgálattal állapítja meg, a listitem ID-jét. Illetve, igen valószinüleg az alfeltételekkel is lehet baj. De ha a meghíváskor nem a 9999-es ID szerepel  a dialogban, akkor felesleges, mivel nem tud erre az ID-re hivatkozni, a dialogResponse-nél.

Nem elérhető Adii

Dialog segítség
« Válasz #4 Dátum: 2017. február 21. - 13:53:32 »
0 Show voters
Sikerült megoldani a problémát, a Dialog ID-t átírtam 999-re és működik. Érdekes..

 

SimplePortal 2.3.7 © 2008-2024, SimplePortal