• Willkommen im Geoclub - dem größten deutschsprachigen Geocaching-Forum. Registriere dich kostenlos, um alle Inhalte zu sehen und neue Beiträge zu erstellen.

Wheryougo-Player auf Android und "Tried to call nil"

tower27

Geowizard
Hallo an die Profis unter euch,

ich habe mit einer Cartridge (Geopacman - https://coord.info/GC68BJ0 & https://coord.info/GC6F8N2 & https://coord.info/GC6F8HK) ein Problem, dass (seit dem neuesten Wheryougo-Update?) gelegentlich ein schräger Fehler auftritt. Ich habe den Screenshot dazu angehängt.

Es wird Bezug genommen auf eine Datei _cartridge-new.enc, mit der ich allerdings rein gar nichts anfangen kann. Auch die angegebene Zeilennummer (2432) ergibt in meiner Cartridge keinen Sinn.

Ich habe meine compilierte Lua-Datei geprüft, in der Zeile 2432 kann kein Fehler auftreten. Dann habe ich mir selbst die GWC-Datei runter geladen, diese decompiliert und entpackt und die dortige lua-Datei endet schon bei Zeile 2318.

Kann mir jemand einen Tipp geben, wie ich mich weiter dem Problem nähern könnte? Was ist das für eine Datei?
Oder muss ich damit leben, dass es möglicherweise in Fehler im Player ist und gar nix mit meiner Cartridge zu tun hat.

Jede Hilfe ist herzlich willkommen. Danke
Thomas (tower27)

wheryougo-fehler.jpg
 

Charlenni

Geomaster
Der Fehlermeldung nach ist dir tatsächlich etwas abhanden gekommen, nämlich eine Funktion, die du aufrufst.

Eventuell hast du ommentare in der Lua-Datei. Gehe her und erzeuge die GWZ-Datei. Diese dann in .ZIP umbenennen und öffnen. Dort findest du die _cartridge.lua. Schau mal in dieser nach, ob es dort eine Zeile 2432 gibt.
 
OP
tower27

tower27

Geowizard
Danke schon mal für die Antwort. Das von dir beschriebene hatte ich als Erstes gemacht, die Zeile 2432 gibt es, ist allerdings eine total unkritische (das Ende einer Schachtelung)
Aber, ja, ich habe Kommentare drin, die Masse der Logik ist "per Hand" in mehreren ausgelagerten LUA-Dateien umgesetzt und das wenigste im Urwigo "gemalt". D.h. auch hier ein "ja", ich habe Kommentare im Quellcode drin (immer mit -- am Zeilenanfang)

Könnten die Kommentare der Auslöser der Probleme sein? Das wäre ja schräg, aber auch leicht zu beheben.

Meinst du, ich soll die alle raus löschen aus meinem Quellcode und eine neue Cartridge bauen?

Thomas
 

Charlenni

Geomaster
Nein, es liegt nicht an den Kommentaren. Aber die verschiebung der Zeilennummern liegt an den Kommentaren. Diese werden beim Kompilieren entfernt und deshalb findest due die Zeile aus der Fehlermeldung nicht in deiner dekompilierten Datei.

Wenn du seit dem Hochladen der GWZ nichts mehr geändert hast, dann muss der Fehler innerhalb der Schleifen liegen. Werden dort irgendwelche Funktionen aus Variablen oder Tabellen aufgerufen?

Viele Grüße und weiterhin viel Spaß
Dirk (Charlenni)
 
OP
tower27

tower27

Geowizard
ich hänge mal den entspr. Codesnipsel ran. Interessant ist jetzt, dass es der ZoneFinal:OnEnter()-Event ist, die Final-Zone war aber noch gar nicht aktiv bei den Abstürzen. Allerdings ist sie schon vorhanden, nur noch nicht aktiv.
Eigentlich kann der Spieler auch noch gar nicht in die (nicht aktive) Zone rein gegangen sein, denn sie liegt außerhalb des Spielbereiches. Aber ich könnte mir vorstellen, dass der Event dennoch ausgelöst wird, wenn:
- GPS- Ungenauigkeit
- unsaubere Programmierung im Player bzgl des Active-Status
zusammen kommen.

Aber auch dann sollte doch in diesem Code-Teil kein Problem auftreten, außer wenn das "Text = ZoneFinal.Description" knallt, sofern die Zone noch nicht aktiv ist.

Allerdings hat auch kein einziger der Spieler gemeldet, dass der Final-Sound abgespielt worden wäre und das passiert immerhin in Zeile 2421.

Ich bin also weiterhin ratlos und weiß nicht so recht, was ich als nächstes probieren könnte.....

wheryougo-fehler1.jpg
 

Charlenni

Geomaster
Also von der Fehlermeldung her würde ich sagen, dass der Player versucht, eine nichtdefinierte Funktion aufzurufen, also so etwas wie "nil()". Das würde auch zur Zeile passen. Da steht nämlich (vereinfacht)
Code:
_Urwigo.MessageBox()
Wenn nun "_Urwigo.MessageBox" "nil" ist, dann kommt genau diese Fehlermeldung zustande. Wie das aber passieren soll, ist mir nicht klar.
 
OP
tower27

tower27

Geowizard
_Urwigo.MessageBox() ist eine sehr häufig aufgerufene Funktion, wenn man eine Cartridge mit dem Urwigo-Builder erstellt, daran kann es nicht liegen.
Aber das schräge ist doch, dass der Code (angeblich?) hier rein kommt, obwohl die Final-Zone doch noch gar nicht aktiv ist. Das verstehe ich nicht.
Ich fürchte, dass ich noch nicht an der "richtigen" Stelle bin, an der der Fehler auftritt.
 
OP
tower27

tower27

Geowizard
Ich hatte einfach auf gut Glück mal etwas umgestellt im Code bzgl. der Sichtbarkeit von Zonen und was passiert, wenn der Spieler eine eigentlich noch nicht aktive Zone "betritt" und siehe da, seither ist kein Fehler mehr aufgetreten.

Es scheint damit zusammen zu hängen, dass Zone-Enter-Events aufgrund von GPS-Wacklern aufgerufen werden, obwohl Zonen weder sichtbar noch aktiv sind.

Daher habe ich eine weitere (eigentlich unnötige) Kontrolle eingebaut.

Leider werden die betroffenen Wherigos relativ selten gespielt, so dass ich mir noch nicht sicher bin, dass es erfolgreich war
 
Oben