<?xml version='1.0' encoding='UTF-8'?><rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearchrss/1.0/" xmlns:blogger="http://schemas.google.com/blogger/2008" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" version="2.0"><channel><atom:id>tag:blogger.com,1999:blog-4462379230211614318</atom:id><lastBuildDate>Thu, 05 Sep 2024 08:10:13 +0000</lastBuildDate><category>CacheSchwafel</category><category>Wherigo für Experten</category><category>Wherigo-Einstiegskurs</category><category>GSAK</category><category>Wherigo Fortschrittskurs</category><title>WherIBlog</title><description>WherIGo Tutorials, GSAK Kniffe und Cacheschwafel.&#xa;Was gibt es neues zwischen Rheinland und Westerwald?</description><link>http://krolock.blogspot.com/</link><managingEditor>noreply@blogger.com (Graf von Krolock)</managingEditor><generator>Blogger</generator><openSearch:totalResults>76</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><item><guid isPermaLink="false">tag:blogger.com,1999:blog-4462379230211614318.post-2070404196440003696</guid><pubDate>Wed, 07 Jun 2017 17:00:00 +0000</pubDate><atom:updated>2017-06-07T22:49:11.192+02:00</atom:updated><title>Interaktion mit Personen unabhängig von Zonen</title><description>&lt;div style=&quot;width: 775px&quot;&gt;
    &lt;span style=&quot;text-decoration: underline;&quot;&gt;Voraussetzung: &lt;a
                                                                 href=&quot;http://krolock.blogspot.de/2014/06/globaler-code-teil-ii.html&quot;
                                                                 target=&quot;_blank&quot;&gt;&quot;Globaler Code - Teil II “&lt;/a&gt;&lt;/span&gt; &lt;br&gt;
    &lt;br/&gt;
    &lt;!-- BILD UND TEXT  --&gt;
    &lt;div class=&quot;clear&quot;&gt;&lt;/div&gt;

    &lt;div class=&quot;right label&quot; style=&quot;width: 400px;&quot;&gt;
        &lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhIctHf9B0-9mIYn32EsM4L6N8qu-zwPqf8ftU51ZqY7MYlZdaucdrCbUMNJjr2yGoVs_VrX0ep47jApTkfrwUS-sKRKi3KkpZ0SWPFhIP-4yRYblj_r0tpc_G_cQAo7L7wF67EdO4znDQ/s666/Sheldon.PNG&quot;&gt;
            &lt;img border=&quot;0&quot; alt=&quot;&quot;
                 src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhIctHf9B0-9mIYn32EsM4L6N8qu-zwPqf8ftU51ZqY7MYlZdaucdrCbUMNJjr2yGoVs_VrX0ep47jApTkfrwUS-sKRKi3KkpZ0SWPFhIP-4yRYblj_r0tpc_G_cQAo7L7wF67EdO4znDQ/s600/Sheldon.PNG&quot;/&gt;
        &lt;/a&gt;&lt;br/&gt;
        Abbildung 1: Die Person Sheldon ist erstmal nicht sichtbar, befindet sich in der unsichtbaren Hilfszone und hat eine eigene Koordinate
    &lt;/div&gt;
    Nach langer Zeit gibt es aufgrund aktueller Inspiration mal wieder ein neues Tutorial. Dieses Mal geht es um das Thema Personen-statt-Zone.
    &lt;br /&gt;Die Idee / die Anforderung ist, dass Personen losgelöst von einer Zone im Spielfeld verteilt sind und erst sichtbar sein sollen, wenn man nahe genug (hier 20 Meter Abstand) ist, um mit ihnen zu interagieren.
    &lt;br /&gt; Gerade wenn viele Personen im Spiel sind und deswegen eine eigene Zone für die Person aus Performance Gründen ausscheidet, sollte dieser Ansatz als Alternativ zum bishierigen Umgang mit Personen / Gegenständen sein. (Ob Gegenstand oder Person ist egal, die Idee bleibt die gleiche).
    &lt;br/&gt;
    &lt;br /&gt; Wir definieren zunächst eine Person namens &quot;Sheldon&quot;. Diese ist stellvertretend für x weitere Personen die wir im Spiel später brauchen.
    &lt;br /&gt; Wichtig ist, dass Sheldon zunächst unsichtbar ist, d.h. das &lt;code&gt;Display-Flag&lt;/code&gt; ist deaktiviert. Zudem bekommt Sheldon eine eigene Koordinate, nämlich der Standpunkt an dem er im Spiel auf den Spieler wartet.
    


    &lt;!-- BILD UND TEXT  --&gt;
    &lt;div class=&quot;clear&quot;&gt;&lt;/div&gt;
    &lt;br&gt;
    &lt;div class=&quot;left label&quot; style=&quot;width: 400px;&quot;&gt;
        &lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgZy-1906HqMhkv0hz-H7_Ixlg4Af7B5BH5lX1UHATA5XZvpsjZ9eTIxeFPGdgB3m-CT9Fy9MhdacZzRuryt3ROh8TZCTldxpaaJvT438nIioQ85EFcJmGLqX_JkYX2D_R-uYAcmt77-FA/s1600/InvisibleZone.PNG&quot;&gt;
            &lt;img alt=&quot;&quot;
                 src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgZy-1906HqMhkv0hz-H7_Ixlg4Af7B5BH5lX1UHATA5XZvpsjZ9eTIxeFPGdgB3m-CT9Fy9MhdacZzRuryt3ROh8TZCTldxpaaJvT438nIioQ85EFcJmGLqX_JkYX2D_R-uYAcmt77-FA/s600/InvisibleZone.PNG&quot;/&gt;
        &lt;/a&gt;&lt;br/&gt;
        Abbildung 2: Die unsichtbare Zone dient nur dazu die Personen verfügbar zu machen.
    &lt;/div&gt;
    &lt;br /&gt;Ganz ohne Zonen geht es leider nicht, denn eine Interaktion mit Personen ist nur möglich, wenn Spieler und Person sich entweder in der gleichen Zone befinden oder die Person dem Spieler zugeordnet wird. (Aber dann wären ja alle 30 Personen des Spieles immer sichtbar)
    &lt;br /&gt;Wir lösen das Ganze über den Kniff einer unsichtbaren Zone, die nur aus einem Punkt besteht (Koordinaten beliebig), die zwar aktiv aber unsichtbar ist.
    &lt;br/&gt;Diese Zone kann irgendwo liegen und sollte weit außerhalb des Spielfeldes gewählt werden. 
    &lt;br/&gt;Wichtig ist der Punkt, dass die Objekte der Zone immer sichtbar sind, deswegen &lt;code&gt;Show objects = Always&lt;/code&gt;. Wir &quot;tricksen&quot; also Spieler-und-Person-in-einer-Zone aus
    &lt;br/&gt;&lt;br/&gt;
    Sollte die Spielidee verlangen, dass man in einer Zone stehen und nahe genug an den Personen sein muss, lässt sich auch eine normale Zone nehmen und &lt;code&gt;Show objects = On Enter&lt;/code&gt; setzen.
    So kann man umsetzen, dass man bei einer Mafia-Ralley in Köln im Stadteil K&amp;ouml;ln-Kalk sein und nahe genug an die Gangsterbosse kommen muss.
    &lt;br/&gt; Wenn nur die Entfernung zur Person entscheident ist, empfiehlt sich die unsichtbare Zone.
    &lt;div class=&quot;clear&quot;&gt;&lt;/div&gt;

    &lt;div class=&quot;right label&quot; style=&quot;width: 500px;&quot;&gt;
        &lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjR-cnQP3HGcLtQTdtbyYs6eK3h5jzAQUflYEOkOo9RF8wqeQs193dVTIGnJedrFSbEW8qGRb2hdLob31GOQzuTD7zyrd0Cvp4XbaX5bR-0ZzqHBEfYNmpHhZcde6mP2TdgqsVz438g9H8/s1600/getCharacters.PNG&quot;&gt;
            &lt;img alt=&quot;&quot;
                 src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjR-cnQP3HGcLtQTdtbyYs6eK3h5jzAQUflYEOkOo9RF8wqeQs193dVTIGnJedrFSbEW8qGRb2hdLob31GOQzuTD7zyrd0Cvp4XbaX5bR-0ZzqHBEfYNmpHhZcde6mP2TdgqsVz438g9H8/s600/getCharacters.PNG&quot;/&gt;
        &lt;/a&gt;&lt;br/&gt;
        Abbildung 3: Ermittle alle Personen
    &lt;/div&gt;


    Wer diesen Blog schon etwas weiter studiert hat, kennt noch die Stelle an der allen Zonen ermittelt wurden. Ich habe diesen Code leicht abgeändert zu &lt;code&gt;getCharacters&lt;/code&gt; in meine global.lua Datei gepackt, da ich ihn in mehreren WIGs immer wieder benötige.
    Man kann den Code aber auch einfach lokal ins lua des WIGs packen. 
    &lt;br /&gt;&lt;b&gt;Wictig&lt;/b&gt; ist der Bezeichner / Identifier des Wherigos. Bei mir nenn ich ihn immer &lt;code&gt;WIG&lt;/code&gt;, ansonsten wird Zeile 176 zu nem Fehler führen. Wenn ihr euren Wherigo anders bezeichnet, müsst ihr das dort anpassen.



    &lt;!-- BILD UND TEXT  --&gt;
    &lt;div class=&quot;clear&quot;&gt;&lt;/div&gt;
    &lt;br&gt;
    &lt;div class=&quot;left label&quot; style=&quot;width: 500px;&quot;&gt;
        &lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgBOAMrC2F6PwQFNKHZK8qXdi3f9E7ZqSVDxelhKQexfoUq_kv7yvkocbKxIEfxKOzW1Qcg7be9pUS3uqvyGps-YkTI-F-d3LoiouUydXH-jzHz7_PghH3ZDGV0moT8JvS7axLseiKu5js/s891/code.PNG&quot;&gt;
            &lt;img border=&quot;0&quot; alt=&quot;&quot;
                 src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgBOAMrC2F6PwQFNKHZK8qXdi3f9E7ZqSVDxelhKQexfoUq_kv7yvkocbKxIEfxKOzW1Qcg7be9pUS3uqvyGps-YkTI-F-d3LoiouUydXH-jzHz7_PghH3ZDGV0moT8JvS7axLseiKu5js/s500/code.PNG&quot;/&gt;
        &lt;/a&gt;&lt;br/&gt;
        Abbildung 4: Iteriere über alle Personen und mach die Sichtbarkeit von der Entfernung abhängig
    &lt;/div&gt;
    
    Jetzt kommt der spannende Teil, nämlich wie werden Personen sichtbar gemacht wenn sie nahe genug sind, bzw. wie verschwinden sie wenn ich weiter laufe?
    &lt;br/&gt; Dazu starten wir einen vorher definierten Timer (mit dem Identifier &lt;code&gt;TPerson&lt;/code&gt;) und führen bei jeder Iteration folgendes aus (Zeile 14-17):
    &lt;ul&gt;
        &lt;li&gt;Iterieren über alle Character&lt;/li&gt;
        &lt;li&gt;Messe die Entfernung zu der Person und mache sie sichtbar wenn sie sich näher als 20 Meter zum Spieler befindet&lt;/li&gt;
    &lt;/ul&gt;
    
  
    &lt;div class=&quot;clear&quot;&gt;&lt;/div&gt;

    &lt;div class=&quot;right label&quot; style=&quot;width: 500px;&quot;&gt;
        &lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhoG6aJlyiTwHaqn-xBLGW9sEojUZUrkBGLZSQzZB8byGrJ9MNAPNKMOIYKa1JSrZTtgpzFq9FcYtJlBOCNHKaMXEHbSnnBUuo36vZkQNXiUWquEbZsm-QscsjGYAmI37oZDnwljQzcgXg/s1600/Nobody.PNG&quot;&gt;
            &lt;img border=&quot;0&quot; alt=&quot;&quot;
                 src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhoG6aJlyiTwHaqn-xBLGW9sEojUZUrkBGLZSQzZB8byGrJ9MNAPNKMOIYKa1JSrZTtgpzFq9FcYtJlBOCNHKaMXEHbSnnBUuo36vZkQNXiUWquEbZsm-QscsjGYAmI37oZDnwljQzcgXg/s600/Nobody.PNG&quot;/&gt;
        &lt;/a&gt;&lt;br/&gt;
        Abbildung 5: Weit weg von allen Personen ist auch niemand sichtbar
    &lt;/div&gt;


    Zur Berechnung des Abstandes (Zeile 1-4) bilden wir einen Vektor vom Spieler zur übergebenen Person. Zurückgegeben werden zwei Werte (lua ist schon ne geile Sprache !!!), die Entfernung und der Winkel zum Ziel.
    &lt;br/&gt;Der Winkel interessiert uns nicht, die Entfernung geben wir uns in Metern zurück.
    &lt;br/&gt;Der Timer ist bei mir auf ein Interval von 3 Sekunden gestellt. Wenn viele Personen im Spiel sind und die Abstände groß genug sind (30 oder 40 Meter), sollte man darüber nachdenken, ihn nur alle 5 oder 10 Sekunden anspringen zu lassen um die Performance des Oregons nicht zu stressen.
    &lt;br/&gt;&lt;br/&gt;
    Da wir das Start-Event des Wherigos sowie die OnTick-Methode des Timers überschreiben, muss der Code in &lt;code&gt;Lua user &lt;b&gt;functions&lt;/b&gt;&lt;/code&gt; und nicht in &lt;code&gt;Lua user &lt;b&gt;directives&lt;/b&gt;&lt;/code&gt; eingebunden werden. Ansonsten kommt es zu einem Compile-Fehler (ja ich weiß, lua compiliert nicht) im Urwigo, da die OnStart / OnTick Methode doppelt vorhanden ist. Hängt mit dem Zeitpunkt zusammen, wann der lua code eingebunden wird.
    &lt;br /&gt;&lt;br /&gt;
    Im Spiel sieht es dann so aus, dass zu Beginn niemand zu sehen ist....


    &lt;!-- BILD UND TEXT  --&gt;
    &lt;div class=&quot;clear&quot;&gt;&lt;/div&gt;
    &lt;br&gt;
    &lt;div class=&quot;left label&quot; style=&quot;width: 600px;&quot;&gt;
        &lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjA-IATVuVWq7tdm0wCldiQiysXkmtaWEOqY7N9wfw_7RzcPWDKXuFNSEhuIVh6wbz91ul-BfuRJ6bOm0tGM3hXGoUZjqzCzGrbtZrJ0_pbaSjUj6Iurol5nehbbAe9v7YIcG8PPolA4cQ/s1600/SeeSheldon.PNG&quot;&gt;
            &lt;img alt=&quot;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjA-IATVuVWq7tdm0wCldiQiysXkmtaWEOqY7N9wfw_7RzcPWDKXuFNSEhuIVh6wbz91ul-BfuRJ6bOm0tGM3hXGoUZjqzCzGrbtZrJ0_pbaSjUj6Iurol5nehbbAe9v7YIcG8PPolA4cQ/s600/SeeSheldon.PNG&quot;/&gt;
        &lt;/a&gt;&lt;br/&gt;
        Abbildung 6: Sheldon, der auf der Kreuzung steht, ist nun sichtbar
    &lt;/div&gt;
    
    ... kommen wir dann zur Kreugung an der Sheldon wartet, so wird er sichtbar und wir können mit ihm interagieren
&lt;/div&gt;</description><link>http://krolock.blogspot.com/2017/06/interaktion-mit-personen-unabhangig-von.html</link><author>noreply@blogger.com (Graf von Krolock)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhIctHf9B0-9mIYn32EsM4L6N8qu-zwPqf8ftU51ZqY7MYlZdaucdrCbUMNJjr2yGoVs_VrX0ep47jApTkfrwUS-sKRKi3KkpZ0SWPFhIP-4yRYblj_r0tpc_G_cQAo7L7wF67EdO4znDQ/s72-c/Sheldon.PNG" height="72" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-4462379230211614318.post-6730629015386822152</guid><pubDate>Mon, 21 Dec 2015 08:05:00 +0000</pubDate><atom:updated>2015-12-21T09:05:08.620+01:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">CacheSchwafel</category><title>Die Beerdigung der Fußballerzitate</title><description>
&lt;div style=&quot;width: 775px; color: blue; font-weight: bold;&quot;&gt;
   
    &lt;!-- BILD UND TEXT  --&gt;
    &lt;div class=&quot;clear&quot;&gt;&lt;/div&gt;

    &lt;div class=&quot;right label&quot; style=&quot;width: 400px;&quot;&gt;
        &lt;a href=&quot;https://d1u1p2xjjiahg3.cloudfront.net/5c73af51-319f-430c-80c3-13b9f81e7d62.jpg&quot;&gt;
            &lt;img border=&quot;0&quot; alt=&quot;&quot;
                 src=&quot;https://d1u1p2xjjiahg3.cloudfront.net/5c73af51-319f-430c-80c3-13b9f81e7d62.jpg&quot;/&gt;
        &lt;/a&gt;&lt;br/&gt;
        Abbildung 1: Die (Fußballerzitate) Welt wird untergehen
    &lt;/div&gt;


    Viele viele Anfrage gab es für die Zitate, die ich mit Freuden beantwortet habe. Sie haben mir gezeigt, wieviel Spaß (und kreative Ansätze) die Finder beim Lösen hatten.
 &lt;br&gt;
 Unzählige Logs haben sich in Dosen und online angesammelt.
 


    &lt;!-- BILD UND TEXT  --&gt;
    &lt;div class=&quot;clear&quot;&gt;&lt;/div&gt;
    &lt;br&gt;
    &lt;div class=&quot;left label&quot; style=&quot;width: 400px;&quot;&gt;
            &lt;img border=&quot;0&quot; alt=&quot;&quot;
                 src=&quot;https://lh3.googleusercontent.com/--zVgFVFgr4U/Udcd7X-5N3I/AAAAAAAAB3w/_0oifGenzTk/w400-no/6_Sanduhr.jpg&quot;/&gt;
       &lt;br/&gt;
        Abbildung 2: Auch wenn die Runde archiviert wird, das Leben geht weiter
    &lt;/div&gt;
    Doch auch hier ist irgendwann Schluss. Mehr und mehr Verstecke sind &quot;verbrannt&quot;, werden immer wieder gemuggelt, sodass nun das Ende erreicht ist und die Runde am 01.01.16 archiviert wird.


    &lt;!-- BILD UND TEXT  --&gt;
    &lt;div class=&quot;clear&quot;&gt;&lt;/div&gt;
    &lt;br&gt;&lt;div class=&quot;right label&quot; style=&quot;width: 400px;&quot;&gt;
        &lt;a href=&quot;https://lh4.googleusercontent.com/vElU9fPqVQqGojI8vFe7BxGvsgqYCWc8Aa70hVbSFZk=w174-h205-p-no&quot;&gt;
            &lt;img border=&quot;0&quot; alt=&quot;&quot;
                 src=&quot;https://lh4.googleusercontent.com/vElU9fPqVQqGojI8vFe7BxGvsgqYCWc8Aa70hVbSFZk=w174-h205-p-no&quot;/&gt;
        &lt;/a&gt;&lt;br/&gt;
        Abbildung 3: Wir haben fertig
    &lt;/div&gt;
    Für all diejenigen, die noch eine letzte Chance wahren wollen, treffen wir uns am Neujahrstag um 10 Uhr am Asbacher Sportplatz&lt;br&gt;&lt;br&gt;&lt;center&gt;N 50° 39.636 E 7° 25.805&lt;/center&gt;&lt;br&gt;von wo aus wir die Runde starten wollen.
 

&lt;/div&gt;</description><link>http://krolock.blogspot.com/2015/12/die-beerdigung-der-fuballerzitate.html</link><author>noreply@blogger.com (Graf von Krolock)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://lh3.googleusercontent.com/--zVgFVFgr4U/Udcd7X-5N3I/AAAAAAAAB3w/_0oifGenzTk/s72-w400-c-no/6_Sanduhr.jpg" height="72" width="72"/><thr:total>2</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-4462379230211614318.post-1940210163361181059</guid><pubDate>Mon, 08 Jun 2015 04:15:00 +0000</pubDate><atom:updated>2015-06-08T06:15:59.742+02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">CacheSchwafel</category><title>Die Zitate des Herr Seppberger</title><description>&lt;div style=&quot;width: 775px;font-family:Comic Sans, Comic Sans MS;font-size:1pc;color:#0033FF;&quot;&gt;
Nach unbestätigten Informationen wurde 1954 in Bern nicht nur der Name des deutschen Dosennationaltrainer, nein auch die Sportart und vorallem die Zitate wurden falsch überliefert.
  &lt;br&gt;&lt;br&gt;Hier die &quot;korrigierte Fassung&quot;:
    &lt;ul&gt;
        &lt;li&gt;&quot;Nach dem Event ist vor dem Event&quot;
        &lt;li&gt;&quot;Das Blaue muss ins Eckige im Runden&quot;
        &lt;li&gt;&quot;Die nächste Dose ist immer die schwerste&quot;
        &lt;li&gt;&quot;Die Dose ist rund und ein Event dauert 90 Evmis *&quot;
        &lt;li&gt;&quot;11 Dosen müsst ihr sein&quot;
        &lt;li&gt;...
      &lt;/ul&gt;
        Wer noch weitere Infos über die &quot;Originalzitate&quot; besitzt, kann mir diese gerne zukommen lassen, vielleicht gibt es dann wieder ne Mysteryseria à la &lt;a href=&quot;http://coord.info/GC4EYNY&quot; target=&quot;_blank&quot;&gt;Fußballerzitate&lt;/a&gt;


&lt;/div&gt;

&lt;br&gt;
* Evmis sind Eventminuten, eine flexible Zeiteinheit, die von 45 Sekunden beim Mittagspausenevent bis zu 64 Minuten beim Viertageswanderevent gehen kann. Selbst  Minus 45 Sekunden für das Zeitumstellungsevent nachts um 3 bis nachts um 2 sind möglich


</description><link>http://krolock.blogspot.com/2015/06/die-zitate-des-herr-seppberger.html</link><author>noreply@blogger.com (Graf von Krolock)</author><thr:total>1</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-4462379230211614318.post-6845583453070360506</guid><pubDate>Sat, 07 Mar 2015 09:00:00 +0000</pubDate><atom:updated>2015-03-07T10:00:02.677+01:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Wherigo-Einstiegskurs</category><title>Koordinaten ermitteln und automatisch umrechnen lassen</title><description>&lt;div style=&quot;width: 775px&quot;&gt;
    Ich stand letzte Woche wieder vor dem Problem schnell ne Koordinate aus GoogleMaps auszulesen und diese dann in das passende lua-Format zu wandeln.
    &lt;br/&gt;Auch die Eingabe in Uriwgo ist immer noch mit ein wenig Fleiß verbunden. Zwar bietet dieser Editor zwar mittlerweile das Minutenformat an, aber die ° Grad Zeichen müssen noch entfernt werden und die N bzw E Himmelsrichtungen ans Ende gepackt werden.
    Das kann schon nervig werden.
    &lt;br/&gt;&lt;br/&gt;Viel schöner wäre es doch, wenn man diese Schritte verkürzen könnte.
    &lt;br/&gt;

    Ich habe mir zu diesem Zwecke eine kleine WebSite angelegt, die man unter &lt;a href=&quot;https://jsfiddle.net/mwflipper/prgm96wb/embedded/result/&quot; target=&quot;_blank&quot;&gt;JSFiddle&lt;/a&gt; jederseit online nutzen kann.&lt;br/&gt;
    Was sie kann und wie man sie bedient, möchte ich Euch hier einmal vorstellen:
    &lt;!-- BILD UND TEXT  --&gt;
    &lt;div class=&quot;clear&quot;&gt;&lt;/div&gt;
    &lt;br&gt;
    &lt;div class=&quot;nonefloat label&quot; style=&quot;width: 775px;&quot;&gt;
         &lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhXaMHhL0OSMU8nf8cpjnUpeuYZLb-ypAXew0z3xYmkOndzbuMQ41MR6BJ6zNkDLjaRrgFlwTkCJaJM6eEcQ8EEi9Btho8gySHB8bb1gcRkShfp4AkZv71lPaGnEaZulhMXJIVo8FEYIt0/w783-h439-no/StandortZulassen.PNG&quot;&gt;
             &lt;img border=&quot;0&quot; alt=&quot;&quot;
                  src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhXaMHhL0OSMU8nf8cpjnUpeuYZLb-ypAXew0z3xYmkOndzbuMQ41MR6BJ6zNkDLjaRrgFlwTkCJaJM6eEcQ8EEi9Btho8gySHB8bb1gcRkShfp4AkZv71lPaGnEaZulhMXJIVo8FEYIt0/w783-h439-no/StandortZulassen.PNG&quot; /&gt;
         &lt;/a&gt;&lt;br /&gt;
    Abbildung 1: Beim Start versucht sich die Karte auf den aktuellen Standort zu zentrieren.
&lt;/div&gt;
    Beim Start versucht die WebSite den aktuellen Standort des Benutzers zu ermitteln und fragt ihn dazu um Erlaubnis. Hier empfehle ich &quot;Zulassen&quot; auszuwählen.
    &lt;br/&gt;Alternativ kann man aber auch die Eingabemaske nutzen um die Karte an die richtige Stelle springen zu lassen und den Schiebeaufwand zu verringern.

     &lt;!-- BILD UND TEXT  --&gt;
    &lt;div class=&quot;clear&quot;&gt;&lt;/div&gt;

    &lt;div class=&quot;nonefloat label&quot; style=&quot;width: 775px;&quot;&gt;
        &lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgbZLJRL_icWfrLlLKLfI8dsBIapxOvt2rh35gFAdFkRoFsOXfTu-3_I8EUCX3NMDfB9ucGp5-fMn4tMzhbZdw2rQ8s6QnOcyzTxwRtdxsoGfLKRH5r5kxXVaLpbAZt7rrJzGpRgFDVe0s/w952-h585-no/Eingabe+Stra%C3%9Fe.png&quot;&gt;
            &lt;img border=&quot;0&quot; alt=&quot;&quot;
                 src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgbZLJRL_icWfrLlLKLfI8dsBIapxOvt2rh35gFAdFkRoFsOXfTu-3_I8EUCX3NMDfB9ucGp5-fMn4tMzhbZdw2rQ8s6QnOcyzTxwRtdxsoGfLKRH5r5kxXVaLpbAZt7rrJzGpRgFDVe0s/w775/Eingabe+Stra%C3%9Fe.png&quot; /&gt;
        &lt;/a&gt;&lt;br/&gt;
        Abbildung 2: Einfache Eingabe von Orts- und Straßenname um die Karte grob auszurichten
    &lt;/div&gt;


    Einfach in das Suchfeld (&quot;Search Box&quot;) Ort und Straße eintragen und Enter drücken. Schon sind wir an der richtigen Stelle.
    &lt;br/&gt;Zumindest grob. Den Rest können wir durch Verschieben der Karte erreichen.
   


    &lt;!-- BILD UND TEXT  --&gt;
    &lt;div class=&quot;clear&quot;&gt;&lt;/div&gt;
    &lt;br&gt;
    &lt;div class=&quot;right label&quot; style=&quot;width: 455px;&quot;&gt;
        &lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhAagTmDQPYCBvuIj7_yHbJYsvVBwXYwka92TaPzMMdBdhHSjAFkwXN1EAJ3Ju87Z_TIepk2qejILYg6eQDRfUzo7L73bwSPbMuugVu4d8dUd8AM8QdP9DkshjbWf_hfZ34o1JxK19jtto/w596-h368-no/KoorsMessenRMT.png&quot;&gt;
            &lt;img border=&quot;0&quot; alt=&quot;&quot;
                 src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhAagTmDQPYCBvuIj7_yHbJYsvVBwXYwka92TaPzMMdBdhHSjAFkwXN1EAJ3Ju87Z_TIepk2qejILYg6eQDRfUzo7L73bwSPbMuugVu4d8dUd8AM8QdP9DkshjbWf_hfZ34o1JxK19jtto/w450/KoorsMessenRMT.png&quot; /&gt;
        &lt;/a&gt;&lt;br/&gt;
        Abbildung 3: Mit der rechten Maustaste werden die Koors in die Header-Felder geschrieben
    &lt;/div&gt;
    Wenn die gewünschte Stelle erreicht ist, so genügt ein einfacher rechter Mausklick auf den gesuchten Wald / Parkplatz oder was auch immer sonst ausgemessen werden soll.
    &lt;br /&gt;In den Header-Feldern erscheinen nun die Koors im Dezimalminutenformat, in der von Urwigo gewünschtne Schreibweise und als Wherigo.Zonepoint wie ihr ihn benötigt, wenn die Koordinate direkt in lua eingetragen werden soll.


    &lt;!-- BILD UND TEXT  --&gt;
    &lt;div class=&quot;clear&quot;&gt;&lt;/div&gt;
    &lt;br&gt;&lt;div class=&quot;left label&quot; style=&quot;width: 455px;&quot;&gt;
            &lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhpsUg-vLbJ4wRGQbaQjin2-JgnRyoVtIZ1wQNFRiRmNl1hrI55nQ_Ty19yiWrojAFICur5dxFV69b0mJyHIf5pLZhAW15Gb_Jxm6fyd2kF8i27uaekKf9pZksfGIIw3KS8bUPIAruyh8Q/w530-h281-no/KoorsUmrechnen.png&quot;&gt;
                &lt;img border=&quot;0&quot; alt=&quot;&quot;
                     src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhpsUg-vLbJ4wRGQbaQjin2-JgnRyoVtIZ1wQNFRiRmNl1hrI55nQ_Ty19yiWrojAFICur5dxFV69b0mJyHIf5pLZhAW15Gb_Jxm6fyd2kF8i27uaekKf9pZksfGIIw3KS8bUPIAruyh8Q/w450/KoorsUmrechnen.png&quot; /&gt;
            &lt;/a&gt;&lt;br/&gt;
        Abbildung 4: Eine Änderung im Dezimalminutenfeld führt zur Anpassung des Urwigo- und lua-Feldes
    &lt;/div&gt;
    Jetzt reicht es bei Parkplatzkoordinaten ja meistens aus mit GoogleMaps zu messen. Bei vielen Station möchte man aber die vor Ort mit dem GPSr ermittelten Koors verwenden.
    &lt;br/&gt; Um diese in die beiden Wherigo-Formate zu bekommen, könnt ihr einfach das Dezimalminutenfeld anpassen und die Werte aktualisieren sich automatisch
    &lt;br/&gt;Jetzt per Copy&amp;Paste nach Urwigo übernehmen und fertig ist der nächst Wherigo. Zumindest was die Koors betrifft....
&lt;/div&gt;</description><link>http://krolock.blogspot.com/2015/03/koordinaten-ermitteln-und-automatisch.html</link><author>noreply@blogger.com (Graf von Krolock)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhXaMHhL0OSMU8nf8cpjnUpeuYZLb-ypAXew0z3xYmkOndzbuMQ41MR6BJ6zNkDLjaRrgFlwTkCJaJM6eEcQ8EEi9Btho8gySHB8bb1gcRkShfp4AkZv71lPaGnEaZulhMXJIVo8FEYIt0/s72-w783-h439-c-no/StandortZulassen.PNG" height="72" width="72"/><thr:total>6</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-4462379230211614318.post-7705051539442157482</guid><pubDate>Wed, 18 Feb 2015 19:50:00 +0000</pubDate><atom:updated>2015-02-18T20:50:04.417+01:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">CacheSchwafel</category><title>Stillstand bei Uriwgo?</title><description>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
Wie viele Wherigo-Entwickler wurde auch ich eben mit einem Urwigo-Problem konfrontiert, dass man sonst nur hat, wenn man das Cartridge zu schnell startet.
&lt;br&gt;

&lt;img style=&quot;-webkit-user-select: none&quot; src=&quot;https://forum.geoclub.de/download/file.php?id=19045&quot;&gt;
&lt;br&gt;Nachdem ich das Programm mehrere Male neu gestartet, schließlich neu installiert habe .... und immer noch nix lief, hab ich dann mal in den Geoclub geschaut. Und siehe da: Wie vermutet liegt es am GoogleMaps Zugriff.
Lt. Charlenni arbeitet Uriwgo wohl schon länger mit der als Deprecated deklarierten V2 der Google Maps API anstatt auf die V3 upzugraden. Und heute schon Google aus Deprecated ==&gt; Unavailable gemacht zu haben. Jedenfalls funktioniert der API Zugriff nicht mehr.
&lt;br&gt;Hoffen wir, dass die Urwigo Entwickler nun endlich das Update auf die V3 vollziehen.
&lt;br&gt;&lt;br&gt;Quelle: https://forum.geoclub.de/viewtopic.php?f=74&amp;t=76575
&lt;br /&gt;&lt;/div&gt;
</description><link>http://krolock.blogspot.com/2015/02/stillstand-bei-uriwgo.html</link><author>noreply@blogger.com (Graf von Krolock)</author><thr:total>1</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-4462379230211614318.post-7577476512031644751</guid><pubDate>Mon, 02 Feb 2015 09:21:00 +0000</pubDate><atom:updated>2015-02-02T10:23:02.347+01:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">CacheSchwafel</category><title>Auf den Spuren vom Rühmanns Heinz...</title><description>
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
Nur noch ein paar mal schlafen, dann ist es endlich soweit. Mitten in der Karnevalszeit sozusagen als Auszeit und Abwechslung startet in der Weltstadt Birnbach das 
&lt;br&gt;
&lt;div align=&quot;center&quot;&gt;
&lt;a href=&quot;http://coord.info/GC5JX7Q&quot; imageanchor=&quot;1&quot; target=&quot;_blank&quot; &gt;&lt;img border=&quot;0&quot; src=&quot;http://www.moviepilot.de/files/images/0603/6252/z2_person.jpg&quot;/&gt;&lt;br&gt;1. Birnbacher Feuerzangenbowle&lt;/a&gt;
&lt;/div&gt;
&lt;br/&gt;
Jaja, es ist alle geboten. Beamer, Leinwand, DVD, ne gemütliche Grillhütte.
&lt;br&gt;Auch der Birnbacher Flughafen wird geöffnet haben. Jedenfalls wird Louping Louie dort desöfteren starten und laden...
&lt;br&gt;
&lt;div align=&quot;center&quot;&gt;
&lt;img src=&quot;http://www.loopinglouie.de/img-style/looping-louie.jpg&quot;/&gt;
&lt;/div&gt;
&lt;/div&gt;</description><link>http://krolock.blogspot.com/2015/02/auf-den-spuren-vom-ruhmanns-heinz.html</link><author>noreply@blogger.com (Graf von Krolock)</author><thr:total>1</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-4462379230211614318.post-6784774202214735653</guid><pubDate>Sun, 09 Nov 2014 05:00:00 +0000</pubDate><atom:updated>2014-11-09T06:00:01.611+01:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Wherigo für Experten</category><title>Nachrichten asynchron anzeigen mit einer Messag-Queue</title><description>&lt;div style=&quot;width: 775px&quot;&gt;
   &lt;span style=&quot;text-decoration: underline;&quot;&gt;Voraussetzung: &lt;a
           href=&quot;http://krolock.blogspot.de/2012/04/der-einstieg-in-lua.html&quot;
           target=&quot;_blank&quot;&gt;&quot;Der Einstieg in lua“&lt;/a&gt;&lt;/span&gt; &lt;br&gt;

    &lt;!-- BILD UND TEXT  --&gt;
    &lt;div class=&quot;clear&quot;&gt;&lt;/div&gt;

    &lt;div class=&quot;right label&quot; style=&quot;width: 460px;&quot;&gt;
        &lt;a href=&quot;https://lh4.googleusercontent.com/-TLQnVbeZ6QU/VF0drLZ-saI/AAAAAAAACeE/nna8adorUaA/s459/MessageQueue.PNG&quot;&gt;
            &lt;img border=&quot;0&quot; alt=&quot;&quot;
                 src=&quot;https://lh4.googleusercontent.com/-TLQnVbeZ6QU/VF0drLZ-saI/AAAAAAAACeE/nna8adorUaA/s459/MessageQueue.PNG&quot;/&gt;
        &lt;/a&gt;&lt;br/&gt;
        Abbildung 1: Wenn die Nachricht unpassend ist, wird sie später angezeigt
    &lt;/div&gt;
            &lt;br&gt;
In diesem Beitrag geht es um asynchrone Nachrichtenverarbeitung. Klingt komplizierter als es ist, deswegen will ich es mal an einem einfachen Beispiel erklären:
  &lt;br&gt;  &lt;br&gt;Stellt euch vor in eurem Wherigo-Spiel geschieht gerade ein längerer Dialog. Der Spieler muss 3-4 Fragen beantworten auf die er jeweils direkt eine Antwort bekommt.
    &lt;br&gt;  &lt;br&gt;Dazu habt ihr einen Timer der im Hintergrund einmal pro Minute etwas prüft und gegebenenfalls eine Nachricht anzeigt &lt;code&gt;&quot;Die Löwen sind wieder hungrig und möchten gefüttert werden&quot;&lt;/code&gt;
    &lt;br&gt;Nicht nur dass die Nachricht Umlaute enthält, nein sie würde auch im aktuellen schwierigen Dialog stören bzw. wichtige Informationen überlagern.
    &lt;br&gt;   &lt;br&gt;Stellt euch vor, der Spieler erhält gerade die dringende Nachricht &lt;code&gt;&quot;Gehe schnell zum Affengehege&quot;&lt;/code&gt; als der Timer anspringt und sofort mit der wenig dringenden Löwennachricht überlagert.
    Da wüsste der Spieler gar nicht, dass er zuerst du den Affen soll.
    &lt;br&gt;  &lt;br&gt; Um dass zu verhindern nutze ich eine Mesage-Queue in die ich Nachrichten einstelle (Zeile 174), wenn sie gerade unpassend sind.
    Wenn sie gerade nicht stören, also &lt;code&gt;hideMessage&lt;/code&gt; auf false steht können sie auch direkt angezeigt werden.
    &lt;br&gt;Die &lt;code&gt;msgQueue&lt;/code&gt; besteht aus einer Tabelle in die mit &lt;code&gt;table.insert&lt;/code&gt; ein Text sowie ein Bild eingefügt wird, um später die Nachricht darzustellen.
    &lt;br&gt;Zusätzlich hält das Array-Objekt noch einen Pointer, der auf die nächste darzustellende Nachricht zeigt.

    &lt;br&gt;&lt;br&gt;
    Wenn dann die kritische Situation vorbei ist (Der Dialog ist beendet, oder immer wenn der Spieler eine Zone verlässt) wird &lt;code&gt;printMessageFromQueue&lt;/code&gt; aufgerufen.
    Diese Methode prüft ob neue Nachrichten vorhanden sind (dann wenn mehr Nachrichten im Array sind als der Pointer groß ist) und gibt die Nachricht aus auf die der Pointer zeigt.
    &lt;br&gt;Nach Drücken von &quot;OK&quot; durch den Spieler wird der Pointer einen weitergesetzt und &lt;code&gt;printMessageFromQueue&lt;/code&gt; rekursiv aufgerufen. Solange bis alle Nachricht abgearbeitet, also angezeigt wurden.


    &lt;!-- BILD UND TEXT  --&gt;
    &lt;div class=&quot;clear&quot;&gt;&lt;/div&gt;
    &lt;br&gt;
    &lt;div class=&quot;nonefloat label&quot; style=&quot;width: 640px;&quot;&gt;
        &lt;a href=&quot;https://lh3.googleusercontent.com/-ET0mqY6mbyY/VF0drNjFrfI/AAAAAAAACeA/4Bh1mn8lViU/s638/Aufruf.PNG&quot;&gt;
            &lt;img border=&quot;0&quot; alt=&quot;&quot;
                 src=&quot;https://lh3.googleusercontent.com/-ET0mqY6mbyY/VF0drNjFrfI/AAAAAAAACeA/4Bh1mn8lViU/s638/Aufruf.PNG&quot;/&gt;
        &lt;/a&gt;&lt;br/&gt;
        Abbildung 2: Während der Dialog mit dem Spieler etwas länger dauert, springt der Timer an und schiebt die Nachricht in die Queue
    &lt;/div&gt;

       Abb. 2 zeigt uns  die Anwendung im Code. Die Methode &lt;code&gt;doLongDialog&lt;/code&gt; soll den komplizierten Frage-Antwort-Dialog simulieren.
    Bevor der Dialog startet wird &lt;code&gt;hideMessage&lt;/code&gt; auf true gesetzt. Ab jetzt gehen alle Nachrichten in die Queue.
    &lt;br&gt;Zeile 206 bis 208 zeigen uns den Timerfall. Während der Timer anspringt ist &lt;code&gt;hideMessage&lt;/code&gt; positiv und die Nachricht wird eingereiht.
    &lt;br&gt;&lt;br&gt;Nachdem der Dialog vorbei ist, wird (!!! Im Callback des letzten Dialogs / MessageBox !!!) &lt;code&gt;hideMessage&lt;/code&gt; wieder auf false gesetzt, damit ab jetzt wieder live angezeigt werden kann, da die kritische Situation vorbei ist.
    &lt;br&gt;&lt;br&gt;
    Wenn es in eurem Spiel keinen festdefinierten Zeitpunkt gibt, wann die Nachrichten nachgeholt werden können, könnt ihr mit einem weiteren Timer arbeiten, der alle 60 Sekunden prüft ob &lt;code&gt;hideMessage&lt;/code&gt; auf false steht und dann &lt;code&gt;printMessageFromQueue&lt;/code&gt; aufruft.


    &lt;!-- BILD UND TEXT  --&gt;
    &lt;div class=&quot;clear&quot;&gt;&lt;/div&gt;
    &lt;br&gt;&lt;div class=&quot;left label&quot; style=&quot;width: 530px;&quot;&gt;
        &lt;a href=&quot;https://lh4.googleusercontent.com/-kMwsHy6LAZY/VF0drS9tr6I/AAAAAAAACeI/yjZ3o9MJz_g/s526/Ausgabe.PNG&quot;&gt;
            &lt;img border=&quot;0&quot; alt=&quot;&quot;
                 src=&quot;https://lh4.googleusercontent.com/-kMwsHy6LAZY/VF0drS9tr6I/AAAAAAAACeI/yjZ3o9MJz_g/s526/Ausgabe.PNG&quot;/&gt;
        &lt;/a&gt;&lt;br/&gt;
        Abbildung 3: Egal ob direkt oder später, die Nachricht erscheint als MessageBox
    &lt;/div&gt;


&lt;/div&gt;</description><link>http://krolock.blogspot.com/2014/11/nachrichten-asynchron-anzeigen-mit.html</link><author>noreply@blogger.com (Graf von Krolock)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://lh4.googleusercontent.com/-TLQnVbeZ6QU/VF0drLZ-saI/AAAAAAAACeE/nna8adorUaA/s72-c/MessageQueue.PNG" height="72" width="72"/><thr:total>2</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-4462379230211614318.post-5230387403731790305</guid><pubDate>Sat, 08 Nov 2014 09:00:00 +0000</pubDate><atom:updated>2014-11-10T12:12:42.021+01:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">GSAK</category><title>Doppelte Logeinträge mit GSAK finden</title><description>&lt;div style=&quot;width: 775px&quot;&gt;
  Wer kennt es nicht das Problem. Man hat 2-3 Wochen bzw. 50 Caches lang keine Statistik mehr generiert und dann nachdem man mal wieder die Graphiken aktualisert hat, kommt das Horrorszenario: 2047 Funde bei 2046 Caches.

    &lt;!-- BILD UND TEXT  --&gt;
    &lt;div class=&quot;clear&quot;&gt;&lt;/div&gt;
    &lt;br&gt;&lt;div class=&quot;nonefloat label&quot; style=&quot;width: 800px;&quot;&gt;
    &lt;a href=&quot;https://lh5.googleusercontent.com/-0K2q38ziafM/VFskd_2OIhI/AAAAAAAACdE/-2H7ioxkqXU/s576/Horror.PNG&quot;&gt;
        &lt;img border=&quot;0&quot; alt=&quot;&quot;
             src=&quot;https://lh5.googleusercontent.com/-0K2q38ziafM/VFskd_2OIhI/AAAAAAAACdE/-2H7ioxkqXU/s576/Horror.PNG&quot;/&gt;
    &lt;/a&gt;&lt;br/&gt;
    Abbildung 1: Der Horror - Bei einem Cache hab ich aus versehen doppelt geloggt
&lt;/div&gt;
    OK, es müssen nicht genau 2047 Funde sein, aber das Problem hatten die meisten schonmal. Bei irgendeinem Cache ist doppelt geloggt wurden. Entweder hat der Groundspeak Server gehangen und man hat doppelt losgeschickt, man hat einmal vom Smartphone und einmal am PC geloggt oder beim nachträglichen Ändern des Logs (Text / Datum) ist was schiefgegangen.
    &lt;br&gt;Schlimmer als die Frage &lt;code&gt;WARUM&lt;/code&gt; ist &quot;&lt;code&gt;WO&lt;/code&gt; habe ich doppelt geloggt?&quot;
    Da kann es schon ein wenig mühselig sein die letzten 50 Caches durchzugehen. Vorallem wenn man zwischendurch ganz alte Einträge nachholt. &quot;Ach ja, das Event von letztem Jahr muss ich auch noch nachloggen.&quot;


    &lt;!-- BILD UND TEXT  --&gt;
    &lt;div class=&quot;clear&quot;&gt;&lt;/div&gt;

    &lt;div class=&quot;right label&quot; style=&quot;width: 320px;&quot;&gt;
        &lt;a href=&quot;https://lh5.googleusercontent.com/-lidYg_ddsjo/VFslp8nCIEI/AAAAAAAACdc/sTrBfuaTzQs/s316/Tools.png&quot;&gt;
            &lt;img border=&quot;0&quot; alt=&quot;&quot;
                 src=&quot;https://lh5.googleusercontent.com/-lidYg_ddsjo/VFslp8nCIEI/AAAAAAAACdc/sTrBfuaTzQs/s316/Tools.png&quot;/&gt;
        &lt;/a&gt;&lt;br/&gt;
        Abbildung 2: Sqlite Manager als Datenbank-Tool starten
    &lt;/div&gt;
 Aber warum soll man selber suchen und nicht suchen lassen. 
&lt;br&gt;
&lt;br&gt;
&lt;b&gt;&lt;u&gt;Anmerkung: Nach Veröffentlichung des Posts wurde ich durch Kommentare aufmerksamer Leser darauf hingewiesen, dass man das Problem mittlerweile durch GSAK-Bordmittel lösen kann. (Siehe Kommentare). Hier erfolgt der Ansatz über die Datenbank, der für das Doppelte-Logs-Problem etwas komplizierter ist, dafür aber einen guten Einstieg gibt, wie man Infos aus der zugrunde liegenden Datenbank sqlite ziehen kann&lt;/u&gt;&lt;/b&gt;
&lt;br&gt;
   
    Wir werfen dazu einen Blick auf die Datenbank, genau genommen der Datenbestand, der alle Founds enthält und von wo aus die Statistik generiert wird.
    &lt;br&gt; Um einen direkten Datenbankzugriff zu bekommen nutzen wir das von GSAK mitgelieferte Tool &lt;code&gt;Sqlite Manager&lt;/code&gt;.
    Dies ist über &lt;code&gt;Tools&lt;/code&gt; in der Menüleiste zu erreichen.
    &lt;br&gt; Wer mit alternativem Tools wie z.B. DBVisualizer unterwegs ist kann auch direkt die Sqlite Datei .db3 öffnen aber das GSAK integrierte Tool tut es hier vollkommen.



    &lt;!-- BILD UND TEXT  --&gt;
    &lt;div class=&quot;clear&quot;&gt;&lt;/div&gt;
    &lt;br&gt;
    &lt;div class=&quot;left label&quot; style=&quot;width: 400px;&quot;&gt;
        &lt;a href=&quot;https://lh3.googleusercontent.com/-NDP2CVJSlAs/VFslp5i48fI/AAAAAAAACdY/qdFD5KKWzns/s398/OpenDatabase.png&quot;&gt;
            &lt;img border=&quot;0&quot; alt=&quot;&quot;
                 src=&quot;https://lh3.googleusercontent.com/-NDP2CVJSlAs/VFslp5i48fI/AAAAAAAACdY/qdFD5KKWzns/s398/OpenDatabase.png&quot;/&gt;
        &lt;/a&gt;&lt;br/&gt;
        Abbildung 3: Die richtige Datenbank auswählen
    &lt;/div&gt;
    Wichtig ist, dass ihr die richtige Datenbank auswählt. Bei mir heißt die Datenbank für die Funde &lt;code&gt;foundDB&lt;/code&gt;, folglich liegt die Datenbankdatei unter &lt;code&gt;data/foundDB/sqlite.db3&lt;/code&gt;


    &lt;!-- BILD UND TEXT  --&gt;
    &lt;div class=&quot;clear&quot;&gt;&lt;/div&gt;
    &lt;br&gt;&lt;div class=&quot;right label&quot; style=&quot;width: 560px;&quot;&gt;
        &lt;a href=&quot;https://lh6.googleusercontent.com/-XLQ-e7sdFzM/VFskdyczqFI/AAAAAAAACdA/MDSHPMQqN0s/s557/select%2520Statement.PNG&quot;&gt;
            &lt;img border=&quot;0&quot; alt=&quot;&quot;
                 src=&quot;https://lh6.googleusercontent.com/-XLQ-e7sdFzM/VFskdyczqFI/AAAAAAAACdA/MDSHPMQqN0s/s557/select%2520Statement.PNG&quot;/&gt;
        &lt;/a&gt;&lt;br/&gt;
        Abbildung 4: Durch geschickten Select auf die Logs Tabelle bekommt man alle doppelten Einträge heraus
    &lt;/div&gt;
    Sobald die richtige Datenbank geöffnet ist, geht es los.&lt;br&gt;
    Zuerst selektiert man alle Zeilen deren Log-Type &lt;code&gt;Found it&lt;/code&gt; und deren Finder man selbst ist. &lt;code&gt;Krolock&lt;/code&gt; müsst ihr natürlich durch Euren Nickname ersetzen, ansonsten sehr ihr nur, ob ich doppelt geloggt haben
    &lt;br&gt;Um nicht mit unnötig vielen Daten weiterzuarbeiten wird nur die Spalte lParent geladen. Dies ist der GCCode des Caches den ihr gefunden habt.
    Der SQL-Befehl lautet bisher&lt;br&gt;
    &lt;code&gt;SELECT lParent FROM Logs where  lType = &#39;Found it&#39; and lBy = &#39;Krolock&#39;&lt;/code&gt;
    &lt;br&gt;Es müssten nach unserem Beispiel 2047 Zeilen ausgegeben werden.
    &lt;br&gt;Jetzt kommt der entscheidene Schritt, die Gruppierung. Dazu ergänzen wir im select Part ein Count(*) und gruppiern auf lParent
    &lt;br&gt;  &lt;code&gt;SELECT count(*) c, lParent FROM Logs where  lType = &#39;Found it&#39; and lBy = &#39;Krolock&#39; group by lParent&lt;/code&gt; liefert nun 2046 Zeilen bei dem überall die Zählspalte c den Wert 1 besitzt.
    &lt;br&gt;&quot;Ganz Gallien?&quot; - Nein in einer Zeile steht ein 2, das ist die gesuchte Zeile.
    Um die Einserwerte zu eleminieren bauen wir noch ein Select um das Zwischergebnis herum, indem wir mit &lt;code&gt;where c &gt; 1&lt;/code&gt; nur die Mehrfachnennungen aufzeigen und -falls ihr so richtig Mist beim Loggen hinbekommen habt- sortieren wir noch nach c absteigend

    &lt;br&gt;
    &lt;h2&gt;Zu kompliziert?&lt;/h2&gt;
    Solltest du jetzt denken &lt;b&gt;&quot; .... HÄ ???? .... &quot;&lt;/b&gt;, so kann ich dich beruhigen.&lt;br&gt;
    Nimm einfach folgenden Code und ersetzte &lt;code&gt;Krolock&lt;/code&gt; durch deinen Nickname.
    &lt;br&gt;
    Drücke dann auf F9 und schon siehst du den GCCode der Caches bei denen du doppelt geloggt hast.
    &lt;br&gt;
    &lt;code&gt;select * from (SELECT count(*) c, lParent FROM Logs where  lType = &#39;Found it&#39; and lBy = &#39;Krolock&#39; group by lParent) where c &gt; 1  order by c desc&lt;/code&gt;

&lt;/div&gt;</description><link>http://krolock.blogspot.com/2014/11/doppelte-logeintrage-mit-gsak-finden.html</link><author>noreply@blogger.com (Graf von Krolock)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://lh5.googleusercontent.com/-0K2q38ziafM/VFskd_2OIhI/AAAAAAAACdE/-2H7ioxkqXU/s72-c/Horror.PNG" height="72" width="72"/><thr:total>9</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-4462379230211614318.post-774583557227077540</guid><pubDate>Tue, 04 Nov 2014 17:17:00 +0000</pubDate><atom:updated>2014-11-04T20:43:25.629+01:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">CacheSchwafel</category><title>Wegführung zu lang, so was geht aber nun wirklich nicht</title><description>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
Ich wußte gar nicht, dass man bei einer Mystery-Serie die Dosen immer so anlegen muss, dass man eine schöne Wegführung hat. 
In den 6 Jahren in denen ich nun cache und auch eigene Caches veröffentliche, dachte ich immer es ging beim Cachen darum raus zu kommen, tolle Locations zu entdecken und gerade bei Mysteries lustige Suche zu entdecken bzw. was zu lernen.&lt;br/&gt;
So hab ich dann letztes Jahr auch gutgläubig 12 lustige Rätsel zum Thema Fußballerzitate veröffentlicht. Olli Kahn und Poldi lassen grüßen.
Nach gut anderthalb Jahren hab ich aufgehört zu zählen wie viele Logs ich von der Art bekommen habe, wie ich euch mal exemplarisch mal einen hier zeigen möchte. Er stammt von &lt;a href=&quot;http://coord.info/GC4EYJQ&quot; target=&quot;_blank&quot;&gt;Fußballerzitate #01&lt;/a&gt;
&lt;br /&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj84-zXZfXUbAVyRFeo7Pdx-RXTQhyphenhyphenNmBL258KQNRcntv75_QsQF1_bdkAF2BlXAAG0ABXb2Uxu7YAQXiGI2A21nTaGUzgDljlVhu3BVV0BMSFCZGfORwouA9DMfdOFDXjkypVd0uKsEBk/w821-h143-no/Wegf%C3%BChrung+zu+lang.PNG&quot; imageanchor=&quot;1&quot; &gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj84-zXZfXUbAVyRFeo7Pdx-RXTQhyphenhyphenNmBL258KQNRcntv75_QsQF1_bdkAF2BlXAAG0ABXb2Uxu7YAQXiGI2A21nTaGUzgDljlVhu3BVV0BMSFCZGfORwouA9DMfdOFDXjkypVd0uKsEBk/w821-h143-no/Wegf%C3%BChrung+zu+lang.PNG&quot; /&gt;&lt;/a&gt;
&lt;br/&gt;
Ja hätte ich das gewußt. Da wäre mir natürlich Naturverträglichkeit und Sinnhaftigkeit von Locations egal gewesen und bei der Abstandregel zu bestehenden Caches hätte ich ein wenig gefuscht.&lt;br&gt; Aber wenigstens hätte ich dann einen Rundweg gebaut, bei dem alle 161 Meter eine Dose liegt, die von weitem sichtbar ist und auch ohne Schlamm erreichbar wäre.
&lt;br&gt;
Ich glaube, um sicher zu gehen, werde ich bei der nächsten Runde einfach vorher alle Interessenten fragen, ob sie mir der geplanten Tour zufrieden sind. Kann ja nicht sein, dass Leute extra aus Hessen anreisen und dann am Ende des Tages 500 Meter zu viel gelaufen sind. Am Besten ich hänge alles an Straßenschilder, dann kann man auch direkt im Auto bleiben.
&lt;br&gt;Oder Plan B: Ich leg einfach keine Dosen mehr. Dann muss auch niemand zu viel laufen oder sich ärgern, dass er keinen Rundweg hat.
&lt;img src=&quot;http://scienceblogs.de/astrodicticum-simplex/wp-content/blogs.dir/28/files/2012/06/i-ba99b6a0b5c947af346f53023452af82-smiley.jpg&quot;&gt;

&lt;/div&gt;</description><link>http://krolock.blogspot.com/2014/11/wegfuhrung-zu-lang-so-was-geht-aber-nun.html</link><author>noreply@blogger.com (Graf von Krolock)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj84-zXZfXUbAVyRFeo7Pdx-RXTQhyphenhyphenNmBL258KQNRcntv75_QsQF1_bdkAF2BlXAAG0ABXb2Uxu7YAQXiGI2A21nTaGUzgDljlVhu3BVV0BMSFCZGfORwouA9DMfdOFDXjkypVd0uKsEBk/s72-w821-h143-c-no/Wegf%C3%BChrung+zu+lang.PNG" height="72" width="72"/><thr:total>1</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-4462379230211614318.post-5807421283594942046</guid><pubDate>Mon, 14 Jul 2014 18:13:00 +0000</pubDate><atom:updated>2014-07-14T20:13:38.104+02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">CacheSchwafel</category><title>Fußball zum mitdenken</title><description>&lt;p dir=&quot;ltr&quot;&gt;http://www.der-postillon.com/2014/07/bitter-wm-aus-fur-deutschland-nach-nur.html?m=1&lt;/p&gt;
&lt;p dir=&quot;ltr&quot;&gt;Am besten sind die Schimpf Kommentare der &amp;#8220;Erleuchteten&amp;#8220;&lt;/p&gt;
</description><link>http://krolock.blogspot.com/2014/07/fuball-zum-mitdenken.html</link><author>noreply@blogger.com (Graf von Krolock)</author><thr:total>1</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-4462379230211614318.post-3650344191148840812</guid><pubDate>Sat, 21 Jun 2014 12:02:00 +0000</pubDate><atom:updated>2014-06-21T14:02:19.683+02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">CacheSchwafel</category><title>Herumirren im Frankfurter Parkhaus</title><description>&lt;p dir=ltr&gt;Wer schon mal auf nem MEGA Event war kennt bestimmt das Bild von herumirrenden Cachern die Autos fotografieren, oder besser gesagt die TBs auf den Autos.&lt;br&gt;
Hier in Frankfurt ist es noch ne Spur bizarrer, da das Cacher im Parkhaus stattfindet.&lt;br&gt;
Man hat erst den Eindruck Leute habe sich verlaufen und suchen den Ausgang. Oder die w&amp;#252;rden f&amp;#252;r den R&amp;#252;ckweg Fotomarken setzen. Ethisch gesehen ein gro&amp;#223;er Fortschritt gegen&amp;#252;ber der Lebensmittelverschwendung wie H&amp;#228;nsel und Gretel es vollzogen.&lt;br&gt;
Aber es ist die falsche F&amp;#228;hrte. &lt;br&gt;
Nein es geht um Statistik. Und die Leute sind alles andere als verwirrt. Sogar sehr nett wenn man ins Gespr&amp;#228;ch kommt. So zwischen 2 Autos, &amp;#228;h TBs.&lt;br&gt;
Eine Steigerung findet man am Treppenhaus, hier ist ne Liste aufgehangen, damit man sich nicht die M&amp;#252;he machen musst zu laufen.&lt;br&gt;
Noch bizarr hab ich es in der Schweiz gesehen. Hier konnte man beim MEGA Schwitzerland direkt &amp;#252;ber nen FTP Server die Liste herunterladen. Nat&amp;#252;rlich im passenden Format f&amp;#252;r den TB-Logger.&lt;br&gt;
In diesem Sinne, frohes sammeln.&lt;/p&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt; &lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjkJXIpO8hKT1udg9NMhvCumoV2wus50sApcZTEqsDUam_oLmAjq7OkzKI8CtK_LRdCPCgHE3wWcqtgge8OXvrhoukajc7DLViaR9jtZB4fBaRPJwb3rfvEii3zcckEMYiHRD_v8CZUW7Q/s1600/1403351175603.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt; &lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjkJXIpO8hKT1udg9NMhvCumoV2wus50sApcZTEqsDUam_oLmAjq7OkzKI8CtK_LRdCPCgHE3wWcqtgge8OXvrhoukajc7DLViaR9jtZB4fBaRPJwb3rfvEii3zcckEMYiHRD_v8CZUW7Q/s640/1403351175603.jpg&quot;&gt; &lt;/a&gt; &lt;/div&gt;</description><link>http://krolock.blogspot.com/2014/06/herumirren-im-frankfurter-parkhaus.html</link><author>noreply@blogger.com (Graf von Krolock)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjkJXIpO8hKT1udg9NMhvCumoV2wus50sApcZTEqsDUam_oLmAjq7OkzKI8CtK_LRdCPCgHE3wWcqtgge8OXvrhoukajc7DLViaR9jtZB4fBaRPJwb3rfvEii3zcckEMYiHRD_v8CZUW7Q/s72-c/1403351175603.jpg" height="72" width="72"/><thr:total>1</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-4462379230211614318.post-8439084203646331602</guid><pubDate>Fri, 20 Jun 2014 04:59:00 +0000</pubDate><atom:updated>2014-06-20T06:59:52.764+02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">CacheSchwafel</category><title>In Frankfurt kracht es</title><description>&lt;div style=&quot;width: 775px&quot;&gt;

    &lt;!-- BILD UND TEXT  --&gt;
    &lt;div class=&quot;clear&quot;&gt;&lt;/div&gt;

    &lt;div class=&quot;nonefloat label&quot; style=&quot;width: 775px;&quot;&gt;
        &lt;a href=&quot;http://special.gcrheinmain.de/verein_header-de.jpg&quot;&gt;
            &lt;img border=&quot;0&quot; alt=&quot;&quot;
                 src=&quot;http://special.gcrheinmain.de/verein_header-de.jpg&quot; width=&quot;775px&quot;/&gt;
        &lt;/a&gt;&lt;br/&gt;

    &lt;/div&gt;


    &quot;In Frankfurt kracht es&quot; war die Meldung, die mich vorgestern in unserer Cache-Talk-WhatsApp-Gruppe aufschreckte.
    &lt;br&gt;Was war passiert? Nachdem ich schon oft gehört habe in Frankfurt würde kommerziell abgezockt hat das Announcement bzgl des Catering Zwangs das Fass zum überlaufen gebracht. &lt;br&gt;
    &quot;Hilfe ich will mein Geld zurück&quot;, &quot;Ich schalte meinen Anwalt ein&quot;, &quot;Da würde ich nicht mehr hinfahren&quot;, NeedsArchive-Logs waren einige der heftigen Reaktionen.
    &lt;br&gt;In der Tat ist es schon merkwürdig, dass man neben dem --- bei MEGA-Events zum Usus gewordenen Eintritt --- an recht vielen Stellen erneut zur Kasse gebeten wird. Und dann kam halt noch die Meldung, dass man keine eigenen Speisen mitbringen darf und stattdessen dem Catering-Service ausgeliefert ist.
    &lt;br&gt;Ich habe nun so einige Megas miterlebt und auch schon mal über die Preispolitik geschimpft (siehe &lt;a href=&quot;http://krolock.blogspot.de/2012/06/zeltplatz-abzocke-bei-den-geogames.html&quot; target=&quot;_blank&quot;&gt;Zeltplatz-Abzocke bei den Geogames&lt;/a&gt;), ich kann mir aber auch gut vorstellen, dass sowohl in Leipzig als auch in Frankfurt das Orga-Team keinen einzigen Cent an der Geschichte verdient.
    Im Gegenteil: Ich denke eher die legen nicht nur Zeit, sondern auch Geld drauf.
    &lt;br&gt;
    &lt;br&gt;Ich sehe eher eine andere problematische Entwicklung:&lt;br&gt;
    Dadurch dass alles immer besser größer, Mega, GIGA (keine Schreibfehler, sondern Unterstützung der Klimax :-) ) sein muss, wächst den Organisatoren oft die Arbeit übern Kopf hinaus.  &lt;br&gt;
    Und da werden dann Aufgaben wie Bewirtung outgesourced. Und ne Catering Firma arbeitet natürlich auf Profit. Mir ist das schon in Leipzig aufgefallen.
    &lt;br&gt; Oder die Location hat zu viele Einschränkungen, wie jetzt wohl in Frankfurt.&lt;br&gt;
    Vielleicht sollte man bei MEGA Events wieder etwas zurück fahren oder Locations wählen wo man weniger Vorgaben hat.
    &lt;br&gt;&lt;br&gt; Mega Switzerland war da nen gutes Beispiel. Abgesehen davon dass die Schweiz generell sehr teuer ist, fand ich es extrem fair und in den Details gut vorbereitet. Aber die haben auch mit vielen vielen Organisatoren zwei Jahre lang vorbereitet.
    &lt;br&gt;&lt;br&gt;Dass man so seine 15 € Unkostenbeitrag leistet, dass sehe ich durchaus ein. Dafür weiß ich als ehrenamtlicher Helfer in örtlichen Vereine gut genug, was für Kosten entstehen, die keiner sieht. GEMA, Gestattungen, Technik, Auflagen hier und dort.
    &lt;br&gt;Aber muss es immer größer werden, muss es ein Fußballstation sein. Wäre nicht ein Mega außerhalb der Stadt auf freier Fläche mit angrenzendem improvisiertem Camping à la &quot;Rock am Ring&quot; nicht auch ausreichend.
    &lt;br&gt;Also liebe zukünftige Mega-Event-Orga-Teams, verzettelt euch nicht in Superlativen und &lt;b&gt;liebe Eventbesucher&lt;/b&gt;, muss ich beim Campen immer nen 5-Sterne-Platz mit eigener Dusche pro Camper haben?
    &lt;br&gt;Ich persönlich finde an Events am wichtigsten mit vielen Cachern ins Gespräch zu kommen. Und da sind provisorische Bierbank-Farmen oft besser als die beste Fußballarena.

    &lt;br&gt;&lt;br&gt;In Frankfurt konnte die Sachlage übrigens ein wenig entschärft werden. Die Preview-Preisliste für Verpflegung liest sich ziemlich fair und kontrolliert werden die Taschen beim Eingang auch nicht. In diesem Sinne, auf ein schönes entspanntes BigÄppel.


&lt;/div&gt;</description><link>http://krolock.blogspot.com/2014/06/in-frankfurt-kracht-es.html</link><author>noreply@blogger.com (Graf von Krolock)</author><thr:total>1</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-4462379230211614318.post-4017006356936747496</guid><pubDate>Tue, 10 Jun 2014 17:48:00 +0000</pubDate><atom:updated>2014-06-10T19:48:56.112+02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Wherigo für Experten</category><title>Finalkoors und Hint</title><description>&lt;div style=&quot;width: 775px&quot;&gt;
    &lt;span style=&quot;text-decoration: underline;&quot;&gt;Voraussetzung: &lt;a
            href=&quot;http://krolock.blogspot.de/2014/06/globaler-code-teil-ii.html&quot; target=&quot;_blank&quot;&gt;Globaler Code - Teil
        II&lt;/a&gt;&lt;/span&gt; &lt;br&gt;

    &lt;!-- BILD UND TEXT  --&gt;
    &lt;div class=&quot;clear&quot;&gt;&lt;/div&gt;

    &lt;div class=&quot;right label&quot; style=&quot;width: 400px;&quot;&gt;
        &lt;a href=&quot;https://lh3.googleusercontent.com/-aaNdn3mQmIA/U5FQNQDaKII/AAAAAAAACHM/Lv9NHa6nk8E/w339-h547-no/WinGame.PNG&quot;&gt;
            &lt;img border=&quot;0&quot; alt=&quot;&quot;
                 src=&quot;https://lh3.googleusercontent.com/-aaNdn3mQmIA/U5FQNQDaKII/AAAAAAAACHM/Lv9NHa6nk8E/w339-h547-no/WinGame.PNG&quot;/&gt;
        &lt;/a&gt;&lt;br/&gt;
        Abbildung 1: Glückwunsch du hast gewonnen und bekommst die Koors auch angezeigt
    &lt;/div&gt;

    In diesem Tutorial geht es darum, dem Spieler das Finden des Finals zu erleichtern. Es soll ja
    vorkommen, dass zwischen der letzten Aufgabe im klasischen &quot;Multi-WIG&quot; und dem Final mehr als 100 Meter und
    eventuell auch noch 4 x auf dem Wanderweg abbiegen liegen.
    &lt;br&gt;Auch bei einem dynamischen WIG wo die Reihenfolge der Aufgabe flexible ist, kann es recht schnell vorkommen,
    dass der Pfeil der &quot;Final&quot;-Zone nicht ausreicht um dorthin zu navigieren.
    Das zweite Problem stellt sich wenn dein WIG an mehreren Ort mit verschiedenen GC-Listings läuft und jede Dose nen
    anderen Hint hat.
    &lt;br&gt;Bei diesen Problemen haben sich folgende Schritte bewährt:
    &lt;br&gt;1) Gebt die Koors mit aus, damit der Spieler sie abschreiben kann ...


    &lt;!-- BILD UND TEXT  --&gt;
    &lt;div class=&quot;clear&quot;&gt;&lt;/div&gt;

    &lt;div class=&quot;left label&quot; style=&quot;width: 400px;&quot;&gt;
        &lt;a href=&quot;https://lh4.googleusercontent.com/-5uhZh5Axlhc/U5FQNUqXZdI/AAAAAAAACHE/SW0BY_Dklh0/w248-h232-no/ZoneFinal.PNG&quot;&gt;
            &lt;img border=&quot;0&quot; alt=&quot;&quot;
                 src=&quot;https://lh4.googleusercontent.com/-5uhZh5Axlhc/U5FQNUqXZdI/AAAAAAAACHE/SW0BY_Dklh0/w248-h232-no/ZoneFinal.PNG&quot;/&gt;
        &lt;/a&gt;&lt;br/&gt;
        Abbildung 2: An der Zone Final kann man Koors und Hint jederzeit ablesen
    &lt;/div&gt;
    ... und 2) schreibt die Koors nochmal als Beschreibung der Zone Final rein. Für all die Spieler die es verpeilt
    haben die Koors beim ersten Mal abzuschreiben weil die Finger wieder schneller als die Augen waren.
    &lt;br&gt;Damit der Spoiler fürs Final genau zum richtigen Zeitpunkt bekannt gegeben wird könnt ihr ihn ebenfalls in die
    Beschreibung der Zone platzieren.

    &lt;div class=&quot;clear&quot;&gt;&lt;/div&gt;
    All dies kann man natürlich klassisch mit Urwigo machen. Es spricht auch nichts dagegen....
    &lt;br&gt; ... es sei denn die Finallocation ändert sich (eine der beiden Stelle wo die Koors angepasst werden müssen
    vergesst
    ihr garantiert) oder die Geschichte mit verschiedenen Dosen / Hints kommt ins Spiel.
    &lt;br&gt; &lt;b&gt;Wie können wir es also dynamisch mit lua lösen? &lt;/b&gt;

    &lt;div class=&quot;clear&quot;&gt;&lt;/div&gt;
    &lt;br&gt;
    &lt;!-- BILD UND TEXT  --&gt;

    &lt;div class=&quot;nonefloat label&quot; style=&quot;width: 880px;&quot;&gt;
        &lt;a href=&quot;https://lh4.googleusercontent.com/-0eZGG65cpHo/U5RjX9t1b6I/AAAAAAAACJw/JBtNsGXc2DM/w881-h342-no/Code.PNG&quot;&gt;
            &lt;img border=&quot;0&quot; alt=&quot;&quot;
                 src=&quot;https://lh4.googleusercontent.com/-0eZGG65cpHo/U5RjX9t1b6I/AAAAAAAACJw/JBtNsGXc2DM/w881-h342-no/Code.PNG&quot;/&gt;
        &lt;/a&gt;&lt;br/&gt;
        Abbildung 3: dreigeteilter Code für Initialisierung, Setzen der Werte nach Wahl der Location und Gewinnmeldung
    &lt;/div&gt;

      &lt;h2&gt;Vorbereitung&lt;/h2&gt;
    &lt;br&gt;Als erstes definiert ihr ein Array von &lt;code&gt;locations&lt;/code&gt; und anschließend für jede reale Dose einen
    Eintrag.
    &lt;br&gt; &lt;code&gt;locations[1]&lt;/code&gt; für die Dose in Hamburg, &lt;code&gt;locations[2]&lt;/code&gt; für die in Berlin, &lt;code&gt;locations[3]&lt;/code&gt;
    für München usw.
    &lt;br&gt; Was kommt in einen location-Eintrag?
    Bei mir sind es zwei Informationen:&lt;br&gt;
    &lt;ul&gt;
        &lt;li&gt;der Wegpunkt mit dem die Final-Zone versehen werden soll&lt;/li&gt;
        &lt;li&gt;Eine Beschreibung des Finals bzw. der Hint&lt;/li&gt;
    &lt;/ul&gt;

    &lt;h2&gt;Spielstart&lt;/h2&gt;
     Das Spiel wird gestart, &lt;code&gt;startGame&lt;/code&gt; (Zeile 7 ff) ausgeführt und eine der möglichen Locations
    ausgewählt. Dies kann per Multiple-Choice passieren oder voll automatisch, indem ihr die Location auswählt die am
    nächsten liegt.
    &lt;br&gt;Da dies in &lt;a href=&quot;http://krolock.blogspot.de/2013/04/dein-wherigo-in-hamburg-munchen-koln.html&quot;
                      target=&quot;_blank&quot;&gt;Dein WheriGo in Hamburg, München, Köln, Berlin ....&lt;/a&gt; behandelt wird, hab ich
    hier einfach die &quot;1&quot; gewählt.
    &lt;br&gt;Nun gilt es die Werte zu setzen. Dabei werden der Finalzone ihre benötigten Wegpunkte gegeben, nämlich dreimal
    &lt;code&gt;loc.FinalPoint&lt;/code&gt;
    &lt;br&gt;Für die Ausgabe der Koors in einem lesbaren Format nutze ich die Helfermethode
    &lt;code&gt;buildReadableCoorString&lt;/code&gt; (siehe &lt;a href=&quot;http://krolock.blogspot.de/2014/06/globaler-code-teil-ii.html&quot;
                                                   target=&quot;_blank&quot;&gt;Globaler Code - Teil II&lt;/a&gt; )
    &lt;br&gt;Danach wird die Beschreibung noch generiert (&lt;code&gt;#1#&lt;/code&gt; wird mit &lt;code&gt;N 50° 39.910, E 7° 28.092&lt;/code&gt;
    ersetzt und an die Zone angeheftet.
    &lt;br&gt;Damit sind wir mit der Vorbereitung zu Spielstart fertig. Warum machen wir das nicht erst wenn das Spiel
    gewonnen ist und die Gewinnmeldung angezeigt bzw. der Final freigeschaltet wird?
    &lt;br&gt;Auch das wäre möglich, allerdings müsste man sich dann merken, welche &lt;code&gt;location&lt;/code&gt; ausgewählt wurde. So
    können wir sie als &lt;code&gt;local&lt;/code&gt; definieren und damit den Speicher entlasten. Es sind zwar nur geringfügige
    Performanceentlastungen aber wir wollen ja auch, dass die Geschichte auf den Garmingeräten läuft.

   &lt;h2&gt;Spielende&lt;/h2&gt;
    Es sind alle Schiffe versenkt, alle Minen entdeckt oder alle Station gelöst und es geht nun zum Final. Sprich das
    Hauptspiel ist gewonnen und es folgt die Belohnung.
    &lt;br&gt;Das ganze hab ich in &lt;code&gt;endGame()&lt;/code&gt; gekapselt. &lt;code&gt;outWithMedia&lt;/code&gt; kommt wieder aus der &lt;code&gt;global.lua&lt;/code&gt;
    und &lt;code&gt;PFinal&lt;/code&gt; ist der Identifer des Schatzkistenbildes.
    &lt;br&gt;In der Erfolgsmeldung hab ich jetzt die Koors nochmals eingebaut. Da die Finalzone bereits fertig ist, muss sie
    nur noch aktiviert und sichbar gemacht werden.
    &lt;br&gt;(&lt;b&gt;Achtung !&lt;/b&gt; Damit die neue Description auf allen Playern übernommen wird muss sie an der Zone aktualisiert
    / gesetzt werden &lt;u&gt;bevor&lt;/u&gt; Active und Visible aktiviert werden.
    &lt;br&gt;&lt;br&gt;
    Das war&#39;s. Nun hat der Naturfreund beim Wherigospielen die Möglichkeit mit einem zweiten Gerät oder einer
    Unterbrechung des Wherigos auf der Karte nachzuschauen welchen Feldweg er am Besten nimmt um zur
    Dose zu gelangen.
&lt;/div&gt;</description><link>http://krolock.blogspot.com/2014/06/finalkoors-und-hint.html</link><author>noreply@blogger.com (Graf von Krolock)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://lh3.googleusercontent.com/-aaNdn3mQmIA/U5FQNQDaKII/AAAAAAAACHM/Lv9NHa6nk8E/s72-w339-h547-c-no/WinGame.PNG" height="72" width="72"/><thr:total>1</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-4462379230211614318.post-3333804317883094281</guid><pubDate>Sun, 08 Jun 2014 12:34:00 +0000</pubDate><atom:updated>2014-06-08T14:35:54.485+02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Wherigo für Experten</category><title>Globaler Code - Teil II</title><description>
&lt;div style=&quot;width: 775px&quot;&gt;
   &lt;span style=&quot;text-decoration: underline;&quot;&gt;Voraussetzung: &lt;a
           href=&quot;http://krolock.blogspot.de/2014/06/globallua-helperfile-fur-oft.html&quot;
           target=&quot;_blank&quot;&gt;&quot;Globaler Code - Teil I“&lt;/a&gt;&lt;/span&gt; &lt;br&gt;
    Nachdem ich den ersten Teil des globalen Code hier im Blog vorgestellt habe, wollte ich mal eben schnell den
    nächsten Beitrag schreiben wo es um Convenience-Angebote für den Spieler geht. U.a sollen die Finalkoordinaten
    lesbar ausgegeben werden.
    &lt;br&gt;
    Es dürfte so gut wie jeder WIG-Owner sich schon desöftern über das für uns ungewohnte Dezimalgrad-Format (z.B &lt;code&gt;50.6651666666667N
    7.4682E&lt;/code&gt;) bei der Koordinatenverarbeitung in Urwigo geärgert haben.
    &lt;br&gt;Als Geocacher ist man ja eher das Grad, Dezimalminuten-Format (&lt;code&gt;N 50° 39.910, E 7° 28.092&lt;/code&gt;) gewöhnt
    sein.
    &lt;br&gt;Und wenn man dann noch Koordinaten in lua als &lt;code&gt;Waypoint&lt;/code&gt; direkt definiert (Wherigo.ZonePoint(&lt;code&gt;50.6651666666667,
    7.4682, 0)&lt;/code&gt;) ist die manuelle Hin- und Herrechnerei ziemlich aufwändig.
    In manchen Fällen ist es empfehlenswert die Koordinaten lesbar auf dem Display auszugeben, z.B. wenn der Final etwas
    kompliziert zu erreichen ist. Damit man neben dem Wherigo-ZonePoint keine extra String-Version der Koordinaten im
    Dezimalminuten-Format im Code zu pflegen hat, empfiehlt es sich das ganze automatisch umrechnen zu lassen. Kommt
    vorallem gut, wenn sich die Location ändert, oder ne neue Location hinzukommt.
    &lt;br&gt;

    &lt;!-- BILD UND TEXT  --&gt;
    &lt;div class=&quot;clear&quot;&gt;&lt;/div&gt;

    &lt;div class=&quot;nonefloat label&quot; style=&quot;width: 575px;&quot;&gt;
        &lt;a href=&quot;https://lh3.googleusercontent.com/-AiRiCDgVYyw/U5M2R5E4m9I/AAAAAAAACI8/E77PdrKfzp4/w572-h564-no/Global2.PNG&quot;&gt;
            &lt;img border=&quot;0&quot; alt=&quot;&quot;
                 src=&quot;https://lh3.googleusercontent.com/-AiRiCDgVYyw/U5M2R5E4m9I/AAAAAAAACI8/E77PdrKfzp4/w572-h564-no/Global2.PNG&quot;/&gt;
        &lt;/a&gt;&lt;br/&gt;
        Abbildung 1: Koordinaten- bzw. Debug-Pretty-Print
    &lt;/div&gt;
    Abb.1 zeigt uns mit &lt;code&gt;buildReadableCoorString&lt;/code&gt; eine Helfermethode die genau dies macht. Zunächst wird in
    Zeile 71 und 72 der Waypoint in den Breiten- und Längengrad aufgesplittet.
    &lt;br&gt;Beginnend mit der &lt;code&gt;latitude&lt;/code&gt; also dem Breitengrad werden mit &lt;code&gt;math.floor&lt;/code&gt; der
    Vorkommateil, also die Gradzahlen abgeschnitten und abgezogen vom ganzen der Nachkommateil gebildet. (Zeile 74.
    &lt;code&gt;lat - tmp&lt;/code&gt;).
    &lt;br&gt;Die Umrechnung des Nachkommateil der Dezimalgrad in Minuten und Dezimalminuten habe ich ausgeglieder da es
    später beim Längenanteil der Koordinaten wiederverwendet werden kann.
    &lt;br&gt;Dabei wird in Zeile 81 der Nachkommaanteil mit 60 multipliziert und auf drei Stellen hinterm Komma gerundet.
    &lt;code&gt;N 50° 39.9100023347&lt;/code&gt; sähe nicht so gelungen aus.
    Als Ergebnis würde &lt;code&gt;N 50° 39.91&lt;/code&gt; herauskommen was auch nicht zu 100% korrekt aussieht. Es fehlt die
    abschießende 0.
    &lt;br&gt;Dies geschieht in Zeile 82 wo mit &lt;code&gt;string.format(&quot;%.3f&quot;, val)&lt;/code&gt; auf 3 Stellen hinterm Komma (bzw. Punkt) mit
    Nullen aufgefüllt wird.
    &lt;br&gt;Bleibt noch die Runden-Funktion, die gibt es in lua nämlich nicht fertig. Jedenfalls nicht für Dezimalzahlen.
    Man kann eine Dezimalzahl auf den Ganzteil abrunden (2.88484 =&gt; 2) oder aufrunden (4.127 =&gt; 5). Um mathematisch
    Runden zu können bedient man sich eines Trickes, indem man mit &lt;code&gt;+ 0.5&lt;/code&gt; die Rundungsgrenze auf die ganze
    Zahl verschiebt und dann abrundet.
    &lt;br&gt;Bsp.: 2,6 + 0,5 ergäbe 3,1; abgerundet mit math.floor ergibt 3. Gegenbeispiel 2,3 + 0,5 ergibt 2,8; abgerundet auf
    den Ganzzahlanteil ergibt 2.
    &lt;br&gt;&lt;code&gt;mult = 10 ^ (idp or 0)&lt;/code&gt; ergibt 1000, da idp mit 3 (Nachkommastellen) übergeben wird. In der Schule
    haben ja gelernt: Multiplikation mit 10 hoch x heißt das Komma um x Stellen nach rechts verschieben.
    Aus 0,9100023347 wird dann 910,0023347; das ganze addiert um 0,5 =&gt; 910,5023347; auf Ganzzahlanteil abgerundet =&gt;
    910; Zum Schluss wird das Komma wieder um drei Stellen nach links verschoben, d.h. Division durch 10 hoch 3 = 1000
    - ergibt 0,91

    &lt;div class=&quot;clear&quot;&gt;&lt;/div&gt;
    &lt;br&gt;

    Wem jetzt der Schädel wegen zu viel Mathe qualt, der sei beruhigt, das war&#39;s mit Mathe, nun kommt nur noch eine
    Abkürzung für&#39;s Debug-Logging.
    &lt;br&gt;Wie ich bereits in &lt;a href=&quot;http://krolock.blogspot.de/2013/03/fehlersuche-ein-wherigo-projekt-debuggen.html&quot;&gt;Einen
    Wherigo debuggen&lt;/a&gt; beschrieben habe, ist es oft ziemlich hilfreich mit &lt;code&gt;print&lt;/code&gt; den aktuellen Stand von
    Variablen auf die Simulatorkonsole zu schreiben.
    &lt;br&gt;Da der Informatiker faul ist, ergibt sich die &quot;Notwendigkeit&quot; das mit &lt;code&gt;p&lt;/code&gt; abzukürzen.
    &lt;br&gt;&lt;code&gt;pt&lt;/code&gt; hingegen bringt uns jetzt noch echten Mehrwert, indem vor die Logzeile die aktuelle Uhrzeit
    geschrieben wird. So kann man leichter zusammenhängende Aktionen erkennen und sich besser durch die
    Von-Oben-Nach-Unten Syntax des Logfiles wühlen. Es gibt übrigens keine Genauigkeit auf den Millisekundenbereich. Die
    Sekunde ist die kleinste Zeiteinheit, die ihr im Wherigo messen könnt.
    &lt;br&gt;Die Zeilen 95 - 99 beschäftigen sich mit dem Problem, dass man in lua keinen String mit nil oder nem Boolean
    verknüpfen kann. So ist gesichert, dass in Zeile 101 nur Zahlen und Strings konkateniert werden.
     &lt;/div&gt;</description><link>http://krolock.blogspot.com/2014/06/globaler-code-teil-ii.html</link><author>noreply@blogger.com (Graf von Krolock)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://lh3.googleusercontent.com/-AiRiCDgVYyw/U5M2R5E4m9I/AAAAAAAACI8/E77PdrKfzp4/s72-w572-h564-c-no/Global2.PNG" height="72" width="72"/><thr:total>2</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-4462379230211614318.post-6641203516048801784</guid><pubDate>Sat, 07 Jun 2014 05:09:00 +0000</pubDate><atom:updated>2014-06-07T07:09:18.548+02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Wherigo für Experten</category><title>global.lua - Helperfile für oft wiederkehrende Codestellen</title><description>&lt;div style=&quot;width: 775px&quot;&gt;
   &lt;span style=&quot;text-decoration: underline;&quot;&gt;Voraussetzung: &lt;a
           href=&quot;http://krolock.blogspot.de/2012/04/der-einstieg-in-lua.html&quot;
           target=&quot;_blank&quot;&gt;&quot;Der Einstieg in lua“&lt;/a&gt;&lt;/span&gt; &lt;br&gt;
    Es gibt so manche Aufgaben, die einem ziemlich oft bei der Programmierung begegnen, bzw. man denkt &quot;Diesen Teil
    müsste man doch abkürzen&quot; können.
    &lt;br&gt;So ist z.B die Ausgabe eines Textes mit oder ohne Bild eine recht komplexe Sache wenn man die
    &lt;code&gt;MessageBox&lt;/code&gt; direkt in lua schreiben möchte.
    &lt;br&gt;Vorallem wenn nach dem Klick auf &lt;code&gt;OK&lt;/code&gt; noch eine weitere Aktion folgen soll.
    &lt;br&gt;
    &lt;br&gt;Auch das Ersetzen von Variablen in Strings (z.B. bei der &lt;a
        href=&quot;http://krolock.blogspot.de/2012/12/i18n-einen-wherigo-in-verschiedenen.html&quot; target=&quot;_blank&quot;&gt;Übersetzung
    deines Cartridges in verschiedene Sprachen&lt;/a&gt;
    ist eine Sache, die man nicht bei jedem neuen Wherigo neu schreiben möchte.

    &lt;!-- BILD UND TEXT  --&gt;
    &lt;div class=&quot;clear&quot;&gt;&lt;/div&gt;

    &lt;div class=&quot;right label&quot; style=&quot;width: 400px;&quot;&gt;
        &lt;a href=&quot;https://lh5.googleusercontent.com/-qwbWrhYtsWk/U5FVVcHsmMI/AAAAAAAACIA/Vh4xapebGZo/w255-h113-no/include.PNG&quot;&gt;
            &lt;img border=&quot;0&quot; alt=&quot;&quot;
                 src=&quot;https://lh5.googleusercontent.com/-qwbWrhYtsWk/U5FVVcHsmMI/AAAAAAAACIA/Vh4xapebGZo/w255-h113-no/include.PNG&quot;/&gt;
        &lt;/a&gt;&lt;br/&gt;
        Abbildung 1: Einbinden des globales Codes
    &lt;/div&gt;


    Zu diesem Zwecke habe ich mir angewöhnt eine &lt;code&gt;global.lua&lt;/code&gt; Datei anzulegen, die ich im überordneten Ordner
    aller Wherigo liegen habe und die von jedem WIG-Projekt genutzt werden kann.
    &lt;br&gt;Ein Beispiel:&lt;br&gt;
    &lt;ul&gt;
        &lt;li&gt;Im Ordner &lt;code&gt;C:\Wherigos&lt;/code&gt; liegt die Datei &lt;code&gt;global.lua&lt;/code&gt;&lt;/li&gt;
        &lt;li&gt;Im Ordner &lt;code&gt;C:\Wherigo\MeinTestWherigo&lt;/code&gt; liegt dann die Projektdatei &lt;code&gt;test.urwigo&lt;/code&gt;&lt;/li&gt;
        &lt;li&gt;Im Ordner &lt;code&gt;C:\Wherigo\MeinZweiterWherigo&lt;/code&gt; liegt dann entsprechend &lt;code&gt;zweiterWIG.urwigo&lt;/code&gt;
        &lt;/li&gt;

    &lt;/ul&gt;

    Beide Cartridges, sowohl &lt;code&gt;test.urwigo&lt;/code&gt; als auch &lt;code&gt;zweiterWIG.urwigo&lt;/code&gt; verwenden
    &lt;code&gt;global.lua&lt;/code&gt; aus dem übergeordneten Ordner

    &lt;!-- BILD UND TEXT  --&gt;
    &lt;div class=&quot;clear&quot;&gt;&lt;/div&gt;
    &lt;br&gt;

    &lt;div class=&quot;left label&quot; style=&quot;width: 570px;&quot;&gt;
        &lt;a href=&quot;https://lh3.googleusercontent.com/-FBQJMBbXViA/U5FoO0v7WyI/AAAAAAAACIU/5goVA50OsEY/w567-h343-no/InlineModule.PNG&quot;&gt;
            &lt;img border=&quot;0&quot; alt=&quot;&quot;
                 src=&quot;https://lh3.googleusercontent.com/-FBQJMBbXViA/U5FoO0v7WyI/AAAAAAAACIU/5goVA50OsEY/w567-h343-no/InlineModule.PNG&quot;/&gt;
        &lt;/a&gt;&lt;br/&gt;
        Abbildung 2: Auszug aus _cartridge.lua (enthalten im gwz Archiv)
    &lt;/div&gt;

    Beim &quot;Bauen&quot; des cartrigdes bzw. beim Erstellen des &lt;code&gt;gwz&lt;/code&gt; Archives spielt der Pfad dann keine Rolle mehr,
    da der Inhalt der externen lua-Datei in die &lt;code&gt;_cartridge.lua&lt;/code&gt; hineinkopiert wird

    &lt;!-- BILD UND TEXT  --&gt;
    &lt;div class=&quot;clear&quot;&gt;&lt;/div&gt;

    &lt;div class=&quot;right label&quot; style=&quot;width: 400px;&quot;&gt;
        &lt;a href=&quot;https://lh4.googleusercontent.com/-Y7hU-Gh61W0/U5FQUOYAuXI/AAAAAAAACHk/iyKtoBrxA4U/w316-h311-no/GlobalBool.PNG&quot;&gt;
            &lt;img border=&quot;0&quot; alt=&quot;&quot;
                 src=&quot;https://lh4.googleusercontent.com/-Y7hU-Gh61W0/U5FQUOYAuXI/AAAAAAAACHk/iyKtoBrxA4U/w316-h311-no/GlobalBool.PNG&quot;/&gt;
        &lt;/a&gt;&lt;br/&gt;
        Abbildung 3: Boolean als Text oder Zahl
    &lt;/div&gt;

    Nun aber zu den Methoden an sich. Den Anfang machen die Boolean Werte. Dabei ist es mir für debug Zwecke oft
    hilfreich, wenn der Wert als Zahl oder String zurückgegeben wird, da eine Konkatenation in lua mit verschiedenen
    Datentypen Probleme bereitet.
    &lt;br&gt;&lt;code&gt;&quot;Raetsel 1 geloest: &quot; .. myBoolVar&lt;/code&gt; führt zu einem Laufzeitfehler da hier string und boolean nicht
    miteinander verknüpft werden kann.
    &lt;br/&gt;&lt;code&gt;&quot;Raetsel 1 geloest: &quot; .. bts(myBoolVar)&lt;/code&gt; hingegen funktioniert, da nun zwei Strings verknüpft
    werden. Die Ausgabe lautet dann &lt;code&gt;&quot;Raetsel 1 geloest: true&quot;&lt;/code&gt;
    &lt;br&gt; Dass getBoolAsString als bts (boolToString) abgekürzt ist bzw. dass es mal &lt;code&gt;value&lt;/code&gt; und mal &lt;code&gt;condition&lt;/code&gt;
    heißt ist historisch gewachsen. Kein guter Stil, wie ich zugeben muss, aber eine Methode umbenennen wird im
    nachhinein schwierig, da man auch alle Aufrufe der Methode in zahlreichen Wherigo-Projekten anpassen muss.&lt;br&gt;
    Also lieber gleich sinnvolle Namen verwenden.
    &lt;br&gt;
    &lt;br&gt;Die dritte Methode wählt zufällig &lt;code&gt;true&lt;/code&gt; bzw. &lt;code&gt;false&lt;/code&gt;, abhängig von einer
    Wahrscheinlichkeit.
    &lt;br&gt;Bsp: Bei meinem &lt;a href=&quot;http://coord.info/GC5325G&quot; target=&quot;_blank&quot;&gt;Fußball-Wherigo Heimspiel&lt;/a&gt; soll die
    gegnerische Mannschaft nur in einem von drei Fällen ein Tor schießen.
    &lt;br&gt;&lt;code&gt;getRandomBool(33)&lt;/code&gt; löst diese Aufgabe. &lt;code&gt;math.random(100)&lt;/code&gt; liefert eine Ganzzahl zwischen
    1 und 100, also 5, 41, 87 ...
    &lt;br&gt;Ist diese Zahl kleiner als unsere Vorgabe &lt;code&gt;33&lt;/code&gt; wird true zurück geliefert, ansonsten false.
    Korrekterweise müsste es kleiner gleich heißen, da nicht von 0 bis 99 sondern von 1 bis 100 gezählt wird.

    &lt;!-- BILD UND TEXT  --&gt;
    &lt;div class=&quot;clear&quot;&gt;&lt;/div&gt;
    &lt;br&gt;

    &lt;div class=&quot;nonefloat label&quot; style=&quot;width: 528px;&quot;&gt;
        &lt;a href=&quot;https://lh6.googleusercontent.com/-m_24WYLjUEA/U5FQUFfXjjI/AAAAAAAACHg/3QY6NKkXgK8/w628-h411-no/GlobalOut.PNG&quot;&gt;
            &lt;img border=&quot;0&quot; alt=&quot;&quot;
                 src=&quot;https://lh6.googleusercontent.com/-m_24WYLjUEA/U5FQUFfXjjI/AAAAAAAACHg/3QY6NKkXgK8/w628-h411-no/GlobalOut.PNG&quot;/&gt;
        &lt;/a&gt;&lt;br/&gt;
        Abbildung 4: Ausgaben vereinfachen
    &lt;/div&gt;

    Im zweiten Block geht es um die Ausgabe in Form von MessageBoxen. Da die ersten drei Methoden nur
    Convenience-Wrapper für die vierte sind, beginnen wir auch bei letzerer in Zeile 38.
    &lt;br&gt;Hier wird eine MessageBox aufgebaut, die mit dem übergebenen Text &lt;code&gt;m&lt;/code&gt; und einem optionalen Bildchen
    &lt;code&gt;med&lt;/code&gt; gefüllt wird.
    &lt;br&gt;Als Callback wird der Teil bezeichnet, der ausgeführt werden soll, wenn der Spieler auf &lt;code&gt;OK&lt;/code&gt; gedrückt
    hat.
    &lt;br&gt;Hier wird es jetzt spannend. Lua unterstützt nämlich hier das Konstrukt einer &quot;closure&quot;. D.h. es wird eine
    Methode &lt;code&gt;cf&lt;/code&gt; definiert (Zeile 35), die erst dann ausgeführt wird, wenn der MessageBox danach zumute ist.
    &lt;br&gt;Woraus besteht aber die Methode &lt;code&gt;cf&lt;/code&gt;? Zunächst hat sie einen Parameter &lt;code&gt;action&lt;/code&gt;. Ist
    dieser Parameter null, so geschieht ... rein gar nix. Ich konnte diesen Fall noch nie beobachten. Wahrscheinlich ein Sicherheitscheck, falls man die MessageBox nicht mit &quot;OK&quot;, sondern mit dem Back-Button des Smartphones verlässt.
    &lt;br&gt;Ruft hingegen die MessageBox die Methode &lt;code&gt;cf(anAction)&lt;/code&gt; mit einem Not-Null-Parameter auf, so wird die
    zweite innere Methode &lt;code&gt;fun&lt;/code&gt; (wieder eine closure) ausgeführt.
    &lt;br&gt;Was aber ist denn &lt;code&gt;fun&lt;/code&gt; ? &lt;code&gt;fun&lt;/code&gt; wird von außen definiert, z.B. in Zeile 29, wo der Befehl
    &quot;Zeige Mainscreen&quot; übergeben wird. Auch hier gilt, in Zeile 29 wird
    &lt;code&gt;Wherigo.ShowScreen(Wherigo.MAINSCREEN)&lt;/code&gt; nur definiert, aber noch nicht ausgeführt. Dies passiert erst,
    wenn der Spieler in der MessageBox (z.B. &quot;Gehe nun zum Final&quot;) auf &quot;OK&quot; drückt.
    &lt;br&gt;&lt;b&gt;Achtung: &lt;/b&gt; Vergesst nicht bei der Definition der Methode die Schlüsselwörter &lt;code&gt;function()&lt;/code&gt; und &lt;code&gt;end&lt;/code&gt;. Ansonsten habt ihr keine closure definiert, sondern es wird direkt der Mainscreen angezeigt!
    &lt;br&gt;Jetzt wird sich der gewiefte Leser/Entwickler denken &quot;Wozu brauche ich den &lt;code&gt;action&lt;/code&gt; Parameter?&quot;.
    Dieser dient theoretisch dazu weitere Informationen an die aufrufende Methode zu übergeben. Man könnte ne Zahl oder
    einen String reinschreiben. Trotz längerer Studie des von Urwigo kompilierten Codes konnte ich aber stets nur den
    &lt;code&gt;action ~= nil&lt;/code&gt; Vergleich finden.
    &lt;br&gt;Man kann allerdings einer MessageBox mehrere Buttons geben und damit einen Quasi-Input generieren. Über &lt;code&gt;action&lt;/code&gt; (enthält &quot;Button1&quot; bzw. &quot;Button2&quot;) kann man dann unterscheiden welcher Button gedrückt wurde.
    Ein sinnvolles Szenario wäre &quot;Du bist an der Zone Goldbergwerk angekommen. Die bereits abgebauten Goldklumpen wandern hiermit in dein Inventar&quot;, Button1 = &quot;OK&quot;, Button2 = &quot;Nachricht zukünftig nicht mehr anzeigen&quot;


    &lt;!-- BILD UND TEXT  --&gt;
    &lt;div class=&quot;clear&quot;&gt;&lt;/div&gt;
    &lt;div class=&quot;left label&quot; style=&quot;width: 480px;&quot;&gt;
        &lt;a href=&quot;https://lh5.googleusercontent.com/-3ZcpcQnsIS0/U5FQUPfzTfI/AAAAAAAACHY/TgIiAchbg7Y/w477-h412-no/GlobalMisc.PNG&quot;&gt;
            &lt;img border=&quot;0&quot; alt=&quot;&quot;
                 src=&quot;https://lh5.googleusercontent.com/-3ZcpcQnsIS0/U5FQUPfzTfI/AAAAAAAACHY/TgIiAchbg7Y/w477-h412-no/GlobalMisc.PNG&quot;/&gt;
        &lt;/a&gt;&lt;br/&gt;
        Abbildung 5: Debug-Ausgaben, Wegpunkt-Mittelung und String-Operationen
    &lt;/div&gt;

    Nun aber genug der komplexen closure-Theorie. Zum Abschluss etwas leichtere Kost.
    &lt;br&gt;&lt;code&gt;calcCenterZonePoint&lt;/code&gt; liefert euch die GPS-Koordinate, die genau zwischen &lt;code&gt;point1&lt;/code&gt; und &lt;code&gt;point2&lt;/code&gt; liegt. Ist ganz praktisch um die Hälfte der Laufstrecke oder den Mittelpunkt eines Fußballfeldes zu bestimmen.
    &lt;br&gt;&lt;code&gt;printTable&lt;/code&gt; gibt beim debuggen den Wert einer Tabelle aus. Da jedes &quot;Objekt&quot; in lua als Tabelle definiert ist, kann das schon mal ganz hilfreich sein.
    &lt;br&gt;Die Werte einer Zone (Name, Koors, ob aktiv oder nicht...) sind ebenfalls als Tabelle gespeichert und können über &lt;code&gt;getmetatable()&lt;/code&gt; abgerufen werden.
    Als Ergebnis seht ihr beim Debuggen alle Infos über eure Zone.
    &lt;br&gt;&lt;br&gt;
        Zum Schluss noch ein Beispiel für Substitution. Hier wird in einem String &quot;Gehe zur Zone #1# und warte&quot;, &quot;Schmiede&quot; der Wert &quot;Gehe zur Zone Schmiede und warte&quot; gebildet. Hilfreich bei Mehrsprachigkeit eures Wherigos.

&lt;/div&gt;</description><link>http://krolock.blogspot.com/2014/06/globallua-helperfile-fur-oft.html</link><author>noreply@blogger.com (Graf von Krolock)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://lh5.googleusercontent.com/-qwbWrhYtsWk/U5FVVcHsmMI/AAAAAAAACIA/Vh4xapebGZo/s72-w255-h113-c-no/include.PNG" height="72" width="72"/><thr:total>2</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-4462379230211614318.post-1922814383430413083</guid><pubDate>Fri, 09 May 2014 07:19:00 +0000</pubDate><atom:updated>2014-05-09T09:19:40.315+02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">CacheSchwafel</category><title>MEGA Switzerland, wir kommen</title><description>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;img src=&quot;http://img.geocaching.com/cache/large/b87463c0-20ce-4a15-a2a5-fb4fe08d32e1.png&quot;/&gt;&lt;br&gt;&lt;h2&gt;
MEGA Switzerland, wir kommen !!!&lt;br&gt;&lt;/h2&gt;
Nachdem es gestern abend noch Anflüge von Panik gab, da das seit November gebuchte Ticket nicht ausgedruckt und die Mail auf dem Rechner mit abgerauchtem Mainboard lag, kam heute morgen die frohe Botschaft: Ein Kopie der eMail mit allen Anmeldedaten und Bestellbestätigung.
&lt;br&gt;Da kann ich nur sagen, tolle Orga.
&lt;br&gt;So geht es in 40 Minuten los Richtung Eidgenossen. Und ein Cachopoly liegt nur wenige Kilometer entfernt.... &lt;freu/&gt;
&lt;br /&gt;&lt;/div&gt;</description><link>http://krolock.blogspot.com/2014/05/mega-switzerland-wir-kommen.html</link><author>noreply@blogger.com (Graf von Krolock)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-4462379230211614318.post-8457681091962243659</guid><pubDate>Sun, 20 Apr 2014 05:58:00 +0000</pubDate><atom:updated>2014-04-20T07:58:46.052+02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Wherigo für Experten</category><title>Sprachausgaben übersetzten ohne vararg Parameter</title><description>&lt;div style=&quot;width: 775px&quot;&gt;
   &lt;span style=&quot;text-decoration: underline;&quot;&gt;Voraussetzung: &lt;a
           href=&quot;http://krolock.blogspot.de/2012/12/i18n-einen-wherigo-in-verschiedenen.html&quot;
           target=&quot;_blank&quot;&gt;&quot;I18n - Einen Wherigo in verschiedenen Sprachen anbieten“&lt;/a&gt;&lt;/span&gt; &lt;br&gt;

    &lt;!-- BILD UND TEXT  --&gt;
    &lt;div class=&quot;clear&quot;&gt;&lt;/div&gt;
&lt;br&gt;
    &lt;div class=&quot;right label&quot; style=&quot;width: 400px;&quot;&gt;
        &lt;a href=&quot;https://lh3.googleusercontent.com/-nWxZZWnWQFA/U1NexCNIIFI/AAAAAAAACBg/CFK62ZDljJ8/w527-h633-no/NoVarArg.PNG&quot;&gt;
            &lt;img border=&quot;0&quot; alt=&quot;&quot;
                 src=&quot;https://lh3.googleusercontent.com/-nWxZZWnWQFA/U1NexCNIIFI/AAAAAAAACBg/CFK62ZDljJ8/w527-h633-no/NoVarArg.PNG&quot;/&gt;
        &lt;/a&gt;&lt;br/&gt;
        Abbildung 1: Die Übersetzungen mit mehreren Parametern ohne varargs
    &lt;/div&gt;

   Im vergangenen Tutorial bzgl. der Übersetzung habe ich den &lt;code&gt;vararg Parameter ...&lt;/code&gt; eingesetzt. &lt;br&gt; Es scheint aber so, dass manche WhereYouGo bzw. PiGo Player Version Probleme mit diesem Konstrukt haben.
    &lt;br&gt; &lt;br&gt; Um dem vorzubeugen möchte ich euch folgende Lsg vorstellen, die mir &lt;a href=&quot;http://www.geocaching.com/profile/?guid=b97972a7-74af-4ec5-a0b1-bed256ac4758&quot; target=&quot;_blank&quot;&gt;schnuefelis&lt;/a&gt; als funktionstüchtig beschrieben hat.
    &lt;br&gt;
    &lt;br&gt;
    Der Trick ist recht einfach. Anstatt mit &lt;code&gt;...&lt;/code&gt; eine unbestimmte Anzahl an Parameter zu definieren, baut ihr einfach mehrere Methoden, die einen, zwei, oder drei &quot;replacements&quot; akzeptieren.  &lt;br&gt;  &lt;br&gt; Um nicht unnötig Code zu duplizieren, rufen diese Methoden alle die 4-Parameter Version auf, in der dann geprüft wird ob replacement1, 2 oder 3 &lt;code&gt;nil&lt;/code&gt; sind und nur dann die Ersetzung starten.
    &lt;br&gt;
    &lt;br&gt;
    Als Softwarentwickler tut eine solche Lösung zwar schon ein bißchen weh, aber bei der Vielzahl der Player mit all ihren Schwächen muss die Dynamik zugunsten der Stabilität leiden.


    &lt;/div&gt;</description><link>http://krolock.blogspot.com/2014/04/sprachausgaben-ubersetzten-ohne-vararg.html</link><author>noreply@blogger.com (Graf von Krolock)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://lh3.googleusercontent.com/-nWxZZWnWQFA/U1NexCNIIFI/AAAAAAAACBg/CFK62ZDljJ8/s72-w527-h633-c-no/NoVarArg.PNG" height="72" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-4462379230211614318.post-3651807579119167506</guid><pubDate>Fri, 21 Mar 2014 06:32:00 +0000</pubDate><atom:updated>2014-03-21T07:35:36.920+01:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">CacheSchwafel</category><title>&quot;13 Monate ist auch genug&quot;</title><description>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
Heute mal nen ganz kurzer spontaner Beitrag:
&lt;br /&gt;
Inspiriert durch die erste Notification des Tages&lt;br /&gt;
&lt;quote&gt;&quot;[GEO] Notify: XXX archived YYY (Traditional Cache)&quot;&lt;/quote&gt;, der Owner archiviert seinen eigenen Cache:&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;span style=&quot;color: blue;&quot;&gt;&quot;Log Date: 3/20/2014
Der ist so oft weg, und 13 Monate ist auch genug. Mache wieder Platz für andere...&quot;
&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Fand ich sehr interessant und brachte mich zum Schmunzeln.&lt;br /&gt;
&quot;13 Monate ist auch genug&quot;.
&lt;br /&gt;
Es soll keine Ketzerei gegen den Log oder den Owner sein, nein es zeigte mir einfach wie sich unser Hobby entwickelt hat.
Schnell nen Tradi abgelegt, länger als nen Jahr muss er eh nicht halten. Da ich den Owner kenne, glaube ich zwar nicht, dass bei diesem Cache eine solche Überlegung ne Rolle gespielt hat, ich kenne aber genügend andere wo man bei der Publish Notification den Eindruck hat, dass die Dose bewußt so schnell und einfach gelegt hat, dass man gar nicht vor hat den Cache lange aufrecht zu halten.&lt;br /&gt;
&lt;br /&gt;
Ich hoffe ich konnte den Schmunzelfaktor am Morgen an euch weitertragen.
&lt;/div&gt;
</description><link>http://krolock.blogspot.com/2014/03/13-monate-ist-auch-genug.html</link><author>noreply@blogger.com (Graf von Krolock)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-4462379230211614318.post-5903683967457823741</guid><pubDate>Mon, 10 Mar 2014 20:30:00 +0000</pubDate><atom:updated>2014-03-10T21:31:03.084+01:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">CacheSchwafel</category><title>Hier gibt es nix zu sehen</title><description>Wirklich, hier gibt es nix zu sehen:&lt;br&gt;
&lt;a href=&quot;http://muah.info/&quot; target=&quot;_blank&quot;&gt;http://muah.info&lt;/a&gt;</description><link>http://krolock.blogspot.com/2014/03/hier-gibt-es-nix-zu-sehen.html</link><author>noreply@blogger.com (Graf von Krolock)</author><thr:total>1</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-4462379230211614318.post-6798496528054005557</guid><pubDate>Sun, 09 Mar 2014 06:29:00 +0000</pubDate><atom:updated>2014-03-09T07:29:59.695+01:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">CacheSchwafel</category><title>Grill &amp; Kick Wherigo Event</title><description>&lt;div style=&quot;width: 775px; font-weight: bold;&quot;&gt;
    Was haben Grillen und Kicken gemeinsam? Richtig, ab und zu muss man ganz schnell laufen. Man kann die beiden
    Freizeitbeschäftigungen aber anders verbinden:
    &lt;br&gt;    &lt;br&gt;
    &lt;div align=&quot;center&quot;&gt;
    &lt;img height=&quot;200&quot;
         src=&quot;http://imgsrv.seattlewolf.com/image/kkwf3/UserFiles/Image/wingnut/www_crazywebsite_com_Website-Clipart-Pictures-Videos_American-Patriotic_How_To_Start_A_Barbecue_Fire-Cartoon-1XLG_png_jpeg.png&quot;&gt;
    &lt;img height=&quot;200&quot; src=&quot;https://dl.dropboxusercontent.com/u/16857177/Ambersand.png&quot;&gt;
    &lt;img height=&quot;200&quot; src=&quot;https://dl.dropboxusercontent.com/u/16857177/anlauf.jpg&quot;&gt;
&lt;/div&gt;

&lt;div&gt;


    &lt;br&gt;
       &lt;div align=&quot;center&quot;  style=&quot;font-weight: bold; font-size: 25px;&quot;&gt;
        &lt;a href=&quot;http://coord.info/GC4ZTEV&quot; target=&quot;_blank&quot;&gt;Grill &amp; Kick GC4ZTEV am Sonntag, 27. April 2014&lt;/a&gt;
    &lt;/div&gt;

    &lt;br&gt;

    Laufe auf einem echten Rasenplatz um einen virtuellen Ball in ein echtes Tor zu schießen und spiele dabei gegen
    virtuelle Gegner wie z.B. die deutsche Nationalmannschaft

    &lt;br&gt;&lt;br&gt;Neugierig? Dann schau dir das Listing an, pack Grillfleisch und den Wherigo-Player ein
&lt;/div&gt;
&lt;/div&gt;</description><link>http://krolock.blogspot.com/2014/03/was-haben-grillen-und-kicken-gemeinsam.html</link><author>noreply@blogger.com (Graf von Krolock)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-4462379230211614318.post-6429532823045944908</guid><pubDate>Fri, 07 Feb 2014 14:17:00 +0000</pubDate><atom:updated>2014-03-10T21:29:07.510+01:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Wherigo für Experten</category><title>To offer a wherigo in several languages</title><description>&lt;div style=&quot;width: 775px&quot;&gt;
This is the english version of the article. It is also available in &lt;a href=&quot;http://krolock.blogspot.de/2012/12/i18n-einen-wherigo-in-verschiedenen.html&quot; target&quot;_blank&quot;&gt;german&lt;/a&gt;&lt;br&gt;&lt;br&gt;
   &lt;span style=&quot;text-decoration: underline;&quot;&gt;Good to know for this article: &lt;a
           href=&quot;http://krolock.blogspot.de/2012/04/der-einstieg-in-lua.html&quot;
           target=&quot;_blank&quot;&gt;&quot;Der Einstieg in lua&amp;#8220;&lt;/a&gt;&lt;/span&gt; &lt;br&gt;
  
    &lt;br&gt; In this tutorial you&#39;ll learn how to offer your wherigo cartridge in several languages.

    &lt;!-- BILD UND TEXT 1 --&gt;
    &lt;div class=&quot;clear&quot;&gt;&lt;/div&gt;
    &lt;div class=&quot;right&quot;&gt;
        &lt;div class=&quot;label&quot; style=&quot;width: 500px;&quot;&gt;
            &lt;a href=&quot;https://lh3.googleusercontent.com/-6zH36E8fQH4/UOP2_8q8pnI/AAAAAAAABcc/l6sn9sPGsTQ/s555/messages.PNG&quot;&gt;
                &lt;img border=&quot;0&quot; alt=&quot;&quot;
                     src=&quot;https://lh3.googleusercontent.com/-6zH36E8fQH4/UOP2_8q8pnI/AAAAAAAABcc/l6sn9sPGsTQ/s500/messages.PNG&quot;/&gt;
            &lt;/a&gt;&lt;br/&gt;
            Picture 1: Definition of the text outputs in three different languages
        &lt;/div&gt;

    &lt;/div&gt;    
    
    First we will define an array &lt;code&gt;messages&lt;/code&gt; where we can define the outputs in different languages&lt;br&gt;     
    Very important is to define the &lt;code&gt;language&lt;/code&gt; parameter to to ZVariables because we want to save the value when we save and restore the cartrigde.
    &lt;br&gt;
    For each language (german, english and fresh in our example) we define a subarry like in row 5-7. 
    After that we define the output strings.
    &lt;br&gt;                                    
    How it works I can show you at the example for the key &lt;code&gt;hello&lt;/code&gt;. Depending on the selected language we want to see &quot;Herzlich Willkommen&quot;, &quot;Welcome&quot; oder &quot;Bienvenue&quot; in our display.
    Maybe you have noticed that for the key &lt;code&gt;hi&lt;/code&gt; are no english value defined. For this case the program will use the &lt;code&gt;defaultLanguage&lt;/code&gt; (see row 4)
    So if your language is set to &lt;code&gt;en&lt;/code&gt; and no value for &lt;code&gt;message.en.hi&lt;/code&gt; is defined the default value &lt;code&gt;messages.de.hi&lt;/code&gt; =&gt; &quot;Hi&quot; (row 11) is used.
    &lt;br/&gt;The next part is very important:&lt;br/&gt;
    In row 13-18 you can see examples for using placeholders, e.g the name of the play inside the translated output string &lt;br&gt;
    At runtime the &lt;code&gt;#1#&lt;/code&gt; will be replace with the name, e.g. &#39;Krolock&#39;.
    You will have one of the following output:
    &lt;ul&gt;
        &lt;li&gt;de =&gt; Hallo Krolock, wie geht es dir?&lt;/li&gt;
        &lt;li&gt;en =&gt; Hi Krolock, how are you&lt;/li&gt;
        &lt;li&gt;fr =&gt; Salue Krolock, ca va?&lt;/li&gt;
    &lt;/ul&gt;
    Be careful with blanks! &lt;code&gt;# 1#&lt;/code&gt; will not work, &lt;code&gt;#1 #&lt;/code&gt; will not work and &lt;code&gt;Hi#1#How are you&lt;/code&gt; will transformed to &quot;HiKrolockHow are you&quot;.
       &lt;br/&gt;&lt;br/&gt;
    During the start of your cartrigde you can offer an multiple-choice-input for the user where he can select the langauge. After the input you can set the variable &lt;code&gt;language&lt;/code&gt; to the fitting value
        &lt;br/&gt;
        &lt;br/&gt;
    &lt;!-- BILD UND TEXT 2 --&gt;
    &lt;div class=&quot;clear&quot;&gt;&lt;/div&gt;
    &lt;div class=&quot;left&quot;&gt;
        &lt;div class=&quot;label&quot; style=&quot;width: 420px;&quot;&gt;
            &lt;a href=&quot;https://lh4.googleusercontent.com/-Oj9LA62kiDM/UORPTZ0WTPI/AAAAAAAABdo/f1wiP_IyAfQ/s410/getMessageSimple.PNG?gl=DE&quot;&gt;
                &lt;img border=&quot;0&quot; alt=&quot;&quot;
                     src=&quot;https://lh4.googleusercontent.com/-Oj9LA62kiDM/UORPTZ0WTPI/AAAAAAAABdo/f1wiP_IyAfQ/s410/getMessageSimple.PNG?gl=DE&quot;/&gt;
            &lt;/a&gt;&lt;br/&gt;
            Picture 2: Build the value fitting to the key and language
        &lt;/div&gt;

    &lt;/div&gt;                    
    But how to use the resource strings. As shown in picture 2, row 21 we use an array access for the language in first and the key in second level. Using &quot;de&quot; as language and &quot;hello&quot; as key will deliver &lt;code&gt;Herzlich Willkommen zum i18n Wherigo&lt;/code&gt;. 
    &lt;br&gt;  
    If no array value is available a new try with the default value is shown in row 23.
    So it is very import to define an entry for each key in the default value (de in our example)
       
    &lt;!-- BILD UND TEXT 3 --&gt;
    &lt;div class=&quot;clear&quot;&gt;&lt;/div&gt;
    &lt;br/&gt;
    &lt;div class=&quot;right&quot;&gt;
        &lt;div class=&quot;label&quot; style=&quot;width: 510px;&quot;&gt;
            &lt;a href=&quot;https://lh5.googleusercontent.com/-1i6mIHqbC2o/Ux4fORyBL-I/AAAAAAAACBE/_PIFev8GEgY/w564-h204-no/getMessageDynamic.PNG&quot;&gt;
                &lt;img border=&quot;0&quot; alt=&quot;&quot;
                     src=&quot;https://lh5.googleusercontent.com/-1i6mIHqbC2o/Ux4fORyBL-I/AAAAAAAACBE/_PIFev8GEgY/w564-h204-no/getMessageDynamic.PNG&quot;/&gt;
            &lt;/a&gt;&lt;br/&gt;
            Picture 3: Values for the placeholders
        &lt;/div&gt;
    &lt;/div&gt;          
    Now it is time to look to the parameter replacement. I is import to use a placeholder that will not be part of the &quot;regular&quot; strings. So I decided to use &lt;code&gt;#1#&lt;/code&gt;.
    &lt;br/&gt;As you can see in line 27 at picture 3 i use &lt;code&gt;string.gsub&lt;/code&gt; to replace &lt;code&gt;#1#&lt;/code&gt; with the first, &lt;code&gt;#2#&lt;/code&gt; with the second parameter and so on.   
    Picture 3 shows a updated version of &lt;code&gt;getMessage&lt;/code&gt; with replacing the placeholders&lt;br&gt;
    The &lt;code&gt;vararg&lt;/code&gt; argument &lt;code&gt;&quot;...&quot;&lt;/code&gt; is a good way to be flexible.&lt;br/&gt;
    The function &lt;code&gt;getMessage&lt;/code&gt; can be called with only the key, with one or multiple parameters like the following examples show :
           &lt;code&gt;
    &lt;br&gt;getMessage(&quot;hello&quot;)
    &lt;br&gt;getMessage(&quot;helloWithName&quot;,&quot;Krolock&quot;)
    &lt;br&gt;getMessage(&quot;openDoor&quot;,&quot;XYZ&quot;,&quot;A15N&quot;)
&lt;/code&gt;
    &lt;br&gt;
    With &lt;code&gt;#arg&lt;/code&gt; we can retrieve the number of the arguments stored in the array &lt;code&gt;arg&lt;/code&gt;. With &lt;code&gt;arg[1]&lt;/code&gt;, &lt;code&gt;arg[2]&lt;/code&gt; we can access to the first, the second parameter and so on
    &lt;!-- BILD UND TEXT 4 --&gt;
    &lt;div class=&quot;clear&quot;&gt;&lt;/div&gt;
    &lt;div class=&quot;left&quot;&gt;
        &lt;div class=&quot;label&quot; style=&quot;width: 285px;&quot;&gt;
            &lt;a href=&quot;https://lh5.googleusercontent.com/-4WBlWy3DqKE/UORPTc8_5oI/AAAAAAAABds/4G3MHFqe3PI/s405/Dialog.PNG?gl=DE&quot;&gt;
                &lt;img border=&quot;0&quot; alt=&quot;&quot;
                     src=&quot;https://lh5.googleusercontent.com/-4WBlWy3DqKE/UORPTc8_5oI/AAAAAAAABds/4G3MHFqe3PI/s405/Dialog.PNG?gl=DE&quot;/&gt;
            &lt;/a&gt;&lt;br/&gt;
            Picture 4: Example for calling the translation method
        &lt;/div&gt;
    &lt;/div&gt;      
    If you have more than one parameter you have to take care for the order. For the key &lt;code&gt;openDoor&lt;/code&gt; you have different orders in the german and english version.
    &lt;br&gt;Picture 4 shows us an example how to call the translation method in Urwigo. He have an example for no, one and two parameters.
    &lt;br&gt;    
       &lt;br/&gt;    Last but not least I will show you how to seperate your code and your translations. In the concept of resource bundles you will define a own file for each language and each file hast the same key, excect the language part of the key.
       &lt;br/&gt; You can use a file &lt;code&gt;messages_de.lua&lt;/code&gt; containing the german, &lt;code&gt;messages_en.lua&lt;/code&gt; for the english and &lt;code&gt;messages_fr.lua&lt;/code&gt; for the french values.
       &lt;br/&gt; All the three files can be bind with &lt;code&gt;require &quot;messages_de&quot;&lt;/code&gt; and so on.
        &lt;br/&gt;Development-Tool line &lt;a
        href=&quot;http://help.eclipse.org/indigo/index.jsp?topic=%2Forg.eclipse.wb.doc.user%2Fhtml%2Ffeatures%2Finternationalization.html&quot;
        target=&quot;_blank&quot;&gt;eclipse&lt;/a&gt; or &lt;a href=&quot;http://www.jetbrains.com/idea/features/i18n_support.html&quot;
                                          target=&quot;_blank&quot;&gt;Intellij IDEA&lt;/a&gt; have plugins to manage your resource bundles. &lt;br/&gt;
       &lt;br/&gt; To seperate the file is optional. It will also work if you write all the key-value entries in one file, but it is not a good practise.
&lt;/div&gt;</description><link>http://krolock.blogspot.com/2014/02/to-offer-wherigo-in-several-languages.html</link><author>noreply@blogger.com (Graf von Krolock)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://lh3.googleusercontent.com/-6zH36E8fQH4/UOP2_8q8pnI/AAAAAAAABcc/l6sn9sPGsTQ/s72-c/messages.PNG" height="72" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-4462379230211614318.post-7000747596211610648</guid><pubDate>Sun, 12 Jan 2014 19:10:00 +0000</pubDate><atom:updated>2014-01-13T11:37:11.798+01:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">CacheSchwafel</category><title>Haben wir Geocaching endgültig kaputt bekommen?</title><description>&lt;p dir=ltr&gt;Zum Abschluss des Wochenendes gab es heute wieder mal die Erkenntnis dass unser sch&amp;#246;nes Hobby kurz vor dem Exodus steht.&lt;br&gt;
Ok das ist jetzt &amp;#252;berzogen, aber nachdem 90 % meiner letzten Versuche nen Cache zu ver&amp;#246;ffentlichen abgelehnt wurden, werde ich es mir gut &amp;#252;berlegen mir nochmal die M&amp;#252;he zu machen, ne Dose vorzubereiten, auslegen und Arbeit und Zeit ins Listing zu stecken.&lt;br&gt;
Sicherlich kennen viele (potentielle) T5-Owner das Problem das Stoff kurzem das Einverst&amp;#228;ndnis sowie Kontaktdaten des F&amp;#246;rsters vorhanden sein muss um nen Klettercache zu ver&amp;#246;ffentlichen.&lt;br&gt;
Heute hab ich nach nem langen Tag des Laternenkletterns die Erfahrung gemacht dass dies auch f&amp;#252;r Stadt und Gemeinde betrifft.&lt;br&gt;
Sehr frustrierend. Wo darf man &amp;#252;berhaupt noch klettern?&lt;br&gt;
Wo noch ne Dose auslegen die vom langweiligen 1/1 er Standard abweicht?&lt;br&gt;
Dies soll &amp;#252;brigens keine Anprangerung der Reviewer sein. Vielmehr sehe ich die Ursache in den a) &amp;#252;berzogenen Regeln die diese befolgen m&amp;#252;ssen und in der Notwendigkeit die Regeln in der Vergangenheit versch&amp;#228;rft haben zu m&amp;#252;ssen. &lt;br&gt;
Vielleicht machen wir noch mehr Powertrails und noch mehr Fernsehberichte ohne zu recherchieren damit der letzte aus der Hinz- und Kunz- Menge mit dem iPhone loszieht um schnell mal paar Dosen zu suchen, &amp;#228;h kaputt zu machen.&lt;br&gt;
Dann wird die &amp;#246;ffentliche Wahrnehmung und unser Ruf bestimmt besser.&lt;br&gt;
Ach und je mehr Apps Seattle verkauft desto mehr klingelt dort auch die Kasse. Was ja wohl zunehmend der entscheidende Faktor zu sein scheint&lt;br&gt;
In der BWL hei&amp;#223;t so was CashCow. Melken bis es umf&amp;#228;llt. Danach bzw eng verbunden kommt Degenerationsphase (R&amp;#252;ckgang)&lt;/p&gt;
</description><link>http://krolock.blogspot.com/2014/01/haben-wir-geocaching-endgultig-kaputt.html</link><author>noreply@blogger.com (Graf von Krolock)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-4462379230211614318.post-93212111255070660</guid><pubDate>Thu, 07 Nov 2013 10:39:00 +0000</pubDate><atom:updated>2013-11-07T11:39:56.877+01:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Wherigo für Experten</category><title>Fehlersuche und Codeanalyse mittels _cartrigde.lua</title><description>&lt;div style=&quot;width: 775px&quot;&gt;
   &lt;span style=&quot;text-decoration: underline;&quot;&gt;Voraussetzung: &lt;a
           href=&quot;http://krolock.blogspot.de/2012/04/der-einstieg-in-lua.html&quot;
           target=&quot;_blank&quot;&gt;&quot;Der Einstieg in lua“&lt;/a&gt;&lt;/span&gt; &lt;br&gt;

    &lt;!-- BILD UND TEXT  1--&gt;
    &lt;div class=&quot;clear&quot;&gt;&lt;/div&gt;

    &lt;div class=&quot;right label&quot; style=&quot;width: 340px;&quot;&gt;
        &lt;a href=&quot;https://lh6.googleusercontent.com/-tQpu_KKV8B4/UnlBH75U0TI/AAAAAAAAB9M/-I8F79bYTZY/w331/ZoneDefinition.PNG&quot;&gt;
            &lt;img border=&quot;0&quot; alt=&quot;&quot;
                 src=&quot;https://lh6.googleusercontent.com/-tQpu_KKV8B4/UnlBH75U0TI/AAAAAAAAB9M/-I8F79bYTZY/w331/ZoneDefinition.PNG&quot;/&gt;
        &lt;/a&gt;&lt;br/&gt;
        Abbildung 1: Bei der Zonendefinition wird der Identifier des Steinbruchs mit kleinem s angelegt
    &lt;/div&gt;

    In diesem Tutorial wollen wir uns mit Fehlersuche bzw. Codeanalyse beschäftigen.  Genauer gesagt geht es darum sich anzuschauen welcher lua Code aus dem Urwigo Projekt generiert wird.&lt;br&gt;
    Dies kann uns in zweierlei Hinsicht nützlich sein.&lt;br&gt;
    &lt;ul&gt;
        &lt;li&gt;Erweitern der lua-Kenntnisse sowie Analyse der Wherigo-API&lt;/li&gt;
        &lt;li&gt;Fehlersuche&lt;/li&gt;
    &lt;/ul&gt;
         Zunächst beschäftigen wir uns mit dem zweiten Punkt: Das Scenario ist folgendes:&lt;br&gt;
    Wir haben eine Zone &lt;code&gt;Steinbruch&lt;/code&gt; definiert, die wir im &lt;code&gt;Lua user functions&lt;/code&gt; Bereich ansprechen wollen bzw. der Aktivitätsstatus wir dort verändern möchten.
    &lt;br&gt;Abb. 1 zeigt  das Anlegen der Zone. Erfahrene Wherigo-Entwickler werden auf den ersten Blick feststellen, dass wir neben Namen und Bild auch den &lt;code&gt;Identifier&lt;/code&gt; festgelegt haben.

    &lt;!-- BILD UND TEXT  2--&gt;
    &lt;div class=&quot;clear&quot;&gt;&lt;/div&gt;

    &lt;div class=&quot;left label&quot; style=&quot;width: 340px;&quot;&gt;
        &lt;a href=&quot;https://lh3.googleusercontent.com/-f3075412ox0/UnlBHNddxJI/AAAAAAAAB84/6CUFtG3UALQ/w330/LuaFunctions.PNG&quot;&gt;
            &lt;img border=&quot;0&quot; alt=&quot;&quot;
                 src=&quot;https://lh3.googleusercontent.com/-f3075412ox0/UnlBHNddxJI/AAAAAAAAB84/6CUFtG3UALQ/w330/LuaFunctions.PNG&quot;/&gt;
        &lt;/a&gt;&lt;br/&gt;
        Abbildung 2: Im lua Teil wird das Objekt fälschlicherweise mit großem S angesprochen
    &lt;/div&gt;
    Im &lt;code&gt;Lua user functions&lt;/code&gt; Bereich nehmen wir unseren Steinbruch und setzen die Aktivät auf true. &lt;br&gt;
    Wer erkennt hier schon unseren Fehler?
    Kleiner Tipp: Bei diesem Code würde das Projekt gar nicht erst starten. Würden wir die Anweisung in einer Funktion verwenden, die erst während dem Spiel ausgeführt wird, z.B &lt;code&gt;onStart&lt;/code&gt; würde die Fehlermeldung folgendermaßen lauten:
    &lt;br&gt;&lt;code&gt; Lua method call failed. .../urwigo-src-23fd04e4-6177-45ca-a89a-2ffc8589ff08.lua:323: attempt to index global &#39;Steinbruch&#39; (a nil value)&lt;/code&gt;

    &lt;!-- BILD UND TEXT  3--&gt;
    &lt;div class=&quot;clear&quot;&gt;&lt;/div&gt;
    &lt;div class=&quot;right label&quot; style=&quot;width:230px;&quot;&gt;
        &lt;a href=&quot;https://lh5.googleusercontent.com/-moMvEugcKgY/Untb4OAP52I/AAAAAAAAB-U/5knWIHdNtLE/w225-h316-no/ProjectSettings.PNG&quot;&gt;
            &lt;img border=&quot;0&quot; alt=&quot;&quot;
                 src=&quot;https://lh5.googleusercontent.com/-moMvEugcKgY/Untb4OAP52I/AAAAAAAAB-U/5knWIHdNtLE/w225-h316-no/ProjectSettings.PNG&quot;/&gt;
        &lt;/a&gt;&lt;br/&gt;
        Abbildung 3: Wichitg für die Lesbarkeit im Testmodus ist Verschlüsselung sowie die Verschleierung der Identifier und Texte zu deaktivieren
    &lt;/div&gt;
    Die Ursache der Fehlermeldung ist schnell erklärt: Während der &lt;code&gt;Identifier&lt;/code&gt; in Abb.1 auf &lt;code&gt;steinbruch&lt;/code&gt; mit &lt;b&gt;kleinem s&lt;/b&gt; gesetzt wurde wird im lua Part versucht die Zone mit &lt;b&gt;großem S&lt;/b&gt; anzusprechen.
    &lt;br&gt;Da der Code &lt;code&gt;case-sensitive&lt;/code&gt; ausgewertet wird ist Groß- und Kleinschreibung wichtig. Schließlich befinden wir uns ja nicht im Windows-DOS-Modus.
&lt;br&gt;&lt;br&gt;
    Diesen Fehler erkennt man beim zweiten Mal sehr zügig. Was aber, wenn wir noch nicht so erfahren sind? Hier kann ein Blick in die lua Datei helfen, die von Urwigo aus dem Projekt erzeugt wird und neben den Bildern als zip Datei (oder besser gesagt als &lt;code&gt;gwz&lt;/code&gt; Datei) zum wherigo.com Server hochgeladen wird.
       &lt;br&gt; Wir wollen also einen Blick in die generierte lua Datei werfen. Dazu ist es wichtig, dass wir wie in Abb.3 erkennbar ist, die Verschleierung und Verschlüsselung der Texte, Antworten und vorallem der Identifiers aufheben. Die Identifiers dürfen auf keinen Fall verscheiert werden, wenn wir eigenen lua Code schreiben. Die ersten beiden Kästchen dienen der besseren Lesbarkeit während der Testphase, sollten vor dem Hochladen zu wherigo.com aber wieder gesetzt werden.
  &lt;br&gt;(Nicht dass es euch so wie mir geht und ihr ein paar Minuten nach der Veröffentlichung des neuesten Wherigos eine eMail bekommt in der euch ein Cachingkollege mit breitestem Grinsen alle Antworten und Spoilerbild zuschickt, weil ihr vergessen habt die Verschlüsselung zu aktivieren...)

    &lt;!-- BILD UND TEXT  4--&gt;
    &lt;div class=&quot;clear&quot;&gt;&lt;/div&gt;
    &lt;div class=&quot;left label&quot; style=&quot;width: 510px;&quot;&gt;
        &lt;a href=&quot;https://lh5.googleusercontent.com/-n9F2037aJ6k/UnlBHC25bdI/AAAAAAAAB9A/5mQCgZ_6FIQ/w554/BuildPackage.jpg&quot;&gt;
            &lt;img border=&quot;0&quot; alt=&quot;&quot;
                 src=&quot;https://lh5.googleusercontent.com/-n9F2037aJ6k/UnlBHC25bdI/AAAAAAAAB9A/5mQCgZ_6FIQ/w500/BuildPackage.jpg&quot;/&gt;
        &lt;/a&gt;&lt;br/&gt;
        Abbildung 4: Das Bauen des package ist nicht neues und kennen wir schon als Vorbereitung für&#39;s Hochladen
    &lt;/div&gt;
    Jetzt könnt ihr euch kurz entspannt zurücklehen, denn der Teil mit dem Erstellen eines Packets sollte euch wohlbekannt sein.
    &lt;br&gt;Für den weiteren Vorgang nehmen wir an, wir haben die gwz Datei ExtractLua.gwz genannt und in dem Ordner &quot;C:\tmp\ExtractLua&quot; abgespeichert.


    &lt;!-- BILD UND TEXT  5--&gt;
    &lt;div class=&quot;clear&quot;&gt;&lt;/div&gt;

    &lt;div class=&quot;right label&quot; style=&quot;width: 510px;&quot;&gt;
        &lt;a href=&quot;https://lh6.googleusercontent.com/-k185xDzLeVM/UnlBHCCtH9I/AAAAAAAAB88/Uwi1Dw-9Wiw/w525/7zip.PNG&quot;&gt;
            &lt;img border=&quot;0&quot; alt=&quot;&quot;
                 src=&quot;https://lh6.googleusercontent.com/-k185xDzLeVM/UnlBHCCtH9I/AAAAAAAAB88/Uwi1Dw-9Wiw/w500/7zip.PNG&quot;/&gt;
        &lt;/a&gt;&lt;br/&gt;
        Abbildung 5: Beispiel für das Entpacken der gwz-Datei mit 7zip
    &lt;/div&gt;


    Um die lua Datei aus der gwz Archivdatei zu extrahieren, bedienen wir uns eines Zip-Programmes unserer Wahl. WinZip, WinRar sollten selbsterklärend sein.
    Ich habe   &lt;a href=&quot;http://www.7-zip.de/&quot; target=&quot;_blank&quot;&gt;7zip&lt;/a&gt; verwendet, da es sich hierbei um ein kostenlos nutzbares Tool handelt, dass allen Ansprüchen der Extrahierung gerecht wird.

    Wenn man den Schritt &quot;Packet bauen - auspacken - Lua Datei anschauen&quot; mehrmals wiederholt (nach der Behebung des ersten Fehlers wartet der zweite) empfiehlt es sich den Extraktionsbefehl über die Kommandozeile abzusetzen, da er dort recht leicht wiederholt werden kann (z.B Pfeil aufwärts in der Konsole).
    Der Parameter e steht für Auspacken, während der Schalter y für das Überschreiben vorhandener Dateien steht. Deswegen sollte man die gwz Datei außerhalb des Projektordners auspacken.

    &lt;!-- BILD UND TEXT 6 --&gt;
    &lt;div class=&quot;clear&quot;&gt;&lt;/div&gt;

    &lt;div class=&quot;left label&quot; style=&quot;width: 510px;&quot;&gt;
        &lt;a href=&quot;https://lh6.googleusercontent.com/-HnTTQmb2O-A/UnlBInAiCDI/AAAAAAAAB9Q/sVu2XzPi_l8/w608/luaFile.PNG&quot;&gt;
            &lt;img border=&quot;0&quot; alt=&quot;&quot;
                 src=&quot;https://lh6.googleusercontent.com/-HnTTQmb2O-A/UnlBInAiCDI/AAAAAAAAB9Q/sVu2XzPi_l8/w500/luaFile.PNG&quot;/&gt;
        &lt;/a&gt;&lt;br/&gt;
        Abbildung 6: In der von Urwigo erstellten lua Datei kann man gut sehen, woran der Fehler liegt: Groß- und Kleinschreibung des Identifiers stimmen nicht überein
    &lt;/div&gt;


    Wie ihr eure gwz Datei entpackt ist aber euch überlassen. Wichtig ist, dass am Ende eine &lt;code&gt;_cartridge.lua&lt;/code&gt; Datei herauskommt, die ihr dann mit einem Texteditor öffnen könnt.
    Ich habe dies mit dem &lt;a href=&quot;http://www.vim.org/&quot; target=&quot;_blank&quot;&gt;vim&lt;/a&gt; Editor gemacht, da mir dann ein farbliches Syntax-Highlighting sicher ist. Wer bereits mit dem IntellijIDEA arbeitet (siehe &lt;a href=&quot;http://krolock.blogspot.de/2012/04/lua-in-externen-editor-bearbeiten-wer.html&quot; target=&quot;_blank&quot;&gt;Lua im externen Editor bearbeiten&lt;/a&gt;) kann natürlich sich dort die Datei anschauen.
    &lt;br&gt;&lt;br&gt; Nun aber zur Fehleranalyse. In Abb. 6 erkennt ihr an dem oberen bzw. unteren roten Kreis, dass die Identifier sich in Groß- und Kleinschreibung unterscheiden und ihr habt den Fehler somit gefunden.

    &lt;br&gt;&lt;br&gt;Ich hatte zu Beginn des Tutorial einen weiteren Nutzen der Codeanalyse angesprochen. Dies wird durch Betrachtung des mittleren roten Kreises deutlich:
    &lt;br&gt;Der Codeteil &lt;code&gt;function objExtractLuaTest:OnStart() end&lt;/code&gt; enthält nämlich alle Codeanweisung, die beim Starten des Wherigo ausgeführt werden. Ich seht auch wie der &lt;code&gt;Identifier&lt;/code&gt; des Cartridges gebildet wird, wenn er nicht von euch vorgegeben wird: Mit einem simplen Prefix &lt;code&gt;obj&lt;/code&gt; der vor den Namen gesetzt wird.
    &lt;br&gt;
    Anstatt die Startanweisungen als lua Block aufwändig über Urwigo einzugeben, könnt ich auch einfach in euerer lua Datei diesen Codeteil verwenden.
    &lt;br&gt;Auf diese Weise hab ich mir nach und nach angeschaut, wir Textausgaben (MessageBoxen), Benutzeneingaben (Input), Timer, Zonen und Gegenstände verwendet werden,
    sodass ich heute nur noch die Objekte in Urwigo definiere (UUID-Erzeugung ist zwar möglich aber recht aufwändig) und alles andere direkt in lua schreibe, was sich bei aufwändigeren WherIGos wie Minesweeper, Cachopoly, Schiffe versenken... als wesentlich schneller herausgestellt hat und ihr habt die Codeanweisungen zentral in einer (später mehreren) Lua Dateien und könnt so euren Code besser nachvollziehen.


&lt;/div&gt;
</description><link>http://krolock.blogspot.com/2013/11/fehlersuche-und-codeanalyse-mittels.html</link><author>noreply@blogger.com (Graf von Krolock)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://lh6.googleusercontent.com/-tQpu_KKV8B4/UnlBH75U0TI/AAAAAAAAB9M/-I8F79bYTZY/s72-w331-c/ZoneDefinition.PNG" height="72" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-4462379230211614318.post-7795740063727104244</guid><pubDate>Sat, 17 Aug 2013 04:54:00 +0000</pubDate><atom:updated>2013-08-17T07:08:47.867+02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">CacheSchwafel</category><title>IPhone Player Update erfolgreich</title><description>&lt;p dir=ltr&gt;Wie ich mittlerweile von mehreren Feedbacks mitbekommen habe ist das aktuelle 1.4.2 Version des PiGo Player soweit da&amp;#223; auch kompliziertere&amp;#160; Wherigos wie Scotland Yard oder Minesweeper zu spielen sind. Also Update einspielen und los geht&#39;s. Um weitere R&amp;#252;ckmeldungen bin ich immer noch dankbar&lt;/p&gt;
</description><link>http://krolock.blogspot.com/2013/08/iphone-player-update-erfolgreich.html</link><author>noreply@blogger.com (Graf von Krolock)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-4462379230211614318.post-5715464285186675434</guid><pubDate>Sun, 28 Jul 2013 17:46:00 +0000</pubDate><atom:updated>2013-07-29T20:34:39.197+02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">CacheSchwafel</category><title>Buggy und T5er</title><description>&lt;p dir=ltr&gt;Jaja kaum ist das Kind anderthalb kann es schon Buggyversch&amp;#252;sse &amp;#246;ffnen. Aber da hat es die Rechnung ohne T5er Papa gemacht&lt;/p&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt; &lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt; &lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiCVhWh0e7_Rq9bdeIOm4Ms2F0-SKGwcAH8yFf5OZQ8fyWAJYnob3-yj0yWwGWAAsQ6F6u-LQizARLM7Ty2s1SKHDE2_JImyBMmA3xWRooMzKKg2RO3PvB39bThiKFi1ZHfa8YVlvbEgH0/s1600/20130728_194308.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt; &lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiCVhWh0e7_Rq9bdeIOm4Ms2F0-SKGwcAH8yFf5OZQ8fyWAJYnob3-yj0yWwGWAAsQ6F6u-LQizARLM7Ty2s1SKHDE2_JImyBMmA3xWRooMzKKg2RO3PvB39bThiKFi1ZHfa8YVlvbEgH0/s640/20130728_194308.jpg&quot;&gt; &lt;/a&gt; &lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt; &lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhzXjt_8dYtYWCXRNXFuShijkScYdGkTI373hIsj1o7zd2FROvRMORVXojs4lLuE6fXnM7wkxgsUHTIJ2Ue3zNhTRgjJVsQ1bsAg6iawaFBZSYYPnNk7jgCs7rEx9QOUzFAsO4XzERKB3M/s1600/20130728_193600.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt; &lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhzXjt_8dYtYWCXRNXFuShijkScYdGkTI373hIsj1o7zd2FROvRMORVXojs4lLuE6fXnM7wkxgsUHTIJ2Ue3zNhTRgjJVsQ1bsAg6iawaFBZSYYPnNk7jgCs7rEx9QOUzFAsO4XzERKB3M/s640/20130728_193600.jpg&quot;&gt; &lt;/a&gt; &lt;/div&gt;</description><link>http://krolock.blogspot.com/2013/07/buggy-und-t5er.html</link><author>noreply@blogger.com (Graf von Krolock)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiCVhWh0e7_Rq9bdeIOm4Ms2F0-SKGwcAH8yFf5OZQ8fyWAJYnob3-yj0yWwGWAAsQ6F6u-LQizARLM7Ty2s1SKHDE2_JImyBMmA3xWRooMzKKg2RO3PvB39bThiKFi1ZHfa8YVlvbEgH0/s72-c/20130728_194308.jpg" height="72" width="72"/><thr:total>0</thr:total></item></channel></rss>