Project1
标题:
战斗完毕自动恢复
[打印本页]
作者:
ichijouziken
时间:
2008-12-28 03:58
标题:
战斗完毕自动恢复
战斗完毕生命和魔力自动恢复30%,那么应该如何修改呢? [LINE]1,#dddddd[/LINE]
版务信息:本贴由楼主自主结贴~
作者:
50211040
时间:
2008-12-28 04:16
1种,用“更改状态”试试
2种,增减HP,SP 设置变量
作者:
菜鸟飞呀飞
时间:
2008-12-28 04:24
提示:
作者被禁止或删除 内容自动屏蔽
作者:
200878242
时间:
2008-12-28 04:31
在Scene_Battle 2脚本里搜索:
if actor.cant_get_exp? == false
在它的上面添加
actor.hp += actor.maxhp*20/100
actor.sp += actor.maxsp*12/100
解释下: 如果没有20/100 或12/100 则恢复全值,我的这个修改是说战斗完后恢复HP为总量的
20% SP为12%,至于你要如何应用,就看你喜欢了。 [LINE]1,#dddddd[/LINE]
系统信息:本贴获得楼主认可,66RPG感谢您的热情解答~
作者:
菜鸟飞呀飞
时间:
2008-12-28 04:37
提示:
作者被禁止或删除 内容自动屏蔽
作者:
ichijouziken
时间:
2008-12-28 05:13
汗汗……如何全局搜索??{/dk}
作者:
200878242
时间:
2008-12-28 05:28
【升级补血】
不少游戏都有升级的时候把HP,SP补慢的功能。在RMXP中怎么制作呢?我先说制作方法,再简单讲一下原理和碰到其他新脚本之后的更改方法。
1、默认情况下的升级加HP,SP方法:
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
2、雅土的升级提示脚本:
首先你得确定是本站提供的脚本,否则行数会略有偏差,用ctrl+f搜索即可。在279行内容如下:
if actor.level > last_level
在行此下面一行添加:actor.hp = actor.maxhp; actor.sp = actor.maxsp
如果需要增加50%的最大生命和最大SP,则写actor.hp += actor.maxhp*0.5; actor.sp += @actor.maxsp*0.5
3、RTAB
首先你得确定是本站提供的脚本,否则行数会略有偏差,用ctrl+f搜索即可。在773行内容如下:
if actor.level > last_level
在行此下面一行添加:actor.hp = actor.maxhp; actor.sp = actor.maxsp
如果需要增加50%的最大生命和最大SP,则写actor.hp +=actor.maxhp*0.5; actor.sp += actor.maxsp*0.5
【原理】
其实所有的升级补血都是在升级出现提示表现之后帮忙把HP和SP补满。所以只需要在脚本中按ctrl+shift+f搜索
if actor.level > last_level
就可以了。不过有的脚本写得不是非常规范,可能会写成if actor.level >last_level这样(和最标准的格式比缺一个空格),这样搜索就搜不到了。这是可以全局搜索.level,然后自己挑出来。这个.level是默认定义的,一般的脚本不会随便更改这个。
actor.hp = actor.maxhp,就是把现在的hp赋值为最大hp (maxhp),SP也相同。如果使用增加一些hp或sp,就使用 += 的方法增加现有值。
【战斗结束后补血补气】
了解上面的原理,比如我现在想模拟仙剑的效果每次战斗结束恢复50%受伤的生命和精神,这样不会完全补满,又不至于受伤过重难度太大。方法其实很简单了:
在Window_BattleResult中(这个是用来表示战斗结束时、显示获得的 EXP 及金钱的窗口),在initialize或者refresh函数定义中,添加如下内容(比如添加在28行下面):
for actor in $game_party.actors
actor.hp += 0.5*(actor.maxhp-actor.hp)
actor.sp += 0.5*(actor.maxsp-actor.sp)
end
你应该可以看明白这个简短的脚本是怎么运行的。
--------------------------------------------------------------------------------
另外,比较好的方法:在Game_Actor里的
#--------------------------------------------------------------------------
# ● 更改 EXP
# exp : 新的 EXP
#--------------------------------------------------------------------------
def exp=(exp)
@exp = [[exp, 9999999].min, 0].max
# 升级
while @exp >= @exp_list[@level+1] and @exp_list[@level+1] > 0
@level += 1
@hp = maxhp
@sp = maxsp
# 学会特技
for j in $data_classes[@class_id].learnings
if j.level == @level
learn_skill(j.skill_id)
end
end
end
# 降级
while @exp < @exp_list[@level]
@level -= 1
end
# 修正当前的 HP 与 SP 超过最大值
@hp = [@hp, self.maxhp].min
@sp = [@sp, self.maxsp].min
end
[LINE]1,#dddddd[/LINE]
系统信息:本贴获得楼主认可,66RPG感谢您的热情解答~
欢迎光临 Project1 (https://rpg.blue/)
Powered by Discuz! X3.1