Плохо! Плохо!:  0
Страница 1 из 2 12 ПоследняяПоследняя
Показано с 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 в 21:52.

  2. #2
    Мастер Форума Аватар для Рольф
    Информация о пользователе
    Регистрация
    14.04.2008
    Адрес
    Южно- Сахалинск/Пенза
    Сообщений
    8,279
    Записей в дневнике
    2
    Репутация: 87 Добавить или отнять репутацию

    По умолчанию

    Может по лучше оформишь, а то даже не понятно что за скрипт.

  3. #3

    По умолчанию

    Решил вставить здесь другой скрипт, того что был просто не откопал.

  4. #4
    Маститый Аватар для Narcotic Truth
    Информация о пользователе
    Регистрация
    29.04.2008
    Адрес
    RUSSIA
    Сообщений
    1,281
    Записей в дневнике
    2
    Репутация: 26 Добавить или отнять репутацию

    По умолчанию

    Полезная штука. А для ХР такой нет?
    --- Yellow House Studio ---

  5. #5

    По умолчанию

    Цитата Сообщение от Narcotic Truth Посмотреть сообщение
    Полезная штука. А для ХР такой нет?
    Увы нет, было бы выложил.

  6. #6
    Маститый Аватар для Andrew
    Информация о пользователе
    Регистрация
    08.02.2011
    Адрес
    Беларусь, Витебск
    Сообщений
    1,049
    Записей в дневнике
    3
    Репутация: 30 Добавить или отнять репутацию

    По умолчанию

    Ура!!! Он на ВХ.


  7. #7
    Маститый Аватар для Nalia
    Информация о пользователе
    Регистрация
    18.09.2009
    Адрес
    Пенза
    Сообщений
    1,374
    Записей в дневнике
    104
    Репутация: 78 Добавить или отнять репутацию

    По умолчанию

    А для ХР такой нет?
    Кажется, где-то встречала. На Криэйтор Азилум, что ли.
    Я отрицаю вашу реальность и заменю её своей. (c) Джон Адам Севидж

    Надо работать, работать надо. Ремешки под касками затянуть потуже, шинели в порядок привести, в кобуру засунуть трудолюбие 36 калибра и марш за мейкер! (с) Tall Men

  8. #8
    Авторитет Аватар для David Kristens
    Информация о пользователе
    Регистрация
    27.09.2010
    Сообщений
    1,688
    Записей в дневнике
    149
    Репутация: 66 Добавить или отнять репутацию

    По умолчанию

    эхъ, на ХР бы...

  9. #9
    Авторитет Аватар для Doctor Cid
    Информация о пользователе
    Регистрация
    21.06.2010
    Адрес
    Molvania
    Сообщений
    1,504
    Записей в дневнике
    49
    Репутация: 37 Добавить или отнять репутацию

    По умолчанию

    эхъ, на ХР бы...
    На XP только вражеский детектор врагов видел, работающий по схожей схеме. Тоже интересная штука. Идёшь так по локации, и как увидит тебя враг, так набегает сразу же...
    Последний раз редактировалось Doctor Cid; 01.07.2011 в 16:45.
    «Оптимизм — это недостаток информации»

  10. #10
    Познающий Аватар для mephis
    Информация о пользователе
    Регистрация
    27.01.2011
    Адрес
    Новосибирск
    Сообщений
    330
    Записей в дневнике
    8
    Репутация: 34 Добавить или отнять репутацию

    По умолчанию

    Такой механизм использовался в XAS Hero Edition.

    Поэтому скрипт можно смело юзать на XP, с небольшими правками:
    Код:
    #==============================================================================
    # MOG VX - Event Sensor Range
    #==============================================================================
    # By Moghunter 
    # http://www.atelier-rgss.com/
    #
    # ■ Ativa uma determinada página (SELF SWITCH D)do evento dependendo da
    # distância do personagem. Isso serve para o evento ter 2 comportamentos
    # uma quando o personagem estiver perto e outro para quando o personagem 
    # estiver longe, útil para fazer puzzles ou eventos inimigos.
    # ---------------------------------------------------------------------------
    # Para definir a distância do sensor do evento basta colocar no nome
    # a seguinte syntax.
    #
    # <sensorX>
    #
    # X - Distância do sensor.
    #
    # Ex - <sensor5>
    # ---------------------------------------------------------------------------
    # NOTA - Não esqueça de criar uma nova página com a chave de ativação, está
    # página será ativada quando o personagem entrar no sensor do evento.
    #==============================================================================
    module MOG
      # Definição da chave de switch. ( 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

Страница 1 из 2 12 ПоследняяПоследняя

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

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

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

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

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

Ваши права

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