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

Project1

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

[已经解决] 【求助!】做了个赠送礼物的功能,但是脚本方面有些问题

[复制链接]

Lv1.梦旅人

梦石
0
星屑
55
在线时间
183 小时
注册时间
2005-12-25
帖子
215
跳转到指定楼层
1
发表于 2013-5-6 19:12:39 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 小徐 于 2013-5-7 00:28 编辑

预留了物品Id50~100放礼物类的物品,关键代码如下:
Game_Party:
  1. #--------------------------------------------------------------------------
  2.   # ● 判断物品是否是礼物
  3.   #     item_id : 物品 ID
  4.   #--------------------------------------------------------------------------
  5.   def item_is_gift?(item_id)
  6.     # 礼物物品ID介于50~100之间
  7.     if $data_items[@item.id].id<50||$data_items[@item.id].id>100
  8.       # 不能使用
  9.       return false
  10.     end
  11.   end
复制代码
Scene_Gift:(呼出赠送礼物的界面)
  1. unless $game_party.item_is_gift?(@item.id)
  2. # 演奏冻结 SE
  3. $game_system.se_play($data_system.buzzer_se)
  4. Mess_Text.write("这个物品不是礼物")
  5. return
  6. end
复制代码
运行情况如下:

左边的礼物ID为33,右边为59,但系统依然判断两个物品都不是礼物。

又尝试了将判断直接写在Scene里:
  1. if $data_items[@item.id].id<50||$data_items[@item.id].id>100
  2. # 演奏冻结 SE
  3. $game_system.se_play($data_system.buzzer_se)
  4. Mess_Text.write("这个物品不是礼物")
  5. return
  6. end
复制代码
成功。


但是不明白为什么啊为什么QAQ!!

更想用第一种的方法(可以扩展开去写别的东西……),但不明白问题出在哪里,求解QAQ


点评

LZ和我以前写脚本一样,走弯路:$data_items[@item.id].id < 50 囧~~~  发表于 2013-5-6 23:47

Lv1.梦旅人

梦石
0
星屑
50
在线时间
466 小时
注册时间
2013-2-8
帖子
424
2
发表于 2013-5-6 19:50:09 | 只看该作者
似乎参数传递错误
Game_Party
  1. #--------------------------------------------------------------------------
  2.   # ● 判断物品是否是礼物
  3.   #     item_id : 物品 ID
  4.   #--------------------------------------------------------------------------
  5.   def item_is_gift?(item_id)
  6.     # 礼物物品ID介于50~100之间
  7.     if item_id<50 || item_id>100
  8.       # 不能使用
  9.       return false
  10.     end
  11.   end
复制代码
即可....

点评

已经解决,同样感谢!!  发表于 2013-5-7 00:13
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
55
在线时间
183 小时
注册时间
2005-12-25
帖子
215
3
 楼主| 发表于 2013-5-6 20:59:46 | 只看该作者
本帖最后由 小徐 于 2013-5-6 21:04 编辑
SuperMario 发表于 2013-5-6 19:50
似乎参数传递错误
Game_Party即可....


测试了一下,依然无效……{:2_271:}

贴上完整代码,求帮忙改一下QAQ

分成三个脚本,插在main上面应该就行了,用$scene=Scene_Gift.new呼出

Game_Party
  1. #==============================================================================
  2. # ■ Game_Party
  3. #------------------------------------------------------------------------------
  4. #  处理同伴的类。包含金钱以及物品的信息。本类的实例
  5. # 请参考 $game_party。
  6. #==============================================================================

  7. class Game_Party
  8.   #--------------------------------------------------------------------------
  9.   # ● 定义实例变量
  10.   #--------------------------------------------------------------------------
  11.   attr_reader   :actors                   # 角色
  12.   attr_reader   :gold                     # 金钱
  13.   attr_reader   :steps                    # 步数
  14.   #--------------------------------------------------------------------------
  15.   # ● 初始化对像
  16.   #--------------------------------------------------------------------------
  17.   def initialize
  18.     # 建立角色序列
  19.     @actors = []
  20.     # 初始化金钱与步数
  21.     [url=home.php?mod=space&uid=236945]@gold[/url] = 0
  22.     @steps = 0
  23.     # 生成物品、武器、防具的所持数 hash
  24.     @items = {}
  25.     @weapons = {}
  26.     @armors = {}
  27.   end
  28.   #--------------------------------------------------------------------------
  29.   # ● 设置初期同伴
  30.   #--------------------------------------------------------------------------
  31.   def setup_starting_members
  32.     @actors = []
  33.     for i in $data_system.party_members
  34.       @actors.push($game_actors[i])
  35.     end
  36.   end
  37.   #--------------------------------------------------------------------------
  38.   # ● 设置战斗测试用同伴
  39.   #--------------------------------------------------------------------------
  40.   def setup_battle_test_members
  41.     @actors = []
  42.     for battler in $data_system.test_battlers
  43.       actor = $game_actors[battler.actor_id]
  44.       actor.level = battler.level
  45.       gain_weapon(battler.weapon_id, 1)
  46.       gain_armor(battler.armor1_id, 1)
  47.       gain_armor(battler.armor2_id, 1)
  48.       gain_armor(battler.armor3_id, 1)
  49.       gain_armor(battler.armor4_id, 1)
  50.       actor.equip(0, battler.weapon_id)
  51.       actor.equip(1, battler.armor1_id)
  52.       actor.equip(2, battler.armor2_id)
  53.       actor.equip(3, battler.armor3_id)
  54.       actor.equip(4, battler.armor4_id)
  55.       actor.recover_all
  56.       @actors.push(actor)
  57.     end
  58.     @items = {}
  59.     for i in 1...$data_items.size
  60.       if $data_items[i].name != ""
  61.         occasion = $data_items[i].occasion
  62.         if occasion == 0 or occasion == 1
  63.           @items[i] = 99
  64.         end
  65.       end
  66.     end
  67.   end
  68.   #--------------------------------------------------------------------------
  69.   # ● 同伴成员的还原
  70.   #--------------------------------------------------------------------------
  71.   def refresh
  72.     # 游戏数据载入后角色对像直接从 $game_actors
  73.     # 分离。
  74.     # 回避由于载入造成的角色再设置的问题。
  75.     new_actors = []
  76.     for i in [email protected]
  77.       if $data_actors[@actors[i].id] != nil
  78.         new_actors.push($game_actors[@actors[i].id])
  79.       end
  80.     end
  81.     @actors = new_actors
  82.   end
  83.   #--------------------------------------------------------------------------
  84.   # ● 获取最大等级
  85.   #--------------------------------------------------------------------------
  86.   def max_level
  87.     # 同伴人数为 0 的情况下
  88.     if @actors.size == 0
  89.       return 0
  90.     end
  91.     # 初始化本地变量 level
  92.     level = 0
  93.     # 求得同伴的最大等级
  94.     for actor in @actors
  95.       if level < actor.level
  96.         level = actor.level
  97.       end
  98.     end
  99.     return level
  100.   end
  101.   #--------------------------------------------------------------------------
  102.   # ● 加入同伴
  103.   #     actor_id : 角色 ID
  104.   #--------------------------------------------------------------------------
  105.   def add_actor(actor_id)
  106.     # 获取角色
  107.     actor = $game_actors[actor_id]
  108.     # 同伴人数未满 4 人、本角色不在队伍中的情况下
  109.     if @actors.size < 4 and not @actors.include?(actor)
  110.       # 添加角色
  111.       @actors.push(actor)
  112.       # 还原主角
  113.       $game_player.refresh
  114.     end
  115.   end
  116.   #--------------------------------------------------------------------------
  117.   # ● 角色离开
  118.   #     actor_id : 角色 ID
  119.   #--------------------------------------------------------------------------
  120.   def remove_actor(actor_id)
  121.     # 删除角色
  122.     @actors.delete($game_actors[actor_id])
  123.     # 还原主角
  124.     $game_player.refresh
  125.   end
  126.   #--------------------------------------------------------------------------
  127.   # ● 增加金钱 (减少)
  128.   #     n : 金额
  129.   #--------------------------------------------------------------------------
  130.   def gain_gold(n)
  131.     @gold = [[@gold + n, 0].max, 9999999].min
  132.   end
  133.   #--------------------------------------------------------------------------
  134.   # ● 减少金钱
  135.   #     n : 金额
  136.   #--------------------------------------------------------------------------
  137.   def lose_gold(n)
  138.     # 调用数值逆转 gain_gold
  139.     gain_gold(-n)
  140.   end
  141.   #--------------------------------------------------------------------------
  142.   # ● 增加步数
  143.   #--------------------------------------------------------------------------
  144.   def increase_steps
  145.     @steps = [@steps + 1, 9999999].min
  146.   end
  147.   #--------------------------------------------------------------------------
  148.   # ● 获取物品的所持数
  149.   #     item_id : 物品 ID
  150.   #--------------------------------------------------------------------------
  151.   def item_number(item_id)
  152.     # 如果 hash 个数数值不存在就返回 0
  153.     return @items.include?(item_id) ? @items[item_id] : 0
  154.   end
  155.   #--------------------------------------------------------------------------
  156.   # ● 获取武器所持数
  157.   #     weapon_id : 武器 ID
  158.   #--------------------------------------------------------------------------
  159.   def weapon_number(weapon_id)
  160.     # 如果 hash 个数数值不存在就返回 0
  161.     return @weapons.include?(weapon_id) ? @weapons[weapon_id] : 0
  162.   end
  163.   #--------------------------------------------------------------------------
  164.   # ● 获取防具所持数
  165.   #     armor_id : 防具 ID
  166.   #--------------------------------------------------------------------------
  167.   def armor_number(armor_id)
  168.     # 如果 hash 个数数值不存在就返回 0
  169.     return @armors.include?(armor_id) ? @armors[armor_id] : 0
  170.   end
  171.   #--------------------------------------------------------------------------
  172.   # ● 增加物品 (减少)
  173.   #     item_id : 物品 ID
  174.   #     n       : 个数
  175.   #--------------------------------------------------------------------------
  176.   def gain_item(item_id, n)
  177.     # 更新 hash 的个数数据
  178.     if item_id > 0
  179.       @items[item_id] = [[item_number(item_id) + n, 0].max, 99].min
  180.     end
  181.   end
  182.   #--------------------------------------------------------------------------
  183.   # ● 增加武器 (减少)
  184.   #     weapon_id : 武器 ID
  185.   #     n         : 个数
  186.   #--------------------------------------------------------------------------
  187.   def gain_weapon(weapon_id, n)
  188.     # 更新 hash 的个数数据
  189.     if weapon_id > 0
  190.       @weapons[weapon_id] = [[weapon_number(weapon_id) + n, 0].max, 99].min
  191.     end
  192.   end
  193.   #--------------------------------------------------------------------------
  194.   # ● 增加防具 (减少)
  195.   #     armor_id : 防具 ID
  196.   #     n        : 个数
  197.   #--------------------------------------------------------------------------
  198.   def gain_armor(armor_id, n)
  199.     # 更新 hash 的个数数据
  200.     if armor_id > 0
  201.       @armors[armor_id] = [[armor_number(armor_id) + n, 0].max, 99].min
  202.     end
  203.   end
  204.   #--------------------------------------------------------------------------
  205.   # ● 减少物品
  206.   #     item_id : 物品 ID
  207.   #     n       : 个数
  208.   #--------------------------------------------------------------------------
  209.   def lose_item(item_id, n)
  210.     # 调用 gain_item 的数值逆转
  211.     gain_item(item_id, -n)
  212.   end
  213.   #--------------------------------------------------------------------------
  214.   # ● 减少武器
  215.   #     weapon_id : 武器 ID
  216.   #     n         : 个数
  217.   #--------------------------------------------------------------------------
  218.   def lose_weapon(weapon_id, n)
  219.     # 调用 gain_weapon 的数值逆转
  220.     gain_weapon(weapon_id, -n)
  221.   end
  222.   #--------------------------------------------------------------------------
  223.   # ● 减少防具
  224.   #     armor_id : 防具 ID
  225.   #     n        : 个数
  226.   #--------------------------------------------------------------------------
  227.   def lose_armor(armor_id, n)
  228.     # 调用 gain_armor 的数值逆转
  229.     gain_armor(armor_id, -n)
  230.   end
  231.   #--------------------------------------------------------------------------
  232.   # ● 判断物品可以使用
  233.   #     item_id : 物品 ID
  234.   #--------------------------------------------------------------------------
  235.   def item_can_use?(item_id)
  236.     # 物品个数为 0 的情况
  237.     if item_number(item_id) == 0
  238.       # 不能使用
  239.       return false
  240.     end
  241.     # 获取可以使用的时候
  242.     occasion = $data_items[item_id].occasion
  243.     # 战斗的情况
  244.     if $game_temp.in_battle
  245.       # 可以使用时为 0 (平时) 或者是 1 (战斗时) 可以使用
  246.       return (occasion == 0 or occasion == 1)
  247.     end
  248.     # 可以使用时为 0 (平时) 或者是 2 (菜单时) 可以使用
  249.     return (occasion == 0 or occasion == 2)
  250.   end
  251.   #--------------------------------------------------------------------------
  252.   # ● 判断物品是否是礼物
  253.   #     item_id : 物品 ID
  254.   #--------------------------------------------------------------------------
  255.   def item_is_gift?(item_id)
  256.     # 礼物物品ID介于50~100之间
  257.     if item_id<50 || item_id>100
  258.       # 不能使用
  259.       return false
  260.     end
  261.   end
  262.   #--------------------------------------------------------------------------
  263.   # ● 清除全体的行动
  264.   #--------------------------------------------------------------------------
  265.   def clear_actions
  266.     # 清除全体同伴的行为
  267.     for actor in @actors
  268.       actor.current_action.clear
  269.     end
  270.   end
  271.   #--------------------------------------------------------------------------
  272.   # ● 可以输入命令的判定
  273.   #--------------------------------------------------------------------------
  274.   def inputable?
  275.     # 如果一可以输入命令就返回 true
  276.     for actor in @actors
  277.       if actor.inputable?
  278.         return true
  279.       end
  280.     end
  281.     return false
  282.   end
  283.   #--------------------------------------------------------------------------
  284.   # ● 全灭判定
  285.   #--------------------------------------------------------------------------
  286.   def all_dead?
  287.     # 同伴人数为 0 的情况下
  288.     if $game_party.actors.size == 0
  289.       return false
  290.     end
  291.     # 同伴中无人 HP 在 0 以上
  292.     for actor in @actors
  293.       if actor.hp > 0
  294.         return false
  295.       end
  296.     end
  297.     # 全灭
  298.     return true
  299.   end
  300.   #--------------------------------------------------------------------------
  301.   # ● 检查连续伤害 (地图用)
  302.   #--------------------------------------------------------------------------
  303.   def check_map_slip_damage
  304.     for actor in @actors
  305.       if actor.hp > 0 and actor.slip_damage?
  306.         actor.hp -= [actor.maxhp / 100, 1].max
  307.         if actor.hp == 0
  308.           $game_system.se_play($data_system.actor_collapse_se)
  309.         end
  310.         $game_screen.start_flash(Color.new(255,0,0,128), 4)
  311.         $game_temp.gameover = $game_party.all_dead?
  312.       end
  313.     end
  314.   end
  315.   #--------------------------------------------------------------------------
  316.   # ● 对像角色的随机确定
  317.   #     hp0 : 限制为 HP 0 的角色
  318.   #--------------------------------------------------------------------------
  319.   def random_target_actor(hp0 = false)
  320.     # 初始化轮流
  321.     roulette = []
  322.     # 循环
  323.     for actor in @actors
  324.       # 符合条件的场合
  325.       if (not hp0 and actor.exist?) or (hp0 and actor.hp0?)
  326.         # 获取角色职业的位置 [位置]
  327.         position = $data_classes[actor.class_id].position
  328.         # 前卫的话 n = 4、中卫的话 n = 3、后卫的话 n = 2
  329.         n = 4 - position
  330.         # 添加角色的轮流 n 回
  331.         n.times do
  332.           roulette.push(actor)
  333.         end
  334.       end
  335.     end
  336.     # 轮流大小为 0 的情况
  337.     if roulette.size == 0
  338.       return nil
  339.     end
  340.     # 转轮盘赌,决定角色
  341.     return roulette[rand(roulette.size)]
  342.   end
  343.   #--------------------------------------------------------------------------
  344.   # ● 对像角色的随机确定 (HP 0)
  345.   #--------------------------------------------------------------------------
  346.   def random_target_actor_hp0
  347.     return random_target_actor(true)
  348.   end
  349.   #--------------------------------------------------------------------------
  350.   # ● 对像角色的顺序确定
  351.   #     actor_index : 角色索引
  352.   #--------------------------------------------------------------------------
  353.   def smooth_target_actor(actor_index)
  354.     # 取得对像
  355.     actor = @actors[actor_index]
  356.     # 对像存在的情况下
  357.     if actor != nil and actor.exist?
  358.       return actor
  359.     end
  360.     # 循环
  361.     for actor in @actors
  362.       # 对像存在的情况下
  363.       if actor.exist?
  364.         return actor
  365.       end
  366.     end
  367.   end
  368. end
复制代码
Window_gift
  1. #==============================================================================
  2. # ■ Window_Item
  3. #------------------------------------------------------------------------------
  4. #  物品画面、战斗画面、显示浏览物品的窗口。
  5. #==============================================================================

  6. class Window_gift < Window_Selectable
  7.   #--------------------------------------------------------------------------
  8.   # ● 初始化对像
  9.   #--------------------------------------------------------------------------
  10.   def initialize
  11.     super(0, 200, 640, 416)
  12.     @column_max = 2
  13.     refresh
  14.     self.index = 0
  15.       self.y = 64
  16.       self.height = 200
  17.       self.back_opacity = 160
  18.     # 战斗中的情况下将窗口移至中央并将其半透明化
  19.     if $game_temp.in_battle
  20.       self.y = 64
  21.       self.height = 256
  22.       self.back_opacity = 160
  23.     end  
  24.   end
  25.   #--------------------------------------------------------------------------
  26.   # ● 获取物品
  27.   #--------------------------------------------------------------------------
  28.   def item
  29.     return @data[self.index]
  30.   end
  31.   #--------------------------------------------------------------------------
  32.   # ● 刷新
  33.   #--------------------------------------------------------------------------
  34.   def refresh
  35.     if self.contents != nil
  36.       self.contents.dispose
  37.       self.contents = nil
  38.     end
  39.     @data = []
  40.     # 添加物品
  41.     for i in 1...$data_items.size
  42.       if $game_party.item_number(i) > 0
  43.         @data.push($data_items[i])
  44.       end
  45.     end
  46.     # 如果项目数不是 0 就生成位图、重新描绘全部项目
  47.     @item_max = @data.size
  48.     if @item_max > 0
  49.       self.contents = Bitmap.new(width - 32, row_max * 32)
  50.       for i in 0...@item_max
  51.         draw_item(i)
  52.       end
  53.     end
  54.   end
  55.   #--------------------------------------------------------------------------
  56.   # ● 描绘项目
  57.   #     index : 项目编号
  58.   #--------------------------------------------------------------------------
  59.   def draw_item(index)
  60.     item = @data[index]
  61.     case item
  62.     when RPG::Item
  63.       number = $game_party.item_number(item.id)
  64.     when RPG::Weapon
  65.       number = $game_party.weapon_number(item.id)
  66.     when RPG::Armor
  67.       number = $game_party.armor_number(item.id)
  68.     end
  69.     if item.is_a?(RPG::Item) and
  70.        $game_party.item_can_use?(item.id)
  71.       self.contents.font.color = normal_color
  72.       else
  73.       self.contents.font.color = disabled_color
  74.     end
  75.     x = 4 + index % 2 * (288 + 32)
  76.     y = index / 2 * 32
  77.     rect = Rect.new(x, y, self.width / @column_max - 32, 32)
  78.     self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))
  79.     bitmap = RPG::Cache.icon(item.icon_name)
  80.     opacity = self.contents.font.color == normal_color ? 255 : 128
  81.     self.contents.blt(x, y + 4, bitmap, Rect.new(0, 0, 24, 24), opacity)
  82.     self.contents.draw_text(x + 28, y, 212, 32, item.name, 0)
  83.     self.contents.draw_text(x + 240, y, 16, 32, ":", 1)
  84.     self.contents.draw_text(x + 256, y, 24, 32, number.to_s, 2)
  85.   end
  86.   #--------------------------------------------------------------------------
  87.   # ● 刷新帮助文本
  88.   #--------------------------------------------------------------------------
  89.   def update_help
  90.     @help_window.set_text(self.item == nil ? "" : self.item.description)
  91.   end
  92. end
复制代码
Scene_Gift
  1. #==============================================================================
  2. # ■ Scene_Item
  3. #------------------------------------------------------------------------------
  4. #  处理物品画面的类。
  5. #==============================================================================

  6. class Scene_Gift
  7.   #--------------------------------------------------------------------------
  8.   # ● 主处理
  9.   #--------------------------------------------------------------------------
  10.   def main
  11.     [url=home.php?mod=space&uid=114926]@sprite[/url] =Spriteset_Map.new
  12.     # 生成帮助窗口、物品窗口
  13.     #@help_window = Window_Help.new
  14.     @item_window = Window_gift.new
  15.     # 关联帮助窗口
  16.     #@item_window.help_window = @help_window
  17.     # 生成目标窗口 (设置为不可见・不活动)
  18.     @target_window = Window_Target.new
  19.     @target_window.visible = false
  20.     @target_window.active = false
  21.     # 执行过度
  22.     Graphics.transition
  23.     # 主循环
  24.     loop do
  25.       # 刷新游戏画面
  26.       Graphics.update
  27.       # 刷新输入信息
  28.       Input.update
  29.       # 刷新画面
  30.       update
  31.       # 如果画面切换就中断循环
  32.       if $scene != self
  33.         break
  34.       end
  35.     end
  36.     # 装备过渡
  37.     Graphics.freeze
  38.     # 释放窗口
  39.     @sprite.dispose
  40.     #@help_window.dispose
  41.     @item_window.dispose
  42.     @target_window.dispose
  43.   end
  44.   #--------------------------------------------------------------------------
  45.   # ● 刷新画面
  46.   #--------------------------------------------------------------------------
  47.   def update
  48.     # 刷新窗口
  49.     #@help_window.update
  50.     @item_window.update
  51.     @target_window.update
  52.     # 物品窗口被激活的情况下: 调用 update_item
  53.     if @item_window.active
  54.       update_item
  55.       return
  56.     end
  57.     # 目标窗口被激活的情况下: 调用 update_target
  58.     if @target_window.active
  59.       update_target
  60.       return
  61.     end

  62.   end
  63.   #--------------------------------------------------------------------------
  64.   # ● 刷新画面 (物品窗口被激活的情况下)
  65.   #--------------------------------------------------------------------------
  66.   def update_item
  67.     # 按下 B 键的情况下
  68.     if Input.trigger?(Input::B)
  69.       # 演奏取消 SE
  70.       $game_system.se_play($data_system.cancel_se)
  71.       # 切换到菜单画面
  72.       $scene = Scene_Map.new
  73.       return
  74.     end
  75.     # 按下 C 键的情况下
  76.     if Input.trigger?(Input::C)
  77.       # 获取物品窗口当前选中的物品数据
  78.       @item = @item_window.item
  79.       # 不使用物品的情况下
  80.       unless @item.is_a?(RPG::Item)
  81.         # 演奏冻结 SE
  82.         $game_system.se_play($data_system.buzzer_se)
  83.         return
  84.       end
  85.       # 不能使用的情况下
  86.       unless $game_party.item_can_use?(@item.id)
  87.         # 演奏冻结 SE
  88.         $game_system.se_play($data_system.buzzer_se)
  89.         return
  90.       end
  91.      
  92.       #if $data_items[@item.id].id<50||$data_items[@item.id].id>100
  93.       # 不是礼物的情况下
  94.        unless $game_party.item_is_gift?(@item.id)
  95.         # 演奏冻结 SE
  96.         $game_system.se_play($data_system.buzzer_se)
  97.         Mess_Text.write("这个物品不是礼物")
  98.         return
  99.       end
  100.       # 演奏确定 SE
  101.       $game_system.se_play($data_system.decision_se)
  102.       # 效果范围是我方的情况下
  103.       if @item.scope >= 3
  104.         # 激活目标窗口
  105.         @item_window.active = false
  106.         @target_window.x = (@item_window.index + 1) % 2 * 304
  107.         @target_window.visible = true
  108.         @target_window.active = true
  109.         # 设置效果范围 (单体/全体) 的对应光标位置
  110.         if @item.scope == 4 || @item.scope == 6
  111.           @target_window.index = -1
  112.         else
  113.           @target_window.index = 0
  114.         end
  115.       # 效果在我方以外的情况下
  116.       else
  117.         # 公共事件 ID 有效的情况下
  118.         if @item.common_event_id > 0
  119.           # 预约调用公共事件
  120.           $game_temp.common_event_id = @item.common_event_id
  121.           # 演奏物品使用时的 SE
  122.           $game_system.se_play(@item.menu_se)
  123.           # 消耗品的情况下
  124.           if @item.consumable
  125.             # 使用的物品数减 1
  126.             $game_party.lose_item(@item.id, 1)
  127.             # 再描绘物品窗口的项目
  128.             @item_window.draw_item(@item_window.index)
  129.           end
  130.           # 切换到地图画面
  131.           $scene = Scene_Map.new
  132.           return
  133.         end
  134.       end
  135.       return
  136.     end
  137.   end
  138.   #--------------------------------------------------------------------------
  139.   # ● 刷新画面 (目标窗口被激活的情况下)
  140.   #--------------------------------------------------------------------------
  141.   def update_target
  142.     # 按下 B 键的情况下
  143.     if Input.trigger?(Input::B)
  144.       # 演奏取消 SE
  145.       $game_system.se_play($data_system.cancel_se)
  146.       # 由于物品用完而不能使用的场合
  147.       unless $game_party.item_can_use?(@item.id)
  148.         # 再次生成物品窗口的内容
  149.         @item_window.refresh
  150.       end
  151.       # 删除目标窗口
  152.       @item_window.active = true
  153.       @target_window.visible = false
  154.       @target_window.active = false
  155.       return
  156.     end
  157.     # 按下 C 键的情况下
  158.     if Input.trigger?(Input::C)
  159.       # 如果物品用完的情况下
  160.       if $game_party.item_number(@item.id) == 0
  161.         # 演奏冻结 SE
  162.         $game_system.se_play($data_system.buzzer_se)
  163.         return
  164.       end
  165.       # 目标是全体的情况下
  166.       if @target_window.index == -1
  167.         # 对同伴全体应用物品使用效果
  168.         used = false
  169.         for i in $game_party.actors
  170.           used |= i.item_effect(@item)
  171.         end
  172.       end
  173.       # 目标是单体的情况下
  174.       if @target_window.index >= 0
  175.         # 对目标角色应用物品的使用效果
  176.         target = $game_party.actors[@target_window.index]
  177.         used = target.item_effect(@item)
  178.       end
  179.       # 使用物品的情况下
  180.       if used
  181.         # 演奏物品使用时的 SE
  182.         $game_system.se_play(@item.menu_se)
  183.         # 消耗品的情况下
  184.         if @item.consumable
  185.           # 使用的物品数减 1
  186.           $game_party.lose_item(@item.id, 1)
  187.           # 再描绘物品窗口的项目
  188.           @item_window.draw_item(@item_window.index)
  189.         end
  190.         # 再生成目标窗口的内容
  191.         @target_window.refresh
  192.         # 全灭的情况下
  193.         if $game_party.all_dead?
  194.           # 切换到游戏结束画面
  195.           $scene = Scene_Gameover.new
  196.           return
  197.         end
  198.         # 公共事件 ID 有效的情况下
  199.         if @item.common_event_id > 0
  200.           # 预约调用公共事件
  201.           $game_temp.common_event_id = @item.common_event_id
  202.           # 切换到地图画面
  203.           $scene = Scene_Map.new
  204.           return
  205.         end
  206.       end
  207.       # 无法使用物品的情况下
  208.       unless used
  209.         # 演奏冻结 SE
  210.         $game_system.se_play($data_system.buzzer_se)
  211.       end
  212.       return
  213.     end
  214.   end
  215. end
复制代码
回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
33619
在线时间
5108 小时
注册时间
2012-11-19
帖子
4878

开拓者

4
发表于 2013-5-6 23:42:03 | 只看该作者
把沙发的改了一下,那个只判定不是礼物,没有判定是礼物的

正确的应该是这样:

RUBY 代码复制
  1. #--------------------------------------------------------------------------
  2.   # ● 判断物品是否是礼物
  3.   #     item_id : 物品 ID
  4.   #--------------------------------------------------------------------------
  5.   def item_is_gift?(item_id)
  6.     # 礼物物品ID介于50~100之间
  7.     if item_id < 50 || item_id > 100
  8.       # 不是礼物
  9.       return false
  10.     else
  11.       # 是礼物
  12.       return true
  13.     end
  14.   end



点评

正确!!太感谢了!!  发表于 2013-5-7 00:12
xp vx va mv  va mz 各类型脚本/插件定制
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-12-26 01:29

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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