Сделать облегчающие скрипты в плагине.

Проект месяца 3 место Проект месяца 2 место Ветеран Учитель Проект месяца 1 место Проект года 3 место Разработчик
Больше
7 года 1 мес. назад - 7 года 1 мес. назад #109720 от Alexandr_7
Здравствуйте.
Может кто подсказать как сделать в плагине облегчение использование игровых скриптов.
Например возьмем скрипт:
$gameSelfSwitches
Туда нужно указать номер карты, номер события, символ переключателя и включен или нет
Так вот. Хочу в плагине сделать облегчение использования данного скрипта. Например чтобы можно было использовать как
Code:
gameOnMapSelfSwitches(номер события, 'A-D', boolean);
А уже этот скрипт будет вызывать оригинальный:
Code:
var key = [$gameMap.mapId(), номер события, 'A-D']; $gameSelfSwitches.setValue(key, boolean);
Просто не интересовался как в плагине сделать функции которые можно будет вызывать в скрипте. И как в плагине вызвать эти стандартные скрипты?
Может кто помочь. Или если это ктото уже объяснял то дайте пожалуйста ссылку.

Мой вк: vk.com/borisov_alexandr_5
Мой ютуб канал: www.youtube.com/@alexandr_5836
Мой бусти: boosty.to/alexandr-7
Последнее редактирование: 7 года 1 мес. назад пользователем Alexandr_7.

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

Ветеран Поддержка Фонда Разработчик Проект месяца 3 место Учитель Оратор Даритель Стимкея 2 место За 2 место на конкурсе маппинга Программист Ruby Паладин
Больше
7 года 1 мес. назад #109721 от Dmy
Просто напишите функцию во внешнем пространстве имён, и она будет доступна в скриптах.

Как-то так:
Code:
function gameOnMapSelfSwitches( /* ... */ ) { /* ... */ }

Или напрямую укажите глобальный объект window:
Code:
window.gameOnMapSelfSwitches = function( /* ... */ ) { /* ... */ }

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

Разработчик Программист JavaScript Проект месяца 3 место Проект месяца 1 место Проект месяца 2 место Учитель Оратор Ветеран Даритель Стимкея 2 место Программист Ruby Паладин
Больше
7 года 1 мес. назад - 7 года 1 мес. назад #109722 от DK
Чтобы использовать свои функции в скрипте, нужно воспользоваться одним из 3 путей:
1. Добавить функции в прототип Game_Interpreter (плохой вариант).
Например, Game_Interpreter.prototype.myFunc = function () {};
В скрипте ты можешь ее вызвать this.myFunc();
Также ее можно будет вызвать в плагине (в функции pluginCommand)
2. Объявить глобальный класс своих функций.
Например:
class MyUtils {
static myFunc() {}
}
Вызывать свою функцию надо будет так: MyUtils.myFunc()
3. Объявить глобальную функцию (плохой вариант)

Надеюсь понятно объяснил.
Последнее редактирование: 7 года 1 мес. назад пользователем DK.
Спасибо сказали: yuryol, Noxmils

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

Проект месяца 3 место Проект месяца 2 место Ветеран Учитель Проект месяца 1 место Проект года 3 место Разработчик
Больше
7 года 1 мес. назад #109735 от Alexandr_7

DK пишет: Чтобы использовать свои функции в скрипте, нужно воспользоваться одним из 3 путей:
1. Добавить функции в прототип Game_Interpreter (плохой вариант).
Например, Game_Interpreter.prototype.myFunc = function () {};
В скрипте ты можешь ее вызвать this.myFunc();
Также ее можно будет вызвать в плагине (в функции pluginCommand)
2. Объявить глобальный класс своих функций.
Например:
class MyUtils {
static myFunc() {}
}
Вызывать свою функцию надо будет так: MyUtils.myFunc()
3. Объявить глобальную функцию (плохой вариант)

Надеюсь понятно объяснил.


Извини. Не очень. Я больше разберусь по примеру плагина. Дело в том что я не знаю всех внутренних классов плагинов самого движка MV.
Пример плагина бы. И будет отлично.

Мой вк: vk.com/borisov_alexandr_5
Мой ютуб канал: www.youtube.com/@alexandr_5836
Мой бусти: boosty.to/alexandr-7

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

Ветеран Поддержка Фонда Разработчик Проект месяца 3 место Учитель Оратор Даритель Стимкея 2 место За 2 место на конкурсе маппинга Программист Ruby Паладин
Больше
7 года 1 мес. назад #109739 от Dmy

Alexandr_7 пишет: Извини. Не очень. Я больше разберусь по примеру плагина. Дело в том что я не знаю всех внутренних классов плагинов самого движка MV.
Пример плагина бы. И будет отлично.

Мой код можно сохранить в файл .js в папке plugins — и это будет плагин. То есть код, который я приводил, сам по себе можно считать плагином:
Code:
window.gameOnMapSelfSwitches = function( /* ... */ ) { /* ... */ }

Кстати, я не согласен с DK, что это «плохой вариант». Если не злоупотреблять такими функциями и не делать их слишком много, то он вполне имеет право на существование.

Если уж на то пошло, я сомневаюсь в целесообразности варианта 1 у DK — всё-таки добавляемая функция не имеет никакого логического отношения к Game_Interpreter и добавлять её туда менее логично, чем в глобальное пространство имён.

По-моему если функций планируется много, лучше действительно сделать класс/объект для них (вариант №2 у ДК). Если одна-две, от силы меньше пяти, — лучше сделать их глобальными (мой вариант/вариант №3 у ДК).
Спасибо сказали: Noxmils

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

Проект месяца 3 место Проект месяца 2 место Ветеран Учитель Проект месяца 1 место Проект года 3 место Разработчик
Больше
7 года 1 мес. назад - 7 года 1 мес. назад #109740 от Alexandr_7

Dmy пишет:

Alexandr_7 пишет: Извини. Не очень. Я больше разберусь по примеру плагина. Дело в том что я не знаю всех внутренних классов плагинов самого движка MV.
Пример плагина бы. И будет отлично.

Мой код можно сохранить в файл .js в папке plugins — и это будет плагин. То есть код, который я приводил, сам по себе можно считать плагином:
Code:
window.gameOnMapSelfSwitches = function( /* ... */ ) { /* ... */ }

Кстати, я не согласен с DK, что это «плохой вариант». Если не злоупотреблять такими функциями и не делать их слишком много, то он вполне имеет право на существование.

Если уж на то пошло, я сомневаюсь в целесообразности варианта 1 у DK — всё-таки добавляемая функция не имеет никакого логического отношения к Game_Interpreter и добавлять её туда менее логично, чем в глобальное пространство имён.

По-моему если функций планируется много, лучше действительно сделать класс/объект для них (вариант №2 у ДК). Если одна-две, от силы меньше пяти, — лучше сделать их глобальными (мой вариант/вариант №3 у ДК).


2 Вариант будет лучше. Но всеже мне нужно в плагине вызывать стандартные функции. А для этого я так подозреваю нужно переопределения классов движка делать. Может и для объявления своих функций это и не нужно но а вызов стандартных функций то скорее всего нужно переопределять стандартные функции.
Может кто пример скинет для 1 скрипта $gameSelfSwitches?

Мой вк: vk.com/borisov_alexandr_5
Мой ютуб канал: www.youtube.com/@alexandr_5836
Мой бусти: boosty.to/alexandr-7
Последнее редактирование: 7 года 1 мес. назад пользователем Alexandr_7.

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

Проект месяца 3 место Проект месяца 2 место Ветеран Учитель Проект месяца 1 место Проект года 3 место Разработчик
Больше
6 года 9 мес. назад #112870 от Alexandr_7
Code:
static gameOnMapSetSelfSwitchesA(IDEvent, SetB) { var key = [this._mapId, IDEvent, 'A']; $gameSelfSwitches.setValue(key, SetB); } static gameOnMapEventSetSelfSwitchesA(SetB) { var key = [this._mapId, this._eventId, 'A']; $gameSelfSwitches.setValue(key, SetB); }
Не пойму почему не работает. Неужто в плагине нельзя использовать this._mapId и т.п?
Но ошибки тоже нет. Просто не работает.

Мой вк: vk.com/borisov_alexandr_5
Мой ютуб канал: www.youtube.com/@alexandr_5836
Мой бусти: boosty.to/alexandr-7

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

Проект месяца 3 место Проект месяца 2 место Ветеран Учитель Проект месяца 1 место Проект года 3 место Разработчик
Больше
6 года 9 мес. назад - 6 года 9 мес. назад #112871 от Alexandr_7
Да. Нельзя использовать this._mapId и впринципе логично. А можно иначе получить id события?
Я вот тока этот вариант придумал:
Code:
static gameOnMapEventSetSelfSwitchesA(EV, SetB) { var key = [$gameMap.mapId(), EV._eventId, 'A']; $gameSelfSwitches.setValue(key, SetB); }
В EV передавать this а в SetB уже булевое значение но это не правильно. Должно быть както проще сделать.
Впрочем ладно. Скину плагин как есть. Кто захочет тот добавить.

Мой вк: vk.com/borisov_alexandr_5
Мой ютуб канал: www.youtube.com/@alexandr_5836
Мой бусти: boosty.to/alexandr-7
Последнее редактирование: 6 года 9 мес. назад пользователем Alexandr_7.

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

Проект месяца 3 место Проект месяца 2 место Ветеран Учитель Проект месяца 1 место Проект года 3 место Разработчик
Больше
6 года 9 мес. назад #112936 от Alexandr_7
Здравствуйте. Может кто ответит. Интересует можно ли в плагине создать приватные функции доступные только для вызова в плагине?

Мой вк: vk.com/borisov_alexandr_5
Мой ютуб канал: www.youtube.com/@alexandr_5836
Мой бусти: boosty.to/alexandr-7

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

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