Mozago
Новичок
Привет.
В моем 'уроке' мы рассмотрим функцию random().
Начнем.
1. Предисловие.
Для начала мы должны понять для чего предназначена данная функция. Random в переводе с английского — случайный. Следовательно, данная функция возвращает нам случайное значение.
2. Как работает?
Информация в данном пункте чисто для расширения Вашего кругозора.
Числа получаемые с помощью данной функции псевдо случайны, и вычисляются на основе формулы с некоторым начальным значением, которое может быть как функция времени.
Подробнее о алгоритме генератора случайным чисел Вы можете познакомиться
Также одним из алгоритмов генератора случайных чисел является
3. Как применять данную функцию?
Рассмотрим несколько примеров:
1) Создадим команду, которая выводит случайное число от 1 до 10 (включая 1 и 10).
На основе этого примера можно сделать азартные игры (например бросание костей, блек-джек и многое другое).
2) Рассмотрим другой пример. Сделаем рэндомный телепорт (сейчас много тем про это):
На основе этого примера можно сделать, например, телепорт в рэндомную камеру при аресте, рэндомный спавн или телепорт на рэндомную ДМ-зону.
И еще, если вы используете более 10 разных координат для телепортов лучше всего использовать массив. Например рэндомный спавн из grandlarc'a :
3) Сделаем совсем 'безобидную' функцию с помощью рэндома. Каждую секунду цвет машины в которой сидит игрок будет меняться.
Добавляем к глобальным переменным:
Далее:
И добавляем фунцию смены цвета с нашим рэндомом:
Можно привести еще тысячи подобных примеров, но все равно невозможно показать все прелести рэндома, не попробовав самому составить пару функций, используя его.
4. Заключение.
Вот и подошел мой 'урок' к концу. Я думаю, Вы уже сделали вывод, что без данной функции многого было бы 'трудновато' осуществить.
В моем 'уроке' мы рассмотрим функцию random().
Начнем.
1. Предисловие.
Для начала мы должны понять для чего предназначена данная функция. Random в переводе с английского — случайный. Следовательно, данная функция возвращает нам случайное значение.
2. Как работает?
Информация в данном пункте чисто для расширения Вашего кругозора.
Числа получаемые с помощью данной функции псевдо случайны, и вычисляются на основе формулы с некоторым начальным значением, которое может быть как функция времени.
Подробнее о алгоритме генератора случайным чисел Вы можете познакомиться
Чтобы видеть скрытое содержание Зарегистрируйтесь на форуме!
.Также одним из алгоритмов генератора случайных чисел является
Чтобы видеть скрытое содержание Зарегистрируйтесь на форуме!
3. Как применять данную функцию?
Рассмотрим несколько примеров:
1) Создадим команду, которая выводит случайное число от 1 до 10 (включая 1 и 10).
PHP:
if(strcmp("/random", cmdtext, true, 10) == 0)
{
new string[64]; // создаем строку, которая выведется на экран.
format(string, 64, "Случайное число: %d", random(10)+1); /* заполняем строку.
Немного объясню как все выполняется. Функция random() ведет отсчет от нуля. Т.е. random(10) вывело бы число от 0 до 9. Следовательно, мы прибавили единицу, чтобы строка заполнилась числом от 1 до 10. */
SendClientMessage(playerid, 0xFFFFFF, string); // выводим сообщение пользователю
return 1;
}
2) Рассмотрим другой пример. Сделаем рэндомный телепорт (сейчас много тем про это):
PHP:
if (strcmp("/randomtp", cmdtext, true, 10) == 0)
{
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); /* аналогично. Внимание: это не действущие координаты, вы должны заменить их на свои */
}
return 1;
}
И еще, если вы используете более 10 разных координат для телепортов лучше всего использовать массив. Например рэндомный спавн из grandlarc'a :
PHP:
new Float:gRandomSpawns_LosSantos[][4] = {
{1751.1097,-2106.4529,13.5469,183.1979}, // El-Corona - Outside random house
{2652.6418,-1989.9175,13.9988,182.7107}, // Random house in willowfield - near playa de seville and stadium
{2489.5225,-1957.9258,13.5881,2.3440}, // Hotel in willowfield - near cluckin bell
{2689.5203,-1695.9354,10.0517,39.5312}, // Outside stadium - lots of cars
{2770.5393,-1628.3069,12.1775,4.9637}, // South in east beach - north of stadium - carparks nearby
{2807.9282,-1176.8883,25.3805,173.6018}, // North in east beach - near apartments
{2552.5417,-958.0850,82.6345,280.2542}, // Random house north of Las Colinas
{2232.1309,-1159.5679,25.8906,103.2939}, // Jefferson motel
{2388.1003,-1279.8933,25.1291,94.3321}, // House south of pig pen
{2481.1885,-1536.7186,24.1467,273.4944}, // East LS - near clucking bell and car wash
{2495.0720,-1687.5278,13.5150,359.6696}, // Outside CJ's house - lots of cars nearby
{2306.8252,-1675.4340,13.9221,2.6271}, // House in ganton - lots of cars nearby
{2191.8403,-1455.8251,25.5391,267.9925}, // House in south jefferson - lots of cars nearby
{1830.1359,-1092.1849,23.8656,94.0113}, // Mulholland intersection carpark
{2015.3630,-1717.2535,13.5547,93.3655}, // Idlewood house
{1654.7091,-1656.8516,22.5156,177.9729}, // Right next to PD
{1219.0851,-1812.8058,16.5938,190.0045}, // Conference Center
{1508.6849,-1059.0846,25.0625,1.8058}, // Across the street of BANK - lots of cars in intersection carpark
{1421.0819,-885.3383,50.6531,3.6516}, // Outside house in vinewood
{1133.8237,-1272.1558,13.5469,192.4113}, // Near hospital
{1235.2196,-1608.6111,13.5469,181.2655}, // Backalley west of mainstreet
{590.4648,-1252.2269,18.2116,25.0473}, // Outside "BAnk of San Andreas"
{842.5260,-1007.7679,28.4185,213.9953}, // North of Graveyard
{911.9332,-1232.6490,16.9766,5.2999}, // LS Film Studio
{477.6021,-1496.6207,20.4345,266.9252}, // Rodeo Place
{255.4621,-1366.3256,53.1094,312.0852}, // Outside propery in richman
{281.5446,-1261.4562,73.9319,305.0017}, // Another richman property
{790.1918,-839.8533,60.6328,191.9514}, // Mulholland house
{1299.1859,-801.4249,84.1406,269.5274}, // Maddoggs
{1240.3170,-2036.6886,59.9575,276.4659}, // Verdant Bluffs
{2215.5181,-2627.8174,13.5469,273.7786}, // Ocean docks 1
{2509.4346,-2637.6543,13.6453,358.3565} // Ocean Docks spawn 2
};
public OnPlayerSpawn(playerid)
{
new randSpawn = random(sizeof(gRandomSpawns_LosSantos));
SetPlayerPos(playerid,
gRandomSpawns_LosSantos[randSpawn][0],
gRandomSpawns_LosSantos[randSpawn][1],
gRandomSpawns_LosSantos[randSpawn][2]);
SetPlayerFacingAngle(playerid,gRandomSpawns_LosSantos[randSpawn][3]);
return 1;
Добавляем к глобальным переменным:
PHP:
new changecolortimer;
PHP:
public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
{
KillTimer(changecolortimer);
changecolortimer = SetTimerEx("changecolor",1000,1,"i",vehicleid);
return 1;
}
PHP:
forward changecolor(i);
public changecolor(i)
{
ChangeVehicleColor(i, random(120), random(120)); // меняет color1 и color2 на случайные цвета от 0 до 120
return 1;
}
4. Заключение.
Вот и подошел мой 'урок' к концу. Я думаю, Вы уже сделали вывод, что без данной функции многого было бы 'трудновато' осуществить.
