Помогите разобраться с уроном.

Тема в разделе "Программирование / Скриптинг", создана пользователем WeSTMan, 6 ноя 2013.

  1. WeSTMan

    WeSTMan *Просто я - есть я*

    Сообщения:
    214
    Симпатии:
    39
    PHP:
    #pragma semicolon 1 

    #include <sdkhooks> 
    #include <sourcemod> 
    #include <cstrike> 

    public OnPluginStart()


        
    RegConsoleCmd("vipmenu"Vip_Command);


    public 
    Action:OnDamage(victim, &attacker, &inflictor, &Float:damage, &damagetype

        if (
    attacker && attacker MaxClients && !IsFakeClient(attacker))  
        { 
            
    damage += 50
            return 
    Plugin_Changed
        } 
        return 
    Plugin_Continue
    }  
    public 
    Action:OnDamageStandart(victim, &attacker, &inflictor, &Float:damage, &damagetype

        if (
    attacker && attacker MaxClients && !IsFakeClient(attacker))  
        { 
            
    damage += 0
            return 
    Plugin_Changed
        } 
        return 
    Plugin_Continue
    }  


    public 
    Action:Vip_Command(clientargs)
    {
        
    ShowVipMenu(client);
        return 
    Plugin_Handled;
    }

    ShowVipMenu(client)
    {
        new 
    Handle:hMenu CreateMenu(Handle_VipMenu);
        
    SetMenuTitle(hMenu"Vip меню: \n \n");
        
    AddMenuItem(hMenuNULL_STRING"Меню урока");
        
    DisplayMenu(hMenuclientMENU_TIME_FOREVER);
    }

    public 
    Handle_VipMenu(Handle:hMenuMenuAction:actionclientiSlot )
    {
        if ( 
    action == MenuAction_Select )
        {
            if ( 
    iSlot == )
            {
                
    ShowVipDamage(client);
            }
        }
        
        else if ( 
    action == MenuAction_End )
        {
            
    CloseHandle(hMenu);
        }
    }

    ShowVipDamage(client)
    {
        new 
    Handle:hMenu CreateMenu(Handle_VipDamageMenu);
        
    SetMenuTitle(hMenu"Меню урона: \n \n");
        
    AddMenuItem(hMenuNULL_STRING"Стандартный урон");
        
    AddMenuItem(hMenuNULL_STRING"Увеличенный на 50ДМГ");
        
    DisplayMenu(hMenuclientMENU_TIME_FOREVER);
    }

    public 
    Handle_VipDamageMenu(Handle:hMenuMenuAction:actionclientiSlot )
    {
        if ( 
    action == MenuAction_Select )
        {
            if ( 
    iSlot == )
            {
                
    SDKHook(clientSDKHook_OnTakeDamageOnDamageStandart); 
            }
            
            else if ( 
    iSlot == )
            {
                
    SDKHook(clientSDKHook_OnTakeDamageOnDamage); 
            }
        }
        
        else if ( 
    action == MenuAction_End )
        {
            
    CloseHandle(hMenu);
        }
    }
    Как сделать так, чтобы тот, кто нажал на увеличенный дамаг, только у него прибавилось 50ДМГ
     
  2. The End Is Near...

    The End Is Near... Russian Roulette

    Сообщения:
    893
    Симпатии:
    659
    Попробуй
    PHP:
    #include <sourcemod>
    #include <sdkhooks>

    new Handle:hMenu INVALID_HANDLE;

    new 
    bool:IncreasedDamage[MAXPLAYERS 1] = {false, ...};

    public 
    OnPluginStart()
    {
        
    RegConsoleCmd("vipmenu"RCC_VipMenu);

        
    hMenu CreateMenu(MenuHandler);
        
    SetMenuTitle(hMenu"Урон:");

        
    AddMenuItem(hMenu"0""Стандартный");
        
    AddMenuItem(hMenu"1""Увеличенный");
    }

    public 
    OnClientPutInServer(client)
    {
        if (!
    IsFakeClient(client))
        {
            if (
    IncreasedDamage[client])
            {
                
    IncreasedDamage[client] = false;
            }

            
    SDKHook(clientSDKHook_OnTakeDamageSDK_OnTakeDamage);
        }
    }

    public 
    Action:SDK_OnTakeDamage(victim, &attacker, &inflictor, &Float:damage, &damagetype)
    {
        if (
    IncreasedDamage[attacker])
        {
            
    damage += 50.0;

            return 
    Plugin_Changed;
        }

        return 
    Plugin_Continue;
    }

    public 
    Action:RCC_VipMenu(clientargs)
    {
        if (
    client 0)
        {
            
    DisplayMenu(hMenuclientMENU_TIME_FOREVER);
        }

        return 
    Plugin_Handled
    }

    public 
    MenuHandler(Handle:menuMenuAction:actionparam1param2)
    {
        switch (
    action)
        {
            case 
    MenuAction_Select:
            {
                
    IncreasedDamage[param1] = param2 == false true;
            }
        }
    }
     
    CTe6eJIeK_vRn нравится это.
  3. WeSTMan

    WeSTMan *Просто я - есть я*

    Сообщения:
    214
    Симпатии:
    39
    Спасибо))
     
    Последнее редактирование: 6 ноя 2013