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

Project1

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

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

[复制链接]

Lv3.寻梦者

梦石
0
星屑
2186
在线时间
793 小时
注册时间
2009-1-4
帖子
172
跳转到指定楼层
1
发表于 2016-6-14 13:05:54 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

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

评分

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

查看全部评分

Lv4.逐梦者

梦石
0
星屑
12157
在线时间
4435 小时
注册时间
2014-4-11
帖子
5955

开拓者

2
发表于 2016-6-14 13:44:13 | 只看该作者
本帖最后由 yang1zhi 于 2016-6-14 19:50 编辑

刚才有点小问题,现在解决了
RUBY 代码复制
  1. class Game_Battler
  2.     def maxsp
  3.     n = [[base_maxsp + @maxsp_plus, 0].max, 999999].min
  4.     for i in @states
  5.       n *= $data_states[i].maxsp_rate / 100.0
  6.       n += ZHUANGTAI::ZTSP[i]  if ZHUANGTAI::ZTSP.include?(i)
  7.     end
  8.     n = [[Integer(n), 0].max, 999999].min
  9.     return n
  10.   end
  11.  
  12. end
  13.  
  14. module ZHUANGTAI
  15. #前面是状态ID,后面是加的SP值
  16.   ZTSP = {1=>30,2=>30}
  17. end

点评

还是出错 但是出错的地方是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
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
2186
在线时间
793 小时
注册时间
2009-1-4
帖子
172
3
 楼主| 发表于 2016-6-15 12:37:45 | 只看该作者
yang1zhi 发表于 2016-6-14 13:44
刚才有点小问题,现在解决了

class Game_Battler


回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
80
在线时间
101 小时
注册时间
2011-1-29
帖子
23
4
发表于 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
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
80
在线时间
101 小时
注册时间
2011-1-29
帖子
23
5
发表于 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
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
2186
在线时间
793 小时
注册时间
2009-1-4
帖子
172
6
 楼主| 发表于 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
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
80
在线时间
101 小时
注册时间
2011-1-29
帖子
23
7
发表于 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 认可答案

查看全部评分

回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
80
在线时间
101 小时
注册时间
2011-1-29
帖子
23
8
发表于 2016-6-16 19:04:31 | 只看该作者
你再试试?

Project1.rar

242.78 KB, 下载次数: 73

点评

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

使用道具 举报

Lv3.寻梦者

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

评分

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

查看全部评分

回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-30 09:43

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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