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

Тема: Big events

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

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1
    Пользователь Аватар для Sheo
    Информация о пользователе
    Регистрация
    09.01.2014
    Адрес
    Сибирь, берлога
    Сообщений
    31
    Репутация: 1 Добавить или отнять репутацию

    По умолчанию

    Прикрутил к Mouse System Button 8-diagonal way (диагональное движение). Подсмотренным в других скриптах и научным тыком, получилось наверняка криво и избыточно, но работает.
    Есть два ограничения:
    1) сам скрипт мыши в целом не дружит с закольцованными картами (как и многие другие мышиные, т.к. надо корректно искать путь через край карты на другой край)
    2) сия правка может не работать с 8-диагональным передвижением для клавиатуры (из-за используемого move_diagonal )

    Заменить в скрипте Mouse System Button 2.5 блок с определением def run_path (примерно строка с 991 до 1015 (до def find_path(x,y)) )
    Спойлер 8way\Diagonal движение:

    Код:
      def run_path
        return if moving?
        step = @map[@x,@y]
        if step == 1
          @map = nil
          @runpath = false
          return
        end
        dir = rand(2)
    
          dirs = []
          dirs.push(6) if @map[@x+1, @y] == step - 1 && step != 0
          dirs.push(4) if @map[@x-1, @y] == step - 1 && step != 0
          dirs.push(2) if @map[@x, @y+1] == step - 1 && step != 0
          dirs.push(8) if @map[@x, @y-1] == step - 1 && step != 0
    
        case dir
    
        when 0
            if dirs.size == 2 && diagonal_passable?(@x,@y,dirs[0],dirs[1])
              move_diagonal(dirs[0],dirs[1])
              dirs.delete_at(0)
              dirs.delete_at(0)
            else
              dir = dirs.delete_at(rand(dirs.size))
          move_straight(6) if @map[@x+1,@y] == step - 1 && step != 0
          move_straight(2) if @map[@x,@y+1] == step - 1 && step != 0
          move_straight(4) if @map[@x-1,@y] == step - 1 && step != 0
          move_straight(8) if @map[@x,@y-1] == step - 1 && step != 0
            end
    
        when 1
            if dirs.size == 2 && diagonal_passable?(@x,@y,dirs[0],dirs[1])
              move_diagonal(dirs[0],dirs[1])
              dirs.delete_at(0)
              dirs.delete_at(0)
            else
              dir = dirs.delete_at(rand(dirs.size))
    
          move_straight(8) if @map[@x,@y-1] == step - 1 && step != 0
          move_straight(4) if @map[@x-1,@y] == step - 1 && step != 0
          move_straight(2) if @map[@x,@y+1] == step - 1 && step != 0
          move_straight(6) if @map[@x+1,@y] == step - 1 && step != 0
    
            end
    
        end
      end
    Последний раз редактировалось Sheo; 09.01.2015 в 16:25.

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

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

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

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

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

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

Ваши права

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