Command
sm_spray works all right, it doesn't crash and sends the messages without loops.
Code used for it would be this:
PHP Code:
public Action:MakeSpray(iClient, args)
{
if(!iClient || !IsClientInGame(iClient))
return Plugin_Continue;
if(!IsPlayerAlive(iClient))
{
if(g_showMsg)
{
PrintToChat(iClient, "\x01[ \x02ZK Servidores™ \x01] \x04Você precisa estar vivo para usar spray!");
}
return Plugin_Handled;
}
new iTime = GetTime();
new restante = (iTime - g_iLastSprayed[iClient]);
if(restante < g_time)
{
if(g_showMsg)
{
PrintToChat(iClient, "\x01[ \x02ZK Servidores™ \x01] \x04Você precisa esperar \x02%i segundo(s) \x04para usar spray novamente!", g_time-restante);
}
return Plugin_Handled;
}
decl Float:fClientEyePosition[3];
GetClientEyePosition(iClient, fClientEyePosition);
decl Float:fClientEyeViewPoint[3];
GetPlayerEyeViewPoint(iClient, fClientEyeViewPoint);
decl Float:fVector[3];
MakeVectorFromPoints(fClientEyeViewPoint, fClientEyePosition, fVector);
if(GetVectorLength(fVector) > g_distance)
{
if(g_showMsg)
{
PrintToChat(iClient, "\x01[ \x02ZK Servidores™ \x01] \x04Você está muito longe da parede para usar spray!");
}
return Plugin_Handled;
}
if(g_sprayElegido[iClient] == 0)
{
new sprays[g_sprayCount], spraysCount;
for (new i=1; i<g_sprayCount; ++i)
if(HasFlag(iClient, g_sprays[i][flag]))
sprays[spraysCount++] = i;
TE_SetupBSPDecal(fClientEyeViewPoint, g_sprays[sprays[GetRandomInt(0, spraysCount-1)]][index]);
}
else
{
if(g_sprays[g_sprayElegido[iClient]][index] == 0)
{
if(g_showMsg)
{
PrintToChat(iClient, "\x01[ \x02ZK Servidores™ \x01] \x04Seu spray não funciona, digite \x02!sprays \x04e escolha outro!");
}
return Plugin_Handled;
}
TE_SetupBSPDecal(fClientEyeViewPoint, g_sprays[g_sprayElegido[iClient]][index]);
// Save spray position and identifier
if(g_sprayIndexLast == g_maxMapSprays)
g_sprayIndexLast = 0;
g_spraysMapAll[g_sprayIndexLast][vecPos] = fClientEyeViewPoint;
g_spraysMapAll[g_sprayIndexLast][index3] = g_sprays[g_sprayElegido[iClient]][index];
g_sprayIndexLast++;
if(g_sprayMapCount != g_maxMapSprays)
g_sprayMapCount++;
}
TE_SendToAll();
EmitSoundToClient(iClient, SOUND_SPRAY_REL, iClient, SNDCHAN_AUTO, SNDLEVEL_NORMAL, SND_NOFLAGS, 0.4);
g_iLastSprayed[iClient] = iTime;
return Plugin_Handled;
}