Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #using scripts\codescripts\struct;
- #using scripts\shared\array_shared;
- #using scripts\shared\clientfield_shared;
- #using scripts\shared\exploder_shared;
- #using scripts\shared\flag_shared;
- #using scripts\shared\system_shared;
- #using scripts\shared\util_shared;
- #using scripts\shared\visionset_mgr_shared;
- #insert scripts\shared\shared.gsh;
- #insert scripts\shared\version.gsh;
- #using scripts\zm\_util;
- #using scripts\zm\_zm;
- #using scripts\zm\_zm_perks;
- #using scripts\zm\_zm_pers_upgrades;
- #using scripts\zm\_zm_pers_upgrades_functions;
- #using scripts\zm\_zm_pers_upgrades_system;
- #using scripts\zm\_zm_stats;
- #using scripts\zm\_zm_utility;
- #insert scripts\zm\_zm_perk_custom_perk.gsh;
- #insert scripts\zm\_zm_perks.gsh;
- #insert scripts\zm\_zm_utility.gsh;
- /***************************** WARDOGSK93: Start *****************************/
- #using scripts\wardog\wardog_addon;
- #insert scripts\wardog\wardog_addon.gsh;
- /***************************** WARDOGSK93: End *****************************/
- //#precache( "material", QUICK_REVIVE_SHADER );
- //#precache( "string", "ZOMBIE_PERK_QUICKREVIVE" );
- //#precache( "fx", "zombie/fx_perk_quick_revive_zmb" );
- #precache( "material", "snails_pace_shader" ); // CHANGE THIS TO YOUR PERK SHADER
- #namespace zm_perk_custom_perk;
- REGISTER_SYSTEM( "zm_perk_custom_perk", &__init__, undefined )
- // QUICK REVIVE ( QUICK REVIVE )
- //-----------------------------------------------------------------------------------
- // setup
- //-----------------------------------------------------------------------------------
- function __init__()
- {
- enable_custom_perk_for_level();
- //level.check_quickrevive_hotjoin = &check_quickrevive_for_hotjoin;
- }
- function enable_custom_perk_for_level()
- {
- // register quick revive perk for level
- zm_perks::register_perk_basic_info( PERK_CUSTOM_PERK, "customperk", CUSTOM_PERK_COST, "Hold [{+activate}] for Snail's Pace [Cost: &&1]", GetWeapon( CUSTOM_PERK_BOTTLE_WEAPON ) );
- zm_perks::register_perk_precache_func( PERK_CUSTOM_PERK, &custom_perk_precache );
- zm_perks::register_perk_clientfields( PERK_CUSTOM_PERK, &custom_perk_register_clientfield, &custom_perk_set_clientfield );
- zm_perks::register_perk_machine( PERK_CUSTOM_PERK, &custom_perk_machine_setup );
- zm_perks::register_perk_threads( PERK_CUSTOM_PERK, &give_custom_perk, &take_custom_perk );
- zm_perks::register_perk_host_migration_params( PERK_CUSTOM_PERK, CUSTOM_RADIANT_MACHINE_NAME, CUSTOM_MACHINE_LIGHT_FX );
- //zm_perks::register_perk_machine_power_override( PERK_CUSTOM_PERK, &turn_revive_on ); // custom power function gets threaded here
- //level flag::init( "solo_revive" );
- }
- function custom_perk_precache()
- {
- // PRECACHE SHIT HERE
- /*
- if( IsDefined(level.quick_revive_precache_override_func) )
- {
- [[ level.quick_revive_precache_override_func ]]();
- return;
- }
- level._effect[QUICK_REVIVE_MACHINE_LIGHT_FX] = "zombie/fx_perk_quick_revive_zmb";
- */
- level.machine_assets[PERK_CUSTOM_PERK] = SpawnStruct();
- level.machine_assets[PERK_CUSTOM_PERK].weapon = GetWeapon( CUSTOM_PERK_BOTTLE_WEAPON );
- level.machine_assets[PERK_CUSTOM_PERK].off_model = CUSTOM_MACHINE_DISABLED_MODEL;
- level.machine_assets[PERK_CUSTOM_PERK].on_model = CUSTOM_MACHINE_ACTIVE_MODEL;
- addon_message = "hud|";
- addon_message += PERK_CUSTOM_PERK + "|"; // Replace PERK_NAME to your perks name
- addon_message += "shader|";
- addon_message += CUSTOM_SHADER; // Replace PERK_SHADER to your perks shader
- wardog_addon::send_addon_message("Unknown", ADDON_NAME_PERK_HUD, addon_message);
- }
- function custom_perk_register_clientfield()
- {
- clientfield::register( "clientuimodel", PERK_CLIENTFIELD_CUSTOMPERK, VERSION_SHIP, 2, "int" );
- }
- function custom_perk_set_clientfield( state )
- {
- self clientfield::set_player_uimodel( PERK_CLIENTFIELD_CUSTOMPERK, state );
- }
- function custom_perk_machine_setup( use_trigger, perk_machine, bump_trigger, collision )
- {
- use_trigger.script_sound = "mus_perks_revive_jingle";
- use_trigger.script_string = "revive_perk";
- use_trigger.script_label = "mus_perks_revive_sting";
- use_trigger.target = CUSTOM_RADIANT_MACHINE_NAME;
- perk_machine.script_string = "revive_perk";
- perk_machine.targetname = CUSTOM_RADIANT_MACHINE_NAME;
- if(IsDefined(bump_trigger))
- {
- bump_trigger.script_string = "revive_perk";
- }
- }
- function give_custom_perk()
- {
- // quick revive in solo gives an extra life
- // give perk here
- self.hasCustomPerk = true;
- self.has_custom_perks++;
- self thread check_for_close_zoms();
- addon_message = "hud|";
- addon_message += PERK_CUSTOM_PERK + "|";
- addon_message += "give";
- wardog_addon::send_addon_message("Unknown", ADDON_NAME_PERK_HUD, addon_message, self);
- trigger = GetEnt("vending_snails_pace", "target"); // CHANGE THIS TO YOUR PERK MACHINE NAME
- trigger SetHintStringForPlayer(self, "");
- }
- function take_custom_perk( b_pause, str_perk, str_result )
- {
- // take perk here
- self.hasCustomPerk = false;
- self.has_custom_perks--;
- trigger = GetEnt("vending_snails_pace", "target");
- trigger SetHintStringForPlayer(self, "Hold [{+activate}] for Snail's Pace [Cost: 300]"); // CHANGE THIS TO YOUR HINTSTRING ABOVE
- addon_message = "hud|";
- addon_message += PERK_CUSTOM_PERK + "|";
- addon_message += "take";
- wardog_addon::send_addon_message("Unknown", ADDON_NAME_PERK_HUD, addon_message, self);
- }
- function check_for_close_zoms()
- {
- while(self.hasCustomPerk)
- {
- zoms = GetAISpeciesArray( "axis", "all" );
- zoms_1 = util::get_array_of_closest( self.origin, zoms , undefined , undefined, 100 );
- zoms_2 = util::get_array_of_closest( self.origin, zoms , undefined , undefined, 80 );
- foreach( zom in zoms_1 )
- {
- if( !isDefined( zom.is_snailed ))
- zom thread warp_time();
- }
- foreach( zom in zoms_2 )
- {
- if( isDefined( zom.is_snailed ))
- zom thread back_to_normal();
- }
- wait(0.05);
- }
- }
- function warp_time()
- {
- self.is_snailed = true;
- self ASMSetAnimationRate(0.6);
- self SetMoveSpeedScale(0.6);
- wait (3);
- self thread back_to_normal();
- }
- function back_to_normal()
- {
- self.is_snailed = undefined;
- self ASMSetAnimationRate(1);
- self SetMoveSpeedScale(1);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement