赞 | 0 |
VIP | 0 |
好人卡 | 0 |
积分 | 1 |
经验 | 5024 |
最后登录 | 2017-3-15 |
在线时间 | 55 小时 |
Lv1.梦旅人
- 梦石
- 0
- 星屑
- 50
- 在线时间
- 55 小时
- 注册时间
- 2014-5-12
- 帖子
- 59
|
加入我们,或者,欢迎回来。
您需要 登录 才可以下载或查看,没有帐号?注册会员
x
本帖最后由 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
复制代码 这个脚本怎么用啊!物品要去哪里设置啊?为什么我的只能获得钱和经验,东西什么的怎么弄? |
|