class Game_Party
def avg_number(number, level=nil)
average = 0
for i in @actors
actor = level ? $data_actors[i] : $game_actors[i]
case number
when "level"
average += $game_actors[i].level
when "exp"
average += $game_actors[i].next_exp_s
when "hp"
if level
average += actor.parameters[0, level]
else
average += actor.maxhp
end
when "mp"
if level
average += actor.parameters[1, level]
else
average += actor.maxmp
end
when "atk"
if level
average += actor.parameters[2, level]
else
average += actor.atk
end
when "def"
if level
average += actor.parameters[3, level]
else
average += actor.def
end
when "spi"
if level
average += actor.parameters[4, level]
else
average += actor.spi
end
when "agi"
if level
average += actor.parameters[5, level]
else
average += actor.agi
end
when "hit"
average += $game_actors[i].hit
when "eva"
average += $game_actors[i].eva
end
end
average /= members.size
return average
end
# 獲取平均等級
def avg_level
return avg_number("level")
end
# 獲取平均升級經驗
def avg_exp_needed
return avg_number("exp")
end
def avg_hp_max(level=nil)
return avg_number("hp", level)
end
def avg_mp_max(level=nil)
return avg_number("mp", level)
end
def avg_atk(level=nil)
return avg_number("atk", level)
end
def avg_def(level=nil)
return avg_number("def", level)
end
def avg_spi(level=nil)
return avg_number("spi", level)
end
def avg_agi(level=nil)
return avg_number("agi", level)
end
def avg_hit
return avg_number("hit")
end
def avg_eva
return avg_number("eva")
end
end
class RPG::Enemy
# 获取等级
def get_level
elevel = 0
self.note.split(/[ ]+/).each { |line|
if line =~ /[(level|等級|等级) {1,2}]/
a = line.split(/ /)[1]
elevel += a.to_i
elsif line =~ /[player_level|主角等級|主角等级]/
elevel += $game_party.avg_level
end
}
return elevel==0 ? nil : elevel
end
# 获取强度
def get_str
self.note.split(/[ ]+/).each { |line|
if line =~ /[(strength|強度|强度) w+]/
a = line.split(/ /)[1]
d = ""
while ((c = a.slice!(/./m)) != nil)
d += c if c != "]"
end
return d
end
}
return "default"
end
def get_enemy_type
self.note.split(/[ ]+/).each { |line|
if line =~ /[(type|類型|类型) w+]/
a = line.split(/ /)[1]
d = ""
while ((c = a.slice!(/./m)) != nil)
d += c if c != "]"
end
return d
end
}
return "default"
end
def drop_item?
self.note.split(/[ ]+/).each { |line|
return if !(line =~ /[(no_drop|不掉落物品|不掉落物品)]/)
}
end
# 计算等级
def level
if auto_level?
if auto_str?
return [get_level + str, 1].max
else
return get_level
end
elsif auto_str?
elevel = $game_party.avg_level + str
return [elevel, 1].max
end
end
def str
estr = Auto_Enemy::STRENGTH[get_str]
if estr != nil
return estr
else
return Auto_Enemy::STRENGTH["default"]
end
end
def type
if $enemies_class != nil
return $enemies_class[@enemy_id] if $enemies_class[@enemy_id]!=nil
end
return Auto_Enemy::ENEMY_TYPE[get_enemy_type]
end
def auto_level?
return get_level
end
def auto_str?
return get_str
end
def auto_setup?
return (auto_level? or auto_str?)
end
end
class Game_Enemy < Game_Battler
#--------------------------------------------------------------------------
# ● 获取基本体力最大值
#--------------------------------------------------------------------------
def base_maxhp
if enemy.auto_setup?
enemy_maxhp = $game_party.avg_hp_max(enemy.level)
if enemy.type == -1
enemy_maxhp *= (1 + rand(0))
else
enemy_maxhp *= Auto_Enemy::ENEMY_TYPE_HP[enemy.type]
end
enemy_maxhp = enemy_maxhp.to_i
enemy_maxhp += rand(10)
return enemy_maxhp
else
return enemy.maxhp
end
end
#--------------------------------------------------------------------------
# ● 获取基本魔力最大值
#--------------------------------------------------------------------------
def base_maxmp
if enemy.auto_setup?
enemy_maxmp = $game_party.avg_mp_max(enemy.level)
if enemy.type == -1
enemy_maxmp *= (1 + rand(0))
else
enemy_maxmp *= Auto_Enemy::ENEMY_TYPE_MP[enemy.type]
end
enemy_maxmp = enemy_maxmp.to_i
enemy_maxmp += rand(5)
return enemy_maxmp
else
return enemy.maxmp
end
end
#--------------------------------------------------------------------------
# ● 获取基本攻击力
#--------------------------------------------------------------------------
def base_atk
if enemy.auto_setup?
enemy_atk = $game_party.avg_atk(enemy.level)
if enemy.type == -1
enemy_atk *= (1 + rand(0))
else
enemy_atk *= Auto_Enemy::ENEMY_TYPE_ATK[enemy.type]
end
enemy_atk = enemy_atk.to_i
enemy_atk += rand(5)
return enemy_atk
else
return enemy.atk
end
end
#--------------------------------------------------------------------------
# ● 获取基本防御力
#--------------------------------------------------------------------------
def base_def
if enemy.auto_setup?
enemy_def = $game_party.avg_def(enemy.level)
if enemy.type == -1
enemy_def *= (1 + rand(0))
else
enemy_def *= Auto_Enemy::ENEMY_TYPE_DEF[enemy.type]
end
enemy_def = enemy_def.to_i
enemy_def += rand(5)
return enemy_def
else
return enemy.def
end
end
#--------------------------------------------------------------------------
# ● 获取基本精神力
#--------------------------------------------------------------------------
def base_spi
if enemy.auto_setup?
enemy_spi = $game_party.avg_spi(enemy.level)
if enemy.type == -1
enemy_spi *= (1 + rand(0))
else
enemy_spi *= Auto_Enemy::ENEMY_TYPE_SPI[enemy.type]
end
enemy_spi = enemy_spi.to_i
enemy_spi += rand(5)
return enemy_spi
else
return enemy.spi
end
end
#--------------------------------------------------------------------------
# ● 获取基本敏捷
#--------------------------------------------------------------------------
def base_agi
if enemy.auto_setup?
enemy_agi = $game_party.avg_agi(enemy.level)
if enemy.type == -1
enemy_agi *= (1 + rand(0))
else
enemy_agi *= Auto_Enemy::ENEMY_TYPE_AGI[enemy.type]
end
enemy_agi = enemy_agi.to_i
enemy_agi += rand(5)
return enemy_agi
else
return enemy.agi
end
end
#--------------------------------------------------------------------------
# ● 获取命中率
#--------------------------------------------------------------------------
def hit
if enemy.auto_setup?
enemy_hit = $game_party.avg_hit
if enemy.type == -1
enemy_hit *= (1 + rand(0))
elsif enemy.type == 6
enemy_hit = 95
else
enemy_hit *= Auto_Enemy::ENEMY_TYPE_HIT[enemy.type]
end
return [[enemy_hit.to_i, 95].min, 50].max
else
return enemy.hit
end
end
#--------------------------------------------------------------------------
# ● 获取闪躲率
#--------------------------------------------------------------------------
def eva
if enemy.auto_setup?
enemy_eva = $game_party.avg_eva
if enemy.type == -1
enemy_eva *= (1 + rand(0))
elsif enemy.type == 6
enemy_eva = 95
else
enemy_eva *= Auto_Enemy::ENEMY_TYPE_EVA[enemy.type]
end
return [[enemy_eva.to_i, 95].min, 0].max
else
return enemy.eva
end
end
#--------------------------------------------------------------------------
# ● 获取经验值
#--------------------------------------------------------------------------
def exp
if enemy.auto_setup?
exp = ($game_party.avg_exp_needed * Auto_Enemy::EXPERIENCE).to_i
exp =* enemy.type == 6 ? Auto_Enemy::BOSS_EXP : 1
exp += rand(10)
return exp
else
return enemy.exp
end
end
def drop_item1
if enemy.auto_setup? or drop_item?
get_drop_item
else
return @drop_item1
end
end
def drop_item2
get_drop_item
else
return RPG::Enemy::DropItem.new
end
end
def get_drop_item
possible_drop_item = []
drop = RPG::Enemy::DropItem.new
drop.kind = rand(4)
case drop.kind
when 1
for i in 1...$data_items.size
item = $data_items[i]
end
end
drop.item_id = possible_drop_item[rand(possible_drop_item.size)]
for i in 1...$data_weapons.size
weapon = $data_weapons[i]
end
end
class Game_Interpreter
def make_enemy_database
for i in 1...$data_enemies.size
game_enemy = Game_Enemy.new(1, i)
if $data_enemies[i].auto_setup?
$data_enemies[i].maxhp = game_enemy.base_maxhp
$data_enemies[i].maxmp = game_enemy.base_maxmp
$data_enemies[i].atk = game_enemy.base_atk
$data_enemies[i].def = game_enemy.base_def
$data_enemies[i].spi = game_enemy.base_spi
$data_enemies[i].agi = game_enemy.base_agi
$data_enemies[i].hit = game_enemy.hit
$data_enemies[i].eva = game_enemy.eva
$data_enemies[i].exp = game_enemy.exp
if $lazy_item_setup
$data_enemies[i].drop_item1 = game_enemy.drop_item1
$data_enemies[i].drop_item2 = game_enemy.drop_item2
end
end
end
save_data($data_enemies,"Data/Enemies.rvdata") if Auto_Enemy::WRITE_2_DATABASE
end
end
敌人等级设定脚本。那日文的 ==,我 换个 电脑,不在这机子上,我找不到了作者: 巧克力猫咪 时间: 2010-8-29 23:59
#_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
#_/ ◆ 多人数パーティ - KGC_LargeParty ◆ VX ◆
#_/ ◇ Last update : 2008/04/27 ◇
#_/----------------------------------------------------------------------------
#_/ 5人以上の大規模パーティを構築可能にします。
#_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
if last_size < @actors.size
self.battle_member_count += 1
end
end
#--------------------------------------------------------------------------
# ○ アクターを戦闘メンバーに加える
# actor_id : アクター ID
# index : 追加位置 (省略時は最後尾)
#--------------------------------------------------------------------------
def add_battle_member(actor_id, index = nil)
return unless @actors.include?(actor_id) # パーティにいない
if index == nil
return if battle_members.include?($game_actors[actor_id]) # 出撃済み
return if battle_member_count == max_battle_member_count # 人数が最大
index = battle_member_count
end
@actors.delete(actor_id)
@actors.insert(index, actor_id)
self.battle_member_count += 1
end
#--------------------------------------------------------------------------
# ○ アクターを戦闘メンバーから外す
# actor_id : アクター ID
#--------------------------------------------------------------------------
def remove_battle_member(actor_id)
return unless @actors.include?(actor_id) # パーティにいない
return if actor_fixed?(actor_id) # 固定済み
return if stand_by_members.include?($game_actors[actor_id]) # 待機中
class Scene_Title < Scene_Base
#--------------------------------------------------------------------------
# ● 各種ゲームオブジェクトの作成
#--------------------------------------------------------------------------
alias create_game_objects_KGC_LargeParty create_game_objects
def create_game_objects
create_game_objects_KGC_LargeParty
if KGC::LargeParty::DEFAULT_PARTYFORM_ENABLED
$game_switches[KGC::LargeParty::PARTYFORM_SWITCH] = true
$game_switches[KGC::LargeParty::BATTLE_PARTYFORM_SWITCH] = true
end
end
end
class Scene_Menu < Scene_Base
if KGC::LargeParty::USE_MENU_PARTYFORM_COMMAND
#--------------------------------------------------------------------------
# ● コマンドウィンドウの作成
#--------------------------------------------------------------------------
alias create_command_window_KGC_LargeParty create_command_window
def create_command_window
create_command_window_KGC_LargeParty
return if $imported["CustomMenuCommand"]
@__command_partyform_index =
@command_window.add_command(Vocab.partyform)
@command_window.draw_item(@__command_partyform_index,
$game_party.partyform_enable?)
if @command_window.oy > 0
@command_window.oy -= Window_Base::WLH
end
@command_window.index = @menu_index
end
end
#--------------------------------------------------------------------------
# ● コマンド選択の更新
#--------------------------------------------------------------------------
alias update_command_selection_KGC_LargeParty update_command_selection
def update_command_selection
current_menu_index = @__command_partyform_index
call_partyform_flag = false
if Input.trigger?(Input::C)
case @command_window.index
when @__command_partyform_index # パーティ編成
call_partyform_flag = true
end
# パーティ編成ボタン押下
elsif KGC::LargeParty::MENU_PARTYFORM_BUTTON != nil &&
Input.trigger?(KGC::LargeParty::MENU_PARTYFORM_BUTTON)
call_partyform_flag = true
current_menu_index = @command_window.index if current_menu_index == nil
end
# パーティ編成画面に移行
if call_partyform_flag
if $game_party.members.size == 0 || !$game_party.partyform_enable?
Sound.play_buzzer
return
end
Sound.play_decision
$scene = Scene_PartyForm.new(current_menu_index)
return
end
class Scene_Battle < Scene_Base
#--------------------------------------------------------------------------
# ● メッセージ表示が終わるまでウェイト
#--------------------------------------------------------------------------
alias wait_for_message_KGC_LargeParty wait_for_message
def wait_for_message
return if @ignore_wait_for_message # メッセージ終了までのウェイトを無視
wait_for_message_KGC_LargeParty
end
#--------------------------------------------------------------------------
# ● レベルアップの表示
#--------------------------------------------------------------------------
alias display_level_up_KGC_LargeParty display_level_up
def display_level_up
@ignore_wait_for_message = true
display_level_up_KGC_LargeParty
exp = $game_troop.exp_total * KGC::LargeParty::STAND_BY_EXP_RATE / 1000
$game_party.stand_by_members.each { |actor|
if actor.exist?
actor.gain_exp(exp, KGC::LargeParty::SHOW_STAND_BY_LEVEL_UP)
end
}
@ignore_wait_for_message = false
wait_for_message
end
#--------------------------------------------------------------------------
# ● パーティコマンド選択の開始
#--------------------------------------------------------------------------
alias start_party_command_selection_KGC_LargeParty start_party_command_selection
def start_party_command_selection
if $game_temp.in_battle
@status_window.index = 0
end
start_party_command_selection_KGC_LargeParty
end
if KGC::LargeParty::USE_BATTLE_PARTYFORM
#--------------------------------------------------------------------------
# ● 情報表示ビューポートの作成
#--------------------------------------------------------------------------
alias create_info_viewport_KGC_LargeParty create_info_viewport
def create_info_viewport
create_info_viewport_KGC_LargeParty
@__command_partyform_index =
@party_command_window.add_command(Vocab.partyform_battle)
@party_command_window.draw_item(@__command_partyform_index,
$game_party.battle_partyform_enable?)
end
#--------------------------------------------------------------------------
# ● パーティコマンド選択の更新
#--------------------------------------------------------------------------
alias update_party_command_selection_KGC_LargeParty update_party_command_selection
def update_party_command_selection
if Input.trigger?(Input::C)
case @party_command_window.index
when @__command_partyform_index # パーティ編成
unless $game_party.battle_partyform_enable?
Sound.play_buzzer
return
end
Sound.play_decision
process_partyform
return
end
end
update_party_command_selection_KGC_LargeParty
end
#--------------------------------------------------------------------------
# ○ パーティ編成の処理
#--------------------------------------------------------------------------
def process_partyform
Graphics.freeze
snapshot_for_background
$scene = Scene_PartyForm.new(0, Scene_PartyForm::HOST_BATTLE)
$scene.main
$scene = self
@status_window.refresh
perform_transition
end
end
end 作者: 巧克力猫咪 时间: 2010-8-30 00:01
2个 合在一起,敌人实力增强了N倍 啊,血量和魔没变,攻击防御什么全变了 作者: 巧克力猫咪 时间: 2010-8-30 00:13 回复 untrueterry 的帖子