root/mods/mapname/maps/mapname.gsc
level thread DLC3_threadCalls(); thread gobble_gum_machine();
mapname.gsc
gobble_gum_machine() { //image of gobble gum PrecacheShader( "specialty_gobble_gum_zombies"); PrecacheShader( "specialty_nuke"); //cost of gobble gum buy cost = 500; //activate the following script code when player buys perk trigger = getEnt("gobble_gum_trigger", "targetname"); bought_round_number = undefined; //level.round_number = 0; last_round = 0; trigger setHintString ("Hold &&1 to dispense Gobble Gum [500]"); //hold code till trigger is activated trigger waittill("trigger", player); using_player = player; //random gumball script here //-------------------------------------- gobble_gums_index = 0; gobble_gums = ; add_to_array("gobble_gums","insta_kill"); add_to_array("gobble_gums","double_points"); add_to_array("gobble_gums","nuke"); add_to_array("gobble_gums","plain_sight"); add_to_array("gobble_gums","pack_a_punch"); //gobble_gum = gobble_gums[RandomInt(gobble_gums.size)]; //gobble_gum = array_randomize(gobble_gums); //if( gobble_gums_index >= gobble_gums.size ) //{ // gobble_gums_index = 0; // randomize_gobble_gums(gobble_gums); //} //gobble_gums_index++; //-------------------------------------- //final gumball selected from script //this pack a punch gobble gum packs my current gun for 30 seconds and then returns the old one after the time has ran out! gumball = "pack_a_punch"; //this gumball code will give me the gumball without picking a random one //-------------------------------------- if ( player.score < cost ) { //player iprintln( "Not enough points to buy Perk: " + perk ); self playsound("deny"); player thread play_no_money_perk_dialog(); //continue; } else { //blur players view for effect player setblur( 4, 0.1 ); wait(0.6); player setblur(0, 0.1); //add the image of the shader to the hud player thread gumball_hud_create(gumball); //subtract players points for the cost of the gobble gum machine player maps\_zombiemode_score::minus_to_player_score(cost); player thread gobble_gum_activate(using_player, gumball); //bought_round_number = level.round_number; } //rerun the gobble gum machine script so it keeps running thread gobble_gum_machine(); } gobble_gum_activate(using_player, gumball) { perk_bottle = "specialty_quickrevive"; while(1) { if(using_player useButtonPressed()) { if(gumball == "none") { //iprintln("You have no gobble gums!"); } else { //get players gun gun = self GetCurrentWeapon(); //eat gobble gum when pressed button thread perk_give_bottle_begin(perk_bottle); //play blowing bubble sound effect //using_player playsound("blowing_gobble_gum"); //notify player the gumball is being chewed (the player has the gumball) iprintln("Chewing Gobble Gum!"); wait 3; thread perk_give_bottle_end(gun, perk_bottle); //remove gobble gum from hud because it was used using_player thread gumball_hud_destroy(gumball); //player eat gumball and recieve effects thread player_eat(gumball, using_player, gun); using_player setElectrified(true); gumball = "none"; } wait 1; } wait 0.01; } } player_eat(gumball, using_player, gun) { if(gumball == "insta_kill") { maps\_zombiemode_powerups::insta_kill_powerup(); } if(gumball == "nuke") { maps\_zombiemode_powerups::nuke_powerup(); } if(gumball == "max_ammo") { maps\_zombiemode_powerups::full_ammo_powerup(); } if(gumball == "carpenter") { } if(gumball == "double_points") { maps\_zombiemode_powerups::double_points_powerup(); } if(gumball == "pack_a_punch") { //time how long the player gets to use their pack-a-punched gun (seconds) level.packapunch_timeout = 30; packa_timer = spawn("script_origin", self.origin); using_player TakeWeapon(gun); using_player GiveWeapon(gun+"_upgraded"); //using_player GiveMaxAmmo(gun+"_upgraded"); using_player switchToWeapon(gun+"_upgraded"); self thread wait_for_timeout(packa_timer); self waittill("pap_timeout"); using_player TakeWeapon(self GetCurrentWeapon()); wait 0.01; using_player GiveWeapon(gun); using_player switchToWeapon(gun); } //perkacholic is still beta if(gumball == "perkacholic") { using_player perk_hud_create("specialty_armorvest"); using_player perk_hud_create("specialty_quickrevive"); using_player perk_hud_create("specialty_fastreload"); using_player perk_hud_create("specialty_rof"); using_player.health = 300; } if(gumball == "plain_sight") { zombies = getaiarray("axis"); zombies flagEnemyUnattackable(); } if(gumball == "anywhere_but_here") { doggie = getent("start_zone_spawners_dog", "targetname"); using_player setOrigin(doggie.origin); //using_player setElectrified(true); } } wait_for_timeout(packa_timer) { wait( level.packapunch_timeout ); self notify( "pap_timeout" ); //packa_timer stoploopsound(.05); //packa_timer playsound( "packa_deny" ); } gumball_hud_create(gumball) { if ( !IsDefined( self.gumball_hud ) ) { self.gumball_hud = ; } /# if ( GetDVarInt( "zombie_cheat" ) >= 5 ) { if ( IsDefined( self.gumball_hud[gumball] ) ) { return; } } #/ shader = ""; overlay = ""; switch(gumball) { case "pack_a_punch": shader = "specialty_gobble_gum_zombies"; break; case "insta_kill": shader = "specialty_gobble_gum_zombies"; break; case "nuke": shader = "specialty_nuke"; break; case "max_ammo": shader = "specialty_gobble_gum_zombies"; break; case "double_points": shader = "specialty_gobble_gum_zombies"; break; case "carpenter": shader = "specialty_gobble_gum_zombies"; break; case "perkacholic": shader = "specialty_gobble_gum_perkacholic"; break; case "plain_sight": shader = "specialty_gobble_gum_zombies"; break; default: shader = "specialty_gobble_gum_zombies"; break; } hud = create_simple_hud( self ); hud.foreground = true; hud.sort = 1; hud.hidewheninmenu = false; hud.alignX = "right"; hud.alignY = "bottom"; hud.horzAlign = "right"; hud.vertAlign = "bottom"; hud.x = self.gumball_hud.size - 35; hud.y = hud.y - 100; hud.alpha = 1; hud SetShader( shader, 48, 48 ); self.gumball_hud2 = hud; } perk_hud_create( perk ) { if ( !IsDefined( self.perk_hud ) ) { self.perk_hud = ; } /# if ( GetDVarInt( "zombie_cheat" ) >= 5 ) { if ( IsDefined( self.perk_hud ) ) { return; } } #/ shader = ""; switch( perk ) { case "specialty_armorvest": shader = "specialty_juggernaut_zombies"; break; case "specialty_quickrevive": shader = "specialty_quickrevive_zombies"; break; case "specialty_fastreload": shader = "specialty_fastreload_zombies"; break; case "specialty_rof": shader = "specialty_doubletap_zombies"; break; default: shader = ""; break; } hud = create_simple_hud( self ); hud.foreground = true; hud.sort = 1; hud.hidewheninmenu = false; hud.alignX = "left"; hud.alignY = "bottom"; hud.horzAlign = "left"; hud.vertAlign = "bottom"; hud.x = self.perk_hud.size * 30; hud.y = hud.y - 70; hud.alpha = 1; hud SetShader( shader, 24, 24 ); self.perk_hud = hud; } gumball_hud_destroy(gumball) { self.gumball_hud[gumball] destroy_hud(); self.gumball_hud[gumball] = undefined; } perk_hud_destroy(perk) { self.perk_hud[perk] destroy_hud(); self.perk_hud[perk] = undefined; } perk_give_bottle_begin(perk_bottle) { self DisableOffhandWeapons(); self DisableWeaponCycling(); self AllowLean( false ); self AllowAds( false ); self AllowSprint( false ); self AllowProne( false ); self AllowMelee( false ); wait( 0.05 ); if ( self GetStance() == "prone" ) { self SetStance( "crouch" ); } gun = self GetCurrentWeapon(); weapon = ""; switch( perk_bottle ) { case "specialty_armorvest": weapon = "zombie_perk_bottle_jugg"; break; case "specialty_quickrevive": weapon = "zombie_perk_bottle_revive"; break; case "specialty_fastreload": weapon = "zombie_perk_bottle_sleight"; break; case "specialty_rof": weapon = "zombie_perk_bottle_doubletap"; break; } self GiveWeapon( weapon ); self SwitchToWeapon( weapon ); return gun; } perk_give_bottle_end(gun, perk_bottle) { assert( gun != "zombie_perk_bottle_doubletap" ); assert( gun != "zombie_perk_bottle_revive" ); assert( gun != "zombie_perk_bottle_jugg" ); assert( gun != "zombie_perk_bottle_sleight" ); assert( gun != "syrette" ); self EnableOffhandWeapons(); self EnableWeaponCycling(); self AllowLean( true ); self AllowAds( true ); self AllowSprint( true ); self AllowProne( true ); self AllowMelee( true ); weapon = ""; switch( perk_bottle ) { case "specialty_armorvest": weapon = "zombie_perk_bottle_jugg"; break; case "specialty_quickrevive": weapon = "zombie_perk_bottle_revive"; break; case "specialty_fastreload": weapon = "zombie_perk_bottle_sleight"; break; case "specialty_rof": weapon = "zombie_perk_bottle_doubletap"; break; } // TODO: race condition? if ( self maps\_laststand::player_is_in_laststand() ) { self TakeWeapon(weapon); return; } if ( gun != "none" && gun != "mine_bouncing_betty" ) { self SwitchToWeapon( gun ); } else { // try to switch to first primary weapon primaryWeapons = self GetWeaponsListPrimaries(); if( IsDefined( primaryWeapons ) && primaryWeapons.size > 0 ) { self SwitchToWeapon( primaryWeapons[0] ); } } self GiveWeapon(gun); self SwitchToWeapon(gun); } play_no_money_perk_dialog() { index = maps\_zombiemode_weapons::get_player_index(self); player_index = "plr_" + index + "_"; if(!IsDefined (self.vox_nomoney_perk)) { num_variants = maps\_zombiemode_spawner::get_number_variants(player_index + "vox_nomoney_perk"); self.vox_nomoney_perk = ; for(i=0;i<num_variants;i++) { self.vox_nomoney_perk[self.vox_nomoney_perk.size] = "vox_nomoney_perk_" + i; } self.vox_nomoney_perk_available = self.vox_nomoney_perk; } sound_to_play = random(self.vox_nomoney_perk_available); self.vox_nomoney_perk_available = array_remove(self.vox_nomoney_perk_available,sound_to_play); if (self.vox_nomoney_perk_available.size < 1 ) { self.vox_nomoney_perk_available = self.vox_nomoney_perk; } self maps\_zombiemode_spawner::do_player_playdialog(player_index, sound_to_play, 0.25); }
Radiant 一 trigger_use KVP
targetname=gobble_gum_trigger
I don't have a model that you need to set up yourself