Project1

标题: 如何在游戏进行时自定义技能名字? [打印本页]

作者: 7795593    时间: 2014-5-8 22:33
标题: 如何在游戏进行时自定义技能名字?
本帖最后由 7795593 于 2014-5-9 21:08 编辑

我在VX中用这个方法实现了。
首先通过这个事件输入名字,将名字储存于某个角色的名字里,自己建个不用的角色[偷懒]
然后事件中执行
$data_skills[240].name =$game_actors[100].name
save_data($data_skills, "Data/Skills.rvdata")

240是技能ID
100是角色ID

后来我想搬到来VA,但结果不行,有人可以帮帮我吗?

9090.JPG (8.98 KB, 下载次数: 45)

9090.JPG

作者: 喵呜喵5    时间: 2014-5-8 22:33
看不懂楼上在说什么系列…………
  1. =begin
  2. ===============================================================================
  3.   自定义技能名字 By喵呜喵5
  4. ===============================================================================

  5. 【说明】

  6.   让默认的名称输入处理可以用来自定义技能的名称
  7.   
  8.   首先先修改对应变量(变量2)的数值为技能的ID
  9.   
  10.   之后执行事件中名称输入处理即可修改对应技能的名字
  11.   
  12.   脚本需要一个变量(变量1)储存名字数据,请不要修改这个变量的数值
  13.   
  14. =end
  15. $m5script = {} if $m5script.nil?
  16. $m5script["M5SkillName"] = true
  17. module M5SkillName
  18. #==============================================================================
  19. # 设定部分
  20. #==============================================================================
  21.   
  22.   SWI = 0
  23.   
  24.   #控制本脚本是否使用的开关ID,不需要的话这里填0就可以了
  25.   
  26.   VAR = 1
  27.   
  28.   #储存数据的变量ID,请不要随意操作这个变量(变量1)
  29.   
  30.   VAR2 = 2
  31.   
  32.   #使脚本生效的变量ID,开始名称输入处理前请修改这个变量为技能的ID(变量2)
  33.   
  34. #==============================================================================
  35. # 脚本部分
  36. #==============================================================================
  37. end
  38. class RPG::Skill
  39.   def name
  40.     word = super   
  41.     $game_variables[M5SkillName::VAR] = {} \
  42.     if !$game_variables[M5SkillName::VAR].is_a?(Hash)
  43.     return word if !$game_variables[M5SkillName::VAR][id] || $game_switches[M5SkillName::SWI]
  44.     word = $game_variables[M5SkillName::VAR][id]
  45.   end
  46. end
  47. class Window_NameEdit
  48.   alias m5_20140510_initialize initialize
  49.   def initialize(actor, max_char)
  50.     [url=home.php?mod=space&uid=260100]@skill[/url] = $game_variables[M5SkillName::VAR2]
  51.     @first_flag = true
  52.     m5_20140510_initialize(actor, max_char)
  53.     @first_flag = false
  54.   end
  55.   alias m5_20140510_refresh refresh
  56.   def refresh
  57.     if @skill > 0 and @first_flag
  58.       @default_name = @name = $data_skills[@skill].name[0, @max_char]
  59.       [url=home.php?mod=space&uid=370741]@Index[/url] = @name.size
  60.     end
  61.     m5_20140510_refresh
  62.   end
  63.   alias m5_20140510_draw_actor_face draw_actor_face
  64.   def draw_actor_face(actor, x, y, enabled = true)
  65.     return if $game_variables[M5SkillName::VAR2] > 0
  66.     m5_20140510_draw_actor_face(actor, x, y, enabled)
  67.   end
  68. end
  69. class Scene_Name
  70.   alias m5_20140510_on_input_ok on_input_ok
  71.   def on_input_ok
  72.     id = $game_variables[M5SkillName::VAR2]
  73.     if id > 0
  74.       $game_variables[M5SkillName::VAR] = {} \
  75.       if !$game_variables[M5SkillName::VAR].is_a?(Hash)
  76.       $game_variables[M5SkillName::VAR][id] = @edit_window.name
  77.       $game_variables[M5SkillName::VAR2] = 0
  78.       return_scene
  79.     else
  80.       m5_20140510_on_input_ok
  81.     end
  82.   end
  83. end
复制代码

作者: 俄罗斯方块    时间: 2014-5-8 23:12
  1. $game_actors
复制代码
改成
  1. $data_actors
复制代码
即可
作者: taroxd    时间: 2014-5-9 20:26
  1. $data_skills[240].name =$data_actors[100].name
  2. save_data($data_skills, "Data/Skills.rvdata2")
复制代码
改动: $game_actors改为$data_actors,Skills.rvdata改为Skills.rvdata2
作者: taroxd    时间: 2014-5-9 20:50
To 楼上点评
本地测试没有问题。请不要在测试模式下运行。正常打开游戏是没有问题的。
因为测试模式结束后编辑器不会重新读取数据。
作者: 7795593    时间: 2014-5-9 21:09
taroxd 发表于 2014-5-9 20:50
To 楼上点评
本地测试没有问题。请不要在测试模式下运行。正常打开游戏是没有问题的。
因为测试模式结束后 ...



弹出这个东西来
作者: taroxd    时间: 2014-5-9 21:12
本帖最后由 taroxd 于 2014-5-9 21:22 编辑

我没用过那个脚本,不知道会有什么 冲突
实在不行用纯文本文件试试=。=
大概是这样(未测试)

  1. # 存储部分 在事件中执行
  2. File.write 'Data/Skill240', $game_actors[100].name

  3. # 读取部分 在第240号技能处备注<Skill240>
  4. class RPG::Skill
  5.   alias name_without_read_file name
  6.   def name
  7.     if note =~ /skill240/i
  8.       File.read 'Data/Skill240'
  9.     else
  10.       name_without_read_file
  11.     end
  12.   end
  13. end
复制代码
这样数据库编辑器中不会显示,但是游戏中应该就改变了
作者: sh0016    时间: 2014-5-10 13:20
用变量显示?技能名称直接指定变量,再在游戏中赋值。

不太清楚能不能在名字那边用控制符,但论坛上应该有相关脚本。




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