Newsgroup: it.comp.giochi.avventure.testuali
Titolo: [inform] metti due pere nel piatto

metti pere in piatto
pera sugosa: Fatto.
pera sugosa: Fatto.
aiuto! che succede?
max "torredifuoco" bianchi

ho dei problemi con il codice della traduzione.
ehm, si', scusate la sbrodolata precedente ma son cose che succedono
quando si finisce di tradurre e si comincia subito ad alfatestare...
;)
ora ho passato l'avventura ai raggi x, mi sono documentato e ho
qualche elemento in piu' che forse puo' aiutare i piu' esperti a
fornirmi un qualsivoglia aiuto.
riassuntone: due oggetti scritti per essere indistinguibili trattati
dall'inventario come indistinguibili, ma trattati dai verbi "prendi",
"lascia", "metti" come distinguibili. argh!
ho a disposizione i file .z5 e .ulx in inglese, .ulx in italiano, e un
esempiuccio .ulx in italiano, corredati dei verbi di debug.
noto subito qualcosa che non va: i file in inglese rispondono a
"showobj objects" listando le caratteristiche di due oggetti nel mio
inventario, mentre nel file in italiano "showobj oggetti" stampa
quelle riguardanti solo un oggetto. i due oggetti sono 2 istanze di
una classe, indi dovrebbero essere identici.
vado a leggermi il § 29 del dm4, "nomi plurali per oggetti duplicati",
e scopro che per essere giudicati indistinguibili (e venir trattati
insieme dai tre verbi come spiegato piu' su) gli oggetti non solo
devono appartenere alla stessa classe e presentare le proprieta' name,
short_name e plural, ma non devono presentare diversi attributi
eccetera.
un controllo con "trace 5" mi conferma che i file in inglese e
l'esempiuccio in italiano riconoscono gli oggetti come
indistinguibili, mentre il mio sorgente (maledizione!) no; provo "put
objects in container" o "metti pere in piatto" e giustamente ottengo
"indefinite type: plural" eccetera, mentre con "metti oggetti in
contenitore" un errato "definite object" eccetera.
con "scope" ottengo il numero dei due oggetti incriminati e riprovando
con "showobj numero_oggetto" confronto le loro caratteristiche. uno ha
un attributo in piu'!! il primo has moved workflag female, il secondo
has moved female. ecco il presunto colpevole, l'attributo workflag.
e invece no, riguardo i file inglesi e scopro che anche li' un oggetto
presentava workflag e l'altro no, tuttavia erano trattati *sempre*
come indistinguibili.
a questo punto non capisco quale sia il problema: gli oggetti sembrano
scritti bene, il debug segnala solo che il parser della mia traduzione
non li riconosce come indistinguibili. il problema sta in noundomain?
boh! ho fatto di tutto per non toccare il codice se non in minima
parte per adattarlo alle librerie italiane e tradurre il testo.
idee? anche sul testing, cosa consigliereste? (piu' calma e olio di
gomito prima di disperarsi, lo so...)
max "torredifuoco" bianchi
p.s. ho risolto!
dopo aver confrontato le passate versioni compilate della traduzione
ed essermi stramaledetto per non aver tenuto *nemmeno una copia del
codice relativo*, mi sono accorto che l'errore e' stato introdotto tra
la 40esima e la 50esima versione. ho quindi stimato, basandomi sui
compilati ibridi italoinglesi, i miei progressi nella traduzione,
individuando una "finestra" di 200 linee in cui cercare. ho trovato un
piccolo errore, ma non quello che cercavo.
ho quindi provato ad inventariare i cambiamenti "fuori dalla sequenza
di traduzione" (prima la grammatica estesa, per poter compilare con le
librerie italiane, poi dalla prima all'ultima riga rimanente). avevo
inserito due routine in piu', una a sostituire prefacebyarticle,
l'altra era parsenoun, copiata dal dm4. ciononostante, queste 4 righe
incasinano tutto:
[ ParseNoun obj n;
  while (WordInProperty(NextWord(), obj, name)) n++;
  return n;
];
e sono state commentate via. devo ancora capire perche' interferiscano
con la gestione degli oggetti indistinguibili... le avevo aggiunte per
far accettare al parser comandi tipo "prendi la copia del giornale"
senza lamentarsi, dovro' inventarmi qualcosa. in effetti nel § 29 del
dm4 si accenna al fatto che le proprieta' parse_name di due oggetti
indistinguibili possono in qualche modo renderli distinguibili.
vabbe', alla prossima.