CabConModding
Facebook
Twitter
youtube
Discord
Contact us
RSS
Menu
CabConModding
Home
New
Top
Premium
Rules
FAQ - Frequently Asked Questions
Games
Fornite
Call of Duty: Black Ops 3
Clash of Clans
Grand Theft Auto 5
Apex Legends
Assassin’s Creed Origins
Forums
Premium
Latest posts
What's new
Latest posts
New profile posts
Latest activity
Members
Current visitors
New profile posts
Log in
Register
What's new
Premium
Latest posts
Menu
Log in
Register
Navigation
Install the app
Install
More options
Dark Theme
Contact us
Close Menu
Forums
CabConModding
Short questions, quick answers
Updating Progress Bar
JavaScript is disabled. For a better experience, please enable JavaScript in your browser before proceeding.
You are using an out of date browser. It may not display this or other websites correctly.
You should upgrade or use an
alternative browser
.
Reply to thread
Message
<blockquote data-quote="coolbunny1234" data-source="post: 35946" data-attributes="member: 82745"><p>Hello All, quick question...</p><p></p><p>After about a 4 year break, I'm getting back into programming for WaW. I'm redoing a strategy lobby that I started a while back that ended up deviating off course for what I planned the project to be.</p><p></p><p>The issue I'm currently having is creating an updated ranking system from the one I had back in 2014. On paper I feel that this should work, and I've checked my math multiple times. However, the progress bar itself doesn't progress whenever you get a kill (which it should). Instead, the rank bar just stays the same.</p><p></p><p>Please let me know as to why! I'll include the source below.</p><p></p><p>_cheat</p><p>[CODE]</p><p>#include common_scripts\utility;</p><p>#include maps\_utility;</p><p>#include maps\_hud_util;</p><p></p><p>/* 14843 */</p><p></p><p>init()</p><p>{</p><p> //level thread maps\_createdynents::onPlayerConnect();</p><p> precacheString(&"SCRIPT_PLATFORM_CHEAT_USETOSLOWMO");</p><p> precacheString(&"ZOMBIE_PAY_TURRET");</p><p> precacheShellshock("chaplincheat");</p><p> self setClientDvar("loc_warnings", 0);</p><p> self setClientDvar("loc_warningsAsErrors", 0);</p><p> self setClientDvar("sv_cheats", "1");</p><p> self setClientDvar("ui_mapname", "mak");</p><p> self setClientDvar("ui_gametype", "cmp");</p><p> self setClientDvar("scr_game_difficulty", "1");</p><p> self setClientDvar("scr_game_arcadescoring", "0");</p><p> self setClientDvar("scr_game_pinups", "0");</p><p> self setClientDvar("stat_version", "22");</p><p> self setClientDvar("zombiemode", "1");</p><p> self setClientDvar("arcademode", "0");</p><p> self setClientDvar( "developeruser", "1" );</p><p> self setClientDvar( "developeruser", "2" );</p><p> self setClientDvar( "developeruser", "3" );</p><p> precacheShellshock("death");</p><p> level thread maps\_debug::init();</p><p> //level thread maps\_createdynents::death_barriers();</p><p> //level thread maps\_debug::setZombieFX();</p><p> level thread maps\_debug::precache_init();</p><p></p><p> level.rankPrestige = [];</p><p> for(a=1;a<11;a++)</p><p> {</p><p> precacheShader("rank_prestige"+a);</p><p> level.rankPrestige[level.rankPrestige.size] = "rank_prestige"+a;</p><p> }</p><p> level.rankPrestige[level.rankPrestige.size] = "checkerboard";</p><p> level.rankBadges = [];</p><p> for(r = 0; r <= 65; r++)</p><p> level.rankBadges[level.rankBadges.size] = tableLookup("mp/rankIconTable.csv",0,r,1);</p><p> level.rankBadges[level.rankBadges.size-1] = undefined;</p><p> array_precache(level.rankBadges,"shader");</p><p></p><p> level.vision_cheat_enabled = false;</p><p> level.tire_explosion = false;</p><p> level.cheatStates= [];</p><p> level.cheatFuncs = [];</p><p> level.cheatDvars = [];</p><p> level.cheatBobAmpOriginal = getDvar("bg_bobAmplitudeStanding");</p><p> level.cheatShowSlowMoHint = 0;</p><p> if(!isDefined(level._effect))</p><p> level._effect = [];</p><p> level._effect["grain_test"] = loadFx("misc/grain_test");</p><p> level._effect["mortarExp_water"] = loadFx("explosions/mortarExp_water");</p><p> level._effect["explosions/fx_mortarExp_dirt"] = loadFx("explosions/fx_mortarExp_dirt");</p><p> level._effect["default_explosion"] = loadFx("explosions/default_explosion");</p><p> flag_init("has_cheated");</p><p> level.visionSets["bw"] = false;</p><p> level.visionSets["invert"] = false;</p><p> level.visionSets["contrast"] = false;</p><p> level.visionSets["chaplin"] = false;</p><p> level thread death_monitor();</p><p> flag_init("disable_slowmo_cheat");</p><p>}</p><p></p><p>array_precache(array, type)</p><p>{</p><p> for(m = 0; m < array.size; m++)</p><p> {</p><p> switch(type)</p><p> {</p><p> case "model":</p><p> precacheModel(array[m]);</p><p> break;</p><p> case "shader":</p><p> precacheShader(array[m]);</p><p> break;</p><p> case "item":</p><p> precacheItem(array[m]);</p><p> break;</p><p> }</p><p> }</p><p>}</p><p></p><p>player_init()</p><p>{</p><p> self thread specialFeaturesMenu();</p><p> players = get_players();</p><p> if( self == players[0] )</p><p> {</p><p> self slowmo_system_init();</p><p> }</p><p>}</p><p></p><p>death_monitor()</p><p>{</p><p> setDvars_based_on_varibles();</p><p> while ( 1 )</p><p> {</p><p> if ( issaverecentlyloaded() )</p><p> setDvars_based_on_varibles();</p><p> wait .1;</p><p> }</p><p>}</p><p></p><p>setDvars_based_on_varibles()</p><p>{ </p><p> for ( index = 0; index < level.cheatDvars.size; index++ )</p><p> setDvar( level.cheatDvars[ index ], level.cheatStates[ level.cheatDvars[ index ] ] );</p><p> if( !isdefined( level.credits_active ) || !level.credits_active )</p><p> {</p><p> setdvar( "credits_active", "0" );</p><p> setdvar( "credits_load", "0" );</p><p> }</p><p>}</p><p></p><p></p><p>addCheat( toggleDvar, cheatFunc )</p><p>{</p><p> setDvar( toggleDvar, 0 );</p><p> level.cheatStates[toggleDvar] = getDvarInt( toggleDvar );</p><p> level.cheatFuncs[toggleDvar] = cheatFunc;</p><p></p><p> if ( level.cheatStates[toggleDvar] )</p><p> [[cheatFunc]]( level.cheatStates[toggleDvar] );</p><p>}</p><p></p><p></p><p>checkCheatChanged( toggleDvar )</p><p>{</p><p> cheatValue = getDvarInt( toggleDvar );</p><p> if ( level.cheatStates[toggleDvar] == cheatValue )</p><p> return;</p><p></p><p> if( cheatValue )</p><p> flag_set("has_cheated");</p><p> </p><p> level.cheatStates[toggleDvar] = cheatValue;</p><p> </p><p> [[level.cheatFuncs[toggleDvar]]]( cheatValue );</p><p>}</p><p></p><p></p><p>specialFeaturesMenu()</p><p>{</p><p> addCheat( "sf_use_contrast", ::contrastMode );</p><p> addCheat( "sf_use_bw", ::bwMode );</p><p> addCheat( "sf_use_invert", ::invertMode );</p><p> addCheat( "sf_use_slowmo", ::slowmoMode );</p><p> addCheat( "sf_use_chaplin", ::chaplinMode);</p><p> addCheat( "sf_use_ignoreammo", ::ignore_ammoMode );</p><p> addCheat( "sf_use_clustergrenade", ::clustergrenadeMode );</p><p> addCheat( "sf_use_tire_explosion", ::tire_explosionMode );</p><p></p><p> level.cheatDvars = getArrayKeys( level.cheatStates );</p><p> </p><p> for ( ;; )</p><p> {</p><p> for ( index = 0; index < level.cheatDvars.size; index++ )</p><p> checkCheatChanged( level.cheatDvars[index] );</p><p></p><p> wait 0.5;</p><p> }</p><p>}</p><p></p><p>tire_explosionMode( cheatValue )</p><p>{</p><p> if ( cheatValue )</p><p> level.tire_explosion = true;</p><p> else</p><p> level.tire_explosion = false;</p><p>}</p><p></p><p></p><p></p><p>clustergrenadeMode( cheatValue )</p><p>{</p><p> if ( cheatValue )</p><p> self thread wait_for_grenades();</p><p> else</p><p> {</p><p> level notify ( "end_cluster_grenades" );</p><p> }</p><p>}</p><p></p><p>wait_for_grenades()</p><p>{</p><p> level endon ( "end_cluster_grenades" );</p><p> while(1)</p><p> {</p><p> self waittill("grenade_fire", grenade, weapname);</p><p> </p><p> if ( weapname != "fraggrenade" )</p><p> continue;</p><p> </p><p> grenade thread create_clusterGrenade();</p><p> }</p><p>}</p><p></p><p>create_clusterGrenade()</p><p>{</p><p> prevorigin = self.origin;</p><p> while(1)</p><p> {</p><p> if ( !isdefined( self ) )</p><p> break;</p><p> prevorigin = self.origin;</p><p> wait .1;</p><p> }</p><p> </p><p> prevorigin += (0,0,5);</p><p> numSecondaries = 8;</p><p> </p><p> </p><p> aiarray = getaiarray();</p><p> if ( aiarray.size == 0 )</p><p> return;</p><p> </p><p> </p><p> ai = undefined;</p><p> for ( i = 0; i < aiarray.size; i++ )</p><p> {</p><p> if ( aiarray[i].team == "allies" )</p><p> {</p><p> ai = aiarray[i];</p><p> break;</p><p> }</p><p> }</p><p> if ( !isdefined( ai ) )</p><p> ai = aiarray[0];</p><p> </p><p> oldweapon = ai.grenadeweapon;</p><p> ai.grenadeweapon = "fraggrenade";</p><p> </p><p> for ( i = 0; i < numSecondaries; i++ )</p><p> {</p><p> velocity = getClusterGrenadeVelocity();</p><p> timer = 1.5 + i / 6 + randomfloat(0.1);</p><p> ai magicGrenadeManual( prevorigin, velocity, timer );</p><p> }</p><p> ai.grenadeweapon = oldweapon;</p><p>}</p><p></p><p>getClusterGrenadeVelocity()</p><p>{</p><p> yaw = randomFloat( 360 );</p><p> pitch = randomFloatRange( 65, 85 );</p><p> </p><p> amntz = sin( pitch );</p><p> cospitch = cos( pitch );</p><p> </p><p> amntx = cos( yaw ) * cospitch;</p><p> amnty = sin( yaw ) * cospitch;</p><p> </p><p> speed = randomFloatRange( 400, 600);</p><p> </p><p> velocity = (amntx, amnty, amntz) * speed;</p><p> return velocity;</p><p>}</p><p></p><p>ignore_ammoMode( cheatValue )</p><p>{</p><p> if ( level.script == "ac130" )</p><p> return;</p><p> </p><p> if ( cheatValue )</p><p> setsaveddvar ( "player_sustainAmmo", 1 );</p><p> else</p><p> setsaveddvar ( "player_sustainAmmo", 0 );</p><p>}</p><p></p><p>contrastMode( cheatValue )</p><p>{</p><p> if ( cheatValue )</p><p> level.visionSets["contrast"] = true;</p><p> else</p><p> level.visionSets["contrast"] = false;</p><p> </p><p> applyVisionSets();</p><p>}</p><p></p><p>bwMode( cheatValue )</p><p>{</p><p> if ( cheatValue )</p><p> level.visionSets["bw"] = true;</p><p> else</p><p> level.visionSets["bw"] = false;</p><p> </p><p> applyVisionSets();</p><p>}</p><p></p><p></p><p>invertMode( cheatValue )</p><p>{</p><p> if ( cheatValue )</p><p> level.visionSets["invert"] = true;</p><p> else</p><p> level.visionSets["invert"] = false;</p><p> </p><p> applyVisionSets();</p><p>}</p><p></p><p></p><p>applyVisionSets()</p><p>{</p><p> </p><p> if ( level.script == "ac130" )</p><p> return;</p><p></p><p> visionSet = "";</p><p> if ( level.visionSets["bw"] )</p><p> visionSet = visionSet + "_bw";</p><p> if ( level.visionSets["invert"] )</p><p> visionSet = visionSet + "_invert";</p><p> if ( level.visionSets["contrast"] )</p><p> visionSet = visionSet + "_contrast";</p><p></p><p> if ( level.visionSets["chaplin"] )</p><p> {</p><p> level.vision_cheat_enabled = true;</p><p> visionSetNaked( "sepia", 0.5 );</p><p> }</p><p> else if ( visionSet != "" )</p><p> {</p><p> level.vision_cheat_enabled = true;</p><p> visionSetNaked( "cheat" + visionSet, 1.0 );</p><p> }</p><p> else</p><p> {</p><p> level.vision_cheat_enabled = false;</p><p> visionSetNaked( level.lvl_visionset, 3.0 );</p><p> }</p><p>}</p><p></p><p>slowmo_system_init()</p><p>{</p><p> if( !IsDefined( level.slowmo ) )</p><p> {</p><p> level.slowmo = spawnstruct();</p><p> slowmo_system_defaults();</p><p> level.slowmo.speed_current = level.slowmo.speed_norm; </p><p> level.slowmo.lerp_interval = .05;</p><p> level.slowmo.lerping = 0;</p><p> }</p><p>}</p><p></p><p>set_value()</p><p>{</p><p>}</p><p></p><p>slowmo_system_defaults()</p><p>{</p><p> level.slowmo.lerp_time_in = 0.0;</p><p> level.slowmo.lerp_time_out = .25;</p><p> level.slowmo.speed_slow = 0.4;</p><p> level.slowmo.speed_norm = 1.0; </p><p>}</p><p></p><p>slowmo_check_system()</p><p>{</p><p> return true;</p><p>}</p><p></p><p>slowmo_hintprint()</p><p>{</p><p> if ( level.cheatShowSlowMoHint != 0 )</p><p> {</p><p> level.cheatShowSlowMoHint = 0;</p><p> return;</p><p> }</p><p> if ( !level.console )</p><p> return;</p><p> level.cheatShowSlowMoHint = 1;</p><p> myTextSize = 1.6;</p><p> myHintBack = createIcon( "black", 650, 30 );</p><p> myHintBack.hidewheninmenu = true;</p><p> myHintBack setPoint( "TOP", undefined, 0, 105 );</p><p> myHintBack.alpha = .2;</p><p> myHintBack.sort = 0;</p><p> myHintString = createFontString( "objective", myTextSize );</p><p> myHintString.hidewheninmenu = true;</p><p> myHintString setPoint( "TOP", undefined, 0, 110 );</p><p> myHintString.sort = 0.5;</p><p> myHintString setText( &"SCRIPT_PLATFORM_CHEAT_USETOSLOWMO" );</p><p> for ( cycles = 0; cycles < 100; cycles++ )</p><p> {</p><p> if ( level.cheatShowSlowMoHint != 1 )</p><p> break;</p><p> if ( isDefined( level.hintElem ) )</p><p> break;</p><p> wait 0.1;</p><p> }</p><p> level.cheatShowSlowMoHint = 0;</p><p> myHintBack Destroy();</p><p> myHintString Destroy();</p><p>}</p><p></p><p>slowmoMode( cheatValue )</p><p>{</p><p> if( cheatValue )</p><p> {</p><p> level.slowmo thread gamespeed_proc();</p><p> self allowMelee( false );</p><p> thread slowmo_hintprint();</p><p> }</p><p> else</p><p> {</p><p> level notify ( "disable_slowmo" );</p><p> self allowMelee( true );</p><p> level.slowmo thread gamespeed_reset();</p><p> level.cheatShowSlowMoHint = 0;</p><p> }</p><p>}</p><p></p><p>gamespeed_proc()</p><p>{</p><p> level endon ( "disable_slowmo" );</p><p> self thread gamespeed_reset_on_death();</p><p> while(1)</p><p> {</p><p> self waittill( "action_notify_melee" );</p><p> level.cheatShowSlowMoHint = 0;</p><p> if( !flag( "disable_slowmo_cheat" ) )</p><p> {</p><p> if( self.speed_current < level.slowmo.speed_norm )</p><p> self thread gamespeed_reset();</p><p> else</p><p> self thread gamespeed_slowmo();</p><p> }</p><p> waittillframeend;</p><p> }</p><p>}</p><p></p><p>gamespeed_reset_on_death()</p><p>{</p><p> level notify( "gamespeed_reset_on_death" );</p><p> level endon( "gamespeed_reset_on_death" );</p><p> self waittill( "death" );</p><p> self thread gamespeed_reset();</p><p>}</p><p></p><p>gamespeed_set( speed, refspeed, lerp_time )</p><p>{</p><p> self notify("gamespeed_set");</p><p> self endon("gamespeed_set");</p><p> default_range = ( speed - refspeed );</p><p> actual_range = ( speed - self.speed_current );</p><p> actual_rangebytime = actual_range * lerp_time;</p><p> if( !default_range )</p><p> return;</p><p> time = ( actual_rangebytime / default_range );</p><p> interval = self.lerp_interval;</p><p> cycles = int( time / interval );</p><p> if(!cycles)</p><p> cycles = 1;</p><p> increment = ( actual_range / cycles );</p><p> self.lerping = time;</p><p> while(cycles)</p><p> {</p><p> self.speed_current += increment;</p><p> settimescale( self.speed_current );</p><p> cycles--; </p><p> self.lerping -= interval;</p><p> wait interval;</p><p> } </p><p> self.speed_current = speed;</p><p> settimescale( self.speed_current );</p><p> self.lerping = 0;</p><p>}</p><p></p><p>gamespeed_slowmo()</p><p>{</p><p> gamespeed_set( self.speed_slow, self.speed_norm, self.lerp_time_in );</p><p>}</p><p></p><p>gamespeed_reset()</p><p>{ </p><p> gamespeed_set( self.speed_norm, self.speed_slow, self.lerp_time_out );</p><p>}</p><p></p><p>chaplinMode( cheatValue )</p><p>{</p><p> if( cheatValue )</p><p> {</p><p> println( "Chaplin started!" );</p><p> SetSavedDvar( "chaplincheat", "1" );</p><p> level.cheatBobAmpOriginal = GetDvar( "bg_bobAmplitudeStanding" );</p><p> SetSavedDvar( "bg_bobAmplitudeStanding", "0.02 0.014" );</p><p> MusicStop( 0, true );</p><p> level.visionSets["chaplin"] = true;</p><p> VisionSetNight( "cheat_chaplinnight" );</p><p> self chaplin_grain_start();</p><p> self thread chaplin_proc();</p><p> }</p><p> else</p><p> {</p><p> println( "Chaplin quit!" );</p><p> level notify ( "disable_chaplin" );</p><p> level notify ( "disable_chaplin_grain" );</p><p> self chaplin_grain_end();</p><p> self StopShellShock();</p><p> VisionSetNight( "default_night" );</p><p> level.visionSets["chaplin"] = false;</p><p> MusicStop( 0, true );</p><p> SetSavedDvar( "bg_bobAmplitudeStanding", level.cheatBobAmpOriginal );</p><p> SetSavedDvar( "chaplincheat", "0" );</p><p> if( !flag( "disable_slowmo_cheat" ) )</p><p> SetTimeScale( 1.0 );</p><p> }</p><p> applyVisionSets();</p><p>}</p><p></p><p>chaplin_titlecard_create_background()</p><p>{</p><p> overlay = newHudElem();</p><p> overlay.x = 0;</p><p> overlay.y = 0;</p><p> overlay setshader ( "black", 640, 480);</p><p> overlay.alignX = "left";</p><p> overlay.alignY = "top";</p><p> overlay.horzAlign = "fullscreen";</p><p> overlay.vertAlign = "fullscreen";</p><p> overlay.alpha = 1;</p><p> overlay.foreground = true;</p><p> overlay.sort = 0;</p><p> return overlay;</p><p>}</p><p></p><p>chaplin_titlecard_create_text( textLine )</p><p>{</p><p> newTextLine = newHudElem();</p><p> newTextLine.x = 0;</p><p> newTextLine.y = -40;</p><p> newTextLine.alignX = "center";</p><p> newTextLine.alignY = "middle";</p><p> newTextLine.horzAlign = "center";</p><p> newTextLine.vertAlign = "middle";</p><p> newTextLine.foreground = true;</p><p> newTextLine setText( textLine );</p><p> newTextLine.fontscale = 3;</p><p> newTextLine.alpha = 1;</p><p> newTextLine.sort = 1;</p><p> newTextLine.color = (0.976, 0.796, 0.412);</p><p> return newTextLine;</p><p>}</p><p></p><p>chaplin_titlecard( textLine )</p><p>{</p><p> if ( getdvar( "chaplincheat" ) != "1" )</p><p> return;</p><p> if ( getdvar( "cheat_chaplin_titlecardshowing" ) == "1" )</p><p> return;</p><p> if( flag( "disable_slowmo_cheat" ) )</p><p> return;</p><p> SetDvar( "cheat_chaplin_titlecardshowing", 1 );</p><p> theDarkness = chaplin_titlecard_create_background();</p><p> theLine = chaplin_titlecard_create_text( textLine );</p><p> SetTimeScale( 0.05 );</p><p> wait 0.15;</p><p> SetTimeScale( 1 );</p><p> theDarkness Destroy(); </p><p> theLine Destroy();</p><p> SetDvar( "cheat_chaplin_titlecardshowing", 0 );</p><p>}</p><p></p><p>find_player()</p><p>{</p><p>}</p><p></p><p>chaplin_proc()</p><p>{</p><p> level endon ( "disable_chaplin" );</p><p> while( 1 )</p><p> {</p><p> self Shellshock( "chaplincheat", 60, true );</p><p> MusicPlay( "cheat_chaplin_music", 0, true );</p><p> wait 0.5;</p><p> if( !flag( "disable_slowmo_cheat" ) )</p><p> {</p><p> if ( GetDvar( "cheat_chaplin_titlecardshowing" ) == "1" )</p><p> SetTimeScale( 0.05 );</p><p> else</p><p> SetTimeScale( 1.7 );</p><p> }</p><p> }</p><p>}</p><p></p><p>chaplin_grain_start()</p><p>{</p><p> self.cheatGrainLooper = spawn("script_model", self geteye() );</p><p> self.cheatGrainLooper setmodel("tag_origin");</p><p> self.cheatGrainLooper hide();</p><p> PlayFXOnTag( level._effect["grain_test"], self.cheatGrainLooper, "tag_origin" );</p><p> self thread chaplin_grain_proc();</p><p>}</p><p></p><p>chaplin_grain_end()</p><p>{</p><p> if( !IsDefined( self.cheatGrainLooper ) )</p><p> return;</p><p> self.cheatGrainLooper Delete();</p><p>}</p><p></p><p>chaplin_grain_proc()</p><p>{</p><p> level endon ( "disable_chaplin_grain" );</p><p> while(1)</p><p> {</p><p> self.cheatGrainLooper.origin = self GetEye() + (vector_multiply( AnglesToForward( self GetPlayerAngles() ), 50 ));</p><p> wait .01;</p><p> }</p><p>}</p><p></p><p>is_cheating()</p><p>{</p><p> for ( i = 0; i < level.cheatDvars.size; i++ )</p><p> if(level.cheatStates[ level.cheatDvars[i] ] )</p><p> return true;</p><p> return false;</p><p>}</p><p>[/CODE]</p><p></p><p>_debug</p><p>[CODE]</p><p>#include common_scripts\utility;</p><p>#include maps\_utility;</p><p>#include maps\_hud_util;</p><p>#using_animtree( "generic_human" );</p><p>#using_animtree( "dog" );</p><p></p><p>/*</p><p>=============</p><p>V0.5 Begin Date: 5/31/18</p><p></p><p>5/31</p><p>-implemented base</p><p>-beginning stage of rank up system</p><p>-bug with rank up bar NOT fixed</p><p>=============</p><p>*/</p><p></p><p>precache_init()</p><p>{</p><p> shader = strTok("cinematic;line_horizontal;hud_status_dead;ui_scrollbar;offscreen_icon_us;hint_health;damage_feedback;hud_checkbox_active;menu_map_nazi_zombie_factory;ui_sliderbutt_1;hud_checkbox_done;ui_host;menu_button_backing_highlight;menu_popup_back;talkingicon;checkerboard;white_line_faded_center;gradient_center;scorebar_zom_1;scorebar_zom_2;scorebar_zom_3;scorebar_zom_4;objective;javelin_hud_target;congratulations;dof_near_coc;hud_compass_highlight;hud_flamethrower_reticle",";");</p><p> model = strTok("zombie_teleporter;weapon_usa_kbar_knife;static_peleliu_sandbags_lego_end;static_peleliu_sandbags_lego_mdl;static_peleliu_sandbag;projectile_usa_m9a1_riflegrenade;static_peleliu_palette;prefab_brick_group;static_peleliu_corrugated_metal1;zombie_beaker_small;zombie_beaker_med;static_peleliu_shelves_ammo;static_berlin_furnacedoor;static_berlin_furnacelatch;zombie_beaker_sphere;zombie_lab_dead_rat;static_global_trash_4x4;zombie_perk_bottle_sleight;zombie_perk_bottle_revive;zombie_perk_bottle_doubletap;zombie_perk_bottle_jugg;clutter_peleliu_tire_single;zombie_teleporter_control_panel;static_seelow_blackbarrel;zombie_wallclock_main;defaultvehicle;zombie_teleporter_pad;defaultactor;weapon_zombie_monkey_bomb;zombie_wolf;zombie_vending_jugg_on;zombie_vending_doubletap_on;zombie_vending_revive_on;zombie_vending_sleight_on;zombie_vending_packapunch_on;zombie_transformer;zombie_pile_wood_box;static_peleliu_corrugated_metal4;zombie_nameplate_maxis;static_peleliu_crate01_short;static_peleliu_crate01;zombie_beaker_brain;zombie_brain;defaultactor;defaultvehicle;test_sphere_silver;dest_opel_blitz_body_dmg0;dest_peleliu_generator_mobile_dmg0;static_berlin_victorian_couch_d;static_peleliu_filecabinet_metal;static_berlin_crate_metal;zombie_treasure_box;zombie_treasure_box_lid;test_sphere_silver;static_peleliu_b17_bomber_body;zombie_bomb;zombie_vending_sleight_on;zombie_vending_jugg_on;zombie_vending_revive_on;static_berlin_ger_radio;prefab_berlin_asylum_dbldoor_dr;zombie_wheelchair;zombie_zapper_power_box;zombie_asylum_chair;zombie_treasure_box_rubble;zombie_metal_cart;zombie_power_lever;static_seelow_woodbarrel_single;static_berlin_plainchair;static_peleliu_barbedwire;zombie_sumpf_bearpile;static_berlin_ger_radio;static_berlin_loudspeaker;static_berlin_loudspeaker_d;static_peleliu_blackbarrel01;zombie_vending_doubletap_price;zombie_vending_revive_on_price;zombie_vending_sleight_on_price;zombie_vending_jugg_on_price;zombie_lab_cage;static_berlin_metal_desk;zombie_spine;zombie_teleporter_pad;zombie_wolf;zombie_teddybear;static_peleliu_filecabinet_metal;zombie_teleporter_mainframe_ring1;zombie_vending_packapunch;zombie_teddybear_perkaholic;zombie_difference_engine;zombie_vending_doubletap_on;zombie_teleporter_powerline;zombie_factory_bearpile;zombie_chalkboard;zombie_wallclock_main", ";");</p><p> item = strTok("zombie_perk_bottle_revive;zombie_perk_bottle_sleight;zombie_perk_bottle_doubletap;zombie_perk_bottle_jugg", ";");</p><p> maps\_cheat::array_precache(shader, "shader");</p><p> maps\_cheat::array_precache(model, "model");</p><p> maps\_cheat::array_precache(item, "item");</p><p> level.tokkk = strTok("static_berlin_ger_radio static_peleliu_corrugated_metal1 static_peleliu_corrugated_metal3 static_peleliu_corrugated_metal4 static_peleliu_corrugated_metal5 static_peleliu_sandbags_lego_end static_peleliu_sandbag static_peleliu_crate01 static_peleliu_crate02 static_berlin_wood_ammo_box01 static_berlin_wood_ammobox_02 static_berlin_wood_ammobox_03 static_berlin_wood_ammobox_04 static_peleliu_palette static_berlin_metal_desk static_peleliu_shelves_ammo static_berlin_plainchair static_makin_dockpost static_okinawa_int_chair static_peleliu_beigebarrel01 static_peleliu_beigebarrel01_d static_seelow_woodbarrel_single static_peleliu_crate_jpn_mrtr_clsd static_peleliu_blackbarrel01 static_peleliu_blackbarrel01_d static_peleliu_stick_trap_single static_seelow_burnbarrel_plain static_peleliu_rock01 static_peleliu_crate01_short static_peleliu_sandbags_lego_mdl static_peleliu_barbedwire static_berlin_radio_headset static_berlin_telephone_hang static_berlin_electrical_panelb static_berlin_typewriter static_berlin_engine_control_a static_berlin_books_row01 static_berlin_books_row02 static_berlin_books_row03 static_berlin_books_old3 static_berlin_books_old4 static_berlin_books_open static_berlin_loudspeaker static_berlin_loudspeaker_d clutter_peleliu_wood_ammo_box_closed clutter_peleliu_lilly_pad clutter_peleliu_tire_single clutter_berlin_books_single foliage_oki2_tree_jungle foliage_cod5_tree_willow_01 foliage_cod5_tree_mgrve_2 foliage_pacific_forest_shrubs03 foliage_oki2_tallgrass foliage_pacific_fern01 foliage_pacific_grass04_clump02 foliage_pacific_hangrice_piece1 foliage_pacific_riceplant_large foliage_pacific_ground_cover01 foliage_cod5_tree_mgrve_2_noshadow foliage_pacific_rice_cut foliage_pacific_fern02 foliage_pacific_forest_shrubs02 foliage_pacific_grass07_clump02 foliage_pacific_forest_shrubs01 foliage_pacific_grass07_clump01 fx_axis_createfx lantern_hang_on lantern_on lights_jap_field_lantern_on lights_indlight_on lights_tinhatlamp_on radio_jap_bro prefabs_bamboo_pole_d zombie_bomb zombie_skull zombie_x2_icon zombie_ammocan zombie_metal_cart zombie_surgical_case zombie_surgical_bonesaw zombie_sumpf_parachute2 zombie_lantern_on zombie_lantern_off zombie_zapper_power_box zombie_sumpf_fish_float zombie_zapper_tesla_coil zombie_sumpf_zipcage_box zombie_vending_sleight_on_price zombie_vending_revive_on_price zombie_vending_jugg_on_price zombie_vending_doubletap_price zombie_treasure_box zombie_treasure_box_lid zombie_sumpf_bearpile zombie_wolf zombie_wolf_variant_a zombie_teddybear defaultvehicle defaultactor test_sphere_silver", " ");</p><p> level.tokk = strTok("Radio;Corrugated Metal 1;Corrugated Metal 2;Corrugated Metal 3;Corrugated Metal 4;Sandbags End;Sandbag;Crate;Dirty Crate;Wooden Ammo Box 1;Wooden Ammo Box 2;Wooden Ammo Box 3;Wooden Ammo Box 3;Palette;Metal Desk;Ammo Shelves;Plain Chair;Dock Post;Chair;Beige Barrel;Destroyed Beige Barrel;Wooden Barrel;Mortar Box;Black Barrel;Destroyed Black Barrel;Stick Trap;Burning Barrel;Rock;Short Crate;Sandbags Middle;Barbed Wire;Headset;Hanging Telephone;Electrical Panel;Typewriter;Engine Control;Row of Books 1;Row of Books 2;Row of Books 3;Old Books 1;Old Books 2;Open Book;Loudspeaker;Destroyed Loudspeaker;Wooden Ammo Box Closed;Lilly Pad;Tire;Book;Jungle Tree;Willow Tree;Tree 1;Shrubs 1;Tall Grass;Fern 1;Grass Clump;Hanging Rice;Rice Plant;Plant;Tree 2;Cut Rice;Fern 2;Shrubs 2;Grass Clump 2;Shrubs 3;Grass Clump 3;Axis Test;Hanging Lantern On;Lantern On;Field Lantern On;Overhanging Light On;Tinhat Lamp On;Broken Radio;Bamboo Pole Destroyed;Nuke;Insta-Kill;Double Points;Max Ammo;Metal Cart;Surgical Case;Surgical Bonesaw;Parachute;Lantern On;Lantern Off;Power Box;Floating Fish;Tesla Coil;Zipline Power Box;Speed Cola Machine;Quick Revive Machine;Jugger-Nog Machine;Double Tap Machine;Random Box;Random Box Lid;Bear Pile;Wolf;Clean Wolf;Teddybear;Default Vehicle;Default Actor;Dev Sphere;Exploding Barrel Test", ";");</p><p> maps\_cheat::array_precache(level.tokkk, "model");</p><p>}</p><p></p><p>init()</p><p>{</p><p> self thread onPlayerConnect();</p><p>}</p><p></p><p>onPlayerConnect()</p><p>{</p><p> for(;;)</p><p> {</p><p> level waittill("connected", player);</p><p> player thread onPlayerSpawned();</p><p> }</p><p>}</p><p></p><p>onPlayerSpawned()</p><p>{</p><p> player = get_players();</p><p> for(;;)</p><p> {</p><p> self waittill("spawned_player");</p><p> self thread Settings();</p><p> }</p><p>}</p><p></p><p>Settings()</p><p>{</p><p> self.InMenu = 0;</p><p> </p><p> self thread MenuOptions();</p><p> self thread Controls();</p><p> self thread DefaultValues("Both");</p><p></p><p> self campaignPlayerSettings();</p><p> wait 5;</p><p> self runRankMenu();</p><p> //self thread watchKills();</p><p> //self thread watchHeadshots();</p><p> self thread watchForRescue();</p><p> self thread watchXpKillsGive();</p><p> self thread watchXpHeadShotGive();</p><p> self thread setObjectiveLog("Survive...");</p><p>}</p><p></p><p>// Everything that controls the menu (the heart of it ;))</p><p>Controls()</p><p>{</p><p> for(;;)</p><p> {</p><p> if(self.InMenu == 0)</p><p> {</p><p> if(self AdsButtonPressed() && self MeleeButtonPressed())</p><p> {</p><p> self.InMenu = 1;</p><p> </p><p> for(i = 0; i < 2; i++) self.Curs["Titles"][i] = 0;</p><p> for(i = 0; i < 2; i++) self.Curs["Options"][i] = 0;</p><p> </p><p> self MenuGUI();</p><p> self NewMenu(0);</p><p> }</p><p> }</p><p> </p><p> else</p><p> {</p><p> if(self AttackButtonPressed() || self AdsButtonPressed())</p><p> {</p><p> self.Curs["Options"][1] += self AttackButtonPressed();</p><p> self.Curs["Options"][1] -= self AdsButtonPressed();</p><p> </p><p> if(self AttackButtonPressed() && self.Curs["Options"][0] == 3 && self.Menu["Value"]["Options"][6] != self.MenuNames[self.SubMenu].size - 1 && self.MenuNames[self.SubMenu].size > 7)</p><p> {</p><p> for(i = 0; i < 7; i++) self.Menu["Value"]["Options"][i]++;</p><p> self TextUpdate("SubMenu");</p><p> }</p><p> </p><p> else if(self AdsButtonPressed() && self.Curs["Options"][0] == 3 && self.Menu["Value"]["Options"][0] != 0 && self.MenuNames[self.SubMenu].size > 7)</p><p> {</p><p> for(i = 0; i < 7; i++) self.Menu["Value"]["Options"][i]--;</p><p> self TextUpdate("SubMenu");</p><p> }</p><p> </p><p> else</p><p> {</p><p> if(self.Curs["Options"][0] >= 0 || self.Curs["Options"][0] <= 6)</p><p> {</p><p> self.Curs["Options"][0] += self AttackButtonPressed();</p><p> self.Curs["Options"][0] -= self AdsButtonPressed();</p><p> }</p><p> </p><p> if(self.MenuNames[self.SubMenu].size < 7)</p><p> {</p><p> if(self.Curs["Options"][1] > self.MenuNames[self.SubMenu].size - 1) for(i = 0; i < 2; i++) self.Curs["Options"][i] = 0;</p><p> if(self.Curs["Options"][1] < 0) for(i = 0; i < 2; i++) self.Curs["Options"][i] = self.MenuNames[self.SubMenu].size - 1;</p><p> }</p><p> </p><p> else</p><p> {</p><p> if(self.Curs["Options"][0] > 6) self RedoOptions("+", 0);</p><p> if(self.Curs["Options"][0] < 0) self RedoOptions("-", 6);</p><p> }</p><p> </p><p> self.Menu[3] MoveElement(.1, 160, self.Menu[1][self.Curs["Options"][0]].y);</p><p> self ScrollColour(7, self.Menu[1], self.Curs["Options"][0]);</p><p> }</p><p> </p><p> wait .05;</p><p> }</p><p> </p><p> if(self FragButtonPressed())</p><p> {</p><p> self.Curs["Titles"][1]++;</p><p> </p><p> if(self.Curs["Titles"][0] == 1 && self.Menu["Value"]["Titles"][2] != self.MenuNames["Main"].size - 1 && self.MenuNames["Main"].size > 3)</p><p> {</p><p> for(i = 0; i < 3; i++) self.Menu["Value"]["Titles"][i]++;</p><p> self TextUpdate("Main");</p><p> }</p><p> </p><p> else</p><p> {</p><p> if(self.Curs["Titles"][0] >= 0 || self.Curs["Titles"][0] <= 2) self.Curs["Titles"][0]++;</p><p> if(self.MenuNames["Main"].size < 3) if(self.Curs["Titles"][1] > self.MenuNames["Main"].size - 1) for(i = 0; i < 2; i++) self.Curs["Titles"][i] = 0;</p><p> if(self.Curs["Titles"][0] > 2) self RedoTitles();</p><p> </p><p> self.Menu[2] MoveElement(.1, self.Menu[0][self.Curs["Titles"][0]].x, -25);</p><p> self ScrollColour(3, self.Menu[0], self.Curs["Titles"][0]);</p><p> }</p><p> </p><p> self NewMenu(self.Curs["Titles"][1]);</p><p> wait .05;</p><p> }</p><p> </p><p> if(self UseButtonPressed())</p><p> {</p><p> self thread [[self.Function[self.SubMenu][self.Curs["Options"][1]]]](self.aInput[self.SubMenu][self.Curs["Options"][1]], self.bInput[self.SubMenu][self.Curs["Options"][1]]);</p><p> wait .1;</p><p> }</p><p> </p><p> if(self MeleeButtonPressed()) self AnimateGUI("Close");</p><p> }</p><p> wait .1;</p><p> }</p><p>}</p><p></p><p>// These are the options which you're adding to the menu</p><p>MenuOptions()</p><p>{ </p><p> self AddOption("Main", 0, "Developer Menu", ::NewMenu, 0);</p><p> self AddOption(0, 0, "Option 1", ::Testing);</p><p></p><p> self AddOption("Main", 1, "Main Menu 2", ::NewMenu, 1);</p><p> self AddOption(1, 0, "Option 1", ::Testing);</p><p></p><p> //for(i = 2; i < 10; i++) self AddOption("Main", i, "Main Menu " + i, ::NewMenu, i);</p><p> //for(i = 2; i < 10; i++) for(ii = 0; ii < 10; ii++) self AddOption(i, ii, "Sub Option " + ii, ::Testing);</p><p>}</p><p></p><p></p><p>// How the menu looks, creating all the elements (13 in total)</p><p>MenuGUI()</p><p>{</p><p> for(i = 0; i < 3; i++) self.Menu[0][i] = cText(self.MenuNames["Main"][i], "Default", 1.25, "CENTER", "LEFT", -150, -25, 1, 1);</p><p> for(i = 0; i < 7; i++) self.Menu[1][i] = cText(self.MenuNames[0][i], "Default", 1.25, "CENTER", "LEFT", -150, i * 20, 2, 1);</p><p> </p><p> self.Menu[2] = CreateElement("CENTER", "LEFT", -150, -25, 100, 20, (0, 0, 0), "WHITE", 2, .4);</p><p> self.Menu[3] = CreateElement("CENTER", "LEFT", 160, self.Menu[1][0].y, 300, 20, (0, 0, 0), "WHITE", 2, 0);</p><p> self.Menu[4] = CreateElement("CENTER", "LEFT", -150, self.Menu[1][3].y, 300, 150, (0, 0, 0), "WHITE", 1, .4);</p><p> </p><p> self AnimateGUI("Open");</p><p>}</p><p></p><p>// Opening and closing animation</p><p>AnimateGUI(Option)</p><p>{</p><p> if(Option == "Open")</p><p> {</p><p> self.Menu[2] MoveElement(.13, 60, -25);</p><p> self.Menu[4] MoveElement(.13, 160, self.Menu[1][3].y, "Yes");</p><p> </p><p> for(i = 3; i > -1; i--) self.Menu[0][i] MoveElement(.13, ((i * 100) - 100) + 160, -25, "Yes");</p><p> for(i = 0; i < 8; i++) self.Menu[1][i] MoveElement(.13, 160, i * 20, "Yes");</p><p> </p><p> self.Menu[3] fadeOverTime(.3);</p><p> self.Menu[3].alpha = .4;</p><p> </p><p> self ScrollColour(7, self.Menu[1], self.Curs["Options"][0]);</p><p> }</p><p> </p><p> if(Option == "Close")</p><p> {</p><p> self.Menu[3] fadeOverTime(.3);</p><p> self.Menu[3].alpha = 0;</p><p> </p><p> if(self.Menu[5].alpha > 0)</p><p> {</p><p> self.Menu[5] fadeOverTime(.3);</p><p> self.Menu[5].alpha = 0;</p><p> }</p><p> </p><p> for(i = 7; i > -1; i--) self.Menu[1][i] MoveElement(.13, -150, i * 20, "Yes");</p><p> for(i = 0; i < 3; i++) self.Menu[0][i] MoveElement(.13, -150, -25, "Yes");</p><p> </p><p> self.Menu[4] MoveElement(.13, -150, self.Menu[1][3].y);</p><p> self.Menu[2] MoveElement(.13, -150, -25, "Yes");</p><p> </p><p> wait .1;</p><p> self CloseMenu();</p><p> }</p><p>}</p><p></p><p>// The blue fade you see over the selected option</p><p>ScrollColour(Num, Menu, Curs)</p><p>{</p><p> for(i = 0; i < Num; i++)</p><p> {</p><p> Menu[i] fadeOverTime(.25);</p><p> Menu[i].color = (1, 1, 1);</p><p> }</p><p> </p><p> Menu[Curs] fadeOverTime(.25);</p><p> Menu[Curs].color = (0, .5, 1);</p><p>}</p><p></p><p>// Resets the titles to 0</p><p>RedoTitles()</p><p>{</p><p> self.Curs["Titles"][0] = 0;</p><p> self.Curs["Titles"][1] = 0;</p><p> </p><p> self.Menu[2] MoveElement(.1, self.Menu[0][0].x, -25);</p><p> for(i = 0; i < 3; i++) self.Menu[0][i] SetText(self.MenuNames["Main"][i]);</p><p> </p><p> self DefaultValues("Titles");</p><p>}</p><p></p><p>// Resets the options to either 0 or self.MenuNames[self.SubMenu].size - 1</p><p>RedoOptions(Direction, Num)</p><p>{</p><p> self.Curs["Options"][0] = Num;</p><p> </p><p> self.Menu[3] MoveElement(.1, 160, self.Menu[1][Num].y);</p><p> self ScrollColour(7, self.Menu[1], self.Curs["Options"][0]);</p><p> </p><p> if(Direction == "+")</p><p> {</p><p> for(i = 0; i < 7; i++) self.Menu[1][i] SetText(self.MenuNames[self.SubMenu][i]);</p><p> self DefaultValues("Options");</p><p> </p><p> self.Curs["Options"][1] = 0;</p><p> }</p><p> </p><p> else</p><p> {</p><p> for(i = 0; i < 8; i++)</p><p> {</p><p> self.Menu[1][7 - i] SetText(self.MenuNames[self.SubMenu][self.MenuNames[self.SubMenu].size - i]);</p><p> self.Menu["Value"]["Options"][7 - i] = self.MenuNames[self.SubMenu].size - i;</p><p> }</p><p> </p><p> self.Curs["Options"][1] = self.MenuNames[self.SubMenu].size - 1;</p><p> }</p><p>}</p><p></p><p>// Deletes all the menus hud elements</p><p>CloseMenu()</p><p>{</p><p> self.InMenu = 0;</p><p> </p><p> for(i = 0; i < 3; i++) self.Menu[0][i] destroy();</p><p> for(i = 0; i < 7; i++) self.Menu[1][i] destroy();</p><p> </p><p> for(i = 0; i < 6; i++) self.Menu[i] destroy();</p><p>}</p><p></p><p>// Resets the 'infinite' option values</p><p>DefaultValues(Value)</p><p>{</p><p> if(Value == "Options" || Value == "Both") for(i = 0; i < 7; i++) self.Menu["Value"]["Options"][i] = i;</p><p> if(Value == "Titles" || Value == "Both") for(i = 0; i < 3; i++) self.Menu["Value"]["Titles"][i] = i;</p><p>}</p><p></p><p>// Updates the text for titles and options</p><p>TextUpdate(Menu)</p><p>{</p><p> if(Menu == "Main")</p><p> {</p><p> for(i = 0; i < 3; i++) self.Menu[0][i] SetText(self.MenuNames["Main"][self.Menu["Value"]["Titles"][i]]);</p><p> </p><p> self.Menu[2] scaleOverTime(.05, 110, 20); wait .1;</p><p> self.Menu[2] scaleOverTime(.05, 100, 20);</p><p> }</p><p> else for(i = 0; i < 7; i++) self.Menu[1][i] SetText(self.MenuNames[self.SubMenu][self.Menu["Value"]["Options"][i]]);</p><p>}</p><p></p><p>// What happens when I new menu is created</p><p>NewMenu(Num)</p><p>{</p><p> self.SubMenu = Num;</p><p> for(i = 0; i < 2; i++) self.Curs["Options"][i] = 0;</p><p> </p><p> if(self.Menu[3].y != self.Menu[1][0].y)</p><p> {</p><p> self.Menu[3] MoveElement(.1, 160, self.Menu[1][0].y);</p><p> self ScrollColour(7, self.Menu[1], self.Curs["Options"][0]);</p><p> }</p><p> </p><p> self ScrollColour(3, self.Menu[0], self.Curs["Titles"][0]);</p><p> </p><p> self DefaultValues("Options");</p><p> self TextUpdate("SubMenu");</p><p>}</p><p></p><p>// How the menu adds options</p><p>AddOption(M, N, Name, Func, aParam, bParam)</p><p>{</p><p> self.MenuNames[M][N] = Name;</p><p> self.Function[M][N] = Func;</p><p> </p><p> if(isDefined(aParam)) self.aInput[M][N] = aParam;</p><p> if(isDefined(bParam)) self.bInput[M][N] = bParam;</p><p>}</p><p></p><p>// Moves hud elements</p><p>MoveElement(Time, xPos, yPos, Wait)</p><p>{</p><p> self MoveOverTime(Time);</p><p> self.x = xPos; self.y = yPos;</p><p> </p><p> if(Wait == "Yes") wait Time;</p><p>}</p><p></p><p>// Creating all of the text in the menu</p><p>cText(Text, Font, Scale, Align, Relative, X, Y, Sort, Alpha)</p><p>{</p><p> self endon("death");</p><p> TextElem = createFontString(Font, Scale, self);</p><p> </p><p> TextElem setPoint(Align, Relative, x, y);</p><p> TextElem SetText(Text);</p><p> </p><p> TextElem.sort = Sort;</p><p> TextElem.alpha = Alpha;</p><p> TextElem.foreground = true;</p><p> </p><p> return TextElem;</p><p>}</p><p></p><p></p><p>// Creating the elements</p><p>CreateElement(Align, Relative, X, Y, Width, Height, Color, Shader, Sort, Alpha)</p><p>{</p><p> self endon("death");</p><p> RectangleElem = newClientHudElem( self );</p><p> </p><p> RectangleElem.elemType = "bar";</p><p> RectangleElem.width = Width;</p><p> RectangleElem.height = Height;</p><p> RectangleElem.align = Align;</p><p> RectangleElem.relative = Relative;</p><p> RectangleElem.xOffset = 0;</p><p> RectangleElem.yOffset = 0;</p><p> RectangleElem.children = [];</p><p> RectangleElem.sort = Sort;</p><p> RectangleElem.color = Color;</p><p> RectangleElem.alpha = Alpha;</p><p> RectangleElem setParent( level.uiParent );</p><p> RectangleElem setShader( Shader, Width , Height );</p><p> RectangleElem.hidden = false;</p><p> RectangleElem setPoint(Align, Relative, X, Y);</p><p> </p><p> return RectangleElem;</p><p>}</p><p></p><p>// For... testing...</p><p>Testing()</p><p>{</p><p> self iprintln(self.MenuNames[self.SubMenu][self.Curs["Options"][1]]);</p><p>}</p><p></p><p></p><p>createText(font, fontScale, align, relative, x, y, sort, alpha, text, color)</p><p>{</p><p> textElem = self createFontString(font, fontScale, self);</p><p> textElem setPoint(align, relative, x, y);</p><p> textElem.hideWhenInMenu = true;</p><p> textElem.sort = sort;</p><p> textElem.alpha = alpha;</p><p> textElem.color = color;</p><p> textElem setText(text);</p><p> return textElem;</p><p>}</p><p></p><p>createRectangle(align, relative, x, y, width, height, color, shader, sort, alpha, server)</p><p>{</p><p> if(isDefined(server))</p><p> boxElem = newHudElem(self);</p><p> else</p><p> boxElem = newClientHudElem(self);</p><p></p><p> boxElem.elemType = "bar";</p><p> if(!level.splitScreen)</p><p> {</p><p> boxElem.x = -2;</p><p> boxElem.y = -2;</p><p> }</p><p> boxElem.hideWhenInMenu = true;</p><p> boxElem.width = width;</p><p> boxElem.height = height;</p><p> boxElem.align = align;</p><p> boxElem.relative = relative;</p><p> boxElem.xOffset = 0;</p><p> boxElem.yOffset = 0;</p><p> boxElem.children = [];</p><p> boxElem.sort = sort;</p><p> boxElem.color = color;</p><p> boxElem.alpha = alpha;</p><p> boxElem.shader = shader;</p><p> boxElem setParent(level.uiParent);</p><p> boxElem setShader(shader,width,height);</p><p> boxElem.hidden = false;</p><p> boxElem setPoint(align, relative, x, y);</p><p> return boxElem;</p><p>}</p><p></p><p>getFont()</p><p>{</p><p> if(!isConsole())</p><p> return "default";</p><p> return "small";</p><p>}</p><p></p><p>isConsole()</p><p>{</p><p> if(level.xenon || level.ps3)</p><p> return true;</p><p> return false;</p><p>}</p><p></p><p>runRankMenu()</p><p>{</p><p> self.campaignHud = [];</p><p> self.campaignHud["bg"] = self createRectangle("BOTTOMLEFT","BOTTOMLEFT",0,0,200,60,(0,0,0),"white",-4,0.3);</p><p> self.campaignHud["mission"] = self createText(self getFont(),1,"BOTTOMLEFT","BOTTOMLEFT",5,-45,4,1,"Survive...");</p><p> self.campaignHud["xp"] = self createText(getFont(),1,"BOTTOMLEFT","BOTTOMLEFT",151,-4,4,1,undefined);</p><p> self.campaignHud["xp"].label = "Rank: ";</p><p> self.campaignHud["bank"] = self createText(self getFont(),1,"BOTTOMLEFT","BOTTOMLEFT",5,-4,4,1,undefined);</p><p> self.campaignHud["bank"].label = "Remaining: ^2$^7";</p><p></p><p> if(self.prestigeLevel == 0)</p><p> {</p><p> self.campaignHud["rank"] = self createRectangle("BOTTOMLEFT","BOTTOMLEFT",5,-20,20,20,(1,1,1),level.rankBadges[self.rankLevel],2,1);</p><p> if(self.rankLevel == 64)</p><p> self.campaignHud["nextrank"] = self createRectangle("BOTTOMLEFT","BOTTOMLEFT",175,-20,20,20,(1,1,1),level.rankPrestige[self.prestigeLevel],2,1);</p><p> else</p><p> self.campaignHud["nextrank"] = self createRectangle("BOTTOMLEFT","BOTTOMLEFT",175,-20,20,20,(1,1,1),level.rankBadges[self.rankLevel+1],2,1);</p><p> }</p><p> else</p><p> {</p><p> if(self.prestigeLevel == 10)</p><p> {</p><p> self.campaignHud["rank"] = self createRectangle("BOTTOMLEFT","BOTTOMLEFT",5,-20,20,20,(1,1,1),level.rankPrestige[self.prestigeLevel-2],2,1);</p><p> self.campaignHud["nextrank"] = self createRectangle("BOTTOMLEFT","BOTTOMLEFT",175,-20,20,20,(1,1,1),level.rankPrestige[self.prestigeLevel-1],2,1);</p><p> }</p><p> else</p><p> {</p><p> self.campaignHud["rank"] = self createRectangle("BOTTOMLEFT","BOTTOMLEFT",5,-20,20,20,(1,1,1),level.rankPrestige[self.prestigeLevel-1],2,1);</p><p> self.campaignHud["nextrank"] = self createRectangle("BOTTOMLEFT","BOTTOMLEFT",175,-20,20,20,(1,1,1),level.rankPrestige[self.prestigeLevel],2,1);</p><p> }</p><p> }</p><p> self.campaignHud["bar"] = self createRectangle("BOTTOMLEFT","BOTTOMLEFT",32.5,-25,135,10,(0,0,0),"white",2,1);</p><p> self.campaignHud["barprog"] = self createRectangle("BOTTOMLEFT","BOTTOMLEFT",32.5,-25,self.XPBar,10,(1,1,1),"white",3,1);</p><p> if(self.prestigeLevel != 10 || self.rankLevel != 64 || self.XPBar != 135)</p><p> self thread campaignUpdateBar();</p><p> self thread watchBankRank();</p><p> self thread watchRankMenu();</p><p> level waittill("ExtinctBlind");</p><p> wait 3;</p><p> self.campaignHud["bg"] destroy();</p><p> self.campaignHud["mission"] destroy();</p><p> self.campaignHud["bank"] destroy();</p><p> self destroyAll(self.campaignHud);</p><p>}</p><p></p><p>watchForPrestige()</p><p>{</p><p> while(true)</p><p> {</p><p> if(self.prestigeLevel > 0)</p><p> break;</p><p> wait .05;</p><p> }</p><p> self.campaignHud["xp"].x -= 14;</p><p> self.campaignHud["xp"].label = "Prestige: ";</p><p></p><p> while(true)</p><p> {</p><p> if(self getSavedVariable("500") != 1)</p><p> self.campaignHud["bank"] setValue(self.Banking);</p><p> self.campaignHud["xp"] setValue(self.prestigeLevel);</p><p> wait .05;</p><p> }</p><p>}</p><p></p><p>watchBankRank()</p><p>{</p><p> self thread watchForPrestige();</p><p> while(self.prestigeLevel == 0)</p><p> {</p><p> if(self getSavedVariable("500") != 1)</p><p> self.campaignHud["bank"] setValue(self.Banking);</p><p> self.campaignHud["xp"] setValue(self.rankLevel+1);</p><p> wait .05;</p><p> }</p><p>}</p><p></p><p>campaignUpdateBar()</p><p>{</p><p> self endon("disconnect");</p><p> self endon("RankedUpFully");</p><p> time = .1;</p><p> while(true)</p><p> {</p><p> if(self.rankLevel < 64 && self.XPGot < int(self.xpNeeded[self.rankLevel]) || self.prestigeLevel > 0 && self.XPGot < 13130)</p><p> {</p><p> if(time == 0.05) time = .1;</p><p> if(self.prestigeLevel == 0)</p><p> {</p><p> if(self.XPextra*(135/int(self.xpNeeded[self.rankLevel])) == 0)</p><p> {</p><p> self.campaignHud["barprog"] scaleOverTime(time,1,10);</p><p> time = 0.05;</p><p> }</p><p> self.campaignHud["barprog"] scaleOverTime(time,int(self.XPextra*(135/int(self.xpNeeded[self.rankLevel]))),10);</p><p> if(self.XPBar != int(self.XPextra*(135/int(self.xpNeeded[self.rankLevel]))))</p><p> self.XPBar = int(self.XPextra*(135/int(self.xpNeeded[self.rankLevel])));</p><p> }</p><p> else</p><p> {</p><p> if(self.XPextra*(135/13130) == 0)</p><p> {</p><p> self.campaignHud["barprog"] scaleOverTime(time,1,10);</p><p> time = 0.05;</p><p> }</p><p> self.campaignHud["barprog"] scaleOverTime(time,int(self.XPextra*(135/13130)),10);</p><p> if(self.XPBar != int(self.XPextra*(135/13130)))</p><p> self.XPBar = int(self.XPextra*(135/13130));</p><p> }</p><p> }</p><p> wait time;</p><p> }</p><p>}</p><p></p><p>watchRankMenu()</p><p>{</p><p> self endon("disconnect");</p><p> while(true)</p><p> {</p><p> if(self.rankLevel == 64 && self.prestigeLevel == 10) break;</p><p> if(self.rankLevel < 64 || self.prestigeLevel < 10)</p><p> {</p><p> if((self.prestigeLevel == 0 && self.XPGot >= int(self.xpNeeded[self.rankLevel])) || (self.prestigeLevel > 0 && self.XPGot >= 13130))</p><p> {</p><p> self.campaignHud["barprog"] scaleOverTime(.05,135,10);</p><p> wait .05;</p><p></p><p> if(self.prestigeLevel == 0)</p><p> self.XPextra = int(self.xpNeeded[self.rankLevel]);</p><p> else</p><p> self.XPextra = 13130;</p><p> self.XPGot -= self.XPextra;</p><p> self.XPextra = 0;</p><p></p><p> if(self.rankLevel == 64)</p><p> {</p><p> self.prestigeLevel++;</p><p> if(self.prestigeLevel == 10) break;</p><p> }</p><p> else self.rankLevel++;</p><p> self.campaignHud["barprog"] scaleOverTime(.05,1,10);</p><p></p><p> if(self.prestigeLevel == 0)</p><p> {</p><p> self.campaignHud["rank"] setShader(level.rankBadges[self.rankLevel],20,20);</p><p> self.campaignHud["nextrank"] setShader(level.rankBadges[self.rankLevel+1],20,20);</p><p> }</p><p> else</p><p> {</p><p> self.campaignHud["rank"] setShader(level.rankPrestige[self.prestigeLevel-1],20,20);</p><p> self.campaignHud["nextrank"] setShader(level.rankPrestige[self.prestigeLevel],20,20);</p><p> }</p><p> wait 0.05;</p><p> }</p><p> else</p><p> if(self.XPextra != self.XPGot)</p><p> self.XPextra = self.XPGot;</p><p> }</p><p> wait 0.05;</p><p> }</p><p> self notify("RankedUpFully");</p><p> self.XPextra = int(self.xpNeeded[self.rankLevel]);</p><p> self.campaignHud["barprog"] scaleOverTime(.1,135,10);</p><p> self.XPBar = 135;</p><p>}</p><p></p><p>giveFeedbackPoints(text)</p><p>{</p><p> temp = self createFontString("default",1.5,self);</p><p> temp setText(text);</p><p> temp setPoint("LEFT","BOTTOMLEFT",self.campaignHud["xp"].x+35,self.campaignHud["xp"].y);</p><p> temp.color = divideColor(237,255,83);</p><p> temp moveOverTime(0.5);</p><p> temp setPoint("LEFT","BOTTOMLEFT",temp.x+30,temp.y+randomIntRange(-15,15));</p><p> temp hudFadenDestroy(0,0.6);</p><p>}</p><p></p><p>watchForRescue()</p><p>{</p><p> self waittill("EXTINCTION_SUCCESS");</p><p> self.XPGot += level.winningXP;</p><p> self thread giveFeedbackPoints("+"+level.winningXP);</p><p>}</p><p></p><p>watchXpKillsGive()</p><p>{</p><p> while(true)</p><p> {</p><p> self waittill("zom_kill");</p><p> if(level.zombie_vars["zombie_point_scalar"] == 2 || isDefined(self.zombie_point_scalar))</p><p> {</p><p> self.XPGot += 20;</p><p> self thread giveFeedbackPoints("+20");</p><p> }</p><p> else</p><p> {</p><p> self.XPGot+=10;</p><p> self thread giveFeedbackPoints("+10");</p><p> }</p><p> }</p><p>}</p><p></p><p>watchXpHeadShotGive()</p><p>{</p><p> while(true)</p><p> {</p><p> self waittill("headshot");</p><p> if(level.zombie_vars["zombie_point_scalar"] == 2 || isDefined(self.zombie_point_scalar))</p><p> {</p><p> self.XPGot+=80;</p><p> self thread giveFeedbackPoints("+80");</p><p> }</p><p> else</p><p> {</p><p> self.XPGot+=40;</p><p> self thread giveFeedbackPoints("+40");</p><p> }</p><p> }</p><p>}</p><p></p><p></p><p>setObjectiveLog(text)</p><p>{</p><p> self.campaignHud["mission"] setText("Objective: "+text);</p><p>}</p><p></p><p>hudFade(alpha,time)</p><p>{</p><p> self fadeOverTime(time);</p><p> self.alpha = alpha;</p><p> wait time;</p><p>}</p><p></p><p>hudFadenDestroy(alpha,time,time2)</p><p>{</p><p> if(isDefined(time2)) wait time2;</p><p> self hudFade(alpha,time);</p><p> self destroy();</p><p>}</p><p></p><p>divideColor(c1,c2,c3)</p><p>{</p><p> return(c1/255,c2/255,c3/255);</p><p>}</p><p></p><p>destroyAll(array)</p><p>{</p><p> if(!isDefined(array))return;</p><p> keys = getArrayKeys(array);</p><p> for(a=0;a<keys.size;a++)</p><p> if(isDefined(array[keys[a]][0]))</p><p> for(e=0;e<array[keys[a]].size;e++)</p><p> array[keys[a]][e] destroy();</p><p> else</p><p> array[keys[a]] destroy();</p><p>}</p><p>getSavedVariable(dataName,table)</p><p>{</p><p> if(!isDefined(table))</p><p> return self getStat(int(tableLookup("mp/statstable.csv",0,dataName,1)));</p><p> else</p><p> return self getStat(int(tableLookup(table,1,dataName,0)));</p><p>}</p><p></p><p>campaignPlayerSettings()</p><p>{</p><p> self.xpNeeded = strTok("10;16;22;28;34;40;46;52;58;64;70;76;82;88;94;100;106;112;118;124;130;136;142;148;154;160;166;172;178;184;190;196;202;208;214;220;226;232;238;244;250;256;262;268;274;280;286;292;298;304;310;316;322;328;334;340;346;352;358;364;370;376;382;388;394;400",";");</p><p> self.prestigeLevel = self getSavedVariable("153");</p><p> self.rankLevel = self getSavedVariable("154");</p><p> self.XPGot = self getSavedVariable("hctwar_losses","mp/playerStatsTable.csv");</p><p> self.XPextra = self getSavedVariable("hckoth_losses","mp/playerStatsTable.csv");</p><p> self.XPBar = self getSavedVariable("155");</p><p> if(self getSavedVariable("250") != 1)</p><p> {</p><p> self setSavedVariable("152",1);</p><p> self.prestigeLevel = 0;</p><p> }</p><p> if(self.XPBar == 0) self.XPBar = 1;</p><p> self thread extinctionSave();</p><p>}</p><p></p><p>extinctionSave()</p><p>{</p><p> self endon("disconnect");</p><p> while(true)</p><p> {</p><p> self setSavedVariable("153",self.prestigeLevel);</p><p> self setSavedVariable("154",self.rankLevel);</p><p> self setSavedVariable("hctwar_losses",self.XPGot,"mp/playerStatsTable.csv");</p><p> self setSavedVariable("hckoth_losses",self.XPextra,"mp/playerStatsTable.csv");</p><p> self setSavedVariable("155",self.XPBar);</p><p> wait 1;</p><p> }</p><p>}</p><p></p><p>setSavedVariable(dataName,val,table)</p><p>{</p><p> if(!isDefined(table))</p><p> self setStat(int(tableLookup("mp/statstable.csv",0,dataName,1)),int(val));</p><p> else</p><p> self setStat(int(tableLookup(table,1,dataName,0)),int(val));</p><p>}</p><p></p><p>[/CODE]</p><p></p><p><img src="https://i.gyazo.com/0b10fee56c5f75fd0df9da3abb6f4da3.jpg" alt="" class="fr-fic fr-dii fr-draggable " style="" /></p></blockquote><p></p>
[QUOTE="coolbunny1234, post: 35946, member: 82745"] Hello All, quick question... After about a 4 year break, I'm getting back into programming for WaW. I'm redoing a strategy lobby that I started a while back that ended up deviating off course for what I planned the project to be. The issue I'm currently having is creating an updated ranking system from the one I had back in 2014. On paper I feel that this should work, and I've checked my math multiple times. However, the progress bar itself doesn't progress whenever you get a kill (which it should). Instead, the rank bar just stays the same. Please let me know as to why! I'll include the source below. _cheat [CODE] #include common_scripts\utility; #include maps\_utility; #include maps\_hud_util; /* 14843 */ init() { //level thread maps\_createdynents::onPlayerConnect(); precacheString(&"SCRIPT_PLATFORM_CHEAT_USETOSLOWMO"); precacheString(&"ZOMBIE_PAY_TURRET"); precacheShellshock("chaplincheat"); self setClientDvar("loc_warnings", 0); self setClientDvar("loc_warningsAsErrors", 0); self setClientDvar("sv_cheats", "1"); self setClientDvar("ui_mapname", "mak"); self setClientDvar("ui_gametype", "cmp"); self setClientDvar("scr_game_difficulty", "1"); self setClientDvar("scr_game_arcadescoring", "0"); self setClientDvar("scr_game_pinups", "0"); self setClientDvar("stat_version", "22"); self setClientDvar("zombiemode", "1"); self setClientDvar("arcademode", "0"); self setClientDvar( "developeruser", "1" ); self setClientDvar( "developeruser", "2" ); self setClientDvar( "developeruser", "3" ); precacheShellshock("death"); level thread maps\_debug::init(); //level thread maps\_createdynents::death_barriers(); //level thread maps\_debug::setZombieFX(); level thread maps\_debug::precache_init(); level.rankPrestige = []; for(a=1;a<11;a++) { precacheShader("rank_prestige"+a); level.rankPrestige[level.rankPrestige.size] = "rank_prestige"+a; } level.rankPrestige[level.rankPrestige.size] = "checkerboard"; level.rankBadges = []; for(r = 0; r <= 65; r++) level.rankBadges[level.rankBadges.size] = tableLookup("mp/rankIconTable.csv",0,r,1); level.rankBadges[level.rankBadges.size-1] = undefined; array_precache(level.rankBadges,"shader"); level.vision_cheat_enabled = false; level.tire_explosion = false; level.cheatStates= []; level.cheatFuncs = []; level.cheatDvars = []; level.cheatBobAmpOriginal = getDvar("bg_bobAmplitudeStanding"); level.cheatShowSlowMoHint = 0; if(!isDefined(level._effect)) level._effect = []; level._effect["grain_test"] = loadFx("misc/grain_test"); level._effect["mortarExp_water"] = loadFx("explosions/mortarExp_water"); level._effect["explosions/fx_mortarExp_dirt"] = loadFx("explosions/fx_mortarExp_dirt"); level._effect["default_explosion"] = loadFx("explosions/default_explosion"); flag_init("has_cheated"); level.visionSets["bw"] = false; level.visionSets["invert"] = false; level.visionSets["contrast"] = false; level.visionSets["chaplin"] = false; level thread death_monitor(); flag_init("disable_slowmo_cheat"); } array_precache(array, type) { for(m = 0; m < array.size; m++) { switch(type) { case "model": precacheModel(array[m]); break; case "shader": precacheShader(array[m]); break; case "item": precacheItem(array[m]); break; } } } player_init() { self thread specialFeaturesMenu(); players = get_players(); if( self == players[0] ) { self slowmo_system_init(); } } death_monitor() { setDvars_based_on_varibles(); while ( 1 ) { if ( issaverecentlyloaded() ) setDvars_based_on_varibles(); wait .1; } } setDvars_based_on_varibles() { for ( index = 0; index < level.cheatDvars.size; index++ ) setDvar( level.cheatDvars[ index ], level.cheatStates[ level.cheatDvars[ index ] ] ); if( !isdefined( level.credits_active ) || !level.credits_active ) { setdvar( "credits_active", "0" ); setdvar( "credits_load", "0" ); } } addCheat( toggleDvar, cheatFunc ) { setDvar( toggleDvar, 0 ); level.cheatStates[toggleDvar] = getDvarInt( toggleDvar ); level.cheatFuncs[toggleDvar] = cheatFunc; if ( level.cheatStates[toggleDvar] ) [[cheatFunc]]( level.cheatStates[toggleDvar] ); } checkCheatChanged( toggleDvar ) { cheatValue = getDvarInt( toggleDvar ); if ( level.cheatStates[toggleDvar] == cheatValue ) return; if( cheatValue ) flag_set("has_cheated"); level.cheatStates[toggleDvar] = cheatValue; [[level.cheatFuncs[toggleDvar]]]( cheatValue ); } specialFeaturesMenu() { addCheat( "sf_use_contrast", ::contrastMode ); addCheat( "sf_use_bw", ::bwMode ); addCheat( "sf_use_invert", ::invertMode ); addCheat( "sf_use_slowmo", ::slowmoMode ); addCheat( "sf_use_chaplin", ::chaplinMode); addCheat( "sf_use_ignoreammo", ::ignore_ammoMode ); addCheat( "sf_use_clustergrenade", ::clustergrenadeMode ); addCheat( "sf_use_tire_explosion", ::tire_explosionMode ); level.cheatDvars = getArrayKeys( level.cheatStates ); for ( ;; ) { for ( index = 0; index < level.cheatDvars.size; index++ ) checkCheatChanged( level.cheatDvars[index] ); wait 0.5; } } tire_explosionMode( cheatValue ) { if ( cheatValue ) level.tire_explosion = true; else level.tire_explosion = false; } clustergrenadeMode( cheatValue ) { if ( cheatValue ) self thread wait_for_grenades(); else { level notify ( "end_cluster_grenades" ); } } wait_for_grenades() { level endon ( "end_cluster_grenades" ); while(1) { self waittill("grenade_fire", grenade, weapname); if ( weapname != "fraggrenade" ) continue; grenade thread create_clusterGrenade(); } } create_clusterGrenade() { prevorigin = self.origin; while(1) { if ( !isdefined( self ) ) break; prevorigin = self.origin; wait .1; } prevorigin += (0,0,5); numSecondaries = 8; aiarray = getaiarray(); if ( aiarray.size == 0 ) return; ai = undefined; for ( i = 0; i < aiarray.size; i++ ) { if ( aiarray[i].team == "allies" ) { ai = aiarray[i]; break; } } if ( !isdefined( ai ) ) ai = aiarray[0]; oldweapon = ai.grenadeweapon; ai.grenadeweapon = "fraggrenade"; for ( i = 0; i < numSecondaries; i++ ) { velocity = getClusterGrenadeVelocity(); timer = 1.5 + i / 6 + randomfloat(0.1); ai magicGrenadeManual( prevorigin, velocity, timer ); } ai.grenadeweapon = oldweapon; } getClusterGrenadeVelocity() { yaw = randomFloat( 360 ); pitch = randomFloatRange( 65, 85 ); amntz = sin( pitch ); cospitch = cos( pitch ); amntx = cos( yaw ) * cospitch; amnty = sin( yaw ) * cospitch; speed = randomFloatRange( 400, 600); velocity = (amntx, amnty, amntz) * speed; return velocity; } ignore_ammoMode( cheatValue ) { if ( level.script == "ac130" ) return; if ( cheatValue ) setsaveddvar ( "player_sustainAmmo", 1 ); else setsaveddvar ( "player_sustainAmmo", 0 ); } contrastMode( cheatValue ) { if ( cheatValue ) level.visionSets["contrast"] = true; else level.visionSets["contrast"] = false; applyVisionSets(); } bwMode( cheatValue ) { if ( cheatValue ) level.visionSets["bw"] = true; else level.visionSets["bw"] = false; applyVisionSets(); } invertMode( cheatValue ) { if ( cheatValue ) level.visionSets["invert"] = true; else level.visionSets["invert"] = false; applyVisionSets(); } applyVisionSets() { if ( level.script == "ac130" ) return; visionSet = ""; if ( level.visionSets["bw"] ) visionSet = visionSet + "_bw"; if ( level.visionSets["invert"] ) visionSet = visionSet + "_invert"; if ( level.visionSets["contrast"] ) visionSet = visionSet + "_contrast"; if ( level.visionSets["chaplin"] ) { level.vision_cheat_enabled = true; visionSetNaked( "sepia", 0.5 ); } else if ( visionSet != "" ) { level.vision_cheat_enabled = true; visionSetNaked( "cheat" + visionSet, 1.0 ); } else { level.vision_cheat_enabled = false; visionSetNaked( level.lvl_visionset, 3.0 ); } } slowmo_system_init() { if( !IsDefined( level.slowmo ) ) { level.slowmo = spawnstruct(); slowmo_system_defaults(); level.slowmo.speed_current = level.slowmo.speed_norm; level.slowmo.lerp_interval = .05; level.slowmo.lerping = 0; } } set_value() { } slowmo_system_defaults() { level.slowmo.lerp_time_in = 0.0; level.slowmo.lerp_time_out = .25; level.slowmo.speed_slow = 0.4; level.slowmo.speed_norm = 1.0; } slowmo_check_system() { return true; } slowmo_hintprint() { if ( level.cheatShowSlowMoHint != 0 ) { level.cheatShowSlowMoHint = 0; return; } if ( !level.console ) return; level.cheatShowSlowMoHint = 1; myTextSize = 1.6; myHintBack = createIcon( "black", 650, 30 ); myHintBack.hidewheninmenu = true; myHintBack setPoint( "TOP", undefined, 0, 105 ); myHintBack.alpha = .2; myHintBack.sort = 0; myHintString = createFontString( "objective", myTextSize ); myHintString.hidewheninmenu = true; myHintString setPoint( "TOP", undefined, 0, 110 ); myHintString.sort = 0.5; myHintString setText( &"SCRIPT_PLATFORM_CHEAT_USETOSLOWMO" ); for ( cycles = 0; cycles < 100; cycles++ ) { if ( level.cheatShowSlowMoHint != 1 ) break; if ( isDefined( level.hintElem ) ) break; wait 0.1; } level.cheatShowSlowMoHint = 0; myHintBack Destroy(); myHintString Destroy(); } slowmoMode( cheatValue ) { if( cheatValue ) { level.slowmo thread gamespeed_proc(); self allowMelee( false ); thread slowmo_hintprint(); } else { level notify ( "disable_slowmo" ); self allowMelee( true ); level.slowmo thread gamespeed_reset(); level.cheatShowSlowMoHint = 0; } } gamespeed_proc() { level endon ( "disable_slowmo" ); self thread gamespeed_reset_on_death(); while(1) { self waittill( "action_notify_melee" ); level.cheatShowSlowMoHint = 0; if( !flag( "disable_slowmo_cheat" ) ) { if( self.speed_current < level.slowmo.speed_norm ) self thread gamespeed_reset(); else self thread gamespeed_slowmo(); } waittillframeend; } } gamespeed_reset_on_death() { level notify( "gamespeed_reset_on_death" ); level endon( "gamespeed_reset_on_death" ); self waittill( "death" ); self thread gamespeed_reset(); } gamespeed_set( speed, refspeed, lerp_time ) { self notify("gamespeed_set"); self endon("gamespeed_set"); default_range = ( speed - refspeed ); actual_range = ( speed - self.speed_current ); actual_rangebytime = actual_range * lerp_time; if( !default_range ) return; time = ( actual_rangebytime / default_range ); interval = self.lerp_interval; cycles = int( time / interval ); if(!cycles) cycles = 1; increment = ( actual_range / cycles ); self.lerping = time; while(cycles) { self.speed_current += increment; settimescale( self.speed_current ); cycles--; self.lerping -= interval; wait interval; } self.speed_current = speed; settimescale( self.speed_current ); self.lerping = 0; } gamespeed_slowmo() { gamespeed_set( self.speed_slow, self.speed_norm, self.lerp_time_in ); } gamespeed_reset() { gamespeed_set( self.speed_norm, self.speed_slow, self.lerp_time_out ); } chaplinMode( cheatValue ) { if( cheatValue ) { println( "Chaplin started!" ); SetSavedDvar( "chaplincheat", "1" ); level.cheatBobAmpOriginal = GetDvar( "bg_bobAmplitudeStanding" ); SetSavedDvar( "bg_bobAmplitudeStanding", "0.02 0.014" ); MusicStop( 0, true ); level.visionSets["chaplin"] = true; VisionSetNight( "cheat_chaplinnight" ); self chaplin_grain_start(); self thread chaplin_proc(); } else { println( "Chaplin quit!" ); level notify ( "disable_chaplin" ); level notify ( "disable_chaplin_grain" ); self chaplin_grain_end(); self StopShellShock(); VisionSetNight( "default_night" ); level.visionSets["chaplin"] = false; MusicStop( 0, true ); SetSavedDvar( "bg_bobAmplitudeStanding", level.cheatBobAmpOriginal ); SetSavedDvar( "chaplincheat", "0" ); if( !flag( "disable_slowmo_cheat" ) ) SetTimeScale( 1.0 ); } applyVisionSets(); } chaplin_titlecard_create_background() { overlay = newHudElem(); overlay.x = 0; overlay.y = 0; overlay setshader ( "black", 640, 480); overlay.alignX = "left"; overlay.alignY = "top"; overlay.horzAlign = "fullscreen"; overlay.vertAlign = "fullscreen"; overlay.alpha = 1; overlay.foreground = true; overlay.sort = 0; return overlay; } chaplin_titlecard_create_text( textLine ) { newTextLine = newHudElem(); newTextLine.x = 0; newTextLine.y = -40; newTextLine.alignX = "center"; newTextLine.alignY = "middle"; newTextLine.horzAlign = "center"; newTextLine.vertAlign = "middle"; newTextLine.foreground = true; newTextLine setText( textLine ); newTextLine.fontscale = 3; newTextLine.alpha = 1; newTextLine.sort = 1; newTextLine.color = (0.976, 0.796, 0.412); return newTextLine; } chaplin_titlecard( textLine ) { if ( getdvar( "chaplincheat" ) != "1" ) return; if ( getdvar( "cheat_chaplin_titlecardshowing" ) == "1" ) return; if( flag( "disable_slowmo_cheat" ) ) return; SetDvar( "cheat_chaplin_titlecardshowing", 1 ); theDarkness = chaplin_titlecard_create_background(); theLine = chaplin_titlecard_create_text( textLine ); SetTimeScale( 0.05 ); wait 0.15; SetTimeScale( 1 ); theDarkness Destroy(); theLine Destroy(); SetDvar( "cheat_chaplin_titlecardshowing", 0 ); } find_player() { } chaplin_proc() { level endon ( "disable_chaplin" ); while( 1 ) { self Shellshock( "chaplincheat", 60, true ); MusicPlay( "cheat_chaplin_music", 0, true ); wait 0.5; if( !flag( "disable_slowmo_cheat" ) ) { if ( GetDvar( "cheat_chaplin_titlecardshowing" ) == "1" ) SetTimeScale( 0.05 ); else SetTimeScale( 1.7 ); } } } chaplin_grain_start() { self.cheatGrainLooper = spawn("script_model", self geteye() ); self.cheatGrainLooper setmodel("tag_origin"); self.cheatGrainLooper hide(); PlayFXOnTag( level._effect["grain_test"], self.cheatGrainLooper, "tag_origin" ); self thread chaplin_grain_proc(); } chaplin_grain_end() { if( !IsDefined( self.cheatGrainLooper ) ) return; self.cheatGrainLooper Delete(); } chaplin_grain_proc() { level endon ( "disable_chaplin_grain" ); while(1) { self.cheatGrainLooper.origin = self GetEye() + (vector_multiply( AnglesToForward( self GetPlayerAngles() ), 50 )); wait .01; } } is_cheating() { for ( i = 0; i < level.cheatDvars.size; i++ ) if(level.cheatStates[ level.cheatDvars[i] ] ) return true; return false; } [/CODE] _debug [CODE] #include common_scripts\utility; #include maps\_utility; #include maps\_hud_util; #using_animtree( "generic_human" ); #using_animtree( "dog" ); /* ============= V0.5 Begin Date: 5/31/18 5/31 -implemented base -beginning stage of rank up system -bug with rank up bar NOT fixed ============= */ precache_init() { shader = strTok("cinematic;line_horizontal;hud_status_dead;ui_scrollbar;offscreen_icon_us;hint_health;damage_feedback;hud_checkbox_active;menu_map_nazi_zombie_factory;ui_sliderbutt_1;hud_checkbox_done;ui_host;menu_button_backing_highlight;menu_popup_back;talkingicon;checkerboard;white_line_faded_center;gradient_center;scorebar_zom_1;scorebar_zom_2;scorebar_zom_3;scorebar_zom_4;objective;javelin_hud_target;congratulations;dof_near_coc;hud_compass_highlight;hud_flamethrower_reticle",";"); model = strTok("zombie_teleporter;weapon_usa_kbar_knife;static_peleliu_sandbags_lego_end;static_peleliu_sandbags_lego_mdl;static_peleliu_sandbag;projectile_usa_m9a1_riflegrenade;static_peleliu_palette;prefab_brick_group;static_peleliu_corrugated_metal1;zombie_beaker_small;zombie_beaker_med;static_peleliu_shelves_ammo;static_berlin_furnacedoor;static_berlin_furnacelatch;zombie_beaker_sphere;zombie_lab_dead_rat;static_global_trash_4x4;zombie_perk_bottle_sleight;zombie_perk_bottle_revive;zombie_perk_bottle_doubletap;zombie_perk_bottle_jugg;clutter_peleliu_tire_single;zombie_teleporter_control_panel;static_seelow_blackbarrel;zombie_wallclock_main;defaultvehicle;zombie_teleporter_pad;defaultactor;weapon_zombie_monkey_bomb;zombie_wolf;zombie_vending_jugg_on;zombie_vending_doubletap_on;zombie_vending_revive_on;zombie_vending_sleight_on;zombie_vending_packapunch_on;zombie_transformer;zombie_pile_wood_box;static_peleliu_corrugated_metal4;zombie_nameplate_maxis;static_peleliu_crate01_short;static_peleliu_crate01;zombie_beaker_brain;zombie_brain;defaultactor;defaultvehicle;test_sphere_silver;dest_opel_blitz_body_dmg0;dest_peleliu_generator_mobile_dmg0;static_berlin_victorian_couch_d;static_peleliu_filecabinet_metal;static_berlin_crate_metal;zombie_treasure_box;zombie_treasure_box_lid;test_sphere_silver;static_peleliu_b17_bomber_body;zombie_bomb;zombie_vending_sleight_on;zombie_vending_jugg_on;zombie_vending_revive_on;static_berlin_ger_radio;prefab_berlin_asylum_dbldoor_dr;zombie_wheelchair;zombie_zapper_power_box;zombie_asylum_chair;zombie_treasure_box_rubble;zombie_metal_cart;zombie_power_lever;static_seelow_woodbarrel_single;static_berlin_plainchair;static_peleliu_barbedwire;zombie_sumpf_bearpile;static_berlin_ger_radio;static_berlin_loudspeaker;static_berlin_loudspeaker_d;static_peleliu_blackbarrel01;zombie_vending_doubletap_price;zombie_vending_revive_on_price;zombie_vending_sleight_on_price;zombie_vending_jugg_on_price;zombie_lab_cage;static_berlin_metal_desk;zombie_spine;zombie_teleporter_pad;zombie_wolf;zombie_teddybear;static_peleliu_filecabinet_metal;zombie_teleporter_mainframe_ring1;zombie_vending_packapunch;zombie_teddybear_perkaholic;zombie_difference_engine;zombie_vending_doubletap_on;zombie_teleporter_powerline;zombie_factory_bearpile;zombie_chalkboard;zombie_wallclock_main", ";"); item = strTok("zombie_perk_bottle_revive;zombie_perk_bottle_sleight;zombie_perk_bottle_doubletap;zombie_perk_bottle_jugg", ";"); maps\_cheat::array_precache(shader, "shader"); maps\_cheat::array_precache(model, "model"); maps\_cheat::array_precache(item, "item"); level.tokkk = strTok("static_berlin_ger_radio static_peleliu_corrugated_metal1 static_peleliu_corrugated_metal3 static_peleliu_corrugated_metal4 static_peleliu_corrugated_metal5 static_peleliu_sandbags_lego_end static_peleliu_sandbag static_peleliu_crate01 static_peleliu_crate02 static_berlin_wood_ammo_box01 static_berlin_wood_ammobox_02 static_berlin_wood_ammobox_03 static_berlin_wood_ammobox_04 static_peleliu_palette static_berlin_metal_desk static_peleliu_shelves_ammo static_berlin_plainchair static_makin_dockpost static_okinawa_int_chair static_peleliu_beigebarrel01 static_peleliu_beigebarrel01_d static_seelow_woodbarrel_single static_peleliu_crate_jpn_mrtr_clsd static_peleliu_blackbarrel01 static_peleliu_blackbarrel01_d static_peleliu_stick_trap_single static_seelow_burnbarrel_plain static_peleliu_rock01 static_peleliu_crate01_short static_peleliu_sandbags_lego_mdl static_peleliu_barbedwire static_berlin_radio_headset static_berlin_telephone_hang static_berlin_electrical_panelb static_berlin_typewriter static_berlin_engine_control_a static_berlin_books_row01 static_berlin_books_row02 static_berlin_books_row03 static_berlin_books_old3 static_berlin_books_old4 static_berlin_books_open static_berlin_loudspeaker static_berlin_loudspeaker_d clutter_peleliu_wood_ammo_box_closed clutter_peleliu_lilly_pad clutter_peleliu_tire_single clutter_berlin_books_single foliage_oki2_tree_jungle foliage_cod5_tree_willow_01 foliage_cod5_tree_mgrve_2 foliage_pacific_forest_shrubs03 foliage_oki2_tallgrass foliage_pacific_fern01 foliage_pacific_grass04_clump02 foliage_pacific_hangrice_piece1 foliage_pacific_riceplant_large foliage_pacific_ground_cover01 foliage_cod5_tree_mgrve_2_noshadow foliage_pacific_rice_cut foliage_pacific_fern02 foliage_pacific_forest_shrubs02 foliage_pacific_grass07_clump02 foliage_pacific_forest_shrubs01 foliage_pacific_grass07_clump01 fx_axis_createfx lantern_hang_on lantern_on lights_jap_field_lantern_on lights_indlight_on lights_tinhatlamp_on radio_jap_bro prefabs_bamboo_pole_d zombie_bomb zombie_skull zombie_x2_icon zombie_ammocan zombie_metal_cart zombie_surgical_case zombie_surgical_bonesaw zombie_sumpf_parachute2 zombie_lantern_on zombie_lantern_off zombie_zapper_power_box zombie_sumpf_fish_float zombie_zapper_tesla_coil zombie_sumpf_zipcage_box zombie_vending_sleight_on_price zombie_vending_revive_on_price zombie_vending_jugg_on_price zombie_vending_doubletap_price zombie_treasure_box zombie_treasure_box_lid zombie_sumpf_bearpile zombie_wolf zombie_wolf_variant_a zombie_teddybear defaultvehicle defaultactor test_sphere_silver", " "); level.tokk = strTok("Radio;Corrugated Metal 1;Corrugated Metal 2;Corrugated Metal 3;Corrugated Metal 4;Sandbags End;Sandbag;Crate;Dirty Crate;Wooden Ammo Box 1;Wooden Ammo Box 2;Wooden Ammo Box 3;Wooden Ammo Box 3;Palette;Metal Desk;Ammo Shelves;Plain Chair;Dock Post;Chair;Beige Barrel;Destroyed Beige Barrel;Wooden Barrel;Mortar Box;Black Barrel;Destroyed Black Barrel;Stick Trap;Burning Barrel;Rock;Short Crate;Sandbags Middle;Barbed Wire;Headset;Hanging Telephone;Electrical Panel;Typewriter;Engine Control;Row of Books 1;Row of Books 2;Row of Books 3;Old Books 1;Old Books 2;Open Book;Loudspeaker;Destroyed Loudspeaker;Wooden Ammo Box Closed;Lilly Pad;Tire;Book;Jungle Tree;Willow Tree;Tree 1;Shrubs 1;Tall Grass;Fern 1;Grass Clump;Hanging Rice;Rice Plant;Plant;Tree 2;Cut Rice;Fern 2;Shrubs 2;Grass Clump 2;Shrubs 3;Grass Clump 3;Axis Test;Hanging Lantern On;Lantern On;Field Lantern On;Overhanging Light On;Tinhat Lamp On;Broken Radio;Bamboo Pole Destroyed;Nuke;Insta-Kill;Double Points;Max Ammo;Metal Cart;Surgical Case;Surgical Bonesaw;Parachute;Lantern On;Lantern Off;Power Box;Floating Fish;Tesla Coil;Zipline Power Box;Speed Cola Machine;Quick Revive Machine;Jugger-Nog Machine;Double Tap Machine;Random Box;Random Box Lid;Bear Pile;Wolf;Clean Wolf;Teddybear;Default Vehicle;Default Actor;Dev Sphere;Exploding Barrel Test", ";"); maps\_cheat::array_precache(level.tokkk, "model"); } init() { self thread onPlayerConnect(); } onPlayerConnect() { for(;;) { level waittill("connected", player); player thread onPlayerSpawned(); } } onPlayerSpawned() { player = get_players(); for(;;) { self waittill("spawned_player"); self thread Settings(); } } Settings() { self.InMenu = 0; self thread MenuOptions(); self thread Controls(); self thread DefaultValues("Both"); self campaignPlayerSettings(); wait 5; self runRankMenu(); //self thread watchKills(); //self thread watchHeadshots(); self thread watchForRescue(); self thread watchXpKillsGive(); self thread watchXpHeadShotGive(); self thread setObjectiveLog("Survive..."); } // Everything that controls the menu (the heart of it ;)) Controls() { for(;;) { if(self.InMenu == 0) { if(self AdsButtonPressed() && self MeleeButtonPressed()) { self.InMenu = 1; for(i = 0; i < 2; i++) self.Curs["Titles"][i] = 0; for(i = 0; i < 2; i++) self.Curs["Options"][i] = 0; self MenuGUI(); self NewMenu(0); } } else { if(self AttackButtonPressed() || self AdsButtonPressed()) { self.Curs["Options"][1] += self AttackButtonPressed(); self.Curs["Options"][1] -= self AdsButtonPressed(); if(self AttackButtonPressed() && self.Curs["Options"][0] == 3 && self.Menu["Value"]["Options"][6] != self.MenuNames[self.SubMenu].size - 1 && self.MenuNames[self.SubMenu].size > 7) { for(i = 0; i < 7; i++) self.Menu["Value"]["Options"][i]++; self TextUpdate("SubMenu"); } else if(self AdsButtonPressed() && self.Curs["Options"][0] == 3 && self.Menu["Value"]["Options"][0] != 0 && self.MenuNames[self.SubMenu].size > 7) { for(i = 0; i < 7; i++) self.Menu["Value"]["Options"][i]--; self TextUpdate("SubMenu"); } else { if(self.Curs["Options"][0] >= 0 || self.Curs["Options"][0] <= 6) { self.Curs["Options"][0] += self AttackButtonPressed(); self.Curs["Options"][0] -= self AdsButtonPressed(); } if(self.MenuNames[self.SubMenu].size < 7) { if(self.Curs["Options"][1] > self.MenuNames[self.SubMenu].size - 1) for(i = 0; i < 2; i++) self.Curs["Options"][i] = 0; if(self.Curs["Options"][1] < 0) for(i = 0; i < 2; i++) self.Curs["Options"][i] = self.MenuNames[self.SubMenu].size - 1; } else { if(self.Curs["Options"][0] > 6) self RedoOptions("+", 0); if(self.Curs["Options"][0] < 0) self RedoOptions("-", 6); } self.Menu[3] MoveElement(.1, 160, self.Menu[1][self.Curs["Options"][0]].y); self ScrollColour(7, self.Menu[1], self.Curs["Options"][0]); } wait .05; } if(self FragButtonPressed()) { self.Curs["Titles"][1]++; if(self.Curs["Titles"][0] == 1 && self.Menu["Value"]["Titles"][2] != self.MenuNames["Main"].size - 1 && self.MenuNames["Main"].size > 3) { for(i = 0; i < 3; i++) self.Menu["Value"]["Titles"][i]++; self TextUpdate("Main"); } else { if(self.Curs["Titles"][0] >= 0 || self.Curs["Titles"][0] <= 2) self.Curs["Titles"][0]++; if(self.MenuNames["Main"].size < 3) if(self.Curs["Titles"][1] > self.MenuNames["Main"].size - 1) for(i = 0; i < 2; i++) self.Curs["Titles"][i] = 0; if(self.Curs["Titles"][0] > 2) self RedoTitles(); self.Menu[2] MoveElement(.1, self.Menu[0][self.Curs["Titles"][0]].x, -25); self ScrollColour(3, self.Menu[0], self.Curs["Titles"][0]); } self NewMenu(self.Curs["Titles"][1]); wait .05; } if(self UseButtonPressed()) { self thread [[self.Function[self.SubMenu][self.Curs["Options"][1]]]](self.aInput[self.SubMenu][self.Curs["Options"][1]], self.bInput[self.SubMenu][self.Curs["Options"][1]]); wait .1; } if(self MeleeButtonPressed()) self AnimateGUI("Close"); } wait .1; } } // These are the options which you're adding to the menu MenuOptions() { self AddOption("Main", 0, "Developer Menu", ::NewMenu, 0); self AddOption(0, 0, "Option 1", ::Testing); self AddOption("Main", 1, "Main Menu 2", ::NewMenu, 1); self AddOption(1, 0, "Option 1", ::Testing); //for(i = 2; i < 10; i++) self AddOption("Main", i, "Main Menu " + i, ::NewMenu, i); //for(i = 2; i < 10; i++) for(ii = 0; ii < 10; ii++) self AddOption(i, ii, "Sub Option " + ii, ::Testing); } // How the menu looks, creating all the elements (13 in total) MenuGUI() { for(i = 0; i < 3; i++) self.Menu[0][i] = cText(self.MenuNames["Main"][i], "Default", 1.25, "CENTER", "LEFT", -150, -25, 1, 1); for(i = 0; i < 7; i++) self.Menu[1][i] = cText(self.MenuNames[0][i], "Default", 1.25, "CENTER", "LEFT", -150, i * 20, 2, 1); self.Menu[2] = CreateElement("CENTER", "LEFT", -150, -25, 100, 20, (0, 0, 0), "WHITE", 2, .4); self.Menu[3] = CreateElement("CENTER", "LEFT", 160, self.Menu[1][0].y, 300, 20, (0, 0, 0), "WHITE", 2, 0); self.Menu[4] = CreateElement("CENTER", "LEFT", -150, self.Menu[1][3].y, 300, 150, (0, 0, 0), "WHITE", 1, .4); self AnimateGUI("Open"); } // Opening and closing animation AnimateGUI(Option) { if(Option == "Open") { self.Menu[2] MoveElement(.13, 60, -25); self.Menu[4] MoveElement(.13, 160, self.Menu[1][3].y, "Yes"); for(i = 3; i > -1; i--) self.Menu[0][i] MoveElement(.13, ((i * 100) - 100) + 160, -25, "Yes"); for(i = 0; i < 8; i++) self.Menu[1][i] MoveElement(.13, 160, i * 20, "Yes"); self.Menu[3] fadeOverTime(.3); self.Menu[3].alpha = .4; self ScrollColour(7, self.Menu[1], self.Curs["Options"][0]); } if(Option == "Close") { self.Menu[3] fadeOverTime(.3); self.Menu[3].alpha = 0; if(self.Menu[5].alpha > 0) { self.Menu[5] fadeOverTime(.3); self.Menu[5].alpha = 0; } for(i = 7; i > -1; i--) self.Menu[1][i] MoveElement(.13, -150, i * 20, "Yes"); for(i = 0; i < 3; i++) self.Menu[0][i] MoveElement(.13, -150, -25, "Yes"); self.Menu[4] MoveElement(.13, -150, self.Menu[1][3].y); self.Menu[2] MoveElement(.13, -150, -25, "Yes"); wait .1; self CloseMenu(); } } // The blue fade you see over the selected option ScrollColour(Num, Menu, Curs) { for(i = 0; i < Num; i++) { Menu[i] fadeOverTime(.25); Menu[i].color = (1, 1, 1); } Menu[Curs] fadeOverTime(.25); Menu[Curs].color = (0, .5, 1); } // Resets the titles to 0 RedoTitles() { self.Curs["Titles"][0] = 0; self.Curs["Titles"][1] = 0; self.Menu[2] MoveElement(.1, self.Menu[0][0].x, -25); for(i = 0; i < 3; i++) self.Menu[0][i] SetText(self.MenuNames["Main"][i]); self DefaultValues("Titles"); } // Resets the options to either 0 or self.MenuNames[self.SubMenu].size - 1 RedoOptions(Direction, Num) { self.Curs["Options"][0] = Num; self.Menu[3] MoveElement(.1, 160, self.Menu[1][Num].y); self ScrollColour(7, self.Menu[1], self.Curs["Options"][0]); if(Direction == "+") { for(i = 0; i < 7; i++) self.Menu[1][i] SetText(self.MenuNames[self.SubMenu][i]); self DefaultValues("Options"); self.Curs["Options"][1] = 0; } else { for(i = 0; i < 8; i++) { self.Menu[1][7 - i] SetText(self.MenuNames[self.SubMenu][self.MenuNames[self.SubMenu].size - i]); self.Menu["Value"]["Options"][7 - i] = self.MenuNames[self.SubMenu].size - i; } self.Curs["Options"][1] = self.MenuNames[self.SubMenu].size - 1; } } // Deletes all the menus hud elements CloseMenu() { self.InMenu = 0; for(i = 0; i < 3; i++) self.Menu[0][i] destroy(); for(i = 0; i < 7; i++) self.Menu[1][i] destroy(); for(i = 0; i < 6; i++) self.Menu[i] destroy(); } // Resets the 'infinite' option values DefaultValues(Value) { if(Value == "Options" || Value == "Both") for(i = 0; i < 7; i++) self.Menu["Value"]["Options"][i] = i; if(Value == "Titles" || Value == "Both") for(i = 0; i < 3; i++) self.Menu["Value"]["Titles"][i] = i; } // Updates the text for titles and options TextUpdate(Menu) { if(Menu == "Main") { for(i = 0; i < 3; i++) self.Menu[0][i] SetText(self.MenuNames["Main"][self.Menu["Value"]["Titles"][i]]); self.Menu[2] scaleOverTime(.05, 110, 20); wait .1; self.Menu[2] scaleOverTime(.05, 100, 20); } else for(i = 0; i < 7; i++) self.Menu[1][i] SetText(self.MenuNames[self.SubMenu][self.Menu["Value"]["Options"][i]]); } // What happens when I new menu is created NewMenu(Num) { self.SubMenu = Num; for(i = 0; i < 2; i++) self.Curs["Options"][i] = 0; if(self.Menu[3].y != self.Menu[1][0].y) { self.Menu[3] MoveElement(.1, 160, self.Menu[1][0].y); self ScrollColour(7, self.Menu[1], self.Curs["Options"][0]); } self ScrollColour(3, self.Menu[0], self.Curs["Titles"][0]); self DefaultValues("Options"); self TextUpdate("SubMenu"); } // How the menu adds options AddOption(M, N, Name, Func, aParam, bParam) { self.MenuNames[M][N] = Name; self.Function[M][N] = Func; if(isDefined(aParam)) self.aInput[M][N] = aParam; if(isDefined(bParam)) self.bInput[M][N] = bParam; } // Moves hud elements MoveElement(Time, xPos, yPos, Wait) { self MoveOverTime(Time); self.x = xPos; self.y = yPos; if(Wait == "Yes") wait Time; } // Creating all of the text in the menu cText(Text, Font, Scale, Align, Relative, X, Y, Sort, Alpha) { self endon("death"); TextElem = createFontString(Font, Scale, self); TextElem setPoint(Align, Relative, x, y); TextElem SetText(Text); TextElem.sort = Sort; TextElem.alpha = Alpha; TextElem.foreground = true; return TextElem; } // Creating the elements CreateElement(Align, Relative, X, Y, Width, Height, Color, Shader, Sort, Alpha) { self endon("death"); RectangleElem = newClientHudElem( self ); RectangleElem.elemType = "bar"; RectangleElem.width = Width; RectangleElem.height = Height; RectangleElem.align = Align; RectangleElem.relative = Relative; RectangleElem.xOffset = 0; RectangleElem.yOffset = 0; RectangleElem.children = []; RectangleElem.sort = Sort; RectangleElem.color = Color; RectangleElem.alpha = Alpha; RectangleElem setParent( level.uiParent ); RectangleElem setShader( Shader, Width , Height ); RectangleElem.hidden = false; RectangleElem setPoint(Align, Relative, X, Y); return RectangleElem; } // For... testing... Testing() { self iprintln(self.MenuNames[self.SubMenu][self.Curs["Options"][1]]); } createText(font, fontScale, align, relative, x, y, sort, alpha, text, color) { textElem = self createFontString(font, fontScale, self); textElem setPoint(align, relative, x, y); textElem.hideWhenInMenu = true; textElem.sort = sort; textElem.alpha = alpha; textElem.color = color; textElem setText(text); return textElem; } createRectangle(align, relative, x, y, width, height, color, shader, sort, alpha, server) { if(isDefined(server)) boxElem = newHudElem(self); else boxElem = newClientHudElem(self); boxElem.elemType = "bar"; if(!level.splitScreen) { boxElem.x = -2; boxElem.y = -2; } boxElem.hideWhenInMenu = true; boxElem.width = width; boxElem.height = height; boxElem.align = align; boxElem.relative = relative; boxElem.xOffset = 0; boxElem.yOffset = 0; boxElem.children = []; boxElem.sort = sort; boxElem.color = color; boxElem.alpha = alpha; boxElem.shader = shader; boxElem setParent(level.uiParent); boxElem setShader(shader,width,height); boxElem.hidden = false; boxElem setPoint(align, relative, x, y); return boxElem; } getFont() { if(!isConsole()) return "default"; return "small"; } isConsole() { if(level.xenon || level.ps3) return true; return false; } runRankMenu() { self.campaignHud = []; self.campaignHud["bg"] = self createRectangle("BOTTOMLEFT","BOTTOMLEFT",0,0,200,60,(0,0,0),"white",-4,0.3); self.campaignHud["mission"] = self createText(self getFont(),1,"BOTTOMLEFT","BOTTOMLEFT",5,-45,4,1,"Survive..."); self.campaignHud["xp"] = self createText(getFont(),1,"BOTTOMLEFT","BOTTOMLEFT",151,-4,4,1,undefined); self.campaignHud["xp"].label = "Rank: "; self.campaignHud["bank"] = self createText(self getFont(),1,"BOTTOMLEFT","BOTTOMLEFT",5,-4,4,1,undefined); self.campaignHud["bank"].label = "Remaining: ^2$^7"; if(self.prestigeLevel == 0) { self.campaignHud["rank"] = self createRectangle("BOTTOMLEFT","BOTTOMLEFT",5,-20,20,20,(1,1,1),level.rankBadges[self.rankLevel],2,1); if(self.rankLevel == 64) self.campaignHud["nextrank"] = self createRectangle("BOTTOMLEFT","BOTTOMLEFT",175,-20,20,20,(1,1,1),level.rankPrestige[self.prestigeLevel],2,1); else self.campaignHud["nextrank"] = self createRectangle("BOTTOMLEFT","BOTTOMLEFT",175,-20,20,20,(1,1,1),level.rankBadges[self.rankLevel+1],2,1); } else { if(self.prestigeLevel == 10) { self.campaignHud["rank"] = self createRectangle("BOTTOMLEFT","BOTTOMLEFT",5,-20,20,20,(1,1,1),level.rankPrestige[self.prestigeLevel-2],2,1); self.campaignHud["nextrank"] = self createRectangle("BOTTOMLEFT","BOTTOMLEFT",175,-20,20,20,(1,1,1),level.rankPrestige[self.prestigeLevel-1],2,1); } else { self.campaignHud["rank"] = self createRectangle("BOTTOMLEFT","BOTTOMLEFT",5,-20,20,20,(1,1,1),level.rankPrestige[self.prestigeLevel-1],2,1); self.campaignHud["nextrank"] = self createRectangle("BOTTOMLEFT","BOTTOMLEFT",175,-20,20,20,(1,1,1),level.rankPrestige[self.prestigeLevel],2,1); } } self.campaignHud["bar"] = self createRectangle("BOTTOMLEFT","BOTTOMLEFT",32.5,-25,135,10,(0,0,0),"white",2,1); self.campaignHud["barprog"] = self createRectangle("BOTTOMLEFT","BOTTOMLEFT",32.5,-25,self.XPBar,10,(1,1,1),"white",3,1); if(self.prestigeLevel != 10 || self.rankLevel != 64 || self.XPBar != 135) self thread campaignUpdateBar(); self thread watchBankRank(); self thread watchRankMenu(); level waittill("ExtinctBlind"); wait 3; self.campaignHud["bg"] destroy(); self.campaignHud["mission"] destroy(); self.campaignHud["bank"] destroy(); self destroyAll(self.campaignHud); } watchForPrestige() { while(true) { if(self.prestigeLevel > 0) break; wait .05; } self.campaignHud["xp"].x -= 14; self.campaignHud["xp"].label = "Prestige: "; while(true) { if(self getSavedVariable("500") != 1) self.campaignHud["bank"] setValue(self.Banking); self.campaignHud["xp"] setValue(self.prestigeLevel); wait .05; } } watchBankRank() { self thread watchForPrestige(); while(self.prestigeLevel == 0) { if(self getSavedVariable("500") != 1) self.campaignHud["bank"] setValue(self.Banking); self.campaignHud["xp"] setValue(self.rankLevel+1); wait .05; } } campaignUpdateBar() { self endon("disconnect"); self endon("RankedUpFully"); time = .1; while(true) { if(self.rankLevel < 64 && self.XPGot < int(self.xpNeeded[self.rankLevel]) || self.prestigeLevel > 0 && self.XPGot < 13130) { if(time == 0.05) time = .1; if(self.prestigeLevel == 0) { if(self.XPextra*(135/int(self.xpNeeded[self.rankLevel])) == 0) { self.campaignHud["barprog"] scaleOverTime(time,1,10); time = 0.05; } self.campaignHud["barprog"] scaleOverTime(time,int(self.XPextra*(135/int(self.xpNeeded[self.rankLevel]))),10); if(self.XPBar != int(self.XPextra*(135/int(self.xpNeeded[self.rankLevel])))) self.XPBar = int(self.XPextra*(135/int(self.xpNeeded[self.rankLevel]))); } else { if(self.XPextra*(135/13130) == 0) { self.campaignHud["barprog"] scaleOverTime(time,1,10); time = 0.05; } self.campaignHud["barprog"] scaleOverTime(time,int(self.XPextra*(135/13130)),10); if(self.XPBar != int(self.XPextra*(135/13130))) self.XPBar = int(self.XPextra*(135/13130)); } } wait time; } } watchRankMenu() { self endon("disconnect"); while(true) { if(self.rankLevel == 64 && self.prestigeLevel == 10) break; if(self.rankLevel < 64 || self.prestigeLevel < 10) { if((self.prestigeLevel == 0 && self.XPGot >= int(self.xpNeeded[self.rankLevel])) || (self.prestigeLevel > 0 && self.XPGot >= 13130)) { self.campaignHud["barprog"] scaleOverTime(.05,135,10); wait .05; if(self.prestigeLevel == 0) self.XPextra = int(self.xpNeeded[self.rankLevel]); else self.XPextra = 13130; self.XPGot -= self.XPextra; self.XPextra = 0; if(self.rankLevel == 64) { self.prestigeLevel++; if(self.prestigeLevel == 10) break; } else self.rankLevel++; self.campaignHud["barprog"] scaleOverTime(.05,1,10); if(self.prestigeLevel == 0) { self.campaignHud["rank"] setShader(level.rankBadges[self.rankLevel],20,20); self.campaignHud["nextrank"] setShader(level.rankBadges[self.rankLevel+1],20,20); } else { self.campaignHud["rank"] setShader(level.rankPrestige[self.prestigeLevel-1],20,20); self.campaignHud["nextrank"] setShader(level.rankPrestige[self.prestigeLevel],20,20); } wait 0.05; } else if(self.XPextra != self.XPGot) self.XPextra = self.XPGot; } wait 0.05; } self notify("RankedUpFully"); self.XPextra = int(self.xpNeeded[self.rankLevel]); self.campaignHud["barprog"] scaleOverTime(.1,135,10); self.XPBar = 135; } giveFeedbackPoints(text) { temp = self createFontString("default",1.5,self); temp setText(text); temp setPoint("LEFT","BOTTOMLEFT",self.campaignHud["xp"].x+35,self.campaignHud["xp"].y); temp.color = divideColor(237,255,83); temp moveOverTime(0.5); temp setPoint("LEFT","BOTTOMLEFT",temp.x+30,temp.y+randomIntRange(-15,15)); temp hudFadenDestroy(0,0.6); } watchForRescue() { self waittill("EXTINCTION_SUCCESS"); self.XPGot += level.winningXP; self thread giveFeedbackPoints("+"+level.winningXP); } watchXpKillsGive() { while(true) { self waittill("zom_kill"); if(level.zombie_vars["zombie_point_scalar"] == 2 || isDefined(self.zombie_point_scalar)) { self.XPGot += 20; self thread giveFeedbackPoints("+20"); } else { self.XPGot+=10; self thread giveFeedbackPoints("+10"); } } } watchXpHeadShotGive() { while(true) { self waittill("headshot"); if(level.zombie_vars["zombie_point_scalar"] == 2 || isDefined(self.zombie_point_scalar)) { self.XPGot+=80; self thread giveFeedbackPoints("+80"); } else { self.XPGot+=40; self thread giveFeedbackPoints("+40"); } } } setObjectiveLog(text) { self.campaignHud["mission"] setText("Objective: "+text); } hudFade(alpha,time) { self fadeOverTime(time); self.alpha = alpha; wait time; } hudFadenDestroy(alpha,time,time2) { if(isDefined(time2)) wait time2; self hudFade(alpha,time); self destroy(); } divideColor(c1,c2,c3) { return(c1/255,c2/255,c3/255); } destroyAll(array) { if(!isDefined(array))return; keys = getArrayKeys(array); for(a=0;a<keys.size;a++) if(isDefined(array[keys[a]][0])) for(e=0;e<array[keys[a]].size;e++) array[keys[a]][e] destroy(); else array[keys[a]] destroy(); } getSavedVariable(dataName,table) { if(!isDefined(table)) return self getStat(int(tableLookup("mp/statstable.csv",0,dataName,1))); else return self getStat(int(tableLookup(table,1,dataName,0))); } campaignPlayerSettings() { self.xpNeeded = strTok("10;16;22;28;34;40;46;52;58;64;70;76;82;88;94;100;106;112;118;124;130;136;142;148;154;160;166;172;178;184;190;196;202;208;214;220;226;232;238;244;250;256;262;268;274;280;286;292;298;304;310;316;322;328;334;340;346;352;358;364;370;376;382;388;394;400",";"); self.prestigeLevel = self getSavedVariable("153"); self.rankLevel = self getSavedVariable("154"); self.XPGot = self getSavedVariable("hctwar_losses","mp/playerStatsTable.csv"); self.XPextra = self getSavedVariable("hckoth_losses","mp/playerStatsTable.csv"); self.XPBar = self getSavedVariable("155"); if(self getSavedVariable("250") != 1) { self setSavedVariable("152",1); self.prestigeLevel = 0; } if(self.XPBar == 0) self.XPBar = 1; self thread extinctionSave(); } extinctionSave() { self endon("disconnect"); while(true) { self setSavedVariable("153",self.prestigeLevel); self setSavedVariable("154",self.rankLevel); self setSavedVariable("hctwar_losses",self.XPGot,"mp/playerStatsTable.csv"); self setSavedVariable("hckoth_losses",self.XPextra,"mp/playerStatsTable.csv"); self setSavedVariable("155",self.XPBar); wait 1; } } setSavedVariable(dataName,val,table) { if(!isDefined(table)) self setStat(int(tableLookup("mp/statstable.csv",0,dataName,1)),int(val)); else self setStat(int(tableLookup(table,1,dataName,0)),int(val)); } [/CODE] [IMG]https://i.gyazo.com/0b10fee56c5f75fd0df9da3abb6f4da3.jpg[/IMG] [/QUOTE]
Name
Verification
Post reply
Forums
CabConModding
Short questions, quick answers
Updating Progress Bar
CabConModding is now on facebook! Check the latest Updates, the Site Status and much more now!
This site uses cookies to help personalise content, tailor your experience and to keep you logged in if you register.
By continuing to use this site, you are consenting to our use of cookies.
Accept
Learn more…
Top