Forum in READ ONLY mode! All questions and discussions on Discord official server, invite link: https://discord.gg/VxsGzJ7

Язык Pascal

тут можно задать вопрос по скриптингу
Post Reply
Miralex
Developer
Developer
Posts: 656
Joined: 11.03.2005 19:12
Contact:

Язык Pascal

Post by Miralex »

Для тех, кто не может найти документацию по языку Pascal - переходим по следующим ссылкам и читаем:

Электронный учебник по языку Pascal

Справочник по функциям Delphi

И еще один справочник по функциям Delphi


Электронные книги по языкам программирования Pascal и Delphi


P.S. Если вы нашли документацию лучше - добавляйте свои ссылки.
Dirk
Posts: 9
Joined: 07.10.2006 18:50
Contact:

Post by Dirk »

Ребят, будте аккуратны, некоторые архивы заражены вредоносными скриптами.
Вот тут, http://borlpasc.narod.ru/turbo_pacs.htm есть много полезного по Паскалю
Edred
Moderator
Moderator
Posts: 559
Joined: 28.03.2006 21:29

Post by Edred »

Некоторые особенности Паскаля в стелсе и стелса в игре

Паскаль скрипт – довольно строгий язык. В частности, вам стоит обратить внимание, что вы не сможете запустить скрипт, в котором используются функции с опущенными параметрами (все параметры надо явно задавать), также нельзя передавать параметром не тот формат данных, который требуется. Например, вы не сможете (в отличие от инжекта) использовать целые числа вместо булевских выражений (true и false), вы не сможете к строке добавить число – вам надо это число преобразовать в строку и потом прибавлять.
Кстати, сразу о параметрах. Зачастую в параметрах требуется указать цвет, а для вас цвет объекта может быть несущественнен. Укажите тогда $FFFF в качестве цвета, это означает любой цвет. Работает со всеми командами, где требуется задать цвет.

В Стелсовском Паскале нет присваивания значений массиву списком. То есть конструкция:
MyArray[1..5] := (1,2,3,4,5);
Работать не будет. Значения в массив можно заносить только поэлементно.

Стелс, в отличие от обычного клиента, не контролирует количество итемов в контейнере. На обычном клиенте практически невозможно положить в контейнер больше 255 итемов, при этом в ряде комбинаций «версия сервера-версия клиента» открытие контейнера, в котором больше 255 итемов просто приводит к крешу клиента. Например, такое наблюдается на Sphere 0.55i + Client 2.0.3. А 56-ая Сфера с этим же клиентом такие контейнеры открывает нормально, но положить в них уже ничего нельзя. Так вот, Стелсу это по фиг. Он положит итемы в такой контейнер. И легко. У меня при отладкескриптов иногда до 1000 объектов оказывается в контейнере. Будьте внимательны, особенно, если на вашем шарде за макросные программы банят.

В обычном клиенте (и, соответственно, в скриптах инжекта) если вы откроете какой-то контейнер, то клиент (и инжект) запомнит содержимое этого контейнера и вы сможете его использовать вне зависимости от того, лежит ли этот контейнер в исходном месте или вы переместили его в другое место. В Стелсе не так. Если вы переместите этот контейнер в новое место – вам надо заново открыть его, чтобы использовать его содержимое.

Потом еще буду дополнять тему...
CFA
Developer
Developer
Posts: 492
Joined: 20.04.2006 6:03
Contact:

Post by CFA »

насчет массивов. в pascalScript работают так называемы динамические массивы, и присваивание им списка -

Code: Select all

var a : array of integer;
begin
    a := [0, 1, 2, 3, 4]; //получиться массив на 5 элементов
end.
проблемы возникают если это массив не из ordinal типов/string, а из записей, но это обходиться путем создания функции-конструктора для такой записи -

Code: Select all

type myPoint = record
    x, y : integer;
end;

function makePoint(x, y : integer) : myPoint;
begin
    result.x := x;
    result.y := y;
end;

var a : array of myPoint;
begin
    a := [makePoint(0,0), makePoint(100,100)];
end.
Beren
Novice
Novice
Posts: 108
Joined: 08.09.2008 1:07

Post by Beren »

а инициализировать переменную в блоке Var можно?
а если нельзы, то не подскажете если строгое правило инициализации переменных по умолчанию.
допустим :

Code: Select all

var
 IsInit:boolean;
будет ли IsInit равным false?
CFA
Developer
Developer
Posts: 492
Joined: 20.04.2006 6:03
Contact:

Post by CFA »

Beren wrote:а инициализировать переменную в блоке Var можно?
нет
Beren wrote: а если нельзы, то не подскажете если строгое правило инициализации переменных по умолчанию.
допустим :

Code: Select all

var
 IsInit:boolean;
будет ли IsInit равным false?
вообще в классическом паскале значение переменной до инициализации неопределено, но делфи и паскаль скрипт инициализируют переменные нулями. строки будут пустые, булевые - false'ом, а всякие integer, byte & тд нулями. Таким образом IsInit будет false
Post Reply