×
Меню
Индекс

MSFD Операторы / математические расчеты

Вы можете использовать стандартные операторы в командах set (и возможно, в других местах, но я никогда не пробовалОт себя могу добавить, что, например, такая конструкция – if ( local_var1 / local_var2 > 10 ) – не проходит. Но подробной информации по данному вопросу у меня нет. Пробуйте сами. (Прим. Gwathlobal))
 
Сложение: +
Вычитание: -
Умножение: *
Деление:/
 
Синтаксис следующий:
 
Set result_var to (var_a + var_b)
 
Вместо переменных возможны конкретные числа.
Я предполагаю, что применяется стандартная последовательность операторов ( * и / вычисляются перед + и - ).
Так как это не проверено, я всегда использую скобки на всякий случай.
Можно использовать скобки в соответствии с обычными математическими правилами:
 
set ln to ( ln + ( k10 * math_ln10 ) + ( k2 * math_ln2 ) )
 
Предупреждение: На форумах существуют различные мнения по поводу использования нескольких операторов в одной строчке.
Некоторые люди говорят, что это вызывает много проблем.
Лично я использовал как минимум 4 оператора и переменных в одной строке.
Есть мнение, что очень большие сложения (например, более 20 переменных в одной строке) служат причиной вылета игры при загрузке.
Если это случилось, разделите вычисления на несколько строк.
 
Notes by DinkumThinkum:
Eleven variables in a single set statement will cause the following error when loading the game, followed by a crash to desktop:
"Need more room for zero pointers in Script::ReplaceGlobalsInData"
as soon as you click the button to acknowledge the error, CTD. (That script name wasn't any script of mine;  it's something internal to the game.)
Six variables in a Set statement work fine. Don't know the maximum number, but it's obviously at least six and definitely less than eleven.
There isn't much in the way of dedicated mathematical functions in TES script. There is the 'Random' function and Tribunal added the 'GetSquareRoot' function (see below). If you need more complex functions, I suggest downloading Soralis' Math Mod (available from Planet Elder Scrolls). It's a collection of scripts that allow you to do complex calculations.
Here is a short excerpt from the readme to give you an idea:
 
Вот небольшая выдержка из Ридми, чтобы вы поняли, что это такое:
"Этот мод дает возможность использовать различные математические функции в скриптах Морровинда.
Вот скрипты, которые были добавлены:
 
Имя
Проверка/Сделано
Ввод
Вывод
Точность
MathScripts
N/A
N/A
N/A
N/A
MathConstants
N/A
N/A
N/A
N/A
SquareRoot
1
math_sqrt
math_result, math_imag
7
SineScript
2
math_angle
math_sin, math_cos, math_tan
7
ArcsineScript
3
math_arc
math_sin, math_cos
6-7
NaturalLog
4
math_log
math_result, math_imag
4-5
LogScript
5
math_log, math_base
math_result, math_imag
3-4
intPower
6
math_value, math_power
math_result
7
intRoot
7
math_value, math_root
math_result, math_imag
6-7
Modulus
8
math_value, math_mod
math_result
6-7
Antiln
9
math_log
math_result
4-5
Antilog
10
math_log, math_base
math_result
2-3
AbsoluteValue
11*
math_abs
math_abs
7
PowerScript
12
math_value, math_power
math_result, math_imag
2-3
 
К сожалению, многие из этих функций довольно медленные и не годятся для вычислений в реальном времени.
Для синуса и косинуса посмотрите скрипт JDGBOLT'а в разделе Советов и Трюков.
 
Немногое можно сказать о математических функциях в скриптах.
Есть функция Random (возвращает случайное значение) и Трибунал добавил функцию GetSquareRoot.
Если вам нужны более сложные функции, можно скачать Soralis' Math Mod (с Morrowind Summit). *т.е. теперь оно только в архивах вэб на ММХ.
В нем есть коллекция скриптов, которая позволяет совершать сложные расчеты.