Project1

标题: 如何在游戏过程中为物品添加名称和注释? [打印本页]

作者: tyru12    时间: 2010-11-14 12:14
标题: 如何在游戏过程中为物品添加名称和注释?
如何在游戏过程中为物品添加名称和注释?
作者: 企鹅达达    时间: 2010-11-14 12:26
改名字有现成的脚本,不过改注释就没有了
  1. =begin
  2. ■スキル?アイテム名称変更 RGSS2 DAIpage■ v1.0

  3. ●機能と仕様●
  4.   任意のスキルやアイテムの名前をプレイヤーに変更させることができます。

  5. ●使い方●
  6.  イベントコマンド?スクリプトで、

  7. $scene = Scene_Item_Name.new(kind, id)

  8.  を実行します。
  9.  kindには種別(0:スキル、1:アイテム、2:武器、3:防具)を指定します。
  10.  idにはアイテムのidを指定します。

  11. 記述例:
  12. # ファイアの名前を変更
  13. $scene = Scene_Item_Name.new(0, 59)

  14. # ポーションの名前を変更
  15. $scene = Scene_Item_Name.new(1, 1)

  16. ●再定義している箇所●
  17.  Game_System、module RPGをエイリアス。

  18.  ※同じ箇所を変更するスクリプトと併用した場合は競合する可能性があります。

  19. ●更新履歴●
  20.  09/06/04:公開

  21. =end

  22. module RPG
  23. #==============================================================================
  24. # ■ BaseItem
  25. #==============================================================================
  26. class BaseItem
  27.   #--------------------------------------------------------------------------
  28.   # ● 名前
  29.   #--------------------------------------------------------------------------
  30.   alias dai_ed_name name unless $@
  31.   def name
  32.     return name_kind.nil? ? dai_ed_name : name_kind
  33.   end
  34.   #--------------------------------------------------------------------------
  35.   # ● 種別の判別
  36.   #--------------------------------------------------------------------------
  37.   def name_kind
  38.     return $game_system.name_list[0][id] if self.is_a?(RPG::Skill)
  39.     return $game_system.name_list[1][id] if self.is_a?(RPG::Item)
  40.     return $game_system.name_list[2][id] if self.is_a?(RPG::Weapon)
  41.     return $game_system.name_list[3][id] if self.is_a?(RPG::Armor)
  42.     return nil
  43.   end
  44. end
  45. end

  46. #==============================================================================
  47. # ■ Game_System
  48. #==============================================================================
  49. class Game_System
  50.   #--------------------------------------------------------------------------
  51.   # ● 公開インスタンス変数
  52.   #--------------------------------------------------------------------------
  53.   attr_accessor :name_list
  54.   #--------------------------------------------------------------------------
  55.   # ● オブジェクト初期化
  56.   #--------------------------------------------------------------------------
  57.   alias dai_ed_name_initialize initialize
  58.   def initialize
  59.     dai_ed_name_initialize
  60.     @name_list = [{0 => ""},{0 => ""},{0 => ""},{0 => ""}]
  61.   end
  62. end

  63. #==============================================================================
  64. # ■ Window_NameEdit
  65. #==============================================================================
  66. class Window_Item_NameEdit < Window_NameEdit
  67.   #--------------------------------------------------------------------------
  68.   # ● リフレッシュ
  69.   #--------------------------------------------------------------------------
  70.   def refresh
  71.     self.contents.clear
  72.     draw_icon(@actor.icon_index, 36, 36)
  73.     name_array = @name.split(//)
  74.     for i in 0...@max_char
  75.       c = name_array[i]
  76.       c = '_' if c == nil
  77.       self.contents.draw_text(item_rect(i), c, 1)
  78.     end
  79.   end
  80. end

  81. #==============================================================================
  82. # ■ Scene_Item_Name
  83. #==============================================================================
  84. class Scene_Item_Name < Scene_Base
  85.   #--------------------------------------------------------------------------
  86.   # ● オブジェクト初期化
  87.   #--------------------------------------------------------------------------
  88.   def initialize(kind, id)
  89.     @kind = kind
  90.     @id = id
  91.   end
  92.   #--------------------------------------------------------------------------
  93.   # ● 開始処理
  94.   #--------------------------------------------------------------------------
  95.   def start
  96.     super
  97.     create_menu_background
  98.     @edit_window = Window_Item_NameEdit.new(item, 10)
  99.     @input_window = Window_NameInput.new
  100.   end
  101.   #--------------------------------------------------------------------------
  102.   # ● 終了処理
  103.   #--------------------------------------------------------------------------
  104.   def terminate
  105.     super
  106.     dispose_menu_background
  107.     @edit_window.dispose
  108.     @input_window.dispose
  109.   end
  110.   #--------------------------------------------------------------------------
  111.   # ● 元の画面へ戻る
  112.   #--------------------------------------------------------------------------
  113.   def return_scene
  114.     $scene = Scene_Map.new
  115.   end
  116.   #--------------------------------------------------------------------------
  117.   # ● アイテムの取得
  118.   #--------------------------------------------------------------------------
  119.   def item
  120.     case @kind
  121.     when 0; return $data_skills[@id]
  122.     when 1; return $data_items[@id]
  123.     when 2; return $data_weapons[@id]
  124.     when 3; return $data_armors[@id]
  125.     end
  126.   end
  127.   #--------------------------------------------------------------------------
  128.   # ● フレーム更新
  129.   #--------------------------------------------------------------------------
  130.   def update
  131.     super
  132.     update_menu_background
  133.     @edit_window.update
  134.     @input_window.update
  135.     if Input.repeat?(Input::B)
  136.       if @edit_window.index > 0
  137.         Sound.play_cancel
  138.         @edit_window.back
  139.       end
  140.     elsif Input.trigger?(Input::C)
  141.       if @input_window.is_decision
  142.         if @edit_window.name == ""
  143.           @edit_window.restore_default
  144.           if @edit_window.name == ""
  145.             Sound.play_buzzer
  146.           else
  147.             Sound.play_decision
  148.           end
  149.         else
  150.           Sound.play_decision
  151.           $game_system.name_list[@kind][@id] = @edit_window.name
  152.           return_scene
  153.         end
  154.       elsif @input_window.character != ""
  155.         if @edit_window.index == @edit_window.max_char
  156.           Sound.play_buzzer
  157.         else
  158.           Sound.play_decision
  159.           @edit_window.add(@input_window.character)
  160.         end
  161.       end
  162.     end
  163.   end
  164. end
复制代码

作者: a554187203    时间: 2010-11-14 12:59
回复 企鹅达达 的帖子

如何使用啊???
作者: 企鹅达达    时间: 2010-11-14 13:07
事件中插入脚本 $scene = Scene_Item_Name.new(kind, id)

kind为需要改名的种类(0:技能、1:物品、2:武器、3:防具)。

id要改名的种类中的id。如要给物品2(高效药水)改名,则事件脚本中填写 $scene = Scene_Item_Name.new(1, 2)

改名的字库为给主角改名的字库,可以再这里修改 Window_NameInput




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1