sm_ban первый бан 15 минут, следующий навсегда - найти причину

Primo

типа серьёзный тип
Сообщения
1,532
Реакции
759
В общем, есть такая проблема. Пишу voteban \ votekick для своих нужд. Возникла проблема, причину которой я не вижу. Первое голосование за бан проходит удачно, бан даётся на 15 минут, однако следующее даётся навсегда.

P.S. это сухой грубый код, на штрихи, вроде if\else if прошу не обращать внимание. Мне нужна помощь по теме, а не по оптимизации.

PHP:
ShowVoteBanMenu(client)
{
	new Handle:menu = CreateMenu(Select_VBanMenu); 
	SetMenuTitle(menu, "Выберите Игрока:\n \n"); 
	decl String:userid[15], String:name[32]; 
	for (new i = 1; i <= MaxClients; i++) 
	{ 
		if (IsClientInGame(i)) 
		{ 
			IntToString(GetClientUserId(i), userid, 15); 
			GetClientName(i, name, 32); 
			AddMenuItem(menu, userid, name); 
		} 
	}
	DisplayMenu(menu, client, 0); 
}

public Select_VBanMenu(Handle:menu, MenuAction:action, client, option) 
{
	if (action == MenuAction_End) 
	{ 
		CloseHandle(menu); 
		return; 
	} 
	if (action != MenuAction_Select) return; 
	decl String:userid[15];
	GetMenuItem(menu, option, userid, 15);
	new target = GetClientOfUserId(StringToInt(userid)); 
	if (target > 0) 
	{ 
		new String:NameV[200];
		GetClientName(client, NameV, sizeof(NameV));
		new String:NameB[200];
		GetClientName(target, NameB, sizeof(NameB));
		PrintToChatAll(" \x05%s\x01 начал голосование за изгнание игрока\x07 %s\x01. Голосование будет завершено через\x04 15сек.", NameV, NameB);
		Voted = target;
		CreateTimer(15.0, TimerVoteBan);
		for(new i=1; i<=GetMaxClients(); i++) DisplayPVoteBanMenu(i)
		
	}	
	else
	{
		PrintToChat(client, "Игрок не найден"); 
	}
}

DisplayPVoteBanMenu(client)
{

	new Handle:menu = CreateMenu(Select_PVMenu); 
	new String:NameB[200];
	GetClientName(Voted, NameB, sizeof(NameB));
	if(VoteStatus == 1) SetMenuTitle(menu, "Бан %s:\n \n", NameB);
	if(VoteStatus == 2) SetMenuTitle(menu, "Кик %s:\n \n", NameB);
	new String:Text[255];
	Format(Text, sizeof(Text), "Нет");
	AddMenuItem(menu, "", Text); 
	Format(Text, sizeof(Text), "Да");
	AddMenuItem(menu, "", Text);	
	DisplayMenu(menu, client, 0); 
}



public Select_PVMenu(Handle:menu, MenuAction:action, client, option) 
{ 
	if (action == MenuAction_End) 
	{ 
		CloseHandle(menu); 
		return; 
	} 
	if (action != MenuAction_Select) return; 
	switch(option)
	{
		case 0:
		{
			new String:NameB[200];
			GetClientName(client, NameB, sizeof(NameB));
			PrintToChatAll("%s против", NameB);
			VoteCount--;
		}
		case 1:
		{
			new String:NameB[200];
			GetClientName(client, NameB, sizeof(NameB));
			PrintToChatAll("%s за", NameB);
			VoteCount++;
		}	
	}
	PrintToChatAll("Всего набрано %d голосов", VoteCount);
	//if (action == MenuAction_Select) CloseHandle(menu); 
}

public Action:TimerVoteBan(Handle:timer)
{
	if(VoteCount >= 3)
	{
		new String:NameB[200];
		GetClientName(Voted, NameB, sizeof(NameB));
		if(VoteStatus == 1) ServerCommand("sm_ban %s 15 votedoff", NameB);
		if(VoteStatus == 2) ServerCommand("sm_kick %s", NameB);
	}
	VoteStatus = -1;
}
 

artyrka94

Участник
Сообщения
181
Реакции
38
так попробуй
PHP:
.
.
.
.
PrintToChatAll(" \x05%s\x01 начал голосование за изгнание игрока\x07 %s\x01. Голосование будет завершено через\x04 15сек.", NameV, NameB);
        //Voted = target;
		Voted = StringToInt(userid);
.
.
.
.
.
public Action:TimerVoteBan(Handle:timer)
{
    if(VoteCount >= 3)
    {
        if(VoteStatus == 1) ServerCommand("sm_ban #%d 15 votedoff", Voted);
        if(VoteStatus == 2) ServerCommand("sm_kick #%d", Voted);
    }
    VoteStatus = -1;
}
 

R1KO

fuck society
Сообщения
9,457
Реакции
7,786
  • Команда форума
  • #3
Primo, юзай не имя, а #userid
А если имя - бери в кавычки
 
Сверху Снизу