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

Project1

 找回密码
 注册会员
搜索
查看: 254|回复: 5

[讨论] 技能物品页面做选择项

[复制链接]

Lv4.逐梦者 (版主)

梦石
0
星屑
14703
在线时间
1610 小时
注册时间
2011-7-8
帖子
2463

开拓者

发表于 2019-8-24 02:07:28 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 guoxiaomi 于 2019-8-24 02:31 编辑

现在很流行工具人的说法,在RMXP中也可以简单的召唤工具人帮你完成一些任务……简单的说就是以下3步:

1. 工具人角色加入到队伍里
2. 呼叫技能页面,即Scene_Skill
3. 修改页面在按下 B 键的行为,改为移除工具人,并返回地图画面(Scene_Map)

当然在操作之前可以对工具人进行一些设定和修改,大致做法如下:
技能页面
1. 事件脚本,呼叫技能画面:
  1. $game_party.actors.push($game_actors[10])
  2. $scene = Scene_Skill.new(-1)
复制代码

2. 事件脚本,修改当前技能画面的 update_skill 方法
  1. class << $scene
  2.   alias _2019_update_skill update_skill
  3.   def update_skill
  4.     _2019_update_skill
  5.     if $scene.is_a?(Scene_Menu)
  6.       $scene = Scene_Map.new
  7.       $game_party.actors.pop
  8.     end
  9.   end
  10. end
复制代码

3. (可选)事件脚本,用于修改要显示的技能:
  1. skill = $data_skills[100]
  2. skill.name = "Choice 1"
  3. skill.description = "Reason For Choice 1"
  4. skill.common_event_id = 1
复制代码

此事件触发的效果是,从10号角色【工具人】的技能中选择一个使用,或者按下 B 键退回到地图画面。

当你需要玩家做出选择时就可以使用此方案,配合第 1 步直接修改 $data_skills[skill_id] 可以自定义显示不同的内容,以及对应的公共事件ID都可以修改。
Scene_Skill示意图:
捕获.PNG
哦,你问我 HP和SP怎么修改,$data_system.words.hp 和 $data_system.words.sp,改完了记得要改回来……

这里只是给喜欢用原始技能页面的人提供一个思路,启发来自于此贴的问题:https://rpg.blue/thread-477995-1-1.html

请注意,技能页面和下面提到的物品页面,除了按下 B 键返回地图而不是菜单页面外,和正常的页面没有区别,比如:对于单体目标会呼叫 target 窗口,不能使用的技能/物品会显示灰色等

物品页面
如果你更喜欢物品页面,可以这样操作:
1.
  1. $scene = Scene_Item.new
  2. class << $scene
  3.   def save_items
  4.     @items = $game_party.
  5.       instance_variable_get(:@items)
  6.   end
  7.   def load_items
  8.     $game_party.instance_variable_set(
  9.       :@items, @items
  10.     )
  11.   end
  12. end
复制代码

2.
  1. class << $scene
  2.   alias _toolsman_update_item update_item
  3.   def update_item
  4.     _toolsman_update_item
  5.     if $scene.is_a?(Scene_Menu)
  6.       load_items
  7.       $scene = Scene_Map.new
  8.     end
  9.   end
  10. end
复制代码

3. 新的物品仓库是 10 个 1 号物品,1 个 2 号物品
  1. $scene.save_items
  2. $game_party.instance_variable_set(:@items,
  3.   1 => 10, 2 => 1
  4. )
复制代码

评分

参与人数 1+1 收起 理由
灯笼菜刀王 + 1 又学一招

查看全部评分

熟悉rgss和ruby,xp区版主~
正在填坑:《膜拜组传奇》讲述膜拜组和学霸们的故事。
已上steam:与TXBD合作的Reformers《变革者》
* 战斗调用公共事件 *
* RGSOS 网络脚本 *

Lv5.捕梦者

梦石
0
星屑
22250
在线时间
2448 小时
注册时间
2006-11-10
帖子
5847
发表于 2019-8-24 10:25:05 | 显示全部楼层
原来还能这样用,  那改$data_XX的值能有效到什么程度呢? 比如临时改POWER, 那是只限这场战斗, $scene切换就恢复,  还是能持续到本次游戏结束?

点评

我目前是在scene的行动判定前把技能范围塞到一个变量里, 然后再用它去判定后面的=3=, 看来可以简化一下了  发表于 2019-8-24 16:54
我自己的游戏里会在行动前修改$data_skills的power和范围,然后在行动后还原,产生AOE化的效果  发表于 2019-8-24 15:58
持续到本次游戏结束,下次读档就还原了,所以要记得改回来,或者每次都重新设置  发表于 2019-8-24 15:57
祥瑞御免 ,家宅平安
回复 支持 反对

使用道具 举报

Lv4.逐梦者 (版主)

梦石
0
星屑
14703
在线时间
1610 小时
注册时间
2011-7-8
帖子
2463

开拓者

 楼主| 发表于 2019-8-24 16:23:21 | 显示全部楼层
本帖最后由 guoxiaomi 于 2019-8-24 16:25 编辑

插件脚本版(未测试):

RUBY 代码复制打印
  1. # encoding: utf-8
  2. # How to Use
  3. # 1. $scene = Scene_Skill_Toolsman(10)
  4. # 2. $scene = Scene_Item_Toolsman(1 => 10, 2 => 1)
  5.  
  6. class Scene_Skill_Toolsman < Scene_Skill
  7.   def initialize(actor_id)
  8.     @actor = $game_actors[actor_id]
  9.     $game_party.actors.push(@actor)
  10.     super(-1, 0)
  11.   end
  12.  
  13.   def update_skill
  14.     super
  15.     if $scene.is_a?(Scene_Menu)
  16.       $scene = Scene_Map.new
  17.       $game_party.actors.delete(@actor)
  18.     end
  19.   end
  20. end
  21.  
  22. class Scene_Item_Toolsman < Scene_Item
  23.   def initialize(items = {})
  24.     @items = $game_party.instance_variable_get(:@items)
  25.     $game_party.instance_variable_set(:@items, items)
  26.     super()
  27.   end
  28.  
  29.   def update_item
  30.     super
  31.     if $scene.is_a?(Scene_Menu)
  32.       $scene = Scene_Map.new
  33.       $game_party.instance_variable_set(:@items, @items)
  34.     end
  35.   end
  36. end
熟悉rgss和ruby,xp区版主~
正在填坑:《膜拜组传奇》讲述膜拜组和学霸们的故事。
已上steam:与TXBD合作的Reformers《变革者》
* 战斗调用公共事件 *
* RGSOS 网络脚本 *
回复 支持 反对

使用道具 举报

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

本版积分规则

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

站长信箱:fux2@moe9th.com|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2020-2-22 16:14

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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