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

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

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

           Создавать функцию через stock гораздо удобнее, так как это аналогичная функция, за исключением того, что ее не нужно объявлять через forward и ее желательно использовать, если за функцией не закреплен таймер.

             Ну и напоследок, функции создаются для того, чтобы не повторять часто используемые фрагменты кода при выполнении скрипта в разных местах. Гораздо удобнее поместить код в функцию и вызывать из любого места. А если этот код нужно переделать, тогда это существенный плюс функции, так как не приходится переделывать код в разных местах, когда он есть уже в функции.
 
stock Say(string[])
{
return print(string);
}

И напоследок, наверняка просматривая стандартные функции в инклуде a_player.inc вы увидели такую в некоторых функциях перед именем параметра стоит символ – «&». Если мы передаем в функцию переменную, то передается не сама функция, а ее копия. По выполнению задачи функция не изменяет значение переменной, которую мы передали в функцию. Рассмотрим отличие такого способа передачи параметров.
 
new value = 1234;
stock nvalue(val)
{
val += 246;
printf("%d",val);
return 1;
}

У нас есть простейшая функция и у нас есть переменная, давайте вызовем ее в функции
OnGameModeInit, чтобы посмотреть результат в консоли сервера. Но сначала, скопируйте строку 5 вышеуказанного примера после строки с вызовом функции, но измените второй параметр val на имя созданной переменной, чтоб видеть как изменится ее значение.
 
public OnGameModeInit()
{
stock Say(value);
printf("%d", value);
}

И вот что мы увидим. Две цифры в столбик: 1480 и 1234. Из этого видно, что результат функции мы увидели 1234+246=1480, а вот из второй цифры видно, что значение созданной переменной не изменелось, так как без знака & мы передаем в фунцию, только копию данной переменной, а не саму переменную. Вот в итоге мы и получаем такой результат.
Давайте теперь подставим данный символ перед именем параметра, чтобы было так:
 
new value = 1234;
stock Say(&val)
{
val += 246;
printf("%d",val);
return 1;
}

В результате увидим две цифры: 1480 и 1480, что значит, что наша переменная изменила значение. Также можно поступить и с переменными вещественного и логического типа. Если вы передаете строку, то здесь символ & не требуется, поскольку передается именно строка а не ее копия.
 


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