Модостроение (вопросы и ответы)

Модераторы: by.@ztek, Постигший истину, Модераторы

Re: Модостроение (вопросы и ответы)

Сообщение by.@ztek » 22 июн 2016, 20:33

Gvozdoyatel писал(а):$var = create ship: type=$ship owner=$race addto=null x=$x y=$y z=$z

Вот это уже сработает. Зачем переменная $var ?
Совершенству нет предела...
Аватар пользователя
by.@ztek
Admin
Admin
 
Сообщений: 1585
Изображения: 2
Зарегистрирован: 06 фев 2011, 00:24
DSP: 207
Откуда: Минск, Беларусь
Благодарил (а): 231 раз.
Поблагодарили: 688 раз.

Re: Модостроение (вопросы и ответы)

Сообщение Gvozdoyatel » 22 июн 2016, 20:35

by.@ztek писал(а):Зачем переменная $var

Надо было как то назвать, вот я и назвал
Аватар пользователя
Gvozdoyatel
Pilot
Pilot
 
Сообщений: 192
Зарегистрирован: 31 май 2016, 11:01
DSP: 4
Благодарил (а): 10 раз.
Поблагодарили: 18 раз.

Re: Модостроение (вопросы и ответы)

Сообщение by.@ztek » 22 июн 2016, 20:44

ritchie писал(а):Как то можно определить - объект(например корабль) видимый ли на карте сектора или нет?

Как-то я писал учебник по созданию спец-объектов, на сайте Elite-Games...При создании объектов из МД, можно выставить параметр hidden, определить объект тоже можно, вероятно, но тоже из МД, Поищу сейчас у себя в закромах тот гайд, что я писал... :) Может поможет.
Вот. Не совсем то, но все-же....про карту сектора есть.

Добавлено спустя 1 минуту 35 секунд:
Gvozdoyatel писал(а):
by.@ztek писал(а):Зачем переменная $var

Надо было как то назвать, вот я и назвал

Не надо никаких переменных, если ты не будешь дальше с этой переменной работать. По скрипту - не будешь. addto=null - где сгенерился корабль? В твоем секторе. Писал я уже - addto = $sector.
У вас нет доступа для просмотра вложений в этом сообщении.
Совершенству нет предела...

За это сообщение автора by.@ztek поблагодарил:
ritchie
Рейтинг: 1.89%
 
Аватар пользователя
by.@ztek
Admin
Admin
 
Сообщений: 1585
Изображения: 2
Зарегистрирован: 06 фев 2011, 00:24
DSP: 207
Откуда: Минск, Беларусь
Благодарил (а): 231 раз.
Поблагодарили: 688 раз.

Re: Модостроение (вопросы и ответы)

Сообщение Gvozdoyatel » 22 июн 2016, 21:27

Вот
$massiv = get ship array: of race {Player} class/type={Goner Hyperborea}
if$massiv
$count = size of array $massiv
$Ware = {10 GJ shield}
$count.Ware = 6
$volume = get volume of ware $Ware
$Ware.volume = $count.Ware * $volume
while$count
dec $count =
$ship = $massiv[$count]
if $ship->can transport ware $Ware
$cargobay = $ship->get free volume of cargo bay
if$cargobay >= $Ware.volume
= $ship->add $count.Ware units of $Ware
else
$count.Ware = $cargobay / $volume
= $ship->add $count.Ware units of $Ware
end
= wait 200 ms
end
end
else
= wait 1200000 ms
goto label label
end

return null
И вот
$Hyperborea = {Goner Hyperborea}
$sector = {Ocracoke's Storm}
$race = {Player}
$x = 0
$y = 0
$z = 0
$var = create ship: type=$Hyperborea owner=$race addto=$sector x=$x y=$y z=$z

return null
Аватар пользователя
Gvozdoyatel
Pilot
Pilot
 
Сообщений: 192
Зарегистрирован: 31 май 2016, 11:01
DSP: 4
Благодарил (а): 10 раз.
Поблагодарили: 18 раз.

Re: Модостроение (вопросы и ответы)

Сообщение by.@ztek » 22 июн 2016, 21:43

Здорово! Получилось! :D

Добавлено спустя 5 минут 28 секунд:
ritchie писал(а):Как то можно определить - объект(например корабль) видимый ли на карте сектора или нет?

Я даже более скажу, можно найти все объекты, добавить их в группу, и вывести в сообщение...Через МД легко делается.
Совершенству нет предела...
Аватар пользователя
by.@ztek
Admin
Admin
 
Сообщений: 1585
Изображения: 2
Зарегистрирован: 06 фев 2011, 00:24
DSP: 207
Откуда: Минск, Беларусь
Благодарил (а): 231 раз.
Поблагодарили: 688 раз.

Re: Модостроение (вопросы и ответы)

Сообщение ritchie » 22 июн 2016, 21:59

почему спрашивал - хотел собиралку бесхозных кораблей написать для кораблей носителей
алго такой:
ищем массив безхозных кораблей
в цикле:
{если корабль видим на карте:
летим к нему
клаймим
стыкуем к себе
летим на базу
стыкуем собраный корабль
следующий элемент}
стукуемся сами

вот например кусок из карты скорпа:
$array.ship = find ship: sector=$sector class or type={Moveable Ship 2134} race={Neutral Race} flags=$flags refobj=null maxdist=null maxnum=99999 refpos=null

потом подумал - такой поиск очень комп нагружает.
ritchie
Trainee
Trainee
 
Сообщений: 69
Зарегистрирован: 14 окт 2015, 18:53
DSP: 1
Благодарил (а): 6 раз.
Поблагодарили: 6 раз.

Re: Модостроение (вопросы и ответы)

Сообщение by.@ztek » 22 июн 2016, 22:08

ritchie писал(а):хотел собиралку бесхозных кораблей написать для кораблей носителей

Надо еще сектор проверять, есть ли такой.
Бесхозные корабли (доступные для захвата), видимые же. Просто могут быть далеко. И да, скорп прально всё описал.
Ты хочешь биг-шипы наловить?

Добавлено спустя 2 минуты 56 секунд:
Ищешь мои "брошенные корабли"? :D

Добавлено спустя 10 минут:
Тогда алгоритм сложнее :)
ищем массив безхозных кораблей
в цикле:
проверяем сектор каждого.
Да.(текущий, сектор существует, не существует - пропустить и перейти к следующему) -
Текущий корабль доступен для захвата?
На носителе достаточно стыковочных слотов?
Да. -
Сближение, захват, стыковка. (Только ТС к биг-шипам стыкуются...)
Нет: - сообщение можно выслать - "невозможно что-то там..." и перейти на следующий шаг.
Ну или с вариациями :)


Добавлено спустя 16 минут 2 секунды:
ritchie
Как-бы поставлю +1 - за любознательность, за рвение, за интерес и т.д. и т.п. ;)
Совершенству нет предела...
Аватар пользователя
by.@ztek
Admin
Admin
 
Сообщений: 1585
Изображения: 2
Зарегистрирован: 06 фев 2011, 00:24
DSP: 207
Откуда: Минск, Беларусь
Благодарил (а): 231 раз.
Поблагодарили: 688 раз.

Re: Модостроение (вопросы и ответы)

Сообщение ritchie » 22 июн 2016, 22:40

by.@ztek писал(а):Надо еще сектор проверять, есть ли такой.

да, надо есть служебные...
by.@ztek писал(а):Бесхозные корабли (доступные для захвата), видимые же.

видимые да. смысл в том чтобы на карте. неверно выразился. подсвечены ли радаром кораблей или спутников. иначе получается чит... прилетел неизвестно куда и захватил. а так - если видишь что корабль есть на карте - забираешь.
by.@ztek писал(а):Ты хочешь биг-шипы наловить?

я модифицировал скрипт поиска Скорпа так.
$array.ship = find ship: sector=$sector class or type={Moveable Ship 2134} race={Unknown} flags=$flags refobj=null maxdist=null maxnum=99999 refpos=null

но не всё можно брать. тут уже писали про бесхозный Фрегат который фразами из сюжетки сыпет если его атакавать. Там и пилот сидит. Эти шипы только абордировать.
by.@ztek писал(а):Ищешь мои "брошенные корабли"? :D

Ну поучится хочу. Самому клаймить не всегда охото. :D
у тебя точнее алго, что сказать...
ritchie
Trainee
Trainee
 
Сообщений: 69
Зарегистрирован: 14 окт 2015, 18:53
DSP: 1
Благодарил (а): 6 раз.
Поблагодарили: 6 раз.

Re: Модостроение (вопросы и ответы)

Сообщение Gvozdoyatel » 22 июн 2016, 22:43

Как выглядит команда передачи управления кораблём, хочу написать ИИ корсар
Аватар пользователя
Gvozdoyatel
Pilot
Pilot
 
Сообщений: 192
Зарегистрирован: 31 май 2016, 11:01
DSP: 4
Благодарил (а): 10 раз.
Поблагодарили: 18 раз.

Re: Модостроение (вопросы и ответы)

Сообщение ritchie » 22 июн 2016, 22:47

Gvozdoyatel писал(а):Как выглядит команда передачи управления кораблём, хочу написать ИИ корсар

расу переписывешь у кора на расу игрока...

Добавлено спустя 5 минут 30 секунд:
ах, да - забыл. проигрываем звук "передача управления кораблем завершена"
ritchie
Trainee
Trainee
 
Сообщений: 69
Зарегистрирован: 14 окт 2015, 18:53
DSP: 1
Благодарил (а): 6 раз.
Поблагодарили: 6 раз.

Re: Модостроение (вопросы и ответы)

Сообщение by.@ztek » 22 июн 2016, 23:22

ritchie писал(а):а так - если видишь что корабль есть на карте - забираешь.

get scanner range. Как-то так было в ванильной версии в кое-каких боевых скриптах... :)

Добавлено спустя 6 минут 53 секунды:
ritchie писал(а):Ну поучится хочу.

:ay: тогда надо понять, как написаны "брошенные корабли" ;)
часть кода, МД
Код: выделить все
<cues>
        <cue name="TOTT_RFS_Init">
          <action>
            <do_all>
              <do_all exact="20" counter="count_ships">
                <do_if value="{object.race@TOTT_RFS_M3{counter@count_ships}}" exact="{lookup.race@player}" negate="1">
                  <destroy_object object="TOTT_RFS_M3{counter@count_ships}" warp="0" explosion="0"/>
                </do_if>
              </do_all>
              <do_all exact="5" counter="count_ships">
                <do_if value="{object.race@TOTT_RFS_M6{counter@count_ships}}" exact="{lookup.race@player}" negate="1">
                  <destroy_object object="TOTT_RFS_M6{counter@count_ships}" warp="0" explosion="0"/>
                </do_if>
              </do_all>
              <do_all exact="4" counter="count_ships">
                <do_if value="{object.race@TOTT_RFS_M2{counter@count_ships}}" exact="{lookup.race@player}" negate="1">
                  <destroy_object object="TOTT_RFS_M2{counter@count_ships}" warp="0" explosion="0"/>
                </do_if>
              </do_all>
              <set_value name="TOTT_RFS_step" exact="1"/>
              <reset_cue cue="TOTT_RFS_T"/>
              <reset_cue cue="TOTT_RFS_SR"/>
              <reset_cue cue="TOTT_RFS_CRS"/>
            </do_all>
          </action>
        </cue>
        <cue name="TOTT_RFS_CRS">
          <condition>
            <cue_is_complete cue="TOTT_RFS"/>
          </condition>
          <timing>
            <time exact="20s"/>
          </timing>
          <action>
            <do_choose>
              <do_when value="{value@TOTT_RFS_step}" max="20">
                <set_value name="TOTT_RFS_sec_x" min="0" max="20"/>
                <set_value name="TOTT_RFS_sec_y" min="0" max="16"/>
                <set_value name="TOTT_RFS_pos_x" min="-70" max="70"/>
                <set_value name="TOTT_RFS_pos_y" min="-20" max="20"/>
                <set_value name="TOTT_RFS_pos_z" min="-70" max="70"/>
                <!--AMT SHIPS-->
                <do_if value="{text.exists@17,29032}" exact="1" comment="AMT ON">
                <create_ship name="TOTT_RFS_M3{value@TOTT_RFS_step}" race="abandoned" sellable="1"  racelogic="1" capturable="1" boardable="1" typename="{random.type@SS_SH_AMT_M3_ABBAT|SS_SH_AMT_M3_MESSIA|SS_SH_AMT_M3_PALLADIN|SS_SH_AMT_M3_PRAVEDNIK|SS_SH_AMT_M4_GRESHNIK|SS_SH_AMT_M5_PROPOVEDNIK|SS_SH_AMT_TP_PILIGRIM1|SS_SH_AMT_TP_PILIGRIM2|SS_SH_AMT_TS_EPISKOP_L}" communicates="0">
                  <position x="{value@TOTT_RFS_pos_x}km" y="{value@TOTT_RFS_pos_y}km" z="{value@TOTT_RFS_pos_z}km"/>
                  <sector x="{value@TOTT_RFS_sec_x}" y="{value@TOTT_RFS_sec_y}"/>
                  <!--<position  x="0" y="0" z="0"/>
                  <sector sector="{player.sector}"/>-->
                  <equipment loadout="maximum"/>
                  <command command="stay"/>
                  <!--<pilot name="TOTT_RFS_M3name{value@TOTT_RFS_step}" race="{random.race}" aggression="0" fightskill="0" morale="0"/>-->
                </create_ship>
                <create_actor object="TOTT_RFS_M3{value@TOTT_RFS_step}" race="{random.race}" location="pilot" name="TOTT_RFS_M3name{value@TOTT_RFS_step}"/>
                <do_if value="{value@TOTT_RFS_step}" max="5">
                  <set_value name="TOTT_RFS_sec_x" min="0" max="20"/>
                  <set_value name="TOTT_RFS_sec_y" min="0" max="16"/>
                  <set_value name="TOTT_RFS_pos_x" min="-70" max="70"/>
                  <set_value name="TOTT_RFS_pos_y" min="-20" max="20"/>
                  <set_value name="TOTT_RFS_pos_z" min="-70" max="70"/>

                  <create_ship name="TOTT_RFS_M6{value@TOTT_RFS_step}" race="abandoned" boardable="1" typename="{random.type@SS_SH_AMT_M6_ARHIDIAVOL|SS_SH_AMT_M6_HARON|SS_SH_AMT_M6_SVAROG2|SS_SH_AMT_M6_MAGISTR|SS_SH_AMT_TM_KAPELLAN|}" group="TOTT_RFS_new_big" communicates="0">
                    <position x="{value@TOTT_RFS_pos_x}km" y="{value@TOTT_RFS_pos_y}km" z="{value@TOTT_RFS_pos_z}km"/>
                    <sector x="{value@TOTT_RFS_sec_x}" y="{value@TOTT_RFS_sec_y}"/>
                    <!--<position  x="0" y="0" z="0"/>
                    <sector sector="{player.sector}"/>-->
                    <equipment loadout="maximum">
                      <ware typename="SS_WARE_LIFESUPPORT" exact="-1" comment="cargo lifesupport system"/>
                      <ware typename="SS_WARE_HULLPOLARIZE" exact="1"/>
                      <ware typename="SS_WARE_SENTRY" exact="1"/>
                      <ware typename="SS_WARE_TECH221" exact="1"/>
                    </equipment>
                    <command command="stay"/>
                    <pilot race="none" aggression="0" fightskill="0" morale="100"/>
                  </create_ship>
                </do_if>
                <do_if value="{value@TOTT_RFS_step}" max="4">
                  <set_value name="TOTT_RFS_sec_x" min="0" max="20"/>
                  <set_value name="TOTT_RFS_sec_y" min="0" max="16"/>
                  <set_value name="TOTT_RFS_pos_x" min="-70" max="70"/>
                  <set_value name="TOTT_RFS_pos_y" min="-20" max="20"/>
                  <set_value name="TOTT_RFS_pos_z" min="-70" max="70"/>
                  <create_ship race="abandoned" name="TOTT_RFS_M2{value@TOTT_RFS_step}" boardable="1" typename="{random.type@SS_SH_NEW_TL_ZAWOD|SS_SH_NEW_AMT_M7M|SS_SH_NEW_AMT_M1|SS_SH_AMT_M0_CITADEL|SS_SH_AMT_M0_VLADIKA|SS_SH_AMT_M2_DEMIURG|SS_SH_AMT_M2_PASTIR|SS_SH_AMT_M7_DOMINATOR|SS_SH_AMT_M7_PROROK|SS_SH_AMT_TL_ARHIEREI|SS_SH_AMT_TL_IERARH|SS_SH_NEW_A_TL_PLUTARCH|SS_SH_NEW_TL_PATRIARH}" group="TOTT_RFS_new_big" communicates="0">
                    <position x="{value@TOTT_RFS_pos_x}km" y="{value@TOTT_RFS_pos_y}km" z="{value@TOTT_RFS_pos_z}km"/>
                    <sector x="{value@TOTT_RFS_sec_x}" y="{value@TOTT_RFS_sec_y}"/>
                    <!--<position  x="0" y="0" z="0"/>
                    <sector sector="{player.sector}"/>-->
                    <equipment loadout="maximum">
                      <ware typename="SS_WARE_LIFESUPPORT" exact="-1" comment="cargo lifesupport system"/>
                      <ware typename="SS_WARE_HULLPOLARIZE" exact="1"/>
                      <ware typename="SS_WARE_SENTRY" exact="1"/>
                      <ware typename="SS_WARE_TECH221" exact="1"/>
                    </equipment>
                    <command command="stay"/>
                    <pilot race="none" aggression="0" fightskill="0" morale="100"/>
                  </create_ship>
                </do_if>
                <destroy_actor actor="TOTT_RFS_M3name{value@TOTT_RFS_step}"/>
                <!--<set_value name="TOTT_RFS_M3race" exact="{lookup.race@{object.race@TOTT_RFS_M2{value@TOTT_RFS_step}}}"/>-->
                <set_value name="TOTT_RFS_step1" exact="{value@TOTT_RFS_step}+1"/>
                <set_value name="TOTT_RFS_step" exact="{value@TOTT_RFS_step1}"/>
                <reset_cue cue="TOTT_RFS_CRS"/>
                </do_if>
                <!--ONLY TOTT SHIPS-->
                <do_if value="{text.exists@17,29032}" exact="0" comment="ONLY TOTT">
                  <create_ship name="TOTT_RFS_M3{value@TOTT_RFS_step}" race="abandoned" sellable="1"  racelogic="1" capturable="1" boardable="1" typename="{random.type@SS_SH_A_M3_PROTO|SS_SH_A_M3P_PROTO|SS_SH_B_M3_PROTO|SS_SH_B_M3P_PROTO|SS_SH_LOST_M3H|SS_SH_NEW_X_M3_ADV|SS_SH_P_M3P_PROTO|SS_SH_PI_M3P_PROTO_P|SS_SH_S_M3P_ENH|SS_SH_T_M3_PROTO|SS_SH_NEW_KH_M3|SS_SH_Y_M3_PROTO|SS_SH_SARGON|SS_SH_NEW_X_TS|SS_SH_P_TP_1|SS_SH_S_TS_5|SS_SH_S_TP_1|SS_SH_B_TS_ENH|SS_SH_USC_TP|SS_SH_NEW_TER_TS_XL}" communicates="0">
                    <position x="{value@TOTT_RFS_pos_x}km" y="{value@TOTT_RFS_pos_y}km" z="{value@TOTT_RFS_pos_z}km"/>
                    <sector x="{value@TOTT_RFS_sec_x}" y="{value@TOTT_RFS_sec_y}"/>
                    <!--<position  x="0" y="0" z="0"/>
                  <sector sector="{player.sector}"/>-->
                    <equipment loadout="maximum"/>
                    <command command="stay"/>
                    <!--<pilot name="TOTT_RFS_M3name{value@TOTT_RFS_step}" race="{random.race}" aggression="0" fightskill="0" morale="0"/>-->
                  </create_ship>
                  <create_actor object="TOTT_RFS_M3{value@TOTT_RFS_step}" race="{random.race}" location="pilot" name="TOTT_RFS_M3name{value@TOTT_RFS_step}"/>
                  <do_if value="{value@TOTT_RFS_step}" max="5">
                    <set_value name="TOTT_RFS_sec_x" min="0" max="20"/>
                    <set_value name="TOTT_RFS_sec_y" min="0" max="16"/>
                    <set_value name="TOTT_RFS_pos_x" min="-70" max="70"/>
                    <set_value name="TOTT_RFS_pos_y" min="-20" max="20"/>
                    <set_value name="TOTT_RFS_pos_z" min="-70" max="70"/>

                    <create_ship name="TOTT_RFS_M6{value@TOTT_RFS_step}" race="abandoned" boardable="1" typename="{random.type@SS_SH_TR_M6M|SS_SH_A_M6M_PROTO|SS_SH_B_M6M|SS_SH_P_M6_ADV|SS_SH_NEW_PIR_MM6|SS_SH_S_M6M|SS_SH_T_M6M|SS_SH_Y_M6M|SS_SH_NEW_K_TM}" group="TOTT_RFS_new_big" communicates="0">
                      <position x="{value@TOTT_RFS_pos_x}km" y="{value@TOTT_RFS_pos_y}km" z="{value@TOTT_RFS_pos_z}km"/>
                      <sector x="{value@TOTT_RFS_sec_x}" y="{value@TOTT_RFS_sec_y}"/>
                      <!--<position  x="0" y="0" z="0"/>
                    <sector sector="{player.sector}"/>-->
                      <equipment loadout="maximum">
                        <ware typename="SS_WARE_LIFESUPPORT" exact="-1" comment="cargo lifesupport system"/>
                        <ware typename="SS_WARE_HULLPOLARIZE" exact="1"/>
                        <ware typename="SS_WARE_SENTRY" exact="1"/>
                        <ware typename="SS_WARE_TECH221" exact="1"/>
                      </equipment>
                      <command command="stay"/>
                      <pilot race="none" aggression="0" fightskill="0" morale="100"/>
                    </create_ship>
                  </do_if>
                  <do_if value="{value@TOTT_RFS_step}" max="4">
                    <set_value name="TOTT_RFS_sec_x" min="0" max="20"/>
                    <set_value name="TOTT_RFS_sec_y" min="0" max="16"/>
                    <set_value name="TOTT_RFS_pos_x" min="-70" max="70"/>
                    <set_value name="TOTT_RFS_pos_y" min="-20" max="20"/>
                    <set_value name="TOTT_RFS_pos_z" min="-70" max="70"/>
                    <create_ship race="abandoned" name="TOTT_RFS_M2{value@TOTT_RFS_step}" boardable="1" typename="{random.type@SS_SH_NEW_AMT_M7M|SS_SH_NEW_AMT_M1|SS_SH_TR_M7|SS_SH_OTAS_M7|SS_SH_NEW_ARG_M2_L|SS_SH_B_M7|SS_SH_NEW_BOR_M2_L|SS_SH_USC_M7|SS_SH_NEW_TR_M2_L|SS_SH_X_M7|SS_SH_NEW_X_M2z|SS_SH_NEW_PAR_M2_L|SS_SH_P_M7_SPECIAL|SS_SH_S_M7_SPECIAL|SS_SH_NEW_SPL_M2_L|SS_SH_NEW_TEL_M2_L|SS_SH_T_M7|SS_SH_NEW_K_M7|SS_SH_NEW_YAKI_M2_L|SS_SH_Y_M7_1|SS_SH_PI_M7_P|SS_SH_NEW_PIR_M2_L|SS_SH_NEW_X_TL|SS_SH_NEW_TER_TL_LX|SS_SH_NEW_TL_ZAWOD|SS_SH_NEW_A_TL_PLUTARCH|SS_SH_NEW_TL_PATRIARH}" group="TOTT_RFS_new_big" communicates="0">
                      <position x="{value@TOTT_RFS_pos_x}km" y="{value@TOTT_RFS_pos_y}km" z="{value@TOTT_RFS_pos_z}km"/>
                      <sector x="{value@TOTT_RFS_sec_x}" y="{value@TOTT_RFS_sec_y}"/>
                      <!--<position  x="0" y="0" z="0"/>
                    <sector sector="{player.sector}"/>-->
                      <equipment loadout="maximum">
                        <ware typename="SS_WARE_LIFESUPPORT" exact="-1" comment="cargo lifesupport system"/>
                        <ware typename="SS_WARE_HULLPOLARIZE" exact="1"/>
                        <ware typename="SS_WARE_SENTRY" exact="1"/>
                        <ware typename="SS_WARE_TECH221" exact="1"/>
                      </equipment>
                      <command command="stay"/>
                      <pilot race="none" aggression="0" fightskill="0" morale="100"/>
                    </create_ship>
                  </do_if>
                  <destroy_actor actor="TOTT_RFS_M3name{value@TOTT_RFS_step}"/>
                  <!--<set_value name="TOTT_RFS_M3race" exact="{lookup.race@{object.race@TOTT_RFS_M2{value@TOTT_RFS_step}}}"/>-->
                  <set_value name="TOTT_RFS_step1" exact="{value@TOTT_RFS_step}+1"/>
                  <set_value name="TOTT_RFS_step" exact="{value@TOTT_RFS_step1}"/>
                  <reset_cue cue="TOTT_RFS_CRS"/>
                </do_if>
              </do_when>
              <do_otherwise>
                <complete_cue cue="TOTT_RFS_CRS"/>
                <set_value name="TOTT_RFS_T_time" min="86400" max="90000" operation="set"/>
                <set_value name="TOTT_RFS_T_delay" exact="0" operation="set"/>
                <do_if value="{player.gamestart}" exact="107" negate="1">
                  <set_value name="TOTT_RFS_sec_x" min="0" max="2"/>
                  <set_value name="TOTT_RFS_sec_y" min="17" max="19"/>
                  <set_value name="TOTT_RFS_pos_x" min="-70" max="70"/>
                  <set_value name="TOTT_RFS_pos_y" min="-20" max="20"/>
                  <set_value name="TOTT_RFS_pos_z" min="-70" max="70"/>
                  <create_ship race="abandoned" name="TOTT_RFS_M2" sellable="0" boardable="1" typename="SS_SH_NEW_DR_M2" group="TOTT_RFS_new_big" communicates="0">
                    <position x="{value@TOTT_RFS_pos_x}km" y="{value@TOTT_RFS_pos_y}km" z="{value@TOTT_RFS_pos_z}km"/>
                    <sector x="{value@TOTT_RFS_sec_x}" y="{value@TOTT_RFS_sec_y}"/>
                    <!--<position  x="0" y="0" z="0"/>
                    <sector sector="{player.sector}"/>-->
                    <equipment loadout="maximum">
                      <ware typename="SS_WARE_LIFESUPPORT" exact="-1" comment="cargo lifesupport system"/>
                      <ware typename="SS_WARE_HULLPOLARIZE" exact="1"/>
                      <ware typename="SS_WARE_SENTRY" exact="1"/>
                      <ware typename="SS_WARE_TECH221" exact="1"/>
                    </equipment>
                    <command command="stay"/>
                    <pilot race="none" aggression="0" fightskill="0" morale="100"/>
                  </create_ship>
                </do_if>
              </do_otherwise>
            </do_choose>
          </action>
          <cues>
            <cue name="TOTT_RFS_ChS">
              <condition>
                <check_all>
                  <cue_is_complete cue="TOTT_RFS_CRS"/>
                </check_all>
              </condition>
              <timing>
                <time exact="10m"/>
              </timing>
              <action>
                <do_all>
                  <do_all exact="5" counter="count_ships1">
                    <do_if value="{object.race@TOTT_RFS_M6{counter@count_ships1}}" exact="{lookup.race@player}">
                      <remove_object object="{object@TOTT_RFS_M6{counter@count_ships1}}"/>
                      <remove_object_from_group object="{object@TOTT_RFS_M6{counter@count_ships1}}" group="TOTT_RFS_new_big"/>                     
                    </do_if>
                  </do_all>
                  <do_all exact="4" counter="count_ships1">
                    <do_if value="{object.race@TOTT_RFS_M2{counter@count_ships1}}" exact="{lookup.race@player}">
                      <remove_object object="{object@TOTT_RFS_M2{counter@count_ships1}}"/>
                      <remove_object_from_group object="{object@TOTT_RFS_M2{counter@count_ships1}}" group="TOTT_RFS_new_big"/>
                    </do_if>
                  </do_all>
                  <do_if value="{object.race@TOTT_RFS_M2}" exact="{lookup.race@player}">
                    <remove_object object="{object@TOTT_RFS_M2}"/>
                    <remove_object_from_group object="{object@TOTT_RFS_M2}" group="TOTT_RFS_new_big"/>
                  </do_if>
                  <reset_cue cue="TOTT_RFS_ChS"/>
                </do_all>
              </action>
            </cue>
            <cue name="TOTT_RFS_SR">
              <condition>
                <check_any>
                  <any_object_attacked_by_player group="TOTT_RFS_new_big"/>
                  <any_object_attacked group="TOTT_RFS_new_big"/>
                </check_any>
              </condition>
              <timing>
                <time exact="1s"/>
              </timing>
              <action>
                <do_all>
                  <set_relation>
                    <relation group="TOTT_RFS_new_big" object="{player.ship}" relation="neutral" mutual="1"/>
                  </set_relation>
                  <set_group_command command="stay" group="TOTT_RFS_new_big"/>
                  <set_value name="TOTT_RFS_step" exact="1"/>                 
                  <reset_cue cue="TOTT_RFS_SR"/>
                </do_all>
              </action>
            </cue>
           <cue name="TOTT_RFS_T">
              <condition>
                <check_all>
                  <cue_is_complete cue="TOTT_RFS_CRS"/>
                </check_all>
              </condition>
              <timing>
                <time exact="({value@TOTT_RFS_T_time}+{value@TOTT_RFS_T_delay})s"/>
              </timing>
              <action>
                <do_all>                 
                  <!--<find_ship race="abandoned" multiple="1" class="ship" group="TOTT_RFS_new1">
                    <sector x="0" y="0"/>
                    <jumps max="100"/>
                  </find_ship>
                  <destroy_group group="TOTT_RFS_new1" explosion="0" warp="0"/> -->
                  <do_all exact="20" counter="count_ships">
                    <do_if value="{object.race@TOTT_RFS_M3{counter@count_ships}}" exact="{lookup.race@player}" negate="1">
                      <destroy_object object="TOTT_RFS_M3{counter@count_ships}" warp="0" explosion="0"/>
                    </do_if>
                  </do_all>                 
                  <do_all exact="5" counter="count_ships">
                    <do_if value="{object.race@TOTT_RFS_M6{counter@count_ships}}" exact="{lookup.race@player}" negate="1">
                      <do_choose>
                        <do_when value="{object.boarding@TOTT_RFS_M6{counter@count_ships}}" exact="1">
                          <set_value name="TOTT_RFS_T_delay" exact="600" operation="set"/>
                          <set_value name="TOTT_RFS_T_time" exact="0" operation="set"/>
                         <reset_cue cue="TOTT_RFS_T"/>
                        </do_when>
                        <do_otherwise>
                          <destroy_object object="TOTT_RFS_M6{counter@count_ships}" warp="0" explosion="0"/>
                        </do_otherwise>
                      </do_choose>                     
                    </do_if>
                  </do_all>
                  <do_all exact="4" counter="count_ships">
                    <do_if value="{object.race@TOTT_RFS_M2{counter@count_ships}}" exact="{lookup.race@player}" negate="1">
                      <do_choose>
                        <do_when value="{object.boarding@TOTT_RFS_M2{counter@count_ships}}" exact="1">
                          <set_value name="TOTT_RFS_T_delay" exact="600" operation="set"/>
                          <set_value name="TOTT_RFS_T_time" exact="0" operation="set"/>
                         <reset_cue cue="TOTT_RFS_T"/>
                        </do_when>
                        <do_otherwise>
                          <destroy_object object="TOTT_RFS_M2{counter@count_ships}" warp="0" explosion="0"/>
                        </do_otherwise>
                      </do_choose>                     
                    </do_if>
                  </do_all>
                  <do_if value="{object.race@TOTT_RFS_M2}" exact="{lookup.race@player}" negate="1">
                    <do_choose>
                      <do_when value="{object.boarding@TOTT_RFS_M2}" exact="1">
                        <set_value name="TOTT_RFS_T_delay" exact="600" operation="set"/>
                        <set_value name="TOTT_RFS_T_time" exact="0" operation="set"/>
                        <reset_cue cue="TOTT_RFS_T"/>
                      </do_when>
                      <do_otherwise>
                        <destroy_object object="TOTT_RFS_M2" warp="0" explosion="0"/>
                      </do_otherwise>
                    </do_choose>
                  </do_if>
                  <do_choose>
                    <do_when value="{value@TOTT_RFS_T_delay}" exact="600">
                      <reset_cue cue="TOTT_RFS_T"/>
                    </do_when>
                    <do_otherwise>
                      <set_value name="TOTT_RFS_step" exact="1"/>
                      <reset_cue cue="TOTT_RFS_T"/>
                      <reset_cue cue="TOTT_RFS_SR"/>
                      <reset_cue cue="TOTT_RFS_CRS"/>
                    </do_otherwise>
                  </do_choose>                                 
                </do_all>
              </action>             
            </cue>
          </cues>
        </cue>
      </cues>
Совершенству нет предела...
Аватар пользователя
by.@ztek
Admin
Admin
 
Сообщений: 1585
Изображения: 2
Зарегистрирован: 06 фев 2011, 00:24
DSP: 207
Откуда: Минск, Беларусь
Благодарил (а): 231 раз.
Поблагодарили: 688 раз.

Re: Модостроение (вопросы и ответы)

Сообщение Gvozdoyatel » 23 июн 2016, 07:16

Как бобозначается корпус корабля, например: пока корпус больше 30% его пинают твои корабли ...
Аватар пользователя
Gvozdoyatel
Pilot
Pilot
 
Сообщений: 192
Зарегистрирован: 31 май 2016, 11:01
DSP: 4
Благодарил (а): 10 раз.
Поблагодарили: 18 раз.

Re: Модостроение (вопросы и ответы)

Сообщение by.@ztek » 23 июн 2016, 08:56

get hull percent, а потом if .....>30 ...end
Совершенству нет предела...
Аватар пользователя
by.@ztek
Admin
Admin
 
Сообщений: 1585
Изображения: 2
Зарегистрирован: 06 фев 2011, 00:24
DSP: 207
Откуда: Минск, Беларусь
Благодарил (а): 231 раз.
Поблагодарили: 688 раз.

Re: Модостроение (вопросы и ответы)

Сообщение ritchie » 23 июн 2016, 13:03

by.@ztek писал(а):get scanner range. Как-то так было в ванильной версии в кое-каких боевых скриптах..

ага догнал. проверяем есть ли объекты игрока в секторе с брошеным кораблем , если есть -перебираем обьекты в цикле, сравнивая расстояние между обьектом игрока и брошеным кораблем с дальностью радара обьекта игрока. если меньше либо равно. переходим к следующей части( подлет захват эвакуация).
by.@ztek писал(а): :ay: тогда надо понять, как написаны "брошенные корабли" ;)

<cue name="TOTT_RFS_Init"> уничтожает поэлементно корабли из массивов TOTT_RFS_M3, TOTT_RFS_M6, TOTT_RFS_M6 если владелец не игрок. По сути убивает те корабли что игрок не забрал.
Перезапускает сцены TOTT_RFS_T,TOTT_RFS_SR,TOTT_RFS_SRS. Счетчик цикла TOTT_RFS_step присваиваем 1.
<cue name="TOTT_RFS_CRS"> запускается если завершена TOTT_RFS_Init.
В цикле с условием что TOTT_RFS_step(счетчик цикла) меньше либо равен 20
генерим координаты
Ветвление - с АМТ игра или без. АМТ опустим(в 1.4 не поддерживается),
если без создаем рандомного типа из указанного списка корабль м3(элемент массива TOTT_RFS_M3) по кординатам(позиция x,y,z, сектор x,y) сгенеренным выше. Оборудование максимально возможное, команда ничего не делать.
создаем актера(зачем не понятно)
Ветвление - если счетчик с 1 до 5: генерим координаты, создаем корабль м6(элемент массива TOTT_RFS_M6 ) рандомного типа из указанного списка по координатам сгенеренным выше.Вносим его в группу TOTT_RFS_new_big. оборудование макс возможное, доп апгрейды СЖО,поляризатор, лазеры. команда стоять. пилот с моралью 100, нулевой агрессией и боевым скиллом (зачем только? все равно не выпрыгнет).
Ветвление - если счетчик с 1 до 4: тоже самое что выше с м6, только корабль из списка м2, м7 или тл (элемент группы TOTT_RFS_M2). Вносим его в группу TOTT_RFS_new_big.
убиваем актера(зачем не понятно)
увеличиваем счетчик на единицу
конец цикла.
Далее кусок если все старты кроме 107. создаем универсал в сгенеренных координатах.
<cue name="TOTT_RFS_ChS"> Тут проверка - если раса кораблей, входящих в массивы TOTT_RFS_M6, TOTT_RFS_M2 игрок удаляем корабли из массивов TOTT_RFS_M6, TOTT_RFS_M2 а также из группы TOTT_RFS_new_big.
<cue name="TOTT_RFS_SR"> проверка - атакует ли игрок корабли группы <cue name="TOTT_RFS_SR">, проверка проходит каждую секунду. если атакует -устанавливает отношение кораблям группы на нейтрал, команду - стоять на месте.


Добавлено спустя 3 минуты 34 секунды:
Ногами сильно не пинайте разбирал что было интуитивно понятно...
Нужен нормальный учебник по мд, лучше с примерами.

Добавлено спустя 7 минут 3 секунды:
закончу разбирать чуть позже. просто пока больше вопросов чем ответов...

Вопрос - почему скорп и другие писатели использовали
$array.ship = find ship: sector=$sector class or type={Moveable Ship 2134} race={Neutral Race} flags=$flags refobj=null maxdist=null maxnum=99999 refpos=null
если ест
<RetVar> = get ship array: of race <Var/Race> class/type=<Value>
engine v. 32
• Команда возвращает массив кораблей существующих на момент запроса во вселенной Х3 принадлежащих расе race <Var/Race> и относящихся к классу или типу class/type=<Value>.
• Допускается задание значения null для параметра class/type=<Value>, в этом случае вернет все корабли заданной расы, не зависимо от класса и типа.
• Не допускается задание значения null для параметра race <Var/Race>, в этом случае так же вернет null.
расу указываем{Neutral Race},класс/тип Moveable Ship 2134. Это же быстрее и не так грузит машину как перебор через файнд шип.
ritchie
Trainee
Trainee
 
Сообщений: 69
Зарегистрирован: 14 окт 2015, 18:53
DSP: 1
Благодарил (а): 6 раз.
Поблагодарили: 6 раз.

Re: Модостроение (вопросы и ответы)

Сообщение by.@ztek » 23 июн 2016, 13:56

ritchie писал(а):Вопрос - почему скорп и другие писатели использовали
$array.ship = find ship: sector=$sector class or type={Moveable Ship 2134} race={Neutral Race} flags=$flags refobj=null maxdist=null maxnum=99999 refpos=null
если ест
<RetVar> = get ship array: of race <Var/Race> class/type=<Value>

Возможно, все дело в флагах - flags=$flags, там можно перечислять несколько параметров (найти ближайший/найти пристыкованный/найти дружественный/ и пр.). Не знаю. :dknow:
А учебник по МД есть, только тоже калечный :D Вечером дома гляну, где-то должен заваляться был.

Добавлено спустя 8 минут 1 секунду:
МД разобрал практически верно. :D
убиваем актера(зачем не понятно)
и все связанное с актерами - чтоб корабль был брошенным, там косяк какой-то со скрипт-движком - abandoned не прокатывает, почему-то...только создать пилота, затем его выкинуть. В скрипт-движке и в реале еще несоответствует статусы абордажа (ну, это я уже далеко полез :D )
Совершенству нет предела...
Аватар пользователя
by.@ztek
Admin
Admin
 
Сообщений: 1585
Изображения: 2
Зарегистрирован: 06 фев 2011, 00:24
DSP: 207
Откуда: Минск, Беларусь
Благодарил (а): 231 раз.
Поблагодарили: 688 раз.

Re: Модостроение (вопросы и ответы)

Сообщение ritchie » 23 июн 2016, 14:39

by.@ztek писал(а):Возможно, все дело в флагах - flags=$flags

$flags = [ACTION_NONE] | [Find.Multiple]
by.@ztek писал(а): и все связанное с актерами - чтоб корабль был брошенным, там косяк какой-то со скрипт-движком - abandoned не прокатывает, почему-то...только создать пилота, затем его выкинуть. В скрипт-движке и в реале еще несоответствует статусы абордажа (ну, это я уже далеко полез :D )
Тады понятно, у кодеров это называется "костыли" или "подпорки".

зачем тут <cue name="TOTT_RFS_Init"> проверка на корабли игрока в массивах TOTT_RFS_M6 и TOTT_RFS_M2? или просто копипаста с куска кода TOTT_RFS_M3? если так то понятно.
<cue name="TOTT_RFS_ChS"> тут же мы их исключили из этих массивов кораблей и заодно из группы бигшипов.



by.@ztek писал(а):А учебник по МД есть, только тоже калечный :D Вечером дома гляну, где-то должен заваляться был.

я скачал папку директор. там не понятно - если отрывать director.htm - открывается страничка Filter Sort?
я открывал director.xsd Блокнотом, там все в тегах но в общих чертах понять можно что за команда и что делает...
ritchie
Trainee
Trainee
 
Сообщений: 69
Зарегистрирован: 14 окт 2015, 18:53
DSP: 1
Благодарил (а): 6 раз.
Поблагодарили: 6 раз.

Re: Модостроение (вопросы и ответы)

Сообщение Gvozdoyatel » 23 июн 2016, 15:59

Скиньте МД скриптор с учебником, через две недели сделаю что нибудь
Аватар пользователя
Gvozdoyatel
Pilot
Pilot
 
Сообщений: 192
Зарегистрирован: 31 май 2016, 11:01
DSP: 4
Благодарил (а): 10 раз.
Поблагодарили: 18 раз.

Re: Модостроение (вопросы и ответы)

Сообщение by.@ztek » 23 июн 2016, 16:28

ritchie писал(а):зачем тут <cue name="TOTT_RFS_Init"> проверка на корабли игрока в массивах TOTT_RFS_M6 и TOTT_RFS_M2? или просто копипаста с куска кода TOTT_RFS_M3? если так то понятно.
<cue name="TOTT_RFS_ChS"> тут же мы их исключили из этих массивов кораблей и заодно из группы бигшипов.

Зачем-то я сделал это :D . Инициализация и чистка всех не захваченных кораблей (exact="{lookup.race@player}" negate="1"), в одном месте мы удаляем все не найденные игроком корабли, чтоб снова запустить скрипт (корабли генерятся примерно каждые сутки), в другом - удаляем из групп корабли, которые игрок захватил.
п.с. вот все нужные файлы директора, распаковать в каталог с игрой, открыть файл director.htm через IE (тогда все команды и переменные видны).
У вас нет доступа для просмотра вложений в этом сообщении.
Совершенству нет предела...
Аватар пользователя
by.@ztek
Admin
Admin
 
Сообщений: 1585
Изображения: 2
Зарегистрирован: 06 фев 2011, 00:24
DSP: 207
Откуда: Минск, Беларусь
Благодарил (а): 231 раз.
Поблагодарили: 688 раз.

Re: Модостроение (вопросы и ответы)

Сообщение ritchie » 23 июн 2016, 16:48

by.@ztek писал(а): Инициализация и чистка всех не захваченных кораблей (exact="{lookup.race@player}" negate="1"), в одном месте мы удаляем все не найденные игроком корабли, чтоб снова запустить скрипт (корабли генерятся примерно каждые сутки), в другом - удаляем из групп корабли, которые игрок захватил.
. Ну. например м6:
do_if value="{object.race@TOTT_RFS_M6{counter@count_ships1}}" exact="{lookup.race@player}">
<remove_object object="{object@TOTT_RFS_M6{counter@count_ships1}}"/>
<remove_object_from_group object="{object@TOTT_RFS_M6{counter@count_ships1}}" group="TOTT_RFS_new_big"/>
здесь удалили из массива TOTT_RFS_M6. значит захваченых коров УЖЕ в ней нет.
<do_all exact="5" counter="count_ships">
<do_if value="{object.race@TOTT_RFS_M6{counter@count_ships}}" exact="{lookup.race@player}" negate="1">
<destroy_object object="TOTT_RFS_M6{counter@count_ships}" warp="0" explosion="0"/>
</do_if>
здесь опять проверка на принадлежность игроку, если не принадлежит уничтожаем корабль. Так в том и вопрос - если мы УЖЕ исключили из массива TOTT_RFS_M6 захваченные игроком корабли - зачем 2й раз проверку ставим в ЭТОМ же массиве? ИМХО - просто удалять без проверки.... Она лишняя

by.@ztek писал(а):п.с. вот все нужные файлы директора, распаковать в каталог с игрой, открыть файл director.htm через IE (тогда все команды и переменные видны).

потому видать и не работало что в игру не вложил папку...

Добавлено спустя 4 минуты 11 секунд:
нууууу ёёёё. использует актив икс элементы, открывать нужно только в Осле...
ritchie
Trainee
Trainee
 
Сообщений: 69
Зарегистрирован: 14 окт 2015, 18:53
DSP: 1
Благодарил (а): 6 раз.
Поблагодарили: 6 раз.

Re: Модостроение (вопросы и ответы)

Сообщение by.@ztek » 23 июн 2016, 17:35

Учебник по МД. Какой есть.

Добавлено спустя 13 минут 54 секунды:
by.@ztek писал(а):Зачем-то я сделал это . Инициализация и чистка всех не захваченных кораблей

История написания этого скрипта такая: Я сделал скрипт, все ОК. Потом, уж не помню кто, слезно просил адаптировать скрипт под АМТ (добавить новые корабли), чтоб скрипт был универсальным, пришлось делать разделение на версии, ну ты видел. У многих людей уже была скачана более ранняя версия скрипта, и чтоб сутки не ждать обновления работы скрипта, пришлось добавить эпизод <cue name="TOTT_RFS_Init">, в котором грохаем все старые не захваченные корабли. Этот эпизод срабатывает только один раз, в самом начале при установке нового скрипта, либо сразу при загрузке сэйва при установке новой версии. Как-то так ;)
У вас нет доступа для просмотра вложений в этом сообщении.
Совершенству нет предела...

За это сообщение автора by.@ztek поблагодарил:
ritchie
Рейтинг: 1.89%
 
Аватар пользователя
by.@ztek
Admin
Admin
 
Сообщений: 1585
Изображения: 2
Зарегистрирован: 06 фев 2011, 00:24
DSP: 207
Откуда: Минск, Беларусь
Благодарил (а): 231 раз.
Поблагодарили: 688 раз.

Пред.След.

Вернуться в X3: Time Of The Truth

Кто сейчас на форуме

Сейчас этот форум просматривают: Yandex [Bot] и гости: 2