Salve a tutti, sto utilizzando questo script di Holy87 che mostra dei popup quando si ottiene un oggetto
$imported = {} if $imported == nil
$imported["H87_Popup"] = true
#===============================================================================
# Sistema Popup di Holy87
# Versione 1.1
#===============================================================================
# Questo script permette di mostrare in modo dinamico popup multipli per
# l'acquisizione o lo smarrimento di oro e oggetti, quando si ottiene un lev-up.
# Non solo, ma è possibile anche creare popup personalizzati per le più
# svariate situazioni. Basta mettere semplicemente in un evento, un Chiama
# Script con:
# Popup.show("messaggio")
# Oppure
# Popup.show("Messaggio",x) dove x sta all'id dell'icona
# oppure ancora
# Popup.show("Messaggio",x,[R,G,B,S]) dove RGB sono le tonalità, S la saturazione.
#-------------------------------------------------------------------------------
# INSTALLAZIONE
# Installare sotto Materials, prima del Main. Importare una immagine come barra
# per i popup. Non ha importanza la grandezza, lo script adatterà il popup a
# seconda delle dimesioni dell'immagine.
# INFO compatibilità:
# *Classe Scene_Map
# Alias: update, start, terminate
# *Classe Game_Party
# Alias: gain_gold, gain_item
# *Classe Game_Actor
# Sovrascrive: show_level_up
#===============================================================================
module H87_Popup
#-------------------------------------------------------------------------------
# CONFIGURAZIONE GENERALE
# Configura lo script nelle opzioni generiche.
#-------------------------------------------------------------------------------
#Velocità di comparsa del popup. Numeri piccoli aumentano la velocità.
Speed = 3
#-----------------------------------------------------------------------------
#Tempo in secondi, prima che il popup cominci a sparire.
PTime = 4
#-----------------------------------------------------------------------------
#Velocità di sparizione del popup una volta che scade il tempo
Fade = 4
#-----------------------------------------------------------------------------
#Coordinata Y del popup quando apparirà.
#Se viene impostato in basso allo schermo, popup consecutivi creeranno una
#pila che sale, altrimenti scenderà.
Altezza = 355
#-----------------------------------------------------------------------------
#Grafica dell'immagine dello sfondo del popup
Grafica = "BarraPopup"
#-----------------------------------------------------------------------------
#Distanza in pixel dal bordo sinistro dello schermo quando spunta il popup
Distanzax = 5
#Distanza in pixel dei popup consecutivi quando vengono messi in fila
Distanzay = 3
#-----------------------------------------------------------------------------
#Imposta lo switch che verrà usato per attivare e disattivare i popup
#automatici, nel caso tu voglia cambiare denaro e oggetti al giocatore senza
#che se ne accorga.
Switch = 2
#-------------------------------------------------------------------------------
# CONFIGURAZIONE SPECIFICA
# Configurazione specifica di attivazione, suono e colore di ogni tipo di popup
#-------------------------------------------------------------------------------
# *Configurazione Oggetti
#Seleziona il suono che verrà eseguito all'ottenimento dell'oggetto
SuonoOggetto = "Item1"
#Imposta la tonalità di colore del popup (Rosso, Verde, Blu e Saturazione)
ItemPreso= [-50,0,70,0]
#-----------------------------------------------------------------------------
# *Configura l'ottenimento del denaro
#Seleziona l'icona che verrà mostrata quando otterrai del denaro
Iconaoro = 361
#Seleziona il suono che verrà eseguito all'ottenimento del denaro
SuonoOro = "Shop"
#Mostrare il popup quando si ottiene denaro?
Mostra_OroU = true
#Mostrare il popup quando si perde denaro?
Mostra_OroD = true
#Seleziona la tonalità di colore del popup quando si ottiene denaro
GoldTone = [-50,70,0,10]
#Seleziona la tonalità di colore del popup quando si perde denaro
GoldPerso= [70,0,-50,50]
#-------------------------------------------------------------------------------
# FONT DI GIOCO
# Configurazione del carattere
#-------------------------------------------------------------------------------
#Nome del font:
FontName = Font.default_name #sostituire con "nomefont"
FontSize = Font.default_size #sostituire con un valore, ad es. 20
FontOutline = true #false se non lo vuoi
#-----------------------------------------------------------------------------
# *Configura il livello superiore (Funziona solo se selezioni Mostra Level Up)
# Mostrare il livello superiore con un popup, o con il metodo classico?
MostraLevel = true
# Mostrare i poteri appresi quando si sale di livello su mappa?
MostraPoteri = true
#Icona del livello superiore
IconaLevel = 125
#Tonalità che viene mostrata al livello superiore
LivSup = [ 50, 50,100,0]
#Tonalità che viene mostrata per i nuovi poteri appresi
NuoveSkill = [ 50, 50,50,0]
#Suono che viene eseguito al livello superiore
SuonoLevel = "Up1"
#Testo dell'abilità appresa
Learn = "appresa!"
#-----------------------------------------------------------------------------
# *Configura popup per switch e variabili (funziona solo in modalità Test)
#Seleziona l'icona di switch e variabili
Iconaswitch = 80
#Seleziona la tonalità di colore
SwitchTone = [0,0,0,255]
#-----------------------------------------------------------------------------
#===============================================================================
# FINE CONFIGURAZIONE
# Modificare tutto ciò che c'è sotto può compromettere il corretto funzionamento
# dello script. Agisci a tuo rischio e pericolo!
#===============================================================================
end
#===============================================================================
# Modulo Popup
#===============================================================================
module Popup
#-----------------------------------------------------------------------------
# * mostra il popup
#-----------------------------------------------------------------------------
def self.show(testo, icona=0, tone=nil)
SceneManager.scene.mostra_popup(testo, icona, tone) if SceneManager.scene_is?(Scene_Map)
end
#-----------------------------------------------------------------------------
# * esegue un suono
#-----------------------------------------------------------------------------
def self.esegui(suono)
RPG::SE.new(suono,80,100).play if SceneManager.scene_is?(Scene_Map)
end
#-----------------------------------------------------------------------------
# * mostra l'oro in monete
#-----------------------------------------------------------------------------
def self.gold_show(money,tone)
show(money,-1,tone)
end
end
#===============================================================================
# Classe Scene_Map
#===============================================================================
class Scene_Map < Scene_Base
include H87_Popup
#-----------------------------------------------------------------------------
# * Start
#-----------------------------------------------------------------------------
alias h87_pstart start
def start
h87_pstart
if $popups.nil?
$popups = []
$oblo = Viewport.new(0,0,Graphics.width,Graphics.height)
else
$oblo.visible = true
$oblo.z = 10
end
print $popups
end
#-----------------------------------------------------------------------------
# * Update
#-----------------------------------------------------------------------------
alias h87_pupdate update
def update
h87_pupdate
aggiorna_popups
end
#-----------------------------------------------------------------------------
# * Aggiunge un nuovo popup
#-----------------------------------------------------------------------------
def mostra_popup(testo, icona=0, tone=nil)
immagine = Sprite.new($oblo)
immagine.bitmap = Cache.picture(Grafica)
immagine.tone = Tone.new(tone[0],tone[1],tone[2],tone[3]) if tone != nil
finestra = Window_Map_Popup.new(immagine.width,testo, icona)
finestra.viewport = $oblo
finestra.opacity = 0
finestra.x = 0-finestra.width
finestra.y = Altezza
immagine.x = riposizionax(finestra,immagine)
immagine.y = riposizionay(finestra,immagine)
popup = [finestra,immagine,0,0]
sposta_popup_su #sposta sopra tutti i popup già presenti
$popups.push(popup)
end
#-----------------------------------------------------------------------------
# * Calcola la posizione dell'immagine
#-----------------------------------------------------------------------------
def riposizionax(finestra,immagine)
larg=(finestra.width-immagine.width)/2
return finestra.x+larg
end
#-----------------------------------------------------------------------------
# * Calcola la posizione dell'immagine
#-----------------------------------------------------------------------------
def riposizionay(finestra,immagine)
alt=(finestra.height-immagine.height)/2
return finestra.y+alt
end
#-----------------------------------------------------------------------------
# * Aggiornamento
#-----------------------------------------------------------------------------
def aggiorna_popups
muovi_popup
fade_popup
end
#-----------------------------------------------------------------------------
# * Muove i popup
#-----------------------------------------------------------------------------
def muovi_popup
for i in 0..$popups.size-1
break if $popups[i] == nil
barra = $popups[i]
finestra = barra[0]
next if finestra.disposed?
immagine = barra[1]
tempo = barra[2]
prossimay= barra[3]
x = finestra.x
y = finestra.y
metax = Distanzax
if Altezza > Graphics.height/2
metay = Altezza - Distanzay - prossimay
else
metay = Altezza + Distanzay + prossimay
end
finestra.x += (metax-x)/Speed
finestra.y += (metay-y)/Speed
tempo += 1
immagine.x = riposizionax(finestra,immagine)
immagine.y = riposizionay(finestra,immagine)
if tempo > PTime*Graphics.frame_rate
finestra.contents_opacity -= Fade
immagine.opacity -= Fade
end
$popups[i] = [finestra,immagine,tempo, prossimay] #riassemblamento
end
end
#-----------------------------------------------------------------------------
# * Assegna la prossima coordinata Y
#-----------------------------------------------------------------------------
def sposta_popup_su
for i in 0..$popups.size-1
next if $popups[i][1].disposed?
$popups[i][3]+=$popups[i][1].height+Distanzay
end
end
#-----------------------------------------------------------------------------
# * Terminate
#-----------------------------------------------------------------------------
alias h87_pterminate terminate
def terminate
h87_pterminate
$oblo.visible = false
end
#-----------------------------------------------------------------------------
# *Elimina i popup non più presenti
#-----------------------------------------------------------------------------
def fade_popup
$popups.each do |popup|
next if popup.nil?
if popup[1].opacity == 0
elimina_elemento(popup)
end
end
end
end #scene_map
#===============================================================================
# Classe Window_Map_Popup
#===============================================================================
class Window_Map_Popup < Window_Base
def initialize(larghezza,testo, icona=0)
super(0,0,larghezza,48)
@testo = testo
@icona = icona
refresh
end
#-----------------------------------------------------------------------------
# * refresh della finestra
#-----------------------------------------------------------------------------
def refresh
self.contents.clear
if @icona < 0 and $imported["H87_Golds"]
show_gold_popup
else
show_text_popup
end
end
#-----------------------------------------------------------------------------
# * mostra il testo del popup
#-----------------------------------------------------------------------------
def show_text_popup
draw_icon(@icona,0,0)
@icona == 0 ? d = 0 : d = 24
self.contents.font.name = H87_Popup::FontName
self.contents.font.size = H87_Popup::FontSize
self.contents.font.outline = H87_Popup::FontOutline
text = convert_escape_characters(@testo)
text.gsub!(/\eC\[(\d+)\]/i,"")
self.contents.draw_text(d,0,self.width-(self.padding*2)-d,line_height,text)
end
#-----------------------------------------------------------------------------
# * mostra l'oro in monete
#-----------------------------------------------------------------------------
def show_gold_popup
draw_currency_value(@testo.to_i, "", 0, 0, self.width-(self.padding*2))
end
end #Scene_Map
#===============================================================================
# Classe Game_Party
#===============================================================================
class Game_Party < Game_Unit
alias ottieni_oro gain_gold unless $@
#-----------------------------------------------------------------------------
# * Ottieni Oro
#-----------------------------------------------------------------------------
def gain_gold(amount)
if $game_switches[H87_Popup::Switch] == false
if amount> 0 and H87_Popup::Mostra_OroU
if $imported["H87_Golds"]
Popup.gold_show(amount,H87_Popup::GoldTone)
else
Popup.show("+"+amount.to_s+Vocab.currency_unit,H87_Popup::Iconaoro,H87_Popup::GoldTone)
end
Popup.esegui(H87_Popup::SuonoOro)
end
if amount < 0 and H87_Popup::Mostra_OroD
if $imported["H87_Golds"]
Popup.gold_show(amount,H87_Popup::GoldPerso)
else
Popup.show(amount.to_s+Vocab.currency_unit,H87_Popup::Iconaoro,H87_Popup::GoldPerso)
end
Popup.esegui(H87_Popup::SuonoOro)
end
end
ottieni_oro(amount)
end
#-----------------------------------------------------------------------------
# * Ottieni Oggetto
#-----------------------------------------------------------------------------
alias prendi_oggetto gain_item
def gain_item(item, amount, include_equip = false)
case item
when RPG::Item
oggetto = $data_items[item.id]
when RPG::Armor
oggetto = $data_armors[item.id]
when RPG::Weapon
oggetto = $data_weapons[item.id]
end
if amount > 0 and $game_switches[H87_Popup::Switch] == false and item != nil
nome = oggetto.name
icona = oggetto.icon_index
testo = sprintf("%s x%d",nome,amount)
Popup.show(testo,icona,H87_Popup::ItemPreso)
Popup.esegui(H87_Popup::SuonoOggetto)
end
prendi_oggetto(item, amount, include_equip)
end
end # Game_Party
#===============================================================================
# Classe Game_Actor
#===============================================================================
class Game_Actor < Game_Battler
#-----------------------------------------------------------------------------
# * Mostra Lv. Up
#-----------------------------------------------------------------------------
def display_level_up(new_skills)
if SceneManager.scene_is?(Scene_Map) and H87_Popup::MostraLevel
testo = sprintf("%s %s%2d!",@name,Vocab::level,@level)
Popup.show(testo,H87_Popup::IconaLevel,H87_Popup::LivSup)
Popup.esegui(H87_Popup::SuonoLevel)
if H87_Popup::MostraPoteri
for skill in new_skills
testo = sprintf("%s %s",skill.name,H87_Popup::Learn)
Popup.show(testo,skill.icon_index,H87_Popup::NuoveSkill)
end
end
else
$game_message.new_page
$game_message.add(sprintf(Vocab::LevelUp, @name, Vocab::level, @level))
new_skills.each do |skill|
$game_message.add(sprintf(Vocab::ObtainSkill, skill.name))
end
end
end
end # Game_Actor
#===============================================================================
# Classe Scene_Title
#===============================================================================
class Scene_Title < Scene_Base
#-----------------------------------------------------------------------------
# * eliminazione dei popup
#-----------------------------------------------------------------------------
alias h87_pop_start start unless $@
def start
unless $popups.nil?
$popups.each do |i|
elimina_elemento(i)
end
$oblo.dispose
$popups = nil
$oblo = nil
end
h87_pop_start
end
end
#===============================================================================
# Classe Scene_Base
#===============================================================================
class Scene_Base
#-----------------------------------------------------------------------------
# *Dispone finestre e picture
#-----------------------------------------------------------------------------
def elimina_elemento(i)
i[0].dispose unless i[0].disposed?
i[1].dispose unless i[1].disposed?
$popups.delete(i)
end
end
vorrei fare in modo che vengano mostrati solo 5 popup alla volta, in modo tale che poi i popup degli oggetti ottenuti meno recentemente scompaiano.
Spero di essermi spiegato bene ^^" grazie in anticipo :D
Question
nickk.c
Salve a tutti, sto utilizzando questo script di Holy87 che mostra dei popup quando si ottiene un oggetto
vorrei fare in modo che vengano mostrati solo 5 popup alla volta, in modo tale che poi i popup degli oggetti ottenuti meno recentemente scompaiano.
Spero di essermi spiegato bene ^^" grazie in anticipo :D
Link to comment
Share on other sites
2 answers to this question
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.