Jump to content
Rpg²S Forum

Simple Storage System v1.2


Astro86
 Share

Recommended Posts

Simple Storage System v1.2

Descrizione

Questa script crea uno storage (magazzino) dove si può depositare oggetti e oro

 

Autore

Creato: da Deriru

Traduzione: di Astro86 (The King nel mio sito)

 

Allegati

Nessuno

 

Istruzioni per l'uso

iserire sotto materials (le istruzioni sono all'interno (In italiano))

 

#===============================================================================# Deriru's Simple Storage System v1.2# Creato: da Deriru# Traduzione: di Astro86 (The King)##Descrizione:#Si crea un sistema di archiviazione in cui è possibile memorizzare i vostri #oggetti e il vostro oro, come In un magazzino.## Settaggi:#Personalizzare lo script in base alle opzioni di seguito.# Chiamare il sistema di storage con:# $scene = Scene_StorageSystem.new#Per sbloccare ulteriori spazi per il deposito, utilizzare il seguente script:# $game_system.unlock_storages(numero slot da sbloccare)# Non deve superare il numero massimo di slot!.# Per rendere un oggetto non immagazzinabile, inserire NoStore# o quello scritto in "NonStorageTag" nella nota dell'oggetto, racchiusi in [].# Esempio: [NoStore]## Versione:# v1.0:# -Initial Release##===============================================================================# SETUP#===============================================================================$data_system = load_data("Data/System.rvdata")# Non modificare!!!gVocab = Vocab::gold # DNon modificare!SlotsAmount = 100 #Slot massimi nel deposito.InitialFree = 10 #Slot iniziali sbloccati.NonStorageTag = "NoStore" #testo usato per gli oggetti non immagazzinabili.DepositText = "Deposita Ogg." #Nome menù deposito oggetti.WithdrawText = "Prendi Ogg." #Nome menù prelievo oggetti.GoldDepositText = "Deposita #{gVocab}" #Testo deposito oroGoldWithdrawText = "Prendi #{gVocab}" #Testo prelievo oroGoldInParty = "#{gVocab}: " #Testo Oro possedutoGoldInWarehouse = "#{gVocab} Depositato: " #Testo oro depositatoEmptyText = "Vuoto" #Testo se slot disponibbile.LockedText = "Bloccato" #Testo se slot Bloccato.AmountText = "Quantità:" #Testo per indicare la quantida di deposito.MenuDepositHelp = "Deposita Oggetti" #Testo help quando depositiMenuWithdrawHelp = "Prelievo oggetti depositati." #Testo Help quando preleviStorageSelectHelp = "Seleziona lo slot." #Testo help quando stai per selezionare uno slotInventorySelectHelp = "Scegliere l'oggetto da depositare." #Testo help quando devi prelevareAmountSelectHelp = "Sinistra(-1), Destra(+1), Su(+10), Giù(-10)" #Testo help quantitàGoldDepositHelp = "Deposita #{gVocab}." #Testo help deposito oroGoldWithdrawHelp = "Prendi #{gVocab}." #Testo help ritiro oroGoldAmountHelp = "Quantita di #{gVocab}." #Testo help quantitàExitHelp = "Esci."#===============================================================================# SETUP END [NON toccare le parti in basso se non sapete quello che state facendo!]#=============================================================================== #===============================================================================# ItemStorageSlot: Basic Item Slot for Storage System (thanks to cmpsr2000!)#===============================================================================class ItemStorageSlot attr_reader :lockedattr_reader :amountattr_reader :item def initialize@item = nil@amount = 0@locked = trueend def storeItem(item, amount)$game_party.lose_item(item, amount)@item = item@amount = amountend def takeItem(amt)$game_party.gain_item(@item, amt)@amount -= amtif @amount <= 0@item = nilendend def lock@locked = trueend def unlock@locked = falseend end #===============================================================================# Game_System Modification: Adds the storage variables.#===============================================================================class Game_System attr_accessor :storageattr_accessor :stored_gold alias :initialize_deriru initialize def initializeinitialize_deriru@stored_gold = Integer(0)@storage = []for i in 0..SlotsAmount - 1@storage.push(ItemStorageSlot.new)endfor i in 0..InitialFree - 1@storage[i].unlockendend def unlock_storages(max_amt)for i in 0..max_amt - 1$game_system.storage[i].unlockendend def withdraw_money(amt)$game_party.gain_gold(amt)@stored_gold -= amt@stored_gold = 9999999 if @stored_gold > 9999999end def store_money(amt)$game_party.lose_gold(amt)@stored_gold += amt@stored_gold = 0 if @stored_gold < 0end end #===============================================================================# Window_Storage: For the Storage Window in the Storage Scene.#===============================================================================class Window_Storage < Window_Selectable def initializesuper(0,56,544,360)@column_max = 2self.index = 0updaterefreshend def refresh@data = []@data = $game_system.storage@item_max = @data.sizecreate_contentsfor i in 0..@item_max - 1draw_storage(i)endend def draw_storage(index)slot = @data[index]disabled = @data[index].lockedrect = item_rect(index)self.contents.clear_rect(rect)unless disabledunless slot.item == nildraw_item(index)elseself.contents.font.color.alpha = 255self.contents.draw_text(rect.x,rect.y,rect.width,WLH,EmptyText)endelseself.contents.font.color.alpha = 128self.contents.draw_text(rect.x,rect.y,rect.width,WLH,LockedText)endend def draw_item(index)rect = item_rect(index)slot = @data[index]if slot != nilnumber = $game_system.storage[index].amountrect.width -= 4draw_item_name(slot.item, rect.x, rect.y, true)self.contents.font.size = 12self.contents.draw_text(rect.x + 12,rect.y + 12, 15, 15, number, 1)self.contents.font.size = 20rect.width += 4endend  end #===============================================================================# Window_ItemForStage: For the Item Window in the Storage Scene.#===============================================================================class Window_ItemForStorage < Window_Selectable def initialize(x, y, width, height)super(x, y, width, height)@column_max = 2self.index = 0refreshend def itemreturn @data[self.index]end def include?(item)return false if item == nilreturn trueend def enable?(item)return false if item.note.include?("[#{NonStorageTag}]")return trueend def refresh@data = []for item in $game_party.itemsnext unless include?(item)@data.push(item)if item.is_a?(RPG::Item) and item.id == $game_party.last_item_idself.index = @data.size - 1endend@data.push(nil) if include?(nil)@item_max = @data.sizecreate_contentsfor i in 0...@item_maxdraw_item(i)endend def draw_item(index)rect = item_rect(index)self.contents.clear_rect(rect)item = @data[index]if item != nilnumber = $game_party.item_number(item)enabled = enable?(item)rect.width -= 4draw_item_name(item, rect.x, rect.y, enabled)self.contents.font.size = 12self.contents.draw_text(rect.x + 12,rect.y + 12, 15, 15, number, 1)self.contents.font.size = 20endend def update_help@help_window.set_text(item == nil ? "" : item.description)endend #===============================================================================# Window_ItemNumInput: Item Number Input Window#===============================================================================class Window_ItemNumInput < Window_Base attr_reader :qn def initialize@maxQn = 99@qn = 1super(200,60,100,100)refreshself.x = (Graphics.width - 100) / 2self.y = (Graphics.height - 100) / 2end def refreshself.contents.clearself.contents.draw_text(0,0,self.width - 32,WLH,AmountText, 1)self.contents.draw_text(0,WLH, self.width - 32, WLH, @qn.to_s, 1)end def set_max(number)@maxQn = number@maxQn = 99 if @maxQn > 99@maxQn = 1 if @maxQn < 1@qn = 1end def updaterefreshif Input.repeat?(Input::UP)Sound.play_cursor@qn += 10@qn = @maxQn if @qn > @maxQnelsif Input.repeat?(Input::DOWN)Sound.play_cursor@qn -= 10@qn = 0 if @qn < 0elsif Input.repeat?(Input::LEFT)Sound.play_cursor@qn -= 1@qn = 0 if @qn < 0elsif Input.repeat?(Input::RIGHT)Sound.play_cursor@qn += 1@qn = @maxQn if @qn > @maxQnendend end#===============================================================================# Window_HelpStorage: A modified version of Window_Help#===============================================================================class Window_HelpStorage < Window_Base def initializesuper(0, 0, Graphics.width - 140, WLH + 32)end def set_text(text, align = 0)if text != @text or align != @alignself.contents.clearself.contents.font.color = normal_colorself.contents.draw_text(4, 0, self.width - 40, WLH, text, align)@text = text@align = alignendendend #===============================================================================# Window_GoldAmt: Inputs the amount of gold#===============================================================================class Window_GoldAmt < Window_Command attr_reader :valueattr_reader :commands def initializesuper(176, ["0", "0", "0", "0", "0", "0", "0"], 7, 0, 0)self.x = (Graphics.width / 2) - 88self.y = (Graphics.height / 2) - 60self.height = 60@index = 6end def resetfor i in 0...@commands.size@commands[i] = "0"endrefreshend def updatesupervalue = @commands[@index].to_iif Input.repeat?(Input::UP)Sound.play_cursor@commands[@index] = (value < 9 ? value+1 : 9).to_srefreshelsif Input.repeat?(Input::DOWN)Sound.play_cursor@commands[@index] = (value > 0 ? value-1 : 0).to_srefreshendend end class Window_GoldOpposite < Window_Base def initializesuper((Graphics.width / 2) - 100,(Graphics.height / 2), 200,60)end def refresh(i)self.contents.clearself.contents.draw_text(0,0,self.width - 32, self.height - 32, i == 2 ? GoldInParty + $game_party.gold.to_s : GoldInWarehouse + $game_system.stored_gold.to_s, 1)end end#===============================================================================# Scene_StorageSystem: The Storage System Scene itself! xD#===============================================================================class Scene_StorageSystem < Scene_Base def initialize@storage_slots = Window_Storage.new@storage_slots.active = false@current_inv = Window_ItemForStorage.new(0,56,544,360)@current_inv.update@current_inv.refresh@current_inv.visible = false@current_inv.active = false@num_input = Window_ItemNumInput.new@num_input.visible = false@storage_help = Window_HelpStorage.new@storage_menu = Window_Command.new(140,[DepositText,WithdrawText,GoldDepositText,GoldWithdrawText,"Esci"])@storage_menu.height = 56@storage_menu.x = @storage_help.width@gold_amt = Window_GoldAmt.new@gold_amt.visible = false@gold_opp = Window_GoldOpposite.new@gold_opp.visible = falseend def startcreate_menu_backgroundend def terminate@storage_slots.dispose@storage_menu.dispose@current_inv.dispose@num_input.dispose@storage_help.dispose@gold_amt.dispose@gold_opp.disposedispose_menu_backgroundend def updateif @num_input.visiblenum_input_inputelsif @gold_amt.visiblegold_amt_updateelsif @current_inv.activecurrent_inv_inputelsif @storage_slots.activestorage_slots_inputelsif @storage_menu.activestorage_menu_inputendhelp_updateupdate_menu_backgroundend def switch_store_inv(store_slots,inv_slots)@storage_slots.active = store_slots@storage_slots.visible = store_slots@current_inv.active = inv_slots@current_inv.visible = inv_slotsend def storage_menu_input@storage_menu.updateif Input.trigger?(Input::C)if @storage_menu.index == 0 or @storage_menu.index == 1Sound.play_decision@storage_menu.active = false@storage_slots.active = trueelsif @storage_menu.index == 2 or @storage_menu.index == 3Sound.play_decision@gold_opp.refresh(@storage_menu.index)@gold_opp.visible = true@gold_amt.visible = trueelsif @storage_menu.index == 4Sound.play_cancel$scene = Scene_Map.newelseSound.play_buzzerendelsif Input.trigger?(Input::B)Sound.play_cancel$scene = Scene_Map.newendend def storage_slots_input@storage_slots.updateif Input.trigger?(Input::C)if $game_system.storage[@storage_slots.index].lockedSound.play_buzzerelsif @storage_menu.index == 1unless $game_system.storage[@storage_slots.index].item == nil# CRAPPY CALCULATION STARTZ! AAAAGH!in_stock = $game_party.item_number($game_system.storage[@storage_slots.index].item)item_possible = (in_stock + $game_system.storage[@storage_slots.index].amount)if item_possible > 99item_possible -= 99elsif item_possible = 99item_possible = $game_system.storage[@storage_slots.index].amountelseitem_possible = 99 - item_possibleend# CRAPPY CALCULATION ENDZ! HURRAH!if in_stock < 99@num_input.set_max(item_possible)@num_input.visible = true@storage_slots.active = falseelseSound.play_buzzerendelseSound.play_buzzerendelsif @storage_menu.index == 0if $game_system.storage[@storage_slots.index].item == nilSound.play_decisionswitch_store_inv(false,true)elseSound.play_buzzerendendelsif Input.trigger?(Input::B)Sound.play_cancel@storage_slots.active = false@storage_menu.active = trueendend def current_inv_input@current_inv.updateif Input.trigger?(Input::C)if $game_system.storage[@storage_slots.index].item == nil && @current_inv.item != nil && !@current_inv.item.note.include?("[#{NonStorageTag}]")@current_inv.active = false@num_input.visible = true@num_input.set_max($game_party.item_number(@current_inv.item))elseSound.play_buzzerendelsif Input.trigger?(Input::B)Sound.play_cancelswitch_store_inv(true,false)endend def num_input_input@num_input.updateif Input.trigger?(Input::C)if @storage_menu.index == 0$game_system.storage[@storage_slots.index].storeItem(@current_inv.item,@num_input.qn)elsif @storage_menu.index == 1$game_system.storage[@storage_slots.index].takeItem(@num_input.qn)endswitch_store_inv(true,false)@storage_slots.index = 0@storage_slots.refresh@current_inv.refresh@num_input.visible = falseelsif Input.trigger?(Input::B)if @storage_menu.index == 0@current_inv.active = trueelsif @storage_menu.index == 1@storage_slots.active = trueend@num_input.visible = falseendend def help_updateif @gold_amt.visible@storage_help.set_text(GoldAmountHelp)elsif @num_input.visible@storage_help.set_text(AmountSelectHelp)elsif @current_inv.active@storage_help.set_text(InventorySelectHelp)elsif @storage_slots.active@storage_help.set_text(StorageSelectHelp)elsif @storage_menu.activecase @storage_menu.indexwhen 0@storage_help.set_text(MenuDepositHelp)when 1@storage_help.set_text(MenuWithdrawHelp)when 2@storage_help.set_text(GoldDepositHelp)when 3@storage_help.set_text(GoldWithdrawHelp)when 4@storage_help.set_text(ExitHelp)endendend def gold_amt_update@gold_amt.update@gold_opp.updateif Input.trigger?(Input::C)money_inp = @gold_amt.commands.to_s.to_iif @storage_menu.index == 2unless money_inp + $game_system.stored_gold.to_i > 9999999 and money_inp < $game_party.goldif money_inp <= $game_party.goldSound.play_decision$game_system.store_money(money_inp)@gold_amt.reset@gold_amt.visible = false@gold_opp.refresh(@storage_menu.index)@gold_opp.visible = false@storage_menu.active = trueelseSound.play_buzzerendelseSound.play_buzzerendelsif @storage_menu.index == 3unless money_inp + $game_party.gold > 9999999if money_inp <= $game_system.stored_goldSound.play_decision$game_system.withdraw_money(money_inp)@gold_amt.reset@gold_amt.visible = false@gold_opp.refresh(@storage_menu.index)@gold_opp.visible = false@storage_menu.active = trueelseSound.play_buzzerendelseSound.play_buzzerendendelsif Input.trigger?(Input::B)Sound.play_decision@gold_amt.reset@gold_amt.visible = false@gold_opp.refresh(@storage_menu.index)@gold_opp.visible = false@storage_menu.active = trueendend end

 

 

Bugs e Conflitti Noti

N/A

 

Altri Dettagli

Chiamare l'evento con

$scene = Scene_StorageSystem.new

per il resto sta tutto scritto nella script

Link to comment
Share on other sites

  • 1 month later...

Incollalo prima su un documento di testo (.txt), poi ricopialo ed incollalo sullo script editor...mi pare fosse questa la soluzione XD

^ ^

(\_/)
(^ ^) <----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

L' ho incollato su un .txt, lo puoi scaricare qui; fa attenzione al fatto che nel tuo blocco note tra le opzioni in alto sotto la voce formato deve essere selezionato a capo automatico; così dovrebbe funzionare.

^ ^

(\_/)
(^ ^) <----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

  • 2 weeks later...

unica nota però... con i soldi nessun problema. ho provato anche a depositare 5 gold e prelevarne 8 per vedere cosa accadeva e da errore (nel senso che riproduce un SE d'errore e non fa prelevare).

 

però non posso dire lo stesso con gli ITEM... ad esempio ho provato a mettere 6 pozioni... quando sono andato a depositarle potevo scegliere se depositarne 6 o 0.... poi ho provato a ritirarle e qui di default ce 1 ma se provo ad andare su o giu và di nuovo da 6 o 0. per me è un bug.. a voi funziona?

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...