Начну с того чтоpublic это не функция и использовать его в качестве функции нельзя! Это событие и только для него он создан.
Поясню: Вы пишите свой код, например для выдачи админом оружия игроку. E вас есть команда /givegun, которая принимает параметры playerId, weaponId[/b], ammoSize[/b]. И вот в конце этой команды можно вставить вызов события, что такой-то игрок получил оружие:
Я и не писал, что функция обязательно должна что-то возвращать. И можно ссылку на информацию, откуда вы взяли что public - не функция? Исходя из моего первого источника, public это функция, хотя бы потому что в оригинальной англоязычной документации по языку Pawn public находится в разделе functions. А на втором моем источнике сказано, что A public function is a normal function with the public keyword in front of it.
Я могу ошибаться, но мне кажется что все таки речь идет о функции.
Если баги возникают из ниоткуда - ты на правильном пути. (с)
Сообщение отредактировал _Dark_ - Четверг, 04.08.2011, 19:15
Забыл дописать, вчера вспомнил, только когда уходил спать.
Quote (stepmex)
Это событие и только для него он создан.
Если ты хотел сказать, что public это событие, то я тебе с радостью отвечу, что ты глубоко ошибаешься. Если будут вопросы, напиши тут, я тебе распишу что такое public, для чего он нужен и почему он является составляющей функции.
Если баги возникают из ниоткуда - ты на правильном пути. (с)
Эта функция вызывается при запуске мода, что очевидно даже из названия функции. Если дословно, то "При инициализации игрового режима".
а с какого перепуга тогда эту "функцию" поместили в раздел Scripting Callbacks, а не Scripting Functions, кстати на той вики на которую ты ссылаешь! И я задал вопрос не когда она происходит, а что она делает!?
Quote (_Dark_)
Да вы что!
специально для выскочек, определение функции:
Quote (Википедии)
Фу́нкция — в программировании — это поименованная часть программы, которая может вызываться из других частей программы столько раз, сколько необходимо. Функция, в отличие от процедуры, обязательно возвращает значение.
Я этого и ждал. Так вот: что же значит public. Public - модификатор уровня доступа. Т.е., функция с префиксом public обладает наиболее широким уровнем доступа. Я на этом зацикливаться не буду, просто скажу, что есть например возможность обращаться к переменной непосредственно из другого кода и т.д.
Существует еще и Private, который в Pawn не используется, поэтому объяснять его не вижу смысла.
Quote (stepmex)
Функция, в отличие от процедуры, обязательно возвращает значение.
Перечитай мой урок. Процитируй мой текст, где указано, что Public - функция.
Quote (_Dark_)
Функция не обязательно должна возвращать что-либо.
Quote
Функция — это подпрограмма специального вида, которая, кроме получения параметров, выполнения действий и передачи результатов работы через параметры имеет ещё одну возможность — она может возвращать результат. Вызов функции является, с точки зрения языка программирования, выражением, он может использоваться в других выражениях или в качестве правой части присваивания
Может. Но не должна. В этом случае, я уже писал что происходит. Смысл от этого не меняется.
Если баги возникают из ниоткуда - ты на правильном пути. (с)
Сообщение отредактировал _Dark_ - Пятница, 05.08.2011, 11:32
Так вот: что же значит public. Public - модификатор уровня доступа. Т.е., функция с префиксом public обладает наиболее широким уровнем доступа. Я на этом зацикливаться не буду, просто скажу, что есть например возможность обращаться к переменной непосредственно из другого кода и т.д.
у нас тут не ООП. Ты пишешь:
Quote (_Dark_)
Функция не обязательно должна возвращать что-либо.
это напрямую противоречит определению функции:
Quote (Вики)
Функция обязательно возвращает значение.
Странно не правда ли, ты противоречишь определению функции, не мне, и говоришь что я не прав?
И создал Бог женщину!.. Существо получилось злобное, но симпатичное...
KozzPorno, дело не в этом. Функцию создать и через Имя_Функции(аргументы) можно, без всяких префиксов. Тут дело в том, что функция не обязательно должна что-то возвращать. Она может вернуть, но не должна.
Если баги возникают из ниоткуда - ты на правильном пути. (с)
Функция — это подпрограмма специального вида, которая, кроме получения параметров, выполнения действий и передачи результатов работы через параметры имеет ещё одну возможность — она может возвращать результат. Вызов функции является, с точки зрения языка программирования, выражением, он может использоваться в других выражениях или в качестве правой части присваивания.
P.S. Если хочешь, можешь почитать руководство по языку Pawn.
Если баги возникают из ниоткуда - ты на правильном пути. (с)
Сообщение отредактировал _Dark_ - Пятница, 05.08.2011, 11:55
Для того, что бы передать функции не значение переменной, а саму переменную, изменения которой будут видны и за пределами функции, существует особый способ. Для этого, перед аргументом функции надо поставить знак амперсаенд (&), например, вот так:
Как передать фнкции переменную типа string? Например функция:
О куда вас понесло, уже на классы в С++ перешли, private, public.. Немного разверну вас на правильный путь. Во-первых, в pawn помимо public, stock и функций без объявления определенного префикса существуют ещё 2 типа функций, это static и native. С этого предыстория ты должен и был начать урок. Во-вторых, описанные раннее различия между ними показывают твой низкий уровень знания данного языка. Вообще, что такое функции? Это прежде всего строительные блоки вашего мода, самостоятельные единицы, которые созданы для решения тех или иных задач, которые могут повторяться ни один раз. А теперь перейдем к вашему больному месту public. Ты видимо даже не понимаешь смысл преждевременного объявления. Итак, для чего нужен public? Все просто, так как он имеет прототип объявления в виде forward, а особенностью любого ANSI языка является то, что для создания корректного машинного кода этой функции необходимо сообщать до её первичного вызова тип возвращаемого вызова, а также количество и типы аргументов, мы получили функцию PUBLIC, главная задача из которых, как раз состоит подобная функция. которую я описал выше. Также ты не отметил, что в PUBLIC, нельзя использовать значения по-умолчанию, опять же по той простой причине, которую я описал выше, так как функция должна сообщать все параметры до её первичного запуска. Опять же не вижу про псевдо-типы, функция может иметь тег, ничего этого я не вижу у тебя. Все на банальном поверхностном уровне. Поверхностные у тебя знания. Очень поверхностные, скажу я тебе. Тут далеко не всё о функциях. Далеко не все.
Vagrant в pawn нет понятия типа string, есть массив целочисленный, в который можно записать символы, по-скольку размер нам позволяет. В каком смысле передать, с помощью return? Тогда return string; и всё. В твоей функции выше, сам массив, который ты подставляешь в эту функцию будет изменяться, таким образом, после вызова данной функции твой подставленный аргумент массива будет изменен в соответствии работы функции.
Русскоязычныи портал о MTA/GTA-IV-MP | http://multi-theft-auto.ru
Сообщение отредактировал toneysix - Среда, 21.09.2011, 13:43