[ZR] Ядовитая граната

.330d

Участник
Сообщения
257
Реакции
71
Выкладываю в паблик свой старый плагин для соурс. Когда кидаешь дымовуху появляется противогаз который крутиться и наносит урон зомбакам. Пользуйтесь на здоровье)
C-подобный:
#pragma semicolon 1

#include <sourcemod>
#include <sdktools>
#include <sdkhooks>
#include <zombiereloaded>

#define SLOW_SMOKE_EFFECT "models/props/slow/smoke_effect/slow_smoke_effect.mdl"

public Plugin:myinfo =
{
    name = "ZR Poison Nade",
    author = "POMKA",
    description = "Poison Nade for Zombie mod",
    version = "1.0",
    url = "http://IbizaGaming.ru/"
};

new Handle:g_hSmokeGrenades;

new Handle:g_hCVSeconds, Handle:g_hCVDamage, Handle:g_hCVSmokeTime, Handle:g_hCVEnable, Handle:g_hCVDistance;

new bool:g_bEnable;

public OnPluginStart()
{
    g_hCVEnable = CreateConVar("sm_poisonnade_enable", "1", "1 - enable, 0 - disable plugin",  _, true, 0.0, true, 1.0);
    g_hCVDamage = CreateConVar("sm_poisonnade_damage", "1", "How much damage should we deal to the players in the smoke?", FCVAR_PLUGIN, true, 0.0);
    g_hCVSeconds = CreateConVar("sm_poisonname_seconds", "1", "Deal damage every x seconds.", FCVAR_PLUGIN, true, 1.0);
    g_hCVSmokeTime = CreateConVar("sm_poisonnade_smoketime", "25", "Smoke time in seconds");
    g_hCVDistance = CreateConVar("sm_poisonname_distance", "220", "Distance of take damage");
   
    g_bEnable = GetConVarBool(g_hCVEnable);
    HookConVarChange(g_hCVEnable, OnConVarChange);
   
    g_hSmokeGrenades = CreateArray();
   
    HookEvent("player_death", Event_PlayerDeath, EventHookMode_Pre);
    HookEvent("round_start", Event_RoundStart);
   
    AutoExecConfig(true, "zr_poison_nade");
}

public OnMapStart()
{
    AddFileToDownloadsTable(SLOW_SMOKE_EFFECT);
    AddFileToDownloadsTable("models/props/slow/smoke_effect/slow_smoke_effect.vvd");
    AddFileToDownloadsTable("models/props/slow/smoke_effect/slow_smoke_effect.dx80.vtx");
    AddFileToDownloadsTable("models/props/slow/smoke_effect/slow_smoke_effect.dx90.vtx");
    AddFileToDownloadsTable("models/props/slow/smoke_effect/slow_smoke_effect.sw.vtx");
    AddFileToDownloadsTable("models/props/slow/smoke_effect/slow_smoke_effect.xbox.vtx");
   
    AddFileToDownloadsTable("materials/models/props/slow/smoke_effect/slow_smoke_effect.vmt");
    AddFileToDownloadsTable("materials/models/props/slow/smoke_effect/slow_smoke_effect.vtf");
    AddFileToDownloadsTable("materials/models/props/slow/smoke_effect/slow_smoke_effect_2.vmt");
    AddFileToDownloadsTable("materials/models/props/slow/smoke_effect/slow_smoke_effect_2.vtf");
   
    PrecacheModel(SLOW_SMOKE_EFFECT, false);
}

public OnMapEnd()
{
    if(!g_bEnable)
        return;
   
    new iSize = GetArraySize(g_hSmokeGrenades);
    new Handle:hGrenade, Handle:hTimer;
    for(new i=0; i<iSize; i++)
    {
        hGrenade = GetArrayCell(g_hSmokeGrenades, i);
        if(GetArraySize(hGrenade) > 3)
        {
            hTimer = GetArrayCell(hGrenade, 3);
            KillTimer(hTimer);
            hTimer = GetArrayCell(hGrenade, 4);
            if(hTimer != INVALID_HANDLE)
                KillTimer(hTimer);
        }
        CloseHandle(hGrenade);
    }
    ClearArray(g_hSmokeGrenades);
}

public OnConVarChange(Handle:convar, const String:oldValue[], const String:newValue[])
{
    if(convar == g_hCVEnable)
        g_bEnable = GetConVarBool(g_hCVEnable);
}

public Event_RoundStart(Handle:event, const String:name[], bool:dontBroadcast)
{
    if(!g_bEnable)
        return;
   
    new iSize = GetArraySize(g_hSmokeGrenades);
    new Handle:hGrenade, Handle:hTimer;
    for(new i=0; i<iSize; i++)
    {
        hGrenade = GetArrayCell(g_hSmokeGrenades, i);
        if(GetArraySize(hGrenade) > 3)
        {
            hTimer = GetArrayCell(hGrenade, 3);
            KillTimer(hTimer);
            hTimer = GetArrayCell(hGrenade, 4);
            if(hTimer != INVALID_HANDLE)
                KillTimer(hTimer);
        }
        CloseHandle(hGrenade);
    }
    ClearArray(g_hSmokeGrenades);
}

public Action:Event_PlayerDeath(Handle:event, const String:name[], bool:dontBroadcast)
{
    if(!g_bEnable)
        return Plugin_Continue;
   
    decl String:sWeapon[64];
    GetEventString(event, "weapon", sWeapon, sizeof(sWeapon));
    if(StrEqual(sWeapon, "env_smokestack"))
    {
        SetEventString(event, "weapon", "flashbang");
    }
    return Plugin_Continue;
}

public OnEntityCreated(entity, const String:classname[])
{
    if(StrEqual(classname, "smokegrenade_projectile", false))
        SDKHook(entity, SDKHook_Spawn, Hook_OnSpawnProjectile);
   
    if(StrEqual(classname, "env_particlesmokegrenade", false))
        SDKHook(entity, SDKHook_Spawn, Hook_OnSpawnParticles);
}

public Hook_OnSpawnProjectile(entity)
{
    if(!g_bEnable)
        return;
   
    new client = GetEntPropEnt(entity, Prop_Send, "m_hOwnerEntity");
   
    if(!IsClientInGame(client))
        return;
   
    new Handle:hGrenade = CreateArray();
    PushArrayCell(hGrenade, client);
    PushArrayCell(hGrenade, entity);
    PushArrayCell(g_hSmokeGrenades, hGrenade);
}

public Hook_OnSpawnParticles(entity)
{
    if(!g_bEnable)
        return;
   
    new Float:fOrigin[3], Float:fOriginSmoke[3];
    GetEntPropVector(entity, Prop_Send, "m_vecOrigin", fOrigin);
   
    new iSize = GetArraySize(g_hSmokeGrenades);
    new Handle:hGrenade, iGrenade;
    for(new i = 0; i < iSize; i++)
    {
        hGrenade = GetArrayCell(g_hSmokeGrenades, i);
        iGrenade = GetArrayCell(hGrenade, 1);
        GetEntPropVector(iGrenade, Prop_Send, "m_vecOrigin", fOriginSmoke);
       
        if(fOrigin[0] == fOriginSmoke[0] && fOrigin[1] == fOriginSmoke[1] && fOrigin[2] == fOriginSmoke[2])
        {
            AcceptEntityInput(entity, "Kill");
           
            new SmokeEntity = CreateEntityByName("env_smokestack");
            DispatchKeyValue(SmokeEntity, "SmokeMaterial", "particle/particle_smokegrenade.vmt");
            DispatchKeyValue(SmokeEntity, "basespread", "30");
            DispatchKeyValue(SmokeEntity, "spreadspeed", "5");
            DispatchKeyValue(SmokeEntity, "speed", "5");
            DispatchKeyValue(SmokeEntity, "startsize", "100");
            DispatchKeyValue(SmokeEntity, "endsize", "100");
            DispatchKeyValue(SmokeEntity, "rate", "5");
            DispatchKeyValue(SmokeEntity, "jetlength", "30");
            DispatchKeyValue(SmokeEntity, "renderamt", "200");
            DispatchKeyValue(SmokeEntity, "Translucency", "150");
            DispatchKeyValue(SmokeEntity, "rendercolor", "124 252 0");
            DispatchSpawn(SmokeEntity);
            TeleportEntity(SmokeEntity, fOrigin, NULL_VECTOR, NULL_VECTOR);
            AcceptEntityInput(SmokeEntity, "TurnOn");
            PushArrayCell(hGrenade, SmokeEntity);
           
            new Handle:hTimer = CreateTimer(GetConVarFloat(g_hCVSmokeTime), Timer_RemoveSmoke, SmokeEntity, TIMER_FLAG_NO_MAPCHANGE);
            PushArrayCell(hGrenade, hTimer);
           
            new Handle:hTimer2 = INVALID_HANDLE;
            hTimer2 = CreateTimer(GetConVarFloat(g_hCVSeconds), Timer_CheckDamage, EntIndexToEntRef(SmokeEntity), TIMER_FLAG_NO_MAPCHANGE|TIMER_REPEAT);
            PushArrayCell(hGrenade, hTimer2);
           
            new slow_smoke_effect_ent = CreateEntityByName("prop_dynamic");
            DispatchKeyValueVector(slow_smoke_effect_ent, "origin", fOrigin);
            DispatchKeyValue(slow_smoke_effect_ent, "model", SLOW_SMOKE_EFFECT);
            AcceptEntityInput(slow_smoke_effect_ent, "DisableCollision");
            DispatchSpawn(slow_smoke_effect_ent);
            SetEntityMoveType(slow_smoke_effect_ent, MOVETYPE_NONE);
            TeleportEntity(slow_smoke_effect_ent, fOrigin, NULL_VECTOR, NULL_VECTOR);
            PushArrayCell(hGrenade, slow_smoke_effect_ent);
           
            break;
        }
    }
}

public Action:Timer_RemoveSmoke(Handle:timer, any:entity)
{
    new iSize = GetArraySize(g_hSmokeGrenades);
    new Handle:hGrenade, iGrenade = -1;
    for(new i=0; i<iSize; i++)
    {
        hGrenade = GetArrayCell(g_hSmokeGrenades, i);
        if(GetArraySize(hGrenade) > 3)
        {
            iGrenade = GetArrayCell(hGrenade, 2);
            if(iGrenade == entity)
            {
                AcceptEntityInput(entity, "TurnOff");
                AcceptEntityInput(entity, "Kill");
               
                new Handle:hTimer = GetArrayCell(hGrenade, 4);
               
                if(hTimer != INVALID_HANDLE)
                    KillTimer(hTimer);
               
                new slow_smoke_effect_ent = GetArrayCell(hGrenade, 5);
                if(IsValidEdict(slow_smoke_effect_ent))
                    AcceptEntityInput(slow_smoke_effect_ent, "Kill");
               
                RemoveFromArray(g_hSmokeGrenades, i);
                break;
            }
        }
    }
   
    return Plugin_Stop;
}

public Action:Timer_CheckDamage(Handle:timer, any:entityref)
{
    new entity = EntRefToEntIndex(entityref);
    if(entity == INVALID_ENT_REFERENCE)
        return Plugin_Continue;
   
    new iSize = GetArraySize(g_hSmokeGrenades);
    new Handle:hGrenade, iGrenade = -1;
    for(new i=0; i<iSize; i++)
    {
        hGrenade = GetArrayCell(g_hSmokeGrenades, i);
        if(GetArraySize(hGrenade) > 3)
        {
            iGrenade = GetArrayCell(hGrenade, 2);
            if(iGrenade == entity)
                break;
        }
    }
   
    if(iGrenade == -1)
        return Plugin_Continue;
   
    new client = GetArrayCell(hGrenade, 0);
    if(!client || !IsClientInGame(client) || !IsPlayerAlive(client))
        return Plugin_Continue;
   
    if(ZR_IsClientZombie(client))
    {
        RemoveSmoke(entity);
        return Plugin_Continue;
    }
   
    new Float:fSmokeOrigin[3], Float:fOrigin[3];
    GetEntPropVector(iGrenade, Prop_Send, "m_vecOrigin", fSmokeOrigin);
   
    for(new i=1;i<=MaxClients;i++)
    {
        if(IsClientInGame(i) && IsPlayerAlive(i) && ZR_IsClientZombie(i))
        {
            GetClientAbsOrigin(i, fOrigin);
            if(GetVectorDistance(fSmokeOrigin, fOrigin) <= GetConVarInt(g_hCVDistance))
                SDKHooks_TakeDamage(i, iGrenade, client, GetConVarFloat(g_hCVDamage), DMG_POISON, -1, NULL_VECTOR, fSmokeOrigin);
        }
    }
   
    return Plugin_Continue;
}

RemoveSmoke(entity)
{
    new iSize = GetArraySize(g_hSmokeGrenades);
    new Handle:hGrenade, iGrenade = -1;
    for(new i=0; i<iSize; i++)
    {
        hGrenade = GetArrayCell(g_hSmokeGrenades, i);
        if(GetArraySize(hGrenade) > 3)
        {
            iGrenade = GetArrayCell(hGrenade, 2);
            if(iGrenade == entity)
            {
                AcceptEntityInput(entity, "TurnOff");
                AcceptEntityInput(entity, "Kill");
               
                new Handle:hTimer = GetArrayCell(hGrenade, 4);
               
                if(hTimer != INVALID_HANDLE)
                    KillTimer(hTimer);
               
                new slow_smoke_effect_ent = GetArrayCell(hGrenade, 5);
                if(IsValidEdict(slow_smoke_effect_ent))
                    AcceptEntityInput(slow_smoke_effect_ent, "Kill");
               
                RemoveFromArray(g_hSmokeGrenades, i);
                break;
            }
        }
    }
}
 

kilroy

:clown:
Сообщения
1,065
Реакции
606
  • Команда форума
  • #2
В ресурсы лучше бы выложил, чтобы не потерялось :wink:
 

Kewn

Участник
Сообщения
321
Реакции
61
Выкладываю в паблик свой старый плагин для соурс. Когда кидаешь дымовуху появляется противогаз который крутиться и наносит урон зомбакам. Пользуйтесь на здоровье)
C-подобный:
#pragma semicolon 1

#include <sourcemod>
#include <sdktools>
#include <sdkhooks>
#include <zombiereloaded>

#define SLOW_SMOKE_EFFECT "models/props/slow/smoke_effect/slow_smoke_effect.mdl"

public Plugin:myinfo =
{
    name = "ZR Poison Nade",
    author = "POMKA",
    description = "Poison Nade for Zombie mod",
    version = "1.0",
    url = "http://IbizaGaming.ru/"
};

new Handle:g_hSmokeGrenades;

new Handle:g_hCVSeconds, Handle:g_hCVDamage, Handle:g_hCVSmokeTime, Handle:g_hCVEnable, Handle:g_hCVDistance;

new bool:g_bEnable;

public OnPluginStart()
{
    g_hCVEnable = CreateConVar("sm_poisonnade_enable", "1", "1 - enable, 0 - disable plugin",  _, true, 0.0, true, 1.0);
    g_hCVDamage = CreateConVar("sm_poisonnade_damage", "1", "How much damage should we deal to the players in the smoke?", FCVAR_PLUGIN, true, 0.0);
    g_hCVSeconds = CreateConVar("sm_poisonname_seconds", "1", "Deal damage every x seconds.", FCVAR_PLUGIN, true, 1.0);
    g_hCVSmokeTime = CreateConVar("sm_poisonnade_smoketime", "25", "Smoke time in seconds");
    g_hCVDistance = CreateConVar("sm_poisonname_distance", "220", "Distance of take damage");
  
    g_bEnable = GetConVarBool(g_hCVEnable);
    HookConVarChange(g_hCVEnable, OnConVarChange);
  
    g_hSmokeGrenades = CreateArray();
  
    HookEvent("player_death", Event_PlayerDeath, EventHookMode_Pre);
    HookEvent("round_start", Event_RoundStart);
  
    AutoExecConfig(true, "zr_poison_nade");
}

public OnMapStart()
{
    AddFileToDownloadsTable(SLOW_SMOKE_EFFECT);
    AddFileToDownloadsTable("models/props/slow/smoke_effect/slow_smoke_effect.vvd");
    AddFileToDownloadsTable("models/props/slow/smoke_effect/slow_smoke_effect.dx80.vtx");
    AddFileToDownloadsTable("models/props/slow/smoke_effect/slow_smoke_effect.dx90.vtx");
    AddFileToDownloadsTable("models/props/slow/smoke_effect/slow_smoke_effect.sw.vtx");
    AddFileToDownloadsTable("models/props/slow/smoke_effect/slow_smoke_effect.xbox.vtx");
  
    AddFileToDownloadsTable("materials/models/props/slow/smoke_effect/slow_smoke_effect.vmt");
    AddFileToDownloadsTable("materials/models/props/slow/smoke_effect/slow_smoke_effect.vtf");
    AddFileToDownloadsTable("materials/models/props/slow/smoke_effect/slow_smoke_effect_2.vmt");
    AddFileToDownloadsTable("materials/models/props/slow/smoke_effect/slow_smoke_effect_2.vtf");
  
    PrecacheModel(SLOW_SMOKE_EFFECT, false);
}

public OnMapEnd()
{
    if(!g_bEnable)
        return;
  
    new iSize = GetArraySize(g_hSmokeGrenades);
    new Handle:hGrenade, Handle:hTimer;
    for(new i=0; i<iSize; i++)
    {
        hGrenade = GetArrayCell(g_hSmokeGrenades, i);
        if(GetArraySize(hGrenade) > 3)
        {
            hTimer = GetArrayCell(hGrenade, 3);
            KillTimer(hTimer);
            hTimer = GetArrayCell(hGrenade, 4);
            if(hTimer != INVALID_HANDLE)
                KillTimer(hTimer);
        }
        CloseHandle(hGrenade);
    }
    ClearArray(g_hSmokeGrenades);
}

public OnConVarChange(Handle:convar, const String:oldValue[], const String:newValue[])
{
    if(convar == g_hCVEnable)
        g_bEnable = GetConVarBool(g_hCVEnable);
}

public Event_RoundStart(Handle:event, const String:name[], bool:dontBroadcast)
{
    if(!g_bEnable)
        return;
  
    new iSize = GetArraySize(g_hSmokeGrenades);
    new Handle:hGrenade, Handle:hTimer;
    for(new i=0; i<iSize; i++)
    {
        hGrenade = GetArrayCell(g_hSmokeGrenades, i);
        if(GetArraySize(hGrenade) > 3)
        {
            hTimer = GetArrayCell(hGrenade, 3);
            KillTimer(hTimer);
            hTimer = GetArrayCell(hGrenade, 4);
            if(hTimer != INVALID_HANDLE)
                KillTimer(hTimer);
        }
        CloseHandle(hGrenade);
    }
    ClearArray(g_hSmokeGrenades);
}

public Action:Event_PlayerDeath(Handle:event, const String:name[], bool:dontBroadcast)
{
    if(!g_bEnable)
        return Plugin_Continue;
  
    decl String:sWeapon[64];
    GetEventString(event, "weapon", sWeapon, sizeof(sWeapon));
    if(StrEqual(sWeapon, "env_smokestack"))
    {
        SetEventString(event, "weapon", "flashbang");
    }
    return Plugin_Continue;
}

public OnEntityCreated(entity, const String:classname[])
{
    if(StrEqual(classname, "smokegrenade_projectile", false))
        SDKHook(entity, SDKHook_Spawn, Hook_OnSpawnProjectile);
  
    if(StrEqual(classname, "env_particlesmokegrenade", false))
        SDKHook(entity, SDKHook_Spawn, Hook_OnSpawnParticles);
}

public Hook_OnSpawnProjectile(entity)
{
    if(!g_bEnable)
        return;
  
    new client = GetEntPropEnt(entity, Prop_Send, "m_hOwnerEntity");
  
    if(!IsClientInGame(client))
        return;
  
    new Handle:hGrenade = CreateArray();
    PushArrayCell(hGrenade, client);
    PushArrayCell(hGrenade, entity);
    PushArrayCell(g_hSmokeGrenades, hGrenade);
}

public Hook_OnSpawnParticles(entity)
{
    if(!g_bEnable)
        return;
  
    new Float:fOrigin[3], Float:fOriginSmoke[3];
    GetEntPropVector(entity, Prop_Send, "m_vecOrigin", fOrigin);
  
    new iSize = GetArraySize(g_hSmokeGrenades);
    new Handle:hGrenade, iGrenade;
    for(new i = 0; i < iSize; i++)
    {
        hGrenade = GetArrayCell(g_hSmokeGrenades, i);
        iGrenade = GetArrayCell(hGrenade, 1);
        GetEntPropVector(iGrenade, Prop_Send, "m_vecOrigin", fOriginSmoke);
      
        if(fOrigin[0] == fOriginSmoke[0] && fOrigin[1] == fOriginSmoke[1] && fOrigin[2] == fOriginSmoke[2])
        {
            AcceptEntityInput(entity, "Kill");
          
            new SmokeEntity = CreateEntityByName("env_smokestack");
            DispatchKeyValue(SmokeEntity, "SmokeMaterial", "particle/particle_smokegrenade.vmt");
            DispatchKeyValue(SmokeEntity, "basespread", "30");
            DispatchKeyValue(SmokeEntity, "spreadspeed", "5");
            DispatchKeyValue(SmokeEntity, "speed", "5");
            DispatchKeyValue(SmokeEntity, "startsize", "100");
            DispatchKeyValue(SmokeEntity, "endsize", "100");
            DispatchKeyValue(SmokeEntity, "rate", "5");
            DispatchKeyValue(SmokeEntity, "jetlength", "30");
            DispatchKeyValue(SmokeEntity, "renderamt", "200");
            DispatchKeyValue(SmokeEntity, "Translucency", "150");
            DispatchKeyValue(SmokeEntity, "rendercolor", "124 252 0");
            DispatchSpawn(SmokeEntity);
            TeleportEntity(SmokeEntity, fOrigin, NULL_VECTOR, NULL_VECTOR);
            AcceptEntityInput(SmokeEntity, "TurnOn");
            PushArrayCell(hGrenade, SmokeEntity);
          
            new Handle:hTimer = CreateTimer(GetConVarFloat(g_hCVSmokeTime), Timer_RemoveSmoke, SmokeEntity, TIMER_FLAG_NO_MAPCHANGE);
            PushArrayCell(hGrenade, hTimer);
          
            new Handle:hTimer2 = INVALID_HANDLE;
            hTimer2 = CreateTimer(GetConVarFloat(g_hCVSeconds), Timer_CheckDamage, EntIndexToEntRef(SmokeEntity), TIMER_FLAG_NO_MAPCHANGE|TIMER_REPEAT);
            PushArrayCell(hGrenade, hTimer2);
          
            new slow_smoke_effect_ent = CreateEntityByName("prop_dynamic");
            DispatchKeyValueVector(slow_smoke_effect_ent, "origin", fOrigin);
            DispatchKeyValue(slow_smoke_effect_ent, "model", SLOW_SMOKE_EFFECT);
            AcceptEntityInput(slow_smoke_effect_ent, "DisableCollision");
            DispatchSpawn(slow_smoke_effect_ent);
            SetEntityMoveType(slow_smoke_effect_ent, MOVETYPE_NONE);
            TeleportEntity(slow_smoke_effect_ent, fOrigin, NULL_VECTOR, NULL_VECTOR);
            PushArrayCell(hGrenade, slow_smoke_effect_ent);
          
            break;
        }
    }
}

public Action:Timer_RemoveSmoke(Handle:timer, any:entity)
{
    new iSize = GetArraySize(g_hSmokeGrenades);
    new Handle:hGrenade, iGrenade = -1;
    for(new i=0; i<iSize; i++)
    {
        hGrenade = GetArrayCell(g_hSmokeGrenades, i);
        if(GetArraySize(hGrenade) > 3)
        {
            iGrenade = GetArrayCell(hGrenade, 2);
            if(iGrenade == entity)
            {
                AcceptEntityInput(entity, "TurnOff");
                AcceptEntityInput(entity, "Kill");
              
                new Handle:hTimer = GetArrayCell(hGrenade, 4);
              
                if(hTimer != INVALID_HANDLE)
                    KillTimer(hTimer);
              
                new slow_smoke_effect_ent = GetArrayCell(hGrenade, 5);
                if(IsValidEdict(slow_smoke_effect_ent))
                    AcceptEntityInput(slow_smoke_effect_ent, "Kill");
              
                RemoveFromArray(g_hSmokeGrenades, i);
                break;
            }
        }
    }
  
    return Plugin_Stop;
}

public Action:Timer_CheckDamage(Handle:timer, any:entityref)
{
    new entity = EntRefToEntIndex(entityref);
    if(entity == INVALID_ENT_REFERENCE)
        return Plugin_Continue;
  
    new iSize = GetArraySize(g_hSmokeGrenades);
    new Handle:hGrenade, iGrenade = -1;
    for(new i=0; i<iSize; i++)
    {
        hGrenade = GetArrayCell(g_hSmokeGrenades, i);
        if(GetArraySize(hGrenade) > 3)
        {
            iGrenade = GetArrayCell(hGrenade, 2);
            if(iGrenade == entity)
                break;
        }
    }
  
    if(iGrenade == -1)
        return Plugin_Continue;
  
    new client = GetArrayCell(hGrenade, 0);
    if(!client || !IsClientInGame(client) || !IsPlayerAlive(client))
        return Plugin_Continue;
  
    if(ZR_IsClientZombie(client))
    {
        RemoveSmoke(entity);
        return Plugin_Continue;
    }
  
    new Float:fSmokeOrigin[3], Float:fOrigin[3];
    GetEntPropVector(iGrenade, Prop_Send, "m_vecOrigin", fSmokeOrigin);
  
    for(new i=1;i<=MaxClients;i++)
    {
        if(IsClientInGame(i) && IsPlayerAlive(i) && ZR_IsClientZombie(i))
        {
            GetClientAbsOrigin(i, fOrigin);
            if(GetVectorDistance(fSmokeOrigin, fOrigin) <= GetConVarInt(g_hCVDistance))
                SDKHooks_TakeDamage(i, iGrenade, client, GetConVarFloat(g_hCVDamage), DMG_POISON, -1, NULL_VECTOR, fSmokeOrigin);
        }
    }
  
    return Plugin_Continue;
}

RemoveSmoke(entity)
{
    new iSize = GetArraySize(g_hSmokeGrenades);
    new Handle:hGrenade, iGrenade = -1;
    for(new i=0; i<iSize; i++)
    {
        hGrenade = GetArrayCell(g_hSmokeGrenades, i);
        if(GetArraySize(hGrenade) > 3)
        {
            iGrenade = GetArrayCell(hGrenade, 2);
            if(iGrenade == entity)
            {
                AcceptEntityInput(entity, "TurnOff");
                AcceptEntityInput(entity, "Kill");
              
                new Handle:hTimer = GetArrayCell(hGrenade, 4);
              
                if(hTimer != INVALID_HANDLE)
                    KillTimer(hTimer);
              
                new slow_smoke_effect_ent = GetArrayCell(hGrenade, 5);
                if(IsValidEdict(slow_smoke_effect_ent))
                    AcceptEntityInput(slow_smoke_effect_ent, "Kill");
              
                RemoveFromArray(g_hSmokeGrenades, i);
                break;
            }
        }
    }
}

Визуально работает а на деле нет
Line 284, C:\Zombie Reloaded\cstrike\addons\sourcemod\scripting\smoke.sp::Timer_CheckDamage()
L 02/20/2019 - 12:16:27: [SM] Native "SDKHooks_TakeDamage" reported: SDKHooks_TakeDamage is not supported on this engine.
 

Kewn

Участник
Сообщения
321
Реакции
61
на домашним сервере пробовал этот плагин норм работает sm 1.7.3 , ксс90
Думаешь есть вариант переустановить SM?
--- Добавлено позже ---
L 02/20/2019 - 13:38:42: [SM] Native "SDKHooks_TakeDamage" reported: SDKHooks_TakeDamage is not supported on this engine.
L 02/20/2019 - 13:38:42: [SM] Displaying call stack trace for plugin "smoke.smx":
L 02/20/2019 - 13:38:42: [SM] [0] Line 284, C:\Zombie Reloaded\cstrike\addons\sourcemod\scripting\smoke.sp::Timer_CheckDamage()
--- Добавлено позже ---
Я как понял данный натив не поддерживается для Source 34 Native "SDKHooks_TakeDamage" а как это исправить знает может кто?
 
Последнее редактирование:

Хан

Участник
Сообщения
310
Реакции
99
Думаешь есть вариант переустановить SM?
--- Добавлено позже ---
L 02/20/2019 - 13:38:42: [SM] Native "SDKHooks_TakeDamage" reported: SDKHooks_TakeDamage is not supported on this engine.
L 02/20/2019 - 13:38:42: [SM] Displaying call stack trace for plugin "smoke.smx":
L 02/20/2019 - 13:38:42: [SM] [0] Line 284, C:\Zombie Reloaded\cstrike\addons\sourcemod\scripting\smoke.sp::Timer_CheckDamage()
--- Добавлено позже ---
Я как понял данный натив не поддерживается для Source 34 Native "SDKHooks_TakeDamage" а как это исправить знает может кто?
попробуй обновить на этот Тестрование SourceMod версии 1.9.0.6190 для CS:S v34 - Counter-Strike: Source - Форум MyArena.ru
 

gibs

Фитиль народного волненья
Сообщения
722
Реакции
407
Мошенник
Тебе просто нужно заменить урон, который в данном варианте наносится через сдкхукс, на урон через Point_hurt
 

Kewn

Участник
Сообщения
321
Реакции
61
@Kewn, вот здесь написано как это делать: Мины для Zombie сервера
Спасибо конечно) Чет я туплю пздцю че куда хер его знает) попробую разобраться)
--- Добавлено позже ---
@Grey83, слушай а ты можешь мне сделать?? Ну или сколько денег стоить будет?
--- Добавлено позже ---
Спасибо конечно) Чет я туплю пздцю че куда хер его знает) попробую разобраться)
--- Добавлено позже ---
@Grey83, слушай а ты можешь мне сделать?? Ну или сколько денег стоить будет?
А то я вообще не понимаю что к чему( Если бы хоть минимальные знания были бы сделал а так хз че к чему. Сижу как будто на измене хахах
 
Последнее редактирование:
Сверху Снизу