Город Мастеров
IPB

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в эту темуОткрыть новую тему
> NWN + Python, Пригрей змею
aleVandal
сообщение Jul 23 2005, 21:20
Сообщение #1


Level 4
**

Класс: Оборотень
Характер: Chaotic Neutral
Раса: Орк
NWN: Скриптинг [PW]



Я занимаюсь разработкой плагина для NWNX. Суть плагина состоит в том что в него встроен интерпретатор Python, что позволяет исполнять питоновские скрипты из нвн-скриптов. Предусмотрены следующие возможности:
0) выполнение строки, содержащей одну или несолько инструкций на языке Python. Передача параметров отсутствует. Результата не возвращает.
1) выполнение файла. Почти то же что и предыдущее, за исключением того, что питоновский код считывается из файла. Передача параметров отсутствует. Результата не возвращает.
2) вызов функции, содержащейся в каком либо модуле. Это полноценный вызов функции со всеми вытекающими. Функция получает параметры из нвн-скрипта и возвращает результат. Это уже кое что поинтереснее, чем предыдущие, однако недостаток налицо - посредством функции возможно выполнение какого-либо одноразового действия.
3) возможность работы с объектами питона. В нвн-скриптах взаимодействие с объектами питона реализуется следующей последовательностью действий:
а) создание объекта
б) взаимодействие с атрибутами объекта посредством вызова его методов( с передачей параметров и возвращением результата).
в) удаление объекта

Для тех кто не знаком с NWNX: обмен данными осуществляется только при помощи строк.
Конечно, благодаря возможности создания плагинов для NWNX можно писать собственные модули на С++, но написание программ на питоне намного проще. К тому же ввиду отсутствия этапа компиляции намного упрощается отладка и сопровождение. Так же следует учесть, что каждый отдельный плагин к NWNX - это дллка постоянно висящая в памяти, в то время как мой плагин позволяет скриптеру самому решать вопросы создания/удаления объектов.

Тема я создал для того чтобы узнать мнение модульмэйкеров - интересна вам такая разработка или нет. Подробная информация будет предоставлена мной к моменту завершения работы над плагином. Оставляйте свои отзывы и если вас заинтересовали возможности плагина я готов ответить на вопросы.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Aiwan
сообщение Jul 23 2005, 21:37
Сообщение #2


Миловидный Бегрюссунг
Иконки Групп

Класс: Воин
Характер: Chaotic Good
Раса: Человек
NWN: Модмейкер
Проклятие Левора
Порядок Времени



Ну, я не силен в языках, но то что ты обещаешь, мне и то показалось интересным... :D
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
RiPPeR
сообщение Jul 23 2005, 23:00
Сообщение #3


Level 5
Иконки Групп

Класс: Страж Тьмы
Характер: Chaotic Neutral
Раса: Дракон
NWN: Скриптинг [PW]



Он будет только под винь или под линукс тоже будет версия?
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Vanes
сообщение Jul 24 2005, 05:32
Сообщение #4


Level 11
Иконки Групп

Класс: Вор
Характер: Neutral Evil
Раса: Эльф
NWN: Скриптинг [PW]
Validor2



можно конкретно, что может твой плагин, чего не может сам тулсет ???
ну или по крайней мере, что будет выполняться быстрее и работать эффективней ???
зы простые практические примеры для шарда плз... теория меня мало интересует...

Сообщение отредактировал Vanes - Jul 24 2005, 05:33
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
aleVandal
сообщение Jul 24 2005, 09:55
Сообщение #5


Level 4
**

Класс: Оборотень
Характер: Chaotic Neutral
Раса: Орк
NWN: Скриптинг [PW]



QUOTE
Он будет только под винь или под линукс тоже будет версия?

и под вынь и под линукс

QUOTE
можно конкретно, что может твой плагин, чего не может сам тулсет ???

все возможности языка Python в ваших руках. Единственное ограничение - как я уже говорил, обмен данными только ввиде строк. Например благодаря высокоуровневым типам данных ни что не мешает выбирать из базы данных не одиночные записи, а полноценные наборы данных, по которым не составит труда наладить навигацию в стиле GetFirst... GetNext...

Тривиальнейший пример - чтение/запись файлов:

Класс на Python:
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 = 'NONE'
        self.oFile.close()
        return ret   
    except IOError:
        return 'NONE'
    except ValueError:
        return 'NONE'       
   
    def WriteLine( self, wstr):
    try:
        self.oFile.write(wstr)
        self.oFile.flush()
        return 'TRUE'
    except IOError:
        return 'FALSE'
    except ValueError:
        return 'FALSE'       
   
    def IsOpen( self):
    try:
        if not self.oFile.closed:
        return 'TRUE'
        else:
        return 'FALSE'
    except:
        return 'FALSE'


Не буду сейчас приводить полный цикл создания и подключения к нвн питоновского модуля, ибо слишком это долгая песня( все это разумеется будет включено в документацию). Приведу пример описания нескольких конечных функций в нвн скриптах:
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);



Добавлено в [mergetime]1122188234[/mergetime]
упс - а что кавычки использовать нельзя?
Добавлено в [mergetime]1122188285[/mergetime]
я вот об этом
Neverwinter Script Source
#39
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
_kaa_
сообщение Jul 24 2005, 10:43
Сообщение #6


Level 9
Иконки Групп

Класс: Волшебник
Характер: Chaotic Good
Раса: Дракон
NWN: Скриптинг [PW]



Эх, почему питон, а не перл? :)
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Aiwan
сообщение Jul 24 2005, 13:12
Сообщение #7


Миловидный Бегрюссунг
Иконки Групп

Класс: Воин
Характер: Chaotic Good
Раса: Человек
NWN: Модмейкер
Проклятие Левора
Порядок Времени



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
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
aleVandal
сообщение Jul 24 2005, 13:49
Сообщение #8


Level 4
**

Класс: Оборотень
Характер: Chaotic Neutral
Раса: Орк
NWN: Скриптинг [PW]



QUOTE
Эх, почему питон, а не перл?

а почему не иначе?:)
Я в перле не очень силен, так как особенно близко с ним не сталкивался.
Просто в питоне практически все структуры данных( встроенные типы данных языка, модули, классы, экземпляры классов, атрибуты классов, функции) представлены как объекты. Это позволяет осуществлять управление ими с помощью единого интерфейса.
Благодаря вышесказанному питон имеет великолепные возможности для встраивания его в приложения написанные на С/С++.

ЗЫ: каа, ты большой поклонник перл?
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
_kaa_
сообщение Jul 25 2005, 13:34
Сообщение #9


Level 9
Иконки Групп

Класс: Волшебник
Характер: Chaotic Good
Раса: Дракон
NWN: Скриптинг [PW]



QUOTE (aleVandal @ Jul 24 2005, 13:49)
а почему не иначе?:)
Я в перле не очень силен, так как особенно близко с ним не сталкивался.
ЗЫ: каа, ты большой поклонник перл?

В первых двух предложениях содержится ответ, надо только заменить питон на перл :)
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
aleVandal
сообщение Jul 25 2005, 14:35
Сообщение #10


Level 4
**

Класс: Оборотень
Характер: Chaotic Neutral
Раса: Орк
NWN: Скриптинг [PW]



Ну тут уж как говорится - было бы желание:)
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
aleVandal
сообщение Aug 18 2005, 16:04
Сообщение #11


Level 4
**

Класс: Оборотень
Характер: Chaotic Neutral
Раса: Орк
NWN: Скриптинг [PW]



Плагин готов.
Загрузить можно по адресу http://www.nwnxpython.narod.ru
Добавлено в 18:20
Маленькое замечание.
Только что заметил - в архив плагина я забыл положить ерф-ку с функциями. Если кто-то вдруг уже скачал - приношу извинения. Исправил.

Сообщение отредактировал aleVandal - Aug 18 2005, 18:22
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения

Ответить в эту темуОткрыть новую тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



Текстовая версия Сейчас: 29th March 2024 - 00:09