设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 1856|回复: 19
打印 上一主题 下一主题

脚本Window_Status的问题

 关闭 [复制链接]

Lv1.梦旅人

梦石
0
星屑
110
在线时间
153 小时
注册时间
2008-5-25
帖子
585
跳转到指定楼层
1
发表于 2009-1-1 03:18:56 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
怎样在Window_Status加上角色特技,如果没学这个特技,就不显示这个特技?
偶虽然学过一写脚本,但这个不会,请多多指教……

版务信息:本贴由楼主自主结贴~
[color=DimGray]TransFormer4[/color]

Lv4.逐梦者

「Pemercyia」


Urhurrenna

梦石
0
星屑
9448
在线时间
2751 小时
注册时间
2008-9-5
帖子
3544

开拓者短篇八RM组冠军短篇九导演组亚军白银编剧

2
发表于 2009-1-1 03:21:28 | 只看该作者
明尼说说自己的构思....
可以试试把"Window_Skill"里的相关句子弄到"Window_Status"里看看...
这只是构思哦....
回复 支持 反对

使用道具 举报

头像被屏蔽

Lv1.梦旅人 (禁止发言)

lov Peii 4ever

梦石
0
星屑
50
在线时间
1 小时
注册时间
2008-10-28
帖子
423
3
发表于 2009-1-1 03:21:42 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
签名被屏蔽
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
110
在线时间
153 小时
注册时间
2008-5-25
帖子
585
4
 楼主| 发表于 2009-1-1 03:27:14 | 只看该作者
以下引用3nξhα0_lim于2008-12-31 19:21:42的发言:

需要显示所有的特技?
位置充足么?

充足的很
补充一句:还要显示技能的图标
[color=DimGray]TransFormer4[/color]
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
216
在线时间
77 小时
注册时间
2008-4-24
帖子
164
5
发表于 2009-1-1 03:56:21 | 只看该作者
建议你还是开一个新Scene做这个。除非你的角色学的技能非常少,或者字体非常小

如果要显示所有技能的话,试试这个
  1. #==============================================================================
  2. # ■ Window_ShowSkill
  3. #------------------------------------------------------------------------------
  4. #  特技画面、可以使用的特技列表显示窗口。
  5. #==============================================================================

  6. class Window_ShowSkill < Window_Selectable
  7.   #--------------------------------------------------------------------------
  8.   # ● 初始化对象
  9.   #     x      : 窗口的 X 坐标
  10.   #     y      : 窗口的 Y 坐标
  11.   #     width  : 窗口的宽
  12.   #     height : 窗口的高
  13.   #     actor  : 角色
  14.   #--------------------------------------------------------------------------
  15.   def initialize(x, y, width, height, actor)
  16.     super(x, y, width, height)
  17.     @actor = actor
  18.     @column_max = 3
  19.     self.index = 0
  20.     refresh
  21.   end
  22.   #--------------------------------------------------------------------------
  23.   # ● 获取特技
  24.   #--------------------------------------------------------------------------
  25.   def skill
  26.     return @data[self.index]
  27.   end
  28.   #--------------------------------------------------------------------------
  29.   # ● 刷新
  30.   #--------------------------------------------------------------------------
  31.   def refresh
  32.     @data = []
  33.     for skill in $data_skills[0..50] #如果角色所有会的技能在0~50号技能的话
  34.       @data.push(skill)
  35.       if skill.id == @actor.last_skill_id
  36.         self.index = @data.size - 1
  37.       end
  38.     end
  39.     @item_max = @data.size
  40.     create_contents
  41.     for i in 0...@item_max
  42.       draw_item(i)
  43.     end
  44.   end
  45.   #--------------------------------------------------------------------------
  46.   # ● 描绘项目
  47.   #     index : 项目编号
  48.   #--------------------------------------------------------------------------
  49.   def draw_item(index)
  50.     rect = item_rect(index)
  51.     self.contents.clear_rect(rect)
  52.     skill = @data[index]
  53.     if skill != nil
  54.       rect.width -= 4
  55.       enabled = @actor.skill_learn?(skill)
  56.       draw_item_name(skill, rect.x, rect.y, enabled)
  57.       self.contents.draw_text(rect, @actor.calc_mp_cost(skill), 2)
  58.     end
  59.   end
  60.   #--------------------------------------------------------------------------
  61.   # ● 刷新帮助文本
  62.   #--------------------------------------------------------------------------
  63.   def update_help
  64.     @help_window.set_text(skill == nil ? "" : skill.description)
  65.   end
  66.   
  67. end

  68. class Scene_ShowSkill < Scene_Base
  69.   #--------------------------------------------------------------------------
  70.   # ● 初始化对像
  71.   #     actor_index : 角色位置
  72.   #--------------------------------------------------------------------------
  73.   def initialize(actor_index = 0)
  74.     @actor_index = actor_index
  75.   end
  76.   #--------------------------------------------------------------------------
  77.   # ● 开始处理
  78.   #--------------------------------------------------------------------------
  79.   def start
  80.     super
  81.     create_menu_background
  82.     @actor = $game_party.members[@actor_index]
  83.     @viewport = Viewport.new(0, 0, 544, 416)
  84.     @help_window = Window_Help.new
  85.     @help_window.viewport = @viewport
  86.     @tree_window = Window_ShowSkill.new(0, 112, 544, 304, @actor)
  87.     @tree_window.viewport = @viewport
  88.     @tree_window.help_window = @help_window
  89.    
  90.   end
  91.   #--------------------------------------------------------------------------
  92.   # ● 结束处理
  93.   #--------------------------------------------------------------------------
  94.   def terminate
  95.     super
  96.     dispose_menu_background
  97.     @help_window.dispose
  98.     @tree_window.dispose
  99.   end
  100.   #--------------------------------------------------------------------------
  101.   # ● 回到原画面
  102.   #--------------------------------------------------------------------------
  103.   def return_scene
  104.     $scene = Scene_Menu.new(0)    #回到的光标数
  105.   end
  106.   #--------------------------------------------------------------------------
  107.   # ● 切换至下一角色画面
  108.   #--------------------------------------------------------------------------
  109.   def next_actor
  110.     @actor_index += 1
  111.     @actor_index %= $game_party.members.size
  112.     $scene = Scene_Tree.new(@actor_index)
  113.   end
  114.   #--------------------------------------------------------------------------
  115.   # ● 切换至上一角色画面
  116.   #--------------------------------------------------------------------------
  117.   def prev_actor
  118.     @actor_index += $game_party.members.size - 1
  119.     @actor_index %= $game_party.members.size
  120.     $scene = Scene_Tree.new(@actor_index)
  121.   end
  122.   #--------------------------------------------------------------------------
  123.   # ● 更新画面
  124.   #--------------------------------------------------------------------------
  125.   def update
  126.     super
  127.     update_menu_background
  128.     @help_window.update
  129.     @tree_window.update
  130.     if Input.trigger?(Input::B)
  131.       Sound.play_cancel
  132.       return_scene
  133.     elsif Input.trigger?(Input::R)
  134.       Sound.play_cursor
  135.       next_actor
  136.     elsif Input.trigger?(Input::L)
  137.       Sound.play_cursor
  138.       prev_actor
  139.     end
  140.    
  141.   end
  142. end
复制代码


调用的时候 $Scene=Scene_ShowSkill.new(0)
玩游戏总是不如做游戏的感觉好。所以喜欢做RPG
缅怀邓爷爷。
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
110
在线时间
153 小时
注册时间
2008-5-25
帖子
585
6
 楼主| 发表于 2009-1-1 04:00:23 | 只看该作者
回复 支持 反对

使用道具 举报

Lv1.梦旅人

綾川司の姫様<

梦石
0
星屑
50
在线时间
796 小时
注册时间
2007-12-20
帖子
4520

贵宾第3届短篇游戏大赛R剧及RMTV组亚军

7
发表于 2009-1-1 19:11:17 | 只看该作者
Window_Status是用于Scene_Status的吧?我也建议是另开窗口做一个(仿照Window_Skill)然后将这个窗口生成于Scene_Status里面。

生命即是责任。自己即是世界。
回复 支持 反对

使用道具 举报

Lv1.梦旅人

魔王 ⑨

梦石
0
星屑
95
在线时间
380 小时
注册时间
2006-10-16
帖子
4299

贵宾

8
发表于 2009-1-1 19:29:49 | 只看该作者
不过该窗口显示的特技不能用吧,发觉LZ在仿空轨……
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
216
在线时间
77 小时
注册时间
2008-4-24
帖子
164
9
发表于 2009-1-1 19:50:07 | 只看该作者
就是不能用的。所以把
enabled = @actor.skill_can_use?(skill)改成了
enabled = @actor.skill_learn?(skill)
而且也没加后面的使用技能脚本
玩游戏总是不如做游戏的感觉好。所以喜欢做RPG
缅怀邓爷爷。
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
110
在线时间
153 小时
注册时间
2008-5-25
帖子
585
10
 楼主| 发表于 2009-1-1 20:56:17 | 只看该作者
以下引用小空弟于2008-12-31 19:56:21的发言:

建议你还是开一个新Scene做这个。除非你的角色学的技能非常少,或者字体非常小

如果要显示所有技能的话,试试这个
#==============================================================================
# ■ Window_ShowSkill
#------------------------------------------------------------------------------
#  特技画面、可以使用的特技列表显示窗口。
#==============================================================================

class Window_ShowSkill < Window_Selectable
  #--------------------------------------------------------------------------
  # ● 初始化对象
  #     x      : 窗口的 X 坐标
  #     y      : 窗口的 Y 坐标
  #     width  : 窗口的宽
  #     height : 窗口的高
  #     actor  : 角色
  #--------------------------------------------------------------------------
  def initialize(x, y, width, height, actor)
    super(x, y, width, height)
    @actor = actor
    @column_max = 3
    self.index = 0
    refresh
  end
  #--------------------------------------------------------------------------
  # ● 获取特技
  #--------------------------------------------------------------------------
  def skill
    return @data[self.index]
  end
  #--------------------------------------------------------------------------
  # ● 刷新
  #--------------------------------------------------------------------------
  def refresh
    @data = []
    for skill in $data_skills[0..50] #如果角色所有会的技能在0~50号技能的话
      @data.push(skill)
      if skill.id == @actor.last_skill_id
        self.index = @data.size - 1
      end
    end
    @item_max = @data.size
    create_contents
    for i in 0...@item_max
      draw_item(i)
    end
  end
  #--------------------------------------------------------------------------
  # ● 描绘项目
  #     index : 项目编号
  #--------------------------------------------------------------------------
  def draw_item(index)
    rect = item_rect(index)
    self.contents.clear_rect(rect)
    skill = @data[index]
    if skill != nil
      rect.width -= 4
      enabled = @actor.skill_learn?(skill)
      draw_item_name(skill, rect.x, rect.y, enabled)
      self.contents.draw_text(rect, @actor.calc_mp_cost(skill), 2)
    end
  end
  #--------------------------------------------------------------------------
  # ● 刷新帮助文本
  #--------------------------------------------------------------------------
  def update_help
    @help_window.set_text(skill == nil ? "" : skill.description)
  end
  
end

class Scene_ShowSkill < Scene_Base
  #--------------------------------------------------------------------------
  # ● 初始化对像
  #     actor_index : 角色位置
  #--------------------------------------------------------------------------
  def initialize(actor_index = 0)
    @actor_index = actor_index
  end
  #--------------------------------------------------------------------------
  # ● 开始处理
  #--------------------------------------------------------------------------
  def start
    super
    create_menu_background
    @actor = $game_party.members[@actor_index]
    @viewport = Viewport.new(0, 0, 544, 416)
    @help_window = Window_Help.new
    @help_window.viewport = @viewport
    @tree_window = Window_ShowSkill.new(0, 112, 544, 304, @actor)
    @tree_window.viewport = @viewport
    @tree_window.help_window = @help_window
   
  end
  #--------------------------------------------------------------------------
  # ● 结束处理
  #--------------------------------------------------------------------------
  def terminate
    super
    dispose_menu_background
    @help_window.dispose
    @tree_window.dispose
  end
  #--------------------------------------------------------------------------
  # ● 回到原画面
  #--------------------------------------------------------------------------
  def return_scene
    $scene = Scene_Menu.new(0)    #回到的光标数
  end
  #--------------------------------------------------------------------------
  # ● 切换至下一角色画面
  #--------------------------------------------------------------------------
  def next_actor
    @actor_index += 1
    @actor_index %= $game_party.members.size
    $scene = Scene_Tree.new(@actor_index)
  end
  #--------------------------------------------------------------------------
  # ● 切换至上一角色画面
  #--------------------------------------------------------------------------
  def prev_actor
    @actor_index += $game_party.members.size - 1
    @actor_index %= $game_party.members.size
    $scene = Scene_Tree.new(@actor_index)
  end
  #--------------------------------------------------------------------------
  # ● 更新画面
  #--------------------------------------------------------------------------
  def update
    super
    update_menu_background
    @help_window.update
    @tree_window.update
    if Input.trigger?(Input::B)
      Sound.play_cancel
      return_scene
    elsif Input.trigger?(Input::R)
      Sound.play_cursor
      next_actor
    elsif Input.trigger?(Input::L)
      Sound.play_cursor
      prev_actor
    end
   
  end
end


调用的时候 $Scene=Scene_ShowSkill.new(0)


[本贴由作者于 2008-12-31 20:00:54 最后编辑]

此脚本有些问题…………
[color=DimGray]TransFormer4[/color]
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2025-1-19 22:12

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表