Descarcare:
- SMA | Afiseaza codul
/* Plugin generated by AMXX-Studio */ #include < amxmodx > #include < cstrike > #include < hamsandwich > #include < fakemeta_util > #include < nvault > #include < engine > #include < xs > #define VERSION "0.1a" #define szPrefix "^x03[ULTIMATE VIP]^x04 -" #define IsPlayer(%0) ( 1 <= %0 <= g_iMaxPlayers ) #define VIP_SILVER ADMIN_LEVEL_F #define VIP_GOLD ADMIN_LEVEL_G #define VIP_DIAMOND ADMIN_LEVEL_H #define FFADE_IN 0x0000 // Just here so we don't pass 0 into the function #define FFADE_OUT 0x0001 // Fade out (not in) #define FFADE_MODULATE 0x0002 // Modulate (don't blend) #define FFADE_STAYOUT 0x0004 // ignores the duration, stays faded out until new ScreenFade message received #define BREAK_GLASS 0x01 new const thunder_sound[] = "ambience/thunder_clap.wav"; new g_lightning, g_smoke, ThunderSprite; new FireAmmo [ 33 ]; new g_iMaxPlayers, RippleSprite; new bool: UserIsVIP [ 33 ], bool: UserIsSilver [ 33 ], bool: UserIsGold [ 33 ], bool: UserIsDiamond [ 33 ]; new HasPower [ 33 ], NextPower [ 33 ], Float: LastMessage [ 33 ]; new Teleport_Countdown[33], TeleportSprite, TeleportSprite2, Thunder_Countdown [ 33 ]; new cvar_ring_countdown, cvar_thunder_countdown, cvar_bolt_countdown, cvar_autoheal_countdown, cvar_shock_countdown, cvar_acid_countdown, cvar_teleport_countdown, cvar_invincibility_countdown, cvar_invincibility_duration new Invincibility_Countdown [ 33 ], Invincibility_Duration [ 33 ], AutoHeal_Countdown [ 33 ], AcidSpit_Countdown [ 33 ]; new const SOUND_TELEPORT[] = { "weapons/flashbang-1.wav" } new Vault; const UNIT_SEC = 0x1000 const FFADE = 0x0000 const UNIT_SECOND = (1<<12) const BREAK_WOOD = 0x08 new gShockWaveSprite; new fire_sound[] = "weapons/plauncher-1.wav" enum { Red, Green, Blue } // ACID SPIT #define ENG_NULLENT -1 #define EV_INT_WEAPONKEY EV_INT_impulse #define POISON_WEAPONKEY 233 #define WEAP_LINUX_XTRA_OFF 4 #define m_fKnown 44 #define m_flNextPrimaryAttack 46 #define m_flTimeWeaponIdle 48 #define m_iClip 51 #define m_fInReload 54 #define PLAYER_LINUX_XTRA_OFF 5 #define m_flNextAttack 83 #define TIME_POISON 5.0 #define CSW_WPN_POISON CSW_M3 #define OFFSET_TIME_ATTACK 0.6 #define WPN_RELOAD_TIME 3.4 #define RED 60 #define GREEN 250 #define BLUE 0 #define PEV_ENT_TIME pev_fuser1 new const fire_classname_could[] = "fire_salamander" new const fire_spr_name_cloud[] = "sprites/ultimatevip/fire.spr" new const g_szShockWaveSprite[ ] = "sprites/ultimatevip/muzzleflash3.spr"; // Precahce files new const fire_model_name[] = "models/ultimatevip/spore.mdl" new const fire_poison[] = "models/ultimatevip/spore_poison.mdl" new const fire_spr_name[] = "sprites/laserbeam.spr" new const fire_sprite[] = "sprites/ultimatevip/poison_spr.spr" new const spr_poison_flare[] = "sprites/ultimatevip/poison_flare.spr" new g_sound[][] = { "weapons/plauncher_draw.wav", "weapons/plaunch_clipin.wav", "weapons/plaunch_clipout.wav", "weapons/plauncher_explode.wav" } // classname new const fire_classname[] = "poison_fire" new const poison_classname[] = "posion_spore" enum { IDLE_ANIM = 0, DRAW_ANIM = 2, RELOAD_ANIM = 1, SHOOT_ANIM = 3, SHOOT_ANIM1 = 4, SHOOT_ANIM2 = 5 } new sprite_ability, fire_spr_id, fire_spr_nameid, cvar_start_damage, cvar_end_damage, cvar_shot_speed, cvar_movetype new Float:g_poison_touch[33], Float:gPoisonGlow[33], bool:gGlowPlayer[33], g_msgScreenShake new bool:disc_opened[33] // END ACID SPIT new const g_szExplodeSound2[ ] = "ambience/particle_suck1.wav"; public plugin_init ( ) { register_plugin ( "Ultimate Furien VIP", VERSION, "Hades Ownage" ); RegisterHam ( Ham_Spawn, "player", "Player_Spawn", 1 ); RegisterHam ( Ham_Killed, "player", "Player_Killed", 0 ); RegisterHam ( Ham_TakeDamage, "player", "Player_TakeDamage" ); register_clcmd ( "say /furienvip", "ShowVIPMenu" ); register_clcmd ( "ultimate", "UltimateCMD" ); register_message(get_user_msgid("ScoreAttrib"),"vip_scoreboard"); g_iMaxPlayers = get_maxplayers ( ); cvar_ring_countdown = register_cvar ( "vip_ring_countdown", "20" ); cvar_bolt_countdown = register_cvar ( "vip_bolt_countdown", "20" ); cvar_shock_countdown = register_cvar ( "vip_shock_countdown", "20" ); cvar_acid_countdown = register_cvar ( "vip_spit_countdown", "20" ); cvar_teleport_countdown = register_cvar ( "vip_teleport_countdown", "20" ); cvar_invincibility_countdown = register_cvar ( "vip_invincibility_countdown", "20" ); cvar_invincibility_duration = register_cvar ( "vip_invincibility_duration", "3" ); cvar_autoheal_countdown = register_cvar ( "vip_autoheal_countdown", "20" ); cvar_thunder_countdown = register_cvar ( "vip_thunder_countdown", "20" ); register_touch(fire_classname_could, "*", "fw_touch_fire") register_think(fire_classname_could, "fw_think_fire") // ACID SPIT cvar_shot_speed = register_cvar("zp_pl_bulletspeed", "500") // Speed shot cvar_movetype = register_cvar("zp_pl_movetype", "0") // 0 - Line, 1 - Toss cvar_start_damage = register_cvar("zp_pl_startdamage", "90.0") // Урон cvar_end_damage = register_cvar("zp_pl_enddamage", "160.0") // Урон g_msgScreenShake = get_user_msgid("ScreenShake") set_cvar_num("sv_maxvelocity", 8000) register_touch(fire_classname, "*", "fw_touch_shot") register_think(fire_classname, "fw_think") register_touch(poison_classname, "*", "fw_touch_poison") // END ACID SPIT } public plugin_precache ( ) { gShockWaveSprite = precache_model( g_szShockWaveSprite ); RippleSprite = precache_model ( "sprites/ultimatevip/ripple.spr" ); precache_sound ( g_szExplodeSound2 ); precache_model(fire_spr_name_cloud) precache_sound("weapons/flamegun-1.wav") precache_sound ( "weapons/flamegun-2.wav" ); TeleportSprite = precache_model( "sprites/blue_lightning_blizzard.spr"); TeleportSprite2 = precache_model( "sprites/ultimatevip/3dmflared.spr"); precache_sound(SOUND_TELEPORT); // ACID SIPT for(new i=0;i<sizeof g_sound;i++) precache_sound(g_sound) precache_sound(fire_sound) precache_model(fire_model_name) precache_model(fire_poison) sprite_ability = engfunc(EngFunc_PrecacheModel, spr_poison_flare) fire_spr_id = precache_model(fire_sprite) fire_spr_nameid = precache_model(fire_spr_name) // ACID SPIT precache_sound( thunder_sound ); g_lightning = precache_model( "sprites/lgtning.spr" ); g_smoke = precache_model( "sprites/steam1.spr" ); ThunderSprite = precache_model ( "sprites/ultimatevip/hugeball.spr" ); } public client_putinserver ( id ) { LoadPower ( id ); } public client_disconnect ( id ) { SavePower ( id ); } public vip_scoreboard(const MsgId, const MsgType, const MsgDest) { static id; id = get_msg_arg_int(1); if(UserIsVIP [ id ]) set_msg_arg_int(2, ARG_BYTE, (1 << 2 )); } public Player_Killed ( id ) { if ( HasPower [ id ] == 5 ) { new Float:fOrigin[ 3 ], iOrigin[ 3 ]; pev( id, pev_origin, fOrigin ); FVecIVec( fOrigin, iOrigin ); CreateBlast( 255, 102, 51, iOrigin ); emit_sound( id, CHAN_WEAPON, g_szExplodeSound2, 1.0, ATTN_NORM, 0, PITCH_NORM ); ExplodeAndDamageNearPlayers( id, fOrigin ); } } public Player_Spawn ( id ) { UserIsVIP [ id ] = false; UserIsSilver [ id ] = false; UserIsGold [ id ] = false; UserIsDiamond [ id ] = false; Invincibility_Countdown [ id ] = 0; Invincibility_Duration [ id ] = 0; Teleport_Countdown [ id ] = 0; AutoHeal_Countdown [ id ] = 0; AcidSpit_Countdown [ id ] = 0; Thunder_Countdown [ id ] = 0; if ( is_user_alive ( id ) ) { if ( get_user_flags ( id ) & VIP_SILVER ) { fm_set_user_health ( id, 250 ); fm_set_user_armor ( id, 250 ); fm_set_user_maxspeed ( id, fm_get_user_maxspeed ( id ) + 100.0 ); UserIsVIP [ id ] = true; UserIsSilver [ id ] = true; } if ( get_user_flags ( id ) & VIP_GOLD ) { fm_set_user_health ( id, 250 ); fm_set_user_armor ( id, 250 ); fm_set_user_maxspeed ( id, fm_get_user_maxspeed ( id ) + 125.0 ); UserIsVIP [ id ] = true; UserIsGold [ id ] = true; } if ( get_user_flags ( id ) & VIP_DIAMOND ) { fm_set_user_health ( id, 250 ); fm_set_user_armor ( id, 250 ); fm_set_user_maxspeed ( id, fm_get_user_maxspeed ( id ) + 150.0 ); fm_set_user_gravity ( id, fm_get_user_gravity ( id ) + 0.125 ); UserIsVIP [ id ] = true; UserIsDiamond [ id ] = true; } if ( UserIsVIP [ id ] ) { HasPower [ id ] = NextPower [ id ]; client_cmd ( id, "bind v ultimate" ); SavePower ( id ); set_task ( 15.0, "GiveHE", id ); set_task ( 2.0, "Regeneration", id ); } if ( HasPower [ id ] == 9 ) FireAmmo [ id ] = 30; } } public Player_TakeDamage ( iVictim, iInflictor, iAttacker, Float:fDamage ) { if ( get_user_team ( iAttacker ) == get_user_team ( iVictim ) || iAttacker == iVictim ) return 1; if ( UserIsSilver [ iAttacker ] && IsPlayer ( iAttacker ) ) SetHamParamFloat ( 4, fDamage + 50.0 ); if ( UserIsGold [ iAttacker ] && IsPlayer ( iAttacker ) ) SetHamParamFloat ( 4, fDamage + 60.0 ); if ( UserIsDiamond [ iAttacker ] && IsPlayer ( iAttacker ) ) SetHamParamFloat ( 4, fDamage + 70.0 ); return HAM_IGNORED; } public GiveHE ( id ) { if ( is_user_alive ( id ) ) { fm_give_item ( id, "weapon_hegrenade" ); set_task ( 30.0, "GiveHE", id ); } } public Regeneration ( id ) { if ( is_user_alive ( id ) ) { if ( get_user_health ( id ) < 150 ) fm_set_user_health ( id, get_user_health ( id ) + 5 ); set_task ( 2.0, "Regeneration", id ); } } public ShowVIPMenu ( id ) { new Menu = menu_create("\rUltimate VIP Menu", "VIPMenuCmd"); if ( is_user_connected ( id ) ) { new buffer [ 256 ]; if ( !UserIsVIP [ id ] ) formatex ( buffer, sizeof ( buffer ) -1,"\dInvincibility - \yCountdown:\r %d \yDuration:\r %d \d[Silver]", get_pcvar_num ( cvar_invincibility_countdown ), get_pcvar_num ( cvar_invincibility_duration ) ); else if ( HasPower [ id ] == 1) formatex ( buffer, sizeof ( buffer ) -1,"\rInvincibility - Countdown: %d Duration: %d \d[Silver]", get_pcvar_num ( cvar_invincibility_countdown ), get_pcvar_num ( cvar_invincibility_duration ) ); else formatex ( buffer, sizeof ( buffer ) -1,"\wInvincibility - \yCountdown:\r %d \yDuration:\r %d \d[Silver]", get_pcvar_num ( cvar_invincibility_countdown ), get_pcvar_num ( cvar_invincibility_duration ) ); menu_additem ( Menu, buffer, "1", 0 ); } if ( is_user_connected ( id ) ) { new buffer [ 256 ]; if ( !UserIsVIP [ id ] ) formatex ( buffer, sizeof ( buffer ) -1,"\dTeleport - \yCountdown:\r %d \d[Silver]", get_pcvar_num ( cvar_teleport_countdown ) ); else if ( HasPower [ id ] == 2) formatex ( buffer, sizeof ( buffer ) -1,"\rTeleport - Countdown: %d \d[Silver]", get_pcvar_num ( cvar_teleport_countdown ) ); else formatex ( buffer, sizeof ( buffer ) -1,"\wTeleport - \yCountdown:\r %d \d[Silver]", get_pcvar_num ( cvar_teleport_countdown ) ); menu_additem ( Menu, buffer, "2", 0 ); } if ( is_user_connected ( id ) ) { new buffer [ 256 ]; if ( !UserIsVIP [ id ] ) formatex ( buffer, sizeof ( buffer ) -1,"\dAuto Heal - \yCountdown:\r %d \d[Silver]", get_pcvar_num ( cvar_autoheal_countdown ) ); else if ( HasPower [ id ] == 3) formatex ( buffer, sizeof ( buffer ) -1,"\rAuto Heal - Countdown: %d \d[Silver]v", get_pcvar_num ( cvar_autoheal_countdown ) ); else formatex ( buffer, sizeof ( buffer ) -1,"\wAuto Heal - \yCountdown:\r %d \d[Silver]", get_pcvar_num ( cvar_autoheal_countdown ) ); menu_additem ( Menu, buffer, "3", 0 ); } if ( is_user_connected ( id ) ) { new buffer [ 256 ]; if ( !UserIsVIP [ id ] ) formatex ( buffer, sizeof ( buffer ) -1,"\dAcid Spit - \yCountdown:\r %d \d[Gold]", get_pcvar_num ( cvar_acid_countdown ) ); else if ( HasPower [ id ] == 4) formatex ( buffer, sizeof ( buffer ) -1,"\rAcid Spit - Countdown: %d \d[Gold]", get_pcvar_num ( cvar_acid_countdown ) ); else formatex ( buffer, sizeof ( buffer ) -1,"\wAcid Spit - \yCountdown:\r %d \d[Gold]", get_pcvar_num ( cvar_acid_countdown ) ); menu_additem ( Menu, buffer, "4", 0 ); } if ( is_user_connected ( id ) ) { new buffer [ 256 ]; if ( !UserIsVIP [ id ] ) formatex ( buffer, sizeof ( buffer ) -1,"\dBomb Explode - \d[Gold]" ); else if ( HasPower [ id ] == 5) formatex ( buffer, sizeof ( buffer ) -1,"\rBomb Explode - \d[Gold]" ); else formatex ( buffer, sizeof ( buffer ) -1,"\wBomb Explode - \d[Gold]" ); menu_additem ( Menu, buffer, "5", 0 ); } if ( is_user_connected ( id ) ) { new buffer [ 256 ]; if ( !UserIsVIP [ id ] ) formatex ( buffer, sizeof ( buffer ) -1,"\dPlasma Attack - \yCountdown:\r %d \d[Gold]", get_pcvar_num ( cvar_shock_countdown ) ); else if ( HasPower [ id ] == 6) formatex ( buffer, sizeof ( buffer ) -1,"\rPlasma Attack - Countdown: %d \d[Gold]", get_pcvar_num ( cvar_shock_countdown ) ); else formatex ( buffer, sizeof ( buffer ) -1,"\wPlasma Attack - \yCountdown:\r %d \d[Gold]", get_pcvar_num ( cvar_shock_countdown ) ); menu_additem ( Menu, buffer, "6", 0 ); } if ( is_user_connected ( id ) ) { new buffer [ 256 ]; if ( !UserIsVIP [ id ] ) formatex ( buffer, sizeof ( buffer ) -1,"\dSuper Bolt Attack - \yCountdown:\r %d \d[Diamond]", get_pcvar_num ( cvar_bolt_countdown ) ); else if ( HasPower [ id ] == 7) formatex ( buffer, sizeof ( buffer ) -1,"\rSuper Bolt Attack - Countdown: %d \d[Diamond]", get_pcvar_num ( cvar_bolt_countdown ) ); else formatex ( buffer, sizeof ( buffer ) -1,"\wSuper Bolt Attack - \yCountdown:\r %d \d[Diamond]", get_pcvar_num ( cvar_bolt_countdown ) ); menu_additem ( Menu, buffer, "7", 0 ); } if ( is_user_connected ( id ) ) { new buffer [ 256 ]; if ( !UserIsVIP [ id ] ) formatex ( buffer, sizeof ( buffer ) -1,"\dRing of Energy - \yCountdown:\r %d \d[Diamond]", get_pcvar_num ( cvar_ring_countdown ) ); else if ( HasPower [ id ] == 8) formatex ( buffer, sizeof ( buffer ) -1,"\rRing of Energy - Countdown: %d \d[Diamond]", get_pcvar_num ( cvar_ring_countdown ) ); else formatex ( buffer, sizeof ( buffer ) -1,"\wRing of Energy - \yCountdown:\r %d \d[Diamond]", get_pcvar_num ( cvar_ring_countdown ) ); menu_additem ( Menu, buffer, "8", 0 ); } if ( is_user_connected ( id ) ) { new buffer [ 256 ]; if ( !UserIsVIP [ id ] ) formatex ( buffer, sizeof ( buffer ) -1,"\dCloud of Fire - \yAmmo:\r 30 \d[Diamond]" ); else if ( HasPower [ id ] == 9) formatex ( buffer, sizeof ( buffer ) -1,"\rCloud of Fire - Ammo: 30 \d[Diamond]" ); else formatex ( buffer, sizeof ( buffer ) -1,"\wCloud of Fire - \yAmmo:\r 30 \d[Diamond]" ); menu_additem ( Menu, buffer, "9", 0 ); } menu_setprop ( Menu, MPROP_EXIT, MEXIT_ALL ); menu_display ( id, Menu, 0 ); return PLUGIN_CONTINUE; } public VIPMenuCmd ( id, menu, item ) { if ( item == MENU_EXIT ) { menu_destroy ( menu ); return 1; } if ( !UserIsVIP [ id ] ) { ColorChat ( id, "%s Trebuie sa ai VIP ca sa poti folosi puterile", szPrefix ); return 1; } new data [ 6 ], iName [ 64 ]; new access, callback; menu_item_getinfo ( menu, item, access, data,5, iName, 63, callback ); new key = str_to_num ( data ); switch ( key ) { case 1: { if ( UserIsSilver [ id ] || UserIsGold [ id ] || UserIsDiamond [ id ] ) { if ( NextPower [ id ] == 1 ) { ColorChat ( id, "%s Detii deja aceasta putere.", szPrefix ); } else { ColorChat ( id, "%s Puterea ti se va activa la urmatorul spawn.", szPrefix ); NextPower [ id ] = 1; } } } case 2: { if ( UserIsSilver [ id ] || UserIsGold [ id ] || UserIsDiamond [ id ] ) { if ( NextPower [ id ] == 2 ) { ColorChat ( id, "%s Detii deja aceasta putere.", szPrefix ); } else { ColorChat ( id, "%s Puterea ti se va activa la urmatorul spawn.", szPrefix ); NextPower [ id ] = 2; } } } case 3: { if ( UserIsSilver [ id ] || UserIsGold [ id ] || UserIsDiamond [ id ] ) { if ( NextPower [ id ] == 3 ) { ColorChat ( id, "%s Detii deja aceasta putere.", szPrefix ); } else { ColorChat ( id, "%s Puterea ti se va activa la urmatorul spawn.", szPrefix ); NextPower [ id ] = 3; } } } case 4: { if ( UserIsGold [ id ] || UserIsDiamond [ id ] ) { if ( NextPower [ id ] == 4 ) { ColorChat ( id, "%s Detii deja aceasta putere.", szPrefix ); } else { ColorChat ( id, "%s Puterea ti se va activa la urmatorul spawn.", szPrefix ); NextPower [ id ] = 4; } } else { ColorChat ( id, "%s Nu ai acces la aceasta putere.", szPrefix ); return 1; } } case 5: { if ( UserIsGold [ id ] || UserIsDiamond [ id ] ) { if ( NextPower [ id ] == 5 ) { ColorChat ( id, "%s Detii deja aceasta putere.", szPrefix ); } else { ColorChat ( id, "%s Puterea ti se va activa la urmatorul spawn.", szPrefix ); NextPower [ id ] = 5; } } else { ColorChat ( id, "%s Nu ai acces la aceasta putere.", szPrefix ); return 1; } } case 6: { if ( UserIsGold [ id ] || UserIsDiamond [ id ] ) { if ( NextPower [ id ] == 6 ) { ColorChat ( id, "%s Detii deja aceasta putere.", szPrefix ); } else { ColorChat ( id, "%s Puterea ti se va activa la urmatorul spawn.", szPrefix ); NextPower [ id ] = 6; } } else { ColorChat ( id, "%s Nu ai acces la aceasta putere.", szPrefix ); return 1; } } case 7: { if ( UserIsDiamond [ id ] ) { if ( NextPower [ id ] == 7 ) { ColorChat ( id, "%s Detii deja aceasta putere.", szPrefix ); } else { ColorChat ( id, "%s Puterea ti se va activa la urmatorul spawn.", szPrefix ); NextPower [ id ] = 7; } } else { ColorChat ( id, "%s Nu ai acces la aceasta putere.", szPrefix ); return 1; } } case 8: { if ( UserIsDiamond [ id ] ) { if ( NextPower [ id ] == 8 ) { ColorChat ( id, "%s Detii deja aceasta putere.", szPrefix ); } else { ColorChat ( id, "%s Puterea ti se va activa la urmatorul spawn.", szPrefix ); NextPower [ id ] = 8; } } else { ColorChat ( id, "%s Nu ai acces la aceasta putere.", szPrefix ); return 1; } } case 9: { if ( UserIsDiamond [ id ] ) { if ( NextPower [ id ] == 9 ) { ColorChat ( id, "%s Detii deja aceasta putere.", szPrefix ); } else { ColorChat ( id, "%s Puterea ti se va activa la urmatorul spawn.", szPrefix ); NextPower [ id ] = 9; } } else { ColorChat ( id, "%s Nu ai acces la aceasta putere.", szPrefix ); return 1; } } } menu_destroy ( menu ); return 1; } public UltimateCMD ( id ) { if(UserIsVIP [ id ] && is_user_alive(id) ) { if(HasPower[id] == 1 && !Invincibility_Duration[id]) { if (Invincibility_Countdown[id]) { if(LastMessage[id] < get_gametime()) { LastMessage[id] = get_gametime() + 1.0; set_hudmessage(255, 170, 0, -1.0, 0.87, 0, 6.0, 1.0) show_hudmessage ( id, "Puterea iti va reveni in %d secund%s.",Invincibility_Countdown[id], Invincibility_Countdown[id] > 1 ? "e" : "a"); } } else { fm_set_user_godmode(id, 1); Invincibility_Duration[id] = get_pcvar_num(cvar_invincibility_duration) message_begin(MSG_ONE, 108, {0,0,0}, id); write_byte(Invincibility_Duration[id]); write_byte(0); message_end(); CountDown_Invincibility(id); } } if(HasPower[id] == 2) { if(Teleport_Countdown[id]) { if(LastMessage[id] < get_gametime()) { LastMessage[id] = get_gametime() + 1.0; set_hudmessage(255, 170, 0, -1.0, 0.87, 0, 6.0, 1.0) show_hudmessage ( id, "Puterea iti va reveni in %d secund%s.",Teleport_Countdown[id], Teleport_Countdown[id] > 1 ? "e" : "a"); } } else if (teleport(id)) { emit_sound(id, CHAN_STATIC, SOUND_TELEPORT, 1.0, ATTN_NORM, 0, PITCH_NORM) Teleport_Countdown[id] = get_pcvar_num(cvar_teleport_countdown); CountDown_Teleport(id); } else { Teleport_Countdown[id] = 0 set_hudmessage(255, 170, 0, -1.0, 0.87, 0, 6.0, 1.0); show_hudmessage ( id, "Pozitia de teleportare este invalida" ); } } if(HasPower[id] == 3 ) { if(AutoHeal_Countdown[id]) { if(LastMessage[id] < get_gametime()) { LastMessage[id] = get_gametime() + 1.0; set_hudmessage(255, 170, 0, -1.0, 0.87, 0, 6.0, 1.0) show_hudmessage ( id, "Puterea iti va reveni in %d secund%s.",AutoHeal_Countdown[id], AutoHeal_Countdown[id] > 1 ? "e" : "a"); } } else if ( autoheal ( id ) ) { AutoHeal_Countdown[id] = get_pcvar_num(cvar_autoheal_countdown); CountDown_AutoHeal(id); } } if(HasPower[id] == 4 ) { if(AcidSpit_Countdown[id]) { if(LastMessage[id] < get_gametime()) { LastMessage[id] = get_gametime() + 1.0; set_hudmessage(255, 170, 0, -1.0, 0.87, 0, 6.0, 1.0) show_hudmessage ( id, "Puterea iti va reveni in %d secund%s.",AcidSpit_Countdown[id], AcidSpit_Countdown[id] > 1 ? "e" : "a"); } } else if ( acidspit ( id ) ) { AcidSpit_Countdown[id] = get_pcvar_num(cvar_acid_countdown); CountDown_AcidSpit(id); } } if(HasPower[id] == 7 ) { if(Thunder_Countdown[id]) { if(LastMessage[id] < get_gametime()) { LastMessage[id] = get_gametime() + 1.0; set_hudmessage(255, 170, 0, -1.0, 0.87, 0, 6.0, 1.0) show_hudmessage ( id, "Puterea iti va reveni in %d secund%s.",Thunder_Countdown[id], Thunder_Countdown[id] > 1 ? "e" : "a"); } } else if ( thunderbolt ( id ) ) { Thunder_Countdown[id] = get_pcvar_num(cvar_thunder_countdown); CountDown_Thunder(id); } } if ( HasPower [ id ] == 9 ) { cloudfire ( id ); } } return 1; } public CountDown_AutoHeal(id) { if(!is_user_alive(id) || HasPower[id] != 3) { AutoHeal_Countdown[id] = 0; } else if(AutoHeal_Countdown[id] > 0) { set_hudmessage(255, 170, 0, 0.05, 0.60, 0, 1.0, 1.1, 0.0, 0.0, 7); show_hudmessage(id, "Iti vei putea folosi puterea in %d secund%s", AutoHeal_Countdown[id], AutoHeal_Countdown[id] == 1 ? "a" : "e"); AutoHeal_Countdown[id]--; set_task(1.0, "CountDown_AutoHeal", id); } else if(AutoHeal_Countdown[id] <= 0) { set_hudmessage(255, 170, 0, 0.05, 0.60, 0, 1.0, 1.1, 0.0, 0.0, 7); show_hudmessage(id, "Iti poti folosi puterea din nou"); AutoHeal_Countdown[id] = 0; } } public CountDown_AcidSpit(id) { if(!is_user_alive(id) || HasPower[id] != 4) { AcidSpit_Countdown[id] = 0; } else if(AcidSpit_Countdown[id] > 0) { set_hudmessage(255, 170, 0, 0.05, 0.60, 0, 1.0, 1.1, 0.0, 0.0, 7); show_hudmessage(id, "Iti vei putea folosi puterea in %d secund%s", AcidSpit_Countdown[id], AcidSpit_Countdown[id] == 1 ? "a" : "e"); AcidSpit_Countdown[id]--; set_task(1.0, "CountDown_AcidSpit", id); } else if(AcidSpit_Countdown[id] <= 0) { set_hudmessage(255, 170, 0, 0.05, 0.60, 0, 1.0, 1.1, 0.0, 0.0, 7); show_hudmessage(id, "Iti poti folosi puterea din nou"); AcidSpit_Countdown[id] = 0; } } public CountDown_Thunder(id) { if(!is_user_alive(id) || HasPower[id] != 7) { Thunder_Countdown[id] = 0; } else if(Thunder_Countdown[id] > 0) { set_hudmessage(255, 170, 0, 0.05, 0.60, 0, 1.0, 1.1, 0.0, 0.0, 7); show_hudmessage(id, "Iti vei putea folosi puterea in %d secund%s", Thunder_Countdown[id], Thunder_Countdown[id] == 1 ? "a" : "e"); Thunder_Countdown[id]--; set_task(1.0, "CountDown_Thunder", id); } else if(Thunder_Countdown[id] <= 0) { set_hudmessage(255, 170, 0, 0.05, 0.60, 0, 1.0, 1.1, 0.0, 0.0, 7); show_hudmessage(id, "Iti poti folosi puterea din nou"); Thunder_Countdown[id] = 0; } } public CountDown_Invincibility(id) { if(!is_user_alive(id) || HasPower[id] != 1) { fm_set_user_godmode(id, 0) message_begin(MSG_ONE, 108, {0,0,0}, id); write_byte(0); write_byte(0); message_end(); Invincibility_Duration[id] = 0; } else if(Invincibility_Duration[id] > 0) { set_hudmessage(255, 170, 0, 0.05, 0.60, 0, 1.0, 1.1, 0.0, 0.0, 7); show_hudmessage(id, "Esti invincibil timp de %d secund%s", Invincibility_Duration[id], Invincibility_Duration[id] == 1 ? "a" : "e"); Invincibility_Duration[id]--; if(Invincibility_Duration[id] <= 0) Invincibility_Countdown[id] = get_pcvar_num(cvar_invincibility_countdown); set_task(1.0, "CountDown_Invincibility", id); } else if(Invincibility_Duration[id] <= 0) { Invincibility_Countdown[id] = get_pcvar_num(cvar_invincibility_countdown); set_task(1.0, "CountDown_Invincibility2", id) set_hudmessage(255, 170, 0, 0.05, 0.60, 0, 1.0, 1.1, 0.0, 0.0, 7); show_hudmessage(id, "Invincibilitatea s-a terminat"); Invincibility_Duration[id] = 0; fm_set_user_godmode(id, 0) message_begin(MSG_ONE, 108, {0,0,0}, id); write_byte(0); write_byte(0); message_end(); } } public CountDown_Invincibility2(id) { if(!is_user_alive(id) || HasPower[id] != 1) { Invincibility_Countdown[id] = 0; } else if(Invincibility_Countdown[id] > 0) { set_hudmessage(255, 170, 0, 0.05, 0.60, 0, 1.0, 1.1, 0.0, 0.0, 7); show_hudmessage(id, "Invincibilitatea revine in %d secund%s", Invincibility_Countdown[id], Invincibility_Countdown[id] == 1 ? "a" : "e"); Invincibility_Countdown[id]--; set_task(1.0, "CountDown_Invincibility2", id); } else if(Invincibility_Countdown[id] <= 0) { set_hudmessage(255, 170, 0, 0.05, 0.60, 0, 1.0, 1.1, 0.0, 0.0, 7); show_hudmessage(id, "Poti folosi din nou invincibilitatea"); Invincibility_Countdown[id] = 0; } } public CountDown_Teleport(id) { if(!is_user_alive(id) || HasPower[id] != 2) { Teleport_Countdown[id] = 0; } else if(Teleport_Countdown[id] > 0) { set_hudmessage(255, 170, 0, 0.05, 0.60, 0, 1.0, 1.1, 0.0, 0.0, 7); show_hudmessage(id, "Te vei putea din nou teleporta in %d secund%s", Teleport_Countdown[id], Teleport_Countdown[id] == 1 ? "a" : "e"); Teleport_Countdown[id]--; set_task(1.0, "CountDown_Teleport", id); } else if(Teleport_Countdown[id] <= 0) { set_hudmessage(255, 170, 0, 0.05, 0.60, 0, 1.0, 1.1, 0.0, 0.0, 7); show_hudmessage(id, "Te poti teleporta din nou"); Teleport_Countdown[id] = 0; } } bool: autoheal( id ) { if ( get_user_team ( id ) == 1 ) { fm_set_user_health ( id, 250 ); new iPlayers[32] new iNum get_players( iPlayers, iNum, "e", "TERRORIST" ) for( new i = 0; i < iNum; i++ ) { new szName[32] get_user_name(id, szName, charsmax(szName)) fm_set_user_health (iPlayers, 200 ); set_hudmessage(85, 170, 255, -1.0, -1.0, 0, 6.0, 3.0) show_hudmessage(iPlayers, "%s ti-a daruit viata", szName) } } if ( get_user_team ( id ) == 2 ) { fm_set_user_health ( id, 250 ); new iPlayers[32] new iNum get_players( iPlayers, iNum, "e", "CT" ) for( new i = 0; i < iNum; i++ ) { new szName[32] get_user_name(id, szName, charsmax(szName)) fm_set_user_health (iPlayers, 200 ); set_hudmessage(85, 170, 255, -1.0, -1.0, 0, 6.0, 3.0) show_hudmessage(iPlayers, "%s ti-a daruit viata", szName) } } return true; } bool:teleport(id) { new Float:vOrigin[3], Float:vNewOrigin[3], Float:vNormal[3], Float:vTraceDirection[3], Float:vTraceEnd[3]; pev(id, pev_origin, vOrigin); velocity_by_aim(id, 123456789, vTraceDirection); xs_vec_add(vTraceDirection, vOrigin, vTraceEnd); engfunc(EngFunc_TraceLine, vOrigin, vTraceEnd, DONT_IGNORE_MONSTERS, id, 0); new Float:flFraction; get_tr2(0, TR_flFraction, flFraction); if (flFraction < 1.0) { get_tr2(0, TR_vecEndPos, vTraceEnd); get_tr2(0, TR_vecPlaneNormal, vNormal); } xs_vec_mul_scalar(vNormal, 40.0, vNormal); // do not decrease the 40.0 xs_vec_add(vTraceEnd, vNormal, vNewOrigin); if (is_player_stuck(id, vNewOrigin)) return false; emit_sound(id, CHAN_STATIC, SOUND_TELEPORT, 1.0, ATTN_NORM, 0, PITCH_NORM); tele_effect(vOrigin); engfunc(EngFunc_SetOrigin, id, vNewOrigin); tele_effect2(vNewOrigin); if(is_user_connected(id)) { new shock[3] shock[0] = random_num(2,10) shock[1] = random_num(2,5) shock[2] = random_num(2,10) message_begin(MSG_ONE, get_user_msgid("ScreenShake"), _, id) write_short((1<<12)*shock[0]) write_short((1<<12)*shock[1]) write_short((1<<12)*shock[2]) message_end() } return true; } stock is_player_stuck(id, Float:originF[3]) { engfunc(EngFunc_TraceHull, originF, originF, 0, (pev(id, pev_flags) & FL_DUCKING) ? HULL_HEAD : HULL_HUMAN, id, 0); if (get_tr2(0, TR_StartSolid) || get_tr2(0, TR_AllSolid) || !get_tr2(0, TR_InOpen)) return true; return false; } stock tele_effect(const Float:torigin[3]) { new origin[3]; origin[0] = floatround(torigin[0]); origin[1] = floatround(torigin[1]); origin[2] = floatround(torigin[2]); message_begin(MSG_PAS, SVC_TEMPENTITY, origin); write_byte(TE_BEAMCYLINDER); write_coord(origin[0]); write_coord(origin[1]); write_coord(origin[2]+10); write_coord(origin[0]); write_coord(origin[1]); write_coord(origin[2]+60); write_short(TeleportSprite); write_byte(0); write_byte(0); write_byte(3); write_byte(60); write_byte(0); write_byte(0); write_byte(0); write_byte(255); write_byte(255); write_byte(0); message_end(); } stock tele_effect2(const Float:torigin[3]) { new origin[3]; origin[0] = floatround(torigin[0]); origin[1] = floatround(torigin[1]); origin[2] = floatround(torigin[2]); message_begin(MSG_PAS, SVC_TEMPENTITY, origin); write_byte(TE_BEAMCYLINDER); write_coord(origin[0]); write_coord(origin[1]); write_coord(origin[2]+10); write_coord(origin[0]); write_coord(origin[1]); write_coord(origin[2]+60); write_short(TeleportSprite); write_byte(0); write_byte(0); write_byte(6); write_byte(80); write_byte(0); write_byte(0); write_byte(0); write_byte(255); write_byte(255); write_byte(0); message_end(); message_begin(MSG_BROADCAST, SVC_TEMPENTITY); write_byte(TE_SPRITETRAIL); write_coord(origin[0]); write_coord(origin[1]); write_coord(origin[2]+40); write_coord(origin[0]); write_coord(origin[1]); write_coord(origin[2]); write_short(TeleportSprite2); write_byte(60); write_byte(20); write_byte(3); write_byte(70); write_byte(20); message_end(); } stock FixedUnsigned16(Float:flValue, iScale) { new iOutput; iOutput = floatround(flValue * iScale); if ( iOutput < 0 ) iOutput = 0; if ( iOutput > 0xFFFF ) iOutput = 0xFFFF; return iOutput; } stock UTIL_ScreenFade(id=0,iColor[3]={0,0,0},Float:flFxTime=-1.0,Float:flHoldTime=0.0,iAlpha=0,iFlags=FFADE_IN,bool:bReliable=false,bool:bExternal=false) { if( id && !is_user_connected(id)) return; new iFadeTime; if( flFxTime == -1.0 ) { iFadeTime = 4; } else { iFadeTime = FixedUnsigned16( flFxTime , 1<<12 ); } static gmsgScreenFade; if( !gmsgScreenFade ) { gmsgScreenFade = get_user_msgid("ScreenFade"); } new MSG_DEST; if( bReliable ) { MSG_DEST = id ? MSG_ONE : MSG_ALL; } else { MSG_DEST = id ? MSG_ONE_UNRELIABLE : MSG_BROADCAST; } if( bExternal ) { emessage_begin( MSG_DEST, gmsgScreenFade, _, id ); ewrite_short( iFadeTime ); ewrite_short( FixedUnsigned16( flHoldTime , 1<<12 ) ); ewrite_short( iFlags ); ewrite_byte( iColor[Red] ); ewrite_byte( iColor[Green] ); ewrite_byte( iColor[Blue] ); ewrite_byte( iAlpha ); emessage_end(); } else { message_begin( MSG_DEST, gmsgScreenFade, _, id ); write_short( iFadeTime ); write_short( FixedUnsigned16( flHoldTime , 1<<12 ) ); write_short( iFlags ); write_byte( iColor[Red] ); write_byte( iColor[Green] ); write_byte( iColor[Blue] ); write_byte( iAlpha ); message_end(); } } stock UTIL_FadeToBlack(id,Float:fxtime=3.0,bool:bReliable=false,bool:bExternal=false) { UTIL_ScreenFade(id, _, fxtime, fxtime, 255, FFADE_OUT|FFADE_STAYOUT,bReliable,bExternal); } public SavePower ( id ) { Vault = nvault_open ( "VIPFurienPower" ); new data_power [ 256 ], key_power [ 64 ]; new name [ 33 ]; get_user_name ( id, name, 32 ); format ( key_power, 63, "%s-/", name ); format ( data_power, 255, "%d#", NextPower [ id ] ); nvault_set ( Vault, key_power, data_power ); nvault_close ( Vault ); return PLUGIN_CONTINUE; } public LoadPower ( id ) { Vault = nvault_open ( "VIPFurienPower" ); new data_power [ 256 ], key_power [ 64 ]; new name [ 33 ]; get_user_name ( id, name, 32 ); format ( key_power, 63, "%s-/", name ); format ( data_power, 255, "%d#", NextPower [ id ] ); nvault_get ( Vault, key_power, data_power, 255 ); replace_all ( data_power, 255, "#", " "); new Power [ 32 ]; parse ( data_power, Power, 31 ); NextPower [ id ] = str_to_num ( Power ); if ( NextPower [ id ] > 9) NextPower [ id ] == random_num ( 1,9 ); nvault_close ( Vault ); return PLUGIN_CONTINUE; } // ACID SPIT bool: acidspit (id) { new Float:Puch[3] pev(id, pev_punchangle, Puch) Puch[0]-=random_float(3.0, 6.0) emit_sound(id, CHAN_WEAPON, fire_sound, 1.0, ATTN_NORM, 0, PITCH_NORM) throw_fire(id) set_pev(id,pev_punchangle,Puch) return true; } public throw_fire(id) { new iEnt = create_entity("info_target") new Float:vfVelocity[3] velocity_by_aim(id, (get_pcvar_num(cvar_shot_speed)*10), vfVelocity) // add velocity of Owner for ent new Float:vfAttack[3], Float:vfAngle[3], Float:vOfps[3] get_weapon_attackment(id, vfAttack, 20.0) pev(id, pev_view_ofs, vOfps) pev(id, pev_angles, vfAngle) // set info for ent set_pev(iEnt, pev_movetype, MOVETYPE_FLY) set_pev(iEnt, PEV_ENT_TIME, get_gametime() + 5.0) // time remove set_pev(iEnt, pev_classname, fire_classname) engfunc(EngFunc_SetModel, iEnt, fire_model_name) //fire_model_name set_pev(iEnt, pev_mins, Float:{-2.0, -2.0, -2.0}) set_pev(iEnt, pev_maxs, Float:{2.0, 2.0, 2.0}) set_pev(iEnt, pev_body, 2) set_pev(iEnt, pev_origin, vfAttack) set_pev(iEnt, pev_velocity, vfVelocity) set_pev(iEnt, pev_solid, SOLID_BBOX) set_pev(iEnt, pev_owner, id) set_pev(iEnt, pev_iuser2, 1) set_pev(iEnt, pev_vuser1, vfVelocity) set_pev(iEnt, pev_angles, vfAngle) set_pev(iEnt, pev_v_angle, vOfps) set_pev(iEnt, pev_rendermode, kRenderTransAdd) set_pev(iEnt, pev_renderamt, 130.0) message_begin(MSG_BROADCAST, SVC_TEMPENTITY) write_byte(TE_BEAMFOLLOW) // TE id write_short(iEnt) // entity write_short(fire_spr_nameid) // sprite write_byte(8) // life write_byte(6) // width write_byte(RED) // r write_byte(GREEN) // g write_byte(BLUE) // b write_byte(180) // brightness message_end() set_task(OFFSET_TIME_ATTACK, "RemoveDisk", id+2242) } public RemoveDisk(taskid) { disc_opened[taskid-2242] = false; remove_task(taskid) } public fw_remove_poison(taskEnt) { new Ent=taskEnt-1234 if(is_valid_ent(Ent)) engfunc(EngFunc_RemoveEntity, Ent) remove_task(taskEnt) } public fw_touch_poison(ent, touch) { client_print(0, print_center, "Touch") if(is_user_alive(touch)) { static Float:CurTime CurTime = get_gametime() if(CurTime - 1.0 > g_poison_touch[touch]) { new Owner = pev(ent, pev_owner) ExecuteHamB(Ham_TakeDamage, touch, Owner, touch, 50.0, DMG_BLAST) g_poison_touch[touch] = CurTime } } } public fw_touch_shot(ent, id) { emit_sound(ent, CHAN_ITEM, g_sound[3], 1.0, ATTN_NORM, 0, PITCH_NORM) new Float:vOrigin[3] pev(ent, pev_origin, vOrigin); new classname[1024] pev(id, pev_classname, classname, charsmax(classname)) if(equal(classname, "func_wall") || equal(classname, "func_breakable") || equal(classname, "worldspawn")) { new Gent = create_entity("info_target") set_pev(Gent, pev_owner, pev(ent, pev_owner)) new Float:maxs[3] = {40.0, 40.0, 25.0} new Float:mins[3] = {-40.0, -40.0, -25.0} entity_set_size(Gent, mins, maxs) set_pev(Gent, pev_classname, poison_classname) engfunc(EngFunc_SetModel, Gent, fire_poison) new Float:vNewOrigin[3],Float:vNormal[3],Float:vTraceDirection[3], Float:vTraceEnd[3],Float:vEntAngles[3]; pev(ent, get_pcvar_num(cvar_movetype) ? pev_velocity : pev_vuser1, vTraceDirection) xs_vec_add(vTraceDirection, vOrigin, vTraceEnd); engfunc(EngFunc_TraceLine, vOrigin, vTraceEnd, DONT_IGNORE_MONSTERS, ent, 0); new Float:fFraction; get_tr2(0, TR_flFraction, fFraction); // -- We hit something! if(fFraction < 1.0) { // -- Save results to be used later. get_tr2(0, TR_vecEndPos, vTraceEnd); get_tr2(0, TR_vecPlaneNormal, vNormal); } xs_vec_add(vTraceEnd, vNormal, vNewOrigin); vector_to_angle(vNormal,vEntAngles); vEntAngles[0]-=90.0 set_pev(Gent,pev_angles,vEntAngles); set_pev(Gent, pev_origin, vNewOrigin) set_pev(Gent, pev_rendermode, kRenderTransAdd) set_pev(Gent, pev_renderamt, 160.0) set_pev(Gent, pev_solid, SOLID_SLIDEBOX) set_pev(Gent, pev_movetype, MOVETYPE_NONE) effect_play_sprite(vOrigin, 40.0) set_task(TIME_POISON, "fw_remove_poison", Gent+1234) remove_entity(ent) return FMRES_IGNORED } if(!is_valid_ent(id)) return FMRES_IGNORED if(!is_user_alive(id) || !is_user_connected(id)) { remove_entity(ent) return FMRES_IGNORED } if(pev(ent, pev_iuser2) == 1) { set_pev(ent, pev_iuser2, 0) pev(id, pev_origin, vOrigin) effect_play_sprite(vOrigin, 30.0) message_begin (MSG_BROADCAST,SVC_TEMPENTITY) write_byte( TE_SPRITETRAIL ) // Throws a shower of sprites or models write_coord( floatround(vOrigin[ 0 ]) ) // start pos write_coord( floatround(vOrigin[ 1 ]) ) write_coord( floatround(vOrigin[ 2 ]) ) write_coord( floatround(vOrigin[ 0 ]) ) // velocity write_coord( floatround(vOrigin[ 1 ]) ) write_coord( floatround(vOrigin[ 2 ]) +20) write_short(sprite_ability ) // spr write_byte(18) // (count) write_byte(random_num(8,15)) // (life in 0.1's) write_byte(4) // byte (scale in 0.1's) write_byte(random_num(22,35)) // (velocity along vector in 10's) write_byte(20) // (randomness of velocity in 10's) message_end() static attacker attacker = pev(ent, pev_owner) if(!fm_get_user_godmode(id)) { new Float:velocity[3] pev(ent, pev_vuser1, velocity) velocity[2]+=30.0 xs_vec_mul_scalar(velocity, 1000.0/xs_vec_len(velocity), velocity) ExecuteHam(Ham_TakeDamage, id, "poison_launcher", attacker, random_float(get_pcvar_float(cvar_start_damage), get_pcvar_float(cvar_end_damage)), DMG_BULLET) message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("Damage"), _, id) write_byte(0) // damage save write_byte(0) // damage take write_long(DMG_POISON) // damage type write_coord(0) // x write_coord(0) // y write_coord(0) // z message_end() user_screen_shake(id, 4, 2, 5) do_screen_fade(id, 0.8, 0.7, RED, GREEN, BLUE, 180); set_pev(id, pev_velocity, velocity) gPoisonGlow[id] = get_gametime() + 1.0; gGlowPlayer[id] = true; fm_set_rendering(id, kRenderFxGlowShell, RED, GREEN, BLUE, kRenderNormal, 25) } remove_entity(ent) return FMRES_IGNORED } return FMRES_IGNORED } public client_PostThink(id) { if (!is_user_alive(id)) return; if(gGlowPlayer[id]) { if(gPoisonGlow[id]>get_gametime()) return set_pev(id, pev_renderfx, 0) gGlowPlayer[id] = false; } } effect_play_sprite(const Float:vOrigin[3], Float:Add) { engfunc(EngFunc_MessageBegin, MSG_PVS, SVC_TEMPENTITY, vOrigin, 0) write_byte(TE_SPRITE) engfunc(EngFunc_WriteCoord, vOrigin[0]) engfunc(EngFunc_WriteCoord, vOrigin[1]) engfunc(EngFunc_WriteCoord, vOrigin[2] + Add) write_short(fire_spr_id) write_byte(8) write_byte(200) message_end() } user_screen_shake(id, amplitude = 4, duration = 2, frequency = 10) { message_begin(MSG_ONE_UNRELIABLE, g_msgScreenShake, _, id) write_short((1<<12)*amplitude) // ?? write_short((1<<12)*duration) // ?? write_short((1<<12)*frequency) // ?? message_end() } stock do_screen_fade( id, Float:fadeTime, Float:holdTime, red, green, blue, alpha, type = 0x0000 ) { static msgScreenFade; if ( !msgScreenFade ) { msgScreenFade = get_user_msgid( "ScreenFade" ); } new fade, hold; fade = clamp( floatround( fadeTime * float(1<<12)), 0, 0xFFFF ); hold = clamp( floatround( holdTime * float(1<<12)), 0, 0xFFFF ); message_begin( MSG_ONE_UNRELIABLE, msgScreenFade, _, id ); write_short( fade ); write_short( hold ); write_short( type ); write_byte( red ); write_byte( green ); write_byte( blue ); write_byte( alpha ); message_end( ); } stock get_weapon_attackment(id, Float:output[3], Float:fDis = 40.0) { new Float:vfEnd[3], viEnd[3] get_user_origin(id, viEnd, 3) IVecFVec(viEnd, vfEnd) new Float:fOrigin[3], Float:fAngle[3] pev(id, pev_origin, fOrigin) pev(id, pev_view_ofs, fAngle) xs_vec_add(fOrigin, fAngle, fOrigin) new Float:fAttack[3] xs_vec_sub(vfEnd, fOrigin, fAttack) xs_vec_sub(vfEnd, fOrigin, fAttack) new Float:fRate fRate = fDis / vector_length(fAttack) xs_vec_mul_scalar(fAttack, fRate, fAttack) xs_vec_add(fOrigin, fAttack, output) } // END ACID SPIT stock ColorChat(const id, const input[], any:...) { new count = 1, players[32]; static msg[191]; vformat(msg, 190, input, 3); replace_all(msg, 190, "!x04", "^4"); replace_all(msg, 190, "!x01", "^1"); replace_all(msg, 190, "!x03", "^3"); if(id) players[0] = id; else get_players(players, count, "ch"); { for(new i = 0; i < count; i++) { if(is_user_connected(players)) { message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("SayText"), _, players); write_byte(players); write_string(msg); message_end(); } } } } public ExplodeAndDamageNearPlayers( iPsycho, const Float:fOrigin[ 3 ] ) { static iVictim; iVictim = -1; while( ( iVictim = engfunc(EngFunc_FindEntityInSphere, iVictim, fOrigin, 300.0) ) != 0 ) { if( !is_user_alive( iVictim ) ) continue; if( get_user_team( iPsycho ) == get_user_team( iVictim ) ) continue; if ( HasPower [ iVictim ] != 9 ) { new Float:fHealth; pev( iVictim, pev_health, fHealth ); fHealth -= float( random_num( 70, 150 ) ); new originnn[3]; get_user_origin ( iVictim, originnn, 0 ); message_begin(MSG_PAS, SVC_TEMPENTITY, originnn); write_byte(TE_BEAMCYLINDER); write_coord(originnn[0]); write_coord(originnn[1]); write_coord(originnn[2]+10); write_coord(originnn[0]); write_coord(originnn[1]); write_coord(originnn[2]+60); write_short(RippleSprite); write_byte(0); write_byte(0); write_byte(3); write_byte(60); write_byte(0); write_byte(0); //255 write_byte(0); //255 write_byte(255); //255 //BLUE write_byte(255); //255 write_byte(0); message_end(); Create_TE_SPRITETRAIL3( originnn, originnn, RippleSprite, 50, 10, 2, 50, 10 ); if( fHealth <= 0 ) { log_kill( iPsycho, iVictim, "Explode", 0 ); fm_set_user_frags ( iPsycho, get_user_frags ( iPsycho ) + 1 ); } else { ShakeScreen( iVictim, 5.5 ); FadeScreen( iVictim, 3.0, 42, 170, 255, 100 ); damage_user( iVictim, fHealth, fOrigin, DMG_BLAST ); } } } } public ShakeScreen( id, const Float:seconds ) { message_begin( MSG_ONE, get_user_msgid( "ScreenShake" ), { 0, 0, 0 }, id ); write_short( floatround( 4096.0 * seconds, floatround_round ) ); write_short( floatround( 4096.0 * seconds, floatround_round ) ); write_short( 1<<13 ); message_end( ); } public FadeScreen( id, const Float:seconds, const redd, const greenn, const bluee, const alpha ) { message_begin( MSG_ONE, get_user_msgid( "ScreenFade" ), _, id ); write_short( floatround( 4096.0 * seconds, floatround_round ) ); write_short( floatround( 4096.0 * seconds, floatround_round ) ); write_short( 0x0000 ); write_byte( redd ); write_byte( greenn ); write_byte( bluee ); write_byte( alpha ); message_end( ); } stock log_kill( iKiller, iVictim, szWeapon[], iHeadshot ) { user_silentkill( iVictim ); message_begin( MSG_ALL, get_user_msgid( "DeathMsg" ), {0,0,0}, 0 ); write_byte( iKiller ); write_byte( iVictim ); write_byte( iHeadshot ); write_string( szWeapon ); message_end( ); fm_set_user_frags( iKiller, get_user_frags( iKiller ) +1 ); new kname[32], vname[32], kauthid[32], vauthid[32], kteam[10], vteam[10]; get_user_name( iKiller, kname, 31 ); get_user_team( iKiller, kteam, 9 ); get_user_authid( iKiller, kauthid, 31 ); get_user_name( iVictim, vname, 31 ); get_user_team( iVictim, vteam, 9 ); get_user_authid( iVictim, vauthid, 31 ); log_message("^"%s<%d><%s><%s>^" killed ^"%s<%d><%s><%s>^" with ^"%s^"", kname, get_user_userid( iKiller ), kauthid, kteam, vname, get_user_userid( iVictim ), vauthid, vteam, szWeapon ); return 0; } stock damage_user( iVictim, const Float:fHealthLeft, const Float:fOrigin[ 3 ], bit ) { new iOrigin[ 3 ]; FVecIVec( fOrigin, iOrigin ); message_begin( MSG_ONE, get_user_msgid( "Damage" ), {0,0,0}, iVictim ); write_byte( 21 ); write_byte( 20 ); write_long( bit ); write_coord( iOrigin[ 0 ] ); write_coord( iOrigin[ 1 ] ); write_coord( iOrigin[ 2 ] ); message_end( ); set_pev( iVictim, pev_health, fHealthLeft ); } CreateBlast( const Redd, const Greenn, const Bluee, const iOrigin[ 3 ] ) { // Small ring message_begin( MSG_BROADCAST, SVC_TEMPENTITY ); write_byte( TE_BEAMCYLINDER ); write_coord( iOrigin[ 0 ] ); // start X write_coord( iOrigin[ 1 ] ); // start Y write_coord( iOrigin[ 2 ] ); // start Z write_coord( iOrigin[ 0 ] ); // something X write_coord( iOrigin[ 1 ] ); // something Y write_coord( iOrigin[ 2 ] + 285 ); // something Z write_short( gShockWaveSprite ); // sprite write_byte( 0 ); // startframe write_byte( 0 ); // framerate write_byte( 4 ); // life write_byte( 60 ); // width write_byte( 0 ); // noise write_byte( Redd ); // red write_byte( Greenn ); // green write_byte( Bluee ); // blue write_byte( 200 ); // brightness write_byte( 0 ); // speed message_end( ); // Medium ring message_begin( MSG_BROADCAST, SVC_TEMPENTITY ); write_byte( TE_BEAMCYLINDER ); write_coord( iOrigin[ 0 ] ); // start X write_coord( iOrigin[ 1 ] ); // start Y write_coord( iOrigin[ 2 ] ); // start Z write_coord( iOrigin[ 0 ] ); // something X write_coord( iOrigin[ 1 ] ); // something Y write_coord( iOrigin[ 2 ] + 385 ); // something Z write_short( gShockWaveSprite ); // sprite write_byte( 0 ); // startframe write_byte( 0 ); // framerate write_byte( 4 ); // life write_byte( 60 ); // width write_byte( 0 ); // noise write_byte( Redd ); // red write_byte( Greenn ); // green write_byte( Bluee ); // blue write_byte( 200 ); // brightness write_byte( 0 ); // speed message_end( ); // Large ring message_begin( MSG_BROADCAST, SVC_TEMPENTITY ); write_byte( TE_BEAMCYLINDER ); write_coord( iOrigin[ 0 ] ); // start X write_coord( iOrigin[ 1 ] ); // start Y write_coord( iOrigin[ 2 ] ); // start Z write_coord( iOrigin[ 0 ] ); // something X write_coord( iOrigin[ 1 ] ); // something Y write_coord( iOrigin[ 2 ] + 470 ); // something Z write_short( gShockWaveSprite ); // sprite write_byte( 0 ); // startframe write_byte( 0 ); // framerate write_byte( 4 ); // life write_byte( 60 ); // width write_byte( 0 ); // noise write_byte( Redd ); // red write_byte( Greenn ); // green write_byte( Bluee ); // blue write_byte( 200 ); // brightness write_byte( 0 ); // speed message_end( ); // Largest Ring message_begin( MSG_BROADCAST, SVC_TEMPENTITY ); write_byte( TE_BEAMCYLINDER ); write_coord( iOrigin[ 0 ] ); // start X write_coord( iOrigin[ 1 ] ); // start Y write_coord( iOrigin[ 2 ] ); // start Z write_coord( iOrigin[ 0 ] ); // something X write_coord( iOrigin[ 1 ] ); // something Y write_coord( iOrigin[ 2 ] + 555 ); // something Z write_short( gShockWaveSprite ); // sprite write_byte( 0 ); // startframe write_byte( 0 ); // framerate write_byte( 4 ); // life write_byte( 60 ); // width write_byte( 0 ); // noise write_byte( Redd ); // red write_byte( Greenn ); // green write_byte( Bluee ); // blue write_byte( 200 ); // brightness write_byte( 0 ); // speed message_end( ); message_begin(MSG_BROADCAST, SVC_TEMPENTITY); write_byte(TE_SPRITETRAIL); write_coord(iOrigin[0]); write_coord(iOrigin[1]); write_coord(iOrigin[2]+40); write_coord(iOrigin[0]); write_coord(iOrigin[1]); write_coord(iOrigin[2]); write_short(TeleportSprite2); write_byte(20); write_byte(5); write_byte(3); write_byte(40); write_byte(10); message_end(); } stock Create_TE_SPRITETRAIL3(start[3], end[3], iSprite, count, life, scale, velocity, random ){ message_begin( MSG_BROADCAST,SVC_TEMPENTITY) write_byte( TE_SPRITETRAIL ) write_coord( start[0] ) // start position (X) write_coord( start[1] ) // start position (Y) write_coord( start[2] + 40 ) // start position (Z) write_coord( end[0] ) // end position (X) write_coord( end[1] ) // end position (Y) write_coord( end[2] ) // end position (Z) write_short( iSprite ) // sprite index write_byte( count ) // count write_byte( life) // life in 0.1's write_byte( scale) // scale in 0.1's write_byte( velocity ) // velocity along vector in 10's write_byte( random ) // randomness of velocity in 10's message_end() } bool: thunderbolt ( id ) { new target, body; static Float:start[3]; static Float:aim[3]; pev(id, pev_origin, start); fm_get_aim_origin(id, aim); start[2] += 16.0; // raise aim[2] += 16.0; // raise message_begin(MSG_BROADCAST,SVC_TEMPENTITY); write_byte(0); engfunc(EngFunc_WriteCoord,start[0]); engfunc(EngFunc_WriteCoord,start[1]); engfunc(EngFunc_WriteCoord,start[2]); engfunc(EngFunc_WriteCoord,aim[0]); engfunc(EngFunc_WriteCoord,aim[1]); engfunc(EngFunc_WriteCoord,aim[2]); write_short(ThunderSprite); // sprite index write_byte(0); // start frame write_byte(30); // frame rate in 0.1's write_byte(10); // life in 0.1's write_byte(50); // line width in 0.1's write_byte(50); // noise amplititude in 0.01's write_byte(51); // red write_byte(204); // green write_byte(255); // blue write_byte(100); // brightness write_byte(50); // scroll speed in 0.1's message_end(); get_user_aiming (id, target, body, 5000); if(is_user_alive(target) && get_user_team(id) != get_user_team(target)) { // get target's origin new vorigin[ 3 ], pos[ 3 ]; get_user_origin( target, vorigin ); // modify origins vorigin[ 2 ] -= 26; pos[ 0 ] = vorigin[ 0 ] + 150; pos[ 1 ] = vorigin[ 1 ] + 150; pos[ 2 ] = vorigin[ 2 ] + 800; // create lightning bolt Thunder( pos, vorigin ); Thunder2 ( pos, vorigin ); Thunder( pos, vorigin ); Thunder2 ( pos, vorigin ); Thunder( pos, vorigin ); Thunder2 ( pos, vorigin ); Thunder( pos, vorigin ); Thunder2 ( pos, vorigin ); new Float:fOrigin[ 3 ], iOrigin[ 3 ]; pev( target, pev_origin, fOrigin ); FVecIVec( fOrigin, iOrigin ); new Float:fHealth; pev( target, pev_health, fHealth ); fHealth -= float( random_num( 50, 100 ) ); if( fHealth <= 0 ) { log_kill( id, target, "Super Thunder Bolt", 0 ); fm_set_user_frags ( id, get_user_frags ( id ) + 1 ); } else { set_pev( target, pev_health, fHealth ); } LightNearPlayers ( target, fOrigin ); Smoke( vorigin, 10, 10 ); message_begin(MSG_ONE, get_user_msgid("ScreenFade"), {0,0,0}, id); write_short(1<<10); write_short(1<<10); write_short(0x0000); write_byte(255); write_byte(255); write_byte(255); write_byte(50); message_end(); message_begin(MSG_ONE, get_user_msgid("ScreenFade"), {0,0,0}, target); write_short(1<<10); write_short(1<<10); write_short(0x0000); write_byte(255); write_byte(255); write_byte(255); write_byte(50); message_end(); } return true; } Thunder( start[ 3 ], end[ 3 ] ) { message_begin( MSG_BROADCAST, SVC_TEMPENTITY ); write_byte( TE_BEAMPOINTS ); write_coord( start[ 0 ] ); write_coord( start[ 1 ] ); write_coord( start[ 2 ] ); write_coord( end[ 0 ] ); write_coord( end[ 1 ] ); write_coord( end[ 2 ] ); write_short( g_lightning ); write_byte( 1 ); write_byte( 5 ); write_byte( 7 ); write_byte( 80 ); write_byte( 30 ); write_byte( 200 ); write_byte( 200 ); write_byte( 200 ); write_byte( 200 ); write_byte( 200 ); message_end(); message_begin( MSG_PVS, SVC_TEMPENTITY, end ); write_byte( TE_SPARKS ); write_coord( end[ 0 ] ); write_coord( end[ 1 ]); write_coord( end[ 2 ] ); message_end(); emit_sound( 0 ,CHAN_ITEM, thunder_sound, 1.0, ATTN_NORM, 0, PITCH_NORM ); } Thunder2( start[ 3 ], end[ 3 ] ) { message_begin( MSG_BROADCAST, SVC_TEMPENTITY ); write_byte( TE_BEAMPOINTS ); write_coord( start[ 0 ] ); write_coord( start[ 1 ] ); write_coord( start[ 2 ] ); write_coord( end[ 0 ] ); write_coord( end[ 1 ] ); write_coord( end[ 2 ] ); write_short( g_lightning ); write_byte( 1 ); write_byte( 5 ); write_byte( 7 ); write_byte( 20 ); write_byte( 30 ); write_byte( 200 ); write_byte( 200 ); write_byte( 200 ); write_byte( 200 ); write_byte( 200 ); message_end(); message_begin( MSG_PVS, SVC_TEMPENTITY, end ); write_byte( TE_SPARKS ); write_coord( end[ 0 ] ); write_coord( end[ 1 ]); write_coord( end[ 2 ] ); message_end(); } Smoke( iorigin[ 3 ], scale, framerate ) { message_begin( MSG_BROADCAST, SVC_TEMPENTITY ); write_byte( TE_SMOKE ); write_coord( iorigin[ 0 ] ); write_coord( iorigin[ 1 ] ); write_coord( iorigin[ 2 ] ); write_short( g_smoke ); write_byte( scale ); write_byte( framerate ); message_end(); } public LightNearPlayers( id, const Float:fOrigin[ 3 ] ) { static iVictim; iVictim = -1; while( ( iVictim = engfunc(EngFunc_FindEntityInSphere, iVictim, fOrigin, 300.0) ) != 0 ) { if( !is_user_alive( iVictim ) ) continue; if( get_user_team( id ) == get_user_team( iVictim ) ) { new Float:fVictimOrigin[ 3 ], iVictimOrigin[ 3 ]; pev( id, pev_origin, fVictimOrigin ); FVecIVec( fVictimOrigin, iVictimOrigin ); CreateLightning( id, iVictim, iVictimOrigin ); } } } public CreateLightning( id, iVictim, iVictimOrigin[ 3 ] ) { message_begin( MSG_BROADCAST, SVC_TEMPENTITY ); write_byte( TE_BEAMENTS ); write_short( id ); // start entity write_short( iVictim ); // end entity write_short( g_lightning ); // model write_byte( 0 ); // starting frame write_byte( 15 ); // frame rate write_byte( 15 ); // life write_byte( 80 ); // line width write_byte( 10 ); // noise amplitude write_byte( 255 ); // red write_byte( 255 ); // green write_byte( 255 ); // blue write_byte( 255 ); // brightness write_byte( 0 ); // scroll speed message_end( ); message_begin( MSG_BROADCAST, SVC_TEMPENTITY ); write_byte( TE_ELIGHT ); write_short( iVictim ); // entity write_coord( iVictimOrigin[0] ); // initial position write_coord( iVictimOrigin[1] ); // initial position write_coord( iVictimOrigin[2] ); // initial position write_coord( 100 ); // radius write_byte( 51 ); // red write_byte( 204 ); // green write_byte( 255 ); // blue write_byte( 15 ); // life write_coord( 0 ); // decay rate message_end( ); } public cloudfire(id) { set_hudmessage(0, 170, 255, 0.02, 0.87, 0, 6.0, 1.0) show_hudmessage(id, "Ammo: %d", FireAmmo [ id ]) if ( FireAmmo [ id ] > 0 ) { new iEnt = create_entity("env_sprite") new Float:vfVelocity[3] velocity_by_aim(id, 500, vfVelocity) xs_vec_mul_scalar(vfVelocity, 0.4, vfVelocity) // add velocity of Owner for ent new Float:fOwnerVel[3], Float:vfAttack[3], Float:vfAngle[3] pev(id, pev_angles, vfAngle) //pev(id, pev_origin, vfAttack) get_weapon_attackment(id, vfAttack, 20.0) vfAttack[2] -= 7.0 //vfAttack[1] += 7.0 pev(id, pev_velocity, fOwnerVel) fOwnerVel[2] = 0.0 xs_vec_add(vfVelocity, fOwnerVel, vfVelocity) // set info for ent set_pev(iEnt, pev_movetype, MOVETYPE_FLY) set_pev(iEnt, pev_rendermode, kRenderTransAdd) set_pev(iEnt, pev_renderamt, 150.0) set_pev(iEnt, PEV_ENT_TIME, get_gametime() + 1.5) // time remove set_pev(iEnt, pev_scale, 0.2) set_pev(iEnt, pev_nextthink, halflife_time() + 0.05) set_pev(iEnt, pev_classname, fire_classname_could) engfunc(EngFunc_SetModel, iEnt, fire_spr_name_cloud) set_pev(iEnt, pev_mins, Float:{-1.0, -1.0, -1.0}) set_pev(iEnt, pev_maxs, Float:{1.0, 1.0, 1.0}) set_pev(iEnt, pev_origin, vfAttack) set_pev(iEnt, pev_gravity, 0.01) set_pev(iEnt, pev_velocity, vfVelocity) vfAngle[1] += 30.0 set_pev(iEnt, pev_angles, vfAngle) set_pev(iEnt, pev_solid, SOLID_BBOX) set_pev(iEnt, pev_owner, id) set_pev(iEnt, pev_iuser2, 1) emit_sound(id, CHAN_WEAPON, "weapons/flamegun-2.wav", 1.0, ATTN_NORM, 0, PITCH_NORM) --FireAmmo [ id ]; } else { set_hudmessage(0, 170, 255, -1.0, 0.13, 0, 6.0, 2.0) show_hudmessage(id, "No ammo !") return 1; } return 0; } public fw_think_fire(iEnt) { if ( !pev_valid(iEnt) ) return; new Float:fFrame, Float:fScale, Float:fNextThink pev(iEnt, pev_frame, fFrame) pev(iEnt, pev_scale, fScale) // effect exp new iMoveType = pev(iEnt, pev_movetype) if (iMoveType == MOVETYPE_NONE) { fNextThink = 0.015 fFrame += 1.0 if (fFrame > 21.0) { engfunc(EngFunc_RemoveEntity, iEnt) return } } // effect normal else { fNextThink = 0.045 fFrame += 1.0 fFrame = floatmin(21.0, fFrame) } fScale = (entity_range(iEnt, pev(iEnt, pev_owner)) / 500) * 3.0 set_pev(iEnt, pev_frame, fFrame) set_pev(iEnt, pev_scale, fScale) set_pev(iEnt, pev_nextthink, halflife_time() + fNextThink) // time remove new Float:fTimeRemove pev(iEnt, PEV_ENT_TIME, fTimeRemove) if (get_gametime() >= fTimeRemove) { engfunc(EngFunc_RemoveEntity, iEnt) return; } } public fw_touch_fire(ent, id) { set_pev(ent, pev_movetype, MOVETYPE_NONE) set_pev(ent, pev_solid, SOLID_NOT) if(!is_valid_ent(id)) return FMRES_IGNORED if(!is_user_alive(id) || !is_user_connected(id) ) return FMRES_IGNORED if(pev(ent, pev_iuser2) == 1) { set_pev(ent, pev_iuser2, 0) static attacker, ent_kill attacker = pev(ent, pev_owner) ent_kill = fm_get_user_weapon_entity(id, CSW_KNIFE) ExecuteHam(Ham_TakeDamage, id, ent_kill, attacker, random_float(70.0, 100.0), DMG_BULLET) } return FMRES_HANDLED } /* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE *{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1033\\ f0\\ fs16 \n\\ par } */
Resurse nu am, cautati voi.
Nume: Ultimate Furien VIP
Versiune: In sursa
Link: La DaNNe. patronu'
Module necesare; In sursa
CVAR-uri: In sursa
Imagini: Faceti voi