Другие функции скриптинга
From SA-MP Wiki
Contents |
[edit]
Функции для работы с файлами (file.inc)
Вы также можете почитать Учебник по файлам, чтобы потренироваться в этом.
[edit]
fblockread
Эта функция позволяет Вам прочитать данные из файла без кодируюищих и завершающих символов (в двоичном формате)
Parameters:({{{1}}})
| handle | Используемый handle файла, открытый функцией fopen() |
| buffer[] | Буфер для сохранения прочитанных данных. |
| size=sizeof buffer | Число ячеек для чтения. |
fblockread(gFile, string, 256);
[edit]
fblockwrite
Записывает данные в файл в двоичном формате, игнорируя концы строк и кодировку.
Parameters:({{{1}}})
| handle | Используемый handle файла, открытый функцией fopen(). |
| const buffer[] | Данные для записи в файл. |
| size=sizeof buffer | Число ячеек для записи. |
fblockwrite(gFile, "Save this data!", 15);
[edit]
fclose
Закрывает handle файла, ранее открытый функцией fopen. Очень важно использовать эту функцию псоле того, как вы закончили чтение/запись!
Parameters:({{{1}}})
| handle | Закрываемый handle файла, открытый функцией fopen(). |
fclose(gFile);
[edit]
fexist
Проверяет, есть ли указанный файл в папке с Вашими скриптами.
Parameters:({{{1}}})
| const pattern[] | Имя файла для проверки на существование. |
| Возвращает | 1 - если файл существует, 0 - если нет. |
if(fexist("datafile.txt")){
[edit]
fgetchar
Эта функция читает один символ из файла и сохраняет его в переменной, переданной по ссылке.
Parameters:({{{1}}})
| handle | Используемый handle файла, открытый функцией fopen(). |
| &value | Переменая, в которую запишется символ. |
| utf8=true | Прочитать символ в кодировке UTF8. |
fgetchar(gFile, handle, false);
[edit]
flength
Проверяет длину уже открытого файла.
Parameters:({{{1}}})
| handle | Используемый handle файла, открытый функцией fopen(). |
| Возвращает | Длина файла в байтах. |
new fileLength = flength(gFile);
[edit]
fmatch
Эта функция проверяет, соответствует ли часть данного файла указанной строке.
Parameters:({{{1}}})
| name[] | Имя проверяемого файла. |
| const pattern[] | Шаблон соответствия. |
| index=0 | Смещение для начала поиска. |
| size=sizeof name | Количество символов, в которых будет производится поиск. |
fmatch("searchFile.txt", "Peter", 0);
[edit]
fopen
Открывает указанный файл для чтения, записи или для обеих операций. Эта функция нужна для большинства файловых функций.
Важное замечание: Эта функция может привести к вылету Вашей игры, когда папка с скриптами или файл в ней не существуют.
Parameters:({{{1}}})
| const name[] | Имя файла, который Вы хотите открыть. |
| mode=io_readwrite | Режим, в котором вы хотите открыть файл. |
| Возвращает | Handle файла. |
new File:gFile = fopen("exampleFile.txt", io_readwrite);
[edit]
fputchar
Эта функция записывает один символ в файл.
Parameters:({{{1}}})
| handle | Используемый handle файла, открытый функцией fopen(). |
| value | Символ, который вы хотите записать. |
| utf8=true | Должен ли символ быть записан в кодировке UTF8 ? |
fputchar(gFile, 'e', false);
[edit]
fread
Используйте эту функцию, если Вы хотите прочитать строку из файла. Вам понадобится цикл for или while для чтения нескольких строк.
Parameters:({{{1}}})
| handle | Используемый handle файла, открытый функцией fopen(). |
| &string[] | Переданная по ссылке строка, в которую запишутся данные. |
| size=sizeof string | Число байт для чтения. |
| pack=false | Должна ли строка быть запакованной ? |
fread(gFile, string, sizeof(string));
[edit]
fremove
Удаляет существующий файл из папки с Вашими скриптами.
Важное замечание: Эта функция может привести к вылету Вашей игры ,если запрошенный файл не существует.
Parameters:({{{1}}})
| const name[] | Имя файла, который Вы хотите удалить. |
fremove("exampleFile.txt");
[edit]
fseek
Изменяет текущую позицию в файле. Вы можете перемещаться по файлу вперед или назад.
Parameters:({{{1}}})
| handle | Используемый handle файла, открытый функцией fopen(). |
| position=0 | Позиция для помещения файлового курсора. |
| whence=seek_start | Способ, по которому нужно переместиться по файлу. |
fseek(gFile, 25);
[edit]
ftemp
Эта функция открывает файл в папке "tmp" или "temp" для чтения или записи. Файл удалится полсле того, как Вы закроете его функцией fclose().
Важное замечание: Эта функция может привести к вылету Вашей игры, если соответствуящая папка не создана.
Parameters:({{{1}}})
| Возвращает | Handle файла |
new File:gFile = ftemp();
[edit]
fwrite
Записывает указанную строку или линию в файл. Помните, что файл должен быть открыт для записи.
Parameters:({{{1}}})
| handle | Используемый handle файла, открытый функцией fopen(). |
| const string[] | Строка, которую Вы хотите записать в файл. |
fwrite(gFile, "This will be put in the file!");
[edit]
Вещественные функции (float.inc)
[edit]
float
Эта функция конвертирует целое число в вещественное.
Parameters:({{{1}}})
| value | Целое число, которое Вы хотите конверитровать в вещественное. |
new Float:fVar = float(122);
[edit]
floatabs
Возвращает абсолютное значение вещественного числа.
Parameters:({{{1}}})
| value | Вещественно число |
| Возвращает | Абсолютное значение вещественного числа. |
new Float:fAbs = floatabs(-123.54);
[edit]
floatadd
Вычисляет сумму двух вещественных чисел, то же самое, что и Float1 + Float2.
Parameters:({{{1}}})
| oper1 | Первое вещественное число. |
| oper2 | Вещественное число, которое вы хотите добавить к первому. |
| Возвращает | Сумма двух вещественных чисел. |
new Float:fSum = floatadd(123.45, 678.90);
[edit]
floatcmp
Сравнивает два вещественных числа.
Parameters:({{{1}}})
| oper1 | Первое сравниваемое вещественное число. |
| oper2 | Второе сравниваемое вещественное число. |
| Возвращает | 1 - если первый аргумент больше, -1 - если второй больше. |
new compare = floatcmp(127.45, 127.450);
[edit]
floatcos
Вычисляет правильный косинус вещественного числа с заданной размерностью угла.
Parameters:({{{1}}})
| value | Вещественное число. |
| anglemode=radian | Размерность угла. |
| Возвращает | Косинус данного вещественного числа. |
new Float:fCos = floatcos(87.343, radian);
[edit]
floatdiv
Делит вещественное число на значение, указанное вещественным числом, делителем.
Parameters:({{{1}}})
| dividend | Делимое вещественное число. |
| divisor | Число (вещественное), делитель. |
| Возвращает | Частное в виде вещественного числа. |
new Float:fDivide = floatdiv(128.00, 32.00);
[edit]
floatfract
Вычисляет и возвращяет дробную часть вещественного числа.
Parameters:({{{1}}})
| value | Вещественное число. |
| Возвращает | Дробная часть числа. |
new Float:fFract = floatfract(3249.34);
[edit]
floatlog
Используйте эту функцию, если хотите узнать логарифм вещественного числа.
Parameters:({{{1}}})
| value | Вещественное число. |
| base=10.0 | Степень логарифма. |
| Возвращает | Логарифм числа. |
new Float:fLog = floatlog(128.0);
[edit]
floatmul
Перемножает два вещественных числа и возвращает произведение.
Parameters:({{{1}}})
| oper1 | Первый множитель. |
| oper2 | И второй. |
| Возвращает | Произведение чисел. |
new Float:fMul = floatmul(128.1,7.9);
[edit]
floatpower
Возводит вещественное число в степень.
Parameters:({{{1}}})
| value | Возводимое вещественное число. |
| exponent | Степень возведения в виде вещественного числа. |
| Возвращает | Вещственное число, возведенное в степень. |
new Float:fPower = floatpower(128.0, 8.0); // 1024
[edit]
floatround
Округляет вещественное число указанным методом.
Parameters:({{{1}}})
| value | Вещественное число. |
| :method=floatround_round | Метод округления, который вы хотите использовать. |
| Возвращает | Округленное целое число. |
new round = floatround(128.9, floatround_floor);
[edit]
floatsin
Вычисляет синус данного вещественного числа, заданного размерностью в радианах, градусах или градиентах.
Parameters:({{{1}}})
| value | Вещественное число. |
| mode=radian | Размерность угла. |
| Возвращает | Синус вещественного числа. |
new Float:fSin = floatsin(82.4);
[edit]
floatsqroot
Вычисляет квадратный корень данного вещественного числа.
Parameters:({{{1}}})
| value | Вещественное число. |
| Возвращает | Квадратный корень из вещественного числа. |
new Float:fSqroot = floatsqroot(743.34);
[edit]
floatsub
Уменьшает первое число oper1 на число, указанное в oper2.
Parameters:({{{1}}})
| oper1 | Вещественное число, которое вы хотите уменьшить на заданное второе. |
| oper2 | Значение, на которое надо уменьшить первое число. |
| Возвращает | Значение первого аргумента после вычитания. |
new Float:fSub = floatsub(233.54, 23.34);
[edit]
floattan
Вычисляет тангенс данного вещественного числа, заданного в первом аргументе в радианах, градиентах или градусах.
Parameters:({{{1}}})
| value | Вещественное число. |
| mode=radian | Размерность угла, которую Вы хотите использовать. |
| Возвращает | Тангенс числа, заданный вещественным числом. |
new Float:fTan = floattan(87.4);
[edit]
floatstr
Конвертирует строку в соответствующее вещественное число.
Parameters:({{{1}}})
| const string[] | Строка, которую Вы хотите конвертироват ьв вещественно число. |
| Возвращает | Запрошенное вещественное число. |
new Float:fFloat = floatstr("124.34");
[edit]
Строковые функции (string.inc)
[edit]
format
Format позволяет Вам использовать переменные в строке; так же как и в printf(), но эта функция возвращает полученную строку.
Parameters:({{{1}}})
| const format[] | Формат, в котором вы хотите напечатать последовательность. |
| %b представлет число в двоичном формате. |
| %c представлет символ. |
| %d представлет тип double (или нормлаьное целое число). |
| %f представлет вещественное число. |
| %i представлет целое число. |
| %s представлет строку. |
| %x представлет число в шестнадцатиричном формате. |
format(string, sizeof(string), "This %s has %d words.", "string", 4);
[edit]
ispacked
Проверяет, запакована ли данная строка, и возвращает результат.
Parameters:({{{1}}})
| const string[] | Строка для проверки. |
| Возвращает | 1 - если строка запакована, 0 - если нет. |
if(ispacked(string)){
[edit]
memcpy
memcpy может быть использована для копирования байтов из одного места в другое.
Parameters:({{{1}}})
| dest[] | Место назначения копирования. |
| const source[] | Источник для копирования, оригинальная строка. |
| index=0 | Смещение, с которым копировать из источника. |
| numbytes | Число копируемых байтов. |
| maxlength=sizeof dest | Размер аргумента-назначения. |
memcpy(playerNames[playerid], playerName, 0, MAX_PLAYER_NAME);
[edit]
strcat
Эта функция конкатенирует две строки в назанченую по ссылке строку.
Parameters:({{{1}}})
| dest[] | Назначенная строка для конкатенирования. |
| const source[] | Исходная строка. |
| maxlength=sizeof dest | Максимальная длина строки-назначения. |
| Возвращает | Длина новой полученной строки-назначения. |
strcat(destination, "Hi, how are you?", sizeof(destination));
[edit]
strcmp
Сравнивает две строки друг с другом, с такими опциями, как игнорирование заглавных букв или максимальная длина. Очень часто используется в OnPlayerCommandText.
Parameters:({{{1}}})
| const string1[] | Первая сравниваемая строка. |
| const string2[] | Строка, которую вы хотите сравнить с string1. |
| ignorecase=false | Игнорировать заглавные буквы, если true. |
| length=cellmax | Максимальное число проверяемых ячеек. |
| Возвращает | 0 - если строки равны между собой. |
if(strcmp(cmdtext, "/me", true) == 0){
[edit]
strdel
Эта функция удаляет часть строки.
Parameters:({{{1}}})
| string[] | Строка, из которой вы хотите удалить часть. |
| start | Смещение для удаления. |
| end | Конец, где надо прекратить удаление (start + number символов) |
strdel("Peter isn't cool", 8, 10);
[edit]
strfind
Используйте эту функцию для поиска подстроки в строке.
Parameters:({{{1}}})
| const string[] | Строка, в которой будет производиться поиск (haystack). |
| const sub[] | Искомая строка (needle). |
| ignorecase=false | Игнорировать заглавные буквы, если true. |
| pos=0 | Смещение для начала поиска. |
| Возвращает | Вхождение подстроки, -1 - если не найдено. |
new instring = strfind("Are you in here?", "you", true);
[edit]
strins
Эта функция вставляет строку в другую строку, заданные аргументами substr и string.
Parameters:({{{1}}})
| string[] | Строка, в которую вы хотите вставить подстроку. |
| const substr[] | Подстрока, которую вы хотите вставить в строку. |
| pos | Позиция для вставки. |
| maxlength=sizeof string | Максимальный вставляемый размер подстроки. |
strins("f3llah1n is a ", "silly boy", 15);
[edit]
strlen
Эта функция может быть использована для проверки длины указанной строки.
Parameters:({{{1}}})
| const string[] | Строка, длину которой вы хотите знать. |
| Возвращает | Дляина в виде целого числа. |
new stringLength = strlen("This is an example string.");
[edit]
strmid
Извлекает диапазон символов из строки.
Parameters:({{{1}}})
| dest[] | СТрока, в которую нужно поместить извлеченные символы. |
| const source[] | Строка, из которой извлекаются символы. |
| start | Позиция первого символа. |
| end | Позиция последнего символа. |
| maxlength=sizeof dest | Максимальная длина строки-назначения для копирования. |
strmid(string, "Grab this word: hi!!", 17, 18);
[edit]
strpack
Эта функция может быть использована для запаковки строки.
Parameters:({{{1}}})
| dest[] | Переданная по ссылке стррока-назначение для сохранения запакованной строки. |
| const source[] | Исходная оригинальная строка. |
| maxlength=sizeof dest | Максимальный размер строки-назначения для использования. |
strpack(string, "Hi, how are you?");
[edit]
strunpack
Эта функция распаковывает запакованную строку в строку-назначение.
Parameters:({{{1}}})
| dest[] | Строка-назначение для распакованной строки. |
| const source[] | Текущая запакованная строка, которую нужно распаковать. |
| maxlength=sizeof dest | Длина строки-назначения. |
strunpack(string, packedString);
[edit]
strval
strval может быть использована для конвертирования строки в целое число.
Parameters:({{{1}}})
| const string[] | Строка, которую Вы хотите конвертировать в целое число. |
| Возвращает | Целое число, извлеченное из строки. |
new iValue = strval("250");
[edit]
uudecode
Эта функция позволяет Вам декодировать закодированный в UU поток.
Parameters:({{{1}}})
| dest[] | Строка-назначение для массива, декодированнной строки. |
| const source[] | Исходная, закодированная в UU, строка. |
| maxlength=sizeof dest | Максимальный размер строки-назначения для использования. |
uudecode(decodedString, encodedString);
[edit]
uuencode
Строка, которую вы можете декодировать функцией uudecode, должна быть закодирована этой функцией.
Parameters:({{{1}}})
| dest[] | Строка-назначение для декодированного потока. |
| const source[] | Исходная незакодированная строка. |
| numbytes | Число байт для кодирования, не должно превышать 45. |
| maxlength=sizeof dest | Максимальная длина массива dest[]. |
uudecode(encodedString, normalString, 45);
[edit]
valstr
конвертирует целое число в строку.
Parameters:({{{1}}})
| dest[] | Строка, в которое запишется значение. |
| value | Конвертируемое целое число. |
| pack=false | Запакует строку, если true. |
valstr(string, 454);
[edit]
Функции для работы с временем (time.inc)
[edit]
getdate
Получает текущую дату на сервере, которая запишется в переменные &year, &month и &day.
Parameters:({{{1}}})
| &year=0 | Переданная по ссылке переменная, в которую запишется текущий год. |
| &month=0 | Переданная по ссылке переменная, в которую запишется текущий месяц. |
| &day=0 | Переданная по ссылке переменная, в которую запишется текущий день. |
getdate(year, month, day);
[edit]
gettime
Получает текущее время на сервере, которое запишется в переменные &hour, &minute и &second.
Parameters:({{{1}}})
| &hour=0 | Переданная по ссылке переменная, в которую запишется текущий час. |
| &minute=0 | Переданная по ссылке переменная, в которую запишется текущая минута. |
| &second=0 | Переданная по ссылке переменная, в которую запишется текущая секунда. |
gettime(Hour, Minute, Second);
[edit]
tickcount
Эта функция может быть использована вместо GetTickCount, так как она возвращает число в миллисекундах с момента последнего запуска.
Parameters:({{{1}}})
| &granularity=0 | Это переданное по ссылке отображение точности функции. |
| Возвращает | Число тиков с момента последнего запуска сервера. |
new iTickCount = tickcount();
[edit]
Пользовательские функции
[edit]
strtok
Эта функция реализуется с помощью пользовательского скрипта, чтобы выспользоваться ею, вставьте в свой код ее описание {{Description|Сканирует строку на наличие символа (по дефолту это пробел) и возвращает аргумент номер которого указан в переменной (&index). Применяется в основном для команд, чтобы чтобы получать параметры после пробела.
Parameters:({{{1}}})
| const string[] | Строка, которую нужно разделить. |
| &index | Номер аргумента который вы хотите вернуть. |
| Возвращает | аргумент номер которого указан в в переменной &index. |
cmd = strtok(cmdtext, idx, ' ');
