|
|
|
Канал X2: The Threat: «FAQ: Скриптописание» |
|
|
Пассажир
|
|
DragonP, fly с timeout я не нашел, есть только follow object. Она подойдет?
|
|
|
DragonP
281 EGP
   Рейтинг канала: 3(27) Репутация: 108 Сообщения: 527 Откуда: Новосибирск Зарегистрирован: 18.12.2004
 |
|
Grey Wolf : |
Вообще-то не приводит, с чего ты это взял?
|
АКМ, подсказал. Это для медленных компьютеров, на циклах без wait частенько зависают, а на быстрых четко тарабанят
_________________ Звезды зовут... |
|
|
DragonP
281 EGP
   Рейтинг канала: 3(27) Репутация: 108 Сообщения: 527 Откуда: Новосибирск Зарегистрирован: 18.12.2004
 |
|
McLay : |
DragonP, fly с timeout я не нашел, есть только follow object. Она подойдет?
|
Дык выкручиваться надо, подменять, заменять, подсовывать
ScE не совершенен, думай.
_________________ Звезды зовут... |
|
|
AlexYar
1916 EGP
               Рейтинг канала: 6(445) Репутация: 325 Сообщения: 32761
Зарегистрирован: 26.10.2003
 |
|
Нужна срочная информация по всем стандартным командам!
Не доп.командам (COMMAND_TYPE_FIGHT_0 и прочие), а именно стандартным! Нужны их связи со своими скриптами для кораблей игрока, а так же зависимости каждой команды от апгрейдов (какая команда от какого апгрейда зависит).
Для начала хотябы инфу по всем командам, зависящим от боевых софтов, и как можно подробнее.
Собираюсь выкинуть стандартные боевые софты (апгрейды) и заменить новыми, но нужно переподключить все старые команды на новые апгрейды, иначе их не будет.
Добавлено: Уже не срочно
|
|
|
DragonP
281 EGP
   Рейтинг канала: 3(27) Репутация: 108 Сообщения: 527 Откуда: Новосибирск Зарегистрирован: 18.12.2004
 |
|
Уважаемые скриптописатели, нынче в приватном разговоре с Executor’ом по вопросу бета-теста моего скрипта, этим уважаемым пилотом было высказано неудовольствие отсутствием хелпа по «I» в моих скриптах. Что для меня было непонятно, что за хелп по «I». И в дальнейшем выяснилось следующее:
В командном меню, вы наверное обращали внимание на маленькую буковку «I» между длинным и коротким названием команды, т.е. приблизительно вот такой вид:
2 Стыковаться к… _______________ i __[Dockdat]
Так вот, если установить курсор на эту команду и нажать “i”, то мы получаем краткий хелп по этой команде. Я так тщательно это описываю это, потому, что просмотрев все самые популярные ЕГ скрипты, уважаемых AKM, XenonTomb, GreyWolf и других не менее уважаемых скриптописателей, я обнаружил что ни один из них не имеет хелпа по “i”. Так как они этого не используют, я сделал вывод, что они об этом не знают, а не просто ленятся его добавлять. Разобравшись, что и где хочу поделиться со всеми.
Для вспомогательных хелпов в основном языковом файле выделена страница 2022, идентификаторы совпадают с ид команд на страницах 2010 или 2011. Добавив соответствующий текст для вспомогательного хелпа, на эту страницу, в нужный идентификатор, мы получаем в строке меню соответствующем нашему скрипту значек “i”. И теперь при установке курсора на эту строку в меню и нажатии на “i”, будет высвечиваться текст со страницы 2022 соответствующего идентификатора. ИМХО это очень удобно, т.к. большинство пользователей наших скриптов, ленится читать описание. Наличие данного хелпа, поможет конечному пользователю правильно использовать данный скрипт, и не задавать вопросов ответы на которые есть в ридми скриптов . Да и вообще, что бы скрипты были на мировом уровне.
Респект Executor’у за акцентирование внимания на данном вопросе .
_________________ Звезды зовут... |
|
|
DragonP
281 EGP
   Рейтинг канала: 3(27) Репутация: 108 Сообщения: 527 Откуда: Новосибирск Зарегистрирован: 18.12.2004
 |
|
AlexYar : |
DragonP : |
А с флагами CmdConCheck.OneTime и CmdConCheck.Infinite не разобрался? ИМХО разницы нет.
|
Есть разница. Если использовать вышеозвученные команды, то пункт в командном меню будет отображаться, хоть и затененно! А так как в игре ограничение на 10 слотов, то нафига занимать неиспользуемыми (неактивными) командами места? Если вообще флагов не возвращать, то строчка меню заниматься не будет, так как там будет пусто
|
Это понятно из твоего предыдущего поста. Я имел в виду разницу именно между указанными флагами. По описанию MSCI, CmdConCheck.OneTime должен запускать проверочный скрипт один раз при формировании меню, а CmdConCheck.Infinite это циклическое выполнение пр.скрипта пока отражается меню и соответственно его динамическое изменение. Но меню изменяется динамически не зависимо от флага, и скрипт выполняется в цикле до тех пор, пока отражено меню. Непонятно для чего они вобще нужны.
_________________ Звезды зовут... |
|
|
DragonP
281 EGP
   Рейтинг канала: 3(27) Репутация: 108 Сообщения: 527 Откуда: Новосибирск Зарегистрирован: 18.12.2004
 |
|
У кого-нибудь получалось добыть сигнал SIGNAL_COLLISIONWARN
ИМХО, он дохлый. Кучу кораблей раздолбал, но хоть намек получить не удалось.
И еще если у кого есть наработки по авто-аргументам сигналов, поделитесь для учебника. Неохото, каждый сигнал гонять, что бы выяснить.
_________________ Звезды зовут... |
|
|
Krom
455 EGP
   Рейтинг канала: 1(1) Репутация: 159 Сообщения: 1988 Откуда: Горы Урала Зарегистрирован: 19.07.2005
 |
|
DragonP : |
У кого-нибудь получалось добыть сигнал SIGNAL_COLLISIONWARN
|
Было такое, когда кораблик со станции взлетал, а к вратам выруливать надо было на другую сторону станции. С двумя кораблями у тебя вряд ли получится - у них size слишком маленький (это я судя по предтурнирным наработкам говорю), хотя работа сигнала иногда очевидна... Не знаю.
_________________ Не спешите меня. |
|
|
AlexYar
1916 EGP
               Рейтинг канала: 6(445) Репутация: 325 Сообщения: 32761
Зарегистрирован: 26.10.2003
 |
|
Krom : |
хотя работа сигнала иногда очевидна... Не знаю.
|
Это не работа сигнала, а движковая функция обхода. А сигнал, про который Драгон-П говорит, у меня тоже получить не удалось
|
|
|
AlexYar
1916 EGP
               Рейтинг канала: 6(445) Репутация: 325 Сообщения: 32761
Зарегистрирован: 26.10.2003
 |
|
Оченно интересуют все комбинации команд, которые 100% вызывают вылет игры в винду
Если кто знает - просьба перечислить. Впоследствии этот сборник можно добавить в учебник по скриптописанию в раздел "Так делать нельзя"
Пример:
001 $sec == Argon Prime
002 play sample : $sec
|
|
|
AlexYar
1916 EGP
               Рейтинг канала: 6(445) Репутация: 325 Сообщения: 32761
Зарегистрирован: 26.10.2003
 |
|
DragonP : |
Так вот, если установить курсор на эту команду и нажать “i”, то мы получаем краткий хелп по этой команде.
|
Респект! Сам бы догадался еще оооочень не скоро. Использование инфы по команде уже заюзал в системе автоперевода средств. Теперь там полное описание и хелп по использованию
|
|
|
Krom
455 EGP
   Рейтинг канала: 1(1) Репутация: 159 Сообщения: 1988 Откуда: Горы Урала Зарегистрирован: 19.07.2005
 |
|
AlexYar : |
Это не работа сигнала, а движковая функция обхода. А сигнал, про который Драгон-П говорит, у меня тоже получить не удалось
|
Сигнал такой тоже есть, он появляется в меню информации по кораблю, когда тот начинает объезжать станцию - по крайней мере, у меня такое наблюдалось. Ну а что скриптового обработчика нет, так это факт. Печальный
_________________ Не спешите меня. |
|
|
DragonP
281 EGP
   Рейтинг канала: 3(27) Репутация: 108 Сообщения: 527 Откуда: Новосибирск Зарегистрирован: 18.12.2004
 |
|
AlexYar : |
Если кто знает - просьба перечислить.
|
А способы игруху вместе с виндами повесить, надо? Есть парочка.
Krom : |
Сигнал такой тоже есть, он появляется в меню информации по кораблю, когда тот начинает объезжать станцию - по крайней мере, у меня такое наблюдалось.
|
Может он както связан с ограничением скорости при стыковке. Сегодня еще раз попытаю. А то я его в учебнике уже "мертвым" окрестил.
_________________ Звезды зовут... |
|
|
DragonP
281 EGP
   Рейтинг канала: 3(27) Репутация: 108 Сообщения: 527 Откуда: Новосибирск Зарегистрирован: 18.12.2004
 |
|
Если кто имеет наработки по организации работы BBs engine или News Engine (описание тегов, артикли и т.д. и т.п.) нужна инфа любого типа подсказки, статьи, ссылки и т.д руско или англо язычные значения не имеет. Если что знаете присылайте на мыло.
ИМХО если разберемся как работает, то это может оказаться ключем к организации собственных миссий с использованием станционных BBS.
ps на сегодня имеется AKM'овские посты по этой теме, и копия егософтовской страницы с документацией. Но на сайте Егософт ее похоже убрали, а то что есть неполная информация.
_________________ Звезды зовут... |
|
|
AlexYar
1916 EGP
               Рейтинг канала: 6(445) Репутация: 325 Сообщения: 32761
Зарегистрирован: 26.10.2003
 |
|
Насколько я понял, в скриптах ничего существенного не задается, все ББС-миссии в обжах спрятаны
Или ты про то, что в "Новости" можно миссии запихать?
|
|
|
Grey Wolf
500 EGP
    Рейтинг канала: 2(17) Репутация: 115 Сообщения: 1677 Откуда: Ростов-на-Дону Зарегистрирован: 31.03.2003
 |
|
DragonP : |
А то я его в учебнике уже "мертвым" окрестил.
|
Да мертвый он. Есть способ его косвенно получить.
Например, в одном из стеков кораблю отдана команда "лететь куда-нить ограниченное время". Опосля этой команды меняется локальная переменная. В другом стеке через такое же (или чуть большее для гарантии) время проверяется значение этой локальной переменной, если значение изменилось, значит сигнала нет, если осталось прежним, то выполнение команды "лететь" прервано движком и работает механизм обхода препятствий, сигнал есть.
_________________ Быстро выпитая рюмка не считается налитой |
|
|
unihorn
220 EGP
    Репутация: 60 Сообщения: 464 Откуда: Москва Зарегистрирован: 26.10.2004
 |
|
Кстати по поводу настроек разбросов цен их колебаний. Меня глючит? Или глючит мой комп? Или я что-то не так делаю? Команда <station> set price of ware <ware> to <price> Cr не работает (т.е. не изменяет эту самую цену), и мне разброс цен (и последуюшие их колебания) приходится делать весьма хитрыми путями...
_________________ Мир ищу, где волки агнцам служат,
И нету слуг верней
Где слезы никого не душат
Не ведают смертей |
|
|
AlexYar
1916 EGP
               Рейтинг канала: 6(445) Репутация: 325 Сообщения: 32761
Зарегистрирован: 26.10.2003
 |
|
unihorn : |
Кстати по поводу настроек разбросов цен их колебаний. Меня глючит? Или глючит мой комп? Или я что-то не так делаю? Команда <station> set price of ware <ware> to <price> Cr не работает (т.е. не изменяет эту самую цену), и мне разброс цен (и последуюшие их колебания) приходится делать весьма хитрыми путями...
|
С большинством товаров эта команда не работает вообще. Разброс цен регулируется в конфигах, а кол-ва товара на складах - ценой товара.
Но с кол-вом товара уже обход найден благодаря Shaddie и его проги по добавлению скриптовых команд (там можно увеличить трюмы всех станций в игре сразу на одинаковый коэффициент).
|
|
|
DragonP
281 EGP
   Рейтинг канала: 3(27) Репутация: 108 Сообщения: 527 Откуда: Новосибирск Зарегистрирован: 18.12.2004
 |
|
Grey Wolf : |
Есть способ его косвенно получить.
|
Я испробовал другой. Сделал ему обработчик, выводящий в лог надпись «Signal COLLISIONWARN», и зацепил его на все корабли в галактике и на все станции. И принялся устраивать дебоши типа: мешать вылететь кораблю, давать команду стыковаться трем кораблям и в это же время взлетать пяти стыкованным, биться TL о станции и корабли, проходить на нем в непосредственной близости от станций. Результаты никакие. За час подобного беспредела ни один из 18000 объектов в галактике не получил сигнала SIGNAL_COLLISIONWARN. ИМХО он «мертвый»
unihorn : |
Кстати по поводу настроек разбросов цен их колебаний. Меня глючит? Или глючит мой комп? Или я что-то не так делаю? Команда <station> set price of ware <ware> to <price> Cr не работает (т.е. не изменяет эту самую цену), и мне разброс цен (и последуюшие их колебания) приходится делать весьма хитрыми путями...
|
А ты кому цены менять пытался, случайно не неписям? Насколько я знаю эта команда работает только со станциями игрока и меняет цены в пределе от фиксированной минимальной до фиксированной максимальной.
AlexYar : |
Но с кол-вом товара уже обход найден благодаря Shaddie и его проги по добавлению скриптовых команд (там можно увеличить трюмы всех станций в игре сразу на одинаковый коэффициент).
|
Интересно, а на экономике в галактике это не отразиться? При расчет времени производства и ресурсозатрат не использует ли движок этих фиксированных объемов как какой либо коэффициент.
AlexYar : |
асколько я понял, в скриптах ничего существенного не задается, все ББС-миссии в обжах спрятаны
Или ты про то, что в "Новости" можно миссии запихать?
|
Именно BBS миссии в обжах, и как до них добраться я не знаю. А вот работу BBS News можно попробовать подогнуть под использование для своих миссий. АКМ поднимал эту тему и выкладывал результаты своих изысканий, собственно на них я опирался, не знаю почему никто не заинтересовался.
В общем кратко об этом:
Несмотря на то что BBS News Engine служит в стандартной игре для создания игрового антуража, как то набивание доски объявлений разного рода статьями-пыстышками, но в ней предусмотрено связь со скриптовым движком по средствам команд
<RetVar/IF> state of news article page=<Var/Number> id=<Var/Number>
и
set state of news article page=<Var/Number> id=<Var/Number> to <Var/Number>
первая как вы поняли позволяет получить текущее значение артикля установленного для новости расположенной на соответствующей page=<Var/Number> странице в ИД id=<Var/Number>
а вторая изменить артикль.
Но какое применение этой команде найти в жизни? Да никакого, если не понять как работает вся система формирования новостей. А вот если разобраться, то эти команды могут оказаться очень полезными. Во первых, по средствам этих артиклей происходит выборка новостей из обжей массы. Во вторых, BBS News работает в тесном комплекте с языковыми файлами XML, точнее с основным языковым файлом. И существует целый набор специальных тегов позволяющих управлять отображением новостей и ВНИМАНИЕ !!! ЗАПУСКОМ ОПРЕДЕЛЕННЫХ СКРИПТОВ. Но давайте по порядку:
Управление отражением определенной новости:
akm : |
1. Эта самая News Engine сама автоматом делает выборку всех строк в xml, помеченных тегом [article] и добавляет их в свою базу данных.
2. Условием добавления в базу данных статьи является ее state > 0.
3. Этот state может меняться динамически в любоее время командой set state of news article, а также модифицироваться как самой новостью, так и одна новость может модифицировать state другой новости (читай об этом ниже). Т.е. установка state=0 сразу исключает ее из БД новостей, state=1 - и она снова активна в БД. Читать этот state тоже можно из скриптов функцией state of news article.
4. При стыковке со станцией производится рандом выборка нескольких активных статей из БД. На выборку влияют параметры в теге [article] данной новости:[article state='...' pri='...' timeout='...']...[/article]где state - начальное значение state при добавлении новости в БД;pri=1 означает, что данная новость будет выбираться всегда, выделяясь таким образом из всей остальной массы новостей, выбираемых случайно. Т.е. здорово подходит, если надо гарантировать появление новости в определнный момент в определенном месте;timeout - сколько времени (минимум) новсть провисит на BBS.
5. Выборкой новости можно управлять. Причем настолько гибко, что лучше наверное и придумать невозможно. Между тегами [article] и [/article] допустимы следующие теги:[eval script='...' args='...' neg='...' /][ondisplay script='...' args='...' /][onremove script='...' args='...' /]
где [eval script...] - назначает скрипт-функцию, возвращаемое значение которой и определяет будет ли новость показана. Т.е. если скрипт вернет TRUE - новость будет выбрана для показа когда игрок откроет BBS на какой-то станции. Допускается комбинировать любое множество тегов [eval] каждый со своим скриптом, при этом каждый последующий [eval] будет выполняться, только при условии, что предыдущий слева вернул TRUE.[ondisplay script...] - назначенный скрипт сработает в момент просмотра данной новости игроком, т.е. в момент открытия страницы новости на BBS. Если игрок не войдет на BBS, либо не пролистает ее до данной новости, скрипт не сработает.[onremove script...] - назначенный в этом теге скрипт сработает когда новость будет убрана с BBS.
|
МАКРОСЫ
Еще одна удобная фитча это МАКРОСЫ. Прописываются они на странице 1294 ID 1, там макросам присваивается имя и соответствующий скрипт и устанавливаются аргументы, а уже в зависимости от возвращаемого скриптом значения будет и дальнейшее управление отображением новость. Это тоже подробно обсуждалось в посте АКМ
akm : |
В качестве аргументов скрипту можно передавать не только конкретные константы (кстати допускаются даже массивы), но и ряд переменных: $PAGE$, $PRODUCT$, $RACE$, $SECTOR$, $STATION$ - т.е. страница xml, на которой находится данная новость; продукт текущей станции, выборка новости в BBS которой производится; ну и остальные параметры данной станции. Есть опасение, что может сработать даже $TRADERANK$ и FIGHTRANK$Но надо бы проверить, т.к. в документации про это ни слова.Вот вам пример:
Код: Text ID #1:[article][eval if_race='boron' if_type='{6,-1}'/](BBS должна быть боронским доком)[eval if_time_min='14400'/](игрок должен был проиграть более 4 часов)[eval setstate='1,2'/] (если пред. два скрипта вернули TRUE, то изменить state новости с 1 на 2. Прямо С++ [ondisplay setstate='1,3'/] (когда игрок увидит новость, ее state изменится на 3)[/article][author]Boron Press Agency[/author][title]Article #1 Headline[/title][text]Article #1 Text[/text]
Не удивляйтесь тому, что нету имен скриптов, т.к. просто используются макросы. Что какой макрос означает, видно на странице 1294 файла 440001.xml.Например: [declare name='if_race' script='!bbsnews.eval.ownerrace' args='{$ARG$}'/]
|
А вот вам развертка этого тега
[article state='0']
[declare name='setstate' script='!bbsnews.misc.setstate' args='$PAGE$,$ARG$'/]
[declare name='if_state' script='!bbsnews.eval.state.eq' args='$PAGE$,$ARG$'/]
[declare name='ifnot_state' script='!bbsnews.eval.state.eq' args='$PAGE$,$ARG$' neg='1'/]
[declare name='if_state_le' script='!bbsnews.eval.state.le' args='$PAGE$,$ARG$'/]
[declare name='if_state_gt' script='!bbsnews.eval.state.le' args='$PAGE$,$ARG$' neg='1'/]
[declare name='if_sector' script='!bbsnews.eval.sector'/]
[declare name='ifnot_sector' script='!bbsnews.eval.sector' neg='1'/]
[declare name='if_split_fire' script='!bbsnews.eval.sector' args='3,5'/]
[declare name='if_race' script='!bbsnews.eval.ownerrace' args='{$ARG$}'/]
[declare name='ifnot_race' script='!bbsnews.eval.ownerrace' args='{$ARG$}' neg='1'/]
[declare name='if_product' script='!bbsnews.eval.product' args='{$ARG$}'/]
[declare name='ifnot_product' script='!bbsnews.eval.product' args='{$ARG$}' neg='1'/]
[declare name='if_type' script='!bbsnews.eval.stationtype' args='{$ARG$}'/]
[declare name='ifnot_type' script='!bbsnews.eval.stationtype' args='{$ARG$}' neg='1'/]
[declare name='if_age_min' script='!bbsnews.eval.age'/]
[declare name='if_age_max' script='!bbsnews.eval.age' neg='1' /]
[declare name='if_sysdate' script='!bbsnews.eval.sysdate'/]
[var name='RACE' script='!bbsnews.get.ownerrace'/]
[var name='STATION' script='!bbsnews.get.environment'/]
[var name='SECTOR' script='!bbsnews.get.sector'/]
[var name='PRODUCT' script='!bbsnews.get.product'/]
[/article]
теперь понятно что в языковом файле означают все эти $ARG$ $PRODUCT$ $SECTOR$ все просто элементарно. ИМХО это открывает дверь к новым возможностям, нужно их только подогнуть под себя.
Информацию по этой теме я и прошу. Если кто что где видел пишите. Найдем и изучим.
_________________ Звезды зовут... |
|
|
Krom
455 EGP
   Рейтинг канала: 1(1) Репутация: 159 Сообщения: 1988 Откуда: Горы Урала Зарегистрирован: 19.07.2005
 |
|
DragonP : |
ИМХО он «мертвый»
|
Скорее, обработчик просто нельзя назначать из редактора, так как он вшит в движок.
_________________ Не спешите меня. |
|
|
|
|
|
Канал X2: The Threat: «FAQ: Скриптописание» |
|