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