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

Project1

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

[已经解决] 添加“某些地图禁止打开小地图”

[复制链接]

Lv3.寻梦者

梦石
0
星屑
1556
在线时间
626 小时
注册时间
2010-8-5
帖子
451
跳转到指定楼层
1
发表于 2014-10-1 21:33:11 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

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

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

x
我想让某些地图不会触发小地图系统

例如,把某些不出发小地图系统的地图ID统一起来写个数据组
          然后这些地图里就不会触发小地图系统
PS:为什么不能把“最初可见”给关闭?无论是flash 还是 true 每次进入地图都会是默认打开?100号开关也不行

RUBY 代码复制
  1. module PLAN_Map_Window
  2.   WIN_X       = 20         # 窗口的初始 X 座標
  3.   WIN_Y       = 0         # 窗口的初始 Y 座標
  4.   WIN_WIDTH   = 640      # 地图的宽度
  5.   WIN_HEIGHT  = 480      # 地图的高度
  6.  
  7.   #。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
  8.   # 新加:个别地图缩放比例设置,格式:地图ID => 缩放比例  。
  9.   #未添加的地图,用下面的 地图的放缩比例 。
  10.   R_ZOOM      = {1=>10.0, 102=>6.0,103=>4.5,104=>4.5,105=>4.5,
  11.                  106=>4.5,107=>4.5,108=>4.5}
  12.   #。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
  13.  
  14.   ZOOM        = 5.0       # 地图的放缩比例
  15.   ZOOMP       = 1         # 小地图上角色的缩放(1为图片原来大小,往大调节时图片变小)
  16.   SHOWPLAYER  = false     # 是否显示角色,当为true时,小地图将显示角色为false时显示兰色的标记
  17.   PLAYCW      = 4         #当使用上面的显示角色时,这个用来设置,角色的横向帧数
  18.   PLAYCH      = 4         #当使用上面的显示角色时,这个用来设置,角色的综向帧数
  19.   WINDOWSKIN  = ""        # 自定义地图窗口素材,如果留空则是默认的
  20.  
  21.   ON_OFF_KEY  = Input::A  # 打开地图的按钮,A就是键盘的Z键
  22.  
  23.   SWITCH      = 100       # 禁用地图功能的开关,默认这个就是打开100号开关则禁止
  24.                           # 使用地图功能,关闭则可以使用地图功能
  25.  
  26.   WINDOW_MOVE = false     # 是否可以自动改变窗口位置(true:可改变, false:固定)
  27.  
  28.   OVER_X      = 0   # 自动改变后窗口的位置x
  29.   OVER_Y      = 512 - WIN_HEIGHT       #自动改变后窗口的位置y
  30.  
  31.   OPACITY     = 0       # 窗口的透明度
  32.   C_OPACITY   = 255       # 地图的透明度
  33.   VISIBLE     = false  # 最初是否可见
  34. end
  35. #==============================================================================
  36. # ■ Game_Temp
  37. #==============================================================================
  38. class Game_Temp
  39.   attr_accessor  :map_visible     # 地图的表示状態
  40.   alias plan_map_window_initialize initialize
  41.   def initialize
  42.     plan_map_window_initialize
  43.     @map_visible = true
  44.   end
  45. end
  46. #==============================================================================
  47. # ■ Scene_Map
  48. #==============================================================================
  49. class Scene_Map
  50.   #--------------------------------------------------------------------------
  51.   # ● 主处理
  52.   #--------------------------------------------------------------------------
  53.   alias plan_map_window_main main
  54.   def main
  55.     @map_window         = Window_Map.new
  56.     @map_window.visible = $game_temp.map_visible
  57.     plan_map_window_main
  58.     @map_window.dispose
  59.   end
  60.   #--------------------------------------------------------------------------
  61.   # ● 更新
  62.   #--------------------------------------------------------------------------
  63.   alias plan_map_window_update update
  64.   def update
  65.     $game_temp.map_visible = @map_window.visible
  66.     plan_map_window_update
  67.     unless $game_switches[PLAN_Map_Window::SWITCH]      
  68.       if Kboard.keyboard($R_Key_TAB)
  69.         if @map_window.visible
  70.           @map_window.visible = false
  71.         else
  72.           @map_window.visible = true
  73.         end
  74.       end
  75.     else
  76.       if @map_window.visible
  77.         @map_window.visible = false
  78.       end
  79.     end
  80.     if @map_window.visible
  81.       @map_window.update
  82.     end
  83.   end
  84.   #--------------------------------------------------------------------------
  85.   # ● 场所移动的变化
  86.   #--------------------------------------------------------------------------
  87.   alias plan_map_window_transfer_player transfer_player
  88.   def transfer_player
  89.     visible = @map_window.visible
  90.     @map_window.visible = false
  91.     plan_map_window_transfer_player
  92.     @map_window.dispose
  93.     @map_window = Window_Map.new
  94.     @map_window.visible = visible
  95.   end
  96. end
  97. #==============================================================================
  98. # ■ Window_Map
  99. #==============================================================================
  100. class Window_Map < Window_Base
  101.   #--------------------------------------------------------------------------
  102.   # ● 初始化
  103.   #--------------------------------------------------------------------------
  104.   def initialize
  105.     x = PLAN_Map_Window::WIN_X
  106.     y = PLAN_Map_Window::WIN_Y
  107.     w = PLAN_Map_Window::WIN_WIDTH
  108.     h = PLAN_Map_Window::WIN_HEIGHT
  109.     super(x, y, w, h)
  110.     unless PLAN_Map_Window::WINDOWSKIN.empty?
  111.       self.windowskin = RPG::Cache.windowskin(PLAN_Map_Window::WINDOWSKIN)
  112.     end
  113.     self.contents = Bitmap.new(width - 32, height - 32)
  114.     self.opacity = PLAN_Map_Window::OPACITY
  115.     self.contents_opacity = PLAN_Map_Window::C_OPACITY
  116.     @old_real_x = $game_player.real_x
  117.     @old_real_y = $game_player.real_y
  118.     @all_map = make_all_map
  119.     self.visible = PLAN_Map_Window::VISIBLE
  120.     refresh
  121.   end
  122.   #--------------------------------------------------------------------------
  123.   # ● 缩小图做成
  124.   #--------------------------------------------------------------------------
  125.   def make_all_map
  126.     all_map = RPG::Cache.icon("地图" + $game_map.map_id.to_s)  
  127.     cw = $game_map.width * 32
  128.     ch = $game_map.height * 32
  129.     src_rect = Rect.new(0, 0, cw, ch)
  130.     self.contents.blt(0 , 0, all_map, src_rect)
  131.     #-------------------------------------------------------------
  132.     #..............................................................
  133.     if PLAN_Map_Window::R_ZOOM.keys.include?($game_map.map_id)
  134.       zoom = PLAN_Map_Window::R_ZOOM[$game_map.map_id]
  135.     else
  136.       zoom = PLAN_Map_Window::ZOOM
  137.     end
  138.     #..............................................................
  139.     #--------------------------------------------------------------
  140.     w = ($game_map.width / zoom) * 32
  141.     h = ($game_map.height / zoom) * 32
  142.     ret_bitmap = Bitmap.new(w, h)
  143.     src_rect = Rect.new(0, 0, all_map.width, all_map.height)
  144.     dest_rect = Rect.new(0, 0, ret_bitmap.width, ret_bitmap.height)
  145.     ret_bitmap.stretch_blt(dest_rect, all_map, src_rect)
  146.     all_map.dispose
  147.     return ret_bitmap
  148.   end
  149.   #--------------------------------------------------------------------------
  150.   # ● 刷新
  151.   #--------------------------------------------------------------------------
  152.   def refresh
  153.     self.contents.clear
  154.  
  155.     if PLAN_Map_Window::R_ZOOM.keys.include?($game_map.map_id)
  156.       zoom = PLAN_Map_Window::R_ZOOM[$game_map.map_id]
  157.     else
  158.       zoom = PLAN_Map_Window::ZOOM
  159.     end
  160.     one_tile_size = 32 / zoom
  161.  
  162.     x = $game_player.real_x - 128 * (self.contents.width / one_tile_size) / 2
  163.     y = $game_player.real_y - 128 * (self.contents.height / one_tile_size) / 2
  164.     x = x * one_tile_size / 128
  165.     y = y * one_tile_size / 128
  166.     half_width = self.contents.width * 128 / 2
  167.     rest_width = ($game_map.width * 128 - $game_player.real_x) * one_tile_size
  168.     rev_x = 0
  169.     if @all_map.width < self.contents.width
  170.       rev_x = (half_width - $game_player.real_x * one_tile_size) / 128
  171.       rev_x -= (self.contents.width - @all_map.width) / 2
  172.       x += rev_x
  173.     elsif half_width > $game_player.real_x * one_tile_size
  174.       rev_x = (half_width - $game_player.real_x * one_tile_size) / 128
  175.       x += rev_x
  176.     elsif half_width > rest_width
  177.       rev_x = -((half_width - rest_width) / 128)
  178.       x += rev_x
  179.     end
  180.     half_height = self.contents.height * 128 / 2
  181.     rest_height = ($game_map.height * 128 - $game_player.real_y) * one_tile_size
  182.     rev_y = 0
  183.     if @all_map.height < self.contents.height
  184.       rev_y = (half_height - $game_player.real_y * one_tile_size) / 128
  185.       rev_y -= (self.contents.height - @all_map.height) / 2
  186.       y += rev_y
  187.     elsif half_height > $game_player.real_y * one_tile_size
  188.       rev_y = (half_height - $game_player.real_y * one_tile_size) / 128
  189.       y += rev_y
  190.     elsif half_height > rest_height
  191.       rev_y = -((half_height - rest_height) / 128)
  192.       y += rev_y
  193.     end
  194.     src_rect = Rect.new(x, y, self.contents.width, self.contents.height)
  195.     self.contents.blt(0, 0, @all_map, src_rect)
  196.     if PLAN_Map_Window::WINDOW_MOVE == true
  197.       wr = PLAN_Map_Window::WIN_X + self.width
  198.       wl = PLAN_Map_Window::WIN_X
  199.       ht = PLAN_Map_Window::WIN_Y
  200.       he = PLAN_Map_Window::WIN_Y + self.height
  201.       if $game_player.screen_x >= wl and $game_player.screen_x <= wr
  202.         if $game_player.screen_y >= ht and $game_player.screen_y <= he
  203.           self.x = PLAN_Map_Window::OVER_X
  204.           self.y = PLAN_Map_Window::OVER_Y
  205.         else
  206.           self.x = PLAN_Map_Window::WIN_X
  207.           self.y = PLAN_Map_Window::WIN_Y
  208.         end
  209.       else
  210.         self.x = PLAN_Map_Window::WIN_X
  211.         self.y = PLAN_Map_Window::WIN_Y
  212.       end
  213.     end
  214.     if $game_party.actors.size > 0
  215.       actor = $game_party.actors[0]
  216.       if PLAN_Map_Window::SHOWPLAYER
  217.       bitmap = RPG::Cache.character(actor.character_name, actor.character_hue)
  218.       width = bitmap.width / PLAN_Map_Window::PLAYCW
  219.       height = bitmap.height / PLAN_Map_Window::PLAYCH
  220.       src_rect = Rect.new(0, 0, width, height)
  221.       if PLAN_Map_Window::R_ZOOM.keys.include?($game_map.map_id)
  222.         zoom = PLAN_Map_Window::R_ZOOM[$game_map.map_id]
  223.       else
  224.         zoom = PLAN_Map_Window::ZOOM
  225.       end
  226.       w = width / zoom
  227.       h = height / zoom
  228.       else
  229.       bitmap = RPG::Cache.icon("标记" )
  230.       width = (bitmap.width / PLAN_Map_Window::ZOOMP)
  231.       height = (bitmap.height / PLAN_Map_Window::ZOOMP)
  232.       src_rect = Rect.new(0, 0, width, height)
  233.       w = width
  234.       h = height
  235.       end
  236.       x = self.contents.width / 2 - w / 2 + one_tile_size / 2 - rev_x
  237.       y = self.contents.height / 2 - h / 2 - rev_y
  238.       dest_rect = Rect.new(x, y, w, h)
  239.       self.contents.stretch_blt(dest_rect, bitmap, src_rect)
  240.     end
  241.   end
  242.   #--------------------------------------------------------------------------
  243.   # ● 更新
  244.   #--------------------------------------------------------------------------
  245.   def update
  246.     super
  247.     if @old_real_x != $game_player.real_x or @old_real_y != $game_player.real_y
  248.       @old_real_x = $game_player.real_x
  249.       @old_real_y = $game_player.real_y
  250.       refresh
  251.     end
  252.   end
  253.   #--------------------------------------------------------------------------
  254.   # ● 释放
  255.   #--------------------------------------------------------------------------
  256.   def dispose
  257.     super
  258.     @all_map.dispose
  259.   end
  260. end

Lv3.寻梦者

梦石
0
星屑
1556
在线时间
626 小时
注册时间
2010-8-5
帖子
451
2
 楼主| 发表于 2014-10-1 21:35:31 | 只看该作者
或者提示的时候显示这张图片[版主,我连贴了。。]

提示.png (6.49 KB, 下载次数: 7)

提示.png
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1556
在线时间
626 小时
注册时间
2010-8-5
帖子
451
3
 楼主| 发表于 2014-10-2 09:19:06 | 只看该作者
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
76
在线时间
1379 小时
注册时间
2012-7-5
帖子
1698

开拓者

4
发表于 2014-10-2 09:38:47 | 只看该作者
关闭最初可见的方法 :
第 23 行 关闭 100 号开关意味着打开小地图, 而开关们默认都是关闭的状态
解决姿势 : 把 67 行的 unless 改成 if , 同时顺手改动一下注释


禁用小地图 :
在 125 行 make_all_map 这里加一句分歧, 让它当前地图id在开头的数组(请自行添加)里时就返回 2L 的那张图
例如: 你在开头加了 NO_MAP = [1,2,3]
定义的时候
  1. def make_all_map
  2.   if PLAN_Map_Window::NO_MAP.include? $game_map.map_id
  3.     return Bitmap.new '提示.png的路径'
  4.   else
  5.     xxxxxxxxxxxxxxxxxxxxxxxx
  6.     return ret_bitmap
  7.   end
  8. end
复制代码


另外通过按键改变真伪值(true => false; false => true)可以不用像这个脚本里这么麻烦, 我举个例子
  1. visible ^= true if Input.trigger?(Input::A)
复制代码
就行了

点评

另外看楼主贴的脚本,似乎是以前被整合过的脚本。最新版本似乎不是这样的  发表于 2014-10-2 18:24
其实这个开关等除了读档或者存档,完全是留给事件党用的入口。  发表于 2014-10-2 18:23
↓ 说了是举例子, 我完全可以把visible改成别的能读取到的数据, 只是想说这种写法可以省字数  发表于 2014-10-2 18:20
麻烦的原因很简单。你试试读档或者存档试试看。你写的不会保存开启/关闭的状态  发表于 2014-10-2 18:13
谢谢喽.问题解决啦  发表于 2014-10-2 12:31

评分

参与人数 1梦石 +1 收起 理由
RyanBern + 1 认可答案

查看全部评分


  -fk: -azogi:
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1556
在线时间
626 小时
注册时间
2010-8-5
帖子
451
5
 楼主| 发表于 2014-10-2 12:01:22 | 只看该作者
kuerlulu 发表于 2014-10-2 09:38
关闭最初可见的方法 :
第 23 行 关闭 100 号开关意味着打开小地图, 而开关们默认都是关闭的状态
解决姿势  ...

还有个问题.

不能触发小地图功能的地图。打开后提示了图片。但是有一个很诡异的事。。。那个角色标记的图还在上面..

额.关于  新跳转到一个地图 不默认打开小地图功能.我还是没懂。。

点评

角色标记的图可能与小地图背景不是同一个bitmap, 也是我没仔细看. 依葫芦画瓢肛掉就好了  发表于 2014-10-2 12:11
你可以按F9看一下默认100号开关开没开....  发表于 2014-10-2 12:10
回复 支持 反对

使用道具 举报

Lv3.寻梦者 (暗夜天使)

精灵族の天使

梦石
0
星屑
1697
在线时间
3038 小时
注册时间
2007-3-16
帖子
33731

开拓者贵宾

6
发表于 2014-10-2 18:10:17 | 只看该作者
#=>你的小地图版本已过期!
请更新新版【有打开/关闭小地图的开关】
https://rpg.blue/forum.php?mod=viewthread&tid=175971
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-14 18:14

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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