Страница 130 из 147 ПерваяПервая ... 3080120128129130131132140 ... ПоследняяПоследняя
Показано с 1,291 по 1,300 из 1470

Тема: Помощь с скриптами (RGSS)

  1. #1291
    Маститый Аватар для HopeBree
    Информация о пользователе
    Регистрация
    27.03.2013
    Сообщений
    1,204
    Записей в дневнике
    6
    Репутация: 38 Добавить или отнять репутацию

    По умолчанию

    у меня стоит скрипт на всю клавиатуру, по этому Keys, а не Input. и да, я это писал по памяти, а не копипастил со скрипта, видать не заметил. у меня в скрипте то уже отлично все, кроме скрытия фонарика после менюшки D:

  2. #1292

    По умолчанию

    Скинь тогда весь код

  3. #1293
    Маститый Аватар для HopeBree
    Информация о пользователе
    Регистрация
    27.03.2013
    Сообщений
    1,204
    Записей в дневнике
    6
    Репутация: 38 Добавить или отнять репутацию

    По умолчанию

    PHP код:
    module HB
      module FLASHLIGHT
        FLASHLIGHT 

        BUTTOM     
    Keys::
        ONOFFSE    
    "Cursor1"
        
    F_SWITCH   90
      end
    end

    class Spriteset_Map
      
      alias hb_create_flashlight initialize
      def initialize
        hb_create_flashlight
        create_flashlight
      end
      def create_flashlight
        
    @flashlight Sprite.new(@viewport1)
        @
    flashlight.opacity 200
        
    @flashlight.blend_type 
        
    @flashlight.297 
        
    @flashlight.ox 150 2
        
    @flashlight.oy 150 2
        
    @flashlight.visible false
      end
      
      alias hb_update_flashlight update
      def update
        hb_update_flashlight
        update_flashlight
      end
      def update_flashlight
        
    return if !@flashlight
        
    return if !$game_switches[HB::FLASHLIGHT::F_SWITCH]
        return if !
    $game_party.has_item?($data_items[HB::FLASHLIGHT::FLASHLIGHT])
        if 
    Keys.trigger?(Keys::F) && @flashlight.visible == true
          Audio
    .se_play("Audio/SE/" HB::FLASHLIGHT::ONOFFSE70100)
          @
    flashlight.visible false
        elsif Keys
    .trigger?(Keys::F) && @flashlight.visible == false
          Audio
    .se_play("Audio/SE/" HB::FLASHLIGHT::ONOFFSE70100)
          @
    flashlight.visible true
        end
        filename 
    "flashlight_"
        
    filename += $game_player.direction.to_s
        
    @flashlight.bitmap.dispose if @flashlight.bitmap
        
    @flashlight.bitmap Cache.system(filename)
        @
    flashlight.$game_player.screen_x
        
    @flashlight.$game_player.screen_y 16
      end
      
      alias hb_dispose_flashlight dispose
      def dispose
        hb_dispose_flashlight
        dispose_flashlight
      end
      def dispose_flashlight
        
    @flashlight.dispose if @flashlight
      end  
    end 
    пришлось отказаться от предложенного тобой обновления спрайта в апдейте, ибо у меня при повороте на 180 градусов, персонаж поворачивается сначала на 90 и потом еще раз на 90 в итоге фонарик отображался не корректно и еще были замечены пары багов с ним, если использовать мув роут.

  4. #1294

    По умолчанию

    можно также добавить условие на направление, куда смотрит персонаж... ну это ладно

    по поводу visible = false. Как вариант предложил Lipton. В $game_map создать переменную @flashlight_visible, а при создании самого спрайта @flashlight.visible = $game_map.flashlight_visible, а в обновление написать:

    Спойлер Код:
    Код:
    if Keys.trigger?(Keys::F)
         if @flashlight.visible == true 
          Audio.se_play("Audio/SE/" + HB::FLASHLIGHT::ONOFFSE, 70, 100) 
          @flashlight.visible = false
          $game_map.flashlight_visible = false
        else
          Audio.se_play("Audio/SE/" + HB::FLASHLIGHT::ONOFFSE, 70, 100) 
          @flashlight.visible = true
          $game_map.flashlight_visible = true
       end
    end

  5. #1295
    Маститый Аватар для HopeBree
    Информация о пользователе
    Регистрация
    27.03.2013
    Сообщений
    1,204
    Записей в дневнике
    6
    Репутация: 38 Добавить или отнять репутацию

    По умолчанию

    о, окей, понял, сделал, работает :3
    осталось допилить батарейки

    а нельзя же сделать так, у меня карта состоит в основном из 6 слоев:
    1. под персонажем
    2. над персонажем
    3. фонарик и тьма(черный слой, только видно что под слоем фонарика)
    4. еще один слой над персонажем
    5. тени
    6. лайты

    вот слой отвечающий за тьму, должен лежать именно на этом слое, но так же перекрывать и все слои выше?
    просто как я понял при создании эффекта слоя, что виден только свет от фонарика, можно сделать задав координату z слоя фонарика и тьмы на одном уровне
    переносить фонарик тоже нельзя, ибо 4 слой должен перекрывать лайты от фонарика, чтобы не было света сквозь стены и тп

  6. #1296
    Маститый Аватар для HopeBree
    Информация о пользователе
    Регистрация
    27.03.2013
    Сообщений
    1,204
    Записей в дневнике
    6
    Репутация: 38 Добавить или отнять репутацию

    По умолчанию

    может кто помочь с оптимизацией?
    Спойлер все работает, но при включенной темноте, фпс не выше 30:
    PHP код:
    module HB
      module FLASHLIGHT
        FLASHLIGHT 
    1          # ID фонарика
        
    BUTTOM     Keys::F    # Кнопка вкл/выкл фонарика
        
    ONOFFSE    "Cursor1"  # Звук при включении и выключении фонарика
        
    F_SWITCH   90         # ID переключателя работы фонарика
        
    F_VARIABLE 90         # ID заряда батарейки
        
    D_SWITCH   91         # ID переключателя работы темноты
      
    end
    end

    class Spriteset_Map
      
      alias hb_create_flashlight initialize
      def initialize
        hb_create_flashlight
        create_flashlight
        create_darkness
      end
      def create_flashlight
        
    @flashlight Sprite.new(@viewport1)
        @
    flashlight.opacity 200
        
    @flashlight.blend_type 
        
    @flashlight.296 
        
    @flashlight.ox 150 2
        
    @flashlight.oy 150 2
        
    @flashlight.visible $game_map.flashlight_visible
      end
      def create_darkness
        
    @darkness Sprite.new(@viewport1)
        @
    darkness.opacity 200
        
    @darkness.blend_type 
        
    @darkness.297
        
    @darkness.ox 2048 2
        
    @darkness.oy 2048 2
      end
      
      alias hb_update_flashlight update
      def update
        hb_update_flashlight
        update_flashlight
        update_darkness
      end
      def update_flashlight
        
    return if !@flashlight
        
    return if !$game_switches[HB::FLASHLIGHT::F_SWITCH]
        return if !
    $game_party.has_item?($data_items[HB::FLASHLIGHT::FLASHLIGHT])
        if @
    flashlight.visible == true && $game_variables[HB::FLASHLIGHT::F_VARIABLE] > 0
          $game_variables
    [HB::FLASHLIGHT::F_VARIABLE] -= 1
        end
        
    if $game_variables[HB::FLASHLIGHT::F_VARIABLE] == 0
          
    @flashlight.visible false
          $game_map
    .flashlight_visible false
        end
        
    if Keys.trigger?(Keys::F)
        
    Audio.se_play("Audio/SE/" HB::FLASHLIGHT::ONOFFSE70100)
        return if 
    $game_variables[HB::FLASHLIGHT::F_VARIABLE] == 0
          
    if @flashlight.visible == true 
            
    @flashlight.visible false
            $game_map
    .flashlight_visible false
          
    else
            @
    flashlight.visible true
            $game_map
    .flashlight_visible true
          end
        end
        filename 
    "flashlight_"
        
    filename += $game_player.direction.to_s
        
    @flashlight.bitmap.dispose if @flashlight.bitmap
        
    @flashlight.bitmap Cache.system(filename)
        @
    flashlight.$game_player.screen_x
        
    @flashlight.$game_player.screen_y 16
      end
      def update_darkness
        
    return if !@darkness
        
    return if !$game_switches[HB::FLASHLIGHT::D_SWITCH]
        return if @
    last_player_x == $game_player.screen_x && @last_player_y == $game_player.screen_y 16 # чтобы лишний раз не обновлять
        
    @last_player_x $game_player.screen_x
        
    @last_player_y $game_player.screen_y 16
        filename 
    "darkness"
        
    @darkness.bitmap.dispose if @darkness.bitmap
        
    @darkness.bitmap Cache.system(filename)
        @
    darkness.= @last_player_x
        
    @darkness.= @last_player_y
      end

      
      alias hb_dispose_flashlight dispose
      def dispose
        hb_dispose_flashlight
        dispose_flashlight
        dispose_darkness
      end
      def dispose_flashlight
        
    @flashlight.dispose if @flashlight
      end
      def dispose_darkness
        
    @darkness.dispose if @darkness
      end  
    end

    class Game_Map
      attr_accessor 
    :flashlight_visible
      
      alias hb_flashlight_visible_initialize initialize
      def initialize
        hb_flashlight_visible_initialize
        
    @flashlight_visible false
      end
    end 


    upd: все, исправил, я дурак просто, засунул в апдейт создание битмапа
    Вложения Вложения
    Последний раз редактировалось HopeBree; 14.10.2015 в 19:05.

  7. #1297

    По умолчанию

    зачем тебе постоянно создавать темноту ? Достаточно менять координаты

  8. #1298
    Маститый Аватар для HopeBree
    Информация о пользователе
    Регистрация
    27.03.2013
    Сообщений
    1,204
    Записей в дневнике
    6
    Репутация: 38 Добавить или отнять репутацию

    По умолчанию

    да я чтоб по 200 раз одно и тоже не писать, ctrl+c ctrl+v и не глянул что сделал

  9. #1299

    По умолчанию

    ну и можно добавить условие на направление:
    return if @last_player_direction == $game_player.direction
    @last_player_direction = $game_player.direction

  10. #1300

    По умолчанию

    Кто знает, почему выдает ошибку ?)

    Спойлер Код:
    Код:
    $Game_Time = Game_Time.new
    $Saved_Game_Time = Game_Time.new($Game_Time) # на этой строчке ошибка (wrong number of arguments (1 for 0))
    
    initialize в Game_Time принимает *args

Страница 130 из 147 ПерваяПервая ... 3080120128129130131132140 ... ПоследняяПоследняя

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

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

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

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

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

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

Ваши права

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