Sign in to follow this  
Followers 0
Человек-редиска

Начало работы с Pawn

14 posts in this topic

Начнем наш урок. Что такое павно?

Павно язык программирования используемый в SAMP для создание мода и файл скриптов(ФильтрСкриптов)!

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Далее! есть в павно при скачке любого мода Include что это такое? Это файлы в котором содержатся функции, например подключения функции к моду(Павно) #include <streamer> #include <mail>. Без их подключение мод работать не будет!

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Если сервер при компл павно не тянет попробуйте в начале/ в конце мода встать main(В инете)

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Есть простые функции павно : print- отправляет строку в консоль сервера!

Пример: 

main()
{
	print("Hello, World!");
}

Функция - printf отправляет форматированную строку  в консоль сервера!

Для форматирования используются следующие заполнители:
%b — двоичная система счисления
%c — один символ
%d — целое число
%f — дробное число
%i — целое число
%s — строка
%x — шестнадцатеричная система счисления
%% — знак %

Пример:

Main()
{
	new x = 1;
	printf("x = %d",x);
}

                                                                                                  Авторские права функций: ziggi — blog

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Цикл- позволяет бесконечно кол-во раз выполнять одно и тоже действие!(Смотря какой while или к примеру do. while).

Например код без цикла:
 

SendClientMessage(Playerid,0xFFFFFFFFFF,"");

SendClientMessage(Playerid,0xFFFFFFFFFF,"");

SendClientMessage(Playerid,0xFFFFFFFFFF,"");

SendClientMessage(Playerid,0xFFFFFFFFFF,"");

SendClientMessage(Playerid,0xFFFFFFFFFF,"");

SendClientMessage(Playerid,0xFFFFFFFFFF,"");

SendClientMessage(Playerid,0xFFFFFFFFFF,"");

Код с циклом:

new 8;

while(a++) < 10)

{

       SendClientMessage(playerid, 0xFFFFFFFFFFFFFF,"");

}

2 явно проще, бывают несколько циклов:

while - в общих чертах будет вести цикл до бесконечности 

for -  Упрощенный вид while, действует с интервалом 

do...while -  Выполняются сначала основное потом остальное, while же идет все по порядку!

swith...case -  Какую значительную переменную поставите то и будет.

Для окончания цикла используется оператор Break

for(new a; a < 50; a++)
{
if(a == 10 && GetPlayerMoney(a) == 100) //Если у игрока под ID 10 имеется ровно 100 долларов
{
break; //Завершаем действие цикла
      }
}

Бесконечный цикл указывается через for и если не указать условие!

                                                                                              Авторские права циклов: Dymov1203

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

 

Share this post


Link to post
Share on other sites
В 09.01.2022 в 13:45, Donaldo_Farekelka сказал:

Начнем наш урок. Что такое павно?

Павно язык программирования используемый в SAMP

Прошу, в следующий раз перед созданием уроков посети гугл...

Павно - это программа для редактирования кода.

А вот уже PAWN - сам язык программирования.

+ инклуды создают из себя набор функций (нативов) только в связке с плагинами (streamer.inc + stramer.dll / .so)

А все оставшиеся инклуды - дополнения 

Share this post


Link to post
Share on other sites
0xFFFFFFFFFFFFFF, what?

Share this post


Link to post
Share on other sites

@glvde. Только увидел))

@Donaldo_Farekelka на будущее:

0xFF0000AA - красный цвеТ, теперь разбор:

0x - обозначение цвета вне кавычек и т.д.

FF0000 - HTML-код цвета

AA - прозрачность

ВСЁ, после икса только 8 символов

Share this post


Link to post
Share on other sites

Смешно, на самом деле, смотреть на то, как новички пытаются делать какие-либо уроки, не видя элементарных ошибок в коде и в тексте.
Не знаю, какую цель вы тем самым преследуете, но мой вам совет - прекращайте 

"(Смотря какой while или к примеру do. while).". Этот отрывок вообще убил:

 

Спойлер

new 8// - что это?

while(a++) < 10// - вторая скобка, откуда она и зачем? использование цикла неверное.
{
       SendClientMessage(playerid, 0xFFFFFFFFFFFFFF,""); // - 0xFFFFFFFFFFFFFF, что?
}

//

//нормальный, адекватный пример:
new a;

while(a++ < 10) {
    SendClientMessage(playerid, 0xffffffff" ");
}

 


Убедительная просьба к автору: Вы если копируете, то копируйте хотя-бы правильно.

 

Share this post


Link to post
Share on other sites
2 минуты назад, glvde. сказал:

Убедительная просьба к автору: Вы если копируете, то копируйте хотя-бы правильно.

 

Наверное, лучше попросить автора вообще воздержаться копирований, а попробовать сделать все самостоятельно: возможно, и сам что-нибудь новое для себя откроет.

Share this post


Link to post
Share on other sites

Кхм, нашнем нашу беседу значит по полочкам: 

@Cawfee Согласен( не совсем )

~~~~~~~~~~~~~~~~~~~~~~~~~~~~

А так-же были оставлены ссылки на темы(авторские права)

придраться не к чему, но люди же найдут к чему хоть и не к чему (Слово удалено системой)

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

@glvde. Убедительная просьба: купить мозги, если не понял перейди по ссылке основной где я взял тему, ПОЧЕМУ ИМЕННО НАДО ЕСЛИ НЕ ПОНЯЛ ИДТИ И ОБСИРАТЬ ТЕМЫ?

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

@Sleash`en Спасибо.

 

Edited by Donaldo_Farekelka

Share this post


Link to post
Share on other sites
В 09.01.2022 в 13:45, Donaldo_Farekelka сказал:

main() { print("Hello, World!"); }


Идеально. На этом пожалуй и закончим. ;)
 

В 09.01.2022 в 13:45, Donaldo_Farekelka сказал:

Для форматирования используются следующие заполнители: %b — двоичная система счисления %c — один символ %d — целое число %f — дробное число %i — целое число %s — строка %x — шестнадцатеричная система счисления %% — знак %


Не все перечислили. 

 

В 09.01.2022 в 13:45, Donaldo_Farekelka сказал:

Пример:


Main()
{
	new x = 1;
	printf("x = %d",x);
}


Идеальный пример. :bravo:

 

35 минут назад, Donaldo_Farekelka сказал:

Убедительная просьба: купить мозги, если не понял перейди по ссылке основной где я взял тему, ПОЧЕМУ ИМЕННО НАДО ЕСЛИ НЕ ПОНЯЛ ИДТИ И ОБСИРАТЬ ТЕМЫ?


Вы хотя-бы понимаете часть кода которую вы написали, прежде чем кого обвинять ? 

Лучше-бы вы хоть чуть чуть прочитали основы, прежде создавать такой хлам. 2022 год на дворе, в интернете полным полно информации, даже больше чем надо, так почему-бы не воспользоваться ? Так нет, мы будем дальше создавать свои МеГаКрУтЫeМоДы которые поломаются за считанные секунды.

Edited by LoX_1337

Share this post


Link to post
Share on other sites

На самом деле выскажу своё мнение, на счет некоторых очень крутых комментаторов, которые умеют только комментировать, человек в какой то мере все-ровно постарался, да возможно у него недостаточно навыков, и он взял код с интернета, он только учиться, но все-же, да есть адекватные комментаторы, которые указывают на ошибки, ну есть такие которым лишь бы показать своё я, какой я тру кодер, и всезнающий, за счет недостаточно опытных поднять своё самооценку, очень сильно, прям молодцы! Нет, чтобы поддержать, помочь человека, мы лучше его будет засирать, не буду говорить о ком этот весь текст, я думаю они сами поймут) 

Edited by danya_white

Share this post


Link to post
Share on other sites
24 минуты назад, danya_white сказал:

да возможно у него недостаточно навыков, и он взял код с интернета, он только учиться, но все-же


Нету слов. Откуда берутся ваши мысли - неизвестно. 

 

24 минуты назад, danya_white сказал:

ну есть такие которым лишь бы показать своё я, какой я тру кодер, и всезнающий


Можете аргументировать свои слова ? (желательно с доказательствами)

 

24 минуты назад, danya_white сказал:

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


Так может люди не будут принимать заказы ? Сядем и будем отвечать как попугаи одно и тоже, чтобы мир полностью отупел. Вместо того чтобы хотя-бы чуть-чуть пошевелить мозгами и зайти в интернет. Действительно, хорошая идея danya_white, без вас мы бы не додумались.

Edited by LoX_1337

Share this post


Link to post
Share on other sites
9 минут назад, LoX_1337 сказал:


Нету слов. Откуда берутся ваши мысли - неизвестно. 

 


Можете аргументировать свои слова ? (желательно с доказательствами)

 


Так может люди не будут принимать заказы ? Сядем и будем отвечать как попугаи одно и тоже, чтобы мир полностью отупел. Вместо того чтобы хотя-бы чуть-чуть пошевелить мозгами и зайти в интернет. Действительно, хорошая идея danya_white, без вас мы бы не додумались.

Не видел не одной вашей работы на этом форуме, и я же не сказал что речь идет именно о вас, просто относиться нужно с понимаем к человеку, я думаю критиковать человека, который мало в этом понимает, как говориться предложите свои варианты, а не просто напишите "Идеальный пример" как вы сделали, низко очень, я просто высказал свою позицию, согласны вы, нет, мне все-ровно честно, свои навыки нужно делом показывать, а не словами)

Edited by danya_white

Share this post


Link to post
Share on other sites
12 минут назад, danya_white сказал:

Не видел не одной вашей работы на этом форуме


Это имеет смысл ? Все простые работы уже есть в интернете, делать миллионную копию нет желание. Масштабные работы для публичного доступа бессмысленны. Вы действительно ничего не понимаете ? 

 

12 минут назад, danya_white сказал:

о вас, просто относиться нужно с понимаем к человеку, я думаю критиковать человека, который мало в этом понимает


А они и не пытаются понимать. Такие личности всё время хотят на халяву. Им ваши слова, как листик на деревне, висел висел и упал. Такие элементарные вещи уже в интернете миллион лет, они проста не хотят прикладывать усилия или вы это не понимаете ? 

 

12 минут назад, danya_white сказал:

а не просто напишите "Идеальный пример" как вы сделали, низко очень


Я его как-то оскорбил или унизил этими словами ?

 

12 минут назад, danya_white сказал:

свои навыки нужно делом показывать, а не словами)


А кто говорил, что я хочу демонстрировать свои навыки ?

Edited by LoX_1337

Share this post


Link to post
Share on other sites
6 минут назад, LoX_1337 сказал:


Это имеет смысл ? Все простые работы уже есть в интернете, делать миллионную копию нет желание. Масштабные работы для публичного доступа бессмысленны. Вы действительно ничего не понимаете ? 

 


А они и не пытаются понимать. Такие личности всё время хотят на халяву. Им ваши слова, как листик на деревне, висел висел и упал. Такие элементарные вещи уже в интернете миллион лет, они проста не хотят прикладывать усилия или вы это не понимаете ? 

 


Я его как-то оскорбил или унизил этими словами ?

 


А кто говорил, что я хочу демонстрировать свои навыки ?

А смысл тогда от всего этого, я думаю если вы его критикуете, то должны своё что-то предложить, а так просто ну незнаю, бредятина какая то получается)

Edited by danya_white

Share this post


Link to post
Share on other sites

@danya_white Перечитайте внимательно мои сообщения и поймёте весь смысл. :(

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now
Sign in to follow this  
Followers 0

  • Recently Browsing   0 members

    No registered users viewing this page.

  • Similar Content

    • Sleash
      By Sleash
      Всем доброго времени суток. Сегодня мне бы хотелось вам рассказать от таких функциях в PAWN-языке, как SetTimer и SetTimerEx.
      Сразу сделаю такое примечание: Для SetTimer и SetTimerEx можно использовать ТОЛЬКО public!!!
      SetTimer
      Итак, для начала приступим к лёгкому и пойдём по нарастающей:
      Первое, это SetTimer. Функция включает в себя 3 параметра:
      native SetTimer(funcname[], interval, repeating); funcname[] - Это название функции, по сути - название вашего pablic в кавычках.
      interval - Интервалы от вызова таймера до срабатывания pablic
                     Так же если стоит повторение таймера, то будет работать как интервал между таймерами.
                     Измеряется в миллисекундах. 1000 миллисекунд равно 1 секунде
      repating - Тут всё просто: будет ли повторяться ваша функция. Может иметь значения: true - будет выполняться повторение ИЛИ false - вызывается 1 раз.
      Давайте разберём пример для наглядности:
      forward Info(); public Info() {     SendClientMessageToAll(0xFFFFFFFF, "Наш сайт: pawno-rus.ru"); } // И теперь давайте вызовем данный таймер при запуске мода public OngameModeInit() {     SetTimer("Info", 1000*60*20, true);     return true } Давайте разберёмся по интервалу: 1000*60*20. Так как я писал ранее, что 1000 млСек = 1 сек, то: 1 сек * 60 = 1 минута; 1 минута * 20 = 20 минут.
      Таким образом данный таймер будет выводить каждые 20 минут для всех игроков на сервере в чат: "pawno-rus.ru".
       
      SetTimerEx
       
      По сути с SetTimer - всё, теперь перейдём к следующей функции: SetTimerEx:
      native SetTimerEx(funcname[], interval, repeating, const format[], {Float,_}:...); Тут добавляются ещё 2 параметра:
      const format[] - формат данных для ввода в функцию. (Такие как: s, d, f);
      {Float,_}:... - переменные или значение для данных из const fromat[]
      Из данных объяснения мало что можно понять незнающему или начинающему скриптеру, поэтому давайте разберём на примере кода, который при входу даёт на авторизацию две минуты игроку:
      forward autorez(playerid); public autorez(playerid) {     if(/*проверка на то залогинился ли игрок*/)     {         SendClientMessage(playerid, 0xFFFFFFFF, "Вы были кикнуты по причине: Время на авторизацию истекло.");         Kick(playerid);         return true;     }     return true; } //Дальше уже добавлям сам таймер public OnPlayerConnect(playerid) {     SetTimerEx("autorez", 1000*60*2, false, "d", playerid);     return true; } Если первые три пункта мы уже разбирали. то начнём сразу с 4-го:
      4. Тут в кавычках надо вставлять тип данных. Наподобие функции format(output[], len, "%s %d %f", string, int, float), только без знака процента (%)
      5. Тут уже указывают сами данные, так же разберём как и предыдущий: format(output[], len, "%s %d %f ", string, int, float)
       
      Я надеюсь что кому-то помог, а если что непонятно, то спрашивайте, всегда помогу.
    • NoVate
      By NoVate
      Доброго времени суток 
       
      Многие новички задавались вопросом: "Как создать свой RP сервер?", "С чего начать разработку?", "Это сложно и я не справлюсь".
      После таких вопросов многие уходили с этой темы и оставляли её на последней полке. Некоторые брались и сталкивались с большими проблемами. И только часть из этих людей доходили до какого-то результата.
       
      Моя цель: сделать создание сервера в SA:MP проще. Чтобы каждый из тех, кто интересовался созданием сервера мог спокойно взять готовую, а что самое главное - базовую сборку и под неё уже создавать различные свои задумки. SA:MP на данный момент не особо актуален, а тем более самый обычный клиент, НО, как мне кажется, если сделать что-то невероятное, то аудитория заметит это и ей будет достаточно интересно "пощупать" данное новшество.
       
      Для тех, кто начнёт писать: "Ты видел свой код?", "Ты сделал не правильно в 777-ой строке" и так далее. Сразу отвечу, цитируя:
       
      Кому стало интересно и кто хотел бы ознакомиться со сборком - прошу в мой Github (не реклама).
      Буду делать коммиты по мере свободного времени и написании кода.
      Если есть какие-то идеи, то пишите в мой Discord сервера (не реклама), который можно будет найти на той же странице.
       
      Спасибо всем за прочтение и хорошего настроения 
    • Maxim638
      By Maxim638
      И вот снова мне приходится обращаться за помощью. Дело в клиенте уже(или кеш???) Напомню что кеш у меня модифицированный и вот я запускаю клиент, загрузочный экран прошел и я ввел пароль в поле ввода, нажал ОК, и у меня клиент завис на пару секунд и вылетел. И так повторяется постоянно, и я его переустанавливал, и пробовал перезаходить много раз. Но после каждого ввода пароля и нажимания кнопки "ок" клиент вылетает. Покопавшичь в samp.log.txt я нашел последние строки и вот такой код нашел(в спойлере). В чем дело?(добавил файл samp_log.txt чтобы полностью вы прочитали файл)
      Интересный факт: у моего друга Honor и у него оптимизация и клиент идет в 60 фпс в отличии от моего Samsung A02 на котором клиент в 20 фпс от силы,а иногда и 10, и даже 5 фпс...
       
      samp_log.txt
    • xiemoniyaz
      By xiemoniyaz
      C:\Users\111\OneDrive\Ðàáî÷èé ñòîë\rrrr\gamemodes\arizona.pwn(78772) : error 017: undefined symbol "GEO_MAX_COUNTRY_NAME_LENGTH" C:\Users\111\OneDrive\Ðàáî÷èé ñòîë\rrrr\gamemodes\arizona.pwn(78772) : error 009: invalid array size (negative, zero or out of bounds) C:\Users\111\OneDrive\Ðàáî÷èé ñòîë\rrrr\gamemodes\arizona.pwn(78772) : error 036: empty statement C:\Users\111\OneDrive\Ðàáî÷èé ñòîë\rrrr\gamemodes\arizona.pwn(78772) : fatal error 107: too many error messages on one line Compilation aborted. Pawn compiler 3.2.3664          Copyright (c) 1997-2016, ITB CompuPhase 4 Errors.  
       
      cmd:get(playerid, params[]) {     extract params -> new player; else return SendClientMessage(playerid, -1, !"/get [playerid]");     new string[GEO_MAX_COUNTRY_NAME_LENGTH+GEO_MAX_REGION_NAME_LENGTH+GEO_MAX_CITY_NAME_LENGTH+GEO_MAX_PROVIDER_NAME_LENGTH+GEO_MAX_MOBILE_STATUS_LENGTH+GEO_MAX_PROXY_LENGTH-6+118];     format(string, sizeof(string),     "Страна: %s\n\     Регион: %s\n\     Город: %s\n\     Провайдер: %s\n\     Использует ли моб.сеть: %s\n\     Использует ли прокси: %s",     GetPlayerIpCountry(player),     GetPlayerIpRegion(player),     GetPlayerIpCity(player),     GetPlayerIpProvider(player),     GetPlayerIpMobileStatus(player),     GetPlayerIpProxyStatus(player));     ShowPlayerDialog(playerid, 0, DIALOG_STYLE_MSGBOX, !" ", string, !"Закрыть", !"");     return true; }  
    • DEST
      By DEST
      Командный процессор: zcmd / dc_cmd + sscanf.