Inventario

Hai una curiosità o un problema con Game Maker? Domanda e ti sarà risposto!
Avatar utente
Kimera_V2
Membro
Messaggi: 118
Iscritto il: 27/06/2013, 14:11
Uso: GM:Studio 1.4 Pro
Località: CPU
Contatta:

Inventario

Messaggio da Kimera_V2 »

Ciao raga ho un piccolo problema con gm8... Non riesco a creare un menu... :furioso:
Ho capito che servono le array, so cosa sono so come si creano ma non ho capito come fare ad usarle per sto benedetto menu...
Ho visto l'inventario creato da homunculus ma non fa al caso mio(non ci ho capito quasi niente)a me non serve un menu che funzioni col mouse voglio che quando il personaggio passi sopra ad un oggetto o che quando premo un tasto questo mi prendi gli oggetti.
Sono riuscito a farlo a modo mio con le variabili ma e un po troppo lungo e macchinoso come procedimento.
Per favore mi spiegate come si aggiungono questi cavolo di oggetti al menu tramite array? Quando un oggetto gia esiste come faccio a non farlo duplicare nel menu?
Mi servono solo queste due cose grazie in anticipo a chi mi risponde sono nelle vostre mani :piagne: :piagne: :piagne:

Avatar utente
gameplay_extreme
GMI VIP
Messaggi: 3824
Iscritto il: 13/11/2010, 16:23
Uso: GM:Studio 2
Contatta:

Re: Inventario

Messaggio da gameplay_extreme »

lo vuoi compatibile anche con studio ?
Immagine
clicca sul logo qui sopra per info e download riguardo ai miei software o per sapere come si crea un videogioco!

iscriviti qui gratuitamente a GMI !
Spoiler
- Una curiosità: come mai quell' ordine ?
- Perché formava una scaletta molto carina da vedere.


"ah ah...grazie alla annotazione scientifica ti ho fregato!"
(come disse la calcolatrice al display)

Avatar utente
Kimera_V2
Membro
Messaggi: 118
Iscritto il: 27/06/2013, 14:11
Uso: GM:Studio 1.4 Pro
Località: CPU
Contatta:

Re: Inventario

Messaggio da Kimera_V2 »

Grazie ma per studio non mi serve ho la versione 8 di gm pro.
Se mi risolvi sto problema sei un grande e da due set ke sto fermo per questo cavolo di menu

Avatar utente
gameplay_extreme
GMI VIP
Messaggi: 3824
Iscritto il: 13/11/2010, 16:23
Uso: GM:Studio 2
Contatta:

Re: Inventario

Messaggio da gameplay_extreme »

Kimera_V2 ha scritto:Per favore mi spiegate come si aggiungono questi cavolo di oggetti al menu tramite array? Quando un oggetto gia esiste come faccio a non farlo duplicare nel menu?
cerco di spiegarti come ho fatto io in un mio gioco:
l'array di stringhe inizialmente contiene stringhe vuote (cioè in pratica non ci sono oggetti nell'inventario). Poi man mano che si raccoglievano gli oggetti veniva trovata la prima posizione vuota dell' array (mediante uno script) e ci veniva depositato il nome dell' oggetto (es: "LIBRO", "CHIAVE1", "CHIAVE2" ecc). Alcune azioni del pg (es: aprire le porte) erano automaticamente disponibili se avevi un determinato oggetto (avevo fatto uno script apposito che riornava true se nell' inventario era presente l'oggetto datogli "in pasto" come argomento) e comunque potevi selezionare un oggetto a piacere e "usarlo", a questo punto se avevi avuto l'idea giusta venivano eseguite le istruzioni che facevano eveolvere la storia, altrimenti compariva un messagggio tipo "non puoi usare questo oggetto in questo modo". Cioè in pratica quando premevi il tasto "USA" veniva richiamato un elenco di azioni diverse a seconda di quale era l'oggetto correntemente selezionato e a seconda di cosa aveva di fronte a se il giocatore (a volte veniva controllato anche lo stato di alcune variabili globali), infine (eventualmente) veniva eliminato l'oggetto dall' inventario sovrascrivendo con una stringa vuota (se l'oggetto non serviva più o se lo si poteva usare solo una volta).


cose che ti possono servire:
- ciclo for (per ciclare tutto l'array, per esempio per preparare l'array vuoto...)
- ciclo for + break (per ciclare tutto l'array fino a un certo punto, per esempio quando si incontra la prima posizione vuota dell' array...)
- evento draw / draw_gui (per visualizzare l'inventario)
nota: se l'inventario è creato da un unico oggetto per fare la selezione da mouse devi "lavorare di coordinate". Se invece ogni oggetto dentro al menù è un'istanza puoi usare l'evento "mouse_pressed" di GM.

spero si capisca e di non aver dato troppe cose per scontate...comunque se hai qualche domanda chiedi pure...
Immagine
clicca sul logo qui sopra per info e download riguardo ai miei software o per sapere come si crea un videogioco!

iscriviti qui gratuitamente a GMI !
Spoiler
- Una curiosità: come mai quell' ordine ?
- Perché formava una scaletta molto carina da vedere.


"ah ah...grazie alla annotazione scientifica ti ho fregato!"
(come disse la calcolatrice al display)

Avatar utente
Kimera_V2
Membro
Messaggi: 118
Iscritto il: 27/06/2013, 14:11
Uso: GM:Studio 1.4 Pro
Località: CPU
Contatta:

Re: Inventario

Messaggio da Kimera_V2 »

Ok grazie fin qui c ero arrivato so cm creare le array con tutti i valori degli ogetti cm sprite nome ogetti descrizione quantita max ecc... il mio problema e che nn riesco ad usare le array per inserire gli oggetti nel menu.
Nel mio gioco ce una pozione nascosta in una libreria e voglio che quando premo il tasto ctrl il personaggio mi prende la pozione o quando sempre cn il personaggio ci passo sopra ad un oggetto lo prenda in auto o sempre alla pressione del tasto ctrl.
Poteti farmi un esempio o allegarmi un file giusto per capire cm funziona?

Avatar utente
gameplay_extreme
GMI VIP
Messaggi: 3824
Iscritto il: 13/11/2010, 16:23
Uso: GM:Studio 2
Contatta:

Re: Inventario

Messaggio da gameplay_extreme »

il mio problema e che nn riesco ad usare le array per inserire gli oggetti nel menu.
spiegati meglio...
Nel mio gioco ce una pozione nascosta in una libreria e voglio che quando premo il tasto ctrl il personaggio mi prende la pozione o quando sempre cn il personaggio ci passo sopra ad un oggetto lo prenda in auto o sempre alla pressione del tasto ctrl.
crei un oggetto mani_obj (almeno io in un gioco avevo fatto così) che sarà programmato per essere sempre davanti al pg. Se c'è collisione con la poszione e, contemporaneamente, ctrl e premuto esegui

Codice: Seleziona tutto

var pos //creo la variabile temporanea "pos"
pos = script_inventery_find_first_empty() //trovo il primo posto vuoto all' interno dell' inventario e...
global.inventary[pos] = "POZIONE" //....ci inserisco l' item pozione
Immagine
clicca sul logo qui sopra per info e download riguardo ai miei software o per sapere come si crea un videogioco!

iscriviti qui gratuitamente a GMI !
Spoiler
- Una curiosità: come mai quell' ordine ?
- Perché formava una scaletta molto carina da vedere.


"ah ah...grazie alla annotazione scientifica ti ho fregato!"
(come disse la calcolatrice al display)

Avatar utente
Homunculus
Admin
Messaggi: 6840
Iscritto il: 25/11/2007, 20:36
Contatta:

Re: Inventario

Messaggio da Homunculus »

Non per fare il guastafeste di turno, ma in questo caso non è decisamente meglio una ds_list? Qui un array (di gm) mi sembra una forzatura. Con la ds_list non devi preoccuparti dei buchi, hai una funzione gia pronta che ti dice se un determinato oggetto è gia presente nell'inventario e in che posizione, ecc...

Avatar utente
Kimera_V2
Membro
Messaggi: 118
Iscritto il: 27/06/2013, 14:11
Uso: GM:Studio 1.4 Pro
Località: CPU
Contatta:

Re: Inventario

Messaggio da Kimera_V2 »

Allora io creo un array esempio:
global.array[0,0]="Pozione"
global.array[0,1]=50//ripristina 50 punti salute
...
...
Come faccio ad usare queste array per inserire la pozione nel menu?
Per quanto riguarda il tasto ctrl ho creato un obj_pozione ed all'evento ho messo la collisione con il personaggio quindi ho messo uno script che alla pressione del tasto ctrl e qnd il personaggio sta rivolto frontalmente alla pozione la prende.
Fin qui tt ok la pozione la prende ma nn riesco ad inserirla nel menu.
Perfavore mi sto scervellando ho una confusione pazzesca in testa postatemi un esempio semplice di menu.
Sn riuscito ad inserire il menu proposto da homunculus solo che non riesco ad editarlo come serve a me io entro nel menu
con il tasto m qnd sn nel menu ho una lista pozioni ogetti ecc... quindi qnd il cursore sta su pozioni e preme il tasto invio mi apre una schermata dove dovrebbero andare le pozioni e qui ho messo un evento che mi creare il menu di homunculus fin qui tt ok solo che quando premo il tasto z per chiudere il submenu delle pozioni mi rimangono tt gli sprite degli oggetti anche se distruggo l instanza menu altro problema qnd ritorno nel menu pozioni gli ogetti prima inseriti spariscono ancora altro problema nn riesco ad editarlo per eliminare l inserimento o la cancellazione degli oggetti tramite tasto anziche mouse altra cosa non ho capito dove sta il conteggio deglio ogetti xke tramite file ini potrei caricare la quantita.
Non so se mi sn spiegato bene.

Will
Newbie
Messaggi: 27
Iscritto il: 14/10/2013, 18:01
Specialità: Programmazione
Uso: GM:Studio 1.4 Master
Contatta:

Re: Inventario

Messaggio da Will »

Kimera_V2 ha scritto:[...]
Non so se mi sn spiegato bene.
:piagne:

BotaniciTraffici
Membro attivo
Messaggi: 348
Iscritto il: 31/01/2014, 12:38
Specialità: Programmazione
Uso: GM:Studio 1.4 Master
Contatta:

Re: Inventario

Messaggio da BotaniciTraffici »

Homunculus ha scritto:Non per fare il guastafeste di turno, ma in questo caso non è decisamente meglio una ds_list? Qui un array (di gm) mi sembra una forzatura. Con la ds_list non devi preoccuparti dei buchi, hai una funzione gia pronta che ti dice se un determinato oggetto è gia presente nell'inventario e in che posizione, ecc...
+1 Concordo. In questi casi le ds sono da preferire. Nulla toglie che si possano usare anche gli array.

Avatar utente
Homunculus
Admin
Messaggi: 6840
Iscritto il: 25/11/2007, 20:36
Contatta:

Re: Inventario

Messaggio da Homunculus »

Comunque qui il problema principale è che non si capisce niente rispetto a dove incontri difficoltà, e non è neanche per niente chiaro cosa si vuole ottente alla fine. Non serve a nulla fare post chilometrici se poi non si usano i segni di punteggiatura e tutte le frasi sono confuse.

Oltretutto, non puoi nemmeno tu programmare qualcosa se sei confuso sul risultato da ottenere. Riparti dal principio, descrivi BENE e sinteticamente cosa vuoi ottenere, POI descrivi cosa hai fatto, e poi dove hai difficoltà. Per ora l'unica cosa che ho capito da tutto sto casino è che vuoi fare un inventario e che hai visto i miei esempi, e mi sembra un po poco dopo tutte le parole che sono state spese

Avatar utente
CloudC93
Membro
Messaggi: 67
Iscritto il: 15/03/2014, 17:59
Specialità: Programmazione
Uso: GM:Studio 1.4 Pro
Località: Comiso
Contatta:

Re: Inventario

Messaggio da CloudC93 »

Ecco qui un tutorial - in inglese purtroppo ( o no!) - che spiega il codice da usare e il modo in cui funziona ;)

Non so dirti altro :fapensare:

EDIT: avevo dimenticato il link xD
Ecco: https://www.youtube.com/watch?v=DviYkdMhnZY
"...non può piovere per sempre..."

The Adventures of Unknown Hero - http://theadventuresofunknownhero.wordpress.com/

Avatar utente
Kimera_V2
Membro
Messaggi: 118
Iscritto il: 27/06/2013, 14:11
Uso: GM:Studio 1.4 Pro
Località: CPU
Contatta:

Re: Inventario

Messaggio da Kimera_V2 »

Scusate la confusione ma sto risp dal cellulare, tornando ai miei problemi vi spiego bene, voglio creare un inventario dove andranno ad inserirsi tutti gli oggetti raccolti per ora ho fatto questo:
1.Ho creato una room che sara il menu dell inventario
2.Ho creato un obj_cursore per spostarmi tra le varie voci(pozioni,oggetti,opzioni,salva partita ecc...)
3.Quando l obj_cursore si trova sulla voce pozioni alla pressione del tasto invio mi si apre un submenu pozioni al cui interno ce un altro cursore che mi serve per selezionare le varie pozioni.
Fin qui tutto ok, il problema mi si presenta quando voglio inserire nel submenu pozioni un oggetto(pozione).
Il menu lo vorrei fatto in modo che quando il personaggio trova un pozione alla pressione del tasto ctrl questa venisse inserita nell inventario e che tramite cursore(quello per selezionare le pozioni) quando premo invio la quantita diminuisse.
Ho visto l esempio di menu proposto da homunculus e sono riuscito ad inserirlo nel mio gioco con pessimi risultati :spat:
cioe quando chiudo il submenu pozioni e distruggendo l instanza dell inventario mi rimangono tt gli sprite e se rientro nel submenu le pozioni inserite prima spariscono.
Quindi ricapitolando vorrei un menu cosi:
1.gli oggetti si inseriscono tramite pressione del tasto ctrl
2.la quantita degli oggetti diminuisse con la pressione del tasto invio
3.ultimo punto vorrei che la quantita degli oggetti venisse salvata in qualche variabile o stringa in modo che quando carico la partita gli oggetti raccolti nn sparissero.
Spero che questa volta sia stato piu chiaro.
Edit:
Comunque ho visto l esempio proposto da cloud nn fa al caso mio xke gli oggetti gli inserisce tramite mouse nel mio giocoil mouse nn si usa.

Avatar utente
gameplay_extreme
GMI VIP
Messaggi: 3824
Iscritto il: 13/11/2010, 16:23
Uso: GM:Studio 2
Contatta:

Re: Inventario

Messaggio da gameplay_extreme »

Non per fare il guastafeste di turno, ma in questo caso non è decisamente meglio una ds_list? Qui un array (di gm) mi sembra una forzatura. Con la ds_list non devi preoccuparti dei buchi, hai una funzione gia pronta che ti dice se un determinato oggetto è gia presente nell'inventario e in che posizione, ecc...
+1 Concordo. In questi casi le ds sono da preferire. Nulla toglie che si possano usare anche gli array.
che vi posso dire...avrete sicuramente ragione, solo c'è un problema: di ds_list non so quasi niente e non le ho mai usate (complice anche il fatto che ho da poco la pro)...
Immagine
clicca sul logo qui sopra per info e download riguardo ai miei software o per sapere come si crea un videogioco!

iscriviti qui gratuitamente a GMI !
Spoiler
- Una curiosità: come mai quell' ordine ?
- Perché formava una scaletta molto carina da vedere.


"ah ah...grazie alla annotazione scientifica ti ho fregato!"
(come disse la calcolatrice al display)

Avatar utente
gameplay_extreme
GMI VIP
Messaggi: 3824
Iscritto il: 13/11/2010, 16:23
Uso: GM:Studio 2
Contatta:

Re: Inventario

Messaggio da gameplay_extreme »

gli oggetti si inseriscono tramite pressione del tasto ctrl
questo te l'ho già detto.
gameplay_extreme ha scritto: crei un oggetto mani_obj (almeno io in un gioco avevo fatto così) che sarà programmato per essere sempre davanti al pg. Se c'è collisione con la poszione e, contemporaneamente, ctrl è premuto esegui

Codice: Seleziona tutto

var pos //creo la variabile temporanea "pos"
pos = script_inventery_find_first_empty() //trovo il primo posto vuoto all' interno dell' inventario e...
global.inventary[pos] = "POZIONE" //....ci inserisco l' item pozione
Puoi usare gli array oppure le ds-list. Nel primo caso devi fare più cose a mano (=creati uno script script_inventery_find_first_empty() usando i cicli come ti dicevo sopra), nel secondo caso hai piu funzionalità native ma la sintassi (che io non conosco bene) è un pò diversa.
la quantita degli oggetti diminuisse con la pressione del tasto invio
spiegati meglio...
ultimo punto vorrei che la quantita degli oggetti venisse salvata in qualche variabile o stringa in modo che quando carico la partita gli oggetti raccolti nn sparissero.
basta salvare l'array o ds-list su file txt o file ini e rileggerlo al caricamento successivo (se usi le ds-list se non sbaglio anche in questo caso hai più automatismi)
comunque ti dico più in dettaglio come farei io (array):

Codice: Seleziona tutto

//salvataggio (vedi te se preferisci iniziare con 0 o 1)
ini_open("salvataggio.ini")
for (k=1; k <= global.max_oggetti; k += 1)
 {
   ini_write_string("INVENTARIO", "OGGETTO"+string(k), global.inv[k])
 }
ini_close()

Codice: Seleziona tutto

//caricamento
ini_open("salvataggio.ini")
for (k=1; k <= global.max_oggetti; k += 1)
 {
   global.inv[k] = ini_read_string("INVENTARIO", "OGGETTO"+string(k),"")
 }
ini_close()
Immagine
clicca sul logo qui sopra per info e download riguardo ai miei software o per sapere come si crea un videogioco!

iscriviti qui gratuitamente a GMI !
Spoiler
- Una curiosità: come mai quell' ordine ?
- Perché formava una scaletta molto carina da vedere.


"ah ah...grazie alla annotazione scientifica ti ho fregato!"
(come disse la calcolatrice al display)

Avatar utente
Homunculus
Admin
Messaggi: 6840
Iscritto il: 25/11/2007, 20:36
Contatta:

Re: Inventario

Messaggio da Homunculus »

Kimera_V2 ha scritto: Comunque ho visto l esempio proposto da cloud nn fa al caso mio xke gli oggetti gli inserisce tramite mouse nel mio giocoil mouse nn si usa.
... modifichi l'inventario in modo che la gestione sia fatta con la tastiera invece che col mouse. Non sarà questo il grosso problema spero? Non puoi mica aspettarti un esempio in cui l'inventario é ESATTAMENTE uguale a quello che serve a te. L'idea é che trovi qualche esempio, te lo studi, e poi modifichi in base alle tue necessità.

Penso che sul forum ci sia anche gente disposta a prepararti un esempio ad hoc, ma anche in questo caso stai dando troppe poche informazioni. Abbiamo capito che gli oggetti sono divisi per categoria (pozioni, oggetti, armi?, ecc...) e che vanno inseriti in modo "cumulativo" (nel senso che più oggetti uguali aumentano la quantità, non occupano spazi differenti), ma se sono tutte qua le specifiche del tuo inventario sono un po' poverine, dicci per esempio:

- Gli oggetti nell'inventario sono mostrati in una griglia o in una lista?
- Sono mostrati solo a livello testuale o col loro sprite?
- Hai un limite massimo di oggetti totali, o il limite dipende dalla categoria?
- Da quanti oggetti totali (all'incirca) é composto il tuo database? Perché un conto é preparare un inventario che preveda una ventina di oggetti diversi, un altro conto é la gestione di un database di migliaia di oggetti (nel primo caso puoi semplificarti la vita creando fisicamente degli oggetti, nel secondo va programmato un database sullo stile del mio esempio con un array bidimensionale)
- C'é un ordine specifico in cui gli oggetti vengono mostrati, o il giocatore ha la possibilità di ordinarli manualmente?

Insomma, cose di questo genere...

Avatar utente
Kimera_V2
Membro
Messaggi: 118
Iscritto il: 27/06/2013, 14:11
Uso: GM:Studio 1.4 Pro
Località: CPU
Contatta:

Re: Inventario

Messaggio da Kimera_V2 »

Scusate mi saro rincoglionito ad amsterdam :asd: :asd: :asd: comunque il menu è identico a quello di homunculus solo che cambiano alcune cose:
1.gli oggetti si inserisco nel menu quando il personaggio collide con essi e viene premuto il tasto ctrl
2.gli oggetti diminuisco la loro quantita quando il cursore del menu collide con un oggetto(es.pozione manna)e viene premuto il tasto invio
Come ho gia detto non sono riuscito ad editare il menu di homunculus per il mio caso, ho capito come fare le celle, le colonne e le righe ma non sono riuscito ad eliminare la funzione del mouse e dei tasto da 0 a 6, altro problema quando richiudo il menu mi rimangono tt gli sprite visibili anche se distruggo obj_menu(cioe celle,colonne,righe ecc...) e la quantita deglio oggetti non viene salvata.
INFO DEL MIO MENU:
- Gli oggetti nell'inventario sono mostrati in una griglia
- Sono mostrati solo col loro sprite
- il limite dipende dalla categoria
- è composto da migliaia di oggetti
Spero che questa volta sia stato molto piu chiaro.

Avatar utente
Homunculus
Admin
Messaggi: 6840
Iscritto il: 25/11/2007, 20:36
Contatta:

Re: Inventario

Messaggio da Homunculus »

Sei sicuro di avere le conoscenze necessarie per costruire un menu del genere? Perché francamente se hai già problemi a eliminare la funzionalità dei tasti da 0 a 6 e quella del mouse, mi chiedo come puoi anche solo sperare di capire come funziona il resto... E questo é ancora più chiaro quando dici che eliminando obj_menu dici che ti rimangono visibili gli sprites e la quantità di oggetti non viene salvata, vuol dire che non hai capito NIENTE di come funziona il menu di esempio che ho fatto.

Non ti sto dicendo queste cose perché sono bastardo e mi piace farti notare cosa non funziona, ma perché ho il presentimento che stai cercando di fare qualcosa che va al di la delle tue capacità. Oltretutto se effettivamente rischi di avere un database così grande significa probabilmente che non ti serve un menu di base, ma qualcosa di molto strutturato, e quindi non riesco nemmeno a pensare ad una semplificazione di quanto ho già fatto nei miei esempi.

Avatar utente
Kimera_V2
Membro
Messaggi: 118
Iscritto il: 27/06/2013, 14:11
Uso: GM:Studio 1.4 Pro
Località: CPU
Contatta:

Re: Inventario

Messaggio da Kimera_V2 »

Infatti non ho capito bene come funziona sto qui apposta per capire speravo in un esempio piu vicino al mio caso ma niente da fare.
Nessuna anima pia puo postarmi un progettino semplice semplice giusto per capire come inserire sti cavolo di oggetti nel menu?
Ho provato con le variabili ma è troppo lungo e macchinoso ma il risultato finale andava bene, quindi credevo che qualcuno mi spiegasse meglio come usare le array o le ds_list.
Vi spiego ancora meglio il mio menu e composto cosi:

LISTA VOCI MENU
Pozioni (quando il cursore sta qui e premo invio si apre il menu pozioni dove ipoteticamente andranno tutte le pozioni raccolte)
Oggetti (quando il cursore sta qui e premo invio si apre il menu oggetti dove ipoteticamente andranno tutti gli oggetti raccolti)
Deck carte
Opzioni
Salva partita
Carica partita

MENU POZIONI
e composto da una griglia dove all'interno ce un cursore per selezionare le varie pozioni ed usarle

MENU OGGETTI
e composto da una griglia dove all'interno ce un cursore per selezionare i vari oggetti ed equipaggiarli

....
....
....

diciamo che è composta da un bel po di oggetti ma alla fine avevo pensato di creare piu obj_menu per ogni singola voce es. obj_menu_pozioni, obj_menu_ogetti ecc... dove ogni singolo obj ha la sua array o ds_list e avevo in mente di richiamare tali obj in base a dove si trova il cursore sulle voci menu.

Avatar utente
Homunculus
Admin
Messaggi: 6840
Iscritto il: 25/11/2007, 20:36
Contatta:

Re: Inventario

Messaggio da Homunculus »

Il vero problema é che stai chiedendo una soluzione semplice ad un problema che non lo é. Fare un inventario programmato come si deve é difficile, in particolare nel tuo caso specifico dove la quantità di oggetti é tale da non permetterti di creare un singolo object per ogni oggetto che può finire in inventario, ma devi lavorare su una base di dati astratta.

Posso provare a semplificarti il mio esempio e adattarlo un po' di più a ciò che ti serve, ma non aspettarti un miracolo, c'é un motive se ci sono così tanti scripts.

Rispondi

Chi c’è in linea

Visitano il forum: Nessuno e 43 ospiti