Autoswitch

Hejter

xor ebx, ebx
Сообщения
1,759
Реакции
393
Есть код, нужно его оптимизировать и пофиксить ошибку с автосменой или предложить другой вариант автосмены.
Суть бага: Если игрок кидает флешку, то бывает что берется нож (авто.) и флешку больше выкинуть нельзя, решается, путем смены на нож и ждать 2-3 сек, потом обратно на флешку.


PHP:
new bool:gB_OnGround[MAXPLAYERS+1];

public OnPluginStart(){
    HookEvent("weapon_fire", Weapon_Fire);
}

public Action:Weapon_Fire(Handle:event, const String:name[], bool:dB)
{
	
	new userid = GetEventInt(event, "userid");
	new client = GetClientOfUserId(userid);
	
	if(!IsValidClient(client, true))
	{
		return Plugin_Continue;
	}
	
	new String:weapon[64];
	GetEventString(event, "weapon", weapon, 64);
	
	if(StrEqual(weapon, "flashbang"))
	{
            gB_OnGround[client] = bool:(GetEntityFlags(client) & FL_ONGROUND);

            new serial = GetClientSerial(client);
				//int client = g_capt1;
				
            CreateTimer(0.1, AutoSwitchTimer, serial);
	}
	
	return Plugin_Continue;
}

public Action:AutoSwitchTimer(Handle:Timer, any:serial)
{
	new client = GetClientFromSerial(serial);
	
	if(!IsValidClient(client, true))
	{
		return Plugin_Handled;
	}
	
	FakeClientCommand(client, "use weapon_knife");
	FakeClientCommand(client, "use weapon_flashbang");
	
	return Plugin_Handled;
}

public OnClientDisconnect(client)
{
	reset(client);
}

public OnClientPutInServer(client)
{
	if(!IsValidClient(client))
	{
		return;
	}
	
	reset(client);
}

stock reset(client)
{
	gB_OnGround[client] = true;
}

// Stocks
stock bool:IsValidClient(client, bool:alive = false)
{
	return (client >= 1 && client <= MaxClients && IsClientConnected(client) && IsClientInGame(client) && (alive == false || IsPlayerAlive(client)));
}

Добавлено через 7 часов 6 минут
бамп
 
Последнее редактирование:

Hejter

xor ebx, ebx
Сообщения
1,759
Реакции
393
Не пробовал просто давать флешку, тут же её удалять, снова переключаться на флешку? Или удаляем старую, если есть и даём новую. Правда, появится соответствующая иконка и звук выдачи.

У меня в trikz моде, все закономерно, при выкидывание флешки -> дается новая. (автофлеш). Решил свою проблему, значение таймера чуть увеличил и больше не заедает.
Тут-же удалять флешку нельзя так, ибо тогда флешка не будет, подкидывать..а просто будет удаляться.
 
Сверху Снизу