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

Project1

 找回密码
 注册会员
搜索
12
返回列表 发新帖
楼主: 鑫磊
打印 上一主题 下一主题

[已经解决] RPG VX技能石

[复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
260 小时
注册时间
2013-4-19
帖子
216
11
发表于 2013-8-20 13:11:13 | 只看该作者

评分

参与人数 1星屑 +50 收起 理由
怪蜀黍 + 50 精品文章

查看全部评分

【轩辕Game】
【广告位出租】
【广告位出租】
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
21 小时
注册时间
2013-8-16
帖子
32
12
 楼主| 发表于 2013-8-20 13:29:36 | 只看该作者
差不多,但不想小刀的那样,每升一级技能就从一级升为二级,技能后面有显示

点评

小刀用的应该也是这个脚本,至于显示等级什么的可以随便调的。  发表于 2013-8-22 15:30
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
21 小时
注册时间
2013-8-16
帖子
32
13
 楼主| 发表于 2013-8-20 14:04:10 | 只看该作者
小刀君,我要拜你为师,你加我为好友吧,你工程里的脚本借我用用

评分

参与人数 1星屑 -1 收起 理由
小小刀886 -1 伸手=-=

查看全部评分

回复 支持 反对

使用道具 举报

Lv1.梦旅人

彭格列I世

梦石
0
星屑
168
在线时间
566 小时
注册时间
2012-8-17
帖子
1614
14
发表于 2013-8-21 13:33:27 | 只看该作者
  1. # -----------------------------------------------------------------------------
  2. # 技能升级系统(SLV)
  3. # ver:1.0VX
  4. # date:2011.10.11 by.Ultra
  5. # 【说明】
  6. #  呼出界面:$scene = Scene_SLV.new(队员ID)
  7. #  切换角色:L 或 R 键
  8. # -----------------------------------------------------------------------------
  9. module SLV
  10.   # ·消耗的物品ID
  11.   ITEMID = 1
  12.   # ·升级技能关联
  13.   #   技能ID => 升级后技能ID
  14.   SLVUP = {

  15.   }
  16.   # ·设定消耗物品数量
  17.   #   技能ID => 升级时消耗物品数量
  18.   SCONSUM = {
  19.   }
  20.   # ·默认消耗物品数量
  21.   ALLSCONSUM = 3
  22. end
  23. #==============================================================================
  24. # ■ Window_SLVindex
  25. #------------------------------------------------------------------------------
  26. #  显示升级特技目录的窗口。
  27. #==============================================================================

  28. class Window_SLVindex < Window_Selectable
  29.   #--------------------------------------------------------------------------
  30.   # ● 初始化对像
  31.   #     x      : 窗口 X 座标
  32.   #     y      : 窗口 Y 座标
  33.   #     width  : 窗口宽度
  34.   #     height : 窗口高度
  35.   #     actor  : 角色
  36.   #--------------------------------------------------------------------------
  37.   def initialize(actor)
  38.     super(0, 112, 272, 304)
  39.     [url=home.php?mod=space&uid=95897]@actor[/url] = actor
  40.     self.index = 0
  41.     refresh
  42.   end
  43.   #--------------------------------------------------------------------------
  44.   # ● 获取技能
  45.   #--------------------------------------------------------------------------
  46.   def skill
  47.     return @data[self.index]
  48.   end
  49.   #--------------------------------------------------------------------------
  50.   # ● 刷新
  51.   #--------------------------------------------------------------------------
  52.   def refresh
  53.     @data = []
  54.     for skill in @actor.skills
  55.       @data.push(skill)
  56.       if skill.id == @actor.last_skill_id
  57.         self.index = @data.size - 1
  58.       end
  59.     end
  60.     @item_max = @data.size
  61.     create_contents
  62.     for i in 0...@item_max
  63.       draw_item(i)
  64.     end
  65.   end
  66.   #--------------------------------------------------------------------------
  67.   # ● 描绘项目
  68.   #     index : 项目编号
  69.   #--------------------------------------------------------------------------
  70.   def draw_item(index)
  71.     rect = item_rect(index)
  72.     self.contents.clear_rect(rect)
  73.     skill = @data[index]
  74.     if skill != nil
  75.       rect.width -= 4
  76.       enabled = @actor.skill_can_use?(skill)
  77.       draw_item_name(skill, rect.x, rect.y, enabled)
  78.       self.contents.draw_text(rect, @actor.calc_mp_cost(skill), 2)
  79.     end
  80.   end
  81.   #--------------------------------------------------------------------------
  82.   # ● 更新帮助窗口文字
  83.   #--------------------------------------------------------------------------
  84.   def update_help
  85.     @help_window.set_text(skill == nil ? "" : skill.description)
  86.   end
  87. end
  88. #==============================================================================
  89. # ■ Window_SkillStatus
  90. #------------------------------------------------------------------------------
  91. #  显示特技升级消耗品的窗口
  92. #==============================================================================

  93. class Window_SLVconsum < Window_Base
  94.   #--------------------------------------------------------------------------
  95.   # ● 初始化窗口
  96.   #--------------------------------------------------------------------------
  97.   def initialize
  98.     super(0, 0, 544, 56)
  99.     self.contents = Bitmap.new(width - 32, height - 32)
  100.     refresh
  101.   end
  102.   #--------------------------------------------------------------------------
  103.   # ● 刷新
  104.   #--------------------------------------------------------------------------
  105.   def refresh
  106.     self.contents.clear
  107.     item = $data_items[SLV::ITEMID]
  108.     return if not item
  109.     icon_index = item.icon_index
  110.     number = $game_party.item_number(item)
  111.     x,y = 0,0
  112.     draw_icon(icon_index,x,y)
  113.     self.contents.draw_text(x + 24, y, 320, WLH, item.name+":#{number.to_s}")
  114.   end
  115. end
  116. #==============================================================================
  117. # ■ Window_Gold
  118. #------------------------------------------------------------------------------
  119. #  显示技能信息的窗口。
  120. #==============================================================================

  121. class Window_SLVinfo < Window_Base
  122.   #--------------------------------------------------------------------------
  123.   # ● 初始化窗口
  124.   #--------------------------------------------------------------------------
  125.   def initialize(skill)
  126.     super(272, 112, 272, 304)
  127.     self.contents = Bitmap.new(width - 32, height - 32)
  128.     [url=home.php?mod=space&uid=260100]@skill[/url] = skill
  129.     refresh
  130.   end
  131.   #--------------------------------------------------------------------------
  132.   # ● 刷新
  133.   #--------------------------------------------------------------------------
  134.   def refresh
  135.     self.contents.clear
  136.     self.contents.font.size = 18
  137.     return if not @skill
  138.     id = @skill.id
  139.     up = SLV::SLVUP
  140.     if up.include?(id)
  141.       self.contents.font.color = normal_color
  142.       draw(@skill,0,0)
  143.       self.contents.font.color = text_color(3)
  144.       draw($data_skills[up[id]],4,138)
  145.     else
  146.       self.contents.font.color = normal_color
  147.       draw(@skill,0,0)
  148.       self.contents.font.color = text_color(2)
  149.       self.contents.draw_text(0, 138, 320, WLH, "技能已达极限")
  150.     end
  151.   end
  152.   def draw(skill,x,y)
  153.     yh = 22
  154.     draw_icon(skill.icon_index,x,y)
  155.     self.contents.draw_text(x + 24, y, 320, WLH, skill.name)
  156.     scope = ["无","敌方单体","敌方全体","敌方单体连击","敌方单体随机目标",
  157.     "敌方二体随机目标","敌方三体随机目标","我方单体","我方全体",
  158.     "我方单个濒死者","我方所有濒死者","使用者自身"]
  159.     self.contents.draw_text(x, y+yh, 320, WLH, "使用范围:"+scope[skill.scope])
  160.     occasion = ["不限制使用场合","仅作战时使用","仅菜单中使用","不可用"]
  161.     self.contents.draw_text(x, y+yh*2, 320, WLH, "使用场合:"+occasion[skill.occasion])
  162.     self.contents.draw_text(x, y+yh*3, 320, WLH, "消耗SP:"+skill.mp_cost.to_s)
  163.     self.contents.draw_text(x, y+yh*4, 320, WLH, "基本伤害值:"+skill.base_damage.to_s)
  164.     self.contents.draw_text(x, y+yh*5, 320, WLH, "命中率:"+skill.hit.to_s)
  165.   end
  166.   def skill
  167.     @skill
  168.   end
  169.   def skill=(val)
  170.     @skill = val
  171.   end
  172. end
  173. class Window_SLVchoice < Window_Selectable
  174.   def initialize(skill)
  175.     super(272, 112, 272, 152)
  176.     @commands = ["确定","返回"]
  177.     @item_max = 2
  178.     @skill = skill
  179.     refresh
  180.     self.index = 0
  181.     self.z = 1000
  182.   end
  183.   def refresh
  184.     item = $data_items[SLV::ITEMID]
  185.     number = $game_party.item_number(item)
  186.     upnum = SLV::SCONSUM[@skill.id]
  187.     upnum = SLV::ALLSCONSUM unless upnum
  188.     self.contents.clear
  189.     for i in 0...@item_max
  190.       if number < upnum
  191.         color1 = Color.new(255, 255, 255, 128)
  192.         color2 = text_color(2)
  193.       else
  194.         color1 = normal_color
  195.         color2 = normal_color
  196.       end
  197.       self.contents.font.color = color1
  198.       self.contents.font.color = normal_color if i == 1
  199.       draw_item(i)
  200.     end
  201.     self.contents.draw_text(0, 56, 320, WLH, "升级必要:")
  202.     x,y = 0,82
  203.     icon_index = item.icon_index
  204.     draw_icon(icon_index,x,y)
  205.     self.contents.font.color = color2
  206.     self.contents.draw_text(x + 24, y, 320, WLH, item.name+" * #{upnum.to_s}")
  207.   end
  208.   def draw_item(index)
  209.     self.contents.draw_text(0, 26 * index, self.contents.width-8, WLH, @commands[index], 1)
  210.   end
  211.   def skill
  212.     @skill
  213.   end
  214.   def skill=(val)
  215.     @skill = val
  216.   end
  217. end
  218. #==============================================================================
  219. # ■ Scene_Skill
  220. #------------------------------------------------------------------------------
  221. #  处理特技升级画面的类。
  222. #==============================================================================

  223. class Scene_SLV
  224.   #--------------------------------------------------------------------------
  225.   # ● 初始化对像
  226.   #     actor_index : 角色索引
  227.   #--------------------------------------------------------------------------
  228.   def initialize(actor_index = 0)
  229.     @actor_index = actor_index
  230.   end
  231.   #--------------------------------------------------------------------------
  232.   # ● 主处理
  233.   #--------------------------------------------------------------------------
  234.   def main
  235.     # 获取角色
  236.     @actor = $game_party.members[@actor_index]
  237.     # 生成帮助窗口、状态窗口、特技窗口
  238.     @help_window = Window_Help.new
  239.     @help_window.y = 56
  240.     @consum_window = Window_SLVconsum.new
  241.     @skill_window = Window_SLVindex.new(@actor)
  242.     @info_window = Window_SLVinfo.new(@skill_window.skill)
  243.     @choice_window = Window_SLVchoice.new(@skill_window.skill)
  244.     @choice_window.visible = false
  245.     @choice_window.active = false
  246.     # 关联帮助窗口
  247.     @skill_window.help_window = @help_window
  248.     # 执行过渡
  249.     Graphics.transition
  250.     # 主循环
  251.     loop do
  252.       # 刷新游戏画面
  253.       Graphics.update
  254.       # 刷新输入信息
  255.       Input.update
  256.       # 刷新画面
  257.       update
  258.       # 如果画面切换的话就中断循环
  259.       if $scene != self
  260.         break
  261.       end
  262.     end
  263.     # 准备过渡
  264.     Graphics.freeze
  265.     # 释放窗口
  266.     @help_window.dispose
  267.     @consum_window.dispose
  268.     @skill_window.dispose
  269.     @info_window.dispose
  270.     @choice_window.dispose
  271.   end
  272.   #--------------------------------------------------------------------------
  273.   # ● 刷新画面
  274.   #--------------------------------------------------------------------------
  275.   def update
  276.     # 刷新窗口
  277.     @help_window.update
  278.     @consum_window.update
  279.     @skill_window.update
  280.     @info_window.update
  281.     @choice_window.update
  282.     if @info_window.skill != @skill_window.skill
  283.       @info_window.skill = @skill_window.skill
  284.       @choice_window.skill = @skill_window.skill
  285.       @info_window.refresh
  286.       @choice_window.refresh
  287.     end
  288.     # 技能窗口被激活的情况下
  289.     if @skill_window.active
  290.       skill_update
  291.       return
  292.     end
  293.     # 选项窗口被激活的情况下
  294.     if @choice_window.active
  295.       choice_update
  296.       return
  297.     end
  298.   end
  299.   #--------------------------------------------------------------------------
  300.   # ● 刷新画面(选项)
  301.   #--------------------------------------------------------------------------
  302.   def choice_update
  303.     # 按下 B 键的情况下
  304.     if Input.trigger?(Input::B)
  305.       Sound.play_cancel
  306.       @choice_window.index = 0
  307.       @skill_window.active = true
  308.       @choice_window.visible = false
  309.       @choice_window.active = false
  310.       return
  311.     end
  312.     # 按下 C 键的情况下
  313.     if Input.trigger?(Input::C)
  314.       case @choice_window.index
  315.       when 0
  316.         item = $data_items[SLV::ITEMID]
  317.         number = $game_party.item_number(item)
  318.         upnum = SLV::SCONSUM[@skill.id]
  319.         upnum = SLV::ALLSCONSUM unless upnum
  320.         if number < upnum
  321.           Sound.play_buzzer
  322.         else
  323.           Audio.se_play("Audio/SE/Up",100,100)
  324.           $game_party.gain_item(item, -upnum)
  325.           @actor.forget_skill(@skill.id)
  326.           @actor.learn_skill(SLV::SLVUP[@skill.id])
  327.           @consum_window.refresh
  328.           @skill_window.refresh
  329.           @skill_window.active = true
  330.           @choice_window.visible = false
  331.           @choice_window.active = false
  332.         end
  333.       when 1
  334.         Sound.play_cancel
  335.         @choice_window.index = 0
  336.         @skill_window.active = true
  337.         @choice_window.visible = false
  338.         @choice_window.active = false
  339.       end
  340.       return
  341.     end
  342.   end
  343.   #--------------------------------------------------------------------------
  344.   # ● 刷新画面(技能)
  345.   #--------------------------------------------------------------------------
  346.   def skill_update
  347.     # 按下 B 键的情况下
  348.     if Input.trigger?(Input::B)
  349.       # 演奏取消 SE
  350.       Sound.play_cancel
  351.       # 切换到菜单画面
  352.       $scene = Scene_Menu.new(5)
  353.       return
  354.     end
  355.     # 按下 C 键的情况下
  356.     if Input.trigger?(Input::C)
  357.       Sound.play_decision
  358.       # 获取特技窗口现在选择的特技的数据
  359.       @skill = @skill_window.skill
  360.       unless SLV::SLVUP.include?(@skill.id)
  361.         Sound.play_buzzer
  362.         return
  363.       end
  364.       @skill_window.active = false
  365.       @choice_window.visible = true
  366.       @choice_window.active = true
  367.       return
  368.     end
  369.     # 按下 R 键的情况下
  370.     if Input.trigger?(Input::R)
  371.       # 演奏光标 SE
  372.       Sound.play_cursor
  373.       # 移至下一位角色
  374.       @actor_index += 1
  375.       @actor_index %= $game_party.members.size
  376.       # 切换到别的特技画面
  377.       $scene = Scene_SLV.new(@actor_index)
  378.       return
  379.     end
  380.     # 按下 L 键的情况下
  381.     if Input.trigger?(Input::L)
  382.       # 演奏光标 SE
  383.       Sound.play_cursor
  384.       # 移至上一位角色
  385.       @actor_index += $game_party.members.size - 1
  386.       @actor_index %= $game_party.members.size
  387.       # 切换到别的特技画面
  388.       $scene = Scene_SLV.new(@actor_index)
  389.       return
  390.     end
  391.   end
  392. end
复制代码

评分

参与人数 1星屑 +50 收起 理由
怪蜀黍 + 50 精品文章

查看全部评分


赏金猎人 -- Bounty Hunter 预告贴(点击图片或者这里进入
交流群组:321810846

小刀的论坛!!点击这里!
小刀的论坛!!点击这里!
小刀的论坛!!点击这里!
小刀的论坛!!点击这里!
小刀的论坛!!点击这里!
小刀的论坛!!点击这里!
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
21 小时
注册时间
2013-8-16
帖子
32
15
 楼主| 发表于 2013-8-22 13:17:07 | 只看该作者
咋用呢?
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-12-23 01:26

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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