This page is dedicated to the art of script writing. People write scripts to complete tasks that helper programs cannot do, or to complete a variety of repetitive tasks. I write scripts to do everything from logging me in to robbing ports.
What is a script?
A script is a sub-program within a larger host program. Most telecommunication programs have scripting abilities, such as Telemate, Telix and ZOC. Most scripting languages differ, but some programs use the standard REXX scripting language that can be transferred to a variety of programs (ZOC and Terminate use REXX, as does the entire OS/2 operating system). The difficulties and capabilities of scripts also vary widely. I find that Telix is too complex, while Telemate is perfect for what is needed in a game like Tradewars.
I use Telemate ONLY because it is the only scripting language I know, and I have already developed a wide variety of scripts for it (see the script files page). Most players also use Telemate because it has been the program of choice for years.
In general, how hard is it to program a script?
A script to do such things as SST’ing can take several hours, while others such as colonzing can be as easy as a White House intern.
Now for the advanced stuff……
The most common email I get about scripts is the fact that people can’t figure out how to make one trade, the formulas just never work for them. So I will start with trading. First let me explain how I figured this formula out, to help give some insight on future problem solving.
When I wanted to write my trading script, the first thing I did was go buy a psychic probe, then I went and found an equipment buying port and sold it without haggling for 5000 credits (meaning I accepted the port’s first offer without raising or lowering it’s price). The psychic probe reported that the price I sold the equipment was 96.00% of what I could of gotten for it had I haggled. So using this number, I developed a simple formula……
<best price> x .96 = 5000
changed around it is….
<best price> = 5000 / .96
solved it is….
5208.33 = 5000 / .96
After doing this at a few more ports and getting some more numbers, I realized that generally, a port’s first offer was in the 94-97% range, sometimes higher, rarely lower. So, I programmed a script to assume that port’s first offer is 94%, then if that didn’t work to assume the first offer was 95% and make another offer. Always make offers based on the port’s first offering, that is the baseline Here is the sequence of formulas I first tried…..
<best price> = <first offer> / .94
<best price> = <first offer> / .95
<best price> = <first offer> / .96
<best price> = <first offer> / .97
Plugging in 5000 as the first offer, here are the result for <best price>…..
5319 = 5000 / .94
5263 = 5000 / .95
5208 = 5000 / .96
5154 = 5000 / .97
This worked most of the time, but there are some things I have left out for the sake of simplicity thus far. The first is that Telemate doesn’t recognize decimals, so the formulas above aren’t exactly what I used. Everything had to be moved two decimals over to the left, making a formula look like this…
<best price> = 500000 / 94
The results are the same. Another thing I have left out is that a lot of the time, the true 100% offer is rejected. This occurs because if the script finds the 100% at 5203.9, and rounds it to 5204, you are actually over 100%. A rule of thumb is to reduce the 100% offer by one credit, ensuring that you are under. If you think that rare 100% 5 experience points is too much to pass up, then you can make the mathematical adjustments yourself, because I have never bothered. Here are the final formulas I use in trading….
<best price> = (500000 / 94) – 1
<best price> = (500000 / 95) – 1
<best price> = (500000 / 96) – 1
<best price> = (500000 / 97) – 1
Remember that a lot of scripting languages do recognize decimals, so you don’t always have to go through the alterations I have to.
WAIT, what about buying??
This is a sample formula, figure out how I got it for yourself….
<best price> = <first offer> * .94
This is the second most popular. Using the method above, you can easily adapt a script to perform the SST. The script in my archive, however, uses a different approach. It takes the first offers from both ports before attempting to haggle. Once the script knows for sure what range the percentage of best offer is, it can continue to adapt and get the 99%. I recommend programming your script to steal your experience divided by 20.
Barring the bug in robbing in MajorBBS versions, you can have the script keep track of your experience and rob your experiene times 6. It’s real important to have a progressive script that adjusts to the addition of new experience points after each rob so there is a less likely the chance of getting busted.
There are two steps (I feel) to capturing a ship. The first is paralyzing your opponent, the second is the actual capture. Now remember I have been solely a MajorBBS player for years, so I don’t know if the paralyzing part is something that can be done in the Door/TWGS version. Also, if you are capturing a ship to a player that is offline or belongs to an Alien or Ferrengi, then there is no need to paralyze anything.
Have your script launch 20 one-fighter attacks IMMEDIATELY. This will cause lag to everyone on a BBS but you, but not enough lag to be called a cheater. It’s not your fault this lag will occur, you’re just taking advantage of it. Use this lag time to initiate Step Two.
There are a wide variety of ships with a wide variety of combat odds. The extreme is a Scout Marauder v.s. Colonial Transport, with odds at 2.0 v.s. 0.6, respectively. But since this is a rare match-up, you don’t need to make this your default setting. I have my script offer me two options. The default option is ISS v.s. Merchant Frieghter odds. The second option is the extreme I just mentioned.
To capture the ship, you must have the script read the other ship’s number of fighters. Then calculate the fighters it will take using the ships’ odds. Since I use ISS vs Freighter as default, here is the formula
<Opponent’s Fighters> x 0.8 = <Fighters needed for attack> x 1.5
<Opponent’s Fighters> x 0.8 / 1.5 = <Fighters needed for attack>
Once again, I left out some things for simplicity’s sake. Remember that some scripts don’t recognize decimals. Also, there is a sort of random factor when attacking ships, so using this formula might get you blown up with you attacking a real freighter. To compensate for the random factor in attacking, I generally attack with 90% of the required fighters. I add this formula after the formula above…
<Fighters needed for attack> * 0.9 = <New amount that I’m really going to use>
Keep relaunching attacks until you’ve reached capture. Also make your script attack with a minimum of two fighters, so if the enemy gets down to one, you are not trying to attack with one also.