Доступ к готовым решениям

Переход в группу "Пользователь"

300.00
Одноразовый платёж
Быстрый переход в группу "Пользователи", без надобности написания постов и ожидания.

Покупка дает возможность:
Быть полноправным участником форума
Нормальное копирование кода
Создавать темы
Скачивать файлы
Доступ к архиву Pawno-Info

Функция clamp(value, min=cellmin, max=cellmax)

oxygenium

Изучающий
Professional
Пользователь
Регистрация
5 Ноя 2013
Сообщения
957
Лучшие ответы
18
Репутация
445
Награды
3
Чтобы видеть скрытое содержание Зарегистрируйтесь на форуме!

В этой короткой теме я расскажу о такой полезной функции, как clamp. Что делает данная функция - возвращает число в заданных пределах. Данная функция по умолчанию есть в "ядре" языка Pawn. Находится в inlcude core.inc

clamp(value, min=cellmin, max=cellmax)


valueЧисло, либо переменная
minНижняя граница
maxВерхняя граница

Возвращаемые значения: функция вернет само число в неизменном виде, если оно находится между заданными пределами. Нижнюю границу, если число меньше нижней границы, и соответственно верхнюю, если наоборот.

Пока что ничего не понятно, давайте разберем на примере.
И так, представим что у нас есть команда для создания автомобиля, /car. И нам необходимо сделать проверку на ID автомобиля (400 - 611).

Мы можем сделать это при помощи обычной проверки:

C-like:
cmd:car(playerid, params[])
{
    new vehicleid;
    if(sscanf(params, "i", vehicleid)) return SendClientMessage(playerid, -1, "Введите /car ID (400 - 611)");
    if(vehicleid < 400 || vehicleid > 611) return SendClientMessage(playerid, -1, "ID авто может быть в пределах от 400 до 611");
    CreateVehicle(vehicleid...

А можем при помощи функции clamp:

C-like:
cmd:car(playerid, params[])
{
    new vehicleid;
    if(sscanf(params, "i", vehicleid)) return SendClientMessage(playerid, -1, "Введите /car ID (400 - 611)");
    vehicleid = clamp(vehicleid, 400, 611);
    CreateVehicle(vehicleid...
Представим, что в vehicleid у нас было значение 405. Число 405 находится в пределах между 400 и 611, поэтому функция вернет 405.
Если в vehicleid будет, например, 201 - функция вернет нижнюю границу, то есть 400.
Если в vehicleid будет число 700 - функция вернет верхнюю границу, то есть 611.

Еще пример в виде кода:

C-like:
new integer = 5;

printf("%i", clamp(integer, 1, 10)); // 5 - в пределах от 1 до 10, функция вернет 5
printf("%i", clamp(integer, 10, 20)); // 5 - ниже минимальной границы, которая равна 10. Функция вернет 10
printf("%i", clamp(integer, 1, 4)); // 5 - выше максимальной границы, которая равна 4. Функция вернет 4
 
Последнее редактирование:
Сверху Снизу