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

Project1

 找回密码
 注册会员
搜索
查看: 3155|回复: 7
打印 上一主题 下一主题

[已经过期] 求教「进入区域时显示信息」脚本如何添加这么的一个效果..

[复制链接]

Lv5.捕梦者

梦石
0
星屑
26259
在线时间
5354 小时
注册时间
2016-3-8
帖子
1655
跳转到指定楼层
1
发表于 2020-12-13 21:38:17 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
脚本现在的效果是这样子:
进入A区域->显示信息->离开A区域->进入A区域->不显示信息

我想要这么的一个效果:
进入A区域->显示信息->离开A区域->进入A区域->显示信息

研究了很久的
@region_changed
@last_region
region_id
region_changed?
表示虽然看得懂原文那部分的逻辑...
但我要的效果的逻辑是要怎样弄却不懂了...

RUBY 代码复制
  1. #==============================================================================
  2.  
  3. # ** 区域名称
  4.  
  5. # Author: Hime
  6.  
  7. # Version: 1.1
  8.  
  9. # Date: May 5, 2012
  10.  
  11. #------------------------------------------------------------------------------
  12.  
  13. # ** Change log
  14.  
  15. # 1.1
  16.  
  17. #   -created a custom region window
  18.  
  19. #   -now shows the party leader by default
  20.  
  21. # 1.0 May 5, 2012
  22.  
  23. #   -initial release
  24.  
  25. #------------------------------------------------------------------------------
  26.  
  27. # 本脚本会自动追踪玩家所处的区域(通过区域id),当玩家进入新区域时显示一个信息
  28.  
  29. # 提示
  30.  
  31. #
  32.  
  33. # 使用方法,使用地图备注:
  34.  
  35. #    <region names>
  36.  
  37. #       1: 区域名称
  38.  
  39. #       2: 区域名称
  40.  
  41. #       10: 区域名称
  42.  
  43. #    </region names>
  44.  
  45. #
  46.  
  47. # 请将“区域名称”替换为其他文字
  48.  
  49. #------------------------------------------------------------------------------
  50.  
  51. # 本脚本和yanfly的“区域战斗背景”兼容,在下面设定。
  52.  
  53. #==============================================================================
  54.  
  55. $imported = {} if $imported.nil?
  56.  
  57.  
  58.  
  59. module Tsuki
  60.  
  61.   module Region_Names
  62.  
  63.     #进入新区域时显示的信息前半部分
  64.  
  65.     Entrance_Message = "已进入: "
  66.  
  67.  
  68.  
  69.     #你是否使用了 yanfly 闲谈窗口?
  70.  
  71.     Use_Gab = true
  72.  
  73.   end
  74.  
  75. end
  76.  
  77.  
  78.  
  79. module Tsuki
  80.  
  81.   module Regex
  82.  
  83.     module Map
  84.  
  85.       Region_Names_On = /<(?:REGION_NAMES|region names)>/i
  86.  
  87.       Region_Names_Off = /<\/(?:REGION_NAMES|region names)>/i
  88.  
  89.       Region_Names_ID = /(\d+):[ ](.*)/i
  90.  
  91.     end
  92.  
  93.   end
  94.  
  95. end
  96.  
  97.  
  98.  
  99. class RPG::Map
  100.  
  101.   attr_accessor :region_names
  102.  
  103.  
  104.  
  105.   def load_notetags_region_names
  106.  
  107.     @region_names = {}
  108.  
  109.     @region_battlebacks_on = false
  110.  
  111.     self.note.split(/[\r\n]+/).each do |line|
  112.  
  113.       case line
  114.  
  115.       when Tsuki::Regex::Map::Region_Names_On
  116.  
  117.         @region_names_on = true
  118.  
  119.       when Tsuki::Regex::Map::Region_Names_Off
  120.  
  121.  
  122.  
  123.         @region_names_on = false
  124.  
  125.       when Tsuki::Regex::Map::Region_Names_ID
  126.  
  127.         next unless @region_names_on
  128.  
  129.         rid = $1.to_i
  130.  
  131.         @region_names[rid] = "" if @region_names[rid].nil?
  132.  
  133.         @region_names[rid] = $2.to_s
  134.  
  135.       end
  136.  
  137.     end
  138.  
  139.   end
  140.  
  141. end
  142.  
  143.  
  144.  
  145. class Game_Map
  146.  
  147.  
  148.  
  149.   alias tsuki_regionNames_setup setup
  150.  
  151.   def setup(map_id)
  152.  
  153.     tsuki_regionNames_setup(map_id)
  154.  
  155.     @map.load_notetags_region_names
  156.  
  157.   end
  158.  
  159.  
  160.  
  161.   def region_names
  162.  
  163.     return @map.region_names
  164.  
  165.   end
  166.  
  167.  
  168.  
  169.   def region_name
  170.  
  171.     name = region_names[$game_player.region_id]
  172.  
  173.     return name if name else ""
  174.  
  175.   end
  176.  
  177. end
  178.  
  179.  
  180.  
  181. class Game_Player < Game_Character
  182.  
  183.  
  184.  
  185.   #attr_reader :last_region
  186.  
  187.   alias tsuki_regionNames_initialize initialize
  188.  
  189.   def initialize
  190.  
  191.     tsuki_regionNames_initialize
  192.  
  193.     @last_region = 0
  194.  
  195.     @region_changed = false
  196.  
  197.   end
  198.  
  199.  
  200.  
  201.   alias tsuki_regionNames_update update
  202.  
  203.   def update
  204.  
  205.     tsuki_regionNames_update
  206.  
  207.     @region_changed = @last_region != region_id && region_id != 0
  208.  
  209.     @last_region = region_id if region_id != 0
  210.  
  211.   end
  212.  
  213.  
  214.  
  215.   def region_changed?
  216.  
  217.     @region_changed
  218.  
  219.   end
  220.  
  221. end
  222.  
  223.  
  224.  
  225. class Scene_Map < Scene_Base
  226.  
  227.  
  228.  
  229.   alias tsuki_regionName_update_scene update_scene
  230.  
  231.   def update_scene
  232.  
  233.     tsuki_regionName_update_scene
  234.  
  235.     update_region_change unless scene_changing?
  236.  
  237.   end
  238.  
  239.  
  240.  
  241.   def update_region_change
  242.  
  243.     if $game_player.region_changed?
  244.  
  245.       message = Tsuki::Region_Names::Entrance_Message + $game_map.region_name
  246.  
  247.       if $imported["YEA-GabWindow"] && Tsuki::Region_Names::Use_Gab
  248.  
  249.         Game_Interpreter.new.gab(message, 0)
  250.  
  251.       else
  252.  
  253.         @region_name_window.open(message)
  254.  
  255.       end
  256.  
  257.     end
  258.  
  259.   end
  260.  
  261.  
  262.  
  263.   alias tsuki_regionName_create_all_windows create_all_windows
  264.  
  265.   def create_all_windows
  266.  
  267.     tsuki_regionName_create_all_windows
  268.  
  269.     create_region_location_window
  270.  
  271.   end
  272.  
  273.  
  274.  
  275.   #--------------------------------------------------------------------------
  276.  
  277.   # * Create Region Name Window
  278.  
  279.   #--------------------------------------------------------------------------
  280.  
  281.   def create_region_location_window
  282.  
  283.     @region_name_window = Window_RegionName.new
  284.  
  285.   end
  286.  
  287. end
  288.  
  289.  
  290.  
  291. #==============================================================================
  292.  
  293. # ** Window_RegionName
  294.  
  295. #------------------------------------------------------------------------------
  296.  
  297. #  This window displays the region name on the map.
  298.  
  299. #==============================================================================
  300.  
  301.  
  302.  
  303. class Window_RegionName < Window_Base
  304.  
  305.   #--------------------------------------------------------------------------
  306.  
  307.   # * Object Initialization
  308.  
  309.   #--------------------------------------------------------------------------
  310.  
  311.   def initialize
  312.  
  313.     super(300, 0, window_width, fitting_height(1))
  314.  
  315.     self.opacity = 0
  316.  
  317.     self.contents_opacity = 0
  318.  
  319.     @show_count = 0
  320.  
  321.     refresh
  322.  
  323.   end
  324.  
  325.   #--------------------------------------------------------------------------
  326.  
  327.   # * Get Window Width
  328.  
  329.   #--------------------------------------------------------------------------
  330.  
  331.   def window_width
  332.  
  333.     return 240
  334.  
  335.   end
  336.  
  337.   #--------------------------------------------------------------------------
  338.  
  339.   # * Frame Update
  340.  
  341.   #--------------------------------------------------------------------------
  342.  
  343.   def update
  344.  
  345.     super
  346.  
  347.     if @show_count > 0 && $game_map.name_display
  348.  
  349.       update_fadein
  350.  
  351.       @show_count -= 1
  352.  
  353.     else
  354.  
  355.       update_fadeout
  356.  
  357.     end
  358.  
  359.   end
  360.  
  361.   #--------------------------------------------------------------------------
  362.  
  363.   # * Update Fadein
  364.  
  365.   #--------------------------------------------------------------------------
  366.  
  367.   def update_fadein
  368.  
  369.     self.contents_opacity += 16
  370.  
  371.   end
  372.  
  373.   #--------------------------------------------------------------------------
  374.  
  375.   # * Update Fadeout
  376.  
  377.   #--------------------------------------------------------------------------
  378.  
  379.   def update_fadeout
  380.  
  381.     self.contents_opacity -= 16
  382.  
  383.   end
  384.  
  385.   #--------------------------------------------------------------------------
  386.  
  387.   # * Open Window
  388.  
  389.   #--------------------------------------------------------------------------
  390.  
  391.   def open(name)
  392.  
  393.     refresh(name)
  394.  
  395.     @show_count = 150
  396.  
  397.     self.contents_opacity = 0
  398.  
  399.     self
  400.  
  401.   end
  402.  
  403.   #--------------------------------------------------------------------------
  404.  
  405.   # * Close Window
  406.  
  407.   #--------------------------------------------------------------------------
  408.  
  409.   def close
  410.  
  411.     @show_count = 0
  412.  
  413.     self
  414.  
  415.   end
  416.  
  417.   #--------------------------------------------------------------------------
  418.  
  419.   # * Refresh
  420.  
  421.   #--------------------------------------------------------------------------
  422.  
  423.   def refresh(name="")
  424.  
  425.     contents.clear
  426.  
  427.     unless name.empty? || @show_count == 150
  428.  
  429.       draw_background(contents.rect)
  430.  
  431.       draw_text(contents.rect, name, 1)
  432.  
  433.     end
  434.  
  435.   end
  436.  
  437.   #--------------------------------------------------------------------------
  438.  
  439.   # * Draw Background
  440.  
  441.   #--------------------------------------------------------------------------
  442.  
  443.   def draw_background(rect)
  444.  
  445.     temp_rect = rect.clone
  446.  
  447.     temp_rect.width /= 2
  448.  
  449.     contents.gradient_fill_rect(temp_rect, back_color2, back_color1)
  450.  
  451.     temp_rect.x = temp_rect.width
  452.  
  453.     contents.gradient_fill_rect(temp_rect, back_color1, back_color2)
  454.  
  455.   end
  456.  
  457.   #--------------------------------------------------------------------------
  458.  
  459.   # * Get Background Color 1
  460.  
  461.   #--------------------------------------------------------------------------
  462.  
  463.   def back_color1
  464.  
  465.     Color.new(0, 0, 0, 192)
  466.  
  467.   end
  468.  
  469.   #--------------------------------------------------------------------------
  470.  
  471.   # * Get Background Color 2
  472.  
  473.   #--------------------------------------------------------------------------
  474.  
  475.   def back_color2
  476.  
  477.     Color.new(0, 0, 0, 0)
  478.  
  479.   end
  480.  
  481. end

评分

参与人数 1星屑 +300 收起 理由
fux2 + 300 退回

查看全部评分

Lv5.捕梦者

梦石
0
星屑
26259
在线时间
5354 小时
注册时间
2016-3-8
帖子
1655
2
 楼主| 发表于 2020-12-13 21:58:48 | 只看该作者
啊这...
原来是因为我把Use_Gab设成了true的关系...
设成false就解决问题了...
@fux2 申请退回悬赏星屑

点评

已经过期?已经解決才是吧...  发表于 2020-12-15 22:42
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1107
在线时间
126 小时
注册时间
2020-11-27
帖子
51
3
发表于 2021-2-23 12:16:06 | 只看该作者
我来!
  1. #==============================================================================
  2. # +++ MOG - 事件感应范围 (v1.0) +++
  3. #==============================================================================
  4. # By Moghunter
  5. # https://atelierrgss.wordpress.com/
  6. #==============================================================================
  7. # 在角色接近事件时可以让事件做出不同的动作。
  8. #===============================================================================
  9. # - 使用方式
  10. # 在可以感应角色的事件的事件页中新建一个事件页,并设定出现条件为"独立开关D"
  11. # 开启时。该事件页就会在角色进入事件感应范围时被触发。
  12. #
  13. # 事件名中添加:
  14. #
  15. # <SensorX>
  16. #
  17. # X = 感应的范围
  18. #
  19. #===============================================================================
  20. module MOG_EVENT_SENSOR
  21.   #当角色进入事件感应范围时,触发事件的独立开关.
  22.   SENSOR_SELF_SWITCH = "D"
  23. end

  24. #===============================================================================
  25. # ■ GAME EVENT
  26. #===============================================================================
  27. class Game_Event < Game_Character
  28.   
  29.   attr_reader   :sensor_range
  30.   
  31.   #--------------------------------------------------------------------------
  32.   # ● Initialize
  33.   #--------------------------------------------------------------------------            
  34.   alias mog_event_sensor_initialize initialize
  35.   def initialize(map_id, event)
  36.       mog_event_sensor_initialize(map_id, event)
  37.       setup_event_sensor
  38.   end
  39.   
  40.   #--------------------------------------------------------------------------
  41.   # ● Setup Event Sensor
  42.   #--------------------------------------------------------------------------         
  43.   def setup_event_sensor
  44.       @sensor_range =  @event.name =~ /<Sensor(\d+)>/ ? $1.to_i : 0
  45.   end  
  46.   
  47.   #--------------------------------------------------------------------------
  48.   # ● Update
  49.   #--------------------------------------------------------------------------            
  50.   alias mog_event_sensor_update update
  51.   def update
  52.       mog_event_sensor_update
  53.       update_event_sensor
  54.   end  
  55.   
  56.   #--------------------------------------------------------------------------
  57.   # ● Update Sensor
  58.   #--------------------------------------------------------------------------        
  59.   def update_event_sensor
  60.       return if @sensor_range == 0
  61.       distance = ($game_player.x - self.x).abs + ($game_player.y - self.y).abs
  62.       enable   = (distance <= @sensor_range)
  63.       key = [$game_map.map_id, self.id, MOG_EVENT_SENSOR::SENSOR_SELF_SWITCH]
  64.       last_enable = $game_self_switches[key]
  65.       execute_sensor_effect(enable,key) if enable != last_enable
  66.     end

  67.   #--------------------------------------------------------------------------
  68.   # ● Execute_Sensor Effect
  69.   #--------------------------------------------------------------------------            
  70.   def execute_sensor_effect(enable,key)      
  71.       @pattern = 0 ; @pattern_count = 0               
  72.       $game_self_switches[key] = enable ;  self.refresh
  73.   end
  74.    
  75. end

  76. $mog_rgss3_event_sensor = true
复制代码
回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
26259
在线时间
5354 小时
注册时间
2016-3-8
帖子
1655
4
 楼主| 发表于 2021-2-23 12:24:01 | 只看该作者
本帖最后由 alexncf125 于 2021-2-23 12:27 编辑


你来什么个来...
没看到问题经已解決了么...

再说你这回答的脚本能解決问题?
我看不到能解決~因为问题不涉及事件, 你丟个"事件感应范围"脚本上来, 明显完全没作用
回复 支持 反对

使用道具 举报

Lv6.析梦学徒

老鹰

梦石
40
星屑
34720
在线时间
6739 小时
注册时间
2012-5-26
帖子
3259

极短24评委极短23参与极短22参与极短21评委老司机慢点开短篇十吟唱者组别冠军开拓者剧作品鉴家

5
发表于 2021-2-23 15:49:34 | 只看该作者
大概只要把 209行 的@last_region = region_id if region_id != 0 条件限制去掉

因为只有进入新区域时,才刷新存储已显示的区域
这样就导致反复进出某一个区域时,提示信息只会显示第一次

所以只要进入空区域也能刷新文字就行?
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1107
在线时间
126 小时
注册时间
2020-11-27
帖子
51
6
发表于 2021-2-23 15:53:56 | 只看该作者
alexncf125 发表于 2021-2-23 12:24
你来什么个来...
没看到问题经已解決了么...

法克如
回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
26259
在线时间
5354 小时
注册时间
2016-3-8
帖子
1655
7
 楼主| 发表于 2021-2-23 17:50:26 | 只看该作者
本帖最后由 alexncf125 于 2021-2-23 17:59 编辑
百里_飞柳 发表于 2021-2-23 15:49
大概只要把 209行 的@last_region = region_id if region_id != 0 条件限制去掉

因为只有进入新区域时,才 ...


怎么连大佬您也来回复...
我明明都已经说了两遍"问题经已自行解決"啦...

可能是因为我没贴出解決方法, 所以你们以为还未解決

那么我最后再说一次好了...
1.把Use_Gab设成false
2.@last_region = region_id if region_id != 0 的 0 改成 @last_region
3.message = Tsuki::Region_Names::Entrance_Message + $game_map.region_name上方加句return if $game_map.region_name.empty?
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-16 00:37

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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