|
|
|
Канал X2: The Threat: «Внешний редактор скриптов - пока только режим чтения :)» |
|
Бум или не бум? |
Да :super: |
|
77% |
[ 80 ] |
Нет :( |
|
2% |
[ 3 ] |
Пох... |
|
19% |
[ 20 ] |
|
Всего проголосовало : 103 |
|
|
|
CooL_SnipeR
615 EGP
   Рейтинг канала: 1(2) Репутация: 214 Сообщения: 4050 Заблокирован Откуда: Ясный-Москва Зарегистрирован: 19.03.2004
 |
|
akm : |
А так Grey Wolf все верно сказал. Обеими руками за Еще хотелось бы чтобы сам скрипт в редакторе выглядел как дерево, в котором циклы и проверки были бы в нодах и их содержимое можно было бы сворачивать. А от команд end вовсе избавиться. Жмем клавиши Ctrl + <- или Ctrl + -> и подсвеченная строка/нод смещаются на 1 уровень. Вот
|
Хммм сделать вроде несложно, но как быть с подсветкой синтаксиса, ведь TreeView не имеет возможности менять параметры шрифта для отдельных нодов Есть мысли или подсветка пох?
У меня пока идет просто текст с табуляцией для разных уровней, фактически сам текст в RTF (RichTextBox) - тут и с подсветкой проблем нет, насчет скрытия кода нужно подумать, пока не сообразил толком, как делать отступ недоступный для редактирования и иметь возможность вставлять туда что-то (пока только отслеживанием положения курсора (SelectionStart) и ограничения его движения первыми т символами в строке, но имхо это уже в RC
Насчет End - гы незнаю, незнаю, имхо удобней End чем выделение блока и табуляция(смена уровней)
_________________ Никогда не бывает так плохо, после чего не может быть еще хуже... |
|
|
Romeo-must-die
271 EGP
   Репутация: 37 Сообщения: 1054 Откуда: не с Бетельгейзе Зарегистрирован: 04.01.2004
 |
|
Цитата: |
ведь TreeView не имеет возможности менять параметры шрифта для отдельных нодов Есть мысли или подсветка пох?
|
Заменить процедуру, которая рисует treeview
_________________ Смотри сквозь кретина |
|
|
CheckerTwo
550 EGP
     Рейтинг канала: 4(96) Репутация: 103 Сообщения: 412 Откуда: Tomsk Зарегистрирован: 18.08.2004
 |
|
Цитата: |
TreeView не имеет возможности менять параметры шрифта для отдельных нодов
|
Э-э, почему нельзя?
Можно попробовать в OnCustomDrawItem
with TreeView1.Canvas do begin
Font.Assign(...);
Brush.Color := BkgColor;
end;
Кажется даже в примере было. А вот - CustomDraw.
Посмотри, может подойдет.
Или ты про выделение кусков текста в одном ноде?
|
|
|
CooL_SnipeR
615 EGP
   Рейтинг канала: 1(2) Репутация: 214 Сообщения: 4050 Заблокирован Откуда: Ясный-Москва Зарегистрирован: 19.03.2004
 |
|
Опять накрылось время
Требуется
Кодер со знанием скриптов, желательно C# и .Net (что бы по мере возможности поучаствовал) - способный реализовать технически идеи, но способный дополнить их, т.е. не просто исполнитель .
Готов поделится мыслями по формированию команд операторов (маркировки If, skip, while и производных, описание типов и т.п.)
Кто готов подхватить флаг?
_________________ Никогда не бывает так плохо, после чего не может быть еще хуже... |
|
|
CheckerTwo
550 EGP
     Рейтинг канала: 4(96) Репутация: 103 Сообщения: 412 Откуда: Tomsk Зарегистрирован: 18.08.2004
 |
|
Цитата: |
желательно C# и .Net
|
О, извини, пропустил предпочтения языку...
В таком случае нужно перехватывать события NM_CUSTOMDRAW
которые возникают при перерисовке каждого итема.
И в момент, когда dwDrawStage будет равно CDDS_ITEMPREPAINT,
можно менять фонты и цвет у итема. Увы, давно не работаю
с С++ и напрямую с с винапи, мог и подзабыть изрядно. Но копать где-то здесь.
|
|
|
serg-314159
97 EGP
 Репутация: 6 Сообщения: 50
Зарегистрирован: 08.06.2004
 |
|
Начал долбаться с описателями statement's, в связи с чем несколько вопросов к АЛЛ.
1)В командах if/while(104) в обязательном порядке присутствует (обычно вторым элементом)
идентификатор в фомате:
Код: |
ZZYYYYXXh, где
XX - номер команды (440001:pgid=2007)
YYYY - индекс следующей команды в массиве команд
ZZ - ???? собственно, вопрос
|
Я наблюдал применение ZZ=A0h || ZZ=E0h, при чем
if/skipifnot/while = 0xA0
skipif/ifnot/whilenot = 0xE0
Вроде значения привязаны к операторам и не изменяются.
Что знает по этому поводу АЛЛ?
2) при разборе выражения типы элементов в нем заявляются как
Код: |
20002h - DATATYP_VAR (440001:pgid=2013)
20003h - DATATYP_CONST
00004h - DATATYP_INT
0000Fh - DATATYP_OP
|
НО: массив типов 440001:pgid=2013 заявляет типы в диапазоне [0,21]
Что тогда означает старший WORD типа?
3) Почти то же: при описании системных констант (440001:pgid=2002)
заявлен диапазон [0,11],[100,116]...[2075,2077]
Однако, константы в скрипте фигурируют в виде
Код: |
10000h - [THIS]
10004h - [HOMEBASE]
|
Соответственно, что означает старший WORD констант?
И вообще, имеет ли это значение?
_________________ mail-to: serg-314159@mail.ru |
|
|
CooL_SnipeR
615 EGP
   Рейтинг канала: 1(2) Репутация: 214 Сообщения: 4050 Заблокирован Откуда: Ясный-Москва Зарегистрирован: 19.03.2004
 |
|
2serg-314159
Все приставки в командах (If и пр..) и типах(var/.., const) служат для идентификации типа, к примеру у тебя разные типы подпадают под описатели (типа 131074 и 131075), к-е указывают, что аргумент команды состоит из какого-либо значения (константы 0х100ХХ или товары и пр., что бы путаницы не возникло
Цитата: |
ZZYYYYXXh, где
XX - номер команды (440001:pgid=2007)
YYYY - индекс следующей команды в массиве команд
ZZ - ???? собственно, вопрос
|
ZZ - указывает тип логической операции - через отрицание или прямое условие
YYYY - это не индекс следующей команды, а индек команды в кодэаррэй, куда перейдет выполнение команд в случае невыполнения условия!!!
_________________ Никогда не бывает так плохо, после чего не может быть еще хуже... |
|
|
serg-314159
97 EGP
 Репутация: 6 Сообщения: 50
Зарегистрирован: 08.06.2004
 |
|
Цитата: |
ZZ - указывает тип логической операции - через отрицание или прямое условие
|
skipifnot - это надо понимать отрицание отрицания?
Цитата: |
YYYY - это не индекс следующей команды, а индек команды в кодэаррэй, куда перейдет выполнение команд в случае невыполнения условия!!!
|
угу. мне надо было скзать не "команды" а "statement" - а то сам запутался. Действительно, в случае наличия else отрабатывает переход на первый statement в else.
Биг сенкс!
С константами - не понял. Ты хочешь сказать что
0x200xx - переменные
0x100xx - ???
0x000xx - числовые значения ?
_________________ mail-to: serg-314159@mail.ru |
|
|
CooL_SnipeR
615 EGP
   Рейтинг канала: 1(2) Репутация: 214 Сообщения: 4050 Заблокирован Откуда: Ясный-Москва Зарегистрирован: 19.03.2004
 |
|
serg-314159 : |
Цитата: |
ZZ - указывает тип логической операции - через отрицание или прямое условие
|
skipifnot - это надо понимать отрицание отрицания?
|
Зачем, отрицание у тебя ifnot, а skip означает что переход будет на команду через следующую и все, т.е. наличие end не нужно
Цитата: |
С константами - не понял. Ты хочешь сказать что
0x200xx - переменные
0x100xx - ???
0x000xx - числовые значения ?
|
Бррр что-то ты не то написал, я не пойму, если у тебя идет значение большее 0xffff то это говорит о том, что параметр состаит из 2, а не одного значений
причем 0x2002 - это числа, 0x2003 - это константы, у тех у которых есть минусовой бит, то это либо условия (есть в теле команд параметр retvar/if) либо товары или сектора и пр..., кодировку на вскидку не скажу, но я думаю мысль понял
_________________ Никогда не бывает так плохо, после чего не может быть еще хуже... |
|
|
serg-314159
97 EGP
 Репутация: 6 Сообщения: 50
Зарегистрирован: 08.06.2004
 |
|
Цитата: |
SERG>> skipifnot - это надо понимать отрицание отрицания?
Зачем, отрицание у тебя ifnot, а skip означает что переход будет
|
if = while = skipifnot = 0xA0
skipif = ifnot = whilenot = 0xE0
Цитата: |
если у тебя идет значение большее 0xffff то это говорит о том, что параметр состаит из 2, а не одного значений
|
Все приведенные параметры состоят из двух значений: описателя и значения/ссылки
под тип в резервируется 1 младший байт (WORD???), вопрос собственно, что представляет собой старший WORD
Код: |
440001: carray carray
pgid=2013 int [n] int [n+1]
----------------------------------------------
DATATYP_VAR 0x20002 <var index>
DATATYP_CONST 0x20003 <reserved constant>
DATATYP_INT 0x00004 <integer value>
DATATYP_OP 0x0000F <opearation code>
|
примеры (!move.returntohomebase):
Код: |
// 0002:skip if $homebase -> exists
<sval type="array" size="4">
<sval type="int" val="706" /> // command code pg2003:%1%0->exists
<sval type="int" val="131074" /> //0x20002 DATATYP_VAR
<sval type="int" val="0" /> //var[0]
<sval type="int" val="-536869881"/> //0xE0000407 skipif
</sval>
// 000B:$dockedat = [THIS] -> is docked
<sval type="array" size="4">
<sval type="int" val="745" />
<sval type="int" val="131075" /> //0x20003 DATATYP_CONST
<sval type="int" val="65536" /> //0x10000
<sval type="int" val="2" /> //var[2]=$dockedat
</sval>
// 0011:= [THIS] -> move around 60000 ms
<sval type="array" size="6">
<sval type="int" val="507" />
<sval type="int" val="131075" /> //0x20003 DATATYP_CONST
<sval type="int" val="65536" /> //0x10000
<sval type="int" val="-2147483647"/>//0x80000001 //noretvalue
<sval type="int" val="4" /> //DATATYP_INT
<sval type="int" val="60000" />
</sval>
// 000C:if $homebase == $dockedat
<sval type="array" size="13">
<sval type="int" val="104" /> // statement code pg2003:%0%1
<sval type="int" val="-1610609149"/>//0xA0000E03 if
///// список аргументов выражения
<sval type="int" val="3" />
<sval type="int" val="131074" /> //0x20002 DATATYP_VAR
<sval type="int" val="0" /> //var[0]=$homebase
<sval type="int" val="131074" /> //0x20002 DATATYP_VAR
<sval type="int" val="2" /> //var[2]=$dockedat
<sval type="int" val="15" /> // DATATYP_OP
<sval type="int" val="0" /> // ==
//////последовательность операций
<sval type="int" val="3" />
<sval type="int" val="-1" />
<sval type="int" val="0" />
<sval type="int" val="-2" />
</sval>
|
_________________ mail-to: serg-314159@mail.ru |
|
|
CooL_SnipeR
615 EGP
   Рейтинг канала: 1(2) Репутация: 214 Сообщения: 4050 Заблокирован Откуда: Ясный-Москва Зарегистрирован: 19.03.2004
 |
|
2serg-314159
Вот тебе еще хелп
Второй параметр в команде 104
<sval type="int" val="104" />
<sval type="int" val="-1610609149"/>
///// список аргументов выражения
<sval type="int" val="3" /> // это количество параметров перед указанием массива операторов - про сами массивы операторов в самом низу ты и так понял, он берет параметры и применяет к ним операцию по коду (верхний sval)
_________________ Никогда не бывает так плохо, после чего не может быть еще хуже... |
|
|
serg-314159
97 EGP
 Репутация: 6 Сообщения: 50
Зарегистрирован: 08.06.2004
 |
|
дык все-таки: что есть старший WORD?
можно ли брать типы данных из 440001:pgid=2013 (это значение 0-21) или нужно применять именно такие, как в скриптах?
_________________ mail-to: serg-314159@mail.ru |
|
|
CooL_SnipeR
615 EGP
   Рейтинг канала: 1(2) Репутация: 214 Сообщения: 4050 Заблокирован Откуда: Ясный-Москва Зарегистрирован: 19.03.2004
 |
|
Нужна парочка альфа тестеров - для проверки работоспостобности проекта
http://www.elite-games.ru/downloads/x2/x2%20-%20script%20writer%20alpha.zip (450 кб zip)
Исходники пока не прилагаю - т.к. многие части еще просто не переделаны, т.к. вначале я делал интерпретатор - однако возникли трудности - поэтому перевожу все на текстовый компилятор - с этим и связано наличия пока только режима открытия.
Компиляция пока в неудобоваримом виде - посему отключил - поэтому часть подсветки не работает или работает некорректно (т.к. ранее они были разделены), в том числе вставки строк и drag-n-drop - т.к. табуляция будет реализовано через свойства Indent.
Требуется - проверить коректность дерева команд и всех параметров <ParDef> - проверить открытие самописных скриптов (стандартные скрипты открываются все), правда без пары DATATYPE Поддержки переменных DATATYPE_SECTOR пока нет - планирую подцеплять файл с картами и также DATATYPE_ARRAY - поэтому скрипты содержащие их (вернее последний DATATYPE не будут открываться полностью)
Редактор открывает скрипты, анализируя секцию <codearrey> - в чем можно убедиться если убрать секцию <sourcetext>. Открывает signed скрипты - правда поддержки pck пока нет.
В всех ошибка просьба писать сюда с указание функции и желательно выслать мне скрипт на coolsniper@elite-games.ru, к-й не открывается (но внимательно!!! - пока не открываются скрипты с прямым объявлением массивов типа {1,2,3,4} - с обращением к елементам через [] и т.п. все работет
З.Ы. написано на C# и NET framework (поэтому у кого нет, нужно поставить помоему в SP2 под ХП он есть )
_________________ Никогда не бывает так плохо, после чего не может быть еще хуже... |
|
|
PLEIR
100 EGP
 Рейтинг канала: 1(2) Репутация: 15 Сообщения: 459 Откуда: Новосибирск Зарегистрирован: 01.11.2004
 |
|
Ошибка при инициализации приложения (0xc0000135) …..и прочие бла-бла-бла
Чегой то для правильной работы нужон монстроподобный NET framework?
Распакованная игра от НД 1.4
Вин ХР SP1
_________________ Нельзя служить свободе, создавая законы и запреты….... |
|
|
Kamizeka
370 EGP
  Репутация: 136 Сообщения: 1037 Откуда: Калуга - родина космонавтики Зарегистрирован: 14.06.2005
 |
|
в SP2 тоже нет по дефолту .NET'а. Нафиг было C#? Из-за XML только? TinyXML можно было взять или что-нить типа того...
_________________ Something's rotten in the state of Denmark. |
|
|
AlexYar
1916 EGP
               Рейтинг канала: 6(445) Репутация: 325 Сообщения: 32767
Зарегистрирован: 26.10.2003
 |
|
В менюхе "Browse for Folder" написано "Choose path to the directory "X2 - The Return"
У кого, интересно, он есть вообще?
Из того, что пока нашел -
1. Если идут подряд несколько закомментированных строк, то показывается только первая, а у остальных проставляется только "cmd comment". Скрипт самописный.
2. Программа выдаёт сообщение об "invalid hexadecimal parameter" при попытке загрузить самописный скрипт, в котором указан объект или параметр из раскрашенного файла русификации (с подсвеченными названиями разными цветами). Т.о. эти самописные скрипты не открыть.
3. Не понял, как стирать строчки, а так же не нашел, где задаются аргументы, версия и описание скрипта.
|
|
|
CooL_SnipeR
615 EGP
   Рейтинг канала: 1(2) Репутация: 214 Сообщения: 4050 Заблокирован Откуда: Ясный-Москва Зарегистрирован: 19.03.2004
 |
|
2AlexYar
Это все будет - частично работает
AlexYar : |
. Программа выдаёт сообщение об "invalid hexadecimal parameter" при попытке загрузить самописный скрипт, в котором указан объект или параметр из раскрашенного файла русификации (с подсвеченными названиями разными цветами). Т.о. эти самописные скрипты не открыть.
|
Вышли скриптик на мыло - с комментариями я уже тоже заметил
AlexYar : |
У кого, интересно, он есть вообще?
|
Первоначально планировалось брать ресы с Х2 - но для этого нужна распакованная версия, поэтому я все вытащил в папку data - если указать путь к Х2 - то при открытии скриптов будет автоматом брпться папка Х2/scripts
AlexYar : |
Не понял, как стирать строчки, а так же не нашел, где задаются аргументы, версия и описание скрипта
|
Это будет в ветке каждого скрипта - т.е. цепляться к скрипту - можно конечно сделать еще просто датагрид вызываемый кнопкой, там указывать аргументы и их типы
Строчки пока ен стираются - там стоит защита
PLEIR : |
Ошибка при инициализации приложения (0xc0000135) …..и прочие бла-бла-блаЧегой то для правильной работы нужон монстроподобный NET framework?
|
У тебя не стоит framework
el-kamikaze : |
Нафиг было C#? Из-за XML только?
|
Дело не c# - можно на нет писать и на с++ - вообще с формами и т.п. работать проще - можно сосредоточиться конкретно на реализации того, что нужно, а не того, чтоб еще отслеживать работоспособности формы
_________________ Никогда не бывает так плохо, после чего не может быть еще хуже... |
|
|
AlexYar
1916 EGP
               Рейтинг канала: 6(445) Репутация: 325 Сообщения: 32767
Зарегистрирован: 26.10.2003
 |
|
CooL_SnipeR : |
Вышли скриптик на мыло
|
Ушло.
CooL_SnipeR : |
Первоначально планировалось брать ресы с Х2
|
Я не про то При установки путей к конфигам в одной менюшке говорится- укажите путь к папке с игрой "X2-The Threat", а в другой -к "X2-The Return". Похоже на описку либо специальный прикол
|
|
|
CooL_SnipeR
615 EGP
   Рейтинг канала: 1(2) Репутация: 214 Сообщения: 4050 Заблокирован Откуда: Ясный-Москва Зарегистрирован: 19.03.2004
 |
|
AlexYar : |
Похоже на описку либо специальный прикол
|
Упссс - очепятка гыгы - о чем думали, о том и делали - подправлю - скриптик сегодня отдебагрю - благо в студии NET средства огого
_________________ Никогда не бывает так плохо, после чего не может быть еще хуже... |
|
|
Пассажир
|
|
Цитата: |
У тебя не стоит framework
|
А без него никак?
|
|
|
|
|
|
Канал X2: The Threat: «Внешний редактор скриптов - пока только режим чтения :)» |
|