Вообще, то что ты пытался сделать уже
существует в более адекватной реализации
А теперь по твоей реализации.
1) Команда в шапке темы, как минимум, выдаст ошибку ссканф в консоле. Задачка тебе на ночь: почему :)
2) Я бы рекомендовал тебе не нагружать "код для примера" лишними конструкциями. Например, зачем нужно указывать специфические цвета в SCM, если есть прекрасный белый цвет обозначающий как "-1"? Или зачем писать слово "[Информация]"? Вот такие вещи отвлекают от тех фишек, которые ты предлагаешь. Лучше уже проверку на коннект добавить, ей богу :)
3) Попробуй функцию IsPlayerConnected использовать так как ты использовал IsPlayerAim. Сколько ошибок получишь?) Префикс Is показывает, что функция возвращает какие-то значение, будь-то 0/1 или еще что-то. Она всегда что-то возвращает. И в большинстве случаев используется в проверках (на что собственно префикс Is и указывает).
4) forward + public? Ты уверен? У тебя точно функция IsPlayerAim автовызываемая?
5) Как и говорил выше коллега M I S T E V, ты запутался в playerid/params в PVar'ах. Впрочем, он и не нужен.
Таким образом итоговый код (на основе кода в шапке темы) получится такой:
CMD:checkaim(playerid, params[])
{
new targetid;
if( sscanf(params, "u", targetid) )
return SendClientMessage(playerid, -1, "/checkaim [playerid]");
if( targetid == INVALID_PLAYER_ID )
return true;
if( IsPlayerAim(targetid) )
SendClientMessage(playerid, -1, "Игрок прицеливается.");
else
SendClientMessage(playerid, -1, "Игрок не прицеливается.");
return true;
}
stock IsPlayerAim(playerid)
{
switch(GetPlayerAnimationIndex(playerid))
{
case 1167,1160,1161,1162,1163: return 1;
}
return 0;
}
Сообщение отредактировал Pa4enka: 11 октября 2022 - 12:26