Войти на сайт

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

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

Сделать облегчающие скрипты в плагине. 5 года 8 мес. назад #109720

  • Alexandr_7
  • Alexandr_7 аватар
  • Вне сайта
  • Архитектор Миров
  • Сообщений: 1196
  • Спасибо получено: 543
  • Проект месяца 3 местоПроект месяца 2 местоПроект года 3 местоВетеранУчительПроект месяца 1 место
Здравствуйте.
Может кто подсказать как сделать в плагине облегчение использование игровых скриптов.
Например возьмем скрипт:
$gameSelfSwitches
Туда нужно указать номер карты, номер события, символ переключателя и включен или нет
Так вот. Хочу в плагине сделать облегчение использования данного скрипта. Например чтобы можно было использовать как
gameOnMapSelfSwitches(номер события, 'A-D', boolean);
А уже этот скрипт будет вызывать оригинальный:
var key = [$gameMap.mapId(), номер события, 'A-D'];
$gameSelfSwitches.setValue(key, boolean);
Просто не интересовался как в плагине сделать функции которые можно будет вызывать в скрипте. И как в плагине вызвать эти стандартные скрипты?
Может кто помочь. Или если это ктото уже объяснял то дайте пожалуйста ссылку.
Мой вк: vk.com/borisov_alexandr_5
Мой ютуб канал: www.youtube.com/@alexandr_5836
Мой бусти: boosty.to/alexandr-7
Последнее редактирование: 5 года 8 мес. назад от Alexandr_7.
Администратор запретил публиковать записи гостям.

Сделать облегчающие скрипты в плагине. 5 года 8 мес. назад #109721

  • Dmy
  • Dmy аватар
  • Вне сайта
  • Заблокирован
  • Сообщений: 1142
  • Спасибо получено: 2478
  • 2 место ОраторУчительПроект месяца 3 местоПаладинЗа 2 место на конкурсе маппингаПоддержка ФондаВетеранДаритель СтимкеяПрограммист Ruby
Просто напишите функцию во внешнем пространстве имён, и она будет доступна в скриптах.

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

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

Сделать облегчающие скрипты в плагине. 5 года 8 мес. назад #109722

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

Надеюсь понятно объяснил.
Последнее редактирование: 5 года 8 мес. назад от DK.
Администратор запретил публиковать записи гостям.
За этот пост поблагодарили: yuryol, Noxmils

Сделать облегчающие скрипты в плагине. 5 года 8 мес. назад #109735

  • Alexandr_7
  • Alexandr_7 аватар
  • Вне сайта
  • Архитектор Миров
  • Сообщений: 1196
  • Спасибо получено: 543
  • Проект месяца 3 местоПроект месяца 2 местоПроект года 3 местоВетеранУчительПроект месяца 1 место
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
Администратор запретил публиковать записи гостям.

Сделать облегчающие скрипты в плагине. 5 года 8 мес. назад #109739

  • Dmy
  • Dmy аватар
  • Вне сайта
  • Заблокирован
  • Сообщений: 1142
  • Спасибо получено: 2478
  • 2 место ОраторУчительПроект месяца 3 местоПаладинЗа 2 место на конкурсе маппингаПоддержка ФондаВетеранДаритель СтимкеяПрограммист Ruby
Alexandr_7 пишет:
Извини. Не очень. Я больше разберусь по примеру плагина. Дело в том что я не знаю всех внутренних классов плагинов самого движка MV.
Пример плагина бы. И будет отлично.
Мой код можно сохранить в файл .js в папке plugins — и это будет плагин. То есть код, который я приводил, сам по себе можно считать плагином:
window.gameOnMapSelfSwitches = function( /* ... */ ) {
  /* ... */
}

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

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

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

Сделать облегчающие скрипты в плагине. 5 года 8 мес. назад #109740

  • Alexandr_7
  • Alexandr_7 аватар
  • Вне сайта
  • Архитектор Миров
  • Сообщений: 1196
  • Спасибо получено: 543
  • Проект месяца 3 местоПроект месяца 2 местоПроект года 3 местоВетеранУчительПроект месяца 1 место
Dmy пишет:
Alexandr_7 пишет:
Извини. Не очень. Я больше разберусь по примеру плагина. Дело в том что я не знаю всех внутренних классов плагинов самого движка MV.
Пример плагина бы. И будет отлично.
Мой код можно сохранить в файл .js в папке plugins — и это будет плагин. То есть код, который я приводил, сам по себе можно считать плагином:
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
Последнее редактирование: 5 года 8 мес. назад от Alexandr_7.
Администратор запретил публиковать записи гостям.

Сделать облегчающие скрипты в плагине. 5 года 4 мес. назад #112870

  • Alexandr_7
  • Alexandr_7 аватар
  • Вне сайта
  • Архитектор Миров
  • Сообщений: 1196
  • Спасибо получено: 543
  • Проект месяца 3 местоПроект месяца 2 местоПроект года 3 местоВетеранУчительПроект месяца 1 место
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
Администратор запретил публиковать записи гостям.

Сделать облегчающие скрипты в плагине. 5 года 4 мес. назад #112871

  • Alexandr_7
  • Alexandr_7 аватар
  • Вне сайта
  • Архитектор Миров
  • Сообщений: 1196
  • Спасибо получено: 543
  • Проект месяца 3 местоПроект месяца 2 местоПроект года 3 местоВетеранУчительПроект месяца 1 место
Да. Нельзя использовать this._mapId и впринципе логично. А можно иначе получить id события?
Я вот тока этот вариант придумал:
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
Последнее редактирование: 5 года 4 мес. назад от Alexandr_7.
Администратор запретил публиковать записи гостям.

Сделать облегчающие скрипты в плагине. 5 года 3 мес. назад #112936

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