Kreedz Climbing

Kreedz Climbing

Not enough ratings
How to implement more gamemodes in one map
By /_-ӉλƦđƇθɾΣɛΣ!??
   
Award
Favorite
Favorited
Unfavorite
Intro
Hello fellow mapper, first of all, you can download files for this map here[www.dropbox.com] extract it, put .vmf file into your Kreedz Climbing/mapsrc or Kreedz Climbing/kz/mapsrc folder and load it in hammer.
As you can see, some materials are missing, that's why I attached them into this super cool .rar file, be so kind and put them into your kz/hammer_resources folder, then reload hammer, many thanks!
Now you can see what the ♥♥♥♥ is going on, this maps has three rooms, smallest one on the left is spawn room, player gets to select if he wants to play easy or hard version of the map and there goes our first lesson
1. First Room Yo
this room contains following items:
- func_illusionary brush entities which tells player if it's easy or hard course
- light entities so you can actually see them
- filter_multiplayer_kzmod - most useful entity of them all
- func_button entity which will trigger whatever you want
- info_player_start - spawn position
- trigger_teleport which will teleport player to next room
- trigger_player_movement_attributes named Reset Trigger which will reset all attributes when player enters that room (this prevents mode override)

Let's explain how these fabulous filters works, they have few inputs which can be called with that button, most useful for now are AddAllowedPlayer and RemoveAllowedPlayer
AddAllowedPlayer basicaly adds player who presses that button into list of players who are allowed to surpass filter, imagine you wanna get wasted in da club but there is this bouncer, no matter how persuasive you are, he won't let you get those girls inside until you throw your AddAllowedPlayer player pass to his face.
RemoveAllowedPlayer works exactly opposite, you try too hard on that one hot girl so she calls bouncer to kick your ass out of there, gotta convince him again!

TestActivator allows you to fire Outputs in that filter, see filter>outputs>add new> and pick either output OnPass or OnFail>do whatever you want, basicaly if player is enabled and you put new output into that filter>OnPass>ambient_generic sound name>PlaySound, player will hear some sound if they have enabled that filter, biut you don't really need this most of the time, only for more complex useless ♥♥♥♥.

Any questions? No? Great! Let's get our asses on those buttons.
In this room there are two buttons, one is for easy course suitable for nubs, other one is for menko and the gang, let's get your glasses and take a closer look what they do.







As you can see in their outputs, they're up to something, let's describe this mastermind process step-by-step
OnIn>f_*>RemoveAllowedPlayer - this is initial filter reset (all my filters are named f_whatever, this star - * - means that everything which name starts with f_ will Remove player, so every filter on this map will be removed, so you can safely enable whatever the ♥♥♥♥ you want)
OnIn>f_ez>AddAllowedPlayer - this one enables filter for easy course which I named f_ez, simple, huh?
OnIn>f_brush_ez>AddAllowedPlayer - this brush entity called func_brush_kzmod, basicaly you create a brush, hit ctrl+T and set it as func_brush_kzmod, it's brush which behaves like filter entity so you can either enable or disable it for each player, so you can have easy blocks for this course.
OnIn>f_TPtoNextStage>AddAllowedPlayer - this is filter which is attached to trigger_teleport in this room, after filters are set, player will be teleported to next room because he is whitelisted in this filter which is attached to teleport
OnIn>f_TPtoNextStage>RemoveAllowedPlayer - remove player from this filter after small delay or otherwise when you reset your map so you want to pick other course, that teleport will still be enabled and you will instantly TP to second room which isn't really what you want.

Teleport trigger with f_TPtoNextStage filter:







Mode reset trigger inside that very same room:







BOOM baby, that was first room, pretty simple!
2. Second Room - kinda same as first room
this room has same entities as first room, you're selecting what mode you wanna play here
Every button works on same logic, let's explain one of them, check this awesome screenshot:











let's get through those outputs so you know what's going on
- OnIn>f_SurfAutoBhopMode>AddAllowedPlayer - this one whitelists player for filter which is attached to trigger_player_movement_attributes trigger which has these flags:










- OnIn>f_reset>AddAllowedPlayer - this is filter attached to trigger_player_movement_attributes trigger which has no flags checked, this prevents player to play 10aa course with autobhop 100aa because of your mode from previous course gets reset when this output is fired.
- OnIn>f_NoBhopTrigger>AddAllowedPlayer - this is trigger in next room on start - trigger_jumpcontrol with checked No Bhop and Clients flag so you can't prespeed with bhopmode on (NOTE - you don't need to enable this filter on 10aa or GOKZ courses because you can't really prespeed, that's why this filter isn't in their outputs)

- OnIn>f_reset>RemoveAllowedPlayer>delay 0.03 - once your mode was reset and you want to set a new one, you have to disable reset filter first!
- OnIn>f_TPtoNextStage1>AddAllowedPlayer - filter attached to teleport to start of the map
- OnIn>f_TPtoNextStage1>RemoveAllowedPlayer - let's disable this after you're teleported

Pretty cool so far huh? Now let's see what how you can actually start your timer with all these gathered filters, onto final room baby!
3. Map room
This one has some new entities baby!
- trigger_jumpcontrol - for bhopmode courses to prevent prespeeding
- point_climbtimer - your actual course
- filter_multi - one filter to rule them all, gonna talk about this one later.
- trigger_teleport in front of every trigger_multiple to start your course timer (without this dude, players would be able to start course, gain some speed and just turn around, jump through trigger to reset their course and rush with gathered speed to the end, not cool!)

Note: if player hits that teleport, we fire output OnStartTouch>f_teleport_AntiPrespeed>RemoveAllowedPlayer so teleport is disabled when you already tried to cheat once.
- trigger_multiple under TP destination to reset antiPrespeed teleport, see screenshot










- func_brush_kzmod - one is named f_brush_ez and second is named f_brush_h - which one is enabled depends on two buttons in first room, if you press easy button, output with OnIn>f_brush_ez>AddAllowedPlayer is fired and this brush is enabled for you!
- env_cubemap - point entity for simulated reflections on water, to get them write in console building_cubemaps 1 and buildcubemaps, then reload game
- trigger_multiple to stop your time when you finish course, check screenshot for output












Oookay, let's look under table and see how it works here (NOTE: if you're confused as ♥♥♥♥ to see which entity belongs to other, visit VisGroups on your right and select User tab, then uncheck everything but Surf Auto Bhop Mode Stuff and AntiPrespeed Triggers, don't forget to re-check them before compiling your map or ♥♥♥♥ won't work 'cause it's disabled!)

Let's begin with point_climbtimer, you need to check three parameters, Name, Course Name and Elite Status ('cause you wanna be that elite climber am I right?) - also for two/three/four man course check Multiplayer Mode

So we named our precious timer to timer_SurfAutoBhopMode_ez and course has name Surf AutoBhop mode easy, that's all here!

Onto more difficult stuff, filter_multi!
So, filter_multi works as one filter which will Allow you if every filter in his properties is allowed for you (you can edit this behaviour in Logic Type), it's like when you wanna go to pub with bois but your wife won't let you because you haven't done the dishes and let your dog to take a piss outside, so you have to do all these things to gain access to filter_multi called pub!
Our filter_multi called f_SurfAutoBhopMode_ez has two filter under his parenthood, one is f_SurfAutoBhopMode (your mode) and other is f_ez (difficulty of your course)
if you have selected these two modes before, it's enabled for you and we can rush to our final stage:
- trigger_multiple which will start our timer and it's right here!
Let's check his outputs:










OnStartTouch>timer_SurfAutoBhopMode_ez>StartTimer - this one starts our timer for course!
OnStartTouch>f_teleport_AntiPrespeed>RemoveAllowedPlayer - this one is filter for trigger_teleport which is in front of this trigger, which prevnets player to go back, this output disables him so you won't get instantly teleported if it's enabled







OnStartTouch>f_teleport_AntiPrespeed>AddAllowedPlayer>delay 0.30 - When you start your course, teleport after 0.30s delay will be enabled so you can't be haxing bastard and you can't return back! You can put higher delay but I don't recommend using smaller delay or you might run straight to teleport!

That's it! Your timer is running and you can FINALLY start doing some super times!
3. func_brush_kzmod and that's it!
For our easy course, func_brush_kzmod with name f_brush_ez will be enabled, as you can see on screenshot bellow, it has correct name and it is solid.











On top of it is trigger_bhop_teleport with filter f_ez, teleport destination set to start and you can bhop on it only once.











Then there is this LJ part which is made from two blocks, one is world brush and closest one is func_brush_kzmod for shortened LJ distance











If you're running hard course, these two brushes are disabled and you'll see only this:











So that was it, is there still someone left here? If yes, thanks for reading, if something was still confusing, be so kind and ♥♥♥♥ o...ask anything you want! Also if you'll use my gamemodes signs, don't forget to mention they're mine! Cya around!
1 Comments
GoldenNinja 25 May, 2019 @ 1:35pm 
Cool guide!