Зарегистрировавшись у нас, вы сможете обсуждать, делиться и отправлять личные сообщения другим участникам нашего сообщества.
Зарегистрироваться!Если речь идет про команду /kick, то для чего нам кикать того, кто ввел данную команду? То есть Kick(playerid);.Kick(playerid); и Kick(to_player); не кикают не могу понять в чём проблема помогите
впрочем даЕсли речь идет про команду /kick, то для чего нам кикать того, кто ввел данную команду? То есть Kick(playerid);.
В данном случае скорее всего используется params[0] - ID игрока которого мы хотим кикнуть и params[1] - причина кика.
Я бы сделал вот так:
После всех проверок создаем переменную new pid;
Дальше присваиваем данной переменной ID нашего игрока которого мы хотим кикнуть, то есть - pid = params[0];
Ну и когда дело доходит до самого кика прописываем Kick(pid);
Готово. Также я бы посоветовал сделать таймер на кик, потому-что игрок не успеет увидеть сообщение о том, что его кикнули, он сразу отключится от сервера.
Когда я занимался разработкой мода с нуля, я пробовал оповещать через диалог и SCM, но к сожалению без таймера ничего не получалось, хотя сам кик был прописан после всего этого. Игрок кикался моментально.впрочем да
но если допустим делать диалог с текстом что игрок кикнут то таймер вообще не нужен
можно и через SendClientMessage оповестить его об этом
тут на фантазию автора впрочем
вполне возможноКогда я занимался разработкой мода с нуля, я пробовал оповещать через диалог и SCM, но к сожалению без таймера ничего не получалось, хотя сам кик был прописан после всего этого. Игрок кикался моментально.
Попробуй мой кодИзвиняюсь что долго не отвечал занят был
CMD:kick(playerid, params[])
{
if(GetPlayerAdminEx(playerid) < 2) return 1;
if(!strlen(params)) return SendClientMessage(playerid, COLOR_GOLD, "Èñïîëüçóéòå:{"#cW"} /kick [ID èãðîêà] [ïðè÷èíà (íåîáÿçàòåëüíî)]");
extract params -> new to_player;
if(!IsPlayerConnected(to_player)) return SendClientMessage(playerid, 0xFF6600FF, "Òàêîãî èãðîêà íåò");
else if(GetPlayerAdminEx(to_player) > GetPlayerAdminEx(playerid)) return SendClientMessage(playerid, 0xFF6600FF, "Íåëüçÿ êèêíóòü àäìèíèñòðàòîðà âûøå ïî ðàíãó");
new reason[31];
sscanf(params, "{d}s[30]", reason);
new fmt_msg[128];
format(fmt_msg, sizeof fmt_msg, "Àäìèíèñòðàòîð %s êèêíóë èãðîêà %s", GetPlayerNameEx(playerid), GetPlayerNameEx(to_player));
if(strlen(reason) > 0)
format(fmt_msg, sizeof fmt_msg, "%s. Ïðè÷èíà: %s", fmt_msg, reason);
SendClientMessageToAll(0xFF5533FF, fmt_msg);
format(fmt_msg, sizeof fmt_msg, "Êèêíóë %s[acc:%d]", GetPlayerNameEx(to_player), GetPlayerAccountID(to_player));
SendLog(playerid, LOG_TYPE_ADMIN_ACTION, fmt_msg);
new message[324];
new year, month, day;
getdate(year, month, day);
format
(
message,
sizeof(message),
"{"#cW"}Äàòà: %d %s %d ã.\n\
{"#cW"}Âàø íèê: %s\n\
{"#cW"}Íèê àäìèíèñòðàòîðà: %s\n\
{"#cW"}Ïðè÷èíà: %s\n\n\
{"#cW"}Åñëè Âû íå ñîãëàñíû ñ íàêàçàíèåì, ñäåëàéòå ñêðèíøîò (F8)\n\
È îñòàâüòå æàëîáó íà ôîðóìå {"#cGold"}"SERVER_SITE"\n\
",
day,
GetMonthName(month),
year,
GetPlayerNameEx(to_player),
GetPlayerNameEx(playerid),
reason
);
Dialog(to_player, INVALID_DIALOG_ID, DIALOG_STYLE_MSGBOX, "{FF6600}Îòêëþ÷åíèå îò ñåðâåðà", message, "Çàêðûòü", "");
SendClientMessage(to_player, 0xFF6600FF, "Ââåäèòå /q(uit) ÷òîáû âûéòè");
new query[400];
mysql_format(mysql, query, sizeof query, "UPDATE admin SET kicks = kicks+1 WHERE name = '%s'", GetPlayerNameEx(playerid));
mysql_query(mysql, query, false);
mysql_format(mysql, query, sizeof query, "INSERT INTO alogs (acc_id,type,name_adm,time,reason) VALUES (%d,'%e','%e',%d,'%e')", GetPlayerAccountID(to_player), "Êèê", GetPlayerNameEx(playerid), gettime(), reason);
mysql_query(mysql, query, false);
// Kick(to_player);
Kickto_player);
return 1;
}
вот команда при её вводе пишет что кикнуло но не кикает с сервера
и при варне так же
CMD:kick(playerid, params[])Извиняюсь что долго не отвечал занят был
CMD:kick(playerid, params[])
{
if(GetPlayerAdminEx(playerid) < 2) return 1;
if(!strlen(params)) return SendClientMessage(playerid, COLOR_GOLD, "Èñïîëüçóéòå:{"#cW"} /kick [ID èãðîêà] [ïðè÷èíà (íåîáÿçàòåëüíî)]");
extract params -> new to_player;
if(!IsPlayerConnected(to_player)) return SendClientMessage(playerid, 0xFF6600FF, "Òàêîãî èãðîêà íåò");
else if(GetPlayerAdminEx(to_player) > GetPlayerAdminEx(playerid)) return SendClientMessage(playerid, 0xFF6600FF, "Íåëüçÿ êèêíóòü àäìèíèñòðàòîðà âûøå ïî ðàíãó");
new reason[31];
sscanf(params, "{d}s[30]", reason);
new fmt_msg[128];
format(fmt_msg, sizeof fmt_msg, "Àäìèíèñòðàòîð %s êèêíóë èãðîêà %s", GetPlayerNameEx(playerid), GetPlayerNameEx(to_player));
if(strlen(reason) > 0)
format(fmt_msg, sizeof fmt_msg, "%s. Ïðè÷èíà: %s", fmt_msg, reason);
SendClientMessageToAll(0xFF5533FF, fmt_msg);
format(fmt_msg, sizeof fmt_msg, "Êèêíóë %s[acc:%d]", GetPlayerNameEx(to_player), GetPlayerAccountID(to_player));
SendLog(playerid, LOG_TYPE_ADMIN_ACTION, fmt_msg);
new message[324];
new year, month, day;
getdate(year, month, day);
format
(
message,
sizeof(message),
"{"#cW"}Äàòà: %d %s %d ã.\n\
{"#cW"}Âàø íèê: %s\n\
{"#cW"}Íèê àäìèíèñòðàòîðà: %s\n\
{"#cW"}Ïðè÷èíà: %s\n\n\
{"#cW"}Åñëè Âû íå ñîãëàñíû ñ íàêàçàíèåì, ñäåëàéòå ñêðèíøîò (F8)\n\
È îñòàâüòå æàëîáó íà ôîðóìå {"#cGold"}"SERVER_SITE"\n\
",
day,
GetMonthName(month),
year,
GetPlayerNameEx(to_player),
GetPlayerNameEx(playerid),
reason
);
Dialog(to_player, INVALID_DIALOG_ID, DIALOG_STYLE_MSGBOX, "{FF6600}Îòêëþ÷åíèå îò ñåðâåðà", message, "Çàêðûòü", "");
SendClientMessage(to_player, 0xFF6600FF, "Ââåäèòå /q(uit) ÷òîáû âûéòè");
new query[400];
mysql_format(mysql, query, sizeof query, "UPDATE admin SET kicks = kicks+1 WHERE name = '%s'", GetPlayerNameEx(playerid));
mysql_query(mysql, query, false);
mysql_format(mysql, query, sizeof query, "INSERT INTO alogs (acc_id,type,name_adm,time,reason) VALUES (%d,'%e','%e',%d,'%e')", GetPlayerAccountID(to_player), "Êèê", GetPlayerNameEx(playerid), gettime(), reason);
mysql_query(mysql, query, false);
// Kick(to_player);
Kickto_player);
return 1;
}
вот команда при её вводе пишет что кикнуло но не кикает с сервера
и при варне так же