Veteran Member
|
08-27-2021
, 15:37
Problem with freezing
|
#1
|
It's part of the code, there's some command I can freeze player / team \ and all players
If I make a !freeze <name> for for player <name> it works and if I do again it unfreeze him well
Everything works just the glitch below:
Once I !freeze <player> then I want to freeze his team it causes a problem that after that I can not at all unfreeze, the freeze it gets stuck for everyone or we just get stuck for a person who got a freeze before his team
Code:
/* Plugin generated by AMXX-Studio */
#include <amxmodx>
#include <amxmisc>
#include <hamsandwich>
#include <fakemeta>
#include <fun>
#define PLUGIN "New Plug-In"
#define VERSION "1.0"
#define AUTHOR "author"
#define PREFIX "^4[Cmd]^1"
enum _:CMD_STRUCT
{
CMD_NAME [32],
CMD_INCHAT [32],
CMD_SRV [32],
CMD_USAGE [128],
CMD_LEVEL,
};
enum _:Commands
{
FREEZE,
};
new const CommandsList[Commands][CMD_STRUCT] =
{
{"Freeze", "freeze", "", "<^3@all/@t/@ct/target^1>", ADMIN_LEVEL_C }, // !freeze - flag b
};
new Float:fAngles [MAX_PLAYERS + 1][3];
new bool:g_gFrozen; // frozen in game.
new bool:g_bFrozen [MAX_PLAYERS + 1]; // frozen in player.
new gCmdPointer [Commands];
public plugin_init()
{
register_plugin (PLUGIN, VERSION, AUTHOR);
register_clcmd ("say", "HandleSay");
register_clcmd ("say_team", "HandleSay");
register_forward(FM_PlayerPreThink, "FreezeSpeed");
RegisterHam (Ham_Spawn, "player", "StartRoundPlayer");
register_logevent("StartRound", 2, "1=Round_Start");
for (new i = 0; i < Commands; i++)
{
if (strlen(CommandsList[i][CMD_SRV]) > 0)
gCmdPointer[i] = get_cvar_pointer(CommandsList[i][CMD_SRV]);
}
}
// Say Command Handler.
public HandleSay(client)
{
new said[32];
new param[32];
new szMessage[charsmax(said) + charsmax(param) + 2];
read_argv(1, szMessage, charsmax(szMessage));
argbreak(szMessage, said, charsmax(param), param, charsmax(param));
for (new i = 0; i < Commands; i++)
{
if (equali(said[1], CommandsList[i][CMD_INCHAT]))
{
if (!(get_user_flags(client) & CommandsList[i][CMD_LEVEL]))
{
client_print_color(client, print_team_default, "%s ^3Error^1: You don't have Access Level.", PREFIX);
continue;
}
CommandSelector(i, client, param);
return PLUGIN_HANDLED;
}
}
return PLUGIN_CONTINUE;
}
public StartRoundPlayer(id)
{
g_bFrozen[id] = false;
}
// Round Start: In Game.
public StartRound()
{
g_gFrozen = false;
}
// Say Command Handler (Selector).
CommandSelector(cmd, client, param[])
{
switch(cmd)
{
case FREEZE: CmdFreeze (client, param);
}
}
// Check Parameter None.
bool:CheckUsage(client, cmd, param[])
{
if (!param[0])
{
client_print_color(client, print_team_default, "%s Usage: '^4!%s ^1%s'", PREFIX, CommandsList[cmd][CMD_NAME], CommandsList[cmd][CMD_USAGE]);
return false;
}
return true;
}
// Command: Freeze Players.
CmdFreeze(client, param[])
{
new players[32];
new pnum = 0;
new iFrozen = 0;
// check param[] is none.
if (!CheckUsage(client, FREEZE, param))
return;
g_gFrozen = !g_gFrozen;
if (GetMultiTargetPlayers(client, param, players, pnum, true, ALIVE_ONLY))
{
for (new i = 0; i < pnum; i++)
{
// Is Player Frozen?
FreezePlayer(players[i], g_gFrozen);
iFrozen++;
}
if (iFrozen)
PrintFreeze(0, client, param, g_gFrozen);
return;
}
new player;
if (GetSingleTargetPlayer(client, param, player, true, ALIVE_ONLY))
{
g_bFrozen[player] = !g_bFrozen[player];
FreezePlayer(player, g_bFrozen[player]);
PrintFreeze(0, client, param, g_bFrozen[player]);
}
return;
}
// --------------- Utility Logic. --------------------------
// Switching Freeze.
FreezePlayer(id, bool:iValue)
{
pev(id, pev_v_angle, fAngles[id]);
g_bFrozen[id] = iValue;
if (iValue)
set_user_maxspeed(id, -1.0);
}
// Freeze logic.
public FreezeSpeed(id)
{
if (g_gFrozen && g_bFrozen[id])
if (is_user_alive(id))
{
set_pev(id, pev_v_angle, fAngles);
set_user_maxspeed(id, -1.0);
}
return HAM_IGNORED;
}
PrintFreeze(id, client, target[], iFrozen)
{
trim(target);
if (target[0] == '@')
{
if (equali(target, "@all"))
client_print_color(id, print_team_default, "%s ^3%n ^1has %s to ^4everyone^1.", PREFIX, client, iFrozen ? "Freeze" : "UnFreeze");
else if(equali(target, "@admin"))
client_print_color(id, print_team_default, "%s ^3%n ^1has %s to ^4Admin^1.", PREFIX, client, iFrozen ? "Freeze" : "UnFreeze");
else if(equali(target, "@ct"))
client_print_color(id, print_team_default, "%s ^3%n ^1has %s to ^4CT Team^1.", PREFIX, client, iFrozen ? "Freeze" : "UnFreeze");
else if(equali(target, "@t"))
client_print_color(id, print_team_default, "%s ^3%n ^1has %s to ^4Terrorist Team^1.", PREFIX, client, iFrozen ? "Freeze" : "UnFreeze");
else
{
new player = GetTargetPlayer(target);
client_print_color(id, print_team_default, "%s ^3%n ^1has %s to ^4%n^1.", PREFIX, client, iFrozen ? "Freeze" : "UnFreeze", player);
}
return;
}
new player = GetTargetPlayer(target);
client_print_color(id, print_team_default, "%s ^3%n ^1has %s to ^4%n^1.", PREFIX, client, iFrozen ? "Freeze" : "UnFreeze", player);
return;
}
Last edited by Fuck For Fun; 08-30-2021 at 13:46.
|
|