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

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

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

   Страница 80 из 136
На страницу: Пред.  1, 2, 3 ... 79, 80, 81 ... 134, 135, 136  След.    Перейти:   Все страницы
Поиск в этой теме:
Канал X3: Reunion » Модовый и скриптовый отсек X3: Reunion: «Скриптописание - делимся опытом, задаем вопросы»
CTPELOK
 145 EGP


Рейтинг канала: 5(113)
Репутация: 25
Сообщения: 374

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

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

Последний раз редактировалось: CTPELOK (16:17 22-02-2008), всего редактировалось 1 раз
    Добавлено: 16:17 22-02-2008   
Chem
 780 EGP


Скрипт-мастер
Рейтинг канала: 15(2610)
Репутация: 248
Сообщения: 4751
Откуда: Киев
Зарегистрирован: 08.01.2007
G-Nome :
Как вот такой скрипт поставить на горячую клавишу:
$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 :-)
    Добавлено: 13:57 26-02-2008   
G-Nome
 





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

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

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


Скрипт-мастер
Рейтинг канала: 15(2610)
Репутация: 248
Сообщения: 4751
Откуда: Киев
Зарегистрирован: 08.01.2007
G-Nome :
Если сможешь написать для меня такой скрипт, буду очень благодарен! Улыбка

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





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

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

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

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


Рейтинг канала: 5(113)
Репутация: 25
Сообщения: 374

Зарегистрирован: 20.05.2003
Возможно ли с помощью скриптов влиять на производственый цикл станции? Останавливать, запускать, ускорять, замедлять? Я что-то не нашел ничего похожего в хелпе.
_________________
То пропадаю, то снова появляюсь, но вот уже 17 лет с ЕГой и Иксами :3
    Добавлено: 10:11 06-03-2008   
Chem
 780 EGP


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


Рейтинг канала: 5(113)
Репутация: 25
Сообщения: 374

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


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

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

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

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

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


Рейтинг канала: 5(113)
Репутация: 25
Сообщения: 374

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

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

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


Скрипт-мастер
Рейтинг канала: 15(2610)
Репутация: 248
Сообщения: 4751
Откуда: Киев
Зарегистрирован: 08.01.2007
CTPELOK :
В своих-то исходниках не всегда разобраться могу, а в чужих )))))))

Было так:
Код:

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 :-)
    Добавлено: 15:58 07-03-2008   
CTPELOK
 145 EGP


Рейтинг канала: 5(113)
Репутация: 25
Сообщения: 374

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

$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]

_________________
То пропадаю, то снова появляюсь, но вот уже 17 лет с ЕГой и Иксами :3

Последний раз редактировалось: CTPELOK (11:45 09-03-2008), всего редактировалось 1 раз
    Добавлено: 11:44 09-03-2008   
sergej4341
 460 EGP


Рейтинг канала: 5(139)
Репутация: 148
Сообщения: 1593
Откуда: Химки/Брест
Зарегистрирован: 16.01.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]
_________________
нажал клав. и затаил дыхание
    Добавлено: 13:32 09-03-2008   
Chem
 780 EGP


Скрипт-мастер
Рейтинг канала: 15(2610)
Репутация: 248
Сообщения: 4751
Откуда: Киев
Зарегистрирован: 08.01.2007
Или проще и правильнее:
Код:

$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 :-)

Последний раз редактировалось: Chem (19:44 09-03-2008), всего редактировалось 2 раз(а)
    Добавлено: 14:24 09-03-2008   
CTPELOK
 145 EGP


Рейтинг канала: 5(113)
Репутация: 25
Сообщения: 374

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

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


Рейтинг канала: 5(139)
Репутация: 148
Сообщения: 1593
Откуда: Химки/Брест
Зарегистрирован: 16.01.2004
CTPELOK :
Нифига себе, не мог даже и подумать.

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

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


Рейтинг канала: 5(113)
Репутация: 25
Сообщения: 374

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

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

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

Последний раз редактировалось: CTPELOK (00:27 10-03-2008), всего редактировалось 1 раз
    Добавлено: 21:19 09-03-2008   
sergej4341
 460 EGP


Рейтинг канала: 5(139)
Репутация: 148
Сообщения: 1593
Откуда: Химки/Брест
Зарегистрирован: 16.01.2004
CTPELOK :
Дебаггер вроде же как работает только для скриптов, запущенных на объектах.

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

а ее и нет
пишешь свой скрипт-убийцу
= 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) Если это сделать, скрипт повиснет.
_________________
нажал клав. и затаил дыхание
    Добавлено: 08:35 10-03-2008   
Арманкессилон
 1725 EGP


Модератор
Рейтинг канала: 9(1184)
Репутация: 342
Сообщения: 13054
Откуда: Ставрополь
Зарегистрирован: 16.08.2007
Как с клавиатуры передать значение параметру?
_________________
Все астероиды не пересчитать!
    Добавлено: 23:30 10-03-2008   
бухой джедай
 182 EGP


Рейтинг канала: 5(141)
Репутация: 70
Сообщения: 7906 Предупреждений: 1
Откуда: Одесса:)
Зарегистрирован: 08.09.2007
задаеш переменную и в параметр ставиш эту переменную
_________________
Так Добрый вечер...Превед с большого Бодуна...
Магистр Непросыхаемость...
Злобный Рецедивист...
    Добавлено: 00:35 11-03-2008   
Канал X3: Reunion -> Модовый и скриптовый отсек X3: Reunion: «Скриптописание - делимся опытом, задаем вопросы»
На страницу: Пред.  1, 2, 3 ... 79, 80, 81 ... 134, 135, 136  След.    Перейти:   Все страницы
  
Показать: 
Предыдущая тема | Следующая тема |
К списку каналов | Наверх страницы
Цитата не в тему: Девушка намного проще совмещается с компом, чем мужик со швейной машинкой. (точно подметила Nadin)

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