Speng ha scritto:saaaaaalve ragassuoli, ho un problemino (che novità, eh?
)
Non riesco a far in modo che una determinata istanza vada a leggere la variabile di un altra istanza. Il problema risiede nel fatto che utilizzo sempre lo stesso oggetto, mi spiego meglio:
Ho un oggetto chiamato "oggetto1" e la variabile di questo è "var1".
Quando creo 2 di questi oggetti e li metto vicini, il primo deve leggere la variabile del secondo x vedere se è giusta, nel caso che l'oggetto1 si ritrova in mezzo a 2 oggetto1 dovrà leggere le var1 di entrambi.
Visto che l'oggetto è sempre lo stesso non posso utilizzare oggetto1.var1 in quanto ce ne sono parecchi di oggetto1, avevo pensato di usare il comando "with" ma questo non funzionerebbe in quanto semplicemente si interfaccia su un diverso oggetto e lavora su quello. Mi ci sono scervellato x giorni, ma ancora non trovo una risposta... mi potreste aiutare x favore?
Sì, il problema si può risolvere con le due funzioni instance_number(obj) e instance_find(obj, n).
instance_number(obj) ritorna il conteggio degli oggetti di tipo obj
instance_find(obj, n) restituisce l'id dell'istanza numero n di tipo obj
Per esempio: se hai 2 oggetti oggetto1 nella room, instance_number(oggetto1) torna 2 come risultato (conteggio), mentre instance_find(oggetto1,0) e instance_find(oggetto1,1) restituiscono gli id rispettivamente del primo e del secondo oggetto1.
Nel tuo caso, qualcosa del genere dovrebbe andar bene:
Codice: Seleziona tutto
var conteggio,i,ret_id;
conteggio=instance_number(oggetto1); // calcola il numero di oggetti di tipo oggetto1
for (i=0;i<conteggio;i++) // esamina uno per uno i vari oggetti di tipo oggetto1
{
ret_id=instance_find(oggetto1,i); // ottiene l'id dell'oggetto numero i di tipo oggetto1
if (ret_id==id) continue; // se l'id trovato coincide con l'oggetto dal quale viene eseguito il codice, passa all'oggetto successivo
[qui dovrai fare i vari controlli di posizione]
}
Questo è solo un esempio generale, per illustrarti un possibile modo di come utilizzare queste due funzioni. Nello specifico, dovrai scrivere codice opportuno.