Учимся простейшим скриптам |
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Есть вопрос по функции: | Код:- <RetVar/IF> <RefObj> -> get user input: type=<Script Reference Type>, title=<Var/String>
|
| |
Можно ли с помощью данной функции дать возможность выбрать скрипт как при функции регистрации горячей клавиши? | Код:- <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 Есть вопрос по функции:
| Код:- <RetVar/IF> <RefObj> -> get user input: type=<Script Reference Type>, title=<Var/String>
|
| |
Можно ли с помощью данной функции дать возможность выбрать скрипт как при функции регистрации горячей клавиши?
| Код:- <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 | Напишу чуток про цикл. Вот примерный код. | Код:- 0001 | [color=yellow]$list[/color] = 10
- 0002 | [color=yellow]$ship[/color] = Нова Рейдер
- 0003 | [color=green]while[/color] [color=yellow]$count[/color] > [color=yellow]$list[/color]
- 0004 | | [color=yellow]$x[/color] = random value from -5000 to 5000 - 1
- 0005 | | [color=yellow]$create[/color] = create ship: type=[color=yellow]$Ship[/color] owner=Аргон addto=Аргон Прайм x=[color=yellow]$x[/color] y=0 z=0
- 0006 | | inc [color=yellow]$count[/color]
- 0007 | [color=red]end[/color]
- 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. Скрипт будет как и прошлый, но теперь он будет создавать корабль в разных секторах. | Код:- 0001 | [color=yellow]$Sectorlist[/color] = array alloc: size=0
- 0002 | append {[color=green]Омикрон Лиры[/color]} to array [color=yellow]$Sectorlist[/color]
- 0003 | append {[color=green]Мальстрим[/color]} to array [color=yellow]$Sectorlist[/color]
- 0004 | append {[color=green]Королевский тупик[/color]} to array [color=yellow]$Sectorlist[/color]
- 0005 | [color=yellow]$listsize[/color] = size of array [color=yellow]$Sectorlist[/color]
- 0006 | [color=yellow]$ship[/color] = Элита
- 0007 | while [color=yellow]$count[/color] > [color=yellow]$listsize[/color]
- 0008 | | [color=yellow]$x[/color] = random value from -5000 to 5000 - 1
- 0009 | | [color=yellow]$sector[/color] = [color=yellow]$Sectorlist[$Count][/color]
- 0010 | | [color=yellow]$create[/color] = create ship: type=[color=yellow]$Ship[/color] owner=Аргон addto=[color=yellow]$sector[/color] x=$x y=0 z=0
- 0011 | | inc [color=yellow]$count[/color]
- 0012 | end
- 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 писал(а): | Код:- 0001 | [color=yellow]$Sectorlist[/color] = array alloc: size=0
- 0002 | append {[color=green]Омикрон Лиры[/color]} to array [color=yellow]$Sectorlist[/color]
- 0003 | append {[color=green]Мальстрим[/color]} to array [color=yellow]$Sectorlist[/color]
- 0004 | append {[color=green]Королевский тупик[/color]} to array [color=yellow]$Sectorlist[/color]
- 0005 | [color=yellow]$listsize[/color] = size of array [color=yellow]$Sectorlist[/color]
- 0006 | [color=yellow]$ship[/color] = Элита
- 0007 | while [color=yellow]$count[/color] > [color=yellow]$listsize[/color]
- 0008 | | [color=yellow]$x[/color] = random value from -5000 to 5000 - 1
- 0009 | | [color=yellow]$sector[/color] = [color=yellow]$Sectorlist[$Count][/color]
- 0010 | | [color=yellow]$create[/color] = create ship: type=[color=yellow]$Ship[/color] owner=Аргон addto=[color=yellow]$sector[/color] x=$x y=0 z=0
- 0011 | | inc [color=yellow]$count[/color]
- 0012 | end
- 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: | Код:- 0001 | [color=yellow]$list[/color] = 10
- 0002 | [color=yellow]$ship[/color] = Нова Рейдер
- 0003 | [color=green]while[/color] [color=yellow]$count[/color] > [color=yellow]$list[/color]
- 0004 | | [color=yellow]$x[/color] = random value from -5000 to 5000 - 1
- 0005 | | [color=yellow]$create[/color] = create ship: type=[color=yellow]$Ship[/color] owner=Аргон addto=Аргон Прайм x=[color=yellow]$x[/color] y=0 z=0
- 0006 | | inc [color=yellow]$count[/color]
- 0007 | [color=red]end[/color]
- 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 писал(а):Молодец, нашел ошибку, но зачем было ставить минус? Понтонулся? Молодец, что. Ты мне минус, и я тебе, ничего личного. |
| |
Ошибку-то надо тем не менее исправить. Если не понятно где, то сочувствую. |
|
|