stranger
|
|
|
---Elite--- |
|
Зарегистрирован: 15.05.11 Сообщений: 1531
|
Walker: А наши доблестные OXP-писцы ставят себе задачу писать ОХР на выполнение миссий? За РСЛ ручаться не буду - они привыкли периодически устраивать сюрпризы, потрясая Оониверсум своими революционными преобразованиями. Наши песцы из Stranger's World пока занимаются обустройством подмостков, на которых будет вершиться интрига. Да и блох из предыдущих поделок надо вычесывать. Так что как минимум до Нового года буду занят текущими проектами. Но в принципе задумки на будущее есть.
|
|
|
|
Tch
|
|
|
---Elite--- |
|
Зарегистрирован: 02.12.12 Сообщений: 795
|
vasig: ...Заправившись на орбитальной станции, я стартовал и, как всегда, взял курс прямо от станции, чтобы поскорее достичь той точки из которой можно будет осуществить прыжок. Цель моего полета находилась на расстоянии 6.8 LY! К тому же на этой станции я не смог (ни за какие деньги) пополнить запасные топливные баки. То есть лишнего топлива не было. Я посматривал одновременно на индикатор гравитации и на индикатор расхода топлива. Вот уже и станция исчезла с поля радара, а прыгать нельзя! Через несколько минут хладнокровный голос компьютера сообщил, что топлива на прыжок недостаточно! Простите, vasig, но что-то я не пойму ситуацию: Вы на Топливном инжекторе, что ли, оттягивались от станции - с расходом топлива? Обычно, когда надо прыгнуть в далёкую звёздную систему, то от станции оттягиваются на обычном двигателе, стараясь не расходовать ни капли драгоценного топлива. Как же Вы так легкомысленно поступили, оттягиваясь на Топливном инжекторе? Walker: ...А какое качество графики для показываемых объектов и где появляется изображение? Можно скриншот? Простите, Walker, что отвечаю не сразу - занят был. Ситуация с картинками/фотографиями такая. Когда-то давно я научился вставлять картинки в игру в определённых игровых ситуациях. Опытным путём установил наиболее приемлемый для своего монитора и окна (я играю в Oolite не на полном экране, а в окне - мне так удобнее) размер картинки - 1420 x 960 пикселей в формате .PNG При этом в игре происходит ужатие этой картинки точно до размеров моего окна (при заданном удобном мне разрешении экрана), с небольшой потерей чёткости (некоторая "замыленность" происходит). Мне это нравится, а многим - нет. По разным причинам - кто-то не любит комиксов (а появление картинок очень похоже на комиксы), у кого-то картинка не подходит под его настройки - размеры монитора и разрешения экрана, и т.д. и т.п. Так вот, в пакете " Tch_Equipment_Modern_Advanced_Compass.oxp" картинки появляются в следующих игровых ситуациях: 1. Когда корабль выныривает поблизости от маяка гипер-перехода. Если поблизости от этого маяка дощёлкать Компасом до его маркера " W" на Компасе, то появится картинка советского художника-фантаста Соколова "Радионавигационный маяк". Я её туда поставил потому, что просто поразительно, как все маяки в игре похожи на конструкцию маяка в этой картинке. 2. Если корабль попадает в астероидное облако, то захватив в прицел любой астероид, можно нащёлкать Компасом до маркера " цель" (кружочек с перекрестьем). При этом появится картинка - если это Астероид Отшельников, то фантастическая картинка "Станции на астероиде", а если это обычный астероид - то фотографии настоящих астероидов или картинки астероидов в космосе. Я не буду здесь приводить скриншот, просто зайдите в этом пакете в каталог " Images" и посмотрите любым просмотрщиком картинок что там находится. Вот это и будет появляться в игре. Walker: А наши доблестные OXP-писцы ставят себе задачу писать ОХР на выполнение миссий? В дальних планах стоит такая задумка. Но, пока "декорации" не готовы - нет смысла их писать. Хотя уже очень много сделано для подготовки к писанию миссий - отработаны некоторые игровые моменты, и получается неплохо для нашей "сельской местности".
|
|
|
|
vasig
|
|
|
---Elite--- |
|
Зарегистрирован: 01.10.12 Сообщений: 747 Откуда: Novosibirsk
|
to TchЭто "Gravity Well" так работает, что расход топлива есть всегда. К тому же я никогда не делаю переход пока не покину зону станции, даже если уже можно. Но это так - личные принципы. А в данном случае это конечно случайность, что из зоны притяжения планеты попал в зону притяжения Луны .
|
|
|
|
stranger
|
|
|
---Elite--- |
|
Зарегистрирован: 15.05.11 Сообщений: 1531
|
To vasig
Расход топлива в моих пакетах идет не в Gravity Well, а в Collapsible Shields. Но в принципе это идея на будущее - слить оба пакета в один и увеличить расход топлива в ближних окрестностях небесного тела. Я над этим подумаю.
|
|
|
|
Tch
|
|
|
---Elite--- |
|
Зарегистрирован: 02.12.12 Сообщений: 795
|
stranger: ...Расход топлива в моих пакетах идет не в Gravity Well, а в Collapsible Shields. Но в принципе это идея на будущее - слить оба пакета в один и увеличить расход топлива в ближних окрестностях небесного тела. Я над этим подумаю. Но зачем?!!! stranger, в чём соль этого игрового момента? С какой целью и по каким соображениям сделан расход топлива в окрестностях планетоидов?
|
|
|
|
Walker
|
|
|
Deadly |
Зарегистрирован: 14.08.13 Сообщений: 281 Откуда: Киев
|
To stranger
Не надо соединять и усложнять без нужды... Пусть излишний расход топлива будет отдельным ОХР - на любителя.
Кстати, меня волнует, а почему объем двигателя только на 7 св.л.? Почему нет на 10,12,15 ... 25? Что за число такое загадочное?
|
|
|
|
stranger
|
|
|
---Elite--- |
|
Зарегистрирован: 15.05.11 Сообщений: 1531
|
Tch: stranger: ...Расход топлива в моих пакетах идет не в Gravity Well, а в Collapsible Shields. Но в принципе это идея на будущее - слить оба пакета в один и увеличить расход топлива в ближних окрестностях небесного тела. Я над этим подумаю. Но зачем?!!! stranger, в чём соль этого игрового момента? С какой целью и по каким соображениям сделан расход топлива в окрестностях планетоидов? Элементарно, Ватсон. Расход топлива в пакете Collapsible Shields идет на поддержание работы силовой установки, которая питает силовые щиты, энергобанки и прочие корабельные системы. Темп расхода топлива постоянный и равен 2 LY/час. При этом темпе одного ПТБ хватает на полтора часа патрулирования в системе. Время путешествия от входного маяка до станции, если не слишком отвлекаться по пути, обычно не превышает получаса. 1 LY топлива даже при моей цене 5 Cr/LY - право, вполне приемлемые затраты на путешествие в пределах системы. Дополнительный расход топлива в окрестностях массивных небесных тел я пока лишь планирую ввести. Это топливо будет расходоваться на работу компенсатора гравитации. Расход топлива стимулирует геймера планировать свою активность, чтобы вовремя вернуться к станции. Это добавляет игровую реальность. При неисчерпаемом запасе топлива активность геймера ограничена лишь его усидчивостью, емкостью мочевого пузыря и терпением изнывающей в постели жены. Аналогично Gravity Well симулирует влияние гравитации в окрестностях массивных небесных тел, что вынуждает геймера планировать прыжок лишь на безопасной высоте. Гравитация в моем Оониверсуме не проявляется непосредственно, но таки игрок вынужден считаться с ее побочными эффектами. Я считаю это удачной реализацией в пределах существующего пространства решений (ну нет возможности нормально симулировать гравитацию через OXP!). Commander vasig регулярно использует мои пакеты Collapsible Shields и Gravity Well - и успешно выполняет эскортные миссии. Walker: Не надо соединять и усложнять без нужды... Пусть излишний расход топлива будет отдельным ОХР - на любителя.
Дык это и есть отдельный OXP на любителя. Collapsible Shields и Gravity Well - пакеты из "самурайского" набора, оба пакета изменяют игровую механику в сторону введения дополнительных ограничений. Их вполне логично объединить. В Collapsible Shields отлажена процедура расхода топлива, в Gravity Well обработка событий в ближних окрестностях небесных тел. Гибридный пакет потребует лишь небольшой модификации в коде. Максимальная дальность прыжка 7 LY задана в теле программы. Это опять же удачное игровое решение, при котором создаются карты с относительно изолированными скоплениями систем, соединенных торговыми путями (порой через бутылочное горло из одной системы). Увеличение дальности прыжка приведет к тому, что эта интересная топология разрушится и до любой системы можно будет добраться напрямую, как по ровной степи. К счастью, этот параметр задан хардкорно и русские коллеги из РСЛ вряд ли смогут смастерить супердвигатель на 25 LY в рамках OXP.
|
|
|
|
Tch
|
|
|
---Elite--- |
|
Зарегистрирован: 02.12.12 Сообщений: 795
|
stranger: ...Расход топлива в пакете Collapsible Shields идет на поддержание работы силовой установки, которая питает силовые щиты, энергобанки и прочие корабельные системы... ...Дополнительный расход топлива в окрестностях массивных небесных тел я пока лишь планирую ввести. Это топливо будет расходоваться на работу компенсатора гравитации... ...Гравитация в моем Оониверсуме не проявляется непосредственно, но таки игрок вынужден считаться с ее побочными эффектами. Я считаю это удачной реализацией в пределах существующего пространства решений (ну нет возможности нормально симулировать гравитацию через OXP!)... Вон оно как задумано, теперь понятна фишка... Ну, что же - РСЛ всегда одобрительно относились к любым попыткам любых изменений игровой среды. Если кого-то устраивают такие условия - значит, эта эволюционная ветка развития Игры вполне жизнеспособна. stranger: ...К счастью, этот параметр задан хардкорно и русские коллеги из РСЛ вряд ли смогут смастерить супердвигатель на 25 LY в рамках OXP. Почти все изобретения РСЛ сделаны как побочный продукт исследований технических возможностей программной среды Oolite. Поэтому - как знать, какие ещё открытия нас ожидают впереди?
|
|
|
|
vasig
|
|
|
---Elite--- |
|
Зарегистрирован: 01.10.12 Сообщений: 747 Откуда: Novosibirsk
|
to TchВладимир Петрович! У меня такой вопрос: как сделать, чтобы вероятность появления нужного мне корабля была 100%. На сколько я понимаю это зависит от функции Math.random В моем конкретном случае этот кусок кода выглядит так: Код: this.shipWillExitWitchspace = function(){ var myRND = Math.random(); /* if (system.isInterstellarSpace || myRND <= 0.05) return; if (system.countShipsWithRole(this.role1) > 0) return; if (system.population < 25 || system.government <= 2) return; */ system.addShipsToRoute(this.role1, 1, Math.random(), "wp"); Первые три строчки я отключил, так как они по-моему и определяют все условия его появления. Но все равно корабль не появляется . Может нужно ввести какой-нибудь дополнительный параметр? Правильно ли я мыслю или иду совершенно в неправильном направлении? В Latest.log никаких ошибок, связанных с этим ОХР, нет! Влияние других ОХР я тоже (на время проверки) исключил.
|
|
|
|
Tch
|
|
|
---Elite--- |
|
Зарегистрирован: 02.12.12 Сообщений: 795
|
vasig: ...У меня такой вопрос: как сделать, чтобы вероятность появления нужного мне корабля была 100%. На сколько я понимаю это зависит от функции Math.random Сразу лезем в справочник и смотрим, что представляет из себя эта функция system.addShipsToRoute()Вот корявый машинный перевод на русский язык описания этой функции: =... Добавляют суда к системе на определенных общих маршрутах и возвращают добавленные суда как множество. Маршруты - два кодекса характера wp, pw, ws, коротковолновый, SP и PS, где w обозначает witchpoint, p для планеты и s для солнца. Когда никакой маршрут не определен, маршрут witchpoint ? главная станция принят. Положение - часть маршрута и должно быть между 0 и 1. В отличие от наследства приказывает, чтобы часть взяла планетарные радиусы в счете, таким образом, это не начинает учитываться в центре солнца/планеты, но от его поверхности. Когда никакая часть не определена, случайная часть выбрана. Суда добавлены в пределах диапазона сканера этого положения. Суда, добавленные в диапазоне witchpoint автоматически, создают witchpoint облако входа. Пример: суда вара = system.addShipsToRoute ("myShips", 2, 0.7, "коротковолновый") пираты вара = system.addShipsToRoute ("пират", 3 лет, Math.random (), "SP") Первая линия добавляет 2 судна друг около друга на маршруте от солнца до witchpoint и помещает добавленное судно в суда множества, и вторая линия добавляет группу из 3 пиратов в случайном положении вдоль солнца к маршруту планеты и возвращает пиратов множества. Примечание: этот метод подведет и возвратит пустой указатель, если любая из конечных точек маршрута не будет существовать. Никакие действительные маршруты не существуют в межзвездном пространстве. ...= Из этого набора слов можно уловить такой смысл: случайная величина здесь определяет лишь место на маршруте, где должны появляться корабли - или ближе к началу маршрута, или в конце. То есть, вероятность появления корабля в любом случае 100 процентов. А далее идут нюансы - если точки маршрута обозначены, но одна из них не существует, то корабль не появится (это относится и к межзвёздному пространству). Другой нюанс - разброс места появления корабля по величине сканерного интервала. Это означает, как я понимаю, следующее - положим, случайная величина выбрала точку на трассе ближе к концу маршрута. Тогда корабли должны появиться относительно этой точки в пределах сканерного интервала - когда Вы долетите, наконец, до этой точки, может случится так, что корабли уже улетят за пределы дальности радара. Как-то так. Значит, что можно проверить: задать случайную величину прямо числом, близким к нулю, скажем, 0.01. И выбросить при этом все остальные условия проверки. Тем самым мы задаём появление корабля в самом начале маршрута, в Вашем случае, как я понимаю по буквам "wp" - прямо около маяка гипер-перехода. Тогда корабль не должен успеть улететь за сканерный интервал, и игрок должен его успеть увидеть. Что ещё? Я не вижу у Вас нигде определения роли кораблей. Есть переменная this.role1, а она задаётся где либо, типа this.role1 = "pirate"; ? Обязательно надо её задать. Либо непосредственно проставить роль кораблей в самой функции. И лучше всего для проверки вот что сделать - добавить сразу несколько кораблей, чтобы проверить работоспособность функции (разрешается добавлять до 64 кораблей). Штук десять добавим. И тогда кусок кода для проверки будет выглядеть так: Код: this.shipWillExitWitchspace = function(){ system.addShipsToRoute("pirate", 10, 0.01, "wp"); Если сработает, тогда можно экспериментировать дальше. И вот ещё что я заметил - в Вашем примере, в задающие условиях как бы открывающие-закрывающие скобки условий не проставлены. Наверное, это допускается правилами, но я пишу строго с открывающими-закрывающими скобками - так текст программы читается легче и ошибки исключаются. И его потом можно наращивать легко или модифицировать - например, вставлять внутрь другие условия проверки и т.п. Для примера - у Вас написано вот так: Код: if (system.countShipsWithRole(this.role1) > 0) return; Этот же кусок кода я бы написал вот так: Код: if (system.countShipsWithRole(this.role1) > 0){ //--- Если такие корабли с этой ролью уже присутствуют в системе, то ничего больше не добавляем в систему, а сразу же выходим из функции return; } В текстах программ лучше не экономить на чёткости структуры и комментариях - самому же потом легче будет редактировать код.
|
|
|
|
vasig
|
|
|
---Elite--- |
|
Зарегистрирован: 01.10.12 Сообщений: 747 Откуда: Novosibirsk
|
to TchВладимир Петрович! Спасибо за подробный ответ. И хотя пока ничего не получилось , похоже что я шел правильным путем . Что касается типа корабля, то он указан в функции - я просто эту строчку не скопировал, как и упустит скобку - там в скрипте все правильно. Но почему-то корабль так и не появляется. Значит для этого есть еще какие-то препятствия . Это не единственный корабль который не появляется - может что-то общее. Буду разбираться.
|
|
|
|
Tch
|
|
|
---Elite--- |
|
Зарегистрирован: 02.12.12 Сообщений: 795
|
vasig: ...Что касается типа корабля, то он указан в функции - я просто эту строчку не скопировал, как и упустит скобку - там в скрипте все правильно. Но почему-то корабль так и не появляется. Значит для этого есть еще какие-то препятствия . Это не единственный корабль который не появляется - может что-то общее. Буду разбираться. Стоп-стоп-стоп! vasig, будьте внимательны! Роль корабля и тип корабля - это две большие разницы, этот момент необходимо чётко уяснить. Покажу на примере корабля-убийцы "Cobra3 XT". Откройте в пакете " Cobra3 XT.oxp" в папке " Config" файл " shipdata.plist" Обратите внимание: сколько там типов этих кобр - " cobra3XT-pirate", " cobra3XT-black_knave", " cobra3XT-alternate", " cobra3XT-player" - это всё ТИПЫ кораблей. Тип корабля - это то название, которое открывает программную конструкцию объекта, вот код для примера с открывающей скобкой начала конструкции: Код: "cobra3XT-pirate" = { А роль корабля - это то, что этот тип корабля будет делать в игре: изображать пирата или изображать торговца, либо вообще выполнять свою индивидуальную задачу. Ищем в этой же конструкции следующие строчки кода Код: name = "Cobra Mk3-XT"; roles = "pirate";
Итак, смотрите, что получается: тип корабля - " cobra3XT-pirate" имя корабля - " Cobra Mk3-XT", оно будет видно на маркере цели роль корабля- " pirate", это то, что будет делать корабль в игре. Теперь, в зависимости от этих названий, можно вводить этот корабль в игру. Это можно сделать несколькими разными способами. Вам для справки лучше заглянуть на страничку " Methods", вот по этой ссылке: http://wiki.alioth.net/index.php/MethodsИщите там тему " Looking for, and adding ships". Там полный перечень функций, каким образом это можно сделать. Просто Вы выбрали не самый удачный способ введения нужного Вам корабля в игру - через появление его на маршруте. Если мы посмотрим для примера, каким способом вводится в игру тот же корабль-убийца "Cobra3 XT", то в пакете " Cobra3 XT.oxp" в папке " Scripts" в файле " spawnknave-script.js" увидим, что введение корабля задаётся непосредственно в выбранной позиции, совершенно другой функцией: Код: system.addShips(this.role1, this.count1, player.ship.position, 10000); т.е. прямо около корабля игрока! Этот код стоит показать полностью и прокомментировать: Код: this.role1 = "black_knave"; this.count1 = 1; Итак, роль корабля в игре - " black_knave". Такая необычная роль означает на практике, что в игре может появится только один-единственный тип корабля, у которого эта роль записана в его конструкции - " cobra3XT-black_knave". Думаю, что во всех пакетах нет больше кораблей, у которых есть эта роль. Ни Питон, ни Мамба, ни Боа - только кобра-убийца " cobra3XT-black_knave" Следующая строчка кода - это задаётся количество кораблей с этой ролью, которое должно появиться. Я уже писал в своих "Демонстрационных полётах", что пытался запустить в игру сразу 100 этих Кобр-убийц, но компилятор выдал ошибку: " Error: System.addShips: Invalid arguments (100) -- expected number (positive count no greater than 64)." Далее код такой: Код: this.shipWillExitWitchspace = function() { if (Math.random() >= 0.99 && player.score >= 128) { system.addShips(this.role1, this.count1, player.ship.position, 10000); } }; Это означает, что Кобра-убийца появится в системе в непосредственной близости от корабля игрока, в случайной точке пространства в пределах дальности 10000 м ( player.ship.position, 10000), сразу после того, как корабль игрока вынырнет из гипер-пространства ( this.shipWillExitWitchspace), при этом если игрок уже имеет достаточный боевой опыт ( player.score >= 128) и если преставится удобный случай - один шанс из 100 ( Math.random() >= 0.99) Обратите внимание - генератор случайного числа Math.random() очень редко выдаёт число, которое более 0.99 (0.992674884, или 0.99868577 или т.п) - вот почему вероятность появления Кобры-убийцы будет здесь 1 процент. А если мы хотим получить 100-процентную вероятность появления Кобры-убийцы, нам нужно изменить строчку кода вот так: Math.random() >= 0 - и тогда, какое бы число не сгенерировал генератор, оно всегда будет больше 0 и поэтому Кобра появится гарантировано в 100 случаях из 100.
|
|
|
|
Tch
|
|
|
---Elite--- |
|
Зарегистрирован: 02.12.12 Сообщений: 795
|
Для vasigВот же я тупой - не сообразил сразу, что Вам нужно! Сделайте вот что: создайте свой тестирующий пакет с оригинальным названием, например " vasig_test_ships.oxp", в пакете создайте папку " Config", в этой папке создайте файл " script.js", в этот файл запишите вот такой код: Код: //--- Главное событие: Корабль стартует из станции, ПОСЛЕ прохода туннеля this.shipLaunchedFromStation = function( station ){
system.addShips("Роль корабля", 10, player.ship.position, 10000); } Затем делайте вот что: в проблемном пакете ОХР в папке " Config" ищите файл " shipdata.plist", в этом файле ищите тип корабля, который у Вас почему-либо не появляется в игре, и смотрите, какая задана роль у этого типа корабля, затем копируйте название этой роли и подставляйте в код, который я написал выше, вместо " Роль корабля". Обычно в пакетах для корабля задаются несколько ролей - стандартные (например, " pirate") и оригинальная, с особым именем. Берите оригинальную роль. А если там есть только стандартные, то временно вместо " pirate" напишите что-нибудь своё латинскими буквами, например, " vasig_test_this_ship" и эту же фразу подставьте вместо " Роль корабля" в коде. Таким образом, сразу после вылета из любой орбитальной станции у Вас игре около корабля должно появиться сразу 10 таких кораблей именно этого типа, на расстоянии 10000 м от корабля. Такую шайку легко заметить. Если они появляются, то, значит, в конструкциях корабля проблем нет, надо уже проверять скрипты из этого проблемного пакета - ошибка может быть уже в скриптах.
|
|
|
|
vasig
|
|
|
---Elite--- |
|
Зарегистрирован: 01.10.12 Сообщений: 747 Откуда: Novosibirsk
|
to TchВладимир Петрович! Это конечно я виноват, что заморочил Вам голову этим кусочком кода. Нужно было выложить весь скрипт. Я воспользовался Вашим советом и провел эксперимент с несколькими кораблями - все получилось, Но тот, который я так долго ищу: все-равно не появляется даже таким насильственным методом . Не буду больше отвлекать Вас от более важных дел. Буду разбираться сам. Еще раз спасибо! P.S. Чтобы не захламляться - можете все это, начиная с моего вопроса, удалить .
|
|
|
|
|
|