Benvenuto Visitatore(Log In|Registrati)
4 Jun 2014, 10:25
Messaggio
#1
|
|
|
Gruppo: Gamer Messaggi: 29 Iscritto il: 28 May 14 Utente Nr.: 20.437 BGE Indiana Jones and The Last Crusade (Lucasfilm Games-1989) Playing Broken Sword 5 - La maledizione del serpente SO Windows7 |
Non so se sono il primo a postare in questa sezione... comunque spero non sia troppo banale come aiuto
Non sono esperto di scripting avanzato su AGS, probabilmente non esperto neanche di scripting basico, eheh -Il primo è il puzzle classico della combinazione (l'organo di teschi in Last Crusade) Io faccio 4 o 5 hotspot o oggetti (con hotspot) a cui posso assegnare dei suoni. Poi creo una variabile INT e metto il codice quando carico la Room. Come imposto uno script di questo genere? -Questo forse è più semplice, ma ahimè sono mesi che non uso AGS e devo ritrovare un po' di dimestichezza. Come faccio a gestire le proprietà visible o transparency di un hotspot, personaggio o oggetti tra le varie schermate. Mi spiego meglio: ho Room_1, Room_2, Room_3 e sono collegate tra loro da porte o simili. Io sono su Room_3 e assegno al mio personaggio un azione. Alla fine dell'azione voglio che un dato hotspot o oggetto che si trova però in Room_2 diventi visible= true o transparency = 100 etc etc, non ricordo se devo usare _root o altro. |
|
|
|
![]() |
8 Oct 2014, 23:17
Messaggio
#2
|
|
Gruppo: Gamer Messaggi: 18 Iscritto il: 26 February 14 Utente Nr.: 20.320 SO Windows7 |
Azzarola mi dispiace aver visto solo adesso questa discussione. Lo script per gestire l'enigma può essere scritto in vari modi in base anche a cosa deve accadere nel gioco dopo la risoluzione di esso.
Per chi fosse ancora interessato ecco come ho risolto prendendo come base il post di Gabarts: CODICE // room script file
int code; //Variabile che tiene conto del codice; bool enigmaRisolto = false; //Variabile che tiene conto se l'enigma è stato risolto o meno; //Bottone A function hA_Interact() { if(enigmaRisolto == false) //Se l'enigma non è stato risolto possiamo continuare a cercare di risolverlo... { cEgo.Walk(140, 220); if(code == 2) code++; else code = 0; } else //...altrimenti se è già stato risolto fa dire la frase ad Ego e non ci fa più accedere all'enigma { cEgo.Say("L'ho gia' risolto!"); } } //Bottone B function hB_Interact() { if(enigmaRisolto == false) { cEgo.Walk(240, 220); if(code == 3) code++; else code = 0; } else { cEgo.Say("L'ho gia' risolto!"); } } //Bottone C function hC_Interact() { if(enigmaRisolto == false) { cEgo.Walk(340, 220); if(code == 0) code++; else code = 0; } else { cEgo.Say("L'ho gia' risolto!"); } } //Bottone D function hD_Interact() { if(enigmaRisolto == false) { cEgo.Walk(440, 220); if(code == 1) code++; else code = 0; } else { cEgo.Say("L'ho gia' risolto!"); } } function room_RepExec() { if(code == 4){ //Se code è uguale a 4... enigmaRisolto = true; //...enigmaRisolto diventa true Display("Enigma risolto."); //code rtorna a 0. Se rimarrebbe 4, dato che questo codice è posto in Repeatedly Execute, le due righe di cui //sopra verrebbero continuamente eseguite, il che farebbe continuamente apparire la scritta "Enigma risolto." //bloccando il gioco. //Settando code a 0, l'if posto in room_RepExec() non verrà più soddisfatto e AGS non ri-eseguirà enigmaRisolto = true; e Display("Enigma risolto."); //permettendoci così di proseguire il gioco. code = 0; } } Messaggio modificato da Procione il 9 Oct 2014, 22:13 |
|
|
|
27 Nov 2014, 22:48
Messaggio
#3
|
|
|
Gruppo: Gamer Messaggi: 29 Iscritto il: 28 May 14 Utente Nr.: 20.437 BGE Indiana Jones and The Last Crusade (Lucasfilm Games-1989) Playing Broken Sword 5 - La maledizione del serpente SO Windows7 |
Azzarola mi dispiace aver visto solo adesso questa discussione. Lo script per gestire l'enigma può essere scritto in vari modi in base anche a cosa deve accadere nel gioco dopo la risoluzione di esso. Per chi fosse ancora interessato ecco come ho risolto prendendo come base il post di Gabarts: CODICE // room script file int code; //Variabile che tiene conto del codice; bool enigmaRisolto = false; //Variabile che tiene conto se l'enigma è stato risolto o meno; //Bottone A function hA_Interact() { if(enigmaRisolto == false) //Se l'enigma non è stato risolto possiamo continuare a cercare di risolverlo... { cEgo.Walk(140, 220); if(code == 2) code++; else code = 0; } else //...altrimenti se è già stato risolto fa dire la frase ad Ego e non ci fa più accedere all'enigma { cEgo.Say("L'ho gia' risolto!"); } } //Bottone B function hB_Interact() { if(enigmaRisolto == false) { cEgo.Walk(240, 220); if(code == 3) code++; else code = 0; } else { cEgo.Say("L'ho gia' risolto!"); } } //Bottone C function hC_Interact() { if(enigmaRisolto == false) { cEgo.Walk(340, 220); if(code == 0) code++; else code = 0; } else { cEgo.Say("L'ho gia' risolto!"); } } //Bottone D function hD_Interact() { if(enigmaRisolto == false) { cEgo.Walk(440, 220); if(code == 1) code++; else code = 0; } else { cEgo.Say("L'ho gia' risolto!"); } } function room_RepExec() { if(code == 4){ //Se code è uguale a 4... enigmaRisolto = true; //...enigmaRisolto diventa true Display("Enigma risolto."); //code rtorna a 0. Se rimarrebbe 4, dato che questo codice è posto in Repeatedly Execute, le due righe di cui //sopra verrebbero continuamente eseguite, il che farebbe continuamente apparire la scritta "Enigma risolto." //bloccando il gioco. //Settando code a 0, l'if posto in room_RepExec() non verrà più soddisfatto e AGS non ri-eseguirà enigmaRisolto = true; e Display("Enigma risolto."); //permettendoci così di proseguire il gioco. code = 0; } } Grazie! Scusa se ho letto adesso la tua risposta, navigando tra un forum e l'altro, con cento cose da fare... mi sei stato di grande aiuto. Anche April mi sta aiutando in questo momento... Messaggio modificato da Gabarts il 27 Nov 2014, 22:50 |
|
|
|
27 Nov 2014, 23:10
Messaggio
#4
|
|
|
Gruppo: Gamer Messaggi: 29 Iscritto il: 28 May 14 Utente Nr.: 20.437 BGE Indiana Jones and The Last Crusade (Lucasfilm Games-1989) Playing Broken Sword 5 - La maledizione del serpente SO Windows7 |
Un'altra piccola cosa ma fondamentale riguardo al Puzzle
------------------------------------------------------------------ Riprendendo l'enigma dell'organo in Indy: c'è uno script dell'animazione della porta che non si apre "solo" dopo 6 note premute, ovvero la sequenza calcolata deve essere 6 tentativi. Come si dichiara questa variabile? Ok code = 0; ma per eseguire l'animazione dell'enigma non risolto (ovvero la porta che non si apre del tutto) solo dopo 6 note? Spero di essere stato chiaro |
|
|
|
Gabarts Puzzle-Combinazioni e Schermate 4 Jun 2014, 10:25
AprilSkies Ciao Gab.
Ti rispondo al volo sulla seconda quest... 4 Jun 2014, 11:04
Gabarts CITAZIONE (AprilSkies @ 4 Jun 2014, 12:04... 4 Jun 2014, 11:41
AprilSkies Sì così funziona.
Crea la variabile "code... 4 Jun 2014, 17:27
Gabarts CITAZIONE (AprilSkies @ 4 Jun 2014, 18:27... 6 Jun 2014, 17:28
AprilSkies Nella Room.
Crei gli hotspots (o gli oggetti, non... 7 Jun 2014, 07:44
Gabarts CITAZIONE (AprilSkies @ 7 Jun 2014, 08:44... 8 Jun 2014, 09:53
Gabarts Guarda, sto facendo delle prove per testare su un ... 8 Jun 2014, 23:54
AprilSkies secondo me funziona.
L'unica cosa è che, dato ... 10 Jun 2014, 09:33
Gabarts CITAZIONE (AprilSkies @ 10 Jun 2014, 10:3... 10 Jun 2014, 13:53
Procione CITAZIONE (Gabarts @ 28 Nov 2014, 00:10) ... 10 Dec 2014, 20:57![]() ![]() |
| Versione Lo-Fi | Oggi è il: 6th November 2026 - 02:12 |