Форум TeamX
   Home   Members  
Pages: [1] 2 |   Go Down
 
Author Topic: Парсер scripts.lst  (Read 3047 times)
Jordan
Пользователь
Posts: 416

476228895
Парсер scripts.lst
« on: 22 May 2008, 21:31:29 »

Quote
Не знаю, что тебе ответит Anchorite, но моя рука рефлекторно потянулась к бритве Оккама. Зачем нагружать компилятор несвойственными ему функциями? Да ещё так, что теряется совместимость с существующим кодом? Если уж хочешь упростить работу со скриптами, сделай парсер, который будет автоматически генерировать scripts.h на основании scripts.lst и вся недолга.

А как написать этот парсер? У меня есть delphi 7 и visual c++ 6.0. Ни один из языков я не знаю.
Можешь пример привести такого парсера?
« Last Edit: 23 May 2008, 08:42:54 by Wasteland Ghost »

Воспрянет Россия, из праха отцов
Расправятся крылья, миллионов сердец
Поднимут все головы и грудью вздохнут
И громка скажут, что пришли
Мы пришли, со столетней войны
Alchemist
Пользователь
Posts: 117

Ортодоксальный Сектант


Re: Парсер scripts.lst
« Reply #1 on: 25 May 2008, 22:36:03 »

Jordan, падаван юный, самому-то не смешно задавать такие вопросы? Если знаешь языки -- пишешь на том, на чём умеешь. Если не знаешь -- изучаешь. В двух словах всю необходимую теорию я тебе не изложу. А в моддинге, особенно если работаешь в одиночку, на одном лишь знании SSL далеко не уедешь.
Не смотря на неверную предпосылку, идея по уменьшению телодвижений при изменении scripts.lst -- вполне здравая. У меня уже был в наличии готовый парсер, который за полчасика удалось перепилить под поставленную задачу. Вот готовый бинарник. Сырцы приводить в порядок некогда, потому покуда их не дам. Софтинка принимает два аргумента: pathname к исходному scripts.lst и pathname к создаваемому scripts.h. К синтаксису, в силу тупости алгоритма, довольно чувствительна. Лишние пробелы в прагме local_vars не любит. Если окажется полезной, потом выложу по человечески на сайт.

//Это добром не кончится...
Jordan
Пользователь
Posts: 416

476228895
Re: Парсер scripts.lst
« Reply #2 on: 28 May 2008, 00:46:35 »

Хороший парсер! Пришлось правда подправить одну строчку в script.lst. Хорошо бы этот парсер выложить на сайт. А можешь сделать такойже парсер но для vault13.gam?

Воспрянет Россия, из праха отцов
Расправятся крылья, миллионов сердец
Поднимут все головы и грудью вздохнут
И громка скажут, что пришли
Мы пришли, со столетней войны
Alchemist
Пользователь
Posts: 117

Ортодоксальный Сектант


Re: Парсер scripts.lst
« Reply #3 on: 15 June 2008, 15:29:34 »

Quote
Пришлось правда подправить одну строчку
Заначит, ты где-то напортачил с синтаксисом.

Quote
можешь сделать такойже парсер но для vault13.gam?
Могу. Но только не прямо сейчас.

Да, вот ещё что забыл. Я перезаливал немного обновлённый  парсер, который те строчки, в которых длинна имени файла не соответствует стандарту 8.3, создаёт заремленными. И менее жёстко относится к синтаксису. Убедить, что у тебя именно он, а не более ранний вариант.
« Last Edit: 15 June 2008, 15:43:31 by Alchemist »

//Это добром не кончится...
Fakels
Пользователь
Posts: 337

Модный геймер


Re: Парсер scripts.lst
« Reply #4 on: 15 June 2008, 15:50:08 »

Что-то непойму, для чего этот парсер какова его задача?

"Необходимо учесть все условия и тогда - нет проблем"
Wasteland Ghost
Администратор
Posts: 869

Маленькое Злое Привидение


Re: Парсер scripts.lst
« Reply #5 on: 15 June 2008, 18:16:32 »

Quote
парсер, который будет автоматически генерировать scripts.h на основании scripts.lst
Что здесь непонятного?
Fakels
Пользователь
Posts: 337

Модный геймер


Re: Парсер scripts.lst
« Reply #6 on: 15 June 2008, 19:45:56 »

Quote from: Wasteland Ghost on 15 June 2008, 18:16:32
Quote
парсер, который будет автоматически генерировать scripts.h на основании scripts.lst
Что здесь непонятного?
А как генерируется названия в scripts.h для определений так SCRIPT_имяскрипта  (number) или как то иначе.

ps: извениете за тупые вопросы, просто не лень самому выяснять. Улыбка

"Необходимо учесть все условия и тогда - нет проблем"
Wasteland Ghost
Администратор
Posts: 869

Маленькое Злое Привидение


Re: Парсер scripts.lst
« Reply #7 on: 15 June 2008, 19:49:29 »

Quote
извениете за тупые вопросы, просто не лень самому выяснять.
Ну извини, приятель, с такими понятиями тебе не сюда.

Посмотри scripts.lst и scripts.h и все вопросы отпадут сами собой.
Freeman
Пользователь
Posts: 50


Re: Парсер scripts.lst
« Reply #8 on: 17 June 2008, 15:29:43 »

Quote from: Jordan
парсер но для vault13.gam?
Я могу написать, если не хочешь ждать пока Alchemist напишет. Только я не разбираюсь в скриптах. Какой формат у файла, который должен получаться на выходе?
Alchemist
Пользователь
Posts: 117

Ортодоксальный Сектант


Re: Парсер scripts.lst
« Reply #9 on: 17 June 2008, 16:39:23 »

Quote
Какой формат у файла, который должен получаться на выходе?

Такой:
Code:
#ifndef GVARS_H
#define GVARS_H


#ifndef _GLOBAL_H_DEFINED
#define _GLOBAL_H_DEFINED
#endif //_GLOBALS_H_DEFINED


#ifdef WATCOM

#undef GVAR_имя1_из_vault13.gam
#undef GVAR_имя2_из_vault13.gam
...
#undef GVAR_имяN_из_vault13.gam

#endif //WATCOM


#define GVAR_имя1_из_vault13.gam (1) //комментарий1 из vault13.gam
#define GVAR_имя2_из_vault13.gam        (2) //комментарий1 из vault13.gam
...
#define GVAR_имяN_из_vault13.gam        (N) //комментарийN из vault13.gam


#endif //GVARS_H

При include перед global.h будет его полностью заменять.
При include после global.h будет только переопределять номера gvar, не затрагивая константы.
При нормальном порядке разработки должен inсlude'иться вообще ИЗ global.h.
« Last Edit: 17 June 2008, 16:42:44 by Alchemist »

//Это добром не кончится...
Jordan
Пользователь
Posts: 416

476228895
Re: Парсер scripts.lst
« Reply #10 on: 17 June 2008, 19:57:01 »

Freeman

Вот пример

Файл vault13.gam



 // Comments

//MAP_GLOBAL_VARS:
GAME_GLOBAL_VARS:
//GLOBAL                                                NUMBER

GVAR_PLAYER_REPUTATION                  :=0;    //      (0)
GVAR_CHILDKILLER_REPUTATION             :=0;    //      (1)
GVAR_CHAMPION_REPUTATION                :=0;    //      (2)
GVAR_BERSERKER_REPUTATION               :=0;    //      (3)
GVAR_BAD_MONSTER                        :=0;    //      (4)
GVAR_GOOD_MONSTER                       :=0;    //      (5)
и так далее до канца файла

После обработки программы он был таким global.h

#ifndef _GLOBAL_H_DEFINED
#define _GLOBAL_H_DEFINED


#define GVAR_PLAYER_REPUTATION               (0)
#define GVAR_CHILDKILLER_REPUTATION          (1)
#define GVAR_CHAMPION_REPUTATION             (2)
#define GVAR_BERSERKER_REPUTATION            (3)
#define GVAR_BAD_MONSTER                     (4)
#define GVAR_GOOD_MONSTER                    (5)
и так далее до канца файла

#endif // _GLOBAL_H_DEFINED

Воспрянет Россия, из праха отцов
Расправятся крылья, миллионов сердец
Поднимут все головы и грудью вздохнут
И громка скажут, что пришли
Мы пришли, со столетней войны
Freeman
Пользователь
Posts: 50


Re: Парсер scripts.lst
« Reply #11 on: 17 June 2008, 21:23:15 »

У меня возник вопрос. У Jordan'а после первой гвары, в скобочках 0, а у Alchemist'а 1. Кому верить? Если Jordan'у, то это комментарий к гваре, если Alchemist'у, то просто номер, начинающийся с 1.
Jordan
Пользователь
Posts: 416

476228895
Re: Парсер scripts.lst
« Reply #12 on: 17 June 2008, 21:46:33 »

Freeman

Quote
У меня возник вопрос. У Jordan'а после первой гвары, в скобочках 0, а у Alchemist'а 1. Кому верить? Если Jordan'у, то это комментарий к гваре, если Alchemist'у, то просто номер, начинающийся с 1.

Самая первая гвара которая начинается

GVAR_PLAYER_REPUTATION                  :=0;    //      (0)

Гвары считаются с нуля а коментарий нужен для того чтобы не запутаться и видеть номер гвары


Воспрянет Россия, из праха отцов
Расправятся крылья, миллионов сердец
Поднимут все головы и грудью вздохнут
И громка скажут, что пришли
Мы пришли, со столетней войны
Freeman
Пользователь
Posts: 50


Re: Парсер scripts.lst
« Reply #13 on: 18 June 2008, 13:30:24 »

Вот http://ifolder.ru/7018861 вроде работает. Исходники прилагаются. Написано на Borland Builder'е, но скомпилено на Visual C++, ибо на 7 кб меньше.
Jordan
Пользователь
Posts: 416

476228895
Re: Парсер scripts.lst
« Reply #14 on: 19 June 2008, 20:44:44 »

Freeman

Скачал посмотрел работает. Спасибо, а зачем он делает вот это

#ifdef WATCOM

#undef GVAR_PLAYER_REPUTATION
#undef GVAR_CHILDKILLER_REPUTATION
#undef GVAR_CHAMPION_REPUTATION
#undef GVAR_BERSERKER_REPUTATION
#undef GVAR_BAD_MONSTER
#undef GVAR_GOOD_MONSTER
И так далее со всеми гварами
#endif //WATCOM

Воспрянет Россия, из праха отцов
Расправятся крылья, миллионов сердец
Поднимут все головы и грудью вздохнут
И громка скажут, что пришли
Мы пришли, со столетней войны
Pages: [1] 2 |   Go Up