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

Project1

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

武器投掷

 关闭 [复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
94 小时
注册时间
2007-6-3
帖子
801
跳转到指定楼层
1
发表于 2008-8-10 02:32:41 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
去主站搜了下发现http://rpg.blue/web/shownews.asp?id=422
此东西的投掷时的动画可不可以如下:
我方(无动画)  对方(编号32号动画){/gg}
版务信息:本贴由楼主自主结贴~
无签名,不解释
头像被屏蔽

Lv1.梦旅人 (禁止发言)

為愛゛執著℡

梦石
0
星屑
50
在线时间
0 小时
注册时间
2007-12-15
帖子
657
2
发表于 2008-8-10 02:39:12 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
签名被屏蔽
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
94 小时
注册时间
2007-6-3
帖子
801
3
 楼主| 发表于 2008-8-10 02:40:41 | 只看该作者
以下引用很牛滴靓仔⒅于2008-8-9 18:39:12的发言:

投掷其实可以用事件完成的....

明确说下…………{/gg}
无签名,不解释
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
65
在线时间
433 小时
注册时间
2007-5-1
帖子
993
4
发表于 2008-8-10 02:46:20 | 只看该作者
修改完毕,扔武器时我方播放31号动画,敌方播放32号动画,要我方不播放动画请把31号动画留空,如需修改动画ID请定位到243行。

  1. #==============================================================================
  2. # ■ Window_Item
  3. #------------------------------------------------------------------------------
  4. #  物品画面、战斗画面、显示浏览物品的窗口。
  5. #==============================================================================

  6. class Window_Item < Window_Selectable
  7.   def refresh
  8.     if self.contents != nil
  9.       self.contents.dispose
  10.       self.contents = nil
  11.     end
  12.     @data = []
  13.     # 添加宝物
  14.     for i in 1...$data_items.size
  15.       if $game_party.item_number(i) > 0
  16.         @data.push($data_items[i])
  17.       end
  18.     end
  19.     # 添加武器
  20.     for i in 1...$data_weapons.size
  21.       if $game_party.weapon_number(i) > 0
  22.         @data.push($data_weapons[i])
  23.       end
  24.     end
  25.     # 在战斗中以外添加防具
  26.     unless $game_temp.in_battle
  27.       for i in 1...$data_armors.size
  28.         if $game_party.armor_number(i) > 0
  29.           @data.push($data_armors[i])
  30.         end
  31.       end
  32.     end
  33.     # 如果项目数不是 0 就生成位图、重新描绘全部项目
  34.     @item_max = @data.size
  35.     if @item_max > 0
  36.       self.contents = Bitmap.new(width - 32, row_max * 32)
  37.       for i in 0...@item_max
  38.         draw_item(i)
  39.       end
  40.     end
  41.   end
  42.   #--------------------------------------------------------------------------
  43.   # ● 描绘项目
  44.   #     index : 项目编号
  45.   #--------------------------------------------------------------------------
  46.   def draw_item(index)
  47.     item = @data[index]
  48.     case item
  49.     when RPG::Item
  50.       number = $game_party.item_number(item.id)
  51.     when RPG::Weapon
  52.       number = $game_party.weapon_number(item.id)
  53.     when RPG::Armor
  54.       number = $game_party.armor_number(item.id)
  55.     end
  56.     if item.is_a?(RPG::Item) and
  57.        $game_party.item_can_use?(item.id)
  58.       self.contents.font.color = normal_color
  59.     else
  60.       if $game_temp.in_battle and item.is_a?(RPG::Weapon)
  61.         self.contents.font.color = normal_color
  62.       else
  63.         self.contents.font.color = disabled_color
  64.       end
  65.     end
  66.     x = 4 + index % 2 * (288 + 32)
  67.     y = index / 2 * 32
  68.     rect = Rect.new(x, y, self.width / @column_max - 32, 32)
  69.     self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))
  70.     bitmap = RPG::Cache.icon(item.icon_name)
  71.     opacity = self.contents.font.color == normal_color ? 255 : 128
  72.     self.contents.blt(x, y + 4, bitmap, Rect.new(0, 0, 24, 24), opacity)
  73.     self.contents.draw_text(x + 28, y, 212, 32, item.name, 0)
  74.     self.contents.draw_text(x + 240, y, 16, 32, ":", 1)
  75.     self.contents.draw_text(x + 256, y, 24, 32, number.to_s, 2)
  76.   end
  77. end

  78. #==============================================================================
  79. # ■ Scene_Battle
  80. #------------------------------------------------------------------------------
  81. #  处理战斗画面的类。
  82. #==============================================================================

  83. class Scene_Battle
  84.   #--------------------------------------------------------------------------
  85.   # ● 转向前一个角色的命令输入
  86.   #--------------------------------------------------------------------------
  87.   def phase3_prior_actor
  88.     # 循环
  89.     begin
  90.       # 角色的明灭效果 OFF
  91.       if @active_battler != nil
  92.         @active_battler.blink = false
  93.       end
  94.       # 最初的角色的情况下
  95.       if @actor_index == 0
  96.         # 开始同伴指令回合
  97.         start_phase2
  98.         return
  99.       end
  100.       # 返回角色索引
  101.       @actor_index -= 1
  102.       @active_battler = $game_party.actors[@actor_index]
  103.       $game_party.gain_weapon(@active_battler.current_action.item_id[1], 1) if @active_battler.current_action.item_id[0] == false
  104.       @active_battler.blink = true
  105.     # 如果角色是在无法接受指令的状态就再试
  106.     end until @active_battler.inputable?
  107.     # 设置角色的命令窗口
  108.     phase3_setup_command_window
  109.   end
  110.   #--------------------------------------------------------------------------
  111.   # ● 刷新画面 (角色命令回合 : 选择物品)
  112.   #--------------------------------------------------------------------------
  113.   def update_phase3_item_select
  114.     # 设置物品窗口为可视状态
  115.     @item_window.visible = true
  116.     # 刷新物品窗口
  117.     @item_window.update
  118.     # 按下 B 键的情况下
  119.     if Input.trigger?(Input::B)
  120.       # 演奏取消 SE
  121.       $game_system.se_play($data_system.cancel_se)
  122.       # 选择物品结束
  123.       end_item_select
  124.       return
  125.     end
  126.     # 按下 C 键的情况下
  127.     if Input.trigger?(Input::C)
  128.       # 获取物品窗口现在选择的物品资料
  129.       @item = @item_window.item
  130.       # 无法使用的情况下
  131.       if @item.is_a?(RPG::Item)
  132.         unless $game_party.item_can_use?(@item.id)
  133.           # 演奏冻结 SE
  134.           $game_system.se_play($data_system.buzzer_se)
  135.           return
  136.         end
  137.       elsif [email protected]_a?(RPG::Weapon)
  138.         # 演奏冻结 SE
  139.         $game_system.se_play($data_system.buzzer_se)
  140.         return
  141.       end
  142.       # 演奏确定 SE
  143.       $game_system.se_play($data_system.decision_se)
  144.       # 设置行动
  145.       @active_battler.current_action.item_id = [@item.is_a?(RPG::Item), @item.id]
  146.       # 设置物品窗口为不可见状态
  147.       @item_window.visible = false
  148.       # 效果范围是敌单体的情况下
  149.       if @item.is_a?(RPG::Weapon) or @item.scope == 1
  150.         $game_party.lose_weapon(@item.id, 1) if @item.is_a?(RPG::Weapon)
  151.         # 开始选择敌人
  152.         start_enemy_select
  153.       # 效果范围是我方单体的情况下
  154.       elsif @item.scope == 3 or @item.scope == 5
  155.         # 开始选择角色
  156.         start_actor_select
  157.       # 效果范围不是单体的情况下
  158.       else
  159.         # 物品选择结束
  160.         end_item_select
  161.         # 转到下一位角色的指令输入
  162.         phase3_next_actor
  163.       end
  164.       return
  165.     end
  166.   end
  167.   #--------------------------------------------------------------------------
  168.   # ● 刷新画面画面 (角色命令回合 : 选择敌人)
  169.   #--------------------------------------------------------------------------
  170.   def update_phase3_enemy_select
  171.     # 刷新敌人箭头
  172.     @enemy_arrow.update
  173.     # 按下 B 键的情况下
  174.     if Input.trigger?(Input::B)
  175.       $game_party.gain_weapon(@item_window.item.id, 1) if @item_window != nil and @item_window.item.is_a(RPG::Weapon)
  176.       # 演奏取消 SE
  177.       $game_system.se_play($data_system.cancel_se)
  178.       # 选择敌人结束
  179.       end_enemy_select
  180.       return
  181.     end
  182.     # 按下 C 键的情况下
  183.     if Input.trigger?(Input::C)
  184.       # 演奏确定 SE
  185.       $game_system.se_play($data_system.decision_se)
  186.       # 设置行动
  187.       @active_battler.current_action.target_index = @enemy_arrow.index
  188.       # 选择敌人结束
  189.       end_enemy_select
  190.       # 显示特技窗口中的情况下
  191.       if @skill_window != nil
  192.         # 结束特技选择
  193.         end_skill_select
  194.       end
  195.       # 显示物品窗口的情况下
  196.       if @item_window != nil
  197.         # 结束物品选择
  198.         end_item_select
  199.       end
  200.       # 转到下一位角色的指令输入
  201.       phase3_next_actor
  202.     end
  203.   end
  204.   #--------------------------------------------------------------------------
  205.   # ● 生成物品行动结果
  206.   #--------------------------------------------------------------------------
  207.   def make_item_action_result
  208.     # 获取物品
  209.     data = @active_battler.current_action.item_id[0] ? $data_items : $data_weapons
  210.     @item = data[@active_battler.current_action.item_id[1]]
  211.     # 因为物品耗尽而无法使用的情况下
  212.     if @active_battler.current_action.item_id[0]
  213.       unless $game_party.item_can_use?(@item.id)
  214.         # 移至步骤 1
  215.         @phase4_step = 1
  216.         return
  217.       end
  218.       # 消耗品的情况下
  219.       if @item.consumable
  220.         # 使用的物品减 1
  221.         $game_party.lose_item(@item.id, 1)
  222.       end
  223.       # 设置公共事件 ID
  224.       @common_event_id = @item.common_event_id
  225.       # 在帮助窗口显示物品名
  226.       @help_window.set_text(@item.name, 1)
  227.       # 设置动画 ID
  228.       @animation1_id = @item.animation1_id
  229.       @animation2_id = @item.animation2_id
  230.       # 确定对像
  231.       index = @active_battler.current_action.target_index
  232.       target = $game_party.smooth_target_actor(index)
  233.       # 设置对像侧战斗者
  234.       set_target_battlers(@item.scope)
  235.     else
  236.       # 在帮助窗口显示物品名
  237.       @help_window.set_text(@item.name, 1)
  238.       # 设置动画 ID
  239.       if @item.is_a?(RPG::Weapon)
  240.         @animation1_id = 31                # 扔武器时我方动画编号      
  241.         @animation2_id = 32                # 扔武器时地方动画编号
  242.       else
  243.         @animation1_id = @item.animation1_id
  244.         @animation2_id = @item.animation2_id
  245.       end
  246.       # 确定对像
  247.       index = @active_battler.current_action.target_index
  248.       target = $game_party.smooth_target_actor(index)
  249.       # 设置对像侧战斗者
  250.       set_target_battlers(1)
  251.     end
  252.     # 应用物品效果
  253.     for target in @target_battlers
  254.       target.item_effect(@item)
  255.     end
  256.   end
  257. end

  258. #==============================================================================
  259. # ■ Game_Battler
  260. #------------------------------------------------------------------------------
  261. #  处理战斗者的类。这个类作为 Game_Actor 类与 Game_Enemy 类的
  262. # 超级类来使用。
  263. #==============================================================================

  264. class Game_Battler
  265.   ADDITION = 2  # 武器投掷时伤害与武器自身伤害的倍率
  266.   #--------------------------------------------------------------------------
  267.   # ● 应用物品效果
  268.   #     item : 物品
  269.   #--------------------------------------------------------------------------
  270.   def item_effect(item)
  271.     # 清除会心一击标志
  272.     self.critical = false
  273.     # 物品的效果范围是 HP 1 以上的己方、自己的 HP 为 0、
  274.     # 或者物品的效果范围是 HP 0 的己方、自己的 HP 为 1 以上的情况下
  275.     unless item.is_a?(RPG::Weapon)
  276.       if ((item.scope == 3 or item.scope == 4) and self.hp == 0) or
  277.          ((item.scope == 5 or item.scope == 6) and self.hp >= 1)
  278.         # 过程结束
  279.         return false
  280.       end
  281.       # 清除有效标志
  282.       effective = false
  283.       # 公共事件 ID 是有效的情况下,设置为有效标志
  284.       effective |= item.common_event_id > 0
  285.       # 命中判定
  286.       hit_result = (rand(100) < item.hit)
  287.       # 不确定的特技的情况下设置为有效标志
  288.       effective |= item.hit < 100
  289.       # 命中的情况
  290.       if hit_result == true
  291.         # 计算回复量
  292.         recover_hp = maxhp * item.recover_hp_rate / 100 + item.recover_hp
  293.         recover_sp = maxsp * item.recover_sp_rate / 100 + item.recover_sp
  294.         if recover_hp < 0
  295.           recover_hp += self.pdef * item.pdef_f / 20
  296.           recover_hp += self.mdef * item.mdef_f / 20
  297.           recover_hp = [recover_hp, 0].min
  298.         end
  299.         # 属性修正
  300.         recover_hp *= elements_correct(item.element_set)
  301.         recover_hp /= 100
  302.         recover_sp *= elements_correct(item.element_set)
  303.         recover_sp /= 100
  304.         # 分散
  305.         if item.variance > 0 and recover_hp.abs > 0
  306.           amp = [recover_hp.abs * item.variance / 100, 1].max
  307.           recover_hp += rand(amp+1) + rand(amp+1) - amp
  308.         end
  309.         if item.variance > 0 and recover_sp.abs > 0
  310.           amp = [recover_sp.abs * item.variance / 100, 1].max
  311.           recover_sp += rand(amp+1) + rand(amp+1) - amp
  312.         end
  313.         # 回复量符号为负的情况下
  314.         if recover_hp < 0
  315.           # 防御修正
  316.           if self.guarding?
  317.             recover_hp /= 2
  318.           end
  319.         end
  320.         # HP 回复量符号的反转、设置伤害值
  321.         self.damage = -recover_hp
  322.         # HP 以及 SP 的回复
  323.         last_hp = self.hp
  324.         last_sp = self.sp
  325.         self.hp += recover_hp
  326.         self.sp += recover_sp
  327.         effective |= self.hp != last_hp
  328.         effective |= self.sp != last_sp
  329.         # 状态变化
  330.         @state_changed = false
  331.         effective |= states_plus(item.plus_state_set)
  332.         effective |= states_minus(item.minus_state_set)
  333.         # 能力上升值有效的情况下
  334.         if item.parameter_type > 0 and item.parameter_points != 0
  335.           # 能力值的分支
  336.           case item.parameter_type
  337.           when 1  # MaxHP
  338.             @maxhp_plus += item.parameter_points
  339.           when 2  # MaxSP
  340.             @maxsp_plus += item.parameter_points
  341.           when 3  # 力量
  342.             @str_plus += item.parameter_points
  343.           when 4  # 灵巧
  344.             @dex_plus += item.parameter_points
  345.           when 5  # 速度
  346.             @agi_plus += item.parameter_points
  347.           when 6  # 魔力
  348.             @int_plus += item.parameter_points
  349.           end
  350.           # 设置有效标志
  351.           effective = true
  352.         end
  353.         # HP 回复率与回复量为 0 的情况下
  354.         if item.recover_hp_rate == 0 and item.recover_hp == 0
  355.           # 设置伤害为空的字符串
  356.           self.damage = ""
  357.           # SP 回复率与回复量为 0、能力上升值无效的情况下
  358.           if item.recover_sp_rate == 0 and item.recover_sp == 0 and
  359.              (item.parameter_type == 0 or item.parameter_points == 0)
  360.             # 状态没有变化的情况下
  361.             unless @state_changed
  362.               # 伤害设置为 "Miss"
  363.               self.damage = "Miss"
  364.             end
  365.           end
  366.         end
  367.       # Miss 的情况下
  368.       else
  369.         # 伤害设置为 "Miss"
  370.         self.damage = "Miss"
  371.       end
  372.     else
  373.       # 计算基本伤害
  374.       self.damage = item.atk * ADDITION
  375.       # 属性修正
  376.       self.damage *= elements_correct(item.element_set)
  377.       self.damage /= 100
  378.       # 伤害符号正确的情况下
  379.       if self.damage > 0
  380.         # 会心一击修正
  381.         if rand(100) < 4 * item.dex_plus / self.agi
  382.           self.damage *= 2
  383.           self.critical = true
  384.         end
  385.         # 防御修正
  386.         if self.guarding?
  387.           self.damage /= 2
  388.         end
  389.       end
  390.       # 分散
  391.       if self.damage.abs > 0
  392.         amp = [self.damage.abs * 15 / 100, 1].max
  393.         self.damage += rand(amp+1) + rand(amp+1) - amp
  394.       end
  395.       # 状态冲击解除
  396.       remove_states_shock
  397.       # HP 的伤害计算
  398.       self.hp -= self.damage
  399.       # 状态变化
  400.       @state_changed = false
  401.       states_plus(item.plus_state_set)
  402.       states_minus(item.minus_state_set)
  403.     end
  404.     # 不在战斗中的情况下
  405.     unless $game_temp.in_battle
  406.       # 伤害设置为 nil
  407.       self.damage = nil
  408.     end
  409.     # 过程结束
  410.     return effective
  411.   end
  412. end

  413. #==============================================================================
  414. # 本脚本来自www.66RPG.com,使用和转载请保留此信息
  415. #==============================================================================

复制代码

系统信息:本贴由楼主认可为正确答案,66RPG感谢您的热情解答~

嗯,不能浪费签名了,打广告。本人的悲剧作品:
坑化游戏《龙之影》      R剧《星空》     小游戏《剑与拳头》
回复 支持 反对

使用道具 举报

头像被屏蔽

Lv1.梦旅人 (禁止发言)

梦石
0
星屑
50
在线时间
0 小时
注册时间
2008-8-10
帖子
6
5
发表于 2008-8-10 02:54:52 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
签名被屏蔽
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2025-1-15 11:10

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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