Project1

标题: 轮盘怎么用? [打印本页]

作者: [email protected]    时间: 2014-5-18 20:40
标题: 轮盘怎么用?
本帖最后由 myownroc 于 2014-5-22 19:51 编辑

版主按:由于脚本中的部分注释含有敏感词汇,现已加入&符号隔开,对脚本正文无影响。

  1. #==============================================================================
  2. # 本脚本来自www.66RPG.com,使用和转载请保留此信息
  3. #==============================================================================
  4. #==============================================================================
  5. # ■ 轮盘式获得提示
  6. #------------------------------------------------------------------------------
  7. #  BY:美兽
  8. #
  9. # 简介:
  10. # 物品: 在战斗结束以可控&赌&博&轮&盘&机&的方式,决定获得物品,出现物品数不受六个的限
  11. #        制与敌人所携带物品数量持平,数据库设定物品出现几率不再有效,会百分百出
  12. #        在滚动窗口间,只要被选中就能获得,但再多的物品一次战斗结束后只能获得一
  13. #        个。
  14. # 金钱: 滚动获得量在敌人金钱总数的50%—100%之间浮动。
  15. # 冲突: Scene_Battle 2类被大量修改,基本可以肯定会与胜利后获得提示类的脚本冲突。
  16. # 附加: 整合四个常用的小功能,具体参看相关设定部分。
  17. #==============================================================================
  18. $Roll_speed = 3            # 获得物品窗口文字滚动速度,越大越慢……
  19. $Item_allrate = 10         # 物品出现总概率,5以及之下为零,10以及之上为百分百
  20. #出现,当物品为一个以上时,每个物品会平分该概率。  
  21. $HPandSP_states = 3        # 当升级时,HP与SP的状态,为1时,只有HP补满;为2时,
  22. #只有SP补满;为3时,HP与SP全满,以外值不产生变化。  
  23. $HP_Instauration = false   # 每场战斗后是否回复HP,$HP_quantity为恢复百分量,
  24. $HP_quantity = 5           #$HP_Instauration为true时回复,false不回复。
  25. $SP_Instauration = false   # 基本同上,控制SP是否回复。
  26. $SP_quantity = 5           #
  27. $Divide_exp = false        # 控制战斗结束是否将经验平分配在每个队员身上。true
  28. #为平均分配,false不平分。
  29. $Escape = false             # 控制逃跑失败后是否出现文字提示,true为出现,false
  30. #为不出现。
  31. #==============================================================================
  32. # ■ Window_Base
  33. #------------------------------------------------------------------------------
  34. #  游戏中全部窗口的超级类。
  35. #==============================================================================
  36. class Window_Base < Window
  37.   #--------------------------------------------------------------------------
  38.   # ● 描绘物品名
  39.   #     item : 物品
  40.   #     x    : 描画目标 X 坐标
  41.   #     y    : 描画目标 Y 坐标
  42.   #--------------------------------------------------------------------------
  43.   def draw_item_newname(item, x, y)
  44.     if item == nil
  45.       return
  46.     end
  47.     bitmap = RPG::Cache.icon(item.icon_name)
  48.     self.contents.blt(x, y + 4, bitmap, Rect.new(0, 0, 24, 24))
  49.     self.contents.font.color = Color.new(0,255,0,255)  
  50.     self.contents.draw_text(x + 28, y, 212, 32, item.name)
  51.   end
  52. end
  53. #==============================================================================
  54. # ■ Window_Battleitem
  55. #------------------------------------------------------------------------------
  56. #  显示战后获得物品窗口。
  57. #==============================================================================
  58. class Window_Battleitemtext < Window_Base
  59.   #--------------------------------------------------------------------------
  60.   # ● 初始化对像
  61.   #--------------------------------------------------------------------------
  62.   def initialize
  63.     super(240, 10, 160, 60)
  64.     self.contents = Bitmap.new(width - 32, height - 32)
  65.     self.visible = false     
  66.     refresh
  67.   end
  68.   #--------------------------------------------------------------------------
  69.   # ● 刷新
  70.   #--------------------------------------------------------------------------
  71.   def refresh
  72.     self.contents.clear
  73.     self.contents.font.color = Color.new(0,220,60,255)
  74.     self.contents.draw_text(17, -2, 160, 32, "战 利 品")
  75.   end
  76. end  
  77. class Window_Battleitemthing < Window_Base
  78.   #--------------------------------------------------------------------------
  79.   # ● 初始化对像
  80.   #--------------------------------------------------------------------------
  81.   def initialize(treasures)
  82.     super(200, 80, 240, 90)
  83.     $treasures_d = treasures
  84.     self.contents = Bitmap.new(width - 32, height - 32)
  85.     self.visible = false
  86.     refresh
  87.   end
  88.   #--------------------------------------------------------------------------
  89.   # ● 刷新
  90.   #--------------------------------------------------------------------------
  91.   def refresh     
  92.     self.contents.clear     
  93.     $randgold = rand($emegold/2)+($emegold/2)      
  94.     if  $randgold <=  (($emegold/10)*$Item_allrate)
  95.       if $treasures_d.size != 0         
  96.         $randitem_number = rand($treasures_d.size)
  97.         draw_item_newname($treasures_d[$randitem_number], 30, 15)
  98.       else  
  99.         self.contents.font.color = Color.new(0,255,0,255)         
  100.         self.contents.draw_text(-20, -10, 240, 80, $emegold.to_i.to_s + "  学分",1 )
  101.       end  
  102.     else
  103.       self.contents.font.color = Color.new(255,255,0,255)
  104.       self.contents.draw_text(-20, -10, 240, 80, $randgold.to_i.to_s + "  学分",1 )
  105.     end
  106.   end
  107. end
  108. class Window_BattleExp < Window_Base
  109.   #--------------------------------------------------------------------------
  110.   # ● 初始化对像
  111.   #     exp       : EXP
  112.   #--------------------------------------------------------------------------
  113.   def initialize(exp)
  114.     [url=home.php?mod=space&uid=13302]@exp[/url] = exp
  115.     super(200, 180, 240, 60)
  116.     self.contents = Bitmap.new(width - 32, height - 32)
  117.     self.visible = false
  118.     refresh
  119.   end
  120.   #--------------------------------------------------------------------------
  121.   # ● 刷新
  122.   #--------------------------------------------------------------------------
  123.   def refresh
  124.     self.contents.clear
  125.     self.contents.font.color = normal_color
  126.     self.contents.draw_text(40, 0, 200, 32, @exp.to_s,1)
  127.     self.contents.font.color = system_color
  128.     self.contents.draw_text(17, 0, 64, 32, "EXP")
  129.   end
  130. end

  131. #==============================================================================
  132. # ■ Scene_Battle (分割定义 2)
  133. #------------------------------------------------------------------------------
  134. #  处理战斗画面的类。
  135. #==============================================================================
  136. class Scene_Battle
  137.   #--------------------------------------------------------------------------
  138.   # ● 开始自由战斗回合
  139.   #--------------------------------------------------------------------------
  140.   def start_phase1
  141.     # 转移到回合 1
  142.     @phase = 1
  143.     # 清除全体同伴的行动
  144.     $game_party.clear_actions
  145.     # 设置战斗事件
  146.     setup_battle_event
  147.   end
  148.   #--------------------------------------------------------------------------
  149.   # ● 刷新画面 (自由战斗回合)
  150.   #--------------------------------------------------------------------------
  151.   def update_phase1
  152.     # 胜败判定
  153.     if judge
  154.       # 胜利或者失败的情况下 : 过程结束
  155.       return
  156.     end
  157.     # 开始同伴命令回合
  158.     start_phase2
  159.   end
  160.   #--------------------------------------------------------------------------
  161.   # ● 开始同伴命令回合
  162.   #--------------------------------------------------------------------------
  163.   def start_phase2
  164.     # 转移到回合 2
  165.     @phase = 2
  166.     # 设置角色为非选择状态
  167.     @actor_index = -1
  168.     @active_battler = nil
  169.     # 有效化同伴指令窗口
  170.     @party_command_window.active = true
  171.     @party_command_window.visible = true
  172.     # 无效化角色指令窗口
  173.     @actor_command_window.active = false
  174.     @actor_command_window.visible = false
  175.     # 清除主回合标志
  176.     $game_temp.battle_main_phase = false
  177.     # 清除全体同伴的行动
  178.     $game_party.clear_actions
  179.     # 不能输入命令的情况下
  180.     unless $game_party.inputable?
  181.       # 开始主回合
  182.       start_phase4
  183.     end
  184.   end
  185.   #--------------------------------------------------------------------------
  186.   # ● 刷新画面 (同伴命令回合)
  187.   #--------------------------------------------------------------------------
  188.   def update_phase2
  189.     # 按下 C 键的情况下
  190.     if Input.trigger?(Input::C)
  191.       # 同伴指令窗口光标位置分支
  192.       case @party_command_window.index
  193.       when 0  # 战斗
  194.         # 演奏确定 SE
  195.         $game_system.se_play($data_system.decision_se)
  196.         # 开始角色的命令回合
  197.         start_phase3
  198.       when 1  # 逃跑
  199.         # 不能逃跑的情况下
  200.         if $game_temp.battle_can_escape == false
  201.           # 演奏冻结 SE
  202.           $game_system.se_play($data_system.buzzer_se)
  203.           return
  204.         end
  205.         # 演奏确定 SE
  206.         $game_system.se_play($data_system.decision_se)
  207.         # 逃走处理
  208.         update_phase2_escape
  209.       end
  210.       return
  211.     end
  212.   end
  213.   #--------------------------------------------------------------------------
  214.   # ● 画面更新 (同伴指令回合 : 逃跑)
  215.   #--------------------------------------------------------------------------
  216.   def update_phase2_escape
  217.     # 计算敌人速度的平均值
  218.     enemies_agi = 0
  219.     enemies_number = 0
  220.     for enemy in $game_troop.enemies
  221.       if enemy.exist?
  222.         enemies_agi += enemy.agi
  223.         enemies_number += 1
  224.       end
  225.     end
  226.     if enemies_number > 0
  227.       enemies_agi /= enemies_number
  228.     end
  229.     # 计算角色速度的平均值
  230.     actors_agi = 0
  231.     actors_number = 0
  232.     for actor in $game_party.actors
  233.       if actor.exist?
  234.         actors_agi += actor.agi
  235.         actors_number += 1
  236.       end
  237.     end
  238.     if actors_number > 0
  239.       actors_agi /= actors_number
  240.     end
  241.     # 逃跑成功判定
  242.     success = rand(100) < 50 * actors_agi / enemies_agi
  243.     # 成功逃跑的情况下
  244.     if success
  245.       # 演奏逃跑 SE
  246.       $game_system.se_play($data_system.escape_se)
  247.       # 还原为战斗开始前的 BGM
  248.       $game_system.bgm_play($game_temp.map_bgm)
  249.       # 战斗结束
  250.       battle_end(1)
  251.       # 逃跑失败的情况下
  252.     else
  253.       if $Escape == true
  254.         $game_system.se_play($data_system.cancel_se)
  255.         @help_window.set_text("逃跑失败!",1)
  256.         @wait_count = 20
  257.       end
  258.       # 清除全体同伴的行动
  259.       $game_party.clear_actions
  260.       # 开始主回合
  261.       start_phase4
  262.     end
  263.   end
  264.   #--------------------------------------------------------------------------
  265.   # ● 开始结束战斗回合
  266.   #--------------------------------------------------------------------------
  267.   def start_phase5
  268.     # 转移到回合 5
  269.     @phase = 5
  270.     # 演奏战斗结束 ME
  271.     $game_system.me_play($game_system.battle_end_me)
  272.     # 还原为战斗开始前的 BGM
  273.     $game_system.bgm_play($game_temp.map_bgm)
  274.     # 初始化 EXP、金钱、宝物
  275.     exp = 0
  276.     gold = 0
  277.     $emegold = 0
  278.     treasures = []
  279.     # 循环
  280.     for enemy in $game_troop.enemies
  281.       # 敌人不是隐藏状态的情况下
  282.       unless enemy.hidden
  283.         # 获得 EXP、增加金钱
  284.         exp += enemy.exp
  285.         gold += enemy.gold
  286.         $emegold  += enemy.gold
  287.         # 出现宝物判定
  288.         if enemy.item_id > 0
  289.           treasures.push($data_items[enemy.item_id])
  290.         end
  291.         if enemy.weapon_id > 0
  292.           treasures.push($data_weapons[enemy.weapon_id])
  293.         end
  294.         if enemy.armor_id > 0
  295.           treasures.push($data_armors[enemy.armor_id])
  296.         end     
  297.       end
  298.     end
  299.     if $Divide_exp == true
  300.       exp = exp/$game_party.actors.size
  301.     end      
  302.     # 获得 EXP
  303.     for i in 0...$game_party.actors.size
  304.       actor = $game_party.actors[i]
  305.       if actor.cant_get_exp? == false
  306.         last_level = actor.level
  307.         actor.exp += exp         
  308.         actor.hp = (actor.hp + (actor.maxhp/100*$HP_quantity)) if $HP_Instauration == true  
  309.         actor.sp = (actor.sp + (actor.maxsp/100*$SP_quantity)) if $SP_Instauration == true                       
  310.         if actor.level > last_level
  311.           @status_window.level_up(i)
  312.           case $HPandSP_states
  313.           when 1
  314.             actor.hp = actor.maxhp
  315.           when 2
  316.             actor.sp = actor.maxsp
  317.           when 3
  318.             actor.hp = actor.maxhp
  319.             actor.sp = actor.maxsp
  320.           end
  321.         end
  322.       end
  323.     end
  324.     # 生成战斗结果窗口
  325.     @Battleitemsw = true
  326.     @resultone_window = Window_Battleitemtext.new
  327.     @resulttwo_window = Window_Battleitemthing.new(treasures)                  
  328.     @resultthree_window = Window_BattleExp.new(exp)
  329.     # 设置等待计数     
  330.     @phase5_wait_count = 50
  331.   end
  332.   #--------------------------------------------------------------------------
  333.   # ● 画面更新 (结束战斗回合)
  334.   #--------------------------------------------------------------------------
  335.   def update_phase5
  336.     # 等待计数大于 0 的情况下
  337.     if @phase5_wait_count > 0
  338.       # 减少等待计数
  339.       @phase5_wait_count -= 1
  340.       # 等待计数为 0 的情况下
  341.       if @phase5_wait_count == 0
  342.         # 显示结果窗口
  343.         @resultone_window.visible = true
  344.         @resulttwo_window.visible = true        
  345.         @resultthree_window.visible = true        
  346.         # 清除主回合标志
  347.         $game_temp.battle_main_phase = false
  348.         # 刷新状态窗口
  349.         @status_window.refresh
  350.       end
  351.       return
  352.     end
  353.     if (Graphics.frame_count%$Roll_speed) == 0 and @Battleitemsw == true and
  354.         $treasures_d.size != 0
  355.       $game_system.se_play($data_system.decision_se)
  356.       @resultone_window.refresh
  357.       @resulttwo_window.refresh  
  358.       @resultthree_window.refresh  
  359.     end      
  360.     if Input.trigger?(Input::C) and @Battleitemsw == false
  361.       $game_system.se_play($data_system.cancel_se)
  362.       @resultone_window.dispose        
  363.       @resulttwo_window.dispose        
  364.       @resultthree_window.dispose        
  365.       battle_end(0)
  366.     end      
  367.     # 按下 C 键的情况下
  368.     if Input.trigger?(Input::C) and @Battleitemsw == true  
  369.       $game_system.se_play($data_system.shop_se)
  370.       if  $randgold <=  (($emegold/10)*$Item_allrate)
  371.         if $treasures_d.size != 0
  372.           case $treasures_d[$randitem_number]
  373.           when RPG::Item
  374.             $game_party.gain_item($treasures_d[$randitem_number].id, 1)
  375.           when RPG::Weapon
  376.             $game_party.gain_weapon($treasures_d[$randitem_number].id, 1)
  377.           when RPG::Armor
  378.             $game_party.gain_armor($treasures_d[$randitem_number].id, 1)
  379.           end                 
  380.         else
  381.           $game_party.gain_gold($emegold.to_i)  
  382.         end   
  383.       else
  384.         $game_party.gain_gold($randgold.to_i)  
  385.       end                 
  386.       @Battleitemsw = false
  387.     end
  388.   end     
  389. end
复制代码
这个脚本怎么用啊!物品要去哪里设置啊?为什么我的只能获得钱和经验,东西什么的怎么弄?
作者: 英顺的马甲    时间: 2014-5-20 21:21
设置敌人跌落的物品
作者: hys111111    时间: 2014-5-21 12:29
它的这个脚本,应该是所有敌人掉落的物品中选取其中一个。




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1