Lovas küldetés 2 hiba

Indította justcheky, 2018-05-20, 18:44:37

2018-05-20, 18:44:37 Utolsó szerkesztés: 2018-05-20, 18:48:08 Szerző: justcheky
Sziasztok.
Van ez a lovas küldetés, 2 gondom van vele.
Az egyik, hogy a küldetés alatt a hátralévő időt karaktercsere után már nem írja, és amikor írja, akkor nem fixen a lovas küldetésnél mutatja az időt, ha pl. lejjebb görgetek, akkor a timer is megy le a lentebb lévő küldikhez.
A másik probléma szintén az idővel kapcsolatos, hogy miután kész a küldetés nincs meg a várakozási idő, karicsere után egyből már azt írja, hogy kész a ló.
Előre is köszönöm a segítséget. :)

Itt a quest:
[spoiler]
quest pony_buy begin
   state start begin
      when 20349.chat."Lovagolni akarok" with horse.get_grade()==0 begin
         if pc.get_level() < 25 then
            say_title(mob_name(20349)..":")
            say("A te szinted túl kevés ahhoz, hogy lovat")
            say("szerezhess. ")
            return
         elseif pc.countitem("50050")<1 then
            say_title(mob_name(20349)..":")
            say("A ló megszerzéséhez szükség lesz egy ló medálra,")
            say("amit a majom kazamata álnok majmaitól szerezhetsz.")
            say("A medál igen különös tárgy és nagyon ritka.")
            say("Amíg nincs egy ló medálod se, nem kezdheted el")
            say("a lovas megbízást!")
            say("")
            say_reward("Hozz nekem egy ló medált és még beszélünk!")
            set_state(need_item50050)
         elseif pc.countitem("50050")>=1 and pc.get_level() >= 25 then
            say_title(mob_name(20349)..":")
            say("Nagyon jó, látom te már felkészültél a lovas")
            say("megbízásra, megvan a szükséges Szinted, és még")
            say("hoztál nekem ló medált is.")
            say("")
            say("A küldetés: Ölj meg 20 darab Vad íjászt!")
            say("Mindössze 30 Perced van rá!")
            say("")
            local b=select("Kezdeni", "Majd később")
            if 1==b then
               if pc.countitem("50050")>=1 then
                  pc.removeitem("50050", 1)
                  pc.setqf("limit_time", get_time()+60*30)
                  set_state(test)
               end
            elseif 2==b then
               say_title(mob_name(20349)..":")
               say("Jó, akkor várok.")
               say("gyere vissza, ha felkészültél..")
               return
            end
         end
      end
   end
   state need_item50050 begin
      when letter begin
         send_letter("Szerezz ló medált!")
      end
      when button or info begin
         say_title("Szerezz ló medált!")
         say("Menj a Majom kazamatába és szerezz")
         say("ló medált az ottani majmoktól.")
         say("")
         say_item("Ló medál", 50050, "A lovak fejlesztésére szolgál")
         say("")
         set_state(start)
      end
   end
   state test begin
      when letter begin
         q.set_counter("Vad íjász", 20-pc.getqf("kill_count"))
      end
      when 503.kill begin
         pc.setqf("kill_count", pc.getqf("kill_count")+1)
         q.set_counter("Vad íjász", 20-pc.getqf("kill_count"))
         if get_time()>=pc.getqf("limit_time") then
            set_state(failure)
         end
      end
      when letter begin
         q.set_clock("Hátralévő idő ", pc.getqf("limit_time")-get_time())
      end
      when letter begin
         send_letter("Ölj Vad íjászokat")
      end
      when button or info begin
         say_title("Vad íjászokat")
         say("Ölj meg 20 Vad íjászt mindeössze")
         say("30 Perced van a küldetésre.")
         say("Ha nem teljesíted időben, elbuksz!")
      end
      when 503.kill with pc.getf("pony_buy","kill_count") >= 20 and pc.getf("pony_buy","limit_time")>=get_time() begin
         set_state(report)
      end
      when 20349.chat."PONY QUEST STATE REPAIR" with horse.get_grade()!=0 begin
         set_state(start)
      end
      when 20349.chat."Lovagolni akarok" begin
         say_title(mob_name(20349)..":")
         say("Menj és öld meg azt az 20 Vad íjászt!")
         say("Ha nem ölöd meg őket nem kapod meg a lovad.")
         say("Mire vársz még?!")
         select("INDULÁS")
      end
   end
   state report begin
      when letter begin
         send_letter("Sikerült")
      end
      when button or info begin
         say_title("Sikerült")
         say("Megcsináltad, megölted az 20 íjászt.")
         say("A lovászinas már vár rád, menj és ő majd")
         say("tájékoztat a továbbiakról!")
      end
      when 20349.chat."PONY QUEST STATE REPAIR" with horse.get_grade()!=0 begin
         set_state(start)
      end
      when 20349.chat."Hol a lovam?" with horse.get_grade()==0 begin
         say_title(mob_name(20349)..":")
         say("Gratulálok!")
         say("Sikerrel teljesítetted a megbízást, most már")
         say("csak idő kérdése és megérkezik a lovad.")
         say("Oh, nem mondtam?")
         say("A lóra várnod kell egy teljes napot.")
         say("És ára is van a lónak, ami nem kevesebb,")
         say("mint 100.000 Yang!")
         say("")
         say_reward("Gyere vissza holnap és legyen nálad a 100.000 Yang!")
         if is_test_server() or pc.is_gm() then
            pc.setqf("make_time", get_time()+10)
         else
            pc.setqf("make_time", get_time()+number(8, 16)*60*60)
         end
         set_state(wait)
      end
   end
   state wait begin
      when letter begin
         send_letter("Várakozás a lóra")
      end
      when button or info begin
         say_title("Várakozás a lóra")
         say("A lovad már úton van, de még várnod kell.")
         say("A lovász inas most idomítja, mert még vad.")
         say("Amint elkészül vidd a 100.000 Yangot és váltsd ki.")
      end
      when login with get_time()>=pc.getf("pony_buy","make_time") begin
         set_state(buy)
      end
      when 20349.chat."PONY QUEST STATE REPAIR" with horse.get_grade()!=0 begin
         set_state(start)
      end
      when 20349.chat."Hol a lovam?" with horse.get_grade()==0 begin
         say_title(mob_name(20349)..":")
         say("Ne légy már türelmetlen!")
         say("Nem könnyű egy vad lovad megszelidíteni!")
         say("Gyere vissza kicsit később!")
      end
   end
   state buy begin
      when letter begin
         send_letter("A lovad elkészült")
      end
      when button or info begin
         say_title("A lovad elkészült")
         say("A lovad most már készen van!")
         say("Menj a lovászinashoz és vedd át a lovad")
         say("100.000 Yangért cserébe.")
      end
      when 20349.chat."Hol a lovam?" with horse.get_grade()==0 and get_time()>=pc.getf("pony_buy","make_time") begin
         say_title(mob_name(20349)..":")
         say("Ugye-ugye, a türelem rózsát terem!")
         say("A lovad ugyan elkészült, de a fizetség nálad")
         say("van-e? Az a bizonyos 100.000 Yang.")
         say("Mert ha nincs nem engedem, hogy elvidd.")
         say("")
         say_reward("Meg akarod venni a lovadat?")
         local b=select("Igen", "Nem")
         if 1==b then
            if pc.get_money() >= 100000 then
               say_title(mob_name(20349)..":")
               say("Nagyszerű! Immáron igazi lovas vagy!")
               say("De ez a ló még nagyon gyenge, muszáj")
               say("lesz fejlesztened a kicsit.")
               say("a fejlesztések ára egy ló medál és")
               say("egy általam előállított küldetés.")
               say("És ne feledjem, etesd is a lovad, mert")
               say("ha nem kap enni éhen is halhat!")
               say("Na engedlek utadra.")

               char_log(0, "HORSE_BUY", "BEGIN")
               pc.changemoney(-100000)
               char_log(0, "HORSE_BUY", "DEC money 100000")
               horse.unride()
               horse.advance()
               horse.ride()
               char_log(0, "HORSE_BUY", "INC horse_advance 1")
               pc.give_item2("50051", 1)
               char_log(0, "HORSE_BUY", "INC 50051 1")
               char_log(0, "HORSE_BUY", "END")
               set_state(start)
            else
               say_title(mob_name(20349)..":")
               say("Nincs elég Yangod!")
            end
         elseif 2==b then
            say_title(mob_name(20349)..":")
            say("Én aztán tudok várni.")
            return
         end
      end
   end
   state failure begin
      when letter begin
         send_letter("Elbuktál")
      end
      when button or info begin
         say_title("Elbuktál")
         say("Nem voltál képes megölni 20 íjászt 30 Perc")
         say("alatt! Menj és jelentsd a kudarcot a lovásznak.")
         say("inasnak.")
         set_state(start)
      end
   end
   
   state __COMPLETE__ begin
   end
end
[/spoiler]


         if is_test_server() or pc.is_gm() then
            pc.setqf("make_time", get_time()+10)
         else
            pc.setqf("make_time", get_time()+number(8, 16)*60*60)
         end


A feltételnek is teljesülhetsz véletlenül tehát test szerverben fut a szervered, vagy GM vagy és azért 10 másodperc a várakozási idő.  ;)

Igazad van, fel se tűnt.
Viszont a küldetés alatt az időt még mindig nem írja teljesen jól.
Hogyha csak 1-2 küldetésem van és nem kell görgetni lefelé, akkor jól mutatja, viszont, ha annyi küldetés van, hogy, csak akkor lehet látni a ló küldetést, mikor lejjebb görgetünk, akkor nem mutatja a timert. Hogy lehetne ezt javítani?