BfWrite... затемнение экрана игроку.

Primo

типа серьёзный тип
Сообщения
1,532
Реакции
759
Пытаюсь затемнить всем игрокам экран.

Каковы мои ошибки в коде? Что стоит делать, а что не стоит? И как лучше поступить в той или иной ситуации?
При данном коде сервер крашится.

PHP:
public Action:SelectAssault(client, args)
{
	if(PlayerS[client] == 1)
	{
		for(new i=1; i<=GetMaxClients(); i++)
		{
			if(GetClientTeam(i) == 2 && IsPlayerAlive(i))
			{
				SetBlind(i, 255, 60);
			}
		}
		PrintToChatAll("Командир запустил игру \x01\x07Штурм");
	}
}
public SetBlind(client, value, time)
{
	new Handle:h_msg = StartMessageOne("Fade", client, 1); 
	if (h_msg != INVALID_HANDLE) 
	{ 
		new sec = 400 * time;
		BfWriteShort(h_msg, sec);  
		BfWriteShort(h_msg, sec); 
		BfWriteShort(h_msg, sec); 
		BfWriteByte(h_msg, 0); 
		BfWriteByte(h_msg, 0); 
		BfWriteByte(h_msg, 0); 
		BfWriteByte(h_msg, value); 
		EndMessage(); 
	}
}
 

TolikCorp

Участник
Сообщения
874
Реакции
334
Не знаю, как ты там ориентировался, но я нашел кусок в нем же:
PHP:
PerformBlind(client, target, amount)
{
	new targets[2];
	targets[0] = target;
	
	new duration = 1536;
	new holdtime = 1536;
	new flags;
	if (amount == 0)
	{
		flags = (0x0001 | 0x0010);
	}
	else
	{
		flags = (0x0002 | 0x0008);
	}
	
	new color[4] = { 0, 0, 0, 0 };
	color[3] = amount;
	
	new Handle:message = StartMessageEx(g_FadeUserMsgId, targets, 1);
	if (GetUserMessageType() == UM_Protobuf)
	{
		PbSetInt(message, "duration", duration);
		PbSetInt(message, "hold_time", holdtime);
		PbSetInt(message, "flags", flags);
		PbSetColor(message, "clr", color);
	}
	else
	{
		BfWriteShort(message, duration);
		BfWriteShort(message, holdtime);
		BfWriteShort(message, flags);		
		BfWriteByte(message, color[0]);
		BfWriteByte(message, color[1]);
		BfWriteByte(message, color[2]);
		BfWriteByte(message, color[3]);
	}
	
	EndMessage();

	LogAction(client, target, "\"%L\" set blind on \"%L\", amount %d.", client, target, amount);
}
 

Primo

типа серьёзный тип
Сообщения
1,532
Реакции
759
Не знаю, как ты там ориентировался, но я нашел кусок в нем же:
PHP:
PerformBlind(client, target, amount)
{
	new targets[2];
	targets[0] = target;
	
	new duration = 1536;
	new holdtime = 1536;
	new flags;
	if (amount == 0)
	{
		flags = (0x0001 | 0x0010);
	}
	else
	{
		flags = (0x0002 | 0x0008);
	}
	
	new color[4] = { 0, 0, 0, 0 };
	color[3] = amount;
	
	new Handle:message = StartMessageEx(g_FadeUserMsgId, targets, 1);
	if (GetUserMessageType() == UM_Protobuf)
	{
		PbSetInt(message, "duration", duration);
		PbSetInt(message, "hold_time", holdtime);
		PbSetInt(message, "flags", flags);
		PbSetColor(message, "clr", color);
	}
	else
	{
		BfWriteShort(message, duration);
		BfWriteShort(message, holdtime);
		BfWriteShort(message, flags);		
		BfWriteByte(message, color[0]);
		BfWriteByte(message, color[1]);
		BfWriteByte(message, color[2]);
		BfWriteByte(message, color[3]);
	}
	
	EndMessage();

	LogAction(client, target, "\"%L\" set blind on \"%L\", amount %d.", client, target, amount);
}


Спасибо за помощь, но я вырезал из funcommands, как видимо сделали и вы)

А вырезал это:
PHP:
		PbSetInt(message, "duration", duration);
		PbSetInt(message, "hold_time", holdtime);
		PbSetInt(message, "flags", flags);
		PbSetColor(message, "clr", color);
Работает на ура.
 
Сверху Снизу