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

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

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

   Страница 2 из 3
На страницу: Пред.  1, 2, 3  След. | Все страницы
Поиск в этой теме:
Канал X2: The Threat: «Скриптовые миссии»
Гиперионыч
 





Цитата:
Титаник, Гигантик и Атлантик


Поправка: братьев-близнецов печально знаменитого лайнера звали "Олимпик" и "Британник".
    Добавлено: 22:33 08-09-2004   
RAider
 405 EGP


Рейтинг канала: 2(21)
Репутация: 133
Сообщения: 1294
Откуда: Таганрог
Зарегистрирован: 08.07.2003
http://www.elite-games.ru/conference/viewtopic.php?t=21512
вот тама скриншоты.

это их потом звали так...после гибели титаника их переименовали...чтоб не было похоже... Улыбка...

правда, насчет атлантика не уверен, а гигантик точно был...его в британник переименовали... Улыбка
_________________
Smart is the new Sexy.
    Добавлено: 22:41 08-09-2004   
akm
 470 EGP


Рейтинг канала: 1(4)
Репутация: 173
Сообщения: 1638
Откуда: Паразит Прайм
Зарегистрирован: 23.10.2002
Цитата:
имеется ввиду Superliner class Galaxy....это такой ТЛ (заменяет ксенский) размером с М0....

А ну тогда все ясно Хы... Я твой мод еще не успел заценить Улыбка
Ну таких жлобов должны М6 охранять имхо. М5-М3 - слишком дешево, а М2 слишком круто, они же не на войну летят.
Для лайнера "Титаник" у меня есть идея миссии Гы-гы
"Титаник сталкивается с астероидом, несколько тысяч пассажиров выкидываются в космос в скафандрах и их нужно быстро подобрать и отвезти на станцию. Кислород то ограничен. Да и каки не спят" Улыбка
    Добавлено: 22:48 08-09-2004   
RAider
 405 EGP


Рейтинг канала: 2(21)
Репутация: 133
Сообщения: 1294
Откуда: Таганрог
Зарегистрирован: 08.07.2003
Улыбка...рулез)....тока не с астероидом натуральным, а такой сценарий:
1)нужно чтоб игрок или нанялся охранником или грузовозом на лайнер, потом
2)лайнер отклоняется гденить от маршрута, чтобы осмотреть какунить красивую туманность, а там -
3)сигнал тревоги, в лайнер врезается микрометеоритный поток,пропущенный изза халатной настройки щита, протаранивает мостик и двигательный отсек, корабль без управления летит в сторону ближ планеты, пассажиры в панике прыгают за борт в скафандрах, скафандров на всех не хватает...
4)а тут ищщо и пираты решили воспользоваться моментом.

игрок должен - а)если охранник - то сопроводить TP\TS с пассажирами до станции....б)если сам на ТP\TS, то как можно быстрее отвезти пассажиров....и хорошо, что М3 меньше по скорости, чем, например игуанаУлыбка...быстро повезешь - оторвешься от эскорта, повезешь медленно - не успеешь всех спасти Улыбка...
_________________
Smart is the new Sexy.
    Добавлено: 23:03 08-09-2004   
RAider
 405 EGP


Рейтинг канала: 2(21)
Репутация: 133
Сообщения: 1294
Откуда: Таганрог
Зарегистрирован: 08.07.2003
можно завязать вариант с крушением на предыдущие миссии игрока....сколько раз он лайнер сопроводил нормально, а на какойто раз случайно - крушениеУлыбка
_________________
Smart is the new Sexy.
    Добавлено: 23:17 08-09-2004   
Dimaxx
 1016 EGP


Рейтинг канала: 1(5)
Репутация: 204
Сообщения: 5812
Откуда: Северодвинск
Зарегистрирован: 26.06.2002
Мля, вы там чё затеваете, братцы-фантасты?! Я такую миссию хачу!! Даешь Титаник! Ой, не могу!..
_________________
"Если мы не покончим с войной, война покончит с нами." Г. Г. Уэллс
    Добавлено: 23:21 08-09-2004   
Dimaxx
 1016 EGP


Рейтинг канала: 1(5)
Репутация: 204
Сообщения: 5812
Откуда: Северодвинск
Зарегистрирован: 26.06.2002
Можно давать новую экспериментальную станцию (кристальницу или трубочницу, но необязательно только эти), которая работает только на батареях и кремнии. Типа, автоматика. И никакой жратвы! Пробовал скриптом - работает.
_________________
"Если мы не покончим с войной, война покончит с нами." Г. Г. Уэллс
    Добавлено: 23:27 08-09-2004   
akm
 470 EGP


Рейтинг канала: 1(4)
Репутация: 173
Сообщения: 1638
Откуда: Паразит Прайм
Зарегистрирован: 23.10.2002
Итак, вопреки тому что я назвал построение открытой системы для добавления новых custom-миссий почти невозможным, вот попытка создания такой системы (страсть у меня браться за все невозможное Гы-гы ) Конечно, многое придется делать через Задница

Алгоритм генерации событий/миссий
Тут и алгоритмы, и правила - пока все в одной куче, но на то она и предварительная версия для обсуждения. То, что я лично возьмусь за ее реализацию, я пока не подписываюсь. Времени пока что совсем нет Расстроен Просто выкладываю свои мысли и наброски, дабы не пропали. Вам они наверняка пригодятся Подмигиваю

Глобальный скрипт "setup.plugin.MissionLauncher". Содержит бесконечный цикл, в котором производится:

1. Поиск Advanced Satellite определенной расы в радиусе 8км от [PLAYERSHIP].
2. Если спутник не найден, то goto п.11.
3. Чтение Уровня Cложности DifficLvl и боевого(торгового) рейтинга Rating из глоб переменных. (DifficLvl=1 для Easy, 2 для Normal, 4 для Hard и 8 для X-Treame)
4. Вычисление типа задания MissionType (убийство/эскорт/захват/разведка/торговая миссия и т.д.)
5. Вычисление модификатора сложности DifficMod в интервале 5 - 20.
6. Вычисляем сложность миссии: MissionDiffic = DifficMod * DifficLvl * Rating / k
7. Запуск скрипта поиска миссии "Find.Suitable.Mission" (MissionType, MissionDiffic)
8. Если ничего не найдено, goto п.4.
9. Запуск миссии с параметром MissionDiffic. Имя главного скрипта миссии должно быть в формате "mission.ХХХ", где ХХХ - три цифры. В этом скрипте должна быть только проверка доп. условий для миссии и запуск очередного скрипта собственно миссии с префиксом START и немедленный возврат с результатом, отражающим пошла ли миссия на выполнение.
10. Если миссия не пошла на выполнение (не удовлетворяют доп. условия), goto п.4.
11. Wait 10 sec

Замечание. Вычисления в п.4 и 5 подразумевают либо генератор случайных чисел, либо вычисления на основании местоположения спутника (как я писал выше, в пограничных секторах сделать задания по-сложнее), либо ... предлагайте Подмигиваю

Таким образом, авторы миссий предоставляют следующие файлы:
1) setup.plugin.missionXXX
2) mission.ХХХ
3) любые другие файлы с произвольным именем, но начинающимся на "mXXX.",
где ХХХ - три цифры, т.е. уникальный идентификатор миссии.


Скрипт "setup.plugin.missionXXX":

1. Если глоб. переменная "MissionXXX.Version" существует и ее значение равно текущей версии скрипта, то Return.
2. Если глоб. переменная "MissionXXX.Version" = null, то прочитать глоб. переменную "Missions.Total" и увеличить ее значение на 1, предварительно присвоив ее CurMission. Иначе найти ХХХ в глоб. массиве "Mission.Array.MissionID" и установить CurMission = индексу найденного элемента.
3. Установить глоб. переменную "MissionXXX.Version" = версии данного скрипта. (Внимание, версия должна быть > 0)
4. Установить "Mission.Array.MissionID"[CurMission] = ХХХ. Здесь и далее, если речь идет о глобальной переменной, то я ее буду выделять в кавычки.
5. Установить тип миссии "Mission.Array.Type"[CurMission] (убийство/эскорт/захват/разведка/торговая миссия и т.д.)
6. Установить минимальный необходимый расовый рейтинг у каждой расы, необходимый для активации данной миссии "Mission.Array.ArgonRating"[CurMission], "Mission.Array.BoronRating"[CurMission] и т.д. Рейтинг > 2000 000 000 означает, что миссия не доступна у данной расы.
7. Установить минимальный и максимальный возможный уровень сложности для данной миссии "Mission.Array.MinDiffic"[CurMission] и "Mission.Array.MaxDiffic"[CurMission]


Скрипт "mission.ХХХ" (Difficulty):

1. Проверка доп. условий для данной миссии и, если хотя бы одно из условий не выполняется, то Return null.
2. START @ null-> call script 'mXXX....' difficulty = Difficulty
3. Return 1.


Скрипт "Find.Suitable.Mission" (MissionType, MissionDiffic):

1. CurSector = [PLAYERSHIP]-> get sector
2. MissionRace = CurSector-> get race
3. MaxIndex = get global variable 'Missions.Total' - 1
3. Случайная выборка миссии из массива "Mission.Array.MissionID" [0..MaxIndex], на основании параметров MissionType, MissionDiffic, CurSector, текущего расового рейтинга у MissionRace, и др.
для поиска используются все данные, зарегестрированные в скриптах "setup.plugin.missionXXX":
Mission.Array.Type
Mission.Array.MinDiffic
Mission.Array.MaxDiffic
Mission.Array.ArgonRating
Mission.Array.BoronRating
...

4. Return MissionID

P.S. Чего еще не хватает.
1) В "setup.plugin.MissionLauncher" нужно заложить некоторую задержку, после того как игроку отправлено задание миссии. Либо дождаться пока игрок не покинет зону 8км от спутника. Т.е. если задание ему не понравилось, то следующее он получит либо просто подождав, либо вылетев/влетев в зону 8км от спутника.

2) В "setup.plugin.missionXXX" заложить механизм удаления миссии из массива, т.е. на случай если сам игрок захочет деинсталировать миссию. Либо сделать спец. скрипт "setup.plugin.DELmissionXXX" для этой же цели.
    Добавлено: 02:19 09-09-2004   
Grey Wolf
 500 EGP


Рейтинг канала: 2(17)
Репутация: 115
Сообщения: 1677
Откуда: Ростов-на-Дону
Зарегистрирован: 31.03.2003
2 АКМ: Респект! Классная мысль Улыбка
    Добавлено: 13:08 09-09-2004   
XenonTomb
 250 EGP


Рейтинг канала: 2(16)
Репутация: 66
Сообщения: 867
Откуда: Николаев, Украина
Зарегистрирован: 17.03.2004
Grey Wolf :
2 АКМ: Респект! Классная мысль Улыбка

Да.АплодисментыКласс!
_________________
Будут предложения - присылайте на расчетный счет :)
    Добавлено: 09:29 10-09-2004   
Grey Wolf
 500 EGP


Рейтинг канала: 2(17)
Репутация: 115
Сообщения: 1677
Откуда: Ростов-на-Дону
Зарегистрирован: 31.03.2003
Однако у меня все таки есть сомнения в возможности создать полностью открытую систему. Я пока не пробовал, времени не было, но сомнения гложут вот по какому поводу:
глобальный скрипт, который в конечном итоге запускает скрипт миссии, должен иметь команду
START [THIS]->сall script: missionxxx
Откуда однако, в случае открытой системы, эта команда с именем скрипта missionxxx попадет в текст глобального скрипта? Подозрение.
Если бы эту команду можно было записать в виде
START [THIS]->сall script: $missionxxx
где $missionxxx имеет значение имени скрипта missionxxx, вопросов нет. Но вряд ли такая команда будет работать. Вполне вероятно, что ее в таком виде даже не удасться записать.
_________________
Быстро выпитая рюмка не считается налитой
    Добавлено: 12:07 10-09-2004   
Grey Wolf
 500 EGP


Рейтинг канала: 2(17)
Репутация: 115
Сообщения: 1677
Откуда: Ростов-на-Дону
Зарегистрирован: 31.03.2003
Похоже, придумал я, как вышеописанные трудности преодолеть Улыбка
Каждый скрипт миссии должен запускаться сразу в глобальном режиме и висеть в режиме ожидания (практически не нагружая процессор), пока мастер скрипт не разрешит миссии стартовать.
Файл setup.plugin.missionxxx первым делом должен проверить, запущен скрипт миссии, или еще нет. Если уже запущен, return null, иначе при каждой загрузке с сэйва скрипт миссии будет запускаться по новой вдобавок к уже запущенному. То же самое относится и к мастерскрипту, управляющему стартом миссий.
Если скрипт миссии еще не запущен (первая загрузка игры, после копирования скриптов с миссией в папку scripts), то добавить ячейку в массив глобальной переменной с миссиями и запустить скрипт миссии с префиксом START, передав ему в качестве аргумента персональный номер в указанном массиве.
Скрипт миссии периодически проверяет свой номер в массиве, если там null, ждет например секунд 20, если там число, миссия стартует с аргументом это число. Данное число будет определять сложность миссии. После завершения миссии скрипт переписывает это число на null и опять переходит в режим ожидания.
Мастер скрипт, который определяет, какой миссии и когда стартовать, после проверки разных условий, в том числе, запущены уже какие-то миссии или нет, принимает решение: стартовать миссии с таким-то номером и таким-то уровнем сложности. Тогда он записывает в ячейку массива этот уровень сложности.
Возможно, кроме уровня сложности потребуется, чтобы мастерскрипт передавал скриптам миссий еще какие-то аргументы. Для этого надо будет предусмотреть еще несколько глобальных переменных в виде массивов, в каждом массиве миссия будет иметь один и тот же номер.

Для того, чтобы все это работало, надо будет написать рыбу скрипта setup.plugin.missionxxx а также рыбу с началом и окончанием скрипта миссии. Дальше каждый желающий дописывает в скрипт миссии все свои фантазии, исполненные на этом весьма неудобном языке Улыбка
_________________
Быстро выпитая рюмка не считается налитой
    Добавлено: 12:57 10-09-2004   
akm
 470 EGP


Рейтинг канала: 1(4)
Репутация: 173
Сообщения: 1638
Откуда: Паразит Прайм
Зарегистрирован: 23.10.2002
А я же не просто так писал
Цитата:
Конечно, многое придется делать через Задница

Гы-гы В данном случае проблемку с сall script: $missionХХХ я собирался решить тупо в лоб:
if MissionID==0 call script: 'mission.000'
else if MissionID==1 call script: 'mission.001'
else if MissionID==2 call script: 'mission.002'
...
И набирать несколько сотен строк (сколько там у нас миссий будет?) я вручную не собираюсь. Я элементарно могу сгенерировать codearray на основании того факта, что все строки в этом массиве одинаковые "else if...".

ИМХО такой вариант будет нагружать проц меньше предложенного тобой выше. И можно пойти еще дальше в плане минимизации количества исполняемых команд:
Код:
if MissionID < 500
   if MissionID < 250
   ...
else
   if MissionID < 750
   ...
end
    Добавлено: 16:29 10-09-2004   
Romoro
 90 EGP


Репутация: 8
Сообщения: 156
Откуда: Ижевск
Зарегистрирован: 24.03.2004
Есть предложение для мода с новыми кораблями. В финальной версии корабли будут давать за выполнение миссий, так вот возможный вариант для пиратского Драккара.
Залетаете к пиратам на станцию, в доске объяв видите, что у них передохли все рабы, и надо срочно новых , да побольше.Миссия для ТР, надо найти пассажиров, но отвезти не в нужное место, а к пиратам. Причем например за 50-100 человек-дают Драккар-S,за 100-200 Драккар-M, за 200<Драккар-L.
Вот такая миссия, подлого заманивания пассажиров.
Увы из меня никакой скриптописец, так что если интересно, то пусть пишут спецы.
_________________
Ваше слово товарищ GHEPT , ваш вылет товарищ HORNET......
    Добавлено: 18:32 10-09-2004   
Romoro
 90 EGP


Репутация: 8
Сообщения: 156
Откуда: Ижевск
Зарегистрирован: 24.03.2004
Да еще, все это надо успеть за время.В этой миссии прийдется взять другую миссию-по перевозке, вот в этом и прикол, успеешь найти предложение на перевозку, или нет.
_________________
Ваше слово товарищ GHEPT , ваш вылет товарищ HORNET......
    Добавлено: 18:54 10-09-2004   
Romoro
 90 EGP


Репутация: 8
Сообщения: 156
Откуда: Ижевск
Зарегистрирован: 24.03.2004
Блин ,забыл. Надо же наказать за то, что продал в рабство пассажиров. Предлагаю либо просто понижение рейтинга у рассы, на чьей станции ты взял пассажиров, либо вообще чтобы станция обиделась и покраснела. Во теперь все.
_________________
Ваше слово товарищ GHEPT , ваш вылет товарищ HORNET......
    Добавлено: 19:32 10-09-2004   
akm
 470 EGP


Рейтинг канала: 1(4)
Репутация: 173
Сообщения: 1638
Откуда: Паразит Прайм
Зарегистрирован: 23.10.2002
2 Romoro
Научись редактировать сообщения! Все это можно было 1 постом написать.

2 RAider
Забыл сказать, что надо все твои идеи брать на воороужение. Неплохие миссии получаться Круто! Сам я про Титаник скорее ради прикола написал Улыбка Но теперь вполне тянет на миссию. Кстати, можно на такие супер-лайнеры спец-скрипт вешать на SIGNAL_KILLED. Ведь вполне может случиться что такая громадина все же погибнет по естественным причинам, например автопилот не впишется в ворота или попадет в какую чудовищную битву. Т.е. вместо мгновенной смерти, лайнер еще посылает SOS и производит ряд эвакуационных действий по спасению жизни пассажиров.

А вот еще идейка миссии, навеенная событиями в игре:
Летит значит наш Юлиан в поисках очередных приключений к Advanced Satellite, и вдруг обнаруживает, что спутничек то какам принадлежит Ух ты!.. "Миссия от каков?" Подозрение. Подлетает он значит ближе и получает такое сообщеньице:
"SOS. SOS. SOS. Мы в безвыходном положении, наша раса на гране вымирания...
В ходе межгалактических исследований наша раса столкнулась с субъектом, противстоять которому не в состоянии никакое оружие во Вселенной. Этот марадер беспрерывно прочесывает сектор за сектором в поисках наших кораблей и безжалостно их истребляет, а иногда даже захватывает(!). А вот теперь он уже добрался и до наших секретных секторов, беспощадно уничтожая там все живое.
За голову этого марадера мы готовы заплатить любые деньги, и даже подарим вам абсолютно любой сектор, предварительно его зачистив от любого, кто не согласиться принять Вас своим губернатором.
К сожалению, нам очень мало известно об этом марадере, т.к. все наши разведчики поплатились своей жизнью... Достоверно известно лишь то, что он постоянно меняет свои корабли, не гнушаясь ни одним из классов, кидается как бык на все красное в секторе, а при попытке связи с ним всегда почему-то упоминает чью-то мать. А иногда посылает в открытый космос какие-то загадочные сообщения: Thereshallbewings"
Хы... Это скорее прикол, но сорри, не стерпел Я не при чем...
    Добавлено: 20:15 10-09-2004   
akm
 470 EGP


Рейтинг канала: 1(4)
Репутация: 173
Сообщения: 1638
Откуда: Паразит Прайм
Зарегистрирован: 23.10.2002
Grey Wolf :
Если бы эту команду можно было записать в виде
START [THIS]->сall script: $missionxxx
где $missionxxx имеет значение имени скрипта missionxxx, вопросов нет. Но вряд ли такая команда будет работать. Вполне вероятно, что ее в таком виде даже не удасться записать.

Да. Даже не удастся записать. Специально расковырял Codearray всех команд что предназначены для запуска скриптов, ни в одной нет возможности указания типа для поля <Имя скрипта>, т.е. переменную туда не всунуть. Еще проверил GOTO на предмет косвенной адресации - тоже обломс Расстроен
Так что придется либо генерить огромный файл if MissionID==XXX call 'Mission.XXX' (не проблема для меня, я Codearray уже неплохо знаю),
либо делать как ты предложил.
    Добавлено: 11:00 11-09-2004   
RAider
 405 EGP


Рейтинг канала: 2(21)
Репутация: 133
Сообщения: 1294
Откуда: Таганрог
Зарегистрирован: 08.07.2003
akm :
Хы... Это скорее прикол, но сорри, не стерпел Я не при чем...


Ой, не могу!.. ..... имхо - надо приколами такими разнообразить мод Улыбка....получится вполне неплохо...

да насчет лайнера - а, что если игрок сам хозяин такого лайнера?...нужно ему команду нанять (в комплекте вместе с мэнэджером-софтом Улыбка)...и проложить маршрутец....можно такую дуру самому пилотировать, а можно охранять рядом....пассажиры вредоносные должны периодически третировать всякого рода просьбами Улыбка...пираты не дадут спокойно спать за штурвалом Улыбка...плюс еще, например, полицейские патрули начнут останавливать и проводить обыски на борту Улыбка...
такая вот мысля естьУлыбка....да, и количество пассажиров должно определятся временем, проведенным пристыкованным на станции (верфи)...
_________________
Smart is the new Sexy.
    Добавлено: 17:49 12-09-2004   
Tnax
 270 EGP


Рейтинг канала: 1(3)
Репутация: 52
Сообщения: 930
Откуда: Russia, Voronezh
Зарегистрирован: 20.01.2004
Прикол приколом, но и в новости пойдёт.
В продолжение, есь в тексте в разделе про такси текст про ксеноновское такси....
_________________
Люблю когда прицел... вдруг синевеет! :)
    Добавлено: 10:45 13-09-2004   
Канал X2: The Threat: «Скриптовые миссии»
На страницу: Пред.  1, 2, 3  След. | Все страницы
  
Показать: 
Предыдущая тема | Следующая тема |
К списку каналов | Наверх страницы
Цитата не в тему: Никогда не называйте аргонца - козлом, боронца - карасем, а телади - бессребренником!

  » Скриптовые миссии | страница 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