Пишем команды с DmX [DC_CMD + SSCANF]
Добрый день уважаемые обитатели Pro-Pawn.ru это мой второй урок посвященный pawn программированию, сегодня я буду учить вас писать команды на DC_CMD + SSCANF.
DC_CMD - достаточно простой командный процессор в pawn программировании. Для меня он более удобный и интересный.
Многие скачивая мод с командным процессором DC_CMD хватались за голову, так как не могли понять как с ним работать, а привыкли к RLS командам(тупому быдло коду).
(!)Команды построены на проверках.
Вот дана команда выдачи выдачи жизней:
PHP код:
CMD:sethp(playerid, params[])
{
new str[24];
if(sscanf(params,"ui",params[0],params[1])) return SendClientMessage(playerid, COLOR_WHITE,"Используйте: /sethp [id] [кол-во жизней]");
if(params[1] < 0 || params[1] > 100) return SendClientMessage(playerid, COLOR_GREY, "Нельзя дать менее 0 и более 100 жизней.");
SetHealth(params[0],params[1]);
format(str,sizeof(str), "%s установил вам жизней %d",PlayerInfo[params[0]][pName],params[1]);
SendClientMessage(params[0],COLOR_WHITE, str);
return true;
}
Разберем подробнее код:
PHP код:
if(sscanf(params,"ui",params[0],params[1]))
/* Это даем значения, если u - ид/имя игрока если i - число, и даем им значение params[0], params[1] все по порядку*/
PHP код:
SetHealth(params[0],params[1]);
/*Опять же, params[0] - это ид игрока или имя которое мы ввели в команде, а params[1] это наше числовое значение i которое мы ввели когда прописывали команду.*/
PHP код:
if(params[1] < 0 || params[1] > 100)
/*Это действие выводится когда вы ввели значение i - то есть params[1] меньше нуля либо больше 100*/
PHP код:
format(str,sizeof(str), "%s установил вам жизней %d",PlayerInfo[playerid][pName],params[1]);
/* PlayerInfo[playerid][pName] где playerid - ид или имя игрока который прописал команду, params[1] - это опять же наше значение i
PHP код:
SendClientMessage(params[0],COLOR_WHITE, str);
/* Функция показывает сообщение в чат, а кому??? опять же params[0] ( то есть кому дали вы жизни - u )
Код HTML:
Табличка значений SSCANF:
u - id или имя игрока
I - целое число
d - целое число
s - строка
f - число с плавающей точкой т.е. дробь
P.S: Если указываете значение "s" указывайте его вот так "s[24]" то есть добавляйте стринг, так как у многих новичков с этим проблема, потом сервер выдает варнинги.
Думаю все прекрасно и понятно написано. Специально для Pro-Pawn.ru
Задавайте вопросы в теме.
Автор: Siman aka DmX