Current time: 20.04.2024, 00:31 Hello There, Guest! (LoginRegister)
Language: english | russian  

Post Reply 
Threaded Mode | Linear Mode
Python-скрипты для Героев
Author Message
GhostManSD Offline

Posts: 1054
Post: #31

pygame не нужен. Можно мини-игры не хуже реализовать, если написать Pythonic вариант DL. Нам же не нужна там 3D графика, верно?


Κακῆς ἀπ' ἀρχῆς γίγνεται τέλος κακόν.
31.10.2011 14:17
Visit this user's website Find all posts by this user Quote this message in a reply
Sav Offline

Posts: 2180
Post: #32

Реализовывать real-time мини-игры через DL - это извращение какое-то, если вообще реально.
Правда pygame в отдельном окне - тоже ничего хорошего.

Так или иначе, кроме как "просто скопировать и запустить", у меня не было идей по прикручиванию pygame. Раз уж оно "просто не запустилось", боюсь, от бубна толку будет мало.
31.10.2011 18:54
Find all posts by this user Quote this message in a reply
GhostManSD Offline

Posts: 1054
Post: #33

(31.10.2011 18:54)Sav Wrote:  Реализовывать real-time мини-игры через DL - это извращение какое-то, если вообще реально.
Если в ФМ всякие новые красивые менюшки реализованы через DL, то имеет смысл запилить.


Κακῆς ἀπ' ἀρχῆς γίγνεται τέλος κακόν.
01.11.2011 01:45
Visit this user's website Find all posts by this user Quote this message in a reply
Sav Offline

Posts: 2180
Post: #34

То, что аналог DL, так же как и аналоги всех остальных возможностей ERM нужно делать - это само собой. Другое дело, что DL хорошо подходит для красивых менюшек, но не очень для мини-игр.
(This post was last modified: 01.11.2011 10:05 by Sav.)
01.11.2011 10:04
Find all posts by this user Quote this message in a reply
Berserker Offline
Administrators

Posts: 16484
Post: #35

Переходники к ерм функциям? Огромная работа, игра не стоит свеч.


Скачать Герои 3 Эра и всё, что с ней связано / ERA 2.46f для старых модов
Поддержать проект
01.11.2011 15:54
Find all posts by this user Quote this message in a reply
Sav Offline

Posts: 2180
Post: #36

Нет, привязываться к erm`у я не хочу. Буду реализовывать возможности, аналогичные возможностям erm, предоставляя скриптам доступ к геройским функциям и структурам. Понятно, что совсем всё я вряд ли когда-нибудь реализую, но в целом буду двигаться в таком направлении, начиная с наиболее простых и типичных вещей.
(This post was last modified: 01.11.2011 20:04 by Sav.)
01.11.2011 20:03
Find all posts by this user Quote this message in a reply
Berserker Offline
Administrators

Posts: 16484
Post: #37

Вот я и говорю, что это путь выброшенного времени. На твоём месте я бы занялся сохранением/загрузкой данных, сохранением-загрузкой модулей и отладкой (консоль м.б), а ЕРМ оставил бы ExecErmCmd. Так будет хоть какое-то развитие, а не попытка оптимизации уже сделанного. Но тебе решать.


Скачать Герои 3 Эра и всё, что с ней связано / ERA 2.46f для старых модов
Поддержать проект
01.11.2011 21:08
Find all posts by this user Quote this message in a reply
Sav Offline

Posts: 2180
Post: #38

А будет ли тогда смысл во всём этом? Если всё всё равно делается командами erm, то спорный вопрос, что большее зло - erm`овские индексы, неудобные циклы и т. п. или геморрой со словарём триггеров, с вызовом ExecErmCmd (причём абсолютно для любого взаимодействия с Героями) и связи с ним через erm-переменные. Только для питона придётся ещё качать 20 метров стандартных библиотек и засорять корневой каталог кучей dll`ек и папкой Lib.
Конечно, можно написать виртуальные классы, со свойствами, вызывающими ExecErmCmd, для эмуляции геройских структур (это, в общем-то, не сложно на питоне, к тому же даже реверса не потребуется никакого), но это решение мне не очень нравится.

В любом случае приоритетными вещами в работе для меня сейчас являются основы, куда входит и сохранение/загрузка в том числе. До их реализации нет смысла в остальном.

А что ты имеешь ввиду под отладкой? Честно говоря, я слабо понимаю, что она должна из себя представлять. Sm
(This post was last modified: 01.11.2011 22:17 by Sav.)
01.11.2011 22:16
Find all posts by this user Quote this message in a reply
Sav Offline

Posts: 2180
Post: #39

Уфф, встроил наконец-то ExecErmCmd. Sm

Вопрос: есть ли смысл встраивать остальные функции Эры? В принципе, теперь не проблема, но многие из них в питоне будут малополезны.
01.11.2011 23:00
Find all posts by this user Quote this message in a reply
Berserker Offline
Administrators

Posts: 16484
Post: #40

Что значит всё? ЕРМ-переменные используются только как посредники между итоговым кодом и ЕРМ. Суть динамического языка в лёгкости отладки (например, просмотр любых данных в консоли), загрузке/отгрузке и возможности редактировать код прямо на лету (нет стадии компиляции). Иначе берём компилируемый язык + вызываем ExecErmCmd для команд. Не для циклов, не для логики, не для хранения данных.

Sav, сделай механизм универсального вызова машинных функций. В ЕРМ-то аналог есть.


Скачать Герои 3 Эра и всё, что с ней связано / ERA 2.46f для старых модов
Поддержать проект
01.11.2011 23:01
Find all posts by this user Quote this message in a reply
Sav Offline

Posts: 2180
Post: #41

Berserker Wrote:Что значит всё?
Это про "А будет ли тогда смысл во всём этом?" или "Если всё всё равно делается командами erm"? Sm

Если про второе: всё - значит любая связь с игрой: взятие каких-либо данных из игры, запись их в игру, вызовы игровых функций.


Berserker Wrote:ЕРМ-переменные используются только как посредники между итоговым кодом и ЕРМ.
Да, но с учётом того, что ExecErmCmd придётся использовать постоянно, с erm-переменными тоже придётся взаимодействовать постоянно. Просто неудобно: мало того, что надо производить действия через ExecErmCmd, так ещё и параметры пихать в erm-переменные для этого надо и результаты забирать оттуда. Отсюда возникает вопрос: а не нафиг ли это, не лучше ли просто писать всё на erm, пусть у него есть свои минусы?


Berserker Wrote:Суть динамического языка в лёгкости отладки (например, просмотр любых данных в консоли), загрузке/отгрузке и возможности редактировать код прямо на лету (нет стадии компиляции).
Всё это всё равно в той или иной степени есть в ERM (с Эрой 1.9) и в питоне (не знаю как получится с консолью, но запись данных в файл и там, и там есть).

Berserker Wrote:Не для циклов, не для логики, не для хранения данных.
Но эти вещи тоже нужны. Они не являются аргументом против компилируемых языков (я с ними, кстати, вообще не сравнивал), но являются аргументами против ERM.

Berserker Wrote:Sav, сделай механизм универсального вызова машинных функций. В ЕРМ-то аналог есть.
А зачем, если можно вызвать SN:E через ExecErmCmd? Sm

Но если серьёзно - попытаюсь сделать.
02.11.2011 17:59
Find all posts by this user Quote this message in a reply
Berserker Offline
Administrators

Posts: 16484
Post: #42

Quote:SN:E
Так это медленно. В том плане, что проходит сперва через ProcessErm. А от машинных функций в циклах нужна скорость.


Скачать Герои 3 Эра и всё, что с ней связано / ERA 2.46f для старых модов
Поддержать проект
02.11.2011 18:14
Find all posts by this user Quote this message in a reply
Sav Offline

Posts: 2180
Post: #43

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

В связи с этим вопрос: можно ли из dll'ки показывать/скрывать консоль, при этом чтобы именно в этой показываемой консоли был стандартный ввод и вывод? Что-то я, сколько ни парился, не смог сделать этого ни на уровне питона, ни на уровне C.
Запускать отдельную программу - совсем геморройно из-за необходимости передачи специфических данных.
19.11.2011 20:57
Find all posts by this user Quote this message in a reply
Berserker Offline
Administrators

Posts: 16484
Post: #44

AllocConsole/FreeConsole, если под консолью имелась в виду именно консоль.
Функции автоматом ставят SetStdHandle.


Скачать Герои 3 Эра и всё, что с ней связано / ERA 2.46f для старых модов
Поддержать проект
19.11.2011 21:03
Find all posts by this user Quote this message in a reply
etoprostoya Offline

Posts: 1809
Post: #45

Примерчик.
Code:
AllocConsole();
DWORD Written;
char Buffer[256];
HANDLE hOutput = GetStdHandle(STD_OUTPUT_HANDLE);
CONSOLE_SCREEN_BUFFER_INFO BufferInfo;
GetConsoleScreenBufferInfo( hOutput, &BufferInfo );
//SetConsoleTextAttribute( hOutput, (WORD)WHITE );
WriteConsole( hOutput, "Консоль открыта\n", 11, &Written, NULL );
//SetConsoleTextAttribute( hOutput, (WORD)Color16bit );
WriteConsole( hOutput, Buffer, strlen(Buffer), &Written, NULL );
SetConsoleTextAttribute( hOutput, BufferInfo.wAttributes );
19.11.2011 21:33
Find all posts by this user Quote this message in a reply
« Next Oldest | Next Newest »
Post Reply 


Forum Jump:

Powered by MyBB Copyright © 2002-2024 MyBB Group