Jordan
Пользователь
Posts: 416
|
|
Парсер scripts.lst
« on: 22 May 2008, 21:31:29 » |
|
Не знаю, что тебе ответит 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
|
|
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 » |
|
Пришлось правда подправить одну строчку Заначит, ты где-то напортачил с синтаксисом. можешь сделать такойже парсер но для 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 » |
|
парсер, который будет автоматически генерировать scripts.h на основании scripts.lst Что здесь непонятного?
|
|
|
|
Fakels
Пользователь
Posts: 337
Модный геймер
|
|
Re: Парсер scripts.lst
« Reply #6 on: 15 June 2008, 19:45:56 » |
|
парсер, который будет автоматически генерировать 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 » |
|
извениете за тупые вопросы, просто не лень самому выяснять. Ну извини, приятель, с такими понятиями тебе не сюда. Посмотри scripts.lst и scripts.h и все вопросы отпадут сами собой.
|
|
|
|
Freeman
Пользователь
Posts: 50
|
|
Re: Парсер scripts.lst
« Reply #8 on: 17 June 2008, 15:29:43 » |
|
парсер но для vault13.gam? Я могу написать, если не хочешь ждать пока Alchemist напишет. Только я не разбираюсь в скриптах. Какой формат у файла, который должен получаться на выходе?
|
|
|
|
Alchemist
Пользователь
Posts: 117
Ортодоксальный Сектант
|
|
Re: Парсер scripts.lst
« Reply #9 on: 17 June 2008, 16:39:23 » |
|
Какой формат у файла, который должен получаться на выходе? Такой: #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
|
|
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
|
|
Re: Парсер scripts.lst
« Reply #12 on: 17 June 2008, 21:46:33 » |
|
Freeman У меня возник вопрос. У 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
|
|
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
|
Воспрянет Россия, из праха отцов Расправятся крылья, миллионов сердец Поднимут все головы и грудью вздохнут И громка скажут, что пришли Мы пришли, со столетней войны
|
|
|
|