[Урок 2] Функции public и stock часть[1/3] - Форум Cheat-Master.ru
  • Страница 1 из 1
  • 1
Модератор форума: Phoenixxx_Czar, Getbackthere, [CM]OlegEhtler  
[Урок 2] Функции public и stock часть[1/3]
_Edik_ Дата: Вторник, 28.10.2014, 20:42 | Сообщение # 1
Боец
Сообщений: 58
Статус: Offline
Доброе время суток с вами как всегда _Edik_ сегодня речь пойдёт о Функции public и stock. Этот урок будет разделён на три части дабы очень большая часть. Итак давайте приступим.
Функции в Pawn начинаются со слова public. Стандартные или встроенные функции, они же автовызываемые, выполняются при каком-либо игровом событии. Они так и называются, в зависимости от того, при каком условии они выполнятся. Сама функция это программный блок, который может выполниться многократно в любом месте скрипта. Каждая функция обычно возвращает какое-либо значение. Функция может возвращать только целочисленное или логическое значение и строку. Вещественное значение функция возвратить не может. Но если, функция не требует возвращать какое-либо иное значение, то она должна возвращать логическое значение: «истина» (true) – эквивалентно 1 или «ложь» (false) эквивалентно 0. Функция состоит из имени функции, круглых скобок и фигурных скобок. Имя функции не чувствительно к регистру, как и у переменных. В круглых скобках указываются через запятую параметры функции. Число параметров функции может быть разное и может быть даже совсем без параметров. Return отвечает за возврат значения функции. Пример стандартной функции приведен ниже:
Код
public OnGameModeInit() {  // Это тело функции  SetGameModeText("Blank Script");  AddPlayerClass(0, 1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0, 0);  return 1; }

Обычная функция, как например, на вышеуказанном примере, если выполнила свои задачи правильно и до конца, должна возвратить true «истина». Обратите внимание, что SetGameModeText то же функция и с параметром, указанным в скобках. Эта функция передает параметр, то есть текст, указанный в скобках в клиент сервера. Если вы запустите сервер, а затем клиент. В окне клиента, если там добавлен ваш сервер, вы увидите в колонке «mode» вашего сервера, этот текст.
Также можно создать свою функцию. Функция в таком случае будет называться пользовательской функцией. Создадим простейшую функцию, но перед тем как ее создать, ее сначала нужно объявить следующим образом. Пишем forward, затем через пробел имя функции и в круглых скобках параметры функции, если они не нужны, ничего не пишем, оставляем пустые скобки. Объявление нашей простейшей функции будет выглядеть следующим образом:
Код
forward SayHello();

Объявление функции должно быть обязательно перед самой функцией. Теперь можно приступать к созданию функции.
Код
public SayHello() {  return print(”Hello, Cheat Master!”); }

Print – отображает текст в консоли сервера. Это функция не будет работать, до тех пор, пока ее не вызовешь. Чтобы ее вызвать, нужно написать имя функции и в скобках ее параметры.
Код
SayHello();

Давайте проверим наш пример в действии. Вызовем функцию из функции OnGameModeInit. Для этого вышеуказанный код помещаем в тело данной функции как показано на примере ниже:
Код
public OnGameModeInit() {  SayHello(); // Вызываем функцию  SetGameModeText("Blank Script");  AddPlayerClass(0, 1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0, 0);  return 1; }

Ну что же на этом первая часть заканчивается всего будет три части, ну что же с вами был _Edil_ Ну а продолжение следует.


+
SopranoV Дата: Вторник, 28.10.2014, 23:19 | Сообщение # 2
Боец
Сообщений: 282
Статус: Offline
Много рассказал,но примеров мало показал.

Изучаю AHK программирование
_Edik_ Дата: Среда, 29.10.2014, 12:02 | Сообщение # 3
Боец
Сообщений: 58
Статус: Offline
Цитата SopranoV ()
Много рассказал,но примеров мало показал.

Это всего лишь первая часть из трёх, ждите вторую часть. ))


+
Fake{yl] Дата: Среда, 29.10.2014, 18:42 | Сообщение # 4
Боец
Сообщений: 107
Статус: Offline
_Edik_, Мне, наверное, одному кажется что эти уроки твой способ набить посты. И первый и второй урок (Все 3 'главы') можно было совместить в один. (Я бы так и сделал, например здесь http://cheat-master.ru/forum/117-215690-1 . Но тогда у меня было желание попасть в клан, и я несколько набивал посты, сделав всего 5 уроков. К тому же, функции в Pawn не вызываются. Их нет в Pawn. Вызываются коллбеки. Кстати, колбеки вызываются не через паблики. public, stock - коллбеки =) Но у stock и public есть небольшие различия. stock не может вызываться из-вне, следовательно и не работает под таймером, а только в рамках кода. Когда public, подобно функции (Кстати вообще не правильно называть это функцией, коллбек есть колбек, но тебе так привычней) может вызываться из-вне (Плагины, Таймеры и т.д) Это основные отличия. Кстати есть распростроненное мнение что stock работает быстрее public'a. Я не проверял, но помозговав, пришел к выводу что это действительно правда. Т.к. stock работает только по конструкции кода, следовательно не тратиться лишнее время на разные проверки когда у public'a несколько другая система =)

Теперь качественно по примерам...

public SayHello() { return print(”Hello, Cheat Master!”); }

Во первых, куда удобнее было бы использовать тот-же stock. К примеру по тому что stock быстрее работает, ну и занимает в итоге на 1 строку меньше
Цитата
forward SayHello();

Во вторых, если тебе нужно всего лишь 1 действие, то скобки не нужны. (return не является полным действием, ему нужно значение)=>
Оптимизированный коллбек без излишеств:
Код
stock SayHello() return print("Hello, Cheat Master!");

p.s. Даже return не обязательно тут использовать, ну да ладно...
Ну, во вторых, для того что бы отправить одну строку, ты создаешь чертову функцию, тьфу ты, коллбек. Зачем? Есть примеры куда приятнее, например мог в OnPlayerConnect, сделать
Код
SayHelloForPlayer(playerid)

Или еще что-нибудь, сразу бы с аргументами разобрался бы =)

В общем это все, уверен что в ответ на это сообщение я получу много твоей неконструктивной критики, ну да ладно. Получу и получу, отвечать не буду smile


ушел, не вернусь <_<
SeX-PrO-AdReNaLiN Дата: Среда, 29.10.2014, 18:59 | Сообщение # 5
Авторитет
Сообщений: 1310
Статус: Offline
Fake{yl], согласен. Я тоже в сток перемещяю все что не касается таймера.

user N over 99999
_Edik_ Дата: Среда, 29.10.2014, 19:30 | Сообщение # 6
Боец
Сообщений: 58
Статус: Offline
Цитата Fake{yl] ()
В общем это все, уверен что в ответ на это сообщение я получу много твоей неконструктивной критики, ну да ладно. Получу и получу, отвечать не буду

Да согласен, но я не набиваю посты и в клад я не стараюсь попасть пока-что мне это не нужно а уроки я делаю для новечков в pawno.

Добавлено (29.10.2014, 19:30)
---------------------------------------------

Цитата SeX-PrO-AdReNaLiN ()
Я тоже в сток перемещяю все что не касается таймера.

Эти уроки я делаю для новечков в pawno


+
[CM]Logotipo Дата: Среда, 29.10.2014, 22:25 | Сообщение # 7
Авторитет
Сообщений: 1083
Статус: Offline
Fake{yl], откуда такая инфа, что stock callback?

Добавлено (29.10.2014, 22:25)
---------------------------------------------
http://wiki.sa-mp.com/wiki/Enum#stock там прямо в 1-ом предложении сказано "functions".


Скуп
ВК
RakDroid - прокачка аккаунтов с телефона
VKMusic - вк музыка без браузера
Делаю сайты/софт/стимботов на заказ
Fake{yl] Дата: Четверг, 30.10.2014, 00:24 | Сообщение # 8
Боец
Сообщений: 107
Статус: Offline
[CM]Logotipo, будь добр, прочитай понятие Callback - https://ru.wikipedia.org/wiki....%D0%B5)

В 1 предложении, перевод от Google Translate:

акции используется для объявления переменных и функций, которые не могут быть использованы, но которые вы не хотите, чтобы генерировать неиспользуемые предупреждения о. С переменным акции как сопзЬ в том, что он является модификатором, а не полная декларация, так что вы могли бы иметь:

Stock используется для объявления переменных и функций, бла-бла-бла...

Из той же википедии, вырываю: https://ru.wikipedia.org/wiki....8%D0%B5 )
P.S. 2ой абзац
Цитата
Функция может принимать параметры и должна возвращать некоторое значение.

В случае с Pawn, stock и public не обязаны что либо возвращать (return). То есть stock и public не являются функциями, ну, по крайней мере телами функций. Pawn не достаточно развитый ЯП... =)

Что-то еще? Прошу в ЛС =)


ушел, не вернусь <_<
RanGoo Дата: Пятница, 31.10.2014, 19:50 | Сообщение # 9
Бывалый
Сообщений: 139
Статус: Offline
Public у меня есть но как создать stock некоторые коды надо туда.

Мой темы.
===================
Анонимный браузер Tor.
http://cheat-master.ru/forum/102-522872-1
Чистая версия Gta San Andreas (Сжатая версия). Через Mega Upload
http://cheat-master.ru/forum/14-522868-1
Новости.
http://cheat-master.ru/forum/12-433465-1
Сборка хп в цифрах.
http://cheat-master.ru/forum/129-522903-1
[CM]BaPuaHToB_HeT Дата: Воскресенье, 10.05.2015, 22:56 | Сообщение # 10
Боец
Сообщений: 65
Статус: Offline
А урок то не твой, ты его скопипастил из книги. И автор ее: CLoud

  • Страница 1 из 1
  • 1
Поиск: