|
|
|
Канал X3: Reunion »
Модовый и скриптовый отсек X3: Reunion: «X3 - External Script Editor» |
|
|
Jaa_CooL
320 EGP
    Репутация: 116 Сообщения: 528 Заблокирован Откуда: Moscow Зарегистрирован: 13.04.2006
 |
|
X3 – External Script Editor, версия 0.9.7.3 beta, в разработке Pre-Release Candidate 1 v.0.9.8.1
Внешний редактор скриптов, основанный на компиляции текста скриптов, без непосредственной работы с объектами.
///////////////////////////////////////////////////////////////////////////////////////////////////////////
Перед работой со скриптами необходимо в Options установить путь к директории с установленной X3:Reunion
Работа с Х3 до версии 1.3 включительно, функционально и с 1.4.0.3, но без новых команд.
Для работы требуется установленный .NET framework 2.0 или выше.
Дополнительный софт и библиотеки
.NET framework 2.0 (22,3MB)
Для установки .NET FW 2.0 необходим Windows Installer не ниже 3.0
Windows Installer 3.1 x86 (для 32-битных)(2,5MB)
требует подтверждения лицензионности ОС, за лекарством в приват
Download
Скачать можно тут (520кб)
Содержит ресурсы +
Defines.dll версии 0.9.7.3
Dialogs.dll версии 0.9.7.0
Script.dll версии 0.9.7.3
X3 - External Script Editor.exe версии 0.9.7.3
Обновления и фиксы
C v.0.9.7.0 до 0.9.7.3 (54кб)
Включает X3 - External Script Editor.exe, Defines.dll и Script.dll версий 0.9.7.3, dll-ки необходимо записать в директорию Bin
Pre-Release Candidate 1 (v.0.9.8.1) (105кб)
Defines.dll версии 0.9.8.1
Dialogs.dll версии 0.9.8.0
Script.dll версии 0.9.8.1
X3 - External Script Editor.exe версии 0.9.8.1
///////////////////////////////////////////////////////////////////////////////////////////////////////////
Доступно:
• открытие скриптов Х2/Х3 в формате xml и pck, а также txt(в разработке).
• компиляция текста и сохранение скомпилированных скриптов в форматы xml и pck, сохранение скриптов с ошибками возможно только в формате txt (в разработке).
Работа с текстом скрипта:
• поддержка intellisense для работы с вводом команд и параметров (в стадии разработки и тестирования – возможны глюки в работе).
• smart compiling «на лету» и динамический hilightning + error underlining для подсветки синтаксиса и ошибок
• smart indent – автоматическое форматирование отступов при вводе текста, а также при закрытии циклов и условий (по завершению ввода end)
• поддержка Undo/Redo
Работа с Intellisens:
• срабатывает автоматически при вводе текста(даже когда не нужно ) и позиционирует список
• ручной вызов, а также автозавершение (если имеется однозначное соответствие) ввода через стандартное сочетание <ctrl>+<space> или <r.alt>+<right arrow>
• ввод команд доступен только для пустой строки через ручной вызов intellisense листа и последующего набора текста, при простом вводе символов команда распознается как <RetVar/IF><Expression> и будет вызывать список для параметра типа <RetVar/IF>
Примечание: Intellisens пока непроработан – списки товаров/апгрейдов требуют уточнения, как и сама работа списка, пока он просто делался подобно MS VS – только команды подцеплены как объекты, остальные типы просто строки. И вообще глючит по-черному и пока не очень умный, всмысле не совсем intelli
В разработке:
• окно ошибок и подсветка ошибок после rebuild
• версионность движка и соответственно применимость команд.
• компиляция в формат Х2
• печать скрипта
• лист Intellisense – прорисовка и т.д., в том числе более точное его открытие в нужных местах и прочие доработки
• Списки товаров, фабрик, лазеров, щитов и ракет – вывод большего количества информации в лист (требуются более точные данные после тестирования).
Скорость работы:
• компиляция – более 10 тыс. строк в секунду
• полная перекомпиляция (ребилд) – 300-700 строк в секунду в зависимости от сложности кода выражений, после ввода предсказаний до 10тыс.
Ограничения:
• Редактор предназначен пока в целом на работу с достаточно корректным вводом, т.к. пока не дописана более точная работа с системой префиксов/суффиксов параметров. Условные переходы и циклы реализованы через уровни индентинга, проверка пока отсутствует в связи с переработкой, будет прикручена в ближайшее время. Работает ~99.99% корректно, но проверен только на уровне типовых скриптов.
• Из-за синхронизации тела скрипта с текстом (smart compiling) возможна их рассинхронизация по различным причинам, хотя механизм достаточно отлажен. В случае рассинхронизации будет выдаваться предупреждение, необходимо сделать полный ребилд скрипта, иначе возможно «падение» редактора. Ребилд заново формирует массив с командами соответствующий тексту.
• Для реализации подсветки использован COM-интерфейс Text Object Model, в связи с этим уже на позднем этапе обнаружилась неприятная особенность – чем больше скрипт, тем сильнее тормозит ввод/скроллирование и т.д. – данные тормоза не связаны с самим компилятором (т.к. он анализирует только происходящие изменения с текстом), а с реализацией самого com-интерфейса В дальнейшем планирую убрать TOM и реализовать через Win32API напрямую
• Нет окна ошибок, и не работает подсветка после ребилда, в ближайшее время будет реализовано
x2script.rar |
Описание: |
http://www.elite-games.ru/conference/viewtopic.php?p=1497928#1497928 |
|
Имя файла: |
x2script.rar |
Размер файла: |
744 Байт |
Скачано: |
998 раз(а) |
_________________ CooL_SnipeR в отставке...
Мужик всегда добьётся того, что хочет женщина...
Последний раз редактировалось: Finist (12:47 13-01-2008), всего редактировалось 2 раз(а) Последний раз редактировалось: Executor (21:36 27-09-2006), всего редактировалось 1 раз Последний раз редактировалось: aftermath (21:20 20-09-2006), всего редактировалось 2 раз(а) Последний раз редактировалось: Jaa_CooL (13:34 19-09-2006), всего редактировалось 12 раз(а) |
|
|
AlexV
555 EGP
       Рейтинг канала: 7(561) Репутация: 182 Сообщения: 1157 Откуда: нискажу Зарегистрирован: 10.01.2006
 |
|
смотрю темку подчистили...
начнём опять мусорить (надеюсь по делу)
собственно баг-репорт:
1. Если в описании аргумента скрипта встречается запятая, то описание не принимается (рисуется восклицательный знак)
и любая попытка завести мышь в область аргументов наказывается выводом исключения
************** Exception Text **************
System.NullReferenceException: Object reference not set to an instance of an object.
2. при использовании интелисенса, после выбора переменной - съедается пробел и переменная прилепливается к выражению
3. сохранение ведёт себя более чем странно, пока совсем не вкурил логики его работы
то сохраняет, то нет...
и проблема, о которой ты ещё давно жалился с расширением файла если в имени есть точки присутствует... я вроде как проверял это дело, нормально работает диалог, если все требуемые свойства правильно поставить...
add свойство диалога SupportMultiDottedExtensions = true поставь в ScriptRaw.SaveAs
4. что-то не так в сохранённом файле, детально не разбирался, но если открывать его в IE - то стиль накладывается не корректно, отображается только загловок, тело скрипта отсутствует совсем.
5. ну не баг, а пожелание...
вместо запроса разрешения на выход было бы неплохо спрашивать сохранить или нет изменения...(типа да,нет,отмена), ес-но если они есть несохраненные.
что это за детский вопрос такой? много людей что-ли случайно в кнопку выхода промахиваются? бесит если честно...
Давай уж тогда по полной программе, ещё пару раз переспросим
_________________ а хуже всего приходится программистам из Microsoft. Им в случае чего и обругать-то некого |
|
|
AlexYar
1916 EGP
               Рейтинг канала: 13(2096) Репутация: 325 Сообщения: 32766
Зарегистрирован: 26.10.2003
 |
|
А можно как-нить редактор отвязать от требования фреймворка?
Ну там библиотеки нужные включить в него или еще что...
Просто фреймворк второй есть только у единиц, а качать его ради редактора вряд-ли кто станет (он поди еще и СП2 под ХР попросит?).
|
|
|
Jaa_CooL
320 EGP
    Репутация: 116 Сообщения: 528 Заблокирован Откуда: Moscow Зарегистрирован: 13.04.2006
 |
|
2AlexV
по пунктам
1) пофиксил, подправил regex pattern, и пофиксил тултип, затерялся Dispose() в одном месте, раньше он был динамический, потом сделал контролом в дизайнере форм, чтоб удобнее было
2) сейчас разбирусь, хотя я так и не понял, опиши конкретно команду , в выражениях желательно набрать хоть 1 символ, иначе интелли сенс открывается для последнего параметра или оператора в выражении и при вводе с интеллисенса заменяет его - нада будет что-то придумать
3) перед сохранением скрипт необходимо скомпилировать или ребилдить - при этом создаются копии команд с рабочего листа (который синхронизован с текстом) и раскидываются в виде Command Array (6) и листа информкоманд (8 вроде) (далее первичные листы) - т.е. все изменения в скрипт на сохранение без перекомпиляции или ребилда не вносятся! при обычном редактировании текста меняется только рабочий лист, а сохранение происходит из 2-х первичных листов
т.е. у меня 3 уровня компиляции
a) smart-compiling (проходит на лету, команды содержат метки и переменные в символьном виде, нет скрытых переходов, в условных переходах while/if/skip стоят пустышки) текст синхронизируется со скриптом, первичные листы не меняются!
б) Compiling - создает копию команд с рабочего листа, который синхронизован с текстом, разбивает их на пары первичных листов, формирует переходы и проставляет индексы меток и переменных, можно сохраняться из первичных листов
в) Rebuild - все тоже самое что компиляция, но команды берутся не из синхронизаванного рабочего листа, а напрямую компилируются из текста
С SupportMultiDottedExtensions пофиксил, там было false
4) Все правильно - у меня формируется только codearray - soursetext не делал в виду того, что это просто лишняя работа - т.к. в х3 он формирует его из codearray, а для работы он вообще не требуется! - мой редактор работает только с codearray!
5) для бэты многовато было - работу с модифицированностью и запросом на сохранение пока не делал
2AlexYar
Я его могу конвертнуть в Native сборку, т.е. на вызовах Win32Api, но работоспособность не гарантирую - не разу не пробывал, Native сборка вообще не требует .NET fw
З.Ы. щас сделаю release сборку и выложу измененные dll-ки
_________________ CooL_SnipeR в отставке...
Мужик всегда добьётся того, что хочет женщина... |
|
|
AlexV
555 EGP
       Рейтинг канала: 7(561) Репутация: 182 Сообщения: 1157 Откуда: нискажу Зарегистрирован: 10.01.2006
 |
|
AlexYar : |
а качать его ради редактора вряд-ли кто станет (он поди еще и СП2 под ХР попросит?)
|
Если редактор долижется и будет хорошо работать - то станут, потому что писать во внутреннем - издевательство над психикой
и ниче он не просит супер крутого, даж под 98SE работает...
под XP просит наличие WI 3.0, который мелкомягкие только с проверкой подлинности виндов дают скачать
наивные какие...
Jaa_CooL : |
5) для бэты многовато было Подмигивание. - работу с модифицированностью и запросом на сохранение пока не делал
|
а чего там делать-то? запомнил что открывал или последний раз сохранял да сравнивай с текущим содержимым, можно просто на уровне текста даже сделать...
Jaa_CooL : |
хотя я так и не понял, опиши конкретно команду
|
пишем IF пробел вылазит интелисенс... выбираема переменную и получаем в результате IFперменная без пробела.
ЗЫ
мыло кинь мне в личку своё, отправлю тебе скрипт, который абсолютно работоспособный, а редактор на нём валится
_________________ а хуже всего приходится программистам из Microsoft. Им в случае чего и обругать-то некого |
|
|
Jaa_CooL
320 EGP
    Репутация: 116 Сообщения: 528 Заблокирован Откуда: Moscow Зарегистрирован: 13.04.2006
 |
|
AlexV : |
ЗЫмыло кинь мне в личку своё, отправлю тебе скрипт, который абсолютно работоспособный, а редактор на нём валится
|
Глюки Х3 не предлагать
AlexV : |
под XP просит наличие WI 3.0, который мелкомягкие только с проверкой подлинности виндов дают скачать
|
Есть у меня - щас прицеплю ссылку, на фреймворк и мсай
AlexV : |
а чего там делать-то? запомнил что открывал или последний раз сохранял да сравнивай с текущим содержимым, можно просто на уровне текста даже сделать...
|
Ну на свете есть еще куча интересных дел например девушки - приделаю, куда денеться - у ричбокса есть проперти Modified и все просто сбрасывать на false при сохранении
З.Ы. С пробелом - вечером сделаю
_________________ CooL_SnipeR в отставке...
Мужик всегда добьётся того, что хочет женщина... |
|
|
AlexV
555 EGP
       Рейтинг канала: 7(561) Репутация: 182 Сообщения: 1157 Откуда: нискажу Зарегистрирован: 10.01.2006
 |
|
Jaa_CooL : |
например девушки
|
у настоящих пилотов должно быть так:
первым делом, первым делом - самолеты... (не помню точно из какого фильма) , дальше все наверно и так помнят...
а вообще не забудь добавить такую очень полезную функцию в редактор, как Replace. А то счас приходится через блокнот перебрасывать текст. Без неё очень тоскливо порой...
_________________ а хуже всего приходится программистам из Microsoft. Им в случае чего и обругать-то некого |
|
|
Jaa_CooL
320 EGP
    Репутация: 116 Сообщения: 528 Заблокирован Откуда: Moscow Зарегистрирован: 13.04.2006
 |
|
AlexV : |
Jaa_CooL : |
например девушки
|
у настоящих пилотов должно быть так:
первым делом, первым делом - самолеты... (не помню точно из какого фильма) , дальше все наверно и так помнят...
|
'''/// я немного опечатался, там в единственном числе
AlexV : |
а вообще не забудь добавить такую очень полезную функцию в редактор, как Replace. А то счас приходится через блокнот перебрасывать текст. Без неё очень тоскливо порой...
|
Все будет, и find тоже, только вот добраться бы - я сейчас еще параллельно 5 проектов пишу
_________________ CooL_SnipeR в отставке...
Мужик всегда добьётся того, что хочет женщина... |
|
|
ULiX
320 EGP
      Рейтинг канала: 7(691) Репутация: 146 Сообщения: 573 Откуда: Комсомольск на-Амуре Зарегистрирован: 12.07.2005
 |
|
Для сведения.
Заремированная команда:
467 *STARTspeak text: page=13 id=1274 priority=9
Вызвала глюк:
Код: |
Открываю скрипт, содержащий данную строку в EScE.
Компилирую ... ОК
Сохраняю в EScE ... ОК
Открываю в EScE ... OK
Открываю в ScE ... OK
Сохраняю в SCE ... OK
Открываю в EScE ... ERROR. Индекс в не диапозона.
Rebuild ... ERROR
|
Выявил, где ошибка, сравнивая код двух версий xml.
Там в одном месте размерность array была разлинчной. В одном случае 9 в другом 10. Потом поискал по контексту, на какую команду это приходится и нашёл, что это заремированая команда.
А в целом, скорость набора скрипта очень значительно увеличивается, это очень помогает в больших проектах.
_________________ Новое ещё не значит лучшее |
|
|
Jaa_CooL
320 EGP
    Репутация: 116 Сообщения: 528 Заблокирован Откуда: Moscow Зарегистрирован: 13.04.2006
 |
|
2ULiX
Проверю
З.Ы. Осталось реплэйс приделать и пока все - времени не хватает
_________________ CooL_SnipeR в отставке...
Мужик всегда добьётся того, что хочет женщина... |
|
|
Darth Revan
345 EGP
    Рейтинг канала: 4(54) Репутация: 42 Сообщения: 349 Откуда: Belarus Prime Зарегистрирован: 01.02.2006
 |
|
Новый файл command.xml с расширенными командами.
Новые строки добавлены в конец файла начиная с
<subroot id="900">
и заканчивая
</subroot>
|
|
|
ULiX
320 EGP
      Рейтинг канала: 7(691) Репутация: 146 Сообщения: 573 Откуда: Комсомольск на-Амуре Зарегистрирован: 12.07.2005
 |
|
До установки нового command.xml EScE не переваривал gosub и endsub.
Сейчас не поддерживает в командах "Модуль взлома защиты".
Код: |
if [PLAYERSHIP] -> get amount of ware System Override Software in cargo bay
|
Не может открыть скрипт следующего содержания:
Код: |
001 load text: id=1313
002
003 set global variable: name='Droid.A.AdvanceAI' value=1
004 set global variable: name='Droid.A.Economy' value=1
005 set global variable: name='Droid.A.Battle' value=1
006 set global variable: name='Droid.A.Hacker' value=1
007 set global variable: name='Droid.A.ShipRepair' value=1
008 set global variable: name='Droid.A.ARD' value=1
009 set global variable: name='Droid.A.License' value=1
010
011 if notget global variable: name='Droid.HotKeyMenu'
012 $namekey= read text: page=5013 id=200
013 $DroidKey= register hotkey $namekey to call script 'Droid.Menu.System'
014 set global variable: name='Droid.HotKeyMenu' value=$DroidKey
015 end
016 return null
|
Наверно из-за команды регистрации клавиши, так как при вводе в самом EScE названия вызываемого скрипта в данной команде, происходит ошибка. Однако можно игнорировать эту ошибку после каждого введённого символа и добиться нужного результата. Скрипт с этой командой будет откомпилирован и даже работает rebuild. Сохраняем, закрываем, а заного открыть уже не можем.
P.S. Сколько же пилотов работают над одним проектом?
_________________ Новое ещё не значит лучшее |
|
|
l0m
340 EGP
    Репутация: 87 Сообщения: 1062
Зарегистрирован: 18.03.2006
 |
|
ULiX : |
if notget global variable: name='Droid.HotKeyMenu'
|
это "notget" мне, например, не нравится. Думаю редактору тоже.
|
|
|
Jaa_CooL
320 EGP
    Репутация: 116 Сообщения: 528 Заблокирован Откуда: Moscow Зарегистрирован: 13.04.2006
 |
|
Посмотрю сегодня... к сожалению со временем проблемы..
ULiX : |
P.S. Сколько же пилотов работают над одним проектом?
|
Над редактором я работаю 1
2Darth Revan
Этого маловато в command.xml - нужны еще текстовые описания команды типа
Код: |
<t id="514">START %0 command %1 : arg1=%2, arg2=%3, arg3=%4, arg4=%5</t> |
По умолчанию лежат в 440001.xml, подключить любой другой можно будет, планирую в настройках
2ULiX
Для работы со строками используются двойные кавычки "пример строки", а не одинарные!
т.е. писать нада так
Код: |
if not get global variable: name= "Droid.HotKeyMenu" |
БАГ
Перед работой редактора в Options укажите путь к директории с установленной X3: Reunion!!! иначе будут глюки с работой подключаемых скриптов
_________________ CooL_SnipeR в отставке...
Мужик всегда добьётся того, что хочет женщина... |
|
|
ULiX
320 EGP
      Рейтинг канала: 7(691) Репутация: 146 Сообщения: 573 Откуда: Комсомольск на-Амуре Зарегистрирован: 12.07.2005
 |
|
to l0m
Я эту строчку копировал из самого xml при просмотре в IE
На самом деле там цветами выделяется :
011 if notget global variable: name='Droid.HotKeyMenu'
Так что всё должно нравится, текст не является командами. "if notget" - это "if not get". В самом EScE вводил эти слова отдельно.
Ну и двойные ковычки используются именно в EScE, одинарные отображаются в IE, я это тоже знаю. Суть в том, что скрипт данного содержания не открывается в EScE...
Проблемы с некоторыми закоментироваными командами так и не решены... Приходится чистить коментарии перед открытием в EScE. Ну ладно, это простительно.
_________________ Новое ещё не значит лучшее |
|
|
AlexYar
1916 EGP
               Рейтинг канала: 13(2096) Репутация: 325 Сообщения: 32766
Зарегистрирован: 26.10.2003
 |
|
Jaa_CooL : |
По умолчанию лежат в 440001.xml, подключить любой другой можно будет, планирую в настройках
|
Не нужно! Игра эти команды не воспринимает нигде кроме как в основном *0001.xml . Т.е. если новые команды засунуть в 70010.xml , то в игре они работать не будут.
Я в редактор кинул свой 440001 вместе с новым коммандосом - всё работает ок.
зыж А команды теперь все руками надо набивать?
Или можно как-то выбрать из списка как в редакторе игры? Или это потом будет?
Jaa_CooL : |
Перед работой со скриптами необходимо в Options установить путь к директории с установленной X3:Reunion
|
А что редактору нужно в папке с игрой? Сами скрипты или другие файлы?
Просто я никогда моддингом в папке с самой игрой не занимаюсь, чтобы че-нить не испортить ненароком. Можно редактору задать другую папку?
К примеру Temp (в которой есть подпапка scripts) ?
|
|
|
Jaa_CooL
320 EGP
    Репутация: 116 Сообщения: 528 Заблокирован Откуда: Moscow Зарегистрирован: 13.04.2006
 |
|
AlexYar : |
А что редактору нужно в папке с игрой? Сами скрипты или другие файлы?
|
Он в ней смотрит папку Scripts - иначе не будут показываться описание параметров с других скриптов... и почему-то вылетает
AlexYar : |
Или можно как-то выбрать из списка как в редакторе игры? Или это потом будет?
|
Нужно наличие их в xx0001.xml, а цепляются они оттуда, если указаны в command.xml с описанием типов параметров. А дальше они ничем не отличаются от базовых, все нужные имена для работы синтаксиса и интеллисенса формируются при загрузке редактора (статический лист из ScriptCommand, в самом скрипте используются ScriptCommandRaw и используется просто включение-делегирование имен через проперти get{} по id команды)
2ULiX
Пришли скрипт - мне так будет проще - у меня просто мало времени
_________________ CooL_SnipeR в отставке...
Мужик всегда добьётся того, что хочет женщина... |
|
|
Jaa_CooL
320 EGP
    Репутация: 116 Сообщения: 528 Заблокирован Откуда: Moscow Зарегистрирован: 13.04.2006
 |
|
Выкладываю PreRelease Candidate 1 - ссылка в первом посте.
Пофиксены глюки, в том числе с новыми скриптами кое-что, с комментами так и не разобрался - так и не понял в чем глюк, у меня все отрабатывает
Добавлено: диалог сохранения измененных скриптов, автоматическая перекомпиляция при сохранении (избавляюсь от пинков в мой огород ) + сохранение в формат txt ошибочных скриптов, правда загрузку доделать не успел
З.Ы. По техническо-личным причинам неделю писать ничего не смогу ... поэтому и Pre RC1
_________________ CooL_SnipeR в отставке...
Мужик всегда добьётся того, что хочет женщина... |
|
|
ULiX
320 EGP
      Рейтинг канала: 7(691) Репутация: 146 Сообщения: 573 Откуда: Комсомольск на-Амуре Зарегистрирован: 12.07.2005
 |
|
По просьбе трудящегося прикладываю рабочие скрипты, которые открываться не хотят.
А вообще работа нужная... Приходится выкручиваться иногда, но в целом работа ускоряется значительно.
setup.Droid.System.rar |
Описание: |
Скрипты не открывающийся в связи с присутствием регистрации горячей клавиши и с заремированой команддой |
|
Имя файла: |
setup.Droid.System.rar |
Размер файла: |
1.72 KB |
Скачано: |
691 раз(а) |
_________________ Новое ещё не значит лучшее |
|
|
Jaa_CooL
320 EGP
    Репутация: 116 Сообщения: 528 Заблокирован Откуда: Moscow Зарегистрирован: 13.04.2006
 |
|
Обновлен слегка PreRC1(архив обновлен) - недоглядел ошибку - вылетало в окошки при сохранении
2ULiX
Пасиб - пишу урывками, гляну - просто кодировка команд малость отличается в комментариях... наверно дело в префиксе START, там метка перехода непустая или еще что, недоглядел - у остальных if|while|skip они вроде обнуляются
_________________ CooL_SnipeR в отставке...
Мужик всегда добьётся того, что хочет женщина... |
|
|
|
|
|
Канал X3: Reunion ->
Модовый и скриптовый отсек X3: Reunion: «X3 - External Script Editor» |
|