查看: 2027|回复: 2

[已经过期] 【发现新问题】怎样杀死怪物后让某一个变量增加?

[复制链接]
梦石
0
星屑
40
在线时间
80 小时
注册时间
2014-11-3
回帖
48
发表于 2015-6-15 10:22:11 | 显示全部楼层 |阅读模式

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

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

×
打个比方:
有三个史莱姆,一个用来记录的变量。
当我杀死了这些怪物后,记录的变量+3,
用了战斗事件,可是没用。
求助!
梦石
0
星屑
61
在线时间
251 小时
注册时间
2015-5-14
回帖
430
发表于 2015-6-15 12:16:34 | 显示全部楼层
你是怎么设置事件的?
回复

使用道具 举报

梦石
0
星屑
22879
在线时间
8598 小时
注册时间
2011-12-31
回帖
3270
发表于 2015-6-15 12:19:19 | 显示全部楼层
本帖最后由 tseyik 于 2015-6-15 12:20 编辑

http://www4.plala.or.jp/findias/ ... at_count/index.html
VXAce-RGSS3-6 撃破数カウンタ       

[pre lang="ruby"]#==============================================================================
# ■ VXAce-RGSS3-6 撃破数カウンタ [Ver.1.0.0]         by Claimh
#------------------------------------------------------------------------------
# 各アクターが倒したエネミーの数をカウントします。
#------------------------------------------------------------------------------
#・ウィンドウ上に表示させる
#Widow_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 :撃破数を入れる変数
#==============================================================================

module DefeatCounter ## 他スクリプトとの併用のために残す
  #--------------------------------------------------------------------------
  # ● 指定アクターの撃破数
  #       actor_id      :対象アクターID(0を指定すると全アクター)
  #       enemy_id      :対象エネミーID(0を指定すると全エネミー)
  #--------------------------------------------------------------------------
  def self.defeat_count(actor_id=0, enemy_id=0)
    return $game_actors.defeat(enemy_id, actor_id)
  end
end

class Game_Actor < Game_Battler
  #--------------------------------------------------------------------------
  # ● オブジェクト初期化
  #--------------------------------------------------------------------------
  alias initialize_defeat_count initialize
  def initialize(actor_id)
    initialize_defeat_count(actor_id)
    @defeat = {}
  end
  #--------------------------------------------------------------------------
  # ● 撃破数取得
  #--------------------------------------------------------------------------
  def defeat(enemy_id=0)
    return defeat_all if enemy_id == 0
    @defeat[enemy_id] = 0 unless @defeat.keys.include?(enemy_id)
    return @defeat[enemy_id]
  end
  #--------------------------------------------------------------------------
  # ● 撃破数取得
  #--------------------------------------------------------------------------
  def defeat_all
    @defeat.keys.inject(0) { |n, id| n += @defeat[id] }
  end
  #--------------------------------------------------------------------------
  # ● 撃破数カウント
  #--------------------------------------------------------------------------
  def defeat_cnt(enemy_id)
    return if enemy_id == 0
    @defeat[enemy_id] = 0 unless @defeat.keys.include?(enemy_id)
    @defeat[enemy_id] += 1
  end
end

class Game_Actors
  #--------------------------------------------------------------------------
  # ● 撃破数取得
  #--------------------------------------------------------------------------
  def defeat(enemy_id=0, actor_id=0)
    return defeat_all(enemy_id) if actor_id == 0
    return self.[](actor_id).defeat(enemy_id)
  end
  #--------------------------------------------------------------------------
  # ● 撃破数取得
  #--------------------------------------------------------------------------
  def defeat_all(enemy_id=0)
    @data.inject(0) { |n, actor| n += (actor.nil? ? 0 : actor.defeat(enemy_id)) }
  end
end

#==============================================================================
# ■ Game_Battler
#==============================================================================
class Game_Battler < Game_BattlerBase
  #--------------------------------------------------------------------------
  # ● ダメージの処理
  #    呼び出し前に @result.hp_damage @result.mp_damage @result.hp_drain
  #    @result.mp_drain が設定されていること。
  #--------------------------------------------------------------------------
  alias execute_damage_defeat execute_damage
  def execute_damage(user)
    execute_damage_defeat(user)
    return if actor? or !dead? or user.enemy?
    return if $game_troop.enable_dead_count?(self.index)
    $game_troop.defeat_dead_count(self.index)
    user.defeat_cnt(self.enemy_id)
  end
end


#==============================================================================
# ■ Game_Troop
#==============================================================================
class Game_Troop < Game_Unit
  #--------------------------------------------------------------------------
  # ● セットアップ
  #--------------------------------------------------------------------------
  alias setup_defeat setup
  def setup(troop_id)
    setup_defeat(troop_id)
    @enemy_defeat = []
  end
  #--------------------------------------------------------------------------
  # ● 撃破時のカウント
  #--------------------------------------------------------------------------
  def defeat_dead_count(index)
    @enemy_defeat[index] = true
  end
  #--------------------------------------------------------------------------
  # ● 既にカウント済み?
  #--------------------------------------------------------------------------
  def enable_dead_count?(index)
    @enemy_defeat[index] || false
  end
end


class Game_Interpreter
  #--------------------------------------------------------------------------
  # ● 指定した変数にアクターの撃破数を格納する
  #       actor_id      :対象アクター(0を指定すると全アクター)
  #       enemy_id      :対象エネミー(0を指定すると全エネミー)
  #       variable_id   :撃破数を格納する変数
  #--------------------------------------------------------------------------
  def input_defeat_count(actor_id, enemy_id, variable_id)
    $game_variables[variable_id] = $game_actors.defeat(enemy_id, actor_id)
    return true
  end
end

class Window_Base < Window
  #--------------------------------------------------------------------------
  # ● 指定した変数にアクターの撃破数を表示する
  #       actor_id      :対象アクター(0を指定すると全アクター)
  #       enemy_id      :対象エネミー(0を指定すると全エネミー)
  #       x             :横方向の表示位置
  #       y             :縦方向の表示位置
  #--------------------------------------------------------------------------
  def draw_defeat_count(actor_id, enemy_id, x, y)
    draw_text(x, y, 200, line_height, $game_actors.defeat(enemy_id, actor_id), 2)
  end
end


[/pre]



メソッド説明
        Window_Base#draw_defeat_count(actor_id, enemy_id, x, y)
Window上に撃破数を表示します。
actor_id        :        対象アクターID(0を指定すると全アクター)
enemy_id        :        対象エネミーID(0を指定すると全エネミー)
x        :        描画開始位置(横方向)
y        :        描画開始位置(縦方向)

        Game_Interpreter#draw_defeat_count(actor_id, enemy_id, variable_id)
指定変数に撃破数を代入します。
actor_id        :        対象アクターID(0を指定すると全アクター)
enemy_id        :        対象エネミーID(0を指定すると全エネミー)
variable_id        :        代入先の変数ID
       
       
       
       
       
       
         
回复

使用道具 举报

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

本版积分规则

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

在本版发帖返回顶部