Szerző Téma: inventory hiba  (Megtekintve 1769 alkalommal)

Nem elérhető josikaaa

  • Intermediate
  • **
  • Thank You
  • -Given: 22
  • -Receive: 31
  • Hozzászólások: 183
  • Segített: 28
inventory hiba
« Dátum: 2018-01-13, 18:28:26 »
Sziasztok

Valaki tud megoldást arra a problémára, hogy ha nyitott leltárral quest teleportot használsz, akkor teleport után, a leltár ablak hideolva ott marad, így az a rész nem kattintható?

egy video a hibáról amit találtam:

https://www.youtube.com/watch?v=ywN2eFy_gIw&feature=youtu.be

Nem elérhető Meli

  • Professional
  • ***
  • Thank You
  • -Given: 124
  • -Receive: 121
  • Hozzászólások: 529
  • Segített: 183
Re:inventory hiba
« Válasz #1 Dátum: 2018-01-14, 09:16:23 »
Sziasztok

Valaki tud megoldást arra a problémára, hogy ha nyitott leltárral quest teleportot használsz, akkor teleport után, a leltár ablak hideolva ott marad, így az a rész nem kattintható?

egy video a hibáról amit találtam:

https://www.youtube.com/watch?v=ywN2eFy_gIw&feature=youtu.be

Ez a hiba nem csak nálad van, hanem mindenkinél többnyire.
Csak akkor lép fel ez a hiba, ha quest ből teleportálsz.
Érdekes, hogy ha /go paranccsal teleportálsz normálisan bezárja az ablakot, ha pedig quest ből akkor meg oda fagy a képernyőre láthatatlanul...

UI engem is érdekelne a fix.

“Majdnem minden tudásunkért nem azoknak tartozunk, akik egyetértettek, hanem azoknak, akik nem.”

Nem elérhető [VIP]P3NG3R

  • VIP
  • Master
  • *
  • Thank You
  • -Given: 46
  • -Receive: 622
  • Hozzászólások: 724
  • Segített: 1043
  • napasztmek
Re:inventory hiba
« Válasz #2 Dátum: 2018-01-14, 19:41:57 »
Érdekes. Sárkánykő alki ablak is ott marad. ???

A hiba tényleg jelen van mindenhol, legalábbis ahol tesztelni tudtam ott van. Még az okát teljesen nem tudom. Elmagyarázni se olyan egyszerű, mint ahogy látszik. Ugye a megnyitott ablakok quest nyitáskor eltűnnek(Hide), majd mikor záródik a quest ablak visszanyílnak, na ez a visszanyílási eljárás biztosan a warp alatt, a háttérben zajlik le, az objektum megnyílik, de valamiért a grafikai felület nem, így mozgatni sem lehet, ahogy bezárni sem. Egyenlőre egy megoldást találtam rá, ami egyszerűen annyi, hogy késleltettem a warp-olási folyamatot, amíg a quest ablak teljesen bezáródik, ezáltal minden korábban nyitva hagyott ablak is visszanyílik, ami után lefuthat a warp, bezárva mindent megfelelően. Az elv ugyan az, mint a karaktercsere, logout, exit, csatornaváltási eljárásoknál, számol vissza 3 vagy 10mp-től és ha megütnek vagy megütsz valamit félbeszakad.

https://youtu.be/YOEZ6XnWQJU

Egyébként a kattinthatatlan felületek érzékelik az Escape gombot, tehát warp után escape taposással bezáródnak a láthatatlan ablakok. A bugzó ablakok, amiket tudtam azonosítani: Leltár, Sárkánykő alkímia leltár és a kibővített tálca(ahol az extra gombok vannak).

Egyelőre a kódom nem rakom ki, több irányból sebezhető, meg kell szakíttatnom minden interakcióval, hogy ne lehessen kihasználni saját célokra....
« Utoljára szerkesztve: 2018-01-16, 01:26:05 írta [VIP]P3NG3R »
"aki hülye az is marad..." (;

Wir sind Sztep. :>

Nem elérhető Meli

  • Professional
  • ***
  • Thank You
  • -Given: 124
  • -Receive: 121
  • Hozzászólások: 529
  • Segített: 183
Re:inventory hiba
« Válasz #3 Dátum: 2018-01-16, 10:47:04 »
Érdekes. Sárkánykő alki ablak is ott marad. ???

A hiba tényleg jelen van mindenhol, legalábbis ahol tesztelni tudtam ott van. Még az okát teljesen nem tudom. Elmagyarázni se olyan egyszerű, mint ahogy látszik. Ugye a megnyitott ablakok quest nyitáskor eltűnnek(Hide), majd mikor záródik a quest ablak visszanyílnak, na ez a visszanyílási eljárás biztosan a warp alatt, a háttérben zajlik le, az objektum megnyílik, de valamiért a grafikai felület nem, így mozgatni sem lehet, ahogy bezárni sem. Egyenlőre egy megoldást találtam rá, ami egyszerűen annyi, hogy késleltettem a warp-olási folyamatot, amíg a quest ablak teljesen bezáródik, ezáltal minden korábban nyitva hagyott ablak is visszanyílik, ami után lefuthat a warp, bezárva mindent megfelelően. Az elv ugyan az, mint a karaktercsere, logout, exit, csatornaváltási eljárásoknál, számol vissza 3 vagy 10mp-től és ha megütnek vagy megütsz valamit félbeszakad.

https://youtu.be/YOEZ6XnWQJU

Egyébként a kattinthatatlan felületek érzékelik az Escape gombot, tehát warp után escape taposással bezáródnak a láthatatlan ablakok. A bugzó ablakok, amiket tudtam azonosítani: Leltár, Sárkánykő alkímia leltár és a kibővített tálca(ahol az extra gombok vannak).

Egyelőre a kódom nem rakom ki, több irányból sebezhető, meg kell szakíttatnom minden interakcióval, hogy ne lehessen kihasználni saját célokra....

Penge agy, esetleg nem akarod a mesteres klienst atnezni?
Ott nincs ilyen problema. Felesleges kinlodni ha abbol kitudod nezni.

“Majdnem minden tudásunkért nem azoknak tartozunk, akik egyetértettek, hanem azoknak, akik nem.”

Nem elérhető udvatt108

  • Professional
  • ***
  • Thank You
  • -Given: 9
  • -Receive: 103
  • Hozzászólások: 330
  • Segített: 87
  • Developer
Re:inventory hiba
« Válasz #4 Dátum: 2018-01-16, 10:58:51 »
Segítek, "wndlg" a kliensen belül a forrásrészben, ami az ablakokat kezeli.
Még kb egy hónapja vettem észre én is, mivel az invertoryra épített menümmel történt hasonló, muszáj voltam megoldást találni. Tehát ott a megoldás.

Majd csinálok témát ha ráérek.

Ui.: Ahogy P3NG3R írta, köze van, hogy nem jó sorrenben vannak a műveletek a Hide/Show funkciókat és az ablakok újratöltését érintve a warpolás következtében.
« Utoljára szerkesztve: 2018-01-16, 11:04:34 írta udvatt108 »
Egy programozási nyelv akkor alacsony szintű, ha arra kényszeríti az embert, hogy az érdektelen dolgokra is odafigyeljen.

Nem elérhető Meli

  • Professional
  • ***
  • Thank You
  • -Given: 124
  • -Receive: 121
  • Hozzászólások: 529
  • Segített: 183
Re:inventory hiba
« Válasz #5 Dátum: 2018-01-16, 11:55:50 »
Pengcinek Mesteres root fájlok ebben nincs ilyen gond:

« Utoljára szerkesztve: 2018-01-16, 12:43:56 írta Meli »

“Majdnem minden tudásunkért nem azoknak tartozunk, akik egyetértettek, hanem azoknak, akik nem.”

Nem elérhető udvatt108

  • Professional
  • ***
  • Thank You
  • -Given: 9
  • -Receive: 103
  • Hozzászólások: 330
  • Segített: 87
  • Developer
Re:inventory hiba
« Válasz #6 Dátum: 2018-01-16, 15:26:44 »
Van egy forrás mentes alternatív megoldásom.
Amint hazaértem, megcsinálom és akit érdekel írjon, az gyorsabb fixelés erre.

A lényege, hogy minden teleportálás/képernyő újratöltés után az invertory alapértelmezetten bezáródik. Tehát ha teleportál és nyitva volt, bezárja az érintett ablakokat, amik ráfagynak a képernyőre, majd nyilván bármikor újra megnyithatja a játékos.
« Utoljára szerkesztve: 2018-01-16, 15:28:36 írta udvatt108 »
Egy programozási nyelv akkor alacsony szintű, ha arra kényszeríti az embert, hogy az érdektelen dolgokra is odafigyeljen.

Nem elérhető Meli

  • Professional
  • ***
  • Thank You
  • -Given: 124
  • -Receive: 121
  • Hozzászólások: 529
  • Segített: 183
Re:inventory hiba
« Válasz #7 Dátum: 2018-02-05, 11:33:31 »
Up :)

“Majdnem minden tudásunkért nem azoknak tartozunk, akik egyetértettek, hanem azoknak, akik nem.”

Nem elérhető udvatt108

  • Professional
  • ***
  • Thank You
  • -Given: 9
  • -Receive: 103
  • Hozzászólások: 330
  • Segített: 87
  • Developer
Re:inventory hiba
« Válasz #8 Dátum: 2018-02-05, 12:41:16 »
Mivel rengeteg dolgom volt/van mostanában, így nem jut elég idő még a magán életemre sem.
Ezért nem tudtam még megcsinálni a leírást erre a fixre.

De segítek picit, hátha tudtok önállósodni...

Interfacemodule.py -> Megkeresed ahol minden ablakot bezár (HideAllWindow) és alkalmazod ott az invertory ablak bezárását. Nyilván kell némi kiegészítés, hogy az az ablak újra töltésénél vagy csak újbóli megjelenítésénél (Értsd, nem mindegy hogy Init vagy Show történik a class-ban.) is kezelje, de minden adott már, hogy hogyan tudod megcsinálni, persze némi önállóságot igényel...

Szóval a lényege, mindig bezárod az invertory ablakot, amikor újra töltődnek vagy első alkalommal betöltődnek a python class-ok (másként fogalmazva az ablakok és minden képernyőn megjelenő eszköz) és nem lesz az, hogy crashel valahol, mert az előző nem volt bezárva és rá lett hívja az újabb.

Valamint érdemes lehet megnézni az invertory kezelést, mert lehet hogy az is megoldja a bajt, hogy kijavítod az invertory bezárás/elrejtés funkciókat, valamint megnézed jó funkció van-e meghívva. Mert lehet hogy átadja egy másik változónak az invertory ablak tömböt (class-ot) és mikor az eredetit bezárja a rendszer, akkor a másolatot nem és az fagy a képre.

Ezek az alternatíváid.
Ha lesz idő (HA LESZ), akkor természetesen adok leírást hozzá, de ne számíts rá, mert nem akarom, hogy csalódást okozzak, valamint azt sem akarom, hogy én csináljak meg mindent. :)

Üdv.

« Utoljára szerkesztve: 2018-02-05, 12:48:03 írta udvatt108 »
Egy programozási nyelv akkor alacsony szintű, ha arra kényszeríti az embert, hogy az érdektelen dolgokra is odafigyeljen.

Nem elérhető Pisti95

  • Sage
  • *****
  • Thank You
  • -Given: 97
  • -Receive: 665
  • Hozzászólások: 1 378
  • Segített: 708
Re:inventory hiba
« Válasz #9 Dátum: 2018-02-07, 08:27:09 »
Ahogy tapasztaltam, csak questes portolásnál jelenik a hiba jelensége. Tehát ha GM kóddal adunk meg warp-ot, akkor nem, és akkor sem ha /go xy-t használunk.

A hiba nem Pythonban keresendő, az túl kevés oda, hogy a quest-et ellenőrizze.

Nem elérhető udvatt108

  • Professional
  • ***
  • Thank You
  • -Given: 9
  • -Receive: 103
  • Hozzászólások: 330
  • Segített: 87
  • Developer
Re:inventory hiba
« Válasz #10 Dátum: 2018-02-07, 09:37:47 »
Én ezt értem Pisti95, de ugye tisztában vagy azzal, hogy a Quest ablak ami megnyílik, az Python művelet és az szoros összeköttetésben áll minden más object rendszer Elrejtésével/Megjelenítésével, mikor azt megnyílik? Mivel ugyebár minden ablak eltűnik, mikor egy Quest ablak megnyílik, és azt bizony a Python csinálja a szerver parancsára.

És mivel a jelenség csak akkor történik, ha a Quest ablak megnyitásával teleportálunk, így kikövetkeztethető, hogy a helytelen ablak bezárások okozzák ezt a jelenséget. Tehát mikor nyitott Quest ablak közben teleportálunk, mert ugye nem záródik be a Quest ablak mikor teleportálunk, akkor csak átdob minket a betöltő oldalra, majd betölt az új map, ahová teleportáltunk, de nyilván az invertory az nem volt helyesen bezárva az előző Quest ablak megnyitásnál, ezért annak ottmaradt a helyes a képernyőn.

Ez bizony vérbeli Python probléma. Még a buta kisgyerek is érti, pláne ha már látott Metin2 szervert..., hogy ez a művelet hol zajlik.

Az eset hasonlít a Quest ablak szövegének képernyőre fagyásához, gondolom emlékeztek páran arra a témára, ami most a napokban volt, sikeresen megoldottuk.

Ez sem sokkal másabb tészta, csak kisit gondolkozni kell, átnézni azokat az invertory bezárásához fűzött funkciókat, amikor már említettem fentebb. Nem viccből írtam.
Egy programozási nyelv akkor alacsony szintű, ha arra kényszeríti az embert, hogy az érdektelen dolgokra is odafigyeljen.

Nem elérhető Pisti95

  • Sage
  • *****
  • Thank You
  • -Given: 97
  • -Receive: 665
  • Hozzászólások: 1 378
  • Segített: 708
Re:inventory hiba
« Válasz #11 Dátum: 2018-02-07, 17:57:55 »
Nyisd meg a kereskedés ablakot, és próbálj Öreg emberrel teleportálni.

Azt nem hiszem, hogy pythonba találod.

Char.cpp és char.h-ban kell kiegészíteni a dolgot.

Nem elérhető udvatt108

  • Professional
  • ***
  • Thank You
  • -Given: 9
  • -Receive: 103
  • Hozzászólások: 330
  • Segített: 87
  • Developer
Re:inventory hiba
« Válasz #12 Dátum: 2018-02-07, 18:09:56 »
Nekem igy sem, úgysem csinál semmit, mivel pythonban javítottam. XD Csunya lenne ha szerver oldalon lenne a kliens ablak class kezelési hiba. LEL
Egy programozási nyelv akkor alacsony szintű, ha arra kényszeríti az embert, hogy az érdektelen dolgokra is odafigyeljen.

Nem elérhető TheSLESH

  • Trainee
  • *
  • Thank You
  • -Given: 11
  • -Receive: 22
  • Hozzászólások: 149
  • Segített: -18
  • Várom a napfelkeltét
Re:inventory hiba
« Válasz #13 Dátum: 2018-02-08, 14:13:57 »
int pc_can_warp(lua_State* L)
{
LPCHARACTER pChar = CQuestManager::instance().GetCurrentCharacterPtr();

if (NULL != pChar)
{
lua_pushboolean(L, pChar->CanWarp());
}
else
{
lua_pushboolean(L, false);
}

return 1;
}

{ "can_warp", pc_can_warp },
if false == pc.can_warp() then
syschat("<Információ> Várj 10 másodpercet mielött teleportálsz!")   
return
end
Az ember csak fiatalon találhat ki igazán új dolgokat. Utána már túl tapasztalt, túl híres (...) és túl ostoba.

Nem elérhető [VIP]P3NG3R

  • VIP
  • Master
  • *
  • Thank You
  • -Given: 46
  • -Receive: 622
  • Hozzászólások: 724
  • Segített: 1043
  • napasztmek
Re:inventory hiba
« Válasz #14 Dátum: 2018-02-17, 15:37:27 »
Leskelődve találtam az aktuális gf root fájlokban egy kis szösszenetet, nem tudom kipróbálni mert gerincre vágtam az egész játékot(újraírom az egész TItemPos-t akarom mondani befejezem) szóval adott az interfaceModule.py fájlban az Interface osztályban ez a fánksön: Close, amiben van egy ilyen:
if self.wndInventory:
self.wndInventory.Destroy()

Bővítsd ki így:
if self.wndInventory:
self.wndInventory.Hide()####gfrekt
self.wndInventory.Destroy()

Ha lenne valaki oly bátor és merész, hogy kipróbálja kap egy hi5-ot :)

Egy rage-edit ha mégsem működne, szintén abban a funkcióban ezt:
if self.wndQuestWindow:
for key, eachQuestWindow in self.wndQuestWindow.items():
eachQuestWindow.nextCurtainMode = -1
eachQuestWindow.CloseSelf()
eachQuestWindow = None
self.wndQuestWindow = {}

Így:
if self.wndQuestWindow:
for key, eachQuestWindow in self.wndQuestWindow.items():
eachQuestWindow.nextCurtainMode = -1
eachQuestWindow.Hide()####gfrekt
eachQuestWindow.CloseSelf()
eachQuestWindow = None
self.wndQuestWindow = {}

A ####gfrekt egy jelzés nekem majd a közeljövőben arra, hogy tudjam mit hova ollóztam be.
"aki hülye az is marad..." (;

Wir sind Sztep. :>

Nem elérhető Pisti95

  • Sage
  • *****
  • Thank You
  • -Given: 97
  • -Receive: 665
  • Hozzászólások: 1 378
  • Segített: 708
Re:inventory hiba
« Válasz #15 Dátum: 2018-02-17, 21:32:43 »
Kicsit csúnya úgy hogy hide és destroy. Miért nem raktál az uiinventory.py-ba a def Destroy(self): funkcióba egy self.Hide() sort?

Nem elérhető [VIP]P3NG3R

  • VIP
  • Master
  • *
  • Thank You
  • -Given: 46
  • -Receive: 622
  • Hozzászólások: 724
  • Segített: 1043
  • napasztmek
Re:inventory hiba
« Válasz #16 Dátum: 2018-02-17, 23:01:33 »
Nem is te lettél volna ha nem kötsz bele, mindenáron még a kovalens kötésbe is :D. Ha nem megy az értő olvasás, uccu neki olvasd el még kétszer az előző hozzászólásomat.
"aki hülye az is marad..." (;

Wir sind Sztep. :>

Elérhető 5310pati

  • Sage
  • *****
  • Thank You
  • -Given: 27
  • -Receive: 383
  • Hozzászólások: 1 391
  • Segített: 491
    • Advanced World
Re:inventory hiba
« Válasz #17 Dátum: 2018-02-17, 23:07:19 »
Sztem lényegtelen. A fő h megoldotta a problémát, játékosok úgyis le...köhöm h te most hova raktad a kódot és sztem túl sok hátránya sincs annak h itt van ez a sor és nem másik helyen.
De am meg teszt jelleggel rakta ki penger, most h tudja jó az a megoldás már tudja szépíteni h átrakja oda a dolgot.
Skype:p-tom1 (Whistl3R)

Nem elérhető Pisti95

  • Sage
  • *****
  • Thank You
  • -Given: 97
  • -Receive: 665
  • Hozzászólások: 1 378
  • Segített: 708
Re:inventory hiba
« Válasz #18 Dátum: 2018-02-17, 23:29:42 »
Véleményét mindenki leírhatja, nem sértésből írtam, csak azért mert én úgy írtam bele pár napja, és megoldódott a dolog. Mindenki máshogy csinálja.

Meg ugye a DragonSoul, vagyis a Sárkánykőalkímia ablak is bugos. Azért jobb ha def Destroy-ba írom.
« Utoljára szerkesztve: 2018-02-17, 23:31:43 írta Pisti95 »

Nem elérhető [VIP]P3NG3R

  • VIP
  • Master
  • *
  • Thank You
  • -Given: 46
  • -Receive: 622
  • Hozzászólások: 724
  • Segített: 1043
  • napasztmek
Re:inventory hiba
« Válasz #19 Dátum: 2018-02-18, 11:50:32 »
Itt nem a véleményeddel van a gond, az arroganciáddal.
"aki hülye az is marad..." (;

Wir sind Sztep. :>