Показано с 1 по 3 из 3

Тема: Анимация воды в ХР

Комбинированный просмотр

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1
    Маститый Аватар для Antberg
    Информация о пользователе
    Регистрация
    14.04.2008
    Сообщений
    1,359
    Записей в дневнике
    3
    Репутация: 53 Добавить или отнять репутацию

    По умолчанию

    Вроде уже кидал, но тем не менее. Смена тайлсета прямо на карте для ХР:

    Код:
    #====================================
    #  Phylomortis Script, Ryethe.  Rewrite: Leon_Westbrooke
    #------------------------------------------------------------------------
    #  Game_Map and Spriteset_Map are aliased
    #  To call $game_map.replace_tileset(x), where x is the ID number of the new tileset.
    #====================================
    
    #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    #  Game_Map
    #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    class Game_Map
      attr_accessor :new_tileset
      
      alias leon_gm_tileset_setup setup
      
      def setup(map_id)
    	@new_tileset = false
    	leon_gm_tileset_setup(map_id)
      end
      
      def replace_tileset(new_tiles)
    	tileset = $data_tilesets[new_tiles]
    	@tileset_name = tileset.tileset_name
    	@autotile_names = tileset.autotile_names
    	@panorama_name = tileset.panorama_name
    	@panorama_hue = tileset.panorama_hue
    	@fog_name = tileset.fog_name
    	@fog_hue = tileset.fog_hue
    	@fog_opacity = tileset.fog_opacity
    	@fog_blend_type = tileset.fog_blend_type
    	@fog_zoom = tileset.fog_zoom
    	@fog_sx = tileset.fog_sx
    	@fog_sy = tileset.fog_sy
    	@battleback_name = tileset.battleback_name
    	@passages = tileset.passages
    	@priorities = tileset.priorities
    	@terrain_tags = tileset.terrain_tags
    	$game_map.new_tileset = true
      end
    end
    
    #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    #  Spriteset_Map
    #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    class Spriteset_Map
      
      alias leon_sm_tileset_update update
      
      def update  
    	if $game_map.new_tileset == true
    	  @tilemap.tileset = RPG::Cache.tileset($game_map.tileset_name)
    	  @tilemap.priorities = $game_map.priorities
    	  for i in 0..6
    		autotile_name = $game_map.autotile_names[i]
    		@tilemap.autotiles[i] = RPG::Cache.autotile(autotile_name)
    	  end
    	  $game_map.new_tileset = false
    	end
    	leon_sm_tileset_update
      end
    end
    В самой игре вызывается через команду "выполнить скрипт", где вводится "$game_map.replace_tileset(1)", где "(1)" это номер набора тайлов в базе данных (как пример). Насколько помню, есть какое-то ограничение, как то - все наборы, прогоняемые через эту команду, должны иметь один и тот-же размер, иначе вылетит. Ну, это не такая большая проблема.

    С помощью этого можно как раз делать анимированные карты, просто "перелистывая" наборы с заданной скоростью через эвент.
    Последний раз редактировалось Antberg; 31.01.2015 в 07:50.

  2. #2
    Познающий Аватар для DeadElf79
    Информация о пользователе
    Регистрация
    09.08.2013
    Сообщений
    276
    Записей в дневнике
    12
    Репутация: 22 Добавить или отнять репутацию

    По умолчанию

    Кину в эту же тему скрипт, о котором писал в дневнике:
    Код:
    # Делает имитацию анимации воды с помощью автоматической
    # смены всех тайлов.
    # Первая цифра - оригинальный ID тайла на карте, все остальные - кадры,
    # на которые он будет заменяться.
    DE79_WATER_TILES=[
      [475,476],
      [494,495],
      [526,494]
    ]
    def de79_water
      for x in 0...$game_map.data.xsize
        for y in 0...$game_map.data.ysize
          z=0
          for row in 0...DE79_WATER_TILES.size
            if $game_map.data[x,y,z]==DE79_WATER_TILES[row][0]
              $game_map.data[x,y,z]=DE79_WATER_TILES[row][1]
              next
            end
            if $game_map.data[x,y,z]==DE79_WATER_TILES[row][1]
              $game_map.data[x,y,z]=DE79_WATER_TILES[row][0]
              next
            end
          end
        end
      end
    end
    Настройка ивента:


    В результате заменяет тайлы с указанным ID на тайлы с другим ID. К сожалению, пока "анимация" состоит из двух кадров, но уже сейчас при хитрой настройке массива DE79_WATER_TILES можно получить анимацию из большего числа кадров.

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Метки этой темы

Социальные закладки

Социальные закладки

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •  
Анимация воды в ХР