Project1

标题: 脚本更改事件的名字 [打印本页]

作者: huajinyu123    时间: 2016-9-2 12:44
标题: 脚本更改事件的名字
我现在只知道这个代码
$game_map.events[1].name
但他只适用于当前地图,如果我要改其他地图上的事件的名字的话
比如map.id=1 map.id=2 的地图上的事件
代码该怎么写?
作者: 枫の叶    时间: 2016-9-2 14:42
楼主那个只能暂时更改,要永久更改可以试试下面这个

  1. class Game_Temp
  2.   def set_event_name(map_id, event_id, name)
  3.     return unless FileTest.exist?(sprintf("Data/Map%03d.rxdata", map_id))
  4.     map = load_data(sprintf("Data/Map%03d.rxdata", map_id))
  5.     return if map.events[event_id].nil?
  6.     map.events[event_id].name = name
  7.     save_data(map, sprintf("Data/Map%03d.rxdata", map_id))
  8.   end
  9. end
复制代码


用法:在事件->脚本里写:$game_temp.set_event_name(map_id, event_id, name)
map_id     地图ID
event_id   事件ID
name       新的事件名字
作者: RyanBern    时间: 2016-9-10 17:09
本帖最后由 RyanBern 于 2016-9-10 17:20 编辑

试试这个:关闭游戏再打开,更改后的名字不会保存。如果想在存档后生效,请将所有 Game_Temp, $game_temp 替换为 Game_System, $game_system
RUBY 代码复制
  1. class Game_Temp
  2.   def event_name_cache
  3.     @event_name_cache ||= {}
  4.     @event_name_cache
  5.   end
  6.   def set_event_name(map_id, event_id, name)
  7.     key = [map_id, event_id]
  8.     event_name_cache[key] = name
  9.   end
  10. end
  11.  
  12. class Game_Event
  13.   def name
  14.     key = [$game_map.map_id, id]
  15.     $game_temp.event_name_cache[key] || @event.name
  16.   end
  17. end

使用方法:
RUBY 代码复制
  1. $game_temp.set_event_name(地图ID, 事件ID, 新名称)





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