GayForge karakterválasztó & Okey event bug on Quests By DescriptionBox

Started by UnKn0Wn, 2018-09-16, 16:26:35

Sziasztok,

2015 vége felé raktak ki devre egy GF-es karakterválasztó ablakot teljes kóddal ami szépen működik is, csak okoz egy buggot. A Level1 questnek, vagy bármilyen olyan questnek ami azonnal előjön és nem lesz alul felül fekete mozis csíkja, ha leokézzuk ottmarad a szövegje. Igen, az a téma elsősorban ennek a bugnak a fixálása miatt született, csak nem nagyon kaptam választ, szerintem ide se nagyon fogok :'(

Erre a jelenségre találtam egy kókány megoldást:
when login begin -- quest bug fix
setskin(NOWINDOW)
say(" ")
return
end


Ezáltal csak egy szóköz ragad ott, ami nem látszik, tehát a problémát megoldja, csak ez kb olyan mint amikor a reptéren a dolgozók szikszalaggal ragasztják a hajtóműfedő panel végződéseit ;D
[spoiler][/spoiler]

Kb 2 éve bentvan ez a kókány fix, igazából már el is felejtettem hogy volt ilyen problémám, és így lett megoldva. Viszont tegnap betettem az Okey eventet, és lám, előjött a bug. Mivel az Okey eventet sokan használják így rákerestem Google-n hogy "Metin2 Okey quest bug" és nagy meglepetésemre találtam fixet rá günceléknél.
Annyiból állt az egész hogy ezt ez uicard.py-be ki kellett kommentezni:
event.ClearEventSet(self.descIndex)
És tényleg megoldódott, legalább az Okey event már nem okozott többet ilyen buggot miután használtuk.

Oké, gondoltam akkor csak a karakterválasztó, létrehozó, birodalomválasztónál is csak ki kell kommentezni, és probléma megoldva. Hát nem. Max 1/3 részig.
-introselect.py-ben kikommenteztem, az többet nem okozott buggot, tehát meg lett oldva úgy mint az Okey eventnél.
-introcreate.py-ben, introempire.py kikommenteztem, nem volt hatása, a bugg továbbra is jelen van.
Meg kell jegyeznem itt hogy a régi Ymir-es verzióban az introselect.py-ben nem volt ilyen sor, a másik kettőben volt. Tehát most ha nem érintem a karakter létrehozást, biri választást, akkor nincs ilyen bugg. Fél, azaz 1/3 siker. A gond az hogy mivel a level1 quest olyan hogy nincs mozis csíkja, így akarva akaratlanul mindenki legalább egyszer találkozik a buggal.

Én nem vagyok az az ember aki ne kutakodna a dolgok iránt, így végül megtaláltam a bug okozóját, legalábbis közrejátszóját. A Description box az. Mind az okey event, mind a quest ablak, mind a gf-es karakterválasztó használja. Ha kiveszem az introcreate-ből, introempire-ből, akkor a bug is eltűnik, persze meg szeretném tartani, hisz elég tré lenne ha karakter létrehozáskor a leírási ablak üres lenne.

Amúgy ezeket a sorokat kell kivenni:

class DescriptionBox(ui.Window):
def __init__(self):
ui.Window.__init__(self)
self.descIndex = 0
def __del__(self):
ui.Window.__del__(self)
def SetIndex(self, index):
self.descIndex = index
def OnRender(self):
event.RenderEventSet(self.descIndex)


self.descriptionBox = self.DescriptionBox()
self.descriptionBox.Show()


self.descriptionBox.SetIndex(self.descIndex)

Tehát a descripton box mindenféleképpen kapcsolódik valamelyest a hibához.

Van valakinek ötlete?

Itt az introselect.py-m: https://pastebin.com/WBrvr3Cx
Itt az introcreate.py-m: https://pastebin.com/FBXAN2m3
Itt az introempire.py-m: https://pastebin.com/JfMkc770
(Tudom hogy alsó kettőben nincs kikommentezve az a sor, miután láttam hogy
itt az nem oldotta meg, levettem róla a kommentet.)

Szép napot. Erre a kérdésre régebben én nem kaptam semmi választ, fogtam és így oldottam meg a kezdő questet.


Igen igen, ez ugyanazt csinálja mint az a megoldás amit én is említettem. Tehát nincs szöveg (ugye neked a képen van a szöveg), így a semmi ragad ott, ami vizuálisan ugye nem zavaró  ;D

Én viszont meg szeretném oldani normálisan ezt a gondot.

Próbáld meg esetleg így:

Nyisd meg az alábbi fájlokat:

  • introcreate.py
    introempire.py
    introselect.py

  • Keress rá bennük erre:
    def Close(self):

    A funkción belül erre:
    self.Hide()

    Közvetlen alá add ezt:
    self.descriptionBox.Hide()

    És jó lett  ;D ;D ;D, csak egy kis fixet még ez is igényel mert most ha üres a desc.box akkor a legutolsó questet rátolja:



    Szerk: Megoldva, introselect.py self.Show() alá: self.descIndex = event.RegisterEventSet("")
    Ill. a self.descriptionBox.Hide()-ot introempire-be ne tegyétek be, ott valamiért hibázik, fekete képernyő.
    De nem okoz buggot ha abban nincs bent, gondolom mert utoljára ígyis úgyis a select lesz mielőtt belépünk a játékba, az meg hideolja.