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

Project1

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

[已经解决] 如何在战斗开始时设置队长的生命最大值?

[复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
17 小时
注册时间
2013-10-28
帖子
18
跳转到指定楼层
1
发表于 2013-12-16 11:09:26 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
本帖最后由 joerlee 于 2013-12-16 12:03 编辑

如题,最终效果是在战斗开始时,队长的生命最大值 = 全员的生命最大值之和;

本人非伸手党,所有脚本都准备自己搞定,无奈基础太差,有好心的大大看到了,给个提示也好(比如有某个方法)~


以下是我的实现,但是有问题:

class Scene_Battle < Scene_Base  
  
  #--------------------------------------------------------------------------
  # ● 刷新
  #--------------------------------------------------------------------------
    #--------------------------------------------------------------------------
  # ● 常量(特性)
  #--------------------------------------------------------------------------
  TMHP  = 1    #所有出战队员HP最大值
  THP   = 2    #所有出战队员现有HP总和

   
  #--------------------------------------------------------------------------
  # ● 计算所有出战队员HP最大值
  #--------------------------------------------------------------------------
  
  def ma_tmhp

    $game_variables[TMHP] = 0

    $game_party.members.size.times do |i|

      $game_variables[TMHP] += $game_party.members.mhp

    end
   
    return $game_variables[TMHP]

  end  



  
  def ma_leader_setmhp
      
    $game_party.members[0].mhp = ma_tmhp
  
  end

end





报错: undifined method `mhp = `  for <Game_Actor = XXXXXXXX>


貌似没有.mhp的方法,整个项目里貌似都没有对角色mhp的修改,数据库里只有增加mhp百分比的功能,看来只好换个思路了……

初步打算让 leader 受伤害时的伤害值 直接从 @temp_hp = $game_variables[TMHP] 中扣除,然后修改胜负规则,加入 @temp_hp < 1 的失败条件,好像leader还不能死,要扛到@temp_hp < 1,所以最大生命值要高于敌人最大的攻击力,并且每回合把血恢复满……唉,这样就被搞麻烦了
游戏开发者+游戏玩家

Lv3.寻梦者

梦石
0
星屑
3298
在线时间
1120 小时
注册时间
2009-4-15
帖子
815
2
发表于 2013-12-16 12:38:54 | 只看该作者
用param(0)来代替mhp试试。

点评

tan12345 说的对,不过taroxd 也没错,这两个字段确实没区别,p出来是一样的~ 现在的问题是这个值无法修改,用=赋值就会报错,why?  发表于 2013-12-16 13:56
我的意思是,试试$game_party.members[0].param(0),这个返回的是队长的MHP  发表于 2013-12-16 13:47
继续报错……: unexcepted `=` ,excepting keyword _end $game_party.leader.param(0) = ma_tmhp  发表于 2013-12-16 13:40
有什么区别……  发表于 2013-12-16 13:04
回复 支持 反对

使用道具 举报

Lv3.寻梦者 (版主)

…あたしは天使なんかじゃないわ

梦石
0
星屑
2208
在线时间
4033 小时
注册时间
2010-10-4
帖子
10779

开拓者贵宾

3
发表于 2013-12-16 13:02:27 | 只看该作者
以下没有环境,全都是凭空写的,也没有测试,所以不保证不出错
  1. class Game_BattlerBase
  2.   alias old_mhp mhp
  3.   def mhp
  4.     return $game_party.members.inject(0) {|result, actor| result + actor.old_mhp } if self == $game_party.leader
  5.     old_mhp
  6.   end
  7. end
复制代码

点评

stack level too deep...... thank u anyway~  发表于 2013-12-16 13:52
回复 支持 反对

使用道具 举报

Lv5.捕梦者 (管理员)

老黄鸡

梦石
0
星屑
42355
在线时间
7599 小时
注册时间
2009-7-6
帖子
13506

开拓者贵宾

4
发表于 2013-12-16 14:19:35 | 只看该作者
增减能力值里面不是可以更改体力上限吗?

点评

那个能力只能在角色原来的mhp的基础上按百分比增加/减少,好像不能在那里增加一个变量  发表于 2013-12-16 14:38
RGDirect - DirectX驱动的RGSS,点我了解.
RM全系列成套系统定制请联系QQ1213237796
不接受对其他插件维护的委托
回复 支持 反对

使用道具 举报

Lv3.寻梦者

可以吃的头衔

梦石
0
星屑
1000
在线时间
423 小时
注册时间
2010-10-17
帖子
602
5
发表于 2013-12-16 16:09:27 | 只看该作者
完全不知道你说的只能按百分比增长是怎么回事,据我所知能按百分比增加最大生命值的只有状态,事件里面的增减能力值就是固定值。

点评

给分请给楼上=W=  发表于 2013-12-16 16:25
终于找到啦,谢谢~ 等会儿汇报战况~  发表于 2013-12-16 16:19
……
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
17 小时
注册时间
2013-10-28
帖子
18
6
 楼主| 发表于 2013-12-16 18:17:48 | 只看该作者
fux4 发表于 2013-12-16 16:09
完全不知道你说的只能按百分比增长是怎么回事,据我所知能按百分比增加最大生命值的只有状态,事件里面的增 ...



简单设置了一下,没有生效,大大们能帮看看么?
游戏开发者+游戏玩家
回复 支持 反对

使用道具 举报

Lv2.观梦者 (暗夜天使)

梦石
0
星屑
266
在线时间
2355 小时
注册时间
2009-3-13
帖子
2309

贵宾

7
发表于 2013-12-16 20:46:29 | 只看该作者
本帖最后由 Sion 于 2013-12-16 20:50 编辑

你自己先确定那句是不是执行了。
打开控制台,然后加个脚本:
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
17 小时
注册时间
2013-10-28
帖子
18
8
 楼主| 发表于 2013-12-16 20:56:05 | 只看该作者
Sion 发表于 2013-12-16 20:46
你自己先确定那句是不是执行了。
打开控制台,然后加个脚本:

果断没执行到……
不是怀疑大大指点,而是怎样让它执行,我还没搞明白,想简单设置一下,看看+体力上限好不好使,结果搞了一下午,从来没生效过,额,有没有确定生效的例子参考一下?

点评

你打算怎么让它执行 - -b  发表于 2013-12-16 21:13
游戏开发者+游戏玩家
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
466 小时
注册时间
2013-2-8
帖子
424
9
发表于 2013-12-16 23:53:34 手机端发表。 | 只看该作者
你可以看看 Game_Interpreter 里是怎么改上限的

评分

参与人数 1星屑 +66 收起 理由
熊喵酱 + 66 认可答案

查看全部评分

回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
719
在线时间
684 小时
注册时间
2009-5-29
帖子
461
10
发表于 2013-12-24 09:32:14 | 只看该作者
本帖最后由 saturnfjh 于 2013-12-26 09:17 编辑

记得mhp和mmp是无法常规赋值的吧,只作为只读变量存在的,唯一的办法就是修改param_plus……

试试这样看看? @joerlee

RUBY 代码复制
  1. class Game_BattlerBase
  2.   #--------------------------------------------------------------------------
  3.   # ● 获取普通能力
  4.   #--------------------------------------------------------------------------
  5.   alias old_param param
  6.   def param(param_id)
  7.     n = old_param(param_id)
  8.     if (param_id == 0) && (self == $game_party.leader)
  9.       n += $game_variables[99]  #99号是控制增长量的变量,可任意更换
  10.     end
  11.     n
  12.   end
  13. end

点评

多谢指点,虽然目前已经放弃修改队长MHP的做法了(改用独立的新变量判断队伍胜负),但是楼上大大的解答切中要害,并且开拓了思路,再次多谢~  发表于 2013-12-26 14:10
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-17 02:42

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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