Project1

标题: 如何在物品公共事件中获得使用者的id? [打印本页]

作者: szzyc0    时间: 2014-1-11 21:12
标题: 如何在物品公共事件中获得使用者的id?
本帖最后由 szzyc0 于 2014-1-12 11:26 编辑

要$userid这个变量为使用者的变量,当不同的人使用这个物品时,我可以通过条件分歧$userid变量来执行不同的命令
我要的是在战斗中可用的脚本。
举个例子,有一个物品叫“魔法词典”,它的范围是无,使用时机是战斗中,指向3号公共事件。
这一回合,4个队友命令都是使用“魔法词典”,然后不同的人使用的时候效果不一样。
因为我通过分歧$userid这个变量让不同的使用者弄出了不同的效果。
罢了,这个问题我自己解决了,请X了这个帖子吧
作者: 恐惧剑刃    时间: 2014-1-11 21:25
本帖最后由 恋′挂机 于 2014-1-11 21:48 编辑

放在main前
  1. #==============================================================================
  2. # ■ Scene_Item
  3. #------------------------------------------------------------------------------
  4. #  处理物品画面的类。
  5. #==============================================================================

  6. class Scene_Item
  7.   #--------------------------------------------------------------------------
  8.   # ● 刷新画面 (目标窗口被激活的情况下)
  9.   #--------------------------------------------------------------------------
  10.   def update_target
  11.     # 按下 B 键的情况下
  12.     if Input.trigger?(Input::B)
  13.       # 演奏取消 SE
  14.       $game_system.se_play($data_system.cancel_se)
  15.       # 由于物品用完而不能使用的场合
  16.       unless $game_party.item_can_use?(@item.id)
  17.         # 再次生成物品窗口的内容
  18.         @item_window.refresh
  19.       end
  20.       # 删除目标窗口
  21.       @item_window.active = true
  22.       @target_window.visible = false
  23.       @target_window.active = false
  24.       return
  25.     end
  26.     # 按下 C 键的情况下
  27.     if Input.trigger?(Input::C)
  28.       # 如果物品用完的情况下
  29.       if $game_party.item_number(@item.id) == 0
  30.         # 演奏冻结 SE
  31.         $game_system.se_play($data_system.buzzer_se)
  32.         return
  33.       end
  34.       # 目标是全体的情况下
  35.       if @target_window.index == -1
  36.         # 对同伴全体应用物品使用效果
  37.         used = false
  38.         for i in $game_party.actors
  39.           used |= i.item_effect(@item)
  40.         end
  41.       end
  42.       # 目标是单体的情况下
  43.       if @target_window.index >= 0
  44.         # 对目标角色应用物品的使用效果
  45.         target = $game_party.actors[@target_window.index]
  46.         $userid = target.id
  47.         used = target.item_effect(@item)
  48.       end
  49.       # 使用物品的情况下
  50.       if used
  51.         # 演奏物品使用时的 SE
  52.         $game_system.se_play(@item.menu_se)
  53.         # 消耗品的情况下
  54.         if @item.consumable
  55.           # 使用的物品数减 1
  56.           $game_party.lose_item(@item.id, 1)
  57.           # 再描绘物品窗口的项目
  58.           @item_window.draw_item(@item_window.index)
  59.         end
  60.         # 再生成目标窗口的内容
  61.         @target_window.refresh
  62.         # 全灭的情况下
  63.         if $game_party.all_dead?
  64.           # 切换到游戏结束画面
  65.           $scene = Scene_Gameover.new
  66.           return
  67.         end
  68.         # 公共事件 ID 有效的情况下
  69.         if @item.common_event_id > 0
  70.           # 预约调用公共事件
  71.           $game_temp.common_event_id = @item.common_event_id
  72.           # 切换到地图画面
  73.           $scene = Scene_Map.new
  74.           return
  75.         end
  76.       end
  77.       # 无法使用物品的情况下
  78.       unless used
  79.         # 演奏冻结 SE
  80.         $game_system.se_play($data_system.buzzer_se)
  81.       end
  82.       return
  83.     end
  84.   end
  85. end
复制代码
战斗中
  1. #==============================================================================
  2. # ■ Arrow_Actor
  3. #------------------------------------------------------------------------------
  4. #  选择角色的箭头光标。本类继承 Arrow_Base
  5. # 类。
  6. #==============================================================================
  7. class Scene_Battle
  8.   attr_reader   :actor_index
  9. end
  10. class Arrow_Actor < Arrow_Base
  11.   #--------------------------------------------------------------------------
  12.   # ● 刷新画面
  13.   #--------------------------------------------------------------------------
  14.   def update
  15.     ####################
  16.     $userid = $game_party.actors[$scene.actor_index].id
  17.     p $userid
  18.     ####################
  19.     super
  20.     # 光标右
  21.     if Input.repeat?(Input::RIGHT)
  22.       $game_system.se_play($data_system.cursor_se)
  23.       [url=home.php?mod=space&uid=370741]@Index[/url] += 1
  24.       @index %= $game_party.actors.size
  25.     end
  26.     # 光标左
  27.     if Input.repeat?(Input::LEFT)
  28.       $game_system.se_play($data_system.cursor_se)
  29.       @index += $game_party.actors.size - 1
  30.       @index %= $game_party.actors.size
  31.     end
  32.     # 设置活动块坐标
  33.     if self.actor != nil
  34.       self.x = self.actor.screen_x
  35.       self.y = self.actor.screen_y
  36.     end
  37.   end
  38. end
复制代码

作者: shabi    时间: 2014-1-12 09:30
创建一种物品,它会给使用者附加状态,根据哪个人有此状态条件分歧执行命令。
作者: szzyc0    时间: 2014-1-12 11:25
够了,我自己解决了。




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