Jump to content
Rpg²S Forum

*Mappa Quadrilaterale


Maxy
 Share

Recommended Posts

Mappa Quadrilaterale

Descrizione

Anzichè mostrare gli eroi su una griglia rettangolare, vi permette di decidere la forma della griglia. Può essere utile per mostrare gli eventi su di una mappa disegnata, facendo il modo che seguano la geometria del disegno

Autore

by Maxy

Screen




La griglia della mappa verrà deformata, per esempio così
http://img15.imageshack.us/img15/438/035ruins01.jpg

E gli eventi si disporranno cosà
http://img651.imageshack.us/img651/7757/provaw.png

 

 

Istruzioni per l'uso

Per disporre gli eventi su una griglia, all'inizio dello script inserite il codice

$list[iD_MAP] = [x_1,y_1,x_2,y_2,x_3,y_3,x_4,y_4]



Dove ID_MAP è l'id della mappa in questione, e x_1,y_1,x_2,y_2,x_3,y_3,x_4,y_4 sono le coordinate dei vertici del vostro quadrilatero, prese in senso orario a partire dal vertice in alto a sinistra. Le coordinate sono proprio le coordinate del pixel nel disegno.


#-------------------------------------------------------------------------------
# Quadrilateral Script
#-------------------------------------------------------------------------------
#   by Maxy
#-------------------------------------------------------------------------------
# It places events on a quadrilateral grid
#-------------------------------------------------------------------------------
# To create a new quadrilateral grid, use the list below
# Points must be in this order
#
#	1	 2
#
#
#	4	 3
#
$list = {}
# how to use : $list[iD_MAP] = [x_1,y_1,x_2,y_2,x_3,y_3,x_4,y_4]
# example:  $list[1] = [233,252,640,317,640,480,0,480]


# Optional: to move the panorama with the player
class Spriteset_Map
  
  alias updt_quadr update
  def update
	updt_quadr
	if $list.has_key?($game_map.map_id)
	  @panorama.ox = $game_map.display_x / 4
	  @panorama.oy = $game_map.display_y / 4
	end
  end
end
#

class Quadrilateral
  
  attr_accessor :poly_x #a 2 variables polynomial
  attr_accessor :poly_y #a 2 variables polynomial
  
  def initialize(x_1,y_1,x_2,y_2,x_3,y_3,x_4,y_4)
	@poly_x = [x_1, x_2 - x_1, x_4 - x_1, x_3 - x_4 - x_2 + x_1 ]
	@poly_y = [y_1, y_2 - y_1, y_4 - y_1, y_3 - y_4 - y_2 + y_1 ]
  end
	
  def projection_x(x,y) #take the point in the old system, and return the projection
	max_y = 32*$game_map.height
	max_x = 32*$game_map.width
	x = x % max_x
	y = y % max_y
	final_x = ( poly_x[0]*max_x*max_y + poly_x[1]*x*max_y + poly_x[2]*y*max_x + poly_x[3]*x*y ) / (max_x*max_y)
	return final_x
  end
  
  def projection_y(x,y) #take the point in the old system, and return the projection
	max_x = 32*$game_map.width
	max_y = 32*$game_map.height
	x = x % max_x
	y = y % max_y
	final_y = ( poly_y[0]*max_x*max_y + poly_y[1]*x*max_y + poly_y[2]*y*max_x + poly_y[3]*x*y ) / (max_x*max_y)
	return final_y
  end

  def projection_x_y(x,y) #take the point in the old system, and return the projection
	max_x = 32*$game_map.width
	max_y = 32*$game_map.height
	x = x % max_x
	y = y % max_y
	final_x = ( poly_x[0]*max_x*max_y + poly_x[1]*x*max_y + poly_x[2]*y*max_x + poly_x[3]*x*y ) / (max_x*max_y)
	final_y = ( poly_y[0]*max_x*max_y + poly_y[1]*x*max_y + poly_y[2]*y*max_x + poly_y[3]*x*y ) / (max_x*max_y)
	return final_x, final_y
  end
  
end

class Game_Map
  
  attr_reader :quadrilateral
  
  alias quadr_setup setup
  def setup(id)
	quadr_setup(id)
	if $list.has_key?(id)
	  @quadrilateral = Quadrilateral.new($list[id][0],$list[id][1],$list[id][2],$list[id][3],$list[id][4],$list[id][5],$list[id][6],$list[id][7])
	end
  end
  
end


class Game_Character
  
  alias quadr_screen_x screen_x
  alias quadr_screen_y screen_y
  
  def screen_x
	if $list.has_key?($game_map.map_id)
	  w = $game_map.quadrilateral.projection_x(@real_x/4,@real_y/4)
	  return w-($game_map.display_x + 3) / 4 + 16
	else
	  quadr_screen_x
	end
  end
  def screen_y
	if $list.has_key?($game_map.map_id)
	  w = $game_map.quadrilateral.projection_y(@real_x/4,@real_y/4)
	  y = w-($game_map.display_y + 3) / 4 + 16
	  if @jump_count >= @jump_peak
		n = @jump_count - @jump_peak
	  else
		n = @jump_peak - @jump_count
	  end
	  return y - (@jump_peak * @jump_peak - n * n) / 2
	else
	  quadr_screen_y
	end
  end
  
end

class Game_Player
  
  alias center_quadr center
  def center(x, y)
	if $list.has_key?($game_map.map_id)
	  max_x = ($game_map.width - 20) * 128
	  max_y = ($game_map.height - 15) * 128
	  w_x, w_y = $game_map.quadrilateral.projection_x_y(x*32,y*32)
	  $game_map.display_x = [0, [w_x*4 - CENTER_X, max_x].min].max
	  $game_map.display_y = [0, [w_y*4 - CENTER_Y, max_y].min].max
	else
	  center_quadr(x,y)
	end
  end
  
  
end 

 

Demo

http://www.mediafire.com/?h45zhveqbuwjumw

Bugs e Conflitti Noti

N/A

Altri Dettagli

Lo script modifica solo la posizione dei chara degli eventi, non sposta i tile: pertanto se la vostra mappa contiene ad esempio un albero, la sua immagine non verrà spostata, questo scombussola le collisioni:

per la collisione tra EVENTI, non c'è il minimo problema: dove tu vedi l'evento, tu non puoi passare (ho sempre sognato di intercalarlo in un discorso!).

Ci sono problemi quando i TILE non sono passabili, questo perchè i tiles non vengono spostati dallo script. Insomma accade che se un sasso (non passabile) occupa le coordinate (2,3), l'eroe non può passare per le coordinate (2,3), il problema è che il chara dell'eroe è spostato dallo script in accordo a come viene deformata la griglia della mappa, il sasso invece no.

Come risolvere il problema?

  • Creare un evento con la grafica del sasso
  • Disegnare il sasso sulla mappa di sfondo e creare un evento non passabile vuoto nella giusta posizione

Creditatemi se lo utilizzate

Edited by Apo
applicato tag code
Link to comment
Share on other sites

Uh altro script particolare ° °, utile per giocare con gli eventi :3

I pg continueranno a muoversi normalmente, giusto? E se l'evento non è passabile la collisione come viene gestita, il pg si ferma a seconda dei tile invasi anche solo da un pixel dell'evento?

^ ^

(\_/)
(^ ^) <----coniglietto rosso, me!
(> <)


Il mio Tumblr dove seguire i miei progetti, i progetti della Reverie : : Project ^ ^

http://i.imgur.com/KdUDtQt.png disponibile su Google Play, qui i dettagli! ^ ^

http://i.imgur.com/FwnGMI3.png completo! Giocabile online, qui i dettagli! ^ ^

REVERIE : : RENDEZVOUS (In allenamento per apprendere le buone arti prima di cominciarlo per bene ^ ^) Trovate i dettagli qui insieme alla mia intervista (non utilizzerò più rpgmaker) ^ ^

 

SUWOnzB.jpg 🖤
http://www.rpg2s.net/dax_games/r2s_regali2s.png E:3 http://www.rpg2s.net/dax_games/xmas/gifnatale123.gif
http://i.imgur.com/FfvHCGG.png by Testament (notare dettaglio in basso a destra)! E:3
http://i.imgur.com/MpaUphY.jpg by Idriu E:3

Membro Onorario, Ambasciatore dei Coniglietti (Membro n.44)

http://i.imgur.com/PgUqHPm.png
Ufficiale
"Ad opera della sua onestà e del suo completo appoggio alla causa dei Panda, Guardian Of Irael viene ufficialmente considerato un Membro portante del Partito, e Ambasciatore del suo Popolo presso di noi"


http://i.imgur.com/TbRr4iS.png<- Grazie Testament E:3
Ricorda...se rivolgi il tuo sguardo ^ ^ a Guardian anche Guardian volge il suo sguardo ^ ^ a te ^ ^
http://i.imgur.com/u8UJ4Vm.gifby Flame ^ ^
http://i.imgur.com/VbggEKS.gifhttp://i.imgur.com/2tJmjFJ.gifhttp://projectste.altervista.org/Our_Hero_adotta/ado2.png
Grazie Testament XD Fan n°1 ufficiale di PQ! :D

Viva
il Rhaxen! <- Folletto te lo avevo detto (fa pure rima) che non
avevo programmi di grafica per fare un banner su questo pc XD (ora ho di
nuovo il mio PC veramente :D)

Rosso Guardiano della
http://i.imgur.com/Os5rvhx.png

Rpg2s RPG BY FORUM:

Nome: Darth Reveal

 

PV totali 2
PA totali 16

Descrizione: ragazzo dai lunghi capelli rossi ed occhi dello stesso colore. Indossa una elegante giacca rossa sopra ad una maglietta nera. Porta pantaloni rossi larghi, una cintura nera e degli stivali dello stesso colore. E' solito trasportare lo spadone dietro la schiena in un fodero apposito. Ha un pendente al collo e tiene ben legato un pezzo di stoffa (che gli sta particolarmente a cuore) intorno al braccio sinistro sotto la giacca, copre una cicatrice.
Bozze vesti non definitive qui.

Equipaggiamento:
Indossa:
60$ e 59$ divisi in due tasche interne
Levaitan

Spada a due mani elsa lunga

Guanti del Defender (2PA)
Anello del linguaggio animale (diventato del Richiamo)

Scrinieri da lanciere (2 PA)

Elmo del Leone (5 PA)

Corazza del Leone in Ferro Corrazzato (7 PA)

ZAINO (20) contenente:
Portamonete in pelle di cinghiale contenente: 100$
Scatola Sanitaria Sigillata (può contenere e tenere al sicuro fino a 4 oggetti curativi) (contiene Benda di pronto soccorso x3, Pozione di cura)
Corda
Bottiglia di idromele
Forma di formaggio
Torcia (serve ad illuminare, dura tre settori)

Fiasca di ceramica con Giglio Amaro (Dona +1PN e Velocità all'utilizzatore)
Ampolla Bianca

Semi di Balissa

 

CAVALLO NORMALE + SELLA (30 +2 armi) contentente:
66$
Benda di pronto soccorso x3
Spada a due mani

Fagotto per Adara (fazzoletto ricamato)


 

Link to comment
Share on other sites

Molto interessante : D

 

Bravo : )

-Avatar imperioso-Teca delle glorie(lol):

 

 

Terzo posto Poetry&Letterature Contest(inglesizzato perchè fa serio)

http://img806.imageshack.us/img806/3015/terzoposto.png

Il 3 grasso di Thokk XDScarica La Guerra di Piero

 

"Il segreto per un buon soufflè di patate...sono le patate! - Maestro Yoda (Lo Svarione degli Anelli 3, Il ritorno del Padrino x°°°D)

Primo Ren, conserverò gelosamente xD - Il primo ba-*hem* Ren non si scorda mai.Chazzate

 

Apo esegue un incantesimo sciamanico molto potente e molto duro per cui si concentra in silenzio per molti minuti, finchè, ritenendosi pronto, riesce infine ad evocare il Grande Spirito che col suo immenso potere disintegra tutti

http://www.iaza.com/work/110609C/iaza11020742952300.gifUn dono di Hash (<3)

 

 

http://i1141.photobucket.com/albums/n597/RazakGik/Psy-Kita-Kita.gif

 

 

 

 

 

 

Apo resta per me un mistero.

 

Link to comment
Share on other sites

Innanzitutto vi ringrazio, Apo e Guardian.

 

I pg continueranno a muoversi normalmente, giusto? E se l'evento non è passabile la collisione come viene gestita, il pg si ferma a seconda dei tile invasi anche solo da un pixel dell'evento?

 

Allora:

 

per la collisione tra EVENTI, non c'è il minimo problema: dove tu vedi l'evento, tu non puoi passare (ho sempre sognato di intercalarlo in un discorso!).

 

Ci sono problemi quando i TILE non sono passabili, questo perchè i tiles non vengono spostati dallo script. Insomma accade che se un sasso (non passabile) occupa le coordinate (2,3), l'eroe non può passare per le coordinate (2,3), il problema è che il chara dell'eroe è spostato dallo script in accordo a come viene deformata la griglia della mappa, il sasso invece no.

 

Come risolvere il problema?

  • Creare un evento con la grafica del sasso
  • Disegnare il sasso sulla mappa di sfondo e creare un evento non passabile vuoto nella giusta posizione

 

Non mi sono preoccupato di questa parte, perchè di solito chi usa gli sfondi non usa i tiles. Certo, nulla vieta combinazioni delle due tecniche, ma è possibile usare gli eventi con la grafica dei tiles.

 

Scriverò questa cosa anche nel primo messaggio del topic

Edited by Maxy
Link to comment
Share on other sites

bellissimo script.. complimenti :D

.:|Finalmente anch'io gioco klonoa(psx) sulla mia psp \o/|:. <- sei il più bello per questo (edit by ^ ^ )

Il Parlamento è un simbolo, come lo è l'atto di distruggerlo...

sono gli uomini che conferiscono potere ai simboli...

da solo un simbolo è privo di significato

ma con un bel numero di persone alle spalle far saltare un palazzo può cambiare il mondo.


themaplevalve2.png

Link to comment
Share on other sites

Mitico davvero! Appena ho tempo ti dispiace se mi metto a convertirlo anche per VX?

"Io non volevo solo partecipare alle discussioni. Volevo avere il potere di farle fallire" [cit.]

http://holyres.altervista.org/UserBoard/BannerOverdrive35.png
http://holyres.altervista.org/UserBoard/Cap3.png

http://www.indiexpo.net/signature/578.png

Miei script per RPG Maker VX Ace:


*NB Tutti i miei script sono protetti da licenza CC - BY http://i.creativecommons.org/l/by/3.0/88x31.png

Questa licenza permette a terzi di distribuire, modificare, ottimizzare ed utilizzare la tua opera come base, anche commercialmente, fino a che ti diano il credito per la creazione originale. Questa è la più accomodante delle licenze offerte. É raccomandata per la diffusione e l'uso massimo di materiali coperti da licenza.

 

 



I miei tutorial:


Come distribuire il gioco - e anche come creare un'installazione professionale!
RGSS in pillole - Guida completa e facile all'RGSS2 e RGSS3 per novizi ed esperti
Come mappare con VX (e VX Ace) - guida base all'uso degli strumenti del mapping
Loop delle musiche - come tagliarle in modo da far venire musiche continue senza interruzioni finali
Creare backup dei progetti - per evitare di uccidervi dopo un errore che ha fatto perdere tutto!

Link to comment
Share on other sites

Sì, sì era proprio quella la mia perplessità, ottimo aggiungi in primo post!

^ ^

(\_/)
(^ ^) <----coniglietto rosso, me!
(> <)


Il mio Tumblr dove seguire i miei progetti, i progetti della Reverie : : Project ^ ^

http://i.imgur.com/KdUDtQt.png disponibile su Google Play, qui i dettagli! ^ ^

http://i.imgur.com/FwnGMI3.png completo! Giocabile online, qui i dettagli! ^ ^

REVERIE : : RENDEZVOUS (In allenamento per apprendere le buone arti prima di cominciarlo per bene ^ ^) Trovate i dettagli qui insieme alla mia intervista (non utilizzerò più rpgmaker) ^ ^

 

SUWOnzB.jpg 🖤
http://www.rpg2s.net/dax_games/r2s_regali2s.png E:3 http://www.rpg2s.net/dax_games/xmas/gifnatale123.gif
http://i.imgur.com/FfvHCGG.png by Testament (notare dettaglio in basso a destra)! E:3
http://i.imgur.com/MpaUphY.jpg by Idriu E:3

Membro Onorario, Ambasciatore dei Coniglietti (Membro n.44)

http://i.imgur.com/PgUqHPm.png
Ufficiale
"Ad opera della sua onestà e del suo completo appoggio alla causa dei Panda, Guardian Of Irael viene ufficialmente considerato un Membro portante del Partito, e Ambasciatore del suo Popolo presso di noi"


http://i.imgur.com/TbRr4iS.png<- Grazie Testament E:3
Ricorda...se rivolgi il tuo sguardo ^ ^ a Guardian anche Guardian volge il suo sguardo ^ ^ a te ^ ^
http://i.imgur.com/u8UJ4Vm.gifby Flame ^ ^
http://i.imgur.com/VbggEKS.gifhttp://i.imgur.com/2tJmjFJ.gifhttp://projectste.altervista.org/Our_Hero_adotta/ado2.png
Grazie Testament XD Fan n°1 ufficiale di PQ! :D

Viva
il Rhaxen! <- Folletto te lo avevo detto (fa pure rima) che non
avevo programmi di grafica per fare un banner su questo pc XD (ora ho di
nuovo il mio PC veramente :D)

Rosso Guardiano della
http://i.imgur.com/Os5rvhx.png

Rpg2s RPG BY FORUM:

Nome: Darth Reveal

 

PV totali 2
PA totali 16

Descrizione: ragazzo dai lunghi capelli rossi ed occhi dello stesso colore. Indossa una elegante giacca rossa sopra ad una maglietta nera. Porta pantaloni rossi larghi, una cintura nera e degli stivali dello stesso colore. E' solito trasportare lo spadone dietro la schiena in un fodero apposito. Ha un pendente al collo e tiene ben legato un pezzo di stoffa (che gli sta particolarmente a cuore) intorno al braccio sinistro sotto la giacca, copre una cicatrice.
Bozze vesti non definitive qui.

Equipaggiamento:
Indossa:
60$ e 59$ divisi in due tasche interne
Levaitan

Spada a due mani elsa lunga

Guanti del Defender (2PA)
Anello del linguaggio animale (diventato del Richiamo)

Scrinieri da lanciere (2 PA)

Elmo del Leone (5 PA)

Corazza del Leone in Ferro Corrazzato (7 PA)

ZAINO (20) contenente:
Portamonete in pelle di cinghiale contenente: 100$
Scatola Sanitaria Sigillata (può contenere e tenere al sicuro fino a 4 oggetti curativi) (contiene Benda di pronto soccorso x3, Pozione di cura)
Corda
Bottiglia di idromele
Forma di formaggio
Torcia (serve ad illuminare, dura tre settori)

Fiasca di ceramica con Giglio Amaro (Dona +1PN e Velocità all'utilizzatore)
Ampolla Bianca

Semi di Balissa

 

CAVALLO NORMALE + SELLA (30 +2 armi) contentente:
66$
Benda di pronto soccorso x3
Spada a due mani

Fagotto per Adara (fazzoletto ricamato)


 

Link to comment
Share on other sites

@Holy87

Appena ho tempo ti dispiace se mi metto a convertirlo anche per VX?

 

No che non mi dispiace! Anzi, mi fa piacere! Se hai idee su come migliorarlo, spara pure!

 

edit: Ho visto adesso che mi sono dimenticato di eliminare dallo script le righe di codice che ho utilizzato per le mappe nella demo. Ho corretto adesso.

Edited by Maxy
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...