home *** CD-ROM | disk | FTP | other *** search
/ GEMini Atari / GEMini_Atari_CD-ROM_Walnut_Creek_December_1993.iso / files / bbs / semenu25.scr < prev    next >
Text File  |  1993-07-20  |  14KB  |  495 lines

  1. SCRIPT
  2.  
  3. ; SEMENU25.SCR   v1.25    11/27/88
  4.  
  5. ; Mike Atkinson   Tippy Express BBS
  6. ; (219) 453-4046  300/1200/2400
  7.  
  8. ; Use sysedit.tos to setup your main commands to execute this script
  9. ; with the confirmation message being something like: Space Empire!|
  10. ; can also be exececuted from your game menu
  11.  
  12. ;  If a player hangs up during play you will get an error message in your
  13. ; system log that the sysdata.dat file was not found - this has never
  14. ; caused any problems on my board.  This will not happen if your bbs path
  15. ; and empire path is the same (if you like cluttered directories...)
  16.  
  17. :  You MUST have empire.tos, config.dat, and all other data files in the
  18. ; folder specified by [empire_path] for this script to work as written.
  19. ; Ignore the part in the sysop docs for Space Empire where it tells you to
  20. ; put empire.tos and config.dat in the same directory the BBS is run from.
  21.  
  22. ;  Compiling this script is a must for speed and you will also get line #'s
  23. ; if any errors occur.  Don't nest your directorys more than 2 deep, this wil
  24. ; dramatically slow down your disk access.  So "c:\games\empire\" is OK, but
  25. ; "c:\bbs\games\empire\" is much slower.
  26.  
  27.  abort off
  28.  
  29. SETUP:
  30.  clear variables
  31. ;----------------------------------
  32. ;! Change the following to fit your system
  33. ;  All your Space Empire files should be in one folder (empire_path)
  34. ;  The folder containing the files MUST be on the same drive as BBS!
  35. ;  Define bbs_log as your system log file if your printer is off-line
  36. ;  Change the BBS name at the end of script for your BBS
  37.  
  38.  define bbs_log = 'printer'              ;or diskfile (c:\bbs\callers.log)
  39.  define bbs_path = 'c:\bbs\'             ;path BBS is run from
  40.  define empire_path = 'c:\games\empire\' ;Space Empire path
  41.  
  42. ;  Set the following to the names in your seconfig.dat file
  43.  
  44.  define empire_prg = 'spcelite.tos'     ;SE program name
  45.  define setoday = 'senews.txt'          ;Todays SE news filename
  46.  define sescore = 'sescore.txt'         ;SE score file
  47.  define sefame = 'sefame.txt'           ;SE Hall of Fame file
  48.  define selog = 'spcemp.log'            ;SE sysop log filename
  49.  define seyesterday = 'senews.old'      ;Yesterdays SE news filename
  50.  define selogold = 'empold.log'         ;SE yesterdays log filename
  51.  
  52. ;define game_menu = N          ; Use this if no main game menu is called
  53.  define game_menu = 'i:\bbs\menus_80\games.hlp' ;script file to execute
  54.  
  55.  define cutoff = 5       ; minutes left at which play is not allowed
  56.  define level = 2        ; user command level needed to play SE
  57. ;----------------------------------
  58.  
  59.  define Key_Inp                     ; 1 key input for user selection
  60.  define entry
  61.  entry = '&34'
  62.  define actions
  63.  define docfile
  64.  define fc                     ; Variable for file copy
  65.  integer cd                    ; Variable for directory changes
  66.  define prompt                 ; prompt for command routine
  67.  define time_used_call         ; for time limit routine
  68.  define time_left_call         ;
  69.  define time_used_day          ;
  70.  define time_left_day          ;
  71.  define time_on                ;
  72.  define time_ok                ;
  73.  define time_per_call = '&13'  ;
  74.  define time_per_day = '&14'   ;
  75.  define time_before = '&15'    ;
  76.  define spc_date               ; for empire new day routine
  77.  define spc_day                ;
  78.  define today_date = '&24'     ;
  79.  define date                   ; for empire status routine
  80.  define id = '&31'             ;
  81.  define player                 ;
  82.  define calls = '&27'          ;
  83.  define player_no              ;
  84.  define user_idx               ;
  85.  define se_name                ;
  86.  define se_player              ;
  87.  define player_idx             ;
  88.  define last_date              ;
  89.  define score                  ;
  90.  define total_planets          ;
  91.  define food_planets           ;
  92.  define ore_planets            ;
  93.  define soldier_planets        ;
  94.  define unknown                ;
  95.  define troops                 ;
  96.  define ally                   ;
  97.  define population             ;
  98.  define food                   ;
  99.  define fighters               ;
  100.  define credits                ;
  101.  define generals               ;
  102.  define def_stations           ;
  103.  define command_ship           ;
  104.  define player_name            ;
  105.  define agents                 ;
  106.  define heavy_cruisers         ;
  107.  define carriers               ;
  108.  define turns                  ;
  109.  define insurgents             ;
  110.  define dead_planets           ;
  111.  define plan_av
  112.  define market
  113.  
  114. TOP:
  115.   prompt = '\g\i Space Empire\v\o\b\r\{123456-'
  116.  if command_level (32)
  117.   prompt = '[prompt]L'
  118.  endif
  119.  if game_menu # N
  120.   prompt = '[prompt]DGX?\}\b:\v'
  121.  else
  122.   prompt = '[prompt]DX?\}\b:\v'
  123.  endif
  124.  goto menu
  125.  
  126. COMMAND:
  127.  abort off
  128.  printe
  129.  print '\b\o(&32 min)[prompt]'  ; Hold the cursor on this line
  130.  if time_exceeded            ;check time limit at every game prompt
  131.   printe                     ;blank line between game and BBS prompt
  132.   actions = '[actions]TimeUp!/'
  133.   gosub logprint
  134.   exit                       ;let BBS log them off
  135.  endif
  136.  get_key Key_Inp                  ;get callers choice
  137.  actions = '[actions][Key_Inp]/'
  138.  
  139. SECHOICE:
  140.  if Key_Inp = '?'
  141.   printe '? See menu'
  142.   goto menu
  143.  
  144.  ef Key_Inp = 1
  145.   print 'Play Space Empire? \{y,N\}: '
  146.   goto playemp
  147.  
  148.  ef Key_Inp = 2
  149.   printe 'Today\"s Empire News'
  150.   docfile = '[empire_path][setoday]'
  151.   gosub docprint
  152.   goto command
  153.  
  154.  ef Key_Inp = 3
  155.   printe 'Yesterday\"s Empire News'
  156.   docfile = '[empire_path][seyesterday]'
  157.   gosub docprint
  158.   goto command
  159.  
  160.  ef Key_Inp = 4
  161.   printe 'Space Empire Scores'
  162.   docfile = '[empire_path][sescore]'
  163.   gosub docprint  
  164.   goto command
  165.  
  166.  ef Key_Inp = 5
  167.   printe 'Space Empire Hall of Fame'
  168.   docfile = '[empire_path][sefame]'
  169.   gosub docprint  
  170.   goto command
  171.  
  172.  ef Key_Inp = 6
  173.   printe 'Your Status/Activity'
  174.   goto status
  175.  
  176.  ef Key_Inp = D
  177.   printe 'Space Empire Doc\"s'
  178.   docfile = '[empire_path]spcelite.doc'
  179.   gosub docprint
  180.   goto command
  181.  
  182.  ef Key_Inp = G
  183.   goto gamemenu
  184.  
  185.  ef Key_Inp = L
  186.   goto spc_log
  187.  
  188.  ef Key_Inp = X
  189.   printe 'Exit to BBS..'
  190.   gosub logprint 
  191.   exit
  192.  
  193.  endif
  194.  
  195. INVALID:
  196.  printe '\r\{?\}\b to see menu...'       ; what happens upon invalid command
  197.  goto command                        ; choice
  198.  
  199. PLAYEMP:
  200.  abort off
  201.  get_key Key_Inp
  202.  actions = '[actions][Key_Inp]/'
  203.  if Key_Inp # Y                           ;did they really want to play?
  204.   printe 'No'
  205.   goto command
  206.  else
  207.   printe 'Yes'
  208.  endif
  209.  
  210. HIACCESS:
  211.  if command_level (level)
  212.  else
  213.   printe
  214.   printe '\r\i Sorry, your access level\visn\"t high enough. \b\o'
  215.   actions = '[actions]LEVEL!/'
  216.   goto command
  217.  endif
  218.  
  219. TIMELIMIT:
  220.  increase cutoff
  221.  if &29 = 300                ;if 300 baud, cut them off
  222.   cutoff = [cutoff] + 5      ;5 minutes sooner
  223.  endif
  224.  time_on = &32
  225.  time_left_call = [time_per_call] - [time_on]      ;time left for this call    
  226.  time_ok = 'Play'
  227.  if time_left_call < cutoff
  228.   printe '\n Sorry, you don\"t have enough time\vleft for this call to play.'
  229.   time_ok = 'Call Limit'
  230.  endif
  231.  time_used_day = [time_before] + [time_on] 
  232.  time_left_day = [time_per_day] - [time_used_day]  ;time left for today
  233.  if time_left_day < cutoff
  234.   printe '\n Sorry, you don\"t have enough time\vleft for today to play.'
  235.   time_ok = 'Daily Limit'
  236.  endif
  237.  actions = '[actions][time_ok]/'
  238. if time_ok # 'Play'
  239.   goto command
  240.  endif
  241.  
  242. NEWDAY:
  243.  if &34 > 23:59:30                   ;Oops!  Empire may not get running
  244.   printe                             ;before the date changes at 12:00am
  245.   print ' Starting Play On New Day,\v Time: &23'
  246.  endif
  247.  
  248. MIDNITE:
  249.  if &34 > 23:59:30                   ;count down till midnite so that
  250.   backspace 11                       ;BBS will create yesterdays news
  251.   print '&23'                        ;file.  This is for the caller who
  252.   for Key_Inp = 1 to 1000            ;logs on before midnite to be the
  253.   endfor                             ;first on the new day...
  254.   goto midnite
  255.  endif
  256.  
  257.  if file_exists '[empire_path][setoday]' ;check for first time startup
  258.   key_inp = 'yes'
  259.   open '[empire_path][setoday]',input    ;Input date on Space Empire News file.
  260.   finput spc_date 2
  261.   close
  262.  else
  263.   goto nonews
  264.  endif
  265.  
  266.  today_date = '&24'
  267.  spc_day = copy spc_date,10,2  ;Copying the day from SE news file
  268.  date    = copy today_date,4,2 ;Copying the day from current date
  269.  
  270.  if date # spc_day  ;If date is not today then make todays, yesterdays news.
  271.   printe '\n BBS news file maintenance.\v\vPlease Wait...'
  272.   fc = file_copy '[empire_path][setoday]', '[empire_path][seyesterday]'
  273.   fc = file_copy '[empire_path][selog]', '[empire_path][selogold]'
  274.  endif
  275.  
  276. NONEWS:
  277.  printe '\n\g\i Loading Space Empire \b\o\n'
  278.  cd = file_chgdir '[empire_path]'
  279.  open ('sename.bbs', output)      ; NOTICE TO EXPRESS SYSOPS!
  280.  fprinte '&1'                     ; Do NOT modify this part, or it will not
  281.  close                            ; work when SE is in Express mode!
  282.  GEM '[empire_path][empire_prg]'
  283.  cd = file_chgdir '[bbs_path]'
  284.  goto command
  285.  
  286. SPC_LOG:
  287.  if command_level (32)
  288.  else
  289.   goto invalid
  290.  endif
  291.  print '\r\{T\}\boday\"s \r\{Y\}\besterday\"s Log: '
  292.  get_key Key_Inp
  293.  actions = '[actions][Key_Inp]/'
  294.  if Key_Inp = 'T'
  295.   printe 'Today\"s Log'
  296.   docfile = '[empire_path][selog]'
  297.   gosub docprint
  298.  ef Key_Inp = 'Y'
  299.   printe 'Yesterday'
  300.   docfile = '[empire_path][selogold]'
  301.   gosub docprint
  302.  else
  303.   goto command
  304.  endif
  305.  goto command
  306.  
  307. STATUS:           ;get user player status
  308.  if file_exists '[empire_path]elitplr.dat'
  309.  else
  310.   printe '\n \rPlayer data file does not exist!\b'
  311.   goto command
  312.  endif
  313.  print '\n \gLoading Status\b.'
  314.  player_no  = '1'
  315.  player_idx = '2'
  316.  open '[empire_path]elitplr.dat', input             ;! SE player data
  317.  
  318. FIND_SE_PLAYER:
  319.  print '.'
  320.  if player_no = '25'
  321.   close
  322.   printe '\n\n Sorry, You Have No Player!'
  323.   goto command
  324.  endif
  325.  finput se_name player_idx
  326.  player_idx = '22'
  327.  if se_name = &1
  328.   goto list_player
  329.  else
  330.   increase player_no
  331.   goto find_se_player
  332.  endif
  333.  
  334. LIST_PLAYER:
  335.  player_idx = '1'
  336.  finput last_date
  337.  finput score
  338.  finput total_planets
  339.  finput food_planets
  340.  finput ore_planets
  341.  finput soldier_planets
  342.  finput unknown
  343.  finput troops
  344.  finput ally
  345.  finput population
  346.  finput food
  347.  finput fighters
  348.  finput credits
  349.  finput generals
  350.  finput def_stations
  351.  finput command_ship
  352.  finput player_name
  353.  finput agents
  354.  finput heavy_cruisers
  355.  finput carriers
  356.  finput turns
  357.  close
  358.  
  359.  open '[empire_path]insurge.dat', input
  360.   finput insurgents player_no
  361.  close
  362.  
  363.  if insurgents = 0
  364.   insurgents = 'PEACEFUL'
  365.  ef insurgents =1
  366.   insurgents = 'MILD INSURGENCY'
  367.  ef insurgents = 2
  368.   insurgents = 'VIOLENT DEMONSTRATIONS
  369.  ef insurgents = 3
  370.   insurgents = 'RIOTS'
  371.  ef insurgents =4
  372.   insurgents = 'POLITICAL CRIME'
  373.  ef insurgents = 5
  374.   insurgents = 'TERRORISM'
  375.  ef insurgents = 6
  376.   insurgents = 'GUERRILLA WARFARE'
  377.  ef insurgents =7
  378.   insurgents = 'REVOLUTIONARY WARFARE'
  379.  ef insurgents = 8
  380.   insurgents = 'UNDER COUP'
  381.  endif
  382.  
  383.  if file_exists '[empire_path]deadp.dat'
  384.  open '[empire_path]deadp.dat', input
  385.   finput dead_planets player_no
  386.  close
  387.  endif
  388.  
  389.  if file_exists '[empire_path]planav.dat'
  390.   open '[empire_path]planav.dat', input
  391.   finput plan_av
  392.  close
  393.  endif
  394.  
  395. if file_exists '[empire_path]market.dat'
  396.  open '[empire_path]market.dat', input
  397.   finput market
  398.  close
  399. endif
  400.  
  401. printe
  402. printe
  403. printe 'Empire status'
  404. printe '========================================================================='
  405. printe '[player_name]\"S Empire      Last played: [last_date]'
  406. printe 'Score:      [score]'
  407. printe 'Turns:      [turns]'
  408. printe 'Credits:    [credits]'
  409. printe 'Pop:        [population] Million'
  410. printe 'Food:       [food] Megatons'
  411. printe 'Agents:     [agents]'
  412. printe 'Insurgency: [insurgents]'
  413. printe 'Com.Ship:   %[command_ship] completed'
  414. printe 'Military:   \{Troops=[troops]\} \{Fighters=[fighters]\} \{Generals=[generals]\} \{Def. Stations=[def_stations]\}'
  415. printe '            \{Heavy Cruisers=[heavy_cruisers]\} \{Carriers=[carriers]\}'
  416. printe 'Planets:    \{Food=[food_planets]\} \{Mining=[ore_planets]\} \{Soldier=[soldier_planets]\} \{Total=[total_planets]\}'
  417. printe '========================================================================='
  418.  printe 'Markets:    \{Planets=[plan_av]\} \{Food=[market] megatons\}'
  419.  if file_exists '[empire_path]sem.[player_no]'
  420.   printe
  421.   print '\r\iPress any key to see events in your empire...\b\o'
  422.   get_key Key_Inp
  423.   printe
  424.   printe
  425.   view '[empire_path]sem.[player_no]'
  426.  else
  427.   printe
  428.   printe '\g\iNothing happened in your empire\vsince you last played.\b\o'
  429.  endif
  430.  goto command
  431.  
  432. MENU:
  433.  clear screen
  434.  printe
  435.  printe '      \g\i    Tippy Express   \o\b'            ; Your BBS name goes here
  436.  printe '      \g\i Space Empire Elite \o\b'
  437.  printe '      \g\i ------------------ \o\b'
  438.  printe '      \g\i    &23     \o\b'
  439.  printe
  440.  printe ' \r\{1\}\b  Play Space Empire Elite'
  441.  printe ' \r\{2\}\b  Today\"s Empire News'
  442.  printe ' \r\{3\}\b  Yesterday\"s News'
  443.  printe ' \r\{4\}\b  Empire Scores'
  444.  printe ' \r\{5\}\b  Empire Hall of Fame'
  445.  printe ' \r\{6\}\b  Your Current Status'
  446.  printe
  447.  if command_level (32)
  448.   printe ' \r\{L\}\b  Empire System Log'
  449.  endif
  450.  printe ' \r\{D\}\b  Documentation'
  451.  if game_menu # N
  452.  printe ' \r\{G\}\b  Main Game Menu'       ;if you re-exec your game script
  453.  endif
  454.  printe ' \r\{X\}\b  Exit to BBS'
  455.  printe ' \r\{?\}\b  This Menu'
  456.  printe
  457.  goto command
  458.  
  459. DOCPRINT:
  460.  if file_exists '[docfile]'
  461.  printe '\n\r\i >> Control-S to pause,\vControl-X to abort \b\i\n'
  462.  view '[docfile]'                    ;formats text output
  463.  else
  464.  printe '\n Sorry, that file is unavailable...'
  465.  endif
  466.  return
  467.  
  468. GAMEMENU:
  469.  if game_menu # N
  470.   printe 'Exit To Game Menu...'
  471.   gosub logprint 
  472.   execute '[game_menu]'
  473.  else
  474.   goto invalid
  475.  endif
  476.  
  477. LOGPRINT:
  478.  open '[bbs_log]', append    ;logs callers activity
  479.  fprinte '[entry] &34 SEmenu  : [actions]'
  480.  close
  481.  return
  482.  
  483. EOF:
  484.  close
  485.  if key_inp = 'yes'
  486.   goto nonews
  487.  endif
  488.  actions = '[actions]FUBAR!/'
  489.  bell
  490.  print '\n\n FUBAR!'
  491.  bell
  492.  printe '\v\vFile data wrong type or truncated.'
  493.  goto command
  494.