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

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

Pawn :: Основы скриптинга
Функция Random

Рассмотрим примеры получения случайного числа, двумя различными функциями Random.
Первая функция стандартная, вторая – сторонняя разработанная функция.

Начнем со стандартной функции, синтаксис функции таков:

1 random(max); //случайное число между 0 и max

Вот пример простейшей команды с выводом случайного числа в чат:

if(strcmp("/random", cmdtext, true, 10) == 0)
{
new string[64]; // создаем строку, которая выведется на экран.
format(string, 64, "Случайное число: %d", random(10));
SendClientMessage(playerid, 0xFFFFFF, string); // выводим сообщение пользователю
return 1;
}


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

1 format(string, 64, "Случайное число: %d", random(10)+1);

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

stock Random(min, max)
{
new a = random(max - min) + min; return a;
}


Теперь четвертая строка выглядела бы следующим образом:

1 format(string, 64, "Случайное число: %d", random(1,10);

Данную функцию можно использовать в других различных функциях, например в операторе switch, как это показано на примере ниже:

switch(random(4)) // генерируем число от 0 до 3 (включая)
{
case 0: SetPlayerPos(playerid, X1,Y1,Z1); // телепортируем игрока в координаты X1,Y1,Z1
case 1: SetPlayerPos(playerid, X2,Y2,Z2); // ...
case 2: SetPlayerPos(playerid, X3,Y3,Z3); // ...
case 3: SetPlayerPos(playerid, X4,Y4,Z4); // аналогично.
}


Выше перечисленный скрипт больше подходит для создания какой-нибудь азартной игры.

Допустим, вы хотите сделать рандомный спавн игроков.
Возьму за основу стандартный пример из скрипта LVDM (идущий в комплект с сервером SAMP).

1 new Float:gRandomPlayerSpawns[23][3] = {

У нас есть вышеуказанный массив. Теперь нам нужно получить случайные координаты из массива. Для этого мы берем случайное число от количества строк массива. То есть берем случайное число от 0 до 22

new rand = random(sizeof(gRandomPlayerSpawns));
SetPlayerPos(playerid, gRandomPlayerSpawns[rand][0], gRandomPlayerSpawns[rand][1],
gRandomPlayerSpawns[rand][2]); // Warp the player


В вышеуказанном примере мы получаем случайное число строки массива и записываем его в переменную rand, которую потом используем при телепортации игрока к месту спавна.




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