Простая команда в PAWN

San Andreas Multiplayer (GTA) использует PAWN в качестве языка программирования. Я владелец сервера на SA-MP, и я не профессионал, поэтому я хотел бы получить помощь, если это возможно. По сути, у меня есть команда, которая проверяет статистику игрока, когда он / она онлайн, но я хотел бы иметь команду, чтобы проверить их, когда они не в сети. Это код команды, которая проверяет статистику игрока, когда он онлайн.

CMD:check(playerid, var[])
{
    new user;
    if(!Logged(playerid)) return NoLogin(playerid);
    if(Player[playerid][pAdmin] >= 2 || Player[playerid][pStaffObserver])
    {
        if(sscanf(var,"us[32]", user, var))
        {
            SendClientMessage(playerid, COLOR_WHITE, "{00BFFF}Usage:{FFFFFF} /check [playerid] [checks]");
            SendClientMessage(playerid, COLOR_GRAD2, "** [CHECKS]: stats");
            return 1;
        }
        if(!strcmp(var, "stats", true))
        {
            if(!Logged(user)) return NoLoginB(playerid);
            ShowStats(playerid, user);
        }
    }
    else
    {
        NoAuth(playerid);
    }
    return 1;
}

Я использую командный процессор ZCMD и систему сохранения Dini. Поэтому я хотел бы сделать CMD:ocheck, который бы отображал стандартные ShowStats, и он будет работать как /ocheck [Firstname_Lastname].

Любая помощь? Пожалуйста, помогите, если это возможно.

Спасибо

~ Кевин

2 ответа

Для команды, которая вам требуется, вам нужно будет загрузить данные из пользовательского файла игрока.

Вы, очевидно, начнете с

if(!Logged(playerid)) return NoLogin(playerid);
if(Player[playerid][pAdmin] >= 2 || Player[playerid][pStaffObserver]) 
{

Чтобы проверить, авторизован ли игрок, использующий это, использовать эту команду. Следуя этому,

if(str, "s[32]", name))

Вы не можете использовать 'u' в качестве средства форматирования здесь просто потому, что вы проверяете статистику офлайн-плеера. После этого вам нужно проверить, действительно ли пользователь зарегистрирован. Если это не так, вы вернете эту ошибку пользователю этой команды. Если он есть, то проверьте, не был ли он уже в сети. Если он в сети, верните ошибку администратору, чтобы использовать эту команду вместо "o check". Если он не в сети, тогда вы можете спокойно перейти к загрузке его статистики (вы можете использовать код, используемый для загрузки данных, когда игрок входит в систему, за исключением этого времени. это должно быть напечатано только

например,

format(str, sizeof(str), 
"Score: %s, Money: %d", 
dini_Int(file, "score"), dini_Int(file, "score") );

Да, по сути, вы должны получить всю информацию из файла, поэтому ShowStats не будет работать, потому что я полагаю, что он получает всю информацию из перечислений и т. Д., Вы должны написать совершенно новую функцию получения всей информации офлайн.

Другие вопросы по тегам