Редактор скриптів (edit scripts)

Редактор скриптів (edit scripts)

У верхній частині вікна знаходиться головне меню. Пунктів меню всього три - Script (скрипт), Edit (редагувати) і Help (допомога).

При активізації кнопкою миші відкривається спадаюче меню, що мають такі підпункти:

Пункт головного меню Edit.

  • Undo (скасувати, Ctrl + Z) - скасовує вашу останню дію.
  • Redo (повернути, Ctrl + Y) - повертає зміна в скрипті.
  • Find text (знайти текст) - пошук заданого тексту в вашому скрипті.
  • Find next (знайти наступне, F3) - пошук, починаючи з поточної позиції;
  • Go to line (перейти на рядок) - перехід на рядок з вказаним номером.

Пункт головного меню Help.

Під головним меню знаходиться панель інструментів з іконками, які дублюють частину пунктів головного меню, а також поле для вибору типу скрипта - Script type. У ньому ви вказуєте, до чого прив'язується ваш скрипт - до об'єкту (object), квесту (quest) або до магічного ефекту (мagic effect).

Іконки по порядку зліва направо:

  1. Open - відкрити існуючий скрипт.
  2. Save - скомпілювати і зберегти скрипт.
  3. Previous - попередній скрипт.
  4. Next - наступний скрипт.
  5. Recompile all - скомпілювати ВСЕ скрипти. Чи не піддайтеся спокусі!
  6. Delete - видалити скрипт.
  7. Exit - закрити.

Призначення і головна мета вашого скрипта

Прийнявши рішення написати скрипт, ви повинні чітко уявляти собі, які функції він повинен виконувати і чи не можна обійтися без нього. Справа в тому, що будь-який скрипт займає дорогоцінні мілісекунди вашого процесорного часу, знижуючи таким чином fps. Особливо це помітно, коли в сцені знаходиться багато персонажів або, наприклад, дерев. Багато скриптів в такій сцені можуть різко знизити продуктивність вашого процесора, зробивши з гри "слайд-шоу". Є розумна межа, переступати через який небажано.

Прийнявши рішення про необхідність даного скрипта і переконавшись, що ніякими іншими простішими засобами домогтися бажаного не вдасться, необхідно чітко сформулювати завдання з ясними і зрозумілими цілями. Коли мета зрозуміла, потрібно вибрати оптимальний варіант вирішення вашого завдання. Основні вимоги досить прості - скрипт повинен бути якомога коротшим і, якщо немає обов'язкового виконання в кожному фреймі, то вибрати оптимальний часовий режим виконання даного скрипта. Іноді завдання можна вирішити безліччю способів. Серед них потрібно знайти найбільш оптимальний.

Тепер перейдемо до скриптів. Для початку можете подивитися, як вони взагалі виглядають. Для цього натисніть на червону стрілку "вправо" і перед вами відкриється перший в списку скрипт - AbandonedMineTrap02Script. Судячи з назви, він відповідає за роботу якийсь пастки в покинутій шахті. Завжди намагайтеся давати своїм скриптів зрозумілі назви!

В цьому скрипті є всі основні елементи скрипта:

У самій першому рядку пишеться назва скрипта:

Далі йдуть робочі блоки:

Begin [тип блоку] .... End

Саме в цих блоках і буде описуватися робота скрипта.

А тепер створимо свій власний, найперший скрипт!

ScriptName HelloWorld Begin OnAdd Message "Hello World!", 10 End

Інформація про даний скрипті:

· "Begin OnAdd" означає, що код всередині цього блоку буде виконуватися щоразу, коли ви підберете потрібний предмет. "OnAdd" - це тип даного блоку. Команда "end" закриває секцію скрипта, яка пов'язана з "OnAdd". У вас може бути кілька окремих блоків begin / end, що мають однакові або різні типи блоків (blocktype).

· Між begin і end знаходиться виконуваний програмний код. У нашому випадку це всього лише одна функція - Message, яка виведе на екран повідомлення "Hello World!".

· І останнє - часовий контроль за рядком повідомлення. В даному випадку вона має параметр «10», який означає, що рядок буде відображатися на екрані протягом 10 сек.

І з цим першим результатом ласкаво просимо в захоплюючий світ скриптинга!

  • Пасивні функції перевіряють певні ігрові величини і повертають їх значення. Наприклад, функція GetActorValue повертає певне значення характеристики актора, а функція GetDetected - тільки перевіряє і повертає "1", якщо мета виявлена, або "0", якщо немає.
  • Активні функції вносять зміни в ігровий світ і зазвичай повертають логічний результат ( "1" або "0") - чи були дії успішними чи ні. RemoveSpell, наприклад, знімає заклинання з мети і повертає "1", якщо дія пройшло успішно (тому що на цілі було закляття). PlaceAtME створює який-небудь об'єкт в локації викликав цю функцію і повертає посилання на копію цього об'єкта.

Посилання та змінні

Функції надають дію на "викликає об'єкт" (той, на якому працює скрипт) за замовчуванням, але ви можете викликати їх і на іншому об'єкті, використовуючи посилання на об'єкт. Коли ви хочете, щоб скрипт впливав, наприклад, на гравця, використовуйте посилання на гравця ( "Player") і точку ".", Щоб перенаправити виклик функції (function-call) на гравця з викликає об'єкта:

player.additem gold_001 100