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

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

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

   Страница 58 из 61
На страницу: Пред.  1, 2, 3 ... 57, 58, 59, 60, 61  След.    Перейти:   Все страницы
Поиск в этой теме:
Канал X3: Terran Conflict » Модовый и скриптовый отсек X3: Terran Conflict: «[ДИСКУС]: Скриптописание. Проблемы и их решение.»
DNA78
 420 EGP


Рейтинг канала: 9(1060)
Репутация: 70
Сообщения: 1191
Откуда: Кыргызстан
Зарегистрирован: 12.11.2008
za4ot :
Это я ставил, когда ты его только сделал. У меня от него жуткие тормоза были потому и снес.

Сейчас вернулся в ту эпоху и посмотрел, что я там наделал. И да, действительно есть косяки в обже Гы-гы Это была моя первая проба пера с добавлением новых команд в обж. В общем удалил я его.
_________________
Очевидное-невероятное
    Добавлено: 06:05 23-02-2021   
za4ot
 475 EGP


Рейтинг канала: 5(187)
Репутация: 15
Сообщения: 3250
Откуда: Яма Изобилия
Зарегистрирован: 08.08.2012
DNA78 :
В общем удалил я его.

Ото всюду не удалишь. У меня в закромах лежит, да и не только у меня одного, наверное.

Пересобрал сборку, начал играть, смотрю что-то не то. В общем, один скрипт не работает ибо его !ship.signal.killed.xml не работает, а работает оригинальный запакованный !ship.signal.killed.pck. И что самое интересное я на эти грабли наступаю каждый раз, когда начинаю играть после очередного обновления сборки. А почему? Да потому, что бытует мнение, что распакованные скрипты имеют приоритет над запакованными. А вот фиг вам! Посему никого не слушайте, меня слушайте, всегда удаляйте копии оригинальных скриптов из папки scripts. Хорошо спохватился часов через 20 - теперь для чистоты эксперимента нужно заново начинать, эх а я уже заводик космобухла начал строить.

_________________
Пираты - наше всё!

Последний раз редактировалось: za4ot (21:49 24-02-2021), всего редактировалось 3 раз(а)
    Добавлено: 21:47 24-02-2021   
za4ot
 475 EGP


Рейтинг канала: 5(187)
Репутация: 15
Сообщения: 3250
Откуда: Яма Изобилия
Зарегистрирован: 08.08.2012
Был тут где-то скрипт, который позволял установить уровень агрессивности Хааков (читай сколько кластеров будет генерится в каждом секторе и как часто). Скрипт был оформлен как ал-плагин, созавал глобальную переменную, и для полного удаления к нему еще был приложен скрипт анинсталла.
Подумалось мне, что это слишком жирно для установки значения одной скриптовой команде. Поэтому и потому что скрипт все-таки годный и добавляет немного разнообразия в мою спокойную игру, переписал я его. Вот результат:

001 $random=random value from 0 to 18 - 1
002 $aggression=15 + $random * 5

(002 $aggression=15) меняем строку, запускаем из редактора, сохраняемся, удаляем скрипт из папки - вот и весь анинсталл.
003 set Kha'ak aggression level to $aggression
004 @ =wait 120000 ms
005 $message='Текущий уровень активности Хааков равен: ' + $aggression + '. Оповещение службы безопасности полетов.'
006 play sample 1124
007 display subtitle text: text=$message duration=10000 ms
008 return null


У меня получилось 8 строк, из которых 4 при необходимости можно просто удалить. А еще у меня есть элемент рандомности - случайное значение при каждой загрузке или reinit script cashe. Вот и думаю, а нафиг автор того скрипта так заморочился?

_________________
Пираты - наше всё!

Последний раз редактировалось: za4ot (23:31 24-02-2021), всего редактировалось 6 раз(а)
    Добавлено: 23:22 24-02-2021   
Thug
 67 EGP


Рейтинг канала: 3(26)
Репутация: 4
Сообщения: 111
Откуда: Новороссийск
Зарегистрирован: 11.11.2013
Парни, подскажите как создать массив всего, что находится на корабле? Включая установленное оружие и др.
Нашёл только:
* Массив товаров на корабле, не являющийся установленным оборудованием.
$Wares=$Ship -> get tradeable ware array from ship
В итоге, мне нужно у непися выбросить всё в космос, в контейнерах, может не искать массив, а есть другая инструкция?
_________________
На фоне космоса - человечество, всего лишь пыль!

Последний раз редактировалось: Thug (12:40 28-02-2021), всего редактировалось 2 раз(а)
    Добавлено: 12:17 28-02-2021   
za4ot
 475 EGP


Рейтинг канала: 5(187)
Репутация: 15
Сообщения: 3250
Откуда: Яма Изобилия
Зарегистрирован: 08.08.2012
Получаешь массив с товарами.
$WareArray get tradeable ware array from ship

Получаешь массив с количеством товара.
$size = size of array $WareArray
NumWareArray = array alloc: size $size
while $size != 0
dec $size
$Ware = $WareArray[$size]
$NumWare = $Ship get amount of ware $Ware in cargo bay
insert $NumWare into array NumWareArray at index $size
end

А чтоб найти установленное оборудование с помощью этой команды проверяем наличие оборудования. Если 1 то есть, если 0, то нет.
<RetVar/IF> <object> get amount of ware <ware> in cargo bay
Создаешь массив со всем оборудованием. В цикле этой командой проверяешь, и если оборудование есть, то в другой массив его записываешь и получаешь на выходе массив с установленным оборудованием.

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

Попробуй так.
_________________
Пираты - наше всё!

Последний раз редактировалось: za4ot (12:51 28-02-2021), всего редактировалось 1 раз
    Добавлено: 12:41 28-02-2021   
Thug
 67 EGP


Рейтинг канала: 3(26)
Репутация: 4
Сообщения: 111
Откуда: Новороссийск
Зарегистрирован: 11.11.2013
za4ot :
А чтоб найти установленное оборудование с помощью этой команды проверяем наличие оборудования.

С обычным грузом всё понятно, а вот создать массив с установленными щитами и оружием - проблема. Но направление понятно... Думал ещё искать по классу - оружие, щиты.
_________________
На фоне космоса - человечество, всего лишь пыль!
    Добавлено: 15:26 28-02-2021   
za4ot
 475 EGP


Рейтинг канала: 5(187)
Репутация: 15
Сообщения: 3250
Откуда: Яма Изобилия
Зарегистрирован: 08.08.2012
Для оружия нужно опросить турели и узнать какие в них пушки стоят. Для этого нужно использовать команды из раздела "информация об оружии" в скрипт-редакторе.
Для щитов подумать нужно.
_________________
Пираты - наше всё!
    Добавлено: 15:35 28-02-2021   
DNA78
 420 EGP


Рейтинг канала: 9(1060)
Репутация: 70
Сообщения: 1191
Откуда: Кыргызстан
Зарегистрирован: 12.11.2008
Thug :
С обычным грузом всё понятно, а вот создать массив с установленными щитами и оружием - проблема.

Ну какие проблемы, ну что вы Подмигиваю
Код:
$WeaponAndShield = array alloc: size=0
$Num = $Ship -> get number of shield bays
while $Num >= 0
   $Ware = $Ship -> get shield type in bay $Num
   do if is datatype[$Ware] == [DATATYP_WARE]
      append $Ware to array $WeaponAndShield

   dec $Num
end

$Num = $Ship -> get number of laser bays
while $Num >= 0
   $Ware = $Ship -> get laser type in bay $Num
   do if is datatype[$Ware] == [DATATYP_WARE]
      append $Ware to array $WeaponAndShield

   dec $Num
end

_________________
Очевидное-невероятное
    Добавлено: 18:25 01-03-2021   
Thug
 67 EGP


Рейтинг канала: 3(26)
Репутация: 4
Сообщения: 111
Откуда: Новороссийск
Зарегистрирован: 11.11.2013
Всё правильно, но требуется удалить всё оружие и щиты с корабля, а так мы найдём лишь те, что в слотах - те что в трюме будут скриптом проигнорированны.
Вообщем искал так же по типу и подтипу, и нашёл такой путь:
$Revers=4
while$Revers > 0
if$Revers == 4
$ware=Сингулярный уплотнитель времени
else if$Revers == 3
$ware=Ракета "Москит"
else if$Revers == 2
$ware=Автоматическая пушка
else if$Revers == 1
$ware=1 МДж щит
end

$MainType=get maintype of ware $ware
$ArraySubType=get number of subtypes of maintype $MainType
while$ArraySubType
dec $ArraySubType=
$ware=get ware from maintype $MainType and subtype $ArraySubType
$count=$ship -> get amount of ware $ware in cargo bay
if$count > 0

...А далее выбрасываем с корабля и создаём в космосе, в контейнерах.
...Обычный товар удаляем инструкцией описанной выше: $WareArray get tradeable ware array from ship.
Чистит трюм полностью, спасибо всем Супер!
_________________
На фоне космоса - человечество, всего лишь пыль!

Последний раз редактировалось: Thug (17:02 04-03-2021), всего редактировалось 1 раз
    Добавлено: 16:58 04-03-2021   
za4ot
 475 EGP


Рейтинг канала: 5(187)
Репутация: 15
Сообщения: 3250
Откуда: Яма Изобилия
Зарегистрирован: 08.08.2012
Thug :
Код:
$Revers=4
while$Revers > 0
if$Revers == 4
$ware=Сингулярный уплотнитель времени
else if$Revers == 3
$ware=Ракета "Москит"
else if$Revers == 2
$ware=Автоматическая пушка
else if$Revers == 1
$ware=1 МДж щит
end


Тут $Revers всегда равен 4, соответственно $ware всегда Сингулярный уплотнитель времени.

Thug :
Чистит трюм полностью, спасибо всем

Рад, что у тебя что-то получается. Главное не останавливаться.
_________________
Пираты - наше всё!

Последний раз редактировалось: za4ot (17:34 04-03-2021), всего редактировалось 2 раз(а)
    Добавлено: 17:31 04-03-2021   
DNA78
 420 EGP


Рейтинг канала: 9(1060)
Репутация: 70
Сообщения: 1191
Откуда: Кыргызстан
Зарегистрирован: 12.11.2008
Thug :
Всё правильно, но требуется удалить всё оружие и щиты с корабля, а так мы найдём лишь те, что в слотах - те что в трюме будут скриптом проигнорированны.

Каков вопрос, таков и ответ. Или я не прав. Такое впечатление из вашего умозаключения, что я что-то не правильное посоветовал.

добавлено спустя 2 минуты:
za4ot :
Тут $Revers всегда равен 4, соответственно $ware всегда Сингулярный уплотнитель времени.

Здесь скорее всего будет вечный зависон Гы-гы
_________________
Очевидное-невероятное

Последний раз редактировалось: DNA78 (19:36 04-03-2021), всего редактировалось 1 раз
    Добавлено: 19:36 04-03-2021   
by.@ztek
 315 EGP


Рейтинг канала: 5(218)
Репутация: 50
Сообщения: 795
Откуда: Минск, Беларусь
Зарегистрирован: 21.04.2010
DNA78 :
Здесь скорее всего будет вечный зависон

Ага. Улыбка

добавлено спустя 2 минуты:
С while аккуратнее, dec в помощь. Улыбка

добавлено спустя 2 минуты:
И зачем в цикле проверять? просто
If $Revers == то-то, тогда так. Улыбка
_________________
Совершенству нет предела...

Последний раз редактировалось: by.@ztek (20:57 05-03-2021), всего редактировалось 2 раз(а)
    Добавлено: 20:57 05-03-2021   
Thug
 67 EGP


Рейтинг канала: 3(26)
Репутация: 4
Сообщения: 111
Откуда: Новороссийск
Зарегистрирован: 11.11.2013
Столько комментариев, не ожидал. Разумеется есть инструкция (dec $Revers=) Я выложил только обсуждаемую часть скрипта, от сюда и непонятки... Прошу прощения! Вот полная версия моего проверенного и рабочего скрипта (если кому интересно). Думаю - теперь разом отвечу на все обсуждения Подмигиваю

 Cкрытый текст   (кликните здесь для просмотра)
* Скрипт выбрасывает либо [ВЕСЬ ГРУЗ ИЗ ТРЮМА] либо [ЛЮБОЙ УКАЗАННЫЙ ВАМИ ТОВАР].
* 1. Укажите корабль в секторе ->> Далее - null, и весь груз будет выброшен автоматически.
* = ИЛИ! =
* 1. Просканируйте товары в трюме корабля, и укажите нужный в общем спике товаров игры.
* 2. Если товар будет указан правильно, он весь будет выброшен из корабля, в контейнере.


$x=$ship -> get x position
$y=$ship -> get y position
$z=$ship -> get z position
$z=$z + 1000
$sector=$ship -> get sector
$PlSector=[PLAYERSHIP] -> get sector


* Если целевой корабль в удалённом секторе - СТОП!
if$sector != $PlSector
=speak text: page=13 id=135 priority=0
=speak text: page=13 id=133 priority=0
=speak text: page=13 id=36 priority=0
return null
end


* Если при вводе скрипта указан - Tовар -
if$ware != null
$count=$ship -> get amount of ware $ware in cargo bay
if$count > 0
play sample 991
@ =wait 200 ms
$Text=sprintf: fmt='Koличecтвo: %s ед. | Tовар: %s. | Выброшен из корабля: %s.', $count, $ware, $ship, null, null
send incoming message $Text to player: display it=[TRUE]
goto label WareEnter
else
@ =wait 200 ms
$Text='Этот товар отсутсвует в трюме корабля.'
send incoming message $Text to player: display it=[TRUE]
return null
end
end


* Если при вводе скрипта указан - null -
* ======
* Mассив для поиска на корабле товаров.

$Amount=$ship -> get tradeable ware array from ship
$wares=size of array $Amount
while$wares > 0
dec $wares=
$ware=$Amount[$wares]
$count=$ship -> get amount of ware $ware in cargo bay
$MainType=get maintype of ware $ware
$SubType=get subtype of ware $ware
$count=$count * -1
=$ship -> install $count units of $ware
$count=$count * -1
$ware=create flying ware: maintype=$MainType subtype=$SubType count=$count sector=$sector x=$x y=$y z=$z selfdestruct=null
@ =wait 10 ms
end

$Revers=4
while$Revers > 0
play sample 991

* Аргумент для поиска на корабле улучшений.
if$Revers == 4
$ware=Сингулярный уплотнитель времени

* Аргумент для поиска на корабле ракет.
else if$Revers == 3
$ware=Ракета "Москит"

* Аргумент для поиска на корабле лазеров.
else if$Revers == 2
$ware=Автоматическая пушка

* Аргумент для поиска на корабле щитов.
else if$Revers == 1
$ware=1 МДж щит
end

* 1. Команда возвращает тип товара.
$MainType=get maintype of ware $ware
* 2. Команда возвращает количество подтипов для типа.
$ArraySubType=get number of subtypes of maintype $MainType
while$ArraySubType
dec $ArraySubType=

* 3. Команда возвращает товар, заданный значениями типа и подтипа.
$ware=get ware from maintype $MainType and subtype $ArraySubType
* 4. Проверяем наличие такого товара в трюме и выбрасываем в космос.
$count=$ship -> get amount of ware $ware in cargo bay
if$count > 0
WareEnter:
* ======
$MainType=get maintype of ware $ware
$SubType=get subtype of ware $ware
$count=$count * -1
=$ship -> install $count units of $ware
$count=$count * -1
$ware=create flying ware: maintype=$MainType subtype=$SubType count=$count sector=$sector x=$x y=$y z=$z selfdestruct=null
end
end

(ТОТ САМЫЙ ЗЛОЩАСТНЫЙ Ругаюсь, недоволен! )
dec $Revers=

@ =wait 10 ms
end

@ =wait 200 ms
$Text='Выгрузка товара закончена.'
send incoming message $Text to player: display it=[TRUE]
return null

_________________
На фоне космоса - человечество, всего лишь пыль!

Последний раз редактировалось: Thug (21:25 06-03-2021), всего редактировалось 5 раз(а)
    Добавлено: 23:09 05-03-2021   
Thug
 67 EGP


Рейтинг канала: 3(26)
Репутация: 4
Сообщения: 111
Откуда: Новороссийск
Зарегистрирован: 11.11.2013
Друзья, возможно ли скриптом сделать корабль невидимым для радара? Как например невидим Аран, при поиске его в неизвестном секторе несфокусированным прыжком.
Пробовал команду: set known status to, но это не то.
_________________
На фоне космоса - человечество, всего лишь пыль!
    Добавлено: 14:45 08-03-2021   
za4ot
 475 EGP


Рейтинг канала: 5(187)
Репутация: 15
Сообщения: 3250
Откуда: Яма Изобилия
Зарегистрирован: 08.08.2012
Thug :
возможно ли скриптом сделать корабль невидимым для радара?

Нет. Но это не точно. Улыбка
_________________
Пираты - наше всё!
    Добавлено: 16:11 08-03-2021   
by.@ztek
 315 EGP


Рейтинг канала: 5(218)
Репутация: 50
Сообщения: 795
Откуда: Минск, Беларусь
Зарегистрирован: 21.04.2010
Thug :
возможно ли скриптом сделать корабль невидимым для радара?

Как бы да ))). В МД это точно есть.
Вот пример
 Cкрытый текст   (кликните здесь для просмотра)
Код:

<?xml version="1.0" encoding="utf-8" ?>
<?xml-stylesheet href="director.xsl" type="text/xsl" ?>
<director name="template" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="director.xsd">
  <documentation>
    <author name="by.@ztek" alias="Des-Studio" contact="http://des-studio.su"/>
    <content name="test hidden ship" description=""/>
    <version number="1" date="12-03-2021" status="testing"/>
  </documentation>
  <cues>
    <cue name="TOTT_test_HS">     
      <timing>
        <time exact="10s"/>
      </timing>
      <action>
        <do_all>
          <create_ship name="this.Hidd_ship" class="tl" hidden="1" race="{player.sector.race}">
            <position object="{player.ship}" min="30km"/>
            <sector sector="{player.sector}"/>
            <equipment loadout="maximum">             
            </equipment>
            <command command="idle">             
            </command>
          </create_ship>
          <incoming_message text="name- {object.name@this.Hidd_ship}, sector- {object.sector.name@this.Hidd_ship}, pos X- {object.position.x.km@this.Hidd_ship}km, pos Y- {object.position.y.km@this.Hidd_ship}km, pos Z- {object.position.z.km@this.Hidd_ship}km"/>
        </do_all>
      </action>
      <cues>
        <cue name="TOTT_test_HS 111">
          <condition>
            <check_all>
              <cue_is_complete cue="parent"/>
            </check_all>   
          </condition>
          <timing>
            <time exact="10s"/>
          </timing>
          <action>
            <do_all>
              <set_hidden object="parent.Hidd_ship" hidden="0"/>
              <incoming_message text="now not hidden )))"/>
            </do_all>
          </action>
        </cue>
      </cues>
    </cue>
  </cues>
</director>

Тут вот что: в первом (верхнем) эпизоде и создается корабль скрытый, hidden="1", он гад и в радар не попадает, просто визуально находим. А вот во втором эпизоде просто, без условий (ну это пока, на любителя), снимаем ему эту фишку.
(set_hidden object="parent.Hidd_ship" hidden="0")

добавлено спустя 13 минут:
может улучшенные спутники их могут засечь? Улыбка Не проверял.

добавлено спустя 13 минут:
п.п.с. код второго эпизода, например, с дистанции 10 км, тому кораблю стать видимым
 Cкрытый текст   (кликните здесь для просмотра)
Код:
 <condition>
            <check_all>
              <cue_is_complete cue="parent"/>
              <object_position object="{player.ship}" max="10km">
                <position object="parent.Hidd_ship"/>
              </object_position>
            </check_all> 

_________________
Совершенству нет предела...

Последний раз редактировалось: by.@ztek (21:29 12-03-2021), всего редактировалось 3 раз(а)
    Добавлено: 21:21 12-03-2021   
za4ot
 475 EGP


Рейтинг канала: 5(187)
Репутация: 15
Сообщения: 3250
Откуда: Яма Изобилия
Зарегистрирован: 08.08.2012
Только что столкнулся с проблемой при написании скрипта. Не работает команда
insert <Value> into array <Var/Array> at index <Var/Number>
Вернее работает, но не так как описано в справочнике.
Есть массив с двумя координатами точек индексы 0 и 1. Находим середину отрезка с помощью подпрограммы и используем команду вставить найденное значение в индекс 1, получаем массив с тремя точками: индексы 0, 1, 2. Снова вызываем подпрограмму и находим середину отрезка 0-1, используем команду вставить найденное значение в индекс 1 и снова получаем массив с тремя точками: индексы 0, 1, 2 - где новое значение 1 затирает старое значение 1, хотя мы должны были получить массив с четырьмя точками: индексы 0, 1, 2, 3. Почему команда в первый раз срабатывает как нужно, а во второй раз затирает значение, а не увеличивает размер массива?

Координаты точек в подпрограмму передаются правильно, значение возвращаемое из подпрограммы правильное, а вставлять не хочет - на втором витке цикла затирает.
_________________
Пираты - наше всё!

Последний раз редактировалось: za4ot (00:12 15-03-2021), всего редактировалось 1 раз
    Добавлено: 00:09 15-03-2021   
za4ot
 475 EGP


Рейтинг канала: 5(187)
Репутация: 15
Сообщения: 3250
Откуда: Яма Изобилия
Зарегистрирован: 08.08.2012
Разобрался. Теперь я точно знаю разницу между переменной с указателем на массив и переменной с копией массива. Чуть голову всю не сломал пока додумался.
_________________
Пираты - наше всё!
    Добавлено: 18:13 15-03-2021   
alexalsp
 513 EGP


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

Зарегистрирован: 12.08.2014
Это радует, но обычно люди делятся , что бы другие тоже поняли и порадовались вместе с тобой Подмигиваю
_________________
CMDR: Fallout(EG)

ED - если застряли: https://discord.gg/w56kPWH
    Добавлено: 11:07 16-03-2021   
DNA78
 420 EGP


Рейтинг канала: 9(1060)
Репутация: 70
Сообщения: 1191
Откуда: Кыргызстан
Зарегистрирован: 12.11.2008
za4ot :
Разобрался. Теперь я точно знаю разницу между переменной с указателем на массив и переменной с копией массива.

А как это связано с insert <Value> into array <Var/Array> at index <Var/Number>.
_________________
Очевидное-невероятное
    Добавлено: 17:29 16-03-2021   
Канал X3: Terran Conflict -> Модовый и скриптовый отсек X3: Terran Conflict: «[ДИСКУС]: Скриптописание. Проблемы и их решение.»
На страницу: Пред.  1, 2, 3 ... 57, 58, 59, 60, 61  След.    Перейти:   Все страницы
  
Показать: 
Предыдущая тема | Следующая тема |
К списку каналов | Наверх страницы
Цитата не в тему: Наша беда в том что все - либо мало пишут, либо много, но не туда. (Аркаша Сапожков)

  » [ДИСКУС]: Скриптописание. Проблемы и их решение. | страница 58
Каналы: Новости | 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