Всё о сервере, форум!
Основы программирования
ИНФОРМАЦИОННО-РАЗВЛЕКАТЕЛЬНЫЙ ПОРТАЛ

PrR[ Проект SAMP - Romashka [0.3e] ™18+™

Pawn :: Основы скриптинга
Перебор значений в массиве

Что если нужно узнать, если определенное число в массиве или нет.

Но функции поиска по массиву в Pawn нет. Что делать?

Поможет только перебор значений.

Для этого нам нужен сам массив и цикл for.

Делаем перебор значений в массиве. И при появлении совпадения, должен выполниться скрипт.

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

stock IsPlayerInBike(playerid,vehicleid)
{
return 0;
}


Поскольку функция не нуждается в таймере, то есть ее не нужно выполнять по истечению определенного количества времени или повторять, то лучше сделать эту функцию не через public, а через stock.

Функция должна возвращать 0, потому что мы делаем функцию проверки и соответственно функция должна возвращать либо true, либо false. Внутри функции мы добавим одномерный массив.

stock IsPlayerInBike(playerid,vehicleid)
{
new IsBikeA[10] = {581,523,462,521,463,522,461,448,468,586};
return 0;
}


Теперь нам нужно присвоить второму аргументу нашей функции vehicleid - ID транспорта, в котором сидит игрок.
Чтобы узнать ID машины, существует функция GetPlayerVehicleID, которая возвращает ID  транспорта, в котором сидит игрок. Для этого мы присвоим аргументу значение, которое возвратит нам  вышеуказанная функция.
Делаем это следующим образом, под массивом мы добавляем следующую строку:

1 vehicleid = GetPlayerVehicleID(playerid);

Дальше нам нужно проверить сидит ли игрок в машине с указанным ID. Функция IsPlayerInVehicle, проверяет: сидит ли игрок в транспорте с указанным во 2 аргументе функции ID транспорта. На следующей строчке пишем следующую условную конструкцию;

if(IsPlayerInVehicle(playerid,vehicleid))
{
}


В теле этой условной конструкции будет располагаться цикл, который будет искать требуемое значение в массиве.
Условие цикла должно быть следующее, если I < 10.
Переменная I у нас, это переменная счетчик, как в любом цикле.
То есть мы должны выполнить цикл 10 раз, так как в массиве у нас всего 10 ячеек или ID 10 мотоциклов.

for(new i = 0; i < 10; i++)
{
if(GetVehicleModel(vehicleid) == IsBikeA[i]) return true;
}


Если совпадение найдено, функция должна вернуть true, если нет false. Под циклом обязательно должен быть return 0, так как если совпадений не найдется, функция возвратит false.



Логин: Пароль:
Забыли пароль?Регистрация
При копировании материала с сайта активная ссылка обязательна!
Сайт управляется SiNG cms © 2010-2015