Sign in to follow this  
Followers 0

proScripting [Урок 0] Основы. Структура скрипта. Определения.


5 posts in this topic

Posted (edited)

Прежде чем начать, нам нужно "определиться с определениями", хотя бы с основными. Изложены они будут кухонным языком, дабы вникнуть в них могли люди, которые совершенно не сталкивались с программированием прежде. Если после прочтения информация более-менее уложится в голове, то можно смело идти гуглить глубже.

Для начала нужно ответить на вопрос, как это вообще устроено? 

У нас есть скрипт - файл (в нашем случае как правило txt) в котором написан программный код. Сей программный код "говорит" компилятору, что нужно делать, т.е. представляет собой логическую или не очень последовательность действий. Компилятор -  грубо говоря и не вдаваясь в подробности это сама программа (Adrenalin или ASI WIN ArheAge). Софт "читает" ваш код, компилирует его (компиляция — это процесс создания исполняемого файла, основываясь на указанном компилятору программном коде) и выполняет то, что там написано. 

Итак, давайте посмотрим, как будет выглядеть структура скрипта, в котором объявлены основные разделы:

uses SysUtils;            // раздел uses, тут подключаются библиотеки

const                     // описание констант
  text = 'yo ku ya glad';
  ID = 12494;
  
var                       // описание переменных 
  flag: boolean;

procedure wait();         // описание процедуры
begin
  Delay(5555);  
end;

begin                     // основной код скрипта
  Print(text);
  wait();
end.

Итак, мы видим, что все разноцветное - это явление называется подстветка синтаксиса, нужна она для более удобной навигации Ваших глаз в коде.

Обратите внимание на ключевые слова uses, const, var и тд. все они что-то "говорят" компилятору. Рассмотрим что здесь написано подробней:

uses SysUtils; 

Раздел uses сообщает, что мы используем в нашем скрипте. А использовать мы можем библиотеки или модули (юниты). Каждая библиотека дает нам доступ к набору функций, например SysUtils содержит в себе функции, которые приводят численные значения к строковым и наоборот, Вам, поверьте мне, придется их очень часто использовать в будущем.

Разделы const и var отвечают за объявление констант и переменных. Что значит объявление?
Чтобы компилятор понимал запись вида tmp_string:= s1 + s2; нужно объяснить ему в начале, что эти переменные из себя представляют, какой это тип данных? строки \ цифры \ логические переменные? Потому что нельзя, например, сложить цифру "2" и строку "Вася". Подробнее об этом будет в других уроках, сейчас просто отметьте для себя, что прежде чем использовать какие-либо переменные, они должны быть объявлены (указан их тип).

Далее как правило идет описание процедур и функций, ключевые слова procedure \ function. Что это такое? По сути и то и другое представляет собой небольшую подпрограмму, обособленную последовательность действий, которую потом можно вызвать просто написав ее название в скрипте. Нужно это например для того, чтобы не писать один и тот же код много раз.
Предположим в ArcheAge после использования умения нужно ждать пока пройдет откат умения и ГКД:

procedure wait_gcd;
begin
  while (User.Cast.EndTime <> 0) or (User.GlobalCoolDown <> 0) do delay(1000);
end;

Описав один раз такую процедуру, можно будет в своем скрипте вызывать ее после каждого использования умения:

if Engine.UseSkill('Ледяная стрела') then wait_gcd;

Еще один важный вопрос: в чем отличие процедуры от функции? Функция возвращает результат после своего выполнения, а процедура нет. Все со школы должны помнить тригонометрические функции, например синус. sin(x) = чему-нибудь, т.е. в зависимости, что мы подадим на вход этой функции, мы будем получать разные результаты. Или функция сложения - в зависимости от того, какие слагаемые были поданы на вход, результат (их сумма) будет отличаться.
А процедура это просто последовательность каких-нибудь действий без лишних заморочек.

Ну и наконец основное тело скрипта - это все то, что заключено между begin и end. (заметьте, что у этого end на конце ставится именно точка, в отличие от остальных случаев, где мы видим точку с запятой). При запуске скрипта компилятор начнет выполнять код, написанный между этими begin \ end. используя инфу об объявленных ранее константах\переменных\процедурах\функциях.

Надеюсь общее представление о том, как выглядит скрипт сложилось, поэтому переходите к следующим урокам

Edited by farmwl
CMAK and Z0rik like this

Share this post


Link to post
Share on other sites

Posted

а где урок 1 ?????

Share this post


Link to post
Share on other sites

Posted

Почему копируя скрипт, вставляя его в скрипт Адреналина - выбивает ошибку?

37cb60cc03c2.png

 

Share this post


Link to post
Share on other sites

Posted

var flag:boolean; т.е. ты забыл поставить ";"

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now
Sign in to follow this  
Followers 0