Project1

标题: (积分200-300)再次麻烦大家,回复技能问题 [打印本页]

作者: 玄月    时间: 2008-8-19 04:48
标题: (积分200-300)再次麻烦大家,回复技能问题
http://rpg.blue/upload_program/files/菜单-工程_99412080.rar
以上是工程,扣血事件麻烦自己调用,技能中有回复技能了。
问题就是:在技能窗口中使用回复技能时没反应,返回菜单后血却补回来了。
PS:回复技能在战斗中没出错。
3个问题基本解决了,还剩一个小问题,嗯嗯
作者: 玄月    时间: 2008-8-19 05:29
额…………回的帖太多把自己的帖压下去了………………
作者: 凌冰    时间: 2008-8-19 05:32
是调用公共事件吗?调用公共事件都是先返回地图再执行的
作者: 玄月    时间: 2008-8-19 05:51
没有啊,看工程就知道了
作者: Ж纯Ж蓝Ж    时间: 2008-8-19 05:53
MS楼主的工程没问题.

可能是菜单占FPS大的缘故?

PIA我把.
作者: 玄月    时间: 2008-8-19 05:59
啊……不是,楼上可能误解了
是在菜单中使用回复技能才出错
作者: lhbadsl    时间: 2008-8-19 06:02
理解不能,把问题讲清楚点。。。或者等我看看你的脚本再说。。。。到底要怎么样弄才能出现你所谓的“问题”呢?
作者: 凌冰    时间: 2008-8-19 06:02
实在不明白是什么意思= =
作者: lhbadsl    时间: 2008-8-19 06:05
是不是在回血选人窗口不能显示回血量的问题呢,这个可能是这个窗口没有刷新血条的问题。。。。
作者: 玄月    时间: 2008-8-19 06:06
额…………麻烦先弄个扣血事件,然后再在菜单中使用
“气疗”这一技能。错误就出来了
作者: lhbadsl    时间: 2008-8-19 06:14
这个东西有关的脚本是那个?因为你的脚本实在是太多了。。如果你可以说下的话,可能问题就解决快一点。。。。应该是刷新窗口的问题,你弄出的那个窗口没有刷新血条。。所以你根本就看不到变化
作者: dbshy    时间: 2008-8-19 06:15
技能分类_常规部分 update_target
if @target_window.index >= 0
       # 对目标角色应用特技的使用效果
       target = $game_party.actors[@target_window.index]
       used = target.skill_effect(@actor, @skill)
     end
下加@target_window.refresh

然后我想说,这个虽然解决了你的这个问题,但没根本解决
这个脚本是对的,已经刷新了,为什么会造成这个呢?
应该是SKILL_EFFECT冲突吧

我就懒得帮你改,你的外挂脚本太多了 [LINE]1,#dddddd[/LINE]系统信息:本贴获得楼主认可,66RPG感谢您的热情解答~
作者: 玄月    时间: 2008-8-19 06:17
额………………33个而已
有谁可以帮帮忙吗?
其实教我怎么改就可以了
作者: lhbadsl    时间: 2008-8-19 06:18
33个的确是不太多。。。。{/gg}改法吗,按照他的办法,在按确定键的时候把所有的窗口都刷新就可以了
作者: wzzprofile    时间: 2008-8-19 06:28
提示: 作者被禁止或删除 内容自动屏蔽
作者: 玄月    时间: 2008-8-19 06:43
那个知道,一直忘了改回来而已
作者: lhbadsl    时间: 2008-8-19 07:01
LZ的问题都解决了吗。。。。不过问题也是不难的吧。。。。就算是治不治本的方法。。。。其实也就可以了。。。搞定就行了吧。
作者: 玄月    时间: 2008-8-19 07:59
以下引用dbshy于2008-8-18 22:15:12的发言:

技能分类_常规部分 update_target
if @target_window.index >= 0
      # 对目标角色应用特技的使用效果
      target = $game_party.actors[@target_window.index]
      used = target.skill_effect(@actor, @skill)
    end
下加@target_window.refresh

然后我想说,这个虽然解决了你的这个问题,但没根本解决
这个脚本是对的,已经刷新了,为什么会造成这个呢?
应该是SKILL_EFFECT冲突吧

我就懒得帮你改,你的外挂脚本太多了


[本贴由作者于 2008-8-18 22:38:57 最后编辑]

虽然回血的显示是解决了,可是音效还是那个“无效”音
还有主角也不用消耗SP
这种BUG很难堪吧………………
作者: lhbadsl    时间: 2008-8-19 08:11
虽然回血的显示是解决了,可是音效还是那个“无效”音
还有主角也不用消耗SP
这种BUG很难堪吧………………

或许这样:
在它那个方法的基础上加上
Audio.se_play("Audio/SE/" + "回血音效", 100, 80)
@actor.sp -= @skill.sp_cost
这样其中@actor是使用者(不过我没有那么细心和时间。。。不知道对不对。。)用治标不治本的办法搞定。。。{/gg}其中要把你要的那个音效导出到se文件夹中命名为”回血音效“这个文件就可以了,后面那句是我乱猜的,如果不行的话,你这个技能如果只有一个人会,就直接把这个人的sp减掉就可以了。。。。我试试解决你这个问题把。。。给我点时间。
作者: lhbadsl    时间: 2008-8-19 08:22
  
  1.   # 目标是单体的情况下
  2.      if @target_window.index >= 0
  3.        # 对目标角色应用特技的使用效果
  4.        target = $game_party.actors[@target_window.index]
  5.        used = target.skill_effect(@actor, @skill)
  6.        $game_system.se_play(@skill.menu_se)
  7.        @actor.sp -= @skill.sp_cost
  8.        @target_window.refresh
  9.      end
复制代码

这样写的话就可以完全符合要求了。。。不过我的工程里好像没有这个@skill.menu_se(气疗音效的名字是是105_Heal01)音效。。。我在数据库换了个音效试了下有效,可能这个脚本本身编写的时候没有考虑到这个问题,好像只有在

  1. if @target_window.index >= 0
  2. .......
  3. end
复制代码

这些句子之间,在地图才可以使用。。。。。used = target.skill_effect(@actor, @skill)这句的话可能只能在战斗中有用。。。如果这样的话还要加上个判断句就是

  1.    if @target_window.index >= 0
  2.        # 对目标角色应用特技的使用效果
  3.        target = $game_party.actors[@target_window.index]
  4.        used = target.skill_effect(@actor, @skill)
  5.       if $game_temp.in_battle == false #不是战斗中的状态
  6.        $game_system.se_play(@skill.menu_se) #播放技能的地图se
  7.        @actor.sp -= @skill.sp_cost #使用者减少技能所需sp
  8.        @target_window.refresh  #目标窗口刷新
  9.       end
  10.      end
复制代码

意思就是这三句只有在非战斗中才可以起作用,不然如果和战斗中起冲突的话会很麻烦的。。如果你战斗中这个脚本是正常的没有这个条件句,会造成战斗是重复减sp和重复播放音效,还有就是会重复刷新。。。。就算和战斗中没有冲突也是没有关系的,加上这句添加判断没有任何副作用。还有其他的地方你按照这种办法做就可以解决问题了
这个是经过我部分修改的工程,你参考下:
  1. http://rpg.blue/upload_program/files/菜单-工程_99536792.rar
复制代码

作者: 玄月    时间: 2008-8-19 09:07
啊……谢谢……我是个半脚本盲…………
最后个小问题,为什么会有双重音效?
就是即放了回复音又放了无效音……
作者: lhbadsl    时间: 2008-8-19 09:12
啊……谢谢……我是个半脚本盲…………
最后个小问题,为什么会有双重音效?
就是即放了回复音又放了无效音……

因为这个脚本的其他地方还有播放这个无效音效的句子,不过只能在战斗中播放,如前面讲可能target.skill_effect(@actor, @skill)这种句子只能在战斗中起作用,你把那“个无效音效”播放音效的地方找出来用

  1. if $game_temp.in_battle == true #是战斗中的状态
  2. ........
  3. end
复制代码

这个句子把它围起来,就是让它只能在战斗中播放,这样地图上就不会有这个无效音的出现了。。。这个办法也是治标不治本的。。。不过能够不损害以前的脚本{/gg}如果我有时间的话自己写可能我会做得更好点,不过楼主谦虚了,其实你也是高手一个吗。。。呵呵
作者: 玄月    时间: 2008-8-19 09:22
嗯……试试。
想了很久了…………难道楼上是马甲…………
作者: lhbadsl    时间: 2008-8-19 09:25
嗯……试试。
想了很久了…………难道楼上是马甲…………

呵呵,可能是吧,不过不是6r上的人,我以前在别处混的。。。只会写战斗系统。。。其他都不行。。。{/gg}如果有人叫我做地图类的脚本的话,我比小白还要小白。。。。
作者: 玄月    时间: 2008-8-19 09:31
问题已解决,我把以下脚本注释掉就没事了,虽然不治本
[LINE]1,#dddddd[/LINE]
  1. # 无法使用特技的情况下
  2.      unless used
  3.        # 演奏冻结 SE
  4.        $game_system.se_play($data_system.buzzer_se)
  5.      end
  6.      return
复制代码

作者: 玄月    时间: 2008-8-19 09:33
以下引用lhbadsl于2008-8-19 1:25:46的发言:


嗯……试试。
想了很久了…………难道楼上是马甲…………

呵呵,可能是吧,不过不是6r上的人,我以前在别处混的。。。只会写战斗系统。。。其他都不行。。。如果有人叫我做地图类的脚本的话,我比小白还要小白。。。。


[本贴由作者于 2008-8-19 1:26:05 最后编辑]

我是事件狂,会改一点脚本,为了几个脚本的修正,我回了别人多少贴去赚分啊…………
作者: lhbadsl    时间: 2008-8-19 09:33
那么恭喜大人了。。。。不过直接注释掉可能在战斗中会出现问题。。。。你试试吧,我能帮的也只有这么多了。。。。
我是事件狂,会改一点脚本,为了几个脚本的修正,我回了别人多少贴去赚分啊…………

呵呵,其实我和你可能同类,不过我是脚本狂,事件吗。。。不懂。。。{/gg}
作者: 玄月    时间: 2008-8-19 09:35
先恭喜自己……在战斗中也没有问题
(可以给自己分吗…………?让马甲来回个帖,嗯嗯)
作者: 玄月    时间: 2008-8-19 09:44
最后小问题已自行解决,谢谢各位!!!{/qiang}




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