Убийство Дымовой гранатой

Тема в разделе "Запросы", создана пользователем IIcux, 5 дек 2015.

  1. IIcux

    IIcux

    Сообщения:
    35
    Симпатии:
    2
    Приветствую всех, господа! Нужна помощь в поиске или написании плагина. Его смысл такой: При попадании в игрока дымовой гранатой = смерть.
     
  2. AlmazON

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

    Сообщения:
    4.512
    Симпатии:
    1.964
    Просто убить или ещё фраг засчитать?
     
  3. IIcux

    IIcux

    Сообщения:
    35
    Симпатии:
    2
    Было бы здорово если еще и фраг за это засчитывался!
     
  4. Danyas

    Danyas Спасибо, браток © yand3xmail Модератор

    Сообщения:
    1.718
    Симпатии:
    455
    Как вариант:
    OnTakeDamage в sdkhooks
    if (damage == smokenade) damage = 100;
     
  5. R1KO

    R1KO Супер-модератор

    Сообщения:
    5.975
    Симпатии:
    2.981
    в OnEntityCreated если это дымка - хук он тач. И если косается игрока -> создать эвент смерти.
    Ну это на случай если при просто попадании в игрока не снимает 1 хп. Если же снимает то в OnTakeDamage проверять inflictor или weapon, не помню уже че там.
     
  6. IIcux

    IIcux

    Сообщения:
    35
    Симпатии:
    2
    Есть плагин Hegrenade Damage
    #pragma semicolon 1
    #include <sdkhooks>

    public Plugin:myinfo =
    {
    name = "Hegrenade Damage",
    author = "GoDtm666",
    description = "Hegrenade Damage",
    version = "1.0.0",
    url = "http://www.SourceTM.com/"
    }

    new Handle:g_hCvarDamage = INVALID_HANDLE;
    new Float:g_fDamage;

    public OnPluginStart()
    {
    g_hCvarDamage = CreateConVar("sv_hegrenade_damage", "1.12", "На сколько увеличить урон от осколочной гранаты.", FCVAR_PLUGIN|FCVAR_NOTIFY|FCVAR_DONTRECORD, true, 0.0, true, 10.0);
    OnSettingsChanged(g_hCvarDamage, "", "");
    HookConVarChange(g_hCvarDamage, OnSettingsChanged);
    }

    public OnSettingsChanged(Handle:convar, const String:oldValue[], const String:newValue[])
    {
    g_fDamage = GetConVarFloat(convar);
    }

    public OnClientPutInServer(client)
    {
    SDKHook(client, SDKHook_OnTakeDamage, OnTakeDamage);
    }

    public OnClientDisconnect_Post(client)
    {
    SDKUnhook(client, SDKHook_OnTakeDamage, OnTakeDamage);
    }

    public Action:OnTakeDamage(victim, &attacker, &inflictor, &Float:damage, &damagetype, &weapon, Float:damageForce[3], Float:damagePosition[3])
    {
    decl String:sWeapon[32];
    GetEdictClassname(inflictor, sWeapon, sizeof(sWeapon));
    if (StrEqual(sWeapon, "hegrenade_projectile", false))
    {
    damage *= g_fDamage;
    return Plugin_Changed;
    }
    return Plugin_Continue;
    }

    Как его можно исправить под дымовую гранату
     
  7. R1KO

    R1KO Супер-модератор

    Сообщения:
    5.975
    Симпатии:
    2.981
    IIcux, если просто кинуть в игрока дымовую 1 хп снимает?
     
  8. IIcux

    IIcux

    Сообщения:
    35
    Симпатии:
    2
    Не снимается
     
  9. R1KO

    R1KO Супер-модератор

    Сообщения:
    5.975
    Симпатии:
    2.981
    IIcux, тогда как с греной не выйдет.
     
  10. FORYOU145

    FORYOU145

    Сообщения:
    37
    Симпатии:
    10
    R1KO, снимает.
     
  11. AlmazON

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

    Сообщения:
    4.512
    Симпатии:
    1.964
    Тогда:
    PHP:
    public OnClientPutInServer(client)
     {
     
    SDKHook(clientSDKHook_OnTakeDamageOnTakeDamage);
     }

     public 
    OnClientDisconnect_Post(client)
     {
     
    SDKUnhook(clientSDKHook_OnTakeDamageOnTakeDamage);
     }

     public 
    Action:OnTakeDamage(victim, &attacker, &inflictor, &Float:damage, &damagetype, &weaponFloat:damageForce[3], Float:damagePosition[3])
     {
     
    decl String:sWeapon[32];
     
    GetEdictClassname(inflictorsWeaponsizeof(sWeapon));
     if (
    StrEqual(sWeapon"smokegrenade_projectile"false))
     {
     
    damage 150;
     return 
    Plugin_Changed;
     }
     return 
    Plugin_Continue;
     }
    Должно отнять 150.