Set: различия между версиями

Материал из UoPilot
Перейти к навигации Перейти к поиску
(Новая страница: « == Описание == Запись значения в переменную и/или ее объявление. == Синтаксис == Привязка к...»)
 
 
Строка 5: Строка 5:
 
== Синтаксис ==
 
== Синтаксис ==
 
Привязка к окну: Нет.
 
Привязка к окну: Нет.
<br>Работа со свернутым окном: Да.
+
<br>Работа со свернутым окном: Да.
  set #&lt;имя> &lt;значение1> [&lt;зн. оп.> &lt;значение2>]
+
  set #<имя> <значение1> [<зн. оп.> <значение2>]
  set $&lt;имя> &lt;значение>   
+
  set $<имя> <значение>   
  set %&lt;имя> [элемент] &lt;значение>
+
  set %<имя> [элемент] <значение>
 
'''#''' - признак числовой переменной, может содержать только числа, позволяет выполнять математические операции.   
 
'''#''' - признак числовой переменной, может содержать только числа, позволяет выполнять математические операции.   
&lt;br>'''$''' - признак строковой переменной, может содержать любые символы.
+
<br>'''$''' - признак строковой переменной, может содержать любые символы.
&lt;br>'''%''' - признак массива (переменные сгруппированные под одним именем), может содержать любые символы.
+
<br>'''%''' - признак массива (переменные сгруппированные под одним именем), может содержать любые символы.
&lt;br>'''&lt;имя>''' - в имени переменной допустимы символы - ['0'..'9','A'..'z','А'..'я'], регистр не учитывается.
+
<br>'''<имя>''' - в имени переменной допустимы символы - ['0'..'9','A'..'z','А'..'я'], регистр не учитывается.
&lt;br>'''&lt;значение>''' - может содержать цифры, буквы, символы. Так же может быть результатом работы функции, например, set #var random(10).
+
<br>'''<значение>''' - может содержать цифры, буквы, символы. Так же может быть результатом работы функции, например, set #var random(10).
  
 
При двух или более запущенных скриптах вы можете обращаться к переменным, определенным в других скриптах пилота.
 
При двух или более запущенных скриптах вы можете обращаться к переменным, определенным в других скриптах пилота.
Строка 97: Строка 97:
  
 
[[Переменные из других скриптов]]
 
[[Переменные из других скриптов]]
&lt;br>[[Set clipboard]]
+
<br>[[Set clipboard]]
&lt;br>[[Set windowpos]]
+
<br>[[Set windowpos]]
&lt;br>[[SetSelectedText]]
+
<br>[[SetSelectedText]]
&lt;br>[[Setwindowtext]]
+
<br>[[Setwindowtext]]
  
 
== История развития ==
 
== История развития ==
  
 
'''0.98 beta'''
 
'''0.98 beta'''
&lt;br>добавил переменные.
+
<br>добавил переменные.
 
в имени переменной допустимы символы - ['0'..'9','A'..'z','А'..'я'], регистр не учитывается.
 
в имени переменной допустимы символы - ['0'..'9','A'..'z','А'..'я'], регистр не учитывается.
 
отныне слово следующее за '#' считается именем переменной и заменяется ее значением, если оно было присвоено ранее. исключением является первое слово после команд set и for.  переменные изменяются только при участии set и for, команда repeat использует значение, не изменяя его.
 
отныне слово следующее за '#' считается именем переменной и заменяется ее значением, если оно было присвоено ранее. исключением является первое слово после команд set и for.  переменные изменяются только при участии set и for, команда repeat использует значение, не изменяя его.
  
 
добавил команду 'set' - установка\добавление переменных
 
добавил команду 'set' - установка\добавление переменных
Set $&lt;имя> &lt;значение> или
+
Set $<имя> <значение> или
Set #&lt;имя> &lt;знач1> [&lt;зн. оп.> &lt;знач2>]
+
Set #<имя> <знач1> [<зн. оп.> <знач2>]
 
между знаком операции и значениями должен быть разделитель.
 
между знаком операции и значениями должен быть разделитель.
 
поддерживаются следующие операции: +, -, *, /
 
поддерживаются следующие операции: +, -, *, /
Строка 119: Строка 119:
  
 
'''1.04 beta 2'''
 
'''1.04 beta 2'''
&lt;br>Добавил строковые переменные. Отныне символ '$' считается идентификатором строковой переменной
+
<br>Добавил строковые переменные. Отныне символ '$' считается идентификатором строковой переменной
&lt;br>Добавил возможность изменения кучи всякого полезного мусора в UO.
+
<br>Добавил возможность изменения кучи всякого полезного мусора в UO.
set &lt;параметр> &lt;значение> // где &lt;параметр> есть одно из следующего: target, lastobjectid, lastobjecttype, lasttargetid, lasttargetx, lasttargety, lasttargetz, lasttargetkind, lastliftedid, lastskill, lastspell, laststatictype.
+
set <параметр> <значение> // где <параметр> есть одно из следующего: target, lastobjectid, lastobjecttype, lasttargetid, lasttargetx, lasttargety, lasttargetz, lasttargetkind, lastliftedid, lastskill, lastspell, laststatictype.
  
 
'''1.05 beta 1'''
 
'''1.05 beta 1'''
&lt;br>Теперь можно использовать всякие извращенные формулы в команде set. переменные должны быть выделены пробелом.
+
<br>Теперь можно использовать всякие извращенные формулы в команде set. переменные должны быть выделены пробелом.
 
  set #q ((5+4)/(3+-2)* #e )-(2-(-5+9))*3
 
  set #q ((5+4)/(3+-2)* #e )-(2-(-5+9))*3
  
 
'''1.05 beta 3'''
 
'''1.05 beta 3'''
&lt;br>Добавил возможность использовать случайные числа в условных операторах и команде set. random &lt;number> возвращает число в диапазоне от 0 до number-1
+
<br>Добавил возможность использовать случайные числа в условных операторах и команде set. random <number> возвращает число в диапазоне от 0 до number-1
 
  set #a random 2  
 
  set #a random 2  
  
 
'''1.07 beta 4'''
 
'''1.07 beta 4'''
&lt;br>добавил возможность использовать переменные из параллельных скриптов, добавив к имени переменной номер скрипта через точку
+
<br>добавил возможность использовать переменные из параллельных скриптов, добавив к имени переменной номер скрипта через точку
 
  set #i.2 5
 
  set #i.2 5
 
Добавил возможность использовать характеристики персонажа из параллельных скриптов, добавив к имени переменной номер скрипта через точку
 
Добавил возможность использовать характеристики персонажа из параллельных скриптов, добавив к имени переменной номер скрипта через точку
Строка 138: Строка 138:
  
 
'''1.07 beta 5'''
 
'''1.07 beta 5'''
&lt;br>Добавил массивы. отныне символ процента '%' считается идентификатором массива. индексы массива указываются после имени в квадратных скобках '[' и ']'. размер массива равен максимальному использованному индексу. присваивание значений осуществляется каждому элементу индивидуально. элементы массива могут содержать как строки, так и числа.  
+
<br>Добавил массивы. отныне символ процента '%' считается идентификатором массива. индексы массива указываются после имени в квадратных скобках '[' и ']'. размер массива равен максимальному использованному индексу. присваивание значений осуществляется каждому элементу индивидуально. элементы массива могут содержать как строки, так и числа.  
 
допустимо ссылаться на массивы параллельных скриптов, указав после имени массива, через точку, номер скрипта.
 
допустимо ссылаться на массивы параллельных скриптов, указав после имени массива, через точку, номер скрипта.
 
при указании только первого индекса в двумерном массиве, результатом будет строка из всех элементов второй размерности массива, соответствующих указанному индексу, и разделенных пробелом
 
при указании только первого индекса в двумерном массиве, результатом будет строка из всех элементов второй размерности массива, соответствующих указанному индексу, и разделенных пробелом
Строка 147: Строка 147:
 
//left %arr [50] // клик левой кнопкой по координатам 544 800
 
//left %arr [50] // клик левой кнопкой по координатам 544 800
 
! элементы массивов нельзя напрямую использовать в условных операторах
 
! элементы массивов нельзя напрямую использовать в условных операторах
//if charposx &lt;> %arr [50 1]
+
//if charposx <> %arr [50 1]
  
 
'''2.05'''
 
'''2.05'''
&lt;br>Добавил переменную delimiter, используется для разделения элементов массива.
+
<br>Добавил переменную delimiter, используется для разделения элементов массива.
 
  set %a [1 1] 1
 
  set %a [1 1] 1
 
  set %a [1 2] 2
 
  set %a [1 2] 2
Строка 162: Строка 162:
  
 
'''2.38'''
 
'''2.38'''
&lt;br>Исправил определение имени переменной в команде 'set'.
+
<br>Исправил определение имени переменной в команде 'set'.
  
 
[[Категория:Работа с переменными]]
 
[[Категория:Работа с переменными]]

Текущая версия на 11:14, 28 августа 2019

Описание

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

Синтаксис

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

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'.