Project1

标题: 一个较为简单的脚本添加。 [打印本页]

作者: yzlsym    时间: 2008-4-9 02:21
标题: 一个较为简单的脚本添加。
  1. #==============================================================================
  2. # ■ Scene_Build
  3. #------------------------------------------------------------------------------
  4. #  自定义锻造一件新装备
  5. #==============================================================================
  6. class Scene_Build < Scene_Base
  7.   #--------------------------------------------------------------------------
  8.   # ● 初始化
  9.   #--------------------------------------------------------------------------
  10.   def initialize(materials={})
  11.     @materials = materials                  # 取得已选材料
  12.     $category = "武器" if $category.nil?    # 默认打造武器
  13.   end
  14.   #--------------------------------------------------------------------------
  15.   # ● 主处理
  16.   #--------------------------------------------------------------------------
  17.   def main
  18.     super
  19.     if @materials != {} and $scene.is_a?(Scene_Map)
  20.       @materials.each {|kind, item|  $game_party.gain_item(item, 1)}
  21.     end
  22.   end
  23.   #--------------------------------------------------------------------------
  24.   # ● 生成主要窗口
  25.   #--------------------------------------------------------------------------
  26.   def window_create
  27.     @create_window = Window_Build
  28.     @create_window.index = 0
  29.     @create_window.materials = @materials
  30.   end
  31.   #--------------------------------------------------------------------------
  32.   # ● 释放窗口
  33.   #--------------------------------------------------------------------------
  34.   def window_dispose
  35.     @create_window.dispose
  36.   end
  37.   #--------------------------------------------------------------------------
  38.   # ● 刷新画面
  39.   #--------------------------------------------------------------------------
  40.   def update
  41.     on_cancel if Input.trigger?(Input::B)
  42.     @create_window.update
  43.       case @create_window.index
  44.       when 0
  45.         change_name
  46.       when 1
  47.         change_category
  48.       when 2
  49.         change_category_style
  50.       when 3
  51.         change_materials(0)
  52.       when 4
  53.         change_materials(1)
  54.       when 5
  55.         change_materials(2)
  56.       when 6
  57.         change_materials(3)
  58.       when 7
  59.         change_materials(4)
  60.       when 8
  61.         create
  62.       when 9
  63.         # 按下 C 键的情况下
  64.         if Input.trigger?(Input::C)
  65.           $scene = Scene_Map.new
  66.         return
  67.       end
  68.     end
  69.   end
  70.   #--------------------------------------------------------------------------
  71.   # ● 选择退出
  72.   #--------------------------------------------------------------------------
  73.   def on_cancel
  74.     # 播放取消SE
  75.     $game_system.se_play($data_system.cancel_se)
  76.     # 切换画面
  77.     $scene = Scene_Map.new
  78.   end
  79.   #--------------------------------------------------------------------------
  80.   # ● 改变装备名称
  81.   #--------------------------------------------------------------------------
  82.   def change_name
  83.     if Input.trigger?(Input::C)
  84.       $game_system.se_play($data_system.decision_se)
  85.       # 下面包含了三种起名的方法
  86.       # 方式一是RMXP默认的选字起名
  87.       # 方式二是通过外挂dll来实现用系统的输入法来输入名称
  88.       # 方式三则是用BB崽和亿万星辰一同开发的RM输入法来实现名称输入
  89.       # 三种方式只能选一种哦!
  90.       
  91.       #$game_temp.name_actor_id = 1  # 角色ID
  92.       #$game_temp.name_max_char = 16 # 名字长度
  93.       #$scene = Scene_Name.new  # 起名方式1
  94.       
  95.       #$game_temp.name_actor_id = 1  # 起名方式2
  96.       #ActorNameInput(1)             # 起名方式2
  97.       
  98.       $game_temp.name_actor_id = 9  # 角色ID
  99.       $game_temp.name_max_char = 6 # 名字长度
  100.       $scene = Scene_Name_CHN.new  # 起名方式3
  101.     end
  102.   end
  103.   #--------------------------------------------------------------------------
  104.   # ● 改变装备种类
  105.   #--------------------------------------------------------------------------
  106.   def change_category
  107.     if Input.trigger?(Input::LEFT)
  108.       $game_system.se_play($data_system.cursor_se)
  109.       $category = "武器"
  110.       $category_style_id = 0
  111.       return
  112.     end
  113.     if Input.trigger?(Input::RIGHT)
  114.       $game_system.se_play($data_system.cursor_se)
  115.       $category = "防具"
  116.       $category_style_id = 0
  117.       return
  118.     end   
  119.   end
  120.   #--------------------------------------------------------------------------
  121.   # ● 改变装备样式
  122.   #--------------------------------------------------------------------------
  123.   def change_category_style
  124.     if Input.trigger?(Input::LEFT)
  125.       $game_system.se_play($data_system.cursor_se)
  126.       $category_style_id -= 1 unless $category_style_id == 0
  127.       return
  128.     end
  129.     if Input.trigger?(Input::RIGHT)
  130.       $game_system.se_play($data_system.cursor_se)
  131.       $category_style_id += 1 unless $category_style_id == 7
  132.       return
  133.     end
  134.   end
  135.   #--------------------------------------------------------------------------
  136.   # ● 改变打造材料
  137.   #--------------------------------------------------------------------------
  138.   def change_materials(kind)
  139.     if Input.trigger?(Input::C)
  140.       $scene = Scene_Item_Select.new(@materials, kind)
  141.     end
  142.   end
  143.   #--------------------------------------------------------------------------
  144.   # ● 创建完毕
  145.   #--------------------------------------------------------------------------
  146.   def create
  147.     if Input.trigger?(Input::C)
  148.       case $category
  149.       when "武器"
  150.         category = "weapon"
  151.       when "防具"
  152.         category = "armor"
  153.       end
  154.       create_new_equip(@materials, category)
  155.       $game_party.gain_weapon($new_weapon.id, 1) if category == "weapon"
  156.       $game_party.gain_armor($new_armor.id, 1) if category == "armor"
  157.       free_variable(category)
  158.       @materials.each {|kind, item|  $game_party.gain_item(item, -1)}
  159.       $scene = Scene_Map.new
  160.     end
  161.   end
  162. 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