else if(strcmp(cmd, "/warn", true) == 0)
{
if(PlayerInfo[playerid][pAdmin] < 2)return 1;
if(dostup[playerid] != 1) return ShowPlayerDialog(playerid,2934,DIALOG_STYLE_INPUT,"Админ авторизация","Введите пароль\n\nПароль должен состоять из латинских букв и цифр\n размером от 6 до 15 символов","Ок","Отмена");
strdel(cmdtext,0,5);
new reason[65];
if(sscanf(cmdtext,"us",giveplayerid,reason))return SendClientMessage(playerid,-1, "::: Введите: /warn [id] [причина]");
if(giveplayerid == INVALID_PLAYER_ID || !IsPlayerConnected(giveplayerid))return SendClientMessage(playerid,COLOR_GRAD1,"Игрок не найден");
if(PlayerInfo[giveplayerid][pWarns] < 0) PlayerInfo[giveplayerid][pWarns] = 0;
PlayerInfo[giveplayerid][pWarns] += 1;
PlayerInfo[giveplayerid][pRp] -= 10;
PlayerInfo[giveplayerid][pMember] = 0;
PlayerInfo[giveplayerid][pLeader] = 0;
PlayerInfo[giveplayerid][pJob] = 0;
if(PlayerInfo[giveplayerid][pWarns] >= 3)
{
new ip[16];
GetPlayerIp(giveplayerid,ip,16);
format(string, sizeof(string), "Администратор %s забанил %s [3 предупреждения]. Причина: %s ", sendername,Name(giveplayerid), reason);
SendClientMessageToAll(COLOR_LIGHTRED, string);
format(string, sizeof(string), "- Ник: [%s] IP: [%s]",Name(giveplayerid),ip);
SendAdminMessage(COLOR_LIGHTRED,string);
PlayerInfo[giveplayerid][pLocked] = 1;
Kick(giveplayerid);
return 1;
}
format(string, sizeof(string), "Администратор %s выдал Warn %s. Причина: %s", sendername, Name(giveplayerid), reason);
SendClientMessageToAll(COLOR_LIGHTRED,string);
SendClientMessage(giveplayerid, COLOR_LIGHTRED, "- Для снятия Warna подайте заявку в личном меню /mm - [8] Доступ к игре");
Kick(giveplayerid);
return 1;
}
Хуже не будет, но и прироста скорости тоже не будет. Основной выигрыш идет от использования обработчика команд, а не от sscanf, sscanf это просто приятный сишный бонус. Потратьте время, запилите zcmd.
|
new length = strlen(cmdtext);
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;
Странно что нету "прироста". Просто мне казалось заменяя вот эту штуковину во всех командах где есть string, они станут быстрее работать. Я до сих пор не понял как она работает
pawn Code:
|
Странно что нету "прироста". Просто мне казалось заменяя вот эту штуковину во всех командах где есть string, они станут быстрее работать. Я до сих пор не понял как она работает
pawn Code:
|