Jump to content

Revamp infected class selection


paroxysm

Recommended Posts

GC Alumni
(edited)

Eh--having a menu that people are using constantly is just one more thing that can screw up map voting, kick voting, etc. I wouldn't mind changing it to MWUP and MWDOWN cycling through, but that seems like a marginal improvement which may not be worth forcing all players to get used to the change.

 

*edit* spelling

Edited by Biggs
Link to comment
Share on other sites

Oh, you can add new keys they can press without removing the old ones, letting people use the classic or the new method - without adding menus. Heck, you could even add !hunter !smoker !boomer etc., or just !class hunter !class smoker , etc., for instant swaps. gets rid of the pesky menus.

Link to comment
Share on other sites

The point is the class selection needs to be a whole lot faster, do that for me and I'm sold.

Biggs you can easily add code logic that prevents the class selection menu from taking precedence over vote menus

Link to comment
Share on other sites

Sky
Member
(edited)

Well, no, it's not easy to add that kind of logic, because they're separate plugins.

To do it between multiple plugins, he'd have to create natives that can be called by any plugin, and a native for each plugin that contains a menu that could possibly override the other, and then he'd have to give them a priority either in convars or directly in code; not easy at all, unless you are extremely experienced at what you're doing, and it's far beyond the abilities of most scripters.

 

There's no real reason to have a menu pop up for class selection, imho. Mousewheel up and down would be ample speed to let players cycle between special infected, and you just use a database to allow players to set the speed at which they want cycling to occur, so that each player has a speed that is comfortable to them. That would be the best way.

 

Edit: Should jackie want to implement a rotation like this, I'll write and send him the source, but there's just really no need to have menus built in. Again, though, if they're using a plugin that skips SI if a certain limit is reached, I'd need to know, so I can track it in my code.

Edited by Sky
Link to comment
Share on other sites

Sky, that problem just sounds like a name problem which is easily overcome with name spacing your method names.

Your approach also sounds favorable and since it has already been done and you have access to it, it's just a matter of loading it. I would like to see it happen.

Link to comment
Share on other sites

In an attempt to address this, without adding anything new for the noobies to figure out, the class switch delay is now reduced to .2 seconds. You should be able to cycle through faster. Also, you can now use your melee key to go in reverse.

Link to comment
Share on other sites

@paro: scripting is a bit different... Not as black and white as lower level languages such as C++.

 

 

I sat back and tried really hard to consider when it would actually make sense to have a menu for players to select an SI from.

A menu that isn't forced on players, and is optional to open.

I found a reason, an exceptionally good reason to have a menu. And, generally, speaking, it's for the players who want to

pre-select the SI they become when they enter ghost mode. Players will be able to select from ANY of the six standard

special infected, when selecting after death, and prior to entering ghost mode, even if the SI they are trying to select currently

is at its maximum player limit. This is because a player may die, freeing up a spot using that SI, so I would want players to be able

to queue for it.

 

However, when a player enters ghost mode, if the SI they queued for is not available, they'll be bounced to the start of the rotation

and be notified with a message that the SI they were attempting to spawn as was not available.

 

Some things to know:

 

1.) The menu will show the number of players as an SI, and that class' limit, whether viewing it in ghost mode or not.

2.) Players can queue for what SI they want next, even if they're currently alive*

 

*Queue simply means it will attempt to assign you to that special infected the next time you enter ghost mode.

 

 

Also, if a player is running around in ghost mode as a hunter, that player is taking up a hunter spot. I know a lot of SI limit plugins don't

count players until they spawn, and just shift any player that is currently that class to something else, thus fubaring players who hit their

attack key late, and are spawned as a class they don't want. My goal here, honestly, is to prevent this. If a player changes class in ghost

it will reflect that change on the class restriction menu.

 

 

However, if you're in ghost mode and want to use the menu to select your special infected, you can do that as well, or you can simply

use the following commands/buttons:

 

 

mWheelUp - Cycles forwards through the special infected list. It will skip any special infected that has reached its limit.

mWheelDown - Cycles backwards through the special infected list. "..."

 

!class <classname> - Attempt to change your class to the specified class. This is for users who want to bind their favourite classes, or

all of them, if you prefer to hit a bind to select your class.

!crm - Opens the class menu, for queueing or class switching.

 

Ex: !class hunter

 

 

So, again, this plugin won't force a menu up on players, to prevent problems with other plugins, such as active votes, and also allows

players to use a simple command to change their special infected. But, it also supports the classic methods of scrolling manually through

the available special infected.

 

 

 

When it's done, I'll post it on alliedmods and add a link to this post. Again, I don't arrive back to the dorm until tomorrow evening, so you

should expect to see the plugin tomorrow night or the following day.

 

 

 

 

I hope this will make everyone happy ;)

Link to comment
Share on other sites

Sky, I think you're over thinking why I was request this revamp. It's not because I want to preselect a class that I want to ghost as, it's actually the opposite, I want to be able to change the class I am on a whim very quickly. If I know there's a situation where that I'm a charger, and something changes such that a jocky would be more beneficial to spawn as, I want to be able to switch to a jockey as fast as possible.

If I can just press one key to become a jockey( ofc it'll depend on how many jockeys are currently spawned but that's why there are si limit increases), I think, in general, that is tremendously faster than scrolling across each class. Because, naturally, when I'm scrolling, I have to monitor which class I am to make sure I don't jump over it.

This becomes a bigger problem when you're having slight lagg where it takes like, say half a sec for the server to switch to the next class you scrolled to. I won't know what class I have scrolled to until that timespan is over. However, if I know what class I need and what I need to press to get it, it's just simply a matter of pressing a button and waiting server to update, but since I already know I am going to switch to a jockey, I don't have to repeat this process for every class I scroll to that's not the one I wanted.

 

It may sound strange to ask for such a feature, but when the server has those competitive rounds, there a ton of those situations where you think you need this class, but something changes and you need another class quickly to seize the opportunity.

Link to comment
Share on other sites

Member
(edited)

Yeah, in theory it sounds good, but once I got online and tested it and rclicking is not natural, it's very very odd to incorporate it, but atleast better than nothing lol.

Honestly, if you'd try it in game you'll see what I mean, ultimately pressing a key for it is much faster. I wish I could bind buttons to accomplish this, but you can't add logic to unbind those keys when you're playing a survivor.

As a workaround the menu writing jackie, but how you implement bindable commands for each standard SI class, then make it so that when you invoke that command as a survivor it does nothing( and doesn't notify you), that way I can bind append those commands to my standard 1-6 keys. They retain their survivor functionality and work as intended in SI, but w/o that menu feeding you si count stats, you'll pretty much have to guess whether the class you want is available or not; you could make those commands spammable that way you can just spam it until you get the class.

 

EDIT: Regarding your loathing towards writing menus, I'm sure there's a plugin out there that implements the algorithm, just import, test, profit??

Edited by paroxysm
Link to comment
Share on other sites

you are not understsnding... we cant make commands thw will perform a custom function as infected while also performing the stsndard function as survivor and plugins cannot unbind keys. if you want a key to perform different functions as si or srvivor, you need to creste separate config filee and execute them each round and that is localized. if you dont know how to do that jst ask and someone will probably assist you. the rotation is always the same. 123456 and is listed above. if you know a class is at its limit, you also know which one will be next in the rotation and there really are no surprises. im not sure why you are using programming terms thst you dont understsnd, either. it makes our ability to help harder.

you need to create separate config files for bindings if you want to use the same keys to perform different functions for each team or simply bind a different set of keys. this isnt something s plugin will do for you and honestly isnt trivial. the plugin ve proposed is the closest youll come but honestly what jackie is alresdy using sounds optimal. if he used a panel, it would have to be optional to prevent overlaying active vote menus.

though my propos provides everything that would provide coversge for your grievsnces with the current system, but since you oddly feel it is not what you are looking for, imagine using the current system or writing your own will be best.

Link to comment
Share on other sites

It may sound strange to ask for such a feature, but when the server has those competitive rounds, there a ton of those situations where you think you need this class, but something changes and you need another class quickly to seize the opportunity.

 

as long as you're going into competitive rounds and required a specific class, what about positioning? sometimes i feel like i need to be a hunter up top somewhere but by the time i ghost jump somewhere... too late, everyone's gone. positioning is just as important as selecting the correct class quickly, but i consider both of those delays as part of the competitive process. slight delays and missed opportunities, yes, but it's not like the SI are under-powered and unable to handle the survivors.

Link to comment
Share on other sites

Yeah, giving the opportunity to be placed in a specific spot immediately to have the advantage kinda takes away from the whole "trying" aspect of the game. We already make it ten times easier with the ghost pounce, but you need those windows of missed opportunities to keep the survivors still able to win. Could you imagine this server without ghost pounce? Climbing ladders? UGH

Link to comment
Share on other sites

oh, gawd... ghost pounce. just use fly in ghost mode. ten times easier :o)

I, personally, don't see anything wrong with giving the special infected a greater advantage over the survivors.

Remember, the Infected are supposed to have an advantage over the survivor team. I feel that the thought

going through the survivors mind should be "We're going to die, but when?" it's a lot more exciting than the

thought of "Yeah, we're going to make it every time, bleh."

 

Actually, though, I like the idea of letting you save that wicked spot that you've found, if, say, you're playing

around and find a spot, so that you can teleport there in ghost mode - a one time deal, though. But, that's

because I enjoy (as a survivor) having to fight for my life, and that way, even if one team is stacked, the

infected usually stand a chance with those advantages.

 

I think the trick behind teleporting to a spot lays in the initial ability to get to that spot in the first place, without

interrupting the regular game. Obviously, a player who spends time trying to figure out how to get to a spot on

the map, instead of helping his/her team attack the survivors is going to get kicked pretty fast (unless it's a

contributing member, I guess) but I still don't think it's necessarily a bad idea. I say this because, often times

you can get placed in a really terrible spot, where ghost fly or ghost jump won't really benefit you.

 

Now, granted, it's just icing on the cake, but if Infected players were able to get to pounce locations and other

positions faster, I think there would be even more tense moments for the survivors, a lot more action, and

hopefully, a lot more fun. That, and the survivors wouldn't be able to breeze on through. It would give new

players the ability to do a lot of good early on, while giving experienced players the ability to highly excel.

Everyone wins. Then again, though, there is that possibility that, in the case of an infected team extremely

stacked, and the survivor team not so much, that they'd get crushed, but that's why you use something

like manager to ensure that teams are always as balanced as possible.

 

 

I hate this macbook pro.

 

 

pz

Link to comment
Share on other sites

For the love of god, you completely misunderstood what I meant with bindable command and claim that I don't understand.

For example, implement a command say, sm_jockey that, IF you're an SI ghost, will transform you to a ghost jockey provided the jockey class limit isn't reached.

The command will also have logic such that IF you invoke it as a SURVIVOR, it does nothing( ie. no op). That way I can bind say, key 6 on my key to perform both slot6 and sm_jockey( ie. bind "6" "slot6;sm_jockey" ) that will both retain it's survivor functionality since slot6 does nothing as SI and will transform me into a jockey when i'm a ghost. Then implement such a method for each standard SI class.

You avoid writing a menu and the most important benefit of the algorithm is satisfied, win win. Understand?

Link to comment
Share on other sites

Member
(edited)

Now that makes sense, just one command that's robust, even better, now it needs to be in the form of 'sm_class' such that it's not typed to the chat everytime you use it and won't trigger the spam guard.

It also needs to ignore any invocations as a survivor to make it even more robust, Jackie, I can settle for this.

Edited by paroxysm
Link to comment
Share on other sites

bind 6 "impulse 6;class jockey" --> isn't advertised to chat.

 

In sourcemod, using the / command in chat will suppress the message from chat as well, so if in chat i type, /class jockey , no one will see it.

There's no need to use sm_ in front of commands.

 

on the command arg, you simply check if (GetClientTeam(client) != 3) { return; }

Link to comment
Share on other sites

Member
(edited)

I maybe mistaking the '/class jockey' form with the '!class jockey' but don't both of them trigger spam protection? I know you can spam the 'sm_' form unless a spam protection logic is placed server side.

 

EDIT: This approach is about the closest you can to switching to a specific SI w/ a key bind without writing a menu to do it, sounds reasonable Jackie? OFC, leave the old algorithm of class selection in place to make it backwards compatible, that way players who prefer this new method can use it while others can remain using the old form.

Edited by paroxysm
Link to comment
Share on other sites

The way source works, if you leave the source config as default, which GC most likely has is...

 

 

IN CHAT:

 

! trigger commands are displayed publicly.

/ trigger commands are not displayed.

command in console is not displayed.

 

there's no reason to use sm_ as it doesn't do anything different.

 

But, again, I played with the script he's using yesterday and it felt fine to me.

Link to comment
Share on other sites

Member
(edited)

The current hud only shows the current class limit and maximum class limit achievable, not current class count( ie current players running around as a hunter or a jockey)

 

EDIT: Sky, I've played on this server for a very long time, I wouldn't be requesting this feature if I didn't feel it necessary to augment SI playing capabilities, I don't know, maybe I'm just too strategic when it comes to choosing an SI class instead of spawning as whatever I ghost as, some people actually do the latter.

Edited by paroxysm
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...