import com.swath.*; import com.swath.cmd.*; /** * This is a simple etherprobe explore script. * It ask you for start sector and number of cycles. * Specify 0 as cycles for it to run until it reaches * the last sector in the universe. * The script will refill your etherprobes if your at SD * until your out of cash or reach cycle limit. * The script shoots out an eprobe to a sector then * it will void that sector and shoot out another to one * sector number higher then the first one until we either * reaches last sector in the universe or run out of money * whatever comes first. * * rev 1.2 * * @author Macahan */ public class EprobeExplore extends UserDefinedScript { private Parameter startSector; private Parameter cycles; private Parameter toggleVoid; private Parameter sixWarps; private Parameter fiveWarps; private Parameter fourWarps; private Parameter threeWarps; private Parameter twoWarps; private Parameter oneWarps; public String getName() { // Return the name of the script return "EtherProbe Explore"; } public boolean initScript() throws Exception { // Initialisation of the script is done in this method. // All parameters should be created and registered here. // If something goes wrong, return false. // Check that we are at the correct prompt if (!atPrompt(Swath.COMMAND_PROMPT)) return false; // Create the parameter 'startSector' and set the value to // the current sector. // The type will be set to INTEGER by setInteger(). startSector = new Parameter ("What sector do you want to start at?"); startSector.setInteger(Swath.main.currSector()); // Create the parameter 'cycles' and set the value to // to zero. // The type will be set to INTEGER by setInteger(). cycles = new Parameter ("How many cycles (0 = until done)"); cycles.setInteger(0); // If we want to set voids during ether probe or not. // setting voids will result in longer warp paths. // but you will also possible lock out certain parts of // the universe so voids is good on a first run. // then do a second run without setting any voids. // to get the rest of the universe. toggleVoid = new Parameter ("Set voids ?"); toggleVoid.setType(Parameter.BOOLEAN); toggleVoid.setBoolean(true); oneWarps = new Parameter ("One Warps ?"); oneWarps.setType(Parameter.BOOLEAN); oneWarps.setBoolean(true); twoWarps = new Parameter ("Two Warps ?"); twoWarps.setType(Parameter.BOOLEAN); twoWarps.setBoolean(true); threeWarps = new Parameter ("Three Warps ?"); threeWarps.setType(Parameter.BOOLEAN); threeWarps.setBoolean(false); fourWarps = new Parameter ("Four Warps ?"); fourWarps.setType(Parameter.BOOLEAN); fourWarps.setBoolean(false); fiveWarps = new Parameter ("Five Warps ?"); fiveWarps.setType(Parameter.BOOLEAN); fiveWarps.setBoolean(false); sixWarps = new Parameter ("Six Warps ?"); sixWarps.setType(Parameter.BOOLEAN); sixWarps.setBoolean(true); // Resgister the parameters the the user picked // so we can use them from inside the script. registerParam(startSector); registerParam(cycles); registerParam(toggleVoid); registerParam(oneWarps); registerParam(twoWarps); registerParam(threeWarps); registerParam(fourWarps); registerParam(fiveWarps); registerParam(sixWarps); // Some other initialisation could be done here // ... return true; } public boolean runScript() throws Exception { // declare the params we need Sector sector; int loop, start, totsectors, maxcycles, cycle; boolean activateVoids, oneWarp, twoWarp, threeWarp, fourWarp, fiveWarp, sixWarp; // load the start sector we picked start = startSector.getInteger(); activateVoids = toggleVoid.getBoolean(); oneWarp = oneWarps.getBoolean(); twoWarp = twoWarps.getBoolean(); threeWarp = threeWarps.getBoolean(); fourWarp = fourWarps.getBoolean(); fiveWarp = fiveWarps.getBoolean(); sixWarp = sixWarps.getBoolean(); // Since you can't launch an eprobe in your current sector let's adjust // sector # to a higher value.. if (start == Swath.main.currSector()) start++; // load max cycles maxcycles = cycles.getInteger(); // if user set 0 as maxcycles then set maxcycles so we // will run until we reaches last sector of universe. if (maxcycles == 0) maxcycles = Swath.main.sectors(); // Let's set 1 for our first cycle cycle = 1; // set max size of universe. totsectors = Swath.main.sectors(); // set param loop loop=0; // start our main loop while( loop < 1 ) { // we got any etherprobes ??? if (Swath.ship.etherProbes()==0) { // if we are here we didn't have any. Let's check // if we are at SD so we can buy some.. if (Swath.main.currSector() == Swath.main.stardock()) { // apparently we are at SD so let's check // our cash status if we can buy at least 1 eprobe if ( Swath.you.credits() >= 3000) { // dock at SD got to Hardware and buy eprobes. SendString.exec("ps"); WaitForText.exec(" Where to? (?=Help)"); SendString.exec("he"); // here we will have future check for how many // probes the ship will take String x; x = WaitForText.exec("How many Probes do you want (Max"); // we got enough credit for max load ? if ((Swath.you.credits()/3000) < 20 ) { // nope we can't aford max load int num; // let's buy what we can afford. num = Swath.you.credits()/3000; SendString.exec(+num+"\rqqi"); WaitForText.exec("Command [TL=00:00:00]:["); } // can we buy more then max load if ( (Swath.you.credits()/3000) > 20 ) { // yes get max load SendString.exec("20\rqqi"); WaitForText.exec("Command [TL=00:00:00]:["); } } // if above check failed let's quit if we // don't have enough cash to buy more probes. else { PrintText.exec("\nOut of cash quitting!\n"); if (activateVoids==true){ // remove all our voids we set probing. SendString.exec("cv0\ryyq"); } // quit cleanly return true; } } // ok if we where not at SD let's quit else { // since we where out of probes and not at SD time to quit PrintText.exec("\n No more eprobes and not at SD so I can not buy more probes\n"); if (activateVoids==true) { // remove all our voids we set probing. SendString.exec("cv0\ryyq"); } // quit cleanly return true; } } sector = Swath.getSector(start); if (sector.isUnexplored()) { // only probe sectors that got 1 warps (dead ends) switch (sector.warps()){ case 6: if (sixWarp==true) { LaunchEtherProbe.exec(start); // set that sector void. if (activateVoids==true){ SendString.exec("cv"+start+"\rq"); // take a break let us get to command prompt again WaitForText.exec("Command [TL="); } } break; case 5: if (fiveWarp==true) { LaunchEtherProbe.exec(start); // set that sector void. if (activateVoids==true){ SendString.exec("cv"+start+"\rq"); // take a break let us get to command prompt again WaitForText.exec("Command [TL="); } } break; case 4: if (fourWarp==true) { LaunchEtherProbe.exec(start); // set that sector void. if (activateVoids==true){ SendString.exec("cv"+start+"\rq"); // take a break let us get to command prompt again WaitForText.exec("Command [TL="); } } break; case 3: if (threeWarp==true) { LaunchEtherProbe.exec(start); // set that sector void. if (activateVoids==true){ SendString.exec("cv"+start+"\rq"); // take a break let us get to command prompt again WaitForText.exec("Command [TL="); } } break; case 2: if (twoWarp==true) { LaunchEtherProbe.exec(start); // set that sector void. if (activateVoids==true){ SendString.exec("cv"+start+"\rq"); // take a break let us get to command prompt again WaitForText.exec("Command [TL="); } } break; case 1: if (oneWarp==true) { LaunchEtherProbe.exec(start); // set that sector void. if (activateVoids==true) { SendString.exec("cv"+start+"\rq"); // take a break let us get to command prompt again WaitForText.exec("Command [TL="); } } break; default: break; } /* if (sector.warps()<= 2) { // launch our therprobe LaunchEtherProbe.exec(start); // set that sector void. if (activateVoids==true) { SendString.exec("cv"+start+"\rq"); // take a break let us get to command prompt again WaitForText.exec("Command [TL="); } } // ok if we have a sector with 5 or 6 warps unexplored // probe it and void it. if (activateVoids==true) { if (sector.warps()>=5) { LaunchEtherProbe.exec(start); SendString.exec("cv"+start+"\rq"); WaitForText.exec("Command [TL="); } } */ } // for explored sectors else { // if the sector is a 6 warp void it.. so our probes will // get better paths. if (activateVoids==true) { if (sector.warps()>5) { SendString.exec("cv"+start+"\rq"); WaitForText.exec("Command [TL="); } } } // add the sector counter for next sector to probe start++; // check if next sector is same as current in that case // we increase the value. if (start == Swath.main.currSector()) start++; // have we reached the highest sector number of the // universe yet ?? if (start > totsectors) { // yes so let's clean the voids we have set. SendString.exec("cv0\ryyq"); PrintText.exec("\nMax sectors reached quitting!\n"); // quit cleanly return true; } // have we reached the max specified cycles yet ?? if ( maxcycles <= cycle ) { // yes so let's clean the voids we have set. SendString.exec("cv0\ryyq"); PrintText.exec("\nMax cycles reached quitting!\n"); // quit cleanly return true; } // increase the cycle counter.. cycle++; // end of while loop } // we shouldn't reach this part but just incase // let's put in a quit signal return true; } public void endScript(boolean finished) { // Do some clean up here if necessary. // Remember: In Java you don't need to free any memory // since all memory is garbage collected when not used. } }