PDA

Просмотр полной версии : [Вопрос] Как писать команды?



Mikiadier
02.09.2016, 16:29
Помогите как правильно писать команды
как их юзать на других игроков и все такое буду благодарен

DeimoS
02.09.2016, 17:46
Чтоб писать команды, нужно знать предназначение той или иной функции в SA-MP, уметь работать с условиями и переменными, а так же много чего ещё.

Командой для сервера является любой текст, который начинается со знака "/" и который был отправлен в чат.
Собственно, для отслеживания введённого текста в скрипте есть автовызываемая функция OnPlayerCommandText. Именно в неё передаётся информация о том, какой игрок ввёл команду и какую команду он ввёл.
Выглядит он так

public OnPlayerCommandText(playerid, cmdtext[])
{
return 0;
}

Изначально сервер не знает, существует ли такая команда или нет. Он просто реагирует на любое сообщение, начинающееся с "/". А уже "научить" его находить нужную команду - это задача скриптера.
И вот тут уже нужны знания функций Pawn и умение работать с условиями. Для реализации нашей задумки подойдёт функция strcmp (http://wiki.sa-mp.com/wiki/%D0%94%D1%80%D1%83%D0%B3%D0%B8%D0%B5_%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D0%B8_%D1%81%D0%BA%D1%80%D0%B8%D0%BF%D1%82%D0%B8%D0%BD%D0%B3%D0%B0#strcmp), которая сравнивает 2 строки.
Собственно, смотрим какие значения возвращает strcmp в случаях, когда строки совпадают, и делаем условие на это значение:

public OnPlayerCommandText(playerid, cmdtext[])
{
if(strcmp(cmdtext, "/mycommand", true) == 0)//Проверяем знамение параметра cmdtext на сходство с именем нашей команды
{
//Тут действия, которые будет выполнять команда
return 1;
}
return 0;
}
Собственно, это и есть команда. Чтоб наполнить её функционалом, нужно, как я уже сказал, знать назначение функций в SA-MP и Pawn.