Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- Call of Duty: Black Ops mod
- ****CREDITS****
- OvidiuS - for his help and support
- Dozvoljena je svaka vrsta modifikovanja ovog plugina,
- samo bih vas molio da ne menjate autora,i da ga ne prodajete.
- */
- #include < amxmodx >
- #include < hamsandwich >
- #include < fakemeta >
- #include < engine >
- #include < nvault >
- #include < cod_bo >
- #define max_level 20000
- #define HUD 672
- #define TASKID 673
- #define TASKID2 676
- #define TASKID_UNDRUG 674
- #define TASK_SCAVENGER 1256
- #define TASK_ITEMID 1264
- #define fm_create_entity(%1) engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, %1))
- #define is_user_valid(%1) (1 <= %1 <= g_MaxPlayers)
- #define fm_drop_to_floor(%1) engfunc(EngFunc_DropToFloor,%1)
- #define fm_remove_entity(%1) engfunc(EngFunc_RemoveEntity, %1)
- #define fm_dispatchspawn(%1) dllfunc(DLLFunc_Spawn, %1)
- #define SYS_DATA ) ;
- #define FRAG_GRENADE 1111
- #define SEMTEX_GRENADE 2222
- #define FLASHBANG_TASK 12321
- #define CS_FIRST_ZOOM 0x28
- #define CS_SECOND_AWP_ZOOM 0xA
- #define CS_NO_ZOOM 0x5A
- new const Ranks[][]=
- {
- "Razvodnik",
- "Desetar",
- "Mladji vodnik",
- "Vodnik",
- "Stariji vodnik",
- "Stariji vodnik I",
- "Zastavnik",
- "Zastavnik I",
- "Potporucnik",
- "Porucnik",
- "Kapetan",
- "Major",
- "Potpukovnik",
- "Pukovnik",
- "Brigadni General",
- "General-Major",
- "General-Potpukovnik",
- "General"
- }
- new const ClassNames[ ][ ] = {
- "-",
- "Spetsnaz",
- "Commandos",
- "Agent 47",
- "Camper",
- "Delta squad",
- "F.B.I",
- "S.W.A.T.",
- "Hitman",
- "Marine",
- "Support",
- "\yDestroyer\r[VIP]\w",
- "\yRiot Shield\r[VIP]\w",
- "\yArcher\r[VIP]\w",
- "\yFlamethrower\r[VIP]\w"
- }
- new frakcije[][]={
- "Nema",
- "\r[\wFree\r]\w Classes",
- "\r[\yVIP\r]\w Classes"
- }
- enum { NONE = 0,free,prem}
- new const ako_pripada[]={
- NONE,
- free,
- free,
- free,
- free,
- free,
- free,
- free,
- free,
- free,
- free,
- prem,
- prem,
- prem,
- prem
- }
- new frakcija_igraca[33]
- new const ClassDesc[ ][ ] =
- {
- "-",
- "\y[AK+Deagle]",
- "\y[M4+Deagle]",
- "\y[AWP+P228]",
- "\y[Scout+Fiveseven]",
- "\y[Galil+Deagle]",
- "\y[Famas+p228]",
- "\y[SG552+Deagle]",
- "\y[SG550+Fiveseven]",
- "\y[MAC10+Deagle]",
- "\y[MP5+Deagle]",
- "\y[Deathmachine]",
- "\y[Shield+Double Dmg]",
- "\y[Crossbow]",
- "\y[NOT FINISHED]"
- }
- new const PerkNames[ ][ ] = {
- "-", "Scavenger", "Last stand[Nedovrseno]", "Marksman Pro", "Recon", "Sleight of a hand", "Lightweight", "One Man Army" }
- new const PerkDesc[ ][ ] = {
- "-",
- "You can resupply from dead friends/enemies",
- "You get extra life",
- "You have reduced recoil",
- "110% damage",
- "You reload your weapons faster",
- "Your gravity is lower,also fall damage is lower",
- "Your ammo is getting full after each reload"
- }
- new const ClassWeapons[ ][ ] =
- {
- "", "weapon_ak47",
- "weapon_m4a1", "weapon_awp",
- "weapon_scout", "weapon_galil",
- "weapon_famas", "weapon_sg552",
- "weapon_sg550", "weapon_mac10",
- "weapon_mp5navy", "",
- "weapon_shield", "",
- ""
- }
- new const ClassSecondary[ ][ ] =
- {
- "",
- "weapon_deagle",
- "weapon_deagle",
- "weapon_p228",
- "weapon_fiveseven",
- "weapon_deagle",
- "weapon_p228",
- "weapon_deagle",
- "weapon_fiveseven",
- "weapon_deagle",
- "weapon_deagle",
- "weapon_p228",
- "weapon_fiveseven",
- "weapon_deagle",
- "weapon_usp"
- }
- new const ClassEquip[ ][ ] =
- {
- "", "weapon_flashbang",
- "weapon_flashbang", "weapon_smokegrenade",
- "weapon_hegrenade", "weapon_hegrenade",
- "weapon_flashbang", "weapon_smokegrenade",
- "weapon_hegrenade", "weapon_hegrenade",
- "weapon_flashbang", "weapon_smokegrenade",
- "weapon_fiveseven", "weapon_smokegrenade",
- "weapon_smokegrenade"
- }
- new const start_sounds[8][] =
- {
- "sound/cod_bo/match_start02.mp3", "sound/cod_bo/match_start03.mp3",
- "sound/cod_bo/match_start04.mp3", "sound/cod_bo/match_start05.mp3",
- "sound/cod_bo/match_start06.mp3", "sound/cod_bo/match_start07.mp3",
- "sound/cod_bo/match_start08.mp3", "sound/cod_bo/match_start09.mp3"
- }
- new const tension_sounds[6][] =
- {
- "sound/cod_bo/match_tension01.mp3", "sound/cod_bo/match_tension02.mp3",
- "sound/cod_bo/match_tension03.mp3", "sound/cod_bo/match_tension04.mp3",
- "sound/cod_bo/match_tension05.mp3", "sound/cod_bo/match_tension06.mp3"
- }
- new const win_sounds[2][] =
- {
- "sound/cod_bo/match_win01.wav", "sound/cod_bo/match_win02.wav"
- }
- new const lose_sounds[2][] =
- {
- "sound/cod_bo/match_lose01.wav", "sound/cod_bo/match_lose02.wav"
- }
- new const maxAmmo[31]={0,52,0,90,1,32,1,100,90,1,120,100,100,90,90,90,100,120,30,120,200,32,90,120,90,2,35,90,90,0,100};
- new const gMaxRanks[] = { 1, 2, 3, 5, 8, 16, 24, 32, 64, 75, 128, 156, 192, 201, 212, 226, 236, 251, 20000 }
- new class [ 33 ],
- new_class [ 33 ],
- perk [ 33 ],
- level [ 33 ],
- PlrPrestige [ 33 ],
- new_perk [ 33 ],
- experience [ 33 ],
- CodPoints [ 33 ],
- semtex [ 33 ],
- g_Lethal [ 33 ],
- tomahawks [ 33 ],
- claymores [ 33 ],
- Killstreak [ 33 ],
- Float:last_clmr [ 33 ],
- bool:slct_lethal[ 33 ],
- Float:last_thrw [ 33 ],
- bool:Drugged [ 33 ],
- bool:has_lethal [ 33 ],
- Float:vOrigin [ 3 ],
- Float:last_rocket[ 33 ],
- rockets[ 33 ]
- enum
- {
- LETHAL_SEMTEX = 0,
- LETHAL_CLAYMORE = 1,
- LETHAL_TOMAHAWK = 2,
- LETHAL_BLIND = 3,
- LETHAL_FLASH = 4,
- LETHAL_FRAG = 5,
- LETHAL_GLFIRE = 6
- }
- new const names[ ][ ] = { "Semtex", "Claymore", "Tomahawk", "Blind", "Flash", "Frag", "Grenade Launcher", "-" }
- new g_FovMsg,
- cod_killcp,
- g_MaxPlayers,
- g_KillXp,
- g_TeamKillXp,
- pcvar_max,
- g_sync1,
- g_sync2,
- g_Vault,
- g_Txp,
- g_CTxp,
- sprite_blast,
- sprite_trail,
- clmr_max = 2,
- sprite_beam
- #define RELOAD_RATIO 0.4
- const NOCLIP_WPN_BS = ((1<<2)|(1<<CSW_HEGRENADE)|(1<<CSW_SMOKEGRENADE)|(1<<CSW_FLASHBANG)|(1<<CSW_KNIFE)|(1<<CSW_C4))
- const SHOTGUNS_BS = ((1<<CSW_M3)|(1<<CSW_XM1014))
- // weapons offsets
- const m_pPlayer = 41
- const m_iId = 43
- const m_flNextPrimaryAttack = 46
- const m_flNextSecondaryAttack = 47
- const m_flTimeWeaponIdle = 48
- const m_iPrimaryAmmoType = 49
- const m_iClip = 51
- const m_fInReload = 54
- const m_flNextAttack = 83
- const m_pActiveItem = 373
- const m_rgAmmo_Slot0 = 376
- const OFFSET_AWM_AMMO = 377
- const OFFSET_SCOUT_AMMO = 378
- const OFFSET_PARA_AMMO = 379
- const OFFSET_FAMAS_AMMO = 380
- const OFFSET_M3_AMMO = 381
- const OFFSET_USP_AMMO = 382
- const OFFSET_FIVESEVEN_AMMO = 383
- const OFFSET_DEAGLE_AMMO = 384
- const OFFSET_P228_AMMO = 385
- const OFFSET_GLOCK_AMMO = 386
- const OFFSET_FLASH_AMMO = 387
- const OFFSET_HE_AMMO = 388
- const OFFSET_SMOKE_AMMO = 389
- const OFFSET_C4_AMMO = 390
- const OFFSET_LINUX = 5
- stock const Float:g_fDelay[CSW_P90+1] = {
- 0.00, 2.70, 0.00, 2.00, 0.00, 0.55, 0.00, 3.15, 3.30, 0.00, 4.50,
- 2.70, 3.50, 3.35, 2.45, 3.30, 2.70, 2.20, 2.50, 2.63, 4.70,
- 0.55, 3.05, 2.12, 3.50, 0.00, 2.20, 3.00, 2.45, 0.00, 3.40
- }
- stock const g_iReloadAnims[CSW_P90+1] = {
- -1, 5, -1, 3, -1, 6, -1, 1, 1, -1, 14,
- 4, 2, 3, 1, 1, 13, 7, 4, 1, 3,
- 6, 11, 1, 3, -1, 4, 1, 1, -1, 1}
- stock const g_iDftMaxClip[CSW_P90+1] = {
- -1, 13, -1, 10, 1, 7, 1, 30, 30, 1, 30,
- 20, 25, 30, 35, 25, 12, 20, 10, 30, 100,
- 8 , 30, 30, 20, 2, 7, 30, 30, -1, 50}
- public plugin_init( )
- {
- register_plugin("COD: Black Ops", "1.0c", "Megastorm & ekipa KGB foruma")
- register_cvar("cod_black_ops", "1.0c", (FCVAR_SERVER|FCVAR_SPONLY) )
- g_Vault = nvault_open("cod_bo")
- register_forward(FM_CmdStart, "fw_CmdStart" );
- register_forward(FM_EmitSound, "forward_emit_sound" )
- register_forward(FM_EmitSound, "emit_snd" );
- register_forward(FM_Touch, "fw_Touch1" )
- register_forward(FM_Touch, "fw_Touch2" )
- register_forward(FM_Touch, "fw_Touch3" )
- register_forward(FM_Touch, "fw_Touch4" )
- register_touch("Rocket", "*", "fw_TouchRocket" )
- RegisterHam(Ham_Spawn, "player","Start", 1 );
- RegisterHam(Ham_TakeDamage, "player","fw_TakeDamage" );
- new szWeapon[17]
- for(new i=1; i<=CSW_P90; i++)
- {
- if( !(NOCLIP_WPN_BS & (1<<i)) && get_weaponname(i, szWeapon, charsmax(szWeapon)) )
- {
- if( !(SHOTGUNS_BS & (1<<i)) )
- {
- RegisterHam(Ham_Weapon_Reload, szWeapon, "Weapon_Reload_Post", 1)
- }
- }
- }
- register_event( "CurWeapon", "event_currweapon", "be", "1=1" );
- register_event( "DeathMsg", "player_death", "ade" );
- register_event( "HLTV", "event_new_round", "a", "1=0", "2=0" );
- register_event( "HLTV", "event_new_round2", "a", "1=0", "2=0" );
- register_event( "Damage", "event_damage", "b", "2!0", "3=0", "4!0" );
- register_logevent( "eRoundStart", 2, "1=Round_Start" );
- register_clcmd( "nightvision", "Meni" )
- register_clcmd( "say /class", "ChooseClass" )
- register_clcmd( "say /perk", "ChoosePerk" )
- register_clcmd( "say /heal", "fw_Heal" )
- register_clcmd( "say /desc", "PerkDescription" )
- register_clcmd( "say /lethal", "ChooseLethal" )
- register_clcmd( "say /prestige","ShowPrestige_menu" )
- register_clcmd( "say /menu", "Meni" )
- register_clcmd( "say /klasa", "ChooseClass" )
- register_clcmd( "say /predmet", "ChoosePerk" )
- register_clcmd( "say /opis", "PerkDescription" )
- register_clcmd( "say /oprema", "ChooseLethal" )
- register_clcmd( "say /vips", "print_viplist" )
- g_TeamKillXp = register_cvar("cod_teamkillxp", "100" )
- g_KillXp = register_cvar("cod_killxp" , "50" );
- cod_killcp = register_cvar("cod_killcp" , "3" );
- pcvar_max = register_cvar("cod_maxteamxp","20000")
- g_sync1 = CreateHudSyncObj()
- g_sync2 = CreateHudSyncObj()
- g_FovMsg = get_user_msgid("SetFOV")
- register_message( get_user_msgid( "SayText" ),"Message_SayText" );
- register_message(get_user_msgid("Health"), "message_Health");
- register_forward(FM_SetModel, "fw_SetModel" )
- g_MaxPlayers = get_maxplayers()
- }
- public plugin_precache( )
- {
- precache_sound( "cod_bo/heal.wav" )
- precache_sound( "cod_bo/touch.wav" )
- precache_sound( "cod_bo/tk_throw.wav" )
- precache_sound( "cod_bo/tk_hit.wav" )
- precache_sound( "weapons/c4_beep4.wav" )
- precache_model( "models/w_battery.mdl" )
- precache_model( "models/w_batteryt.mdl" )
- for(new i = 0; i <= 7; i++)
- precache_generic(start_sounds[i])
- for(new i = 0; i <= 5; i++)
- precache_generic(tension_sounds[i])
- for(new i = 0; i <= 1; i++)
- precache_generic(win_sounds[i])
- for(new i = 0; i <= 1; i++)
- precache_generic(lose_sounds[i])
- precache_model("models/cod_bo/w_tknife.mdl");
- sprite_blast = precache_model("sprites/dexplo.spr")
- sprite_trail = precache_model("sprites/smoke.spr");
- precache_model("models/cod_bo/v_claymore.mdl")
- precache_model("models/cod_bo/p_claymore.mdl")
- precache_model("models/cod_bo/w_claymore.mdl")
- sprite_blast = precache_model("sprites/dexplo.spr");
- sprite_beam = precache_model("sprites/zbeam4.spr")
- precache_model("models/rpgrocket.mdl");
- disable_buyzone()
- }
- public CreateRockets(id)
- {
- if(!rockets[id])
- {
- client_print(id, print_center, "Vec ste iskoristili sve rakete!");
- return PLUGIN_CONTINUE;
- }
- if(last_rocket[id] + 2.0 > get_gametime())
- {
- client_print(id, print_center, "Mozate da koristite raketu za 2 sekunde!");
- return PLUGIN_CONTINUE;
- }
- if (is_user_alive(id))
- {
- last_rocket[id] = get_gametime();
- rockets[id]--;
- new Float: Origin[3], Float: vAngle[3], Float: Velocity[3];
- pev(id, pev_v_angle,vAngle)
- pev(id, pev_origin, Origin)
- new Ent = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, "info_target"))
- set_pev(Ent, pev_classname, "Rocket")
- engfunc(EngFunc_SetModel,Ent, "models/rpgrocket.mdl");
- vAngle[0] *= -1.0;
- set_pev(Ent, pev_origin, Origin)
- set_pev(Ent, pev_angles, vAngle)
- set_pev(Ent, pev_effects, 2)
- set_pev(Ent, pev_solid, SOLID_BBOX)
- set_pev(Ent, pev_movetype, MOVETYPE_TOSS)
- set_pev(Ent, pev_owner, id)
- velocity_by_aim(id, 1500, Velocity)
- set_pev(Ent, pev_velocity, Velocity)
- set_pev(Ent, pev_gravity, 1.5)
- set_pev(Ent, pev_effects, EF_DIMLIGHT)
- message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
- write_byte(22)
- write_short(Ent)
- write_short(sprite_beam)
- write_byte(45)
- write_byte(4)
- write_byte(255)
- write_byte(80)
- write_byte(50)
- write_byte(25)
- message_end()
- }
- return PLUGIN_CONTINUE;
- }
- public fw_TouchRocket(ent)
- {
- if ( !is_valid_ent(ent))
- return;
- new attacker = pev(ent, pev_owner);
- new Float:fOrigin[3];
- pev(ent, pev_origin, fOrigin);
- new iOrigin[3];
- for(new i=0;i<3;i++)
- iOrigin[i] = floatround(fOrigin[i]);
- message_begin(MSG_BROADCAST,SVC_TEMPENTITY, iOrigin);
- write_byte(TE_EXPLOSION);
- write_coord(iOrigin[0]);
- write_coord(iOrigin[1]);
- write_coord(iOrigin[2]);
- write_short(sprite_blast);
- write_byte(32); // scale
- write_byte(20); // framerate
- write_byte(0);// flags
- message_end();
- new entlist[33];
- new numfound = find_sphere_class(ent, "player", 230.0, entlist, 32);
- for (new i=0; i < numfound; i++)
- {
- new pid = entlist[i];
- if (!is_user_alive(pid) || get_user_team(attacker) == get_user_team(pid))
- continue;
- ExecuteHam(Ham_TakeDamage, pid, ent, attacker, 55.0+(random_float(5.0, 50.0)) , 1);
- }
- remove_entity(ent);
- }
- public fw_Touch1(ent, id)
- {
- if(!pev_valid(ent))
- return FMRES_IGNORED
- new class[32]
- pev(ent, pev_classname, class, charsmax(class))
- if(!equal(class, "Tomahawk"))
- return FMRES_IGNORED
- new attacker = pev(ent, pev_owner);
- new Float:entOrigin[3]
- pev(ent, pev_origin, entOrigin);
- entOrigin[2] += 1.0;
- new victim = -1
- while((victim = engfunc(EngFunc_FindEntityInSphere, victim, entOrigin, 30.0)) != 0)
- {
- if(!is_user_alive(victim) || get_user_team(attacker) == get_user_team(victim))
- continue;
- ExecuteHam(Ham_TakeDamage, victim, ent, attacker, 120.0 , 1);
- }
- engfunc(EngFunc_RemoveEntity ,ent);
- return FMRES_IGNORED
- }
- public fw_Touch2(ent, id)
- {
- if(!pev_valid(ent))
- return FMRES_IGNORED
- new class[32]
- pev(ent, pev_classname, class, charsmax(class))
- if(!equal(class, "Tomahawk"))
- return FMRES_IGNORED
- new Float:entOrigin[3]
- pev(ent, pev_origin, entOrigin);
- entOrigin[2] += 1.0;
- new attacker = pev(ent, pev_owner)
- if (get_user_team(attacker) != get_user_team(id))
- {
- new Float:fOrigin[3];
- pev(ent, pev_origin, fOrigin)
- new iOrigin[3];
- for(new i=0;i<3;i++)
- iOrigin[i] = floatround(fOrigin[i]);
- message_begin(MSG_BROADCAST,SVC_TEMPENTITY, iOrigin);
- write_byte(TE_EXPLOSION);
- write_coord(iOrigin[0]);
- write_coord(iOrigin[1]);
- write_coord(iOrigin[2]);
- write_short(sprite_blast);
- write_byte(32); // scale
- write_byte(20); // framerate
- write_byte(0);// flags
- message_end();
- new entlist[33];
- new numfound = engfunc(EngFunc_FindEntityInSphere, "player", 90.0, entlist, charsmax(entlist))
- for (new i=0; i < numfound; i++)
- {
- new pid = entlist[i];
- if (!is_user_alive(pid) || get_user_team(attacker) == get_user_team(pid))
- continue;
- ExecuteHam(Ham_TakeDamage, pid, ent, attacker, 60.0+random_float(5.0, 50.0) , 1);
- }
- engfunc(EngFunc_RemoveEntity ,ent);
- }
- engfunc(EngFunc_RemoveEntity ,ent);
- return FMRES_IGNORED
- }
- public fw_Touch3(ent, id)
- {
- if (!pev_valid(ent) || !is_valid_player(id))
- return FMRES_IGNORED
- new classname[32]
- pev(ent, pev_classname, classname, 31)
- if (!equal(classname, "Scavenger_box"))
- return FMRES_IGNORED
- new weapons[ 32 ];
- new weaponsnum;
- get_user_weapons( id, weapons, weaponsnum );
- if( is_user_alive( id ) && perk[ id ] == 1)
- {
- for( new i=0; i<weaponsnum; i++ )
- if(maxAmmo[ weapons[ i ] ] > 0)
- fm_set_user_bpammo( id, weapons[ i ], maxAmmo[ weapons[ i ] ] );
- emit_sound(ent, CHAN_ITEM, "cod_bo/touch.wav", 1.0, ATTN_NORM, 0, PITCH_NORM);
- set_pev(ent, pev_effects, EF_NODRAW)
- set_pev(ent, pev_solid, SOLID_NOT)
- engfunc(EngFunc_RemoveEntity ,ent);
- }
- return FMRES_IGNORED
- }
- public fw_Touch4(nade, id)
- {
- if(!pev_valid(nade))
- return FMRES_IGNORED
- new owner = pev( nade, pev_owner )
- if(!is_user_alive(id) || !is_user_alive(owner) || class[ id ] == 8)
- return FMRES_IGNORED
- if (!is_nade_bounce(nade) || g_Lethal[ owner ] != LETHAL_SEMTEX || is_nade_excluded(nade))
- return FMRES_IGNORED
- emit_sound(nade, CHAN_ITEM, "weapons/c4_beep4.wav", 1.0, ATTN_NORM, 0, PITCH_NORM);
- set_pev(nade, pev_aiment, id)
- set_pev(nade, pev_movetype, MOVETYPE_FOLLOW)
- set_pev(nade, pev_sequence, 0)
- return FMRES_IGNORED
- }
- public ClaymoreTouch2(ent)
- {
- if(!pev_valid(ent))
- return PLUGIN_HANDLED;
- new attacker = pev(ent, pev_owner);
- new Float:fOrigin[3];
- pev(ent, pev_origin, fOrigin);
- new iOrigin[3];
- for(new i=0;i<3;i++)
- iOrigin[i] = floatround(fOrigin[i]);
- message_begin(MSG_BROADCAST,SVC_TEMPENTITY, iOrigin);
- write_byte(TE_EXPLOSION);
- write_coord(iOrigin[0]);
- write_coord(iOrigin[1]);
- write_coord(iOrigin[2]);
- write_short(sprite_blast);
- write_byte(32); // scale
- write_byte(20); // framerate
- write_byte(0);// flags
- message_end();
- new entlist[33];
- /*new numfound = find_sphere_class(ent,"player", 90.0 ,entlist, 32);*/
- new numfound = engfunc(EngFunc_FindEntityInSphere, "player", 90.0, entlist, charsmax(entlist))
- for (new i=0; i < numfound; i++)
- {
- new pid = entlist[i];
- if (!is_user_alive(pid) || get_user_team(attacker) == get_user_team(pid))
- continue;
- ExecuteHam(Ham_TakeDamage, pid, ent, attacker, 60.0+random_float(5.0, 50.0) , 1);
- }
- engfunc(EngFunc_RemoveEntity ,ent);
- return PLUGIN_CONTINUE;
- }
- public Weapon_Reload_Post(iEnt)
- {
- new owner = pev(iEnt, pev_owner)
- if(perk[ owner ] == 5)
- {
- if( get_pdata_int(iEnt, m_fInReload, 4) )
- {
- new id = get_pdata_cbase(iEnt, m_pPlayer, 4)
- new Float:fDelay = g_fDelay[get_pdata_int(iEnt, m_iId, 4)] * RELOAD_RATIO
- set_pdata_float(id, m_flNextAttack, fDelay, 5)
- set_pdata_float(iEnt, m_flTimeWeaponIdle, fDelay + 0.5, 4)
- set_pev(id, pev_frame, 200.0)
- }
- }
- }
- public plugin_natives()
- {
- register_native("cod_get_user_cp", "native_player_cpoints", 1)
- register_native("cod_set_user_cp", "native_set_player_cpoints", 1)
- register_native("cod_get_user_lethal", "native_get_user_lethal", 1)
- register_native("cod_get_user_class", "native_get_user_class", 1)
- }
- public disable_buyzone() {
- new ent = engfunc(EngFunc_FindEntityByString, -1, "classname", "info_map_parameters");
- if(!ent) {
- ent = engfunc(EngFunc_CreateNamedEntity,engfunc(EngFunc_AllocString,"info_map_parameters"))
- }
- //DispatchKeyValue(ent,"buying","3");
- engfunc(EngFunc_AllocString, "buying", "3")
- fm_dispatchspawn(ent);
- }
- public print_viplist(id)
- set_task(0.1, "show_users", id)
- public show_users(user)
- {
- new adminnames[33][32]
- new message[256]
- new id, count, x, len
- for(id = 1 ; id <= g_MaxPlayers ; id++)
- if(is_user_connected(id))
- if(get_user_flags(id) & ADMIN_LEVEL_H)
- get_user_name(id, adminnames[count++], 31)
- len = format(message, 255, "^x04ONLINE VIP-ovi su:^x03 ")
- if(count > 0) {
- for(x = 0 ; x < count ; x++) {
- len += format(message[len], 255-len, "%s%s ", adminnames[x], x < (count-1) ? ", ":"")
- if(len > 96 ) {
- len = format(message, 255, "^x04 ")
- }
- }
- print_message(user, message)
- }
- else {
- len += format(message[len], 255-len, "Nema online VIP-ova")
- print_message(user, message)
- }
- }
- print_message(id, msg[]) {
- message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("SayText"), {0,0,0}, id)
- write_byte(id)
- write_string(msg)
- message_end()
- }
- public CreateClaymore(id)
- {
- if(!claymores[id])
- {
- client_print(id, print_center, "Vec ste iskoristili sve mine!");
- return PLUGIN_HANDLED;
- }
- engclient_cmd(id, "weapon_knife")
- ChangeModelsSatchel(id)
- UTIL_PlayWeaponAnimation(id, 1)
- set_task(0.2 ,"CreateBomb", id, _, _, _)
- claymores[id]--;
- return PLUGIN_CONTINUE
- }
- public CreateBomb(id)
- {
- UTIL_PlayWeaponAnimation(id, 2)
- set_task(0.5 ,"return_weapon", id, _, _, _)
- }
- public return_weapon(id)
- {
- if(last_clmr[id] + 2.0 > get_gametime())
- {
- client_print(id, print_chat,"Mozes da postavis samo 1 claymore svake 2 sekunde")
- return PLUGIN_CONTINUE;
- }
- emit_sound(id, CHAN_WEAPON, "weapons/c4_plant.wav", VOL_NORM, ATTN_NORM, 0, PITCH_NORM)
- new Float:origin[3];
- new ent = fm_create_entity("info_target");
- set_pev(ent, pev_classname, "Claymore")
- set_pev(ent, pev_owner, id)
- set_pev(ent, pev_movetype, MOVETYPE_TOSS)
- set_pev(ent, pev_origin, origin);
- set_pev(ent, pev_solid, SOLID_BBOX)
- last_clmr[id] = get_gametime()
- set_pev(ent, pev_model, "models/cod_bo/w_claymore.mdl");
- set_pev(ent, pev_size, Float:{-16.0,-16.0,0.0},Float:{10.0,10.0,2.0})
- fm_drop_to_floor(ent);
- set_pev(ent, pev_nextthink, get_gametime() + 0.01) ;
- fm_set_rendering(ent,kRenderFxNone, 0,0,0, kRenderTransTexture,50) ;
- engclient_cmd(id, "weapon_knife")
- set_pev(id, pev_viewmodel2, "models/v_knife.mdl")
- set_pev(id, pev_weaponmodel2, "models/p_knife.mdl")
- return PLUGIN_HANDLED
- }
- /*0HP BUG Fix*/
- public message_Health(msgid, dest, id)
- {
- if(!is_user_alive(id))
- return PLUGIN_CONTINUE;
- static hp;
- hp = get_msg_arg_int(1);
- if(hp > 255 && (hp % 256) == 0)
- set_msg_arg_int(1, ARG_BYTE, ++hp);
- return PLUGIN_CONTINUE;
- }
- /*0HP BUG Fix*/
- public Meni(id)
- {
- if(!is_user_connected(id))
- return PLUGIN_HANDLED
- new menu = menu_create("Izaberi item:","Items_H")
- menu_additem(menu, "\wKlasa | Class")
- menu_additem(menu, "\wPredmet | Perk")
- menu_additem(menu, "\wLethal")
- menu_additem(menu, "\wDescription | Opis")
- menu_additem(menu, "\wPrestige")
- menu_additem(menu, "\wExtra items")
- menu_setprop(menu, MPROP_EXIT,MEXIT_ALL)
- menu_display(id,menu)
- return PLUGIN_CONTINUE
- }
- public Items_H(id, menu, item)
- {
- if(item == MENU_EXIT)
- {
- menu_destroy(menu)
- }
- switch(item)
- {
- case 0: ChooseClass( id );
- case 1: ChoosePerk( id );
- case 2: ChooseLethal( id );
- case 3: PerkDescription( id )
- case 4: ShowPrestige_menu( id )
- case 5: eitem_menu( id )
- }
- }
- public native_player_cpoints(id)
- {
- if (!is_user_valid(id))
- {
- log_error(AMX_ERR_NATIVE, "[COD:BO] Nevazeci igrac (%d)", id)
- return -1;
- }
- return CodPoints[id];
- }
- public native_get_user_lethal(id)
- {
- if (!is_user_valid(id))
- {
- log_error(AMX_ERR_NATIVE, "[COD:BO] Nevazeci igrac (%d)", id)
- return -1;
- }
- return g_Lethal[ id ];
- }
- public native_get_user_class(id)
- {
- if (!is_user_valid(id))
- {
- log_error(AMX_ERR_NATIVE, "[COD:BO] Nevazeci igrac (%d)", id)
- return -1;
- }
- return class[ id ];
- }
- public native_set_player_cpoints(id, amount)
- {
- if (!is_user_valid(id))
- {
- log_error(AMX_ERR_NATIVE, "[COD:BO] Nevazeci igrac (%d)", id)
- return false;
- }
- CodPoints[id] = amount;
- return true;
- }
- public BlowItUp(id)
- {
- new menu,newmenu,menupage
- player_menu_info(id,menu,newmenu,menupage);
- if(menu > 0 || newmenu != -1)
- return PLUGIN_CONTINUE;
- new szTmp[64];
- new pMenuExplode = menu_create("Choose action:", "BlowUp_H")
- formatex(szTmp, charsmax(szTmp), "Postavi minu\w[\y%d\w]", claymores[id])
- menu_additem(pMenuExplode, szTmp);
- formatex(szTmp, charsmax(szTmp), "Aktiviraj mine")
- menu_additem(pMenuExplode, szTmp);
- menu_setprop(pMenuExplode, MPROP_NUMBER_COLOR,"\r")
- menu_display(id, pMenuExplode);
- return PLUGIN_CONTINUE;
- }
- public BlowUp_H(id, menu, item)
- {
- if(item == MENU_EXIT || !is_user_alive(id))
- {
- menu_destroy(menu);
- return PLUGIN_CONTINUE;
- }
- switch(item)
- {
- case 0:
- {
- CreateClaymore(id)
- }
- case 1:
- {
- UTIL_PlayWeaponAnimation(id, 3)
- new iEnt = -1, iOwner;
- while((iEnt = engfunc(EngFunc_FindEntityByString,iEnt, "classname", "Claymore")))
- {
- iOwner = pev(iEnt, pev_owner);
- if(iOwner == id)
- {
- ClaymoreTouch2(iEnt);
- }
- }
- }
- }
- menu_destroy(menu);
- BlowItUp(id)
- return PLUGIN_CONTINUE;
- }
- public ShowPrestige_menu(id)
- {
- if(level[ id ] < 80)
- {
- client_print(id, print_chat, "You can't prestige until you get to level 80")
- return PLUGIN_HANDLED
- }
- new szItem[ 255 ]
- formatex(szItem, charsmax(szItem),"\yDo you want to prestige?^n*It will reset your levels^nbut increase your prestige*")
- new menu = menu_create(szItem,"Menu_HH")
- menu_additem(menu, "Yes")
- menu_additem(menu, "No")
- menu_display(id,menu)
- return PLUGIN_CONTINUE
- }
- public Menu_HH(id, menu, item)
- {
- switch (item)
- {
- case 0: PlayerPrestige(id)
- case 1:
- {
- client_print(id, print_chat, "You denied to prestige. If you wish,you can always prestige with /prestige command")
- return PLUGIN_HANDLED
- }
- }
- return PLUGIN_CONTINUE
- }
- public PlayerPrestige(id)
- {
- new szTmp[64];
- new menu = menu_create("Do you really want to prestige?", "PrestigeMe_H")
- formatex(szTmp, charsmax(szTmp), "Yes")
- menu_additem(menu, szTmp);
- formatex(szTmp, charsmax(szTmp), "No")
- menu_additem(menu, szTmp);
- menu_setprop(menu, MPROP_NUMBER_COLOR,"\r")
- menu_display(id, menu);
- return PLUGIN_CONTINUE;
- }
- public PrestigeMe_H(id, menu, item)
- {
- if(item == MENU_EXIT || !is_user_alive(id))
- {
- menu_destroy(menu);
- return PLUGIN_CONTINUE;
- }
- switch(item)
- {
- case 0:
- {
- experience[ id ] = 2
- level[ id ] = 1
- CheckLvl(id)
- PlrPrestige[ id ]++
- fw_SaveInfo(id)
- }
- case 1:
- {
- menu_destroy(menu)
- return PLUGIN_HANDLED
- }
- }
- menu_destroy(menu);
- return PLUGIN_CONTINUE;
- }
- public emit_snd( id, channel, zvuk[], Float:jacina, Float:att, flags, pitch )
- {
- if( !is_user_alive( id ) )
- return FMRES_IGNORED;
- if( equal( zvuk, "common/wpn_denyselect.wav" ) )
- {
- Throw_knife( id )
- return FMRES_SUPERCEDE;
- }
- return FMRES_IGNORED
- }
- public Throw_knife( id )
- {
- if(rockets[ id ] > 0 && g_Lethal[ id ] == LETHAL_GLFIRE)
- CreateRockets(id)
- if(tomahawks[ id ] > 0 && g_Lethal[ id ] == LETHAL_TOMAHAWK)
- CreateTomahawk( id );
- if(g_Lethal[ id ] == LETHAL_CLAYMORE && claymores[ id ] > 0)
- BlowItUp(id)
- return PLUGIN_HANDLED;
- }
- public CreateTomahawk( id )
- {
- if ( !tomahawks[ id ] )
- {
- client_print( id, print_center, "Nemate vise tomahawka!" );
- return PLUGIN_CONTINUE;
- }
- if( last_thrw[ id ] + 2.0 > get_gametime( ) )
- {
- client_print(id, print_center, "Mozete da bacite samo 1 tomahawk u 2 sekunde!" );
- return PLUGIN_CONTINUE;
- }
- if( is_user_alive( id ) )
- {
- last_thrw[ id ] = get_gametime();
- tomahawks[id]--;
- new Float:Origin[3], Float:Angle[3], Float:Velocity[3];
- pev(id, pev_origin, Origin);
- pev(id, pev_v_angle, Angle);
- velocity_by_aim(id, 1000, Velocity);
- Angle[0] *= -1.0
- new ent = fm_create_entity("info_target")
- set_pev(ent, pev_classname, "Tomahawk");
- engfunc(EngFunc_SetModel, ent, "models/cod_bo/w_tknife.mdl")
- emit_sound(id, CHAN_ITEM, "cod_bo/tk_throw.wav", 1.0, ATTN_NORM, 0, PITCH_NORM);
- set_pev(ent, pev_solid, SOLID_BBOX);
- set_pev(ent, pev_movetype, MOVETYPE_TOSS);
- set_pev(ent, pev_owner, id);
- set_pev(ent, pev_mins, Float:{-1.0, -1.0, -1.0});
- set_pev(ent, pev_maxs, Float:{1.0, 1.0, 1.0});
- set_pev(ent, pev_gravity, 0.37);
- set_pev(ent, pev_origin, Origin);
- set_pev(ent, pev_velocity, Velocity);
- set_pev(ent, pev_angles, Angle);
- message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
- write_byte(TE_BEAMFOLLOW)
- write_short(ent)
- write_short(sprite_trail)
- write_byte(6)
- write_byte(3)
- write_byte(224)
- write_byte(224)
- write_byte(255)
- write_byte(200)
- message_end()
- }
- return PLUGIN_CONTINUE;
- }
- public Message_SayText(msgId,msgDest,msgEnt)
- {
- new id = get_msg_arg_int(1);
- if( is_user_connected(id) )
- {
- new szChannel[64];
- get_msg_arg_string(2, szChannel, charsmax(szChannel));
- if( equal(szChannel, "#Cstrike_Chat_All") )
- {
- if(get_user_flags(id) & ADMIN_LEVEL_H)
- {
- if(PlrPrestige[ id ] > 0)
- formatex(szChannel, charsmax(szChannel), "^4[VIP][%s][Prestige:%d] ^3%%s1 ^1: %%s2",Ranks[ Getrank( level[ id ] ) ], PlrPrestige[ id ] );
- else
- formatex(szChannel, charsmax(szChannel), "^4[VIP][%s] ^3%%s1 ^1: %%s2",Ranks[ Getrank( level[ id ] ) ] );
- set_msg_arg_string(2, szChannel);
- }
- else
- {
- if(PlrPrestige[ id ] > 0)
- formatex(szChannel, charsmax(szChannel), "^4[%s]^4[Prestige:%d] ^3%%s1 ^1: %%s2",Ranks[ Getrank( level[ id ] ) ], PlrPrestige[ id ] );
- else
- formatex(szChannel, charsmax(szChannel), "^4[%s] ^3%%s1 ^1: %%s2",Ranks[ Getrank( level[ id ] ) ] );
- set_msg_arg_string(2, szChannel);
- }
- }
- }
- }
- public Start( id )
- {
- if( !is_user_alive( id ) || !is_user_connected( id ) )
- return PLUGIN_CONTINUE;
- CheckLvl(id)
- if( !class[ id ] )
- {
- ChooseClass( id );
- return PLUGIN_CONTINUE;
- }
- if(class[ id ] && perk[ id ] && !class[ id ] )
- {
- ChooseClass( id );
- return PLUGIN_CONTINUE;
- }
- if(slct_lethal[ id ] )
- slct_lethal[ id ] = false
- if( new_class[ id ] )
- {
- class[ id ] = new_class[ id ];
- new_class[ id ] = 0
- give_weapons(id)
- }
- if( new_perk[ id ] )
- {
- perk[ id ] = new_perk[ id ];
- new_perk[ id ] = 0;
- }
- switch(g_Lethal[ id ])
- {
- case LETHAL_SEMTEX: give_item( id, "weapon_hegrenade")
- case LETHAL_TOMAHAWK: tomahawks[ id ] = 2
- case LETHAL_CLAYMORE: claymores[ id ] = clmr_max
- }
- give_weapons(id)
- switch(get_user_team(id))
- {
- case 1: give_item(id, "weapon_glock18")
- case 2: give_item(id, "weapon_usp")
- }
- if( perk[id] == 6 )
- {
- set_pev(id, pev_gravity, 0.85)
- }
- if(!semtex[ id ])
- return PLUGIN_HANDLED
- if(get_user_flags(id) & ADMIN_LEVEL_H)
- set_pev(id, pev_health, 150.0)
- else
- set_pev(id, pev_health, 100.0)
- set_pdata_int(id, 388, semtex[ id ], 5);
- return PLUGIN_CONTINUE;
- }
- public give_weapons(id)
- {
- if ( !is_user_alive( id ) ) return;
- switch(class[id])
- {
- case 1:
- {
- strip_user_weapons(id);
- give_item(id, "weapon_knife");
- give_item( id, ClassWeapons[ class[ id ] ] )
- give_item( id, ClassSecondary[ class[ id ] ] )
- give_item( id, ClassEquip[ class[ id ] ] )
- }
- case 2:
- {
- strip_user_weapons(id);
- give_item(id, "weapon_knife");
- give_item( id, ClassWeapons[ class[ id ] ] )
- give_item( id, ClassSecondary[ class[ id ] ] )
- give_item( id, ClassEquip[ class[ id ] ] )
- }
- case 3:
- {
- strip_user_weapons(id);
- give_item(id, "weapon_knife");
- give_item( id, ClassWeapons[ class[ id ] ] )
- give_item( id, ClassSecondary[ class[ id ] ] )
- give_item( id, ClassEquip[ class[ id ] ] )
- }
- case 4:
- {
- strip_user_weapons(id);
- give_item(id, "weapon_knife");
- give_item( id, ClassWeapons[ class[ id ] ] )
- give_item( id, ClassSecondary[ class[ id ] ] )
- give_item( id, ClassEquip[ class[ id ] ] )
- }
- case 5:
- {
- strip_user_weapons(id);
- give_item(id, "weapon_knife");
- give_item( id, ClassWeapons[ class[ id ] ] )
- give_item( id, ClassSecondary[ class[ id ] ] )
- give_item( id, ClassEquip[ class[ id ] ] )
- }
- case 6:
- {
- strip_user_weapons(id);
- give_item(id, "weapon_knife");
- give_item( id, ClassWeapons[ class[ id ] ] )
- give_item( id, ClassSecondary[ class[ id ] ] )
- give_item( id, ClassEquip[ class[ id ] ] )
- }
- case 7:
- {
- strip_user_weapons(id);
- give_item(id, "weapon_knife");
- give_item( id, ClassWeapons[ class[ id ] ] )
- give_item( id, ClassSecondary[ class[ id ] ] )
- give_item( id, ClassEquip[ class[ id ] ] )
- }
- case 8:
- {
- strip_user_weapons(id);
- give_item(id, "weapon_knife");
- give_item( id, ClassWeapons[ class[ id ] ] )
- give_item( id, ClassSecondary[ class[ id ] ] )
- give_item( id, ClassEquip[ class[ id ] ] )
- }
- case 9:
- {
- strip_user_weapons(id);
- give_item(id, "weapon_knife");
- give_item( id, ClassWeapons[ class[ id ] ] )
- give_item( id, ClassSecondary[ class[ id ] ] )
- give_item( id, ClassEquip[ class[ id ] ] )
- }
- case 10:
- {
- strip_user_weapons(id);
- give_item(id, "weapon_knife");
- give_item( id, ClassWeapons[ class[ id ] ] )
- give_item( id, ClassSecondary[ class[ id ] ] )
- give_item( id, ClassEquip[ class[ id ] ] )
- }
- case 11:
- {
- strip_user_weapons(id);
- give_item(id, "weapon_knife");
- give_item( id, ClassWeapons[ class[ id ] ] )
- give_item( id, ClassSecondary[ class[ id ] ] )
- give_item( id, ClassEquip[ class[ id ] ] )
- cod_deathmachine(id)
- }
- case 12:
- {
- strip_user_weapons(id);
- give_item(id, "weapon_knife");
- give_item( id, ClassWeapons[ class[ id ] ] )
- give_item( id, ClassSecondary[ class[ id ] ] )
- give_item( id, ClassEquip[ class[ id ] ] )
- give_item( id, "weapon_shield" )
- }
- case 13:
- {
- strip_user_weapons(id);
- give_item(id, "weapon_knife");
- give_item( id, ClassWeapons[ class[ id ] ] )
- give_item( id, ClassSecondary[ class[ id ] ] )
- give_item( id, ClassEquip[ class[ id ] ] )
- cod_give_cross(id)
- }
- case 14:
- {
- strip_user_weapons(id);
- give_item(id, "weapon_knife");
- give_item( id, ClassWeapons[ class[ id ] ] )
- give_item( id, ClassSecondary[ class[ id ] ] )
- give_item( id, ClassEquip[ class[ id ] ] )
- }
- }
- new weapons[ 32 ], wpnnum
- get_user_weapons( id, weapons, wpnnum )
- for(new i=0; i<wpnnum; i++)
- {
- if(maxAmmo[weapons[i]] > 0)
- {
- fm_set_user_bpammo(id, weapons[i], maxAmmo[weapons[i]]);
- }
- }
- switch(g_Lethal[ id ])
- {
- case LETHAL_FRAG: give_item( id, "weapon_hegrenade")
- case LETHAL_FLASH: give_item( id, "weapon_flashbang") , fm_set_user_bpammo(id,CSW_FLASHBANG,2);
- case LETHAL_BLIND: give_item( id, "weapon_flashbang") , fm_set_user_bpammo(id,CSW_FLASHBANG,2);
- case LETHAL_SEMTEX: give_item( id, "weapon_hegrenade")
- case LETHAL_CLAYMORE: claymores[ id ] = clmr_max
- case LETHAL_TOMAHAWK: tomahawks[ id ] = 2
- case LETHAL_GLFIRE: rockets[ id ] = 2
- }
- }
- public ChooseClass( id )
- {
- new menu = menu_create("Choose type:", "IzaberiFrakciju_Handle");
- for(new i = 1;i<sizeof(frakcije);i++)
- {
- menu_additem(menu, frakcije[i]);
- }
- menu_display(id, menu);
- }
- public IzaberiFrakciju_Handle(id, menu2, item)
- {
- if(item == MENU_EXIT)
- {
- menu_destroy(menu2);
- return PLUGIN_CONTINUE;
- }
- item++;
- frakcija_igraca[id] = item;
- new szItem[30]
- formatex(szItem, charsmax(szItem), "Choose Class:")
- new menu = menu_create(szItem, "IzaberiKlasu_Handle");
- new klasa[50];
- for(new i=1; i<sizeof ClassNames; i++)
- {
- if(ako_pripada[i] == item)
- {
- formatex(klasa, 49, "%s%s", ClassNames[ i ] , ClassDesc[ i ]);
- menu_additem(menu, klasa);
- }
- }
- menu_setprop( menu, MPROP_EXITNAME, "Izlaz" );
- menu_setprop( menu, MPROP_BACKNAME, "Prethodna strana" );
- menu_setprop( menu, MPROP_NEXTNAME, "Sledeca strana" );
- menu_display( id, menu );
- return PLUGIN_CONTINUE;
- }
- public IzaberiKlasu_Handle(id, menu, item)
- {
- if(item == MENU_EXIT)
- {
- menu_destroy(menu);
- return PLUGIN_CONTINUE;
- }
- item++;
- new ako = 0;
- for(new i=1; i<sizeof ClassNames; i++)
- {
- if(ako_pripada[i] == frakcija_igraca[id]){
- ako++;
- }
- if(ako == item){
- item = i;
- break;
- }
- }
- if(item == class[id])
- return PLUGIN_CONTINUE;
- if((item == 11 || item == 12 || item == 13 || item == 14) && !(get_user_flags(id) & ADMIN_LEVEL_H))
- {
- ChooseClass(id);
- return PLUGIN_CONTINUE;
- }
- if(class[id])
- {
- new_class[ id ] = item;
- client_print( id, print_chat, "Klasa ce biti izmenjena u sledecoj rundi." );
- }
- else
- {
- class[ id ] = item;
- give_weapons(id)
- }
- if( class[ id ] != 0 && !perk[ id ])
- ChoosePerk( id )
- if( perk[ id ] != 0 && g_Lethal[ id ] == 7)
- ChooseLethal( id )
- return PLUGIN_CONTINUE;
- }
- public ChoosePerk( id )
- {
- new menu = menu_create( "Izaberi predmet:", "Perkmenu_H" );
- new szTmp[ 64 ];
- for( new i=1; i< sizeof PerkNames; i++ )
- {
- format( szTmp, 64, "%s", PerkNames[ i ] );
- menu_additem( menu, szTmp );
- }
- menu_setprop( menu, MPROP_EXITNAME, "Izlaz" );
- menu_setprop( menu, MPROP_BACKNAME, "Prethodna strana" );
- menu_setprop( menu, MPROP_NEXTNAME, "Sledeca strana" );
- menu_display( id, menu );
- }
- public Perkmenu_H( id, menu, item )
- {
- if( item == MENU_EXIT )
- {
- menu_destroy( menu );
- return PLUGIN_CONTINUE;
- }
- item++;
- if(perk[ id ])
- {
- new_perk[ id ] = item;
- client_print(id, print_chat, "Predmet ce biti izmenjen u sledecoj rundi.");
- }
- else
- {
- perk[ id ] = item;
- }
- if(class[ id ] != 0 && perk[ id ] && g_Lethal[ id ] == 7)
- ChooseLethal( id )
- return PLUGIN_CONTINUE;
- }
- public ChooseLethal( id )
- {
- new g_Menu = menu_create( "Izaberi oruzje:", "Lethal_H" );
- if(slct_lethal[ id ])
- {
- client_print( id, print_chat, "You already selected lethal,you can change it in next round!" )
- return PLUGIN_HANDLED
- }
- if(g_Lethal[ id ] == LETHAL_SEMTEX )
- menu_additem( g_Menu, "\dSemtex\r[Selected]" );
- else
- menu_additem( g_Menu, "Semtex" );
- if(g_Lethal[ id ] == LETHAL_CLAYMORE )
- menu_additem( g_Menu, "\dClaymore\r[Selected]" );
- else
- menu_additem( g_Menu, "Claymore" );
- if(g_Lethal[ id ] == LETHAL_TOMAHAWK )
- menu_additem( g_Menu, "\dTomahawk\r[Selected]");
- else
- menu_additem( g_Menu, "Tomahawk");
- if(g_Lethal[ id ] == LETHAL_BLIND )
- menu_additem( g_Menu, "\dBlind\r[Selected]");
- else
- menu_additem( g_Menu, "Blind");
- if(g_Lethal[ id ] == LETHAL_FLASH )
- menu_additem( g_Menu, "\dFlash\r[Selected]");
- else
- menu_additem( g_Menu, "Flash");
- if(g_Lethal[ id ] == LETHAL_FRAG )
- menu_additem( g_Menu, "\dFrag\r[Selected]");
- else
- menu_additem( g_Menu, "Frag");
- if(g_Lethal[ id ] == LETHAL_GLFIRE )
- menu_additem( g_Menu, "\dRocket Launcher\r[Selected]");
- else
- menu_additem( g_Menu, "Rocket Launcher");
- menu_setprop( g_Menu, MPROP_EXITNAME, "Izlaz" );
- menu_setprop( g_Menu, MPROP_BACKNAME, "Prethodna strana" );
- menu_setprop( g_Menu, MPROP_NEXTNAME, "Sledeca strana" );
- menu_display( id, g_Menu );
- return PLUGIN_CONTINUE
- }
- public Lethal_H( id, g_Menu, item )
- {
- if( item == MENU_EXIT )
- {
- menu_destroy( g_Menu );
- return PLUGIN_CONTINUE;
- }
- /*if( has_lethal[ id ] )
- {
- slct_lethal[ id ] = item+1;
- client_print( id, print_chat, "Lethal will be changed in next round." );
- }
- else
- {
- g_Lethal[ id ] = item;
- }*/
- switch(item)
- {
- case 0:
- {
- if(g_Lethal[ id ] == LETHAL_SEMTEX)
- {
- client_print(id, print_chat, "Ne mozes izabrati isti Lethal!")
- return PLUGIN_HANDLED
- }
- claymores[ id ] = clmr_max
- tomahawks[ id ] = 0
- rockets[ id ] = 0
- g_Lethal[ id ] = LETHAL_SEMTEX
- give_item( id, "weapon_hegrenade")
- }
- case 1:
- {
- if(g_Lethal[ id ] == LETHAL_CLAYMORE)
- {
- client_print(id, print_chat, "Ne mozes izabrati isti Lethal!")
- return PLUGIN_HANDLED
- }
- g_Lethal[ id ] = LETHAL_CLAYMORE
- claymores[ id ] = 2
- tomahawks[ id ] = 0
- rockets[ id ] = 0
- }
- case 2:
- {
- if(g_Lethal[ id ] == LETHAL_TOMAHAWK)
- {
- client_print(id, print_chat, "Ne mozes izabrati isti Lethal!")
- return PLUGIN_HANDLED
- }
- g_Lethal[ id ] = LETHAL_TOMAHAWK
- claymores[ id ] = 0
- tomahawks[ id ] = 2
- rockets[ id ] = 0
- }
- case 3:
- {
- if(g_Lethal[ id ] == LETHAL_BLIND)
- {
- client_print(id, print_chat, "Ne mozes izabrati isti Lethal!")
- return PLUGIN_HANDLED
- }
- g_Lethal[ id ] = LETHAL_BLIND
- give_item( id, "weapon_flashbang")
- fm_set_user_bpammo(id, CSW_FLASHBANG, 2)
- claymores[ id ] = 0
- tomahawks[ id ] = 0
- rockets[ id ] = 0
- }
- case 4:
- {
- if(g_Lethal[ id ] == LETHAL_FLASH)
- {
- client_print(id, print_chat, "Ne mozes izabrati isti Lethal!")
- return PLUGIN_HANDLED
- }
- g_Lethal[ id ] = LETHAL_FLASH
- give_item( id, "weapon_flashbang")
- fm_set_user_bpammo(id, CSW_FLASHBANG, 2)
- claymores[ id ] = 0
- tomahawks[ id ] = 0
- rockets[ id ] = 0
- }
- case 5:
- {
- if(g_Lethal[ id ] == LETHAL_FRAG)
- {
- client_print(id, print_chat, "Ne mozes izabrati isti Lethal!")
- return PLUGIN_HANDLED
- }
- g_Lethal[ id ] = LETHAL_FRAG
- give_item( id, "weapon_hegrenade")
- claymores[ id ] = 0
- tomahawks[ id ] = 0
- rockets[ id ] = 0
- }
- case 6:
- {
- if(g_Lethal[ id ] == LETHAL_GLFIRE)
- {
- client_print(id, print_chat, "Ne mozes izabrati isti Lethal!")
- return PLUGIN_HANDLED
- }
- g_Lethal[ id ] = LETHAL_GLFIRE
- claymores[ id ] = 0
- tomahawks[ id ] = 0
- rockets[ id ] = 2
- }
- }
- return PLUGIN_CONTINUE;
- }
- public PerkDescription(id)
- {
- new Descr[128];
- format(Descr, 127, PerkDesc[ perk[ id ] ]);
- client_print(id, print_chat, "Perk: %s.", PerkNames[ perk[ id ] ]);
- client_print(id, print_chat, "Description: %s.", Descr);
- }
- public fw_TakeDamage(victim, inflictor, attacker, Float:damage, damagebits)
- {
- if( !is_user_alive( victim ) || !is_user_connected( victim ) || !is_user_connected( attacker ) || get_user_team( victim ) == get_user_team( attacker ) || !Is_Valid_User( victim ) || !Is_Valid_User( attacker ) )
- return HAM_IGNORED;
- new health = get_user_health( victim )
- if(health < 2)
- return HAM_IGNORED;
- if(perk[ attacker ] == 6 )
- damage*=1.1;
- if(class[ attacker ] == 12 )
- {
- SetHamParamFloat(4, damage * 2)
- }
- if(get_user_weapon(attacker) != CSW_KNIFE)
- {
- set_hudmessage(255, 255, 255, -1.0, -1.0, 0, 0.1, 0.4, 0.02, 0.02, 1);
- show_hudmessage(attacker, "x");
- }
- SetHamParamFloat(4, damage);
- return HAM_IGNORED;
- }
- public event_damage(id)
- {
- new attacker = get_user_attacker(id)
- new health = get_user_health(id)
- if(!Is_Valid_User( attacker ) )
- return PLUGIN_HANDLED
- if(health < 45)
- {
- fw_Heal( id )
- }
- set_hudmessage(170, 255, 255, -1.0, -1.0, 0, 2.0, 3.0);
- show_hudmessage(attacker, "x");
- return PLUGIN_CONTINUE
- }
- public fw_Heal( id )
- {
- if(!is_user_alive(id))
- return PLUGIN_HANDLED
- new health = get_user_health(id)
- if(health < 100 && health > 1)
- {
- set_pev(id, pev_health, health + 1.0)
- emit_sound(id, CHAN_ITEM, "cod_bo/heal.wav", 1.0, ATTN_NORM, 0, PITCH_NORM);
- set_task(1.0, "fw_Heal", id)
- message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("ScreenFade"), {0,0,0}, id);
- write_short(5<<10); // fade lasts this long duration
- write_short(3<<5); // fade lasts this long hold time
- write_short(1<<1); // fade type (in / out)
- write_byte(200); // red
- write_byte(0); // green
- write_byte(0); // blue
- write_byte(90); // alpha
- message_end();
- }
- else if(health > 100)
- {
- set_pev(id,pev_health, 100.0)
- }
- return PLUGIN_CONTINUE
- }
- public fw_CmdStart( id, uc_handle, randseed )
- {
- new button = pev(id, pev_button)
- new Float:punchangle[ 3 ];
- punchangle[ 0 ] = 0.0
- punchangle[ 1 ] = 0.0
- punchangle[ 2 ] = 0.0
- if( perk[ id ] == 3 )
- {
- if( button & IN_ATTACK )
- {
- set_pev( id, pev_punchangle, punchangle )
- }
- }
- return PLUGIN_CONTINUE
- }
- public event_currweapon(id)
- {
- new weapons[32];
- new weaponsnum;
- get_user_weapons(id, weapons, weaponsnum);
- if(perk[ id ] == 7)
- {
- for(new i=0; i<weaponsnum; i++)
- if(is_user_alive(id) && perk[ id ] == 7)
- if(maxAmmo[weapons[i]] > 0)
- fm_set_user_bpammo(id, weapons[i], maxAmmo[weapons[i]]);
- }
- }
- public Is_Valid_User( id )
- {
- if( is_user_connected( id ) && ( pev( id, pev_flags ) & FL_CLIENT ) )
- return true;
- return false;
- }
- public player_death()
- {
- new attacker = read_data(1)
- new victim = read_data(2)
- new killcp = get_pcvar_num(cod_killcp)
- new MAXXP = get_pcvar_num(pcvar_max)
- if(!is_user_connected(attacker))
- return PLUGIN_HANDLED
- if(get_user_flags(attacker) & ADMIN_LEVEL_H)
- CodPoints[ attacker ]+=(killcp*2)
- else
- CodPoints[ attacker ]+=killcp
- Killstreak[ attacker ]++
- Killstreak[ victim ] = 0
- new iKillxp = get_pcvar_num(g_KillXp)
- new tKillxp = get_pcvar_num(g_TeamKillXp)
- pev(victim, pev_origin, vOrigin)
- if(perk[ attacker ] == 1)
- CreateScavenger()
- switch(get_user_team(attacker))
- {
- case 1: g_Txp += tKillxp
- case 2: g_CTxp += tKillxp
- }
- if(g_Txp >= MAXXP || g_CTxp >= MAXXP)
- {
- set_task(0.5, "ShowWinners", TASKID);
- set_task(5.0, "ShowWinners2", TASKID);
- }
- if(level[attacker] < max_level || experience[attacker] <= 119990)
- {
- experience[attacker] += iKillxp
- CheckLvl(attacker)
- }
- else
- {
- experience[attacker] = 119990
- CheckLvl(attacker)
- }
- if(level[attacker] > max_level || experience[attacker] > 119990)
- {
- experience[attacker] = 119990
- CheckLvl(attacker)
- }
- return PLUGIN_CONTINUE
- }
- public get_origin(id)
- {
- pev(id, pev_origin, vOrigin)
- }
- public CreateScavenger()
- {
- new ent = fm_create_entity("info_target")
- set_pev(ent, pev_origin, Float:vOrigin)
- set_pev(ent, pev_classname, "Scavenger_box")
- engfunc(EngFunc_SetModel, ent, "models/w_battery.mdl")
- fm_set_rendering(ent, kRenderFxGlowShell, random_num(128, 255), random_num(128, 255), random_num(128, 255), kRenderNormal, 16)
- set_pev(ent, pev_solid, SOLID_TRIGGER)
- set_pev(ent, pev_movetype, MOVETYPE_PUSHSTEP)
- set_pev(ent, pev_size, Float:{-2.0,-2.0,-2.0},Float:{5.0,5.0,5.0})
- engfunc(EngFunc_DropToFloor, ent)
- }
- public event_new_round()
- {
- new iEnt = engfunc(EngFunc_FindEntityByString, -1, "classname", "Scavenger_box");
- while(iEnt > 0)
- {
- engfunc(EngFunc_RemoveEntity ,iEnt);
- iEnt = engfunc(EngFunc_FindEntityByString, iEnt, "classname", "Scavenger_box");
- }
- }
- public event_new_round2()
- {
- new iEnt = engfunc(EngFunc_FindEntityByString, -1, "classname", "Claymore");
- while(iEnt > 0)
- {
- engfunc(EngFunc_RemoveEntity ,iEnt);
- iEnt = engfunc(EngFunc_FindEntityByString, iEnt, "classname", "Claymore");
- }
- }
- public eRoundStart()
- {
- client_cmd(0, "mp3 play %s",start_sounds[random_num(0,7)])
- set_task(3.0, "Task_Additems", TASK_ITEMID)
- }
- public Task_Additems()
- {
- client_print(0, print_console, "__")
- }
- public ShowWinners()
- {
- set_dhudmessage(60, 60, 60, 1.0, -1.0, 0, 1.0, 2.0, 0.1, 0.3);
- new playerz[ 32 ], iLen
- get_players(playerz, iLen,"ae", "CT")
- new MAXXP = get_pcvar_num(pcvar_max)
- for(new i = 0; i < iLen; i++)
- {
- if( g_Txp >= MAXXP )
- {
- show_dhudmessage( i, "Black Ops forces won!" )
- }
- else if( g_CTxp >= MAXXP )
- {
- show_dhudmessage( i, "Global Risk forces won!" )
- }
- client_cmd(i, "mp3 play %s",win_sounds[random_num(0,1)])
- }
- return PLUGIN_CONTINUE
- }
- public ShowWinners2( )
- {
- new nextmap[ 32 ]
- get_cvar_string( "amx_nextmap",nextmap, charsmax( nextmap ) )
- client_print(0, print_chat,"Changing map to: %s", nextmap )
- server_cmd("amx_map %s",nextmap)
- }
- public ShowStats(id)
- {
- id -= HUD
- if(!is_user_connected(id))
- return PLUGIN_HANDLED
- set_task(2.0, "ShowStats", id+HUD);
- if(is_user_connected(id) && !is_user_alive(id))
- {
- new target = entity_get_int(id, EV_INT_iuser2);
- if(!target)
- return PLUGIN_CONTINUE;
- set_hudmessage(60, 60, 60, 0.00, 0.65, 0, 1.0, 2.0, 0.1, 0.3, -1);
- ShowSyncHudMsg(id,g_sync1, "=[Level: %i]^n=[Exp: %i / %i]^n=[Cin: %s]^n=[Class: %s]^n=[Perk: %s]^n=[Lethal: %s]^n=[CP: %d]",level[target], experience[target], CalculateXpForLevel(level[target]), Ranks[Getrank( level[ target ] ) ], ClassNames[ class[target ] ], PerkNames[ perk[ target ] ], names[ g_Lethal[ target ] ], CodPoints[ target ]);
- return PLUGIN_CONTINUE;
- }
- set_hudmessage(0, 60, 120, 0.00, 0.65, 0, 1.0, 2.0, 0.1, 0.3, -1);
- ShowSyncHudMsg(id, g_sync1, "=[Level: %i]^n=[Exp: %i / %i]^n=[Cin: %s]^n=[Class: %s]^n=[Perk: %s]^n=[Lethal: %s]^n=[CP: %d]",level[id], experience[id], CalculateXpForLevel(level[id]), Ranks[Getrank(level[id])], ClassNames[ class[id] ], PerkNames[ perk[id] ], names[ g_Lethal[ id ] ], CodPoints[ id ])
- return PLUGIN_CONTINUE;
- }
- public ShowStats2(id)
- {
- id -= HUD
- if(!is_user_connected(id))
- return PLUGIN_HANDLED
- new MAXXP = get_pcvar_num(pcvar_max)
- set_task(2.0, "ShowStats2", id+HUD);
- if(is_user_connected(id) && !is_user_alive(id))
- {
- new target = entity_get_int(id, EV_INT_iuser2);
- if(!target)
- return PLUGIN_CONTINUE;
- set_hudmessage(60, 60, 60, 1.0, 0.65, 0, 1.0, 2.0, 0.1, 0.2);
- ShowSyncHudMsg(id, g_sync2, "[ Call of Duty: Black Ops ]=^n--[ Killstreak: %i ]=^n[CTXP: %i / %i]=^n[TXP: %i / %i]=^n[HP: %d]=",Killstreak[ target ],g_CTxp, MAXXP, g_Txp, MAXXP, get_user_health(target))
- return PLUGIN_CONTINUE;
- }
- set_hudmessage(0, 60, 120, 1.0, 0.65, 0, 1.0, 2.0, 0.1, 0.2);
- ShowSyncHudMsg(id, g_sync2, "[ Call of Duty: Black Ops ]=^n--[ Killstreak: %i ]=^n[CTXP: %i / %i]=^n[TXP: %i / %i]=^n[HP: %d]=",Killstreak[ id ],g_CTxp, MAXXP, g_Txp, MAXXP, get_user_health(id))
- return PLUGIN_CONTINUE;
- }
- public CheckLvl(id)
- {
- if(level[id] >= max_level)
- return PLUGIN_HANDLED
- if(level[id] < max_level)
- {
- while(experience[id] >= CalculateXpForLevel(level[id]))
- {
- level[id]++
- //set_dhudmessage(0, 250, 0, -1.0, 0.25, 1, 2.0, 0.5, 0.5)
- set_dhudmessage(0, 60, 120, -1.0, 0.25, 0, 1.0, 2.0, 0.1, 0.2);
- //set_dhudmessage(0,0,0,1.0,1.0,1,1.0,1.0)
- show_dhudmessage(id, "%i level!", level[id]);
- fw_SaveInfo(id)
- }
- }
- else
- {
- experience[id] = 119990
- CheckLvl(id)
- fw_SaveInfo(id)
- }
- return PLUGIN_CONTINUE
- }
- Getrank(iNum)
- {
- for( new i = 19 - 1; i >= 0; i-- )
- {
- if( iNum >= gMaxRanks[ i ] )
- return i;
- }
- return 0;
- }
- public CalculateXpForLevel(lvl)
- return lvl*90*2;
- public forward_emit_sound(nade, channel, sound[])
- {
- if( g_Lethal[ pev( nade, pev_owner ) ] != LETHAL_SEMTEX )
- return FMRES_IGNORED
- if (is_nade_bounce(nade))
- {
- if (equal(sound, "weapons/he_bounce-1.wav") && !is_nade_excluded(nade))
- {
- set_pev(nade, pev_movetype, MOVETYPE_NONE)
- set_pev(nade, pev_sequence, 0)
- }
- }
- return FMRES_IGNORED
- }
- public fw_SetModel(entity, const model[])
- {
- if (strlen(model) < 8) return
- static id; id = pev(entity, pev_owner)
- if (model[9] == 'h' && model[10] == 'e')
- {
- set_pev(entity, pev_dmgtime, pev(entity, pev_dmgtime)+0.35)
- if (!is_user_connected(id)) return
- if (g_Lethal[id] == LETHAL_SEMTEX)
- {
- set_pev(entity, pev_flTimeStepSound, SEMTEX_GRENADE)
- }else{
- set_pev(entity, pev_flTimeStepSound, FRAG_GRENADE)
- }
- return
- }
- }
- public drugg(id)
- {
- Drugged[ id ] = true
- set_pev(id, pev_maxspeed, 0.5)
- message_begin( MSG_ONE_UNRELIABLE, g_FovMsg, { 0, 0, 0 }, id )
- write_byte( 180 )
- message_end( )
- }
- public undrugg()
- {
- for( new i = 0; i < g_MaxPlayers; i++)
- {
- if(Drugged[ i ])
- {
- message_begin( MSG_ONE_UNRELIABLE, g_FovMsg, { 0, 0, 0 }, i )
- write_byte( 90 )
- message_end( )
- set_pev(i, pev_maxspeed, 1.0)
- Drugged[ i ] = false
- }
- }
- }
- public client_putinserver(id)
- {
- level[ id ] = 1
- PlrPrestige[ id ] = 0
- class[ id ] = 0
- perk[ id ] = 0
- semtex[ id ] = 0
- g_Lethal[ id ] = 7
- tomahawks[ id ] = 0
- claymores[ id ] = 0
- has_lethal[ id ] = false
- fw_ReadInfo(id)
- set_task(3.0, "ShowStats", id+HUD);
- set_task(3.0, "ShowStats2", id+HUD);
- }
- public client_disconnect(id)
- {
- class[ id ] = 0
- perk[ id ] = 0
- semtex[ id ] = 0
- g_Lethal[ id ] = 0
- tomahawks[ id ] = 0
- claymores[ id ] = 0
- has_lethal[ id ] = false
- fw_SaveInfo(id)
- }
- public fw_SaveInfo(id)
- {
- new vaultkey[128],vaultdata[256], ID_igraca[64];
- format(vaultdata, charsmax(vaultdata),"#%i#%i#%i#%i", experience[ id ], level[ id ], PlrPrestige[ id ], CodPoints[ id ] );
- get_user_authid(id, ID_igraca, charsmax(ID_igraca))
- format(vaultkey, charsmax(vaultkey),"%s_bo_data", ID_igraca);
- nvault_set(g_Vault,vaultkey,vaultdata);
- return PLUGIN_CONTINUE;
- }
- public fw_ReadInfo(id)
- {
- new vaultkey[128],vaultdata[256], ID_igraca[64];
- get_user_authid(id, ID_igraca, charsmax(ID_igraca))
- format(vaultkey, charsmax(vaultkey),"%s_bo_data", ID_igraca);
- nvault_get(g_Vault,vaultkey,vaultdata,255);
- replace_all(vaultdata, 255, "#", " ");
- new playerdata[4][32];
- parse(vaultdata, playerdata[0], 31, playerdata[1], 31, playerdata[2], 31, playerdata[3], 31);
- experience[ id ] = str_to_num(playerdata[0]);
- level[ id ] = str_to_num(playerdata[1])>0?str_to_num(playerdata[1]):1;
- PlrPrestige[ id ] = str_to_num(playerdata[2]);
- CodPoints[ id ] = str_to_num(playerdata[3]);
- return PLUGIN_CONTINUE;
- }
- stock bool:is_nade_bounce(nade)
- {
- return pev(nade, pev_movetype) == MOVETYPE_BOUNCE
- }
- stock bool:is_nade_excluded(nade)
- {
- new model[32]
- pev(nade, pev_model, model, 31)
- if (equal(model, "models/w_hegrenade.mdl"))
- return false
- return true
- }
- stock bool:strip_user_gun(index, wid = 0, const wname[] = "")
- {
- new ent_class[32];
- if (!wid && wname[0])
- copy(ent_class, sizeof ent_class - 1, wname);
- else
- {
- new weapon = wid, clip, ammo;
- if (!weapon && !(weapon = get_user_weapon(index, clip, ammo)))
- return false;
- get_weaponname(weapon, ent_class, sizeof ent_class - 1);
- }
- new ent_weap = fm_find_ent_by_owner(-1, ent_class, index);
- if (!ent_weap)
- return false;
- engclient_cmd(index, "drop", ent_class);
- new ent_box = pev(ent_weap, pev_owner);
- if (!ent_box || ent_box == index)
- return false;
- dllfunc(DLLFunc_Think, ent_box);
- return true;
- }
- stock give_item(index, const item[])
- {
- if (!equal(item, "weapon_", 7) && !equal(item, "ammo_", 5) && !equal(item, "item_", 5) && !equal(item, "tf_weapon_", 10))
- return 0;
- new ent = fm_create_entity(item);
- if (!pev_valid(ent))
- return 0;
- new Float:origin[3];
- pev(index, pev_origin, origin);
- set_pev(ent, pev_origin, origin);
- set_pev(ent, pev_spawnflags, pev(ent, pev_spawnflags) | SF_NORESPAWN);
- dllfunc(DLLFunc_Spawn, ent);
- new save = pev(ent, pev_solid);
- dllfunc(DLLFunc_Touch, ent, index);
- if (pev(ent, pev_solid) != save)
- return ent;
- engfunc(EngFunc_RemoveEntity, ent);
- return -1;
- }
- stock strip_user_weapons(index)
- {
- new ent = fm_create_entity("player_weaponstrip");
- if (!pev_valid(ent))
- return 0;
- dllfunc(DLLFunc_Spawn, ent);
- dllfunc(DLLFunc_Use, ent, index);
- engfunc(EngFunc_RemoveEntity, ent);
- return 1;
- }
- /* Claymore */
- stock ChangeModelsSatchel(id)
- {
- set_pev(id, pev_viewmodel2, "models/cod_bo/v_claymore.mdl")
- set_pev(id, pev_weaponmodel2, "models/cod_bo/p_claymore.mdl")
- }
- stock UTIL_PlayWeaponAnimation(id, anim)
- {
- set_pev(id, pev_weaponanim, anim)
- message_begin(MSG_ONE_UNRELIABLE, SVC_WEAPONANIM, {0, 0, 0}, id)
- write_byte(anim)
- write_byte(pev(id, pev_body))
- message_end()
- }
- stock is_valid_player(id){
- if (id > 0 && id <= g_MaxPlayers && pev_valid(id))
- return true
- return false
- }
- stock Float:estimate_take_hurt(Float:fPoint[3], ent)
- {
- new Float:fOrigin[3], tr, Float:fFraction;
- pev(ent, pev_origin, fOrigin);
- engfunc(EngFunc_TraceLine, fPoint, fOrigin, DONT_IGNORE_MONSTERS, 0, tr);
- get_tr2(tr, TR_flFraction, fFraction);
- if(fFraction == 1.0 || get_tr2(tr, TR_pHit) == ent)
- return 1.0;
- return 0.6;
- }
- stock fm_set_user_bpammo(id, weapon, amount)
- {
- static offset
- switch(weapon)
- {
- case CSW_AWP: offset = OFFSET_AWM_AMMO;
- case CSW_SCOUT,CSW_AK47,CSW_G3SG1: offset = OFFSET_SCOUT_AMMO;
- case CSW_M249: offset = OFFSET_PARA_AMMO;
- case CSW_M4A1,CSW_FAMAS,CSW_AUG,CSW_SG550,CSW_GALI,CSW_SG552: offset = OFFSET_FAMAS_AMMO;
- case CSW_M3,CSW_XM1014: offset = OFFSET_M3_AMMO;
- case CSW_USP,CSW_UMP45,CSW_MAC10: offset = OFFSET_USP_AMMO;
- case CSW_FIVESEVEN,CSW_P90: offset = OFFSET_FIVESEVEN_AMMO;
- case CSW_DEAGLE: offset = OFFSET_DEAGLE_AMMO;
- case CSW_P228: offset = OFFSET_P228_AMMO;
- case CSW_GLOCK18,CSW_MP5NAVY,CSW_TMP,CSW_ELITE: offset = OFFSET_GLOCK_AMMO;
- case CSW_FLASHBANG: offset = OFFSET_FLASH_AMMO;
- case CSW_HEGRENADE: offset = OFFSET_HE_AMMO;
- case CSW_SMOKEGRENADE: offset = OFFSET_SMOKE_AMMO;
- case CSW_C4: offset = OFFSET_C4_AMMO;
- default: return;
- }
- set_pdata_int(id, offset, amount, OFFSET_LINUX);
- }
- stock fm_set_rendering(entity, fx = kRenderFxNone, r = 255, g = 255, b = 255, render = kRenderNormal, amount = 16) {
- new Float:RenderColor[3];
- RenderColor[0] = float(r);
- RenderColor[1] = float(g);
- RenderColor[2] = float(b);
- set_pev(entity, pev_renderfx, fx);
- set_pev(entity, pev_rendercolor, RenderColor);
- set_pev(entity, pev_rendermode, render);
- set_pev(entity, pev_renderamt, float(amount));
- return 1;
- }
- stock __dhud_color;
- stock __dhud_x;
- stock __dhud_y;
- stock __dhud_effect;
- stock __dhud_fxtime;
- stock __dhud_holdtime;
- stock __dhud_fadeintime;
- stock __dhud_fadeouttime;
- stock __dhud_reliable;
- stock set_dhudmessage( red = 0, green = 160, blue = 0, Float:x = -1.0, Float:y = 0.65, effects = 2, Float:fxtime = 6.0, Float:holdtime = 3.0, Float:fadeintime = 0.1, Float:fadeouttime = 1.5, bool:reliable = false )
- {
- #define clamp_byte(%1) ( clamp( %1, 0, 255 ) )
- #define pack_color(%1,%2,%3) ( %3 + ( %2 << 8 ) + ( %1 << 16 ) )
- __dhud_color = pack_color( clamp_byte( red ), clamp_byte( green ), clamp_byte( blue ) );
- __dhud_x = _:x;
- __dhud_y = _:y;
- __dhud_effect = effects;
- __dhud_fxtime = _:fxtime;
- __dhud_holdtime = _:holdtime;
- __dhud_fadeintime = _:fadeintime;
- __dhud_fadeouttime = _:fadeouttime;
- __dhud_reliable = _:reliable;
- return 1;
- }
- stock show_dhudmessage( index, const message[], any:... )
- {
- new buffer[ 128 ];
- new numArguments = numargs();
- if( numArguments == 2 )
- {
- send_dhudMessage( index, message );
- }
- else if( index || numArguments == 3 )
- {
- vformat( buffer, charsmax( buffer ), message, 3 );
- send_dhudMessage( index, buffer );
- }
- else
- {
- new playersList[ 32 ], numPlayers;
- get_players( playersList, numPlayers, "ch" );
- if( !numPlayers )
- {
- return 0;
- }
- new Array:handleArrayML = ArrayCreate();
- for( new i = 2, j; i < numArguments; i++ )
- {
- if( getarg( i ) == LANG_PLAYER )
- {
- while( ( buffer[ j ] = getarg( i + 1, j++ ) ) ) {}
- j = 0;
- if( GetLangTransKey( buffer ) != TransKey_Bad )
- {
- ArrayPushCell( handleArrayML, i++ );
- }
- }
- }
- new size = ArraySize( handleArrayML );
- if( !size )
- {
- vformat( buffer, charsmax( buffer ), message, 3 );
- send_dhudMessage( index, buffer );
- }
- else
- {
- for( new i = 0, j; i < numPlayers; i++ )
- {
- index = playersList[ i ];
- for( j = 0; j < size; j++ )
- {
- setarg( ArrayGetCell( handleArrayML, j ), 0, index );
- }
- vformat( buffer, charsmax( buffer ), message, 3 );
- send_dhudMessage( index, buffer );
- }
- }
- ArrayDestroy( handleArrayML );
- }
- return 1;
- }
- stock send_dhudMessage( const index, const message[] )
- {
- message_begin( __dhud_reliable ? ( index ? MSG_ONE : MSG_ALL ) : ( index ? MSG_ONE_UNRELIABLE : MSG_BROADCAST ), SVC_DIRECTOR, _, index );
- {
- write_byte( strlen( message ) + 31 );
- write_byte( DRC_CMD_MESSAGE );
- write_byte( __dhud_effect );
- write_long( __dhud_color );
- write_long( __dhud_x );
- write_long( __dhud_y );
- write_long( __dhud_fadeintime );
- write_long( __dhud_fadeouttime );
- write_long( __dhud_holdtime );
- write_long( __dhud_fxtime );
- write_string( message );
- }
- message_end();
- }
- public plugin_end()
- nvault_close(g_Vault)
Advertisement
Add Comment
Please, Sign In to add comment