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

Project1

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

[已经解决] 如何在物品公共事件中获得使用者的id?

[复制链接]

Lv2.观梦者

梦石
0
星屑
458
在线时间
182 小时
注册时间
2009-7-12
帖子
155
跳转到指定楼层
1
发表于 2014-1-11 21:12:27 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 szzyc0 于 2014-1-12 11:26 编辑

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

点评

比如说分歧什么?执行什么东西?  发表于 2014-1-11 23:17
希望能具体描述下想要的效果  发表于 2014-1-11 23:17
看 47 行 战斗中一样有效  发表于 2014-1-11 21:31

评分

参与人数 1星屑 -35 收起 理由
怪蜀黍 -35 擅自编辑标签的方式结帖

查看全部评分

Lv1.梦旅人

薄凉看客

梦石
0
星屑
50
在线时间
1269 小时
注册时间
2010-6-20
帖子
1316
2
发表于 2014-1-11 21:25:16 | 只看该作者
本帖最后由 恋′挂机 于 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
复制代码

点评

再说,如果像你给我的脚本,不同的人在同一回合使用了该物品,那么最终带入的ID是最后一个人的ID所有人执行的公共事件都是一样的。  发表于 2014-1-11 21:53
你搞错了……不是“对不同的人使用”,而是“使用者不同”  发表于 2014-1-11 21:53
能不能直接告诉我改了哪里……全换可能会冲突。 另外这个脚本在战斗中有效吗?  发表于 2014-1-11 21:30

评分

参与人数 1星屑 +100 收起 理由
怪蜀黍 + 100 热心帮助糖

查看全部评分

回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
121 小时
注册时间
2013-9-19
帖子
163
3
发表于 2014-1-12 09:30:27 | 只看该作者
创建一种物品,它会给使用者附加状态,根据哪个人有此状态条件分歧执行命令。

点评

如果多个人都在同一回合使用了该物品呢?  发表于 2014-1-12 10:33
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
458
在线时间
182 小时
注册时间
2009-7-12
帖子
155
4
 楼主| 发表于 2014-1-12 11:25:47 | 只看该作者
够了,我自己解决了。
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-9-30 09:19

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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