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

Ошибки перевода скриптов со старых версий в Стелс 7\8

Часто задаваемые вопросы
Post Reply
User avatar
Vizit0r
Developer
Developer
Posts: 3958
Joined: 24.03.2005 17:05
Contact:

Ошибки перевода скриптов со старых версий в Стелс 7\8

Post by Vizit0r »

Информация по тем синтаксическим ошибкам, которые могут появиться при запуске скриптов в 7м стелсе (пример куска кода + ошибка + описание).

Раз:

Code: Select all

FindType(StrToInt(DailyTypes.strings[Idx3]), Ground)
if GetFoundItems(Items) > 0 then

[XXX]: Compiler: [Error] (test.sc at 460:1):  "end" expected but "if" found ;
Error line is: "if GetFoundItems(Items) > 0 then "

точки с запятой нет

Code: Select all

    repeat
      wait(1000)
      p:=p+1;


12:06:29:307 [Natka]: Compiler: [Error] ( at 85:7):  "until" expected but "p" found ;
Error line is: "       p:=p+1; "

то же самое

Code: Select all

function GoToObject(Object: Cardinal): Boolean;

[XXX]: Compiler: [Error] (test.sc at 355:19):  Identifier expected but "Object" found ;
Error line is: " function GoToObject(Object: Cardinal): Boolean; "

Object - это ключевое слово языка, оно не может быть названием параметра или переменной!

Code: Select all

var
  Items_arr : Array of Cardinal;

function GetFoundItems(var Items: Array of Cardinal): Integer;
...

  if GetFoundItems(Items_arr) > 0 then

опа, и ошибка выполнения(Exec Error) тут! При этом компилятор пропустит такую конструкцию.

должно быть:


type TItemArr = Array of Cardinal; 
var
  Items_arr : TItemArr;


function GetFoundItems(var Items: TItemArr): Integer;
...

if GetFoundItems(Items_arr) > 0 then


это неочевидно, но это факт - динамические массивы нельзя передавать параметрами, надо определять его как тип. Var param при этом использовать необязательно, динамический массив - это и так указатель по сути своей.
В предыдущих версиях это тоже было актуально, кстати.

Code: Select all

22:15:13:102 [Rdor Sems]: Compiler: [Error] ( at 338:14):  Identifier expected but ";" found ;
Error line is: "     Time := 0;; "
22:15:13:102 [Rdor Sems]: Compiling failed

всё написано в ошибке - две точки с запятой.
Появится еще что-то популярное - дополню.
"Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете". (с) Макконнелл, "Совершенный код".
cpiker
Posts: 1
Joined: 14.03.2017 12:36

Re: Ошибки перевода скриптов со старых версий в Стелс 7

Post by cpiker »

12:29:13:781 [Dior]: UO-Files path incorrect, some functions disabled (char moving, map, clicocs etc.)
12:29:13:785 [Dior]: Character Dior Connected.
12:29:17:744 [Dior]: Compiling
12:29:17:869 [Dior]: Compiler: [Error] (Dior.sc at 413:17): "end" expected but "UseSkill" found ;
Error line is: " UseSkill('Spirit Speak'); "
12:29:17:870 [Dior]: Compiling failed
12:29:17:871 [Dior]: Script Dior.sc stopped successfuly
12:30:32:664 [Dior]: Compiling
12:30:32:681 [Dior]: Compiler: [Error] (Dior.sc at 413:17): "end" expected but "UseSkill" found ;
Error line is: " UseSkill('Spirit Speak'); "
12:30:32:720 [Dior]: Compiling failed
12:30:32:720 [Dior]: Script Dior.sc stopped successfuly
12:33:09:233 [Dior]: Compiling
12:33:09:250 [Dior]: Compiler: [Error] (Dior.sc at 413:17): "end" expected but "UseSkill" found ;
Error line is: " UseSkill('Spirit Speak'); "
12:33:09:259 [Dior]: Compiling failed
12:33:09:260 [Dior]: Script Dior.sc stopped successfuly
12:34:17:853 [Dior]: Character Dior Disconnected.+

Как это понять?
пытался старый скрипт запустить на новом стелсе
nah nah
Developer
Developer
Posts: 414
Joined: 13.07.2011 11:23
Contact:

Re: Ошибки перевода скриптов со старых версий в Стелс 7

Post by nah nah »

Vizit0r wrote:

Code: Select all

FindType(StrToInt(DailyTypes.strings[Idx3]), Ground)
if GetFoundItems(Items) > 0 then

[XXX]: Compiler: [Error] (test.sc at 460:1):  "end" expected but "if" found ;
Error line is: "if GetFoundItems(Items) > 0 then "

точки с запятой нет
ну очень похоже
Post Reply