Project1

标题: 升级满血出现了问题 [打印本页]

作者: 路过旧时光    时间: 2014-6-4 23:17
标题: 升级满血出现了问题
看了很多升级满血的脚本
都是
Scene_Battle 2 的173行开始,有如下3段内容:

        if actor.level > last_level
          @status_window.level_up(i)
        end

这里就是升级的内容,只要在if那个下面一行添加
actor.hp = actor.maxhp;          actor.sp = actor.maxsp

就可以补满血。如果需要增加50%的最大生命和最大SP,则写
actor.hp += actor.maxhp*0.5;          actor.sp += actor.maxsp*0.5


我也照着做了 结果没有用
我同学告诉我新建一个工程 在新工程里有用的话
就把新工程里的脚本整个复制到原来的里面

我也照做了
结果在新工程里确实有用
可是原来的还是没办法升级满血


求教大神这是为什么
我明天就要交作业了
真是急死了
作者: moy    时间: 2014-6-4 23:32
最大的可能就是你使用了别的脚本覆写了这一段的方法
全局搜索这个方法名,看有没有别的地方动刀了,然后在最后一个该方法的def里面把你的修改加进去。

另外交作业是咋回事……难道还有人开RM课?
作者: 路过旧时光    时间: 2014-6-4 23:35
moy 发表于 2014-6-4 23:32
最大的可能就是你使用了别的脚本覆写了这一段的方法
全局搜索这个方法名,看有没有别的地方动刀了,然后在 ...

我是游戏专业的 老师让我们分组做个二维游戏 用AGM或者RPG MAKER 的  

全局搜索方法名是个什么情况- -不会。。。求教。。。。
作者: 路过旧时光    时间: 2014-6-5 00:34
路过旧时光 发表于 2014-6-4 23:35
我是游戏专业的 老师让我们分组做个二维游戏 用AGM或者RPG MAKER 的  

全局搜索方法名是个什么情况- -不 ...

但是。。。我还是不知道我应该搜索什么、。。。。我是小白
作者: 小传子    时间: 2014-6-5 00:48
请传工程说话
作者: moy    时间: 2014-6-5 00:50
路过旧时光 发表于 2014-6-5 00:34
但是。。。我还是不知道我应该搜索什么、。。。。我是小白


[mw_shl_code=ruby,true]
def start_phase5
      ……
          if actor.level > last_level
              @status_window.level_up(i)
          end
      ……
end
[/mw_shl_code]
所以这段是在start_phase5里面的,start_phase5就是一个方法名。全局搜索他,看看有没有被alias或是重新def
alias是创建别名,通常追加脚本时会这样使用
[mw_shl_code=ruby,true]alias old_start_phase5 start_phase5[/mw_shl_code]
这样就为原来的方法设置了一个别名,可以在之后进行调用。而因为原方法名在这里会使用到,因此搜索start_phase5能够搜索到这里
然后就可以对原方法进行def的重新定义
[mw_shl_code=ruby,true]
def start_phase5
    old_start_phase5
    ……
end
[/mw_shl_code]
这样就完成了在原方法内容不变的情况下追加一部分内容的操作。以这种方式进行改写时,搜索level_up之类的方法内的关键词的时候可能无法搜索到,因此要搜索方法名。
也有不alias直接def的方式,这样会直接重写原方法,通常是在方法内部增加不影响原本功能的语句时使用的。这时不管是方法名还是内部的一些关键词都可以直接搜索到。
不过如果使用的脚本整个重新整理了XP的战斗回合流程导致方法名完全不一样了,你可能只有直接搜索level_up之类的关键词了。

作者: moy    时间: 2014-6-5 00:57
本帖最后由 moy 于 2014-6-5 01:05 编辑

另外其实我想说……

  1.   #--------------------------------------------------------------------------
  2.   # ● 更改 EXP
  3.   #     exp : 新的 EXP
  4.   #--------------------------------------------------------------------------
  5.   def exp=(exp)
  6.     ……
  7.     # 升级
  8.     while ……
  9.       ……
  10.       # 学会特技
  11.       for j in $data_classes[@class_id].learnings
  12.        ……
  13.       end
  14.       # 自动恢复
  15.       @hp = self.maxhp
  16.       @sp = self.maxsp
  17.     end
  18.     ……
  19.   end
复制代码
你直接在升级改不好吗…………全局搜索“升级”一下就找到了喂……   

擦。改了半天还是自动@人名了,放弃。换成省略号了,反正你知道是在哪就好了
作者: 路过旧时光    时间: 2014-6-5 01:31
moy 发表于 2014-6-5 00:57
另外其实我想说……你直接在升级改不好吗…………全局搜索“升级”一下就找到了喂……   

擦。改了半天还 ...

终于解决了!!谢谢!!!!




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