Доступ к архиву

Переход в группу "Пользователь"

300.00 ₽
Одноразовый платёж
Быстрый переход в группу "Пользователи", без надобности написания постов и ожидания.

Покупка дает возможность:
Быть полноправным участником форума
Нормальное копирование кода
Создавать темы
Скачивать файлы
Доступ к архиву Pawno-Info

Макросы

Статус
В этой теме нельзя размещать новые ответы.

#Bowman

Ученик
Доброго времени суток пользователи Pawno-info!
Ползал по пабликам разным,нашел вот такую вещь!
Для новичков тема должна быть полезная!

Начнем.
Define – это директива позволяющая создавать константы и макросы. Константы, это неизменяемые
переменные, они сильно упрощают работу скриптерам. Константой можно заменить трудно запоминающие
элементы кода, такие как, например HEX-код цвета, которым выделяется строка. В SAMP есть множество
встроенных констант. Перечислять их не буду их можно увидеть в файле, а_samp.inc. Приведу пример констант:

PHP:
#define COLOR_GREY 0xAFAFAFAA
#define COLOR_GREY 0xAFAFAFAA
#define COLOR_RED 0xAA3333AA
#define COLOR_YELLOW 0xFFFF00AA
#define COLOR_WHITE 0xFFFFFFAA
#define COLOR_ORANGE 0xFF8000AA
#define COLOR_BRIGHTRED 0xDB0000F6
Эти константы можно использовать, например, в функции SendClientMessage, которая отправляет
текстовое сообщение в чат. Теперь вместо того, чтобы писать вот так:

PHP:
SendClientMessage(playerid, 0xFFFF00AA,”Hello, World”);
А можно еще написать так!
PHP:
SendClientMessage(playerid,COLOR_YELLOW,”Hello, World”);
Суть констант я думаю, теперь вам понятна, переходим к макросам. С помощью простейшего макроса
можно упростить себе работу, например с таймером. Забежим немного вперед. В таймерах время указывается

PHP:
#define SetTimerx (%0,%1,%2) SetTimer(%0,%1*1000,%2)
Но о таймерах вы узнаете в более позднем уроке, и мы все рассмотрим данный макрос на уроке по
таймерам.
Теперь о значении знака процента «%» с номером. Чтобы понять их значение рассмотрим следующий
пример. Многие используют не стандартную функцию PlayerToPoint, которая по сути не лучше стандартной
IsPlayerInRangeOfPoint. Разница функций лишь в том, что у их первые два параметра поменялись местами, а в
остальном они одинаковы и выполняют одинаковую функцию. Так вот, допустим с помощью этого макроса мы
хотим превратить все функции PlayerToPoint в стандартные функции IsPlayerInRangeOfPoint.

в миллисекундах, что не очень удобно. Чтобы писать время в секундах создадим макрос SetTimerx

PHP:
#define PlayerToPoint(%0,%1,%2,%3,%4) IsPlayerInRangeOfPoint(%1,%0,%2,%3,%4)

Номер перед знаком процента идентифицирует параметр по порядковому номеру. То есть параметр
playerid у функции PlayerToPoint обозначен теперь – %0 (нулем), а параметр Float:radi обозначен – %1 (единицей).
Обратите внимание, первые две цифры внутри скобок и тех и других поменялись местами. Это значит, что
когда вы будете использовать данный макрос, функция PlayerToPoint будет заменена функцией
IsPlayerInRangeOfPoint, а первые два параметра функции поменяются местами, чтобы соответствовать
синтаксису стандартной функции.
`````````````````````````````
Вот и все думаю кому нибудь то помог.

Ждем дальнейших уроков.
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу