-
Posts
287 -
Joined
-
Last visited
Content Type
Profiles
Forums
Calendar
Posts posted by Sylaer
-
-
no, ho windows xp, non c'è nessuna patch ?
Non che io sappia.
-
No io ho XP.non è che avete windows vista?in quel caso dovete passare alla 1.03Davvero non lo sapevo.
-
E' proprio lì il problema nella versione 1.01 quando si richiamano le librerie di Windows, le Win32API, dallo script va in palla il computer.
Anch'io ho avuto lo stesso problema e ho risolto prendendo la versione 1.02.
-
Su che riga te lo dà l'errore?
-
Consegnato anch'io. Mi sono divertito a fare questa interrogazione.
-
Quei personaggi nelle immagini li hai fatti te?
-
Quello che voglio fare è una finestra apribile da menu o da altro, che mostra una serie di missioni, divise in tre categorie: Missioni in Corso, Missioni Completate e Missioni Fallite.
Per ogni missione c'è un pannello apposito, scorrevole ovviamente, che mostra i dialoghi dei png o dei pg. Il tutto in maniera automatica, senza il bisogno di riscrivere i dialoghi, solo con l'ausilio dei commenti per dire quando comincia, viene completata o fallita una missione e dove cominciare e finire di memorizzare i dialoghi.
Prima di postare lo script vorrei sapere che ne pensate e se avete qualche consiglio o suggerimento o semplicemente se l'idea interessa a qualcuno.
P.S. L'idea l'ho presa da Gothic III.
-
Anch'io ho imparato a programmare modificando qua e là, anche se all'inizio non ci capivo molto, poi ho fatto c++ all'uni e da allora è tutto molto più chiaro.
-
Secondo me è un buon progetto, ma dovresti realizzarlo davvero con RMXP, visto che tutte queste cose si possono realizzare benissimo il sistema degli script.
Inoltre mi sembra da pazzi programmare un gioco in c++ partendo assolutamente dal nulla, cioè se ci riesci sei davvero un grande, ma secondo me è una perdita di tempo quando lo puoi benissimo realizzare con RMXP.
Per quanto riguarda la grafica, ti conviene farla tutta in 2d è più facile, rapido e si adatta meglio a un progetto tipo final fantasy tactics, secondo me.
-
Col Ruby si può fare questo e altro.
Se vuoi ti do una mano io?
-
Ho trovato questo script su RMXP. E' di Sephiroth Spawn, ma c'è stato tolto l'SDK.
Non lo so se funziona.
Vedi te.
#============================================================================== # ** Equipment Skills #------------------------------------------------------------------------------ # SephirothSpawn # 2006-04-05 # Version 2 #------------------------------------------------------------------------------ # * Instructions # # ~ Skill Learning Types (Choose 1, or neither for cannot learn) # - Learn_By_Level = true (On) or false (Off) # - Learn_By_AP = true (On) or false (Off) # # ~ Disabling Moves Until Learned # - Disable_Until_Learned = true (On) or false (Off) # - Only Required For Learn By AP # # ~ Learn One Skill At A Time # - Learn_One_Skill = true (On) or false (Off) # # ~ Victory Window Options # - Show Victory Window # Show_Victory_Skills = true (On) or false (Off) # - Show Only Newly Mastered Skills # Show_Only_Mastered = true (On) or false (Off) # # ~ Enemy AP Values # - Default_Enemy_AP = Default Enemy AP # - Enemy_AP_Values = { enemy_id => ap given, ... } # # ~ Weapon Skills & Armor Skills # - Weapon_Skills or Armor_Skills # - = { equipment_id => { skill_id => Ap or Level Required, ... }, ... } #------------------------------------------------------------------------------ # ~ One Skill At a Time Feature Requires # Near Fantastica's Keyboard Input Module #------------------------------------------------------------------------------ # Do not edit the script in any manner to remove the SDK # The Script was designed for usage with SDK only #============================================================================== #------------------------------------------------------------------------------ # * SDK Log Script #------------------------------------------------------------------------------ #------------------------------------------------------------------------------ # * Begin SDK Enable Test #------------------------------------------------------------------------------ #============================================================================== # ** Equipment_Skills #============================================================================== module Equipment_Skills #-------------------------------------------------------------------------- # * Learning Types # (If Both are false, you cannot learn skills) #-------------------------------------------------------------------------- Learn_By_Level = false Learn_By_AP = true #-------------------------------------------------------------------------- # * Disable Until Learned #-------------------------------------------------------------------------- Disable_Until_Learned = false #-------------------------------------------------------------------------- # * Only Learn One Skill at a time # (Must assign the current skill each time) #-------------------------------------------------------------------------- Learn_One_Skill = false #-------------------------------------------------------------------------- # * Show Victory Skills Window after Battle # * Show Only Newly Learned Skills #-------------------------------------------------------------------------- Show_Victory_Skills = false Show_Only_Mastered = false #-------------------------------------------------------------------------- # * Default AP Given By Enemy #-------------------------------------------------------------------------- Default_Enemy_AP = 1 #-------------------------------------------------------------------------- # * Assigned AP for enemies # ~ enemy_id => ap #-------------------------------------------------------------------------- Enemy_AP_Values = { 1 => 2, 2 => 3 } #-------------------------------------------------------------------------- # * Weapon Skills # ~ weapon_id => { skill_id, required_ap } #-------------------------------------------------------------------------- Weapon_Skills = { 1 => { 1 => 5 }, 2 => { 1 => 5 } } #-------------------------------------------------------------------------- # * Armor Skills # ~ armor_id => { skill_id, required_ap } #-------------------------------------------------------------------------- Armor_Skills = {} end #============================================================================== # ** Game_Actor #============================================================================== class Game_Actor < Game_Battler #-------------------------------------------------------------------------- # * Include Equipment_Skills #-------------------------------------------------------------------------- include Equipment_Skills #-------------------------------------------------------------------------- # * Public Instance Variables #-------------------------------------------------------------------------- attr_accessor :skill_ap_totals attr_accessor :weapon_skill_target attr_accessor :armor1_skill_target attr_accessor :armor2_skill_target attr_accessor :armor3_skill_target attr_accessor :armor4_skill_target #-------------------------------------------------------------------------- # * Alias Listings #-------------------------------------------------------------------------- alias seph_weaponskills_gameactor_setup setup alias seph_weaponskills_gameactor_equip equip alias seph_weaponskills_gameactor_skills skills alias seph_weaponskills_gameactor_scu skill_can_use? #-------------------------------------------------------------------------- # * Setup # actor_id : actor ID #-------------------------------------------------------------------------- def setup(actor_id) # Creates Equipment AP @skill_ap_totals = {} # Mastered Skills @mastered_skills = [] # Sets Equipment Skill Targets to Nil @weapon_skill_target = nil @armor1_skill_target = nil @armor2_skill_target = nil @armor3_skill_target = nil @armor4_skill_target = nil # Adds In Weapon Skills and AP Amounts for skill_data in Weapon_Skills.values + Armor_Skills.values for skill_id in skill_data.keys unless @skill_ap_totals.has_key?(skill_id) @skill_ap_totals[skill_id] = 0 end end end # Original Initialization seph_weaponskills_gameactor_setup(actor_id) end #-------------------------------------------------------------------------- # * Change Equipment # equip_type : type of equipment # id : weapon or armor ID (If 0, remove equipment) #-------------------------------------------------------------------------- def equip(equip_type, id) # Original Equip Method seph_weaponskills_gameactor_equip(equip_type, id) # Clears Skill Targets case equip_type when 0 # Weapon if id == 0 or $game_party.weapon_number(id) > 0 @weapon_skill_target = nil end when 1 # Shield if id == 0 or $game_party.armor_number(id) > 0 @armor1_skill_target = nil end when 2 # Head if id == 0 or $game_party.armor_number(id) > 0 @armor2_skill_target = nil end when 3 # Body if id == 0 or $game_party.armor_number(id) > 0 @armor3_skill_target = nil end when 4 # Accessory if id == 0 or $game_party.armor_number(id) > 0 @armor4_skill_target = nil end end end #-------------------------------------------------------------------------- # * Determine if Skill can be Used # skill_id : skill ID #-------------------------------------------------------------------------- def skill_can_use?(skill_id) if self.skills.include?(skill_id) return super end # Original Skill Can use Method seph_weaponskills_gameactor_scu(skill_id) end #-------------------------------------------------------------------------- # * Skills #-------------------------------------------------------------------------- def skills # Gets Previous Skills s = seph_weaponskills_gameactor_skills.dup # Adds in Equipped Skills s << get_current_equipped_skills # Adds in Mastered Skills s << get_mastered_skills # Returns New Skills return s.flatten.sort.uniq.dup end #-------------------------------------------------------------------------- # * Get Current Equipped Skills #-------------------------------------------------------------------------- def get_current_equipped_skills # Returns Empty if Cannot Learn Until Mastered return [] if Disable_Until_Learned # Creates Skills Array skills = [] # Checks For Equipped Weapon unless @weapon_id == 0 # If Weapon Has Skill if Weapon_Skills.has_key?(@weapon_id) # Adds Weapon Skills Weapon_Skills[@weapon_id].each do | skill_id, value | if Learn_By_Level unless skills.include?(skill_id) skills << skill_id if @level >= value end else skills << skill_id unless skills.include?(skill_id) end end end end # Checks For Equipped Armor for i in 1..4 unless (eval "@armor#{i}_id") == 0 # If Armor Has Skill if Armor_Skills.has_key?(eval "@armor#{i}_id") Armor_Skills[(eval "@armor#{i}_id")].each do | skill_id, value | if Learn_By_Level unless skills.include?(skill_id) skills << skill_id if @level >= value end else skills << skill_id unless skills.include?(skill_id) end end end end end # Sends Skills Array return skills end #-------------------------------------------------------------------------- # * Get Mastered Skills #-------------------------------------------------------------------------- def get_mastered_skills # Returns Empty if Cannot Learn Skills return [] unless Learn_By_AP # Starts Skills Array skills = [] # Checks for Mastered AP for skill_data in Weapon_Skills.values + Armor_Skills.values # Checks Skill Data skill_data.each do | skill_id, master | # Unless 0 unless master == 0 # If AP Total is Reached if @skill_ap_totals[skill_id] == master # Adds Skills skills << skill_id unless skills.include?(skill_id) end end end end # Sends Skills Array return skills end #-------------------------------------------------------------------------- # * Earn AP #-------------------------------------------------------------------------- def earn_ap(amount = 0) # Exits if Cannot Learn Skills or Learns By Level return unless Learn_By_AP # Earns Weapon AP unless @weapon_id == 0 # If Weapon Has Skills if Weapon_Skills.has_key?(@weapon_id) # If One at a time if Learn_One_Skill # If Skill has been Set unless @weapon_skill_target.nil? # Gets Current And Max current = @skill_ap_totals[@weapon_skill_target] max = Weapon_Skills[@weapon_id][@weapon_skill_target] # Increases AP @skill_ap_totals[@weapon_skill_target] = [current + amount, max].min end # If Learn All else Weapon_Skills[@weapon_id].each do | skill_id, max | # Gets Current AP current = @skill_ap_totals[skill_id] # Increases AP @skill_ap_totals[skill_id] = [current + amount, max].min end end end end # Earns Armor AP for i in 1..4 # If Armor Equipped unless (eval "@armor#{i}_id") == 0 # If Armor Has Skills if Armor_Skills.has_key?(eval "@armor#{i}_id") # If One at a time if Learn_One_Skill # If Skill has been Set unless (eval "@armor#{i}_skill_target.nil?") # Gets Current And Max current = @skill_ap_totals[(eval "@armor#{i}_skill_target")] max = Armor_Skills[(eval "@armor#{i}_id")][(eval "@armor#{i}_skill_target")] # Increases AP @skill_ap_totals[(eval "@armor#{i}_skill_target")] = [current + amount, max].min end # If Learn All else Armor_Skills[(eval "@armor#{i}_id")].each do | skill_id, max | # Gets Current AP current = @skill_ap_totals[skill_id] # Increases AP @skill_ap_totals[skill_id] = [current + amount, max].min end end end end end end #-------------------------------------------------------------------------- # * Get Newly Mastered Skills #-------------------------------------------------------------------------- def get_learning_skills # Unless Learn By AP return [] unless Learn_By_AP skills = [] unless @weapon_id == 0 if Weapon_Skills.has_key?(@weapon_id) Weapon_Skills[@weapon_id].each do |skill_id, max| unless max == 0 skills << skill_id unless skills.include?(skill_id) end end end end for i in 1..4 unless (eval "@armor#{i}_id") == 0 if Armor_Skills.has_key?(eval "@armor#{i}_id") Armor_Skills[(eval "@armor#{i}_id")].each do |skill_id, max| unless max == 0 skills << skill_id unless skills.include?(skill_id) end end end end end return skills.uniq.sort end #-------------------------------------------------------------------------- # * Get Newly Mastered Skills #-------------------------------------------------------------------------- def get_newly_mastered_skills # Unless Learn By AP return [] unless Learn_By_AP mastered = [] for skill_id in get_mastered_skills.dup.uniq.sort unless @mastered_skills.include?(skill_id) mastered << skill_id @mastered_skills << skill_id end end return mastered.sort end end #============================================================================== # ** Window_Base #============================================================================== class Window_Base < Window #-------------------------------------------------------------------------- # * Include Equipment_Skills #-------------------------------------------------------------------------- include Equipment_Skills #-------------------------------------------------------------------------- # Draw Bar #-------------------------------------------------------------------------- def draw_bar(x, y, min, max, width = 152, height = 6, bar_color = Color.new(150, 0, 0), end_color = Color.new(255, 255, 60)) # Draw Background self.contents.fill_rect(x, y, width, height, Color.new(50, 50, 50, 255)) # Draws Bar for i in 1..( (min.to_f / max.to_f) * width - 3) r = bar_color.red * (width - i) / width + end_color.red * i / width g = bar_color.green * (width - i) / width + end_color.green * i / width b = bar_color.blue * (width - i) / width + end_color.blue * i / width a = bar_color.alpha * (width - i) / width + end_color.alpha * i / width self.contents.fill_rect(x + 1 + i, y + 1, 1, height - 2, Color.new(r, g, b, a)) end end end #============================================================================== # ** Window_Skill #============================================================================== class Window_Skill < Window_Selectable #-------------------------------------------------------------------------- # * Alias Listings #-------------------------------------------------------------------------- alias seph_weaponskills_windskill_drawitem draw_item #-------------------------------------------------------------------------- # * Draw Item # index : item number #-------------------------------------------------------------------------- def draw_item(index) # If Learn By AP unless Learn_By_AP # Original Draw Item Method seph_weaponskills_windskill_drawitem(index) return end # If Equipment Skill skill = @data[index] # Unless In Battle unless $game_temp.in_battle # If Skill is a Equipment Skill if @actor.skill_ap_totals.has_key?(skill.id) # Gets AP ap = @actor.skill_ap_totals[skill.id] # Alters Font Properties self.contents.font.size = 16 self.contents.font.bold = true # Original Draw Item Method seph_weaponskills_windskill_drawitem(index) # Location Coordinate x, y = 4 + index % 2 * (288 + 32), index / 2 * 32 # Default Max max = 0 # Searches for Max for weapon in Weapon_Skills.keys Weapon_Skills[weapon].each do | skill_id, m | max = m if skill.id == skill_id end end for armor in Armor_Skills.keys Armor_Skills[armor].each do | skill_id, m | max = m if skill.id == skill_id end end # Draws Status Bar draw_bar(x + 132, y + 10, ap, max, 96, 14) # Draws Progress text = ap == max ? 'Mastered' : "#{ap} / #{max}" temp_font = contents.font.dup self.contents.font.color = Color.new(0, 0, 0) self.contents.draw_text(x + 133, y + 1, 92, 32, text, 2) self.contents.font = temp_font self.contents.draw_text(x + 132, y, 92, 32, text, 2) end return end # Alters Font Properties self.contents.font.size = 22 self.contents.font.bold = false # Original Draw Item Method seph_weaponskills_windskill_drawitem(index) end end #============================================================================== # ** Window_BattleStatus #============================================================================== class Window_BattleStatus < Window_Base #-------------------------------------------------------------------------- # * Refresh Skill Status #-------------------------------------------------------------------------- def refresh_skills_status # Unless Can Learn By AP unless Learn_By_AP refresh return end # Actors Skills @actors_skills = [] # Alters Windows Contents if Show_Only_Mastered for i in 0...$game_party.actors.size actor = $game_party.actors[i] @actors_skills << actor.get_newly_mastered_skills end else for i in 0...$game_party.actors.size actor = $game_party.actors[i] @actors_skills << actor.get_learning_skills end end max = 128 for i in 0..3 max = [max, @actors_skills[i].size * 32 + 32].max end self.contents = Bitmap.new(width - 32, max) # Draws Skill Stuff for i in 0...$game_party.actors.size # Gets Actor actor = $game_party.actors[i] actor_x = i * 160 + 4 # Sets Font self.contents.font.size = 22 self.contents.font.bold = false # If No Skills if @actors_skills[i].size == 0 draw_actor_name(actor, actor_x, 0) draw_actor_hp(actor, actor_x, 32, 120) draw_actor_sp(actor, actor_x, 64, 120) if @level_up_flags[i] self.contents.font.color = normal_color self.contents.draw_text(actor_x, 96, 120, 32, "LEVEL UP!") else draw_actor_state(actor, actor_x, 96) end next end # Draws Heading self.contents.draw_text(actor_x, 0, 120, 32, 'Skill Progress', 1) # Fixes Font self.contents.font.size = 14 self.contents.font.bold = true # Draws Skills for j in 0...@actors_skills[i].size y = j * 32 + 32 # Gets AP Amouts ap = actor.skill_ap_totals[@actors_skills[i][j]] max = get_max_ap(@actors_skills[i][j]) # Draws Progress draw_skill_progress(@actors_skills[i][j], ap, max, actor_x, y, 120) end end end #-------------------------------------------------------------------------- # * Get Max AP Points #-------------------------------------------------------------------------- def get_max_ap(skill_id) for weapon_id in Weapon_Skills.keys Weapon_Skills[weapon_id].each do |s_id, value| if s_id == skill_id return value end end end for armor_id in Armor_Skills.keys Armor_Skills[armor_id].each do |s_id, value| if s_id == skill_id return value end end end return 0 end #-------------------------------------------------------------------------- # * Draw Skill Progress #-------------------------------------------------------------------------- def draw_skill_progress(skill_id, min, max, x, y, width) # Gets Skill skill = $data_skills[skill_id] # Gets Icon bitmap = RPG::Cache.icon(skill.icon_name) # Draws Icon self.contents.blt(x + 4, y + 4, bitmap, Rect.new(0, 0, 24, 24)) # Draws Skill Name self.contents.draw_text(x + 32, y, width - 32, 16, skill.name) # Draws Status Bar draw_bar(x + width - 64, y + 16, min, max, 64, 14) # Draws Progress text = min == max ? 'Mastered' : "#{min} / #{max}" self.contents.font.color = Color.new(0, 0, 0) self.contents.draw_text(x + width - 63, y + 16, 60, 14, text, 2) self.contents.font.color = normal_color self.contents.draw_text(x + width - 64, y + 16, 60, 14, text, 2) end end #============================================================================== # ** Window_BattleResult_AP #============================================================================== class Window_BattleResult_AP < Window_Base #-------------------------------------------------------------------------- # * Object Initialization #-------------------------------------------------------------------------- def initialize(y) super(160, y, 320, $game_troop.enemies.size * 24 + 56) self.contents = Bitmap.new(width - 32, height - 32) self.back_opacity = 160 self.visible = false self.z = 9999 refresh end #-------------------------------------------------------------------------- # * Refresh #-------------------------------------------------------------------------- def refresh self.contents.clear # Gets Troop ID troop_id = $game_temp.battle_troop_id # Gets AP Earned ap = 0 for enemy in $data_troops[troop_id].members enemy = $data_enemies[enemy.enemy_id] ap += (Enemy_AP_Values.has_key?(enemy.id) ? Enemy_AP_Values[enemy.id] : Default_Enemy_AP) end # Draws Heading self.contents.font.color = system_color self.contents.draw_text(16, 0, contents.width - 32, 24, 'AP Aquired:') self.contents.draw_text(16, 0, contents.width - 32, 24, ap.to_s, 2) # Draws Enemies Names, and AP Given self.contents.font.color = normal_color enemies = $data_troops[troop_id].members for i in 0...enemies.size enemy = $data_enemies[enemies[i].enemy_id] self.contents.draw_text(4, i * 24 + 24, 280, 24, enemy.name) ap = Enemy_AP_Values.has_key?(enemy.id) ? Enemy_AP_Values[enemy.id] : Default_Enemy_AP self.contents.draw_text(4, i * 24 + 24, contents.width - 8, 24, ap.to_s, 2) end end end #============================================================================== # ** Window_EquipmentSkills #============================================================================== class Window_EquipmentSkills < Window_Base #-------------------------------------------------------------------------- # * Public Instance Variables #-------------------------------------------------------------------------- attr_reader :item_max attr_reader :skills attr_accessor :target_index #-------------------------------------------------------------------------- # * Object Initialization #-------------------------------------------------------------------------- def initialize super(0, 64, 272, 192) self.contents = Bitmap.new(width - 32, height - 32) self.visible = false self.z = 9999 end #-------------------------------------------------------------------------- # * Refresh #-------------------------------------------------------------------------- def refresh(actor_id, equipment) # Gets Actor @actor = $game_party.actors[actor_id] # Sets Up Skills & Target index @skills = [] @target_index = nil @item_max = 0 # Clears & Sets Up Contents self.contents.clear self.contents.font.color = system_color self.contents.font.size = 22 self.contents.font.bold = false # If No Equipment if equipment.nil? self.contents.draw_text(0, 0, 240, 32, 'Nothing Equipped', 1) return end # If Equipment is a item if equipment.is_a?(RPG::Item) self.contents.draw_text(0, 0, 240, 32, 'No Skills for Items', 1) return end # Draws Equipment bitmap = RPG::Cache.icon(equipment.icon_name) self.contents.blt(4, 4, bitmap, Rect.new(0, 0, 24, 24)) self.contents.draw_text(32, 0, 208, 32, equipment.name, 1) # Gets Equipment Skills if equipment.is_a?(RPG::Weapon) equipment_skills = Weapon_Skills.has_key?(equipment.id) ? Weapon_Skills[equipment.id] : [] elsif equipment.is_a?(RPG::Armor) equipment_skills = Armor_Skills.has_key?(equipment.id) ? Armor_Skills[equipment.id] : [] end # Draws Skills self.contents.font.color = normal_color self.contents.font.size = 14 self.contents.font.bold = true if equipment_skills.size == 0 self.contents.draw_text(0, 32, 240, 32, 'None', 1) return else equipment_skills.each {| skill_id, max | @skills << [skill_id, max]} @skills.sort! {|a, b| a[0] <=> b[0]} for i in 0...@skills.size # Gets AP Total actor = $game_party.actors[actor_id] skill_id = @skills[i][0] ap = actor_id == - 1 ? 0 :actor.skill_ap_totals[skill_id] max = @skills[i][1] draw_skill_progress(skill_id, ap, max, 0, 40 + i * 24, 236) end end @item_max = @skills.size # If One Target if Learn_One_Skill case equipment when RPG::Weapon skill_target = @actor.weapon_skill_target when RPG::Armor case equipment.kind when 0 skill_target = @actor.armor1_skill_target when 1 skill_target = @actor.armor2_skill_target when 2 skill_target = @actor.armor3_skill_target when 3 skill_target = @actor.armor4_skill_target end end for i in 0...@skills.size if @skills[i][0] == skill_target @target_index = i + 1 end end end end #-------------------------------------------------------------------------- # * Frame Update #-------------------------------------------------------------------------- def update super if Learn_One_Skill update_cursor_rect end end #-------------------------------------------------------------------------- # * Cursor Rectangle Update #-------------------------------------------------------------------------- def update_cursor_rect if @target_index.nil? self.cursor_rect.empty else self.cursor_rect.set(0, 40 + (@target_index - 1) * 24, 240, 24) end end #-------------------------------------------------------------------------- # * Draw Skill Progress #-------------------------------------------------------------------------- def draw_skill_progress(skill_id, min, max, x, y, width) # Gets Skill skill = $data_skills[skill_id] # Gets Icon bitmap = RPG::Cache.icon(skill.icon_name) # Draws Icon self.contents.blt(x + 4, y, bitmap, Rect.new(0, 0, 24, 24)) # Draws Skill Name self.contents.draw_text(x + 32, y, 240 - x - 32, 24, skill.name) # Draws Status Bar draw_bar(x + width - 96, y + 2, min, max, 96, 20) # Draws Progress text = min == max ? 'Mastered' : "#{min} / #{max}" self.contents.font.color = Color.new(0, 0, 0, 255) self.contents.draw_text(x + width - 99, y + 1, 96, 24, text, 2) self.contents.font.color = normal_color self.contents.draw_text(x + width - 100, y, 96, 24, text, 2) end end #============================================================================== # ** Scene_Equip #============================================================================== class Scene_Equip #-------------------------------------------------------------------------- # * Alias Listings #-------------------------------------------------------------------------- alias seph_weaponskills_sceneequip_main main alias seph_weaponskills_sceneequip_update update #-------------------------------------------------------------------------- # * Main Processing #-------------------------------------------------------------------------- def main # Equipment Skill Status Window @equipment_skill_status = Window_EquipmentSkills.new # Stores Indexes @r_index, @i_index = @equip_index, 0 # Original Main Method seph_weaponskills_sceneequip_main # Disposes Skill Status Window @equipment_skill_status.dispose end #-------------------------------------------------------------------------- # * Frame Update #-------------------------------------------------------------------------- def update # Update Keyboard Input Module #Keyboard.update # Updates Equipment Skills Window @equipment_skill_status.update # If A Button is Pressed if Input.trigger?(Input::A) # Play Cursor SE $game_system.se_play($data_system.cursor_se) # If Window is off unless @equipment_skill_status.visible # Turn On Window @equipment_skill_status.visible = true # Refresh Window refresh_equipment_skills else # Turns Off Window @equipment_skill_status.visible = false end end # If Window On if @equipment_skill_status.visible # If Right Window Active if @right_window.active # If Index is different unless @right_window.index == @r_index @r_index = @right_window.index # Refresh Weappn Skills refresh_equipment_skills end elsif @item_window.active # If Index is different unless @item_window.index == @i_index @i_index = @item_window.index # Refresh Equipment Skills refresh_equipment_skills end end end # Original Update Method seph_weaponskills_sceneequip_update # One Skill Assignment if Equipment_Skills::Learn_One_Skill if @equipment_skill_status.visible max = @equipment_skill_status.item_max return if max == 0 @help_window.set_text("Press 1 - #{max} to Assign Skill Target") # If Key is Pressed for i in 1..max if Keyboard.trigger?(Keyboard::Numberkeys[i]) @equipment_skill_status.target_index = i skill_id = @equipment_skill_status.skills[i - 1][0] case @right_window.item when RPG::Weapon @actor.weapon_skill_target = skill_id when RPG::Armor case @right_window.item.kind when 0 @actor.armor1_skill_target = skill_id when 1 @actor.armor2_skill_target = skill_id when 2 @actor.armor3_skill_target = skill_id when 3 @actor.armor4_skill_target = skill_id end end end end end end end #-------------------------------------------------------------------------- # * Refresh : Weappn Skills Window #-------------------------------------------------------------------------- def refresh_equipment_skills # Refresh Window if @right_window.active @equipment_skill_status.refresh(@actor_index, @right_window.item) elsif @item_window.active @equipment_skill_status.refresh(@actor_index, @item_window.item) end end end #============================================================================== # ** Scene_Battle #============================================================================== class Scene_Battle #-------------------------------------------------------------------------- # * Include Equipment_Skills #-------------------------------------------------------------------------- include Equipment_Skills #-------------------------------------------------------------------------- # * Alias Listings #-------------------------------------------------------------------------- alias seph_weaponskills_scenebattle_main main alias seph_weaponskills_scenebattle_sp5 start_phase5 alias seph_weaponskills_scenebattle_up5 update_phase5 #-------------------------------------------------------------------------- # * Main Processing #-------------------------------------------------------------------------- def main # Original Main Method seph_weaponskills_scenebattle_main # Disposes AP Aquired Window @ap_result_window.dispose unless @ap_result_window.nil? end #-------------------------------------------------------------------------- # * Start After Battle Phase #-------------------------------------------------------------------------- def start_phase5 # Orignal Start Phase 5 Method seph_weaponskills_scenebattle_sp5 # If Learn By AP if Learn_By_AP # Gets AP Total ap = 0 for enemy in $data_troops[@troop_id].members enemy = $data_enemies[enemy.enemy_id] ap += (Enemy_AP_Values.has_key?(enemy.id) ? Enemy_AP_Values[enemy.id] : Default_Enemy_AP) end # Earns AP for actor in $game_party.actors actor.earn_ap(ap) end # Creates Aquired Ap Window @ap_result_window = Window_BattleResult_AP.new(160 + @result_window.height / 2) end end #-------------------------------------------------------------------------- # * Frame Update (after battle phase) #-------------------------------------------------------------------------- def update_phase5 # Orignal Update Phase 5 Method seph_weaponskills_scenebattle_up5 # Show AP Result Window unless @ap_result_window.nil? @ap_result_window.visible = @result_window.visible end # Show Victory Skills Window if Show_Victory_Skills if @phase5_wait_count == 0 @phase5_wait_count -= 1 @status_window.refresh_skills_status end if @status_window.contents.height > 128 if Input.press?(Input::UP) if @status_window.oy > 0 @status_window.oy -= 8 end elsif Input.press?(Input::DOWN) if @status_window.oy < @status_window.contents.height - 128 @status_window.oy += 8 end end end end end end #============================================================================== # ** Scene_Shop #============================================================================== class Scene_Shop #-------------------------------------------------------------------------- # * Alias Listings #-------------------------------------------------------------------------- alias seph_weaponskills_sceneshop_main main alias seph_weaponskills_sceneshop_update update #-------------------------------------------------------------------------- # * Main Processing #-------------------------------------------------------------------------- def main # Weapon Skill Status Window @equipment_skill_status = Window_EquipmentSkills.new @equipment_skill_status.x = 368 @equipment_skill_status.y = 288 # Stores Index @b_index, @s_index = 0, 0 # Original Main Method seph_weaponskills_sceneshop_main # Disposes Skill Status Window @equipment_skill_status.dispose end #-------------------------------------------------------------------------- # * Frame Update #-------------------------------------------------------------------------- def update # If buy window is active: call update_buy if @buy_window.active || @sell_window.active # Update Weapon Skills update_seph_equipment_skills else if @equipment_skill_status.visible @equipment_skill_status.visible = false end end # Orignal Update Method seph_weaponskills_sceneshop_update end #-------------------------------------------------------------------------- # * Frame Update : Equipment Skills #-------------------------------------------------------------------------- def update_seph_equipment_skills # If A Button is Pressed if Input.trigger?(Input::A) # Play Cursor SE $game_system.se_play($data_system.cursor_se) # If Window is off unless @equipment_skill_status.visible # Turn On Window @equipment_skill_status.visible = true # Refresh Equipment Skills refresh_equipment_skills else # Turns Off Window @equipment_skill_status.visible = false end end # If Equipment Skills On if @equipment_skill_status.visible # If Right Window Active if @buy_window.active # If Index is different unless @buy_window.index == @b_index @b_index = @buy_window.index # Refresh Equipment Skills refresh_equipment_skills end elsif @sell_window.active # If Index is different unless @sell_window.index == @s_index @s_index = @sell_window.index # Refresh Equipment Skills refresh_equipment_skills end end end end #-------------------------------------------------------------------------- # * Refresh : Equipment Skills Window #-------------------------------------------------------------------------- def refresh_equipment_skills # Refresh Window if @buy_window.active @equipment_skill_status.refresh(-1, @buy_window.item) elsif @sell_window.active @equipment_skill_status.refresh(-1, @sell_window.item) end end end #-------------------------------------------------------------------------- # * End SDK Enable Test #-------------------------------------------------------------------------- -
Ho modificato quello script tenendo conto di quello che volevi e penso di essere riuscito a fare quello che volevi, Raldon.
#=================================================== # ■ AMS - Advanced Message Script - R4 [Update #2] #=================================================== # Per informazioni e aggiornamenti sullo script visitate: # www.dubealex.com (Creation Asylum) # # Modificato, aggiustato e migliorato da: Dubealex # Original Script Core by: XRXS Scripter (Jap Dudes) # HTML Hexadecimal color feature from: Phylomorphis # # Ringraziamenti: # Rabu: Per aver aggiunto l'opzione Mostra face # # Traduzione in italiano by Tio # Per più informazioni visitate www.rpgshrine.altervista.org # Per trovare gli ultimi aggiornamenti nello script cercate: #NEW # Per configurare il bottone che fa saltare il dialogo cercare: #SKIP_TEXT_CODE # # May 18, 2005 #=================================================== LETTER_BY_LETTER_MODE = true #Setta la modalità di lettura lettera per lettera #(per toglierla modificare true in false) HERO_FACE_ID = 1 class Game_Event attr_reader :character_name end class Interpreter def setup_starting_event if $game_map.need_refresh $game_map.refresh end if $game_temp.common_event_id > 0 setup($data_common_events[$game_temp.common_event_id].list, 0) $game_temp.common_event_id = 0 return end for event in $game_map.events.values if event.starting if event.trigger < 3 event.clear_starting event.lock end $game_temp.event_graphic = event.character_name setup(event.list, event.id) return end end for common_event in $data_common_events.compact if common_event.trigger == 1 and $game_switches[common_event.switch_id] == true setup(common_event.list, 0) return end end end end class Game_Temp attr_accessor :event_graphic alias sylaer_mod_personalize_messages_game_temp_initialize initialize def initialize @event_graphic = "" sylaer_mod_personalize_messages_game_temp_initialize end end #=================================================== # ▼ Inizio CLASSE AMS #=================================================== class AMS attr_accessor :name_box_x_offset attr_accessor :name_box_y_offset attr_accessor :font_type attr_accessor :name_font_type attr_accessor :font_size attr_accessor :name_font_size attr_accessor :message_box_opacity attr_accessor :name_box_skin attr_accessor :name_box_text_color attr_accessor :message_box_text_color attr_accessor :message_box_skin attr_accessor :name_box_width attr_accessor :name_box_height attr_accessor :message_width attr_accessor :message_height attr_accessor :message_x attr_accessor :message_y_bottom attr_accessor :message_y_middle attr_accessor :message_y_top attr_accessor :event_message_x_ofset attr_accessor :event_message_y_ofset def initialize @name_box_x_offset = 0 #Sceglie la posizione X della finestra col nome. Iniziale= 0 @name_box_y_offset = -10 #Sceglie la posizione Y della finestra col nome. Iniziale= -10 @name_box_width = 8 #Sceglie la larghezza della finestra col nome. Iniziale= 8 @name_box_height = 26 #Sceglie l'altezza della finestra col nome. Iniziale= 26 @font_type = "Tahoma" #Sceglie il font per la finestra dei messaggi @name_font_type = "Tahoma" #Sceglie il font per la finestra col nome @font_size = 22 #Sceglie la grandezza del font nella finestra dei messaggi @name_font_size = 22 #Sceglie la grandezza del font per la finestra col nome @name_box_text_color=0 #Sceglie il colore del font per la finestra dei messaggi @message_box_text_color=0 #Sceglie il colore del font per la finestra col nome @message_box_opacity = 160 #Sceglie l'opacità della finestra dei messaggi.Iniziale=160 @message_box_skin = "001-Blue01" #Nome della Windowskin della finestra dei messaggi. @name_box_skin = "001-Blue01" #Nome della Windowskin della finestra col nome. @message_width = 480 #Sceglie la larghezza della finestra dei messaggi. Iniziale=480 @message_height = 160 #Sceglie l'altezza della finestra dei messaggi. Iniziale=160 @message_x = 80 #Sceglie la posizione X della finestra dei messaggi. Iniziale=80 @message_y_bottom = 304 #Sceglie la posizione Y della finestra a partire dal basso. Iniziale=304 @message_y_middle = 160 #Sceglie la posizione Y della finestra a partire dall'alto. Iniziale=160 @message_y_top = 16 #Sceglie la posizione della finestra del nome in alto. Iniziale=16 @event_message_x_ofset = 0 #Sceglie la posizione X della finestra orientata agli eventi. Iniziale=0 @event_message_y_ofset = 48 #Sceglie la posizione Y della finestra orientata agli eventi. Iniziale=48 end end #=================================================== # ▲ Finisce CLASSE AMS #=================================================== #=================================================== # ▼ Inizia Classe Window_Message #=================================================== class Window_Message < Window_Selectable alias xrxs9_initialize initialize def initialize @hero_face = "" @alex_skip = false xrxs9_initialize if $soundname_on_speak == nil then $soundname_on_speak = "" end $gaiji_file = "./Graphics/Gaiji/sample.png" if FileTest.exist?($gaiji_file) @gaiji_cache = Bitmap.new($gaiji_file) else @gaigi_cache = nil end @opacity_text_buf = Bitmap.new(32, 32) end #-------------------------------------------------------------------------- alias xrxs9_terminate_message terminate_message def terminate_message if @name_window_frame != nil @name_window_frame.dispose @name_window_frame = nil end if @name_window_text != nil @name_window_text.dispose @name_window_text = nil end xrxs9_terminate_message end #-------------------------------------------------------------------------- def refresh self.contents.clear self.contents.font.color = text_color($ams.message_box_text_color) self.contents.font.name = $ams.font_type self.contents.font.size = $ams.font_size self.windowskin = RPG::Cache.windowskin($ams.message_box_skin) @x = @y = @max_x = @max_y = @indent = @lines = 0 @face_indent = 0 @opacity = 255 @cursor_width = 0 @write_speed = 0 @write_wait = 0 @mid_stop = false @face_file = nil @popchar = -2 if $game_temp.choice_start == 0 @x = 8 end if $game_temp.message_text != nil @now_text = $game_temp.message_text if FileTest.exist?("Graphics/Pictures/" + $game_temp.event_graphic + ".png") @face_file = $game_temp.event_graphic + ".png" @x = @face_indent = 128 self.contents.blt(16, 16, RPG::Cache.picture(@face_file), Rect.new(0, 0, 96, 96)) end if (/\A\\[Ff]\[(.+?)\]/.match(@now_text))!=nil then @face_file = $1 + ".png" @x = @face_indent = 128 if FileTest.exist?("Graphics/Pictures/" + $1 + ".png") self.contents.blt(16, 16, RPG::Cache.picture(@face_file), Rect.new(0, 0, 96, 96)) end @now_text.gsub!(/\\[Ff]\[(.*?)\]/) { "" } end begin last_text = @now_text.clone @now_text.gsub!(/\\[Vv]\[([IiWwAaSs]?)([0-9]+)\]/) { convart_value($1, $2.to_i) } end until @now_text == last_text @now_text.gsub!(/\\[Nn]\[([0-9]+)\]/) do @face_file = @hero_face + ".png" unless @hero_face == "" @x = @face_indent = 128 if FileTest.exist?("Graphics/Pictures/" + @hero_face + ".png") self.contents.blt(16, 16, RPG::Cache.picture(@hero_face + ".png"), Rect.new(0, 0, 96, 96)) end $game_actors[$1.to_i] != nil ? $game_actors[$1.to_i].name : "" end #NEW #Dubealex's Stop Skip Text ON-OFF @now_text.gsub!(/\\[%]/) { "\100" } #Fine nuovo comando #NEW #Dubealex's Show Monster Name Feature @now_text.gsub!(/\\[Mm]\[([0-9]+)\]/) do $data_enemies[$1.to_i] != nil ? $data_enemies[$1.to_i].name : "" end #Fine nuovo comando #NEW #Dubealex's Show Item Price Feature @now_text.gsub!(/\\[Pp]rice\[([0-9]+)\]/) do $data_items[$1.to_i] != nil ? $data_items[$1.to_i].price : "" end #Fine nuovo comando #NEW #Dubealex's Show Hero Class Name Feature @now_text.gsub!(/\\[Cc]lass\[([0-9]+)\]/) do $data_classes[$data_actors[$1.to_i].class_id] != nil ? $data_classes[$data_actors[$1.to_i].class_id].name : "" end #Fine nuovo comando #NEW #Dubealex's Show Current Map Name Feature @now_text.gsub!(/\\[Mm]ap/) do $game_map.name != nil ? $game_map.name : "" end #Fine nuovo comando #NEW #Dubealex's Choose Name Box Text Color @now_text.gsub!(/\\[Zz]\[([0-9]+)\]/) do $ams.name_box_text_color=$1.to_i @now_text.sub!(/\\[Zz]\[([0-9]+)\]/) { "" } end #FIne nuovo comando name_window_set = false if (/\\[Nn]ame\[(.+?)\]/.match(@now_text)) != nil name_window_set = true name_text = $1 @now_text.sub!(/\\[Nn]ame\[(.*?)\]/) { "" } end if (/\\[Pp]\[([-1,0-9]+)\]/.match(@now_text))!=nil then @popchar = $1.to_i if @popchar == -1 @x = @indent = 48 @y = 4 end @now_text.gsub!(/\\[Pp]\[([-1,0-9]+)\]/) { "" } end @max_choice_x = 0 if @popchar >= 0 @text_save = @now_text.clone @max_x = 0 @max_y = 4 for i in 0..3 line = @now_text.split(/\n/)[3-i] @max_y -= 1 if line == nil and @max_y <= 4-i next if line == nil line.gsub!(/\\\w\[(\w+)\]/) { "" } cx = contents.text_size(line).width @max_x = cx if cx > @max_x if i >= $game_temp.choice_start @max_choice_x = cx if cx > @max_choice_x end end self.width = @max_x + 32 + @face_indent self.height = (@max_y - 1) * 32 + 64 @max_choice_x -= 68 @max_choice_x -= @face_indent*216/128 else @max_x = self.width - 32 - @face_indent for i in 0..3 line = @now_text.split(/\n/)[i] next if line == nil line.gsub!(/\\\w\[(\w+)\]/) { "" } cx = contents.text_size(line).width if i >= $game_temp.choice_start @max_choice_x = cx if cx > @max_choice_x end end @max_choice_x += 8 end @cursor_width = 0 @now_text.gsub!(/\\\\/) { "0" } @now_text.gsub!(/\\[Cc]\[([0123456789ABCDEF#]+)\]/) { "1[#{$1}]" } @now_text.gsub!(/\\[Gg]/) { "2" } @now_text.gsub!(/\\[Ss]\[([0-9]+)\]/) { "3[#{$1}]" } @now_text.gsub!(/\\[Aa]\[(.*?)\]/) { "4[#{$1}]" } #NEW #Dubealex's Permanent Color Change @now_text.gsub!(/\\[Cc]olor\[([0-9]+)\]/) do $ams.message_box_text_color= $1.to_i @now_text.sub!(/\\[Cc]\[([0-9]+)\]/) { "" } end #Fine nuovo comando #NEW #Dubealex's Font Change Feature @now_text.gsub(/\\[Tt]\[(.*?)\]/) do buftxt = $1.to_s $ams.font_type = buftxt @now_text.sub!(/\\[Tt]\[(.*?)\]/) { "" } end #Fine nuovo comando @now_text.gsub!(/\\[.]/) { "5" } @now_text.gsub!(/\\[|]/) { "6" } @now_text.gsub!(/\\[>]/) { "16" } @now_text.gsub!(/\\[<]/) { "17" } @now_text.gsub!(/\\[!]/) { "20" } @now_text.gsub!(/\\[~]/) { "21" } @now_text.gsub!(/\\[Ee]\[([0-9]+)\]/) { "22[#{$1}]" } @now_text.gsub!(/\\[Ii]/) { "23" } @now_text.gsub!(/\\[Oo]\[([0-9]+)\]/) { "24[#{$1}]" } @now_text.gsub!(/\\[Hh]\[([0-9]+)\]/) { "25[#{$1}]" } @now_text.gsub!(/\\[Bb]\[([0-9]+)\]/) { "26[#{$1}]" } @now_text.gsub!(/\\[Rr]\[(.*?)\]/) { "27[#{$1}]" } reset_window if name_window_set color=$ams.name_box_text_color off_x = $ams.name_box_x_offset off_y = $ams.name_box_y_offset space = 2 x = self.x + off_x - space / 2 y = self.y + off_y - space / 2 w = self.contents.text_size(name_text).width + $ams.name_box_width + space h = $ams.name_box_height + space @name_window_frame = Window_Frame.new(x, y, w, h) @name_window_frame.z = self.z + 1 x = self.x + off_x + 4 y = self.y + off_y @name_window_text = Air_Text.new(x, y, name_text, color) @name_window_text.z = self.z + 2 end end reset_window if $game_temp.choice_max > 0 @item_max = $game_temp.choice_max self.active = true self.index = 0 end if $game_temp.num_input_variable_id > 0 digits_max = $game_temp.num_input_digits_max number = $game_variables[$game_temp.num_input_variable_id] @input_number_window = Window_InputNumber.new(digits_max) @input_number_window.number = number @input_number_window.x = self.x + 8 @input_number_window.y = self.y + $game_temp.num_input_start * 32 end end #-------------------------------------------------------------------------- def update super case $game_variables[HERO_FACE_ID] when 1 @hero_face = "UmanoM" when 2 when 3 when 4 when 5 when 6 when 7 when 8 when 9 when 10 when 11 when 12 when 13 when 14 end if @fade_in self.contents_opacity += 24 if @input_number_window != nil @input_number_window.contents_opacity += 24 end if self.contents_opacity == 255 @fade_in = false end return end @now_text = nil if @now_text == "" if @now_text != nil and @mid_stop == false if @write_wait > 0 @write_wait -= 1 return end text_not_skip = LETTER_BY_LETTER_MODE while true @max_x = @x if @max_x < @x @max_y = @y if @max_y < @y if (c = @now_text.slice!(/./m)) != nil if c == "0" c = "\\" end if c == "1" @now_text.sub!(/\[([0123456789ABCDEF#]+)\]/, "") temp_color = $1 color = temp_color.to_i leading_x = temp_color.to_s.slice!(/./m) if leading_x == "#" self.contents.font.color = hex_color(temp_color) next end if color >= 0 and color <= 7 self.contents.font.color = text_color(color) end next end if c == "2" if @gold_window == nil and @popchar <= 0 @gold_window = Window_Gold.new @gold_window.x = 560 - @gold_window.width if $game_temp.in_battle @gold_window.y = 192 else @gold_window.y = self.y >= 128 ? 32 : 384 end @gold_window.opacity = self.opacity @gold_window.back_opacity = self.back_opacity end c = "" end if c == "3" @now_text.sub!(/\[([0-9]+)\]/, "") speed = $1.to_i if speed >= 0 and speed <= 19 @write_speed = speed end c = "" end if c == "4" @now_text.sub!(/\[(.*?)\]/, "") buftxt = $1.dup.to_s if buftxt.match(/\//) == nil and buftxt != "" then $soundname_on_speak = "Audio/SE/" + buftxt else $soundname_on_speak = buftxt.dup end c = "" elsif c == "4" c = "" end if c == "5" @write_wait += 5 c = "" end if c == "6" @write_wait += 20 c = "" end if c == "16" text_not_skip = false c = "" end if c == "17" text_not_skip = true c = "" end if c == "20" @mid_stop = true c = "" end if c == "21" terminate_message return end if c == "23" @indent = @x c = "" end if c == "24" @now_text.sub!(/\[([0-9]+)\]/, "") @opacity = $1.to_i color = self.contents.font.color self.contents.font.name = $ams.font_type self.contents.font.size = $ams.font_size self.contents.font.color = Color.new(color.red, color.green, color.blue, color.alpha * @opacity / 255) c = "" end if c == "25" @now_text.sub!(/\[([0-9]+)\]/, "") self.contents.font.size = [[$1.to_i, 6].max, 32].min c = "" end if c == "26" @now_text.sub!(/\[([0-9]+)\]/, "") @x += $1.to_i c = "" end if c == "27" @now_text.sub!(/\[(.*?)\]/, "") @x += ruby_draw_text(self.contents, @x, @y * line_height + (line_height - self.contents.font.size), $1, @opacity) if $soundname_on_speak != "" Audio.se_play($soundname_on_speak) end c = "" end if c == "30" @now_text.sub!(/\[(.*?)\]/, "") self.contents.blt(@x , @y * line_height + 8, RPG::Cache.icon($1), Rect.new(0, 0, 24, 24)) if $soundname_on_speak != "" Audio.se_play($soundname_on_speak) end @x += 24 c = "" end if c == "\n" @lines += 1 @y += 1 @x = 0 + @indent + @face_indent if @lines >= $game_temp.choice_start @x = 8 + @indent + @face_indent @cursor_width = @max_choice_x end c = "" end if c == "22" @now_text.sub!(/\[([0-9]+)\]/, "") @x += gaiji_draw(4 + @x, @y * line_height + (line_height - self.contents.font.size), $1.to_i) c = "" end #NEW #Dubealex's Text Skip On/OFF Command if c == "\100" if @alex_skip==false @alex_skip=true else @alex_skip=false end c = "" end #Fine nuovo comando if c != "" self.contents.draw_text(0+@x, 32 * @y, 40, 32, c) @x += self.contents.text_size(c).width if $soundname_on_speak != "" then Audio.se_play($soundname_on_speak) end end #SKIP_TEXT_CODE # B = Esc, 0 (tastiera numerica), X # C = Invio, Barra spaziatrice e C # A = Shift, Z if Input.press?(Input::C) # <-- Cambia il valore in quella linea if @alex_skip==false text_not_skip = false end end else text_not_skip = true break end if text_not_skip break end end @write_wait += @write_speed return end if @input_number_window != nil @input_number_window.update if Input.trigger?(Input::C) $game_system.se_play($data_system.decision_se) $game_variables[$game_temp.num_input_variable_id] = @input_number_window.number $game_map.need_refresh = true @input_number_window.dispose @input_number_window = nil terminate_message end return end if @contents_showing if $game_temp.choice_max == 0 self.pause = true end if Input.trigger?(Input::B) if $game_temp.choice_max > 0 and $game_temp.choice_cancel_type > 0 $game_system.se_play($data_system.cancel_se) $game_temp.choice_proc.call($game_temp.choice_cancel_type - 1) terminate_message end end if Input.trigger?(Input::C) if $game_temp.choice_max > 0 $game_system.se_play($data_system.decision_se) $game_temp.choice_proc.call(self.index) end if @mid_stop @mid_stop = false return else terminate_message end end return end if @fade_out == false and $game_temp.message_text != nil @contents_showing = true $game_temp.message_window_showing = true refresh Graphics.frame_reset self.visible = true self.contents_opacity = 0 if @input_number_window != nil @input_number_window.contents_opacity = 0 end @fade_in = true return end if self.visible @fade_out = true self.opacity -= 48 if self.opacity == 0 self.visible = false @fade_out = false $game_temp.message_window_showing = false end return end end #-------------------------------------------------------------------------- def get_character(parameter) case parameter when 0 return $game_player else events = $game_map.events return events == nil ? nil : events[parameter] end end #-------------------------------------------------------------------------- def reset_window #GRANDEZZA_MESSAGGIO #POSIZIONE_MESSAGGIO if @popchar >= 0 events = $game_map.events if events != nil character = get_character(@popchar) x = [[character.screen_x - $ams.event_message_x_ofset - self.width / 2, 4].max, 636 - self.width].min y = [[character.screen_y - $ams.event_message_y_ofset - self.height, 4].max, 476 - self.height].min self.x = x self.y = y end elsif @popchar == -1 self.x = -4 self.y = -4 self.width = 648 self.height = 488 else if $game_temp.in_battle self.y = 16 else case $game_system.message_position when 0 self.y = $ams.message_y_top when 1 self.y = $ams.message_y_middle when 2 self.y = $ams.message_y_bottom end self.x = $ams.message_x if @face_file == nil self.width = $ams.message_width self.x = $ams.message_x else if self.width <= 600 self.width = 600 self.x -=60 end end self.height = $ams.message_height end end self.contents = Bitmap.new(self.width - 32, self.height - 32) self.contents.font.color = text_color($ams.message_box_text_color) self.contents.font.name = $ams.font_type self.contents.font.size = $ams.font_size if @face_file != nil self.contents.blt(16, 16, RPG::Cache.picture(@face_file), Rect.new(0, 0, 96, 96)) end if @popchar == -1 self.opacity = 255 self.back_opacity = 0 elsif $game_system.message_frame == 0 self.opacity = 255 self.back_opacity = $ams.message_box_opacity else self.opacity = 0 self.back_opacity = $ams.message_box_opacity end end #-------------------------------------------------------------------------- def gaiji_draw(x, y, num) if @gaiji_cache == nil return 0 else if @gaiji_cache.width < num * 24 return 0 end if self.contents.font.size >= 20 and self.contents.font.size <= 24 size = 24 else size = self.contents.font.size * 100 * 24 / 2200 end self.contents.stretch_blt(Rect.new(x, y, size, size), @gaiji_cache, Rect.new(num * 24, 0, 24, 24)) if $soundname_on_speak != "" then Audio.se_play($soundname_on_speak) end return size end end #-------------------------------------------------------------------------- def line_height return 32 if self.contents.font.size >= 20 and self.contents.font.size <= 24 return 32 else return self.contents.font.size * 15 / 10 end end #-------------------------------------------------------------------------- def ruby_draw_text(target, x, y, str,opacity) sizeback = target.font.size target.font.size * 3 / 2 > 32 ? rubysize = 32 - target.font.size : rubysize = target.font.size / 2 rubysize = [rubysize, 6].max opacity = [[opacity, 0].max, 255].min split_s = str.split(/,/) split_s[0] == nil ? split_s[0] = "" : nil split_s[1] == nil ? split_s[1] = "" : nil height = sizeback + rubysize width = target.text_size(split_s[0]).width target.font.size = rubysize ruby_width = target.text_size(split_s[1]).width target.font.size = sizeback buf_width = [target.text_size(split_s[0]).width, ruby_width].max width - ruby_width != 0 ? sub_x = (width - ruby_width) / 2 : sub_x = 0 if opacity == 255 target.font.size = rubysize target.draw_text(x + sub_x, y - target.font.size, target.text_size(split_s[1]).width, target.font.size, split_s[1]) target.font.size = sizeback target.draw_text(x, y, width, target.font.size, split_s[0]) return width else if @opacity_text_buf.width < buf_width or @opacity_text_buf.height < height @opacity_text_buf.dispose @opacity_text_buf = Bitmap.new(buf_width, height) else @opacity_text_buf.clear end @opacity_text_buf.font.size = rubysize @opacity_text_buf.draw_text(0 , 0, buf_width, rubysize, split_s[1], 1) @opacity_text_buf.font.size = sizeback @opacity_text_buf.draw_text(0 , rubysize, buf_width, sizeback, split_s[0], 1) if sub_x >= 0 target.blt(x, y - rubysize, @opacity_text_buf, Rect.new(0, 0, buf_width, height), opacity) else target.blt(x + sub_x, y - rubysize, @opacity_text_buf, Rect.new(0, 0, buf_width, height), opacity) end return width end end #-------------------------------------------------------------------------- def convart_value(option, index) option == nil ? option = "" : nil option.downcase! case option when "i" unless $data_items[index].name == nil r = sprintf("30[%s]%s", $data_items[index].icon_name, $data_items[index].name) end when "w" unless $data_weapons[index].name == nil r = sprintf("30[%s]%s", $data_weapons[index].icon_name, $data_weapons[index].name) end when "a" unless $data_armors[index].name == nil r = sprintf("30[%s]%s", $data_armors[index].icon_name, $data_armors[index].name) end when "s" unless $data_skills[index].name == nil r = sprintf("30[%s]%s", $data_skills[index].icon_name, $data_skills[index].name) end else r = $game_variables[index] end r == nil ? r = "" : nil return r end #-------------------------------------------------------------------------- def dispose terminate_message if @gaiji_cache != nil unless @gaiji_cache.disposed? @gaiji_cache.dispose end end unless @opacity_text_buf.disposed? @opacity_text_buf.dispose end $game_temp.message_window_showing = false if @input_number_window != nil @input_number_window.dispose end super end #-------------------------------------------------------------------------- def update_cursor_rect if @index >= 0 n = $game_temp.choice_start + @index self.cursor_rect.set(8 + @indent + @face_indent, n * 32, @cursor_width, 32) else self.cursor_rect.empty end end end #========================================= # ▲ Finisce CLASSE Window_Message #========================================= #========================================= # ▼ Inizia Classe Window_Frame #========================================= class Window_Frame < Window_Base def initialize(x, y, width, height) super(x, y, width, height) self.windowskin = RPG::Cache.windowskin($ams.name_box_skin) self.contents = nil end #-------------------------------------------------------------------------- def dispose super end end #========================================= # ▲ Esci CLASSE Window_Frame #========================================= #========================================= # ▼ Inizia aggiunte classe Game_Map #========================================= class Game_Map #Dubealex's Addition (from XRXS), mostra nome della mappa nel gioco def name $map_infos[@map_id] end end #========================================= # ▲ Finisce aggiunte classe Game_Map #========================================= #========================================= # ▼ Inizia aggiunte classe Scene_Title #========================================= class Scene_Title #Dubealex's Addition (from XRXS) mostra nome della mappa nel gioco $map_infos = load_data("Data/MapInfos.rxdata") for key in $map_infos.keys $map_infos[key] = $map_infos[key].name end #Dubealex's addition, salva i dati dei messaggi quando salvi il gioco $ams = AMS.new end #========================================= # ▲ Finisce aggiunte classe Scene_Title #========================================= #========================================= # ▼ Inizia aggiunte classe Window_Base #========================================= class Window_Base < Window #Dubealex Addition (from Phylomorphis) per usare i codici dei colori HTML def hex_color(string) red = 0 green = 0 blue = 0 if string.size != 6 print("Vengono usati sei carrateri.") print("Sarà usato il colore bianco per il testo.") return Color.new(255, 255, 255, 255) end for i in 1..6 s = string.slice!(/./m) if s == "#" print("Potrebbe non essere prensete il carattere \"#\".") print("Sarà usato il colore bianco per il testo.") return Color.new(255, 255, 255, 255) end value = hex_convert(s) if value == -1 print("Errore nel convertire il valore.") print("Sarà usato il colore bianco per il testo.") return Color.new(255, 255, 255, 255) end case i when 1 red += value * 16 when 2 red += value when 3 green += value * 16 when 4 green += value when 5 blue += value * 16 when 6 blue += value end end return Color.new(red, green, blue, 255) end #-------------------------------------------------------------------------- def hex_convert(character) case character when "0" return 0 when "1" return 1 when "2" return 2 when "3" return 3 when "4" return 4 when "5" return 5 when "6" return 6 when "7" return 7 when "8" return 8 when "9" return 9 when "A" return 10 when "B" return 11 when "C" return 12 when "D" return 13 when "E" return 14 when "F" return 15 end return -1 end end #========================================= # ▲ Finisce aggiunte classe Window_Base #========================================= #========================================= # ▼ Inizia classe Air_Text #========================================= class Air_Text < Window_Base def initialize(x, y, designate_text, color=0) super(x-16, y-16, 32 + designate_text.size * 12, 56) self.opacity = 0 self.back_opacity = 0 self.contents = Bitmap.new(self.width - 32, self.height - 32) w = self.contents.width h = self.contents.height self.contents.font.name = $ams.name_font_type self.contents.font.size = $ams.name_font_size self.contents.font.color = text_color(color) self.contents.draw_text(0, 0, w, h, designate_text) end #-------------------------------------------------------------------------- def dispose self.contents.clear super end end #========================================== # ▲ Finisce classe Air_Text #========================================== #=================================================== # ▼ Inizia aggiunte classe Scene_Save #=================================================== class Scene_Save < Scene_File alias ams_original_write_save_data write_save_data def write_save_data(file) ams_original_write_save_data(file) Marshal.dump($ams, file) end end #=================================================== # ▲ Finisce aggiunte classe Scene_Save #=================================================== #=================================================== # ▼ Inizia aggiunte classe Scene_Load #=================================================== class Scene_Load < Scene_File alias ams_original_read_save_data read_save_data def read_save_data(file) ams_original_read_save_data(file) $ams = Marshal.load(file) end end #=================================================== # ▲ Finisce aggiunte classe Scene_Load #===================================================Tutto quello che devi fare è mettere le faces dei png nella cartella Pictures per quanto riguarda i png, invece per l'eroe devi, oltre alle faces in Pictures, mettere il nome dell'eroe in cima al discorso, ovviamente con la formula: \n[NUMEROEROE].
Tutto qua.
-
No io parlavo del 2.
Anche se non mi piace, ho fatto le prime due missioni e basta.
-
Allora non lo so.
Comunque col Minkoff a me non dà nessun problema.
In realtà non mi dà nessun problema qualunque altro script ci metto.
-
No è finito, ma se avete qualche suggerimento o qualche altra idea lo posso sempre modificare.
-
Aggiornato il topic.
-
Mi è venuta in mente una cosa Belxebu, non è che nel gioco che hai fatto te, quello col minkoff e il resto, hai creato un salvataggio prima di aggiungere gli script e poi lo hai caricato?
-
Prova Hidden & Dangerous, 128 MB di Ram e sulla II guerra mondiale.
C'era il gioco completo su GMC di qualche anno fa...
-
Veramente supenda la demo!!!Ma per fare piu di 5 pagine???
Basta modificare la costante NUM_PAGES in Scene_QuestJournal.
-
-
Hai ragione Belxebu, Monotype Corsiva ci sta meglio.
-
Ok, ora metto anche la demo, però non è ancora finito al 100%.
Per cui ci sono diversi errori.
P.S. Quale font mi consigliate?
-
Ho fatto una nuova versione del diario, quella vecchia aveva troppi problemi e non era proprio un diario era più una lunga pergamena.
Adesso nella nuova vesione non c'è lo scorrimento verticale, bensì a pagine.
Non l'ho ancora terminato, però qui ho uno screen.
http://img167.imageshack.us/img167/2475/diariozl3.png
-
Be' prova questo script.
Ah. Se vuoi sapere cosa sono i Rens leggi qua.

Progetto di BS
in Supporto XP
Posted
Ok ve lo faccio io.
Però ho bisogno di altro materiale e altre informazioni su come funziona il tutto.
Mandatemelo via MP.