[VX Ace] Event Move Speed

Даритель Стимкея Учитель Организатор конкурсов 2 место Программист JavaScript Оратор
Больше
8 года 3 мес. назад - 8 года 3 мес. назад #102215 от Mur
Mur создал тему: [VX Ace] Event Move Speed
«Эх, давно не брал я в руки шашек» © Василий Иванович :D

Итак по просьбе многоуважаемого Котè (он же PanzerCat) удалось выдушить из меня пару строк на ruby, а именно скрипт — «Event Move Speed» :blush:

Как ясно из названия данный скрипт позволяет задать для отдельно взятого события(event) на карте произвольную скорость перемещения. В частности Котè хотел что бы ивент буквально ползал по карте. К сожалению стандартными средствами этот вопрос было не решить, ибо скорость перемещения оставалась всё ровно очень большая.

Скрипт просто до безобразия. Создаём необходимый нам event, прописываем в первой строчке комментарий вида <speed: NN> где NN число с плавающей точкой. Значение 0 стандартная скорость перемещения (с учётом настроек). Если задать число меньше нуля скорость будет падать. Подобрать можно экспериментальным путём, например -1.5 или даже -3.5 даёт вполне ползающую тушку. Если значение увеличить (вдруг кому надо) ивент будет летать :)







Дабы персонаж не спотыкался на каждом шаге в обязательно порядке надо установить частоту обновления (Freq:) на максимальное значение.

Скрипт доступен как всегда на GitHub .
Последнее редактирование: 8 года 3 мес. назад пользователем Mur.
Спасибо сказали: AnnTenna, Демий, Amphilohiy, KageDesu, PanzerCat

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Даритель Стимкея Учитель Организатор конкурсов 2 место Программист JavaScript Оратор
Больше
8 года 3 мес. назад - 8 года 3 мес. назад #102217 от Mur
Mur ответил в теме [VX Ace] Event Move Speed
Поскольку изначально мы с Котè не совсем поняли друг дружку. Скрипт немного доработан :blush:

Теперь помимо скорости перемещения, можно задать задержку для кадров анимации, с помощью команды <nextframe: NN> где NN число которое будет прибавляться для смены следующего кадра. По умолчанию оно равно 1, но если например задать значение 0.1:



то мышка будет ну ооооочень медленно махать крыльями.

Обновлённая версия, всё там же на GitHub .
Последнее редактирование: 8 года 3 мес. назад пользователем Mur.
Спасибо сказали: Демий, Amphilohiy, PanzerCat

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Программист Ruby 2 место Готв Победитель Сбитой кодировки Учитель Оратор
Больше
8 года 3 мес. назад #102218 от Amphilohiy
Amphilohiy ответил в теме [VX Ace] Event Move Speed
Ну, никто не просил, но я все равно парочку замечаний сделаю по поводу руби. Так сказать на будущее.

Первое - лучше прописывать сетеры/гетеры через attr_reader и attr_accessor. Первое само расписывает геттеры, второе расписывает геттер и сеттер. То бишь
Code:
class Game_CharacterBase attr_accessor :event_speed end
эквивалентен
Code:
class Game_CharacterBase def event_speed @event_speed end def event_speed=(value) @event_speed = value end end
И да, в таком случае приставки set и get обычно не приписываются.

Второе - для блоков кода существует 2 нотации: {|| } и do || end. Первый используют, если код помещается в одну строку, второй если строк несколько.
Code:
# одна строка @events.values.each { |e| puts e } #несколько строк @events.values.each do |e| # ... end

Дальше я просто умничать буду. Есть unless модификатор, который работает так же, как и if, только условие не должно выполняться.
Code:
# примерно одно и то же next if !e.list next unless e.list
Но в данном случае же обычно используют метод nil?
Code:
next if e.list.nil?
Вроде как хороший стиль написания.

Я верю, что иногда компьютер сбоит, и он выдает неожиданные результаты, но остальные 100% случаев это чья-то криворукость.
Спасибо сказали: Mur

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Даритель Стимкея Учитель Организатор конкурсов 2 место Программист JavaScript Оратор
Больше
8 года 3 мес. назад - 8 года 3 мес. назад #102219 от Mur
Mur ответил в теме [VX Ace] Event Move Speed

Amphilohiy пишет: Первое - лучше прописывать сетеры/гетеры через attr_reader и attr_accessor. Первое само расписывает геттеры, второе расписывает геттер и сеттер. То бишь

Code:
class Game_CharacterBase attr_accessor :event_speed end


Я правильно понимаю, что после объявления:
Code:
attr_accessor :event_speed

Я смогу установить event_speed обратившись как e.event_speed = 123, вместо того что бы вызывать свой set_event_speed(123)?


По поводу each и list это просто пример из чужого кода обработки комментариев ;)
Последнее редактирование: 8 года 3 мес. назад пользователем Mur.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Программист Ruby 2 место Готв Победитель Сбитой кодировки Учитель Оратор
Больше
8 года 3 мес. назад #102220 от Amphilohiy
Amphilohiy ответил в теме [VX Ace] Event Move Speed

Mur пишет: Я правильно понимаю, что после объявления:

Code:
attr_accessor :event_speed

Я смогу установить event_speed обратившись как e.event_speed = 123, вместо того что бы вызывать свой set_event_speed(123)?

Да, все верно

Я верю, что иногда компьютер сбоит, и он выдает неожиданные результаты, но остальные 100% случаев это чья-то криворукость.
Спасибо сказали: Mur

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Даритель Стимкея Учитель Организатор конкурсов 2 место Программист JavaScript Оратор
Больше
8 года 3 мес. назад #102221 от Mur
Mur ответил в теме [VX Ace] Event Move Speed
Внемля настоятельным рекомендациям Amphilohiy, код был почищен и наведён марафет :kiss:

Так что качаем свежую «конфетку» всё так же на GitHub . :woohoo:
Спасибо сказали: Dmy, Amphilohiy

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Программист Ruby Ветеран Даритель Стимкея Оратор Программист JavaScript
Больше
8 года 3 мес. назад - 8 года 3 мес. назад #102223 от Lekste
Lekste ответил в теме [VX Ace] Event Move Speed
Ну, раз уж тут пообсуждали код, добавлю и я :)
В регекспе точку, которая любой символ, лучше заменить на [\d\.] и проверить на длину $1, чтоб потом не искать ошибку, если случайно значение после двоеточия стёр или вписал левый символ.
Остальное по-мелочам для упрощения структуры кода, писать не буду, ато тут обычно такое не любят. :)
Последнее редактирование: 8 года 3 мес. назад пользователем Lekste. Причина: Упс, опечатка
Спасибо сказали: Dmy

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Даритель Стимкея Учитель Организатор конкурсов 2 место Программист JavaScript Оратор
Больше
8 года 3 мес. назад #102224 от Mur
Mur ответил в теме [VX Ace] Event Move Speed

Lekste пишет: В регекспе точку, которая любой символ, лучше заменить на [\d\.]


Эмм,… я конечно не специалист,… но меня терзают смутные сомнения, а сработает ли твоё \d на отрицательное число? а на число с точкой?
Спасибо сказали: Dmy

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Программист Ruby Ветеран Даритель Стимкея Оратор Программист JavaScript
Больше
8 года 3 мес. назад - 8 года 3 мес. назад #102225 от Lekste
Lekste ответил в теме [VX Ace] Event Move Speed
Конечно сработает, там же точка или цифра. Ну, да. Если персонаж может задом пятиться и надо проигрывать анимацию в обратном порядке, можно и минус добавить.
А ещё лучше так: \-?\d+(?:\.\d*)?

А для номера кадра минус не нужен, т.к. кадр не бывает отрицательным
Последнее редактирование: 8 года 3 мес. назад пользователем Lekste.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Даритель Стимкея Учитель Организатор конкурсов 2 место Программист JavaScript Оратор
Больше
8 года 3 мес. назад #102227 от Mur
Mur ответил в теме [VX Ace] Event Move Speed

Lekste пишет: А ещё лучше так: \-?\d+(?:\.\d*)?


Ну не знаю. Я подумаю. Спасиб. :unsure:
Спасибо сказали: Dmy

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Время создания страницы: 0.111 секунд
Работает на Kunena форум