Правила раздела:
1 Задавайте конкретные вопросы. Для болтовни есть свободный раздел.
2 По возможности давайте конкретные ответы.
3 Один вопрос=одна тема. Если хотите задать ещё вопрос, то начинайте новую тему.
4 Название темы должно составлять сам вопрос, и быть максимально конкретным. Рекомендуется начинать тему словами "Как", "Что", "Почему". А первый пост повторяет вопрос и даёт расширенные сведения.
5 Рекомендуется указывать версию мейкера (2000, 2003, RMXP, RMVX, ACE, IGM, и.т.д.. Это важно, и всё равно ведь спросят.
6 Темы "Пара вопросов", "Помогите", и подобные им - самый лёгкий путь к бану.
7 Поиск находится вверху справа.
А. Названия подразделов этого раздела уточняются. Советы принимаются.

Руби - alias в модуле

Программист Ruby 2 место Готв Победитель Сбитой кодировки Учитель Оратор
Больше
12 года 10 мес. назад #62160 от Amphilohiy
Сам вопрос: можно ли в модуле сделать копию функции? Пытался модифицировать модуль DataManager на дополнительные данные при сохронении в файл и т.п.. Пробывал уже разные вариации (все прописывалось внутри модуля):
Code:
alias new old #ругается что нет таких методов в модуле alias self.new self.old #ругается что не ожидал увидеть здесь точку new = old.clone #и то же самое с .self (ругается вообще на лодки в Game_Vehicle, инициализация не проходит)
С одной стороны можно полностью копировать старые методы вручную с доработкой, но такое скриптование имо не гибкое и дарует рак. Хотя, если решения не будет, сделаю и так.
Среда RPG Maker VX Ace

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

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

Проект месяца 1 место Программист Ruby Писатель 3 место 3 место Учитель Организатор конкурсов 1 место в Готв Ветеран Проект месяца 2 место
Больше
12 года 10 мес. назад #62161 от DeadElf79
DeadElf79 ответил в теме Руби - alias в модуле
гррр...
Окей.
Показываю еще раз.
alias <новое имя функции> <имя функции, которая присутствует в классе/модуле>

Пишем новый скрипт на заблаговременно созданной пустой странице. Пишем так:
Code:
class DataManager alias mynewname save_game def save_game mynewgame #твои действия end end

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

Проект месяца 1 место Программист Ruby Писатель 3 место 3 место Учитель Организатор конкурсов 1 место в Готв Ветеран Проект месяца 2 место
Больше
12 года 10 мес. назад #62165 от DeadElf79
DeadElf79 ответил в теме Руби - alias в модуле
Более подробно - прошу прочитать здесь . Если возникнут вопросы, пиши их сюда, то есть, в свою тему :-)

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

Программист Ruby 2 место Готв Победитель Сбитой кодировки Учитель Оратор
Больше
12 года 10 мес. назад - 12 года 10 мес. назад #62170 от Amphilohiy
Amphilohiy ответил в теме Руби - alias в модуле
Эльф, как работает alias впринципе понятно, уже воплощал.Но беда настигла меня именно в модулях. К примеру код:
Code:
module DataManager @bonuslist = {} def self.add_bonus(name, type) @bonuslist[name] = type end alias create_game_objects_old create_game_objects def self.create_game_objects create_game_objects_old @bonuslist.each_pair do |ia, ib| tmp = ib.new eval("$"+ia.to_s+" = tmp") end end end
Генерирует ошибку, что не видит метода create_game_objects в модуле. Не знаю как в других средах, но Эйс для определения метода в модуле требует префикс "self.". Я попробывал заменить строчку следующим:
Code:
alias self.create_game_objects_old self.create_game_objects
На этот раз вылетает о том, что точки там быть не должно. В полете фантазии я придумал еще эту строку
Code:
self.create_game_objects_old = self.create_game_objects.clone
С self и без. Но по какой то причине метод init из модуля не вызывается вообще, хоть он остался и нетронутым. (сама ошибка ругалась на то, что глобальныая переменная $data_system == nil, которую модуль и подгружал).
P.S. ссылки просмотрел, но там работа с классами, так что не помогло. И можно такой вопрос из любопытства - кроме тебя и пещерного скриптовики то есть? :)
P.S.S Или может есть какой скрипт на VX Ace, который бы переопределял именно модули?

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

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

Программист Ruby 2 место Готв Победитель Сбитой кодировки Учитель Оратор
Больше
12 года 10 мес. назад #62171 от Amphilohiy
Amphilohiy ответил в теме Руби - alias в модуле
Тфу, осел, нашел солюшн, так что просто оставлю это здесь
Code:
DataManager_old = DataManager.clone module DataManager @bonuslist = {} def self.add_bonus(name, type) @bonuslist[name] = type end def self.create_game_objects DataManager_old.create_game_objects @bonuslist.each_pair do |ia, ib| tmp = ib.new eval("$"+ia.to_s+" = tmp") end end end
Пойду поражаться тому, какой я осел :)

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

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

Проект месяца 1 место Программист Ruby Писатель 3 место 3 место Учитель Организатор конкурсов 1 место в Готв Ветеран Проект месяца 2 место
Больше
12 года 10 мес. назад #62172 от DeadElf79
DeadElf79 ответил в теме Руби - alias в модуле
А еще в эйсе есть аналогия alias, которая названа alias_method кажется. Он используется во многих дополнительных скриптах для эйса и, наверное, является одним из стандартов RGSS3.
Чем он мне, собственно, и не нравится в RGSS3 - зачем создавать еще один новый метод, который будет работать аналогично, если уже есть другой, который можно чуть подкрутить под свои нужды?

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

Проект месяца 3 место Проект месяца 1 место Проект месяца 2 место 3 место Готв Победитель Сбитой кодировки Программист JavaScript 2 место Сбитая кодировка Писатель 3 место 2 место 3 место Организатор конкурсов
Больше
12 года 10 мес. назад #62175 от Cerberus
Cerberus ответил в теме Руби - alias в модуле

Amphilohiy пишет: И можно такой вопрос из любопытства - кроме тебя и пещерного скриптовики то есть? :)

Ну я что-то по мелочи ваять пытаюсь :) Но именно что по мелочи.

Жуть болотная, на лапках, в тапках и с пулемётом...

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

Программист Ruby 2 место Готв Победитель Сбитой кодировки Учитель Оратор
Больше
12 года 10 мес. назад #62184 от Amphilohiy
Amphilohiy ответил в теме Руби - alias в модуле
Что касается alias_method, то вот что нарыл в гугле
andreacfm.com/2012/11/29/ruby-alias-vs-alias-method/
На инглише правда, но по примерам вроде понятно (правда непонятно толком зачем, но это уже другая история), тестить лень :( .
Еще я сильно подозреваю что на мои посты будет только эльф и отвечать, может сразу в личку ломиться? :laugh: (но это больше так, в шутку)

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

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

Проект месяца 1 место Программист Ruby Писатель 3 место 3 место Учитель Организатор конкурсов 1 место в Готв Ветеран Проект месяца 2 место
Больше
12 года 10 мес. назад #62185 от DeadElf79
DeadElf79 ответил в теме Руби - alias в модуле
Ну если только пещерный придет помогать))

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

Программист Ruby Разработчик Проект месяца 3 место Проект месяца 2 место Проект года 1 место Проект года 3 место Учитель Оратор Паладин Проект месяца 1 место 2 место Готв 3 место Организатор конкурсов Ветеран
Больше
12 года 10 мес. назад #62186 от caveman
caveman ответил в теме Руби - alias в модуле
я молчу, так как в модули не совался (таковых в хп маловато) и алиасы, соответственно, там не делал

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

Проект месяца 1 место Программист Ruby Писатель 3 место 3 место Учитель Организатор конкурсов 1 место в Готв Ветеран Проект месяца 2 место
Больше
12 года 10 мес. назад #62188 от DeadElf79
DeadElf79 ответил в теме Руби - alias в модуле
Амфил, тогда - в личку со сложными вопросами, будем решать, а результаты полезные - можно и сюда.

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

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