Невидимость , правка плагина

Тема в разделе "Программирование / Скриптинг", создана пользователем B1g, 15 мар 2015.

  1. B1g

    B1g

    Сообщения:
    728
    Симпатии:
    26
    Вот есть готовы код http://hlmod.ru/forum/showpost.php?p=46478&postcount=2 но не пойму как сделать так (я хочу переделать под шоп фроза) чтобы игрок в любое время мог включить невидимость а не только при спавне . Помогите :) И чтобы был таймер )
     
  2. AlmazON

    AlmazON деревянный © yand3xmail

    Сообщения:
    4.566
    Симпатии:
    1.988
    B1g, там итак всё есть, тебе нужно лишь:
    PHP:
    HookEvent("player_spawn"Event_PlayerSpawn);
    меняешь на/добавляешь регистрацию новой команды:
    PHP:
    RegConsoleCmd("sm_inviz"PlayerInvizion);
    а
    PHP:
    public Action:Event_PlayerSpawn(Handle:event, const String:name[], bool:dontBroadcast)
    на
    PHP:
    public Action:PlayerInvizion(clientargs)
    Тебе нужно и при спавне, и командой, что ль?
     
  3. B1g

    B1g

    Сообщения:
    728
    Симпатии:
    26
    Только командой :)
     
  4. AlmazON

    AlmazON деревянный © yand3xmail

    Сообщения:
    4.566
    Симпатии:
    1.988
    Заменяешь и
    PHP:
    new client GetClientOfUserId(GetEventInt(event,"userid"));
    само собой тоже убираешь.
     
  5. B1g

    B1g

    Сообщения:
    728
    Симпатии:
    26
    Спасибо!

    Добавлено через 14 минут
    А подскажи вот , когда игрок включил !инвиз как сделать чтобы ему об этом сообщение написало , но только после написанной команды? А как время истекло тоже писало сообщение?
     
    Последнее редактирование: 15 мар 2015
  6. Scarface_slv

    Scarface_slv

    Сообщения:
    228
    Симпатии:
    47
    PHP:
    #include <sdkhooks> 

    new sm_invisibility_time
    new 
    Handle:g_hTimer[MAXPLAYERS+1];

    public 
    OnPluginStart() 

        
    RegConsoleCmd("sm_inviz"PlayerInvizion);   
        new 
    Handle:Cvar CreateConVar("sm_invisibility_time""5""Invisibility time"); 
        
    HookConVarChange(CvarInvisibilityTime);
        
    sm_invisibility_time GetConVarInt(Cvar);    
        
    CloseHandle(Cvar);   
        
    HookEvent("player_death"Event_PlayerDeath);  


    public 
    InvisibilityTime(Handle:cvar, const String:oldVal[], const String:newVal[]) sm_invisibility_time GetConVarInt(cvar);    

    public 
    Event_PlayerDeath(Handle:event, const String:name[], bool:dontBroadcast)
        
    OnClientDisconnect(GetClientOfUserId(GetEventInt(event"userid")));

    public 
    Action:PlayerInvizion(clientargs)   

        if(
    client && IsPlayerAlive(client) && g_hTimer[client] == INVALID_HANDLE
        { 
            
    PrintToChat(client"Невидимость включена"); 
            
    SetAlpha(client0); 
            
    SDKHook(targetSDKHook_PostThinkPostOnPostThinkPost);
            
    g_hTimer[client] = CreateTimer(float(sm_invisibility_time), removeinvisclient); 
        } 
        return 
    Plugin_Handled


    public 
    Action:removeinvis(Handle:timerany:client

        
    SetAlpha(client255); 
        
    PrintToChat(client"Невидимость отключена"); 
        
    SDKUnhook(clientSDKHook_PostThinkPostOnPostThinkPost);
        
    g_hTimer[client] = INVALID_HANDLE;    


    public 
    OnClientDisconnect(client)
    {
        if(
    g_hTimer[client] != INVALID_HANDLE)
        {
            
    KillTimer(g_hTimer[client]);
            
    g_hTimer[client] = INVALID_HANDLE;    
            
    SDKUnhook(clientSDKHook_PostThinkPostOnPostThinkPost);
        }
    }

    SetAlpha(targetalpha
    {         
        
    SetWeaponsAlpha(target,alpha); 
        
    SetEntityRenderMode(targetRENDER_TRANSCOLOR); 
        
    SetEntityRenderColor(target255255255alpha);     


    SetWeaponsAlpha(targetalpha

        if(
    IsPlayerAlive(target)) 
        { 
            new 
    m_hMyWeapons FindSendPropOffs("CBasePlayer""m_hMyWeapons");     
            for(new 
    0weapon47+= 4
            { 
                
    weapon GetEntDataEnt2(targetm_hMyWeapons i); 
                if(
    weapon > -
                { 
                    
    SetEntityRenderMode(weaponRENDER_TRANSCOLOR); 
                    
    SetEntityRenderColor(weapon255255255alpha); 
                } 
            } 
        } 
    }  

    public 
    OnPostThinkPost(clientSetEntProp(clientProp_Send"m_iAddonBits"0);
     
    Последнее редактирование: 16 мар 2015
  7. -_-Ecarus-_-

    -_-Ecarus-_-

    Сообщения:
    70
    Симпатии:
    0
    Компилируется с ошибкой
     
  8. CrazyHackGUT

    CrazyHackGUT Меня здесь нет

    Сообщения:
    891
    Симпатии:
    549
    PHP:
    #include <sdkhooks> 

    new sm_invisibility_time
    new 
    Handle:g_hTimer[MAXPLAYERS+1];

    public 
    OnPluginStart() 

        
    RegConsoleCmd("sm_inviz"PlayerInvizion);  
        new 
    Handle:Cvar CreateConVar("sm_invisibility_time""5""Invisibility time"); 
        
    HookConVarChange(CvarInvisibilityTime);
        
    sm_invisibility_time GetConVarInt(Cvar);    
        
    CloseHandle(Cvar);  
        
    HookEvent("player_death"Event_PlayerDeath);  


    public 
    InvisibilityTime(Handle:cvar, const String:oldVal[], const String:newVal[]) sm_invisibility_time GetConVarInt(cvar);    

    public 
    Event_PlayerDeath(Handle:event, const String:name[], bool:dontBroadcast)
        
    OnClientDisconnect(GetClientOfUserId(GetEventInt(event"userid")));

    public 
    Action:PlayerInvizion(clientargs)  

        if(
    client && IsPlayerAlive(client) && g_hTimer[client] == INVALID_HANDLE
        { 
            
    PrintToChat(client"Невидимость включена"); 
            
    SetAlpha(client0); 
            
    SDKHook(clientSDKHook_PostThinkPostOnPostThinkPost);
            
    g_hTimer[client] = CreateTimer(float(sm_invisibility_time), removeinvisclient); 
        } 
        return 
    Plugin_Handled


    public 
    Action:removeinvis(Handle:timerany:client

        
    SetAlpha(client255); 
        
    PrintToChat(client"Невидимость отключена"); 
        
    SDKUnhook(clientSDKHook_PostThinkPostOnPostThinkPost);
        
    g_hTimer[client] = INVALID_HANDLE;    


    public 
    OnClientDisconnect(client)
    {
        if(
    g_hTimer[client] != INVALID_HANDLE)
        {
            
    KillTimer(g_hTimer[client]);
            
    g_hTimer[client] = INVALID_HANDLE;    
            
    SDKUnhook(clientSDKHook_PostThinkPostOnPostThinkPost);
        }
    }

    SetAlpha(targetalpha
    {        
        
    SetWeaponsAlpha(target,alpha); 
        
    SetEntityRenderMode(targetRENDER_TRANSCOLOR); 
        
    SetEntityRenderColor(target255255255alpha);    


    SetWeaponsAlpha(targetalpha

        if(
    IsPlayerAlive(target)) 
        { 
            new 
    m_hMyWeapons FindSendPropOffs("CBasePlayer""m_hMyWeapons");    
            for(new 
    0weapon47+= 4
            { 
                
    weapon GetEntDataEnt2(targetm_hMyWeapons i); 
                if(
    weapon > -
                { 
                    
    SetEntityRenderMode(weaponRENDER_TRANSCOLOR); 
                    
    SetEntityRenderColor(weapon255255255alpha); 
                } 
            } 
        } 
    }  

    public 
    OnPostThinkPost(clientSetEntProp(clientProp_Send"m_iAddonBits"0);
     
  9. -_-Ecarus-_-

    -_-Ecarus-_-

    Сообщения:
    70
    Симпатии:
    0
    Как сделать, чтобы он был на 1 раунд?
     
  10. CrazyHackGUT

    CrazyHackGUT Меня здесь нет

    Сообщения:
    891
    Симпатии:
    549
    @-_-Ecarus-_-, то есть чтобы только один раз можно было включить инвиз за всю карту?
    --- Добавлено позже ---
    PHP:
    #include <sdkhooks> 

    new sm_invisibility_time
    new 
    Handle:g_hTimer[MAXPLAYERS+1];
    new 
    bool:activation[MAXPLAYERS+1];

    public 
    OnPluginStart() 

        
    RegConsoleCmd("sm_inviz"PlayerInvizion);  
        new 
    Handle:Cvar CreateConVar("sm_invisibility_time""5""Invisibility time"); 
        
    HookConVarChange(CvarInvisibilityTime);
        
    sm_invisibility_time GetConVarInt(Cvar);    
        
    CloseHandle(Cvar);  
        
    HookEvent("player_death"Event_PlayerDeath);  
    }

    public 
    OnMapStart()
    {
        for (new 
    client 1client<=MAXPLAYERSclient++)
            
    activation[client] = false;
    }

    public 
    InvisibilityTime(Handle:cvar, const String:oldVal[], const String:newVal[]) sm_invisibility_time GetConVarInt(cvar);    

    public 
    Event_PlayerDeath(Handle:event, const String:name[], bool:dontBroadcast)
        
    OnClientDisconnect(GetClientOfUserId(GetEventInt(event"userid")));

    public 
    Action:PlayerInvizion(clientargs)  

        if(
    client && IsPlayerAlive(client) && g_hTimer[client] == INVALID_HANDLE
        { 
            if (
    activation[client]) {
                
    PrintToChat(client"Включить невидимость невозможно: вы уже включали её ранее.");
                return 
    Plugin_Handled;
            }
            
    PrintToChat(client"Невидимость включена"); 
            
    SetAlpha(client0); 
            
    SDKHook(clientSDKHook_PostThinkPostOnPostThinkPost);
            
    g_hTimer[client] = CreateTimer(float(sm_invisibility_time), removeinvisclient); 
            
    activation[client] = true;
        } 
        return 
    Plugin_Handled


    public 
    Action:removeinvis(Handle:timerany:client

        
    SetAlpha(client255); 
        
    PrintToChat(client"Невидимость отключена"); 
        
    SDKUnhook(clientSDKHook_PostThinkPostOnPostThinkPost);
        
    g_hTimer[client] = INVALID_HANDLE;    


    public 
    OnClientDisconnect(client)
    {
        if(
    g_hTimer[client] != INVALID_HANDLE)
        {
            
    activation[client] = false;
            
    KillTimer(g_hTimer[client]);
            
    g_hTimer[client] = INVALID_HANDLE;    
            
    SDKUnhook(clientSDKHook_PostThinkPostOnPostThinkPost);
        }
    }

    SetAlpha(targetalpha
    {        
        
    SetWeaponsAlpha(target,alpha); 
        
    SetEntityRenderMode(targetRENDER_TRANSCOLOR); 
        
    SetEntityRenderColor(target255255255alpha);    


    SetWeaponsAlpha(targetalpha

        if(
    IsPlayerAlive(target)) 
        { 
            new 
    m_hMyWeapons FindSendPropOffs("CBasePlayer""m_hMyWeapons");    
            for(new 
    0weapon47+= 4
            { 
                
    weapon GetEntDataEnt2(targetm_hMyWeapons i); 
                if(
    weapon > -
                { 
                    
    SetEntityRenderMode(weaponRENDER_TRANSCOLOR); 
                    
    SetEntityRenderColor(weapon255255255alpha); 
                } 
            } 
        } 
    }  

    public 
    OnPostThinkPost(clientSetEntProp(clientProp_Send"m_iAddonBits"0);
     
    Последнее редактирование: 1 ноя 2016
  11. -_-Ecarus-_-

    -_-Ecarus-_-

    Сообщения:
    70
    Симпатии:
    0
    Нет. Чтобы было ограничение использования за 1 раунд.
     
  12. CrazyHackGUT

    CrazyHackGUT Меня здесь нет

    Сообщения:
    891
    Симпатии:
    549
  13. -_-Ecarus-_-

    -_-Ecarus-_-

    Сообщения:
    70
    Симпатии:
    0
    CSS v34
    --- Добавлено позже ---
    Помочь то сможете?
    --- Добавлено позже ---
    Помогите сделать лимит на использование команд за раунд
     
    Последнее редактирование: 19 ноя 2016