查看: 1364|回复: 11

[已经解决] 【已解决】如何根据Game_Troop中敌人名字后缀改变敌人属性

[复制链接]
梦石
0
星屑
3265
在线时间
676 小时
注册时间
2018-8-8
回帖
13
发表于 2023-11-28 11:07:53 | 显示全部楼层 |阅读模式

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

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

×
本帖最后由 zxz0762@163.com 于 2023-12-3 10:10 编辑

Game_Troop中敌人名字后缀改成性格之类的词缀,根据词缀的不同同一敌人属性会有偏差,请教下面写法为何不生效。
class Game_Troop
  alias pe_setup setup
  def setup(troop_id)
    # 根据敌人名字后缀的字表修改敌人属性
    @enemies.each do |enemy|
    suffix = enemy.name[/\[(.*?)\]/, 1]# 获取敌人名字后缀的文字描述
    modify_enemy_attributes(enemy, suffix) if suffix
    pe_setup(troop_id)
  end
end

# 修改敌人属性的方法
  def modify_enemy_attributes(enemy, suffix)
    case suffix
    when "(暴躁)"
      enemy.params[0] += 20 # 最大HP增加20
      enemy.params[1] += 20 # 最大MP增加20
      enemy.params[2] += 20 # 物理攻击增加20
      enemy.params[3] += 20 # 物理防御增加20
      enemy.params[4] += 10 # 魔法攻击增加10
      enemy.params[5] += 10 # 魔法防御增加10
      enemy.params[6] += 10 # 敏捷值增加10
      enemy.params[7] += 10 # 幸运值增加10
    when "(邪恶)"
。。。。。。
   when "(胆小)"
。。。。。。
    else
    end
  end
end
梦石
0
星屑
1394
在线时间
989 小时
注册时间
2011-5-11
回帖
418
发表于 2023-11-28 21:30:20 | 显示全部楼层
看了一下你的顺序 弄反了
  1. alias pe_setup setup
  2.   def setup(troop_id)

  3.     pe_setup(troop_id)#先初始化,否则@enemies为空
  4.     # 根据敌人名字后缀的字表修改敌人属性
  5.     @enemies.each do |enemy|
  6.     suffix = enemy.name[/\[(.*?)\]/, 1]# 获取敌人名字后缀的文字描述
  7.     modify_enemy_attributes(enemy, suffix) if suffix
  8.   end
复制代码

没具体测试过,大概方向是这样
http://rpg.blue/static/image/smiley/yct/A059.gif中国字认识都不到一半,哪的心情学英语呀!
回复

使用道具 举报

梦石
0
星屑
152
在线时间
198 小时
注册时间
2016-7-13
回帖
43
发表于 2023-11-29 08:39:28 | 显示全部楼层
本帖最后由 freeman2008 于 2023-11-29 10:36 编辑
345912390 发表于 2023-11-28 21:30
看了一下你的顺序 弄反了

没具体测试过,大概方向是这样


改好顺序还是无效,还有其它原因吗?
[url=https://rpg.blue/thread-395191-1-1.html]https://rpg.blue/data/attachment/forum/201610/29/153606ps34xuimwuykiyv7.jpg[/url]
回复

使用道具 举报

梦石
0
星屑
6295
在线时间
799 小时
注册时间
2019-1-20
回帖
223
发表于 2023-11-29 11:17:31 | 显示全部楼层
本帖最后由 srwjrevenger 于 2023-11-29 12:25 编辑

刚刚发现自己搞错想回来改,就发现你回报了... ...
先像楼上说的改一下
之后名字要这样哦 史莱姆[暴躁]
when "(暴躁)" --> when "暴躁"
enemy.params[0]  -->  enemy.param(0)  这个不能直接改它,只是提醒你写错了
用 enemy.add_param(对应能力id, 数值)



点评

感谢。  发表于 2023-12-3 09:26
思路不要反了,应该先判断附加哪一个一个,之后再给词缀,楼下给了一个,应该不用了吧?  发表于 2023-12-2 23:43
这样写只能读取到数据库里敌人名字,要怎么写才能读到脚本Game_Troop里的LETTER_TABLE = []里的修改过的词缀呢?  发表于 2023-12-2 13:34

提高解决问题的方法:
查看对应版本的帮助文件或者默认脚本中可能相似的部分 看有没有思路能照搬(不是)
改变问题为更有可能的,常见的,系统性的 如:天气自动变化成下雨→天气系统 要多想几种可能
使用论坛的搜索功能查找相关问题 咦?这跟我想的不一样啊!讨厌啦~\(≧□≦)/~啦啦啦
清楚说明实际上你想解决的问题  想看坛友的女装,想看!  
脚本自己有改过的地方要尽量标明  提高除BUG效率 ... ...
脚本有问题但不是默认脚本的要全部贴出来 大胆点,尽情发,我说的是女装照!
三包原则:包有BUG,包甩锅,包咕咕 长期下线,急事换人!难事换人!啥事都换人!换人换人换人!!!
回复

使用道具 举报

梦石
0
星屑
152
在线时间
198 小时
注册时间
2016-7-13
回帖
43
发表于 2023-11-29 11:48:00 | 显示全部楼层
srwjrevenger 发表于 2023-11-29 11:17
when "(暴躁)" -> when "暴躁"
enemy.params[0]  ->  enemy.param(0) 然而这是读取数据库的,无效... ...

新建了工程测试,还是无效。when后面不改属性,改其它来测试都没生效
[url=https://rpg.blue/thread-395191-1-1.html]https://rpg.blue/data/attachment/forum/201610/29/153606ps34xuimwuykiyv7.jpg[/url]
回复

使用道具 举报

梦石
0
星屑
152
在线时间
198 小时
注册时间
2016-7-13
回帖
43
发表于 2023-11-29 13:55:41 | 显示全部楼层
srwjrevenger 发表于 2023-11-29 11:17
刚刚发现自己搞错想回来改,就发现你回报了... ...
先像楼上说的改一下
之后名字要这样哦 史莱姆[暴躁]

感谢,在史莱姆名字后面加性格词缀是可以的,但我想到脚本Game_Troop里的LETTER_TABLE = []里的这个表里设置性格词缀,效果是同一敌群有随机的性格,可以给同一敌群的几个敌人不同属性

点评

呜呼~才发现你不是楼主(捂脸)  发表于 2023-12-2 11:40
[url=https://rpg.blue/thread-395191-1-1.html]https://rpg.blue/data/attachment/forum/201610/29/153606ps34xuimwuykiyv7.jpg[/url]
回复

使用道具 举报

梦石
0
星屑
1394
在线时间
989 小时
注册时间
2011-5-11
回帖
418
发表于 2023-12-2 21:36:57 | 显示全部楼层
本帖最后由 345912390 于 2023-12-2 21:57 编辑
freeman2008 发表于 2023-11-29 13:55
感谢,在史莱姆名字后面加性格词缀是可以的,但我想到脚本Game_Troop里的LETTER_TABLE = []里的这个表里 ...


QQ截图20231202211840.png
[pre lang="ruby"]class Game_Enemy < Game_Battler
  #前缀名
  PREFIX_TABLE = ['','【金】•','【木】•','【火】•','【水】•','【土】•']
  #前缀属性
  PREFIX_PARAMS=[[0,0,0,0,0,0,0,0],
                                [97,0,0,0,0,0,0,0],
                                [75,200,0,0,0,0,0,0],
                                [43,0,70,0,0,0,0,0],
                                [28,0,0.5,0,0,0,0,0],
                                [39,0,0,0,0,0,0,20],]
  #--------------------------------------------------------------------------
  # ● 定义实例变量
  #--------------------------------------------------------------------------
  attr_accessor :prefix_index #前缀序号
  
  alias old_initialize initialize
  def initialize(index, enemy_id)
   old_initialize(index, enemy_id)
   @prefix_index=rand(PREFIX_TABLE.size)if @prefix_index==nil
   #p @prefix_index
  end
  #--------------------------------------------------------------------------
  # ● 获取显示名称
  #--------------------------------------------------------------------------
  alias old_name name
  def name
    PREFIX_TABLE[@prefix_index]+@original_name + (@plural ? letter : "")
  end
   #--------------------------------------------------------------------------
  # ● 获取普通能力的基础值
  #--------------------------------------------------------------------------
  alias old_param_base param_base
  def param_base(param_id)
    @prefix_index=rand(PREFIX_TABLE.size) if @prefix_index==nil
      #return enemy.params[param_id]
   
     if PREFIX_PARAMS[@prefix_index][param_id].abs<1 then #按百分比计算
        return enemy.params[param_id]*(1+PREFIX_PARAMS[@prefix_index][param_id])
      else #按实际值计算
        return enemy.params[param_id]+PREFIX_PARAMS[@prefix_index][param_id]
      end
   
    #return enemy.params[param_id]
  end
end[/pre]

点评

感谢。  发表于 2023-12-3 09:25
http://rpg.blue/static/image/smiley/yct/A059.gif中国字认识都不到一半,哪的心情学英语呀!
回复

使用道具 举报

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

本版积分规则

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

在本版发帖返回顶部