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

Project1

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

[已经解决] 自定义了一个属性,怎么把它在脚本里读出来

[复制链接]

Lv2.观梦者

梦石
0
星屑
266
在线时间
122 小时
注册时间
2010-12-23
帖子
179
跳转到指定楼层
1
发表于 2013-6-20 17:11:40 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 双叶GL 于 2013-6-22 02:21 编辑

Undo

貌似只能在

脚本,变量里读,
怎么在脚本里读取这个属性
  1. =begin
  2. #===============================================================================
  3. #                                                N.A.S.T.Y. Extra Stats
  4. #                                  Nelderson's Awesome Scripts To You
  5. # By: Nelderson
  6. # Made On: 12/19/2011
  7. # Last Updated : 3/27/2012

  8. 该脚本来源于
  9. http://forums.rpgmakerweb.com/index.php?/topic/998-nasty-extra-stats/

  10. 发布者/作者?:Member+
  11. #===============================================================================
  12. # Update History:
  13. # - Version 1.1  - Cleaned up some shit, and added enemies xstats for Enemies!
  14. # - 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' />
  15. 在人物备注填写,属性成长
  16. <xstat>
  17. :str => '(level/3.5) + 16',
  18. :con => '(level/5.6) + 12',
  19. :dex => '(level/5.25) + 15 + agi',
  20. :int => '(level/10.5) + 10',
  21. :wis => '(level/10.5) + 10',
  22. :cha => '(level/10.5) + 10',
  23. <xstat_end>

  24.       也可以直接在备注填写固定属性
  25. <xstat>
  26. :str => 15,
  27. :con => 14,
  28. :dex => 13,
  29. :int => 12,
  30. :wis => 11,
  31. :cha => 0,
  32. <xstat_end>

  33. 在武器或护甲的备注里按照如下格式填写可以让该装备增加对应属性
  34. <weapon_xstat: STAT x>
  35. 范例,让装备增加5点‘str’  <weapon_xstat: str 5>
  36. 调用属性:$game_actors[1].xstat.X     例:$game_actors[1].xstat.str
  37. 伤害公式范例:    a.xstat.str * 5
  38. #===============================================================================
  39. =end
  40. module Z26

  41.   STATS = [:力量,:耐力,:灵巧,:敏捷,:魔力,:智力]

  42.   #Default xstat formulas for ACTORS
  43.   #玩家基础属性
  44.   DEFAULT_LEVEL_FORMULA =
  45.                 {
  46.                   :力量 => 1,
  47.                   :耐力 => 1,
  48.                   :灵巧 => 1,
  49.                   :敏捷 => 1,
  50.                   :魔力 => 1,
  51.                   :智力 => 1,
  52.                 }

  53.   #Default xstat formulas for ENEMIES\
  54.   #敌对基础属性
  55.   DEFAULT_FOR_ENEMIES =
  56.                 {
  57.                   :力量 => 1,
  58.                   :耐力 => 1,
  59.                   :灵巧 => 1,
  60.                   :敏捷 => 1,
  61.                   :魔力 => 1,
  62.                   :智力 => 1,
  63.                 }

  64.    def self.actor_level_formulas(actor_id)
  65.           jhh = ""
  66.           strin = $data_actors[actor_id].get_start_end_cache
  67.           strin.each do |i|
  68.                 jhh += i
  69.           end
  70.           return DEFAULT_LEVEL_FORMULA if strin == "" or strin == []
  71.           return eval("{#{jhh}}")
  72.         end

  73.         def self.enemy_stats(enemy_id)
  74.           jhh = ""
  75.           strin = $data_enemies[enemy_id].get_start_end_cache
  76.           strin.each do |i|
  77.                 jhh += i
  78.           end
  79.           return DEFAULT_FOR_ENEMIES if strin == "" or strin == []
  80.           return eval("{#{jhh}}")
  81.         end

  82.   #=============================================================================
  83.   SYMBOLS = []
  84.   for stat in STATS
  85.         SYMBOLS.push(stat)
  86.   end
  87.   Xstats = Struct.new(*SYMBOLS)
  88. end

  89. class Game_Enemy < Game_Battler
  90.   attr_accessor :xstat

  91.   alias z26_enemy_set initialize unless $@
  92.   def initialize(*args)
  93.         z26_enemy_set(*args)
  94.         @xstat = Z26::Xstats.new(*([0]*Z26::STATS.size))
  95.         for stat in Z26::STATS
  96.           z26variate_stats(stat)
  97.         end
  98.   end

  99.   def z26variate_stats(stat)
  100.         return if Z26.enemy_stats(@enemy_id)[stat].nil?
  101.         if Z26.enemy_stats(@enemy_id)[stat].is_a?(String)
  102.           set_in = eval(Z26.enemy_stats(@enemy_id)[stat]).to_i
  103.           eval("@xstat.#{stat} += #{set_in}")
  104.         else
  105.           set_in = Z26.enemy_stats(@enemy_id)[stat]
  106.           @xstat[stat] += set_in
  107.         end
  108.   end
  109. end

  110. class Game_Actor < Game_Battler
  111.   attr_accessor :xstat

  112.   alias z26_s setup unless $@
  113.   def setup(actor_id)
  114.         z26_s(actor_id)
  115.         @xstat = Z26::Xstats.new(*([0]*Z26::STATS.size))
  116.         for item in equips.compact
  117.           z26variate_equip(item)
  118.         end
  119.         for stat in Z26::STATS
  120.           z26variate_stats(stat, @level)
  121.         end
  122.   end

  123.   alias z26_change_equip change_equip
  124.   def change_equip(equip_type, item, test = false)
  125.         last_item = equips[equip_type]
  126.         z26_change_equip(equip_type, item)
  127.         z26variate_equip(item)
  128.         z26variate_equip(last_item, false)
  129.   end

  130.   #=====================#
  131.   ##EDITED BY NELDERSON##
  132.   #=====================#
  133.   def z26variate_equip(item, adding = true)
  134.         return if item.nil?
  135.         for line in item.note.split(/[\r\n]+/).each{ |a|
  136.           case a
  137.           when /<weapon_xstat:[ ](.*)[ ](\d+)>/i
  138.                   if Z26::STATS.include?(eval(":" + $1))
  139.                         if adding
  140.                           eval("@xstat.#{$1} += #{$2}")
  141.                         else
  142.                         eval("@xstat.#{$1} -= #{$2}")
  143.                   end
  144.                 end
  145.           end
  146.           }
  147.         end
  148.   end

  149.   def z26variate_stats(stat, level, adding = true)
  150.         return if Z26.actor_level_formulas(@actor_id)[stat].nil?
  151.         if Z26.actor_level_formulas(@actor_id)[stat].is_a?(String)
  152.           amount = eval(Z26.actor_level_formulas(@actor_id)[stat]).to_i
  153.         else
  154.           amount = Z26.actor_level_formulas(@actor_id)[stat]
  155.         end
  156.         if adding
  157.           eval("@xstat.#{stat} += #{amount}")
  158.         else
  159.           eval("@xstat.#{stat} -= #{amount}")
  160.         end
  161.   end

  162.   alias z26level_up level_up unless $@
  163.   def level_up
  164.         for stat in Z26::STATS
  165.           z26variate_stats(stat, @level, false)
  166.         end
  167.         z26level_up
  168.         for stat in Z26::STATS
  169.           z26variate_stats(stat, @level)
  170.         end
  171.   end
  172. end

  173. class Window_Status < Window_Selectable
  174.   def draw_block3(y)
  175.         draw_parameters(0, y)
  176.         draw_equipments(344, y)#288
  177.         draw_xstat_parameters(172, y)
  178.   end

  179.   def draw_xstat_parameters(x, y)
  180.         @actor.xstat.size.times {|i|
  181.         draw_actor_xstat_param(@actor, x, y + line_height * i, i) }
  182.   end
  183. end

  184. class Window_Base < Window
  185.   def draw_actor_xstat_param(actor, x, y, param_id)
  186.         id = Z26::STATS[param_id]
  187.         change_color(system_color)
  188.         draw_text(x, y, 120, line_height, id.capitalize)
  189.         change_color(normal_color)
  190.         draw_text(x + 120, y, 36, line_height, actor.xstat[id], 2)
  191.   end
  192. end

  193. class RPG::BaseItem
  194.   def get_start_end_cache
  195.         record = false
  196.         temp = []
  197.         self.note.split(/[\r\n]+/).each do |line|
  198.           if line =~ /<xstat>/i
  199.                 record = true
  200.           elsif line =~ /<xstat_end>/i
  201.                 record = false
  202.           end
  203.           if record
  204.                 temp << line
  205.           end
  206.         end
  207.         return nil if temp == ""
  208.         temp.delete_at(0)
  209.         temp
  210.   end
  211. end
复制代码
- -作图太麻烦了,又是PS又是素材的
还不如玩游戏实际- -嗯嗯,娱乐就好!!

=====================
神马都简单,但是需要时间&精力,虽然我时间很多,但是专注一样东西的精力- -
====================

Lv2.观梦者 (暗夜天使)

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

贵宾

2
发表于 2013-6-20 21:22:13 | 只看该作者
不就是$game_actors[x].xstat.力量
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
381 小时
注册时间
2012-8-13
帖子
113
3
发表于 2013-6-20 21:35:24 | 只看该作者
描画指定范围内的自定义属性,比如7-12号(具体坐标可以自行调整):

RUBY 代码复制
  1. for i in 7..12
  2.   draw_actor_xstat_param(@actor, x, y + line_height * (i-7), i)
  3. end
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
266
在线时间
122 小时
注册时间
2010-12-23
帖子
179
4
 楼主| 发表于 2013-6-21 17:08:26 | 只看该作者
tyq4590 发表于 2013-6-20 21:35
描画指定范围内的自定义属性,比如7-12号(具体坐标可以自行调整):

for i in 7..12

= =很抱歉我只是脚本新人,没一个范例的话,你给我,我只知道,这是一个循环定义

但是我不知道怎么开始使用,










回复2L:应该我需要的是在脚本里调用这段属性,直接这样调用没办法显示啊
- -作图太麻烦了,又是PS又是素材的
还不如玩游戏实际- -嗯嗯,娱乐就好!!

=====================
神马都简单,但是需要时间&精力,虽然我时间很多,但是专注一样东西的精力- -
====================
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
381 小时
注册时间
2012-8-13
帖子
113
5
发表于 2013-6-21 18:18:50 | 只看该作者
双叶GL 发表于 2013-6-21 21:08
= =很抱歉我只是脚本新人,没一个范例的话,你给我,我只知道,这是一个循环定义

但是我不知道怎么开始使用, ...

RUBY 代码复制
  1. def draw_xstat_parameters(x, y)
  2.   @actor.xstat.size.times {|i|
  3.   draw_actor_xstat_param(@actor, x, y + line_height * i, i) }
  4. end


这段脚本的意思就是描绘所有的xstat属性,也就是有多少个就显示多少个出来。如果你设置了一个属性但是无法显示的话,那么要么是属性设置有误,要么就是属性添加的过多,超过窗体可以显示的范围了。如果你把工程传上来我可以帮你仔细检查一下看看是什么问题。

评分

参与人数 1星屑 +120 收起 理由
Sion + 120 感谢帮忙

查看全部评分

回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
266
在线时间
122 小时
注册时间
2010-12-23
帖子
179
6
 楼主| 发表于 2013-6-21 20:55:33 | 只看该作者
本帖最后由 双叶GL 于 2013-6-22 11:42 编辑
tyq4590 发表于 2013-6-21 18:18
def draw_xstat_parameters(x, y)
  @actor.xstat.size.times {|i|
  draw_actor_xstat_param(@actor, x, ...


= =3Q,大概知道怎么显示了,



=======原来一开始就是说
   def draw_xstat_parameters(x, y)
      for i in 0..3
        draw_actor_xstat_param(@actor, 32, y + line_height * 0, 0)
        draw_actor_xstat_param(@actor, 64, y + line_height * 1, 1)
    end

显示其中第一个~4个属性,然后在重新定即可

点评

i-7换成i  发表于 2013-6-21 21:22
- -作图太麻烦了,又是PS又是素材的
还不如玩游戏实际- -嗯嗯,娱乐就好!!

=====================
神马都简单,但是需要时间&精力,虽然我时间很多,但是专注一样东西的精力- -
====================
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-4-27 13:27

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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