Project1
标题:
如何在游戏过程中为物品添加名称和注释?
[打印本页]
作者:
tyru12
时间:
2010-11-14 12:14
标题:
如何在游戏过程中为物品添加名称和注释?
如何在游戏过程中为物品添加名称和注释?
作者:
企鹅达达
时间:
2010-11-14 12:26
改名字有现成的脚本,不过改注释就没有了
=begin
■スキル?アイテム名称変更 RGSS2 DAIpage■ v1.0
●機能と仕様●
任意のスキルやアイテムの名前をプレイヤーに変更させることができます。
●使い方●
イベントコマンド?スクリプトで、
$scene = Scene_Item_Name.new(kind, id)
を実行します。
kindには種別(0:スキル、1:アイテム、2:武器、3:防具)を指定します。
idにはアイテムのidを指定します。
記述例:
# ファイアの名前を変更
$scene = Scene_Item_Name.new(0, 59)
# ポーションの名前を変更
$scene = Scene_Item_Name.new(1, 1)
●再定義している箇所●
Game_System、module RPGをエイリアス。
※同じ箇所を変更するスクリプトと併用した場合は競合する可能性があります。
●更新履歴●
09/06/04:公開
=end
module RPG
#==============================================================================
# ■ BaseItem
#==============================================================================
class BaseItem
#--------------------------------------------------------------------------
# ● 名前
#--------------------------------------------------------------------------
alias dai_ed_name name unless $@
def name
return name_kind.nil? ? dai_ed_name : name_kind
end
#--------------------------------------------------------------------------
# ● 種別の判別
#--------------------------------------------------------------------------
def name_kind
return $game_system.name_list[0][id] if self.is_a?(RPG::Skill)
return $game_system.name_list[1][id] if self.is_a?(RPG::Item)
return $game_system.name_list[2][id] if self.is_a?(RPG::Weapon)
return $game_system.name_list[3][id] if self.is_a?(RPG::Armor)
return nil
end
end
end
#==============================================================================
# ■ Game_System
#==============================================================================
class Game_System
#--------------------------------------------------------------------------
# ● 公開インスタンス変数
#--------------------------------------------------------------------------
attr_accessor :name_list
#--------------------------------------------------------------------------
# ● オブジェクト初期化
#--------------------------------------------------------------------------
alias dai_ed_name_initialize initialize
def initialize
dai_ed_name_initialize
@name_list = [{0 => ""},{0 => ""},{0 => ""},{0 => ""}]
end
end
#==============================================================================
# ■ Window_NameEdit
#==============================================================================
class Window_Item_NameEdit < Window_NameEdit
#--------------------------------------------------------------------------
# ● リフレッシュ
#--------------------------------------------------------------------------
def refresh
self.contents.clear
draw_icon(@actor.icon_index, 36, 36)
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
end
#==============================================================================
# ■ Scene_Item_Name
#==============================================================================
class Scene_Item_Name < Scene_Base
#--------------------------------------------------------------------------
# ● オブジェクト初期化
#--------------------------------------------------------------------------
def initialize(kind, id)
@kind = kind
@id = id
end
#--------------------------------------------------------------------------
# ● 開始処理
#--------------------------------------------------------------------------
def start
super
create_menu_background
@edit_window = Window_Item_NameEdit.new(item, 10)
@input_window = Window_NameInput.new
end
#--------------------------------------------------------------------------
# ● 終了処理
#--------------------------------------------------------------------------
def terminate
super
dispose_menu_background
@edit_window.dispose
@input_window.dispose
end
#--------------------------------------------------------------------------
# ● 元の画面へ戻る
#--------------------------------------------------------------------------
def return_scene
$scene = Scene_Map.new
end
#--------------------------------------------------------------------------
# ● アイテムの取得
#--------------------------------------------------------------------------
def item
case @kind
when 0; return $data_skills[@id]
when 1; return $data_items[@id]
when 2; return $data_weapons[@id]
when 3; return $data_armors[@id]
end
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
$game_system.name_list[@kind][@id] = @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
复制代码
作者:
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