Project1

标题: 如何在地图上显示多个可以分别用开关控制的变量 [打印本页]

作者: yanglishan    时间: 2012-5-25 18:18
标题: 如何在地图上显示多个可以分别用开关控制的变量
就是随时可以用开关让它显示、消失,1个开关可以控制1个或多个变量,不同开关可以控制不同变量。站里有个脚本可以一个开关控制多个变量显示或不显示,但不能多个开关控制不同变量,复制到不同的页就死机。
最好是能调字的大小颜色的。
谁能教我用?感激不尽!!!dsu_plus_rewardpost_czw
作者: tommay    时间: 2012-5-25 18:22
我觉得吧,好好学脚本写窗口吧,别折腾变量了
作者: yanglishan    时间: 2012-5-25 18:50
本帖最后由 hcm 于 2012-5-26 17:03 编辑
tommay 发表于 2012-5-25 18:22
我觉得吧,好好学脚本写窗口吧,别折腾变量了
  1. #==========================================================================
  2. # 本脚本来自[url]www.66rpg.com[/url],用于任何游戏请保留此信息。
  3. #==========================================================================
  4. VAR_SWITCH = 26          # 26号开关打开此脚本才工作,关闭则停止运算,并且透明
  5. VAR_REFRESH_SWITCH = 27  # 27号开关控制强制刷新,使用时机:1、把窗口由透明变为不透明(包括第一次使用时),2、游戏中用脚本更改了$var
  6. $var = []
  7. $var = [[1,0,0],[2,32,32],[3,64,32]] #所有需要显示在地图并且刷新的变量,可在游戏中用脚本更改。格式:[变量编号,x坐标,y坐标]
  8. #==============================================================================
  9. # ■ Window_XY
  10. #------------------------------------------------------------------------------
  11. #  显示坐标的窗口。
  12. #==============================================================================
  13. class Window_Var < Window_Base#注意前面那个window_var是文件名
  14.   #--------------------------------------------------------------------------
  15.   # ● 初始化窗口
  16.   #--------------------------------------------------------------------------
  17.   def initialize
  18.     super(-16, -16, 640+32, 480+32)#最后面那个数字是宽要显示多个需要改大,前面一个是长~
  19.     self.contents = Bitmap.new(width - 32, height - 32)
  20.     self.back_opacity = 255  # 这个是背景透明
  21.     self.opacity = 255       # 这个是边框和背景都透明
  22.     self.contents_opacity = 255       # 这个是内容透明
  23.     self.visible = false
  24.     self.z=9999
  25.     self.contents.font.color = Color.new(255,0,255)
  26.     self.contents.font.size = 24
  27.       @var = $var
  28.     @var_a = []
  29.     for var_draw in $var
  30.       @var_a[var_draw[0]] = $game_variables[var_draw[0]]
  31.     end   
  32.     refresh
  33.   end

  34.   #--------------------------------------------------------------------------
  35.   # ● 刷新
  36.   #--------------------------------------------------------------------------
  37.   def refresh
  38.     if $game_switches[VAR_SWITCH]
  39.       @var = $var         # 记录现在变量数组结构
  40.       self.contents.clear # 清除以前的东西
  41.       for var_draw in @var
  42.         @var_a[var_draw[0]] = $game_variables[var_draw[0]] # 记录现在的游戏变量
  43.         self.contents.draw_text(var_draw[1],var_draw[2],640,32,@var_a[var_draw[0]].to_s)
  44.       end
  45.     end
  46.   end
  47.   #--------------------------------------------------------------------------
  48.   # ● 判断文字刷新。节约内存用
  49.   #--------------------------------------------------------------------------
  50.   def judge
  51.     for var_draw in $var
  52.       if @var_a[var_draw[0]] != $game_variables[var_draw[0]] #如果现在记录的变量和游戏变量不同,刷新
  53.         return true
  54.       end
  55.     end
  56.     if $game_switches[VAR_REFRESH_SWITCH]  # 强制刷新的时候,刷新
  57.       $game_switches[VAR_REFRESH_SWITCH] = false
  58.       return true
  59.     end
  60.     return false
  61.   end
  62. end

  63. class Scene_Map
  64.   alias var_66rpg_main main
  65.   def main
  66.     @var_window = Window_Var.new
  67.     @var_window.opacity = 0
  68.     var_66rpg_main
  69.     @var_window.dispose
  70.   end
  71.   #--------------------------------------------------------------------------
  72.   # ● 刷新画面
  73.   #--------------------------------------------------------------------------
  74.   alias var_66rpg_update update
  75.   def update
  76.     var_66rpg_update
  77.     if $game_switches[VAR_SWITCH]
  78.       @var_window.visible = true      
  79.       @var_window.refresh if @var_window.judge
  80.     else
  81.       @var_window.visible = false
  82.     end
  83.   end
  84. end
  85. #========================================================================
  86. # 本脚本来自[url]www.66rpg.com[/url],用于任何游戏请保留此信息。
  87. #========================================================================
复制代码
原来脚本是这样的,我现在没太有时间学啊
这个脚本只能插一页,再插一页就卡了,下载地址忘了
麻烦能给改一下,让这能插好几页,或者能用多个开关控制不同的变量分别显示出来吗?
作者: sai90306    时间: 2012-5-25 22:32
本帖最后由 sai90306 于 2012-5-25 22:32 编辑

這樣或許能行...
將LZ貼的這個腳本 看要幾個變項就製幾份
第一份(用來控制第一個變項)改
1.
VAR_SWITCH = 26+1 #26+1号开关打开此脚本才工作,关闭则停止运算,并且透明
VAR_REFRESH_SWITCH = 27+1  # 27+1号开关控制强制刷新,使用时机:1、把窗口由透明变为不透明(包括第一次使用时)
2.
class Window_Var < Window_Base#注意前面那个window_var是文件名
3.
@var_window = Window_Var.new
的Window_Var 為 Window_Var1
第二份也是改同樣的地方
+1改為+2
Window_Var改為Window_Var2
以此類推


開關要設幾號也不一定要用這樣的規則設定 只要不重複就好了
作者: yanglishan    时间: 2012-5-26 13:42
@sai90306
试了,复制两份就卡,咋回事啊。。。。
作者: sai90306    时间: 2012-5-26 14:50
本帖最后由 sai90306 于 2012-5-26 14:52 编辑
yanglishan 发表于 2012-5-26 13:42
@sai90306
试了,复制两份就卡,咋回事啊。。。。


不好意思我看錯腳本了@@....請測試下面的腳本
這次只要一份就好了 直接覆蓋原來的
格式:[打开此脚本才工作开关ID,控制强制刷新开关ID,变量编号,x坐标,y坐标]

  1. #==========================================================================
  2. # 本脚本来自www.66rpg.com,用于任何游戏请保留此信息。
  3. #==========================================================================
  4. $var = []
  5. $var = [[26,27,1,0,0],[28,29,2,32,32],[30,31,3,64,32]]
  6. #所有需要显示在地图并且刷新的变量,可在游戏中用脚本更改。格式:[打开此脚本才工作开关ID,控制强制刷新开关ID,变量编号,x坐标,y坐标]
  7. #==============================================================================
  8. # ■ Window_XY
  9. #------------------------------------------------------------------------------
  10. #  显示坐标的窗口。
  11. #==============================================================================
  12. class Window_Var < Window_Base#注意前面那个window_var是文件名
  13.   #--------------------------------------------------------------------------
  14.   # ● 初始化窗口
  15.   #--------------------------------------------------------------------------
  16.   def initialize
  17.     super(-16, -16, 640+32, 480+32)#最后面那个数字是宽要显示多个需要改大,前面一个是长~
  18.     self.contents = Bitmap.new(width - 32, height - 32)
  19.     self.back_opacity = 255  # 这个是背景透明
  20.     self.opacity = 255       # 这个是边框和背景都透明
  21.     self.contents_opacity = 255       # 这个是内容透明
  22.     self.visible = false
  23.     self.z=9999
  24.     self.contents.font.color = Color.new(255,0,255)
  25.     self.contents.font.size = 24
  26.       @var = $var
  27.     @var_a = []
  28.     for var_draw in $var
  29.       @var_a[var_draw[2]] = $game_variables[var_draw[2]]
  30.     end   
  31.     refresh
  32.   end

  33.   #--------------------------------------------------------------------------
  34.   # ● 刷新
  35.   #--------------------------------------------------------------------------
  36.   def refresh
  37.     if $game_switches[var_draw[0]]
  38.       @var = $var         # 记录现在变量数组结构
  39.       self.contents.clear # 清除以前的东西
  40.       for var_draw in @var
  41.         @var_a[var_draw[2]] = $game_variables[var_draw[2]] # 记录现在的游戏变量
  42.         self.contents.draw_text(var_draw[1],var_draw[2],640,32,@var_a[var_draw[2]].to_s)
  43.       end
  44.     end
  45.   end
  46.   #--------------------------------------------------------------------------
  47.   # ● 判断文字刷新。节约内存用
  48.   #--------------------------------------------------------------------------
  49.   def judge
  50.     for var_draw in $var
  51.       if @var_a[var_draw[2]] != $game_variables[var_draw[2]] #如果现在记录的变量和游戏变量不同,刷新
  52.         return true
  53.       end
  54.     end
  55.     if $game_switches[var_draw[1]]  # 强制刷新的时候,刷新
  56.       $game_switches[var_draw[1]] = false
  57.       return true
  58.     end
  59.     return false
  60.   end
  61. end

  62. class Scene_Map
  63.   alias var_66rpg_main main
  64.   def main
  65.     @var_window = Window_Var.new
  66.     @var_window.opacity = 0
  67.     var_66rpg_main
  68.     @var_window.dispose
  69.   end
  70.   #--------------------------------------------------------------------------
  71.   # ● 刷新画面
  72.   #--------------------------------------------------------------------------
  73.   alias var_66rpg_update update
  74.   def update
  75.     var_66rpg_update
  76.     if $game_switches[var_draw[0]]
  77.       @var_window.visible = true      
  78.       @var_window.refresh if @var_window.judge
  79.     else
  80.       @var_window.visible = false
  81.     end
  82.   end
  83. end
  84. #========================================================================
  85. # 本脚本来自www.66rpg.com,用于任何游戏请保留此信息。
  86. #========================================================================
复制代码

作者: LOVE丶莫颜    时间: 2012-5-26 15:21
是显示和消失什么东西?图片还是对话?还是信息?
作者: yanglishan    时间: 2012-5-26 15:46
本帖最后由 yanglishan 于 2012-5-26 15:55 编辑

@sai90306
谢谢,但38行有点问题……
还有,能让每个开关控制的显示的变量颜色大小不同吗?如果很麻烦那就不麻烦你了。。。


‘‘──yanglishan于2012-5-26 15:51补充以下内容

@LOVE丶莫颜
不同开关分别控制不同的变量显示、消失在地图上……





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