Страница 35 из 143 ПерваяПервая ... 2533343536374585135 ... ПоследняяПоследняя
Показано с 341 по 350 из 1427

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

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

    По умолчанию

    Ещё один вопрос.
    Как улучшить этот отрывок?
    Код:
    if Input.press?(Input::SHIFT)
            if @dash > 0
              $game_player.move_speed = 5
              @dash -= 2
            else
              if @dash < 100
                @dash += 1
              end
              $game_player.move_speed = 4
            end
          else
            $game_player.move_speed = 4
          end


  2. #342
    Бывалый Аватар для Dark32
    Информация о пользователе
    Регистрация
    30.12.2008
    Адрес
    Арзамас
    Сообщений
    640
    Записей в дневнике
    2
    Репутация: 20 Добавить или отнять репутацию

    По умолчанию

    Код:
    if Input.press?(Input::SHIFT)
              $game_player.move_speed =@dash > 0 ? 5 : 4
              @dash_koef =@dash > 0 ? -2 : 1
          else
            $game_player.move_speed = 4
    end
    Код:
    def update
    <....> # old code
    @dash += @dash_koef
    end
    если методы не твои, то делаем алясы (alias)

    тернарный оператор
    Код:
     a ? b : c
    Спойлер описание, небольшое:

    равносилен
    Код:
    if a then
     b 
    else
     c
     end
    только можно использовать в присваивание
    Код:
    var = a ? b : c
    равносильно
    Код:
    if a 
    var = b
    else
     var = c
    end
    Последний раз редактировалось Dark32; 03.05.2011 в 22:21.
    Нужна помощь в скриптах? Запутался? Голова не варит?
    Читал это и это тоже? Не помогло? Тогда тебе сюда!
    Спойлер •••:
    Цитата Сообщение от Реймон
    В мире нет вещей которые нельзя решить с помощью сладостей
    Цитата Сообщение от Ундер
    Ночью можно обойтись и без сладостей...

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

    По умолчанию

    Так как у меня проще. А за полезную информацию спасибо. А можно поподробнее про alias.


  4. #344
    Бывалый Аватар для Dark32
    Информация о пользователе
    Регистрация
    30.12.2008
    Адрес
    Арзамас
    Сообщений
    640
    Записей в дневнике
    2
    Репутация: 20 Добавить или отнять репутацию

    По умолчанию

    PHP код:
    alias d32_main main 
    alias - ключевое слово
    d32_main - новое имя
    main - старое имя

    грубо говоря - создаётся копия метода. Это нужно когда родной метод должен остаться не изменённым, а нам нужно лишь дополнить его парой новых функций. Примеров можно найти кучу. Самый простой:
    PHP код:
    class Scene_Map
      alias d32_main main
      def main
       
    @hz_win Dymmy_Window.new(0,0,120,100)# Dymmy_Window - заранее созданный класс
       
    d32_main#вызываем старый класс
      
    end
      alias d32_update update
      def update
       d32_update
    #порядок важен - от него завиисит что буде выполнятся первым
       
    @hz_win.update#
      
    end
    end 
    нужно ещё на разрушение так же сделать
    Спойлер Dymmy_Window:

    PHP код:
    class Dymmy_Window Window_Base
     def initialize
    (x,y,dx,dy)
        
    super(x,y,dx,dy)
        
    self.contents Bitmap.new(width 32height 32)
      
    end
     def update
       self
    .contents.draw_text(0,0,120,32,"#{Time}")#вывести время
     
    end 
    end 

    За работоспособность не отвечаю
    Нужна помощь в скриптах? Запутался? Голова не варит?
    Читал это и это тоже? Не помогло? Тогда тебе сюда!
    Спойлер •••:
    Цитата Сообщение от Реймон
    В мире нет вещей которые нельзя решить с помощью сладостей
    Цитата Сообщение от Ундер
    Ночью можно обойтись и без сладостей...

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

    По умолчанию

    Появился вопрос. Как изменять текст выбора(Window_Commands) после его создания. Я хочу сделать улучшенную менюшку. Типа что бы было "Вещи" до наведения и ">Вещи" при выделении.


  6. #346
    Бывалый Аватар для Dark32
    Информация о пользователе
    Регистрация
    30.12.2008
    Адрес
    Арзамас
    Сообщений
    640
    Записей в дневнике
    2
    Репутация: 20 Добавить или отнять репутацию

    По умолчанию

    В ХР так нельзя, в ВеХе не знаю, особо не работал. Я обычно свой класс Window_Commands (вроде в ХР селектабле) пишу. В принципе могу на глаз написать, выложи сюда исходный класс, попробую сделать.
    Нужна помощь в скриптах? Запутался? Голова не варит?
    Читал это и это тоже? Не помогло? Тогда тебе сюда!
    Спойлер •••:
    Цитата Сообщение от Реймон
    В мире нет вещей которые нельзя решить с помощью сладостей
    Цитата Сообщение от Ундер
    Ночью можно обойтись и без сладостей...

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

    По умолчанию

    Window_Selectable
    Код:
    class Window_Selectable < Window_Base
      #--------------------------------------------------------------------------
      attr_reader   :index
      attr_reader   :help_window
      #--------------------------------------------------------------------------
      def initialize(x, y, width, height)
        super(x, y, width, height)
        @item_max = 1
        @column_max = 1
        @index = -1
      end
      #--------------------------------------------------------------------------
      def index=(index)
        @index = index
        if self.active and @help_window != nil
          update_help
        end
        update_cursor_rect
      end
      #--------------------------------------------------------------------------
      def row_max
        return (@item_max + @column_max - 1) / @column_max
      end
      #--------------------------------------------------------------------------
      def top_row
        return self.oy / 32
      end
      #--------------------------------------------------------------------------
      def top_row=(row)
        if row < 0
          row = 0
        end
        if row > row_max - 1
          row = row_max - 1
        end
        self.oy = row * 32
      end
      #--------------------------------------------------------------------------
      def page_row_max
        return (self.height - 32) / 32
      end
      #--------------------------------------------------------------------------
      def page_item_max
        return page_row_max * @column_max
      end
      #--------------------------------------------------------------------------
      def help_window=(help_window)
        @help_window = help_window
        if self.active and @help_window != nil
          update_help
        end
      end
      #--------------------------------------------------------------------------
      def update_cursor_rect
        if @index < 0
          self.cursor_rect.empty
          return
        end
        row = @index / @column_max
        if row < self.top_row
          self.top_row = row
        end
        if row > self.top_row + (self.page_row_max - 1)
          self.top_row = row - (self.page_row_max - 1)
        end
        cursor_width = self.width / @column_max - 32
        x = @index % @column_max * (cursor_width + 32)
        y = @index / @column_max * 32 - self.oy
        self.cursor_rect.set(x, y, cursor_width, 32)
      end
      #--------------------------------------------------------------------------
      def update
        super
        if self.active and @item_max > 0 and @index >= 0
          if Input.repeat?(Input::DOWN)
            if (@column_max == 1 and Input.trigger?(Input::DOWN)) or
               @index < @item_max - @column_max
              $game_system.se_play($data_system.cursor_se)
              @index = (@index + @column_max) % @item_max
            end
          end
          if Input.repeat?(Input::UP)
            if (@column_max == 1 and Input.trigger?(Input::UP)) or
               @index >= @column_max
              $game_system.se_play($data_system.cursor_se)
              @index = (@index - @column_max + @item_max) % @item_max
            end
          end
          if Input.repeat?(Input::RIGHT)
            if @column_max >= 2 and @index < @item_max - 1
              $game_system.se_play($data_system.cursor_se)
              @index += 1
            end
          end
          if Input.repeat?(Input::LEFT)
            if @column_max >= 2 and @index > 0
              $game_system.se_play($data_system.cursor_se)
              @index -= 1
            end
          end
          if Input.repeat?(Input::R)
            if self.top_row + (self.page_row_max - 1) < (self.row_max - 1)
              $game_system.se_play($data_system.cursor_se)
              @index = [@index + self.page_item_max, @item_max - 1].min
              self.top_row += self.page_row_max
            end
          end
          if Input.repeat?(Input::L)
            if self.top_row > 0
              $game_system.se_play($data_system.cursor_se)
              @index = [@index - self.page_item_max, 0].max
              self.top_row -= self.page_row_max
            end
          end
        end
        if self.active and @help_window != nil
          update_help
        end
        update_cursor_rect
      end
    end
    Window_Command
    Код:
    class Window_Command < Window_Selectable
      #--------------------------------------------------------------------------
      def initialize(width, commands)
        super(0, 0, width, commands.size * 32 + 32)
        @item_max = commands.size
        @commands = commands
        self.contents = Bitmap.new(width - 32, @item_max * 32)
        self.contents.font.name = $fontface
        self.contents.font.size = $fontsize
        refresh
        self.index = 0
      end
      #--------------------------------------------------------------------------
      def refresh
        self.contents.clear
        for i in 0...@item_max
          draw_item(i, normal_color)
        end
      end
      #--------------------------------------------------------------------------
      def draw_item(index, color)
        self.contents.font.color = color
        rect = Rect.new(4, 32 * index, self.contents.width - 8, 32)
        self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))
        self.contents.draw_text(rect, @commands[index])
      end
      #--------------------------------------------------------------------------
      def disable_item(index)
        draw_item(index, disabled_color)
      end
    end
    Последний раз редактировалось Andrew; 04.05.2011 в 21:26.


  8. #348
    Бывалый Аватар для Dark32
    Информация о пользователе
    Регистрация
    30.12.2008
    Адрес
    Арзамас
    Сообщений
    640
    Записей в дневнике
    2
    Репутация: 20 Добавить или отнять репутацию

    По умолчанию

    PHP код:
    class Window_Command Window_Selectable
     alias initialize_old initialize 
    # переопределяем инициализацию 
     
    def initialize(widthcommands)
        @
    disa=[] # массив выключенных опций, необходим для отображения выключенных опций
        
    initialize_old(widthcommands# вызываем старый метод
     
    end 
     def update 
    #даже не спрашивай
        
    super # вызываем обновление из над класса Window_Selectable
        
    refresh # обновляем локально
      
    end 
      def draw_item
    (indexcolor)
        
    self.contents.font.color = @disa.include?(index) ? disabled_color color # рисуем выключенную опцию серым, иначе белым (пользовательская настройка)
        
    rect Rect.new(432 indexself.contents.width 832)
        
    self.contents.fill_rect(rectColor.new(0000))
        
    self.contents.draw_text(rect, (index == self.index "->" "")+@commands[index]) # рисуем "->" если рисуем выбранную опцию (в ХР задержка была 0.3 - 0.75 секунды при первой прорисовки)
      
    end
      def disable_item
    (index)
        @
    disa << index # добавляем в массив номера выключенных поций
      
    end
    end 
    Так же можно взять моё расширение draw_text и запилить иконку вместо "->"
    Последний раз редактировалось Dark32; 04.05.2011 в 22:17.
    Нужна помощь в скриптах? Запутался? Голова не варит?
    Читал это и это тоже? Не помогло? Тогда тебе сюда!
    Спойлер •••:
    Цитата Сообщение от Реймон
    В мире нет вещей которые нельзя решить с помощью сладостей
    Цитата Сообщение от Ундер
    Ночью можно обойтись и без сладостей...

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

    По умолчанию

    Спасибо, работает. Щас буду разбираться.


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

    По умолчанию

    А можно как нибудь сделать прямоугольник(rect) прозрачным?


Страница 35 из 143 ПерваяПервая ... 2533343536374585135 ... ПоследняяПоследняя

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

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

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

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

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

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

Ваши права

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