Project1

标题: 为什么我修改脚本后战斗升级还是不能完全恢复 [打印本页]

作者: zxpopo    时间: 2007-6-23 02:14
提示: 作者被禁止或删除 内容自动屏蔽
作者: zxpopo    时间: 2007-6-23 02:14
提示: 作者被禁止或删除 内容自动屏蔽
作者: 风中萧萧    时间: 2007-6-23 02:24
修改地方错误了,应该是在升级提示脚本下
    self.contents.draw_text( 0, 114, 128, 24, actor.agi.to_s, 2)
    self.contents.draw_text( 0, 136, 128, 24, actor.int.to_s, 2)
    actor.hp = actor.maxhp     #升级恢复满HP
    actor.sp = actor.maxsp     #升级恢复满SP
  end
end
作者: patrick    时间: 2007-6-23 02:27
用这个




  1. 各脚本的战斗结束与升级时补血的方法




  2. 发表日期:2005-10-19   

  3.  

  4. 作者
  5. 柳柳(本站站长)
  6.   版本与更新
  7.   2005年9月更新

  8. 相关网址
  9.   
  10.   范例工程
  11. 不提供



  12. --------------------------------------------------------------------------------



  13. 教程内容

  14. 【升级补血】

  15. 不少游戏都有升级的时候把HP,SP补慢的功能。在RMXP中怎么制作呢?我先说制作方法,再简单讲一下原理和碰到其他新脚本之后的更改方法。

  16. 1、默认情况下的升级加HP,SP方法:

  17. Scene_Battle 2 的173行开始,有如下3段内容:

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

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

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

  25. 2、雅土的升级提示脚本:

  26. 首先你得确定是本站提供的脚本,否则行数会略有偏差,用ctrl+f搜索即可。在279行内容如下:

  27.         if actor.level > last_level

  28. 在行此下面一行添加:actor.hp = actor.maxhp;          actor.sp = actor.maxsp
  29. 如果需要增加50%的最大生命和最大SP,则写actor.hp += actor.maxhp*0.5;          actor.sp += @actor.maxsp*0.5

  30. 3、RTAB

  31. 首先你得确定是本站提供的脚本,否则行数会略有偏差,用ctrl+f搜索即可。在773行内容如下:

  32.         if actor.level > last_level

  33. 在行此下面一行添加:actor.hp = actor.maxhp;          actor.sp = actor.maxsp
  34. 如果需要增加50%的最大生命和最大SP,则写actor.hp +=actor.maxhp*0.5;          actor.sp += actor.maxsp*0.5

  35. 【原理】

  36. 其实所有的升级补血都是在升级出现提示表现之后帮忙把HP和SP补满。所以只需要在脚本中按ctrl+shift+f搜索
  37. if actor.level > last_level
  38. 就可以了。不过有的脚本写得不是非常规范,可能会写成if actor.level >last_level这样(和最标准的格式比缺一个空格),这样搜索就搜不到了。这是可以全局搜索.level,然后自己挑出来。这个.level是默认定义的,一般的脚本不会随便更改这个。

  39. actor.hp = actor.maxhp,就是把现在的hp赋值为最大hp (maxhp),SP也相同。如果使用增加一些hp或sp,就使用 += 的方法增加现有值。

  40. 【战斗结束后补血补气】

  41. 了解上面的原理,比如我现在想模拟仙剑的效果每次战斗结束恢复50%受伤的生命和精神,这样不会完全补满,又不至于受伤过重难度太大。方法其实很简单了:

  42. 在Window_BattleResult中(这个是用来表示战斗结束时、显示获得的 EXP 及金钱的窗口),在initialize或者refresh函数定义中,添加如下内容(比如添加在28行下面):

  43. for actor in $game_party.actors
  44.   actor.hp += 0.5*(actor.maxhp-actor.hp)
  45.   actor.sp += 0.5*(actor.maxsp-actor.sp)
  46. end

  47. 你应该可以看明白这个简短的脚本是怎么运行的。



复制代码

作者: zxpopo    时间: 2007-6-23 02:29
提示: 作者被禁止或删除 内容自动屏蔽
作者: zxpopo    时间: 2007-6-23 02:30
提示: 作者被禁止或删除 内容自动屏蔽
作者: patrick    时间: 2007-6-23 02:32
不回啊,我就用了,挺好
作者: zxpopo    时间: 2007-6-23 02:32
提示: 作者被禁止或删除 内容自动屏蔽
作者: 精灵使者    时间: 2007-6-23 05:57
if actor.level > last_level
在你的脚本里面搜索这句。(如果没有的话,就搜索.level,肯定会找到上边类似的)
然后在if里面添上
actor.hp = actor.maxhp;
actor.sp = actor.maxsp;
我试过了,完全可行。我的游戏里就用这个。

作者: kaze    时间: 2007-6-23 06:03
与樱雅的RATB不冲突
作者: 永劫的咎人    时间: 2007-6-23 18:20
提示: 作者被禁止或删除 内容自动屏蔽




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