查看: 2975|回复: 6

[已经解决] 脚本冲突……有范例……

[复制链接]
梦石
0
星屑
90
在线时间
357 小时
注册时间
2006-3-3
回帖
163
发表于 2015-10-22 13:58:11 | 显示全部楼层 |阅读模式

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

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

×
本帖最后由 duchen5779 于 2015-10-22 16:07 编辑

一个很古老的SIDEVIEW4.0,SLICK发布的。但是我一直在用,今天调试的时候,不知道为什么在SIDEVIEW5里加上一段“当1号角色用9号技能攻击敌人时顺便给自己加3号状态”之后,试验时报错,是和这个技能升级的脚本冲突,报错也是报这个脚本……
123.jpg

后来我又用这个SIDEVIEW的原始工程加的这个技能升级的脚本,加了那段“当1号角色用9号技能攻击敌人时顺便给自己加3号状态”,发现还是同样的错误,排除了其他脚本干扰的可能。
因为有一些天赋的设置需要攻击敌人的时候给本方加状态或者是干别的(给本方加属性就没事),我在想,喂,我一个加状态碍着你技能升级毛事啊……所以求大拿解惑。


附技能升级脚本:
[pre lang="ruby"]
=begin
在可以升级的技能的备注栏里写上
下等级技能编号
升级经验
每次增加经验
例
下等级技能编号2
升级经验10
每次增加经验2
=end
class Game_Actor
  MULTISKILLS = true#true时可以同时学会高等级技能和低等级技能,
                    #false时候学会高等级技能后会遗忘低等级技能
  alias supersetup setup
  def setup(*args)
    supersetup(*args)
    @skillexp = {}
  end
  def addskillexp
    return unless @action.skill.updatable?
    @skillexp[@action.skill.id] = 0 if @skillexp[@action.skill.id].nil?
    @skillexp[@action.skill.id] += @action.skill.eachexp
    if @skillexp[@action.skill.id] >= @action.skill.maxexp
      return if @skills.include?(@action.skill.nextskillid)
      learn_skill(@action.skill.nextskillid)
      forget_skill(@action.skill.id) unless MULTISKILLS
      $game_message.new_page
      text = "技能" + @action.skill.name + "升级"
      $game_message.texts.push(text)
      text = "学会" + $data_skills[@action.skill.nextskillid].name
      $game_message.texts.push(text)
    end
  end
end
class Game_Enemy
  def addskillexp
  end
end
module RPG
  class Skill
    def updatable?
      @note =~ /下等级技能编号(\d+)/
      return !$1.nil?
    end
    def nextskillid
      @note =~ /下等级技能编号(\d+)/
      return $1.to_i
    end
    def maxexp
      @note =~ /升级经验(\d+)/
      return $1.to_i
    end
    def eachexp
      @note =~ /每次增加经验(\d+)/
      return $1.to_i
    end
  end
end
class Scene_Battle
  alias superexecute_action_skill execute_action_skill
  def execute_action_skill
    superexecute_action_skill
    @active_battler.addskillexp
  end
end
[/pre]

冲突的那段脚本为
[pre lang="ruby"]if user.is_a?(Game_Actor) and user.id == 1 and obj.is_a?(RPG::Skill) and obj.id == 9# 攻击对方给自己加状态
user.add_state(3)    #1号角色施展9号技能,给自己加3号状态
end  [/pre]

下附工程。
slick_CP整合公共版4.0ALPHA.rar (1.16 MB, 下载次数: 112)
梦石
0
星屑
90
在线时间
357 小时
注册时间
2006-3-3
回帖
163
 楼主| 发表于 2015-10-25 10:13:13 | 显示全部楼层
没人吗。
回复

使用道具 举报

永无止境的旅程<

梦石
0
星屑
537
在线时间
1554 小时
注册时间
2012-6-19
回帖
1162

开拓者贵宾

发表于 2015-11-6 00:40:57 | 显示全部楼层
脚本冲突这些问题是无法解决的,除非你重写兼容版的脚本
[url=https://rpg.blue/thread-389697-1-1.html]https://rpg.blue/https://rpg.blue/data/attachment/forum/201602/26/220128cfbxxs47xth4xkz4.jpg[/url]
&lt;font size=&quot;5&quot;&gt;[color=Green][url=https://rpg.blue/forum.php?mod=viewthread&amp;tid=396208&amp;extra=page%3D1][color=DeepSkyBlue]全新配套ACT系统,每周末一大更新,尽请期待。[/color][/url][/color]
回复

使用道具 举报

梦石
0
星屑
782
在线时间
3431 小时
注册时间
2011-6-10
回帖
6325
发表于 2015-11-10 07:39:31 | 显示全部楼层
你这脚本不是独立的 要定义升级条件 要么就是你没写好技能备注栏
长名公主玩家群:372588926 攻略娱乐应有尽有
了解更多新RM游戏,游戏制作请加入RPGmaker支援群:113622890
回复

使用道具 举报

梦石
0
星屑
90
在线时间
357 小时
注册时间
2006-3-3
回帖
163
 楼主| 发表于 2015-11-10 08:50:53 | 显示全部楼层
本帖最后由 duchen5779 于 2015-11-10 09:25 编辑
上贺茂润 发表于 2015-11-10 07:39
你这脚本不是独立的 要定义升级条件 要么就是你没写好技能备注栏


呃……备注肯定是没写错,如果不在SIDEVIEW里定义那句话的话,也不会出现问题……所以觉得还是哪里冲突了……
这个技能升级脚本其实是很喜欢的,简单又实用,而且也能扩展。

算了,忍痛放弃了,没想到冲突那么多,好像技能附带公共事件也冲突……
回复

使用道具 举报

聪仔

梦石
0
星屑
6187
在线时间
3077 小时
注册时间
2013-12-26
回帖
3076
发表于 2015-11-10 13:13:04 | 显示全部楼层
Game_Battler下第470行
@action.clear
改成
@action.clear unless [3].include?(state_id)
其中3就是你附加给自己的状态ID,可以按需求改成别的...
如果是其它状态也需要用到状态法,还需要在[ ]里加上其它状态的ID,例如[3,4,10]等等...

评分

参与人数 1星屑 +100 收起 理由
Luciffer + 100 认可答案

查看全部评分

聪聪全国第三帅...
他们都叫我【人赢聪】
我的RM能力雷达图:

回复

使用道具 举报

梦石
0
星屑
90
在线时间
357 小时
注册时间
2006-3-3
回帖
163
 楼主| 发表于 2015-11-12 10:44:58 | 显示全部楼层
本帖最后由 duchen5779 于 2015-11-12 12:09 编辑

感谢聪仔。另外还有一个问题,还是上面这个系统(单独开贴有点重复,就在这里了),技能里的公共事件,在一般的回合制战斗里是在技能施展之后立刻触发,但是在这个CP制里,是等到技能施展之后,敌我双方其他任何一个人该行动了(也就是这个人的CP满了),才触发,这样的话好多的技能公共事件的效果就有些滞后。
不求和技能同步,至少也得是技能施展之后立刻触发,然后CP再走吧,要不就搞得和下个人施展的似的。不知是哪里的问题,应该还是和SIDEVIEW本身有关,正在每个脚本试,但是还是少点头绪。不知道能不能给点启发。

PS:聪仔好像最近一个礼拜很有时间?经常能看见,福音啊。

自己找到解决办法了,在战斗技能的实行里
[pre lang="ruby"] # 取得公共事件
    $game_temp.common_event_id = skill.common_event_id[/pre]
   
这个地方的后面加上一句
[pre lang="ruby"]process_battle_event[/pre]

测试后OK了,暂时不知道冲突,先这么来吧……

点评

没事刷刷VX区赚点糖...  发表于 2015-11-12 13:12
回复

使用道具 举报

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

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部