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

Project1

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

[已经过期] 关于这个“视界制限”脚本,谁能帮在下里面加个开关控制

[复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
39 小时
注册时间
2012-1-26
帖子
25
跳转到指定楼层
1
发表于 2015-7-30 18:25:35 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

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

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

x
#==============================================================================
# ★ RGSS3_视界制限 Ver1.1
#==============================================================================
=begin

作者:tomoaky
首发网站:ひきも记 (http://hikimoki.sakura.ne.jp/)

设定号码的地图限制视野。

写在角色,职业,是在武器(防护具)的备注中的标签
能补正视野限制的尺寸。
例)<视界补正 32>
视界32点扩大広。
只有战斗成员进行视野补正价值的计算。

游戏变量(默认情况下,#9),可以调整大小使用视图领域。

加入上述所有设置,将获得的实际大小限制的能见度。
然而,如果尚未设置能见度限制的地图上都是无效的。

因为每帧都会重绘整个屏幕的Sprite
将会有所加重。

操作所需的图像
  Graphics/System/sight_shadow.png
  
游戏变量使用(默认设置)
  0009

2012.02.05  Ver1.1
  ・调整Z坐标使计时器使不被遮住
  ・加使用游戏变量补正视野限制尺寸的功能(通过变量可做成开/関效果)
  
2012.01.20  Ver1.0
  公开

=end

#==============================================================================
# □ 设定项目
#==============================================================================
module TMBLSIGHT
  # 指定几号的地图进行视界制限
  # 例)SIGHT[3] = 128  # 设置地图号码3的视野能见度128点矩形
  SIGHT = {}
  SIGHT[1] = 192

  
  VN_SIGHT = 9    # 设定尺寸大小补正在游戏中使用的游戏变量
end

#==============================================================================
# □ RPG::BaseItem
#==============================================================================
class RPG::BaseItem
  #--------------------------------------------------------------------------
  # ○ 视界制限补正値
  #--------------------------------------------------------------------------
  def sight_power
    unless @sight_power
      @sight_power = /<视界补正\s*(\-*\d+)\s*>/ =~ @note ? $1.to_i : 0
    end
    @sight_power
  end
end

#==============================================================================
# ■ Game_Actor
#==============================================================================
class Game_Actor
  #--------------------------------------------------------------------------
  # ○ 视界制限补正値
  #--------------------------------------------------------------------------
  def sight_power
    result = 0
    feature_objects.each {|object| result += object.sight_power}
    result
  end
end

#==============================================================================
# □ Sprite_SightShadow
#==============================================================================
class Sprite_SightShadow < Sprite
  #--------------------------------------------------------------------------
  # ● 物件初期化
  #--------------------------------------------------------------------------
  def initialize(viewport = nil)
    super(viewport)
    self.z = 199
    self.bitmap = Bitmap.new(Graphics.width, Graphics.height)
    @bitmap_shadow = Bitmap.new("Graphics/System/sight_shadow")
  end
  #--------------------------------------------------------------------------
  # ● 解放
  #--------------------------------------------------------------------------
  def dispose
    self.bitmap.dispose
    @bitmap_shadow.dispose
    super
  end
  #--------------------------------------------------------------------------
  # ● 帧更新
  #--------------------------------------------------------------------------
  def update
    super
    if TMBLSIGHT::SIGHT[$game_map.map_id]
      self.visible = true
      self.bitmap.clear
      w = TMBLSIGHT::SIGHT[$game_map.map_id]
      $game_party.battle_members.each{|actor| w = [w + actor.sight_power, 48].max}
      w = [w + $game_variables[TMBLSIGHT::VN_SIGHT], 48].max
      x = $game_player.screen_x - w / 2
      y = $game_player.screen_y - w / 2 - 16
      rect = Rect.new(x, y, w, w)
      self.bitmap.stretch_blt(rect, @bitmap_shadow, @bitmap_shadow.rect)
      color = Color.new(0, 0, 0)
      self.bitmap.fill_rect(0, 0, Graphics.width, y, color)
      self.bitmap.fill_rect(0, y + w, Graphics.width, Graphics.height - y - w,
        color)
      self.bitmap.fill_rect(0, y, x, w, color)
      self.bitmap.fill_rect(x + w, y, Graphics.width - x - w, w, color)
    else
      self.visible = false
    end
  end
end

#==============================================================================
# ■ Spriteset_Map
#==============================================================================
class Spriteset_Map
  #--------------------------------------------------------------------------
  # ● 物件初期化
  #--------------------------------------------------------------------------
  alias tmblsight_spriteset_map_initialize initialize
  def initialize
    tmblsight_spriteset_map_initialize
    create_sight_shadow
  end
  #--------------------------------------------------------------------------
  # ○ 作成视界制限Sprite
  #--------------------------------------------------------------------------
  def create_sight_shadow
    @sight_shadow_sprite = Sprite_SightShadow.new(@viewport2)
  end
  #--------------------------------------------------------------------------
  # ● 解放
  #--------------------------------------------------------------------------
  alias tmblsight_spriteset_map_dispose dispose
  def dispose
    tmblsight_spriteset_map_dispose
    dispose_sight_shadow
  end
  #--------------------------------------------------------------------------
  # ○ 解放视界制限Sprites
  #--------------------------------------------------------------------------
  def dispose_sight_shadow
    @sight_shadow_sprite.dispose
  end
  #--------------------------------------------------------------------------
  # ● 帧更新
  #--------------------------------------------------------------------------
  alias tmblsight_spriteset_map_update update
  def update
    update_sight_shadow
    tmblsight_spriteset_map_update
  end
  #--------------------------------------------------------------------------
  # ○ 更新视界制限Sprites
  #--------------------------------------------------------------------------
  def update_sight_shadow
    @sight_shadow_sprite.update if @sight_shadow_sprite
  end
end


这个脚本,不要什么地图都开启视界制限,只是要开关来决定是否开启。

Lv5.捕梦者

梦石
0
星屑
22953
在线时间
8638 小时
注册时间
2011-12-31
帖子
3367
2
发表于 2015-7-30 20:17:21 | 只看该作者
本帖最后由 tseyik 于 2015-7-30 20:20 编辑

  SWITCH = 5000      # This switch turns the visibility range on/off. Default OFF

  SIZEVAR = 5000     # This variable controls how far player can see. Default
100
範本/脚本
http://galvs-scripts.com/galvs-visibility-range/
  1. #------------------------------------------------------------------------------#
  2. #  Galv's Visibility Range
  3. #------------------------------------------------------------------------------#
  4. #  For: RPGMAKER VX ACE
  5. #  Version 1.1
  6. #------------------------------------------------------------------------------#
  7. #  2014-02-11 - Version 1.1 - added z level setting
  8. #  2013-05-31 - Version 1.0 - release
  9. #------------------------------------------------------------------------------#
  10. #  This script can make the player only able to see in a certain radius around
  11. #  themself. The rest is darkness. This size and opacity of this darkness is
  12. #  controlled using variables and turned on/off using a switch.
  13. #
  14. #  Put this script below Materials and above main.
  15. #  Requires an image that can be found in the demo on galvs-scripts.com. Images
  16. #  for this script go in your /Graphics/System folder.
  17. #------------------------------------------------------------------------------#

  18. #------------------------------------------------------------------------------#
  19. #  SCRIPT CALL
  20. #------------------------------------------------------------------------------#
  21. #  visimage("ImageName")       # Can change the image used
  22. #------------------------------------------------------------------------------#


  23. ($imported ||= {})["Galv_Vis_Range"] = true
  24. module Galv_Vis

  25. #------------------------------------------------------------------------------#
  26. #  SETTINGS - Don't forget to set these to unused variables and switch!
  27. #------------------------------------------------------------------------------#

  28.   SWITCH = 5000      # This switch turns the visibility range on/off. Default OFF

  29.   SIZEVAR = 5000     # This variable controls how far player can see. Default 100

  30.   OPACITYVAR = 2  # This variable controls the darkness opacity.   Default 255
  31.    
  32.    
  33.   Z_LEVEL = 0      # Make this higher or lower to change the z level
  34.                    # (to make it appear above or below other stuff)

  35. #------------------------------------------------------------------------------#
  36. #  END SETTINGS
  37. #------------------------------------------------------------------------------#

  38. end # Galv_Vis


  39. class Spriteset_Map
  40.   alias galv_vis_sm_initialize initialize
  41.   def initialize
  42.     create_visrange if $game_switches[Galv_Vis::SWITCH]
  43.     galv_vis_sm_initialize
  44.   end
  45.    
  46.   def create_visrange
  47.     @visrange = Sprite.new
  48.     @visrange.bitmap = Cache.system($game_system.visimage)
  49.     @visrange.ox = @visrange.bitmap.width / 2
  50.     @visrange.oy = @visrange.bitmap.height / 2
  51.     @visrange.z = Galv_Vis::Z_LEVEL
  52.   end
  53.    
  54.   alias galv_vis_sm_update update
  55.   def update
  56.     galv_vis_sm_update
  57.     update_visrange
  58.   end
  59.    
  60.   def update_visrange
  61.     if $game_switches[Galv_Vis::SWITCH]
  62.       create_visrange if !@visrange
  63.       @visrange.x = $game_player.screen_x
  64.       @visrange.y = $game_player.screen_y - 16
  65.       @visrange.opacity = $game_variables[Galv_Vis::OPACITYVAR]
  66.       zoom = [$game_variables[Galv_Vis::SIZEVAR].to_f * 0.01,0.5].max
  67.       @visrange.zoom_x = zoom
  68.       @visrange.zoom_y = zoom
  69.     else
  70.       dispose_visrange
  71.     end
  72.   end
  73.    
  74.   alias galv_vis_sm_dispose dispose
  75.   def dispose
  76.     galv_vis_sm_dispose
  77.     dispose_visrange
  78.   end
  79.    
  80.   def dispose_visrange
  81.     return if !@visrange
  82.     @visrange.bitmap.dispose
  83.     @visrange.dispose
  84.     @visrange = nil
  85.   end
  86. end # Spriteset_Map


  87. module DataManager
  88.   class << self
  89.     alias galv_vis_dm_setup_new_game setup_new_game
  90.   end
  91.    
  92.   def self.setup_new_game
  93.     galv_vis_dm_setup_new_game
  94.     $game_system.init_visvars
  95.   end
  96. end # DataManager


  97. class Scene_Map
  98.   attr_accessor :spriteset
  99. end

  100. class Game_System
  101.   attr_accessor :visimage

  102.   def init_visvars
  103.     @visimage = "VisRange"
  104.     $game_variables[Galv_Vis::OPACITYVAR] = 255
  105.     $game_variables[Galv_Vis::SIZEVAR] = 100
  106.   end
  107. end


  108. class Game_Interpreter
  109.   def visimage(img)
  110.     $game_system.visimage = img
  111.     SceneManager.scene.spriteset.dispose_visrange
  112.   end
  113. end
复制代码

回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-16 12:44

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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