Page 1 of 1

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

Posted: 14.10.2016 10:29
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

всё написано в ошибке - две точки с запятой.
Появится еще что-то популярное - дополню.

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

Posted: 14.03.2017 12:45
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.+

Как это понять?
пытался старый скрипт запустить на новом стелсе

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

Posted: 14.03.2017 14:04
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 "

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