12.02.2019, 18:14
Вопрос по командам. Просто обновляю свою память.
Вот например я сделал команду. /makeadmin
Команда имеет структуру /makeadmin [idигрока] [lvl] [AdminName]
понятное дело что я использовал примеры других команд и получил то что нужно но меня все же тревожит вопросы того как оно работат.
Почему так получается.
То есть у меня будет два введеных данных числовые и последний это текстовый.
То есть скриптинг так и строется из подобного рода кода.
просто мне не очень понятно работы так сказать данного рода паблика.
Вот например я сделал команду. /makeadmin
Команда имеет структуру /makeadmin [idигрока] [lvl] [AdminName]
понятное дело что я использовал примеры других команд и получил то что нужно но меня все же тревожит вопросы того как оно работат.
Почему так получается.
То есть у меня будет два введеных данных числовые и последний это текстовый.
То есть скриптинг так и строется из подобного рода кода.
просто мне не очень понятно работы так сказать данного рода паблика.
Код:
if(strcmp(cmd, "/makeadmin", true) == 0)
{
if(IsPlayerConnected(playerid))
{
tmp = strtok(cmdtext, idx);
if(!strlen(tmp)) return SendClientMessage(playerid, COLOR_GRAD2, "ИНФО: /makeadmin [ID/Имя] [level] [AdminName]");
new para1;
new level;
para1 = ReturnUser(tmp); // переменая отвечающая за ид игрока
tmp = strtok(cmdtext, idx);
level = strval(tmp); /переменая отвечающая за лвл игрока
new length = strlen(cmdtext);/ эта переменая отвечающая за adminName, дале мне непонятен цикл. типо он считвает мною веденный символ с начало его ведение и до последнего верно ?
while ((idx < length) && (cmdtext[idx] <= ' '))
{
idx++;
}
new offset = idx;
new result[64];
while ((idx < length) && ((idx - offset) < (sizeof(result) - 1)))
{
result[idx - offset] = cmdtext[idx];
idx++;
}
result[idx - offset] = EOS;
Все что выше мне уже не очень понятно
if(!strlen(result)) return SendClientMessage(playerid, COLOR_GRAD2, "ИНФО: /makeadmin [ID/Имя] [level] [AdminName]");
if (PlayerInfo[playerid][pAdmin] >= 5 && AdminDuty[playerid] == 1)
{
if(IsPlayerConnected(para1))
{
if(para1 != INVALID_PLAYER_ID)
{
GetPlayerName(para1, giveplayer, sizeof(giveplayer));
GetPlayerName(playerid, sendername, sizeof(sendername));
PlayerInfo[para1][pAdmin] = level;
strmid(PlayerInfo[para1][pFirstName], result, 0, strlen(result), 64);
printf("AdmCmd: %s has promoted %s to a level %d admin.", sendername, giveplayer, level, result);
format(string, sizeof(string), "Bы былu назначены дo %d администраторского уровня, AdminName %s (( Администратором %s ))", level, sendername,result);
SendClientMessage(para1, COLOR_LIGHTBLUE, string);
format(string, sizeof(string), "Bы назначили %s администратором %d ypoвня, AdminName %s", giveplayer,level,result);
SendClientMessage(playerid, COLOR_LIGHTBLUE, string);
}
}
}
else SendClientMessage(playerid, COLOR_GRAD1, "У вас недостаточно прав для использования этой команды!");
}
return 1;
}

