设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 982|回复: 2
打印 上一主题 下一主题

[已经解决] 如何设置在装备了某武器后打怪经验双倍?

 关闭 [复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
101 小时
注册时间
2009-10-7
帖子
146
跳转到指定楼层
1
发表于 2009-11-28 18:47:08 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

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

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

x
如何设置在装备了某武器后打怪经验双倍?药品也一样怎么弄?
谢谢!

Lv1.梦旅人

夜天の主

梦石
0
星屑
124
在线时间
1552 小时
注册时间
2008-4-13
帖子
2347

开拓者第4届短篇游戏比赛亚军

2
发表于 2009-11-28 19:41:16 | 只看该作者
本帖最后由 kakarot 于 2009-11-28 19:43 编辑

附上几枚传送门供参考,咱比较倾向于用状态法,恩恩:
http://rpg.blue/viewthread.php?t ... E9%AA%8C&page=1
http://rpg.blue/web/index.php?doc-view-3429
http://rpg.blue/viewthread.php?t ... =%E7%BB%8F%E9%AA%8C

顺便一提,如果对上面的内容还不满意的话LZ可以自己动手搜索一下,MS类似的问题问得比较多的说~
回复 支持 反对

使用道具 举报

Lv1.梦旅人

神之瞳

梦石
0
星屑
60
在线时间
5 小时
注册时间
2009-7-5
帖子
314
3
发表于 2009-11-28 23:55:44 | 只看该作者
  1. #==============================================================================
  2. # ■ Scene_Battle (分割定义 2)
  3. #------------------------------------------------------------------------------
  4. #  处理战斗画面的类。
  5. #==============================================================================

  6. class Scene_Battle
  7.   #--------------------------------------------------------------------------
  8.   # ● 开始自由战斗回合
  9.   #--------------------------------------------------------------------------
  10.   def start_phase1
  11.     # 转移到回合 1
  12.     @phase = 1
  13.     # 清除全体同伴的行动
  14.     $game_party.clear_actions
  15.     # 设置战斗事件
  16.     setup_battle_event
  17.   end
  18.   #--------------------------------------------------------------------------
  19.   # ● 刷新画面 (自由战斗回合)
  20.   #--------------------------------------------------------------------------
  21.   def update_phase1
  22.     # 胜败判定
  23.     if judge
  24.       # 胜利或者失败的情况下 : 过程结束
  25.       return
  26.     end
  27.     # 开始同伴命令回合
  28.     start_phase2
  29.   end
  30.   #--------------------------------------------------------------------------
  31.   # ● 开始同伴命令回合
  32.   #--------------------------------------------------------------------------
  33.   def start_phase2
  34.     # 转移到回合 2
  35.     @phase = 2
  36.     # 设置角色为非选择状态
  37.     @actor_index = -1
  38.     @active_battler = nil
  39.     # 有效化同伴指令窗口
  40.     @party_command_window.active = true
  41.     @party_command_window.visible = true
  42.     # 无效化角色指令窗口
  43.     @actor_command_window.active = false
  44.     @actor_command_window.visible = false
  45.     # 清除主回合标志
  46.     $game_temp.battle_main_phase = false
  47.     # 清除全体同伴的行动
  48.     $game_party.clear_actions
  49.     # 不能输入命令的情况下
  50.     unless $game_party.inputable?
  51.       # 开始主回合
  52.       start_phase4
  53.     end
  54.   end
  55.   #--------------------------------------------------------------------------
  56.   # ● 刷新画面 (同伴命令回合)
  57.   #--------------------------------------------------------------------------
  58.   def update_phase2
  59.     # 按下 C 键的情况下
  60.     if Input.trigger?(Input::C)
  61.       # 同伴指令窗口光标位置分支
  62.       case @party_command_window.index
  63.       when 0  # 战斗
  64.         # 演奏确定 SE
  65.         $game_system.se_play($data_system.decision_se)
  66.         # 开始角色的命令回合
  67.         start_phase3
  68.       when 1  # 逃跑
  69.         # 不能逃跑的情况下
  70.         if $game_temp.battle_can_escape == false
  71.           # 演奏冻结 SE
  72.           $game_system.se_play($data_system.buzzer_se)
  73.           return
  74.         end
  75.         # 演奏确定 SE
  76.         $game_system.se_play($data_system.decision_se)
  77.         # 逃走处理
  78.         update_phase2_escape
  79.       end
  80.       return
  81.     end
  82.   end
  83.   #--------------------------------------------------------------------------
  84.   # ● 画面更新 (同伴指令回合 : 逃跑)
  85.   #--------------------------------------------------------------------------
  86.   def update_phase2_escape
  87.     # 计算敌人速度的平均值
  88.     enemies_agi = 0
  89.     enemies_number = 0
  90.     for enemy in $game_troop.enemies
  91.       if enemy.exist?
  92.         enemies_agi += enemy.agi
  93.         enemies_number += 1
  94.       end
  95.     end
  96.     if enemies_number > 0
  97.       enemies_agi /= enemies_number
  98.     end
  99.     # 计算角色速度的平均值
  100.     actors_agi = 0
  101.     actors_number = 0
  102.     for actor in $game_party.actors
  103.       if actor.exist?
  104.         actors_agi += actor.agi
  105.         actors_number += 1
  106.       end
  107.     end
  108.     if actors_number > 0
  109.       actors_agi /= actors_number
  110.     end
  111.     # 逃跑成功判定
  112.     success = rand(100) < 50 * actors_agi / enemies_agi
  113.     # 成功逃跑的情况下
  114.     if success
  115.       # 演奏逃跑 SE
  116.       $game_system.se_play($data_system.escape_se)
  117.       # 还原为战斗开始前的 BGM
  118.       $game_system.bgm_play($game_temp.map_bgm)
  119.       # 战斗结束
  120.       battle_end(1)
  121.     # 逃跑失败的情况下
  122.     else
  123.       # 清除全体同伴的行动
  124.       $game_party.clear_actions
  125.       # 开始主回合
  126.       start_phase4
  127.     end
  128.   end
  129.   #--------------------------------------------------------------------------
  130.   # ● 开始结束战斗回合
  131.   #--------------------------------------------------------------------------
  132.   def start_phase5
  133.     # 转移到回合 5
  134.     @phase = 5
  135.     # 演奏战斗结束 ME
  136.     $game_system.me_play($game_system.battle_end_me)
  137.     # 还原为战斗开始前的 BGM
  138.     $game_system.bgm_play($game_temp.map_bgm)
  139.     # 初始化 EXP、金钱、宝物
  140.     exp = 0
  141.     gold = 0
  142.     treasures = []
  143.     # 循环
  144.     for enemy in $game_troop.enemies
  145.       # 敌人不是隐藏状态的情况下
  146.       unless enemy.hidden
  147.         # 获得 EXP、增加金钱
  148.         exp += enemy.exp
  149.         gold += enemy.gold
  150.         # 出现宝物判定
  151.         if rand(100) < enemy.treasure_prob
  152.           if enemy.item_id > 0
  153.             treasures.push($data_items[enemy.item_id])
  154.           end
  155.           if enemy.weapon_id > 0
  156.             treasures.push($data_weapons[enemy.weapon_id])
  157.           end
  158.           if enemy.armor_id > 0
  159.             treasures.push($data_armors[enemy.armor_id])
  160.           end
  161.         end
  162.       end
  163.     end
  164.     # 限制宝物数为 6 个
  165.     treasures = treasures[0..5]
  166.     # 获得 EXP
  167.     tempgod=[]
  168.     for i in 0...$game_party.actors.size
  169.       actor = $game_party.actors[i]
  170.       if actor.cant_get_exp? == false
  171.         last_level = actor.level
  172.         if actor.weapon_id == 1
  173.           actor.exp+= exp*2
  174.           tempgod.push(i)
  175.         else
  176.           actor.exp += exp
  177.         end
  178.         if actor.level > last_level
  179.           @status_window.level_up(i)
  180.         end
  181.       end
  182.     end
  183.     # 获得金钱
  184.     $game_party.gain_gold(gold)
  185.     # 获得宝物
  186.     for item in treasures
  187.       case item
  188.       when RPG::Item
  189.         $game_party.gain_item(item.id, 1)
  190.       when RPG::Weapon
  191.         $game_party.gain_weapon(item.id, 1)
  192.       when RPG::Armor
  193.         $game_party.gain_armor(item.id, 1)
  194.       end
  195.     end
  196.     # 生成战斗结果窗口
  197.     stringexp=exp.to_s+" ("+(exp*2).to_s
  198.     for wl in tempgod
  199.       stringexp+=" "+$game_party.actors[wl].name
  200.     end
  201.     stringexp+=")"
  202.     @result_window = Window_BattleResult.new(stringexp, gold, treasures)
  203.     # 设置等待计数
  204.     @phase5_wait_count = 100
  205.   end
  206.   #--------------------------------------------------------------------------
  207.   # ● 画面更新 (结束战斗回合)
  208.   #--------------------------------------------------------------------------
  209.   def update_phase5
  210.     # 等待计数大于 0 的情况下
  211.     if @phase5_wait_count > 0
  212.       # 减少等待计数
  213.       @phase5_wait_count -= 1
  214.       # 等待计数为 0 的情况下
  215.       if @phase5_wait_count == 0
  216.         # 显示结果窗口
  217.         @result_window.visible = true
  218.         # 清除主回合标志
  219.         $game_temp.battle_main_phase = false
  220.         # 刷新状态窗口
  221.         @status_window.refresh
  222.       end
  223.       return
  224.     end
  225.     # 按下 C 键的情况下
  226.     if Input.trigger?(Input::C)
  227.       # 战斗结束
  228.       battle_end(0)
  229.     end
  230.   end
  231. end
复制代码
Scene_Battle 2
  1. #==============================================================================
  2. # ■ Window_BattleResult
  3. #------------------------------------------------------------------------------
  4. #  战斗结束时、显示获得的 EXP 及金钱的窗口。
  5. #==============================================================================

  6. class Window_BattleResult < Window_Base
  7.   #--------------------------------------------------------------------------
  8.   # ● 初始化对像
  9.   #     exp       : EXP
  10.   #     gold      : 金钱
  11.   #     treasures : 宝物
  12.   #--------------------------------------------------------------------------
  13.   def initialize(exp, gold, treasures)
  14.     @exp = exp
  15.     @gold = gold
  16.     @treasures = treasures
  17.     super(160, 0, 320, @treasures.size * 32 + 128)
  18.     self.contents = Bitmap.new(width - 32, height - 32)
  19.     self.y = 160 - height / 2
  20.     self.back_opacity = 160
  21.     self.visible = false
  22.     refresh
  23.   end
  24.   #--------------------------------------------------------------------------
  25.   # ● 刷新
  26.   #--------------------------------------------------------------------------
  27.   def refresh
  28.     self.contents.clear
  29.     x = 4
  30.     self.contents.font.color = normal_color
  31.     cx = contents.text_size(@exp.to_s).width
  32.     self.contents.draw_text(x, 0, cx, 32, @exp.to_s)
  33.     x += cx + 4
  34.     self.contents.font.color = system_color
  35.     cx = contents.text_size("EXP").width
  36.     self.contents.draw_text(x, 0, 64, 32, "EXP")
  37.     x += cx + 16
  38.     x=4
  39.     self.contents.font.color = normal_color
  40.     cx = contents.text_size(@gold.to_s).width
  41.     self.contents.draw_text(x, 32, cx, 32, @gold.to_s)
  42.     x += cx + 4
  43.     self.contents.font.color = system_color
  44.     self.contents.draw_text(x, 32, 128, 32, $data_system.words.gold)
  45.     y = 32
  46.     for item in @treasures
  47.       draw_item_name(item, 4, y)
  48.       y += 32
  49.     end
  50.   end
  51. end
复制代码
Window_BattleResult
效果截图:

需要修改173行        if actor.weapon_id == 1为武器Id

九月三日

  有时我真不理解,怎么有另一个人能够爱她,可以爱她,殊不知我爱她爱得如此真切,如此忘情,如此情意缱倦,除了她我什么也不了解,什么也不知道,什么也没有呀!
——摘自《少年维特之烦恼》

谨以 纪念一段消逝了的感情
ILY ZXY

NOIp什么的最讨厌了!

啊……讨厌,为什么我的网盘全部坏掉了……
zoomshare恢复了,虚惊一场
可恶的skydrive,我XX你的OO,竟把我的帐号封了!
回复 支持 反对

使用道具 举报

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

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-12-27 12:52

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表