ZMBIO.RO - Download Resources

Find everything you need for Zombie Mod servers in CS 1.6 – plugins, models, skins, and full addons. All in one place, ready to download and use instantly.

Browse Categories

All CategoriesCounter-Strike 1.6[CS1.6] Plugins[CS1.6] Player models[CS1.6] Sounds[CS1.6] Client stuff[CS1.6] Knife skins[CS1.6] Maps[CS1.6] Weapon skins
Plugin Xmas Santa Flying
Icon Counter-Strike
12-12-2025, 03:21 AM
Downloads: 10 • Views: 321

[Image: image.png]


Plugin Xmas Santa Flying

Bring true Christmas magic to your CS 1.6 server with the Flying Santa Plugin, a festive addon that lets you place a fully animated Santa Claus flying across the sky with his sleigh and reindeers. Perfect for creating an immersive holiday atmosphere on any map!

Code: 
Call command:
ghost_menu

VersionAuthorRequirementsMod for
1.0.0OsuDesuN/AAny Mod
[Plugin] Skin arme doar la Vip
Icon Counter-Strike
12-11-2025, 10:15 PM
Downloads: 0 • Views: 296
Pluginu asta îl am de când aveam server de cs. E plugin cu skin pe arme doar pentru vip, activat prin comanda /skins

Code: 
#include <amxmodx>
#include <fakemeta>
#include <hamsandwich>
#include <cstrike>

#define PLUGIN "Weapons Model Vip"
#define VERSION "1.0"
#define AUTHOR "SirErick"

new g_weapons[33], g_maxplayers

new const WEAPONENTNAMES[][] = { "", "weapon_p228", "", "weapon_scout", "weapon_hegrenade", "weapon_xm1014", "weapon_c4", "weapon_mac10", "weapon_aug", "weapon_smokegrenade",
    "weapon_elite", "weapon_fiveseven", "weapon_ump45", "weapon_sg550", "weapon_galil", "weapon_famas", "weapon_usp", "weapon_glock18", "weapon_awp", "weapon_mp5navy", "weapon_m249",
    "weapon_m3", "weapon_m4a1", "weapon_tmp", "weapon_g3sg1", "weapon_flashbang", "weapon_deagle", "weapon_sg552", "weapon_ak47", "weapon_knife", "weapon_p90" }

enum _:model_weapons
{
    V_AK47,
    V_M4A1,
    V_AWP
}
enum _:models_weapons_new
{
    V_WEAPONS[50]
}
new const new_weapons[model_weapons][models_weapons_new] =
{
   
    "models/v_ak47anubis.mdl",
    "models/v_m4a1victim.mdl",
    "models/v_awpwildstyle.mdl"
}

public plugin_init()
{
    register_plugin(PLUGIN, VERSION, AUTHOR)
    set_pcvar_string(register_cvar("Weapons Model Vip", VERSION, FCVAR_SERVER|FCVAR_SPONLY), VERSION)
    for (new i = 1; i < sizeof WEAPONENTNAMES; i++)
    {
        if(WEAPONENTNAMES[i][0]) RegisterHam(Ham_Item_Deploy, WEAPONENTNAMES[i], "fw_Item_Deploy_Post", 1)
    }
    register_clcmd("say /skins", "new_menu")
    g_maxplayers = get_maxplayers()
}
public plugin_precache()
{
    for(new i = 0;i < sizeof new_weapons;i++)
    {
           
        precache_model(new_weapons[i][V_WEAPONS]);
    }
}
public client_putinserver(id)
{
    g_weapons[id] = 0
}
public event_round_start()
{
    for (new id = 1; id <= g_maxplayers; id++)
    {
        if (!is_user_connected(id))
            continue;
               
    }
}   
public new_menu(id)
{
    if (!is_user_alive(id))
        return PLUGIN_HANDLED

    new Menu = menu_create("Extrem-Tutorials | Weapons", "show_menu_weapons")
    menu_additem(Menu, "AK47 Anubis"            , "1", 0)
    menu_additem(Menu, "M4A1 Victim "            , "2", 0)
    menu_additem(Menu, "AWP Wyld Style"            , "3", 0)

    menu_setprop(Menu,MPROP_EXITNAME,"Exit")
    menu_setprop(Menu, MPROP_EXIT, MEXIT_ALL)

    menu_display(id, Menu, 0)
    return PLUGIN_HANDLED
}
public show_menu_weapons(id, menu, item)
{
    if (!is_user_alive(id))
        return PLUGIN_HANDLED

    if(item == MENU_EXIT)
    {
        menu_destroy(menu);
        return PLUGIN_HANDLED;
    }
    switch(item)
    {
        case 0:
        {
           
            g_weapons[id] = 1
        }
        case 1:
        {
           
            g_weapons[id] = 2
        }
        case 2:
        {
           
            g_weapons[id] = 3
        }
    }
    return PLUGIN_HANDLED;
}

public fw_Item_Deploy_Post(weapon_ent)
{
    if(!pev_valid(weapon_ent))
    return

    // Get weapon's owner
    static owner
    owner = fm_cs_get_weapon_ent_owner(weapon_ent)

    // Get weapon's id
    static weaponid
    weaponid = cs_get_weapon_id(weapon_ent)

    switch (weaponid)
    {
       
        case CSW_AK47:
        {
           
            if (g_weapons[owner] == 1)
            {
               
                set_pev(owner, pev_viewmodel2, new_weapons[V_AK47][V_WEAPONS])
            }
        }
        case CSW_M4A1:
        {
           
            if (g_weapons[owner] == 2)
            {
               
                set_pev(owner, pev_viewmodel2, new_weapons[V_M4A1][V_WEAPONS])
            }
        }
        case CSW_AWP:
        {
           
            if (g_weapons[owner] == 3)
            {
               
                set_pev(owner, pev_viewmodel2, new_weapons[V_AWP][V_WEAPONS])
            }
        }
    }
}   
stock fm_cs_get_weapon_ent_owner(ent)
{
    // Prevent server crash if entity's private data not initalized
    if (pev_valid(ent) != 2)
    return -1;

    return get_pdata_cbase(ent, 41, 4);
}
 Cel de sus e pluginul inițial, foarte simplist, cu acces pentru toată lumea. Și la asta am modificat niște linii. Deci e pluginul inițial cu mici modificări dar nu majore.

Mai jos aveți cel care îl foloseam eu pe server, modificat de mine.

Code: 
#include <amxmodx>
#include <fakemeta>
#include <hamsandwich>
#include <cstrike>

#define PLUGIN "Weapons Model Vip"
#define VERSION "1.0"
#define AUTHOR "SirErick"

// Array-uri și variabile globale
new g_weapons[33], g_maxplayers;

new const WEAPONENTNAMES[][] = {
    "", "weapon_p228", "", "weapon_scout", "weapon_hegrenade", "weapon_xm1014", "weapon_c4",
    "weapon_mac10", "weapon_aug", "weapon_smokegrenade", "weapon_elite", "weapon_fiveseven",
    "weapon_ump45", "weapon_sg550", "weapon_galil", "weapon_famas", "weapon_usp", "weapon_glock18",
    "weapon_awp", "weapon_mp5navy", "weapon_m249", "weapon_m3", "weapon_m4a1", "weapon_tmp",
    "weapon_g3sg1", "weapon_flashbang", "weapon_deagle", "weapon_sg552", "weapon_ak47",
    "weapon_knife", "weapon_p90"
};

enum _:model_weapons {
    V_AK47,
    V_M4A1,
    V_AWP
};

enum _:models_weapons_new {
    V_WEAPONS[50]
};

new const new_weapons[model_weapons][models_weapons_new] = {
    "models/v_ak47anubis.mdl",
    "models/v_m4a1victim.mdl",
    "models/v_awpwildstyle.mdl"
};

// =================== Plugin Init ===================
public plugin_init()
{
    register_plugin(PLUGIN, VERSION, AUTHOR);

    // CVar simplu, nu afectează funcționalitatea
    set_pcvar_string(register_cvar("Weapons Model Vip", VERSION, FCVAR_SERVER|FCVAR_SPONLY), VERSION);

    // Înregistrăm toate armele pentru Ham Sandwich
    for (new i = 1; i < sizeof WEAPONENTNAMES; i++)
    {
        if(WEAPONENTNAMES[i][0])
            RegisterHam(Ham_Item_Deploy, WEAPONENTNAMES[i], "fw_Item_Deploy_Post", 1);
    }

    // Comanda pentru meniu
    register_clcmd("say /skins", "new_menu");

    g_maxplayers = get_maxplayers();
}

// =================== Precache Modele ===================
public plugin_precache()
{
    for(new i = 0; i < sizeof new_weapons; i++)
    {
        precache_model(new_weapons[i][V_WEAPONS]);
    }
}

// =================== Jucător în server ===================
public client_putinserver(id)
{
    g_weapons[id] = 0;
}

// =================== Round Start ===================
public event_round_start()
{
    for (new id = 1; id <= g_maxplayers; id++)
    {
        if (!is_user_connected(id))
            continue;
    }
}

// =================== Meniu VIP ===================
public new_menu(id)
{
    if (!is_user_alive(id))
        return PLUGIN_HANDLED;

    // Verificare VIP: flag "z"
    if (!(get_user_flags(id) & ADMFLAG_ROOT)) // Înlocuiește cu flagul VIP corect dacă e altul
    {
        client_print(id, print_chat, "\x04[Vip] \x01Only VIP can use this menu.");
        return PLUGIN_HANDLED;
    }

    new Menu = menu_create("Extrem-Tutorials| Vip Skins Weapons", "show_menu_weapons");
    menu_additem(Menu, "AK47 Anubis", "1", 0);
    menu_additem(Menu, "M4A1 Victim", "2", 0);
    menu_additem(Menu, "AWP Wyld Style", "3", 0);

    menu_setprop(Menu, MPROP_EXITNAME, "Exit");
    menu_setprop(Menu, MPROP_EXIT, MEXIT_ALL);

    menu_display(id, Menu, 0);
    return PLUGIN_HANDLED;
}

// =================== Meniu Callback ===================
public show_menu_weapons(id, menu, item)
{
    if (!is_user_alive(id))
        return PLUGIN_HANDLED;

    if(item == MENU_EXIT)
    {
        menu_destroy(menu);
        return PLUGIN_HANDLED;
    }

    switch(item)
    {
        case 0: g_weapons[id] = 1;
        case 1: g_weapons[id] = 2;
        case 2: g_weapons[id] = 3;
    }

    return PLUGIN_HANDLED;
}

// =================== Schimbare Model Arme ===================
public fw_Item_Deploy_Post(weapon_ent)
{
    if(!pev_valid(weapon_ent))
        return;

    static owner = fm_cs_get_weapon_ent_owner(weapon_ent);
    static weaponid = cs_get_weapon_id(weapon_ent);

    switch (weaponid)
    {
        case CSW_AK47:
        {
            if (g_weapons[owner] == 1)
                set_pev(owner, pev_viewmodel2, new_weapons[V_AK47][V_WEAPONS]);
        }
        case CSW_M4A1:
        {
            if (g_weapons[owner] == 2)
                set_pev(owner, pev_viewmodel2, new_weapons[V_M4A1][V_WEAPONS]);
        }
        case CSW_AWP:
        {
            if (g_weapons[owner] == 3)
                set_pev(owner, pev_viewmodel2, new_weapons[V_AWP][V_WEAPONS]);
        }
    }
}

// =================== Obținere Owner ===================
stock fm_cs_get_weapon_ent_owner(ent)
{
    if (pev_valid(ent) != 2)
        return -1;

    return get_pdata_cbase(ent, 41, 4);
}
Am pus la fiecare sma-ul, le puteți personaliza cum vreți, am zis sa îl pun, nici nu prea ma mai joc cs și nu avea rost sa îl țin prin laptop aiurea.
Plugin Xmas Trees On Maps
Icon Counter-Strike
11-24-2025, 05:45 AM
Downloads: 13 • Views: 459

[Image: 10-145.jpg]


Plugin Xmas Trees On Maps

This plugin allows server administrators to place fully modeled Christmas trees directly on any map in Counter-Strike 1.6. Using an easy in-game menu, you can spawn, move, or delete Christmas tree models in real time, without needing to edit the map or restart the server.  Every Christmas tree you place is automatically saved into a separate .ini configuration file for each map. When the map loads again, the plugin instantly restores all saved tree positions, making it simple to decorate every map with a unique holiday atmosphere.  Perfect for servers that want to create a warm and festive Christmas environment.

VersionAuthorRequirementsMod for
N/AN/AN/AAny Mod
Plugin Xmas Lights On Maps!
Icon Counter-Strike
11-24-2025, 03:56 AM
Downloads: 14 • Views: 314

[Image: 10-142.jpg]
[Image: image.png]


Plugin Xmas Lights On Maps

This plugin adds a simple and intuitive menu that allows server administrators to create decorative sprites on any map — perfect for adding Christmas lights, festive effects, or other visual elements. Using the in-game menu, you can place sprites anywhere on the map in real time, without needing to edit the map or restart the server.  The plugin automatically generates a separate .ini configuration file for each map. Every sprite you place is saved with its coordinates, so the decorations load automatically the next time the map is played. This makes it extremely easy to customize every map with unique holiday lights and decorations.
COMMANDS:
  • light

Code: 
#include <amxmisc>
#include <engine>
#include <fakemeta>
#define pev_light pev_iuser1
enum _:STRSPRPARAM {
Float:RP_STR_CORDX, //Координаты начала
Float:RP_STR_CORDY,
Float:RP_STR_CORDZ,
Float:RP_END_CORDX, //Координаты конца
Float:RP_END_CORDY,
Float:RP_END_CORDZ,
RP_SEGMENT, //Количество точек.
bool:RP_CURVE, //Кривизна.
bool:RP_BLINK, //Мерцание.
bool:RP_COLOR_RAND, //Цвет случайный/сохранённый (1/0)
RP_COL_R, //Если не случайный то тут сохранён цвет.
RP_COL_G,
RP_COL_B,
bool:RP_START,
RP_COLOR
};
new Array:g_ArrSprPar;
new g_PlArrParam[33][STRSPRPARAM];
new g_iCount;
new g_szSprite[][] = {
"sprites/redspr.spr"
}
new g_szPathFile[256];
new g_szClassName[] = "class_light";
enum _:COLORTYPE {
COL_R,
COL_G,
COL_B,
COL_NAME[32]
}
new g_szColor[][COLORTYPE] = { // <= Цвета добавлять здесь. Но случайный не трогать и только после него!
{0,0,0,"Random"},
{255,0,0,"Red"},
{0,255,0,"Green"},
{0,0,255,"Blue"},
{55,163,221,"Light Blue"},
{235,206,41,"Yellow"},
{176,43,234,"Purple"}
}
public plugin_precache() {
for(new i=0;i<sizeof(g_szSprite);i++)
precache_model(g_szSprite[i]);

g_ArrSprPar = ArrayCreate(STRSPRPARAM);
ReadSaveParam();
}
public ReadSaveParam() {
new szLoadDir[128],szMapName[64];
get_mapname(szMapName,charsmax(szMapName));
get_configsdir(szLoadDir, charsmax(szLoadDir));
formatex(szLoadDir, charsmax(szLoadDir), "%s/lightMap",szLoadDir)
if(!dir_exists(szLoadDir)) mkdir(szLoadDir);
formatex(g_szPathFile, charsmax(g_szPathFile), "%s/%s.ini",szLoadDir,szMapName)
if(file_exists(g_szPathFile)) {
enum STRCORD {STR_X,STR_Y,STR_Z,END_X,END_Y,END_Z};
new szParse[256],szCord[STRCORD][8],szSegment[8],szCurve[5],szBlink[5],szColRand[5],szColR[8],szColG[8],szColB[8];
new ArrSprPar[STRSPRPARAM];

new iLine, iNum;
for(iLine = 0; read_file(g_szPathFile, iLine, szParse, charsmax(szParse), iNum); iLine++) {
parse(szParse,
szCord[STR_X],charsmax(szCord[]),
szCord[STR_Y],charsmax(szCord[]),
szCord[STR_Z],charsmax(szCord[]),

szCord[END_X],charsmax(szCord[]),
szCord[END_Y],charsmax(szCord[]),
szCord[END_Z],charsmax(szCord[]),
szSegment, charsmax(szSegment),
szCurve, charsmax(szCurve),
szBlink, charsmax(szBlink),
szColRand, charsmax(szColRand),

szColR, charsmax(szColR),
szColG, charsmax(szColG),
szColB, charsmax(szColB)
);

ArrSprPar[RP_STR_CORDX] = _:str_to_float(szCord[STR_X]);
ArrSprPar[RP_STR_CORDY] = _:str_to_float(szCord[STR_Y]);
ArrSprPar[RP_STR_CORDZ] = _:str_to_float(szCord[STR_Z]);

ArrSprPar[RP_END_CORDX] = _:str_to_float(szCord[END_X]);
ArrSprPar[RP_END_CORDY] = _:str_to_float(szCord[END_Y]);
ArrSprPar[RP_END_CORDZ] = _:str_to_float(szCord[END_Z]);

ArrSprPar[RP_SEGMENT] = _:str_to_num(szSegment);
ArrSprPar[RP_CURVE] = _:str_to_num(szCurve);
ArrSprPar[RP_BLINK] = _:str_to_num(szBlink);
ArrSprPar[RP_COLOR_RAND] = _:str_to_num(szColRand);

ArrSprPar[RP_COL_R] = _:str_to_num(szColR);
ArrSprPar[RP_COL_G] = _:str_to_num(szColG);
ArrSprPar[RP_COL_B] = _:str_to_num(szColB);

new Float:fStart[3],Float:fEnd[3];

fStart[0] = ArrSprPar[RP_STR_CORDX];
fStart[1] = ArrSprPar[RP_STR_CORDY];
fStart[2] = ArrSprPar[RP_STR_CORDZ];

fEnd[0] = ArrSprPar[RP_END_CORDX];
fEnd[1] = ArrSprPar[RP_END_CORDY];
fEnd[2] = ArrSprPar[RP_END_CORDZ];

calc_sprite(g_iCount,ArrSprPar[RP_CURVE],ArrSprPar[RP_BLINK],fStart,fEnd,ArrSprPar[RP_SEGMENT],-1,ArrSprPar[RP_COL_R],ArrSprPar[RP_COL_G],ArrSprPar[RP_COL_B],ArrSprPar[RP_COLOR_RAND]);
ArrayPushArray(g_ArrSprPar, ArrSprPar);
g_iCount++;
}
}
}
public WriteSaveParam() {
if(file_exists(g_szPathFile)) delete_file(g_szPathFile);
for(new i=0;i<ArraySize(g_ArrSprPar);i++) {
new ArrSprPar[STRSPRPARAM];
ArrayGetArray(g_ArrSprPar, i, ArrSprPar);

new szSaveStr[1024];
format(szSaveStr,charsmax(szSaveStr),
"^"%.1f^" ^"%.1f^" ^"%.1f^" ^"%.1f^" ^"%.1f^" ^"%.1f^" ^"%d^" ^"%d^" ^"%d^" ^"%d^" ^"%d^" ^"%d^" ^"%d^"",
ArrSprPar[RP_STR_CORDX],
ArrSprPar[RP_STR_CORDY],
ArrSprPar[RP_STR_CORDZ],

ArrSprPar[RP_END_CORDX],
ArrSprPar[RP_END_CORDY],
ArrSprPar[RP_END_CORDZ],

ArrSprPar[RP_SEGMENT],
ArrSprPar[RP_CURVE],
ArrSprPar[RP_BLINK],
ArrSprPar[RP_COLOR_RAND],
ArrSprPar[RP_COL_R],
ArrSprPar[RP_COL_G],
ArrSprPar[RP_COL_B]
);
write_file(g_szPathFile, szSaveStr, i);
}
}
public plugin_init() {
register_plugin("Light", "1.0", "Author" );
register_menu("lightmenu", 1023, "lightmenu_function");
register_think(g_szClassName, "LightThink" );

register_clcmd("light","start_lightmenu");
}
public LightThink(iEnt) {
if(!pev_valid(iEnt))
return;

set_rendering(iEnt,kRenderFxNone,random_num(0,200),random_num(0,200),random_num(0,200),kRenderTransAdd,255)
set_pev( iEnt, pev_nextthink, get_gametime()+1.0);
}
public start_lightmenu(id) {
if(~get_user_flags(id) & read_flags("gh"))
return PLUGIN_HANDLED;

lightmenu(id,true);
return PLUGIN_HANDLED;
}
stock lightmenu(id,bool:first = false) {
static menu[512],len;
len = 0;
if(first) {
g_PlArrParam[id][RP_START] = false;
g_PlArrParam[id][RP_SEGMENT] = 10;
g_PlArrParam[id][RP_COLOR] = 0;
}

len = formatex(menu[len], charsmax(menu) - len, "\rGarland Menu. Total \d[\r%d\d]^n\yLights in garland \d[\r%d\d]^n^n",g_iCount,g_PlArrParam[id][RP_SEGMENT]+1);

len += formatex(menu[len], charsmax(menu) - len, "\r[1] \w%s^n",g_PlArrParam[id][RP_START] ? "End":"Start");
len += formatex(menu[len], charsmax(menu) - len, "\r[2] \wColor: \d[\y%s\d]^n",g_szColor[g_PlArrParam[id][RP_COLOR]][COL_NAME]);
len += formatex(menu[len], charsmax(menu) - len, "\r[3] \wAdd lights^n");
len += formatex(menu[len], charsmax(menu) - len, "\r[4] \wRemove lights^n^n");

len += formatex(menu[len], charsmax(menu) - len, "\r[5] \wShape \d[\y%s\d]^n",g_PlArrParam[id][RP_CURVE] ? "Curved":"Straight");
if(g_PlArrParam[id][RP_COLOR] == 0)
len += formatex(menu[len], charsmax(menu) - len, "\r[6] \wBlinking \d[\y%s\d]^n^n",g_PlArrParam[id][RP_BLINK] ? "On":"Off");
else len += formatex(menu[len], charsmax(menu) - len, "^n^n");
len += formatex(menu[len], charsmax(menu) - len, "\r[7] \wDelete last^n");
len += formatex(menu[len], charsmax(menu) - len, "\r[8] \wDelete all^n");
len += formatex(menu[len], charsmax(menu) - len, "\r[9] \wSave^n");

len += formatex(menu[len], charsmax(menu) - len, "^n\r[0] \wExit");

new keys = MENU_KEY_0|MENU_KEY_1|MENU_KEY_2|MENU_KEY_3|MENU_KEY_4|MENU_KEY_5|MENU_KEY_6|MENU_KEY_7|MENU_KEY_8|MENU_KEY_9;
show_menu(id, keys, menu, -1, "lightmenu");
return PLUGIN_HANDLED;
}
public lightmenu_function(id,key) {
switch(key) {
case 0: {
new Origin[3],Float:fOrigin[3];
get_user_origin(id, Origin, 3);
for(new i=0;i<sizeof(fOrigin);i++)
fOrigin[i] = float(Origin[i]);

if(!g_PlArrParam[id][RP_START]) {
g_PlArrParam[id][RP_START] = true;
g_PlArrParam[id][RP_STR_CORDX] = _:fOrigin[0];
g_PlArrParam[id][RP_STR_CORDY] = _:fOrigin[1];
g_PlArrParam[id][RP_STR_CORDZ] = _:fOrigin[2];
} else {
g_PlArrParam[id][RP_START] = false;
g_PlArrParam[id][RP_END_CORDX] = _:fOrigin[0];
g_PlArrParam[id][RP_END_CORDY] = _:fOrigin[1];
g_PlArrParam[id][RP_END_CORDZ] = _:fOrigin[2];
new Float:fStart[3];
fStart[0] = g_PlArrParam[id][RP_STR_CORDX];
fStart[1] = g_PlArrParam[id][RP_STR_CORDY];
fStart[2] = g_PlArrParam[id][RP_STR_CORDZ];
calc_sprite(g_iCount,g_PlArrParam[id][RP_CURVE],g_PlArrParam[id][RP_BLINK],fStart,fOrigin,g_PlArrParam[id][RP_SEGMENT],g_PlArrParam[id][RP_COLOR]);

if(g_PlArrParam[id][RP_COLOR] == 0) g_PlArrParam[id][RP_COLOR_RAND] = true;
else {
g_PlArrParam[id][RP_COLOR_RAND] = false;

g_PlArrParam[id][RP_COL_R] = g_szColor[g_PlArrParam[id][RP_COLOR]][COL_R];
g_PlArrParam[id][RP_COL_G] = g_szColor[g_PlArrParam[id][RP_COLOR]][COL_G];
g_PlArrParam[id][RP_COL_B] = g_szColor[g_PlArrParam[id][RP_COLOR]][COL_B];
}
ArrayPushArray(g_ArrSprPar, g_PlArrParam[id]);
g_iCount++;
}
}
case 1: {
if(g_PlArrParam[id][RP_COLOR]<sizeof(g_szColor)-1) {
g_PlArrParam[id][RP_COLOR]++;
} else g_PlArrParam[id][RP_COLOR] = 0;
}
case 2: {
g_PlArrParam[id][RP_SEGMENT]++;
}
case 3: {
if(g_PlArrParam[id][RP_SEGMENT] > 2)
g_PlArrParam[id][RP_SEGMENT]--;
}
case 4: g_PlArrParam[id][RP_CURVE] = !g_PlArrParam[id][RP_CURVE];
case 5: g_PlArrParam[id][RP_BLINK] = !g_PlArrParam[id][RP_BLINK];
case 6: {
new iSize = ArraySize(g_ArrSprPar);
if(g_iCount == iSize && iSize != 0) {
g_iCount--;
new iEnt = FM_NULLENT;
while((iEnt = find_ent_by_class( iEnt, g_szClassName))) {
if(pev(iEnt,pev_light) == g_iCount) {
set_pev(iEnt, pev_flags, FL_KILLME);
}
}
ArrayDeleteItem(g_ArrSprPar,g_iCount);
}
}
case 7: {
ArrayClear(g_ArrSprPar);
new iEnt = FM_NULLENT;
while((iEnt = find_ent_by_class( iEnt, g_szClassName))) {
set_pev(iEnt, pev_flags, FL_KILLME);
}
g_iCount = 0;
}
case 8: {
WriteSaveParam();
return PLUGIN_HANDLED;
}
case 9: return PLUGIN_HANDLED;
}
lightmenu(id);
return PLUGIN_HANDLED;
}
public client_putinserver(id) {
g_PlArrParam[id][RP_START] = false;
}
public client_disconnect(id) {
g_PlArrParam[id][RP_START] = false;
}
stock calc_sprite(iNum,iCurve,iBlink,Float:fStart[3],Float:fEnd[3],iSegment,iColor,R=0,G=0,B=0,iRand=false) {
new Float:newPoint[3],Float:vector[3],Float:fFistortion,Float:fCurve;
new Float:fAllDist = get_distance_f(fEnd,fStart);
new Float:fDist = fAllDist / iSegment;
for(new i=0;i<sizeof(fStart);i++)
vector[i] = (fEnd[i] - fStart[i])/fAllDist;

fCurve = fAllDist/100*18/iSegment/2;

for(new j=1;j<iSegment;j++) {
for(new i=0;i<sizeof(fStart);i++) {
newPoint[i] = vector[i] * fDist*j + fStart[i];

if(iCurve) {
if(fDist*j > fAllDist/2) {
fFistortion += fCurve;
newPoint[2] += fFistortion;
} else if(fDist*j > fAllDist/2 - fDist/4) {
fFistortion += -fCurve/2;
newPoint[2] += fFistortion;
} else {
fFistortion += -fCurve;
newPoint[2] += fFistortion;
}
}
}
create_sprite(iNum,iBlink,newPoint,iColor,R,G,B,iRand);
}
create_sprite(iNum,iBlink,fEnd,iColor,R,G,B,iRand);
create_sprite(iNum,iBlink,fStart,iColor,R,G,B,iRand);
}
stock create_sprite(iNum,iBlink,Float:vecOrigin[3],iColor,R=0,G=0,B=0,iRand = false) {
static iszInfoTarget = 0; new iSprId = FM_NULLENT;
if(iszInfoTarget || (iszInfoTarget = engfunc(EngFunc_AllocString, "env_sprite"))) iSprId = engfunc(EngFunc_CreateNamedEntity, iszInfoTarget);
if(is_valid_ent(iSprId)) {
set_pev(iSprId, pev_origin, vecOrigin);
set_pev(iSprId, pev_solid, SOLID_NOT);
set_pev(iSprId, pev_movetype, MOVETYPE_NONE);

set_pev(iSprId, pev_framerate, 5.0);
set_pev(iSprId, pev_scale, 0.15);

if(iColor > 0) {
set_rendering(iSprId,kRenderFxNone,g_szColor[iColor][COL_R],g_szColor[iColor][COL_G],g_szColor[iColor][COL_B],kRenderTransAdd,255)
} else if(iColor == 0 || iRand) {
set_rendering(iSprId,kRenderFxNone,random_num(0,200),random_num(0,200),random_num(0,200),kRenderTransAdd,255)
} else if(iColor == -1) {
set_rendering(iSprId,kRenderFxNone,R,G,B,kRenderTransAdd,255)
}
engfunc(EngFunc_SetModel, iSprId, g_szSprite[random_num(0,charsmax(g_szSprite))]);
set_pev(iSprId, pev_classname, g_szClassName);

set_pev(iSprId, pev_spawnflags, SF_SPRITE_STARTON);
dllfunc(DLLFunc_Spawn, iSprId);

set_pev(iSprId,pev_light,iNum);

if(iBlink && iColor == 0 || iRand)
set_pev( iSprId, pev_nextthink, get_gametime()+1.0);
}
}

VersionAuthorRequirementsMod for
1.0.0eLLectroN/AAny mod
Plugin Xmas Santa Hats
Icon Counter-Strike
11-15-2025, 02:40 AM
Downloads: 33 • Views: 584
[Image: image-(5).png]

Plugin Xmas Hats

Bring the holiday spirit straight to your CS 1.6 server with the XMAS Hats plugin! This lightweight and fully optimized addon allows players to wear festive Christmas hats during gameplay, adding a fun and cheerful atmosphere to any map.

VersionAuthorRequirementsMod for
1.0.0xPawN/AXMAS
Plugin Xmas Sounds
Icon Counter-Strike
11-07-2025, 02:19 PM
Downloads: 21 • Views: 423
[Image: 972d5016-33e6-4a24-af7a-39ef1927bf63.png]

xmas sounds for round end

Add a touch of Christmas spirit to your server with this festive sound plugin! This plugin plays cheerful Christmas-themed sounds or music at the end of each round, bringing a warm holiday vibe to your gameplay.

Code: 
#include <amxmodx>

#define NUMAR_SUNETE_T 3
#define NUMAR_SUNETE_CT 3

new const Christmas_Sounds_T[NUMAR_SUNETE_T][] = {

//       "xmas/xmas_te1.mp3",
//       "xmas/xmas_te2.mp3",
         "xmas/xmas_te3.mp3",
         "xmas/xmas_te4.mp3",
         "xmas/xmas_te5.mp3"
}  

new const Christmas_Sounds_CT[NUMAR_SUNETE_CT][] = {

//       "xmas/xmas_ct1.mp3",
//       "xmas/xmas_ct2.mp3",
//       "xmas/xmas_ct3.mp3",
         "xmas/xmas_ct4.mp3",
         "xmas/xmas_ct5.mp3",
         "xmas/xmas_ct6.mp3"
}

public plugin_init() {

      register_plugin("[XMAS] RoundSounds","1.0","A k c 3 n 7");

      register_message( get_user_msgid( "SendAudio" ),"message_sendaudio" );

      register_event("SendAudio", "t_win", "a", "2&%!MRAD_terwin");

      register_event("SendAudio", "ct_win", "a", "2&%!MRAD_ctwin");
}

public t_win() {
  
      PlaySoundToClients (Christmas_Sounds_T[random(NUMAR_SUNETE_T)]);
}

public ct_win() {

      PlaySoundToClients (Christmas_Sounds_CT[random(NUMAR_SUNETE_CT)]);
}

public plugin_precache() {

      for(new i = 0; i < NUMAR_SUNETE_T; i ++)
      precache_sound(Christmas_Sounds_T[i]);

      for(new i = 0; i < NUMAR_SUNETE_CT; i ++)
      precache_sound(Christmas_Sounds_CT[i]);
}

public message_sendaudio( msg_id, msg_dest, msg_entity ) {
    
        static message[10];
        get_msg_arg_string( 2, message, sizeof message - 1 );

        switch( message[7] )
        {
            case 'c', 't', 'r' : return PLUGIN_HANDLED;
        }

        return PLUGIN_CONTINUE;
   }  
  
PlaySoundToClients ( const sound [ ] ) {

        if ( equal ( sound [ strlen ( sound ) -4 ], ".mp3" ) )
                client_cmd ( 0, "mp3 play ^"sound/%s^"", sound );
        else
                client_cmd ( 0, "spk ^"%s^"", sound );
}

VersionAuthorRequirementsMod for
1.0.0A k c 3 n 7AMX Mod XClassic / Xmas
Plugin Molotov for ZP
Icon Counter-Strike
07-09-2025, 09:18 PM
Downloads: 20 • Views: 529
[Image: Untitled-image-1.png]

Plugin Molotov for ZP

This plugin adds a 4th grenade, the "Molotov" as an extra-item that can be bought from zp menu, it works exactly like in CS:GO but in CS 1.6.

VersionAuthorRequirementsMod for
1.0.3medusa + spincsReapiZP 5.0.8
Plugin CSGO Molotov Reapi
Icon Counter-Strike
07-02-2025, 04:24 PM
Downloads: 17 • Views: 498
[Image: Untitled-image.png]

Reapi Molotov Plugin

This plugin adds a 4th grenade, the "Molotov", which works exactly like in CS:GO but in CS 1.6.

VersionAuthorRequirementsMod for
1.0.3-fixmedusaReapiAny Mode
Plugin Tutor Mesages
Icon Counter-Strike
06-30-2025, 01:40 AM
Downloads: 11 • Views: 579
[Image: Untitled-image.png]

Plugin Tutor Mesages

This plugin adds the tutor messages from Counter-Strike: Condition Zero to CS 1.6
Plugin CSO MountGun
Icon Counter-Strike
06-30-2025, 12:59 AM
Downloads: 0 • Views: 399
[Image: Untitled-image-1.png]

Plugin CSO MountGun

This is the CSO MountGun now recoded for CS1.6

VersionAuthorRequirementsMod for
N/ASneaky.amxxN/AZP 4.3
Plugin Kill Effect from Survivor ZP
Icon Counter-Strike
06-27-2025, 04:51 PM
Downloads: 18 • Views: 527
[Image: 0dbbac3f-8329-4619-ab5e-d452e4136a96.png]

Plugin Kill Effect from Survivor

The plugin adds a lightning effect with smoke at the place of the victim (zombie) when the survivor kills him

VersionAuthorRequirementsMod for
1.0.0N/Afakemeta_util / reapi / zombieplagueZP 4.3
Plugin Low HP Heartbeat ZP
Icon Counter-Strike
06-27-2025, 04:32 PM
Downloads: 9 • Views: 435
[Image: b2d81e88-2b2f-4864-bec6-4e0d336ec9e6.png]

Low HP Heartbeat ZP

This plugin plays a heartbeat sound on humans when their health is under certain amount.

Code: 
CVARS:

zp_heartbeat_hp <50> - Heartbeats start when HP is lower than this

VersionAuthorRequirementsMod for
1.1.0ConnorMcLeod / AlexBreemsamxmodx / zombieplagueZP 4.3 / ZP 5.0.8
Plugin Extra-item Jetpack 4..3
Icon Counter-Strike
06-26-2025, 01:21 AM
Downloads: 10 • Views: 528
[Image: Untitled-image.png]

ZP 4.3 Extra-Item Jetpack

Many people who installed Jetpack on their server noticed that if you picked it up in the first round, white spheres would remain on the map after firing the bazooka, and they would persist in subsequent rounds. This bug has been fixed here, and everything works correctly now!
VersionAuthorRequirementsMod for
1.0.0N/Ahamsandwich / fakemeta / amxmodxZP 4.3
Plugin Lasermine ZP 4.3
Icon Counter-Strike
06-25-2025, 03:46 PM
Downloads: 29 • Views: 773
[Image: Untitled-image-1.png]

Plugin lasermine for ZP 4.3

Excellent laser mines for the Zombie Plague 4.3 mod. The main feature of these mines is the extensive customization options, as well as a special mine menu. In this menu, you can configure: the beam color, the mine model, sprites, glow color, and other settings.

VersionAuthorRequirementsMod for
4.2.0SandStrikerAmxMisc / FakeMeta / XS / HamSandwich / ZombiePlagueZP 4.3
Plugin Hit Wall Effect
Icon Counter-Strike
06-25-2025, 03:35 PM
Downloads: 0 • Views: 518
[Image: Untitled-image.png]

Plugin Hit Wall Effect ZP 4.3

This plugin adds visual effects when hitting walls with your knife in Zombie Plague. If you're a Zombie, hitting a wall with your knife creates blood spatters or zombie-specific impact marks. If you're a Human , hitting a wall with your knife produces realistic sparks.

VersionAuthorRequirementsMod for
1.0.0UnknownReapi / ZombiePlagueZP 4.3
Plugin Screamer Jump Scare for ZP
Icon Counter-Strike
06-24-2025, 05:49 PM
Downloads: 13 • Views: 573
[Image: Untitled-image.png]

Plugin Screamer Jump Scare for ZP

The purpose of the plugin is to scare players (humans) on a zombie server. The main feature of the plugin is that humans will get scared by a screamer, making it easier for zombies to find their victims. The screamer is visible only to humans. When the screamer appears, the human cannot switch weapons or shoot (this is configurable). A screamer sound is emitted from the player, and they glow red. However, if the human is within a radius of 300 units (configurable) from another human, the screamer will not appear — it will only appear once they are more than 300 units apart.

VersionAuthorRequirementsMod for
1.0.0xUnicornAMX Mod XZombie Plague 4.3 / 5.0.8
Plugin ZP 4.3 Extra-item CROW-1
Icon Counter-Strike
06-24-2025, 05:04 PM
Downloads: 1 • Views: 441
[Image: Untitled-image-1.png]

Plugin ZP 4.3 Extra-item CROW-1

This is the remodeled version of Glock 18 with a drum magazine. It is equipped with 50 rounds of 9mm that can be reloaded quickly when hitting the [R] button at the right time during reloading with its CROW Reload
System. It can also be fired in automatic.

VersionAuthorRequirementsMod for
1.0.0S3xTyAMX Mod XZombie Plague 4.3
Plugin New Damage Show
Icon Counter-Strike
06-17-2025, 12:39 AM
Downloads: 12 • Views: 790




Plugin New Damage Show

The "New Damage" plugin for CS 1.6 changes how damage is shown in the game. It adds better visual effects and clearer messages to make it easier to see how much damage players take.

Code: 
#include <amxmodx>
#include <cstrike>
#include <fakemeta>
#include <hamsandwich>

#define DAMAGE_COLOR_ENABLED // Comment out '//' if you need a standard damage dealer color.
#define NDAMAGE_SPRITE "sprites/new_damage.spr" // Path to sprite
#define NDAMAGE_REMOVE 1.0 // The sprite will be deleted after a certain period of time.
#define NDAMAGE_SIZE 0.30 // Sprite size (standard 0.30), less than 0.25 is not recommended!

#if defined DAMAGE_COLOR_ENABLED
new THUD_COLOR[] = {255, 0, 0};
new CTHUD_COLOR[] = {0, 0, 255};
new Float:SPRITE_TCOLOR[3] = {255.0, 0.0, 0.0};
new Float:SPRITE_CTCOLOR[3] = {0.0, 0.0, 255.0};
#endif

public plugin_init()
{
register_plugin("new_damage", "v0.01", "souledar");

RegisterHam(Ham_Think, "info_target", "fw_ThinkInfoTarget");
RegisterHam(Ham_TakeDamage, "player", "Ham_TakeDamage_Post", true);
}

public plugin_precache() engfunc(EngFunc_PrecacheModel, NDAMAGE_SPRITE);

public Ham_TakeDamage_Post(iVictim, iWeapon, iAttacker, Float:fDamage)
{
if (get_user_team(iVictim) == get_user_team(iAttacker)) return;
new iEnt = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, "info_target"));
if (pev_valid(iEnt))
{
new Float:fOrigin[3];
pev(iVictim, pev_origin, fOrigin);
set_pev(iEnt, pev_classname, "func_damager");
set_pev(iEnt, pev_impulse, 11082018);
set_pev(iEnt, pev_movetype, MOVETYPE_FOLLOW);
set_pev(iEnt, pev_aiment, iVictim);
engfunc(EngFunc_SetModel, iEnt, NDAMAGE_SPRITE);
set_pev(iEnt, pev_scale, NDAMAGE_SIZE);
set_pev(iEnt, pev_rendermode, kRenderTransAdd);
#if defined DAMAGE_COLOR_ENABLED
if(cs_get_user_team(iAttacker) == CS_TEAM_T) set_pev(iEnt, pev_rendercolor, SPRITE_TCOLOR);
else if(cs_get_user_team(iAttacker) == CS_TEAM_CT) set_pev(iEnt, pev_rendercolor, SPRITE_CTCOLOR);
#else
new Float:standart_color[3] = {255.0, 255.0, 255.0};
set_pev(iEnt, pev_rendercolor, standart_color);
#endif
set_pev(iEnt, pev_renderamt, 255.0);

if (fDamage > 99.0) set_pev(iEnt, pev_frame, 0);
else set_pev(iEnt, pev_frame, fDamage);
set_pev(iEnt, pev_nextthink, get_gametime() + NDAMAGE_REMOVE);
}

if(iVictim == iAttacker || !is_user_alive(iAttacker) || !is_user_connected(iVictim)) return;

if(cs_get_user_team(iAttacker) == CS_TEAM_T)
{
#if defined DAMAGE_COLOR_ENABLED
set_hudmessage(THUD_COLOR[0], THUD_COLOR[1], THUD_COLOR[2], -1.0, -1.0, 0, 0.01, 0.05, 0.1);
#else
set_hudmessage(255, 255, 255, -1.0, -1.0, 0, 0.01, 0.05, 0.1);
#endif
}
else if (cs_get_user_team(iAttacker) == CS_TEAM_CT)
{
#if defined DAMAGE_COLOR_ENABLED
set_hudmessage(CTHUD_COLOR[0], CTHUD_COLOR[1], CTHUD_COLOR[2], -1.0, -1.0, 0, 0.01, 0.05, 0.1);
#else
set_hudmessage(255, 255, 255, -1.0, -1.0, 0, 0.01, 0.05, 0.1);
#endif
}
show_hudmessage(iAttacker, "\\     //^n^n//     \\"); // Displaying a hit on a player.
}

public fw_ThinkInfoTarget(iEnt)
{
if (pev_valid(iEnt))
{
if (pev(iEnt, pev_impulse) == 11082018)
set_pev(iEnt, pev_flags, FL_KILLME);
}
}

VersionAuthorRequirementsMod for
0.01souledarAMX Mod X, Cstrike, FakeMeta, HamSandwichCounter-Strike 1.6
Plugin Biohazard Pain Sounds
Icon Counter-Strike
06-16-2025, 11:52 PM
Downloads: 23 • Views: 515
[Image: Untitled-image-1.png]

Plugin Biohazard Pain Sounds

This is a plugin for CS 1.6 AMX Mod X that adds sounds to zombies when they use their attack.

Code: 
#include <amxmodx>
#include <biohazard>
#include <fakemeta_util>
#include <hamsandwich>

new g_first_zombie_sounds[][] = {
"zm/zombie/Z_Vision/Activate.wav"
}

new g_zombie_die_sounds[][] =
{
"biohazard/death1.wav",
"biohazard/death2.wav",
"biohazard/death3.wav"
}

new g_attack_hit[][] =
{
"zm/zombie/snd/attack/hit/Z_Hit-01.wav",
"zm/zombie/snd/attack/hit/Z_Hit-02.wav",
"zm/zombie/snd/attack/hit/Z_Hit-03.wav",
"zm/zombie/snd/attack/hit/Z_Hit-04.wav",
"zm/zombie/snd/attack/hit/Z_Hit-05.wav",
"zm/zombie/snd/attack/hit/Z_Hit-06.wav"
}

new g_attack_swipe[][] =
{
"zm/zombie/snd/attack/swipe/z-swipe-1.wav",
"zm/zombie/snd/attack/swipe/z-swipe-2.wav",
"zm/zombie/snd/attack/swipe/z-swipe-3.wav",
"zm/zombie/snd/attack/swipe/z-swipe-4.wav",
"zm/zombie/snd/attack/swipe/z-swipe-5.wav",
"zm/zombie/snd/attack/swipe/z-swipe-6.wav"
}

new zom1_attack[][] =
{
"zm/zombie/snd/zom1/attack/ZCarrier_Attack-01.wav",
"zm/zombie/snd/zom1/attack/ZCarrier_Attack-02.wav",
"zm/zombie/snd/zom1/attack/ZCarrier_Attack-03.wav",
"zm/zombie/snd/zom1/attack/ZCarrier_Attack-04.wav",
"zm/zombie/snd/zom1/attack/ZCarrier_Attack-05.wav",
"zm/zombie/snd/zom1/attack/ZCarrier_Attack-06.wav"
}



new zom2_attack[][] =
{
"zm/zombie/snd/zom2/attack/Attack-01.wav",
"zm/zombie/snd/zom2/attack/Attack-02.wav",
"zm/zombie/snd/zom2/attack/Attack-03.wav",
"zm/zombie/snd/zom2/attack/Attack-04.wav",
"zm/zombie/snd/zom2/attack/Attack-05.wav",
"zm/zombie/snd/zom2/attack/Attack-06.wav"
}


new zom3_attack[][] =
{
"zm/zombie/snd/zom3/attack/ZMale_Attack1.wav",
"zm/zombie/snd/zom3/attack/ZMale_Attack2.wav",
"zm/zombie/snd/zom3/attack/ZMale_Attack3.wav",
"zm/zombie/snd/zom3/attack/ZMale_Attack4.wav",
"zm/zombie/snd/zom3/attack/ZMale_Attack5.wav",
"zm/zombie/snd/zom3/attack/ZMale_Attack6.wav",
"zm/zombie/snd/zom3/attack/ZMale_Attack7.wav"
}



new g_speech[][] =
{
"zm/zombie/snd/speech/braaains.wav",
"zm/zombie/snd/speech/brain.wav",
"zm/zombie/snd/speech/brains.wav",
"zm/zombie/snd/speech/brains2.wav",
"zm/zombie/snd/speech/feeed.wav",
"zm/zombie/snd/speech/hungers.wav",
"zm/zombie/snd/speech/join.wav",
"zm/zombie/snd/speech/join2.wav",
"zm/zombie/snd/speech/joinusss.wav",
"zm/zombie/snd/speech/mustfeed.wav"
}



new Float: g_players[33]
new Float: g_moaning[33]
new g_class[33]

new g_oldtalk[33]
new Float:g_old_pa[33]
new cvar_primattack;

new cvar_moaningdelay

public plugin_init() {        
register_plugin("bio_painsounds","1.1","bipbip")
is_biomod_active() ? plugin_init2() : pause("ad")
}

public plugin_init2() {
cvar_primattack = register_cvar("bh_pasounds","1")

cvar_moaningdelay = register_cvar("bh_moaningdelay", "10")

RegisterHam(Ham_Player_PostThink, "player",  "bacon_prethink", 1)
register_forward(FM_EmitSound, "fwd_emitsound")
}
public client_connect(id) {
g_class[id]=0
g_oldtalk[id]=0
}

public eCurWeapon(id) {
if (get_gametime() > g_old_pa[id]) {
primaryattack(id)
g_old_pa[id] = get_gametime()+2.5;
}
}
public primaryattack(id) if (is_user_alive(id)) {
if (get_gametime() > g_old_pa[id]) {
if (is_user_zombie(id)) {
switch(g_class[id]) {
case 0: {
engfunc(EngFunc_EmitSound, id, CHAN_VOICE, zom1_attack[_random(id, sizeof zom1_attack)], 1.0, ATTN_NORM, 0, PITCH_NORM);
}
case 1: {
engfunc(EngFunc_EmitSound, id, CHAN_VOICE, zom2_attack[_random(id, sizeof zom2_attack)], 1.0, ATTN_NORM, 0, PITCH_NORM);
}
case 2: {
engfunc(EngFunc_EmitSound, id, CHAN_VOICE, zom3_attack[_random(id, sizeof zom3_attack)], 1.0, ATTN_NORM, 0, PITCH_NORM);
}
}
}
g_old_pa[id] = get_gametime()+0.5;
}
}
public event_infect(victim, attacker) {
if (attacker == 0) {
client_cmd(victim,"spk %s", g_first_zombie_sounds[random_num(0, sizeof g_first_zombie_sounds - 1)])
}
g_class[victim] = random_num(0,2)
}


public plugin_precache() {
register_forward(FM_PrecacheSound, "dontprecache")

new i = 0;

for(i = 0; i < sizeof g_attack_hit; i++)
precache_sound(g_attack_hit[i])

for(i = 0; i < sizeof g_attack_swipe; i++)
precache_sound(g_attack_swipe[i])

for(i = 0; i < sizeof zom1_attack; i++)
precache_sound(zom1_attack[i])
for(i = 0; i < sizeof zom2_attack; i++)
precache_sound(zom2_attack[i])
for( i = 0; i < sizeof zom3_attack; i++)
precache_sound(zom3_attack[i])

for(i = 0; i < sizeof g_zombie_die_sounds;  i++) precache_sound(g_zombie_die_sounds[i])

for(i = 0; i < sizeof g_speech; i++)
precache_sound(g_speech[i])

for(i = 0; i < sizeof g_first_zombie_sounds; i++)
precache_sound(g_first_zombie_sounds[i])

}

public bacon_prethink(iPlayer)
{
if(is_user_alive(iPlayer) ) {
if ((pev(iPlayer, pev_button) & IN_ATTACK) && get_pcvar_num(cvar_primattack)) primaryattack(iPlayer);
if (is_user_zombie(iPlayer)) {
if ( get_gametime() > g_moaning[iPlayer]) {
static Float: origin[3]
pev(iPlayer, pev_origin, origin)
static ent ; ent = engfunc(EngFunc_FindEntityInSphere, iPlayer, origin, 250.0)
if (ent) {
engfunc(EngFunc_EmitSound, iPlayer, CHAN_VOICE, g_speech[_random(iPlayer, sizeof g_speech)], random_float(0.7, 1.0), ATTN_NORM, 0, PITCH_NORM);
g_moaning[iPlayer] = get_gametime() + random_float(0.0,5.0) + float(get_pcvar_num(cvar_moaningdelay));
}
}
}
}
}
public fwd_emitsound(id, channel, sample[], Float:volume, Float:attn, flag, pitch)
{
if(!is_user_connected(id) )
return FMRES_IGNORED

if (is_user_zombie(id)) {
g_players[id] = get_gametime() + 1.0;

//client_print(0,print_chat,"sample %s", sample)
if (sample[0] == 'z' && sample[1] == 'm')
return FMRES_IGNORED

if(sample[8] == 'k' && sample[9] == 'n' && sample[10] == 'i')
{
if(sample[14] == 'h' && sample[15] == 'i' && sample[16] == 't' || sample[14] == 's' && sample[15] == 't' && sample[16] == 'a')
{
if(sample[17] == 'w' && sample[18] == 'a' && sample[19] == 'l') {
emit_sound(id, CHAN_WEAPON, g_attack_swipe[_random(id, sizeof g_attack_swipe)], volume, attn, flag, pitch)
} else {
emit_sound(id, CHAN_WEAPON, g_attack_hit[_random(id, sizeof g_attack_hit)], volume, attn, flag, pitch)
}

return FMRES_SUPERCEDE
}
}
else if(sample[7] == 'd' && (sample[8] == 'i' && sample[9] == 'e' || sample[12] == '6'))
{
emit_sound(id, channel, g_zombie_die_sounds[_random(id, sizeof g_zombie_die_sounds)], volume, attn, flag, pitch)
return FMRES_SUPERCEDE
}
}

return FMRES_IGNORED
}

stock _random(id, maxnum) {
static luck
luck = random_num(0, maxnum - 1)
while (luck==g_oldtalk[id]) {
luck = random_num(0, maxnum - 1)
}
g_oldtalk[id] = luck
return luck;
}
public dontprecache(file[]) {

if(file[0]=='h' && file[1]=='o' && file[2]=='s')
return FMRES_SUPERCEDE

return FMRES_IGNORED
}

VersionAuthorRequirementsMod for
1.0bipbipAMX Mod X, Biohazard, FakeMeta_Util, HamSandwichBiohazard
Powered By MyBB Group © 2026
Made with by ZMBIO.RO