#======================================================================================== module Last_H MaxChar = 10 # ¾ÆÀÌÅÛ À̸§ÀÇ ÃÖ´ë ¹®ÀÚ¿­ÀÔ´Ï´Ù. ¼ýÀÚ¸¦ ¼öÁ¤ÇϽøé #±ÛÀÚÀÇÃÖ´ë¼ö°¡ ´Ã¾î³³´Ï´Ù. ´õÀÌ»ó ´Ã¸®±æ ±ÇÀåÇÏÁö ¾Ê½À´Ï´Ù. end #============================================================================== # ¡á Scene_Item #------------------------------------------------------------------------------ # ¾ÆÀÌÅÛ È­¸éÀÇ Ã³¸®¸¦ ½Ç½ÃÇϴ Ŭ·¡½ºÀÔ´Ï´Ù. #============================================================================== class Scene_Item < Scene_Base def update_item_selection if Input.trigger?(Input::B) Sound.play_cancel return_scene elsif Input.trigger?(Input::C) @item = @item_window.item if @item != nil $game_party.last_item_id = @item.id end if $game_party.item_can_use?(@item) Sound.play_decision determine_item else Sound.play_buzzer end elsif Input.trigger?(Input::L) Sound.play_decision if @item_window.item ==nil Sound.play_buzzer else case @item_window.item when RPG::Item $game_temp.item_kind = 1 when RPG::Weapon $game_temp.item_kind = 2 when RPG::Armor $game_temp.item_kind =3 end $game_temp.name_item_id = @item_window.item.id $scene = Scene_ItemName.new end end end end #============================================================================== # ¡á Game_Temp #------------------------------------------------------------------------------ # ¼¼ÀÌºê µ¥ÀÌÅÍ¿¡ Æ÷ÇÔµÇÁö ¾Ê´Â, ÀϽÃÀûÀÎ µ¥ÀÌÅ͸¦ Ãë±ÞÇϴ Ŭ·¡½ºÀÔ´Ï´Ù. # ÀÌ Å¬·¡½ºÀÇ ÀνºÅϽº´Â $game_temp ·Î ÂüÁ¶µË´Ï´Ù. #============================================================================== class Game_Temp< Game_Temp #-------------------------------------------------------------------------- # ¡Ü °ø°³ ÀνºÅϽº º¯¼ö #-------------------------------------------------------------------------- attr_accessor :name_item_id #¾ÆÀÌÅÛ À̸§ ÀÔ·Â id attr_accessor :item_kind #¾ÆÀÌÅÛ À̸§ ÀÔ·Â id #-------------------------------------------------------------------------- # ¡Ü ¿ÀºêÁ§Æ® ÃʱâÈ­ #-------------------------------------------------------------------------- def initialize super @name_item_id= 0 @item_kind = 0 end end #============================================================================== # ¡á Scene_ItemName #------------------------------------------------------------------------------ # ¾ÆÀÌÅÛ À̸§ ÀÔ·Â È­¸éÀÇ Ã³¸®¸¦ ½Ç½ÃÇϴ Ŭ·¡½ºÀÔ´Ï´Ù. #============================================================================== class Scene_ItemName < Scene_Base #-------------------------------------------------------------------------- # ¡Ü °³½Ã ó¸® #-------------------------------------------------------------------------- def start super create_menu_background case $game_temp.item_kind when 1 @item = $data_items[$game_temp.name_item_id] when 2 @item = $data_weapons[$game_temp.name_item_id] when 3 @item = $data_armors[$game_temp.name_item_id] end @edit_window = Window_ItemNameEdit.new(@item, Last_H::MaxChar) @input_window = Window_NameInput.new end #-------------------------------------------------------------------------- # ¡Ü Á¾·á ó¸® #-------------------------------------------------------------------------- def terminate super dispose_menu_background @edit_window.dispose @input_window.dispose end #-------------------------------------------------------------------------- # ¡Ü ¿ø·¡ÀÇ È­¸é¿¡ µ¹¾Æ¿Â´Ù #-------------------------------------------------------------------------- def return_scene $scene = Scene_Item.new end #-------------------------------------------------------------------------- # ¡Ü ÇÁ·¹ÀÓ °»½Å #-------------------------------------------------------------------------- def update super update_menu_background @edit_window.update @input_window.update if Input.repeat?(Input::B) if @edit_window.index > 0 # ¹®ÀÚ À§Ä¡°¡ Á´ÜÀº ¾Æ´Ï´Ù Sound.play_cancel @edit_window.back end elsif Input.trigger?(Input::C) if @input_window.is_decision # Ä¿¼­ À§Ä¡°¡ [°áÁ¤] ÀÇ °æ¿ì if @edit_window.name == "" # À̸§ÀÌ ºñ¾îÀÖ´Â °æ¿ì @edit_window.restore_default # µðÆúÆ® À̸§À¸·Î µÇµ¹¸°´Ù if @edit_window.name == "" Sound.play_buzzer else Sound.play_decision end else Sound.play_decision @item.name = @edit_window.name # ¾ÆÀÌÅÛÀÇ À̸§À» º¯°æ return_scene end elsif @input_window.character != "" # ¹®ÀÚ°¡ ºñ¾îÀÖÁö ¾ÊÀº °æ¿ì if @edit_window.index == @edit_window.max_char # ¹®ÀÚ À§Ä¡°¡ ¿ì´Ü Sound.play_buzzer else Sound.play_decision @edit_window.add(@input_window.character) # ¹®ÀÚ¸¦ Ãß°¡ end end end end end #============================================================================== # ¡á Window_ItemNameEdit #------------------------------------------------------------------------------ # À̸§ ÀÔ·Â È­¸é¿¡¼­, ¾ÆÀÌÅÛ À̸§À» ÆíÁýÇÏ´Â À©µµ¿ìÀÔ´Ï´Ù. #============================================================================== class Window_ItemNameEdit < Window_Base #-------------------------------------------------------------------------- # ¡Ü °ø°³ ÀνºÅϽº º¯¼ö #-------------------------------------------------------------------------- attr_reader :name # À̸§ attr_reader :index # Ä¿¼­ À§Ä¡ attr_reader :max_char # ÃÖ´ë ¹®ÀÚ¼ö #-------------------------------------------------------------------------- # ¡Ü ¿ÀºêÁ§Æ® ÃʱâÈ­ # actor : ¾×ÅÍ # max_char : ÃÖ´ë ¹®ÀÚ¼ö #-------------------------------------------------------------------------- def initialize(item,max_char) super(88, 20, 368, 128) @item = item @name =item.name @max_char = max_char name_array = @name.split(//)[0...@max_char] # ÃÖ´ë ¹®ÀÚ¼ö¿¡ °ÅµÐ´Ù @name = "" for i in 0...name_array.size @name += name_array[i] end @default_name = @name @index = name_array.size self.active = false refresh update_cursor end #-------------------------------------------------------------------------- # ¡Ü µðÆúÆ®ÀÇ À̸§¿¡ µÇµ¹¸°´Ù #-------------------------------------------------------------------------- def restore_default @name = @default_name @index = @name.split(//).size refresh update_cursor end #-------------------------------------------------------------------------- # ¡Ü ¹®ÀÚÀÇ Ãß°¡ # character : Ãß°¡ÇÏ´Â ¹®ÀÚ #-------------------------------------------------------------------------- def add(character) if @index < @max_char and character != "" @name += character @index += 1 refresh update_cursor end end #-------------------------------------------------------------------------- # ¡Ü ¹®ÀÚÀÇ »èÁ¦ #-------------------------------------------------------------------------- def back if @index > 0 name_array = @name.split(//) # ÇÑ ÀÚ »èÁ¦ @name = "" for i in 0...name_array.size-1 @name += name_array[i] end @index -= 1 refresh update_cursor end end #-------------------------------------------------------------------------- # ¡Ü Ç׸ñÀ» ¹¦È­ ÇÏ´Â ±¸ÇüÀÇ Ãëµæ # index : Ç׸ñ ¹øÈ£ #-------------------------------------------------------------------------- def item_rect(index) rect = Rect.new(0, 0, 0, 0) rect.x = 220 - (@max_char + 1) * 12 + index * 24 rect.y = 36 rect.width = 24 rect.height = WLH return rect end #-------------------------------------------------------------------------- # ¡Ü ¸®ÇÁ·¹½¬ #-------------------------------------------------------------------------- def refresh self.contents.clear #~ draw_actor_face(@actor, 0, 0) name_array = @name.split(//) for i in 0...@max_char c = name_array[i] c = '_' if c == nil self.contents.draw_text(item_rect(i), c, 1) end end #-------------------------------------------------------------------------- # ¡Ü Ä¿¼­ÀÇ °»½Å #-------------------------------------------------------------------------- def update_cursor self.cursor_rect = item_rect(@index) end #-------------------------------------------------------------------------- # ¡Ü ÇÁ·¹ÀÓ °»½Å #-------------------------------------------------------------------------- def update super update_cursor end end #============================================================================== # ¡á Scene_FileÀ» ÀçÁ¤ÀÇ #------------------------------------------------------------------------------ # ÀúÀå ÆÄÀÏ È­¸éÀÇ Ã³¸®¸¦ ½Ç½ÃÇϴ Ŭ·¡½ºÀÔ´Ï´Ù. #============================================================================== class Scene_File < Scene_Base #-------------------------------------------------------------------------- # ¡Ü ¼¼ÀÌºê µ¥ÀÌÅÍÀÇ ±â·Ï # file : ¾²±â¿ë ÆÄÀÏ ¿ÀºêÁ§Æ® (¿ÀÇÂÀÌ ³¡³­ »óÅÂ) #-------------------------------------------------------------------------- alias last_H_write_save_data write_save_data def write_save_data(file) last_H_write_save_data(file) Marshal.dump($data_items, file) Marshal.dump($data_weapons, file) Marshal.dump($data_armors, file) end #-------------------------------------------------------------------------- # ¡Ü ¼¼ÀÌºê µ¥ÀÌÅÍÀÇ Àбâ # file : Àбâ¿ë ÆÄÀÏ ¿ÀºêÁ§Æ® (¿ÀÇÂÀÌ ³¡³­ »óÅÂ) #-------------------------------------------------------------------------- alias last_H_read_save_data read_save_data def read_save_data(file) last_H_read_save_data(file) $data_items = Marshal.load(file) $data_weapons = Marshal.load(file) $data_armors = Marshal.load(file) end end