Уведомления

Группа в Telegram: @pythonsu

#1 Март 22, 2010 18:24:17

Chesnok
От:
Зарегистрирован: 2010-03-22
Сообщения: 8
Репутация: +  0  -
Профиль   Отправить e-mail  

Адаптация скрипта для Windows

(если не туда написал, перенаправьте)


Есть маленький скрипт Питона, который превращает старые квесты Sierra (AGI-движок) в формат *.cibar для работы на мобильных телефонах (через Sarien.jar)


Собственно, проблема в этом скрипте.
http://cibyl.googlecode.com/svn/trunk/tools/cibyl-generate-cibar


Он должен превращать файлы игры в один файл примерно ТАКОГО ЖЕ размера (например 200 кб), а получаемый cibar-файл всегда напорядок меньше (например 9 кб), как будто скрипт где-то стопорится и не доделывает процесс…

***

ФАЙЛЫ


Вот пример игры
http://jift.narod.ru/invis/time_quest_game_only.rar

И пример нормального, рабочего cibar-архива
http://jift.narod.ru/invis/cibar_Time_Quest.rar


А вот пример неправильного сибара
http://jift.narod.ru/invis/tq_wrong.rar

***

Я в Питоне вообще ламак, знаю только Delphi, Basic и то на любительском уровне. Я бы сделал delphi-версию конвертера (AGI-игра 2 cibar), но не могу понять питон-скрипт.

****

СТРОЕНИЕ cibar'а (нормального)

В начале cibar'а какой-то заголовок делается со списком файлов. Затем вроде как содержимое файлов без всяких изменений. Но список файлов для каждой игры будет разным, т.к. где-то файлов больше, где-то меньше; поэтому я не могу его (header) тупо скопировать и прилепить содержимое этих файлов.

В конце сибара непонятно откуда взятое содержимое, возможно “финальный заголовок”.

***

Автор скрипта говорит, что должно работать. Он сидит на Линуксе, но говорит и на Windows работало. Создал он скрипт еще в 2004 году.

Я всё перепробывал. Скрипт запускается, но явно гонит.



Отредактировано (Март 22, 2010 18:30:01)

Офлайн

#2 Март 22, 2010 18:51:09

Александр Кошелев
От: Москва
Зарегистрирован: 2007-02-03
Сообщения: 1724
Репутация: +  2  -
Профиль   Отправить e-mail  

Адаптация скрипта для Windows

Chesnok
Скрипт запускается, но явно гонит.
Что это значит?



Офлайн

#3 Март 22, 2010 19:39:06

Chesnok
От:
Зарегистрирован: 2010-03-22
Сообщения: 8
Репутация: +  0  -
Профиль   Отправить e-mail  

Адаптация скрипта для Windows

Выдает очень маленький файл на выходе



Офлайн

#4 Март 22, 2010 20:58:00

Ferroman
От:
Зарегистрирован: 2006-11-16
Сообщения: 2759
Репутация: +  1  -
Профиль   Отправить e-mail  

Адаптация скрипта для Windows

Я не совсем понимаю - от форумчан вы чего хотите?

Офлайн

#5 Март 22, 2010 21:15:27

Chesnok
От:
Зарегистрирован: 2010-03-22
Сообщения: 8
Репутация: +  0  -
Профиль   Отправить e-mail  

Адаптация скрипта для Windows

Разобраться в этом скрипте


- Какие действия он конкретно выполняет
- Что выполняет функция “struct.pack(”>L“, …)”

- Почему он может не до конца обрабатывать список файлов.
- Есть ли способ перевести этот скрипт на язык Delphi, к примеру.



Отредактировано (Март 22, 2010 21:17:13)

Офлайн

#6 Март 22, 2010 21:21:13

Ed
От:
Зарегистрирован: 2008-12-13
Сообщения: 1032
Репутация: +  13  -
Профиль   Отправить e-mail  

Адаптация скрипта для Windows

Скрипт выдает что-нибудь типа “WARNING: Skipping …” ?
Код ужасный, кстати.



Офлайн

#7 Март 22, 2010 21:27:52

Ferroman
От:
Зарегистрирован: 2006-11-16
Сообщения: 2759
Репутация: +  1  -
Профиль   Отправить e-mail  

Адаптация скрипта для Windows

- Какие действия он конкретно выполняет
Вообще-то скрипт простой. Хотите узнать что к чему он делает? Воспользуйтесь pdb.
- Что выполняет функция “struct.pack(”>L“, …)”
Что выполняет функция struct.pack написано в 4-м абзаце документации для модуля struct.
- Почему он может не до конца обрабатывать список файлов.
Из-за неверно подсчёта места, к примеру.
- Есть ли способ перевести этот скрипт на язык Delphi, к примеру.
Есть. Переписать скрипт на языке Delphi. Так-то!

А если серьёзно - вы же не ждёте что кто-то будет это всё делать вместо вас? Попытайтесь разобраться самостоятельно, а как наткнётесь на конкретные проблемы - обращайтесь.
PS: строка
of.write(struct.pack(“>L”, 0x12344321)) # magic
позабавила.

Офлайн

#8 Март 22, 2010 21:40:43

Chesnok
От:
Зарегистрирован: 2010-03-22
Сообщения: 8
Репутация: +  0  -
Профиль   Отправить e-mail  

Адаптация скрипта для Windows

//Скрипт выдает что-нибудь типа “WARNING: Skipping …” ?

Вообще ничего не выдаёт. В смысле, файл генерирует, но никаких сообщений при этом не вылезает. Пробовал и через python.exe и через py2exe, везде один результат.


// Воспользуйтесь pdb.
PDB - это что?



Офлайн

#9 Март 22, 2010 21:47:24

Ed
От:
Зарегистрирован: 2008-12-13
Сообщения: 1032
Репутация: +  13  -
Профиль   Отправить e-mail  

Адаптация скрипта для Windows

Хм, странно. По идее должен был бы.
Вставьте после строчки # Create the tables такую строчку:
print ‘>>>’, all_files.keys()
и покажите чего выведет.



Офлайн

#10 Март 22, 2010 22:11:29

Chesnok
От:
Зарегистрирован: 2010-03-22
Сообщения: 8
Репутация: +  0  -
Профиль   Отправить e-mail  

Адаптация скрипта для Windows

Выводит это:

>>> ['HGC_GRAF.OVL', ‘JR_GRAF.OVL’, ‘PICDIR’, ‘AGI’, ‘AGIDATA.OVL’, ‘VIEWDIR’, ‘
OBJECT’, ‘EGA_GRAF.OVL’, ‘CGA_GRAF.OVL’, ‘HGC_OBJS.OVL’, ‘LOGDIR’, ‘WORDS.TOK’,
'SG.1', ‘vol.0’, ‘IBM_OBJS.OVL’, ‘SNDDIR’]


Перечисляет список файлов игры для конвертации.

***************************************************************

Через print вывел значения других переменных

//? - т.е. непонятно, что за переменная
// - название переменной
//надписи - описание переменных от меня


= Длина имени файла: 6
= Размер файла (в байтах): 198
= Имя файла: SNDDIR
= Содержимое: #Б E Ы - !!tE Ь =!!t Ф!!u2 ' ) У Б\$a5 !!xq!! 0!!  !!zT$a !!z $b
e\$e $eк$h hq k !!{ $l3$l $m%$mA$mЫ$n $n oН$p pЧ$pЮ$q $ql!!|P r5 sй
$z6 A $tq !!|Г$u


= ?: 165
= ?: 9212

= ?: 9617 (по размеру похоже на 9671 байт, сколько будет весить получаемый неправильный файл)
= ?: 12
= Кол-во файлов: 18

= ?: 158
= ?: 9014


***

И показывается только SNDDIR, т.е. один файл из списка… Может, дальше по списку процесс и не идёт?



Отредактировано (Март 22, 2010 22:37:41)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version