Single Key team_select /bind
Well Done WeaponX!
Clever and useful. I'm making this a favorite in case I ever make a healer.
Found a problem with my bind_load_file commands, I'll have the fixed version up shortly.
Nice use of the binds and quite clever, indeed, setting the team size, etc.
Very slick. One of the best bind setups I've seen to date.
The new files are up at the same location as before: http://web.utk.edu/~cjones7/CoH/Select.zip
I tweaked a couple of things and have it set up such that the first press of 'C' will select the first available person in the team, and the first press of 'Shift+C' will select the last available person in the team.
This is so incredibly helpful! Thank you for your efforts! May your name be held up high with honor amongst the heroes of today and tomorrow!
Nilt, Mara: I'm glad that you all like it.
I did some pretty extensive testing of it tonight and it seemed to work for every possible situation. I was the eighth man in an 8 person party and tested all of the binds this way. I still want to provide a set that will install to another directory for ease of installation and use, but I don't know what directory people would rather use. Oh well, I'm gonna poke around with these some more tomorrow and see if there's anything else that I can add.
I have a new version up, you can get it from the same place: http://web.utk.edu/~cjones7/CoH/Select.zip
What's new<ul type="square">[*][Alt + Numpad0]: Pressing this combination will "unload" the team_select /bind. It's currently impossible to reset the keys to whatever they were prior to running my setup, so it sets all keys to their default commands.[*]Tilde: Pressing the Tilde key (` or ~) now cycles forwards through teammates with the exact same functionality of the 'C' key. The combination [Shift + Tilde] will NOT cycle backwards through teammates as I found it too cumbersome.[/list]Fixes
I caught a few more typos and fixed them. Hopefully I didn't introduce 10 more with the addition of the Tilde key...
Future Plans
After using the Tilde key implementation, I perfer it tenfold over using the 'C' key. I'm considering removing the 'C' key functionality by default, but adding a key combination that will enable it. I still want to release a version of this with a different installation directory because I pity anyone that wants to do so with this setup (245 files ).
Thanks for all the hard work.
Yes, please don't remove the C key completely. It will work much better for me than ~ with my setup.
I haven't had a chance to try this, but what happens if team size decreases due to a disconnect? Do you have to change party size before it will "roll over" back to 1, or will you just have to hit C once for each person that dropped until you respecify?
[url="http://tinyurl.com/4ylgy"]The Wanderers[/url] of Virtue
We farm fun!
[ QUOTE ]
Thanks for all the hard work.
Yes, please don't remove the C key completely. It will work much better for me than ~ with my setup.
[/ QUOTE ]
No problem, I find this bind extremely useful for my Empath. It's quite annoying to accomplish all of this with a massive /bind setup when it could be easily implemented as a slash command with minimal in-game code (assumption on my part). Now that you mention the ~ setup conflict/worry/whatever, I think that I'll make it such that you can toggle between just 'C', just '~', and both 'C' and '~'.
[ QUOTE ]
I haven't had a chance to try this, but what happens if team size decreases due to a disconnect? Do you have to change party size before it will "roll over" back to 1, or will you just have to hit C once for each person that dropped until you respecify?
[/ QUOTE ]
The latter of the two will occur. The same thing will happen if you specify the party size to be greater than the actual party size or if you leave the initial default setup of a party size of eight and have a smaller party. If you're in a party of 7, in the 5th position, and the 4th person drops out, you'll have to hit 'C' twice to go from the 3rd person to the 6th person since you can't target yourself. Also note that the 5th person is now left out since that's the slot that you used to occupy. If multiple people drop, it gets even worse, so stay on top of things with these binds or you're going to have problems. Another thing, if this person isn't replaced in the group, you'll have to hit 'C' twice to go from the 6th person in the group to the 1st person in the group since it's still trying to target the 7th person in the group.
Hi WeaponX,
Not to add more work for you, but could these files be made with a Visual Basic Program? I haven't used VB in a few years, but it seems to me that these files are so repetitive that you could make them with 2-3 nested FOR loops in VBasic.
You could have a simple interface that asked the user for their preferred key combos for cycling through the team. Then VB would crank out the files in the directory path of the user's choice, and voila. Certainly easier than you changing 245 files (egads!).
Something like this, but I haven't programmed in years, so the actual syntax is lacking, even if the basic algorithm is ok:
For Team_size = 1 to 8
For Position = 1 to Team_Size
Filename$="Heal"+String$(Team_size)+"-"+String$(Position)
Write(Filename$, bindline1here)
Write(Filename$, bindline2here)
Next Position
Next Team_Size
Anyway, if I was up to speed on VB these days, I'd help you out, but unfortunately I don't have the software, and would have to relearn it if I did. Thought you might profit from the idea though.
But even if it's unrealistic to make this VB program, you've made a great bind here, and the first that seems to take variables (group size and your position in the group) input by the user. A little ingenuity that is stretching the limits of binds.
Gnarly
Gnarly: Yeah, I'm sure that could be done. I could personally write a quick C/C++ implementation of this lightning fast -- but I don't handle programming in the Windows environment very well. Something tells me that distributing Linux binaries wouldn't be very well accepted here, though. The problem is that I've worked in Unix/Linux environments almost exclusively for the past six years. I don't even know where my old Visual Studio CDs are (or how dated they are).
If you're suggesting that I should just make something like this for myself, then I agree -- I'll probably write myself a nice little command line script to take a couple of inputs and generate them all for me once I have the functionality that I desire.
Hey WeaponX,
As you requested over in the Best Hover/Fly Bind Ever thread, I took a look at your binds. They seem pretty solid for what you are trying to do. I do have a suggestion, however:
/bind c "target_friend_next$$powexec_name BUBBLE"
/bind lshift+c "target_friend_prev$$powexec_name BUBBLE"
Where BUBBLE would be whatever the power name is for the Force Bubbles that Bubble-boys hand out. I use it on my Grav/Force Controller. It seems overly simplistic, but since I do most of my buffing inside Door Missions it works perfectly.
The benefit of this is that you also get any buffable pets. The down side is that you end up cycling through any other PCs that happen to be around.
I really wish that they had implemented the TARGET_TEAM_NEXT and TARGET_TEAM_PREV commands in this game, but it doesn't look like they did. Without them the way that you are currently doing it is the best you can do to stay within your team regardless of who is around.
[ QUOTE ]
Not to add more work for you, but could these files be made with a Visual Basic Program?
[/ QUOTE ]
Not that I'm an authority on VB or CoH's internal workings but I don't see how this'd work unless it's a completely separate app running in the background that somehow reworks the files on the fly. CoH, as I understand it, is designed specifically to prevent much in the way of scripting. Rebinding keys in this manner works but, since the devs want to prevennt unattended macroing there's just no way to force CoH to recognize any programming or scripting that I'm aware of.
Sure, this'd be easier but unfortunately the unattended macroing in other MMOs have killed this as a feature in CoH.
EDIT: Quote removed because the lack of line returns was making my eyes bleed.
Haha, that request was just a tounge and cheek jest at your awesome contribution to the Hover/Fly /bind setup. In any event, I appreciate the time and effort that you put into looking over my binds. If there's one thing I truly appreciate amidst all the processes I follow in my professional life, it's a good peer review.
More on topic... When I cast Clear Mind with my Empath, I use the exact same bind format that you mentioned to make sure that I hit everyone possible. If I really wanted a headache, I could implement that through a system similar to what I posted here. Actually, I think that I could set this up rather easily for the public if I could find those Visual Studio CDs when I get home today.
Update
I fixed a few more minor typos, and I believe that everything is now fully functional.
Future Changes<ul type="square">[*]I'm going to implement a toggle key to switch between having '~', 'C', or both keys cycle through teammates soon.[*]I've begun work on a visual basic program that will generate the binds given a directory and key(s) to use.[/list]
[ QUOTE ]
[ QUOTE ]
Not to add more work for you, but could these files be made with a Visual Basic Program?
[/ QUOTE ]
Not that I'm an authority on VB or CoH's internal workings but I don't see how this'd work unless it's a completely separate app running in the background that somehow reworks the files on the fly. CoH, as I understand it, is designed specifically to prevent much in the way of scripting. Rebinding keys in this manner works but, since the devs want to prevennt unattended macroing there's just no way to force CoH to recognize any programming or scripting that I'm aware of.
Sure, this'd be easier but unfortunately the unattended macroing in other MMOs have killed this as a feature in CoH.
[/ QUOTE ]
The point of the VB program wasn't to do things on the fly, but rather to generate the horde of files required by this bind rather than require them to be entered by hand.
Oh, and WeaponX, I'd recommend skipping VB and just do it in Perl or Java. With something this simple the resulting code would run equally well in Linux or Windows.
And another question, did you see the example binds I did for this same problem? I'm just curious, you've obviously taken it much further than I did with my quick little example.
One thing I did differently was to use the arrow keys, right for what amounts to /target_team_next, left for _prev. Plus I made up go to the last member of the team, and down go to the first. I did have the team size setting, but not the position in team. Not having a healer at the time, I never actually used my binds, and my example only went up to a team size of 4.
Grotus: I stumbled across my Visual Studio CDs the other day, so I thought it would be a good learning practice for me to do this in VB. In fact, it's almost done already -- I'm just debugging and making it much more robust. I considered Perl and Java, but when I thought about it VB seemed like it would be the best fit for this. I figure that anyone who is playing CoH almost undoubtedly has a Windows box, and I can make a decent GUI for it in no time.
Cool! This will make team select MUCH easier. Added to my favorties!
I have a preliminary build, but I'm not going to distribute anything until I have fully tested everything and made sure that it generates working binds. Hopefully I'll be able to post the working installer either tomorrow or shortly thereafter. Working on this almost makes me want to write my own extremely robust keybinding program, but we'll see how this goes over with you all first...
Thank you for all your efforts, Weap0nX. The bind works great and makes force fields so much easier to distribute. I'm glad I stumbled across this thread.
Update
- I'm irked. My pre-order account could not be activated over top of my beta account, and as such my registration code for the live game was naturally applied to my pre-order account. Even though my master PlayNC account has both my inactive beta account and my active live account, my beta forum account was disabled without warning. I'm fine with the Nazi regime mandating an active account to post here, but why must I be punished for either their oversight or simply poor implementation of the pre-order process? Granted, their stellar coding efforts also left me able to "fix" my forum cookie such that I could at least change my display name on my beta account so that I could create this account under the same name. As always, thank you for the wonderful communication concerning matters at hand.
- I'm still irked. I logged into the new update (that ironically went live the day after the major monthly billing deadline) last night ready to explore some of the new sugar-coated cosmetic "content" that I've been longing for . . . only to find myself 150k in debt at level 40. Thirty seconds later, my first break from City of Heroes officially began.
- Oh yeah, the team_select cycle bind generator that I've been working on... I've been working rather diligently on error checking and modularizing my code so that I can release the source and the built executable to the public. A couple of minor problems along the way have caused me to re-think my approach to the program and there's a ton of functionality I didn't expect already in it. I'm heading out of town tomorrow afternoon for the holiday weekend, but I'm really optomistic that I can get at least some code up for people to analyze/run/steal/whatever. I'm leery to do a public release of the executable until I can test it more extensively myself, so time will tell whether or not I can get this out by Thursday afternoon as well.
Really bad timing here, but I've got an initial release of my team_select generator ready to go. You can grab it from here: http://www.the-kgb.org/Select.exe
You can grab the VB6.0 source from here: http://www.the-kgb.org/BasicSelect.rar
I hope that I've beaten the error checking into the ground and you all won't find a way to break it, but as a word of warning don't put anything important in the "Select Backup" folder that it generates if you choose to back things up. If you choose to back up again at a later date, it simply wipes the directory and starts over (I was having too many issues simply trying to overwrite it).
The program should be pretty self explanatory, but here's a brief overview of how to ues it:<ul type="square">[*]Installation Directory: Generally you'll want to specify the FULL path to the directory that you want to install to. If you don't specify a drive, I'm not real sure where VB sticks it.
[*]Forward, Backward Cycle Key(s): List any number of keys that you want for both features with each key separated at least a comma and any number of spaces. For example, the default forward cycle keys are "C, TILDE" You could choose to have 5 cycle keys if your heart desires by doing something like this: "C, ALT+SPACE, LBUTTON, BUTTON4, SHIFT+RBUTTON" The choice is yours.
[*]Once you've installed: call /bind_load_file in game to load the "Init.txt" file generated in the Select directory that you chose to install to. For example, the default directory is "C:\Games\CoH\Binds\" so you will need to type the following in-game: "/bind_load_file C:\Games\CoH\Binds\Select\Init.txt"
[*]There are many more useful features I've been working on that simply aren't ready to be released in the state they're in, so this is a dumbed down and not very pretty working version of the basics. Let me know if there are any issues/errors and as always I welcome feedback. Enjoy![/list]EDIT: I don't know what additional files you will need to run this as I've never publicy released any VB code that I've written. Let me know if there are any files it requires that you don't have and I'll investigate further. Of course, somebody could always simply post what they think will be needed...
The VB program works superbly. I used it last week so I could make a set of binds for MOUSE5, and it functions as advertised.
One thing to remember (which I forgot, and which isn't specific to this program) is that you cannot have a path with spaces in it, so no using 'Program Files' anywhere in the path, or the bind_load_file will treat it as the end of one argument and the beginning of another... so it will cack, as it only expects one. Other than that self-induced annoyance, I am VERY grateful to you for creating this and making it available to all of us. Many thanks, and five stars.
In the past, I've managed to get around this problem by encapsulating the path within quotations. For instance, I have binds specific to a character that I will load by name. Haven't tested out using $self yet, rather than manually typing it, but this works:
/bind_load_file "C:\Program Files\City of Heroes\binds\Name of Bind.txt"
If you stick that within another bind, I'm not sure if it'll work. What probably happens is the parser hits the " before the path and reads it as the end of the bind rather than a nested ". Is there a way to escape the " so that it's recorded in the bind as a " that can then be interpreted later?
Example: /bind space "say Up we go!$$bind_load_file "C:\path\random sayings.txt""
Overview
----------
This /bind setup allows you to use one key to target only your teammates by cycling through them. The unique thing about this setup is that you can specify the number of people in your team (2-8) and your position in the team (1-8) to take yourself out of the targeting loop. This cuts out the need to press the button twice when the cycle reaches your position in the team.
Download
----------
You can download the files you will need from here: http://web.utk.edu/~cjones7/CoH/Select.zip
Installation
------------
This is probably the annoying part. I'm quite anal about the directory structure I use, so this version of the bind requires you to unzip the "Select" folder and all its subfolders into your "C:\Games\CoH\Binds\" Folder. You're going to have to manually create those folders if you don't already have them to use this version of the bind setup (more on future versions later).
Once you have extracted the files to the appropriate location, you need to load the setup file through the in-game GUI by typing "/bind_load_file C:\Games\CoH\Binds\Select\Select.txt" in the chat window.
Usage
------
When you load the binds, the following keys will be bound to these defaults:<ul type="square">[*][C]: Cycles forwards through your teammates. The default party size is 8, and it cycles through all 8 players including your avatar.[*][Shift + C]: Cycles backwards through your teammates. The default party size is 8, and it cycles through all 8 players including your avatar.[*][Ctrl + Numpad0]: Reloads the setup file located at "C:\Games\CoH\Binds\Select\Select.txt".[*][Ctrl + Numpad2]: Specifies your party size to be 2.[*][Ctrl + Numpad3]: Specifies your party size to be 3.[*][Ctrl + Numpad4]: Specifies your party size to be 4.[*][Ctrl + Numpad5]: Specifies your party size to be 5.[*][Ctrl + Numpad6]: Specifies your party size to be 6.[*][Ctrl + Numpad7]: Specifies your party size to be 7.[*][Ctrl + Numpad8]: Specifies your party size to be 8.[/list]Once you have selected your team size, the following keys are re-bound with the noted improved functionality:<ul type="square">[*][C]: Cycles forwards through your teammates. The party size is now the size you specified, but it still cycles through all players in the team including your avatar.[*][Shift + C]: Cycles backwards through your teammates. The party size is now the size you specified, but it still cycles through all players in the team including your avatar.[/list]The versatility of this setup comes into play after you have specified your party size with [Ctrl+Numpad(2-8)]. So, once you have input the size of your team, you should determine your position in the team. When you have your team panel open, the player at the top of the list is the team's leader and is considered to be in Position 1 for the purpose of these binds. The player directly below the team leader is considered to be in Position 2. Following this trend, the positions increment as you step down the list, to a maximum position of 8, which is the player at the bottom of the list for an eight player team. Once you have used this for a while, this will become easy to distinguish at a glance.
To specify your position in your team:<ul type="square">[*][Alt + Numpad1]: Selects the First position in a team.[*][Alt + Numpad2]: Selects the Second position in a team.[*][Alt + Numpad3]: Selects the Third position in a team.[*][Alt + Numpad4]: Selects the Fourth position in a team.[*][Alt + Numpad5]: Selects the Fifth position in a team.[*][Alt + Numpad6]: Selects the Sixth position in a team.[*][Alt + Numpad7]: Selects the Seventh position in a team.[*][Alt + Numpad8]: Selects the Eighth position in a team.[/list]If you specify your group size to be under eight, only the positions up to your maximum group size can be selected. Once you have selected your position, the following keys are re-bound with noted improved functionality:<ul type="square">[*][C]: Cycles forwards through your teammates. The party size is still the one you specified earlier, but it now cycles through other players on your team only -- it excludes your avatar.[*][Shift + C]: Cycles backwards through your teammates. The party size is still the one you specified earlier, but it now cycles through other players on your team only -- it excludes your avatar.[/list]Note that you can re-specify the size of your team at any time, but when you do so you will also have to re-specify your position in the group. I figured this was the easiest way to set it up since there's no way to know whether somebody abover you or below you in the list would be the cause for the change in group size.
Future Versions
-------------
I'm willing to bet that most people would prefer to install this somewhere other than "C:\Games\CoH\Binds\". I wish that the whole community could come up with a standard to use so that we never had this issue again, but we haven't yet -- so please give me some feedback for what directory you would prefer this to install to. I'm sure there are at least a few typos I need to catch with this many files involved, so if you find something that isn't working properly, please let me know.
Also, I'm not exactly happy with using the 'C' key for this bind. I'm considering using the tilde key (~) right above tab in addition to 'C' since it places your hand right next to the number keys. Hopefully this will save time between targetting and casting.