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

Project1

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

[已经过期] 关于击破数计算器 Ver.1.0.0两个方法调用的问题

[复制链接]

Lv2.观梦者

梦石
0
星屑
275
在线时间
81 小时
注册时间
2016-8-25
帖子
19
跳转到指定楼层
1
发表于 2016-8-28 13:17:58 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

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

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

x
小弟又来求教了,想在游戏中设置狩猎任务,所以需要用到击破数计算器
input_defeat_count 及 draw_defeat_count 兩個method:

#・窗口显示设定
#Window_Status备注记录内容。
#<记述>
# draw_defeat_count(actor_id, enemy_id, x, y)
#   actor_id   :对象角色ーID(为0则指代全体角色)
#   enemy_id   :对象敌人ーID(为0则指定全体敌人)
#   x      :横方向表示位置
#   y      :纵方向表示位置
#------------------------------------------------------------------------------
#・变量记录
#在事件设定中的脚本作如下格式的描述。
#<记述>
# input_defeat_count(actor_id, enemy_id, variable_id)
#   actor_id   :对象角色ーID(为0则指代全体角色)
#   enemy_id   :对象敌人ーID(为0则指定全体敌人)
#   variable_id :击破数记录变量
#==============================================================================

先说draw defeat count, 小弟发现成功调用了这个method后没有正确显示文字,
Script如下:
  1. class Window_Base < Window
  2.   #--------------------------------------------------------------------------
  3.   # ● 指定变量时角色击破数表示
  4.   #       actor_id      :对象角色ー(为0则指代全体角色)
  5.   #       enemy_id      :对象敌人ー(为0则指代全体敌人)
  6.   #       x             :横方向表示位置
  7.   #       y             :纵方向表示位置
  8.   #--------------------------------------------------------------------------
  9.   def draw_defeat_count(actor_id, enemy_id, x, y)
  10.     p($game_actors.defeat(enemy_id, actor_id), 2)
  11.     draw_text(x, y, 200, line_height, $game_actors.defeat(enemy_id, actor_id))
  12.     p("draw_defeat_count called.")
  13.   end
  14. end
复制代码

在任务列表中调用draw defeat count:
  1. def refresh_cond
  2.     change_color(system_color)
  3.     draw_text(self.ox+20, line_height, 120, line_height, "進展")
  4.     draw_defeat_count(0, 0, 300, 20)
  5.     change_color(normal_color)
  6.    
  7.     y = line_height * 2
  8.     for i in [email protected]
  9.       case @data.condition.type
  10.       when Quest::ITEM, Quest::WEAPON, Quest::ARMOR
  11.         draw_item_name(@data.condition.obj, self.ox+30, y)
  12.         draw_condition_num(i, y)
  13.       when Quest::MONEY
  14.         txt = "#{@data.condition.obj_name}(" + @data.condition.num.to_s
  15.         draw_text(self.ox+30, y, 240, line_height, txt)
  16.         x = 30 + self.contents.text_size(txt).width + 4
  17.         change_color(system_color)
  18.         draw_text(self.ox+x, y, 80, line_height, $data_system.currency_unit)
  19.         change_color(normal_color)
  20.         x += self.contents.text_size($data_system.currency_unit).width + 4
  21.         draw_text(self.ox+x, y, 40, line_height, ")")
  22.         draw_condition(i, y)
  23.       when Quest::SW, Quest::EV, Quest::QUEST_T, Quest::QUEST_F, Quest::CLASS, Quest::SCRIPT
  24.         draw_text(self.ox+30, y, 240, line_height, @data.condition.obj_name)
  25.         draw_condition(i, y)
  26.       when Quest::VAL
  27.         draw_text(self.ox+30, y, 240, line_height, @data.condition.obj_name)
  28.         draw_condition_num(i, y)
  29.       when Quest::LEVEL
  30.         draw_text(self.ox+30, y, 240, line_height, @data.condition.obj_name)
  31.         #x = 30 + self.contents.text_size(@data.condition.obj.name).width + 4
  32.         #draw_actor_level(@data.condition.obj, self.ox+x, y)
  33.         draw_condition_num(i, y)
  34.       when Quest::ENEMY
  35.         draw_text(self.ox+30, y, 240, line_height, @data.condition.obj_name)
  36.         draw_condition_num(i, y)
  37.       when Quest::ACTOR
  38.         draw_actor_name(@data.condition.obj, self.ox+30, y)
  39.         draw_condition(i, y)
  40.       when Quest::SKILL
  41.         draw_item_name(@data.condition.obj, self.ox+30, y)
  42.         draw_condition(i, y)
  43.       else;   next # 上述以外的状况不再描述
  44.       end
  45.       #
  46.       y += line_height
  47.     end
  48.   end
复制代码

测试结果如下:



在图中可看见成功调用了method及也能获得数值0, 2
但为什么不能显示在画面上呢?

而另外一个问题就是input_defeat_count不知道应该在那调用
完全没有头绪.....

希望可以有高手解答......爬文我已经爬了数天, 但也没什么头绪,
如果可以有一个简单的范本就最好了~其实小弟不太清楚这个script整个击杀怪物的流程具体究竟如何设置


Lv5.捕梦者 (暗夜天使)

只有笨蛋才会看到

梦石
1
星屑
21850
在线时间
9439 小时
注册时间
2012-6-19
帖子
7120

开拓者短篇九导演组冠军

2
发表于 2016-8-28 13:35:27 | 只看该作者
不显示内容的问题,建议你直接更改一下draw_text的坐标(例如改成和进展那个文字相同的坐标)然后试试看能否描绘

另外一个,建议你附上完整的脚本
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
275
在线时间
81 小时
注册时间
2016-8-25
帖子
19
3
 楼主| 发表于 2016-8-28 13:53:46 | 只看该作者
喵呜喵5 发表于 2016-8-28 13:35
不显示内容的问题,建议你直接更改一下draw_text的坐标(例如改成和进展那个文字相同的坐标)然后试试看能 ...

先谢谢喵大的回答, 其实显示文字应该不是座标问题,
因为我试过将
def draw_defeat_count中的
draw_text(x, y, 200, line_height, $game_actors.defeat(enemy_id, actor_id))
改成
draw_text(x, y, 200, line_height, "hello")
这样子有成功显示"hello"的文字,

另外再问一下完整脚本是直接上传Scripts.rvdata2
还是选上述有关连那些脚本一整份上传?
回复 支持 反对

使用道具 举报

Lv5.捕梦者 (暗夜天使)

只有笨蛋才会看到

梦石
1
星屑
21850
在线时间
9439 小时
注册时间
2012-6-19
帖子
7120

开拓者短篇九导演组冠军

4
发表于 2016-8-28 14:01:52 | 只看该作者
tonylai2003049 发表于 2016-8-28 13:53
先谢谢喵大的回答, 其实显示文字应该不是座标问题,
因为我试过将
def draw_defeat_count中的

说的上传脚本是说附上你的 击破数计算器 脚本
你一楼给的 input_defeat_count 从已给的信息我都看不出这个方法是在做什么用的……

点评

显示原因貌似找到了...好像是调用draw_text时参数错误..?  发表于 2016-8-28 14:19
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
275
在线时间
81 小时
注册时间
2016-8-25
帖子
19
5
 楼主| 发表于 2016-8-28 14:07:19 | 只看该作者
本帖最后由 tonylai2003049 于 2016-8-28 14:08 编辑
喵呜喵5 发表于 2016-8-28 14:01
说的上传脚本是说附上你的 击破数计算器 脚本
你一楼给的 input_defeat_count 从已给的信息我都看不出这 ...

啊...对对对......
太多代码都忘记了那些需要上传了。
整个任务击破数代码在是这个:


  1. #==============================================================================
  2. # ■ VXAce-RGSS3-6 击破数计算器 [Ver.1.0.0]         by Claimh  汉化:疾风怒涛
  3. #------------------------------------------------------------------------------
  4. # 各角色击倒敌人数量计算。
  5. #------------------------------------------------------------------------------
  6. #・窗口显示设定
  7. #Window_Status备注记录内容。
  8. #<记述>
  9. # draw_defeat_count(actor_id, enemy_id, x, y)
  10. #   actor_id   :对象角色ーID(为0则指代全体角色)
  11. #   enemy_id   :对象敌人ーID(为0则指定全体敌人)
  12. #   x      :横方向表示位置
  13. #   y      :纵方向表示位置
  14. #------------------------------------------------------------------------------
  15. #・变量记录
  16. #在事件设定中的脚本作如下格式的描述。
  17. #<记述>
  18. # input_defeat_count(actor_id, enemy_id, variable_id)
  19. #   actor_id   :对象角色ーID(为0则指代全体角色)
  20. #   enemy_id   :对象敌人ーID(为0则指定全体敌人)
  21. #   variable_id :击破数记录变量
  22. #==============================================================================

  23. module DefeatCounter ## 与其他脚本合并使用
  24.   #--------------------------------------------------------------------------
  25.   # ● 指定角色的击破数
  26.   #       actor_id      :对象角色ーID(为0则指代全体角色)
  27.   #       enemy_id      :对象敌人ーID(为0则指定全体敌人)
  28.   #--------------------------------------------------------------------------
  29.   def self.defeat_count(actor_id=0, enemy_id=0)
  30.     return $game_actors.defeat(enemy_id, actor_id)
  31.   end
  32. end

  33. class Game_Actor < Game_Battler
  34.   #--------------------------------------------------------------------------
  35.   # ● object初期化
  36.   #--------------------------------------------------------------------------
  37.   alias initialize_defeat_count initialize
  38.   def initialize(actor_id)
  39.     initialize_defeat_count(actor_id)
  40.     [url=home.php?mod=space&uid=376319]@Defeat[/url] = {}
  41.   end
  42.   #--------------------------------------------------------------------------
  43.   # ● 击破数取得
  44.   #--------------------------------------------------------------------------
  45.   def defeat(enemy_id=0)
  46.     return defeat_all if enemy_id == 0
  47.     @defeat[enemy_id] = 0 unless @defeat.keys.include?(enemy_id)
  48.     return @defeat[enemy_id]
  49.   end
  50.   #--------------------------------------------------------------------------
  51.   # ● 击破数取得
  52.   #--------------------------------------------------------------------------
  53.   def defeat_all
  54.     @defeat.keys.inject(0) { |n, id| n += @defeat[id] }
  55.   end
  56.   #--------------------------------------------------------------------------
  57.   # ● 击破数计算
  58.   #--------------------------------------------------------------------------
  59.   def defeat_cnt(enemy_id)
  60.     return if enemy_id == 0
  61.     @defeat[enemy_id] = 0 unless @defeat.keys.include?(enemy_id)
  62.     @defeat[enemy_id] += 1
  63.   end
  64. end

  65. class Game_Actors
  66.   #--------------------------------------------------------------------------
  67.   # ● 击破数取得
  68.   #--------------------------------------------------------------------------
  69.   def defeat(enemy_id=0, actor_id=0)
  70.     return defeat_all(enemy_id) if actor_id == 0
  71.     return self.[](actor_id).defeat(enemy_id)
  72.   end
  73.   #--------------------------------------------------------------------------
  74.   # ● 击破数取得
  75.   #--------------------------------------------------------------------------
  76.   def defeat_all(enemy_id=0)
  77.     @data.inject(0) { |n, actor| n += (actor.nil? ? 0 : actor.defeat(enemy_id)) }
  78.   end
  79. end

  80. #==============================================================================
  81. # ■ Game_Battler
  82. #==============================================================================
  83. class Game_Battler < Game_BattlerBase
  84.   #--------------------------------------------------------------------------
  85.   # ● 伤害处理
  86.   #    在调用之前 @result.hp_damage @result.mp_damage @result.hp_drain
  87.   #    @result.mp_drain 已被设置。
  88.   #--------------------------------------------------------------------------
  89.   alias execute_damage_defeat execute_damage
  90.   def execute_damage(user)
  91.     execute_damage_defeat(user)
  92.     return if actor? or !dead? or user.enemy?
  93.     return if $game_troop.enable_dead_count?(self.index)
  94.     $game_troop.defeat_dead_count(self.index)
  95.     user.defeat_cnt(self.enemy_id)
  96.   end
  97. end


  98. #==============================================================================
  99. # ■ Game_Troop
  100. #==============================================================================
  101. class Game_Troop < Game_Unit
  102.   #--------------------------------------------------------------------------
  103.   # ● 建立[set up]
  104.   #--------------------------------------------------------------------------
  105.   alias setup_defeat setup
  106.   def setup(troop_id)
  107.     setup_defeat(troop_id)
  108.     @enemy_defeat = []
  109.   end
  110.   #--------------------------------------------------------------------------
  111.   # ● 击破時的计算
  112.   #--------------------------------------------------------------------------
  113.   def defeat_dead_count(index)
  114.     @enemy_defeat[index] = true
  115.   end
  116.   #--------------------------------------------------------------------------
  117.   # ● 已完成计算?
  118.   #--------------------------------------------------------------------------
  119.   def enable_dead_count?(index)
  120.     @enemy_defeat[index] || false
  121.   end
  122. end


  123. class Game_Interpreter
  124.   #--------------------------------------------------------------------------
  125.   # ● 指定变量时角色击破数储存
  126.   #       actor_id      :对象角色ー(为0则指代全体角色)
  127.   #       enemy_id      :对象敌人ー(为0则指代全体敌人)
  128.   #       variable_id   :击破数存储的变量
  129.   #--------------------------------------------------------------------------
  130.   def input_defeat_count(actor_id, enemy_id, variable_id)
  131.     $game_variables[variable_id] = $game_actors.defeat(enemy_id, actor_id)
  132.     return true
  133.   end
  134. end

  135. class Window_Base < Window
  136.   #--------------------------------------------------------------------------
  137.   # ● 指定变量时角色击破数表示
  138.   #       actor_id      :对象角色ー(为0则指代全体角色)
  139.   #       enemy_id      :对象敌人ー(为0则指代全体敌人)
  140.   #       x             :横方向表示位置
  141.   #       y             :纵方向表示位置
  142.   #--------------------------------------------------------------------------
  143.   def draw_defeat_count(actor_id, enemy_id, x, y)
  144.     p($game_actors.defeat(enemy_id, actor_id), 2)
  145.     draw_text(x, y, 200, line_height, "Hello")
  146.     p("draw_defeat_count called.")
  147.   end
  148. end



复制代码



回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-12-28 21:13

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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