Project1
标题:
一个较为简单的脚本添加。
[打印本页]
作者:
yzlsym
时间:
2008-4-9 02:21
标题:
一个较为简单的脚本添加。
#==============================================================================
# ■ Scene_Build
#------------------------------------------------------------------------------
# 自定义锻造一件新装备
#==============================================================================
class Scene_Build < Scene_Base
#--------------------------------------------------------------------------
# ● 初始化
#--------------------------------------------------------------------------
def initialize(materials={})
@materials = materials # 取得已选材料
$category = "武器" if $category.nil? # 默认打造武器
end
#--------------------------------------------------------------------------
# ● 主处理
#--------------------------------------------------------------------------
def main
super
if @materials != {} and $scene.is_a?(Scene_Map)
@materials.each {|kind, item| $game_party.gain_item(item, 1)}
end
end
#--------------------------------------------------------------------------
# ● 生成主要窗口
#--------------------------------------------------------------------------
def window_create
@create_window = Window_Build
@create_window.index = 0
@create_window.materials = @materials
end
#--------------------------------------------------------------------------
# ● 释放窗口
#--------------------------------------------------------------------------
def window_dispose
@create_window.dispose
end
#--------------------------------------------------------------------------
# ● 刷新画面
#--------------------------------------------------------------------------
def update
on_cancel if Input.trigger?(Input::B)
@create_window.update
case @create_window.index
when 0
change_name
when 1
change_category
when 2
change_category_style
when 3
change_materials(0)
when 4
change_materials(1)
when 5
change_materials(2)
when 6
change_materials(3)
when 7
change_materials(4)
when 8
create
when 9
# 按下 C 键的情况下
if Input.trigger?(Input::C)
$scene = Scene_Map.new
return
end
end
end
#--------------------------------------------------------------------------
# ● 选择退出
#--------------------------------------------------------------------------
def on_cancel
# 播放取消SE
$game_system.se_play($data_system.cancel_se)
# 切换画面
$scene = Scene_Map.new
end
#--------------------------------------------------------------------------
# ● 改变装备名称
#--------------------------------------------------------------------------
def change_name
if Input.trigger?(Input::C)
$game_system.se_play($data_system.decision_se)
# 下面包含了三种起名的方法
# 方式一是RMXP默认的选字起名
# 方式二是通过外挂dll来实现用系统的输入法来输入名称
# 方式三则是用BB崽和亿万星辰一同开发的RM输入法来实现名称输入
# 三种方式只能选一种哦!
#$game_temp.name_actor_id = 1 # 角色ID
#$game_temp.name_max_char = 16 # 名字长度
#$scene = Scene_Name.new # 起名方式1
#$game_temp.name_actor_id = 1 # 起名方式2
#ActorNameInput(1) # 起名方式2
$game_temp.name_actor_id = 9 # 角色ID
$game_temp.name_max_char = 6 # 名字长度
$scene = Scene_Name_CHN.new # 起名方式3
end
end
#--------------------------------------------------------------------------
# ● 改变装备种类
#--------------------------------------------------------------------------
def change_category
if Input.trigger?(Input::LEFT)
$game_system.se_play($data_system.cursor_se)
$category = "武器"
$category_style_id = 0
return
end
if Input.trigger?(Input::RIGHT)
$game_system.se_play($data_system.cursor_se)
$category = "防具"
$category_style_id = 0
return
end
end
#--------------------------------------------------------------------------
# ● 改变装备样式
#--------------------------------------------------------------------------
def change_category_style
if Input.trigger?(Input::LEFT)
$game_system.se_play($data_system.cursor_se)
$category_style_id -= 1 unless $category_style_id == 0
return
end
if Input.trigger?(Input::RIGHT)
$game_system.se_play($data_system.cursor_se)
$category_style_id += 1 unless $category_style_id == 7
return
end
end
#--------------------------------------------------------------------------
# ● 改变打造材料
#--------------------------------------------------------------------------
def change_materials(kind)
if Input.trigger?(Input::C)
$scene = Scene_Item_Select.new(@materials, kind)
end
end
#--------------------------------------------------------------------------
# ● 创建完毕
#--------------------------------------------------------------------------
def create
if Input.trigger?(Input::C)
case $category
when "武器"
category = "weapon"
when "防具"
category = "armor"
end
create_new_equip(@materials, category)
$game_party.gain_weapon($new_weapon.id, 1) if category == "weapon"
$game_party.gain_armor($new_armor.id, 1) if category == "armor"
free_variable(category)
@materials.each {|kind, item| $game_party.gain_item(item, -1)}
$scene = Scene_Map.new
end
end
end
复制代码
这个里面想设置当材料为空时打造选项是灰色应该怎么做?
材料变量@materials
打造选项when 8 creat [LINE]1,#dddddd[/LINE]
版务信息:本贴由楼主自主结贴~
作者:
hitlerson
时间:
2008-4-9 05:23
这个代码不象是XP的嘛!!!
在选择打造什么的时候,读取光标的.index
写一个DEF判断光标所在位置的装备能否合成,不能合成就return false
when 8 creat 前做个判断,如果false,就让他显示灰色
作者:
禾西
时间:
2008-4-9 05:34
樓主寫了個父類而已……(知道內幕的某人)
在def create底下加入限制選擇語句
return if @materials.empty?
其他的就在* Window_Build 的64行處加入顔色判斷語句
if @materials.empty?
self.contents.font.color = disabled_color
else
self.contents.font.color = normal_colorend
end [LINE]1,#dddddd[/LINE]
系统信息:本贴由楼主认可为正确答案,66RPG感谢您的热情解答~
欢迎光临 Project1 (https://rpg.blue/)
Powered by Discuz! X3.1