|
|
|
Канал X3: Terran Conflict »
Модовый и скриптовый отсек X3: Terran Conflict: «[ДИСКУС]: Скриптописание. Проблемы и их решение.» |
|
|
za4ot 481 EGP
Рейтинг канала: 5(187) Репутация: 15 Сообщения: 3283 Откуда: Яма Изобилия Зарегистрирован: 08.08.2012 |
|
Можно ли скриптами без MD создать всплывающее окошко Да/Нет с вопросом и соответственно чтоб выдавало True/False?
_________________ Пираты - наше всё! |
|
|
DNA78 423 EGP
Рейтинг канала: 9(1060) Репутация: 71 Сообщения: 1230 Откуда: Кыргызстан Зарегистрирован: 12.11.2008 |
|
za4ot : |
Можно ли скриптами без MD создать всплывающее окошко Да/Нет с вопросом и соответственно чтоб выдавало True/False?
|
Конечно, это можно сделать ещё со времён X3 Reunion.
_________________ Очевидное-невероятное |
|
|
za4ot 481 EGP
Рейтинг канала: 5(187) Репутация: 15 Сообщения: 3283 Откуда: Яма Изобилия Зарегистрирован: 08.08.2012 |
|
Блин, а как? Хочу чтоб при стыковке корабля к станции всплывало окошко и спрашивало отдать корабль или нет? В принципе заминка только с этим окошком.
_________________ Пираты - наше всё!
Последний раз редактировалось: za4ot (15:31 04-11-2018), всего редактировалось 1 раз |
|
|
DNA78 423 EGP
Рейтинг канала: 9(1060) Репутация: 71 Сообщения: 1230 Откуда: Кыргызстан Зарегистрирован: 12.11.2008 |
|
za4ot : |
В принципе заминка только с этим окошком.
|
Код: |
send incoming question <Var/String> to player: callback=<Script Name> |
- эта команда имеется ещё со времён X3 Reunion
Код: |
<RetVar/IF> open custom menu: title=<Var/String> description=<Var/String> option array=<Var/Array> |
- а эта добавлена в X3 Terran Conflict
___________________
а можно и просто вот так
Код: |
<RetVar/IF><RefObj> get user input: type=<Script Reference Type>, title=<Var/String> |
_________________ Очевидное-невероятное |
|
|
za4ot 481 EGP
Рейтинг канала: 5(187) Репутация: 15 Сообщения: 3283 Откуда: Яма Изобилия Зарегистрирован: 08.08.2012 |
|
Посмотрел команды, попробовал так и этак - не нравиться, не то. Думаю прикручу просто хоткей и скрипт, который сам отдаст нужный корабль в нужном месте, и будет мне счастье.
_________________ Пираты - наше всё! |
|
|
za4ot 481 EGP
Рейтинг канала: 5(187) Репутация: 15 Сообщения: 3283 Откуда: Яма Изобилия Зарегистрирован: 08.08.2012 |
|
Переписал с нуля свою сюжетку и вот там использовал такой финт:
$array1=ищем корабли на станции
$array2=ищем корабли в радиусе 5 км от станции
$array->array alloc size=0
append to $array value $array1
append to $array value $array2
вот думаю прокатит такая конструкция объединения двух массивов в один или придется переписать.
Еще попутно написал скрипт тумана войны. Каждый игровой день скрипт проверяет наличие в секторах кораблей или станций игрока и если их нет, то помечает сектор как неизвестный (с карты он естественно исчезает).
+++
Дополнительный стимул размещения спутников, орбитальных платформ и патрулей. Так-то я играл вообще без спутников и патрулей, а это целый кусок геймплея выпадает. Стимул исследовать вселенную и наращивать свое присутствие во всех секторах. А то я после запуска скрипта обнаружил, что играю всего в пяти секторах из 231.
---
Секторные и прочие торговцы без спутниковой сети никуда не полетят. У меня было трое, после запуска скрипта завершили сделки и сели на станциях намертво, ибо не видят куда лететь.
Ну как бы логичное обоснование происходящему, что вселенная огромная и динамичная, и данные, собранные хз когда протухают и не соответствуют действительности, а значит должны быть удалены с бортового компьютера.
_________________ Пираты - наше всё!
Последний раз редактировалось: za4ot (00:17 10-12-2018), всего редактировалось 1 раз |
|
|
Petrovytsh 62 EGP Репутация: 4 Сообщения: 62
Зарегистрирован: 05.02.2016 |
|
za4ot : |
Ну как бы логичное обоснование происходящему, что вселенная огромная и динамичная, и данные, собранные хз когда протухают и не соответствуют действительности, а значит должны быть удалены с бортового компьютера.
|
У меня один вопрос: зачем и нах..?
В смысле, кому может придти в голову удалять навигационную информацию, пусть даже она устарела? Ведь "хоть какая-то" информация лучше, чем никакой. Ради "тумана войны"? Так он и так присутствует - есть спктники/корабли - все видно. Нет спутников/кораблей - есть только устаревшие данные о навигационной информации, типа врат, крупных астероидов, неподвижных станций.
Да и вообще:
za4ot : |
Секторные и прочие торговцы без спутниковой сети никуда не полетят.
|
Этого уже достаточно для того, чтобы стараться эту сеть расширять.
|
|
|
za4ot 481 EGP
Рейтинг канала: 5(187) Репутация: 15 Сообщения: 3283 Откуда: Яма Изобилия Зарегистрирован: 08.08.2012 |
|
Petrovytsh : |
Этого уже достаточно для того, чтобы стараться эту сеть расширять.
|
Когда сектора открыты они летят и без спутников, в том-то и суть хочешь, чтоб торговцы работали, держи в секторе спутник.
Petrovytsh : |
У меня один вопрос: зачем и нах..?
|
Еще одна причина, что при наличии прыг двигателя и скрипта прыжок в док выполнение миссий по доставке слишком читерное получается. А с туманом войны сильно не попрыгаешь по крайней мере сначала нужно будет прыгнуть в сектор, а потом в док, а не сразу в док.
Ну как бы скрипт был написан между делом, просто идея показалась интересной, но все равно спасибо за мнение. Хотя мне кажется, что он мог бы привнести в игру некоторое разнообразие. В принципе пока с ним не поиграешь трудно сказать в какую сторону он изменит геймплей в лучшую или худшую.
_________________ Пираты - наше всё! |
|
|
za4ot 481 EGP
Рейтинг канала: 5(187) Репутация: 15 Сообщения: 3283 Откуда: Яма Изобилия Зарегистрирован: 08.08.2012 |
|
Что за на...! Неделю назад переписал сюжетку. Зашел на следующий день а там ничего из написанного нет. Думал по запарке забыл сохранить скрипт. Вчера переписал всё заново, в процессе сохранял скрипт раза четыре точно, сегодня зашел, а там опять ничего. Как такое может вообще быть? Другие скрипты пишу же всё сохраняет вроде. Опять заново всё писать
_________________ Пираты - наше всё!
Последний раз редактировалось: za4ot (20:01 10-12-2018), всего редактировалось 1 раз |
|
|
Petrovytsh 62 EGP Репутация: 4 Сообщения: 62
Зарегистрирован: 05.02.2016 |
|
Ты где такое взял? Прыжок только и исключительно на ворота и/или на прыжковый маяк. А вот возможность строить прыжковые маяки на своей верфи (штаб квартире) очень не хватает (хотя и решается простеньким MD скриптиком).
|
|
|
VNZ 65 EGP Рейтинг канала: 1(6) Репутация: 2 Сообщения: 79 Откуда: Ukraine Зарегистрирован: 04.11.2015 |
|
Petrovytsh : |
прыжок в док
|
|
|
|
za4ot 481 EGP
Рейтинг канала: 5(187) Репутация: 15 Сообщения: 3283 Откуда: Яма Изобилия Зарегистрирован: 08.08.2012 |
|
Petrovytsh : |
Ты где такое взял?
|
Мы так-то в модовом отсеке, а тут и не такие диковины найти можно.
_________________ Пираты - наше всё! |
|
|
Petrovytsh 62 EGP Репутация: 4 Сообщения: 62
Зарегистрирован: 05.02.2016 |
|
za4ot : |
тут и не такие диковины найти можно.
|
Лишь бы лорно и в балансе. А ставить мод, чтобы потом компенсировать другим модом его имбанутость... ну я хз )))
|
|
|
za4ot 481 EGP
Рейтинг канала: 5(187) Репутация: 15 Сообщения: 3283 Откуда: Яма Изобилия Зарегистрирован: 08.08.2012 |
|
Только что в очередной раз переписал сюжетку, сохранялся четыре раза, в редакторе после каждого сохранения делал копию скрипта, вышел из игры ни изменений в исходном файле, ни копий нет. В редакторе есть какое-то ограничение на количество строк? У меня где-то под 300 было. Или может это у мну файл на диске подпорчен и нужно проверку диска сделать? Блин уже три вечера убиваю чтоб эти 300 строк набрать и всё зря. Можно с нуля переписать, но в исходном файле уже строк 100 набрано, не хотелось бы их заново набирать. Вообще не понимаю в чем может быть дело?
добавлено спустя 5 минут:
Может есть ограничение на длину имени переменных - умну есть довольно длинные? ХЗ короче.
_________________ Пираты - наше всё!
Последний раз редактировалось: za4ot (00:03 12-12-2018), всего редактировалось 2 раз(а) |
|
|
DNA78 423 EGP
Рейтинг канала: 9(1060) Репутация: 71 Сообщения: 1230 Откуда: Кыргызстан Зарегистрирован: 12.11.2008 |
|
za4ot : |
Переписал с нуля свою сюжетку и вот там использовал такой финт:
$array1=ищем корабли на станции
$array2=ищем корабли в радиусе 5 км от станции
$array->array alloc size=0
append to $array value $array1
append to $array value $array2
вот думаю прокатит такая конструкция объединения двух массивов в один
|
Нет не прокатит, на выходе получишь массив состоящий из двух массивов.
Вообще здесь можно много на фантазировать вариантов слития двух массивов и вот некоторые из них:
Вариант 1. продолжение твоего кода и создание нового массива (кликните здесь для просмотра)
Код: |
$array1=ищем корабли на станции
skip if is datatype[$array1] == [DATATYPE_ARRAY]
$array1 = array alloc: size=0
$array2=ищем корабли в радиусе 5 км от станции
skip if is datatype[$array2] == [DATATYPE_ARRAY]
$array2 = array alloc: size=0
$array = array alloc: size=0
$array.temp = array alloc: size=0
append $array1 to array $array.temp
append $array2 to array $array.temp
$size.array.temp = size of array $array.temp
while $size.array.temp
dec $size.array.temp
$item = $array.temp [$size.array.temp]
$size = size of array $item
do if $size == 0
continue
while $size
dec $size
$obj = $item [$size]
skip if find $obj in array: $array
append $obj to array $array
end
end
|
|
Вариант 2. добавление в существующий массив (кликните здесь для просмотра)
Код: |
$array=ищем корабли на станции
skip if is datatype[$array] == [DATATYPE_ARRAY]
$array = array alloc: size=0
$array.temp=ищем корабли в радиусе 5 км от станции
skip if is datatype[$array.temp] == [DATATYPE_ARRAY]
$array.temp = array alloc: size=0
$size = size of array $array.temp
if $size > 0
while $size
dec $size
$obj = $array.temp [$size]
skip if find $obj in array: $array
append $obj to array $array
end
end
|
|
Вариант 3. создание нового массива с использованием егосовтовской библиотеки !lib.array.join.pck которую можно взять в альбионе (кликните здесь для просмотра)
Код: |
$array=ищем корабли на станции
skip if is datatype[$array] == [DATATYPE_ARRAY]
$array = array alloc: size=0
$array.temp=ищем корабли в радиусе 5 км от станции
skip if is datatype[$array.temp] == [DATATYPE_ARRAY]
$array.temp = array alloc: size=0
$array = [THIS]-> call script '!lib.array.join' : a.arr1=$array a.arr2=$array.temp
|
|
Вариант 4. (кликните здесь для просмотра)
использование кода из !lib.array.join.pck
|
_________________ Очевидное-невероятное
Последний раз редактировалось: DNA78 (08:47 13-12-2018), всего редактировалось 1 раз |
|
|
za4ot 481 EGP
Рейтинг канала: 5(187) Репутация: 15 Сообщения: 3283 Откуда: Яма Изобилия Зарегистрирован: 08.08.2012 |
|
Свершилось. Наконец-то я нашел причину того, что скрипты не сохраняются. На скрине указал стрелкой.
https://drive.google.com/file/d/1mjGLECUXkOR1gJvCvkSbreu0XRMGsgmC/view?usp=sharing
Значение это выставляется через пункт "Выбрать станцию" и больше никак. Причем если финт прокатывает и скрипт сохраняется (были прецеденты на небольших скриптах), и даже работает как нужно сразу после написания, то гарантии что после перезапуска игры скрипт будет работать нет. Пытался записать станцию в переменную через Maintype - Subtype, get name, get class и прочие костыли - в лучшем случае команда поиска кораблей с такой переменной выдает ARRAY(), в худшем вешает игру еще на попытке записать станцию в переменную (это без таймаутов в циклах, с таймаутами скрипт просто не завершается).
Причем команда "найти корабль в секторе" нормально срабатывает при указании сектора Элизиум света и стандартным параметром refobj=Храм гонеров, выбираемом через "Выбрать тип станции". А вот команда "достать массив кораблей с объекта" при стандартном значении выдает ARRAY(), при выборе через "Выбрать станцию" работает, но недолго, пока не глюканет, через костыли ARRAY(). Короче, как я ни бился, а написать скрипт, который гарантировано доставал бы список пристыкованных кораблей к Храму гонеров так и не удалось. Глючная станция.
_________________ Пираты - наше всё!
Последний раз редактировалось: za4ot (22:41 15-12-2018), всего редактировалось 1 раз |
|
|
alexalsp 514 EGP
Рейтинг канала: 4(86) Репутация: 54 Сообщения: 4371
Зарегистрирован: 12.08.2014 |
|
Объясните кто то , как правильно в Х3 переносить текст со скриптов в текстовик и что бы текст отображался после переноса. А то ссылки не понятные везде, а поиск не работает по сайту, может кто расскажет или ссылку даст на почитать.
Пробовал подсмотреть по скриптам но что то у меня не срослось.
_________________ CMDR: Fallout(EG)
ED - если застряли: https://discord.gg/w56kPWH |
|
|
za4ot 481 EGP
Рейтинг канала: 5(187) Репутация: 15 Сообщения: 3283 Откуда: Яма Изобилия Зарегистрирован: 08.08.2012 |
|
Изучаем раздел про текстовые файлы.
ScE.zip |
Описание: |
Справочник Chem-а по скриптам. |
|
Имя файла: |
ScE.zip |
Размер файла: |
2.61 MB |
Скачано: |
227 раз(а) |
_________________ Пираты - наше всё! |
|
|
DNA78 423 EGP
Рейтинг канала: 9(1060) Репутация: 71 Сообщения: 1230 Откуда: Кыргызстан Зарегистрирован: 12.11.2008 |
|
alexalsp : |
Объясните кто то , как правильно в Х3 переносить текст со скриптов в текстовик и что бы текст отображался после переноса.
|
Если честно, то я не понял суть вопроса. Что нужно конкретно сделать?
_________________ Очевидное-невероятное |
|
|
alexalsp 514 EGP
Рейтинг канала: 4(86) Репутация: 54 Сообщения: 4371
Зарегистрирован: 12.08.2014 |
|
Конкретно взять со скрипта текст и кинуть в текстовик , как у тебя в литкубе.
Создал текстовик 10000-L007.xml (может в Х3 число имеет значение в отличие от ребеза и Х4)
В него накидал текста. при загрузке текст нет только идентификаторы.
Нужно ли вообще языковые файлы как то подключать или игра сама его подхватывает?
нужно ли в скрипте что либо прописывать что бы текст для конкретного скрипта брался из 10000 page id 1-2-3-4-5-6-7-8-9-10 к примеру.
Имеет ли значение $txt,$txt1,$txt2 или можно указать даже
Код: |
$txt = read text: page=8007 id=6
append $txt to array $Values.WareGroup
$arg = read text: page=8007 id=7
$arg1 = read text: page=8007 id=8
$arg2 = read text: page=8007 id=9
$arg3 = read text: page=8007 id=10
$arg4 = read text: page=8007 id=11
$arg5 = read text: page=8007 id=12
$arg6 = read text: page=8007 id=13
$arg7 = read text: page=8007 id=14
$arg8 = read text: page=8007 id=15
$Values.WareGroupDisplay = create new array, arguments= $arg, $arg1, $arg2, $arg3, $arg4, $arg5, $arg6, $arg7, $arg8 |
таким макаром главное правильно страницу с идентификатором указать
Код: |
$miska = read text: page=8007 id=6
append $miska to array $Values.WareGroup
$lenka = read text: page=8007 id=7
$maska = read text: page=8007 id=8
$vitek = read text: page=8007 id=9
$kofe = read text: page=8007 id=10
$ptichka = read text: page=8007 id=11
$trubadely = read text: page=8007 id=12
$trubadely1 = read text: page=8007 id=13
$trubadely2 = read text: page=8007 id=14
$trubadely3 = read text: page=8007 id=15
$Values.WareGroupDisplay = create new array, arguments= $lenka, $maska, $vitek, $kofe, $ptichka, $trubadely, $trubadely, $trubadely2, $trubadely3
|
Текстовик подключал setup.LUADDMODPACK.gametext.xml
Код: |
$page.id = 1
load text: id=10000
return null
|
И вообще как лучше текст внутрях скрипта , если один язык или же в текстовики перекидывать ?
добавлено спустя 24 секунды:
za4ot : |
Изучаем раздел про текстовые файлы.
|
Спасибо посмотрю.
Корче
Есть один новый текстовый файл , скажем 10000
В нем Page id для каждого скрипта откуда берется текст
скрипт 1 = page id 1
скрипт 2 = page id 2
скрипт 3 = page id 3
скрипт 4 = page id 4
как это все оформить?
_________________ CMDR: Fallout(EG)
ED - если застряли: https://discord.gg/w56kPWH
Последний раз редактировалось: alexalsp (21:22 13-02-2020), всего редактировалось 4 раз(а) |
|
|
|
|
|
Канал X3: Terran Conflict ->
Модовый и скриптовый отсек X3: Terran Conflict: «[ДИСКУС]: Скриптописание. Проблемы и их решение.» |
|