|
|
|
Канал X2: The Threat: «Скриптами делимся, скриптами» |
|
|
akm
470 EGP
    Рейтинг канала: 1(4) Репутация: 173 Сообщения: 1638 Откуда: Паразит Прайм Зарегистрирован: 23.10.2002
 |
|
Итак полный список новых команд в 1.4
General Commands
<RefObj> start task <Var/Number> with script <Script Name> and prio <Var/Number>: arg1=<Value> arg2=<Value> arg3=<Value> arg4=<Value>
<RefObj> interrupt task <Var/Number> with script <Script Name> and prio <Var/Number>: arg1=<Value> arg2=<Value> arg3=<Value> arg4=<Value>
al engine: register script= <Script Name>
al engine: unregister script= <Script Name>
al engine: set plugin <Var/String> description to <Var/String>
al engine: set plugin <Var/String> timer interval to <Var/Number> s
<RetVar> = get script version
<RetVar> = get script name
<RetVar/IF> is plot <Var/Number> state flag <Var/Number>
<RetVar> = get random name: race= <Var/Race>
<RetVar> = get Khaak aggression level
set Khaak aggression level to <Var/Number>
Audio Commands
<RetVar/IF/START> speak text: page= <Var/Number> id= <Var/Number> priority= <Var/Number>
Fly Commands
<RetVar/IF><RefObj> add big ship <Var/Ship>
<RetVar/IF><RefObj> has a free big ship dock slot
<RetVar/IF><RefObj> can be controlled by race logic
<RefObj> set race logic control enabled to <Var/Number>
<RetVar/IF><RefObj> can execute StartAction
<RefObj> set StartAction enabled to <Var/Number>
<RefObj> set as player wingman: <Var/Number>
<RetVar/IF><RefObj> is player wingman
Trade Commands for Stations
<RetVar>= <RefObj> get tradeable ware array from station
General Object Commands
<RefObj> set serial name of station to <Var/Stations Serial>
<RefObj> station send defend squad against ship <Var/Ship/Station>
<RetVar>= <RefObj> get name
<RefObj> set name to <Var/String>
<RefObj> set owner race to <Var/Race>
<RetVar/IF><RefObj> find ship: class or type= <Value> race= <Var/Race> flags= <Var/Number> refobj= <Value> maxnum= <Var/Number> with homebase= <Value>
<RetVar/IF> find station in galaxy: startsector= <Var/Sector> class or type= <Value> race= <Var/Race> flags= <Var/Number> refobj= <Value> serial= <Var/Stations Serial> max.jumps= <Var/Number> num= <Var/Number>
<RetVar>= <RefObj> get ID code
<RetVar>= <RefObj> get pilot name
<RefObj> set pilot name to <Var/String>
<RefObj> set pilot speaker: voice= <Value>, face= <Value>, Pirate subrace= <Value>, Argon female= <Value>
Universe and Sector Commands
<RetVar>= <RefObj> get ship array from sector/ship/station
<RetVar>= <RefObj> get station array from sector
<RetVar>= <RefObj> get factory array from sector
<RetVar>= <RefObj> get dock array from sector
<RetVar>= <RefObj> get player owned ship array from sector
<RetVar>= <RefObj> get player owned station array from sector
<RetVar>= <RefObj> get asteroid array from sector
Т.е. 40 новых команд. Ни одной старой команды не убрали. Структура меню команд тоже осталась прежней, а большинство новых команд (но не все) добавились именно внизу списков.
В общем, добавился ряд очень нужных команд, как именование станций, получение массива пристыкованных кораблей, назначение/получение массива вингмэнов и т.д. Но еще бОльший ряд крайне необходимых команд так и остался нереализованным. По прежнему придется чинить hull кораблям путем их уничтожения/клонирования
Интересно, когда появится хоть какая то документация по этим командам? Назначение некоторых совсем не очевидно, например команды al engine и Khaak aggression level. Наверное опять самим ковырять придется млин, уже ковырялка затупилась...
|
|
|
Sergey.
135 EGP
  Рейтинг канала: 1(1) Репутация: 16 Сообщения: 443 Откуда: Чернигов Зарегистрирован: 22.05.2004
 |
|
Цитата: |
Khaak aggression level.
|
оригинально
|
|
|
akm
470 EGP
    Рейтинг канала: 1(4) Репутация: 173 Сообщения: 1638 Откуда: Паразит Прайм Зарегистрирован: 23.10.2002
 |
|
2 CooL_SnipeR
Насчет внешнего редактора скриптов.
Набрел я случайно на коды команд, имен переменных и констант, что в CodeArray. Они все есть в 440001.xml на страницах 2000 - 2013. Только закономерности кодирования имен переменных я пока не вижу. А все остальное сходится.
Например стандартный скрипт !move.followship:
Код: |
Script !move.followship
Version: 1
for Script Engine Version: 22
Description
Follow a ship
Arguments
1: leader , Var/Ship , 'the leadership'
Source Text
001 @ = [THIS] -> call script '!move.follow.template' : target ship=$leader protect the ship=null attack same target=null attack nearest enemy=null stop if leader is docked at same=null
002 return null
|
А вот Сodearray из этого файла:
<codearray>
<sval type="array" size="10"><sval type="string" val="!move.followship" /><sval type="int" val="22" /><sval type="string" val="Follow a ship" /><sval type="int" val="1" /><sval type="int" val="0" /><sval type="array" size="1"><sval type="string" val="leader" /></sval><sval type="array" size="2"><sval type="array" size="16"><sval type="int" val="102" /><sval type="string" val="!move.follow.template" /><sval type="int" val="-2147483647" /><sval type="int" val="131075" /><sval type="int" val="65536" /><sval type="int" val="5" /><sval type="int" val="131074" /><sval type="int" val="0" /><sval type="int" val="0" /><sval type="int" val="0" /><sval type="int" val="0" /><sval type="int" val="0" /><sval type="int" val="0" /><sval type="int" val="0" /><sval type="int" val="0" /><sval type="int" val="0" /></sval><sval type="array" size="3"><sval type="int" val="103" /><sval type="int" val="0" /><sval type="int" val="0" /></sval></sval><sval type="array" size="1"><sval type="array" size="2"><sval type="int" val="21" /><sval type="string" val="the leadership" /></sval></sval><sval type="int" val="0" /><sval type="int" val="0" /></sval>
</codearray>
Цветом выделена часть codearray, ответственная именно за код скрипта. Это есть ни что иное как массив в 2 строки:
Код: |
102 "!move.follow.template" -2147483647 131075 65536 5 131074 0 0 0 0 0 0 0 0 0
103 0 0
|
Теперь открываем в 440001.xml <page id="2003"> title="Script Command Names"
<t id="102">%1%2 call script %0 : %3</t>
<t id="103">return %0</t>
Сходится!
<page id="2000" title="Script Par Def">
<t id="0">Var</t>
<t id="5">Parameter</t>
<page id="2002" title="Script Constants">
<t id="0">THIS</t>
А быть может 0 - это
- <page id="2013" title="Script Data Type">
<t id="0">DATATYP_NULL</t>
Возвращаясь к примеру, с командой return null все очевидно. А вот структура первой команды не совсем ясна. Точнее, за что отвечают коды 2147483647, 131075, 65536 и 131074. Один из них должен быть указателем на переменную. В самом конце cdearray есть массив 1х2:
21 по идее и должен быть указателем. Но еще много чего не сходится.
Есть еще желающие расковырять Сodearray и написать свой редактор? Может у кого есть идеи насчет кодирования переменных?
|
|
|
Klon
85 EGP
 Репутация: 0 Сообщения: 66 Откуда: От верблюда Зарегистрирован: 03.07.2004
 |
|
Narlit : |
Klon : |
Покакому адресу находится рейтинг у аргонцев, или как его можно изменить?
|
Скажи свою почту я те скину скрипт в две строчки при помощи которого можно рейтинг у любой рассы поменять, правда в силу того что я английский не знаю там все на транслите, но это не главное главное что работает
|
В силу того, что я не умею пользоваться скриптами, объясникак и с чем их едят.
_________________ X2-размытое будущее. |
|
|
Варсик
545 EGP
    Репутация: 117 Сообщения: 4041 Откуда: Москва Зарегистрирован: 22.12.2002
 |
|
to Klon Сходи в факи, или скачай руководство Dimmax(имя правельно написал???).
_________________ WARNING: By reading this post you accept that this post is genius. |
|
|
akm
470 EGP
    Рейтинг канала: 1(4) Репутация: 173 Сообщения: 1638 Откуда: Паразит Прайм Зарегистрирован: 23.10.2002
 |
|
Так, авторемонт транспортов путем их клонирования я уже реализовал (подумаешь 60 строк кода из-за того что Egosoft не предусмотрел команды ремонта корпуса). Клон ничем, кроме серийного номера, от оригинала не отличается. Все апгрейды, груз - все на месте. Даже лазеры по турелям/слотам распределяет как у оригинала. И сразу исправно кидается за прерванную своим прародителем работу Единственное, не удалось скопиравать режим работы турели. Т.е. после ремонта/покупки транспорта команда турели отменится. Проблема похоже из разряда нерешаемых
Автозакупка убитого транспорта тоже готова (то же клонирование собственно).
Теперь осталось это все собрать и оформить в виде удобных команд.
Нужно посоветоваться. Имеется несколько вариантов запуска данного скрипта, назовем его AutoService
1. Команда AutoService запускается индивидуально на каждом транспорте.
2. Команда AutoService запускается на каждой фабрике. Все транспорты данной фабрики автоматом попадают под обслуживание (ремонт/замена).
3. Добавить в продажу новую станцию "Центр Управления Полетами". Команда AutoService запускается только на ЦУП. Основной смысл ЦУП - автоматическое снабжение всех фабрик игрока необходимым транспортом, т.е. закупка, распределение транспорта по фабрикам/ресурсам, контроль за поставкой каждого ресурса, добавление транспорта если имеющиеся не справляются, управление кораблями охраны и много еще чего.
4. Команда AutoService запускается на одной фабрике (любой). Все корабли игрока классов ТС и ТР автоматом попадают под обслуживание (ремонт/замена).
Преймущества/недостатки
Вариант 1 - макс. гибкость, не хотите, чтобы какой-то транспорт под автосервисом летал (убьют так убьют, лучше более подходящий куплю) - нет проблем. Каждому транспорту можно будет индивилуально назначить порог уровня повреждений для отправки его в ремонт (а это надо?).
Вариант 2 - меньше гемора. Команду придется запускать только 1 раз на каждой фабрике. Кто-то не справляется и вы решили добавить транспорт на эту фабрику - достаточно его приписать к ней и он сразу попадет под AutoService. Кстати, в этом случае элементарно AutoService распростарнить и на корабли охраны этой фабрики.
Вариант 3 - пока не рассматриваем. Утопия на перспективу, просто решил высказать свои идеи на случай если у меня самого руки не дойдут завершить реализацию.
Вариант 4 - полное отсутствие гемора, гибкость впрочем тоже никакая. Нужно будет заранее обговорить какие классы кораблей требуют AutoService, т.к. абсолютно все корабли игрока данных классов с прописанной HomeBase попадут под AutoService. Впрочем ничего особо страшного. Даже если корабль шел по каким-то делам, отличным от снабжения фабрики, после ремонта он возобновит ту же самую задачу. Даже автоторговцы и корабли охраны фабрик слетают в ремонт, когда надо, и вернуться к своим делам. Еще 1 преймущество в том, что команде AutoService можно смело добавить параметры, например %корпуса, при котором отправлять корабли в ремонт. А если добавить хоть 1 параметр в Вариантах 1 или 2, то замучеешься его вводить каждый раз при запуске команды. А так всего 1 команда на 1 фабрике с глобальными параметрами.
|
|
|
XenonTomb
250 EGP
   Рейтинг канала: 2(16) Репутация: 66 Сообщения: 867 Откуда: Николаев, Украина Зарегистрирован: 17.03.2004
 |
|
Вариант 1 - гемор
Вариант 2 -
Вариант 3 - в нормальном виде неразрешимо (имхо)
Вариант 4 - необязательно, ибо не все фабрики посылают транспорты дальше своего сектора (цепочки и к ним приближенные), соответственно вероятность их повреждения негодяями ничтожно мала при наличии охраны.
_________________ Будут предложения - присылайте на расчетный счет :) |
|
|
akm
470 EGP
    Рейтинг канала: 1(4) Репутация: 173 Сообщения: 1638 Откуда: Паразит Прайм Зарегистрирован: 23.10.2002
 |
|
Цитата: |
Вариант 4 - необязательно, ибо не все фабрики посылают транспорты дальше своего сектора (цепочки и к ним приближенные)
|
Есть такая страшная штука, как автопилот. В набитых цепочками секторах транспорты могут просто столкнуться
Спасибо за ответы. Я тоже склоняюсь к 2 либо 4.
|
|
|
XenonTomb
250 EGP
   Рейтинг канала: 2(16) Репутация: 66 Сообщения: 867 Откуда: Николаев, Украина Зарегистрирован: 17.03.2004
 |
|
akm : |
Есть такая страшная штука, как автопилот. В набитых цепочками секторах транспорты могут просто столкнуться
|
Ой, не говори...
Правда, у меня в одном секторе не больше одной цепочки, и кроме как об свежеотреспауненые астероиды транспорты никогда не бились.
_________________ Будут предложения - присылайте на расчетный счет :) |
|
|
Gollum
220 EGP
   Репутация: 51 Сообщения: 486 Откуда: Санкт-Петербург Зарегистрирован: 12.01.2004
 |
|
А вариант 3 очень подходит к идее создания HQ!
_________________ Не грузите меня, я не сухогруз. Я танкер, налейте мне! |
|
|
YojeG
100 EGP
 Рейтинг канала: 1(1) Репутация: 5 Сообщения: 717 Откуда: Ухта Зарегистрирован: 02.07.2004
 |
|
Кто-нить подскажет как сделать скрипт, чтобы турели на шипе у которых, допустим, команда атаковать врагов, при сигнале о приближении ракеты сразу переключались на нее, а потом обратно на установленную команду. Я бы сам попробовал тока я пока там нихрена не понимаю.
|
|
|
akm
470 EGP
    Рейтинг канала: 1(4) Репутация: 173 Сообщения: 1638 Откуда: Паразит Прайм Зарегистрирован: 23.10.2002
 |
|
Цитата: |
как сделать скрипт, чтобы турели на шипе у которых, допустим, команда атаковать врагов, при сигнале о приближении ракеты сразу переключались на нее, а потом обратно на установленную команду
|
Так стандартный Missile Defence именно так и работает. Стреляет приоритетно по ракетам. Если их нет, то стреляет в атакующего. Если его нет в радиусе поражения, то стреляет в атакуемого. Если и его нет, то при условии, что сам корабль управляется скриптом "Убить всех врагов", турель стреляет по всем врагам в радиусе поражения.
|
|
|
XenonTomb
250 EGP
   Рейтинг канала: 2(16) Репутация: 66 Сообщения: 867 Откуда: Николаев, Украина Зарегистрирован: 17.03.2004
 |
|
Посмотрите скрипты ПРО. Может разберетесь, что к чему, или с автором пообщайтесь.
_________________ Будут предложения - присылайте на расчетный счет :) |
|
|
akm
470 EGP
    Рейтинг канала: 1(4) Репутация: 173 Сообщения: 1638 Откуда: Паразит Прайм Зарегистрирован: 23.10.2002
 |
|
W : |
akm
Что-то твой скрипт по отправке не канает. Прутся из Жалость жреца через Президентский рубеж в ю-в облако. На территории аргона все нормально.
|
Исправлено!
Новую версию качать отсюда
Извиняюсь что так нескоро руки дошли до этого скриптика, но баг был запрятан здорово - пол дня убил
А чего сейчас вернулся к этому автопоиску ближайшей верфи, так потому что этот же самый поиск надо использовать в скрипте авторемонта поврежденных транспортов
Имелся баг в функции find station in galaxy. Так ее и не пофиксили в 1.4. Сделайте поиск ею ближайшей верфи например из сектора Atreus Clouds и она выдаст Antigone Memorial хотя Rolk's Fate ближе. Ладно, обошел.
Еще 1 баг был у меня в коде, т.к. я просто не знал о существовании пятых ворот в некоторых секторах (в смысле с id=4, а не только 0-3 N-W).
Ну и прописал еще ручками все "длинные" переходы, как например Sacred Relic - Interlands.
Было произведено тестирование алгоритма поиска в абсолютно каждом секторе и вручную проверены все найденные скриптом варианты на оптимальность. Не найдено ни одной ошибки, т.е. ни одного "проблемного" сектора!
Зацените сами лог "TestLog.txt" Там четко видно куда именно будут отправляться корабли из каждого из секторов. Только учтите, что поиск полностью автоматизирован, т.е. убитые ворота или верфь естественно может изменить результат. Также теперь учитывается еще и расстояние до ворот. Но в целях снижения нагрузки на процессор, поиск верфи производится лишь 1 раз для сектора и затем берется из кэша до тех пор, пока вы не захватите корабль в другом секторе. Т.е. кэшируются результаты поиска лишь для одного последнего сектора.
А еще я удалил возможность запуска скрипта с параметром (вручную заданным доком), а сам скрипт оформил ввиде команды под появившиеся в 1.4 доп. слоты в консоли корабля.
Enjoy!
|
|
|
serg - 314159
|
|
akm : |
Есть еще желающие расковырять Сodearray и написать свой редактор? Может у кого есть идеи насчет кодирования переменных?
|
имхо, переменные объявляются зараннее(в начале массива кодов) и используются по ID
Вообще, в массиве кодов довольно четкая структура - 1 секция sval описывает одну строку
зы: была у меня идея написать програмулину для составления словаря SCE по известным скриптам ...
|
|
|
akm
470 EGP
    Рейтинг канала: 1(4) Репутация: 173 Сообщения: 1638 Откуда: Паразит Прайм Зарегистрирован: 23.10.2002
 |
|
serg - 314159 : |
akm : |
Есть еще желающие расковырять Сodearray и написать свой редактор? Может у кого есть идеи насчет кодирования переменных?
|
имхо, переменные объявляются зараннее(в начале массива кодов) и используются по ID
Вообще, в массиве кодов довольно четкая структура - 1 секция sval описывает одну строку
зы: была у меня идея написать програмулину для составления словаря SCE по известным скриптам ...
|
У меня тоже была такая же идея Но в ней нет необходимости. Все и так имеется в 440001.xml. А переменные используются действительно похоже по ID, просто в порядке их упоминания в самом начале Сodearray.
Не успели вы еще оценить версию 4 моего скрипта автоотправки захваченных кораблей на верфь, как я уже успел полностью перелопатить алгоритм поиска ближайшей верфи и выложил версию 5. Патч 1.4 добавил команду поиска станций, которая может возвращать массив станций в заданном радиусе. Чем я и воспользовался Далее добавил алгоритм определения цепочки ворот, что требуется пролететь кораблю и подсчет дистанции до каждой из верфей в километрах, а не в прыжках как было ранее до в.5. Да, и кэширование результатов поиска я отключил, т.к. алгоритм не слишком навороченный получился, думаю нагрузка на проц будет мизерная. Теперь для каждого корабля будет подбираться оптимальная верфь даже с учетом его позиции [x, y, z] в секторе. Сбитые верфи, уничтоженные или отодвинутые ворота или даже модифицированная карта не смогут сбить с толку мой алгоритм поиска Наверное это будет последняя версия данного скрипта, т.к. я просто не вижу что в нем можно еще усовершенствовать
Пошел доделывать скрипт автопочинки транспортов...
|
|
|
-=XENO=-
140 EGP
  Репутация: 6 Сообщения: 327 Откуда: israel Зарегистрирован: 27.04.2004
 |
|
какой-нибудь умелиц скриптик не хотит создать STAR WARS скриптик.
Поделить расы на 2,3 алиянса и устроить между ними месиво.
перед стартом игры выберать за кого и погнали. <- если это треднее то пару одинаковых скриптов для раздного начала = за тех, за этих !
наверно нужно будет добавить больше шип-юардов чтобы успевали компы себе флот лепить , гы в каждой системе по шип-юарду.
З.Ы. и чтобы JUMP-девайс не работал для пришка в зону пративника , ну или ваще убрать его .....
Eще попровить Дронов , ну хотя-бы Gamma пушками чтобы стреляли, а не Alpha , а толку от них ваще
Хорошо-бы зделать склад какой в игре из базы любой , а то этот торговый центр и док оборудования полная в плане складирования , нада без-донную зделать базу - чтобы сколько хош всего складировать + чтобы продовать она могла по средней цене. И к этому складу так же команду для кораблей чтобы они соберали по всем системам (радиус jump выберать) все произведенные товары из своих станцый - пока место есть и потом привозили в склад
Еще для полезности добавить больше всякой инфы в "Статистика" - сколько бабла потрачено и на что , сколько чего куплено и продано в количестве - кредитов - процентах = так то будет понятней что как приносит доход.
|
|
|
Falkrum
77 EGP
 Репутация: 1 Сообщения: 63 Откуда: Тольятти Зарегистрирован: 14.07.2004
 |
|
Предлагаю сделать мод для увеличения FPS - а именно отключить облака.
_________________ ...Сквозь тернии к звёздам... |
|
|
Гест
|
|
Цитата: |
.к. я просто не вижу что в нем можно еще усовершенствовать
|
Сделай так, чтобы они через конец президента не летали, а то их там прибить могут
|
|
|
XenonTomb
250 EGP
   Рейтинг канала: 2(16) Репутация: 66 Сообщения: 867 Откуда: Николаев, Украина Зарегистрирован: 17.03.2004
 |
|
Доступна версия 2.0 скрипта "Купить товар и вернуться домой" для X2-The Threat 1.4 (подробности на странице "Собрание скриптов пилотов").
http://www.dr-Ссылки на narod.ru запрещены! Используйте пожалуйста другие, более нормальные хостинги./download/buy_ware_v2.zip
[+] Новое
[-] Ошибка исправлена
[*] Ошибка исправлена и/или изменено к лучшему
[*] вместо "Торгового софта Мк1" скрипту теперь нужен "Улучшенный торговый модуль", это сделано для того, чтобы лишних команд не было в меню обычных транспортов;
[*] теперь товар ищется и на фабриках-производителях товара (в v.1 товар искался только на торговых станциях и доках оборудования), причем в первую очередь;
[*] теперь батарейки покупаются за счет игрока, а не станции-приписки, поэтому помимо полной суммы для покупки всей партии товара вы должны дополнительно иметь на счету деньги для закупки 1000 батареек по максимальной цене (23000);
[+] в качестве станции-приписки теперь могут быть TL или M1;
[+] по прибытии домой корабль извещает об этом игрока (приходит сообщение);
[*] добавлена маленькая задержка в общий цикл для повышения стабильности игры;
[-] если дано задание купить оборудование, то корабль сможет купить не больше 1 штуки (большее кол-во проигнорируется), а если такое оборудование уже есть на борту, корабль никуда не полетит.
[-] теперь корабль контролирует наличие нужной суммы денег перед каждой сделкой (вдруг вы все потратили, пока он летает?), если денег нет, то он ждет 30-60 секунд (вдруг появятся?), а потом опять начинает поиски.
Приглашаю всех потестить!
_________________ Будут предложения - присылайте на расчетный счет :) |
|
|
|
|
|
Канал X2: The Threat: «Скриптами делимся, скриптами» |
|