View unanswered posts | View active topics It is currently Sat Apr 18, 2026 3:08 pm



Reply to topic  [ 8 posts ] 
 Includes 
Author Message
Ambassador
User avatar

Joined: Mon Feb 09, 2004 3:00 am
Posts: 3141
Location: Kansas
Unread post Includes
The information in the help file for using includes in TWX is fairly limited so I put the following together. I am hoping EP will verify it because even though includes can save a lot of time (and errors), I have just started using them in my rewrite project. I used to just copy and paste code snippets, but that has the disadvange of not being easily updated when you figure out a better way to do something.

Anyone that has input on this is welcome to add/change and show different ways in this thread.

In the main script, add a line to include your file. If it is in a sub directory then you need the path.

include "proInc\incProQStats"

To make a gosub to the included qStats label

gosub :incProQstats~qStats

To reference the array $stats[CREDS] remove the $ in front of "stats" and add the include file name as in $incProQstats~ to the array.

setVar $cashOnHand $incProQstats~stats[CREDS]

To reference the variable $ship1 in the include:

setVar $shipSect $incProQstats~ship1

To reference the array $pnum[$i], remove the $ in front of "pnum" and the "i" and add the include $+filename+tilde for both.

setVar $planetSect $incProQstats~pnum[$incProQstats~i]

You can also use the information in the include direct as you would a normal non-included variable as long as you preface it with the $+filename~

if ($incProQstats~stats[ALN] > 999)

if ($incProQstats~ship1 > 10)

_________________
               / Promethius / Enigma / Wolfen /

"A man who has no skills can be taught, a man who has no honor has nothing."


Sun Nov 20, 2011 2:11 am
Profile ICQ
Ensign

Joined: Sun Mar 06, 2011 12:22 am
Posts: 205
Unread post Re: Includes
Promethius, that is way above my skill level, but I appreciate you sharing that with us!

_________________
Photons away!


Wed Nov 23, 2011 3:55 am
Profile
Ambassador
User avatar

Joined: Mon Feb 09, 2004 3:00 am
Posts: 3141
Location: Kansas
Unread post Re: Includes
Grey Gamer wrote:
Promethius, that is way above my skill level, but I appreciate you sharing that with us!


It looks worse than it is.

(Not much of a post for number 3,000)

_________________
               / Promethius / Enigma / Wolfen /

"A man who has no skills can be taught, a man who has no honor has nothing."


Thu Nov 24, 2011 10:27 am
Profile ICQ
Gameop
User avatar

Joined: Tue Nov 19, 2002 3:00 am
Posts: 1050
Location: USA
Unread post Re: Includes
Hi Prom :-)

Any chance you would want to include/point to a .ts of an actual working example?

The tilde plays what significance in the statement?

I assume you have to declare the include prior to calling it? I.e. you can't just write a statement in use the tilde to denote the include?

Ever finish the multi-ship colonizer w/red option from back in the day?

Thanks

_________________
Dark Dominion TWGS
Telnet://twgs.darkworlds.org:23
ICQ#31380757, -=English 101 pwns me=-
"This one claims to have been playing since 1993 and didn't know upgrading a port would raise his alignment."


Fri Nov 25, 2011 2:41 pm
Profile ICQ
Ambassador
User avatar

Joined: Mon Feb 09, 2004 3:00 am
Posts: 3141
Location: Kansas
Unread post Re: Includes
Kaus wrote:
Hi Prom :-)

Any chance you would want to include/point to a .ts of an actual working example?

The tilde plays what significance in the statement?

I assume you have to declare the include prior to calling it? I.e. you can't just write a statement in use the tilde to denote the include?

Ever finish the multi-ship colonizer w/red option from back in the day?

Thanks


Kaus - long time, good to see you posting. Yeah, I finished the red colonizer and the public one is out as proEcolonizer 5 or something like that. I am rewriting all of my main scripts, and it is taking a long time.

I am not sure exactly what the tilde's purpose is, but it has to be there to connect the include file name to the variable in it. I am guessing it is more to create specific variables to the include so you don't have a $ship variable that clashes with the include's $ship var.

I will see what I can come up with that I can post that would be a good example of using the includes. The include can be at the bottom of your script since is appends the include at compile time.

_________________
               / Promethius / Enigma / Wolfen /

"A man who has no skills can be taught, a man who has no honor has nothing."


Fri Nov 25, 2011 5:10 pm
Profile ICQ
Ambassador
User avatar

Joined: Mon Feb 09, 2004 3:00 am
Posts: 3141
Location: Kansas
Unread post Re: Includes
Hopefully this will give a little more information. This is just a very basic blue colonizing script for fuel cols only. I have my qStats include file at the bottom, but it is a seperate file and not contained in the main script. The incProPlanetInfo file is not attached, but should be descriptive enough on the variable names to understand what I am doing.

A partial variable dump looks like the following:

Dynamic array of "$INCPROQSTATS~STATS" (size 28)
"SECT" = "3667"
"TURNS" = "0"
"CREDS" = "354104876"
"FIGS" = "0"
"SHLDS" = "16000"
"HLDS" = "230"
"ORE" = "0"

and

"$INCPROPLANETINFO~EQUAMT" = "0"
"$INCPROPLANETINFO~EQUCOL" = "0"
"$INCPROPLANETINFO~EQUMAX" = "2000000"
"$INCPROPLANETINFO~FIGAMT" = "255206"
"$INCPROPLANETINFO~FIGMAX" = "7500000"
"$INCPROPLANETINFO~FUELAMT" = "5411"
"$INCPROPLANETINFO~FUELCOL" = "15700"
"$INCPROPLANETINFO~FUELMAX" = "7500000"
"$INCPROPLANETINFO~ORGAMT" = "0"
"$INCPROPLANETINFO~ORGCOL" = "0"
"$INCPROPLANETINFO~ORGMAX" = "2000000"


Code:


// main file

getWord currentLine $prompt 1

if ($prompt = "Planet")
   send "*tnl1*"
   // get planet information from the incProPlanetInfo include file
   goSub :incProPlanetInfo~getPlanetInfo
   send "q"
else

  // it is a simple script
   echo ansi_12 "**You must be on the planet's surface to run this!*"
   halt
end

// get ship stats from the incProQstats include file
goSub :incProQstats~qStats
waitFor "Command [TL"
echo ANSI_13 "**Enter the max cols to have producing ore*"
getConsoleInput $maxOreCols

// check for id10t error on col numbers
// $fuelCols is in the incProPlanetInfo include so we use it
// by calling $incProPlanetInfo~fuelCol

if ($maxOreCols < $incProPlanetInfo~fuelCol)
    echo ansi_12 "**You have more cols than that now*"
    halt
else

    // see how many cols we need to get to target
    setVar $maxOreCols ($maxOreCols - $incProPlanetInfo~fuelCol)
end

// get sector from qStats for our warp back
setVar $cs $incProQstats~stats[SECT]
getDistance $toTerra $cs "1"
getDistance $fromTerra "1" $cs

// get ore required for trip to and from (single ship)
setVar $oreReq (($toTerra + $fromTerra) * 3)

// determine what the number of cols per load
setVar $load ($incProQStats~stats[HLDS] - $oreReq)
setVar $deliveredCols 0
while ($deliveredCols < $maxOreCols)

   // assuming SXX port in sector
   send "pt" $oreReq "**0* 0* "
   if ($incProQstats~stats[ALN] > 999)

      // jumping back without verifying tWarp lock, just might fuse.
      send "m 1* yy lt*m " $cs "* y y l " #8 $incProPlanetInfo~pNum "* snl1*q"
   else
      halt
      # need a red jump sector and move to terra
    end
   add $deliveredCols $load
end

halt

include "proinc\incproQstats"
include "proinc\incProPlanetInfo"

# end of main script
------------------------------------------------------

// the included file(seperate)in the incPro folder named incProQstats.ts

:qStats
  setVar $statsLine ""
  send "/"
  :slash
  setTextLineTrigger qstatsDone :qstatsDone "Ship"
  setTextLineTrigger 179 :179 #179
  pause
  :179
    setVar $statsLine $statsLine & currentline
    setTextLineTrigger 179 :179 #179
    pause
  :qstatsdone
   killtrigger 179
   setVar $statsLine $statsLine & currentline
   stripText $statsLine ","
   replaceText $statsLine #179 " "
   getword $statsLine $qStatsWord 1
   getword $statsLine $qStatsVal 2
   setVar $wordPointer 1
   while ($qStatsWord <> 0)
        upperCase $qStatsWord
        setVar $stats[$qStatsWord] $qStatsVal
        add $wordPointer 2
        getword $statsLine $qStatsWord $wordPointer
        getword $statsLine $qStatsVal ($wordPointer + 1)
   end
  return

// returns the following in uppercase
// "Sect Turns Creds Figs Shlds Hlds Ore Org Equ Col Phot Armd Lmpt GTorp TWarp
// "Clks Beacns AtmDt Crbo EPrb MDis PsPrb PlScn LRS Aln Exp Corp Ship"

_________________
               / Promethius / Enigma / Wolfen /

"A man who has no skills can be taught, a man who has no honor has nothing."


Fri Nov 25, 2011 7:01 pm
Profile ICQ
Gameop
User avatar

Joined: Tue Nov 19, 2002 3:00 am
Posts: 1050
Location: USA
Unread post Re: Includes
That is what I was looking for thank you for the example. Now I need a reason to write includes, im curious if theres any speed degredationif your calling a function vs calling a variable. I assume there would be, any insight?

_________________
Dark Dominion TWGS
Telnet://twgs.darkworlds.org:23
ICQ#31380757, -=English 101 pwns me=-
"This one claims to have been playing since 1993 and didn't know upgrading a port would raise his alignment."


Fri Nov 25, 2011 10:56 pm
Profile ICQ
Commander
User avatar

Joined: Mon Oct 29, 2001 3:00 am
Posts: 1096
Location: Tucson, AZ
Unread post Re: Includes
Interesting... so in nerd terms, the tilde is a scoping operator and the include name functions as a namespace. I didn't know TWX was that sophisticated. :wink:

_________________
Suddenly you're Busted!


Sat Nov 26, 2011 2:57 am
Profile WWW
Display posts from previous:  Sort by  
Reply to topic   [ 8 posts ] 

Who is online

Users browsing this forum: No registered users and 18 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group.
Designed by wSTSoftware.