Set
Описание
Запись значения в переменную и/или ее объявление.
Синтаксис
Привязка к окну: Нет.
Работа со свернутым окном: Да.
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'.