Показано с 1 по 10 из 12

Тема: Event Sensor Range

Древовидный режим

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1

    По умолчанию Event Sensor Range

    Event Sensor Range
    By Moghunter

    Описание:
    Данный скрипт позволяет запускать ивенты без контакта с ними, например стоит бочка вы стоите в пяти клетках от нее, но как только вы встанете в трех клетках из бочки вылезет кот. Многие могут воскликнуть что это можно сделать и на ивентах, да можно, но вы потратите ни один ивент как здесь, а два-три.

    Использование:
    <sensorX> X - кол-во клеток вокруг ивента до персонажа.



    Создаем новую страницу с определенным содержимым и делаем как показано ниже:



    Демка:
    Event Sensor Range 1.0

    Скрипт:
    Для RPG Maker XP:
    Код:
    #==============================================================================
    # MOG XP - Event Sensor Range
    #==============================================================================
    # Автор: Moghunter 
    # http://www.atelier-rgss.com/
    #
    # ■ Переключение на определённую (Локальный свитч D) страницу ивента, в
    # зависимости от расстояния до игрока. Этот скрипт нужен для создания 
    # ивентов с двумя разными стилями поведения. Один - когда игрок далеко,
    # другой - когда он близко. Полезен при создании головоломок или ивентов
    # врагов.
    # ---------------------------------------------------------------------------
    # Чтобы определить расстояние срабатывания сенсора, допишите к имени ивента:
    #
    # <sensorX>
    #
    # X - Расстояние, на котором сработает сенсор.
    #
    # Например - <sensor5>
    # ---------------------------------------------------------------------------
    # ПРИМЕЧАНИЕ - Не забудьте создать новую страницу и указать на ней условие
    # с локальным свитчем, чтобы сенсор сработал как надо.
    #==============================================================================
    module MOG
      # Укажите свитч, который будет использоваться для сенсора. ( A, B, C, D )
      SENSOR_KEY = "D"
    end  
    #==============================================================================
    # Game_Event
    #==============================================================================
    class Game_Event < Game_Character
      #--------------------------------------------------------------------------
      # ● initialize
      #--------------------------------------------------------------------------
      alias mog_sensor_range initialize
      def initialize(map_id, event)
        if event.name =~ /<sensor(\d+)>/i
            @sensor_range = $1.to_i
        else    
            @sensor_range = 0
        end
        @key_act = false
        @key_act_old = @key_act
        mog_sensor_range(map_id, event)    
      end    
      #--------------------------------------------------------------------------
      # ● update
      #--------------------------------------------------------------------------
      alias mog_sensor_update update
      def update
          mog_sensor_update
          if @sensor_range > 0
             sx = $game_player.x - self.x
             sy = $game_player.y - self.y
             range = (sx.abs + sy.abs)
             sensor = (range >= @sensor_range)      
             if sensor
                @key_act = false
              else
                @key_act = true
             end
           end  
         page_check if @key_act_old != @key_act
       end  
      #--------------------------------------------------------------------------
      # ● page_check
      #--------------------------------------------------------------------------   
       def page_check
          @key_act_old = @key_act
          key = [@map_id, @event.id, MOG::SENSOR_KEY]
          $game_self_switches[key] = @key_act
          refresh
       end
    end
    
    
    $mog_rgssvx_event_sensor_range = true

    Для RPG Maker VX:
    Код:
    #==============================================================================
    # MOG VX - Event Sensor Range
    #==============================================================================
    # Автор: Moghunter 
    # http://www.atelier-rgss.com/
    #
    # ■ Переключение на определённую (Локальный свитч D) страницу ивента, в
    # зависимости от расстояния до игрока. Этот скрипт нужен для создания 
    # ивентов с двумя разными стилями поведения. Один - когда игрок далеко,
    # другой - когда он близко. Полезен при создании головоломок или ивентов
    # врагов.
    # ---------------------------------------------------------------------------
    # Чтобы определить расстояние срабатывания сенсора, допишите к имени ивента:
    #
    # <sensorX>
    #
    # X - Расстояние, на котором сработает сенсор.
    #
    # Например - <sensor5>
    # ---------------------------------------------------------------------------
    # ПРИМЕЧАНИЕ - Не забудьте создать новую страницу и указать на ней условие
    # с локальным свитчем, чтобы сенсор сработал как надо.
    #==============================================================================
    module MOG
      # Укажите свитч, который будет использоваться для сенсора. ( A, B, C, D )
      SENSOR_KEY = "D"
    end 
    #==============================================================================
    # Game_Event
    #==============================================================================
    class Game_Event < Game_Character
      #--------------------------------------------------------------------------
      # ● initialize
      #--------------------------------------------------------------------------
      alias mog_sensor_range initialize
      def initialize(map_id, event)
        if event.name =~ /<sensor(\d+)>/i
            @sensor_range = $1.to_i
        else    
            @sensor_range = 0
        end
        @key_act = false
        @key_act_old = @key_act
        mog_sensor_range(map_id, event)    
      end    
      #--------------------------------------------------------------------------
      # ● update
      #--------------------------------------------------------------------------
      alias mog_sensor_update update
      def update
          mog_sensor_update
          if @sensor_range > 0
             sx = distance_x_from_player
             sy = distance_y_from_player
             range = (sx.abs + sy.abs)
             sensor = (range >= @sensor_range)      
             if sensor
                @key_act = false
              else
                @key_act = true
             end
           end  
         page_check if @key_act_old != @key_act
       end  
      #--------------------------------------------------------------------------
      # ● page_check
      #--------------------------------------------------------------------------   
       def page_check
          @key_act_old = @key_act
          key = [@map_id, @event.id, MOG::SENSOR_KEY]
          $game_self_switches[key] = @key_act
          refresh
       end
    end
    
    
    $mog_rgssvx_event_sensor_range = true
    Последний раз редактировалось aisuuw; 01.07.2011 в 20:52.

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

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

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

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

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

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •  
Event Sensor Range