View Single Post
paulo_crash
AlliedModders Donor
Join Date: May 2016
Location: Brazil
Old 06-17-2021 , 16:39   Re: Help with bind +USE for sparys
Reply With Quote #2

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(iClientargs)
{    
    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(iClientfClientEyePosition);

    
decl Float:fClientEyeViewPoint[3];
    
GetPlayerEyeViewPoint(iClientfClientEyeViewPoint);

    
decl Float:fVector[3];
    
MakeVectorFromPoints(fClientEyeViewPointfClientEyePositionfVector);

    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=1i<g_sprayCount; ++i)
            if(
HasFlag(iClientg_sprays[i][flag]))
                
sprays[spraysCount++] = i;
            
        
TE_SetupBSPDecal(fClientEyeViewPointg_sprays[sprays[GetRandomInt(0spraysCount-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(fClientEyeViewPointg_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(iClientSOUND_SPRAY_RELiClientSNDCHAN_AUTOSNDLEVEL_NORMALSND_NOFLAGS0.4);

    
g_iLastSprayed[iClient] = iTime;
    return 
Plugin_Handled;

paulo_crash is offline