home *** CD-ROM | disk | FTP | other *** search
/ Monster Media 1994 #1 / monster.zip / monster / PCBOARD / MATCHAT.ZIP / SCHAT.PPE (.txt) < prev    next >
PCBoard Programming Language Executable  |  1993-11-25  |  9KB  |  535 lines

  1. ;------------------------------------------------------------------------------
  2. ;                                                   .ss.
  3. ;                                                   `²²'
  4. ;             .,sS$Ss,,s$  .,sS$$$Ss.  .,sS$Ss,,s$ .ss.  .sSs.
  5. ;           .d$$²^°²$$$$'.d$P²°^^²$P'.d$$²^°²$$$$'.$$$' .$$$²Sb,.
  6. ;           $$$'   .$$$' $$$²Sçsµ²' .$$$'   .$$$'.$$$' .$$$'  `$$b.
  7. ;           $$$b,,d$$$' ,$$$b,....,s$$$$b,,d$$$'.$$$;.,$$$'    ;$$$
  8. ;           `²S$$S²²S$$S²°²S$$$$S²°°²S$$$$$$',$$S²°²S$S'.sS$$$P²'
  9. ;                                    .sS²°$$$²²°"'       d²°'
  10. ;                                  .$$²  .$$'
  11. ;                                  $$$.,d$$'
  12. ;                                  `²S$$S²'
  13. ;------------------------------------------------------------------------------
  14. ; P.P.L.X. 2.OO                          (C)1996 - Lone Runner / AEGiS CoRP'96 
  15. ;------------------------------------------------------------------------------
  16. ; PPE 1.OO (plain) - Analysis ON - Postprocessing ON
  17. ;------------------------------------------------------------------------------
  18.  
  19.     Boolean  BOOLEAN001
  20.     Boolean  BOOLEAN002
  21.     Boolean  BOOLEAN003
  22.     Integer  INTEGER001
  23.     Integer  INTEGER002
  24.     Integer  INTEGER003
  25.     Integer  INTEGER004
  26.     Integer  INTEGER005
  27.     Integer  INTEGER006
  28.     Integer  INTEGER007
  29.     Integer  INTEGER008
  30.     Integer  INTEGER009
  31.     Integer  INTEGER010
  32.     Integer  INTEGER011
  33.     String   STRING001
  34.     String   STRING002
  35.     String   STRING003
  36.     String   STRING004
  37.     String   STRING005
  38.     String   STRING006
  39.     String   STRING007
  40.     String   STRING008
  41.     String   STRING009
  42.     String   STRING010
  43.     String   STRING011
  44.     String   STRING012
  45.     String   STRING013
  46.     String   STRING014
  47.     String   STRING015
  48.     String   STRING016
  49.     String   STRING017
  50.     String   STRING018
  51.     String   STRING019
  52.  
  53. ;------------------------------------------------------------------------------
  54.  
  55.     SaveScrn
  56.     GetUser
  57.     PageOff
  58.     STRING006 = Chr(86) + Chr(105) + Chr(71) + Chr(105) + Chr(108) + Chr(97) + Chr(110) + Chr(116) + Chr(101)
  59.     STRING005 = "─────────────────────────────────────────────────────────────────────────────"
  60.     STRING011 = ReadLine(PPEPath() + "schat.cnf", 1)
  61.     STRING012 = ReadLine(PPEPath() + "schat.cnf", 2)
  62.     STRING013 = ReadLine(PPEPath() + "schat.cnf", 3)
  63.     Sound 0
  64.     STRING016 = "@X08@X07@X0F"
  65.     STRING017 = "  ────────────── Super Split Screen Chat PPE v1.0 by " + STRING006 + " ──────────────@X00"
  66.     INTEGER007 = Time()
  67.     STRING018 = Chr(64) + Chr(88) + Chr(48) + Chr(67) + Chr(32) + Chr(60) + Chr(85) + Chr(110) + Chr(114) + Chr(101) + Chr(103) + Chr(105) + Chr(115) + Chr(116) + Chr(101) + Chr(114) + Chr(101) + Chr(100) + Chr(62) + Chr(32)
  68.     INTEGER010 = 1
  69.     INTEGER011 = ReadLine(PPEPath() + "schat.cnf", 7)
  70.     STRING019 = Lower(ReadLine(PCBDat(), 2)) + Lower(ReadLine(PCBDat(), 94))
  71.     For INTEGER005 = 1 To Len(STRING019) Step 3
  72.         INTEGER010 = Left(INTEGER010 * Asc(Mid(STRING019, INTEGER005, 1)), 6)
  73.     Next
  74.     If (INTEGER010 == INTEGER011) Then
  75.         BOOLEAN003 = 1
  76.     Endif
  77.     If (Exist(PPEPath() + "chatlog." + String(PcbNode()))) Then
  78.         FAppend 1, PPEPath() + "chatlog." + String(PcbNode()), 1, 3
  79.         FPutLn 1, STRING005
  80.     Else
  81.         FCreate 1, PPEPath() + "chatlog." + String(PcbNode()), 1, 3
  82.     Endif
  83.     FPutLn 1, "Chat initiated with " + U_Name() + " on " + String(Date()) + " at " + String(Time())
  84.     FPutLn 1
  85.     Cls
  86.     For INTEGER005 = 1 To 9 Step 4
  87.         AnsiPos 1, 12
  88.         Print Mid(STRING016, INTEGER005, 4) + STRING017
  89.         Delay 4
  90.     Next
  91.     :LABEL001
  92.     INTEGER001 = 1
  93.     INTEGER002 = 3
  94.     INTEGER003 = 1
  95.     INTEGER004 = 13
  96.     STRING007 = ""
  97.     STRING008 = ""
  98.     BOOLEAN001 = 0
  99.     If (Lower(ReadLine(PPEPath() + "schat.cnf", 5)) == "top") Then
  100.         STRING014 = ""
  101.         STRING015 = ""
  102.     Else
  103.         STRING015 = ""
  104.         STRING014 = ""
  105.     Endif
  106.     Print "@POFF@" + STRING013
  107.     Cls
  108.     If ((!Exist(PPEPath() + "schat.top") || !Exist(PPEPath() + "schat.bot")) || !Exist(PPEPath() + "schat.mid")) Then
  109.         PrintLn STRING011 + "┌──────────────┤ " + STRING012 + "Super Split Screen Chat PPE v1.0 " + STRING013 + "by " + STRING012 + STRING006 + STRING011 + " ├──────────────┐"
  110.         Print "└" + STRING005 + "┘"
  111.         Newlines 10
  112.         Print "──" + STRING005
  113.         Newlines 10
  114.         PrintLn "┌" + STRING005 + "┐"
  115.         Print "└──────────┤ (" + STRING012 + "Ctrl" + STRING011 + ") " + STRING013 + "+ " + STRING011 + "(" + STRING012 + "C" + STRING011 + ")" + STRING013 + "olor, " + STRING011 + "(" + STRING012 + "R" + STRING011 + ")" + STRING013 + "edraw, "
  116.         Print STRING011 + "(" + STRING012 + "T" + STRING011 + ")" + STRING013 + "ype, or " + STRING011 + "(" + STRING012 + "Esc" + STRING011 + ")" + STRING013 + " to Quit" + STRING011 + " ├───────────┘"
  117.     Else
  118.         PrintLn ReadLine(PPEPath() + "schat.top", 1)
  119.         Print ReadLine(PPEPath() + "schat.top", 2)
  120.         Newlines 10
  121.         Print ReadLine(PPEPath() + "schat.mid", 1)
  122.         Newlines 10
  123.         PrintLn ReadLine(PPEPath() + "schat.bot", 1)
  124.         Print ReadLine(PPEPath() + "schat.bot", 2)
  125.     Endif
  126.     AnsiPos 6, 12
  127.     Print STRING013 + " " + STRING014 + " " + STRING012 + ReadLine(PCBDat(), 2) + STRING013 + " " + STRING014 + " "
  128.     AnsiPos 69 - Len(U_Name()), 12
  129.     Print STRING013 + " " + STRING015 + " " + STRING012
  130.     Tokenize U_Name()
  131.     While (TokCount() > 0) Do
  132.         STRING003 = GetToken()
  133.         Print Left(STRING003, 1) + Lower(Right(STRING003, Len(STRING003) - 1)) + " "
  134.     EndWhile
  135.     Print STRING013 + STRING015 + " "
  136.     AnsiPos 32, 12
  137.     If (!BOOLEAN003) Print STRING018 + STRING013
  138.     AnsiPos INTEGER001, INTEGER002
  139.     If (Lower(ReadLine(PPEPath() + "schat.cnf", 5)) == "top") Then
  140.         :LABEL002
  141.         If (BOOLEAN002) Goto LABEL003
  142.         STRING002 = KInkey()
  143.         STRING001 = MInkey()
  144.         If (STRING002 <> "") Gosub LABEL006
  145.         If (STRING001 <> "") Gosub LABEL009
  146.         Goto LABEL002
  147.         :LABEL003
  148.     Else
  149.         :LABEL004
  150.         If (BOOLEAN002) Goto LABEL005
  151.         STRING001 = KInkey()
  152.         STRING002 = MInkey()
  153.         If (STRING002 <> "") Gosub LABEL006
  154.         If (STRING001 <> "") Gosub LABEL009
  155.         Goto LABEL004
  156.     Endif
  157.     :LABEL005
  158.     If (STRING007 <> "") FPutLn 1, STRING007
  159.     If (STRING008 <> "") FPutLn 1, "-" + STRING008
  160.     FClose 1
  161.     Cls
  162.     For INTEGER005 = 9 To 1 Step -4
  163.         AnsiPos 1, 12
  164.         Print Mid(STRING016, INTEGER005, 4) + STRING017
  165.         Delay 4
  166.     Next
  167.     RestScrn
  168.     If (Lower(ReadLine(PPEPath() + "schat.cnf", 4)) <> "yes") Delete PPEPath() + "chatlog." + String(PcbNode())
  169.     If (Lower(ReadLine(PPEPath() + "schat.cnf", 6)) == "yes") Then
  170.         INTEGER008 = Time()
  171.         INTEGER009 = (INTEGER008 - INTEGER007) / 60
  172.         If (INTEGER009 < 0) INTEGER009 = INTEGER009 + 86400
  173.         AdjTime INTEGER009
  174.     Endif
  175.     KbdStuff Chr(27)
  176.     End
  177.     :LABEL006
  178.     If (Asc(STRING002) < 32) Then
  179.         Select Case (STRING002)
  180.             Case Chr(3)
  181.                 BOOLEAN001 = !BOOLEAN001
  182.                 Print STRING013
  183.             Case Chr(7)
  184.                 Beep
  185.             Case Chr(8), 1
  186.                 STRING007 = Left(STRING007, Len(STRING007) - 1)
  187.                 AnsiPos INTEGER001, INTEGER002
  188.                 Print Chr(8) + " " + Chr(8)
  189.                 Dec INTEGER001
  190.             Case Chr(13)
  191.                 INTEGER001 = 1
  192.                 Inc INTEGER002
  193.                 If (INTEGER002 > 11) Then
  194.                     Gosub LABEL012
  195.                     INTEGER001 = 1
  196.                     If (STRING007 <> "") Inc INTEGER002
  197.                 Endif
  198.                 AnsiPos INTEGER001, INTEGER002
  199.                 If (STRING007 <> "") FPutLn 1, STRING007
  200.                 STRING007 = ""
  201.             Case Chr(18)
  202.                 Goto LABEL001
  203.             Case Chr(20), "top"
  204.                 Gosub LABEL014
  205.             Case Chr(27)
  206.                 BOOLEAN002 = 1
  207.         End Select
  208.     Else
  209.         STRING007 = STRING007 + STRING002
  210.         AnsiPos INTEGER001, INTEGER002
  211.         If (BOOLEAN001) Color Random(14) + 1
  212.         Print STRING002
  213.         Inc INTEGER001
  214.         If (INTEGER001 == 80) Then
  215.             INTEGER006 = 79
  216.             While (INTEGER006 > 0) Do
  217.                 If (Mid(STRING007, INTEGER006, 1) == " ") Then
  218.                     INTEGER001 = 1
  219.                     If (INTEGER002 == 11) Then
  220.                         Gosub LABEL012
  221.                         INTEGER001 = 1
  222.                         Inc INTEGER002
  223.                         Goto LABEL007
  224.                     Endif
  225.                     Inc INTEGER002
  226.                     :LABEL007
  227.                     AnsiPos INTEGER006, INTEGER002 - 1
  228.                     ClrEol
  229.                     AnsiPos INTEGER001, INTEGER002
  230.                     STRING009 = Right(STRING007, 79 - INTEGER006)
  231.                     FPutLn 1, Left(STRING007, INTEGER006)
  232.                     If (BOOLEAN001) Then
  233.                         For INTEGER005 = 1 To Len(STRING009)
  234.                             Color Random(14) + 1
  235.                             Print Mid(STRING009, INTEGER005, 1)
  236.                         Next
  237.                         Goto LABEL008
  238.                     Endif
  239.                     Print STRING009
  240.                     :LABEL008
  241.                     INTEGER001 = 80 - INTEGER006
  242.                     INTEGER006 = 0
  243.                     Continue
  244.                 Endif
  245.                 Dec INTEGER006
  246.                 If (INTEGER006 == 0) Then
  247.                     INTEGER001 = 1
  248.                     Inc INTEGER002
  249.                     If (INTEGER002 > 11) Then
  250.                         Gosub LABEL012
  251.                         INTEGER001 = 1
  252.                         Inc INTEGER002
  253.                     Endif
  254.                     AnsiPos INTEGER001, INTEGER002
  255.                     STRING009 = ""
  256.                     FPutLn 1, STRING007
  257.                 Endif
  258.             EndWhile
  259.             STRING007 = STRING009
  260.         Endif
  261.     Endif
  262.     Return
  263.     :LABEL009
  264.     If (Asc(STRING001) < 32) Then
  265.         Select Case (STRING001)
  266.             Case Chr(3)
  267.                 BOOLEAN001 = !BOOLEAN001
  268.                 Print STRING013
  269.             Case Chr(7)
  270.                 Beep
  271.             Case Chr(8), 1
  272.                 STRING008 = Left(STRING008, Len(STRING008) - 1)
  273.                 AnsiPos INTEGER003, INTEGER004
  274.                 Print Chr(8) + " " + Chr(8)
  275.                 Dec INTEGER003
  276.             Case Chr(13)
  277.                 INTEGER003 = 1
  278.                 Inc INTEGER004
  279.                 If (INTEGER004 > 21) Then
  280.                     Gosub LABEL013
  281.                     INTEGER003 = 1
  282.                     If (STRING008 <> "") Inc INTEGER004
  283.                 Endif
  284.                 AnsiPos INTEGER003, INTEGER004
  285.                 If (STRING008 <> "") FPutLn 1, "-" + STRING008
  286.                 STRING008 = ""
  287.             Case Chr(18)
  288.                 Goto LABEL001
  289.             Case Chr(20), "bottom"
  290.                 Gosub LABEL014
  291.             Case Chr(27)
  292.                 BOOLEAN002 = 1
  293.         End Select
  294.     Else
  295.         STRING008 = STRING008 + STRING001
  296.         AnsiPos INTEGER003, INTEGER004
  297.         If (BOOLEAN001) Color Random(14) + 1
  298.         Print STRING001
  299.         Inc INTEGER003
  300.         If (INTEGER003 == 80) Then
  301.             INTEGER006 = 79
  302.             While (INTEGER006 > 0) Do
  303.                 If (Mid(STRING008, INTEGER006, 1) == " ") Then
  304.                     INTEGER003 = 1
  305.                     If (INTEGER004 == 21) Then
  306.                         Gosub LABEL013
  307.                         INTEGER003 = 1
  308.                         Inc INTEGER004
  309.                         Goto LABEL010
  310.                     Endif
  311.                     Inc INTEGER004
  312.                     :LABEL010
  313.                     AnsiPos INTEGER006, INTEGER004 - 1
  314.                     ClrEol
  315.                     AnsiPos INTEGER003, INTEGER004
  316.                     STRING010 = Right(STRING008, 79 - INTEGER006)
  317.                     FPutLn 1, "-" + Left(STRING008, INTEGER006)
  318.                     If (BOOLEAN001) Then
  319.                         For INTEGER005 = 1 To Len(STRING010)
  320.                             Color Random(14) + 1
  321.                             Print Mid(STRING010, INTEGER005, 1)
  322.                         Next
  323.                         Goto LABEL011
  324.                     Endif
  325.                     Print STRING010
  326.                     :LABEL011
  327.                     INTEGER003 = 80 - INTEGER006
  328.                     INTEGER006 = 0
  329.                     Continue
  330.                 Endif
  331.                 Dec INTEGER006
  332.                 If (INTEGER006 == 0) Then
  333.                     INTEGER003 = 1
  334.                     Inc INTEGER004
  335.                     If (INTEGER004 > 21) Then
  336.                         Gosub LABEL013
  337.                         INTEGER003 = 1
  338.                         Inc INTEGER004
  339.                     Endif
  340.                     AnsiPos INTEGER003, INTEGER004
  341.                     STRING010 = ""
  342.                     FPutLn 1, "-" + Left(STRING008, Len(STRING008) - 1)
  343.                 Endif
  344.             EndWhile
  345.             STRING008 = STRING010
  346.         Endif
  347.     Endif
  348.     Return
  349.     :LABEL012
  350.     Print STRING013
  351.     For INTEGER005 = 3 To 11
  352.         AnsiPos 1, INTEGER005
  353.         ClrEol
  354.     Next
  355.     AnsiPos 1, 3
  356.     If (BOOLEAN001) Then
  357.         For INTEGER005 = 1 To Len(STRING007)
  358.             Color Random(14) + 1
  359.             Print Mid(STRING007, INTEGER005, 1)
  360.         Next
  361.     Else
  362.         Print STRING007
  363.     Endif
  364.     INTEGER001 = GetX()
  365.     INTEGER002 = GetY()
  366.     AnsiPos INTEGER001, INTEGER002
  367.     Return
  368.     :LABEL013
  369.     Print STRING013
  370.     For INTEGER005 = 13 To 21
  371.         AnsiPos 1, INTEGER005
  372.         ClrEol
  373.     Next
  374.     AnsiPos 1, 13
  375.     If (BOOLEAN001) Then
  376.         For INTEGER005 = 1 To Len(STRING008)
  377.             Color Random(14) + 1
  378.             Print Mid(STRING008, INTEGER005, 1)
  379.         Next
  380.     Else
  381.         Print STRING008
  382.     Endif
  383.     INTEGER003 = GetX()
  384.     INTEGER004 = GetY()
  385.     AnsiPos INTEGER003, INTEGER004
  386.     Return
  387.     :LABEL014
  388.     AnsiPos 79, 23
  389.     SaveScrn
  390.     AnsiPos 11, 6
  391.     PrintLn STRING011 + "┌" + Left(STRING005, 58) + "┐"
  392.     AnsiPos 11, 7
  393.     PrintLn "│" + STRING013 + "                                                          " + STRING011 + "│"
  394.     AnsiPos 11, 8
  395.     PrintLn "└" + Left(STRING005, 58) + "┘"
  396.     AnsiPos 13, 7
  397.     Print STRING013 + "File: "
  398.     STRING003 = ""
  399.     STRING004 = ""
  400.     INTEGER005 = 0
  401.     While (STRING003 <> Chr(13)) Do
  402.         STRING003 = KInkey()
  403.         If (STRING003 <> Chr(13)) Then
  404.             If ((STRING003 == Chr(8)) && (INTEGER005 > 0)) Then
  405.                 Print Chr(8) + " " + Chr(8)
  406.                 Dec INTEGER005
  407.                 STRING004 = Left(STRING004, Len(STRING004) - 1)
  408.                 Continue
  409.             Endif
  410.             If ((Asc(STRING003) > 32) && (INTEGER005 < 50)) Then
  411.                 STRING004 = STRING004 + STRING003
  412.                 Print STRING003
  413.                 Inc INTEGER005
  414.             Endif
  415.         Endif
  416.     EndWhile
  417.     If (Exist(STRING004)) Then
  418.         Print "@CLS@@POFF@"
  419.         DispFile STRING004, 0
  420.         Newline
  421.         Print "@WAIT@"
  422.     Endif
  423.     RestScrn
  424.     AnsiPos INTEGER001, INTEGER002
  425.     Return
  426.  
  427. ;------------------------------------------------------------------------------
  428. ;
  429. ; Usage report (before postprocessing)
  430. ;
  431. ; ■ Statements used :
  432. ;
  433. ;    1       End
  434. ;    3       Cls
  435. ;    4       ClrEol
  436. ;    6       Color 
  437. ;    101     Goto 
  438. ;    95      Let 
  439. ;    36      Print 
  440. ;    7       PrintLn 
  441. ;    72      If 
  442. ;    1       DispFile 
  443. ;    1       FCreate 
  444. ;    1       FAppend 
  445. ;    1       FClose 
  446. ;    11      FPutLn 
  447. ;    1       GetUser
  448. ;    1       Delete 
  449. ;    1       AdjTime 
  450. ;    12      Gosub 
  451. ;    5       Return
  452. ;    2       Delay 
  453. ;    15      Inc 
  454. ;    5       Dec 
  455. ;    1       Newline
  456. ;    4       Newlines 
  457. ;    1       Tokenize 
  458. ;    2       Beep
  459. ;    1       KbdStuff 
  460. ;    30      AnsiPos 
  461. ;    2       SaveScrn
  462. ;    2       RestScrn
  463. ;    1       Sound 
  464. ;    1       PageOff
  465. ;
  466. ;
  467. ; ■ Functions used :
  468. ;
  469. ;    3       -
  470. ;    1       *
  471. ;    1       /
  472. ;    174     +
  473. ;    13      -
  474. ;    29      ==
  475. ;    13      <>
  476. ;    13      <
  477. ;    9       <=
  478. ;    11      >
  479. ;    18      >=
  480. ;    63      !
  481. ;    24      &&
  482. ;    11      ||
  483. ;    16      Len(
  484. ;    9       Lower()
  485. ;    9       Mid()
  486. ;    10      Left()
  487. ;    3       Right()
  488. ;    53      Chr()
  489. ;    4       Asc()
  490. ;    6       Random()
  491. ;    1       Date()
  492. ;    3       Time()
  493. ;    3       U_Name()
  494. ;    6       String()
  495. ;    3       PCBDat()
  496. ;    22      PPEPath()
  497. ;    4       PcbNode()
  498. ;    18      ReadLine()
  499. ;    1       GetToken()
  500. ;    5       Exist()
  501. ;    2       GetX()
  502. ;    2       GetY()
  503. ;    3       KInkey()
  504. ;    2       MInkey()
  505. ;    1       TokCount()
  506. ;
  507. ;------------------------------------------------------------------------------
  508. ;
  509. ; Analysis flags : Ad
  510. ;
  511. ; A - Adjust online time remaining ■ 5
  512. ;     Program modify the amount of online time remaining, this may
  513. ;     be a way to bypass time limits
  514. ;     ■ Search for : ADJTIME
  515. ;
  516. ; d - Access PCBOARD.DAT ■ 2
  517. ;     Program gets the full pathname to PCBOARD.DAT, this may be usefull
  518. ;     for many PPE so they can find various informations on the system
  519. ;     (system paths, max number of lines in messages, ...) but it may also
  520. ;     be a way to gather vital informations.
  521. ;     ■ Search for : PCBDAT()
  522. ;
  523. ;------------------------------------------------------------------------------
  524. ;
  525. ; Postprocessing report
  526. ;
  527. ;    9       For/Next
  528. ;    4       While/EndWhile
  529. ;    28      If/Then or If/Then/Else
  530. ;    2       Select Case
  531. ;
  532. ;------------------------------------------------------------------------------
  533. ;                 AEGiS Corp - Break the routines, code against the machines!
  534. ;------------------------------------------------------------------------------
  535.