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

Project1

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

[已经解决] 请教大神关于多属性的脚本

[复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
108 小时
注册时间
2013-10-22
帖子
60
跳转到指定楼层
1
发表于 2015-1-16 21:40:58 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 yunxin0111 于 2015-1-16 21:49 编辑
  1. <Update History:
  2. # - Version 1.1  - Cleaned up some shit, and added enemies xstats for Enemies!
  3. # - Version 1.0  - Initial release, made for the shit of it <img src='http://forums.rpgmakerweb.com/public/style_emoticons/<#EMO_DIR#>/tongue.png' class='bbc_emoticon' alt=':P' />
  4. 在人物备注填写,属性成长
  5. <xstat>
  6. :str => '(level/3.5) + 16',
  7. :con => '(level/5.6) + 12',
  8. :dex => '(level/5.25) + 15 + agi',
  9. :int => '(level/10.5) + 10',
  10. :wis => '(level/10.5) + 10',
  11. :cha => '(level/10.5) + 10',
  12. <xstat_end>

  13.       也可以直接在备注填写固定属性
  14. <xstat>
  15. :str => 15,
  16. :con => 14,
  17. :dex => 13,
  18. :int => 12,
  19. :wis => 11,
  20. :cha => 0,
  21. <xstat_end>

  22. 在武器或护甲的备注里按照如下格式填写可以让该装备增加对应属性
  23. <weapon_xstat: STAT x>
  24. 范例,让装备增加5点‘str’  <weapon_xstat: str 5>
  25. 调用属性:$game_actors[1].xstat.X     例:$game_actors[1].xstat.str
  26. 伤害公式范例:    a.xstat.str * 5
  27. #===============================================================================
  28. =end
  29. module Z26
  30.   #[:力量,:耐力,:灵巧,:敏捷,:魔力,:才智]
  31.   STATS = [:力量,:耐力,:灵巧,:敏捷,:魔力,:才智]

  32.   #Default xstat formulas for ACTORS
  33.   #玩家基础属性
  34.   DEFAULT_LEVEL_FORMULA =
  35.                 {
  36.                   :力量 => 1,
  37.                   :耐力 => 1,
  38.                   :灵巧 => 1,
  39.                   :敏捷 => 1,
  40.                   :魔力 => 1,
  41.                   :才智 => 1,
  42.                 }

  43.   #Default xstat formulas for ENEMIES\
  44.   #敌对基础属性
  45.   DEFAULT_FOR_ENEMIES =
  46.                 {
  47.                   :力量 => 1,
  48.                   :耐力 => 1,
  49.                   :灵巧 => 1,
  50.                   :敏捷 => 1,
  51.                   :魔力 => 1,
  52.                   :智力 => 1,
  53.                 }

  54.    def self.actor_level_formulas(actor_id)
  55.           jhh = ""
  56.           strin = $data_actors[actor_id].get_start_end_cache
  57.           strin.each do |i|
  58.                 jhh += i
  59.           end
  60.           return DEFAULT_LEVEL_FORMULA if strin == "" or strin == []
  61.           return eval("{#{jhh}}")
  62.         end

  63.         def self.enemy_stats(enemy_id)
  64.           jhh = ""
  65.           strin = $data_enemies[enemy_id].get_start_end_cache
  66.           strin.each do |i|
  67.                 jhh += i
  68.           end
  69.           return DEFAULT_FOR_ENEMIES if strin == "" or strin == []
  70.           return eval("{#{jhh}}")
  71.         end

  72.   #=============================================================================
  73.   SYMBOLS = []
  74.   for stat in STATS
  75.         SYMBOLS.push(stat)
  76.   end
  77.   Xstats = Struct.new(*SYMBOLS)
  78. end

  79. class Game_Enemy < Game_Battler
  80.   attr_accessor :xstat

  81.   alias z26_enemy_set initialize unless $@
  82.   def initialize(*args)
  83.         z26_enemy_set(*args)
  84.         @xstat = Z26::Xstats.new(*([0]*Z26::STATS.size))
  85.         for stat in Z26::STATS
  86.           z26variate_stats(stat)
  87.         end
  88.          
  89.   end

  90.   def z26variate_stats(stat)
  91.         return if Z26.enemy_stats(@enemy_id)[stat].nil?
  92.         if Z26.enemy_stats(@enemy_id)[stat].is_a?(String)
  93.           set_in = eval(Z26.enemy_stats(@enemy_id)[stat]).to_i
  94.           eval("@xstat.#{stat} += #{set_in}")
  95.         else
  96.           set_in = Z26.enemy_stats(@enemy_id)[stat]
  97.           @xstat[stat] += set_in
  98.         end
  99.   end
  100. end

  101. class Game_Actor < Game_Battler
  102.   attr_accessor :xstat

  103.   alias z26_s setup unless $@
  104.   def setup(actor_id)
  105.         z26_s(actor_id)
  106.         @xstat = Z26::Xstats.new(*([0]*Z26::STATS.size))
  107.         for item in equips.compact
  108.           z26variate_equip(item)
  109.         end
  110.         for stat in Z26::STATS
  111.           z26variate_stats(stat, @level)
  112.         end
  113.   end

  114.   alias z26_change_equip change_equip
  115.   def change_equip(equip_type, item, test = false)
  116.         last_item = equips[equip_type]
  117.         z26_change_equip(equip_type, item)
  118.         z26variate_equip(item)
  119.         z26variate_equip(last_item, false)
  120.   end

  121.   #=====================#
  122.   ##EDITED BY NELDERSON##
  123.   #=====================#
  124.   def z26variate_equip(item, adding = true)
  125.         return if item.nil?
  126.         for line in item.note.split(/[\r\n]+/).each{ |a|
  127.           case a
  128.           when /<weapon_xstat:[ ](.*)[ ](\d+)>/i
  129.                   if Z26::STATS.include?(eval(":" + $1))
  130.                         if adding
  131.                           eval("@xstat.#{$1} += #{$2}")
  132.                         else
  133.                         eval("@xstat.#{$1} -= #{$2}")
  134.                   end
  135.                 end
  136.           end
  137.           }
  138.         end
  139.   end

  140.   def z26variate_stats(stat, level, adding = true)
  141.         return if Z26.actor_level_formulas(@actor_id)[stat].nil?
  142.         if Z26.actor_level_formulas(@actor_id)[stat].is_a?(String)
  143.           amount = eval(Z26.actor_level_formulas(@actor_id)[stat]).to_i
  144.         else
  145.           amount = Z26.actor_level_formulas(@actor_id)[stat]
  146.         end
  147.         if adding
  148.           eval("@xstat.#{stat} += #{amount}")
  149.         else
  150.           eval("@xstat.#{stat} -= #{amount}")
  151.         end
  152.   end

  153.   alias z26level_up level_up unless $@
  154.   def level_up
  155.         for stat in Z26::STATS
  156.           z26variate_stats(stat, @level, false)
  157.         end
  158.         z26level_up
  159.         for stat in Z26::STATS
  160.           z26variate_stats(stat, @level)
  161.         end
  162.   end
  163. end

  164. class Window_Status < Window_Selectable
  165.   def draw_block3(y)                    #绘制背景
  166.         draw_parameters(0, y)             #绘制区域3
  167.         draw_equipments(344, y)#288  #344        
  168.         draw_xstat_parameters(172, y)
  169.   end

  170.   def draw_xstat_parameters(x, y) #xstat区域绘制
  171.         @actor.xstat.size.times {|i|   #刷新 ?
  172.         draw_actor_xstat_param(@actor, x, y + line_height * i, i) }
  173.   end
  174. end

  175. class Window_Base < Window
  176.   def draw_actor_xstat_param(actor, x, y, param_id) #绘制能力值
  177.         id = Z26::STATS[param_id]
  178.         change_color(system_color)
  179.         draw_text(x, y, 120, line_height, id.capitalize) #
  180.         change_color(normal_color)
  181.         draw_text(x + 120, y, 36, line_height, actor.xstat[id], 2)
  182.         
  183.   end
  184. end

  185. class RPG::BaseItem
  186.   def get_start_end_cache
  187.         record = false
  188.         temp = []
  189.         self.note.split(/[\r\n]+/).each do |line|
  190.           if line =~ /<xstat>/i
  191.                 record = true
  192.           elsif line =~ /<xstat_end>/i
  193.                 record = false
  194.           end
  195.           if record
  196.                 temp << line
  197.           end
  198.         end
  199.         return nil if temp == ""
  200.         temp.delete_at(0)
  201.         temp
  202.   end
  203. end
复制代码
>

这个是从论坛找的脚本,但是在使用的时候,在人物备注添加上面的
<xstat>
:str => 15,
:con => 14,
:dex => 13,
:int => 12,
:wis => 11,
:cha => 0,
<xstat_end>,发现人物状态栏力量等属性还是0没变,然后试了一下装备加属性也不行,试下升级也不行,然后尝试看看绘图方面的程序,也没发现啥问题,请教大神这是为啥属性显示是0,而不是随着升级变动。

Lv3.寻梦者

闇吼者の災悪眷族
不気味存在締造者

梦石
0
星屑
1366
在线时间
2881 小时
注册时间
2014-7-29
帖子
6491
2
发表于 2015-1-16 22:37:09 | 只看该作者
你自己命名的不是中文的么……
人物备注却写的英文……

评分

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

查看全部评分

回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
9280
在线时间
2504 小时
注册时间
2011-5-20
帖子
15389

开拓者

3
发表于 2015-1-16 23:42:00 | 只看该作者
因为你把设置部分改了···要用
  1. <xstat>
  2. :力量 => XXX,
  3. <xstat_end>
复制代码
···
[img]http://service.t.sina.com.cn/widget/qmd/5339802982/c02e16bd/7.png
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
108 小时
注册时间
2013-10-22
帖子
60
4
 楼主| 发表于 2015-1-17 10:44:54 | 只看该作者
恩 感谢 已解决了。
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

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

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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