Project1

标题: 脚本冲突……有范例…… [打印本页]

作者: duchen5779    时间: 2015-10-22 13:58
标题: 脚本冲突……有范例……
本帖最后由 duchen5779 于 2015-10-22 16:07 编辑

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


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


附技能升级脚本:
RUBY 代码复制
  1. =begin
  2. 在可以升级的技能的备注栏里写上
  3. 下等级技能编号
  4. 升级经验
  5. 每次增加经验
  6. 下等级技能编号2
  7. 升级经验10
  8. 每次增加经验2
  9. =end
  10. class Game_Actor
  11.   MULTISKILLS = true#true时可以同时学会高等级技能和低等级技能,
  12.                     #false时候学会高等级技能后会遗忘低等级技能
  13.   alias supersetup setup
  14.   def setup(*args)
  15.     supersetup(*args)
  16.     @skillexp = {}
  17.   end
  18.   def addskillexp
  19.     return unless @action.skill.updatable?
  20.     @skillexp[@action.skill.id] = 0 if @skillexp[@action.skill.id].nil?
  21.     @skillexp[@action.skill.id] += @action.skill.eachexp
  22.     if @skillexp[@action.skill.id] >= @action.skill.maxexp
  23.       return if @skills.include?(@action.skill.nextskillid)
  24.       learn_skill(@action.skill.nextskillid)
  25.       forget_skill(@action.skill.id) unless MULTISKILLS
  26.       $game_message.new_page
  27.       text = "技能" + @action.skill.name + "升级"
  28.       $game_message.texts.push(text)
  29.       text = "学会" + $data_skills[@action.skill.nextskillid].name
  30.       $game_message.texts.push(text)
  31.     end
  32.   end
  33. end
  34. class Game_Enemy
  35.   def addskillexp
  36.   end
  37. end
  38. module RPG
  39.   class Skill
  40.     def updatable?
  41.       @note =~ /下等级技能编号(\d+)/
  42.       return !$1.nil?
  43.     end
  44.     def nextskillid
  45.       @note =~ /下等级技能编号(\d+)/
  46.       return $1.to_i
  47.     end
  48.     def maxexp
  49.       @note =~ /升级经验(\d+)/
  50.       return $1.to_i
  51.     end
  52.     def eachexp
  53.       @note =~ /每次增加经验(\d+)/
  54.       return $1.to_i
  55.     end
  56.   end
  57. end
  58. class Scene_Battle
  59.   alias superexecute_action_skill execute_action_skill
  60.   def execute_action_skill
  61.     superexecute_action_skill
  62.     @active_battler.addskillexp
  63.   end
  64. end


冲突的那段脚本为
RUBY 代码复制
  1. if user.is_a?(Game_Actor) and user.id == 1 and obj.is_a?(RPG::Skill) and obj.id == 9# 攻击对方给自己加状态
  2. user.add_state(3)    #1号角色施展9号技能,给自己加3号状态
  3. end


下附工程。
slick_CP整合公共版4.0ALPHA.rar (1.16 MB, 下载次数: 105)
作者: duchen5779    时间: 2015-10-25 10:13
没人吗。
作者: 丿梁丶小柒    时间: 2015-11-6 00:40
脚本冲突这些问题是无法解决的,除非你重写兼容版的脚本
作者: 上贺茂润    时间: 2015-11-10 07:39
你这脚本不是独立的 要定义升级条件 要么就是你没写好技能备注栏
作者: duchen5779    时间: 2015-11-10 08:50
本帖最后由 duchen5779 于 2015-11-10 09:25 编辑
上贺茂润 发表于 2015-11-10 07:39
你这脚本不是独立的 要定义升级条件 要么就是你没写好技能备注栏


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

算了,忍痛放弃了,没想到冲突那么多,好像技能附带公共事件也冲突……
作者: 正太君    时间: 2015-11-10 13:13
Game_Battler下第470行
@action.clear
改成
@action.clear unless [3].include?(state_id)
其中3就是你附加给自己的状态ID,可以按需求改成别的...
如果是其它状态也需要用到状态法,还需要在[ ]里加上其它状态的ID,例如[3,4,10]等等...
作者: duchen5779    时间: 2015-11-12 10:44
本帖最后由 duchen5779 于 2015-11-12 12:09 编辑

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

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

自己找到解决办法了,在战斗技能的实行里
RUBY 代码复制
  1. # 取得公共事件
  2.     $game_temp.common_event_id = skill.common_event_id

   
这个地方的后面加上一句
RUBY 代码复制
  1. process_battle_event


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




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1