Elite Games - Свобода среди звезд!
.
ВНИМАНИЕ!
Наша конференция посвящена космической тематике и компьютерным играм.
Политические вопросы и происходящие в мире события в данный момент на нашем сайте не обсуждаются!

  » X3 - External Script Editor | страница 14
Конференция предназначена для общения пилотов. Для удобства она разделена на каналы, каждый из которых посвящен определенной игре. Пожалуйста, открывайте темы только в соответствующих каналах и после того, как убедитесь, что данный вопрос не обсуждался ранее.

Поиск | Правила конференции | Фотоальбом | Регистрация | Список пилотов | Профиль | Войти и проверить личные сообщения | Вход

   Страница 14 из 20
На страницу: Пред.  1, 2, 3 ... 13, 14, 15 ... 18, 19, 20  След.    Перейти:   Все страницы
Поиск в этой теме:
Канал X3: Reunion » Модовый и скриптовый отсек X3: Reunion: «X3 - External Script Editor»
sergej4341
 460 EGP


Рейтинг канала: 5(139)
Репутация: 148
Сообщения: 1593
Откуда: Химки/Брест
Зарегистрирован: 16.01.2004
Lazy Cat :
и получаем проблему с распознаванием строки if not ....

в моем случае это было
skip if size of array $patrol.array
скрипт написаный во встроенном открывался во внешнем но не компилился
после редактирования строки в ExScE
$a = size of array $patrol.array
skip if $a
проблем не было
_________________
нажал клав. и затаил дыхание
    Добавлено: 08:21 14-04-2007   
Chem
 780 EGP


Скрипт-мастер
Рейтинг канала: 15(2610)
Репутация: 248
Сообщения: 4751
Откуда: Киев
Зарегистрирован: 08.01.2007
Добавлю еще багов Улыбка
Некорректно обрабатываются строки с символами "{" "}" "\" при считывании скрипта. Т.е. написать скрипт с ними проблем нет, открыть потом во встроенном - тоже.
А вот написать, сохранить, а потом попробовать открыть - хренушки.
На простых - они просто теряютсяю
Для примера вот такой скрипт прекрасно вводится
СкриптКод
Код:

$t1 = "{"
$t2 = "}"
$t3 = "\"
$t4 = "/"
* {}
return null

Код:

Code Array:
Array of 10 elements:
type=string; val=test_str
type=int; val=32
type=string; val=
type=int; val=0
type=int; val=0
Array of 3 elements:
type=string; val=t1
type=string; val=t2
type=string; val=t3
Array of 4 elements:
Array of 7 elements:
type=int; val=104
type=int; val=0
type=int; val=1
type=int; val=5
type=string; val={
type=int; val=1
type=int; val=-1
Array of 7 elements:
type=int; val=104
type=int; val=1
type=int; val=1
type=int; val=5
type=string; val=}
type=int; val=1
type=int; val=-1
Array of 7 elements:
type=int; val=104
type=int; val=2
type=int; val=1
type=int; val=5
type=string; val=\
type=int; val=1
type=int; val=-1
Array of 3 elements:
type=int; val=103
type=int; val=0
type=int; val=0
type=int; val=0
Array of 1 elements:
Array of 3 elements:
type=int; val=3
type=int; val=1
type=string; val={}
type=int; val=0

А после повторного открытия получаем:
СкриптКод
Код:

$t1 = ""
$t2 = ""
$t3 = ""
$t4 = "/"
*
return null

Код:

Code Array:
Array of 10 elements:
type=string; val=test_str
type=int; val=32
type=string; val=
type=int; val=0
type=int; val=0
Array of 4 elements:
type=string; val=t1
type=string; val=t2
type=string; val=t3
type=string; val=t4
Array of 5 elements:
Array of 7 elements:
type=int; val=104
type=int; val=0
type=int; val=1
type=int; val=5
type=string; val=
type=int; val=1
type=int; val=-1
Array of 7 elements:
type=int; val=104
type=int; val=1
type=int; val=1
type=int; val=5
type=string; val=
type=int; val=1
type=int; val=-1
Array of 7 elements:
type=int; val=104
type=int; val=2
type=int; val=1
type=int; val=5
type=string; val=
type=int; val=1
type=int; val=-1
Array of 7 elements:
type=int; val=104
type=int; val=3
type=int; val=1
type=int; val=5
type=string; val=/
type=int; val=1
type=int; val=-1
Array of 3 elements:
type=int; val=103
type=int; val=0
type=int; val=0
type=int; val=0
Array of 1 elements:
Array of 3 elements:
type=int; val=4
type=int; val=1
type=string; val=
type=int; val=0

На более сложных - получаю вот такую ошибку:


И еще в догонку - при установленном 3-м нете такой вот глючок


З.Ы. Нет сам приполз, через апдейт .
_________________
Умножим энтропию на 0 :-)
    Добавлено: 15:26 14-04-2007   
Chem
 780 EGP


Скрипт-мастер
Рейтинг канала: 15(2610)
Репутация: 248
Сообщения: 4751
Откуда: Киев
Зарегистрирован: 08.01.2007
sergej4341 :
Lazy Cat :
и получаем проблему с распознаванием строки if not ....

в моем случае это было
skip if size of array $patrol.array
скрипт написаный во встроенном открывался во внешнем но не компилился
после редактирования строки в ExScE
$a = size of array $patrol.array
skip if $a
проблем не было


Для исправления этой ошибки (неправильно определение типов переменных у команды) надо сделать следующее:
в каталоге Data
в файле command.xml
изменить
с
было :

<subroot id="103">
<command id="128">
<type id="15" />
<type id="10" />
</command>
<command id="129">
<type id="25" />
<type id="45" />
<type id="10" />
</command>
<command id="130">
<type id="45" />
<type id="10" />
<type id="9" />
</command>
<command id="131">
<type id="15" />
<type id="45" />
</command>

исправленная версия :

<subroot id="103">
<command id="128">
<type id="15" />
<type id="10" />
</command>
<command id="129">
<type id="25" />
<type id="45" />
<type id="10" />
</command>
<command id="130">
<type id="45" />
<type id="10" />
<type id="9" />
</command>
<command id="131">
<type id="25" />
<type id="45" />
</command>

З.Ы. надо свой справочник перешерстить, на соответствие типов параметров у команд. Если вдруг в справочнике нашли несоответствие - кричите, т.к. это исправит ошибку и во внешнем редакторе Улыбка

З.З.Ы. К модераторам - прошу прощение за два поста, но уже больно они длинные, если все-таки нельзя - объединю.
_________________
Умножим энтропию на 0 :-)
    Добавлено: 15:40 14-04-2007   
AlexV
 555 EGP


Гранёный
Рейтинг канала: 7(561)
Репутация: 182
Сообщения: 1157
Откуда: нискажу
Зарегистрирован: 10.01.2006
Chem :
И еще в догонку - при установленном 3-м нете такой вот глючок

если ты про съезжающие номера строк, то это скорее фишка Гы-гы
и связана она с включенными крупными шрифтами
или это у тебя на обычных такое? Ух ты!..
_________________
а хуже всего приходится программистам из Microsoft. Им в случае чего и обругать-то некого

Последний раз редактировалось: AlexV (03:24 15-04-2007), всего редактировалось 1 раз
    Добавлено: 03:21 15-04-2007   
Chem
 780 EGP


Скрипт-мастер
Рейтинг канала: 15(2610)
Репутация: 248
Сообщения: 4751
Откуда: Киев
Зарегистрирован: 08.01.2007
AlexV :
и связана она с включенными крупными шрифтами
или это у тебя на обычных такое? Ух ты!..

На обычных.
Я скорее на 3-й НЕТ грешу, т.к. с ним и прокрутка нормально не включается.
На 2000 и на 2-м нете - таких приколов нет


Upd.
глюк - (по-моему уже писали) -
в этой команде
<?> get index of <?> in array <?> offset=<?> \053 1
при считывании скрипта теряет символ "\" - потом говорит про ошибку, не подсвечивая ее.

Пожелание - добавить пробел перед запятой в списке параметров команд,
т.е. вместо
<?>sprintf: fmt=<?>, <?>, <?>, <?>, <?>, <?>
подставлять значение
<?>sprintf: fmt=<?> , <?> , <?> , <?> , <?> , <?>

Нужно для того чтобы нормально срабатывала автоподстановка при вводе переменных, т.к. "," мешает нормальной ее отработке, добавляю пробел перед ней - все ок.
_________________
Умножим энтропию на 0 :-)
    Добавлено: 15:10 16-04-2007   
Lazy Cat
 405 EGP


Рейтинг канала: 4(64)
Репутация: 145
Сообщения: 2148
Откуда: Украина, Тернополь
Зарегистрирован: 16.04.2004
Попытка набрать строку
Код:
if $var = $array[1]
приводит к вылету редактора.
_________________
Еж - птица гордая ...
А тут столько летающих eg-й %)
    Добавлено: 21:28 16-04-2007   
Chem
 780 EGP


Скрипт-мастер
Рейтинг канала: 15(2610)
Репутация: 248
Сообщения: 4751
Откуда: Киев
Зарегистрирован: 08.01.2007
Lazy Cat :
Попытка набрать строку
Код:
if $var = $array[1]
приводит к вылету редактора.

ага, и вообще все последние вылеты (хотя перехват исключений срабатывает прекрасно, и работа продолжается) связаны у меня были только с условными операторами.
_________________
Умножим энтропию на 0 :-)
    Добавлено: 22:26 16-04-2007   
ULiX
 320 EGP


Рейтинг канала: 7(691)
Репутация: 146
Сообщения: 573
Откуда: Комсомольск на-Амуре
Зарегистрирован: 12.07.2005
И снова я...
Как обычно с принципиальными ошибками. Улыбка
У меня талант их находить. За это меня и любят на своём рабочем месте. По роду занятий мне приходится писать программы для контролирования научных приборов. Причем пользователями этих программ являются рядовые студенты, поэтому программы должны быть максимально защищены от ошибок. Я обычно в описаниях к своим программам пишу, что в программе слабая защита от ошибок... хотя предусматриваю варианты на уровне "достаточном" для безпроблемного использования. Ладно... это было лирическое отступление. Теперь к проблеме.

После долгой паузы, я решил выкрасть время и снова приступить к скриптописанию. Всё бы хорошо, но через пол часа работы мои скрипты перестали компилироваться в eScE. Дабы не потерять уже сделанного, пришлось набрать проблемные моменты во встроенном редакторе... Заодно выяснил, в какой строчке проблема.

Вот снова некоректно обрабатываемая команда в eScE:

<RetVar> = get index of <Value> in array <Var/Array> offset=<Var/Number> + 1

Думаю, исправить будет не сложно.
А пока обошёл эту проблему алгоритмическим путём: циклический перебор элементов массива и нахождения нужной позиции.

Но проблема на лицо.

Кстати.
Предлагаю следующий вариант решения проблем появления последующих ошибок с неверной обработкой команд.

Создать один тестовый скрипт с набором всех существующих команд. Скрипт не обязан быть рабочим, но содержать все известные команды, и желательно со всеми возможными типами данных в своих параметрах. И каждый раз при модернизациях пытаться сделать Rebuild этого скрипта для выявления проблематичных моментов.

Получается так, что eScE сейчас настроен только на общеиспользуемые команды, а так как множество команд просто не используется скриптёрами, то и ошибки не всплывают, хотя и таятся в недрах программы.
_________________
Новое ещё не значит лучшее
    Добавлено: 08:09 18-04-2007   
ULiX
 320 EGP


Рейтинг канала: 7(691)
Репутация: 146
Сообщения: 573
Откуда: Комсомольск на-Амуре
Зарегистрирован: 12.07.2005
Lazy Cat :
Попытка набрать строку Код:
if $var = $array[1]
приводит к вылету редактора.

А ты попробуй сделать подобное во встроенном Гы-гы
Увы, приходится делать типо:

$TempVar = $array[1]
if $var == $TempVar

А то что ты предлагаешь содержит две ошибки:
1. В условных операторах не применим оператор присвоения "="
2. В ScE обработка массиво осуществляется только специальными командами, и нет возможности использовать элементы массива в качестве аргументов для других команд.

Ошибкой будет являться также и простая команда:
inc $array[1]

Другое дело, что eScE не предусматривает обработку подобных ошибок и налагает эту обязаность на скриптёра.

Вывод: пользоваться eScE должны скриптёры с хорошим опытом программирования во встроенносм ScE, дабы не забывать о специфики программирования в данной среде. eScE является средством, ускоряющим написание больших скриптов, предоставляющим удобные средства быстрого редактирования. eScE НЕ ЯВЛЯЕТСЯ средством создания новых возможностей командного процессора ScE, поэтому не будет коректно обрабатывать, по вашему мнению, более удобный код, который невозможно набрать во встроенном редакторе.
_________________
Новое ещё не значит лучшее
    Добавлено: 08:45 18-04-2007   
Chem
 780 EGP


Скрипт-мастер
Рейтинг канала: 15(2610)
Репутация: 248
Сообщения: 4751
Откуда: Киев
Зарегистрирован: 08.01.2007
ULiX :
<RetVar> = get index of <Value> in array <Var/Array> offset=<Var/Number> + 1

А выше посмотреть ?
Chem :
глюк - (по-моему уже писали) -
в этой команде
<?> get index of <?> in array <?> offset=<?> \053 1
при считывании скрипта теряет символ "\" - потом говорит про ошибку, не подсвечивая ее.

Записывать надо не так как у тебя, ты хотя бы попробуй через контрол- пробел подставить шаблон команды и сразу увидишь, что не так.
в EScE (последних версий) они имеет вид именно такой:
<?> get index of <?> in array <?> offset=<?> \053 1, т.е. вместо плюса - его код Улыбка, \053.
Но баг есть, и он в том, что символ "\" теряется при считывании из скрипта, пишем скрипт, там есть кучка
<?> get index of <?> in array <?> offset=<?> \053 1 - и все прекрасно открывается во встроенном, и все работает. Однако если потом этот скрипт загрузить в EScE - то он потеряет "\" и надо просто запустить замену глобальную " 053" на " \053" - и все хорошо.

ULiX :
Lazy Cat :
Попытка набрать строку Код:
if $var = $array[1]
приводит к вылету редактора.

А ты попробуй сделать подобное во встроенном Гы-гы
Увы, приходится делать типо:

$TempVar = $array[1]
if $var == $TempVar


Угу, потому (не в качестве саморекламы) - смотрите справочник команд (мой, его прародитель от Дракона, на форуме, во встроенном), там сразу видно тип возвращаемого значения, если там нет IF - то болт.
И вообще - массивы они конечно ввели, но удобства работы с ними пока мало Расстройство
_________________
Умножим энтропию на 0 :-)
    Добавлено: 09:52 18-04-2007   
Chem
 780 EGP


Скрипт-мастер
Рейтинг канала: 15(2610)
Репутация: 248
Сообщения: 4751
Откуда: Киев
Зарегистрирован: 08.01.2007
Дополнение, хотя не бал, но проблема.
Столкнулся с тем, что написав в EScE скрипт с проверкой типа данных
(is datatype), и он странно работал.
Столкнулся на конкретном типе, но решил проверить все.
Как проверял - сделал следующий скрипт во внешнем :
Код:

001   $a = DATATYP_ARRAY
002   $a = DATATYP_CONST
003   $a = DATATYP_DATATYP
004   $a = DATATYP_EXPR
005   $a = DATATYP_FLRET
006   $a = DATATYP_INT
007   $a = DATATYP_NULL
008   $a = DATATYP_OBJCLASS
009   $a = DATATYP_OBJCOMMAND
010   $a = DATATYP_OBJECT
011   $a = DATATYP_OP
012   $a = DATATYP_QUEST
013   $a = DATATYP_RACE
014   $a = DATATYP_RELATION
015   $a = DATATYP_SECTOR
016   $a = DATATYP_SHIP
017   $a = DATATYP_STATION
018   $a = DATATYP_STATIONSERIAL
019   $a = DATATYP_STRING
020   $a = DATATYP_TRANSPORTCLASS
021   $a = DATATYP_UNKNOWN
022   $a = DATATYP_VAR
023   $a = DATATYP_WARE
024   return null

Открыл, во встроенном (открывается вроде правильно и текст совпадает, т.е. из кодов в текст перевелся вроде нормально) - пересохранил - отличий нет.
Тогда заново во встроенном перевбил эти константы - сохранил - есть различия в коде, вот они:
diff :

--- esce_datatype.txt 2007-04-29 12:42:10.531250000 +0300
+++ int_datatype_rewr.txt 2007-04-29 12:48:22.250000000 +0300
@@ -45,7 +45,7 @@
4.
type=int; val=20
5.
- type=int; val=3
+ type=int; val=131075
6.
type=int; val=1
7.
@@ -173,7 +173,7 @@
4.
type=int; val=20
5.
- type=int; val=17
+ type=int; val=65553
6.
type=int; val=1
7.
@@ -253,7 +253,7 @@
4.
type=int; val=20
5.
- type=int; val=8
+ type=int; val=65544
6.
type=int; val=1
7.
@@ -269,7 +269,7 @@
4.
type=int; val=20
5.
- type=int; val=6
+ type=int; val=65542
6.
type=int; val=1
7.
@@ -285,7 +285,7 @@
4.
type=int; val=20
5.
- type=int; val=7
+ type=int; val=65543
6.
type=int; val=1
7.
@@ -365,7 +365,7 @@
4.
type=int; val=20
5.
- type=int; val=2
+ type=int; val=131074
6.
type=int; val=1
7.


Т.е. имеем следующие расхождения
Константазначение EScE (440001.xml)Значение во встроенном ScE
DATATYP_CONST3131075
DATATYP_OBJECT1765553
DATATYP_SECTOR865544
DATATYP_SHIP665542
DATATYP_STATION765543
DATATYP_DATATYP20131074
Остальные совпадают.
При этом наблюдаю странное , открытие файла из встроенного во внешнем, тоже дает правильный текст, т.е. значения констант из встроенного обрабатываются правильно, однако пересохранение приводит опять к ошибочному результату.
Шо делать ?
_________________
Умножим энтропию на 0 :-)
    Добавлено: 13:07 29-04-2007   
AlexV
 555 EGP


Гранёный
Рейтинг канала: 7(561)
Репутация: 182
Сообщения: 1157
Откуда: нискажу
Зарегистрирован: 10.01.2006
Chem :
Шо делать ?

терпеть... чуть-чуть осталось
к концу этой недели, надеюсь, что разгребусь на работе Совсем запутался...

в некоторых местах я замечал малопонятные битовые сдвиги ... в одном уже убрал, т.к. он давал неправильный код, сдесь похожая проблема
_________________
а хуже всего приходится программистам из Microsoft. Им в случае чего и обругать-то некого

Последний раз редактировалось: AlexV (04:27 30-04-2007), всего редактировалось 1 раз
    Добавлено: 04:25 30-04-2007   
Chem
 780 EGP


Скрипт-мастер
Рейтинг канала: 15(2610)
Репутация: 248
Сообщения: 4751
Откуда: Киев
Зарегистрирован: 08.01.2007
AlexV :
терпеть... чуть-чуть осталось
к концу этой недели, надеюсь, что разгребусь на работе

Ок, прекрасно понимаю ...
ДА и сейчас редактор - очень даже, я практически перестал пересохранять во встроенном Улыбка
_________________
Умножим энтропию на 0 :-)
    Добавлено: 01:21 01-05-2007   
sergej4341
 460 EGP


Рейтинг канала: 5(139)
Репутация: 148
Сообщения: 1593
Откуда: Химки/Брест
Зарегистрирован: 16.01.2004
вроде как глюк...
скрипт, правленный/переписаный в ExScE и сохраненный с ребилдом нормально открылся в ScE но вот закрываться отказался
причина в лишнем end который был незамечен ExScE
_________________
нажал клав. и затаил дыхание
    Добавлено: 15:49 01-05-2007   
Chem
 780 EGP


Скрипт-мастер
Рейтинг канала: 15(2610)
Репутация: 248
Сообщения: 4751
Откуда: Киев
Зарегистрирован: 08.01.2007
Хочу Улыбка
Опцию, при выборе которой каждое сохранение меняло версию скрипта.
И вообще - работу с софтом который сохраняет версии, типа cvs, или хотя бы, сохранение старой версии скрипта (при его пересохранении) с добавлением в имя предыдущей версии (совместно с автоверсией).

Вот!
_________________
Умножим энтропию на 0 :-)
    Добавлено: 18:13 02-05-2007   
sergej4341
 460 EGP


Рейтинг канала: 5(139)
Репутация: 148
Сообщения: 1593
Откуда: Химки/Брест
Зарегистрирован: 16.01.2004
скрипт написанный во встроенном редакторе содержит такую строку
[THIS] -> put into environment $temp ->
после загрузки и редактирования во внешний при попытке сохранения - ребилд файлед
и эта строка принимает вид
[THIS] -> put into environment$temp ->
после добавлении нужного пробела перед $temp все нормально ребилдится и сохраняется
_________________
нажал клав. и затаил дыхание
    Добавлено: 09:07 04-05-2007   
Chem
 780 EGP


Скрипт-мастер
Рейтинг канала: 15(2610)
Репутация: 248
Сообщения: 4751
Откуда: Киев
Зарегистрирован: 08.01.2007
Плюс еще баг нашел,
если начать писать конструкцию вида
$variable.kakay.to = , и так и оставить, то потом встроенный прекрасно открывает, компилирует, но потом игра на этой точке виснет.

З.Ы.
$variable.kakay.to без равно- тоже оставляет, но проверять дальше во встроенном поведение - не стал
_________________
Умножим энтропию на 0 :-)
    Добавлено: 00:59 05-05-2007   
AD
 





В eScE не работает унарная операция вычитания
Например:
$a = 5
$b = - $a

Переменной b присваивается значение null

В стандартном ScE все работает
    Добавлено: 11:15 07-05-2007   
Chem
 780 EGP


Скрипт-мастер
Рейтинг канала: 15(2610)
Репутация: 248
Сообщения: 4751
Откуда: Киев
Зарегистрирован: 08.01.2007
1. Алекс - как дела ?
2. Народ, тут вроде светились монстры программирования Улыбка
Есть просьба - сделать редактор для текстовых файлов (которые с текстовыми сообщениями для скриптов и т.п.)
Я пользовался блокнотом потом Microsoft Visual Web Developer 2005.
Девелопером удобнее, но и в нем нет проверки орфографии или я не нашел как подключить.
А надо простенькую фигню - читать хмл, не стремиться особо его разобрать, перенос строк при длинных строках (ну как в Ворде Улыбка ), и проверка орфографии!! потому что даже перенос текста в ворд и потом проверка - ну пропуски есть Расстройство, еще бы отдельную подсветку для комбинаций вида \033G по цветам Улыбка, подсветка [] ну и %s Улыбка
_________________
Умножим энтропию на 0 :-)
    Добавлено: 15:28 17-06-2007   
AlexV
 555 EGP


Гранёный
Рейтинг канала: 7(561)
Репутация: 182
Сообщения: 1157
Откуда: нискажу
Зарегистрирован: 10.01.2006
Chem :
1. Алекс - как дела ?

нормально, наконец-то в отпуске и начинаю дальше редактором заниматься Улыбка
Chem :
Есть просьба - сделать редактор для текстовых файлов (которые с текстовыми сообщениями для скриптов и т.п.)

посмотри PSPad тут
http://www.pspad.com/ru/ в нем есть всё, что ты перечислил Подмигиваю
_________________
а хуже всего приходится программистам из Microsoft. Им в случае чего и обругать-то некого

Последний раз редактировалось: AlexV (10:59 18-06-2007), всего редактировалось 1 раз
    Добавлено: 10:59 18-06-2007   
Канал X3: Reunion -> Модовый и скриптовый отсек X3: Reunion: «X3 - External Script Editor»
На страницу: Пред.  1, 2, 3 ... 13, 14, 15 ... 18, 19, 20  След.    Перейти:   Все страницы
  
Показать: 
Предыдущая тема | Следующая тема |
К списку каналов | Наверх страницы
Цитата не в тему: Дизайн теладийских кораблей - летающая супница (М2) и насадка для миксера (TL-TS). (резюмировал Deeplom)

  » X3 - External Script Editor | страница 14
Каналы: Новости | Elite | Elite: Dangerous | Freelancer | Star Citizen | X-Tension/X-BTF | X2: The Threat | X3: Reunion | X3: Terran Conflict | X Rebirth | X4: Foundations | EVE Online | Orbiter | Kerbal Space Program | Evochron | VoidExpanse | Космические Миры | Онлайновые игры | Другие игры | Цифровая дистрибуция | play.elite-games.ru | ЗВ 2: Гражданская война | Творчество | Железо | Игра Мечты | Сайт
   Дизайн Elite Games V5 beta.18