查看: 2873|回复: 8

[已经解决] 关于状态提高属性

[复制链接]
梦石
0
星屑
2952
在线时间
941 小时
注册时间
2009-1-4
回帖
137
发表于 2016-6-14 13:05:54 | 显示全部楼层 |阅读模式

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

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

×
做一个饰品 装备者最大SP+30 卸下来就无效 这个脚本要怎么写呢 状态法行不行?

评分

参与人数 1星屑 +35 收起 理由
RyanBern + 35 手动认可奖励

查看全部评分

梦石
0
星屑
12161
在线时间
4435 小时
注册时间
2014-4-11
回帖
5616

开拓者

发表于 2016-6-14 13:44:13 | 显示全部楼层
本帖最后由 yang1zhi 于 2016-6-14 19:50 编辑

刚才有点小问题,现在解决了
[pre lang="ruby"]
class Game_Battler
    def maxsp
    n = [[base_maxsp + @maxsp_plus, 0].max, 999999].min
    for i in @states
      n *= $data_states.maxsp_rate / 100.0
      n += ZHUANGTAI::ZTSP  if ZHUANGTAI::ZTSP.include?(i)
    end
    n = [[Integer(n), 0].max, 999999].min
    return n
  end

end

module ZHUANGTAI
#前面是状态ID,后面是加的SP值
  ZTSP = {1=>30,2=>30}
end
[/pre]

点评

还是出错 但是出错的地方是GAME ACTOR那里 我一直开游戏测试的  发表于 2016-6-15 12:35
73号,那就要写73=>30  发表于 2016-6-15 08:07
我的状态是73号所以1=那里要写73吧?  发表于 2016-6-14 23:07
测试的装备上的状态是否是在列表内的状态  发表于 2016-6-14 22:05
你是否有把新写的这个脚本使用。我用默认工程测试过没问题  发表于 2016-6-14 22:04
回复

使用道具 举报

梦石
0
星屑
2952
在线时间
941 小时
注册时间
2009-1-4
回帖
137
 楼主| 发表于 2016-6-15 12:37:45 | 显示全部楼层
yang1zhi 发表于 2016-6-14 13:44
刚才有点小问题,现在解决了

class Game_Battler


回复

使用道具 举报

梦石
0
星屑
80
在线时间
101 小时
注册时间
2011-1-29
回帖
23
发表于 2016-6-15 12:46:28 | 显示全部楼层
本帖最后由 wxlhj860 于 2016-6-15 13:54 编辑

针对出现maxsp未定义情况,多半是因为误删或者新定义脚本的覆盖。楼主最好先用搜索功能检查一下Game_Actor里是否有@sp=maxsp 这一个语句,再进行判断~

另外,在下不太推荐楼主使用状态叠加方式增加最大HP或SP。如果只是实现穿上出现效果,脱下效果消失,可以参考下面:
  1. module RPG
  2.   class Armor
  3.     def description
  4.       description = @description.split(/,hp/)[0]
  5.       return description != nil ? description : ""
  6.     end
  7.     def maxhp
  8.       maxhp = @description.split(/,hp/)[1]
  9.       return maxhp != nil ? maxhp.to_i : 0
  10.     end
  11.   end
  12. end

  13. class Game_Actor < Game_Battler
  14.   def base_maxhp
  15.     n = 0
  16.     armor1 = $data_armors[@armor1_id]
  17.     armor2 = $data_armors[@armor2_id]
  18.     armor3 = $data_armors[@armor3_id]
  19.     armor4 = $data_armors[@armor4_id]
  20.     n += armor1 != nil ? armor1.maxhp : 0
  21.     n += armor2 != nil ? armor2.maxhp : 0
  22.     n += armor3 != nil ? armor3.maxhp : 0
  23.     n += armor4 != nil ? armor4.maxhp : 0
  24.     base = $data_actors[@actor_id].parameters[0, @level]
  25.     return [[n +base,1].max,999999].min
  26.   end
  27. end
复制代码
只需在数据库里各防具的描述后加“,hpXXX“,XXX就是你所需要增加的最大HP。

点评

哦哦 刚刚又试了下有效果了!只是无法考虑如何兼容问题,因为物品分类脚本也是要在后面加符号的  发表于 2016-6-15 16:30
我用了物品分类脚本所以这个脚本不能用了,而且实测也没有这个效果  发表于 2016-6-15 16:25
回复

使用道具 举报

梦石
0
星屑
80
在线时间
101 小时
注册时间
2011-1-29
回帖
23
发表于 2016-6-15 19:02:37 | 显示全部楼层
本帖最后由 wxlhj860 于 2016-6-15 19:21 编辑

可以用的。只需要继续在后面加",hp",再在后面加数值,不要忘了半角逗号分隔的存在,你只是漏了逗号。
当然你不喜欢逗号可以在第4、第8行description.split()括号中的逗号,改成其他符号例如@,这么写为了分隔存在,方便自己看~

点评

@description.split()的做法不建议使用,因为兼容性是个坑。 http://rm.66rpg.com/thread-375515-1-1.html 建议使用这里的技巧1  发表于 2016-6-15 23:59
回复

使用道具 举报

梦石
0
星屑
2952
在线时间
941 小时
注册时间
2009-1-4
回帖
137
 楼主| 发表于 2016-6-15 23:37:37 | 显示全部楼层
wxlhj860 发表于 2016-6-15 19:02
可以用的。只需要继续在后面加",hp",再在后面加数值,不要忘了半角逗号分隔的存在,你只是漏了逗号。
当然 ...


就是这么写的我 但是没效果

点评

这个到底是写到物品说明还是物品名称里……无论哪个我都不行,因为我还用了多个装备栏脚本,同样有符号冲突  发表于 2016-6-15 23:58
不要在意说明 我只是测试数据效果 实际上并没有增加任何HP或SP  发表于 2016-6-15 23:42
回复

使用道具 举报

梦石
0
星屑
80
在线时间
101 小时
注册时间
2011-1-29
回帖
23
发表于 2016-6-16 02:14:29 | 显示全部楼层
感谢RyanBern的点评~脚本还得写得更加严谨,改用正则表达:
  1. module RPG
  2.   class Armor
  3.     MaxHP = /,hp\[(\d+)\]/
  4.     unless method_defined? :description_maxhp
  5.       alias description_maxhp :description
  6.       def description
  7.         return description_maxhp.gsub(MaxHP, "")
  8.       end
  9.     end
  10.     def maxhp
  11.       MaxHP =~ @description
  12.       return $1.to_i
  13.     end
  14.   end
  15. end

  16. class Game_Actor < Game_Battler
  17.   def base_maxhp
  18.     n = 0
  19.     armor1 = $data_armors[@armor1_id]
  20.     armor2 = $data_armors[@armor2_id]
  21.     armor3 = $data_armors[@armor3_id]
  22.     armor4 = $data_armors[@armor4_id]
  23.     n += armor1 != nil ? armor1.maxhp : 0
  24.     n += armor2 != nil ? armor2.maxhp : 0
  25.     n += armor3 != nil ? armor3.maxhp : 0
  26.     n += armor4 != nil ? armor4.maxhp : 0
  27.     base = $data_actors[@actor_id].parameters[0, @level]
  28.     return [[n + base,1].max,999999].min
  29.   end
  30. end
复制代码
在描述后使用“,hp[XXX]”,XXX为设定数值。

点评

仍然没效果 能截图说明到底具体怎么写吗  发表于 2016-6-16 12:55

评分

参与人数 1梦石 +1 收起 理由
RyanBern + 1 认可答案

查看全部评分

回复

使用道具 举报

梦石
0
星屑
80
在线时间
101 小时
注册时间
2011-1-29
回帖
23
发表于 2016-6-16 19:04:31 | 显示全部楼层
你再试试?

Project1.rar

242.78 KB, 下载次数: 73

点评

还是不行,我用了物品分类所以物品描述后面是多了一个符号的,我觉得是不兼容  发表于 2016-6-16 21:37
回复

使用道具 举报

梦石
0
星屑
1788
在线时间
1313 小时
注册时间
2012-8-4
回帖
724
发表于 2016-6-16 23:27:09 | 显示全部楼层
以前好像解决过有点类似的,这是帖子链接。
《又来请教关于脚本冲突的问题了》
https://rpg.blue/thread-383923-1-1.html
能帮上忙最好,不能的话你把这几个系统弄个简单的附件上来应该会有人帮忙调试好的

评分

参与人数 1梦石 +1 收起 理由
RyanBern + 1 我猜不能

查看全部评分

回复

使用道具 举报

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

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部