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

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

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

   Страница 31 из 31
На страницу: Пред.  1, 2, 3 ... 29, 30, 31    Перейти:   Все страницы
Поиск в этой теме:
Канал X Rebirth » Модовый и скриптовый отсек X Rebirth: «Ковыряем новый движок (моддинг)»
eliseeff
 268 EGP


Рейтинг канала: 6(316)
Репутация: 5
Сообщения: 932

Зарегистрирован: 07.03.2015
Andy_MB :
eliseeff :
Через некоторое время постараюсь сделать луа-код для пересчета.

Можешь не париться!
Я уже написал тот мод и забыл про него. Я свои задачи решил с его помощью и еще паре человек он понадобился.
Всех устраивает как там все работает.
Я уже давно решил этот вопрос без использования логарифмов.

Ну, может пригодится кому... Все равно уже накидал и проверил:

Пересчет uivalue (-30...+30) в relation (-1...+1):

Код:
  if uivalue > 5 or uivalue < -5 then
    relation = 10^(math.abs (uivalue) / 10) / 1000
    if uivalue < 0 then
      relation = -relation
    end
  else
    relation = (uivalue + 5) * 0.00064 - 0.0032
  end


Пересчет relation (-1...+1) в uivalue (-30...+30):

Код:
  if relation > 0.0032 or relation < -0.0032 then
    uivalue = 10 * math.log10(math.abs(relation) * 1000)
      if relation < 0 then
        uivalue = -uivalue
      end
  else
    uivalue = (relation + 0.0032) / 0.00064 - 5
  end


P.S. Кстати, если ты тогда все-таки ничего не напутал, а брал логарифм именно когда надо - ошибка могла возникать в том случае, если ты начинал пересчет с отрицательных значений. Логарифм отрицательного числа - это некорректная операция, вроде деления на ноль. Сам подумай: нет такого значения степени, чтобы возведенное в нее число было бы отрицательным.

Последний раз редактировалось: eliseeff (20:32 31-03-2018), всего редактировалось 1 раз
    Добавлено: 20:08 31-03-2018   
Andy_MB
 130 EGP


Рейтинг канала: 4(83)
Репутация: 10
Сообщения: 572
Откуда: Край вселенной, Квазар-1
Зарегистрирован: 13.07.2015
eliseeff :


P.S. Кстати, если ты тогда все-таки ничего не напутал, а брал логарифм именно когда надо - ошибка могла возникать в том случае, если ты начинал пересчет с отрицательных значений. Логарифм отрицательного числа - это некорректная операция, вроде деления на ноль. Сам подумай: нет такого значения степени, чтобы возведенное в нее число было бы отрицательным.


Ты пробовал подставлять реальные значения и выводить результат на экран или в файл?

помнишь я говорил:
Andy_MB :

причем пробовал math.log10(3.2) = nan


мне просто показалось, что сама функция log10 не корректно работает! А что нужно сделать, чтобы она заработала я не накопал! (
    Добавлено: 21:27 31-03-2018   
Romz
 111 EGP


Репутация: 11
Сообщения: 421
Откуда: Волоколамск
Зарегистрирован: 11.03.2004
Andy_MB :
Написал, но проверить не могу. Не нашел ни одного корабля у себя в игре, который заправляется или стоит в очереди. Попрыгал к разным заправкам - везде пусто!
Хотите попробуйте. Ток сохранитесь, перед подключением мода.
Круто! Проверю.
А, на всякий случай, как вот таке сделать?
Romz :
две проверки - на принадлежность корабля игроку, и на наличие у него задания.

_________________
СисАадмин - Шаман
    Добавлено: 21:43 31-03-2018   
Andy_MB
 130 EGP


Рейтинг канала: 4(83)
Репутация: 10
Сообщения: 572
Откуда: Край вселенной, Квазар-1
Зарегистрирован: 13.07.2015
Romz :
Круто! Проверю.


Там готовый мод во вложении! Улыбка просто скачать можно. )
Romz :

А, на всякий случай, как вот таке сделать? две проверки - на принадлежность корабля игроку, и на наличие у него задания.

... <actions>
<create_group groupname="$fuelstations"/>
<find_station class="class.station" macro="struct_bt_alb_fuelstation_macro" groupname="$fuelstations" space="player.galaxy"/>
<do_all exact="$fuelstations.count" counter="$i">
<find_ship class="class.ship_xl,class.ship_l" space="$fuelstations.{$i}.zone" groupname="$ships" multiple="true"/>
<find_ship class="class.ship_xl,class.ship_l" space="$fuelstations.{$i}.zone" groupname="$ships" multiple="true">
<match owner="faction.player" negate="true"/>
</find_ship>
<!--тут будут исключены корабли игрока-->

<do_all exact="$ships.count" counter="$j">
<do_if value="$ships.{$i}.cargo.{ware.fuelcells}.max == 0 or this.ship.cargo.{ware.fuelcells}.free == 0">
<set_value name="$failreason" exact="'ERR_FUEL_STORAGE_MISSING'"/>
<destroy_object object="$ships.{$i}" explosion="false"/>
</do_if>
<do_else>
<set_value name="$wares_in_Cargo" exact="$ships.{$i}.cargo.list" />
<set_value name="$fuelcells" exact="$wares_in_Cargo.indexof.{ware.fuelcells}" />
<do_if value="$fuelcells != 0">
<do_if value="$ships.{$i}.cargo.{ware.fuelcells}.count lt $ships.{$i}.cargo.{ware.fuelcells}.max * 0.2f">
<!--set_value name="$amount" exact="$fuelcells.count"/-->
<set_value name="$ships.{$i}.cargo.{ware.fuelcells}.count" exact="5000" comment="10000"/>
<do_if value="$ships.{$i}.dockslot != 0" comment="пристыкован?">
<start_script object="$ships.{$i}" name="move.undock"/>
</do_if>
</do_if>
</do_if>
</do_else>
</do_all>
</do_all>
</actions>...

для проверки его команд можно использовать:
ships.{$i}.pilot.commandaction.value == 0 (надо в сэйве смотреть как именно выглядит комманда)
ships.{$i}.pilot.command.value == idle / wait / move.die и так далее, но это не требуется, если не собираетесь заправлять или убивать свои корабли.

Последний раз редактировалось: Andy_MB (22:38 31-03-2018), всего редактировалось 1 раз
    Добавлено: 22:35 31-03-2018   
eliseeff
 268 EGP


Рейтинг канала: 6(316)
Репутация: 5
Сообщения: 932

Зарегистрирован: 07.03.2015
Andy_MB :
Ты пробовал подставлять реальные значения и выводить результат на экран или в файл?

А как же! Улыбка Я ж писал:

eliseeff :
Ну, может пригодится кому... Все равно уже накидал и проверил.

Я не просто подсталял реальные значения, а прогнал циклом от -30 до +30 пересчет uivalue в relation и обратно, с выводом всех этих значений на экран.

Andy_MB :
мне просто показалось, что сама функция log10 не корректно работает! А что нужно сделать, чтобы она заработала я не накопал! (

Работает она, работает...

Единственное, за что не могу ручаться, это за точность предоставленной Егософтом информации, т.к. есть моментец: корень из 10 не равен в точности 0,32, а 3,162277660168379. То ли они в инфе так округлили, то ли и в игре так же делают.

Т.е. то, что они пишут про значения рейтингов, заканчивающихся на "пятерку", не соответствует точному значению, высчитанному по предоставленной ими же формуле.
____________________________________________________________

Andy_MB :
для проверки его команд можно использовать:
ships.{$i}.pilot.commandaction.value == 0 (надо в сэйве смотреть как именно выглядит комманда)

Сначала абсолютно точно проверяеть надо команду (ships.{$i}.pilot.command.value), а не действие (ships.{$i}.pilot.commandaction.value).

Команда - это основная работа корабля. command.freetrade - свободная торговля, command.freemining - свободная добыча ресурсов и т.д. Когда команд нет - ships.{$i}.pilot.command.value == 'null'

commandaction - это действие. commandaction.jump - прыгает, commandaction.searchingresources - ищет ресурсы. При этом команда тоже наличествует. А вот commandaction.wait - ожидание. По-моему, единственный камандэкшн, который может иметь место при command.value == 'null'

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

Последний раз редактировалось: eliseeff (23:20 31-03-2018), всего редактировалось 1 раз
    Добавлено: 22:51 31-03-2018   
Gexon
 70 EGP


Репутация: 9
Сообщения: 84

Зарегистрирован: 19.11.2013
Всем привет!
Скажите возможно ли получить данные с интернет ресурса используя возможности моддинга?
Например послать get запрос по адресу http://mycalcsite.ru/calc.php
    Добавлено: 10:10 28-08-2018   
Неон
 70 EGP


Репутация: 4
Сообщения: 188
Откуда: Россия, Удмуртия, г. Ижевск
Зарегистрирован: 22.08.2006
Имеется скриптовый модик "ignore locked relation drop" с содержимым:

<?xml version="1.0" encoding="utf-8"?>
<diff xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<add sel="//cue[@name='TempRelationDropped']//show_notification" type="@chance">([faction.sovereignsyndicate, faction.hereticvanguards, faction.xenon, faction.smuggler, faction.criminal, faction.enemy].indexof.{event.object.owner} == 0) * 100</add>
</diff>

Вот только Рейверов сюда вписать забыли.., кто знает как они здесь называются, очень прошу подсказать.
Жаль встроенного в игру скрипт редактора нет, иначе не стал бы задавать столь примитивный вопрос.

Последний раз редактировалось: Неон (19:30 08-10-2018), всего редактировалось 1 раз
    Добавлено: 19:29 08-10-2018   
alexalsp
 511 EGP


Модератор
Рейтинг канала: 5(119)
Репутация: 54
Сообщения: 4213

Зарегистрирован: 12.08.2014
Так и называются faction.reivers
_________________
CMDR: Fallout(EG)

ED - если застряли: https://discord.gg/w56kPWH
    Добавлено: 19:39 08-10-2018   
Неон
 70 EGP


Репутация: 4
Сообщения: 188
Откуда: Россия, Удмуртия, г. Ижевск
Зарегистрирован: 22.08.2006
alexalsp :
Так и называются faction.reivers

Спасибо, хотя этот вариант уже пробовал по наитию. На этот раз дополнительно запаковал в cat/dat и на удивление сработало, причём не сразу, а лишь через некоторое время.
    Добавлено: 15:30 09-10-2018   
Неон
 70 EGP


Репутация: 4
Сообщения: 188
Откуда: Россия, Удмуртия, г. Ижевск
Зарегистрирован: 22.08.2006
Имеется скриптовый мод "boardingtargetprotector"

 Cкрытый текст   (кликните здесь для просмотра)

Код:

<?xml version="1.0" encoding="UTF-8" ?>
<mdscript name="BoardingTargetProtector" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
   <cues>
      <cue name="BoardingStarted" instantiate="true" namespace="this" version="100">
         <conditions>
            <event_boarding_triggered/>
         </conditions>
         <actions>
            <set_value name="$target" exact="event.param2" />
            <set_value name="$flag" exact="false" />
         </actions> 
         <cues>

            <cue name="ChangeBordeeFaction" instantiate="true" version="100">
               <conditions>
                  <event_conversation_started conversation="BoardingSupport_ProtectPods_Started_Conversation" />
               </conditions>
               <actions>
                  <debug_text text="'Setting boardee up for protection.'"/>
                  
                  <set_object_min_hull object="$target" exact="1"/>
                  
                  <set_value name="$flag" exact="true" /><!-- now its allowed to do cease fire magic-->
                  <debug_text text="'Bordee set up for protection.'"/>
               </actions>
            </cue>

            <cue name="ProtectBoardee" instantiate="true" version="100">
               <conditions>
                  <event_object_attacked object="$target"/>
               </conditions>
               <actions>
                              
                  <do_if value="$flag == true and event.param != player.primaryship and event.param != @player.ship">
                     <cease_fire object="event.param"/>   

                     <do_if value="event.param.defencenpc"><!--capships-->
                        <signal_objects object="event.param.defencenpc" param="'stop attack'"/>
                     </do_if>
                     <do_else><!-- fighters-->

                     </do_else>
                  

                     <debug_text text="event.param + ' ceasing fire'"/>
                  </do_if>
               </actions>
            </cue>

            <cue name="BoardingFailed" version="100">
               <conditions>
                  <check_any>
                     <event_object_destroyed object="$target" />
                     <event_conversation_started conversation="BoardingSupport_ProtectPods_AllDestroyed_Conversation" />
                     <event_conversation_started conversation="BoardingResult_Failure_Conversation" />
                  </check_any>
               </conditions>
               <actions>

                  <do_if value="not $target.iswreck">
                     <set_object_min_hull object="$target" exact="0"/>               
                  </do_if>

                  <cancel_cue cue="BoardingStarted"/>
                  <debug_text text="'Bordee reset.'"/>
               </actions>
            </cue>

            <cue name="BoardingSuccess" version="100">
               <conditions>
                  <event_conversation_started conversation="BoardingResult_Success_Conversation" />
               </conditions>
               <actions>
               
                  <set_object_min_hull object="$target" exact="0"/>
               
                  <cancel_cue cue="BoardingStarted"/>
                  <debug_text text="'Bording successful.'"/>
               </actions>
            </cue>

         </cues>
      </cue>
   </cues>
</mdscript>



Разобрался откуда всё же остаётся атака - это наглый офицер со станции засылает вредителей - истребителей и дронов.
Сумеет кто поправить? Тут добавить-то надо всего пару строчек.

И оставлять 1% корпуса мне кажется маловато, на практике безопаснее 3-5%:
<set_object_min_hull object="$target" exact="3"/>

Последний раз редактировалось: Неон (16:46 14-10-2018), всего редактировалось 3 раз(а)
    Добавлено: 10:46 13-10-2018   
alexalsp
 511 EGP


Модератор
Рейтинг канала: 5(119)
Репутация: 54
Сообщения: 4213

Зарегистрирован: 12.08.2014
Лучше простынь в код и под спойлер поместить.
_________________
CMDR: Fallout(EG)

ED - если застряли: https://discord.gg/w56kPWH
    Добавлено: 12:38 13-10-2018   
eliseeff
 268 EGP


Рейтинг канала: 6(316)
Репутация: 5
Сообщения: 932

Зарегистрирован: 07.03.2015
Неон :
Имеется скриптовый мод "boardingtargetprotector"

 Cкрытый текст   (кликните здесь для просмотра)

Код:

<?xml version="1.0" encoding="UTF-8" ?>
<mdscript name="BoardingTargetProtector" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
   <cues>
      <cue name="BoardingStarted" instantiate="true" namespace="this" version="100">
         <conditions>
            <event_boarding_triggered/>
         </conditions>
         <actions>
            <set_value name="$target" exact="event.param2" />
            <set_value name="$flag" exact="false" />
         </actions> 
         <cues>

            <cue name="ChangeBordeeFaction" instantiate="true" version="100">
               <conditions>
                  <event_conversation_started conversation="BoardingSupport_ProtectPods_Started_Conversation" />
               </conditions>
               <actions>
                  <debug_text text="'Setting boardee up for protection.'"/>
                  
                  <set_object_min_hull object="$target" exact="1"/>
                  
                  <set_value name="$flag" exact="true" /><!-- now its allowed to do cease fire magic-->
                  <debug_text text="'Bordee set up for protection.'"/>
               </actions>
            </cue>

            <cue name="ProtectBoardee" instantiate="true" version="100">
               <conditions>
                  <event_object_attacked object="$target"/>
               </conditions>
               <actions>
                              
                  <do_if value="$flag == true and event.param != player.primaryship and event.param != @player.ship">
                     <cease_fire object="event.param"/>   

                     <do_if value="event.param.defencenpc"><!--capships-->
                        <signal_objects object="event.param.defencenpc" param="'stop attack'"/>
                     </do_if>
                     <do_else><!-- fighters-->

                     </do_else>
                  

                     <debug_text text="event.param + ' ceasing fire'"/>
                  </do_if>
               </actions>
            </cue>

            <cue name="BoardingFailed" version="100">
               <conditions>
                  <check_any>
                     <event_object_destroyed object="$target" />
                     <event_conversation_started conversation="BoardingSupport_ProtectPods_AllDestroyed_Conversation" />
                     <event_conversation_started conversation="BoardingResult_Failure_Conversation" />
                  </check_any>
               </conditions>
               <actions>

                  <do_if value="not $target.iswreck">
                     <set_object_min_hull object="$target" exact="0"/>               
                  </do_if>

                  <cancel_cue cue="BoardingStarted"/>
                  <debug_text text="'Bordee reset.'"/>
               </actions>
            </cue>

            <cue name="BoardingSuccess" version="100">
               <conditions>
                  <event_conversation_started conversation="BoardingResult_Success_Conversation" />
               </conditions>
               <actions>
               
                  <set_object_min_hull object="$target" exact="0"/>
               
                  <cancel_cue cue="BoardingStarted"/>
                  <debug_text text="'Bording successful.'"/>
               </actions>
            </cue>

         </cues>
      </cue>
   </cues>
</mdscript>



Разобрался откуда всё же остаётся атака - это наглый офицер со станции засылает вредителей - истребителей и дронов.
Сумеет кто поправить? Тут добавить-то надо всего пару строчек.

Скорее всего не пару, и уж точно не в этом файле.

Здесь офицеру обороны исправно отсигналено "прекратить огонь", а он исправно этот сигнал исполняет. Теперь надо искать, кто ему снова сигналит "атаковать гада" и сигнал этот пресекать. Точнее, не пресекать этот сигнал, а отсекать абордируемый корабль при поиске врагов различными аи-скриптами.

В моде "не стреляйте в мирных дронов" я как раз и делал нечто подобное, потому как врагов ищут многие аи-скрипты.

Последний раз редактировалось: eliseeff (02:06 31-10-2018), всего редактировалось 1 раз
    Добавлено: 02:02 31-10-2018   
Неон
 70 EGP


Репутация: 4
Сообщения: 188
Откуда: Россия, Удмуртия, г. Ижевск
Зарегистрирован: 22.08.2006
Цитата:
В моде "не стреляйте в мирных дронов" я как раз и делал нечто подобное, потому как врагов ищут многие аи-скрипты.

Хороший мод - хех, многих строительных дронов он мне спас от расправы. Гы-гы

Увы, я тоже я этом застрял - не понял как убедить подождать офицера обороны.
***
Сейчас маюсь с попыткой добавить ресурсы в "Де Фриз/Ослепительная истина" - по непонятной причине игнорит, хотя в "Пycтoe cepдцe" и "Oгнeнный влacтeлин" сработало как и задумывалось. А то неприятно - на карте написано, а реальных астероидов вообще нет.

Последний раз редактировалось: Неон (14:57 03-11-2018), всего редактировалось 1 раз
    Добавлено: 14:53 03-11-2018   
anDron
 545 EGP


Модератор
Рейтинг канала: 4(50)
Репутация: 54
Сообщения: 5565
Откуда: Новосибирск
Зарегистрирован: 27.11.2013
В ООZ-режиме собирают ресурсы из этого "математического, но нереального обилия" вполне исправно. В IZ же собирает коряво и при наличии реального астеро-мусора. Пилоты в зоне сбора стараются не бывать совсем. Плюс мод сбора в IZ по схеме ООZ. Так зачем модить и создавать доп. мусор (и ухудшать производительность при "пролетании мимо")?

Последний раз редактировалось: anDron (15:31 03-11-2018), всего редактировалось 1 раз
    Добавлено: 15:31 03-11-2018   
Неон
 70 EGP


Репутация: 4
Сообщения: 188
Откуда: Россия, Удмуртия, г. Ижевск
Зарегистрирован: 22.08.2006
anDron :
В ООZ-режиме собирают ресурсы из этого "математического, но нереального обилия" вполне исправно. В IZ же собирает коряво и при наличии реального астеро-мусора. Пилоты в зоне сбора стараются не бывать совсем. Плюс мод сбора в IZ по схеме ООZ. Так зачем модить и создавать доп. мусор (и ухудшать производительность при "пролетании мимо")?

Для атмосферности понемногу, для меня гораздо важнее эффектность окружения, чем некая суть процесса, та же старенькая игра с переделкой Freelancer Rebirth до сих пор цепляет.
К тому же на моём достаточно мощном компьютере никаких корявостей не наблюдается, лишь в Омикроне Лиры возле мегакомплексов притормаживания всё же заметны.
Гораздо более неприятно, когда прилетаешь в зону и там добытчики начинают шарахаться в поиске эфемерных ресурсов.
***
Разобрался в проблеме - не распакованная игра игнорирует добавление ресурсов в файл region_definitions.xml, если его поместить в папку extensions.
Зато добавления в корневую папку игры вынуждена принять.
***
Удивительна и непостижима логика Егософта - нарисовал чуток "для атмосферности" ледяного крошева в "Де Фриз" зона "Жизнерадостные муки", так неписевый льдодоботчик повадился в 24 км. от пиратской станции шахтёрить.. доставив много веселья разбойной шайке. Наглядность образчика мазохизма изумила, пришлось сей ресурс из зоны убрать, но Онил так и продолжил шарахаться в поиске льда...

Последний раз редактировалось: Неон (09:28 14-11-2018), всего редактировалось 6 раз(а)
    Добавлено: 23:26 03-11-2018   
Неон
 70 EGP


Репутация: 4
Сообщения: 188
Откуда: Россия, Удмуртия, г. Ижевск
Зарегистрирован: 22.08.2006
Теперь взялся за мод "w.e_mict". В скрипте engineer.ai.xml запоздало нашёл некритичную опечатку пунктуации, на которую ругается игра.

Возникла проблема совмещения этого мода с модом "carriers" стыковки истребителей к Арауну. Мало того, что в "carriers" опции по автоотступлению истребителей в авианосец при заданных % повреждения корпуса не работают, так теперь ещё и "w.e_mict" перехватывает веля просто удрать куда священный рандом повелит. Вот только после этого автостыковка с авианосцем для ремонта не срабатывает.

Сможет кто разобраться или уже все в X4 Foundations подались?

Последний раз редактировалось: Неон (17:02 01-12-2018), всего редактировалось 5 раз(а)
    Добавлено: 18:45 24-11-2018   
Канал X Rebirth -> Модовый и скриптовый отсек X Rebirth: «Ковыряем новый движок (моддинг)»
На страницу: Пред.  1, 2, 3 ... 29, 30, 31    Перейти:   Все страницы
  
Показать: 
Предыдущая тема | Следующая тема |
К списку каналов | Наверх страницы
Цитата не в тему: Думаешь, кухня кахуна не обвешивает? Зачем же они тогда планктон закупают, а?!

  » Ковыряем новый движок (моддинг) | страница 31
Каналы: Новости | 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