Учимся простейшим скриптам
X3 Terran Conflict / X3 Земной конфликт
 
X3 Terran conflict  
 

На сайте онлайн (человек): 158



 



Учимся простейшим скриптам

Форумы: Terran Conflict (X3TC) / X3 Земной конфликт / Скрипты и моды для X3 Terran Conflict / Учимся простейшим скриптамВойти
Количество: 338
«<4567891011121314151617>»
Учимся простейшим скриптам
01.10.2011 14:23:50
Xenon-pX

Репутация: 0
Сообщений: 1
Регистрация: 30.09.2011
Привет всем... в скриптах разбираюсь в принципе неплохо, но есть у меня вопрос: в игре встречается летающая тарелка, и у нее стоит команда "путешествовать", как задать своему кораблю такую-же команду через скрипты?
02.10.2011 18:42:49
NexusBlackHeart

Репутация: 0
Сообщений: 3
Регистрация: 24.09.2011
У меня нет подобной команды. Как я понимаю она должна быть в "Общие команды для объектов"
Есть ли альтернативный способ увеличения мощности лазеров?
[PLAYERSHIP] -> set laser energy to $laser
Это вопрос к 9 уроку.
02.10.2011 21:47:56
Malstrime

Репутация: 3611
Сообщений: 5699
Регистрация: 19.01.2009
 NexusBlackHeart писал(а):
У меня нет подобной команды. Как я понимаю она должна быть в "Общие команды для объектов"
Есть ли альтернативный способ увеличения мощности лазеров?
[PLAYERSHIP] -> set laser energy to $laser
Это вопрос к 9 уроку.
 

   Только посредством редактирования T-файлов. TShips, если конкретно.
04.10.2011 11:15:03
NexusBlackHeart

Репутация: 0
Сообщений: 3
Регистрация: 24.09.2011
 Malstrime писал(а):
   Только посредством редактирования T-файлов. TShips, если конкретно.
 


Боюсь я в этом профан...
а нельзя ли где-то скачать уже отредактированный?
04.10.2011 12:28:16
Malstrime

Репутация: 3611
Сообщений: 5699
Регистрация: 19.01.2009
 NexusBlackHeart писал(а):
Боюсь я в этом профан...
а нельзя ли где-то скачать уже отредактированный?
 

   А зачем?
 UnknownObject писал(а):
1.Качаем X3 Editor 2.
2.Открываем им файл 13.cat из папки с игрой.
3.В этом файле-архиве ищем types/TShips.pck и открываем с помощью T File Editor'а
4.Выбираем корабль из списка слева.
5.Нажимаем на вкладку Performance.
6.В конце есть параметры Weapons energy (Максимальная энергия оружия) и Weapons recharge rate (Генератор перезарядки оружия). Открыв их двойным щелчком, меняем их по своему усмотрению.
 

7. ???
8. PROFIT!!1

Редактировалось 1 раз (а). Последний раз 04.10.2011 14:34:16.

04.10.2011 13:18:50
UnknownObject

Репутация: 1792
Сообщений: 1088
Регистрация: 14.01.2010
 NexusBlackHeart писал(а):
Боюсь я в этом профан...
а нельзя ли где-то скачать уже отредактированный?
 

1.Качаем X3 Editor 2.
2.Открываем им файл 13.cat из папки с игрой.
3.В этом файле-архиве ищем types/TShips.pck и открываем с помощью T File Editor'а
4.Выбираем корабль из списка слева.
5.Нажимаем на вкладку Performance.
6.В конце есть параметры Weapons energy (Максимальная энергия оружия) и Weapons recharge rate (Генератор перезарядки оружия). Открыв их двойным щелчком, меняем их по своему усмотрению.
05.10.2011 00:23:01
NexusBlackHeart

Репутация: 0
Сообщений: 3
Регистрация: 24.09.2011
Спасибо.
Опробую.
05.10.2011 20:21:35
Ins

Репутация: 5
Сообщений: 59
Регистрация: 01.09.2011
Malstrime
Есть вопрос по функции:
 Код:
  1. <RetVar/IF> <RefObj> -> get user input: type=<Script Reference Type>, title=<Var/String>
 


Можно ли с помощью данной функции дать возможность выбрать скрипт как при функции регистрации горячей клавиши?
 Код:
  1. <RetVar> = register hotkey <Var/String> to call script <b><Script Name></b>
 
05.10.2011 22:55:44
Malstrime

Репутация: 3611
Сообщений: 5699
Регистрация: 19.01.2009
 Ins писал(а):
Malstrime
Есть вопрос по функции:
 Код:
  1. <RetVar/IF> <RefObj> -> get user input: type=<Script Reference Type>, title=<Var/String>
 


Можно ли с помощью данной функции дать возможность выбрать скрипт как при функции регистрации горячей клавиши?
 Код:
  1. <RetVar> = register hotkey <Var/String> to call script <b><Script Name></b>
 
 

    Если только ввод текстом. Выбрать из списка низзя.
16.10.2011 20:49:41
hypercatt

Репутация: 0
Сообщений: 7
Регистрация: 10.09.2011
Хех...при помощи написания скрипта "присвоил" себе Альдринский Док Оборудования, таким же образом Весенний цветок, посадил его(Цветок) на этот док и начал прокачивать скорость и управляемостью.Вот тут обнаружился ну ОЧЕНЬ интересный факт-скорость модернизируется до 9090 м/с,управляемость до 302,9 и/с, а ускорение до 1005 м/с.... Если можно, обьясните, что это за глюк. А то чуть ли не скорость света выходит
16.10.2011 21:09:53
VladikF

Репутация: 102
Сообщений: 1121
Регистрация: 29.03.2009
Это не глюк, это чит, так как игра не рассчитана на такой расклад событий.
20.10.2011 14:41:36
Destroyerm

Репутация: 433
Сообщений: 958
Регистрация: 09.08.2011
 hypercatt писал(а):
Хех...при помощи написания скрипта "присвоил" себе Альдринский Док Оборудования, таким же образом Весенний цветок, посадил его(Цветок) на этот док и начал прокачивать скорость и управляемостью.Вот тут обнаружился ну ОЧЕНЬ интересный факт-скорость модернизируется до 9090 м/с,управляемость до 302,9 и/с, а ускорение до 1005 м/с.... Если можно, обьясните, что это за глюк. А то чуть ли не скорость света выходит
 

Э-э стоп остановись! в игре нет скорости более 3000 с кепкой надо будет щас попробовать .... а то вдруг у меня получится О_о ^_^:lol:
29.10.2011 00:18:51
Unknown_pilot

Репутация: -115
Сообщений: 268
Регистрация: 23.04.2010
Malstrime, оформи отдельный урок по массивам и циклам - некоторым не вплоне ясна работа с ними
29.10.2011 08:29:46
VladikF

Репутация: 102
Сообщений: 1121
Регистрация: 29.03.2009
 Unknown_pilot писал(а):
Malstrime, оформи отдельный урок по массивам и циклам - некоторым не вплоне ясна работа с ними
 

Цикл обычный повторюшка который исполняет команды заданное кол-во раз/пока не выполнится условие. Цикл while идет отсчет пока определенная переменная не достигнет нужного кол-ва. С другими циклами сильно не смогу помочь, не знаю их синтаксис в Х3. Но да, было бы хорошо сделав 1 урок посвященный циклам и массивам. О массивах где то есть урок вроде(вчера читал), посмотри в базе знаний.
29.10.2011 12:52:51
VladikF

Репутация: 102
Сообщений: 1121
Регистрация: 29.03.2009
Напишу чуток про цикл.
Вот примерный код.
 Код:
  1. 0001 | [color=yellow]$list[/color] = 10
  2. 0002 | [color=yellow]$ship[/color] = Нова Рейдер
  3. 0003 | [color=green]while[/color] [color=yellow]$count[/color] > [color=yellow]$list[/color]
  4. 0004 | | [color=yellow]$x[/color] = random value from -5000 to 5000 - 1
  5. 0005 | | [color=yellow]$create[/color] = create ship: type=[color=yellow]$Ship[/color] owner=Аргон addto=Аргон Прайм x=[color=yellow]$x[/color] y=0 z=0
  6. 0006 | | inc [color=yellow]$count[/color]
  7. 0007 | [color=red]end[/color]
  8. 0008 | return [color=blue]null[/color]
 

Желтым выделены переменные, красным конец цикла, зеленым его начало.
Итак разберем по частям.
0001 - Задается переменная $list которая равна 10 (чистое число).
0002 - Задается переменная $ship, которой является корабль Нова Рейдер.
0003 - Создается цикл типа while, и он будет продолжатся пока число $count не станет больше $list.
0004 - Переменной $x случайно задается от -5000 до 5000 (в метрах)
0005 - Создается корабль с типом который записан в переменной $Ship (type=$ship), расой Аргон(owner=Аргон), и добавляется в Аргон прайм(addto=Аргон прайм) с координатой Х записанной в переменной Х(x=$x) и координатами y,z(y=0 z=0) которые равны нулю.
0006 - Увеличивается переменная $count на 1 еденицу( тоже самое что и $count= $count + 1, пример : было 0 стало 1)
0007 - Окончание цикла.
0008 - Окончание скрипта.


Скрипт создает корабль с типом $ship в секторе Аргон прайм расы Аргон по координатам $x , y, z, после чего к $count добавляется 1 пока он не станет больше $list, т.е пока $count не станет больше 10, что значит что корабль нова рейдер создатся в аргон прайме 12 раз(если ошибся поправьте, отсчет идет с нуля по 11, т.к лишь 11 больше 10 т.е $count будет 0,1,2,3,4,5,6,7,8,9,10,11 и лишь после этого завершится цикл).

Редактировалось 1 раз (а). Последний раз 29.10.2011 12:53:03.

29.10.2011 13:58:45
VladikF

Репутация: 102
Сообщений: 1121
Регистрация: 29.03.2009
Никто не поможет с вопросами по MD. Где то видел, но где не помню, хоть убейте.
Где взять редактор для MD(прошу в блокнот не тыкать, хотелось бы с подсветкой синтаксиса, если такой присутствует)? Или же подойдет игровой(в чем я сильно сомневаюсь).
29.10.2011 16:02:34
VladikF

Репутация: 102
Сообщений: 1121
Регистрация: 29.03.2009
Напишу и про массивы чуток.
Сразу говорю использовал скрипт от MistR'a.
Скрипт будет как и прошлый, но теперь он будет создавать корабль в разных секторах.
 Код:
  1. 0001 | [color=yellow]$Sectorlist[/color] = array alloc: size=0
  2. 0002 | append {[color=green]Омикрон Лиры[/color]} to array [color=yellow]$Sectorlist[/color]
  3. 0003 | append {[color=green]Мальстрим[/color]} to array [color=yellow]$Sectorlist[/color]
  4. 0004 | append {[color=green]Королевский тупик[/color]} to array [color=yellow]$Sectorlist[/color]
  5. 0005 | [color=yellow]$listsize[/color] = size of array [color=yellow]$Sectorlist[/color]
  6. 0006 | [color=yellow]$ship[/color] = Элита
  7. 0007 | while [color=yellow]$count[/color] > [color=yellow]$listsize[/color]
  8. 0008 | | [color=yellow]$x[/color] = random value from -5000 to 5000 - 1
  9. 0009 | | [color=yellow]$sector[/color] = [color=yellow]$Sectorlist[$Count][/color]
  10. 0010 | | [color=yellow]$create[/color] = create ship: type=[color=yellow]$Ship[/color] owner=Аргон addto=[color=yellow]$sector[/color] x=$x y=0 z=0
  11. 0011 | | inc [color=yellow]$count[/color]
  12. 0012 | end
  13. 0013 | return [color=blue]null[/color]
 

Итак приступим.
0001 -  Создает массив с названием в $Sectorlist
0002-0004 - Добавляет в массив сектора Омикрон лиры,Мальстрим,Королевский тупик.
0005 - приравнивает размер списка к размеру массива $Sectorlist
0006 - Задает к переменной $Ship обьект, а именно тип корабля "Элита"
0007 - начало цикла.
0008 - Случайное число от -5000 до 5000.
0009 - Задает значение переменной сектор из массива $Sectorlist, с номером по списку $Count
0010 - Создает корабль типа $Ship расы Аргон в секторе $Sector.
0011 - Увеличивает $Count на 1 еденицу.
0012 - Конец цикла.
0013 - Завершение скрипта.


Что же получилось? У нас создается Элита в 3 секторах по очереди, так как цикл работает до 3, при $count = 0 создается в Омикроне лиры корабль, при = 1 в Мальстриме, а при = 3 создается в королевском тупике.
Как видите ничего сложного.

Редактировалось 1 раз (а). Последний раз 29.10.2011 16:05:59.

29.10.2011 18:39:51
Malstrime

Репутация: 3611
Сообщений: 5699
Регистрация: 19.01.2009
 VladikF писал(а):
 Код:
  1. 0001 | [color=yellow]$Sectorlist[/color] = array alloc: size=0
  2. 0002 | append {[color=green]Омикрон Лиры[/color]} to array [color=yellow]$Sectorlist[/color]
  3. 0003 | append {[color=green]Мальстрим[/color]} to array [color=yellow]$Sectorlist[/color]
  4. 0004 | append {[color=green]Королевский тупик[/color]} to array [color=yellow]$Sectorlist[/color]
  5. 0005 | [color=yellow]$listsize[/color] = size of array [color=yellow]$Sectorlist[/color]
  6. 0006 | [color=yellow]$ship[/color] = Элита
  7. 0007 | while [color=yellow]$count[/color] > [color=yellow]$listsize[/color]
  8. 0008 | | [color=yellow]$x[/color] = random value from -5000 to 5000 - 1
  9. 0009 | | [color=yellow]$sector[/color] = [color=yellow]$Sectorlist[$Count][/color]
  10. 0010 | | [color=yellow]$create[/color] = create ship: type=[color=yellow]$Ship[/color] owner=Аргон addto=[color=yellow]$sector[/color] x=$x y=0 z=0
  11. 0011 | | inc [color=yellow]$count[/color]
  12. 0012 | end
  13. 0013 | return [color=blue]null[/color]
 
 

   Во-первых, чтобы увеличивать $count на единичку, надо задать ей начальное значение 0 ("$count = 0"). Во вторых, как здесь написано "$count > $sectorlist", то есть таким образом возможны два варианта, если учитывать, что значение $count неизвестно. Первое - если $count меньше либо равно $listsize (в данном случае $count меньше либо равно тройке), то тогда цикл не совершит НИ ОДНОГО  витка, и НИ ОДИН корабль не будет создан; второе - $count больше $listsize (то бишь $count больше тройки) - корабли также не будет создан, постольку поскольку сектора, в которые предположительно будут добавляться корабли, находятся в массиве $Sectorlist по индексам 0-2, а так как $count больше двойки и с каждым новым витком будет увеличиваться на единицу, отсюда следует, что "Элита" будет создаваться "нигде" (так как $sector будет равна null), то бишь ничего не произойдет (и корабли опять не создадутся), а цикл станет бесконечным и мгновенно подвесит игру. Epic fail.

Минус за дезу.

upd:
 Код:
  1. 0001 | [color=yellow]$list[/color] = 10
  2. 0002 | [color=yellow]$ship[/color] = Нова Рейдер
  3. 0003 | [color=green]while[/color] [color=yellow]$count[/color] > [color=yellow]$list[/color]
  4. 0004 | | [color=yellow]$x[/color] = random value from -5000 to 5000 - 1
  5. 0005 | | [color=yellow]$create[/color] = create ship: type=[color=yellow]$Ship[/color] owner=Аргон addto=Аргон Прайм x=[color=yellow]$x[/color] y=0 z=0
  6. 0006 | | inc [color=yellow]$count[/color]
  7. 0007 | [color=red]end[/color]
  8. 0008 | return [color=blue]null[/color]
 

   Аналогично.

Редактировалось 1 раз (а). Последний раз 29.10.2011 18:41:15.

29.10.2011 19:24:32
VladikF

Репутация: 102
Сообщений: 1121
Регистрация: 29.03.2009
 Malstrime писал(а):
   Во-первых, чтобы увеличивать $count на единичку, надо задать ей начальное значение 0 ("$count = 0"). Во вторых, как здесь написано "$count > $sectorlist", то есть таким образом возможны два варианта, если учитывать, что значение $count неизвестно. Первое - если $count меньше либо равно $listsize (в данном случае $count меньше либо равно тройке), то тогда цикл не совершит НИ ОДНОГО  витка, и НИ ОДИН корабль не будет создан; второе - $count больше $listsize (то бишь $count больше тройки) - корабли также не будет создан, постольку поскольку сектора, в которые предположительно будут добавляться корабли, находятся в массиве $Sectorlist по индексам 0-2, а так как $count больше двойки и с каждым новым витком будет увеличиваться на единицу, отсюда следует, что "Элита" будет создаваться "нигде" (так как $sector будет равна null), то бишь ничего не произойдет (и корабли опять не создадутся), а цикл станет бесконечным и мгновенно подвесит игру. Epic fail.

Минус за дезу.

upd:
   Аналогично.
 

Молодец, нашел ошибку, но зачем было ставить минус? Понтонулся? Молодец, что. Ты мне минус, и я тебе, ничего личного.
29.10.2011 20:37:40
Malstrime

Репутация: 3611
Сообщений: 5699
Регистрация: 19.01.2009
 VladikF писал(а):
Молодец, нашел ошибку, но зачем было ставить минус? Понтонулся? Молодец, что. Ты мне минус, и я тебе, ничего личного.
 

   Ошибку-то надо тем не менее исправить. Если не понятно где, то сочувствую.
«<4567891011121314151617>»
Список игр