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

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

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

   Страница 2 из 2
На страницу: Пред.  1, 2 | Все страницы
Поиск в этой теме:
Канал X3: Reunion » Модовый и скриптовый отсек X3: Reunion: «Новые скриптовые команды. Угадайка.»
GrayCardinal
 77 EGP


Репутация: 16
Сообщения: 93
Откуда: Смоленск
Зарегистрирован: 03.04.2006
<RetVar> = get ship array: of race <Var/Race> class/type=<Value>
Возвращает массив всех кораблей класса <Value> пренадлежащей рассе <Var/Race> по всей вселенной, не зависит от того известен был корабль игроку или нет.
<RetVar> = get station array: of race <Var/Race> class/type=<Value>
Тоже самое что и с кораблями только для станций.
_________________
CPU not found ! Run the software emulation.
    Добавлено: 09:44 30-06-2006   
Andrei [<>Ace]
 303 EGP


Рейтинг канала: 6(416)
Репутация: 108
Сообщения: 766
Откуда: Беларусь, Салiгорск
Зарегистрирован: 29.03.2006
General :
В отличие от FIND, указанные команды работают очень быстро


FIND ищут объекты подходящие под определенные параметры; к примеру "ближайший" или "массив ближайших определенной рассы".
А команды представленные в посте GrayCardinal все попорядку с минимум сортировок.
Естественно будут выполняться быстрее. Сравнивать их не нужно, каждая выполняет свои функции и одинаково полезна.
    Добавлено: 11:35 30-06-2006   
Andrei [<>Ace]
 303 EGP


Рейтинг канала: 6(416)
Репутация: 108
Сообщения: 766
Откуда: Беларусь, Салiгорск
Зарегистрирован: 29.03.2006
Торговые команды :

Вернусь еще раз к этим командам.
Действительно все комманды типа:
find station: product ...
find station: resource ...
find station sells: resource ...

Ищут станции среди известных рассе объекта указанного в trader=<Var/Ship/Station>, при этом команды типа
find station: product ...
учитывают возможна ли продажа товара объекту ввиду низкого рассового рейтинга у рассы к которой принадлежит искомая станция.

Данная группа команд:
<RetVar/IF> find station: product <Var/Ware> with best price depend on jumps: max.price=<Var/Number>, amount=<Var/Number>, max.jumps=<Var/Number>, startsector=<Var/Sector>, trader=<Var/Ship/Station>
<RetVar/IF> find station: resource <Var/Ware> with best price depend on jumps: min.price=<Var/Number>, amount=<Var/Number>, max.jumps=<Var/Number>, startsector=<Var/Sector>, trader=<Var/Ship/Station>
<RetVar/IF> find station sells: resource <Var/Ware> with best price depend on jumps: max.price=<Var/Number>, amount=<Var/Number>, max.jumps=<Var/Number>, startsector=<Var/Sector>, trader=<Var/Ship/Station>


Осуществляет поиск станций принимая в расчет затраты на прыжок (количество батареек * на их стоимость).
    Добавлено: 13:05 29-07-2006   
AlexV
 555 EGP


Гранёный
Рейтинг канала: 7(561)
Репутация: 182
Сообщения: 1157
Откуда: нискажу
Зарегистрирован: 10.01.2006
register quest script <Script Name> instance multiple = <Var/Number>
instance multiple = <Var/Number> - вообще, как я понял - это должно быть значение True/False, определяет количество допустимых одновременных отображений в BBS новостях. Но при маленьком числе по моим наблюдениям сильно снижается вероятность показа в новостях вообще.

<Script Name> - передаётся имя скрипта с BBS квестом.
к скрипту предъявляются определённые требования, собственно скрипт должен иметь такую структуру
Цитата:

Аргументы
1: Object , Value , 'сам объект квеста'
2: Event , Var/String , 'строка события (в каком состоянии находится квест)'
3: Array.Data , Value , 'массив пользовательских данных'
4: Answer , Var/String , 'ответ игрока (какую кнопку выберет)'

тело скрипта, ес-но должно разруливать события... выглядит это примерно так:
Код:

005   * Первый вызов скрипта (инициализация) - вызывается при загрузке
      * сохранения или старте новой игры
006   if $Event == 'init'
007   
008   * вызывается, когда начинается формирования списка новостей на BBS
      *нужно возвращать приоритет квеста (от 0 до 100, чем больше - тем выше вероятность показа, но даже при 100 нет полной гарантии показа)
009   else if $Event == 'prio'
010    return 100
011   
012   * собственно, тут радуемся, что нам повезло :) - новость надо показывать
013   else if $Event == 'offer'
014    $Message = sprintf: pageid=$Page.ID textid=1, 'Test', null, null, null, null
       *обязательно тут готовим сообщение и устанавливаем состояние нашего квеста в "показывается"
015    set quest state with message: quest=$Object state=[Quest.Offered] msg=$Message
016   
017   * тут можем убедиться, что игрок долистал до нашей новости :gigi:
018   else if $Event == 'display'
019   
020   * Вызывается, когда игрок выбрал какую-нибудь кнопку в нашем квесте.
      * что именно - в аргументе 4: Answer , Var/String
021   else if $Event == 'select'
022    $Message = sprintf: pageid=$Page.ID textid=3, 'Test', null, null, null, null
      * собственно мы тут должны проверить всё, что нам может не понравиться в игроке,
      * и либо послать ему send incoming message, либо установить состояние квеста в "принят на исполнение"
023    set quest state with message: quest=$Object state=[Quest.Accepted] msg=$Message
024   
025   * Вызывается сразу после принятия квеста
026   else if $Event == 'accept'
      * так мы можем установить дополнительный таймер нашего квеста...
      * Тут начинаются проблемы:
      * почему-то событие 'timer' срабатывает всего один раз, повторная установка таймера не даёт эффекта.
027    set quest/event $Object timer to 1000ms
      * Аналогично таймеру, но устанавливается общий таймаут на весь квест,
      * по завершению следует вызов с событием 'timeout' и сразу следом вызов с событием 'destruct'
      * время таймаута задаётся в секундах
028    set quest $Object timeout to 60
      *обрабатываемся в таймере (можно без проблем задерживать возврат
      * управления из скрипта, но желательно укладываться в общий таймаут.
030   else if $Event == 'timer'
031    $TestTime = 60
032    while $TestTime > 0
033     $TestTime = $TestTime - 10
034 @   = wait 10000 ms
035     $Message = sprintf: pageid=$Page.ID textid=4, $TestTime, null, null, null, null
036     send incoming message $Message to player: display it=[TRUE]
037    end
038    set quest state with message: quest=$Object state=[Quest.Finished] msg=null
      * сам таймаут, после этого события объект квеста будет уничтожен движком.
039   else if $Event == 'timeout'
      * на всякий случай устанавливаем состояние квеста в "завершён"
040    set quest state with message: quest=$Object state=[Quest.Finished] msg=null
041   
      * собственно вот это событие должно само каким-то макаром вызываться, у меня оно вообще ни разу не вызвалось... :(
042   else if $Event == 'check'
044   end
046   return null


Немного про состояния
Quest.Question - передается фоновое входящее сообщение игроку без автоматического открытия.
Quest.Aborted - отмена квеста, сообщение игроку передаётся

самое интересное
Quest.Continued - эффект остался неизвестным пока, сообщение не передается игроку.
пока предполагаю, что должно быть связано с событием 'check'
Заставить работать не получилось, мож у вас получится? Рыдания.

во вложении лежит шаблон, который делал для экспериментов
желающие могут продолжить мучить движок BBS на предмет оживления события 'check'
там же приложен языковый файл с форматированием сообщения и примером оформления кнопки.

PS
давайте делать свои BBS квесты, а то чего только буржуйские есть? Подмигиваю

QuestTemplate.rar
 Описание:
шаблон квеста с языковым файлом
 Имя файла:  QuestTemplate.rar
 Размер файла:  2.66 KB
 Скачано:  574 раз(а)

_________________
а хуже всего приходится программистам из Microsoft. Им в случае чего и обругать-то некого
    Добавлено: 04:05 11-08-2006   
Канал X3: Reunion -> Модовый и скриптовый отсек X3: Reunion: «Новые скриптовые команды. Угадайка.»
На страницу: Пред.  1, 2 | Все страницы
  
Показать: 
Предыдущая тема | Следующая тема |
К списку каналов | Наверх страницы
Цитата не в тему: Главное, в очковую зону к нему пристроиться - и он весь твой! (рецепт от Starck'a)

  » Новые скриптовые команды. Угадайка. | страница 2
Каналы: Новости | 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