Автор: Enyby 18.1.2012, 15:03
У меня тут возникла идея создания такой платформы.
Причины:
- Часто скрипты несовместимы друг с другом, поскольку прямой вывод в скрипте не попадает в дальнейшие фильтры других скриптов и т. п.
- Часто скрипты делают одно и то же, только перенос их на другую платформу достаточно трудоемок и является рутинной операцией.
Что предлагаю:
- Написать единый каркас, к которому можно будет писать скрипты-модули.
- Каркас предполагает ядро, зависимое от платформы и версии API и платформонезависимые модули. Т. е. под каждую платформу свою реализацию каркаса с общим интерфейсом.
- Каркас организует дополнительную пересылку команд между скриптами. Например, ротация ников не совместима с историей чата, но если сделать эту платформу, то становится возможным предоставить необходимые интерфейсы срествами LUA. Тоже самое касательно скриптов, модифицирующих MyINFO.
Кто что думает по этому поводу?
Автор: Saymon21 18.1.2012, 15:06
Простите, ещё одного экзекутора не надо! И кстати, посмотри API русхаба, там практически всё заготовлено, что нужно.
Автор: Enyby 18.1.2012, 15:12
Не экзекутор. Все намного проще. Например, для чистой кроссплатформенность можно разработать интерфейс API, который будет общим для всех платформ. Для использования на нужной платформе, в начале надо будет просто подключить модуль с реализацией этого интерфейса на данной платформе.
Но мне больше интересен не этот вопрос, а скорее вопрос взаимодействия скриптов. Например, вызов SearchArrival другого скрипта, после отправки команды $Search с предыдущего скрипта.
Автор: Saymon21 18.1.2012, 15:22
Цитата
Core.Call(sScriptName, sFunc, ...)
Описание: Функция вызывает функцию sFunc другого скрипта sScriptName с параметрами, которые указываются в аргументе 3, 4 и тд.
Параметры функции и возвращаемые значения функции могут быть только следующих типов: string, number, boolean, table и userlightdata.
Функция Core.Call возвращает все те значения, которые возвращает функция sFunc скрипта sScriptName.
В случае ошибки функция возвращает nil и сообщение об ошибке.
http://mydc.ru/topic2378.html ???
Автор: Enyby 18.1.2012, 15:34
Не, ну это хорошо, конечно. но вот у меня стоит скрипт, допустим, дописывающий имена стран в описание пользователям. а потом я решил поставить скрипт, исправляющий флаг актива на пассив у отдельных личностей. Я должен теперь первый скрипт завязать на второй? Или пробежать все скрипты, проверить нет ли там MyInfoArrival и если есть, вызывать его? Плюс еще считать конфиг скриптов и определить те скрипты, которые включены и идут после текущего? Имхо, многовато операций. Да и модуль не должен быть завязан на все остальные модули, а то модульности никакой не будет.
Автор: Setuper 18.1.2012, 20:15
В русхабе это делается очень просто, тем более на последней версии.
скрипт1:
Код
function OmMyINFO(tUser, sData)
tUser.sDesc = "Новое описание"
end
скрипт2:
Код
function OmMyINFO(tUser, sData)
tUser.sMode = "P"
end
Нечто универсальное считаю неправильным, ибо функционал даёт очень разные возможности.
Конечно можно сделать нечто универсальное, но это может ухудшить работу.