Игрострой - создание 2D и 3D игр. Конструкторы, модели, текстуры фоны и движки. Скачать бесплатно и без регистрации. Работа с UDK, Unity и многое другое.


Четверг, 02.05.2024, 07:50
Приветствую Вас Гость | RSS
Игрострой
Главная
Регистрация
Вход

Игрострой - создать игру самому легко!

Меню сайта

Категории раздела
Lua [0]
Программирование и написание скриптов на языке Lua.
Unreal Script [1]
Статьи по написанию кода и примеры Unreal Script
RPG Maker VX Ace [1]
Скрипты к RPG Maker VX Ace
C# программирование [1]
Примеры и уроки по языку программирования C# (C Sharp)

Наш опрос
Оцените мой сайт
Всего ответов: 17

Новое на форуме
  • Собирательство (0)
  • Создаем простую JRPG (13)
  • Примеры и основы (3)
    [C#]

  • Статистика

    Онлайн всего: 1
    Гостей: 1
    Пользователей: 0


    Главная » Статьи » Кодировка » RPG Maker VX Ace

    Туман войны

    RGSS3 скрипт Тумана Войны (Fog of War). Работает только на RPG Maker VX Ace. Основные настройки руссифицированны.

    #===============================================================================
    # TheoAllen - Fog of War
    # Requested by : Zero0018
    # Last edited : 15.01.2015
    # Переводчик: wind@ - перевод кривой,но достаточный для использования
    #-------------------------------------------------------------------------------
    # Использование :
    # Поместите скрипт между материалами и главным
    # Дополнительные ресурсы не требуются
    #
    #------------------------------------------------------------------------------
    # ** MAP NOTETAG :
    #------------------------------------------------------------------------------
    # Для включения наберите <fog> в заметках карты
    # Для отключения наберите <no fog> в заметках карты
    #
    # Настройте диаметр показа в конфигурации
    #
    #------------------------------------------------------------------------------
    # ** SCRIPT CALL :
    #------------------------------------------------------------------------------
    #
    # $game_map.reveal_tiles(x, y)
    # $game_map.reveal_tiles(x, y, distance)
    # Will reveal tiles in x,y within the distance. If distance is ommited, it will
    # be same as the VisiRange in script setting
    #
    # $game_map.events[event_id].reveal_tiles
    # $game_map.events[event_id].reveal_tiles(distance)
    # Will reveal tiles from the event location within the distance. If distance is
    # ommited, it will be same as the VisiRange in script setting
    #
    #-------------------------------------------------------------------------------
    # Конфигурация
    #===============================================================================
    module Theo
     
     VisiRange = 4
    # Видимость игрока.Большее число - больше тайлов видно(число-радиус вокруг персонажа)
     
     FogOpacity = 255
    # Прозрачность тумана.Установите 255 для непрозрачного(черного)тумана
     
     DefaultFog = true
    # Если значение true, у каждой карты будет туман,пока вы не напишите <no fog>
    # Если значение false, у каждой карты туман отсутствует,пока вы не укажете <fog>
     
    end
    #===============================================================================
    # End of config
    #===============================================================================
     
    #===============================================================================
    # ** Bitmap
    #===============================================================================
     
    class Bitmap
     
     # Fill entire bitmap with color
     def entire_fill(color = Color.new(0,0,0,150))
     fill_rect(self.rect,color)
     end
     
    end
     
    #===============================================================================
    # ** Fog of War
    #===============================================================================
     
    class Fog_of_War < Plane
     @@bitmap_cache = {}
     #----------------------------------------------------------------------------
     # * Initialize
     #----------------------------------------------------------------------------
     def initialize(vport)
     super(vport)
     @id = -1
     end
     
     #----------------------------------------------------------------------------
     # * Update
     #----------------------------------------------------------------------------
     def update
     if $game_map
     if @id != $game_map.map_id
     @id = $game_map.map_id
     @width = $game_map.width
     @height = $game_map.height
     update_bitmap
     end
     self.ox = $game_map.display_x * 32
     self.oy = $game_map.display_y * 32
     self.visible = !$game_map.no_fog?
     end
     end
     
     #----------------------------------------------------------------------------
     # * Update bitmap
     #----------------------------------------------------------------------------
     def update_bitmap
     bmp = @@bitmap_cache[@id]
     unless bmp && !bmp.disposed?
     bmp = Bitmap.new(@width * 32, @height * 32)
     @@bitmap_cache[@id] = bmp
     end
     self.bitmap = bmp
     return if $game_map.no_fog?
     bitmap.entire_fill(Color.new(0,0,0,Theo::FogOpacity))
     reveal_tiles($game_system.revealed_tiles)
     reveal_tiles($game_player.reveal_tiles)
     end
     
     #----------------------------------------------------------------------------
     # * Reveal Tiles
     #----------------------------------------------------------------------------
     def reveal_tiles(tiles)
     tiles.each do |pos|
     x = pos.x * 32
     y = pos.y * 32
     bitmap.clear_rect(x,y,32,32)
     end unless disposed?
     end
     
    end
     
    #===============================================================================
    # ** Game_System
    #===============================================================================
     
    class Game_System
     #----------------------------------------------------------------------------
     # * Revealed tiles
     #----------------------------------------------------------------------------
     def revealed_tiles
     @revealed_map ||= {}
     @revealed_map[$game_map.map_id] ||= []
     @revealed_map[$game_map.map_id]
     end
     
     #----------------------------------------------------------------------------
     # * Revealed tiles =
     #----------------------------------------------------------------------------
     def revealed_tiles=(t)
     @revealed_map ||= {}
     @revealed_map[$game_map.map_id] = t
     end
     
    end
     
    #===============================================================================
    # ** Revealed Node
    #===============================================================================
     
    class Revealed_Node
     #----------------------------------------------------------------------------
     # * Public attributes
     #----------------------------------------------------------------------------
     attr_accessor :parent 
     attr_accessor :visited
     attr_accessor :x
     attr_accessor :y
     attr_reader :expanded 
     attr_reader :nodes
     
     #----------------------------------------------------------------------------
     # * Initialize
     #----------------------------------------------------------------------------
     def initialize(x,y)
     @x ,@y = x, y
     @nodes = {}
     @visited = false
     @expanded = false
     end
     
     #----------------------------------------------------------------------------
     # * Expand node
     #----------------------------------------------------------------------------
     def expand_node(mapnodes, char)
     dir = [2,4,6,8]
     dir.each do |d|
     xpos = $game_map.round_x_with_direction(@x, d)
     ypos = $game_map.round_y_with_direction(@y, d)
     key = [xpos, ypos]
     next_node = mapnodes[key]
     if next_node.nil?
     next_node = Revealed_Node.new(xpos, ypos)
     mapnodes[key] = next_node
     elsif next_node.visited
     next
     end
     next_node.parent = self
     self.nodes[d] = next_node
     end
     @expanded = true
     end
     
     #----------------------------------------------------------------------------
     # * Get Parent Direction
     #----------------------------------------------------------------------------
     def get_parent_dir
     parent.nodes.index(self)
     end
     
    end
     
    #===============================================================================
    # ** Game_Map
    #===============================================================================
     
    class Game_Map
     #----------------------------------------------------------------------------
     # * No fog?
     #----------------------------------------------------------------------------
     def no_fog?
     return false unless @map
     return true if @map.note[/<no[\s_]+fog>/i]
     return false if @map.note[/<fog>/i]
     return !Theo::DefaultFog
     end
     #----------------------------------------------------------------------------
     # * Reveal tiles
     #----------------------------------------------------------------------------
     def reveal_tiles(x, y, distance = Theo::VisiRange, reveal = true)
     return if no_fog?
     # Initialize
     @revealed_nodes = {}
     @max_distance = distance - 1
     @init_x = x
     @init_y = y
     
     # Make first node to check
     first_node = Revealed_Node.new(x, y)
     first_node.expand_node(@revealed_nodes, self)
     first_node.visited = true
     @revealed_nodes[[x, y]] = first_node
     @reveal_queue = []
     @reveal_queue.push(first_node)
     
     # spread search using BFS
     until @reveal_queue.empty?
     spread_search(@reveal_queue.shift)
     end
     
     node_to_reveal = @revealed_nodes.values - $game_system.revealed_tiles
     sprset = SceneManager.scene.spriteset
     sprset.fogofwar.reveal_tiles(node_to_reveal) if sprset
     $game_system.revealed_tiles += @revealed_nodes.values
     end
     
     #----------------------------------------------------------------------------
     # * Spread search
     #----------------------------------------------------------------------------
     def spread_search(node)
     dir = [2,4,6,8]
     dir.shuffle.each do |d|
     next_node = node.nodes[d]
     next unless next_node
     next if next_node.visited
     next if get_distance(next_node) > @max_distance
     next_node.expand_node(@revealed_nodes, self) unless next_node.expanded
     next_node.visited = true
     @reveal_queue.push(next_node, node)
     end
     end
     
     #----------------------------------------------------------------------------
     # * Get distance
     #----------------------------------------------------------------------------
     def get_distance(node)
     range_x = node.x - @init_x
     range_y = node.y - @init_y
     result = Math.sqrt((range_x**2) + (range_y**2))
     return result
     end
     
    end
    #===============================================================================
    # ** Game_Character
    #===============================================================================
    class Game_Character
     #----------------------------------------------------------------------------
     # * Reveal tiles
     #----------------------------------------------------------------------------
     def reveal_tiles(distance = Theo::VisiRange)
     $game_map.reveal_tiles(x, y, distance)
     end
     
    end
     
    #===============================================================================
    # ** Game_Player
    #===============================================================================
    class Game_Player
     #----------------------------------------------------------------------------
     # * Increase step
     #----------------------------------------------------------------------------
     alias theo_fogofwar_increase_steps increase_steps
     def increase_steps
     theo_fogofwar_increase_steps
     reveal_tiles
     end
     
    end
     
    #===============================================================================
    # ** Spriteset_Map
    #===============================================================================
     
    class Spriteset_Map
     #----------------------------------------------------------------------------
     # * Attribute Reader
     #----------------------------------------------------------------------------
     attr_reader :fogofwar
     
     #----------------------------------------------------------------------------
     # * Create viewports (alias)
     #----------------------------------------------------------------------------
     alias theo_fogofwar_create_viewports create_viewports 
     def create_viewports 
     theo_fogofwar_create_viewports
     create_fogofwar
     end
     
     #----------------------------------------------------------------------------
     # * Create fog of war
     #----------------------------------------------------------------------------
     def create_fogofwar
     @fogofwar = Fog_of_War.new(@viewport1)
     @fogofwar.z = 210
     end
     
     #----------------------------------------------------------------------------
     # * Update (alias)
     #----------------------------------------------------------------------------
     alias theo_fogofwar_update update
     def update
     theo_fogofwar_update
     @fogofwar.update
     end
     
     #----------------------------------------------------------------------------
     # * Dispose (alias)
     #----------------------------------------------------------------------------
     alias theo_fogofwar_dispose dispose
     def dispose
     theo_fogofwar_dispose
     @fogofwar.dispose
     end
     
    end
     
    #===============================================================================
    # ** Scene_Base
    #===============================================================================
     
    class Scene_Base
     attr_reader :spriteset
    end
    Категория: RPG Maker VX Ace | Добавил: SERPENT1987 (14.04.2017)
    Просмотров: 349 | Теги: скрипт, RPG Maker VX Ace, Fog of War, Туман войны, RGSS | Рейтинг: 0.0/0
    Всего комментариев: 0
    Имя *:
    Email *:
    Код *:
    Форма входа

    Теги
    текстура скачать Игра металл движок графика Звук железо Код скрипт 3d neoaxis бесплатно сервер дерево программа lineage 2 Камень набор Пак природа редактор аудио булыжник Обновление jRPG Фольга 2d конструктор звуки метал краска ржавчина pack Sound эффект картинка кирпич Бесшовная цемент бетон кладка электроника прибор панель плата стена Hi Tech sci fi освещение Космос Sci-Fi интерфейс черепица крыша ткань спрайт стекло плитка решётка Пол Грязь HD Иконки рпг предмет фон ночь Город небо закат озеро Горы аниме Анимация Япония зима лес иконка тучи абстракция фрактал бумага пластина SaveLoad мрамор книга GUI Background изображение блок Блоки аватар воин девушка мужчина Аватарка маг друид

    Поиск

    Друзья сайта
  • Diablo 2 LoD
  • Ремонт стиральных машин


  • igrostroi.3dn.ru - Создавай игры! © 2024
    Бесплатный хостинг uCoz

    Вы можете скачать текстуры, модели, 2D и 3D движки и конструкторы игр бесплатно. Всё для создания игр разных жанров и направлений. Иконки, мануалы, скрипты и код.
    UDK, Unity, HTML, Java.