Войти на сайт

Авторизация, ждите ...
×

ТЕМА: Утилиты разработчика

Утилиты разработчика 4 года 9 мес. назад #115845

  • Alexandr_7
  • Alexandr_7 аватар
  • Вне сайта
  • Архитектор Миров
  • Сообщений: 1196
  • Спасибо получено: 544
  • Проект месяца 3 местоВетеранПроект года 3 местоПроект месяца 2 местоПроект месяца 1 местоУчитель
Информация:

Название: AScripts
Автор: Alexandr_7
Тип: утилита
Версия: 1.3
Версия RPG maker: MV
Дата выхода: 2020
Условия использования/лицензия:
Вы можете:
-Бесплатно использовать данный плагин в некоммерческих и коммерческих проектах
-Переводить на другие языки или полностью поменять текст плагина (сообщите мне, если Вы это сделали)
-Изменять код плагина, но Вы обязаны указать ссылку на оригинальный плагин
Вы не можете:
-Убирать или изменять любую информацию о плагине (Название, авторство, контактная информация, версия и дата релиза) Исключением является вот эти вот поля:
ВНИМАНИЕ: Спойлер! [ Нажмите, чтобы развернуть ]


Описание:

Данный плагин создаю исключительно для своего проекта. В нем функционал который может быть полезен для разработчиков.
Так например это скрипт переключения локальных переключателей.
Скрипт для получения рандомного числа (Ибо в MV данный функционал багнутый)
Скрипт для броска монетки так сказать. Вернет рандомно true или false
Скрипт для получения массива с рандомными числами но на 1 меньше. Это иногда полезно если вы хотите заполнить все клетки кроме одной.
Скрипты для Крестиков Ноликов. (Описание их работы также присутствует)
Но рано радуетесь. Чтоб использовать плагин вам нужны хотябы минимальные знания JS так как всеже это скрипты и работать будет в скриптах.
Не знаю зачем выкладываю но пускай будет.

Установка:

Справка: скопировать код в блокнот, назвать AL7_SnowPrincessPlugin.js
Скачать: (нет)
Демо: (нет)
Зависимости: (нет)

Дополнительно:

Требуемая версия движка: 1.5.0 и выше (Тестировано только на 1.6.2 но проблем с версией 1.5.0 быть не должно)
Требуемый язык: Только Русский
Требуемые знания: Основы Java Script

Код:

ВНИМАНИЕ: Спойлер! [ Нажмите, чтобы развернуть ]
Мой вк: vk.com/borisov_alexandr_5
Мой ютуб канал: www.youtube.com/@alexandr_5836
Мой бусти: boosty.to/alexandr-7
Последнее редактирование: 4 года 7 мес. назад от Alexandr_7.
Администратор запретил публиковать записи гостям.
За этот пост поблагодарили: Leprikon01

Утилиты разработчика 4 года 8 мес. назад #115993

  • Alexandr_7
  • Alexandr_7 аватар
  • Вне сайта
  • Архитектор Миров
  • Сообщений: 1196
  • Спасибо получено: 544
  • Проект месяца 3 местоВетеранПроект года 3 местоПроект месяца 2 местоПроект месяца 1 местоУчитель
Обновлен плагин.
Добавлены парочка новых скриптов.
Справка обновлена частично или вообще не обновлена.
Так как этот плагин куча борохла в 1 плагине то врядле кому зайдет. Лично там функционал который мне необходим для моего прооекта. Может кому из скриптоделов будет полезен.
Мой вк: vk.com/borisov_alexandr_5
Мой ютуб канал: www.youtube.com/@alexandr_5836
Мой бусти: boosty.to/alexandr-7
Администратор запретил публиковать записи гостям.

Утилиты разработчика 4 года 7 мес. назад #116391

  • Alexandr_7
  • Alexandr_7 аватар
  • Вне сайта
  • Архитектор Миров
  • Сообщений: 1196
  • Спасибо получено: 544
  • Проект месяца 3 местоВетеранПроект года 3 местоПроект месяца 2 местоПроект месяца 1 местоУчитель
Обновлен плагин. Добавлены функции для задания локальных переключателей не по событию а по X и Y где это событие или событии распложены.
Не проверял еще.
Мой вк: vk.com/borisov_alexandr_5
Мой ютуб канал: www.youtube.com/@alexandr_5836
Мой бусти: boosty.to/alexandr-7
Последнее редактирование: 4 года 7 мес. назад от Alexandr_7.
Администратор запретил публиковать записи гостям.

Утилиты разработчика 4 года 7 мес. назад #116392

  • Dmy
  • Dmy аватар
  • Вне сайта
  • Заблокирован
  • Сообщений: 1142
  • Спасибо получено: 2478
  • Даритель Стимкея2 место Поддержка ФондаВетеранПроект месяца 3 местоЗа 2 место на конкурсе маппингаРазработчикУчительПаладинОратор
Alexandr_7 пишет:
Скрипт для получения рандомного числа (Ибо в MV данный функционал багнутый)
А в чём заключается багнутость этого функционала в MV? Вроде бы ваш код даст на 100% такой же результат, как и стандартный код из MV.

Пояснение [ Нажмите, чтобы развернуть ]
Последнее редактирование: 4 года 7 мес. назад от Dmy.
Администратор запретил публиковать записи гостям.
За этот пост поблагодарили: DK, yuryol, Cabbit

Утилиты разработчика 4 года 7 мес. назад #116399

  • Alexandr_7
  • Alexandr_7 аватар
  • Вне сайта
  • Архитектор Миров
  • Сообщений: 1196
  • Спасибо получено: 544
  • Проект месяца 3 местоВетеранПроект года 3 местоПроект месяца 2 местоПроект месяца 1 местоУчитель
Dmy пишет:
Alexandr_7 пишет:
Скрипт для получения рандомного числа (Ибо в MV данный функционал багнутый)
А в чём заключается багнутость этого функционала в MV? Вроде бы ваш код даст на 100% такой же результат, как и стандартный код из MV.

Пояснение [ Нажмите, чтобы развернуть ]

В том что когдато я сталкнулся с тем что мне на протижении 30 раз (просто я 30 тестов и делал) вылетало одно и тоже число. Вот в чем заключается багнутость функционала MV. Если использовать очень мелкие числа то он тебе 1 и тоже будет выдавать и это баг. Мне толи здесь толи на нейтральной полосе подтверждали. это. С тех пор использую скрипт для рандома ну + данный скрипт и в других скриптах плагина используется.
Вроде использовал от 1 до 3 и в итоге постоянно 3 получал.
Я согласен. Баг не у всех но точно писал на форум и мне говорили что это баг MV. Возможно на тот момент использовались файлы старой версии движка. Но вроде 1.6.1 были. Но 100 процентов гдето писал такой вопрос бага и точно был ответ багнотостью движка. Скорее всего баг не у всех но как по мне лучше 100 процентов знать что код сработает а не проверять одно и тоже место по 30 раз. И да я вспомнил. Использовал именно от 1 до 3 чтобы рандомно поставить летящуюю пулю так она из одного тогоже место и летело и это было совсем не круто.
Мой вк: vk.com/borisov_alexandr_5
Мой ютуб канал: www.youtube.com/@alexandr_5836
Мой бусти: boosty.to/alexandr-7
Последнее редактирование: 4 года 7 мес. назад от Alexandr_7.
Администратор запретил публиковать записи гостям.

Утилиты разработчика 4 года 7 мес. назад #116400

  • Dmy
  • Dmy аватар
  • Вне сайта
  • Заблокирован
  • Сообщений: 1142
  • Спасибо получено: 2478
  • Даритель Стимкея2 место Поддержка ФондаВетеранПроект месяца 3 местоЗа 2 место на конкурсе маппингаРазработчикУчительПаладинОратор
Alexandr_7 пишет:
В том что когдато я сталкнулся с тем что мне на протижении 30 раз (просто я 30 тестов и делал) вылетало одно и тоже число. Вот в чем заключается багнутость функционала MV. Если использовать очень мелкие числа то он тебе 1 и тоже будет выдавать и это баг.
Это не баг, это фича. Math.random() выдаёт математически случайные числа.

Математически есть вероятность, что я брошу монетку 100 раз и мне всегда выпадет решка. Вероятность такого мала, но такая вероятностьесть. И Math.random() может выдать такие вещи.

И ваш генератор, и генератор MV используют Math.random(), поэтому результат будет одинаковый. То, что вам попалось одно число 30 раз в генераторе MV, и не попалось в вашем коде — это просто случайность. У кого-то, наоборот, 30 раз попадётся одно и то же число в вашем коде, а в генераторе MV не попадётся.

Вероятность получить 30 раз одно число при выборе из трёх — (1/3)30, то есть 4.856935749618858 * 10-15. Это маленькая вероятность, но она есть. И когда-то кому-то она может выпасть.

Alexandr_7 пишет:
Мне толи здесь толи на нейтральной полосе подтверждали. это.
Ну, возможно те, кто подтверждал, сами не разбирались в вопросе. :unsure:

Alexandr_7 пишет:
Баг не у всех но точно писал на форум и мне говорили что это баг MV.
Alexandr_7 пишет:
Но 100 процентов гдето писал такой вопрос бага и точно был ответ багнотостью движка. Скорее всего баг не у всех но как по мне лучше 100 процентов знать что код сработает а не проверять одно и тоже место по 30 раз. И да я вспомнил. Использовал именно от 1 до 3 чтобы рандомно поставить летящуюю пулю так она из одного тогоже место и летело и это было совсем не круто.
Работая программистом, я таких «багов» повидал... Однажды клиент отключил галочку «присылать уведомления», а потом написал нам, что у него баг: уведомления не присылаются.

Вот так и здесь: людям не нужны по-настоящему рандомные числа (нужно, чтобы ситуация «пуля всегда летит из одного места» не случалась — при рандомных числах такая вероятность есть!), но они используют рандомный генератор не по назначению. И, естественно, получают не такой результат, какой нужно.

Alexandr_7 пишет:
Возможно на тот момент использовались файлы старой версии движка. Но вроде 1.6.1 были.
Если верить git blame на Гитхабе, текущий код появился как раз в версии 1.6.1. Код до этого времени косметически отличался, но работал так же.

Если честно, не знаю, зачем они его поменяли. Старый код давал тот же результат.

______

Добавлено: в Википедии есть хорошая статья, Иллюзия кластеризации. «Багованность» генератора случайных чисел в MV — это именно такая иллюзия.
Последнее редактирование: 4 года 7 мес. назад от Dmy.
Администратор запретил публиковать записи гостям.
За этот пост поблагодарили: DK, MaltonTheWarrior

Утилиты разработчика 4 года 7 мес. назад #116409

  • Alexandr_7
  • Alexandr_7 аватар
  • Вне сайта
  • Архитектор Миров
  • Сообщений: 1196
  • Спасибо получено: 544
  • Проект месяца 3 местоВетеранПроект года 3 местоПроект месяца 2 местоПроект месяца 1 местоУчитель
Нет. Это вероятность крайне мала учитоввая что 30 запусков я делал а генерациии было на много больше ведь пуля летит не 1 раз а через определенный промижуток. Всегда выподало число 3. Такого просто не может быть да будь бы милион проверок уверен что милион бы и выпало 3. К томуже про баг мне писал человек который сам пишет плагины под MV. Короче если у вас работает встроенный способ тьо флаг вам в руки а у меня встроенный способ генерацмии рандома от 1 до 3 постоянно генеририрует число 3. И такого между прочем не разу небыло когда я стал генеририровать рандом своим способом.
И да. Встроенный способ я имею в виду присвоить переменной через команды от 1 до 3. А не через встроенные скрипты.
Мой вк: vk.com/borisov_alexandr_5
Мой ютуб канал: www.youtube.com/@alexandr_5836
Мой бусти: boosty.to/alexandr-7
Последнее редактирование: 4 года 7 мес. назад от Alexandr_7.
Администратор запретил публиковать записи гостям.

Утилиты разработчика 4 года 7 мес. назад #116411

  • Alexandr_7
  • Alexandr_7 аватар
  • Вне сайта
  • Архитектор Миров
  • Сообщений: 1196
  • Спасибо получено: 544
  • Проект месяца 3 местоВетеранПроект года 3 местоПроект месяца 2 местоПроект месяца 1 местоУчитель
В любом случае даже если не этот баг это функция полезна так как минимум не везде можно пользоваться встроенными возможностями. Например если нужно указать напрямую рандомное число в функцию то достаточно мою функцию вызвать а не через mv сначало присваивать переменной а потом в функцию присваивать переменную. Оптимизация другими словами.
Мой вк: vk.com/borisov_alexandr_5
Мой ютуб канал: www.youtube.com/@alexandr_5836
Мой бусти: boosty.to/alexandr-7
Администратор запретил публиковать записи гостям.
За этот пост поблагодарили: Dmy

Утилиты разработчика 4 года 7 мес. назад #116413

  • yuryol
  • yuryol аватар
  • Вне сайта
  • Архитектор Миров
  • Сообщений: 1704
  • Спасибо получено: 2733
  • 3 место ГотвПобедитель конкурсаОрганизатор конкурсов1 место в ГотвКомпозитор2 место УчительОратор
1. неправильно ты, александр, рандом тестируешь. надо создавать цикл хотя бы до 1000 и смотреть результаты. а на такой маленькой выборке как 30 смысл тестировать нет.
var arr = ["вне выборки",0,0,0,0],
    max = 4,
    min = 1;
 
for(let i = 0; i<1000000; i++) {
    let a = Math.floor(Math.random() * (max - min + 1)) + min;
    arr[a]++;
}
console.log(arr);
//["вне выборки", 249779, 250288, 249932, 250001]
// итого - нормальный рандом

2. В версии мукера декабря 2015 год рандом такой же, пусть и немного отличается написанием:
//функция рандома в rpg_objects.js:
value = this._params[4] + Math.randomInt(this._params[5] - this._params[4] + 1);
//функция Math.randomInt в rpg_core.js
Math.randomInt = function(max) {
    return Math.floor(max * Math.random());
};

соединяем ее в одну, выходит:
this._params[4] + Math.floor((Math.randomInt(this._params[5] - this._params[4] + 1)* Math.random());

переписываем с нашими переменными min и max, получается то же самое, что у тебя, только с переменой мест слагаемых:
min + Math.floor((Math.randomInt(max - min + 1)* Math.random());

Поэтому если ошибка в рандом МВ и была, то в октябре-ноябре 2015-ого, что уже как 4,5 года неактуально :silly:
Администратор запретил публиковать записи гостям.
За этот пост поблагодарили: Dmy, DK

Утилиты разработчика 4 года 7 мес. назад #116419

  • Alexandr_7
  • Alexandr_7 аватар
  • Вне сайта
  • Архитектор Миров
  • Сообщений: 1196
  • Спасибо получено: 544
  • Проект месяца 3 местоВетеранПроект года 3 местоПроект месяца 2 местоПроект месяца 1 местоУчитель
Ой. Блин. Вы либо не верите мне либо меня не слушаете.
1. Я сказал что баг был при использовании команд события а не через скрипты напрямую. Я понимаю что команды событий вызывают встроенные скрипты но так или иначе баг был и баг сейчас я потестировал - не повторяется. Скорее всего какойто файл от старой версии был или не знаю как объяснить но точно помню баг был. И повторюсь. Я присваивал переменной не через стартные скрипты а через команду переменная в событии и сейчас все нормально. Но тогда при использовании от 1 до 3 постоянно выподало 3. С тех пор использую скрипт. Если у кого работает нормально и то флаг вам в руки. Сейчас у меня и у самого нормально работает но я всеже предпочитаю через свой скрипт делать к томуже я в принципе в основном использую скриптинг JS для создиния чего либо ибо чтото реально хорошее встроенными способами создавать ужасно неудобно. Да. Скриптинг в некоторых местах горазду удобнее например для ситуаций когда множество if и else лучше использовать скрипты чем команды плагина ибо в командах ветвление условий сделано очень хреново и когда у тебя условий штук 10 то выглядит уже крайне нечитабельно. Учитывая тот факт что окошки mv маленькие и увеличить их размер нельзя. Короче помимо бага который когдато был у меня были еще 2 причины использовать скрипт вывода рандомного числа.
2. Я также сказал что этот скрипт используется для других скриптов. Скрипт полезен если нужно указать рандомное число в функцию.

Короче. Про баг речь закрыта. Баг был у меня и ктото гдето мне гсказал что причина в баге MV. Также забыл сказать что баг был именно на готовом проекте а не на
Мой вк: vk.com/borisov_alexandr_5
Мой ютуб канал: www.youtube.com/@alexandr_5836
Мой бусти: boosty.to/alexandr-7
Последнее редактирование: 4 года 7 мес. назад от Alexandr_7.
Администратор запретил публиковать записи гостям.

Утилиты разработчика 4 года 7 мес. назад #116429

  • DK
  • DK аватар
  • Вне сайта
  • Светлый дракон
  • DKPlugins
  • Сообщений: 946
  • Спасибо получено: 1129
  • УчительРазработчикПроект месяца 2 место2 место ВетеранПроект месяца 3 местоПрограммист JavaScript ОраторПрограммист RubyПаладин
Почему у тебя условия использования противоречат друг другу ?
-Изменять имя, версию и авторов проекта под свой проект.
Вы не можете:
-Убирать или изменять любую информацию о плагине (Название, авторство, контактная информация, версия и дата релиза)
Кхм... Очень знакомый текст...
Администратор запретил публиковать записи гостям.

Утилиты разработчика 4 года 7 мес. назад #116430

  • Alexandr_7
  • Alexandr_7 аватар
  • Вне сайта
  • Архитектор Миров
  • Сообщений: 1196
  • Спасибо получено: 544
  • Проект месяца 3 местоВетеранПроект года 3 местоПроект месяца 2 местоПроект месяца 1 местоУчитель
DK пишет:
Почему у тебя условия использования противоречат друг другу ?
-Изменять имя, версию и авторов проекта под свой проект.
Вы не можете:
-Убирать или изменять любую информацию о плагине (Название, авторство, контактная информация, версия и дата релиза)
Кхм... Очень знакомый текст...

Информацию в плагине нет но есть переменные с информацией проекта и автора. Там можно.
Мой вк: vk.com/borisov_alexandr_5
Мой ютуб канал: www.youtube.com/@alexandr_5836
Мой бусти: boosty.to/alexandr-7
Администратор запретил публиковать записи гостям.
За этот пост поблагодарили: Dmy
Модераторы: NeKotZima
Время создания страницы: 0.860 секунд