设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 1248|回复: 6
打印 上一主题 下一主题

怎么弄到战斗後恢复HP和SP?

 关闭 [复制链接]
头像被屏蔽

Lv1.梦旅人 (禁止发言)

梦石
0
星屑
50
在线时间
0 小时
注册时间
2008-7-10
帖子
106
跳转到指定楼层
1
发表于 2008-7-21 00:03:59 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
提示: 作者被禁止或删除 内容自动屏蔽
签名被屏蔽

Lv1.梦旅人

仙剑奇侠

梦石
0
星屑
50
在线时间
33 小时
注册时间
2008-4-2
帖子
622
2
发表于 2008-7-21 00:07:40 | 只看该作者
貌似和我之前發的帖子一樣,我也是發了N年沒有人理我…因此我沒學會,教不了你,抱歉{/fd}

回复 支持 反对

使用道具 举报

头像被屏蔽

Lv1.梦旅人 (禁止发言)

梦石
0
星屑
50
在线时间
0 小时
注册时间
2008-7-10
帖子
106
3
 楼主| 发表于 2008-7-21 00:11:30 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
签名被屏蔽
回复 支持 反对

使用道具 举报

Lv1.梦旅人

今、空を見上げ

梦石
0
星屑
50
在线时间
0 小时
注册时间
2007-8-11
帖子
2022
4
发表于 2008-7-21 00:17:38 | 只看该作者
做任何事,都不要为自己找借口。任何事都不存在困难的借口。你只有3个字“做得到”
回复 支持 反对

使用道具 举报

头像被屏蔽

Lv1.梦旅人 (禁止发言)

梦石
0
星屑
50
在线时间
0 小时
注册时间
2008-7-10
帖子
106
5
 楼主| 发表于 2008-7-21 00:24:24 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
签名被屏蔽
回复 支持 反对

使用道具 举报

Lv1.梦旅人

今、空を見上げ

梦石
0
星屑
50
在线时间
0 小时
注册时间
2007-8-11
帖子
2022
6
发表于 2008-7-21 00:38:32 | 只看该作者
而 是么

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

作者
柳柳(本站站长)

不少游戏都有升级的时候把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里的

  1. #--------------------------------------------------------------------------
  2. # ● 更改 EXP
  3. #     exp : 新的 EXP
  4. #--------------------------------------------------------------------------
  5. def exp=(exp)
  6.    @exp = [[exp, 9999999].min, 0].max
  7.    # 升级
  8.    while @exp >= @exp_list[@level+1] and @exp_list[@level+1] > 0
  9.      @level += 1
  10.      @hp = maxhp
  11.      @sp = maxsp
  12.      # 学会特技
  13.      for j in $data_classes[@class_id].learnings
  14.        if j.level == @level
  15.          learn_skill(j.skill_id)
  16.        end
  17.      end
  18.    end
  19.    # 降级
  20.    while @exp < @exp_list[@level]
  21.      @level -= 1
  22.    end
  23.    # 修正当前的 HP 与 SP 超过最大值
  24.    @hp = [@hp, self.maxhp].min
  25.    @sp = [@sp, self.maxsp].min
  26. end
复制代码


系统信息:本贴由楼主认可为正确答案,66RPG感谢您的热情解答~
做任何事,都不要为自己找借口。任何事都不存在困难的借口。你只有3个字“做得到”
回复 支持 反对

使用道具 举报

Lv1.梦旅人

辉瑞中国首席研究员<

梦石
0
星屑
50
在线时间
142 小时
注册时间
2008-1-18
帖子
2129
7
发表于 2008-7-21 00:40:33 | 只看该作者
来6r就是等某位仁兄的巨坑

褴褛着身行无端,囊中羞涩空心酸。
平生几无得意事,倒塔泡面宅寝室。
惟羡隔壁高帅富,雨露春风月夜声。
青丝无处觅其踪,只有硬盘苍井空。
莫云男儿空悲愁,鸿鹄岂不天际游。
坐断天下执鹿首,千百金帛万兜鍪。
夜深忽梦某年月,再见女神欲语迟。
吊丝终有逆袭日,木耳再无回粉时。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-11-15 21:31

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表