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

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

Search | Conference rules | Album | Register | Pilots list | Profile | Log in to check your private messages | Log in

   Page 80 of 136
Go to page: Previous  1, 2, 3 ... 79, 80, 81 ... 134, 135, 136  Next    Перейти:   All pages
Поиск в этой теме:
Канал X3: Reunion » Модовый и скриптовый отсек X3: Reunion: «Скриптописание - делимся опытом, задаем вопросы»
CTPELOK
 145 EGP


Рейтинг канала: 5(113)
: 25
Posts: 375

Joined: 20 May 2003
Господа, каким образом можно уничтожить звезду в секторе с помощью скриптовых команд? Ато <RefObj> destruct: show no explosion=<Var/Number> вызывает вылет игрушки с ошибкой.(ссылка на солнце есть)

добавлено спустя 1 минуту:
з.Ы.: Я так понял, что в х3 повыковыривали все типы светил, оставив только первый. Почему? + при попытке поставить отличный от 1 subtype, игра вылетает.
_________________
То пропадаю, то снова появляюсь

Last edited by CTPELOK on 16:17 22-02-2008; edited 1 time in total
    Posted: 16:17 22-02-2008   
Chem
 780 EGP


Скрипт-мастер
Рейтинг канала: 15(2610)
: 248
Posts: 4751
Location: Киев
Joined: 08 Jan 2007
G-Nome wrote:
Как вот такой скрипт поставить на горячую клавишу:
$ship = [THIS]
$x = $position [ 0 ]
$y = $position [ 1 ]
$z = $position [ 2 ]
$sec = $position [ 3 ]
* $x = $position -> get x position
* $y = $position -> get y position
* $z = $position -> get z position
* $sec = $position -> get sector

$x = $x + 1500

$needen = $ship -> needed jump drive energy for jump to sector $sec
$enchk = $ship -> get amount of ware Energy Cells S_1 in cargo bay
= $ship -> add $needen units of Energy Cells S_1

$en = $ship -> get amount of ware Energy Cells S_1 in cargo bay
if $en < $needen
play sample: incoming transmission 1 , from object null
write to player logbook "You dont have enough energy onboard"
return null
end

= $ship -> call script "!move.jump" : gate or sector=$sec, followers should jump too=[TRUE],
$ship -> set position: x= $x y= $y z= $z

return null
Пробовал по-разному, основываясь на других скриптах, но добился только появления кнопки с нужным названием(при нажатии бормочет "нас приветствуют Подозрение. ")

1. По горячим клавишам - вот, http://www.elite-games.ru/conference/viewtopic.php?p=1835633#1835633, надеюсь понятно.
2. Не используй [THIS], т.к. вызов скрипта по горячей клавише он вызывается не в привязке к кораблю. Он вызывается глобально, следовательно [THIS] = null.
3. Если скрипт должен обрабатывать корабль игрока - то используй [PLAYERSHIP]
4.Откуда у тебя берутся значения в $position? Я так понял - это параметры скрипта ? Тогда тебе лучше идти не черз горячую клавишу, а через меню команд.(Тоже недавно обсуждалось). И тогда исчезнет проблема с [THIS].
И кстати, не стоит использовать $ship -> set position: x= $x y= $y z= $z , лучше вызвать $ship -> call script "!move.movetoposition" :
_________________
Умножим энтропию на 0 :-)
    Posted: 13:57 26-02-2008   
G-Nome
 





Chem wrote:
4.Откуда у тебя берутся значения в $position? Я так понял - это параметры скрипта ?

это скрипт plugin.banshee.gatelessjump из набора читов.В меню он прекрасно работает, но хочется на гор. клавишу, чтоб в менюшках не ковырятся. Кстати приставка plugin значение имеет?

Попробовал, не вышло.Теперь вообще ничего не говорит и ничего не происходит. Если использовать movetoposition корабель просто набирает скорость и не сбрасывает ее Совсем запутался... Если сможешь написать для меня такой скрипт, буду очень благодарен! Улыбка
    Posted: 19:07 26-02-2008   
Chem
 780 EGP


Скрипт-мастер
Рейтинг канала: 15(2610)
: 248
Posts: 4751
Location: Киев
Joined: 08 Jan 2007
G-Nome wrote:
Если сможешь написать для меня такой скрипт, буду очень благодарен! Улыбка

Разобраться помогу, да и народ, я думаю подключится, а писать - нет, извини.
_________________
Умножим энтропию на 0 :-)
    Posted: 01:53 27-02-2008   
G-Nome
 





Chem wrote:
Разобраться помогу, да и народ, я думаю подключится, а писать - нет, извини.

Все равно спасибо. Я ставил другие скипты аналогичного свойства (Advaced Jumpdrive 1.5), ситуация та же. Может это от версии игры зависить? Стоит 1.2+кумулятивный патч до 2.5 и русик с сайта.

добавлено спустя 3 минуты:
Romz wrote:
А что он делает?

Делает прыжок по координатам. из меню пашет, а при попытке поставить на гор. клавишу борт-тетка говорит "нас приветствуют" и все Расстроен
    Posted: 21:18 28-02-2008   
CTPELOK
 145 EGP


Рейтинг канала: 5(113)
: 25
Posts: 375

Joined: 20 May 2003
Возможно ли с помощью скриптов влиять на производственый цикл станции? Останавливать, запускать, ускорять, замедлять? Я что-то не нашел ничего похожего в хелпе.
_________________
То пропадаю, то снова появляюсь
    Posted: 10:11 06-03-2008   
Chem
 780 EGP


Скрипт-мастер
Рейтинг канала: 15(2610)
: 248
Posts: 4751
Location: Киев
Joined: 08 Jan 2007
CTPELOK wrote:
Останавливать, запускать
Да. Наводящее слово "trade and production tasks". Это типа квест - ищи Подмигиваю.
CTPELOK wrote:
ускорять, замедлять
нет, только меня состав ресурсов и продукции.
_________________
Умножим энтропию на 0 :-)
    Posted: 10:25 06-03-2008   
CTPELOK
 145 EGP


Рейтинг канала: 5(113)
: 25
Posts: 375

Joined: 20 May 2003
Вопрос еще. Каким образом можно реализовать автозапуск скрипта при создании станции? Допустим, игрок построил станцию, сразу после ее появления на ней должен заработать скрипт. Есть ли способ отличный от периодического поиска станций игрока и проверки, запущен ли скрипт (кстати, как можно проверить, запущен ли скрипт на станции?) и по надобности запускать?
_________________
То пропадаю, то снова появляюсь
    Posted: 12:40 07-03-2008   
Chem
 780 EGP


Скрипт-мастер
Рейтинг канала: 15(2610)
: 248
Posts: 4751
Location: Киев
Joined: 08 Jan 2007
CTPELOK wrote:
Каким образом можно реализовать автозапуск скрипта при создании станции? Допустим, игрок построил станцию, сразу после ее появления на ней должен заработать скрипт. Есть ли способ отличный от периодического поиска станций игрока и проверки, запущен ли скрипт

Нет.
CTPELOK wrote:
кстати, как можно проверить, запущен ли скрипт на станции?) и по надобности запускать

<RetVar/IF><RefObj> is task <Var/Number> in use

<RetVar/IF><RefObj> is script <Script Name> on stack of task=<Var/Number>

попробуй посмотреть бомбардира, я там проверяю скрипты турелей.
_________________
Умножим энтропию на 0 :-)
    Posted: 13:07 07-03-2008   
CTPELOK
 145 EGP


Рейтинг канала: 5(113)
: 25
Posts: 375

Joined: 20 May 2003
Chem wrote:
Нет.
Жалко. Надо будет как-то намекнуть егософтовцам, чтобы в скриптах более удачно реализовали обработчики событий.

спасиб за совет.

Chem wrote:
попробуй посмотреть бомбардира
В своих-то исходниках не всегда разобраться могу, а в чужих )))))))
_________________
То пропадаю, то снова появляюсь
    Posted: 13:13 07-03-2008   
Chem
 780 EGP


Скрипт-мастер
Рейтинг канала: 15(2610)
: 248
Posts: 4751
Location: Киев
Joined: 08 Jan 2007
CTPELOK wrote:
В своих-то исходниках не всегда разобраться могу, а в чужих )))))))

Было так:
Code:

752    else if $script.current == 'turret.attackALLBrigeTarget.sv'
753     if $script.mode == 'get.turret.script'
754      $script.on.stack = $THIS -> is script 'turret.attackALLBrigeTarget.sv' on stack of task=$turret.i
755     else if $script.mode == 'set.turret.script'
756      $THIS -> start task $turret.i with script 'turret.attackALLBrigeTarget.sv' and prio 0: arg1=$turret.i arg2=null arg3=null arg4=null arg5=null
757      $turret.script.set = $THIS -> is script 'turret.attackALLBrigeTarget.sv' on stack of task=$turret.i
758      break
759     end

_________________
Умножим энтропию на 0 :-)
    Posted: 15:58 07-03-2008   
CTPELOK
 145 EGP


Рейтинг канала: 5(113)
: 25
Posts: 375

Joined: 20 May 2003
С помощью скрипта хотел перечислить все фабрики игрока. Но в сообщении появляется только строчка "some" и кнопка "ок"... Больше ничего. Что в коде не так, подскажите пожалуйста?
Code:

$StationArray = array alloc: size= 10
$StationArray = get station array: of race Player class/type= Factory
$message = "some\n"
$i = size of array $StationArray
while $k <= $i
  $temp =  $StationArray [ $k ]
  $message = $message + $k + "element value=" + $temp + "\n"
  $k = $k + 1
end
send incoming message $message to player: display it= [TRUE]

_________________
То пропадаю, то снова появляюсь

Last edited by CTPELOK on 11:45 09-03-2008; edited 1 time in total
    Posted: 11:44 09-03-2008   
sergej4341
 460 EGP


Рейтинг канала: 5(139)
: 148
Posts: 1593
Location: Химки/Брест
Joined: 16 Jan 2004
StationArray = array alloc: size= 10 ///не нужна
$StationArray = get station array: of race Player class/type= Factory
$message = "some\n"
$i = size of array $StationArray

/// необходима строка $k = 1 без нее $k = null и цикл не делает ни одного прохода

while $k <= $i
$temp = $StationArray [ $k ]
$message = $message + $k + "element value=" + $temp + "\n"
$k = $k + 1 ///красивей и правильней inc $k =
end
send incoming message $message to player: display it= [TRUE]
_________________
нажал клав. и затаил дыхание
    Posted: 13:32 09-03-2008   
Chem
 780 EGP


Скрипт-мастер
Рейтинг канала: 15(2610)
: 248
Posts: 4751
Location: Киев
Joined: 08 Jan 2007
Или проще и правильнее:
Code:

$StationArray = get station array: of race Player class/type= Factory
$i = size of array $StationArray
$message="";
while $i
  dec $i
  $temp =  $StationArray [ $i ]
  $message = sprintf: fmt="%s: element value=%s\n%s",$i,$temp,$message,null,null
end
$message = sprintf: fmt="some\n%s",$message,null,null,null,null
send incoming message $message to player: display it= [TRUE]

_________________
Умножим энтропию на 0 :-)

Last edited by Chem on 19:44 09-03-2008; edited 2 times in total
    Posted: 14:24 09-03-2008   
CTPELOK
 145 EGP


Рейтинг канала: 5(113)
: 25
Posts: 375

Joined: 20 May 2003
sergej4341 wrote:
StationArray = array alloc: size= 10 ///не нужна
Это было написано, чтобы явно задать массив (думал, что из-за этого глюки)
sergej4341 wrote:
$k = $k + 1 ///красивей и правильней inc $k =
Написано тоже для профилактики глюков
sergej4341 wrote:
/// необходима строка $k = 1 без нее $k = null и цикл не делает ни одного прохода
Нифига себе, не мог даже и подумать.

Кстати, я не пойму как в скриптах реализованы типы переменных? Они как бы и есть, но их как бы и нет. В любом случае, спасибо за подсказку.
_________________
То пропадаю, то снова появляюсь
    Posted: 19:20 09-03-2008   
sergej4341
 460 EGP


Рейтинг канала: 5(139)
: 148
Posts: 1593
Location: Химки/Брест
Joined: 16 Jan 2004
CTPELOK wrote:
Нифига себе, не мог даже и подумать.

Хы... встроенный дебаггер в руки и вперед Подмигиваю
CTPELOK wrote:
Кстати, я не пойму как в скриптах реализованы типы переменных? Они как бы и есть, но их как бы и нет.

а поточнее? что именно не понятно?
действительно, они как бы есть и их как бы нет, но если при передаче скрипту аргументов (при его запуске из работающего скрипта) ошибиться с типами, то работать не будет
_________________
нажал клав. и затаил дыхание
    Posted: 20:30 09-03-2008   
CTPELOK
 145 EGP


Рейтинг канала: 5(113)
: 25
Posts: 375

Joined: 20 May 2003
sergej4341 wrote:
встроенный дебаггер в руки и вперед
Дебаггер вроде же как работает только для скриптов, запущенных на объектах. Глобальные скрипты дебагать у меня не получилось.

sergej4341 wrote:
а поточнее? что именно не понятно?
Ну принцип действия типов переменных. Например, чтобы сделать переменную строковой, нужно "инициализировать" ее просто запихнув туда текст. Но, например, если в переменную "$message" тупо запихнуть указатель на станцию, то он отображаться в сообщении не будет. Т.е. send incoming message $message to player: display it= [TRUE] не отобазит ничего, если перед этим в $message запхать просто указатель на станцию. А если $message = "some text" + $SomeStationPtr , то все будет нормально. Это же лишние действия.

Еще один вопрос: как прибить скрипт, запущенный на станции вручную? Не нашел нигде такой опции.
_________________
То пропадаю, то снова появляюсь

Last edited by CTPELOK on 00:27 10-03-2008; edited 1 time in total
    Posted: 21:19 09-03-2008   
sergej4341
 460 EGP


Рейтинг канала: 5(139)
: 148
Posts: 1593
Location: Химки/Брест
Joined: 16 Jan 2004
CTPELOK wrote:
Дебаггер вроде же как работает только для скриптов, запущенных на объектах.

так и есть, а что мешает запустить твой скрипт для отладки на объекте а после доведения до ума как глобальный?
а когда понадобится отлаживать скрипты работающие на неписях, то же ничего не получится пока не сделаешь объекту-неписю расу Player
CTPELOK wrote:
как прибить скрипт, запущенный на станции вручную? Не нашел нигде такой опции.

а ее и нет
пишешь свой скрипт-убийцу
= wait 100 ms
return null
смотришь в каком стеке работает требуемый скрипт и запускаешь свой например на своем корабле вот таким скриптом
необходимая станция -> start task необходимый стек with script скрипт-убийца and prio 200: arg1=null arg2=null arg3=null arg4=null arg5=null
return null



<RefObj> start task <Var/Number1> with script <Script Name> and prio <Var/Number2>: arg1=<Value1> arg2=<Value2> arg3=<Value3> arg4=<Value4> arg5=<Value5>

Запускает скрипт <Script Name> в стеке Task <Var/Number1> объекта <RefObj> с приоритетом <Var/Number2> и параметрами <Value1> ... <Value5>, при этом вытеснив (удалив) все остальные скрипты из этого же стека.
Внимание! Командой start task <Var/Number> with script ни в коем случае нельзя запускать скрипт в текущем стеке! (т.е. на том же объекте и том же Task, где запускается команда start task) Если это сделать, скрипт повиснет.
_________________
нажал клав. и затаил дыхание
    Posted: 08:35 10-03-2008   
Арманкессилон
 1756 EGP


Модератор
Рейтинг канала: 9(1184)
: 346
Posts: 13154
Location: Ставрополь
Joined: 16 Aug 2007
Как с клавиатуры передать значение параметру?
_________________
Все астероиды не пересчитать!
    Posted: 23:30 10-03-2008   
бухой джедай
 183 EGP


Рейтинг канала: 5(141)
: 70
Posts: 7906 Предупреждений: 1
Location: Одесса:)
Joined: 08 Sep 2007
задаеш переменную и в параметр ставиш эту переменную
_________________
Так Добрый вечер...Превед с большого Бодуна...
Магистр Непросыхаемость...
Злобный Рецедивист...
    Posted: 00:35 11-03-2008   
Канал X3: Reunion -> Модовый и скриптовый отсек X3: Reunion: «Скриптописание - делимся опытом, задаем вопросы»
Go to page: Previous  1, 2, 3 ... 79, 80, 81 ... 134, 135, 136  Next    Перейти:   All pages
  
Display posts from previous: 
View previous topic | View next topic |
К списку каналов | Наверх страницы
Цитата не в тему: Народ кто нибудь знает скрипт автоматического строительства комплексов? (Barlog pas) - А скрипт автоматического играния в игру не нужен? (Finist)

  » Скриптописание - делимся опытом, задаем вопросы |
Каналы: Новости | 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