Benvenuto Visitatore(Log In|Registrati)

6 Pagine V   1 2 3 > »   
Reply to this topicStart new topic
> PRIMI PASSI, L'angolo del principiante
LargoLagrande
messaggio23 Feb 2014, 00:33
Messaggio #1



Gruppo icone

Gruppo: SMod
Messaggi: 2.671
Iscritto il: 21 January 11
Da: Bari
Utente Nr.: 18.333
BGE The Secret of Monkey Island
Playing Papers, Please!
SO WinVista




Qui potete postare tutte le domande generiche e più frequenti relative all'utilizzo di AGS. Riservato a chi muove i primi passi.

Qualche utente più esperto vi risponderà. in bocca al lupo!


--------------------
Old Games Italia presenta INDIEtro Tutta - La rubrica settimanale dedicata al mondo videoludico indipendente. Seguici su Twitter e Facebook

"Ambition is a poor excuse for not having sense enough to be lazy" (E. Bergen)
 
Squall_Leonheart
messaggio14 Nov 2014, 16:44
Messaggio #2





Gruppo: Gamer
Messaggi: 83
Iscritto il: 8 November 14
Utente Nr.: 20.571
SO Windows7




Ragazzi ho un problema, nonostante come da screen abbia selezionato le aree giuste per il movimento del personaggio, non clicca il "vai a" quando la sua posizione è più in alto del cursore :( come mai?


 
AprilSkies
messaggio14 Nov 2014, 17:12
Messaggio #3



Gruppo icone

Gruppo: Oldgame Editor
Messaggi: 516
Iscritto il: 16 May 12
Utente Nr.: 19.376
BGE The secret of Monkey Island
Playing The secret of Monkey Island
SO WinVista




Intendi dire che se clicchi al di fuori dell'area "camminabile" non ti cammina?
Oppure intendi dire che se il personaggio è più in alto del cursore?

Stai usando una interfaccia standard? Se sì che tipo? (sierra, 9verbs, verb-coin)?

Non è che dove clicchi ci sono hotspot?

Dammi qualche info in più.

Messaggio modificato da AprilSkies il 14 Nov 2014, 17:14
 
Squall_Leonheart
messaggio14 Nov 2014, 20:13
Messaggio #4





Gruppo: Gamer
Messaggi: 83
Iscritto il: 8 November 14
Utente Nr.: 20.571
SO Windows7




No non ci sono hotspot in quel punto. Praticamente se clicco sulla parte della parete (che come vedi non ho impostato come walkable areas) si muove verso l'alto, va anche verso Barman. Ma nel resto non si muovo. Sono partito dal Default, l'unica modifica è stata quella di predisporre la visualizzazione della GUI solo quando il mouse scorre nella parte alta.
Anche la Baseline e le edge sembrano apposto. Ti posto vari screen :



Le Regions non sono proprie settate.
 
AprilSkies
messaggio15 Nov 2014, 10:35
Messaggio #5



Gruppo icone

Gruppo: Oldgame Editor
Messaggi: 516
Iscritto il: 16 May 12
Utente Nr.: 19.376
BGE The secret of Monkey Island
Playing The secret of Monkey Island
SO WinVista




E' un comportamento abbastanza strano, per come lo descrivi.

Visto che sei all'inizio del gioco, immagino hai fatto abbastanza poco, per cui se vuoi, potresti uppare i file "sorgente" (non il gioco compilato) su qualche sharing (tipo dropboz o altro) così gli do un'occhiata.

perché detto così non so proprio a cosa pensare. Non ho mai riscontrato cose strane di questo tipo.
 
Squall_Leonheart
messaggio17 Nov 2014, 15:58
Messaggio #6





Gruppo: Gamer
Messaggi: 83
Iscritto il: 8 November 14
Utente Nr.: 20.571
SO Windows7




Dimmi i file che ti servono e te li mando in mp

Comunque per essere più specifico, non clicca tutta la zona in basso in cui normalmente è presente la Gui. Ora nonostante l'abbia impostata in al alto quando il mouse passa lì. Non è che qualche opzione è rimasta in basso e quindi non posso proprio cliccarci?

Messaggio modificato da Squall_Leonheart il 17 Nov 2014, 16:45
 
AprilSkies
messaggio17 Nov 2014, 19:00
Messaggio #7



Gruppo icone

Gruppo: Oldgame Editor
Messaggi: 516
Iscritto il: 16 May 12
Utente Nr.: 19.376
BGE The secret of Monkey Island
Playing The secret of Monkey Island
SO WinVista




A-Ah!

Allora c'era qualcosa in basso!!!

La GUI per esempio!
Quella è una spiegazione!!!

Prima di passarmi i file, fammi uno screenshot dei menù di impostazione delle GUI e scopriamo subito se c'è qualche cose che rimane in basso!

Se non risolviamo ti mando un MP con i fileche mi servono.
 
Squall_Leonheart
messaggio17 Nov 2014, 20:56
Messaggio #8





Gruppo: Gamer
Messaggi: 83
Iscritto il: 8 November 14
Utente Nr.: 20.571
SO Windows7




Perdonami ho appena risolto nel gDialogsGui avevo rimasto il valore top a 142 quindi leggeva quello in basso!
Ora ho un altro problema, se voglio rendere la gui visibile attraverso un pulsante, ad esempio la classica Gui di Monkey Island attivata con la barra spaziatrice. Inoltre volevo sapere come accelerare l'animazione della camminata oltre il valore Delay che sta nelle Views, visto che utilizzo un 50 frame blush.gif
Grazie mille per l'aiuto blush.gif!

Messaggio modificato da Squall_Leonheart il 17 Nov 2014, 20:57
 
AprilSkies
messaggio18 Nov 2014, 18:07
Messaggio #9



Gruppo icone

Gruppo: Oldgame Editor
Messaggi: 516
Iscritto il: 16 May 12
Utente Nr.: 19.376
BGE The secret of Monkey Island
Playing The secret of Monkey Island
SO WinVista




Per attivare una GUI con la barra spaziatrice, nulla di più facile.
Vai nel global script e sotto la funzione
on_key_press (che dovresti già avere bell'è pronta se usi il gioco default) scrivi:

if (keycode == eKeySpace)
{
// qui metti il tuo script che fa comparire la gui se è invisibile e, sempre premendo spazio la fa scomparire se visibile
// supponiamo la gui si chiami gPROVA
if (gPROVA.Visible == true) gPROVA.Visible = false;
else gPROVA.Visible = true;
}

Per la camminata, attenzione: il valore "delay" che sta nelle view non influisce sulla camminata. quello serve solo per vedere l'animazione così ti rendi conto.
Il valore del delay usato "in game" si imposta nel menù del personaggio (menù a destra) Lì devi impostare due valori:
Animation Delay e Movement Speed.
Variali finchè non becchi i valori che ti aggradano l'occhio ;-)
 
Squall_Leonheart
messaggio18 Nov 2014, 22:31
Messaggio #10





Gruppo: Gamer
Messaggi: 83
Iscritto il: 8 November 14
Utente Nr.: 20.571
SO Windows7




Aggiustato tutto, ma una curiosità :
Se voglio utilizzare mappe più grandi del 320 x 200 come posso fare? :(
Rimanendo la stessa risoluzione però
 
AprilSkies
messaggio19 Nov 2014, 09:48
Messaggio #11



Gruppo icone

Gruppo: Oldgame Editor
Messaggi: 516
Iscritto il: 16 May 12
Utente Nr.: 19.376
BGE The secret of Monkey Island
Playing The secret of Monkey Island
SO WinVista




CITAZIONE (Squall_Leonheart @ 18 Nov 2014, 22:31) *
Aggiustato tutto, ma una curiosità :
Se voglio utilizzare mappe più grandi del 320 x 200 come posso fare? :(
Rimanendo la stessa risoluzione però


Molto semplice:

Disegna lo sfondo grande a piacimento (ad esempio 1000 x 1000).
Importa lo sfondo nella room.
E fai tutto normalmente (occhio ad una sola cosa: le coordinate degli oggetti sono riferiti alla mappa 1000x1000 - le coordinate del mouse, qualora usi funzioni tipo GetAtScreenX o Y sono riferite allo "schermo" 320x200).
Noterai, testando che il gioco "scrolla" automaticamente seguendo il personaggio biggrin2a.gif

Ovviamente lo scrolling di default è abbastanza rigido e segue il personaggio in maniera fissa.

Se vuoi effetti più "cinematografici" nello scrolling puoi usare il "parallax module" scaricabile sul sito di AGS tra i moduli e plug-ins oppure puoi scriptare un tuo "modulo" di scrolling (ad esempio come quello che ho creato io nel mio gioco in produzione "TALES").
Ma per questo magari aspetta di essere un po' pratico.
Per il momento vapiù che bene lo scrolling di default.
 
AprilSkies
messaggio19 Nov 2014, 09:49
Messaggio #12



Gruppo icone

Gruppo: Oldgame Editor
Messaggi: 516
Iscritto il: 16 May 12
Utente Nr.: 19.376
BGE The secret of Monkey Island
Playing The secret of Monkey Island
SO WinVista




Edit: avevo erroneamente inviato due risposte identiche.

Messaggio modificato da AprilSkies il 19 Nov 2014, 09:50
 
Squall_Leonheart
messaggio19 Nov 2014, 21:50
Messaggio #13





Gruppo: Gamer
Messaggi: 83
Iscritto il: 8 November 14
Utente Nr.: 20.571
SO Windows7




Ok, ti ringrazio di tutto.
Lo so che rompo, ma ora ho un nuovo problema XD
Praticamente piazzato l'oggetto, mi si vede così poi in gioco:



 
AprilSkies
messaggio20 Nov 2014, 08:59
Messaggio #14



Gruppo icone

Gruppo: Oldgame Editor
Messaggi: 516
Iscritto il: 16 May 12
Utente Nr.: 19.376
BGE The secret of Monkey Island
Playing The secret of Monkey Island
SO WinVista




Si vede così perché hai impostato un "walkbehind" sul tavolo che ha un "baseline" maggiore del punto base dell'oggetto, per cui dovresti, nel menù a destra relativo all'oggetto impostare "BaselineOveridden" su true a poi inserire un baseline maggiore del baseline della tua walk-behind area.
 
Squall_Leonheart
messaggio20 Nov 2014, 11:00
Messaggio #15





Gruppo: Gamer
Messaggi: 83
Iscritto il: 8 November 14
Utente Nr.: 20.571
SO Windows7




Ho provato a mettere true e baseline 2, dove non ho disegnato le aree ma continua a sovrapporsi il tavolo.
 
AprilSkies
messaggio20 Nov 2014, 11:42
Messaggio #16



Gruppo icone

Gruppo: Oldgame Editor
Messaggi: 516
Iscritto il: 16 May 12
Utente Nr.: 19.376
BGE The secret of Monkey Island
Playing The secret of Monkey Island
SO WinVista




Metti baseline 300 e vedrai che non si sovrappone più. Prova biggrin2a.gif
probabilmente ci sono disegnate delle walkbehind areas o, in alternativa, il tavolo in questione è un oggetto, e come ogni oggetto ha una baseline, che in tal caso è maggiore della coppa blu ^^

Messaggio modificato da AprilSkies il 20 Nov 2014, 11:43
 
Squall_Leonheart
messaggio20 Nov 2014, 18:36
Messaggio #17





Gruppo: Gamer
Messaggi: 83
Iscritto il: 8 November 14
Utente Nr.: 20.571
SO Windows7




Ho optato per la baseline 300 xD Scusami ma c'è un modo per spostare la scritta vai etc sopra il cursore?
 
AprilSkies
messaggio21 Nov 2014, 11:08
Messaggio #18



Gruppo icone

Gruppo: Oldgame Editor
Messaggi: 516
Iscritto il: 16 May 12
Utente Nr.: 19.376
BGE The secret of Monkey Island
Playing The secret of Monkey Island
SO WinVista




Beh, per quello che vuoi fare tu, non c'è una funzione "build-in". Andrebbe "scriptata".
Io ho creato uno script di questo tipo nel mio gioco in produzione "Tales" in ui le descrizioni degli oggetti seguono il cursore.

Ora visto che stai iniziando adesso te ne fornisco uno, spero tu riesca a farlo funzionare. Magari ne approfitti per cercare di capire come funziona e quindi per cercare di capire come usare AGS.

Allora prima cosa: individua (o crea) la GUI che contiene il testo che varia a seconda di quello che fai (quindi il tuo famoso testo "vai verso".. usa questo" ecc.)
Se mi chiedi come posizionarla sul mouse, evidentemente l'hai già bella e pronta e nel gioco default.
Ora, non so come tu l'hai chiamata, ma supponiamo si chiami: gSQUALL_OVER_HOTSPOT

Bene, Operazioni preliminari:
1) Tale gui, che conterrà una "label" il cui testo varia a seconda di cosa c'è sotto il mouse, andrebbe ridimensionata, di dimensioni tali da non essere troppo grande, soprattutto in altezza. Io per sempio credoche l'ho fatta grande tipo 150 x 50. Cmq fai un po' di prove.
2) Imposto lo sfondo e il bordo della gui "TRASPARENTE" (colore 0).
3) POSIZIONA la label TUTTA A SINISTRA rispetto alla gui. Inoltre imposta il testo della label TUTTO A SINISTRA (TopLeft, nel menù di impostazone del centraggio scritta)
4) Fai la label bella larga, anche come la GUI, in modo che il testo, anche se lungo, non vada a capo.

Fatto?

OK. Ora creiamo gli script:

Nel menù a destra, cerca "Scripts". Clicca col destro su "Scripts" e crea un nuovo script.
Chiamalo and esempio MOUSE_FOLLOWER
si creeranno due files:
MOUSE_FOLLOWER.asc e MOUSE_FOLLOWER.ash

Apri MOUSE_FOLLOWER.asc

Lo troverai vuoto (a parte un commento in alto)
NOTA: i commenti sono cose che sono precedute da "//" e non vengono lette dal "compilatore" quindi puoi scriverci ciò che vuoi.
NOTA2: i tuoi codici cerca di commentarli MOLTO, così quando poi li riapri sai cosa fa una parte di codice.

Bene, ora dentro il file MOUSE_FOLLOWER.asc, sotto il commento di intestazione incolla, esattamente, quanto segue:
(copia integralmente)

// COPIA DA QUI ==================================================================
function repeatedly_execute()
{
// di seguito metteremo un operatore logico IF-THEN-ELSE per capire se il mouse si trova o no sopra un oggetto/hotspot/personaggio/item di inventario

if (Hotspot.GetAtScreenXY(mouse.x, mouse.y) == hotspot[0] && Object.GetAtScreenXY(mouse.x, mouse.y) == null && Character.GetAtScreenXY(mouse.x, mouse.y) == null && InventoryItem.GetAtScreenXY(mouse.x, mouse.y) == null)
{
// in questa parte del codice puoi mettere qualcosa che avviene se il mouse NON è sopra nessun oggetto, personaggio oppure hotspot.
// ad esempio puoi fare sì che la GUI scompaia
gSQUALL_OVER_HOTSPOT.Visible = false;
}
else
{
//in questa parte del codice scrivi ciò che avviene se il mouse E' sopra nessun oggetto, personaggio oppure hotspot
// innanzitutto la GUI è visibile
gSQUALL_OVER_HOTSPOT.Visible = true;
//===============
// ricava la larghezza del testo contenuto nella label della GUI
// non so come l'hai chiamata, ma supponiamo tu l'abba chiamata "LABEL_SQUALL_OVER_HOTSPOT"
String TESTO_TEMP; // dichiaro una variabile di tipo stringa
TESTO_TEMP = LABEL_SQUALL_OVER_HOTSPOT.Text; // assegno alla stringa il contenuto della label della gui che vogliamo far seguire il mouse
int TESTO_Width = GetTextWidth(TESTO_TEMP, eFontNormal); //dichiaro una variabile integer e contestualmente ricavo la larghezza del testo. Qui suppongo che abbia usato il font "Normal". se hai usato un altro font, metti il font che hai usato.
int label_position = TESTO_Width / 2; //dichiaro una variabile integer e contestualmente gli assegno il valore pari a metà della larghezza testo
// la "label_position" in pratica mi identifica il punto centrale del testo. Mi servirà per posizionarlo sopra il mouse.
//===============
// Ora devo stare attento che, se il mouse va vicino ai bordi, la scritta non esca fuori dallo schermo.
int label_offset; //dichiaro una variabile di offset
if (mouse.x - label_position < 0) label_offset = 5; //bordo sinistro 5 pixel
else if (mouse.x + label_position > 315) label_offset = 315 - TESTO_Width; //qui suppongo tu abbia la risoluzione larga 320 pixel
else label_offset = mouse.x - label_position;
//===============
//ora posso posizionare la gui, che ricordiamo si chiama gSQUALL_OVER_HOTSPOT
// nel farlo, attenzione, devo far sì che se sposto il mouse troppo in alto, la scritta vada sotto. negli altri casi sta sopra:
//a tal fine individuo una fascia di 50 pixel in alto
if (mouse.y > 50)
{
// sritta sopra, perché il mouse va in basso. ricorda che la Y cresce se vai verso il,basso.
gSQUALL_OVER_HOTSPOT.SetPosition(label_offset, mouse.y - 20); //gli do 20 pixel in alto. poi vedi tu. varia il "20" e vedi come si vede.
}
else
{
//scritta sotto perché il mouse si trova nella parte alta, nella fascia di 50 pixel in alto
gSQUALL_OVER_HOTSPOT.SetPosition(label_offset, mouse.y + 30); //gli do 30 pixel in basso. poi vedi tu. varia il "30" e vedi come si vede.
}
}
}
// COPIA FINO QUI ==========================================

Dovrebbe funzionare, se non ho commesso refusi e se imposti BENE i nomi delle GUI e delle LABEL.
SE CAMBI I LORO NOMI RISPETTO A QUELLO CHE HO SCRITTO IO, MODIFICA IL MIO SCRIPT DI CONSEGUENZA, ALTRIMENTI DARA' ERRORE.


 
Squall_Leonheart
messaggio21 Nov 2014, 15:29
Messaggio #19





Gruppo: Gamer
Messaggi: 83
Iscritto il: 8 November 14
Utente Nr.: 20.571
SO Windows7




Mi da un errore qui, ma credo sia io in errore. Ti posto degli screen.
TESTO_TEMP = LABEL_SQUALL_OVER_HOTSPOT.Text;


Mi sembra di aver messo tutti i valori bene, top left etc. Ma credo di sbagliare nome quando richiamo la label, che sta scritto ID 0 ActionLine
 
AprilSkies
messaggio21 Nov 2014, 17:14
Messaggio #20



Gruppo icone

Gruppo: Oldgame Editor
Messaggi: 516
Iscritto il: 16 May 12
Utente Nr.: 19.376
BGE The secret of Monkey Island
Playing The secret of Monkey Island
SO WinVista




Attenzione, i nomi che ho usato io sono nomi che ho inventato al momento,
Quindi io ho usato, per esempio LABEL_SQUALL_OVER_HOTSPOT ... ma se nel tuo caso la label si chiama ActionLine,
come ti ho scritto, devi rimpiazzare sul mio script LABEL_SQUALL_OVER_HOTSPOT con ActionLine

Stessa cosa per la GUI dentro cui la label si trova, che io chiamato PER ESEMPIO gSQUALL_OVER_HOTSPOT
se a te si chiama diverso devi mettere il nome della GUI reale.

Capito?
 
Squall_Leonheart
messaggio21 Nov 2014, 19:14
Messaggio #21





Gruppo: Gamer
Messaggi: 83
Iscritto il: 8 November 14
Utente Nr.: 20.571
SO Windows7




Il font era FontFont0, ho risolto anche i nomi. Però la scritta non si visualizza :(
 
AprilSkies
messaggio21 Nov 2014, 19:26
Messaggio #22



Gruppo icone

Gruppo: Oldgame Editor
Messaggi: 516
Iscritto il: 16 May 12
Utente Nr.: 19.376
BGE The secret of Monkey Island
Playing The secret of Monkey Island
SO WinVista




Scusa ma nella "label" che utilizzi, cosa hai scritto??

c'è scritto @OVERHOTSPOT@ ?

che label stai utilizzando? è quella del gioco di default che serve per visualizzare il nome delle cose su cui sei sopra con il mouse?
perché dovresti usare quella.

Se l'hai eliminata e se quella che stai usando è vuota, scrivici dentro: @OVERHOTSPOT@

altra cosa che pure devi controllare: ai assegnato dei nomi agli oggetti? perché quella cosa visualizza i "nomi" degli oggetti.

Messaggio modificato da AprilSkies il 21 Nov 2014, 19:30
 
Squall_Leonheart
messaggio21 Nov 2014, 19:39
Messaggio #23





Gruppo: Gamer
Messaggi: 83
Iscritto il: 8 November 14
Utente Nr.: 20.571
SO Windows7




Tenevo scritto Text, ti mostro uno screen:



Poi ecco il codice dentro MOUSE_FOLLOWER.asc che ho messo nel gioco

function repeatedly_execute()
{
// di seguito metteremo un operatore logico IF-THEN-ELSE per capire se il mouse si trova o no sopra un oggetto/hotspot/personaggio/item di inventario

if (Hotspot.GetAtScreenXY(mouse.x, mouse.y) == hotspot[0] && Object.GetAtScreenXY(mouse.x, mouse.y) == null && Character.GetAtScreenXY(mouse.x, mouse.y) == null && InventoryItem.GetAtScreenXY(mouse.x, mouse.y) == null)
{
// in questa parte del codice puoi mettere qualcosa che avviene se il mouse NON è sopra nessun oggetto, personaggio oppure hotspot.
// ad esempio puoi fare sì che la GUI scompaia
gAction.Visible = false;
}
else
{
//in questa parte del codice scrivi ciò che avviene se il mouse E' sopra nessun oggetto, personaggio oppure hotspot
// innanzitutto la GUI è visibile
gAction.Visible = true;
//===============
// ricava la larghezza del testo contenuto nella label della GUI
// non so come l'hai chiamata, ma supponiamo tu l'abba chiamata "LABEL_SQUALL_OVER_HOTSPOT"
String TESTO_TEMP; // dichiaro una variabile di tipo stringa
TESTO_TEMP = ActionLine.Text; // assegno alla stringa il contenuto della label della gui che vogliamo far seguire il mouse
int TESTO_Width = GetTextWidth(TESTO_TEMP, eFontFont0); //dichiaro una variabile integer e contestualmente ricavo la larghezza del testo. Qui suppongo che abbia usato il font "Normal". se hai usato un altro font, metti il font che hai usato.
int label_position = TESTO_Width / 2; //dichiaro una variabile integer e contestualmente gli assegno il valore pari a metà della larghezza testo
// la "label_position" in pratica mi identifica il punto centrale del testo. Mi servirà per posizionarlo sopra il mouse.
//===============
// Ora devo stare attento che, se il mouse va vicino ai bordi, la scritta non esca fuori dallo schermo.
int label_offset; //dichiaro una variabile di offset
if (mouse.x - label_position < 0) label_offset = 5; //bordo sinistro 5 pixel
else if (mouse.x + label_position > 315) label_offset = 315 - TESTO_Width; //qui suppongo tu abbia la risoluzione larga 320 pixel
else label_offset = mouse.x - label_position;
//===============
//ora posso posizionare la gui, che ricordiamo si chiama gSQUALL_OVER_HOTSPOT
// nel farlo, attenzione, devo far sì che se sposto il mouse troppo in alto, la scritta vada sotto. negli altri casi sta sopra:
//a tal fine individuo una fascia di 50 pixel in alto
if (mouse.y > 50)
{
// sritta sopra, perché il mouse va in basso. ricorda che la Y cresce se vai verso il,basso.
gAction.SetPosition(label_offset, mouse.y - 20); //gli do 20 pixel in alto. poi vedi tu. varia il "20" e vedi come si vede.
}
else
{
//scritta sotto perché il mouse si trova nella parte alta, nella fascia di 50 pixel in alto
gAction.SetPosition(label_offset, mouse.y + 30); //gli do 30 pixel in basso. poi vedi tu. varia il "30" e vedi come si vede.
}
}
}

Gli oggetti nel gioco li ho semplicemente tradotti : bluecup coppablu etc.. Non saprei :/
 
AprilSkies
messaggio21 Nov 2014, 19:59
Messaggio #24



Gruppo icone

Gruppo: Oldgame Editor
Messaggi: 516
Iscritto il: 16 May 12
Utente Nr.: 19.376
BGE The secret of Monkey Island
Playing The secret of Monkey Island
SO WinVista




Che proprietà hai messo alla GUI gAction?
gli hai messo la proprietà "normal, initially on"?


Mi è venuta in mente una cosa:
POVA A FARE COSI':

1) Assicurati che la GUI gAction sia Normal, initially on

2) Cancella @OVERHOTSOP@, lascia la label VUOTA e IMPOSTA IL ETSTO ALLINEATO A SINISTRA (TOP-LEFT non TOP CENTER)

3) MODIFICA LO SCRIPT COSI':

function repeatedly_execute()
{
// di seguito metteremo un operatore logico IF-THEN-ELSE per capire se il mouse si trova o no sopra un oggetto/hotspot/personaggio/item di inventario

if (Hotspot.GetAtScreenXY(mouse.x, mouse.y) == hotspot[0] && Object.GetAtScreenXY(mouse.x, mouse.y) == null && Character.GetAtScreenXY(mouse.x, mouse.y) == null && InventoryItem.GetAtScreenXY(mouse.x, mouse.y) == null)
{
// in questa parte del codice puoi mettere qualcosa che avviene se il mouse NON è sopra nessun oggetto, personaggio oppure hotspot.
// ad esempio la label è vuota
ActionLine.Text = "";
}
else
{
//in questa parte del codice scrivi ciò che avviene se il mouse E' sopra nessun oggetto, personaggio oppure hotspot
//===============
// ricava la larghezza del testo contenuto nella label della GUI
// non so come l'hai chiamata, ma supponiamo tu l'abba chiamata "LABEL_SQUALL_OVER_HOTSPOT"
String TESTO_TEMP = Game.GetLocationName(mouse.x, mouse.y); // dichiaro una variabile di tipo stringa e gli assegno il nome dell'oggetto su cui è
ActionLine.Text = TESTO_TEMP; // assegno alla label il contenuto di text temp
int TESTO_Width = GetTextWidth(TESTO_TEMP, eFontFont0); //dichiaro una variabile integer e contestualmente ricavo la larghezza del testo. Qui suppongo che abbia usato il font "Normal". se hai usato un altro font, metti il font che hai usato.
int label_position = TESTO_Width / 2; //dichiaro una variabile integer e contestualmente gli assegno il valore pari a metà della larghezza testo
// la "label_position" in pratica mi identifica il punto centrale del testo. Mi servirà per posizionarlo sopra il mouse.
//===============
// Ora devo stare attento che, se il mouse va vicino ai bordi, la scritta non esca fuori dallo schermo.
int label_offset; //dichiaro una variabile di offset
if (mouse.x - label_position < 0) label_offset = 5; //bordo sinistro 5 pixel
else if (mouse.x + label_position > 315) label_offset = 315 - TESTO_Width; //qui suppongo tu abbia la risoluzione larga 320 pixel
else label_offset = mouse.x - label_position;
//===============
//ora posso posizionare la gui, che ricordiamo si chiama gAction
// nel farlo, attenzione, devo far sì che se sposto il mouse troppo in alto, la scritta vada sotto. negli altri casi sta sopra:
//a tal fine individuo una fascia di 50 pixel in alto
if (mouse.y > 50)
{
// sritta sopra, perché il mouse va in basso. ricorda che la Y cresce se vai verso il,basso.
gAction.SetPosition(label_offset, mouse.y - 20); //gli do 20 pixel in alto. poi vedi tu. varia il "20" e vedi come si vede.
}
else
{
//scritta sotto perché il mouse si trova nella parte alta, nella fascia di 50 pixel in alto
gAction.SetPosition(label_offset, mouse.y + 30); //gli do 30 pixel in basso. poi vedi tu. varia il "30" e vedi come si vede.
}
}
}

VEDI SE VA

Messaggio modificato da AprilSkies il 21 Nov 2014, 20:16
 
Squall_Leonheart
messaggio21 Nov 2014, 20:42
Messaggio #25





Gruppo: Gamer
Messaggi: 83
Iscritto il: 8 November 14
Utente Nr.: 20.571
SO Windows7




Ora si muove col cursore, però non mi legge gli oggetti nella mappa :(
E comunque non è precisa sopra il cursore

Messaggio modificato da Squall_Leonheart il 21 Nov 2014, 21:01
 

6 Pagine V   1 2 3 > » 
Reply to this topicStart new topic
1 utenti stanno leggendo questa discussione (1 visitatori e 0 utenti anonimi)
0 utenti:

 

Modalità di visualizzazione: Normale · Passa a: Lineare · Passa a: Outline


Versione Lo-Fi Oggi è il: 9th December 2019 - 05:22