SQCGen is the most powerful and flexible quickchat script for Starsiege; supporting an unlimited number of chats, organized your way, with the bindings you select.
SQCGen replaces the stock quickchat.cs script with one that is much more capable. Instead of binding just one chat per key like the stock mechanism does, with SQCGen you type a quickchat ID, and then a key specifying who to send it to.
Warning: Save a copy of your current scripts/quickchat.cs file before you proceed.
Exit Starsiege. Navigate to the folder where Starsiege is installed, usually C:/Dynamix/Starsiege. Unzip the contents of sqcgen40.zip into a new subfolder in your Starsiege folder, for example C:/Dynamix/Starsiege/SQCGen. To get started quickly the simplest way is to replace your current scripts/quickchat.cs file with SQCGen/quickchat.cs. At a minimum you'll need to read the Bindings sections below, and perhaps edit quickchat.cs if you want to customize your bindings. Print out MapFKeys.txt (or MapNumpad.txt if you use the numpad binding scheme) for a handy list of the default chats. For beginners, that's it, you're done. Advanced users may be interested in Customization.
To uninstall just delete the SQCGen folder and restore your original scripts/quickchat.cs. You did save a copy didn't you?
The following macrochats are also available. Check MapFKeys.txt (or MapNumpad.txt if you use the numpad binding scheme) or the online Help for the quickchat IDs. These macrochats can be directed to any recipient just like ordinary quickchats.
* Also drops a navpoint on your Target (or Select) which will automatically track them for up to 30 seconds.
Be advised: the Function Key Binding replaces the game's normal behavior for Shift-F1, which is important for Starsiege's single player mode. The Numeric Keypad Binding replaces several of the game's normal multiplayer bindings. If either of these schemes conflict with binds you already use you can customize them. To change the bindings you must edit quickchat.cs, or edit SQCGen.cs and regenerate quickchat.cs as described below under Customization.
This is the default binding scheme. It is a natural extension of both the original game's and SQCGen v2's schemes. The first 9 quickchats are mapped to Ctrl-F1 through Ctrl-F9, the next 9 are Shift-F2 Ctrl-F1 through Shift-F2 Ctrl-F9, Shift-2 Shift-F1 Ctrl-F1 through Shift-F2 Shift-F1 Ctrl-F9 are the 82nd through 91st quickchats, etc. The recipient for your messages starts as Everybody. You select it for all subsequent quickchats by typing:
This binding scheme is easy to use. You just type in the number of the quickchat and press one of the following keys to specify the recipient(s):
For example you type Numpad5 Numpad6 Numpad1 Numpad+ to send quickchat 561 to all your teammates. Numpad- clears any partially entered number. To use this binding scheme you must edit quickchat.cs (advanced users edit SQCGen.cs) and change the line near the top that says $qcNumpad=0; to say $qcNumpad=1;.
Real quickchat fanatics will want to do some customization - either to rearrange their quickchats or to add custom tauntpacks. SQCGen makes this easy. All you have to do is edit a text file containing a list of quickchats, then drag the file onto SQCGen.exe and drop it. A black DOS window will briefly appear and then go away. Abracadabra! SQCGen.exe has just taken your list and merged it with with a copy of SQCGen.cs to generate a new scripts/quickchat.cs.
Note: the SQCGen folder MUST be under the Starsiege folder for SQCGen.exe to work properly. You must exit and restart Starsiege in order for any changes to quickchat.cs to take effect. Use Notepad or Wordpad to edit your quickchat list. If you use Wordpad make sure to save as type Text Document.
The quickchat.cs file included with SQCGen was generated from quickchat.txt, which contains a pretty much complete list of the game's stock quickchats plus a handful of special "macrochats". To make your own list start with a copy of quickchat.txt and edit it to suit your needs.
Whenever SQCGen.exe generates a new quickchat.cs it also produces two printer-friendly reference guides (one for each binding) in MapFKeys.txt and MapNumpad.txt. You can print either one as is, but if you have many quickchats it's worth taking a few minutes to load the file into your favorite word processor (Corel WordPerfect works for me) and format it into 4 or 5 columns with a small font. That way you can fit 200+ quickchats per printed page.
Pincushion's Starsiege Tauntpacks hosts some custom tauntpacks and has pointers to more, including a mirror of an old Testcase tauntpack page.
Sometimes you have a quickchat.cs you or someone else put alot of effort into crafting by hand. Such files are often included with custom tauntpacks. What you'd like is a convenient way to extract just the Say statements. That's what SQCFilter.exe is for. Drop a file on it and any lines with valid Say statements in them will be extracted and deposited into SQCFilter.txt. The Say statements are actually parsed and regenerated from scratch, with all spaces removed. When I get a new tauntpack I open SQCFilter.txt in one Wordpad window, scan for the messages I want, select and copy them, and then paste them into another Wordpad window containing my main list.
Macrochats use dynamically generated quickchat text and wav filenames - making possible things that just can't be done with ordinary quickchats. For instance, to say hello to the player you've currently got targetted use:
Say("Everybody",1,"TargetHello#","HelloWav#");
This embeds the target's name in a random hello message and plays a random hello wav file.
Macrochats works like so: Any string that ends in # is changed into a script function name by stripping off the # and adding a qcx:: prefix - for example "FooBar#" would produce qcx::FooBar. When a macrochat is played the function is called and the text it returns becomes the message (or the wav filename) that is actually sent. If you want to make TargetHello non-random or add more random things to choose from you'd edit the qcx::TargetHello function in SQCGen.cs.
Don't worry, you don't have to understand any of this in order to use macrochats. People interested in scripting might have fun creating their own though.
For reference purposes it helps to group quickchats into categories and label them with comments (any line that starts with // is a comment).
Ordinarily quickchat IDs are automatically assigned in sequential order,
starting with 0.
There are several reasons you might want to leave gaps
or assign a quickchat a particular ID however.
It is possible to manually specify a new ID for the subsequent
quickchats with a line like this embedded in your Say statement list:
// fn=321
If you're using the Function Key Binding this causes the next Say
statement to have the binding
Shift-3 Shift-2 Ctrl-1.
If you use the Numeric Keypad bindings use something like:
// id=321
to cause the next Say statement to have the binding
Numpad3 Numpad2 Numpad1 NumpadEnter.
When using this feature (in either mode) be careful not to create
overlapping IDs.
SQCGen will not prevent or warn you if you do.
If you've used Notepad before and know how to drag and drop files you should be able to figure out SQCGen Einstein. Nobody should have to show a geek who can assemble a tricked-out state-of-art 3D gaming system how to use this kind of simple tool. Frankly I don't have time for it, so if you have problems read the advice below and try to fix it yourself before you look elsewhere for help. Post a message on the Starsiege Editing and Scripting forum if you have a comment, question, or bug report. Myself or someone else will likely be happy to discuss it with you or help.
If SQCGen encounters a problem it leaves its DOS window open briefly so you can read the error message. Please do so.
Problem:
No quickchat sounds, but you do see messages.
Solution:
If it is only certain sounds you can't hear then it is either
because:
If you can't hear any of the stock sounds it's possible your taunts.vol is either missing or corrupted. Restore it; in the worst case by reinstalling Starsiege.
Problem:
You hear the wrong quickchats.
The order of the quickchat bindings is out of sequence with your list.
Solution:
Usually this is because there's a syntax error in one of your Say statements
and it was skipped, causing all the others to move forward in the binding.
You should see the message "Skipped garble: <offending line here>"
in SQCGen's DOS window
identifying each line that has a problem.
Make sure all your Say statements have the following form:
Say("Everybody",1,"Some text.","foo.wav");
SQCGen.exe is very forgiving.
You can have spaces in the statement and can even forget the semi-colon,
but you still do have to get the quotes and the WAV filename right.
Problem:
No quickchat sounds, no messages.
Solution:
Either quickchat.cs doesn't exist, or
it has a syntax error, possibly because
you made changes (including one or more errors) in SQCGen.cs.
Restore the original SQCGen.cs and try again.
Problem:
You dropped a list file on SQCGen but the quickchats haven't changed.
Solution:
All the SQCGen files, including your lists, must be in a folder called
C:/Dynamix/Starsiege/SQCGen.
If it is and you still have this problem watch for an error message
in the DOS window and if it's something you can't understand or fix
please report the bug.
Problem:
Target and TargetTeam actually work just like Everybody.
Solution:
This is a bug in Starsiege not SQCGen.
There is no solution at this time.
Problem:
Chats don't work at all, or are not the ones you specified.
Some tauntpacks come with a quickchat.cs and if
you unzip the entire pack into your starsiege folder
the game may recognize and use that one instead
of the real one at starsiege/scripts/quickchat.cs.
Solution:
Delete starsiege/quickchat.cs if one exists.
Do not extract quickchat.cs from other tauntpacks in the future.
Problem:
You don't like the spam squelch feature and want to be free to
send a constant stream of quickchats.
Solution:
Uninstall SQCGen.
SQCGen was first inspired by Xac's quickchat scripting efforts. Thanks Xac.
Testcase tested the early versions of SQCGen, hosted the first Starsiege taunt page, and produced a boatload of quality taunt packs. Get em, use em, and laugh out loud. Thanks Testcase.
Thanks to Raven M.I.B. whose innovative quickchat scripting was the inspiration for macrochats and cool features like FindQC and online help. His qcx:clientPid makes Self chats possible.
Thanks to {GotLag?} for qcx::clientVid, qcx::ping, and qcx::findString (which makes FindQC even more powerful).
Credit to Rock's Admin Tool Super Selector feature for inspiring SelectPrev/SelectNext.
Credit to Sentinal M.I.B. for a working example of showHUDLabel(), which is used by HUDTargetInfo.
Thanks to Orogogus for qcx::bearing, also used by HUDTargetInfo.
Dynamix produced a great game in Starsiege, but they had nothing to do with SQCGen. Any errors in SQCGen or its documents are my fault, not theirs. Thanks Dynamix. R.I.P.
Thanks to Billy Bob for help testing v4.0.
SQCGen was conceived, written, tested, and documented by [OF] Pincushion.