IF-Forum

» IF-Forum - Autorencafé - Schreiben! - Licht_in und die Geografie...
AntwortenNeues ThemaNeue Umfrage

Licht_in und die Geografie...

Geschrieben um 11:50 am 23.02.2003 | Zitat | Editieren | Löschen
Ally
Mitglied
Master Gumby
Beiträge: 126

Liebe TAG-Leute...,

in "HDRaum"-Klasse-Räumen wie der fiktiven "Grotte" unten hängt der Name anscheinend nicht davon ab, ob Licht in diesem Raum ist, sondern ob Licht "beim" Spieler ist (in Form einer getragenen Lampe). Wenn die Lichtquelle abgelegt wird, funktioniert es wie gewünscht.

Beispiel:

  • Der Spieler trägt eine Lampe, ist südlich der Grotte und rennt gegen eine Wand, worauf die möglichen Ausgänge aufgelistet werden.

  • Der Ausgänge-Auflister (zu 99% aus ausgang.adx übernommen) schreibt "Du kannst hier nur nach Norden (".

  • Dann belegt er lraum mit dem "Nordraum", also der Grotte, und gibt ihren Namen aus.

  • Dieser ist ein Ausführungsblock in der Raumklasse HDRaum, der die Aktion lichtTest aufruft, um in Erfahrung zu bringen, welchen Namen er ausgeben soll.

  • lichtTest benötigt lraum, um zu wissen, in welchem Raum "Licht getestet" werden soll. Und jetzt kommt das Problem: Im Raum-mit-Spieler-drinne ist Licht, in der Grotte (bzw. dem "Nordraum" bzw. lraum bzw. xxx in der Ausgangliste-Aktion) nicht. Trotzdem wird in der Grotte "Licht gefunden" und dann natürlich der falsche Name ausgegeben.

Was hab ich diesmal übersehen? Fällt da jemandem was ein oder auf?



Ausf

    sei lraum araum

EndeAusf

RaumKlasse HDRaum ! Klasse für halbdunkle Räume

Name    Ausf

            ! hier kommt lraum von "außen" (Aktion * oder Ausgang-Lister),

            ! daselbst hier sowieso ungültig?! (versteh ich nich)

            Ausf lichtTest

            wenn (lFlag) dann

                text 1 &lraum

            sonst

                text 2 &lraum

            ende

        EndeAusf

Besch   Ausf

            sei lraum daselbst

            ausf lichtTest

            wenn (lFlag) dann

                text 3 &lraum ! Textblock für Besch's bei Licht...

            sonst

                text 4 &lraum ! ...und im Halbdunkel

            ende

        EndeAusf

Attr    halbdunkel

! ...etc...

Raum Grotte (HDRaum)

! ...etc...

Aktion lichtTest

Ausf

    lösche lFlag

    wenn (lraum halbdunkel) dann

        ! Licht_in hält halbdunkel für "nicht dunkel", also

        ! produzieren wir (TAG-)Dunkelheit, um in ihr nach

        ! Lichtquellen suchen zu können:

        attrHin lraum dunkel

        wenn (Licht_in lraum) setze lFlag       

        attrWeg lraum dunkel

    ende

EndeAusf

Aktion  AusgangListe

Ausf

        lokale ritgVar r

        lokale raumVar xxx

        lokal i nn

        ! ......snipsnap......

        schleife r minRitg maxRitg

             seiRaum xxx aRaum r

             wenn (xxx > 0) dann

                 ! ......snipsnap......

                 sei lraum xxx

                 wenn (r > NW) dann

                     Text 'nach [r] ([xxx])/'

                 sonst

                     Text 'nach [R] ([xxx])/'

                 Ende

             Ende

        Ende

        ! ......snipsnap......

EndeAusf

block 1 | Raumnamen bei Licht

1 'Erleuchtete Grotte/'

! ...etc...

block 2 | Raumnamen im Halbdunkel

1 'Finstere Grotte/'

! ...etc...

block 3 | Raumbeschreibungen bei Licht

1 'Du bist in einer supertollen, erleuchteten Grotte.'

! ...etc...

block 4 | Raumbeschreibungen bei Halbdunkel

1 'Du steckst in einer finsteren Grotte.'

! ...etc...```
Geschrieben um 12:55 am 25.02.2003 | Zitat | Editieren | Löschen
Ally
Mitglied
Master Gumby
Beiträge: 126

Ally:

in "HDRaum"-Klasse-Räumen wie der fiktiven "Grotte" unten hängt der Name anscheinend nicht davon ab, ob Licht in diesem Raum ist, sondern ob Licht "beim" Spieler ist (in Form einer getragenen Lampe). Wenn die Lichtquelle abgelegt wird, funktioniert es wie gewünscht.

Ach, ist ja auch egal. Lass ich das Programm halt erst dem Spieler heimlich seine Beleuchtung klauen, dann die Raumnamen ausgeben, dann die Lichtquellen zurückgeben. Blöder Workaround, naja.

Geschrieben um 13:34 am 25.02.2003 | Zitat | Editieren | Löschen
Martin
Avatar
Mitglied
Prof Gumby
Beiträge: 634

So wie du das beschreibst scheint mir Licht_in nicht richtig zu funktionieren, weil es immer denkt, der Spieler sei im passenden Raum.

Das muss ich mal checken. Da zeigt sich wieder der Nachteil, dass viele Dinge einfach so 'fest verdrahtet' sind. (Und nicht genügend geprüft.)

Geschrieben um 14:01 am 25.02.2003 | Zitat | Editieren | Löschen
Ally
Mitglied
Master Gumby
Beiträge: 126

Martin:

So wie du das beschreibst scheint mir Licht_in nicht richtig zu funktionieren, weil es immer denkt, der Spieler sei im passenden Raum.

Das muss ich mal checken. Da zeigt sich wieder der Nachteil, dass viele Dinge einfach so 'fest verdrahtet' sind. (Und nicht genügend geprüft.)

Mach dir nichts draus, sowas passiert immer, wenn ich ein neues Autorensystem ausprobiere... kann natürlich auch sein, daß ich Licht_in nicht kapiert habe.

Geschrieben um 14:53 am 25.02.2003 | Zitat | Editieren | Löschen
Martin
Avatar
Mitglied
Prof Gumby
Beiträge: 634

Ally:

Mach dir nichts draus, sowas passiert immer, wenn ich ein neues Autorensystem ausprobiere...

Du darfst in Zukunft alle neuen Releases testen...

Ally:

kann natürlich auch sein, daß ich Licht_in nicht kapiert habe.

Ich glaube immer noch, dass Licht_in einfach falsch ist. Im Moment wird es an einer Stelle verwendet, bei der mir der Fehler nie aufgefallen ist: Wenn der Spieler von einem Raum in den anderen geht, muss mindestens einer der beiden Räume hell sein. Das wird mit Licht_in geprüft. Ist der jetzige Raum hell, in dem der Spieler ist, ist es aber egal, ob die Dunkelheit im zweiten Raum richtig oder falsch ausgewertet wird. Ist es im momentanen Aufenthaltraum dunkel, hat der Spieler keine Lampe bei sich und die Auswertung im Zielraum wird korrekt durchgeführt.

Licht_in wird auch im "Raum, der in der Mitte ein Gitter hat" (Handbuch, Kap. 14.3) verwendet. Dort müsste man die Fehlfunktion eher sehen können.

Geschrieben um 19:32 am 25.02.2003 | Zitat | Editieren | Löschen
Martin
Avatar
Mitglied
Prof Gumby
Beiträge: 634

Genau, Licht_in macht Murks, wie du schon vermutet hattest. Ich habe mal den folgenden Test in Karn eingebaut:


Bef     lumen

Name    'Lumen'

Verb    'lumen'

Ausf

    lokale Raumvar xRaum

    Schleife xRaum

        Text '[xRaum]:'

        wenn (Licht_in xRaum) dann

            Text 'hell[x]'

        sonst

            Text 'dunkel[x]'

        Ende

    Ende

EndeAusf

Dann wird deutlich, dass die Besitztümer des Spielers in jedem Raum mitgezählt werden. Ich habe es (hoffentlich) gefixt:

http://www.martin-oehm.de/tag/tam20.zip

Geschrieben um 20:36 am 25.02.2003 | Zitat | Editieren | Löschen
Ally
Mitglied
Master Gumby
Beiträge: 126

Hmm... leider bleibt es diesmal dunkel, wenn der Spieler die Lichtquelle trägt. Erst, wenn sie abgelegt wird, wird es hell. Immerhin gilt das jetzt unabhängig davon, ob der Spieler im "lichtgetesteten" Raum ist oder nicht.

Ich habe mal einen ganz "normal" dunklen Raum eingebaut, sowie dein lumen-Verb.


raum  testraum2

name  'Testraum2'

besch  'Bist im zweiten Testraum.'

std    keinweg

w      testraum

attr   dunkel

>nimm lampe

Du hast nun die Lampe.

>lumen

...

Testraum2: dunkel

>lege lampe ab

Du hast die Lampe hingelegt.

>lumen

...

Testraum2: hell

Trotzdem kann man auch dann, wenn der Raum angeblich dunkel ist, mit L die Besch abfragen und herumspazieren, ohne die "Du stolperst umher"-Nachricht zu kriegen.

In halbdunklen Räumen bekommt man die "halbdunkle" Besch, solange man die Lampe nicht ablegt.

Geschrieben um 00:10 am 26.02.2003 | Zitat | Editieren | Löschen
Martin
Avatar
Mitglied
Prof Gumby
Beiträge: 634

O.K., der Quickfix war wohl etwas vorschnell. Das Problem ist erkannt, aber noch nicht gelöst. Da ist wohl noch etwas Überlegung notwendig. So ein Mist! Naja, immerhin wieder was gelernt: Schnelle Lösungen sind meist nicht von Dauer.

Ich hab die alte Version wieder hochgeladen.

Geschrieben um 07:15 am 26.02.2003 | Zitat | Editieren | Löschen
Ally
Mitglied
Master Gumby
Beiträge: 126

Danke für die Bemühungen jedenfalls. Wenigstens kann ich so davon ausgehen, daß es nicht (nur) an meinem Code liegt...

AntwortenNeues ThemaNeue Umfrage
Powered by Spam Board SVN © 2007 - 2021
Impressum / Datenschutz