Project1
标题:
轮盘怎么用?
[打印本页]
作者:
[email protected]
时间:
2014-5-18 20:40
标题:
轮盘怎么用?
本帖最后由 myownroc 于 2014-5-22 19:51 编辑
版主按:由于脚本中的部分注释含有敏感词汇,现已加入&符号隔开,对脚本正文无影响。
#==============================================================================
# 本脚本来自www.66RPG.com,使用和转载请保留此信息
#==============================================================================
#==============================================================================
# ■ 轮盘式获得提示
#------------------------------------------------------------------------------
# BY:美兽
#
# 简介:
# 物品: 在战斗结束以可控&赌&博&轮&盘&机&的方式,决定获得物品,出现物品数不受六个的限
# 制与敌人所携带物品数量持平,数据库设定物品出现几率不再有效,会百分百出
# 在滚动窗口间,只要被选中就能获得,但再多的物品一次战斗结束后只能获得一
# 个。
# 金钱: 滚动获得量在敌人金钱总数的50%—100%之间浮动。
# 冲突: Scene_Battle 2类被大量修改,基本可以肯定会与胜利后获得提示类的脚本冲突。
# 附加: 整合四个常用的小功能,具体参看相关设定部分。
#==============================================================================
$Roll_speed = 3 # 获得物品窗口文字滚动速度,越大越慢……
$Item_allrate = 10 # 物品出现总概率,5以及之下为零,10以及之上为百分百
#出现,当物品为一个以上时,每个物品会平分该概率。
$HPandSP_states = 3 # 当升级时,HP与SP的状态,为1时,只有HP补满;为2时,
#只有SP补满;为3时,HP与SP全满,以外值不产生变化。
$HP_Instauration = false # 每场战斗后是否回复HP,$HP_quantity为恢复百分量,
$HP_quantity = 5 #$HP_Instauration为true时回复,false不回复。
$SP_Instauration = false # 基本同上,控制SP是否回复。
$SP_quantity = 5 #
$Divide_exp = false # 控制战斗结束是否将经验平分配在每个队员身上。true
#为平均分配,false不平分。
$Escape = false # 控制逃跑失败后是否出现文字提示,true为出现,false
#为不出现。
#==============================================================================
# ■ Window_Base
#------------------------------------------------------------------------------
# 游戏中全部窗口的超级类。
#==============================================================================
class Window_Base < Window
#--------------------------------------------------------------------------
# ● 描绘物品名
# item : 物品
# x : 描画目标 X 坐标
# y : 描画目标 Y 坐标
#--------------------------------------------------------------------------
def draw_item_newname(item, x, y)
if item == nil
return
end
bitmap = RPG::Cache.icon(item.icon_name)
self.contents.blt(x, y + 4, bitmap, Rect.new(0, 0, 24, 24))
self.contents.font.color = Color.new(0,255,0,255)
self.contents.draw_text(x + 28, y, 212, 32, item.name)
end
end
#==============================================================================
# ■ Window_Battleitem
#------------------------------------------------------------------------------
# 显示战后获得物品窗口。
#==============================================================================
class Window_Battleitemtext < Window_Base
#--------------------------------------------------------------------------
# ● 初始化对像
#--------------------------------------------------------------------------
def initialize
super(240, 10, 160, 60)
self.contents = Bitmap.new(width - 32, height - 32)
self.visible = false
refresh
end
#--------------------------------------------------------------------------
# ● 刷新
#--------------------------------------------------------------------------
def refresh
self.contents.clear
self.contents.font.color = Color.new(0,220,60,255)
self.contents.draw_text(17, -2, 160, 32, "战 利 品")
end
end
class Window_Battleitemthing < Window_Base
#--------------------------------------------------------------------------
# ● 初始化对像
#--------------------------------------------------------------------------
def initialize(treasures)
super(200, 80, 240, 90)
$treasures_d = treasures
self.contents = Bitmap.new(width - 32, height - 32)
self.visible = false
refresh
end
#--------------------------------------------------------------------------
# ● 刷新
#--------------------------------------------------------------------------
def refresh
self.contents.clear
$randgold = rand($emegold/2)+($emegold/2)
if $randgold <= (($emegold/10)*$Item_allrate)
if $treasures_d.size != 0
$randitem_number = rand($treasures_d.size)
draw_item_newname($treasures_d[$randitem_number], 30, 15)
else
self.contents.font.color = Color.new(0,255,0,255)
self.contents.draw_text(-20, -10, 240, 80, $emegold.to_i.to_s + " 学分",1 )
end
else
self.contents.font.color = Color.new(255,255,0,255)
self.contents.draw_text(-20, -10, 240, 80, $randgold.to_i.to_s + " 学分",1 )
end
end
end
class Window_BattleExp < Window_Base
#--------------------------------------------------------------------------
# ● 初始化对像
# exp : EXP
#--------------------------------------------------------------------------
def initialize(exp)
[url=home.php?mod=space&uid=13302]@exp[/url] = exp
super(200, 180, 240, 60)
self.contents = Bitmap.new(width - 32, height - 32)
self.visible = false
refresh
end
#--------------------------------------------------------------------------
# ● 刷新
#--------------------------------------------------------------------------
def refresh
self.contents.clear
self.contents.font.color = normal_color
self.contents.draw_text(40, 0, 200, 32, @exp.to_s,1)
self.contents.font.color = system_color
self.contents.draw_text(17, 0, 64, 32, "EXP")
end
end
#==============================================================================
# ■ Scene_Battle (分割定义 2)
#------------------------------------------------------------------------------
# 处理战斗画面的类。
#==============================================================================
class Scene_Battle
#--------------------------------------------------------------------------
# ● 开始自由战斗回合
#--------------------------------------------------------------------------
def start_phase1
# 转移到回合 1
@phase = 1
# 清除全体同伴的行动
$game_party.clear_actions
# 设置战斗事件
setup_battle_event
end
#--------------------------------------------------------------------------
# ● 刷新画面 (自由战斗回合)
#--------------------------------------------------------------------------
def update_phase1
# 胜败判定
if judge
# 胜利或者失败的情况下 : 过程结束
return
end
# 开始同伴命令回合
start_phase2
end
#--------------------------------------------------------------------------
# ● 开始同伴命令回合
#--------------------------------------------------------------------------
def start_phase2
# 转移到回合 2
@phase = 2
# 设置角色为非选择状态
@actor_index = -1
@active_battler = nil
# 有效化同伴指令窗口
@party_command_window.active = true
@party_command_window.visible = true
# 无效化角色指令窗口
@actor_command_window.active = false
@actor_command_window.visible = false
# 清除主回合标志
$game_temp.battle_main_phase = false
# 清除全体同伴的行动
$game_party.clear_actions
# 不能输入命令的情况下
unless $game_party.inputable?
# 开始主回合
start_phase4
end
end
#--------------------------------------------------------------------------
# ● 刷新画面 (同伴命令回合)
#--------------------------------------------------------------------------
def update_phase2
# 按下 C 键的情况下
if Input.trigger?(Input::C)
# 同伴指令窗口光标位置分支
case @party_command_window.index
when 0 # 战斗
# 演奏确定 SE
$game_system.se_play($data_system.decision_se)
# 开始角色的命令回合
start_phase3
when 1 # 逃跑
# 不能逃跑的情况下
if $game_temp.battle_can_escape == false
# 演奏冻结 SE
$game_system.se_play($data_system.buzzer_se)
return
end
# 演奏确定 SE
$game_system.se_play($data_system.decision_se)
# 逃走处理
update_phase2_escape
end
return
end
end
#--------------------------------------------------------------------------
# ● 画面更新 (同伴指令回合 : 逃跑)
#--------------------------------------------------------------------------
def update_phase2_escape
# 计算敌人速度的平均值
enemies_agi = 0
enemies_number = 0
for enemy in $game_troop.enemies
if enemy.exist?
enemies_agi += enemy.agi
enemies_number += 1
end
end
if enemies_number > 0
enemies_agi /= enemies_number
end
# 计算角色速度的平均值
actors_agi = 0
actors_number = 0
for actor in $game_party.actors
if actor.exist?
actors_agi += actor.agi
actors_number += 1
end
end
if actors_number > 0
actors_agi /= actors_number
end
# 逃跑成功判定
success = rand(100) < 50 * actors_agi / enemies_agi
# 成功逃跑的情况下
if success
# 演奏逃跑 SE
$game_system.se_play($data_system.escape_se)
# 还原为战斗开始前的 BGM
$game_system.bgm_play($game_temp.map_bgm)
# 战斗结束
battle_end(1)
# 逃跑失败的情况下
else
if $Escape == true
$game_system.se_play($data_system.cancel_se)
@help_window.set_text("逃跑失败!",1)
@wait_count = 20
end
# 清除全体同伴的行动
$game_party.clear_actions
# 开始主回合
start_phase4
end
end
#--------------------------------------------------------------------------
# ● 开始结束战斗回合
#--------------------------------------------------------------------------
def start_phase5
# 转移到回合 5
@phase = 5
# 演奏战斗结束 ME
$game_system.me_play($game_system.battle_end_me)
# 还原为战斗开始前的 BGM
$game_system.bgm_play($game_temp.map_bgm)
# 初始化 EXP、金钱、宝物
exp = 0
gold = 0
$emegold = 0
treasures = []
# 循环
for enemy in $game_troop.enemies
# 敌人不是隐藏状态的情况下
unless enemy.hidden
# 获得 EXP、增加金钱
exp += enemy.exp
gold += enemy.gold
$emegold += enemy.gold
# 出现宝物判定
if enemy.item_id > 0
treasures.push($data_items[enemy.item_id])
end
if enemy.weapon_id > 0
treasures.push($data_weapons[enemy.weapon_id])
end
if enemy.armor_id > 0
treasures.push($data_armors[enemy.armor_id])
end
end
end
if $Divide_exp == true
exp = exp/$game_party.actors.size
end
# 获得 EXP
for i in 0...$game_party.actors.size
actor = $game_party.actors[i]
if actor.cant_get_exp? == false
last_level = actor.level
actor.exp += exp
actor.hp = (actor.hp + (actor.maxhp/100*$HP_quantity)) if $HP_Instauration == true
actor.sp = (actor.sp + (actor.maxsp/100*$SP_quantity)) if $SP_Instauration == true
if actor.level > last_level
@status_window.level_up(i)
case $HPandSP_states
when 1
actor.hp = actor.maxhp
when 2
actor.sp = actor.maxsp
when 3
actor.hp = actor.maxhp
actor.sp = actor.maxsp
end
end
end
end
# 生成战斗结果窗口
@Battleitemsw = true
@resultone_window = Window_Battleitemtext.new
@resulttwo_window = Window_Battleitemthing.new(treasures)
@resultthree_window = Window_BattleExp.new(exp)
# 设置等待计数
@phase5_wait_count = 50
end
#--------------------------------------------------------------------------
# ● 画面更新 (结束战斗回合)
#--------------------------------------------------------------------------
def update_phase5
# 等待计数大于 0 的情况下
if @phase5_wait_count > 0
# 减少等待计数
@phase5_wait_count -= 1
# 等待计数为 0 的情况下
if @phase5_wait_count == 0
# 显示结果窗口
@resultone_window.visible = true
@resulttwo_window.visible = true
@resultthree_window.visible = true
# 清除主回合标志
$game_temp.battle_main_phase = false
# 刷新状态窗口
@status_window.refresh
end
return
end
if (Graphics.frame_count%$Roll_speed) == 0 and @Battleitemsw == true and
$treasures_d.size != 0
$game_system.se_play($data_system.decision_se)
@resultone_window.refresh
@resulttwo_window.refresh
@resultthree_window.refresh
end
if Input.trigger?(Input::C) and @Battleitemsw == false
$game_system.se_play($data_system.cancel_se)
@resultone_window.dispose
@resulttwo_window.dispose
@resultthree_window.dispose
battle_end(0)
end
# 按下 C 键的情况下
if Input.trigger?(Input::C) and @Battleitemsw == true
$game_system.se_play($data_system.shop_se)
if $randgold <= (($emegold/10)*$Item_allrate)
if $treasures_d.size != 0
case $treasures_d[$randitem_number]
when RPG::Item
$game_party.gain_item($treasures_d[$randitem_number].id, 1)
when RPG::Weapon
$game_party.gain_weapon($treasures_d[$randitem_number].id, 1)
when RPG::Armor
$game_party.gain_armor($treasures_d[$randitem_number].id, 1)
end
else
$game_party.gain_gold($emegold.to_i)
end
else
$game_party.gain_gold($randgold.to_i)
end
@Battleitemsw = false
end
end
end
复制代码
这个脚本怎么用啊!物品要去哪里设置啊?为什么我的只能获得钱和经验,东西什么的怎么弄?
作者:
英顺的马甲
时间:
2014-5-20 21:21
设置敌人跌落的物品
作者:
hys111111
时间:
2014-5-21 12:29
它的这个脚本,应该是所有敌人掉落的物品中选取其中一个。
欢迎光临 Project1 (https://rpg.blue/)
Powered by Discuz! X3.1