Benvenuto Visitatore(Log In|Registrati)
![]() ![]() |
23 Feb 2014, 00:33
Messaggio
#1
|
|
|
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! -------------------- |
|
|
|
14 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?
|
|
|
|
14 Nov 2014, 17:12
Messaggio
#3
|
|
|
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 |
|
|
|
14 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. |
|
|
|
15 Nov 2014, 10:35
Messaggio
#5
|
|
|
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. |
|
|
|
17 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 |
|
|
|
17 Nov 2014, 19:00
Messaggio
#7
|
|
|
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. |
|
|
|
17 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 Grazie mille per l'aiuto Messaggio modificato da Squall_Leonheart il 17 Nov 2014, 20:57 |
|
|
|
18 Nov 2014, 18:07
Messaggio
#9
|
|
|
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 ;-) |
|
|
|
18 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ò |
|
|
|
19 Nov 2014, 09:48
Messaggio
#11
|
|
|
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 |
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 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. |
|
|
|
19 Nov 2014, 09:49
Messaggio
#12
|
|
|
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 |
|
|
|
19 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: ![]()
|
|
|
|
20 Nov 2014, 08:59
Messaggio
#14
|
|
|
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.
|
|
|
|
20 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.
|
|
|
|
20 Nov 2014, 11:42
Messaggio
#16
|
|
|
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
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 |
|
|
|
20 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?
|
|
|
|
21 Nov 2014, 11:08
Messaggio
#18
|
|
|
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. |
|
|
|
21 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 |
|
|
|
21 Nov 2014, 17:14
Messaggio
#20
|
|
|
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? |
|
|
|
21 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 :(
|
|
|
|
21 Nov 2014, 19:26
Messaggio
#22
|
|
|
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 |
|
|
|
21 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 :/ |
|
|
|
21 Nov 2014, 19:59
Messaggio
#24
|
|
|
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 |
|
|
|
21 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 |
|
|
|
![]() ![]() |
| Versione Lo-Fi | Oggi è il: 28th October 2026 - 22:14 |