注册会员 登录
Project1 返回首页

喵呜喵5的树洞 https://rpg.blue/?291206 [收藏] [复制] [分享] [RSS]

日志

【脚本】自定义技能名字

热度 7已有 2187 次阅读2014-5-13 18:09 |个人分类:脚本| 技能

=begin
===============================================================================
  自定义技能名字 By喵呜喵5
===============================================================================

【说明】

  自定义某个技能的名称

  在事件指令的脚本中输入

    M5SN20160119[技能的ID] = "技能的名称"

  可以自定义指定 ID 的技能

  (技能名称前后的英文引号不可省略)

  在事件指令的脚本中输入

    M5SN20160119.set(技能的ID)

  可以调出名称输入界面来让玩家修改对应技能的名字

    M5SN20160119.set(技能的ID, 技能名字的最大长度)

  可以同时设置修改名称输入界面允许输入的技能名字的最大长度

  ※ RM 默认的名字输入窗口在名字长度的处理上存在BUG,因此请尽量不要设置太长的长度

=end
$m5script ||= {}; $m5script[:M5SN20160119] = 20160119
module M5SN20160119
#==============================================================================
# 设定部分
#==============================================================================

  SWI = 0

  # 控制是否显示自定义名称的开关ID,不需要的话这里填0就可以了

  CHAR = 6

  # 名称输入界面技能名的默认最大长度

  FACE_NAME = 'Spiritual'

  # 显示在名称输入界面的脸图的文件名,不需要的话,请填写 ''

  FACE_INDEX = 4

  # 显示在名称输入界面的脸图的位置编号

#==============================================================================
# 脚本部分
#==============================================================================
  class Scene < Scene_Name
    def prepare(skill_id, max_char)
      @skill_id = skill_id
      (actor = RPG::Actor.new).name = $data_skills[@skill_id].name
      actor.face_name, actor.face_index = FACE_NAME, FACE_INDEX
      super($data_actors.size, max_char)
      $data_actors << actor
    end
    def start
      super
      @edit_window.instance_variable_set(:@default_name,
        $data_skills[@skill_id].m5_20160119_name)
    end
    def on_input_ok
      M5SN20160119[@skill_id] = @edit_window.name
      super
      $data_actors.pop
    end
  end
  class << self
    def []=(id,value); $game_system.m5_20160119_skill_name[id] = value; end
    def [](id);        $game_system.m5_20160119_skill_name[id]; end
    def set(id, max = CHAR)
      SceneManager.call(Scene)
      SceneManager.scene.prepare(id, max)
      Fiber.yield
    end
  end
end
class RPG::Skill
  instance_methods(false).include?(:name) || (def name; super; end)
  alias m5_20160119_name name
  def name
    return m5_20160119_name if $game_switches[M5SN20160119::SWI]
    M5SN20160119[id] || m5_20160119_name
  end
end
class Game_System
  attr_reader :m5_20160119_skill_name
  alias m5_20160119_initialize initialize
  def initialize
    m5_20160119_initialize
    @m5_20160119_skill_name = {}
  end
end
2

鸡蛋

鲜花

刚表态过的朋友 (2 人)

发表评论 评论 (8 个评论)

回复 moy 2014-6-8 11:57
比我写的温和多了233,我自己写的会直接覆盖数据库名字,不过使用起来使用的是改了一点点的Scene_Skill进行技能选择,我觉得你也可以考虑用那种可视化的选择。(如果不是剧情需要的话)
回复 喵呜喵5 2014-6-8 12:01
moy: 比我写的温和多了233,我自己写的会直接覆盖数据库名字,不过使用起来使用的是改了一点点的Scene_Skill进行技能选择,我觉得你也可以考虑用那种可视化的选择。( ...
用Scene_Skill来选择需要自定义姓名的技能最后还是要进入名称编辑界面的……吧?
回复 moy 2014-6-8 12:09
喵呜喵5: 用Scene_Skill来选择需要自定义姓名的技能最后还是要进入名称编辑界面的……吧?
只是选择的区别而已,我没有说不要用Scene_Name……
回复 喵呜喵5 2014-6-8 12:16
moy: 只是选择的区别而已,我没有说不要用Scene_Name……
用一个scene列出所有的技能的话可能涉及的麻烦就是这个scene中需要显示哪些技能,允许哪些技能的名字进行修改,会不会出现在这个城市不能修改但在那个城市允许修改的技能等等太多情况了……
对于没有脚本知识的人来说直观的在事件中设置比起在脚本中设置来的简单干净粗暴
回复 moy 2014-6-8 12:22
喵呜喵5: 用一个scene列出所有的技能的话可能涉及的麻烦就是这个scene中需要显示哪些技能,允许哪些技能的名字进行修改,会不会出现在这个城市不能修改但在那个城市允许修 ...
嗯嗯,用途不太一样的感觉。可视化的并不是剧情需要而改的,而是为了让玩家能改而改的(X
纯属我的恶趣味233
回复 alexncf125 2022-9-20 00:09
大佬能不能把RPG::Actor.new给改一改......因为要是用了比如BlackMorning称号脚本(@unlocked_titles = actor.unlocked_titles.clone)或Dekita宝可梦核心(g = actor.gender_ratio; return if g[0].nil?)等的很多脚本......只要一有类似actor.xxx.yyy/actor.xxx[yyy]的代码......就会报错xxx是nil值......
回复 喵呜喵5 2022-9-21 23:53
alexncf125: 大佬能不能把RPG::Actor.new给改一改......因为要是用了比如BlackMorning称号脚本(@unlocked_titles = actor.unlocked_titles.clone)或Dekita宝可梦核心(g = act ...
https://script.miaowm5.com/post/81
已更新
回复 alexncf125 2022-9-21 23:58
谢谢大佬~

facelist doodle 涂鸦笔

您需要登录后才可以评论 登录 | 注册会员

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

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

GMT+8, 2024-4-29 15:09

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

返回顶部