Set

Материал из UoPilot
Перейти к навигации Перейти к поиску

Описание

Запись значения в переменную и/или ее объявление.

Синтаксис

Привязка к окну: Нет.
Работа со свернутым окном: Да.

set #<имя> <значение1> [<зн. оп.> <значение2>]
set $<имя> <значение>  
set %<имя> [элемент] <значение>

# - признак числовой переменной, может содержать только числа, позволяет выполнять математические операции.
$ - признак строковой переменной, может содержать любые символы.
% - признак массива (переменные сгруппированные под одним именем), может содержать любые символы.
<имя> - в имени переменной допустимы символы - ['0'..'9','A'..'z','А'..'я'], регистр не учитывается.
<значение> - может содержать цифры, буквы, символы. Так же может быть результатом работы функции, например, set #var random(10).

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

#i.2 - обращаемся к переменной #i из скрипта, находящегося в окне номер 2, при этом скрипт 2 должен работать или быть на паузе.
$i.5 - обращаемся к строковой переменной из 5 скрипта.
%arr.5 [1 3] - обращаемся к элементу массива из 5 скрипта.

Примеры

// Пример 1
set #c 5              //записать константное число в переменную
msg #c
End_script
// Пример 2
set $a qwerty         //записать константную строку в переменную
msg $a
End_script
// Пример 3
set #mana #mana + 1   //записать результат арифметической операции в переменную, в данном случае инкрементация
msg #mana
// Пример 4
set #b Findcolor ( #xx1 #yy1 #xx2 #yy2 1 1 3355443 %arr 2) //записать возвращаемые данные из функции в переменную
// Пример 5
//одномерный массив
set %arr [1] 123
set %arr [2] 432
set %arr [3] 687
msg %arr [1] %arr [2] %arr [3]
End_script
// Пример 6
//двумерный массив
set %arr [1 1] 123
set %arr [1 2] 432
set %arr [2 1] 687
set %arr [2 2] 831
msg %arr [1 1] %arr [1 2]
msg %arr [2 1] %arr [2 2]
End_script
// Пример 7
//сложение числовых переменных
set #a 10
set #b 13
set #c #a + #b
msg #c
End_script
// Пример 8
//Получить псевдослучайное число
set #a random (10)           //в данном случае от 0 до 9
msg #a
// Пример 9
//получение переменной из другого скрипта (при этом скрипт из которого надо получить переменную должен работать)
set #a #b.2                  //присвоить переменной #a значение переменной #b из 2 скрипта
set $a #b.2                  //для строковой переменной
set %arr [1 1] #b.2          //для массива
set %arr [1 2] %arr.2 [1 1]  //присвоить элементу массива значение элемента массива из 2 скрипта
// Пример 10
set #abc 10 / 3              //при нецелом делении дробная часть будет отброшена.
msg #abc
End_script
// Пример 11
// Так как числовые переменные могут содержать только целые числа, то результат нужно округлять
// Корень из 137 (11,7):
set #a round(sqrt(137))      // вычислить корень и округлить до ближайшего целого: 12 
msg #a
set #a floor(sqrt(137))      // вычислить корень и округлить до ближайшего целого, которое меньше 11,7: 11
msg #a
//если нужен точный результат, то используйте строковую переменную
//но учтите, чтобы в дальнейшем использовать эту переменную, её всё равно придётся округлить
set $a sqrt(137)
    msg $a 
End_script

Смотрите также

Переменные из других скриптов
Set clipboard
Set windowpos
SetSelectedText
Setwindowtext

История развития

0.98 beta
добавил переменные. в имени переменной допустимы символы - ['0'..'9','A'..'z','А'..'я'], регистр не учитывается. отныне слово следующее за '#' считается именем переменной и заменяется ее значением, если оно было присвоено ранее. исключением является первое слово после команд set и for. переменные изменяются только при участии set и for, команда repeat использует значение, не изменяя его.

добавил команду 'set' - установка\добавление переменных Set $<имя> <значение> или Set #<имя> <знач1> [<зн. оп.> <знач2>] между знаком операции и значениями должен быть разделитель. поддерживаются следующие операции: +, -, *, / при делении результат округляется к ближайшему целому.

Set #i #i + 1
Set $s test string

1.04 beta 2
Добавил строковые переменные. Отныне символ '$' считается идентификатором строковой переменной
Добавил возможность изменения кучи всякого полезного мусора в UO. set <параметр> <значение> // где <параметр> есть одно из следующего: target, lastobjectid, lastobjecttype, lasttargetid, lasttargetx, lasttargety, lasttargetz, lasttargetkind, lastliftedid, lastskill, lastspell, laststatictype.

1.05 beta 1
Теперь можно использовать всякие извращенные формулы в команде set. переменные должны быть выделены пробелом.

set #q ((5+4)/(3+-2)* #e )-(2-(-5+9))*3

1.05 beta 3
Добавил возможность использовать случайные числа в условных операторах и команде set. random <number> возвращает число в диапазоне от 0 до number-1

set #a random 2 

1.07 beta 4
добавил возможность использовать переменные из параллельных скриптов, добавив к имени переменной номер скрипта через точку

set #i.2 5

Добавил возможность использовать характеристики персонажа из параллельных скриптов, добавив к имени переменной номер скрипта через точку

set lasttargetid.1 7

1.07 beta 5
Добавил массивы. отныне символ процента '%' считается идентификатором массива. индексы массива указываются после имени в квадратных скобках '[' и ']'. размер массива равен максимальному использованному индексу. присваивание значений осуществляется каждому элементу индивидуально. элементы массива могут содержать как строки, так и числа. допустимо ссылаться на массивы параллельных скриптов, указав после имени массива, через точку, номер скрипта. при указании только первого индекса в двумерном массиве, результатом будет строка из всех элементов второй размерности массива, соответствующих указанному индексу, и разделенных пробелом //set %ar [4] тест // одномерный массив на 4 элемента //set %arr [50 1] 544 //set %arr [50 2] 800 // двумерный массив на 50 раз по 2 элемента //set %ar.2 [5] // одномерный массив в параллельном скрипте //left %arr [50] // клик левой кнопкой по координатам 544 800 ! элементы массивов нельзя напрямую использовать в условных операторах //if charposx <> %arr [50 1]

2.05
Добавил переменную delimiter, используется для разделения элементов массива.

set %a [1 1] 1
set %a [1 2] 2
set delimiter '+'
msg %a [1]
set #n %a [1]
msg #n
set delimiter
set #n %a [1]
msg #n

2.38
Исправил определение имени переменной в команде 'set'.