Aiuto - Cerca - Utenti - Calendario
Versione completa: migliorare sensibilità punto hotspot
OldGamesItalia > Area Dev > AGS - Adventure Game Studio - Il forum italiano > Aiuti tecnici
eleinad85
salve, sto programmando un gioco in ags e mi resta molto complicato durante il gameplay appena devo prendere un oggetto dall'inventario oppure combinare due oggetti sempre nell'inventario...il problema è che gli hotspot degli oggetti sono talmente minuscoli che non appena ne devi combinare due se non trovi i due punti dell'hotspot che si combaciano non partirà mai l'azione che deve fare...mi chiedevo se è possibile distribuire quel punto lungo tutto l'oggetto in modo tale da poter tranquillamente far combinare i due oggetti, lo stesso vale ovviamente quando lo devo prendere dall'inventario...non so se mi sono spiegato...grazie
AprilSkies
Credo di non aver capito.

Anche perchè gli hotsopt degli oggetti in inventario non si riferiscono all'"area" cliccabile degli oggetti, ma rappresentano la "punta" del puntatore del mouse.

In pratica se l'hotspot di un oggetto si trova in alto a sinistra, quando tale puntino si trova su un'altra cosa puoi cliccare.
Per questo motivo di solito tale "puntino" si posiziona al centro dell'oggetto.

Spero di essermi spiegato.
eleinad85
si infatti se prendo un oggetto dall'inventario e lo uso su un hotpost o un oggetto sulla scena non ci sono problemi appunto perchè l'area dell'oggetti e degli hotspot è grande...ma il problema mi si pone quando con il cursore look o interact vado ad analizzare un oggetto dall'inventario ed è qui che fino a che non si combaciano i due puntini dei due oggetti non mi fa le azioni successive ... lo stesso vale se combino due oggetti dell'inventario, io sto creando gli oggetti dell'inventario 64x64 px e quindi mi resta difficile poterli cliccare tra di loro e prenderli...volevo sapere se c'è un modo per poter allargare quel punto
eleinad85
poi un'altra cosa che nn riesco a capire come togliere...quando prendo un oggetto dall'inventario quest'ultimo mi viene memorizzato nn so dove e quando torno a scorrere tutti i cursori durante il gameplay, ags mi rimette come cursore anche l'ultimo oggetto che ho preso dall'inventario, come si disabilita sta cosa? grazie
AprilSkies
CITAZIONE (eleinad85 @ 29 Apr 2015, 13:39) *
si infatti se prendo un oggetto dall'inventario e lo uso su un hotpost o un oggetto sulla scena non ci sono problemi appunto perchè l'area dell'oggetti e degli hotspot è grande...ma il problema mi si pone quando con il cursore look o interact vado ad analizzare un oggetto dall'inventario ed è qui che fino a che non si combaciano i due puntini dei due oggetti non mi fa le azioni successive ...


Scusa mi se torno su questo argomento, ma ti assicuro che non è così.
Non è necessario che combacino i due puntini. cliccare su un oggetto in inventario è esattamente come cliccare su un oggetto nella scena.
Quindi quello che dici è strano.

Potresti fare uno screenshot in cui si vede che, posizionandoti con il mouse su un oggetto in inventario non te lo riconosce?
eleinad85
in realtà mi sono accorto che è vero non devono combaciare necessariamente, ma mi succede lo stesso una cosa strana, gli oggetti nell'inventario li posso predere o esaminare solo se clicco sulla parte superiore dell'oggetto, nella parte bassa non succede invece...P:S..qualcuno mi può inviare delle sprites per un personaggio?
AprilSkies
controlla che le dimensioni impostate per gli oggetti in inventario siano quelle degli sprites che stai utilizzando.
Controlla anche che non ci sia una qualche GUI (magari invisibile) sopra la GUi dell'inventario.

Inoltre, scusami in anticipo per questo, sarebbe meglio continuare tale discussione nella sezione "PRIMI PASSI", è più appropriato.

eleinad85
ok, non cè nessuna gui sopra anche perchè ho creato io una gui che compare dopo che clicchi su una borsetta in basso a sinistra (tipo broken sword 5) , gli oggetti per l'inventario li ho fatti tutti 64x64 con gimp poi ho semplicemente importato new inventory item e selezionato il cursore e la foto (che poi sono gli stessi) ma dove devo andare a controllare che le dimensioni impostate per gli oggetti in inventario siano quelle degli sprites non trovo nessuna opzione!
AprilSkies
Dentro la Gui inventario, clicca sulla tua finestra inventario (inventory window). lì si impostano le dimensioni della finestra, height e width degli oggetti, spazio tra loro ecc.
eleinad85
ok grazie in effetti era di 20 l'altezza ecco perchè mi prendeva solo la parte superiore...senti ho notato che quando prendo un oggetto da ìll'inventario poi annullo con il tasto destro, al successivo scorrimento dei cursori mi memorizza sempre e comunque,come cursore, l'ultimo oggetto dell'inventario preso...cè un modo per disabilitare sta cosa?
AprilSkies
Sì si può disabilitare.
Per farlo è necessario modificare lo script relativo al pulsante del mouse.

Se non sei stato tu a scrivere tale script, come immagino, e se stai usando il gioco di default, tale script si trova in GlobalScript e si chiama OnMouseClick.

Copia tale script ed incollalo qui ed io ti dirò dove e come modificarlo.
eleinad85
function on_mouse_click(MouseButton button) {
// called when a mouse button is clicked. button is either LEFT or RIGHT
if (IsGamePaused() == 1) {
// Game is paused, so do nothing (ie. don't allow mouse click)
}
else if (button == eMouseLeft) {
ProcessClick(mouse.x, mouse.y, mouse.Mode );
}
else if (button == eMouseRight || button == eMouseWheelSouth){
// right-click our mouse-wheel down, so cycle cursor
mouse.SelectNextMode();
mouse.DisableMode(eModeUseinv);
}
else if (button == eMouseMiddle) {
// Middle-button-click, default make character walk to clicked area (a little shortcut)
// Could have been just "player.Walk(mouse.x,mouse.y)", but it's best to
// leave our options open - what if you have a special script triggered
// on "walking" mode?
ProcessClick(mouse.x, mouse.y, eModeWalkto);
}
else if (button == eMouseWheelNorth) {
// Mouse-wheel up, cycle cursors
// If mode isn't WALK, set the previous mode (notice usage of numbers instead
// of eNums, when it suits us)...
if (mouse.Mode>0) mouse.Mode=mouse.Mode-1;
else
{
// ...but if it is WALK mode...



// If they don't, however, just set it to mode TALK (change this line if you add more cursor modes)
mouse.Mode=eModeTalkto;
}

}
}
AprilSkies

Ho aggiunto due "player.ActiveInventory = null;"
in posizioni strategiche.
Non ho testato per mancanza di tempo, ma dovrebbe funzionare ;-)


CITAZIONE (eleinad85 @ 5 May 2015, 13:40) *
function on_mouse_click(MouseButton button) {
// called when a mouse button is clicked. button is either LEFT or RIGHT
if (IsGamePaused() == 1) {
// Game is paused, so do nothing (ie. don't allow mouse click)
}
else if (button == eMouseLeft) {
ProcessClick(mouse.x, mouse.y, mouse.Mode );
}
else if (button == eMouseRight || button == eMouseWheelSouth){
// right-click our mouse-wheel down, so cycle cursor
player.ActiveInventory = null;
mouse.SelectNextMode();
mouse.DisableMode(eModeUseinv);
}
else if (button == eMouseMiddle) {
// Middle-button-click, default make character walk to clicked area (a little shortcut)
// Could have been just "player.Walk(mouse.x,mouse.y)", but it's best to
// leave our options open - what if you have a special script triggered
// on "walking" mode?
ProcessClick(mouse.x, mouse.y, eModeWalkto);
}
else if (button == eMouseWheelNorth) {
// Mouse-wheel up, cycle cursors
// If mode isn't WALK, set the previous mode (notice usage of numbers instead
// of eNums, when it suits us)...
player.ActiveInventory = null;
if (mouse.Mode>0) mouse.Mode=mouse.Mode-1;
else
{
// ...but if it is WALK mode...



// If they don't, however, just set it to mode TALK (change this line if you add more cursor modes)
mouse.Mode=eModeTalkto;
}

}
}
eleinad85
grazie funziona xD...senti sai come si tolgono le letter box quando che compilo e avvio il winsetup e lancio il gioco a tutto schermo con le direct x 9 a 1024*768 non mi si vede full ma con i bordi neri a qualsiasi risoluzione che ho nello schermo, ho visto che nelle versioni vecchie c'era un opzione in general setting ma alla 3 l'hanno tolta, cè un altro modo?
AprilSkies
Se lanci il game setup, in basso a destra c'è il pulsante "Advanced".
Se clicchi quello compariranno le opzioni per l'adattamento a schermo: Graphics setting. Lì devi togliere le spunte da Enable top & bottom borders e/0 da Enable side borders... fai un po' di prove ^__^
eleinad85
perfetto, io ho sviluppato a 1024*768 il massimo, cè qlke plugin che tu sappia che mi fa mettere una risoluzione maggiore?
AprilSkies
Più che un Plug-in, c'è in sviluppo proprio la nuova versione dell'Engine, la 3.4 "custom resolution" che permette qualsiasi risoluzione, però è ancora in versione "Alpha", non ufficialmente dichiarata stabile:
http://www.adventuregamestudio.co.uk/forum...p?topic=51050.0

L'ho solo provata e mi sembra stabile, ma ovviamente non ci metto la mano sul fuoco.

Se non hai intenzione di fare cose particolari, ti consiglio di provarla.
eleinad85
interessante poi la proverò, ma se lo installo adesso che ho un progetto avviato mi scasina tutto?
AprilSkies
Fai una copia di backup dell'attuale progetto.

In teoria no, ma come ti ripeto è una versione alpha, quindi ... Meglio fare una copia di backup.

Poi tieni conto che se installi la 3.4, la versione 3.3 rimane sul tuo PC e puoi continuare ad usare entrambe.
eleinad85
ok grazie, senti non è che per caso hai un personaggio da darmi? tutte le sprites intendo, sto sviluppando a 1024*768...? oppure un sito dove posso scaricare dei personaggi
eleinad85
intanto ne approfitto per chiederti altre cose...io ho messo una musica di sottofondo nella funzione gamestart, quindi mi parte appena si avvia il gioco e poi ricomincia sempre...ma il problema è che durante il gioco faccio partire di video con la funzione playvideo() ma mi succede che la musica mi si stoppa, ovviamente deve partire il video quindi è normale, ma finito il video la musica non continua più, ho visto tra i metodi e non cè musica.pause...come posso ovviare a questo problema?
AprilSkies
Ciao scusa il ritardo nella risposta...
Non puoi semplicemente far ripartire la musica dopo che il video è finito, con un nuovo comando play?

P.S. per gli sprites, in realtà ci sono tanti siti ... non saprei...
Io creo i miei sprites ex novo...
eleinad85
ciao, si per adesso infatti ho fatto cosi, certo non è un dramma però mi piacerebbe che si metteva in pausa, non c'è nessun modo per farlo vero?
per gli sprites ne ho trovato qualcuno ma sono la maggior parte di bassisima risoluzione, come li posso creare in maniera abbastanza veloce che mi crea i vari sprites da solo? che programma usi? io ho provato blender ma ci metto un casino di tempo per fare un personaggio
AprilSkies
Scusami la risposta super tardiva!

Personalmente io creo i miei sprites da zero in grafica 2D, pixelandoli da zero e poi creo lo sprite sheet realizzando frame per frame.

Ma ovviamente nel mio caso è fattibile poichè i miei giochi sono in bassissima risoluzione.

Nel tuo caso cosa vorrwsti fare? personaggi 3D? (nel qual caso credo che blender sia la cosa migliore)
che risoluzione vorresti utilizzare?
eleinad85
io attualmente sto usando la 1024*768, sono riuscito a trovare qualcosa ma molto bassa risoluzione...io voglio fare un personaggio ai livelli di broken sword 5, bello disegnato....possibile non si trovano online degli sprites pronti in alta risoluzione? farlo con blender divento vecchio come posso fare?
AprilSkies
Mi spiace ma non saprei... Ripeto sono abituato a disegnarli ex novo per i miei giochi.

Il fatto è che,se vuoi fare un gioco originale non è consigliato usare sprites "rippati" da altri giochi.

Ad ogni modo... Ci sono molti siti con sprites presi da altri giochi, ma tutti in bassa risoluzione. E' difficile trovare sprites "rippati" da giochi attuali in alta risoluzione.

Un po' di risorse freeware puoi trovarle qui:
http://www.reinerstilesets.de/
http://sandbox.yoyogames.com/make/resources#
http://letsmakegames.org/resources/art-ass...ame-developers/

In teoria googolando ce ne sono diversi...
eleinad85
capisco, faccio rstamp su george stobbart poi mi faccio tutte le sprites che ne dici potrà andare? poi ovviamente con photoshop cambio capelli e vestiti almeno xD....per creare enigmi più elaborati cosa mi consigli?
AprilSkies
Potrà andare ^__^
Certo, se fai un gioco non commerciale.. un fangame diciamo... all Broken Sword 2.5

Se vuoi un buon esempio di come "rippare" sprites e poi moficiarli per bene, guarda questo: https://www.youtube.com/watch?v=jALHvvwn3Dg
(qui gli sprites sono presi e modificati da indiana jones, monkey island ecc.).

per creare buoni enigmi.. in realtà serve un buon game design...

ti consiglio di leggere queste bellissime trattazioni del mio amico LostTrainDude:
http://www.christophersacchi.com/unpoint-u...-synchronicity/
http://www.christophersacchi.com/unpoint-unclick-broken-age/
e SOPRATTUTTO questo:
http://grumpygamer.com/why_adventure_games_suck
eleinad85
grazie, come posso fare per scorrere gli oggetti dell'inventario con i tasti della tastiera...la documentazione in inglese nn mi aiuta per niente, per trovare dei metodi sempre problemi..io vorrei per esempio che con il tasto S scorro gli oggetti in avanti e me li mette come cursore e con il tasto A viceversa...tipo, il primo che mi viene in mente, the longest journey,per farti capire!
Vincent
Ciao Eleinad85, se stai utilizzando l'inventario predefinito in Ags cioè "InventoryWindow" potresti cercare nel manuale sotto la sezione :
"ScrollUp (inv window)" e "ScrollDown (inv window)"

Queste funzioni permettono di scorrere sopra/sotto la finestra dell'inventario di una riga (se ci sono più elementi da visualizzare). Altrimenti non succede nulla.

Una vaga idea di come poter implementare la tua idea potrebbe essere cosi..
CODICE
function on_key_press (eKeyCode keycode)
{
   if (keycode == eKeyS)
   {
       invMain.ScrollUp();
   }

   if (keycode == eKeyA)
   {
       invMain.ScrollDown();
   }
}


Per quanto riguarda la trasmutazione del cursore sul determinato oggetto selezionato nell'inventario non è poi cosi difficile blush.gif
Questa è la versione 'lo-fi' del forum. Per visualizzare la versione completa con molte più informazioni, formattazione ed immagini, per favore clicca qui.
Invision Power Board © 2001-2020 Invision Power Services, Inc.