Уроки танцев на СКРИПТАХ от MistR (От чайника для чайника)
X3 Terran Conflict / X3 Земной конфликт
 
X3 Terran conflict  
 

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



 



Уроки танцев на СКРИПТАХ от MistR (От чайника для чайника)

Форумы: Terran Conflict (X3TC) / X3 Земной конфликт / Скрипты и моды для X3 Terran Conflict / Уроки танцев на СКРИПТАХ от MistR (От чайника для чайника)Войти
Количество: 369
12345678>»
Уроки танцев на СКРИПТАХ от MistR (От чайника для чайника)
28.05.2009 13:35:26
MistR

Репутация: 1710
Сообщений: 2121
Регистрация: 17.11.2008
  Уроки танцев на СКРИПТАХ от MistR (От чайника для чайника)  

Тут я буду описывать как написать скрипт для чего нить в подробностях!

Предупреждаю:
Я не владею профессиональным жаргоном программиста и по этому называю определенные вещи своими славами! Например эта хрень отвечает за такой-то геморрой и т.д.

Правила:
  •  Никакого флуда! Если хотите выразить благодарность, выражайте ее в репутации или просто соблюдайте чистоту темы, что я приму не хуже слов или чего-то подобного!
  •  Если вы хотите поправить или сообщить об ошибке которую я допустил, сообщайте ее тут в подробном виде, если спорный вопрос, то с подробно описанным аргументом.
  •  Предложения об описания (что описать), предлагать после того как я приеду из отпуска где-то (ориентировочно) 8 июня.

    П.с. Прошу модераторов проследить за темой во время моего отсутствия.


    Вот прога для написания скриптов вне игры.
    Предупреждаю!
    Ей лучше пользоваться имея опыт в написании скриптов! Воизбежании возникновения лишних трудно обьяснимых вопросов!

    X3 External Script Editor


    Вот нашел еще уроки по скриптописанию! Они к Х2, но тоже актуальны!
    Скрипты - это легко...!
  • Редактировалось 3 раз (а). Последний раз 24.08.2009 16:27:24.

    28.05.2009 14:55:29
    MistR

    Репутация: 1710
    Сообщений: 2121
    Регистрация: 17.11.2008
    Сейчас я буду описывать написание скрипта который добавляет любой игровой (даже если он был добавлен сторонним модом) корабль на верфь любой принадлежности , для его продажи на ней.

    Следует знать, что такой скрипт не должен работать постоянно или запускаться каждый раз когда вы загружаетесь или входите в игру, то есть запускать его нужно вручную дабы не нагружать компьютер лишней работой.

    Чтобы начать работу нужно активировать встроенный в игру скрипт-редактор.
    О том как его активировать поищите на форуме...

    После того как вы активировали скрипт-редактор, запустите его открыв «панель управлением корабля» -> «редактор скриптов».
    В появившемся окне заходим в пункт «Редактор скриптов».
    Далее в самом верху, пункт <Новый скрипт>.
    Вводим название скрипта, например “MistR.new.ship”
    В появившемся окне, в самом низу, раздел «Код», <Новая строка>...
    Входим в <Новая строка>
    Прежде чем искать код нужно знать что нам нужно!
    Нам нужно найти станцию по параметрам: Раса, Сектор, Станция.
    Значит заходим в раздел «Команды секторов и Галактики».
    Находим код:  <Возвр/IF> find station: sector=<Перем/Сектор> class or type=<Значение> race=<Перем/Раса> flags=<Перем/Число> refobj=<Значение> maxdist=<Перем/Число> maxnum=< Перем/Число > refpos=<Перем/Масив>
    Выбираем его… и вводим по порядку:
    1 – Переменная в которую мы присвоим станцию (верфь), назавем ее «station»
    2 – Теперь когда мы видим код вводим второй пункт от его названия «sector=» и всплывшем окне в самом низу выбираем пункт «Выбрать сектор», на карте указываем сектор… в моем случае это Аргон Прайм.
    3 – Параметр «class or type=», в этом пункте нужно указать станцию которую он должен найти в секторе который мы указали, в моем случае это Аргонская верфь или как-то там не помню как она называется… значит заходим и выбираем пункт «Выбрать тип станции», в  выданном списке выбираем тип станции (для отсеивания ненужных станций можно воспользоваться сортировкой по типу и расе), моя называлась «Аргон Верфь Аргонской Федерации»… с таким названием их оказалось две, т.к. в игре существует два варианта верфей: 1-С новой моделью станции и 2-Со старой моделью станции… посмотрев в игре какая же там стоит верфь (оказалось старая с меньшим весом), ее я и выбрал.
    4 – «race=» в этот параметр вводим расу к которой принадлежит эта верфь, в моем случае Аргон, выбираем точно также из пункта «Выбрать Расу»
    5 – все остальные параметры нам не нужны т.к. мы указали достаточно параметров что бы компьютер нашел нужную станцию и не запутался выдав нам не одну станцию а целый список… поэтому в остальных параметрах указываем параметр «null».

    Закончив с первой командой переходим ко второй:
    Нам нужно создать переменную к которой мы присвоим корабль который хотим добавить на продажу к верфи.
    Выбираем <Новая строка>, «Общие команды», код - <Возвр/IF><Выражение>
    Выбираем ее значение «Переменная», указываем название переменной (например «ship»).
    В появившейся команде «$ship=» указываем чему она равна, в нашем случае это будет корабль, из всплывшего окна выбираем пункт «Выбрать тип корабля»... я решил добавить на продажу Ксенонский корабль типа М3 и выбрал LX.

    Теперь у нас имеется две переменные в первой указана верфь, а во второй указан корабль.
    Сейчас нам нужна команда которая добавит на верфь этот корабль как объект продажи.
    Выбираем <Новая строка>, пункт «Торговые команды», пункт «для Станций», находим команду <РеферОбьект>add product to factory or dock:<Переем/Товар>
    Выбрав команду указываем на чем ее выполнить, в нашем случае это переменная к которой присвоена верфь, которая в моем случае называется «station»... значит я выбираю из всплывшего списка в верхней части уже существующую переменную под названием «station».
    В появившейся команде указываем последний пункт в котором говорится о продукте который будет добавлен на верфь, т.к. продукт мы уже указали в переменной под названием «ship», то в конце команды мы будем указывать пременную «ship». Значит заходим в последний пункт команды «add product to factory or dock:» открываем окно выбора и из верхней части списка указываем пункт «ship».

    Для закрытия скрипта нам остается указать последнюю команду:
    Открываем «Новая строка», «Общие команды», «Вызовы скриптов», выбираем команду «return<Значение>», значение указываем «null»... эта команда закроет скрипт после его выполнения.

    Это все что нам требовалось для добавления корабля на верфь для его продажи.
    Выходим из редактора скрипта и сохраняем скрипт.
    Т.к. скрипт мы писали для одноразового запуска, нам нужно его запустить.
    Значит в редакторе скриптов, в окне доступных скриптов находим наш скрипт и выделяем его, выделив его нажимаем кнопку «r» что запустит скрипт, в всплывшем окне под названием «Ввод скрипт» выбираем пункт «null», в новом окне подтверждаем выбор нажатием кнопки Enter. Все готово… можете лететь на верфь и покупать корабль…
    Не забудьте сохранить игру после запуска скрипта, а то его придется снова запускать...

    Удачной вам писанины...

    Редактировалось 1 раз (а). Последний раз 28.05.2009 14:59:04.

    28.05.2009 14:57:29
    MistR

    Репутация: 1710
    Сообщений: 2121
    Регистрация: 17.11.2008
    Урок №2
    Сейчас я буду описывать написание скрипта который удаляет любой игровой (даже если он был добавлен сторонним модом) корабль с верфи любой принадлежности , для его удаления с продажи на ней.


    Внимательно читаем первый урок! Делаем все точно также но вместо команды добавить продукт мы сделаем другую команду:
    Заходим в меню выбора команд, выбираем раздел «Торговые команды», потом «для станций» и в ней находим команду: <РуферОбьект> remove product from factory or dock: <Перем/Товар>
    Выбрав команду указываем на чем ее выполнить, в нашем случае это переменная к которой присвоена верфь, которая в моем случае называется «station»... значит я выбираю из всплывшего списка в верхней части уже существующую переменную под названием «station».
    В появившейся команде указываем последний пункт в котором говорится о продукте который будет удален с верфи, т.к. продукт мы уже указали в переменной под названием «ship», то в конце команды мы будем указывать пременную «ship». Значит заходим в последний пункт команды «remove product to factory or dock:» открываем окно выбора и из верхней части списка указываем пункт «ship».

    Завершаем писание скрипта по указаниям первого урока.

    П.с. Этот и первый урок позволяет добавить или удалить продукт с продажи! Такие скрипты можно применить к верфям (как это было в премере) или к станции, только у станции это будет не корабль а производимый ею продукт! Удалив таким способом старый продукт на станции и добавив новый, эта станция будет производить тот продукт который вы указали, используя те же ресурсы что и были!

    П.с.2 Этот вариант не применим к ресурсам!

    Редактировалось 1 раз (а). Последний раз 24.06.2009 20:28:46.

    09.06.2009 19:19:52
    MistR

    Репутация: 1710
    Сообщений: 2121
    Регистрация: 17.11.2008
    Урок №3
    Написание одноразового скрипта, который запускается автоматически и только один раз.


    Наша задача создать глобальную переменную, в строке 001 мы ее загружаем...
    в 002 нужно указать какая переменная будет сигнализировать нам о том что скрипт уже запускался...
    в 003 ставим условие соответствия (выполнить команду если совпало)...
    в 004 это команда завершить скрипт...
    в 005 тут условие, если в 003 совпадения небыло, то выполняем эти команды...
    в 006 тут пишем скрипт которы должен работать или срабатывать только один раз (типа добавления продуктов на станцию или создания обьекта в космосе)...
    в 007 прописывается команда присвоения глобальной переменной определенного значения (для того чтобы вследующий раз скрипт завершился а не снова сработал)...
    в 009 завершаем скрипт.

    Полный вид скрипта:
     Код:
    1. 001 $ass = get global variable: name='ass'
    2. 002 $as = 'OFFF'
    3. 003 if $as == $ass
    4. 004  return null
    5. 005 else
    6. 006 *Тут вставляем основной рабочий и нужный скрипт
    7. 007  set global variable: name='ass' value='OFFF'
    8. 008 end
    9. 009 return null
     


    Надеюсь вам это поможет...

    П.С. Такой скрипт помогает скриптерам заботится о своих потребителях, избавляя их от лишних заморочек...

    Редактировалось 1 раз (а). Последний раз 13.07.2009 09:36:57.

    24.06.2009 20:38:34
    MistR

    Репутация: 1710
    Сообщений: 2121
    Регистрация: 17.11.2008
    Урок №4
    Скрипт для загрузки текстового файла.


    Скрипт прост в написании как чайная ложка в эксплуатации...

    Текстовый файл это такая вещь, которая должна загружаться скриптом при каждой загрузке игры! По этому в начале названия скрипта пишем приставку так: «SETUP.», точка тоже обязательна. (Описание этой приставки можно найти в этой теме)

     Код:
    1. <b>001   load text: id=4545
    2. 002   return null</b>
     


    001 - Эта команда загрузит текстовый файл в папке «t» с названием «4545-L007.XML».
    002 – Эта команда завершает скрипт.

    Вот собственно и все. Удачи в написании.

    Редактировалось 1 раз (а). Последний раз 15.08.2009 14:18:32.

    24.06.2009 21:41:14
    MistR

    Репутация: 1710
    Сообщений: 2121
    Регистрация: 17.11.2008
    Урок №5
    Скрипт по созданию рандомного обьекта из списка в списке секторов.


    Смысл в том, чтобы создать в нужных нам секторах обломки кораблей...

     Код:
    1. 001  $Sector.list = array alloc: size=0
    2. 002  append {Argon Prime} to array $Sector.list
    3. 003  append {Black Hole Sun} to array $Sector.list
    4. 004  append {Cloudbase North West} to array $Sector.list
    5. 005  append {Earth} to array $Sector.list
    6. 006   
    7. 007  $Sector.list.size = size of array $Sector.list
    8. 008  $Count = 0
    9. 009  while $Count < $Sector.list.size
    10. 010    $Sector = $Sector.list[$Count]
    11. 011    
    12. 012    $Wracks.var = random value from 1 to 4 - 1
    13. 013    
    14. 014    if $Wracks.var == 1
    15. 015      $Wracks = 110
    16. 016    else if $Wracks.var == 2
    17. 017      $Wracks = 111
    18. 018    else if $Wracks.var == 3
    19. 019      $Wracks = 113
    20. 020    else if $Wracks.var == 4
    21. 021      $Wracks = 114
    22. 022    end
    23. 023    
    24. 024    $X = random value from -30000 to 30000 - 1
    25. 025    $Y = random value from -30000 to 30000 - 1
    26. 026    $Z = random value from -30000 to 30000 - 1
    27. 027    
    28. 028    $CREATE = create special: type=$Wracks addto=$Sector x=$X y=$Y z=$Z
    29. 029    
    30. 030    inc $Count =
    31. 031  end
    32. 032  return null
     


    001  Создание арейя (списка)

    002 - 005  Команда добавления секторов в список (арей)
     
    007 - 010 Незнаю как это назвать... скажу проще... это разбивание списка на поштучный, к каждому из которого будут применены команды до пункта END

    012 Команда рандомного выбора числа от 1 до 4
     
    014, 016, 018, 020 сравнение числа на соответствие

    015, 017, 019, 021 В случеи соответствия чисел указывается номер (в папке тайпс есть файл Тспециал, в котором и можно посмотреть под коким номером что находится) обломков.

    022    Конец для соответствий чисел.

    024 - 026 выбор рандомной позиции по X Y X координатам... от -30км до 30км
        
    028 Это сама команда по созданию специальных обьектов
     
    030 Обнуление
    031 Это тот самый пункт END
    032 Завершение скрипта.


    П.с. Вот и все! Удачной писанины...

    Редактировалось 4 раз (а). Последний раз 24.08.2009 14:07:45.

    13.07.2009 09:41:14
    MistR

    Репутация: 1710
    Сообщений: 2121
    Регистрация: 17.11.2008
    Резерв.

    Редактировалось 1 раз (а). Последний раз 20.08.2009 06:49:12.

    13.07.2009 13:41:21
    MistR

    Репутация: 1710
    Сообщений: 2121
    Регистрация: 17.11.2008
     Artiz писал(а):
    Спасибо нашел в 3-м уроке попробую.
    А от названия скрипта что-то меняется? Напр "  Setup... " или "  !Setup..."
     
    Конечно...
    Приставка Setup. дает возможность скриптовому файлу запускаться автоматически при загрузке игры.
    Приставка ! дает какието весомые приимущества от сбоев или игнорированием запуска скрипта... по крайней мере професионалы на так утверждали, но никто так толком обьяснить и не смог...:lol:
    16.07.2009 18:00:37
    MistR

    Репутация: 1710
    Сообщений: 2121
    Регистрация: 17.11.2008
     Oleg писал(а):
    Добрый день всем Пилотам! Ну и конечно самому главному "кипятильнику" MistRу который помогает таким "чайникам" как я.
    По делу. Хочу из X3R взять пару скриптов и пихнуть их в X3TC . Вопрос - что мне для этого нужно?(Еditor у меня выдаёт кучу ошибок). Заранее спасибо !
     
    Адоптация скрипт из былых игры несложна...
    1 способ: установив ту и новую игру переписовать команды вручную...
    2 способ: Скачать Exscriptor_v1.2.5 и также переписать скрипт, выделяя текст копируя его в новый файл под новую игру...

    П.с. Не забываем! Если вы хотите выложить свою адоптацию скрипта для всех, спрашивайте разрешения у автора...
    П.с.2 Если для себя, то тут нет ограничений по авторским правам даже по Закону РФ.
    16.07.2009 18:13:51
    MistR

    Репутация: 1710
    Сообщений: 2121
    Регистрация: 17.11.2008
     Oleg писал(а):
    MistR! Большое спасибо. Попробую. И ещё вопрос этот Exscriptor_v1.2.5 от Висты не брыкается? А скрипт для себя и то если получится.
     
    У меня не брыкается на обеих виндах (Висла и Хрюша)... Но переодически переустанавливаю, т.к. ломается по непонятным причинам...
    26.07.2009 22:00:04
    MistR

    Репутация: 1710
    Сообщений: 2121
    Регистрация: 17.11.2008
     Моргиль писал(а):
    Здраствуйте всем.
    У меня такой вопрос к уважаемому MistR.
     
    Добавление станций на продажу верфей происходит также, но с еще одной командой...
    Например так:

     Код:
    1. 001  $a.shipyard->add product to factory or dock: $Product
    2. 002    <b>= $a.shipyard->add 1 units of $Product</b>
     

    вторая строка указывает количество продаваемых станций...

    Удачи в написании...
    29.07.2009 00:01:54
    UncleAlex

    Репутация: 1749
    Сообщений: 1942
    Регистрация: 21.03.2009
    МистР, подскажи пжлст:
    1) Как добавить на верфь конкретно один корабль?
    Команда
     Код:
    1. <РеферОбьект>add product to factory or dock:<Переем/Товар>
     
     для кораблей не подразумевает изменение кол-ва их на верфи: я добавил, допустим, Вальгаллу, а в списке доступных для покупки кораблей их отображается 10 штук, как истребителей!
    2) Как правильно прописать скрипт, который бы убирал их продажи с верфи корабль, который единожды купил игрок?
    Я не могу найти строку с логикой "Если Игрок имеет в распоряжении $Тип Корабля, то..."
    А убирать и добавлять умею
    29.07.2009 08:45:26
    MistR

    Репутация: 1710
    Сообщений: 2121
    Регистрация: 17.11.2008
     UncleAlex писал(а):
    МистР, подскажи пжлст:
    А убирать и добавлять умею
     

    С кораблями в этом плане все намного сложнее! Т.к. мелкие корабли постаянно рандомничают в плане наличия в продаже... а бигшипы наоборот присутствуют постоянно!
    Такие вещи прописаны в ОБЖЕ... я думаю ты знаешь что это такое...

    А вот как сделать что-бы корабль был только один в продаже? Легко...
    Пишите команду поиска кораблей игрока... и отсеиваете в поиске нужного...
    Если корабль найден у игрока срабатывает команда удаление товара с верфи...
    Только не забывайте помечать корабли которые были проверены... чтоб лишнюю нагрузку не создавать.

    П.с. Я надеюсь правильно тебя понял...
    05.08.2009 21:32:03
    MistR

    Репутация: 1710
    Сообщений: 2121
    Регистрация: 17.11.2008
     RAdo писал(а):
           1.Уважаемый MistR, в первом уроке, при создании первой переменной (строка 001), указал на необходимость в параметре  "class or type" выбирать из списка "Выбор типа станции". При таком раскладе необходимо точно выбрать тип станции которая находится в данном секторе, так как не все станции одного типа полностью идентичны (например, два вида Верфей аргонской федерации).
           Я в этом параметре выбрал строку "Выбор станции", где указал сектор и указал именно ту верфь, которая там находится:
     001   $station= find station: sector=Аргон Прайм class or type=Верфь Аргонской Федерации(Аргон Прайм) race=Аргон flags=null refobj=null maxdist=null maxnum=null refpos=null
           Вопрос: имеет ли это какие либо отличные последствия и можно ли применять этот параметр как более легкий вариант?

           2.Добавленная на Верфь (скриптом) "Верфь аргонской федерации", затем купленная и построенная, в себе ни какой продукции не несет. добавление на эту же "верфь" кораблей и станций выше описаным скриптом результатов не дало.
            Вопрос: Возможно ли купить для себя полноценную верфь или добавить на нее продукцию скриптом? 
        
     
    1 - Нужно указывать тип станции, а не конкретную станцию на карте... я конечно же так не откланялся, но могу предположить что он не будет работать...
    2 - Естественно она будет пустая (по игре так предусмотрено)... я не пробовал, но я думаю для тебя не будет проблема попробовать и расказать нам...
    06.08.2009 00:40:53
    RAdo

    Репутация: 0
    Сообщений: 21
    Регистрация: 04.05.2009
     MistR писал(а):
    1 - Нужно указывать тип станции, а не конкретную станцию на карте... я конечно же так не откланялся, но могу предположить что он не будет работать...
     


    Да! Виноват! Я забыл дописать, что в конкретном случае который я приводил - сработало. Не пробовал на других, но так как принцип тот же я думаю и там работать будет!Я продполагаю, что параметр "Выбрать тип станции"  означает, что если в каком-нибудь другом секторе есть такая же станция как в Аргон прайм (в уроке 1 была выбрана станция с меньшим объёмом 20000, а не 25000), то этот товар добавится на все станции с объёмом 20000, т.е. станцию такого же типа. А при выборе конкретной станции - только на неё. Я, также, полагаю, что если в секторе находится две однотипные станции, например две кахунопекарни Л, то с параметром "Выбрать тип станции" добавлятся, ресурс или продукция, в зависимости от задачи, будет на обе станции (возможно даже и в других секторах), кроме случаев, когда в параметре maxnum=<Var/Number> стоит цифра 1, тогда будет заполнятся только одна из них. Логично?

    З.Ы. Но это только предположение буду проверять:)

     MistR писал(а):
    2 - Естественно она будет пустая (по игре так предусмотрено)... я не пробовал, но я думаю для тебя не будет проблема попробовать и расказать нам...
     


    Ну да, верфь пустая и скриптом добавления из урока 1 не заполнить ее. Возможно для этого другой скрипт есть...

    Редактировалось 5 раз (а). Последний раз 06.08.2009 03:37:38.

    06.08.2009 22:40:27
    MistR

    Репутация: 1710
    Сообщений: 2121
    Регистрация: 17.11.2008
     RAdo писал(а):
    Да! Виноват! Я забыл дописать, что в конкретном случае который я приводил - сработало. Не пробовал на других, но так как принцип тот же я думаю и там работать будет!Я продполагаю, что параметр "Выбрать тип станции"  означает, что если в каком-нибудь другом секторе есть такая же станция как в Аргон прайм (в уроке 1 была выбрана станция с меньшим объёмом 20000, а не 25000), то этот товар добавится на все станции с объёмом 20000, т.е. станцию такого же типа. А при выборе конкретной станции - только на неё. Я, также, полагаю, что если в секторе находится две однотипные станции, например две кахунопекарни Л, то с параметром "Выбрать тип станции" добавлятся, ресурс или продукция, в зависимости от задачи, будет на обе станции (возможно даже и в других секторах), кроме случаев, когда в параметре maxnum=<Var/Number> стоит цифра 1, тогда будет заполнятся только одна из них. Логично?

    Ну да, верфь пустая и скриптом добавления из урока 1 не заполнить ее. Возможно для этого другой скрипт есть...
     
    Ну вот видишь!
    Не знаю как работает указатель конкретной станции в таком поиске... нужно пробовать...
    Если будет две таких станции, то добавится на обе... но только в том секторе, в котором указали...
    Логично, что указав максимальное количество вы определите граници в размере количества...)
    Я думаю что у игрока верфь не предусмотрена движком игры...(

    П.с. Пробуй и не забывай описывать подробно свои иследования!
    15.08.2009 14:24:20
    MistR

    Репутация: 1710
    Сообщений: 2121
    Регистрация: 17.11.2008
    Выложил 4 урок для загрузки текстового файла...
    В первом посте выложил ссылку на Скрипт эдитор...

    Редактировалось 1 раз (а). Последний раз 15.08.2009 14:32:47.

    17.08.2009 13:35:18
    MistR

    Репутация: 1710
    Сообщений: 2121
    Регистрация: 17.11.2008
     AS писал(а):
    Привет MistR спасибо за уроки Но такой нескромный вапрос а когда будет продолжение:lol::lol::lol:
     
    Продолжение чего? Уроков?
    Я преподаю уроки по их необходимости комуто...
    Давайте пример что вам непонятно, а я сделаю описание в уроках...
    18.08.2009 12:58:45
    MistR

    Репутация: 1710
    Сообщений: 2121
    Регистрация: 17.11.2008
     AS писал(а):
    Привет MistR скажи а можно ли прописать каманду минстралю чтобы он добывал нивидиум автоматически как руду и кремний это бы сильно облегчело мне жизнь:lol:lol:зарание спасибо
     
    Можно, но я непишу скрипты AI... я не пробовал, но думаю что там не все так просто как кажется...

    предлагайте че нить иное...
    20.08.2009 07:16:35
    Sam396

    Репутация: 0
    Сообщений: 52
    Регистрация: 13.07.2009
    Уважаемый MistR

    Я тут всё с обломками своими..

    Интересует следующее, каков механизм добавления данных обьектов? Скриптами это возможно?
    Как производится выборка обьекта при добавлении?

    Заранее благодарю

    Редактировалось 1 раз (а). Последний раз 20.08.2009 07:17:32.

    12345678>»
    Список игр