|
|
|
Канал X3: Reunion »
Модовый и скриптовый отсек X3: Reunion: «Скриптописание - делимся опытом, задаем вопросы» |
|
|
Selvetarm
135 EGP
   Рейтинг канала: 1(6) Репутация: 12 Сообщения: 152 Откуда: Череповец Зарегистрирован: 18.12.2007
 |
|
Chem : |
Просьба не использовать данный сленг
|
Угук, сорри.
А с файлами, следующая борода.
Как я понял созданный мной файл, скажем, 70025.xml добавляет инфу <id="***">бла-бла</id> в 70001, командой load text id = 25. Далее имеем
1) "наш_скрипт"
2) скрипт в котром присутствует
load text id = 25
global script map: set: key=*куда_в_меню*, class=[PLAYERSHIP], race=Player, script='наш_скрипт', prio=0
И скрипт с этой строкой и запускаем в игре. Так?
В 70025 код:
<?xml version="1.0" encoding="UTF-8" ?>
<language id="7">
<page id="2010" title="Script Cmd Names" descr=" ">
<t id="815">Всем каюк</t>
</page>
<page id="2011" title="Script Cmd Shorts" descr=" ">
<t id="815">Вс.К.</t>
</page>
</language>
Это добавит "Всем каюк [Вс.К.]" в Общие команды моего корабля.
Я правильно понял?
_________________ Действительность можно освещать и трассирующими пулями... |
|
|
Chem
780 EGP
          Рейтинг канала: 15(2610) Репутация: 248 Сообщения: 4751 Откуда: Киев Зарегистрирован: 08.01.2007
 |
|
Selvetarm : |
А с файлами, следующая борода.
...
Я правильно понял?
|
В общем да, но:
Ну во первых - для скриптописателей (для неподписанных егософтом скриптов) отведены номера текстовых файлов в диапазоне 7000 - 8999. (т.е. русские 77000-78999).
Второе - ты создал текстовый файл для описания команды "общего меню".
Скриптописателям доступны команды только 16 по 61. Т.е. в данном случае - с 816 по 861.
и по поводу
global script map: set: key=<Object Command/Signal>, class=<Var/Class>, race=<Var/Race>, script=<Script Name>, prio=<Var/Number>
engine v. 32
• Команда назначает для объектной команды/сигнала <Object Command/Signal> скрипт-обработчик. Установка производится глобально, т.е.для всех объектов класса <Var/Class> принадлежащих расе <Var/Race> в качестве обработчика назначается скрипт <Script Name> и для него устанавливается приоритет <Var/Number>.
т.е. class= не [PLAYERSHIP] , здесь должен быть указан именно класс корабля, например - Big Ship, Ship, TS, Tp и т.д.
_________________ Умножим энтропию на 0 :-)
Последний раз редактировалось: Chem (19:57 24-01-2008), всего редактировалось 1 раз |
|
|
Selvetarm
135 EGP
   Рейтинг канала: 1(6) Репутация: 12 Сообщения: 152 Откуда: Череповец Зарегистрирован: 18.12.2007
 |
|
Chem : |
Ну во первых - не для скриптописателей отведены номера текстовых файлов в диапазоне 7000 - 8999. (т.е. русские 77000-78999).
|
переведи, пжста, с лунного...
_________________ Действительность можно освещать и трассирующими пулями... |
|
|
Chem
780 EGP
          Рейтинг канала: 15(2610) Репутация: 248 Сообщения: 4751 Откуда: Киев Зарегистрирован: 08.01.2007
 |
|
Исправил.
Т.е. нельзя тебе использовать файл с номером 25. Только в промежутке от 7000 до 8999.
_________________ Умножим энтропию на 0 :-) |
|
|
M_A_G
53 EGP
 Рейтинг канала: 5(142) Репутация: 2 Сообщения: 41 Откуда: Питер Зарегистрирован: 04.01.2008
 |
|
Закончил анализ потребления втор-ресов и логики работы NPC комплексов. Надеюсь, кому-нибудь будет полезно-интересно
Проверенные фабрики: (кликните здесь для просмотра)
Drone Factory
Dumbfire Missile Production Complex
Gamma PPC Forge
Image Recognition Production Complex
Ion Disruptor Forge
IRE Production Complex
Lasertower Factory
Light shield Production Complex
Massom Mill L
Rastar Refinery M
Special Weapons Production Complex
|
Результаты:
Вторичные ресурсы.
1. Списываются порциями по 4*размер_станции штуки за раз. Если ресурса меньше порции – списывается всё, что есть.
2. Скорость списания. Чем больше relvalue ресурса, тем больше период списания. Период кратен 60 секундам.
Аналитическую закономерность получить не удалось (кликните здесь для просмотра)
Пробовал уравнения от первого до третьего порядков и логарифмические зависимости – не сходиться  Вот инфа по тем ресам, для которых период определил с маленькой погрешностью ( relvalue - средний период в минутах):
6 - 1
8 - 4
24 - 6
30 - 17 (не точно)
60 - 33 (не точно)
|
3. Влияние на производительность станции. Чем меньше времени прошло с момента списания втор-реса до начала очередного цикла производства, тем больше снижение времени цикла. Влияние списания втор-реса полностью нивелируется в течение минут (2-3), то есть, если было списание, а цикл начался через 5 минут – снижения не будет! Отсюда выводы:
1. Увеличение скорости производства будет тем больше, чем меньше relvalue втор-ресов.
2. Relvalue продукции фабрики тоже оказывает влияние, но, в значительно меньшей степени (чем больше, тем менее вероятно, что цикл начнётся вскоре после списания втор-реса).
3. Если есть несколько втор-ресов, основной вклад в увеличение производительности вносит с наименьшим relvalue. Остальные фактически не играют роли.
Примеры: (кликните здесь для просмотра)
Gamma PPC Forge (втор-рес - Crystals) – за 20 часов ни одного снижения цикла.
Ion Disruptor Forge (Crystals) – ускорение 0.3%.
Rastar Refinery (Nostrop Oil и Spaceflies) – ускорение 6.6%.
Massom Mill (Nostrop Oil, Spaceflies и Soja Husk) – ускорение 10.0%.
|
Комплексы:
1. При выборе продукта для производства, приоритет имеет тот, чей склад заполнен на меньший %.
2. Влияние втор-ресов. Похоже, это баг: если очередной цикл производства товара с бОльшим relvalue заканчивается и следующий цикл будет для товара с меньшим relvalue, а также выполнено условие для уменьшения времени цикла, то возможно значительное снижение времени цикла. Вплоть до 1 секундного цикла.
Следствия:
1. Если relvalue всех продуктов комплекса меньше 2500, то средняя производительность каждого товара будет равна размер_комплекса(S, M, L, LX)/количество_продуктов. То есть, в сумме производительность комплекса будет равна его размеру(S=1(единичная), M=2, L=5, LX=10). Это без влияния втор-ресов.
2. Как известно, размер склада для продуктов фабрики равен: размер_фабрики*20000/relvalue. Если результат меньше 8, то размер склада = 8.
Из-за этого, наблюдается интересный эффект в комплексах. Ведь комплекс работает так, что бы заполнять склады продуктов равномерно. И если комплекс производит что-то с relvalue большим 2500, он будет пытаться производить его больше, чем должен бы, основываясь на relvalue. В приделе, продукция с большим relvalue может производиться со скоростью (7/8)*размер_комплекса, а продукция с маленьким relvalue, со скоростью (1/8)*размер_комплекса
Пример: (кликните здесь для просмотра)
Special Weapons Production Complex. Скорость производства Ion Disruptor составляет 55% от единичной, Mass Driver – 29% от единичной, а MD Ammunition – 24% от единичной. (В идеале у всех должно было быть 33%).
|
3. Влияние втор-ресов на производительность комплекса может быть очень значительным (из-за бага-фичи). Притом, это влияние будет не только на продукцию с маленьким relvalue, а, из-за попытки комплекса заполнять склады равномерно, и на другие продукты комплекса.
Для этого в комплексе должны быть продукции с сильно различающимся relvalue, но relvalue не должно быть сильно большим.
Примеры: (кликните здесь для просмотра)
Special Weapons Production Complex – среднее увеличение производительности 2.7%.
Dumbfire Missile Production Complex – 11%.
Image Recognition Production Complex – 30%.
|
|
|
|
Selvetarm
135 EGP
   Рейтинг канала: 1(6) Репутация: 12 Сообщения: 152 Откуда: Череповец Зарегистрирован: 18.12.2007
 |
|
Ааа . Как увеличить скорость корабля? Команды set max speed не увидел, попробовал на Сокол добавить (install upgrade) 1000 форсажа, игра показывает макс скорость ~5600, реально 148, иногда возникает глюк и скорость бывает равна 56. Чего я делаю не так?
И разъясните поподробнее работу команды register hotkey пожалуйста.
_________________ Действительность можно освещать и трассирующими пулями... |
|
|
Chem
780 EGP
          Рейтинг канала: 15(2610) Репутация: 248 Сообщения: 4751 Откуда: Киев Зарегистрирован: 08.01.2007
 |
|
Справочник читал ? http://www.elite-games.ru/x3/scripts_howto/ (или учебник - ссылка есть в справочнике)
_________________ Умножим энтропию на 0 :-) |
|
|
Selvetarm
135 EGP
   Рейтинг канала: 1(6) Репутация: 12 Сообщения: 152 Откуда: Череповец Зарегистрирован: 18.12.2007
 |
|
Chem ты издеваешься? Смотрел (мож невнимательно), и там, и в оффлайновой версии. Если бы нашел и понял я бы не стал спрашивать. Если не трудно, ответь.
Selvetarm : |
И разъясните поподробнее работу команды register hotkey
|
Selvetarm : |
Как увеличить скорость корабля?
|
_________________ Действительность можно освещать и трассирующими пулями... |
|
|
Chem
780 EGP
          Рейтинг канала: 15(2610) Репутация: 248 Сообщения: 4751 Откуда: Киев Зарегистрирован: 08.01.2007
 |
|
Selvetarm : |
Chem ты издеваешься?
|
Совсем нет. Мне просто непонятно было, а что там непонятного
Selvetarm : |
И разъясните поподробнее работу команды register hotkey пожалуйста.
|
А что непонятно ?
: |
<RetVar> = register hotkey <Var/String> to call script <Script Name>
• Команда регистрирует новую "горячую клавишу" с именем <Var/String> и присваивает ей скрипт обработчик <Script Name>. регистрационный номер "горячей клавиши" возвращается в переменную <RetVar>, этот код может быть использован в дальнейшем для разрегистрации этой "горячей клавиши".
unregister hotkey <Var/Number>
• Команда осуществляет разрегистрацию (удаляет ранее зарегистрированную) "горячей клавиши" с регистрационным номером <Var/Number>.
|
Тебе для вызова скрипта понадобилась быстрая клавиша - ты пишешь скрипт, начинающийся на setup.
В нем пишешь код:
Код: |
$is_hk=get global variable: name="moya.klavisha.uge.zadana"
if not $is_hk
$is_hk=register hotkey 'Моя быстрая клавиша' to call script 'moja.klavisha'
set global variable: name="moya.klavisha.uge.zadana" value=$is_hk
end
|
Вот и все.
Selvetarm : |
Как увеличить скорость корабля?
|
Чтобы надолго - через TShips
Ненадолго - примерно как ты - посмотри на афтербурнер из БП.
добавлено спустя 3 минуты:
Кстати, хорошим тоном является создание скрипта setup.uninstall...
в котором написано:
Код: |
$is_hk=get global variable: name="moya.klavisha.uge.zadana"
skip if not $is_hk
unregister hotkey $is_hk
|
Ну и на всякий случай напомню - русский текст напрямую в редакторе вводить не стоит, лучше через текстовые файлы
_________________ Умножим энтропию на 0 :-)
Последний раз редактировалось: Chem (02:19 30-01-2008), всего редактировалось 1 раз |
|
|
Selvetarm
135 EGP
   Рейтинг канала: 1(6) Репутация: 12 Сообщения: 152 Откуда: Череповец Зарегистрирован: 18.12.2007
 |
|
Спасибо большое. Посмотрел афтербернер... понял что нуб. Афтербернер настолько суров, что я минут пять догонял значения переменных. Догнал, Осилил, Загрустил.
2 Chem
Т.е. у нас 3 скрипта: собссно то что надо, инсталл, и юнинсталл?.. И как они соотносяться?: первый смотрит если НЕ установленна - установить, второй - если установленна - удалить,.. где смысл? Или я такой тупой? *взял разгон, курс на стену*
_________________ Действительность можно освещать и трассирующими пулями...
Последний раз редактировалось: Selvetarm (02:41 30-01-2008), всего редактировалось 1 раз |
|
|
Chem
780 EGP
          Рейтинг канала: 15(2610) Репутация: 248 Сообщения: 4751 Откуда: Киев Зарегистрирован: 08.01.2007
 |
|
Selvetarm : |
Т.е. у нас 3 скрипта: собссно то что надо, инсталл, и юнинсталл?.. И как они соотносяться?: первый смотрит если НЕ установленна - установить, второй - если установленна - удалить,.. где смысл? Или я такой тупой? *взял разгон, курс на стену*
|
Смотри:
1. Есть основной скрипт (или кучка).
2. Если тебе надо использовать пункты меню или горячие клавиши, или задать некие переменные - делаешь скрипт setup.xxxxx. Он выполнится при при загрузке игры (!setup.xxxx - не зависимо от активации скрипт редактора, setup.xxxxx - только если активирован).
3. Если ты использовал горячие клавиши и много переменных - то делаешь скрипт setup.uninstall.xxxx, в котором это все чистишь, кладешь его в отдельную папку (чтобы пользователь его сразу не установил), и пилот, решивший удалить твой скрипт, удаляет все твои файлы, и кладет вместо них этот скрипт, который при следующей загрузке все за собой чистит.
_________________ Умножим энтропию на 0 :-) |
|
|
Selvetarm
135 EGP
   Рейтинг канала: 1(6) Репутация: 12 Сообщения: 152 Откуда: Череповец Зарегистрирован: 18.12.2007
 |
|
*шмяк* Вот теперь понял. Спасибо за помощь.
_________________ Действительность можно освещать и трассирующими пулями... |
|
|
M_A_G
53 EGP
 Рейтинг канала: 5(142) Репутация: 2 Сообщения: 41 Откуда: Питер Зарегистрирован: 04.01.2008
 |
|
В канале X2 есть тема, в ней первая ссылка: "Расшифровка содержимого папки types" - http://pleir.народ.ru/SFModKit5.zip. Только вот не работает Где бы эту инфу еще найти?
Chem : |
Это не скриптописание.
|
Да, но вот только не понятно, куда бы про такое спросить, ибо в "X3-Modding: Разведка боем" сказано "Тема только для моддеров! Все вопросы новичков - в вопросницу!"
Последний раз редактировалось: M_A_G (17:20 30-01-2008), всего редактировалось 1 раз |
|
|
Chem
780 EGP
          Рейтинг канала: 15(2610) Репутация: 248 Сообщения: 4751 Откуда: Киев Зарегистрирован: 08.01.2007
 |
|
M_A_G : |
Расшифровка содержимого папки types
|
Это не скриптописание.
Немного описано в учебнике от Дракона П.
_________________ Умножим энтропию на 0 :-) |
|
|
vsadik-tmi
70 EGP
 Рейтинг канала: 5(110) Репутация: 11 Сообщения: 171 Откуда: Архангельск Зарегистрирован: 24.01.2008
 |
|
А ты незнаеш можно ли скрипт редактором добавить или изменить(но лучше добавить) список продоваемых\покупаемых товаров на пиратской станцыи ?
* К примеру я хочю чтоб на пиратской станции продовались "наркотики"(в игре они есть, но только в ВВС.)
Если способ есть то можно про него по подробней...(я всетаки не эксперт)
Вопрос примитивный, но не судите строго, я только учюсь...
|
|
|
Chem
780 EGP
          Рейтинг канала: 15(2610) Репутация: 248 Сообщения: 4751 Откуда: Киев Зарегистрирован: 08.01.2007
 |
|
vsadik-tmi : |
А ты незнаеш можно ли скрипт редактором добавить или изменить(но лучше добавить) список продоваемых\покупаемых товаров на пиратской станцыи ?
|
можно, посмотри последний скрипт, что выложен в теме файлов Хтендеда.
_________________ Умножим энтропию на 0 :-) |
|
|
AlexV
555 EGP
       Рейтинг канала: 7(561) Репутация: 182 Сообщения: 1157 Откуда: нискажу Зарегистрирован: 10.01.2006
 |
|
Chem : |
(!setup.xxxx - не зависимо от активации скрипт редактора, setup.xxxxx - только если активирован).
|
разреши, я тебя поправлю
состояние активирования скрипт редактора по-барабану, только флаг *modified* имеет значение
при !xxxx игра станет модифицированной, без <!> загрузится если игра модифицированная
_________________ а хуже всего приходится программистам из Microsoft. Им в случае чего и обругать-то некого |
|
|
Chem
780 EGP
          Рейтинг канала: 15(2610) Репутация: 248 Сообщения: 4751 Откуда: Киев Зарегистрирован: 08.01.2007
 |
|
AlexV : |
при !xxxx игра станет модифицированной
|
К сожалению, не знаю точной логики работы SE_ReadFile.
Потому не могу сказать, согласен с тобой, или нет. В общем да, похоже что так, т.к. я вижу, что в каком-то случае файл может не подгрузиться, и тогда проверяется наличие "!" и устанавливается признак модификации игры, но файл все-таки остается не загружен, на этот раз.
Но в общем случае - если активировали скрипт-редактор, следовательно игра уже - *modified*, и будет грузиться все.
Иначе - требуется наличие "!" для простановки флага *modified*, без активации скрипт-редактора, и опять же потом будет грузиться все.
_________________ Умножим энтропию на 0 :-) |
|
|
CTPELOK
145 EGP
  Рейтинг канала: 5(113) Репутация: 25 Сообщения: 375
Зарегистрирован: 20.05.2003
 |
|
Вопрос назрел такой: каким образом средствами скрипта можно сохранить некую информацию (значение переменной) так, чтобы после сохранения и загрузки данного сейва переменная принимала сохраненное значение?
Пример из жизни: скрипт считает количество батареек, произведенных солнечной электростанцией с момента ее установки. Игрок сохраняется, выходит из игры, занимается своими делами (возможно даже спит), садится за игру, загружает сейв. Автоматически запускается скрипт и ему (скрипту) надо узнать, сколько же эта батареечница произвела продуктов за всю свою сознательную жизнь. (не спрашивайте зачем мне это надо)
_________________ То пропадаю, то снова появляюсь |
|
|
Andrei [<>Ace]
303 EGP
   Рейтинг канала: 6(416) Репутация: 108 Сообщения: 766 Откуда: Беларусь, Салiгорск Зарегистрирован: 29.03.2006
 |
|
CTPELOK : |
Вопрос назрел такой: каким образом средствами скрипта можно сохранить некую информацию (значение переменной) так, чтобы после сохранения и загрузки данного сейва переменная принимала сохраненное значение?
|
Ну если скрипт будет запущен вместе с началом производства, то в любой переменной может быть сохранена такая информация.
Если же скрипт будет работать периодически, когда очередная партия батареек произведена, то есть команды:
Код: |
<RefObj> set local variable: name=<Var/String> value=<Value>
· Команда устанавливает значение локальной переменной с именем <Var/String> объекта <RefObj> равным <Value>. Локальные переменные привязаны к определенному объекту и абсолютно независимы от локальных переменных других объектов. Они используются для обмена данными между скриптами запущенными на одном объекте. |
такая переменная, привязанная к станции, будет жить пока живет станции, ну или пока не обнулишь.
Код: |
set global variable: name=<Var/String> value=<Value>
· Команда устанавливает значение глобальной переменной с именем <Var/String> равным <Value>. Глобальные переменные не привязаны к какому-либо объекту, а являются общими для всех и доступны любому скрипту. |
Такая переменная живет пока не начнешь новую игру , ну или пока не обнулишь.
|
|
|
|
|
|
Канал X3: Reunion ->
Модовый и скриптовый отсек X3: Reunion: «Скриптописание - делимся опытом, задаем вопросы» |
|