Question

Добрый вечер всем. Проблема такая:

При написании любой команды связанной с киком игрока(/kick, /ban и т.д.) игрока по-просту не кикает с сервера. То есть появляется надпись, что игрока кикнул администратор, ему высвечивается, что его кикнуло, но сам процесс отключения не происходит. Код выкладываю:

CMD:kick(playerid,params[])
{
	if(PlayerLogged[playerid] == false) return SendClientMessage(playerid,-1,"{FFCC00}Пройдите авторизацию");
	if(PI[playerid][pAdmin] <= 2) return SendClientMessage(playerid,-1,"{FF0000}[ Error ] {B5B5B5}Вам не доступна данная команда");
	if(sscanf(params,"us[100]",params[0],params[1])) return SendClientMessage(playerid,-1,"{FF0000}[ Error ] {B5B5B5}Введите /kick [id] [причину]");
	if(!IsPlayerConnected(params[0])) return SendClientMessage(playerid,-1,"{FF0000}[ Error ] {B5B5B5}Игрок не в игре");
	new string[256];
	new mtext[25];
	new year, month,day;
	new all[256];
	new hour,minuite,second;
	getdate(year,month,day);
	gettime(hour,minuite,second);
	if(month == 1) { mtext = "Января"; }
	else if(month == 2) { mtext = "Февраля"; }
	else if(month == 3) { mtext = "Марта"; }
	else if(month == 4) { mtext = "Апрелья"; }
	else if(month == 5) { mtext = "Мая"; }
	else if(month == 6) { mtext = "Июнья"; }
	else if(month == 7) { mtext = "Июля"; }
	else if(month == 8) { mtext = "Августа"; }
	else if(month == 9) { mtext = "Cентября"; }
	else if(month == 10) { mtext = "Октрябрья"; }
	else if(month == 11) { mtext = "Ноябрья"; }
	else if(month == 12) { mtext = "Декабря"; }
	format(string,sizeof(string),"{FF3300}Вы были кикнуты модератором {FFCC00}%s \n{FF3300}Причина: {FFCC00}%s \n{FF3300}Date {FFCC00}( %d %s %d ) \n{FF3300}Time {FFCC00}%d:%d:%d",playerid,params[1],day,mtext,year,hour,minuite,second);
	ShowPlayerDialog(params[0],10,DIALOG_STYLE_MSGBOX,"{FF3300}Вы были кикнуты",string,"Okey","");
	SetTimerEx("Kicks", 10, false, "i", params[0]);
	format(all,sizeof(all),"Администратор: %s кикнул %s. Причина: %s",playerid,pName,params[1]);
	SendClientMessageToAll(0xFF6347AA,all);
	return true;
}
                                
// ФОРВАРД И ПАБЛИК
                                
forward Kicks(playerid);
public Kicks(playerid)
{
	Kick(playerid);
}

 

Share this post


Link to post

5 answers to this question

  • 0

Гость Никита, Почему ты просто не кикаешь без таймера?

Kick(params[0]);

 

Share this post


Link to post
  • 0

@Умелец тогда игрок не увидит отправленного ему сообщения перед киком, это баг/фича сампа. 

Гость Никита, попробуйте залогировать playerid из public Kicks, посмотреть, доходит ли до туда исполнение кода. Можно также залогировать в самой команде параметр params[0], чем он равен непосредственно перед киком. 

Share this post


Link to post
  • 0

@DEST Фикс уже очень давно вышел

 

Share this post


Link to post
  • 0

Хм, действительно. Я под самп ничего не кодил, поэтому был не осведомлен. В официальном клиенте крмп этот баг по-прежнему остался.

https://sampwiki.blast.hk/wiki/Kick

Share this post


Link to post
  • 0

После:

format(all,sizeof(all),"Администратор: %s кикнул %s. Причина: %s",playerid,pName,params[1]);
SendClientMessageToAll(0xFF6347AA,all);

Добавь:

Kick(params[0]);

Должно получиться:

format(all,sizeof(all),"Администратор: %s кикнул %s. Причина: %s",playerid,pName,params[1]);
SendClientMessageToAll(0xFF6347AA,all);
Kick(params[0]);

И во все команды связанные с баном, тихим баном, с-киком тоже добавь.

Share this post


Link to post
Guest
This topic is now closed to further replies.
Sign in to follow this  
Followers 0
  • Recently Browsing   0 members

    No registered users viewing this page.

  • Similar Content

    • Kutuzov
      By Kutuzov
      Всем привет, хотелось бы спросить у тех, кто разбирается в PluginSDK.
      Какие есть источники, руководства, документации о PluginSDK?
      Я пока что ничего нормального не нахожу.
      Заранее спасибо