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

Project1

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

[原创发布] 技能消耗你想消耗的一切,除了SP!!!v1.3更新整合

[复制链接]

Lv5.捕梦者 (版主)

遠航の猫咪

梦石
3
星屑
22452
在线时间
2335 小时
注册时间
2005-10-15
帖子
1160

开拓者

跳转到指定楼层
1
发表于 2017-11-2 19:24:38 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 SailCat 于 2017-11-22 02:02 编辑

以为3小时能搞定了,搞了4个多小时……对RGSS1的脚本风格无力吐槽
以此贴终结所有技能消耗XXXX,技能需要XXXX的求助贴吧!
需要“数据库通用备注接口”插件,XP加了备注果然无比强大……
该插件所在地址:https://rpg.blue/thread-403415-1-1.html


更新:
v1.3
整合到2.0版本的数据库备注插件系列
v1.2
修复了一个冷却判定的bug,感谢@89444640测试
v1.1
能力值限制现在可以用更自由的写法,例如str300-400,hp25-,sp50+,dex=200
所有集都可以改用子界表示甚至嵌套子界表示,如[4..6, 9..11, -104...-101]实际相当于[4, 5, 6, 9, 10, 11, -104, -103, -102],节省备注书写空间


关于和魔改Scene_Skill脚本的冲突说明:
XP因为没有Scene_Base的超级类,所有场景的处理都是写在大段的update_xxxx中各种条件分歧里而不是模块化的,实际上这个脚本需要修改的只是:
在消耗SP时,也同样消耗其他东西。
如果你魔改了Scene_Skill类,插入脚本后删除426行以下内容,然后在Scene_Skill类中搜索如同"xxx.sp -= @skill.sp_cost"这样的脚本,然后在后面加上一句
xxx.skill_cost_extra(@skill)
即可。


一些写法技巧:
牺牲技(放完自己会死):#ch=9999
满血才能放技能:#cn:hp100
黄血才能放技能:#cn:hp25-
需要特定类别的武器放技能:武器不多的话直接列#cq=[-5, -3, -1]这样,武器太多或未设定完成的话,用属性法设置武器类别,然后#ce=属性,武器编号连续可以写成#cq=[-6..-2]
技能要求某变量大于某值(但不消耗):#cf:v[xx]>yyy
技能要求某部位装备为空值(如不能装盾):#cf:a.armor1_id==0

实际上提供cf接口你可以写出你想设定的任何条件了……

点击查看完整代码



写法示意:

十字斩消耗1号防具1枚,必须在茂密处使用,不能在沉默时使用,冷却2回合,需要身上带有冰属性,消耗90金,消耗18HP,等等……

范例工程:
DataNoteEx.zip (211.74 KB, 下载次数: 266)


评分

参与人数 6星屑 +50 +6 收起 理由
被礼赞的白杨 + 1 跪谢属于是
miantouchi + 1 发现宝藏了
灯笼菜刀王 + 1 精品文章
y967 + 1 精品文章
guoxiaomi + 50 + 1 我很赞同
hyrious + 1 塞糖

查看全部评分

SailCat (小猫子·要开心一点) 共上站 24 次,发表过 11 篇文章 上 次 在: [2006年01月28日11:41:18 星期六] 从 [162.105.120.91] 到本站一游。

Lv2.观梦者

梦石
0
星屑
395
在线时间
37 小时
注册时间
2017-2-18
帖子
1
2
发表于 2017-11-2 20:25:22 | 只看该作者
给力啊,很有意思的脚本
回复 支持 反对

使用道具 举报

Lv5.捕梦者 (版主)

遠航の猫咪

梦石
3
星屑
22452
在线时间
2335 小时
注册时间
2005-10-15
帖子
1160

开拓者

3
 楼主| 发表于 2017-11-3 09:13:17 | 只看该作者
update了一些说明并补充了范例工程
SailCat (小猫子·要开心一点) 共上站 24 次,发表过 11 篇文章 上 次 在: [2006年01月28日11:41:18 星期六] 从 [162.105.120.91] 到本站一游。
回复 支持 反对

使用道具 举报

Lv4.逐梦者 (版主)

梦石
0
星屑
9497
在线时间
5073 小时
注册时间
2013-6-21
帖子
3580

开拓者贵宾剧作品鉴家

4
发表于 2017-11-3 10:19:54 | 只看该作者
这个集成的功能真心实用,期待后续反响。
回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
34870
在线时间
4148 小时
注册时间
2007-12-15
帖子
9981
5
发表于 2017-11-3 10:26:43 | 只看该作者
本帖最后由 89444640 于 2017-11-3 12:39 编辑

我感觉会跟技能分类脚本冲突……先试一下
临时整出来个技能,乾坤一掷,先测试固定数值金钱投掷造成伤害。

但是…
技能分类脚本是@+技能名字, 然后@后面的数据也给显示了出来,总算效果是正常,使用后金钱减少了固定的数值……但是显示不完美啊



请问该如何处理?

按照这个技能分类脚本的样子,恐怕,后面是数值不一样肯定会分类到单独的技能里去……除非就不分类了,按照普通技能算……

以下是技能分类脚本代码
技能分类脚本 战斗部分
RUBY 代码复制
  1. #本脚本来自[url=http://www.66RPG.com]www.66RPG.com[/url]
  2. class Scene_Battle
  3. #--------------------------------------------------------------------------
  4. # ● 刷新画面 (角色命令回合 : 选择特技) ★★★★★★★★★★★★★★★★★
  5. #--------------------------------------------------------------------------
  6. def update_phase3_skill_select
  7.    # 设置特技窗口为可视状态
  8.    @skill_window.visible = true
  9.    @itemcommand_window.visible = true
  10.    @itemcommand_window.update
  11.    if @command_index != @itemcommand_window.index
  12.      @command_index = @itemcommand_window.index
  13.      @skill_window.set_item(@itemcommand_window.commands[@command_index])
  14.      @skill_window.index = 0
  15.    end
  16.    @skill_window.update
  17.    # 按下 B 键的情况下
  18.    if Input.trigger?(Input::B)
  19.      # 演奏取消 SE
  20.      $game_system.se_play($data_system.cancel_se)
  21.      if @itemcommand_window.active==false
  22.        @itemcommand_window.active = true
  23.        @skill_window.active = false
  24.        return
  25.      end
  26.      # 结束特技选择
  27.      end_skill_select
  28.      return
  29.    end
  30.    # 按下 C 键的情况下
  31.    if Input.trigger?(Input::C)
  32.      if @itemcommand_window.active
  33.        @itemcommand_window.active = false
  34.        @skill_window.active = true
  35.        # 演奏确定 SE
  36.        $game_system.se_play($data_system.decision_se)
  37.        return
  38.      end
  39.      # 获取特技选择窗口现在选择的特技的数据
  40.      @skill = @skill_window.skill
  41.      # 无法使用的情况下
  42.      if @skill == nil or not @active_battler.skill_can_use?(@skill.id)
  43.        # 演奏冻结 SE
  44.        $game_system.se_play($data_system.buzzer_se)
  45.        return
  46.      end
  47.      # 演奏确定 SE
  48.      $game_system.se_play($data_system.decision_se)
  49.      # 设置行动
  50.      @active_battler.current_action.skill_id = @skill.id
  51.      # 设置特技窗口为不可见状态
  52.      @skill_window.visible = false
  53.      @itemcommand_window.visible = false
  54.      # 效果范围是敌单体的情况下
  55.      if @skill.scope == 1
  56.        # 开始选择敌人
  57.        start_enemy_select
  58.      # 效果范围是我方单体的情况下
  59.      elsif @skill.scope == 3 or @skill.scope == 5
  60.        # 开始选择角色
  61.        start_actor_select
  62.      # 效果范围不是单体的情况下
  63.      else
  64.        # 选择特技结束
  65.        end_skill_select
  66.        # 转到下一位角色的指令输入
  67.        phase3_next_actor
  68.      end
  69.      return
  70.    end
  71. end
  72.  
  73. #--------------------------------------------------------------------------
  74. # ● 开始选择特技 ★★★★★★★★★★★★★★★★★★★★★★★★★★★★
  75. #--------------------------------------------------------------------------
  76. def start_skill_select
  77.    @skill_window = Liuliu_Window_SkillList.new(@active_battler)
  78.    @skill_window.help_window = @help_window
  79.    @itemcommand_window = Liuliu_Window_SkillCommand.new(@active_battler)
  80.    @itemcommand_window.opacity = 160
  81.    @itemcommand_window.y = 64
  82.    @itemcommand_window.height -= 32
  83.    @itemcommand_window.active = true
  84.    @itemcommand_window.help_window = @help_window
  85.    @skill_window.active = false
  86.    @command_index = @itemcommand_window.index
  87.    @skill_window.set_item(@itemcommand_window.commands[@command_index])
  88.    @actor_command_window.active = false
  89.    @actor_command_window.visible = false
  90. end
  91. #--------------------------------------------------------------------------
  92. # ● 选择特技结束 ★★★★★★★★★★★★★★★★★★★★★★★★★★★★
  93. #--------------------------------------------------------------------------
  94. def end_skill_select
  95.    # 释放特技窗口
  96.    @itemcommand_window.dispose
  97.    @itemcommand_window = nil
  98.    @skill_window.dispose
  99.    @skill_window = nil
  100.    # 隐藏帮助窗口
  101.    @help_window.visible = false
  102.    # 有效化角色指令窗口
  103.    @actor_command_window.active = true
  104.    @actor_command_window.visible = true
  105. end
  106. end




技能分类_常规部分 修改self.back_opacity
RUBY 代码复制
  1. #==============================================================================
  2. # 本脚本来自[url=http://www.66RPG.com]www.66RPG.com[/url],使用和转载请保留此信息
  3. #==============================================================================
  4.  
  5.  
  6. #==============================================================================
  7. # ■ Liuliu_Window_SkillCommand
  8. #==============================================================================
  9.  
  10. class Liuliu_Window_SkillCommand < Window_Selectable
  11. attr_accessor :commands
  12. #--------------------------------------------------------------------------
  13. # ● 初始化,生成commands窗口
  14. #--------------------------------------------------------------------------
  15.   def initialize(actor)
  16.   super(0, 0, 160, 288)
  17.   self.z = 9999
  18.   @commands = []
  19.   #————————生成commands窗口
  20.   for i in 0...actor.skills.size
  21.     skill = $data_skills[actor.skills[i]]
  22.     if skill != nil
  23.       push = true
  24.       for com in @commands
  25.         if com == skill.desc
  26.           push = false
  27.         end
  28.       end
  29.       if push == true
  30.         @commands.push(skill.desc)
  31.       end
  32.     end
  33.   end
  34.   if @commands == []
  35.     @commands.push("未分组技能")
  36.   end      
  37.   @item_max = @commands.size
  38.   self.contents = Bitmap.new(width - 32, @item_max*32)
  39.   refresh
  40.   self.index = 0
  41. end
  42. #--------------------------------------------------------------------------
  43. #--------------------------------------------------------------------------
  44. def refresh
  45.    self.contents.clear
  46.    for i in 0...@item_max
  47.      draw_item(i, normal_color)
  48.    end
  49. end
  50. #--------------------------------------------------------------------------
  51. #--------------------------------------------------------------------------
  52. def draw_item(index, color)
  53.    self.contents.font.color = color
  54.    y = index * 32
  55.    self.contents.draw_text(4, y, 128, 32, @commands[index])
  56.    self.contents.draw_text(4, y, 128, 32, @commands[index])
  57. end
  58. #--------------------------------------------------------------------------
  59. # 只描绘原文字
  60. #--------------------------------------------------------------------------
  61. def update_help
  62.    @help_window.set_text(@commands[self.index])
  63. end
  64. end
  65.  
  66. #==============================================================================
  67. # ■ Window_Skill
  68. #==============================================================================
  69.  
  70. class Liuliu_Window_SkillList < Window_Selectable
  71. #--------------------------------------------------------------------------
  72. #--------------------------------------------------------------------------
  73. def initialize(actor)
  74.    super(160, 0, 480, 416)
  75.    @actor = actor
  76.    refresh
  77.    self.index = 0
  78.    # 战斗中的情况下将窗口移至中央并将其半透明化
  79.    if $game_temp.in_battle
  80.      self.y = 64
  81.      self.height = 256
  82.      self.back_opacity = 160
  83.      self.z = 9999 #此行为修改
  84.    end
  85. end
  86. #--------------------------------------------------------------------------
  87. #--------------------------------------------------------------------------
  88. def skill
  89.    return @data[self.index]
  90. end
  91. #--------------------------------------------------------------------------
  92. #--------------------------------------------------------------------------
  93. def refresh
  94.    if self.contents != nil
  95.      self.contents.dispose
  96.      self.contents = nil
  97.    end
  98.    @data = []
  99. end
  100. #--------------------------------------------------------------------------
  101. #--------------------------------------------------------------------------
  102. def set_item(command)
  103.    refresh
  104.    for i in 0...@actor.skills.size
  105.      skill = $data_skills[@actor.skills[i]]
  106.      if skill != nil and skill.desc == command
  107.        @data.push(skill)
  108.      end
  109.    end
  110.    @item_max = @data.size
  111.    if @item_max > 0
  112.      self.contents = Bitmap.new(width - 32, row_max * 32)
  113.      self.contents.clear
  114.      for i in 0...@item_max
  115.        draw_item(i)
  116.      end
  117.    end
  118. end
  119. #-----------------------------------------------------------------------
  120. #--------------------------------------------------------------------------
  121. def draw_item(index)
  122.    skill = @data[index]
  123.    if @actor.skill_can_use?(skill.id)
  124.      self.contents.font.color = normal_color
  125.    else
  126.      self.contents.font.color = disabled_color
  127.    end
  128.    x = 4
  129.    y = index * 32
  130.    rect = Rect.new(x, y, self.width / @column_max - 32, 32)
  131.    self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))
  132.    bitmap = RPG::Cache.icon(skill.icon_name)
  133.    opacity = self.contents.font.color == normal_color ? 255 : 128
  134.    self.contents.blt(x, y, bitmap, Rect.new(0, 0, 32, 32), opacity)
  135.    self.contents.draw_text(x + 32, y, 204, 32, skill.name, 0)
  136.    self.contents.draw_text(x + 390, y, 16, 32, ":", 1)
  137.    self.contents.draw_text(x + 400, y, 40, 32, skill.sp_cost.to_s, 2)
  138. end
  139. #--------------------------------------------------------------------------
  140. #--------------------------------------------------------------------------
  141. def update_help
  142.    @help_window.set_text(self.skill == nil ? "" : self.skill.description)
  143. end
  144. end
  145.  
  146. #==============================================================================
  147. # ■ Liuliu_Scene_Skill
  148. #==============================================================================
  149.  
  150. class Scene_Skill
  151. #--------------------------------------------------------------------------
  152. # ● 初始化对像
  153. #     actor_index : 角色索引
  154. #--------------------------------------------------------------------------
  155. def initialize(actor_index = 0)
  156.    @actor_index = actor_index
  157.    @actor = $game_party.actors[@actor_index]
  158. end
  159. #--------------------------------------------------------------------------
  160. #--------------------------------------------------------------------------
  161. def main
  162.    @status_window = Window_SkillStatus.new(@actor)
  163.    @itemcommand_window = Liuliu_Window_SkillCommand.new($game_party.actors[@actor_index])
  164.    @command_index = @itemcommand_window.index
  165.    @skill_window = Liuliu_Window_SkillList.new($game_party.actors[@actor_index])
  166.    @skill_window.active = false
  167.    @help_window = Window_Help.new
  168.    @help_window.x = 0
  169.    @help_window.y = 416
  170.    @itemcommand_window.help_window = @help_window
  171.    @skill_window.help_window = @help_window
  172.    @target_window = Window_Target.new
  173.    @target_window.visible = false
  174.    @target_window.active = false
  175.    @skill_window.set_item(@itemcommand_window.commands[@command_index])
  176.    Graphics.transition
  177.    loop do
  178.      Graphics.update
  179.      Input.update
  180.      update
  181.      if $scene != self
  182.        break
  183.      end
  184.    end
  185.    Graphics.freeze
  186.    @itemcommand_window.dispose
  187.    @skill_window.dispose
  188.    @status_window.dispose
  189.    @help_window.dispose
  190.    @target_window.dispose
  191. end
  192. #--------------------------------------------------------------------------
  193. #--------------------------------------------------------------------------
  194. def update
  195.    @itemcommand_window.update
  196.    @skill_window.update
  197.    @help_window.update
  198.    @target_window.update
  199.    if @command_index != @itemcommand_window.index
  200.      @command_index = @itemcommand_window.index
  201.      @skill_window.set_item(@itemcommand_window.commands[@command_index])
  202.    end
  203.    if @itemcommand_window.active
  204.      update_itemcommand
  205.      return
  206.    end
  207.    if @skill_window.active
  208.      update_itemlist
  209.      return
  210.    end
  211.    if @target_window.active
  212.      update_target
  213.      return
  214.    end
  215. end
  216. #--------------------------------------------------------------------------
  217. #--------------------------------------------------------------------------
  218. def update_itemcommand
  219.    if Input.trigger?(Input::B)
  220.      $game_system.se_play($data_system.cancel_se)
  221.      $scene = Scene_Menu.new(0)
  222.      return
  223.    end
  224.    if Input.trigger?(Input::C)
  225.      $game_system.se_play($data_system.decision_se)
  226.      @itemcommand_window.active = false
  227.      @skill_window.active = true
  228.      @skill_window.index = 0
  229.      return
  230.    end
  231. end
  232. #--------------------------------------------------------------------------
  233. #--------------------------------------------------------------------------
  234. def update_itemlist
  235.    if Input.trigger?(Input::B)
  236.      $game_system.se_play($data_system.cancel_se)
  237.      @itemcommand_window.active = true
  238.      @skill_window.active = false
  239.      @skill_window.index = 0
  240.      @itemcommand_window.index = @command_index
  241.      return
  242.    end
  243.    if Input.trigger?(Input::C)
  244.      # 获取特技窗口现在选择的特技的数据
  245.      @skill = @skill_window.skill
  246.      # 不能使用的情况下
  247.      if @skill == nil or not @actor.skill_can_use?(@skill.id)
  248.        # 演奏冻结 SE
  249.        $game_system.se_play($data_system.buzzer_se)
  250.        return
  251.      end
  252.      # 演奏确定 SE
  253.      $game_system.se_play($data_system.decision_se)
  254.      # 效果范围是我方的情况下
  255.      if @skill.scope >= 3
  256.        # 激活目标窗口
  257.        @skill_window.active = false
  258.        @target_window.x = (@skill_window.index + 1) % 2 * 304
  259.        @target_window.visible = true
  260.        @target_window.active = true
  261.        # 设置效果范围 (单体/全体) 的对应光标位置
  262.        if @skill.scope == 4 || @skill.scope == 6
  263.          @target_window.index = -1
  264.        elsif @skill.scope == 7
  265.          @target_window.index = @actor_index - 10
  266.        else
  267.          @target_window.index = 0
  268.        end
  269.      # 效果在我方以外的情况下
  270.      else
  271.        # 公共事件 ID 有效的情况下
  272.        if @skill.common_event_id > 0
  273.          # 预约调用公共事件
  274.          $game_temp.common_event_id = @skill.common_event_id
  275.          # 演奏特技使用时的 SE
  276.          $game_system.se_play(@skill.menu_se)
  277.          # 消耗 SP
  278.          @actor.sp -= @skill.sp_cost
  279.          # 再生成各窗口的内容
  280.          @status_window.refresh
  281.          @skill_window.refresh
  282.          @target_window.refresh
  283.          # 切换到地图画面
  284.          $scene = Scene_Map.new
  285.          return
  286.        end
  287.      end
  288.      return
  289.    end
  290. end
  291. #--------------------------------------------------------------------------
  292. #--------------------------------------------------------------------------
  293. def update_target
  294.    if Input.trigger?(Input::B)
  295.      $game_system.se_play($data_system.cancel_se)
  296.      @skill_window.refresh
  297.      @skill_window.active = true
  298.      @target_window.visible = false
  299.      @target_window.active = false
  300.      @skill_window.set_item(@itemcommand_window.commands[@command_index])
  301.      return
  302.    end
  303.  
  304.    # 按下 C 键的情况下
  305.    if Input.trigger?(Input::C)
  306.      # 因为 SP 不足而无法使用的情况下
  307.      unless @actor.skill_can_use?(@skill.id)
  308.        # 演奏冻结 SE
  309.        $game_system.se_play($data_system.buzzer_se)
  310.        return
  311.      end
  312.      # 目标是全体的情况下
  313.      if @target_window.index == -1
  314.        # 对同伴全体应用特技使用效果
  315.        used = false
  316.        for i in $game_party.actors
  317.          used |= i.skill_effect(@actor, @skill)
  318.        end
  319.      end
  320.      # 目标是使用者的情况下
  321.      if @target_window.index <= -2
  322.        # 对目标角色应用特技的使用效果
  323.        target = $game_party.actors[@target_window.index + 10]
  324.        used = target.skill_effect(@actor, @skill)
  325.      end
  326.      # 目标是单体的情况下
  327.      if @target_window.index >= 0
  328.        # 对目标角色应用特技的使用效果
  329.        target = $game_party.actors[@target_window.index]
  330.        used = target.skill_effect(@actor, @skill)
  331.      end
  332.      # 使用特技的情况下
  333.      if used
  334.        # 演奏特技使用时的 SE
  335.        $game_system.se_play(@skill.menu_se)
  336.        # 消耗 SP
  337.        @actor.sp -= @skill.sp_cost
  338.        # 再生成各窗口内容
  339.        @status_window.refresh
  340.        #@skill_window.refresh
  341.        @target_window.refresh
  342.        # 全灭的情况下
  343.        if $game_party.all_dead?
  344.          # 切换到游戏结束画面
  345.          $scene = Scene_Gameover.new
  346.          return
  347.        end
  348.        # 公共事件 ID 有效的情况下
  349.        if @skill.common_event_id > 0
  350.          # 预约调用公共事件
  351.          $game_temp.common_event_id = @skill.common_event_id
  352.          # 切换到地图画面
  353.          $scene = Scene_Map.new
  354.          return
  355.        end
  356.      end
  357.      # 无法使用特技的情况下
  358.      unless used
  359.        # 演奏冻结 SE
  360.        $game_system.se_play($data_system.buzzer_se)
  361.      end
  362.      return
  363.    end
  364. end
  365. end
  366. #==============================================================================
  367. # ■ Window_SkillStatus
  368. #------------------------------------------------------------------------------
  369. #  显示特技画面、特技使用者的窗口。
  370. #==============================================================================
  371.  
  372. class Window_SkillStatus < Window_Base
  373. #--------------------------------------------------------------------------
  374. # ● 初始化对像
  375. #     actor : 角色
  376. #--------------------------------------------------------------------------
  377. def initialize(actor)
  378.    super(0, 288, 160, 128)
  379.    self.contents = Bitmap.new(width - 32, height - 32)
  380.    @actor = actor
  381.    refresh
  382. end
  383. #--------------------------------------------------------------------------
  384. # ● 刷新
  385. #--------------------------------------------------------------------------
  386. def refresh
  387.    self.contents.clear
  388.    draw_actor_name(@actor, 4, 0)
  389.    draw_actor_hp(@actor, 4, 32, 120)
  390.    draw_actor_sp(@actor, 4, 64, 120)
  391. end
  392. end
  393.  
  394. #==============================================================================
  395. # ■ RPG追加定义,使用@符号分类
  396. #==============================================================================
  397.  
  398. module RPG
  399. class Skill
  400.    def description
  401.      description = @description.split(/@/)[0]
  402.      return description != nil ? description : ''
  403.    end
  404.    def desc
  405.      desc = @description.split(/@/)[1]
  406.      return desc != nil ? desc : "普通技能"
  407.    end
  408. end
  409. end
  410.  
  411. #==============================================================================
  412. # 本脚本来自[url=http://www.66RPG.com]www.66RPG.com[/url],使用和转载请保留此信息
  413. #==============================================================================







回复 支持 反对

使用道具 举报

Lv5.捕梦者 (版主)

遠航の猫咪

梦石
3
星屑
22452
在线时间
2335 小时
注册时间
2005-10-15
帖子
1160

开拓者

6
 楼主| 发表于 2017-11-3 13:31:41 | 只看该作者
398行以后冲突,大家都在用description备注信息不冲突才怪……
def description这个定义删掉
def desc改成
def desc; _dc("普通技能"); end

然后数据库里用#cg=1000;dc:技能分类
如果不想改技能分类写法那就只删掉def description定义

点评

你把def description删掉,把#cg=1000写到技能分类的@符号之前,再加一个半角分号试试看,即#cg=1000;@仙剑  发表于 2017-11-3 23:29
改成dc什么的技能分类全得重写,放弃,删了def description以后发现没什么变化,description = @description.split(/@/)[0]什么的是干啥用的。  发表于 2017-11-3 23:26
SailCat (小猫子·要开心一点) 共上站 24 次,发表过 11 篇文章 上 次 在: [2006年01月28日11:41:18 星期六] 从 [162.105.120.91] 到本站一游。
回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
34870
在线时间
4148 小时
注册时间
2007-12-15
帖子
9981
7
发表于 2017-11-3 23:46:52 | 只看该作者
本帖最后由 89444640 于 2017-11-4 08:03 编辑

改成了这样
module RPG
class Skill
def desc; _dc("普通技能");
  end
end
end
后果是菜单进不了,跳出这个


技能分类脚本也废了,只剩下一个普通技能。

def cooldown?(skill_id)
    @cooldowns.has_key?(skill_id)
  end

可能是共同占用了@造成的?
可否考虑整合一下技能分类脚本,加个新的定义项什么的,
因为这个脚本真的是不能舍弃的,技能多了归纳起来很方便。
是这样吗?
module RPG
class Skill
   def desc
     desc = @description.split(/@/)[1]
     return desc != nil ? desc : "普通技能"
   end
end
end
跟我这种程序一窍不通的说确实费力 辛苦了。战斗中的过去了,


但是菜单依然打不开,还是跳刚才那个错误


请看下脚本库,莫非其他什么奇怪地方调用造成的?
我回合制没设定过什么冷却啊。
错误出现的行数




点评

成功了!非常感谢,明天再继续测试别的可能出现问题的地方,辛苦了。  发表于 2017-11-4 00:25
找到了,把我的脚本里 elsif cooldown?(skill_id) 改成 elsif $game_temp.in_battle and cooldown?(skill_id) 我的问题  发表于 2017-11-4 00:19
莫非其他地方有调用?我给你那个sc什么脚本文件你看下吧  发表于 2017-11-4 00:15
set_cooldown(skill.id) if $game_temp.in_battle 有,新开游戏开菜单也是这个毛病。  发表于 2017-11-4 00:12
你查一下set_cooldown(skill.id)这句后面有没有 if $game_temp.in_battle,如果没有的话加上(同一行后面),最早我可能忘了写……  发表于 2017-11-4 00:08
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
5
星屑
3338
在线时间
384 小时
注册时间
2016-6-25
帖子
228
8
发表于 2017-11-4 13:50:06 | 只看该作者
本帖最后由 零教授 于 2017-11-4 14:08 编辑
89444640 发表于 2017-11-3 10:26
我感觉会跟技能分类脚本冲突……先试一下
临时整出来个技能,乾坤一掷,先测试固定数值金钱投掷造成伤害。
...


感谢层主提供的分类脚本

嘛因为我懒得新增一个窗口了所以借用了module做了个我自认为比较low的分类法
视觉和选择上麻烦了点但是放技能方便了一步,总而言之还是感谢提供思路

点评

按照顺序来的吗?技能看上去好复杂--,我这技能随着加,数据库类东西折腾不起啊  发表于 2017-11-4 18:22
魔女的下午茶~~制作组募集~~有偿招募长期立绘画师~群号168579736~~多人在线RPG~~无意识Navigation,火热内测中,招内测人员~
回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
34870
在线时间
4148 小时
注册时间
2007-12-15
帖子
9981
9
发表于 2017-11-5 09:57:37 | 只看该作者
本帖最后由 89444640 于 2017-11-5 10:35 编辑

又出问题了- -b


没有设定任何特殊效果的技能,道具,总之一切分类后的道具,都会在末尾显示分类文字。
我试了一下,还得把所有道具都补个#才可以。
成百上千的手动改可够累人的。有办法批量处理一下吗--b

手动加吧--b,然后试了一下另外的效果。
技能依赖状态。
这是以前做好的,但是因为很多解决不了的问题只能凑合,各种恶心--b我为了调节平衡愣是说成喝酒醉了会掉血,然后本来是技能使用三回合后就不能用了,愣是说成可以多用一次……我这给逼成啥德行呜呜呜……(哭泣声)

醉仙望月步,只有在醉酒状态下才能使用,也就是说先要有个前置技能。
然后这个效果实现是用的上面那个好几千行的脚本,设定个技能有个特殊属性,攻击2次,持续4回合。效果如下。
大gif传不了怎么破?我随便找一个看看能不能看。

但是好像不给让普通攻击也是两次。因为普通攻击不算特技没法写注释?啊!好像可以注释到武器上……







点评

那就只能手动加了- -b上千个ORZ,个别的可能还字不够。  发表于 2017-11-5 10:23
rb的原贴见https://rpg.blue/thread-375515-1-1.html  发表于 2017-11-5 10:23
这就是通用备注插件和你那个物品分类插件的冲突了,用rb的话来说就是“以前的备注插件根本没考虑备注会一处多用的事”  发表于 2017-11-5 10:21
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
2125
在线时间
234 小时
注册时间
2018-3-23
帖子
100
10
发表于 2018-3-28 22:11:40 | 只看该作者
有了超级版XP的感觉 感谢楼主分享
RMXP天下第一!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-4-28 05:17

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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