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

Project1

 找回密码
 注册会员
搜索
查看: 3286|回复: 7

[已经解决] 喵呜喵5大佬的显示变量脚本怎么区分不同角色的窗口

[复制链接]

Lv2.观梦者

梦石
0
星屑
386
在线时间
72 小时
注册时间
2018-6-1
帖子
10
发表于 2021-7-9 13:31:21 | 显示全部楼层 |阅读模式

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

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

x
喵呜喵5大佬的显示变量脚本
有个功能是在特定窗口显示变量或者图片
现在我设置的是状态窗口显示图片
但是打开所有角色的状态窗口都显示这一张图片
我想在不同角色的状态窗口显示不同的图片
也就是这一条SCENE: Scene_Status的设置怎么区分角色?


RUBY 代码复制
  1. =begin
  2.  
  3. ===============================================================================
  4.  
  5.   地图显示变量 By 喵呜喵5
  6.  
  7. ===============================================================================
  8.  
  9.  
  10.  
  11. 【说明】
  12.  
  13.  
  14.  
  15.   在地图上显示变量,支持许多的自定义操作
  16.  
  17.  
  18.  
  19. =end
  20.  
  21. $m5script ||= {};raise("需要喵呜喵5基础脚本的支持") unless $m5script[:M5Base]
  22.  
  23. $m5script[:M5Var20140815] = 20160307;M5script.version(20150706)
  24.  
  25. module M5Var20140815;VAR_CONFIG =[
  26.  
  27. =begin
  28.  
  29. #==============================================================================
  30.  
  31. #  设定部分
  32.  
  33. #==============================================================================
  34.  
  35.  
  36.  
  37.   下面的每一对大括号对应地图上的一个窗口,中间的内容就是窗口的属性
  38.  
  39.   具体的格式请参考下面给出的范例(※注意每大括号最后的逗号)
  40.  
  41.  
  42.  
  43.   添加内容的格式为:
  44.  
  45.  
  46.  
  47.     需要设置的属性: 属性的值 ,
  48.  
  49.  
  50.  
  51.   (※ 冒号和属性的值之间请加上空格,不要忘记每条设置最后的逗号)
  52.  
  53.  
  54.  
  55.   可以设置的属性如下:
  56.  
  57.  
  58.  
  59.   VAR      要显示的变量的ID
  60.  
  61.   X        窗口左上角的X坐标
  62.  
  63.   Y        窗口左上角的Y坐标
  64.  
  65.   X2       窗口右下角的X坐标
  66.  
  67.   Y2       窗口右下角的Y坐标
  68.  
  69.   Z        窗口的Z高度,可以为负数
  70.  
  71.            高度比较大的窗口将遮住高度比较低的窗口
  72.  
  73.   HINT1    在变量的数值前面显示的提示文字(前后要加英文引号)
  74.  
  75.   HINT2    在变量的数值后面显示的提示文字(前后要加英文引号)
  76.  
  77.   POSX     窗口文字的起始X坐标
  78.  
  79.   POSY     窗口文字的起始Y坐标
  80.  
  81.   BACK     窗口的背景图片,文件放在Graphics/System/下(前后要加英文引号)
  82.  
  83.            文件不存在时,窗口背景透明
  84.  
  85.   SX       背景图片的X坐标
  86.  
  87.   SY       背景图片的Y坐标
  88.  
  89.   SWI      窗口的开关ID,当对应ID的开关打开时不显示这个窗口
  90.  
  91.   INV_SWI  窗口的开关ID,当对应ID的开关【关闭】时不显示这个窗口
  92.  
  93.   EVAL     窗口显示的内容变为代码的返回值,VAR属性将被忽略(需要双引号)
  94.  
  95.            如果不懂意思的话请不要设置这个属性
  96.  
  97.   SCENE    窗口只在特定的 Scene 才显示,如果不懂意思的话请不要设置这个属性
  98.  
  99.  
  100.  
  101. =end
  102.  
  103.  
  104.  
  105.  
  106.  
  107.  
  108.   {
  109.  
  110.   SCENE: Scene_Status,
  111.  
  112.   BACK: "图片",
  113.  
  114.   },
  115.  
  116.  
  117.  
  118.  
  119.  
  120.   ] # 请不要删除这行
  121.  
  122.  
  123.  
  124.   Z = 200   # 如果窗口遮住其他不希望遮住的内容了,请调小这个数值
  125.  
  126.  
  127.  
  128.   SWI = nil      # 对应ID的开关打开时,关闭本脚本的功能,不在地图上显示变量,
  129.  
  130.                  # 这个全局开关优先于各个窗口单独设置的开关
  131.  
  132.                  # 我的其他需要本脚本支持的脚本也会受到这个开关的影响而失效
  133.  
  134.                  # 如果不需要这个开关的话,这里请填 nil
  135.  
  136.  
  137.  
  138.   INV_SWI = nil  # 对应ID的开关【关闭】时,关闭本脚本的功能,不在地图上显示变量,
  139.  
  140.                  # 这个全局开关优先于各个窗口单独设置的开关以及上面设置的开关
  141.  
  142.                  # 我的其他需要本脚本支持的脚本也会受到这个开关的影响而失效
  143.  
  144.                  # 如果不需要这个开关的话,这里请填 nil
  145.  
  146.  
  147.  
  148. #==============================================================================
  149.  
  150. #  设定结束
  151.  
  152. #==============================================================================
  153.  
  154. class Window_Var < M5script::Window_Var
  155.  
  156.   #--------------------------------------------------------------------------
  157.  
  158.   # ● 开始处理
  159.  
  160.   #--------------------------------------------------------------------------
  161.  
  162.   def initialize(config,cal)
  163.  
  164.     super(config,cal)
  165.  
  166.     update
  167.  
  168.     refresh if @config[:ONLY]
  169.  
  170.   end
  171.  
  172.   #--------------------------------------------------------------------------
  173.  
  174.   # ● 获取窗口的设置
  175.  
  176.   #--------------------------------------------------------------------------
  177.  
  178.   def get_config(config)
  179.  
  180.     super(config)
  181.  
  182.     @config[:Z] += Z
  183.  
  184.     @config[:HINT1] ||= ""
  185.  
  186.     @config[:HINT2] ||= ""
  187.  
  188.     @config[:POSX] ||= 0
  189.  
  190.     @config[:POSY] ||= 0
  191.  
  192.     return if @config[:EVAL]
  193.  
  194.     @config[:EVAL] = "$game_variables[#{@config[:VAR]}]"
  195.  
  196.   end
  197.  
  198.   #--------------------------------------------------------------------------
  199.  
  200.   # ● 更新
  201.  
  202.   #--------------------------------------------------------------------------
  203.  
  204.   def update
  205.  
  206.     super
  207.  
  208.     return if update_close_judge
  209.  
  210.     @background_sprite.opacity = 255 if @background_sprite and \
  211.  
  212.     @background_sprite.opacity != 255
  213.  
  214.     open if close?
  215.  
  216.     update_content unless @config[:ONLY]
  217.  
  218.   end
  219.  
  220.   #--------------------------------------------------------------------------
  221.  
  222.   # ● 更新窗口的关闭判断
  223.  
  224.   #--------------------------------------------------------------------------
  225.  
  226.   def update_close_judge
  227.  
  228.     if close_judge
  229.  
  230.       @background_sprite.opacity = 0 if @background_sprite and \
  231.  
  232.       @background_sprite.opacity != 0
  233.  
  234.       close if open?
  235.  
  236.       return true
  237.  
  238.     end
  239.  
  240.     false
  241.  
  242.   end
  243.  
  244.   #--------------------------------------------------------------------------
  245.  
  246.   # ● 窗口是否应该关闭? (true:关闭)
  247.  
  248.   #--------------------------------------------------------------------------
  249.  
  250.   def close_judge
  251.  
  252.     return true if INV_SWI && !$game_switches[INV_SWI]
  253.  
  254.     return true if SWI && $game_switches[SWI]
  255.  
  256.     return true if @config[:INV_SWI] && !$game_switches[@config[:INV_SWI]]
  257.  
  258.     return true if @config[:SWI] && $game_switches[@config[:SWI]]
  259.  
  260.     false
  261.  
  262.   end
  263.  
  264.   #--------------------------------------------------------------------------
  265.  
  266.   # ● 更新窗口内容
  267.  
  268.   #--------------------------------------------------------------------------
  269.  
  270.   def update_content
  271.  
  272.     cont = @cont
  273.  
  274.     begin
  275.  
  276.       @cont = eval(@config[:EVAL]).to_s
  277.  
  278.     rescue
  279.  
  280.       p "窗口:#{@config}","错误:#{$!.to_s}","追踪:#{$!.backtrace}"
  281.  
  282.       msgbox('地图显示变量脚本的某个窗口发生错误,错误信息已输出到控制台')
  283.  
  284.       exit
  285.  
  286.     end
  287.  
  288.     refresh unless cont == @cont
  289.  
  290.   end
  291.  
  292.   #--------------------------------------------------------------------------
  293.  
  294.   # ● 描绘文字
  295.  
  296.   #--------------------------------------------------------------------------
  297.  
  298.   def refresh
  299.  
  300.     if @config[:ONLY] then @word = "#{@config[:HINT1]}#{@config[:HINT2]}"
  301.  
  302.     else @word = "#{@config[:HINT1]}#{@cont.to_i}#{@config[:HINT2]}"
  303.  
  304.     end
  305.  
  306.     update_placement
  307.  
  308.     update_position
  309.  
  310.     draw_text_ex(@config[:POSX], @config[:POSY], @word)
  311.  
  312.   end
  313.  
  314. end
  315.  
  316. end # M5Var20140815
  317.  
  318. #--------------------------------------------------------------------------
  319.  
  320. # ● Scene_Base
  321.  
  322. #--------------------------------------------------------------------------
  323.  
  324. class Scene_Base
  325.  
  326.   #--------------------------------------------------------------------------
  327.  
  328.   # ● 生成窗口
  329.  
  330.   #--------------------------------------------------------------------------
  331.  
  332.   alias m5_20131103_start start
  333.  
  334.   def start
  335.  
  336.     m5_20131103_start
  337.  
  338.     @m5_20140815_cal_size_window = M5script::Window_Cal.new
  339.  
  340.     @m5_20140815_var_windows = []
  341.  
  342.     (M5Var20140815::VAR_CONFIG + self.class.m5_20150517_window).each do |config|
  343.  
  344.       next unless config
  345.  
  346.       next unless self.class == (config[:SCENE] ? config[:SCENE] : Scene_Map)
  347.  
  348.       if !(config[:VAR] || config[:EVAL])
  349.  
  350.         next unless (config[:HINT1] || config[:HINT2])
  351.  
  352.         config[:ONLY] = true
  353.  
  354.       end
  355.  
  356.       @m5_20140815_var_windows.push(
  357.  
  358.         M5Var20140815::Window_Var.new(config,@m5_20140815_cal_size_window) )
  359.  
  360.     end
  361.  
  362.     @m5_20140815_var_windows.compact!
  363.  
  364.   end
  365.  
  366.   #--------------------------------------------------------------------------
  367.  
  368.   # ● 更新窗口
  369.  
  370.   #--------------------------------------------------------------------------
  371.  
  372.   alias m5_20131103_update update
  373.  
  374.   def update
  375.  
  376.     m5_20131103_update
  377.  
  378.     return if scene_changing?
  379.  
  380.     return unless @m5_20140815_var_windows
  381.  
  382.     @m5_20140815_var_windows.each {|window| window.update if window}
  383.  
  384.   end
  385.  
  386.   #--------------------------------------------------------------------------
  387.  
  388.   # ● 释放窗口
  389.  
  390.   #--------------------------------------------------------------------------
  391.  
  392.   alias m5_20131103_terminate terminate
  393.  
  394.   def terminate
  395.  
  396.     m5_20131103_terminate
  397.  
  398.     return unless @m5_20140815_var_windows
  399.  
  400.     @m5_20140815_var_windows.each {|window| window.dispose if window}
  401.  
  402.   end
  403.  
  404.   #--------------------------------------------------------------------------
  405.  
  406.   # ● 为其他脚本提供的接口
  407.  
  408.   #--------------------------------------------------------------------------
  409.  
  410.   def self.m5_20150517_window(config = nil)
  411.  
  412.     @m5_20150517_add_window ||= []
  413.  
  414.     return @m5_20150517_add_window unless config
  415.  
  416.     hash = { EVAL: "#{config}.text", SCENE: self }
  417.  
  418.     [:X, :Y, :X2, :Y2, :Z, :BACK, :SX, :SY, :POSX, :POSY, :SWI,
  419.  
  420.       :INV_SWI].each do |key|
  421.  
  422.       hash[key] = config.const_get(key) rescue nil
  423.  
  424.     end
  425.  
  426.     @m5_20150517_add_window.push hash
  427.  
  428.   end
  429.  
  430. end

Lv5.捕梦者

梦石
0
星屑
24057
在线时间
4983 小时
注册时间
2016-3-8
帖子
1613
发表于 2021-7-9 23:42:40 | 显示全部楼层
试试这样
BACK: "图片_#{$game_party.menu_actor.id}",
回复 支持 反对

使用道具 举报

Lv5.捕梦者 (暗夜天使)

只有笨蛋才会看到

梦石
1
星屑
20840
在线时间
9326 小时
注册时间
2012-6-19
帖子
7105

开拓者短篇九导演组冠军

发表于 2021-7-12 00:57:13 | 显示全部楼层
不妨来试试我最新最潮的地图显示图片脚本

https://rpg.blue/home.php?mod=sp ... o=blog&id=16651

Snipaste_2021-07-12_00-52-58.png
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
386
在线时间
72 小时
注册时间
2018-6-1
帖子
10
 楼主| 发表于 2021-7-16 15:02:43 | 显示全部楼层
喵呜喵5 发表于 2021-7-12 00:57
不妨来试试我最新最潮的地图显示图片脚本

https://rpg.blue/home.php?mod=space&uid=291206&do=blo ...

我是想了解一下SCENE这个功能的具体设置。
暂时想知道怎么区分状态窗口下不同角色,达成不同角色的窗口显示不同的图片或变量。
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
386
在线时间
72 小时
注册时间
2018-6-1
帖子
10
 楼主| 发表于 2021-7-16 15:03:56 | 显示全部楼层
alexncf125 发表于 2021-7-9 23:42
试试这样
BACK: "图片_#{$game_party.menu_actor.id}",

他这个要设置SCENE这个地方。
BACK后面是图片的名字,设置BACK只是图片不同。
回复 支持 反对

使用道具 举报

Lv5.捕梦者 (暗夜天使)

只有笨蛋才会看到

梦石
1
星屑
20840
在线时间
9326 小时
注册时间
2012-6-19
帖子
7105

开拓者短篇九导演组冠军

发表于 2021-7-17 01:45:51 | 显示全部楼层
805906342 发表于 2021-7-16 15:02
我是想了解一下SCENE这个功能的具体设置。
暂时想知道怎么区分状态窗口下不同角色,达成不同角色的窗口显 ...

无法靠 SCENE 进行区分

状态窗口不管显示什么角色,所在的场景都是 Scene_Status
回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
10
星屑
10949
在线时间
1400 小时
注册时间
2010-8-31
帖子
571

开拓者

发表于 2021-7-17 06:21:43 | 显示全部楼层
喵呜喵5 发表于 2021-7-12 00:57
不妨来试试我最新最潮的地图显示图片脚本

https://rpg.blue/home.php?mod=space&uid=291206&do=blo ...

这个范例工程下载后其实是【跳过标题画面】
相比起做游戏,更热衷于素材的加工呢。
回复 支持 反对

使用道具 举报

Lv5.捕梦者 (暗夜天使)

只有笨蛋才会看到

梦石
1
星屑
20840
在线时间
9326 小时
注册时间
2012-6-19
帖子
7105

开拓者短篇九导演组冠军

发表于 2021-7-17 12:59:06 | 显示全部楼层
阿薩男爵 发表于 2021-7-17 06:21
这个范例工程下载后其实是【跳过标题画面】

网址是对的,但是直接点击网址打开的超链接错了
已修正
回复 支持 1 反对 0

使用道具 举报

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

本版积分规则

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

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

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

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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