21:14
ОбновитьСмайлыУправление мини-чатом
МИНИ-ЧАТ
Главная страница!

 



 
          





Рекомендуем:





Последние Файлы GTA 4 Последние Файлы GTA-MP Реклама
Скрипт GTA 4 элементы Watch... 07.09.2014
Ferrari 360 Spider [EPM con... 13.12.2013
Porsche Cayenne Turbo 2012 ... 13.12.2013
Shelby Terlingua Mustang v1... 13.12.2013
Hamann Lamborghini Gallardo... 27.10.2013
[GM] The Big PEN1:LS v2.00 ... 04.12.2017
Dgun (AvnanceRP,SampRP,Dimo... 19.03.2016
SAMP скрипт SX Events (MySQ... 03.03.2016
Карта ASL мэрия для SAMP се... 03.03.2016
AIM для SA-MP 0.3.7 22.02.2016
  • Страница 2 из 3
  • «
  • 1
  • 2
  • 3
  • »
Модератор форума: Dima-kun  
[Урок] Всё о функциях языка Pawn
_Dark_Дата: Четверг, 04.08.2011, 09:53 | Сообщение # 16
Постоялец
Группа: I'm V.I.P.
Сообщений: 379
Награды: 4
Город: Dark://core.dll
Репутация: 169
Замечания: 40%
Статус:
Во, во, зачем модель транспорта узнавать, если она нигде не используется? Там ошибку Symbol never used выдадет.




Если баги возникают из ниоткуда - ты на правильном пути. (с)
ВеликсДата: Четверг, 04.08.2011, 09:56 | Сообщение # 17
Мастер джэдай
Группа: Модераторы
Сообщений: 3931
Награды: 287
Город: Мухосранск
Репутация: 8429
Замечания: 0%
Статус:
Morino_Reigan, _Dark_, у него спросите crazy


[cut=freestyle]
ПРИНЕСЛА СОРОКА В РОТЕ ПРИВОРОТ ,
СВЯЗАЛАСЬ НА ШЕЕ ЛОЗА И БЫЛ ПОЛНЫЙ ПИ**ЕЦ,
ОСЕНЬ С ЗИМОЙ, ЛЕТО С ВЕСНОЙ,
ГУСЬ С ЛИСОЙ, ЕБ**ИСЬ ВО ТЬМЕ НОЧНОЙ.
УЗЕЛ ЗАВЯЗАЛСЯ, ПЕПЕЛ РАЗМЕТАЛСЯ И ЛИСА ЗАБЕРЕМЕНЕЛА.
ВМЕСТЕ ВЕК ВЕКОВАТЬ, ПУТУ НЕ РАЗВЯЗАТЬ.
ТРАВА ПЕРЕПЛЕТИСЬ, УЗЕЛ ЗАВОРОЖИСЬ.
ЛЕНАРУ ДАЙ УМА И ЛЕНУ
НА ВЕЛЕ НЕ ОТРАЗИСЬ,ЕБ*СЬ ЕБ*СЬ ЕБ*СЬ
© Хасан
[/cut]
stepmexДата: Четверг, 04.08.2011, 13:11 | Сообщение # 18
Мастер джэдай
Группа: Продвинутые
Сообщений: 2914
Награды: 35
Город: Е-бург
Репутация: 1032
Замечания: 0%
Статус:
Начну с того что public это не функция и использовать его в качестве функции нельзя!
Это событие и только для него он создан.

Поясню:
Вы пишите свой код, например для выдачи админом оружия игроку. E вас есть команда /givegun, которая принимает параметры playerId, weaponId[/b], ammoSize[/b].
И вот в конце этой команды можно вставить вызов события, что такой-то игрок получил оружие:
Code
if(strcmp(smdtext, "/givegun", true, 7) == 0)
{
     //тело команды
     PlayerGivedWeapon(playerid, adminid, weaponid, ammo);
}

//где-то в коде
forward PlayerGivedWeapon(playerid, adminid, weaponid, ammo);
public PlayerGivedWeapon(playerid, adminid, weaponid, ammo)
{
}
в данном примере показан вызов события получения оружия игроком от админа.
Ни для чего другого public использовать нельзя, хотя очень хочется!

И public не обязательно что-то должен возвращать.



И создал Бог женщину!.. Существо получилось злобное, но симпатичное...
_Dark_Дата: Четверг, 04.08.2011, 18:55 | Сообщение # 19
Постоялец
Группа: I'm V.I.P.
Сообщений: 379
Награды: 4
Город: Dark://core.dll
Репутация: 169
Замечания: 40%
Статус:
Я и не писал, что функция обязательно должна что-то возвращать.
И можно ссылку на информацию, откуда вы взяли что 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
stepmexДата: Четверг, 04.08.2011, 19:53 | Сообщение # 20
Мастер джэдай
Группа: Продвинутые
Сообщений: 2914
Награды: 35
Город: Е-бург
Репутация: 1032
Замечания: 0%
Статус:
На заборах тоже много что пишут! Функция должна что-то делать, что делает такое событие как OnGameModeInit ?


И создал Бог женщину!.. Существо получилось злобное, но симпатичное...
_Dark_Дата: Четверг, 04.08.2011, 20:30 | Сообщение # 21
Постоялец
Группа: I'm V.I.P.
Сообщений: 379
Награды: 4
Город: Dark://core.dll
Репутация: 169
Замечания: 40%
Статус:
Quote (stepmex)
На заборах тоже много что пишут!

Вы считаете, что в документации по языку Pawn и в Wiki.Sa-mp.Com будут писать чушь? Вы глубоко ошибаетесь.

Quote (stepmex)
Функция должна что-то делать

Да вы что!
Quote (stepmex)
что делает такое событие как OnGameModeInit ?

Эта функция вызывается при запуске мода, что очевидно даже из названия функции. Если дословно, то "При инициализации игрового режима".





Если баги возникают из ниоткуда - ты на правильном пути. (с)


Сообщение отредактировал _Dark_ - Четверг, 04.08.2011, 20:31
_Dark_Дата: Пятница, 05.08.2011, 10:02 | Сообщение # 22
Постоялец
Группа: I'm V.I.P.
Сообщений: 379
Награды: 4
Город: Dark://core.dll
Репутация: 169
Замечания: 40%
Статус:
Забыл дописать, вчера вспомнил, только когда уходил спать.

Quote (stepmex)
Это событие и только для него он создан.

Если ты хотел сказать, что public это событие, то я тебе с радостью отвечу, что ты глубоко ошибаешься.
Если будут вопросы, напиши тут, я тебе распишу что такое public, для чего он нужен и почему он является составляющей функции.





Если баги возникают из ниоткуда - ты на правильном пути. (с)
stepmexДата: Пятница, 05.08.2011, 11:06 | Сообщение # 23
Мастер джэдай
Группа: Продвинутые
Сообщений: 2914
Награды: 35
Город: Е-бург
Репутация: 1032
Замечания: 0%
Статус:
Quote (_Dark_)
Эта функция вызывается при запуске мода, что очевидно даже из названия функции. Если дословно, то "При инициализации игрового режима".
а с какого перепуга тогда эту "функцию" поместили в раздел Scripting Callbacks, а не Scripting Functions, кстати на той вики на которую ты ссылаешь!
И я задал вопрос не когда она происходит, а что она делает!?
Quote (_Dark_)
Да вы что!
специально для выскочек, определение функции:
Quote (Википедии)
Фу́нкция — в программировании — это поименованная часть программы, которая может вызываться из других частей программы столько раз, сколько необходимо. Функция, в отличие от процедуры, обязательно возвращает значение.

http://ru.wikipedia.org/wiki/Функция_ (программирование)



И создал Бог женщину!.. Существо получилось злобное, но симпатичное...

Сообщение отредактировал stepmex - Пятница, 05.08.2011, 11:07
_Dark_Дата: Пятница, 05.08.2011, 11:28 | Сообщение # 24
Постоялец
Группа: I'm V.I.P.
Сообщений: 379
Награды: 4
Город: Dark://core.dll
Репутация: 169
Замечания: 40%
Статус:
Я этого и ждал.
Так вот: что же значит public.
Public - модификатор уровня доступа.
Т.е., функция с префиксом public обладает наиболее широким уровнем доступа.
Я на этом зацикливаться не буду, просто скажу, что есть например возможность обращаться к переменной непосредственно из другого кода и т.д.

Существует еще и Private, который в Pawn не используется, поэтому объяснять его не вижу смысла.

Quote (stepmex)
Функция, в отличие от процедуры, обязательно возвращает значение.

Перечитай мой урок.
Процитируй мой текст, где указано, что Public - функция.


Quote (_Dark_)
Функция не обязательно должна возвращать что-либо.


Quote
Функция — это подпрограмма специального вида, которая, кроме получения параметров, выполнения действий и передачи результатов работы через параметры имеет ещё одну возможность — она может возвращать результат. Вызов функции является, с точки зрения языка программирования, выражением, он может использоваться в других выражениях или в качестве правой части присваивания

Может. Но не должна. В этом случае, я уже писал что происходит. Смысл от этого не меняется.





Если баги возникают из ниоткуда - ты на правильном пути. (с)


Сообщение отредактировал _Dark_ - Пятница, 05.08.2011, 11:32
KozzPornoДата: Пятница, 05.08.2011, 11:39 | Сообщение # 25
Группа: Продвинутые
Сообщений: 117
Награды: 7
Город: Бузулаевка
Репутация: 390
Замечания: 100%
Статус:
Мне кажется _Dark_ прав,ибо через public,можно создать функ-ю.
stepmexДата: Пятница, 05.08.2011, 11:49 | Сообщение # 26
Мастер джэдай
Группа: Продвинутые
Сообщений: 2914
Награды: 35
Город: Е-бург
Репутация: 1032
Замечания: 0%
Статус:
Quote (_Dark_)
Так вот: что же значит public.
Public - модификатор уровня доступа.
Т.е., функция с префиксом public обладает наиболее широким уровнем доступа.
Я на этом зацикливаться не буду, просто скажу, что есть например возможность обращаться к переменной непосредственно из другого кода и т.д.
у нас тут не ООП.
Ты пишешь:
Quote (_Dark_)
Функция не обязательно должна возвращать что-либо.

это напрямую противоречит определению функции:
Quote (Вики)
Функция обязательно возвращает значение.


Странно не правда ли, ты противоречишь определению функции, не мне, и говоришь что я не прав? punish2



И создал Бог женщину!.. Существо получилось злобное, но симпатичное...
_Dark_Дата: Пятница, 05.08.2011, 11:50 | Сообщение # 27
Постоялец
Группа: I'm V.I.P.
Сообщений: 379
Награды: 4
Город: Dark://core.dll
Репутация: 169
Замечания: 40%
Статус:
KozzPorno, дело не в этом.
Функцию создать и через Имя_Функции(аргументы) можно, без всяких префиксов. Тут дело в том, что функция не обязательно должна что-то возвращать. Она может вернуть, но не должна.





Если баги возникают из ниоткуда - ты на правильном пути. (с)
_Dark_Дата: Пятница, 05.08.2011, 11:50 | Сообщение # 28
Постоялец
Группа: I'm V.I.P.
Сообщений: 379
Награды: 4
Город: Dark://core.dll
Репутация: 169
Замечания: 40%
Статус:
Quote (stepmex)
у нас тут не ООП.

Смысл этого префикса от этого не меняется.
Quote (stepmex)
это напрямую противоречит определению функции:


Quote (stepmex)
Функция обязательно возвращает значение.


Это напрямую противоречит определению функции:

Quote
Функция — это подпрограмма специального вида, которая, кроме получения параметров, выполнения действий и передачи результатов работы через параметры имеет ещё одну возможность — она может возвращать результат. Вызов функции является, с точки зрения языка программирования, выражением, он может использоваться в других выражениях или в качестве правой части присваивания.


P.S. Если хочешь, можешь почитать руководство по языку Pawn.





Если баги возникают из ниоткуда - ты на правильном пути. (с)


Сообщение отредактировал _Dark_ - Пятница, 05.08.2011, 11:55
VagrantДата: Среда, 21.09.2011, 08:15 | Сообщение # 29
Уважаемый человек
Группа: I'm V.I.P.
Сообщений: 904
Награды: 21
Город: Находка
Репутация: 489
Замечания: 0%
Статус:
Quote (_Dark_)
Для того, что бы передать функции не значение переменной, а саму переменную, изменения которой будут видны и за пределами функции, существует особый способ. Для этого, перед аргументом функции надо поставить знак амперсаенд (&), например, вот так:

Как передать фнкции переменную типа string?
Например функция:
Code

stock StringFunc(string[])
{
       for(new i=0,s=strlen(string);i<s;i++) tolower(string[i]);
}



Человек учась ходить падает, и только падая, он учится ходить!
Мои работы:
[GM] W.F.S.A. V. 1.0 - 100%
[GM] San Fierro Enigmatic (TDM) V. 1.0 - 100%
[FS] Clan House V. 1.0 - 100%
[FS] Save Car Tun System V. 1.0 - 100%
[FS] Vagrant Anti-CapsLock V. 2.1 - 100%
[FS] Vagrant Anti-Advertise V. 1.1, V. 2.0 - 100%
[APP] SA-MP Interior Viewer V. 1.0 - 100%

Принимаю заказы на помощь в скриптинге!


Сообщение отредактировал Vagrant - Среда, 21.09.2011, 08:26
toneysixДата: Среда, 21.09.2011, 13:19 | Сообщение # 30
Джэдай
Группа: I'm V.I.P.
Сообщений: 1731
Награды: 77
Город: Салават
Репутация: 1825
Замечания: 0%
Статус:
О куда вас понесло, уже на классы в С++ перешли, 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
  • Страница 2 из 3
  • «
  • 1
  • 2
  • 3
  • »
Поиск:





 


 


 
Хостинг от uCoz samp.at.ua