Я занимаюсь разработкой плагина для NWNX. Суть плагина состоит в том что в него встроен интерпретатор Python, что позволяет исполнять питоновские скрипты из нвн-скриптов. Предусмотрены следующие возможности:
0) выполнение строки, содержащей одну или несолько инструкций на языке Python. Передача параметров отсутствует. Результата не возвращает.
1) выполнение файла. Почти то же что и предыдущее, за исключением того, что питоновский код считывается из файла. Передача параметров отсутствует. Результата не возвращает.
2) вызов функции, содержащейся в каком либо модуле. Это полноценный вызов функции со всеми вытекающими. Функция получает параметры из нвн-скрипта и возвращает результат. Это уже кое что поинтереснее, чем предыдущие, однако недостаток налицо - посредством функции возможно выполнение какого-либо одноразового действия.
3) возможность работы с объектами питона. В нвн-скриптах взаимодействие с объектами питона реализуется следующей последовательностью действий:
а) создание объекта
б) взаимодействие с атрибутами объекта посредством вызова его методов( с передачей параметров и возвращением результата).
в) удаление объекта
Для тех кто не знаком с NWNX: обмен данными осуществляется только при помощи строк.
Конечно, благодаря возможности создания плагинов для NWNX можно писать собственные модули на С++, но написание программ на питоне намного проще. К тому же ввиду отсутствия этапа компиляции намного упрощается отладка и сопровождение. Так же следует учесть, что каждый отдельный плагин к NWNX - это дллка постоянно висящая в памяти, в то время как мой плагин позволяет скриптеру самому решать вопросы создания/удаления объектов.
Тема я создал для того чтобы узнать мнение модульмэйкеров - интересна вам такая разработка или нет. Подробная информация будет предоставлена мной к моменту завершения работы над плагином. Оставляйте свои отзывы и если вас заинтересовали возможности плагина я готов ответить на вопросы.
Ну, я не силен в языках, но то что ты обещаешь, мне и то показалось интересным...
Он будет только под винь или под линукс тоже будет версия?
можно конкретно, что может твой плагин, чего не может сам тулсет ???
ну или по крайней мере, что будет выполняться быстрее и работать эффективней ???
зы простые практические примеры для шарда плз... теория меня мало интересует...
QUOTE |
Он будет только под винь или под линукс тоже будет версия? |
QUOTE |
можно конкретно, что может твой плагин, чего не может сам тулсет ??? |
Neverwinter Script Source |
class CNWNXPythonFile: def __init__( self, file_name, open_mod): try: self.oFile = open( file_name, open_mod) except IOError: pass def __del__( self): self.oFile.close() del self.oFile def ReadLine( self, size=-1): try: ret = self.oFile.readline(size) if not ret: ret = 39;NONE39; self.oFile.close() return ret except IOError: return 39;NONE39; except ValueError: return 39;NONE39; def WriteLine( self, wstr): try: self.oFile.write(wstr) self.oFile.flush() return 39;TRUE39; except IOError: return 39;FALSE39; except ValueError: return 39;FALSE39; def IsOpen( self): try: if not self.oFile.closed: return 39;TRUE39; else: return 39;FALSE39; except: return 39;FALSE39; |
Neverwinter Script Source |
//открыть файл filename в режиме mod, вернет идентификатор созданного объекта string OpenFile(string filename, string mod); //читает строку из файла размером size или если size<=0 то до '\n' string ReadLine( string PyObjectId,int size = -1); //закроет файл и удалит объект( PyObjectId - идентификатор объекта ) string CloseFile(string PyObjectId); |
Neverwinter Script Source |
#39 |
Эх, почему питон, а не перл?
QUOTE (aleVandal @ Jul 24 2005, 12:55) |
упс - а что кавычки использовать нельзя? |
CODE |
class CNWNXPythonFile: def __init__( self, file_name, open_mod): try: self.oFile = open( file_name, open_mod) except IOError: pass def __del__( self): self.oFile.close() del self.oFile |
QUOTE |
Эх, почему питон, а не перл? |
QUOTE (aleVandal @ Jul 24 2005, 13:49) |
а почему не иначе? Я в перле не очень силен, так как особенно близко с ним не сталкивался. ЗЫ: каа, ты большой поклонник перл? |
Ну тут уж как говорится - было бы желание
Плагин готов.
Загрузить можно по адресу http://nwnxpython.narod.ru
Добавлено в 18:20
Маленькое замечание.
Только что заметил - в архив плагина я забыл положить ерф-ку с функциями. Если кто-то вдруг уже скачал - приношу извинения. Исправил.
Русская версия Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)