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

Project1

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

[已经解决] 问个关于技能对象的问题

[复制链接]

Lv2.观梦者

梦石
0
星屑
509
在线时间
46 小时
注册时间
2021-3-17
帖子
30
发表于 2021-5-3 15:22:39 | 显示全部楼层 |阅读模式

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

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

x
事情是这样的:我设置一个技能,可以在平时使用,效果是不遇敌,技能对象设置成了“无”,然后我想在战斗中也能使用该技能,效果为提升我方单体回避率。一言以蔽之就是如何使技能在战斗与非战斗时对象范围不一样。通过脚本应该能实现的的吧,就发帖问了,拜托~~~~~~

Lv3.寻梦者

梦石
0
星屑
3447
在线时间
285 小时
注册时间
2013-10-13
帖子
262

开拓者

发表于 2021-5-3 18:25:00 | 显示全部楼层
不是很明白,非战斗中就算设置技能对象也可以实现不遇敌吧,也有可能是我的理解错误(
一次放纵自己违反规则以后,就会养成习惯,一旦变成习惯了想改也改不了了
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
2781
在线时间
441 小时
注册时间
2016-9-26
帖子
1222
发表于 2021-5-3 18:35:01 | 显示全部楼层
你可以将这个技能变成两个技能(阴阳两个面)
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
7926
在线时间
1181 小时
注册时间
2007-7-29
帖子
2055
发表于 2021-5-3 23:00:45 | 显示全部楼层
最好的方法就是分成两个技能,然后用脚本实现在战斗时替换技能,这样就可以区分战斗与非战斗时效果。
使用以下重定义技能脚本就可实现,例子是1号技能在战斗时会替换成80号,可以自行追加与更改。
  1. class Game_Actor < Game_Battler
  2.   def skills
  3.     # 非战斗技能编号 => 战斗时技能编号
  4.     skillDef = {
  5.       1 => 80
  6.     }
  7.     skills = []
  8.     @skills.each{|skillId|
  9.       if $scene.is_a?(Scene_Battle) and skillDef[skillId] != nil
  10.         skills.push(skillDef[skillId])
  11.       else
  12.         skills.push(skillId)
  13.       end
  14.     }
  15.     return skills
  16.   end
  17. end
复制代码

评分

参与人数 1星屑 +50 收起 理由
RyanBern + 50 认可答案

查看全部评分

回复 支持 1 反对 0

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
6483
在线时间
119 小时
注册时间
2020-1-8
帖子
234
发表于 2021-5-4 06:54:45 | 显示全部楼层
本帖最后由 RPGzh500223 于 2021-5-4 07:06 编辑

如果是多个这种技能,使用楼上的会好点。
说明:
首先说明,并没有更改技能 战时与非战时的 的 对象范围,只是现实你描述的效果。
假设为100号特技,数据库中设置按 战时所需效果(可能使用:平时)进行设置, 可参考 056:闪避;
至于非战时使用时,不会执行 数据库 的 效果,至于技能对象“无”,就当是无需选择目标,
该技能为开关效果,用1次禁止遇敌,再用1次开启遇敌。
脚本:
脚本插入的地方——默认RMXP脚本  Scene_Skill 的 98行,注释 # 效果范围是我方的情况下 的上面。

  1.       if @skill.id == 100
  2.         $scene = Scene_Map.new
  3.         bool = $game_system.encounter_disabled
  4.         $game_system.encounter_disabled = !bool
  5.         $game_player.make_encounter_count
  6.         $game_temp.message_text = bool ? "开始遇敌" : "禁止遇敌"
  7.         $game_system.map_interpreter.instance_variable_set(
  8.           "@message_waiting", true)
  9.         $game_temp.message_proc = Proc.new { @message_waiting = false }
  10.         return
  11.       end
复制代码



评分

参与人数 1星屑 +50 收起 理由
RyanBern + 50 认可答案

查看全部评分

回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
509
在线时间
46 小时
注册时间
2021-3-17
帖子
30
 楼主| 发表于 2021-5-4 18:32:20 | 显示全部楼层
感谢两支招,问题解决了
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-3-29 23:46

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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