Oggi ci sarà una terza live?
no, mi sono dimenticato di programmarla, quindi non vorrei annunciarla troppo sotto senza dar tempo a tutti di organizzarsi.
Penso rimanderemo a domenica prossima
#21 Inviato 19 April 2020 - 18:13 PM
Oggi ci sarà una terza live?
no, mi sono dimenticato di programmarla, quindi non vorrei annunciarla troppo sotto senza dar tempo a tutti di organizzarsi.
Penso rimanderemo a domenica prossima
"Io non volevo solo partecipare alle discussioni. Volevo avere il potere di farle fallire" [cit.]
Miei script per RPG Maker VX Ace:
#22 Inviato 23 April 2020 - 18:45 PM
Ciao a tutti, il prossimo streaming si terrà
SABATO 25 APRILE, ORE 18
Fatemi sapere se per voi l'orario va bene, altrimenti ci organizziamo diversamente. E per favore, rispondete al topic per chi parteciperà, che se sarà solo per 2 persone, posticipo.
"Io non volevo solo partecipare alle discussioni. Volevo avere il potere di farle fallire" [cit.]
Miei script per RPG Maker VX Ace:
#23 Inviato 23 April 2020 - 19:00 PM
Io dovrei poter partecipare, ma mi si è di nuovo rotto il PC e sul portatile vecchio avrò grossi problemi di crash e freeze! :3
(\_/)
(^ ^) <----coniglietto rosso, me!
(> <)
Il mio Tumblr dove seguire i miei progetti, i progetti della Reverie : : Project ^ ^
disponibile su Google Play, qui i dettagli! ^ ^
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) ^ ^
#24 Inviato 24 April 2020 - 15:01 PM
Nessun problema per l'orario, ci sarò!
Bacheca:
Scheda Di Heuru
#25 Inviato 24 April 2020 - 16:40 PM
#26 Inviato 24 April 2020 - 19:59 PM
Ci sarò anche io! *o*
CLICCA SUL BANNER QUI SOTTO PER ENTRARE ANCHE TU NEL GRUPPO VOCALE DISCORD!
Le mie guide:
I miei plugin:
Roba:
#27 Inviato 25 April 2020 - 18:50 PM
# quest system di holy module QuestSettings QUESTS = [ { name: 'Il ritorno del Re', description: 'Il re è tornato, accoglilo', location: 'Città del Re', npc: 'Consigliere del Re', rewards: %w(200xp 1000g item5x2 weapon1x1), tasks: [ {name: 'Vai al castello'}, {name: 'Oltrepassa le guardie'}, {name: 'Saluta il re'} ], variable_id: 5 }, { name: 'Vendica gli Avengers', description: 'Il sequel dei film Marvel', location: 'Cinema', npc: 'Ciccio', rewards: ['500xp', '1500g', 'Riconoscenza di Cap. America'], variable_id: 6, tasks: [ {name: 'Parti per Plutone'}, {name: 'Restaci, già è finito'} ] } ] CURRENT_TARGET = 'Obiettivo attuale' REWARDS = 'Ricompense:' EXP = 'P.E.' QUESTS_VOCAB = 'Missioni' LOCATION_VOCAB = 'Luogo:' NPC_VOCAB = 'Da:' COMPLETED_VOCAB = 'MISSIONE COMPLETATA' QUEST_ICON = 16 COMPLETED_ICON = 110 CURRENT_TASK_ICON = 125 end module Vocab def self.quest_rewards QuestSettings::REWARDS end def self.exp_a QuestSettings::EXP end def self.quests QuestSettings::QUESTS_VOCAB end def self.quest_location QuestSettings::LOCATION_VOCAB end def self.quest_npc QuestSettings::NPC_VOCAB end def self.completed_quest QuestSettings::COMPLETED_VOCAB end def self.quest_current_target QuestSettings::CURRENT_TARGET end end # Classe Quest # Definisce l'entità Quest class Quest include Comparable # @return [String] il nome della quest attr_reader :name # @return [String] descrizione attr_reader :description # @return [String] luogo di inizio quest attr_reader :location # @return [Array<Quest_Task>] task attr_reader :tasks # @return [Array<Reward>] attr_reader :rewards # il personaggio da cui hai cominciato la quest # @return [String] attr_reader :npc # @param [Hash] quest_data def initialize(quest_data) @name = quest_data[:name] @description = quest_data[:description] @location = quest_data[:location] @rewards = quest_data[:rewards].collect { |reward| Reward.new(reward) } @tasks = quest_data[:tasks].collect { |task| Quest_Task.new(task) } @variable_id = quest_data[:variable_id] @npc = quest_data[:npc] end # definisce a che punto è la quest # @return [Integer] def stage $game_variables[@variable_id] end # @return [Array<Quest_Task>] def unlocked_tasks @tasks.first(stage) end # determina se la quest è completata def completed? stage >= @tasks.size end # determina se la missione è visibile e sbloccata def unlocked? stage > 0 end # determina se la quest è attiva def active? unlocked? and !completed? end # @return [Quest_Task] def current_task @tasks[stage - 1] end # @param [Quest] other def <=>(other) return -1 if other.completed? and active? return 1 if other.active? and completed? self.name <=> other.name end def to_s sprintf('%s: Var %d, Stato: %d', @name, @variable_id, stage) end end class Reward # @return [Integer] attr_reader :quantity # @return [String] attr_reader :text def initialize(reward_str) @type = nil @text = '' @quantity = 0 process_string reward_str end def process_string(reward_str) case reward_str when /^(\d+)g$/ @type = :gold @quantity = $1.to_i when /^(item|weapon|armor)(\d+)x(\d+)$/ @type = $1.to_sym # :weapon :item :armor @item_id = $2.to_i @quantity = $3.to_i when /^(\d+)xp$/ @type = :exp @quantity = $1.to_i else @type = :string @text = reward_str end end # restituisce l'oggetto della ricompensa # @return [RPG::Item, RPG::Armor, RPG::Weapon] def item return nil unless [:item, :weapon, :armor].include? @type case @type when :item $data_items[@item_id] when :armor $data_armors[@item_id] when :weapon $data_weapons[@item_id] else nil end end def exp? @type == :exp end def gold? @type == :gold end def item? [:item, :weapon, :armor].include? @type end def generic? @type == :string end end # rappresenta l'obiettivo della missione corrente class Quest_Task # @return [String] il nome della task attr_reader :name # @param [Hash] task_data def initialize(task_data) @name = task_data[:name] end end module DataManager class << self alias load_normal_database_qs load_normal_database end def self.load_normal_database load_normal_database_qs $data_quests = QuestSettings::QUESTS.collect { |quest_data| Quest.new(quest_data) } end end class Window_MenuCommand < Window_Command alias add_other_commands add_original_commands def add_original_commands add_other_commands add_command(Vocab.quests, :quest, true) end end class Scene_Menu < Scene_MenuBase alias create_old_command_window create_command_window def create_command_window create_old_command_window @command_window.set_handler(:quest, method(:command_quest)) end def command_quest SceneManager.call(Scene_Quest) end end # finestra della lista delle missioni sbloccate # può mostrare quest completate o in corso class Window_QuestList < Window_Selectable # inizializzazione def initialize(x, y, width, height) super(x, y, width, height) @rewards_window = nil @quest_window = nil refresh end # crea la lista da mostrare def make_item_list @data = $data_quests.select { |quest| quest.unlocked? } end def refresh contents.clear make_item_list self.index = 0 draw_all_items end # @return [Quest] def current_quest @data[@index] end def item_max @data ? @data.size : 0 end def draw_item(index) rect = item_rect(index) quest = @data[index] change_color normal_color, quest.active? icon_index = quest.active? ? QuestSettings::QUEST_ICON : QuestSettings::COMPLETED_ICON draw_icon(icon_index, rect.x, rect.y, quest.active?) rect.x += 24 rect.width -= 24 draw_text(rect, quest.name) end # seleziona la modalità della finestra # @param [Symbol] new_mode :active per quest attive, :completed per completate def set_mode(new_mode) return if @mode == new_mode @mode = new_mode refresh end def call_update_help return unless active super @quest_window.set_quest(current_quest) if @quest_window @rewards_window.set_quest(current_quest) if @rewards_window @starting_window.set_quest(current_quest) if @starting_window end def update_help super @help_window.set_text(current_quest.description) end def quest_window=(quest_window) @quest_window = quest_window call_update_help end def rewards_window=(rewards_window) @rewards_window = rewards_window call_update_help end def starting_window=(starting_window) @starting_window = starting_window call_update_help end end # mostra le informazioni sulla quest class Window_Quest < Window_Base def set_quest(new_quest) return if @quest == new_quest @quest = new_quest refresh end # @return [Quest] def current_quest @quest end def draw_quest_name(x, y) change_color crisis_color draw_text(x, y, contents_width, line_height, current_quest.name, 1) end def draw_quest_tasks(x, y) current_quest.tasks.each do |task| draw_quest_task(x, y, task) y += line_height end end # @param [Integer] x # @param [Integer] y # @param [Quest_Task] quest_task def draw_quest_task(x, y, quest_task) change_color system_color draw_text(x, y, contents_width, line_height, Vocab::quest_current_target) if current_quest.current_task == quest_task change_color power_up_color draw_icon(QuestSettings::CURRENT_TASK_ICON, x, y + line_height) else change_color normal_color, false end draw_text(x + 24, y + line_height, contents_width - 24, line_height, quest_task.name) end def draw_quest_completed(x, y) change_color power_up_color draw_text(x, y, contents_width, line_height, Vocab::completed_quest, 1) end def refresh contents.clear return if current_quest.nil? draw_quest_name(0, 0) if current_quest.completed? draw_quest_completed(0, line_height * 2) else draw_quest_task(0, line_height * 2, current_quest.current_task) end end end class Window_QuestStart < Window_Base def initialize(x, y, width) super(x, y, width, fitting_height(2)) @quest = nil refresh end def refresh contents.clear return if quest.nil? draw_initial_location(0) draw_initial_npc(line_height) end def draw_initial_location(y) change_color system_color draw_text(0, y, contents_width, line_height, Vocab::quest_location) change_color normal_color x = text_size(Vocab::quest_location + ' ').width draw_text(x, y, contents_width - x, line_height, quest.location) end def draw_initial_npc(y) change_color system_color draw_text(0, y, contents_width, line_height, Vocab::quest_npc) change_color normal_color x = text_size(Vocab::quest_npc + ' ').width draw_text(x, y, contents_width - x, line_height, quest.npc) end def set_quest(new_quest) return if @quest == new_quest @quest = new_quest refresh end # @return [Quest] def quest return @quest end end class Window_Reward < Window_Base def initialize(x, y, width, height) super(x, y, width, height) @quest = nil end # @param [Quest] new_quest def set_quest(new_quest) return if @quest == new_quest @quest = new_quest refresh end def refresh contents.clear change_color system_color draw_text(0, 0, contents_width, line_height, Vocab.quest_rewards) change_color normal_color draw_rewards(0, line_height) end # @return [Quest] def quest @quest end def draw_rewards(x, y) return if @quest.nil? rewards = quest.rewards rewards.each_with_index { |reward, i| draw_reward(x, y + (line_height * i), reward) } end # @param [Integer] x # @param [Integer] y # @param [Reward] reward def draw_reward(x, y, reward) return draw_reward_exp(x, y, reward.quantity) if reward.exp? return draw_reward_gold(x, y, reward.quantity) if reward.gold? return draw_reward_item(x, y, reward.item, reward.quantity) if reward.item? draw_text(x, y, contents_width, line_height, reward.text) end def draw_reward_exp(x, y, value) text = sprintf('%d %s', value, Vocab.exp_a) draw_text(x, y, contents_width, line_height, text) end def draw_reward_gold(x, y, value) text = sprintf('%d%s', value, Vocab.currency_unit) draw_text(x, y, contents_width, line_height, text) end # @param [Integer] x # @param [Integer] y # @param [RPG::Item, RPG::Armor, RPG::Weapon] item def draw_reward_item(x, y, item, quantity) draw_item_name(item, x, y, true, contents_width) text = sprintf('x%d', quantity) draw_text(x, y, contents_width, line_height, text, 2) end end class Window_QuestTasks < Window_Selectable def initialize(x, y, width, height) super(x, y, width, height) @quest = nil refresh end def set_quest(new_quest) return if @quest == new_quest @quest = new_quest refresh end # @return [Quest] def current_quest @quest end def refresh contents.clear return if @quest.nil? draw_quest_name draw_tasks end def draw_quest_name change_color crisis_color draw_text(0, 0, contents_width, line_height, current_quest.name, 1) end def draw_tasks y = line_height current_quest.unlocked_tasks.each do |task| y += draw_task(y, task) end end # @param [Integer] y # @param [Quest_Task] task def draw_task(y, task) if current_quest.current_task == task change_color normal_color draw_icon(QuestSettings::CURRENT_TASK_ICON, 0, y) else change_color power_up_color, false end draw_text(24, y, contents_width - 24, line_height, task.name) line_height end end class Scene_Quest < Scene_MenuBase def first_column_width Graphics.width / 2 end def create_quest_list_window width = first_column_width y = @help_window.height @quest_list_window = Window_QuestList.new(0, y, width, Graphics.height - y) @quest_list_window.set_handler(:cancel, method(:return_scene)) @quest_list_window.set_handler(:ok, method(:show_tasks)) @quest_list_window.help_window = @help_window @quest_list_window.activate end def create_quest_info_window x = first_column_width y = @help_window.height width = Graphics.width - x height = Graphics.height / 3 @quest_info_window = Window_Quest.new(x, y, width, height) @quest_list_window.quest_window = @quest_info_window end def create_quest_reward_window x = first_column_width y = @start_window.y + @start_window.height width = Graphics.width - x height = Graphics.height - y @quest_rewards_window = Window_Reward.new(x, y, width, height) @quest_list_window.rewards_window = @quest_rewards_window end def create_quest_start_window x = first_column_width y = @quest_info_window.y + @quest_info_window.height width = Graphics.width - x @start_window = Window_QuestStart.new(x, y, width) @quest_list_window.starting_window = @start_window end def show_tasks @quest_list_window.visible = false @quest_info_window.visible = false @quest_rewards_window.visible = false @start_window.visible = false @quest_tasks_window.visible = true @quest_tasks_window.set_quest @quest_list_window.current_quest @quest_tasks_window.activate end def show_quests @quest_list_window.visible = true @quest_info_window.visible = true @quest_rewards_window.visible = true @start_window.visible = true @quest_tasks_window.visible = false @quest_list_window.activate end def create_quest_tasks_window y = @help_window.height height = Graphics.height - y width = Graphics.width @quest_tasks_window = Window_QuestTasks.new(0, y, width, height) @quest_tasks_window.visible = false @quest_tasks_window.set_handler(:cancel, method(:show_quests)) end def start super create_help_window create_quest_list_window create_quest_info_window create_quest_start_window create_quest_reward_window create_quest_tasks_window end end class Game_Interpreter def call_quest SceneManager.call(Scene_Quest) end endHo anche aggiornato la guida all'RGSS. Dategli un'occhiata ;)
"Io non volevo solo partecipare alle discussioni. Volevo avere il potere di farle fallire" [cit.]
Miei script per RPG Maker VX Ace:
#28 Inviato 25 April 2020 - 21:00 PM
Dategli un'occhiata ;)
Ecco, così posso vederlo con più calma senza che lo stream si blocchi ogni 30 secondi o peggio il PC per 30 minuti! XD
(\_/)
(^ ^) <----coniglietto rosso, me!
(> <)
Il mio Tumblr dove seguire i miei progetti, i progetti della Reverie : : Project ^ ^
disponibile su Google Play, qui i dettagli! ^ ^
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) ^ ^
#29 Inviato 25 April 2020 - 22:12 PM
Grazie a tutti per aver seguito lo streaming.
Seguito con interesse anche oggi. Sta prendendo sempre più forma!
CLICCA SUL BANNER QUI SOTTO PER ENTRARE ANCHE TU NEL GRUPPO VOCALE DISCORD!
Le mie guide:
I miei plugin:
Roba:
#30 Inviato 01 May 2020 - 12:13 PM
Scusate l'avviso in ritardo, il prossimo appuntamento sarà domani
SABATO 2 MAGGIO ALLE 18:00
Vedremo come fare in modo che un avviso esca sullo schermo per avvisare il giocatore quando la missione è aggiornata e completata. Si tratta di un argomento abbastanza complesso, quindi non so se riuscirò a far vedere tutto in una singola ora.
"Io non volevo solo partecipare alle discussioni. Volevo avere il potere di farle fallire" [cit.]
Miei script per RPG Maker VX Ace:
#31 Inviato 01 May 2020 - 12:31 PM
Robbina a schermo su mappa, sicuramente interessante, guardicchierò (PC ancora rotto)! ^ ^
(\_/)
(^ ^) <----coniglietto rosso, me!
(> <)
Il mio Tumblr dove seguire i miei progetti, i progetti della Reverie : : Project ^ ^
disponibile su Google Play, qui i dettagli! ^ ^
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) ^ ^
#32 Inviato 01 May 2020 - 14:33 PM
Robbina a schermo su mappa, sicuramente interessante, guardicchierò (PC ancora rotto)! ^ ^
usa il telefono XD
"Io non volevo solo partecipare alle discussioni. Volevo avere il potere di farle fallire" [cit.]
Miei script per RPG Maker VX Ace:
#33 Inviato 01 May 2020 - 16:40 PM
Vecchio modello, piccolo e scomodo! D:
(\_/)
(^ ^) <----coniglietto rosso, me!
(> <)
Il mio Tumblr dove seguire i miei progetti, i progetti della Reverie : : Project ^ ^
disponibile su Google Play, qui i dettagli! ^ ^
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) ^ ^
#34 Inviato 01 May 2020 - 19:16 PM
Scusate l'avviso in ritardo, il prossimo appuntamento sarà domani
SABATO 2 MAGGIO ALLE 18:00
Vedremo come fare in modo che un avviso esca sullo schermo per avvisare il giocatore quando la missione è aggiornata e completata. Si tratta di un argomento abbastanza complesso, quindi non so se riuscirò a far vedere tutto in una singola ora.
Ottimo, sarò presente!
CLICCA SUL BANNER QUI SOTTO PER ENTRARE ANCHE TU NEL GRUPPO VOCALE DISCORD!
Le mie guide:
I miei plugin:
Roba:
#35 Inviato 02 May 2020 - 18:17 PM
# quest system di holy module QuestSettings QUESTS = [ { name: 'Il ritorno del Re', description: 'Il re è tornato, accoglilo', location: 'Città del Re', npc: 'Consigliere del Re', rewards: %w(200xp 1000g item5x2 weapon1x1), tasks: [ {name: 'Vai al castello'}, {name: 'Oltrepassa le guardie'}, {name: 'Saluta il re'} ], variable_id: 5 }, { name: 'Vendica gli Avengers', description: 'Il sequel dei film Marvel', location: 'Cinema', npc: 'Ciccio', rewards: ['500xp', '1500g', 'Riconoscenza di Cap. America'], variable_id: 6, tasks: [ {name: 'Parti per Plutone'}, {name: 'Restaci, già è finito'} ] } ] CURRENT_TARGET = 'Obiettivo attuale' REWARDS = 'Ricompense:' EXP = 'P.E.' QUESTS_VOCAB = 'Missioni' LOCATION_VOCAB = 'Luogo:' NPC_VOCAB = 'Da:' COMPLETED_VOCAB = 'MISSIONE COMPLETATA' UPDATED_VOCAB = 'Missione aggiornata!' QUEST_ICON = 16 COMPLETED_ICON = 110 CURRENT_TASK_ICON = 125 POPUP_WIDTH = 250 POPUP_LINES = 3 POPUP_LIFE = 600 end module Vocab def self.quest_rewards QuestSettings::REWARDS end def self.exp_a QuestSettings::EXP end def self.quests QuestSettings::QUESTS_VOCAB end def self.quest_location QuestSettings::LOCATION_VOCAB end def self.quest_npc QuestSettings::NPC_VOCAB end def self.completed_quest QuestSettings::COMPLETED_VOCAB end def self.quest_current_target QuestSettings::CURRENT_TARGET end def self.quest_updated QuestSettings::UPDATED_VOCAB end end # Classe Quest # Definisce l'entità Quest class Quest include Comparable # @return [String] il nome della quest attr_reader :name # @return [String] descrizione attr_reader :description # @return [String] luogo di inizio quest attr_reader :location # @return [Array<Quest_Task>] task attr_reader :tasks # @return [Array<Reward>] attr_reader :rewards # il personaggio da cui hai cominciato la quest # @return [String] attr_reader :npc # ID della variabile attr_reader :variable_id # @param [Hash] quest_data def initialize(quest_data) @name = quest_data[:name] @description = quest_data[:description] @location = quest_data[:location] @rewards = quest_data[:rewards].collect { |reward| Reward.new(reward) } @tasks = quest_data[:tasks].collect { |task| Quest_Task.new(task) } @variable_id = quest_data[:variable_id] @npc = quest_data[:npc] end # definisce a che punto è la quest # @return [Integer] def stage $game_variables[@variable_id] end def id @variable_id end # @return [Array<Quest_Task>] #noinspection RubyYardReturnMatch def unlocked_tasks @tasks.first(stage) end # determina se la quest è completata def completed? stage >= @tasks.size end # determina se la missione è visibile e sbloccata def unlocked? stage > 0 end # determina se la quest è attiva def active? unlocked? and !completed? end # @return [Quest_Task] def current_task @tasks[stage - 1] end # @param [Quest] other def <=>(other) return -1 if other.completed? and active? return 1 if other.active? and completed? self.name <=> other.name end def to_s sprintf('%s: Var %d, Stato: %d', @name, @variable_id, stage) end end class Reward # @return [Integer] attr_reader :quantity # @return [String] attr_reader :text def initialize(reward_str) @type = nil @text = '' @quantity = 0 process_string reward_str end def process_string(reward_str) case reward_str when /^(\d+)g$/ @type = :gold @quantity = $1.to_i when /^(item|weapon|armor)(\d+)x(\d+)$/ @type = $1.to_sym # :weapon :item :armor @item_id = $2.to_i @quantity = $3.to_i when /^(\d+)xp$/ @type = :exp @quantity = $1.to_i else @type = :string @text = reward_str end end # restituisce l'oggetto della ricompensa # @return [RPG::Item, RPG::Armor, RPG::Weapon] def item return nil unless [:item, :weapon, :armor].include? @type case @type when :item $data_items[@item_id] when :armor $data_armors[@item_id] when :weapon $data_weapons[@item_id] else nil end end def exp? @type == :exp end def gold? @type == :gold end def item? [:item, :weapon, :armor].include? @type end def generic? @type == :string end end # rappresenta l'obiettivo della missione corrente class Quest_Task # @return [String] il nome della task attr_reader :name # @param [Hash] task_data def initialize(task_data) @name = task_data[:name] end end module DataManager class << self alias load_normal_database_qs load_normal_database end def self.load_normal_database load_normal_database_qs $data_quests = QuestSettings::QUESTS.collect { |quest_data| Quest.new(quest_data) } end end class Window_MenuCommand < Window_Command alias add_other_commands add_original_commands def add_original_commands add_other_commands add_command(Vocab.quests, :quest, true) end end class Scene_Menu < Scene_MenuBase alias create_old_command_window create_command_window def create_command_window create_old_command_window @command_window.set_handler(:quest, method(:command_quest)) end def command_quest SceneManager.call(Scene_Quest) end end # finestra della lista delle missioni sbloccate # può mostrare quest completate o in corso class Window_QuestList < Window_Selectable # inizializzazione def initialize(x, y, width, height) super(x, y, width, height) @rewards_window = nil @quest_window = nil refresh end # crea la lista da mostrare def make_item_list @data = $data_quests.select { |quest| quest.unlocked? } end def refresh contents.clear make_item_list self.index = 0 draw_all_items end # @return [Quest] def current_quest @data[@index] end def item_max @data ? @data.size : 0 end def draw_item(index) rect = item_rect(index) quest = @data[index] change_color normal_color, quest.active? icon_index = quest.active? ? QuestSettings::QUEST_ICON : QuestSettings::COMPLETED_ICON draw_icon(icon_index, rect.x, rect.y, quest.active?) rect.x += 24 rect.width -= 24 draw_text(rect, quest.name) end # seleziona la modalità della finestra # @param [Symbol] new_mode :active per quest attive, :completed per completate def set_mode(new_mode) return if @mode == new_mode @mode = new_mode refresh end def call_update_help return unless active return if current_quest.nil? super @quest_window.set_quest(current_quest) if @quest_window @rewards_window.set_quest(current_quest) if @rewards_window @starting_window.set_quest(current_quest) if @starting_window end def update_help super @help_window.set_text(current_quest.description) end def quest_window=(quest_window) @quest_window = quest_window call_update_help end def rewards_window=(rewards_window) @rewards_window = rewards_window call_update_help end def starting_window=(starting_window) @starting_window = starting_window call_update_help end end # mostra le informazioni sulla quest class Window_Quest < Window_Base def set_quest(new_quest) return if @quest == new_quest @quest = new_quest refresh end # @return [Quest] def current_quest @quest end def draw_quest_name(x, y) change_color crisis_color draw_text(x, y, contents_width, line_height, current_quest.name, 1) end def draw_quest_tasks(x, y) current_quest.tasks.each do |task| draw_quest_task(x, y, task) y += line_height end end # @param [Integer] x # @param [Integer] y # @param [Quest_Task] quest_task def draw_quest_task(x, y, quest_task) change_color system_color draw_text(x, y, contents_width, line_height, Vocab::quest_current_target) if current_quest.current_task == quest_task change_color power_up_color draw_icon(QuestSettings::CURRENT_TASK_ICON, x, y + line_height) else change_color normal_color, false end draw_text(x + 24, y + line_height, contents_width - 24, line_height, quest_task.name) end def draw_quest_completed(x, y) change_color power_up_color draw_text(x, y, contents_width, line_height, Vocab::completed_quest, 1) end def refresh contents.clear return if current_quest.nil? draw_quest_name(0, 0) if current_quest.completed? draw_quest_completed(0, line_height * 2) else draw_quest_task(0, line_height * 2, current_quest.current_task) end end end class Window_QuestStart < Window_Base def initialize(x, y, width) super(x, y, width, fitting_height(2)) @quest = nil refresh end def refresh contents.clear return if quest.nil? draw_initial_location(0) draw_initial_npc(line_height) end def draw_initial_location(y) change_color system_color draw_text(0, y, contents_width, line_height, Vocab::quest_location) change_color normal_color x = text_size(Vocab::quest_location + ' ').width draw_text(x, y, contents_width - x, line_height, quest.location) end def draw_initial_npc(y) change_color system_color draw_text(0, y, contents_width, line_height, Vocab::quest_npc) change_color normal_color x = text_size(Vocab::quest_npc + ' ').width draw_text(x, y, contents_width - x, line_height, quest.npc) end def set_quest(new_quest) return if @quest == new_quest @quest = new_quest refresh end # @return [Quest] def quest return @quest end end class Window_Reward < Window_Base def initialize(x, y, width, height) super(x, y, width, height) @quest = nil end # @param [Quest] new_quest def set_quest(new_quest) return if @quest == new_quest @quest = new_quest refresh end def refresh contents.clear change_color system_color draw_text(0, 0, contents_width, line_height, Vocab.quest_rewards) change_color normal_color draw_rewards(0, line_height) end # @return [Quest] def quest @quest end def draw_rewards(x, y) return if @quest.nil? rewards = quest.rewards rewards.each_with_index { |reward, i| draw_reward(x, y + (line_height * i), reward) } end # @param [Integer] x # @param [Integer] y # @param [Reward] reward def draw_reward(x, y, reward) return draw_reward_exp(x, y, reward.quantity) if reward.exp? return draw_reward_gold(x, y, reward.quantity) if reward.gold? return draw_reward_item(x, y, reward.item, reward.quantity) if reward.item? draw_text(x, y, contents_width, line_height, reward.text) end def draw_reward_exp(x, y, value) text = sprintf('%d %s', value, Vocab.exp_a) draw_text(x, y, contents_width, line_height, text) end def draw_reward_gold(x, y, value) text = sprintf('%d%s', value, Vocab.currency_unit) draw_text(x, y, contents_width, line_height, text) end # @param [Integer] x # @param [Integer] y # @param [RPG::Item, RPG::Armor, RPG::Weapon] item def draw_reward_item(x, y, item, quantity) draw_item_name(item, x, y, true, contents_width) text = sprintf('x%d', quantity) draw_text(x, y, contents_width, line_height, text, 2) end end class Window_QuestTasks < Window_Selectable def initialize(x, y, width, height) super(x, y, width, height) @quest = nil refresh end def set_quest(new_quest) return if @quest == new_quest @quest = new_quest refresh end # @return [Quest] def current_quest @quest end def refresh contents.clear return if @quest.nil? draw_quest_name draw_tasks end def draw_quest_name change_color crisis_color draw_text(0, 0, contents_width, line_height, current_quest.name, 1) end def draw_tasks y = line_height current_quest.unlocked_tasks.each do |task| y += draw_task(y, task) end end # @param [Integer] y # @param [Quest_Task] task def draw_task(y, task) if current_quest.current_task == task change_color normal_color draw_icon(QuestSettings::CURRENT_TASK_ICON, 0, y) else change_color power_up_color, false end draw_text(24, y, contents_width - 24, line_height, task.name) line_height end end class Scene_Quest < Scene_MenuBase def first_column_width Graphics.width / 2 end def create_quest_list_window width = first_column_width y = @help_window.height @quest_list_window = Window_QuestList.new(0, y, width, Graphics.height - y) @quest_list_window.set_handler(:cancel, method(:return_scene)) @quest_list_window.set_handler(:ok, method(:show_tasks)) @quest_list_window.help_window = @help_window @quest_list_window.activate end def create_quest_info_window x = first_column_width y = @help_window.height width = Graphics.width - x height = Graphics.height / 3 @quest_info_window = Window_Quest.new(x, y, width, height) @quest_list_window.quest_window = @quest_info_window end def create_quest_reward_window x = first_column_width y = @start_window.y + @start_window.height width = Graphics.width - x height = Graphics.height - y @quest_rewards_window = Window_Reward.new(x, y, width, height) @quest_list_window.rewards_window = @quest_rewards_window end def create_quest_start_window x = first_column_width y = @quest_info_window.y + @quest_info_window.height width = Graphics.width - x @start_window = Window_QuestStart.new(x, y, width) @quest_list_window.starting_window = @start_window end def show_tasks @quest_list_window.visible = false @quest_info_window.visible = false @quest_rewards_window.visible = false @start_window.visible = false @quest_tasks_window.visible = true @quest_tasks_window.set_quest @quest_list_window.current_quest @quest_tasks_window.activate end def show_quests @quest_list_window.visible = true @quest_info_window.visible = true @quest_rewards_window.visible = true @start_window.visible = true @quest_tasks_window.visible = false @quest_list_window.activate end def create_quest_tasks_window y = @help_window.height height = Graphics.height - y width = Graphics.width @quest_tasks_window = Window_QuestTasks.new(0, y, width, height) @quest_tasks_window.visible = false @quest_tasks_window.set_handler(:cancel, method(:show_quests)) end def start super create_help_window create_quest_list_window create_quest_info_window create_quest_start_window create_quest_reward_window create_quest_tasks_window end end class Game_System # ottiene l'elenco delle missioni attive # @return [Array<Quest>] def active_quests $data_quests.select { |quest| quest.active? } end def active_quest_variables active_quests.map { |quest| quest.variable_id } end # @param [Integer] quest_id # @return [Quest] def quest_from_id(quest_id) $data_quests.select{ |quest| quest.id == quest_id }.first end end class Game_Variables alias old_variable_change []= unless $@ def []=(variable_id, value) old_variable_change(variable_id, value) if $game_system.active_quest_variables.include?(variable_id) $game_map.add_popup_stack variable_id end end end class Game_Interpreter def call_quest SceneManager.call(Scene_Quest) end end class Window_QuestPopup < Window_Base def initialize(x, y) super(x, y, QuestSettings::POPUP_WIDTH, fitting_height(QuestSettings::POPUP_LINES)) self.opacity = 0 refresh end # @return [Quest] def current_quest @quest end def set_quest(new_quest) return if @quest == new_quest @quest = new_quest refresh end def refresh contents.clear if current_quest.nil? self.visible = false return else self.visible = true end draw_quest_updated 0 contents.fill_rect(0, line_height, contents_width, 1, normal_color) draw_quest_title 1 draw_quest_task 2 end def draw_quest_title(line) y = line_height * line change_color system_color draw_text 0, y, width, line_height, current_quest.name end def draw_quest_task(line) y = line_height * line change_color normal_color draw_text 0, y, width, line_height, current_quest.current_task.name end def draw_quest_updated(line) y = line_height * line change_color power_up_color draw_icon 189, 0, y draw_text 24, y, width, line_height, Vocab.quest_updated end end class Game_Map # @return [Array] def quest_popup_stack @quest_popup_stack ||= [] end def quest_popup @quest_popup ||= nil end def add_popup_stack(quest_id) @quest_popup_stack.push({id: quest_id, life: QuestSettings::POPUP_LIFE}) end # aggiorna i dati dei popup. Viene chiamato ad # ogni frame da Scene_Map. def update_quest_popup_system update_quest_popup update_quest_stack end def update_quest_popup return if @quest_popup.nil? @quest_popup[:life] -= 1 return if @quest_popup[:life] > 0 @quest_popup = nil end def update_quest_stack return if @quest_popup != nil return if quest_popup_stack.empty? @quest_popup = quest_popup_stack.shift end end class Scene_Map < Scene_Base alias start_without_quest_popups start unless $@ alias update_without_quest_popups update unless $@ alias terminate_without_quest_popups terminate unless $@ def create_quest_popup_window @quest_popup_window = Window_QuestPopup.new(0, 0) @quest_popup_window.x = Graphics.width - @quest_popup_window.width @quest_popup_window.y = Graphics.height / 2 end def update_quest_popup_window $game_map.update_quest_popup_system map_data = $game_map.quest_popup if map_data.nil? @quest_popup_window.set_quest nil else quest = $game_system.quest_from_id map_data[:id] @quest_popup_window.set_quest quest end end def dispose_quest_popup_window @quest_popup_window.dispose end def start start_without_quest_popups create_quest_popup_window end def update update_without_quest_popups update_quest_popup_window end def terminate terminate_without_quest_popups dispose_quest_popup_window end endAlla prossima!
"Io non volevo solo partecipare alle discussioni. Volevo avere il potere di farle fallire" [cit.]
Miei script per RPG Maker VX Ace:
#36 Inviato 02 May 2020 - 18:59 PM
Stiamo per sfiorare le 1000 righe di codice. :O
Oggi è stata figa anche e soprattutto la parte sui popup, very interesting!
CLICCA SUL BANNER QUI SOTTO PER ENTRARE ANCHE TU NEL GRUPPO VOCALE DISCORD!
Le mie guide:
I miei plugin:
Roba:
#37 Inviato 02 May 2020 - 20:15 PM
Alla fine mi si è bloccato tutto ed ho seguito solo la prima parte! ;____ ;
Mi rileggo pian piano il codice qui! :3
A mille righe di codice che si vince? 100 bug? :D
(\_/)
(^ ^) <----coniglietto rosso, me!
(> <)
Il mio Tumblr dove seguire i miei progetti, i progetti della Reverie : : Project ^ ^
disponibile su Google Play, qui i dettagli! ^ ^
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) ^ ^
#38 Inviato 02 May 2020 - 20:27 PM
Bacheca:
Scheda Di Heuru
#39 Inviato 03 May 2020 - 10:58 AM
Bella live, come al solito!
Per la libreria che hai accennato per lo spostamento delle finestre... è pubblica e visibile da qualche parte?
Mi piacerebbe dare un'occhiata prima della prossima live
Ci sono un po' di cose da sistemare prima di pubblicarla completa, ma la versione vecchia dovrebbe essere questa http://www.rpg2s.net...estre-e-sprite/
"Io non volevo solo partecipare alle discussioni. Volevo avere il potere di farle fallire" [cit.]
Miei script per RPG Maker VX Ace:
#40 Inviato 06 May 2020 - 23:18 PM
Prossimo streaming
lunedì 11 maggio ore 18:30
Fatemi sapere se va bene per tutti.
"Io non volevo solo partecipare alle discussioni. Volevo avere il potere di farle fallire" [cit.]
Miei script per RPG Maker VX Ace: