Newsgroup: it.comp.giochi.avventure.testuali
Titolo: [Inform] ... ma insomma... AIUTO!

Compilate la seguente:
!=========================
Constant Story "Teddy per Sempre";
Constant Headline "^Una dimostrazione delle incazzature di Inform ^";
Include "Parser";
Include "VerbLib";
Include "replace";
object room "Una stanza qualsiasi",
	with description "Quattro muri.",
	before [; Pray: if ((mykey in room) || (mykey in player)) "Hai
pregato abbastanza!";
  print "Le tue preghiere vengono esaudite: ecco la chiave!";
	move mykey to room; rtrue;],	
has light;
object mykey "chiavetta"
	with name 'chiave' 'chiavetta';
object teddy "Teddy Roughspin" room
	with name 'orso' 'orsacchiotto' 'teddy' 'roughspin',
	description [; print "Un orso a orologeria, è caricabile/accendibile,
				è la stessa cosa.";
],
 before [; SwitchOn: if (mykey notin player) "Noti che il meccanismo
di caricamento del simpatico orsacchiotto richiede l'uso di una
chiavetta,
  che è stata rimossa.";
"Cric, cric, cric... Due giri di chiavetta e Teddy inizia a sparare
boiate.";
  ],
has switchable;
[ Initialise; location = room;];
Include "ItalianG";
Extend 'carica' * noun -> SwitchOn;
!===============
Allora, Teddy è il clone di un oggetto nella mia nuova avventura, e ha
un comportamento ben strano. L'extend di CARICA l'ho fatto perché
essendo un meccanismo a orologeria è logico usare CARICA oltre che
ACCENDI (che peraltro non sarebbe del tutto corretto).
Avete già capito come si carica teddy, no? Serve la chiavetta che si
ottiene pregando.
... adesso provate a dare "carica teddy".
AAAAAAAAAAAAAAAAAAAAARGH

 ... adesso provate a dare "carica teddy".
Ti carica una partita...
Extend 'carica' first * noun -> SwitchOn;
Funziona?
bye
-- 
Paolo Lucchesi
email: plucchesi(at)tin(dot)it
home page: 
http://www.paololucchesi.it
"Tempus Edax Rerum"

 ... adesso provate a dare "carica teddy".
Premetto che non ho le lib. italiane e non ho provato a compilare. 
Comunque il problema nasce sicuramente dal fatto che "carica" è già 
presente nelle librerie italiane (come metaverbo "restore", presumo), 
quindi invece di "Verb" hai dovuto usare "Extend"... e il verbo 
"Restore" non si fa estendere... infatti la versione inglese (con 'Verb' 
va da dio).
sicuramente Giovanni ci spiegherà esattamente cosa succede (a proposito, 
che succede?)
ciao
S


Se ricordo bene dovresti fare prima un Replace carica e poi
ridefinirtelo!!!
bai
t

 ridefinirtelo!!!
aaah, il replace, dimenticavo. probabilmente però basta scrivere
Extend 'carica' first
	* noun -> SwitchOn;
prova un po' questo...
ciao
S

 che succede?)
Così a occhio (devo controllare) è quello che dici tu, Stefano. Se si 
estende un meta verbo come "carica" si crea un'altra forma grammaticale 
dello stesso. In pratica *carica teddy* è ancora un meta verbo. Appena 
ho un po' di tempo approfondisco 'sta cosa dei meta verbi...
HAPPY INFORMING
-- 
Giovanni Riccardi - 
giov...@composizioni.net
 - 
http://www.composizioni.net

 prova un po' questo...
Probabilmente non funzionerà neanche questo. Mi sono andato a rileggere 
la questione sul DM4 e a quanto pare Graham non ha considerato proprio 
la possibilità che un meta verbo sia esteso tramite un verbo normale.
Per la precisione i verbi (meglio, le azioni) sono divisi in tre gruppi. 
Quelli del primo gruppo sono i meta verbi e hanno la caratteristica di 
non influire sul gioco (ad esempio non hanno un before e un after).
Come dice Graham a pagina 93 del DM4:
"Group 1 actions, like Score, have no ‘Before’ or ‘After’ stages: you 
can't (easily) stop them from taking place. They aren't happening in the 
game's world, but in the player's."
Allora, visto che queste azioni non possono essere *facilmente* 
modificate, penso che tu possa provare inserendo una routine 
BeforeParsing nell'oggetto teddy. Vedi anche l'esercizio 81 nel DM4 per 
un esempio sul suo utilizzo.
Prova con questo, altrimenti penso che dovrò modificare INFIT in modo da 
gestire casi come il tuo.
HAPPY INFORMIMNG


Ringrazio tutti davvero, ma credo di aver risolto il problema.
Un po' come dicevano il Gaburri (TM) e Giovanni Riccardi il problema è
che ho esteso un verbo *meta*, il quale "di suo" skippa tutti i before
:(
Ho risolto così (il codice è indicativo, adesso non posso controllarlo
che sono all'uni:)
Extend only 'carica' * noun -> MySwitch;   ! L'only serve altrimenti
                                           ! 'restore teddy' diventa 
                                           ! ammissibile...
[MySwitchSub;
 meta=false ! (qui, risata diabolica)
 <<SwitchOn noun>>];
... e va a meraviglia...

 .... e va a meraviglia...
Questo te lo rubo e lo metto nella prossima versione di INFIT.
HAPPY INFORMING
-- 
Giovanni Riccardi | 
giov...@composizioni.net
 | 
http://www.composizioni.net

  meta=false ! (qui, risata diabolica)
fantastico! Mi basisco felice, in modo ossimorico.

stefanogaburri wrote:

Tu studi troppo uagliò!!!
bai
t

> fantastico! Mi basisco felice, in modo ossimorico.
Che bello, ha fatto basire il Gaburri(TM). Me ne vanterò finché campo.

 .... e va a meraviglia...
Non so voi ma a me viene paura.
Un novellino non dovrebbe leggere certe cose.
Mammaaaa
-- 
"La vita non è un film, è molto meglio"
_______________________
The Iron Pumpkin Studio
http://www.ironpumpkin.135.it
lucabe...@netscape.net