Text na ceduliach sa neaktualizuje

Odpovědět
Ján Haluška
Příspěvky: 41
Registrován: 25 lis 2022, 19:38

Text na ceduliach sa neaktualizuje

Příspěvek od Ján Haluška »

Cedule občas po napísaní textu a následne prepísaním daného textu na niečo iné, zobrazujú stále aj pôvodný text. Po odstránení cedule občas zostane "visieť" pôvodný text vo vzduchu a nedá sa nijak odstrániť. Problém som si všimol zatiaľ pri týchto malých farebných ceduliach a tiež linkových ceduliach:
Snímka obrazovky 2026-03-20 131209 (Small).png
Snímka obrazovky 2026-03-20 131209 (Small).png (191.95 KiB) Zobrazeno 64 x
Administrace
Příspěvky: 215
Registrován: 20 lis 2022, 08:08

Re: Text na ceduliach sa neaktualizuje

Příspěvek od Administrace »

Děkuji za nahlášení. To vypadá jako docela nepříjemná chyba. Pokusím se tomu věnovat, ale nevím, kdy to budu mít opraveno.
Administrace
Příspěvky: 215
Registrován: 20 lis 2022, 08:08

Re: Text na ceduliach sa neaktualizuje

Příspěvek od Administrace »

Mělo by to být opraveno.

Zjistil/a jsem, že chybu způsobovala moje úprava. Cedule fungují tak, že pro zobrazení textu vygenerují tzv. Lua-entitu (potenciálně pohyblivý objekt ve hře), tuto entitu pak následně při aktualizacích potřebují často najít (v případě změny textu jí změní texturu). Ve starších verzích Luanti k tomu byla jedinou možností funkce core.get_objects_inside_radius(), která ale způsobovala problémy s výkonem, protože procházela seznam všech aktivních entit na celém serveru (kterých jsou typicky stovky, na větším serveru i tisíce). Proto jsem již dříve implementoval/a metodu, kdy se vytvořený objekt při aktivaci sám registruje pod čísleným ID, které si blok cedule zapamatoval do metadat a podle nich pak měl svoji entitu najít přímo. Bohužel to moc dobře nefungovalo a vedlo to k mnohonásobným duplikacím entit a problémům, na které jsi narazil. (Odhaduji, že se asi nejdřív aktivoval blok, který hledal v seznamu entitu, kterou ale nenašel, a tak vytvořil novou, a pak se teprve aktivovala původní entita a zaregistrovala se do seznamu pod původním číslem.)

Od některé novější verze (nejsem si jistý/á, možná 5.13.0) již tato funkce používá spatial index, což prohledávání výrazně urychluje. Proto jsem provedl/a upgrade serveru na verzi 5.15.1 a svůj systém registrace entit odstranil/a.
Odpovědět