Человек-редиска

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

В теме 14 сообщений

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

Павно язык программирования используемый в 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

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

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
В 09.01.2022 в 13:45, Donaldo_Farekelka сказал:

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

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

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

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

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
0xFFFFFFFFFFFFFF, what?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

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

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

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

 

Спойлер

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

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

//

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

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

 


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

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
2 минуты назад, glvde. сказал:

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

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

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

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

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

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

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

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

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

 

Отредактировано пользователем Donaldo_Farekelka

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
В 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МоДы которые поломаются за считанные секунды.

Отредактировано пользователем LoX_1337

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Отредактировано пользователем danya_white

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
24 минуты назад, danya_white сказал:

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


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

 

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

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


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

 

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

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


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

Отредактировано пользователем LoX_1337

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
9 минут назад, LoX_1337 сказал:


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

 


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

 


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

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

Отредактировано пользователем danya_white

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
12 минут назад, danya_white сказал:

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


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

 

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

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


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

 

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

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


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

 

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

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


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

Отредактировано пользователем LoX_1337

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
6 минут назад, LoX_1337 сказал:


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

 


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

 


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

 


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

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

Отредактировано пользователем danya_white

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!


Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.


Войти

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

  • Похожий контент

    • Sleash
      От 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
      От NoVate
      Доброго времени суток 
       
      Многие новички задавались вопросом: "Как создать свой RP сервер?", "С чего начать разработку?", "Это сложно и я не справлюсь".
      После таких вопросов многие уходили с этой темы и оставляли её на последней полке. Некоторые брались и сталкивались с большими проблемами. И только часть из этих людей доходили до какого-то результата.
       
      Моя цель: сделать создание сервера в SA:MP проще. Чтобы каждый из тех, кто интересовался созданием сервера мог спокойно взять готовую, а что самое главное - базовую сборку и под неё уже создавать различные свои задумки. SA:MP на данный момент не особо актуален, а тем более самый обычный клиент, НО, как мне кажется, если сделать что-то невероятное, то аудитория заметит это и ей будет достаточно интересно "пощупать" данное новшество.
       
      Для тех, кто начнёт писать: "Ты видел свой код?", "Ты сделал не правильно в 777-ой строке" и так далее. Сразу отвечу, цитируя:
       
      Кому стало интересно и кто хотел бы ознакомиться со сборком - прошу в мой Github (не реклама).
      Буду делать коммиты по мере свободного времени и написании кода.
      Если есть какие-то идеи, то пишите в мой Discord сервера (не реклама), который можно будет найти на той же странице.
       
      Спасибо всем за прочтение и хорошего настроения 
    • Maxim638
      От Maxim638
      И вот снова мне приходится обращаться за помощью. Дело в клиенте уже(или кеш???) Напомню что кеш у меня модифицированный и вот я запускаю клиент, загрузочный экран прошел и я ввел пароль в поле ввода, нажал ОК, и у меня клиент завис на пару секунд и вылетел. И так повторяется постоянно, и я его переустанавливал, и пробовал перезаходить много раз. Но после каждого ввода пароля и нажимания кнопки "ок" клиент вылетает. Покопавшичь в samp.log.txt я нашел последние строки и вот такой код нашел(в спойлере). В чем дело?(добавил файл samp_log.txt чтобы полностью вы прочитали файл)
      Интересный факт: у моего друга Honor и у него оптимизация и клиент идет в 60 фпс в отличии от моего Samsung A02 на котором клиент в 20 фпс от силы,а иногда и 10, и даже 5 фпс...
       
      samp_log.txt
    • xiemoniyaz
      От 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
      От DEST
      Командный процессор: zcmd / dc_cmd + sscanf.