Loading

Chessnut's Simple Socket

  1. ; Simple Socket Script Creator v0.2
  2. ; Created by Chessnut
  3. ; Feel free to change this script and the scripts it produces
  4. ; however you want, but please leave this copyright as it is.
  5. ; Right click anywhere and click "Simple socket script creator" to start.
  6. ; Remember to read the Readme file.
  7. ; Enjoy.
  8. ; --- Chessnut ---->
  9.  
  10. menu status,query,nicklist,channel {
  11.   Simple Socket Creator:/dialog -md sock_disp sock_disp
  12. }
  13.  
  14. ; LOOOOOOONG DIALOG!
  15. dialog -l sock_disp {
  16.   title "Simple Socket Creator"
  17.   size -1 -1 284 205
  18.   option dbu
  19.   icon sckicon.ICO, 0
  20.   tab "HTML Viewer", 5, 5 3 275 176
  21.   button "View page", 2, 45 160 31 15, tab 5
  22.   edit , 3, 37 27 69 11, result tab 5 autohs
  23.   edit "80", 4, 37 39 19 12, result tab 5 limit 4
  24.   box "Connection", 8, 10 18 102 68, tab 5
  25.   text "Port:", 9, 12 40 16 8, tab 5
  26.   text "Address:", 10, 12 29 25 8, tab 5
  27.   box "Display", 11, 10 86 102 28, tab 5
  28.   check "Strip HTML", 12, 13 93 37 10, tab 5
  29.   box "Line details", 26, 10 115 102 42, tab 5
  30.   edit "", 27, 13 123 88 11, tab 5 read autohs
  31.   list 1, 115 20 161 129, tab 5 size vsbar
  32.   text "Length:", 29, 13 145 31 8, tab 5
  33.   check "Show head/headers", 41, 13 102 65 10, hide tab 5
  34.   text "User Agent:", 39, 12 51 24 14, hide tab 5
  35.   edit "", 40, 37 52 68 12, hide tab 5 autohs
  36.   button "Use line", 78, 48 144 28 10, tab 5
  37.   edit "", 101, 134 152 76 11, tab 5 autohs
  38.   button "Next >", 102, 246 152 23 11, tab 5
  39.   text "Search Lines:", 103, 115 151 18 14, tab 5
  40.   text "Line Number:", 104, 13 135 78 8, tab 5
  41.   text "Lines found:", 106, 114 167 31 8, tab 5
  42.   edit "", 107, 148 166 25 10, tab 5 read autohs
  43.   edit "", 108, 210 167 36 10, tab 5 autohs
  44.   text "Go to line:", 109, 182 167 26 8, tab 5
  45.   button "Go to", 110, 249 167 21 9, tab 5
  46.   button "Search", 105, 214 152 28 11, tab 5
  47.   radio "GET", 28, 60 40 20 10, hide tab 5
  48.   radio "POST", 89, 82 40 25 10, hide tab 5
  49.   edit "", 88, 37 65 68 18, hide tab 5 multi return autohs autovs
  50.   text "Extra sockwrite:", 87, 12 67 24 14, hide tab 5
  51.   button "View in Browser", 84, 81 159 26 17, tab 5 multi
  52.   check "Ignore blank lines", 95, 51 93 54 10, tab 5
  53.   button "Copy line", 126, 79 144 28 10, tab 5
  54.   tab "Socket Writer", 6
  55.   edit "No line selected", 13, 127 27 144 10, tab 6 read autohs
  56.   box "Before editing", 14, 118 19 159 23, tab 6
  57.   box "After editing", 15, 118 43 159 23, tab 6
  58.   edit "No line selected", 16, 127 51 144 10, tab 6 read autohs
  59.   box "Action", 22, 118 67 159 100, tab 6
  60.   text "Items to remove (Separated by a comma)", 23, 123 97 103 8, tab 6
  61.   check "Strip html after", 25, 125 149 48 10, tab 6
  62.   edit "", 30, 122 125 128 10, tab 6 autohs
  63.   edit "", 31, 122 105 128 10, tab 6 autohs
  64.   button "Update", 32, 181 148 37 12, tab 6
  65.   text "and", 36, 190 86 11 8, tab 6
  66.   text "Data wanted is between", 34, 123 77 103 8, tab 6
  67.   edit "", 33, 122 85 60 10, tab 6 autohs
  68.   edit "", 35, 207 85 60 10, tab 6 autohs
  69.   text "Items to replace (Separated by a comma)", 17, 122 117 103 8, tab 6
  70.   box "Finding correct line", 62, 11 19 104 89, tab 6
  71.   text "What phrase/string will ALWAYS be on this line? (MUST fill in)", 63, 16 27 90 13, tab 6
  72.   edit "", 64, 16 40 84 10, tab 6 autohs
  73.   text "Above phrase/string is", 65, 16 62 55 9, hide disable tab 6
  74.   button "Next >", 70, 87 160 28 15, tab 6
  75.   check "Strip html before", 85, 125 138 51 10, tab 6
  76.   box "Custom Action", 86, 11 108 104 50, hide tab 6
  77.   edit "", 92, 15 124 96 10, hide tab 6 autohs
  78.   text "Note: Use @LINE@ to refer to the rest of the line, EG. $bytes(@LINE@,b).", 112, 15 137 98 17, hide tab 6
  79.   text "Alias/es:", 24, 16 116 25 8, hide tab 6
  80.   button "ASCII List", 93, 222 148 38 12, tab 6
  81.   edit "", 44, 73 61 10 10, hide disable tab 6 limit 1
  82.   text "lines            the line I want.", 66, 85 62 12 8, hide disable tab 6
  83.   combo 90, 16 72 37 22, hide disable tab 6 drop
  84.   text "the line I want.", 118, 55 73 44 8, hide disable tab 6
  85.   check "There is no unique data on the line", 123, 17 50 95 11, hide tab 6
  86.   button "Check", 124, 46 84 37 12, tab 6
  87.   text "", 125, 15 98 96 7, tab 6
  88.   tab "Script Creation", 37
  89.   edit "", 42, 37 39 50 10, tab 37 autohs
  90.   text "Remote trigger:", 43, 14 37 22 14, tab 37
  91.   box "Output - Message", 45, 10 84 85 71, tab 37
  92.   radio "Message channel", 46, 15 55 50 7, group tab 37
  93.   edit "", 48, 14 101 76 28, tab 37 multi return autohs autovs
  94.   text "Output message:", 49, 15 93 46 8, tab 37
  95.   text "NOTE: Use @RESULT@ to refer to the data found. New line means new message.", 50, 14 131 75 21, tab 37
  96.   radio "Notice nick", 47, 15 63 50 7, tab 37
  97.   box "Socket", 58, 98 19 70 45, tab 37
  98.   text "Socket name:", 59, 102 28 34 8, tab 37
  99.   edit "", 60, 101 38 50 10, tab 37 autohs
  100.   box "Data", 72, 98 69 70 86, tab 37
  101.   edit "", 73, 101 89 50 10, tab 37 autohs
  102.   text "Variable to store data as:", 74, 102 79 62 8, tab 37
  103.   button "Test/View Script", 82, 91 160 43 15, tab 37
  104.   box "Issues in creation", 96, 171 20 102 144, tab 37
  105.   list 97, 175 28 94 83, tab 37 size
  106.   edit "", 98, 174 113 96 10, tab 37 read autohs
  107.   button "Find error", 99, 205 125 37 12, tab 37
  108.   text "Note: Errors that MUST be fixed to create the script are marked with an asterix (*).", 100, 177 140 89 21, tab 37
  109.   radio "Echo status window", 91, 15 71 59 7, tab 37
  110.   button "Create Script", 61, 45 160 41 15, tab 37
  111.   check "Multi-socket", 94, 102 51 57 7, tab 37
  112.   button "Advanced trigger options", 113, 27 58 50 18, hide tab 37 multi
  113.   text "NOTE: Leave blank to create a local variable which will be unset after use. Recommended when creating a 'Multi-socket' script.", 114, 102 102 57 48, tab 37
  114.   radio "Simple", 119, 17 26 27 10, group tab 37
  115.   box "Input - Trigger", 116, 10 19 85 63, tab 37
  116.   radio "Advanced", 120, 48 26 36 10, tab 37
  117.   edit "", 115, 37 39 50 10, hide tab 37 read autohs
  118.   tab "Testing", 38
  119.   button "Trigger socket", 51, 37 28 45 12, tab 38
  120.   edit "", 52, 46 44 100 10, tab 38 read autohs
  121.   text "Line before editing:", 53, 13 42 31 14, tab 38
  122.   text "Line after editing:", 54, 13 58 31 14, tab 38
  123.   edit "", 55, 46 61 99 10, tab 38 read autohs
  124.   text "Result:", 57, 14 76 25 7, tab 38
  125.   box "Process", 67, 161 20 111 84, tab 38
  126.   list 68, 168 29 97 69, tab 38 size vsbar
  127.   button "View Script", 71, 43 160 31 15, tab 38
  128.   list 56, 13 83 140 40, tab 38 size vsbar
  129.   box "Process line info", 75, 112 151 161 24, tab 38
  130.   edit "", 76, 118 160 148 10, tab 38 read autohs
  131.   edit "", 77, 13 123 140 10, tab 38 read autohs
  132.   box "Script working?", 79, 189 111 48 34, tab 38
  133.   icon 80, 204 121 15 15, scktick.png, 0, hide tab 38
  134.   icon 81, 204 121 15 15, sckcross.png, 0, hide tab 38
  135.   box "Trigger/Result", 19, 9 20 148 119, tab 38
  136.   button "Force close socket", 83, 86 28 51 12, hide tab 38
  137.   button "Load Script", 111, 77 160 32 15, tab 38 default
  138.   text "Current script name:", 127, 10 142 51 8, tab 38
  139.   text "", 128, 62 142 124 8, tab 38
  140.   button "Cancel", 7, 12 160 28 15, ok cancel
  141.   link "Help", 18, 255 5 13 8
  142.   check "Toggle Advanced Mode", 21, 7 187 70 10
  143.   icon 20, 243 5 7 7, sckhelp.gif, 0
  144.   text "Created by Chessnut, Version: 0.2", 69, 102 184 55 15
  145.   button "Feedback/ Suggestions", 117, 222 182 37 18, multi
  146.   text "v0.2", 121, 266 190 14 8
  147.   button "Check for updates", 122, 182 182 36 18, multi
  148. }
  149.  
  150. alias -l regexfriendly { return $regsubex($1-,/([\Q?*+.|{}\/[]()\E])/g,\\1) }
  151. alias -l retchanges { return $replace(%sckdispchanges,@zero£,0) }
  152.  
  153. ; NO HTML ALIAS
  154. alias nohtml { var %x,%y = $regsub($1-,/(<[^>]+>)/g,$null,%x) | return %x }
  155.  
  156. ; INITILISATION COMMANDS
  157. on *:DIALOG:sock_disp:INIT:0: {
  158.   did -a sock_disp 3 %sockdispsite
  159.   $iif(%sockdispport,did -ra sock_disp 4 %sockdispport)
  160.   did -c sock_disp 46,28,41,119
  161.   did -arc sock_disp 90 Before
  162.   did -a sock_disp 90 After
  163.   did -ar sock_disp 128 $nopath(%sockdispdir)
  164. }
  165.  
  166. ; MAIN DIAG CLOSE
  167. on *:DIALOG:sock_disp:CLOSE:0: {
  168.   unset %sckdisp*
  169. }
  170.  
  171. ; OPEN SOCKET (VIEW PAGE)
  172. on *:dialog:sock_disp:sclick:2:{
  173.   if ($did(3)) {
  174.     if ($did(sock_disp,4) == $null) || ($did(sock_disp,4) !isnum) did -ar sock_disp 4 80
  175.     did -r sock_disp 27
  176.     set %sockdispsite $did(3)
  177.     set %sockdisphost $remove($left($remove($did(3),http://),$pos($remove($did(3),http://),/,1)),/)
  178.     set %sockdisppage $remove($did(sock_disp,3),http://,%sockdisphost)
  179.     set %sockdispport $did(sock_disp,4)
  180.     if (!%sockdisphost) {
  181.       set %sockdisphost %sockdisppage
  182.       set %sockdisppage /
  183.     }
  184.     did -r sock_disp 1
  185.     if ($did(12).state == 1) { did -bc sock_disp 85 }
  186.     else { did -eu sock_disp 85 }
  187.     sockclose dsock.1
  188.     sockopen dsock.1 %sockdisphost %sockdispport
  189.   }
  190. }
  191.  
  192. on *:SOCKOPEN:dsock.*: {
  193.   sockwrite -nt $sockname $iif($did(sock_disp,28).state == 1,GET,POST) %sockdisppage HTTP/1.1
  194.   sockwrite -nt $sockname Host: %sockdisphost
  195.   $iif($did(sock_disp,40),sockwrite -nt $sockname User-Agent: $did(sock_disp,40))
  196.   var %j = 1
  197.   var %k = $did(sock_disp,88).lines
  198.   while (%j < %k) {    
  199.     if ($did(sock_disp,88) != $null) sockwrite -nt $sockname $did(sock_disp,88, [ $+ [ %j ] ] )
  200.     inc %j
  201.   }
  202.   sockwrite -nt $sockname $crlf
  203.   set %sckdispheads $did(sock_disp,41).state
  204. }
  205.  
  206. on *:SOCKREAD:dsock.*: {
  207.   if ($sockerr) {
  208.     if ($right($sockname,1) == 1) {
  209.       did -ar sock_disp 1 !!@@ ERROR (Code: $sckerr $+ ) OPENING SOCKET @@!!
  210.     }
  211.     elseif ($right($sockname,1) == 2) {
  212.       did -ar sock_disp_check 6 ERROR CONNECTING TO SOCKET.
  213.     }
  214.     elseif ($right($sockname,1) == 3) {
  215.       did -ar sock_disp_lineref 6 ERROR CONNECTING TO SOCKET.
  216.     }
  217.     halt
  218.   }
  219.   else {
  220.     var %sockreader
  221.     sockread %sockreader
  222.     if ($right($sockname,1) == 1) {
  223.       if (%sckdispheads == 0) {
  224.         if (*</head>* iswm %sockreader) set %sckdispheads 1
  225.       }
  226.       if (%sckdispheads == 1) {
  227.         if ($did(sock_disp,12).state == 1) {
  228.           if ($len(%sockreader) > 850) did -a sock_disp 1 !!@@ LINE TOO LONG @@!!
  229.           else {
  230.             if ($did(sock_disp,95).state == 1) {
  231.               if ($nohtml($remove(%sockreader,$chr(9),$chr(32)) != $null) did -a sock_disp 1 $nohtml(%sockreader)
  232.             }
  233.             else did -a sock_disp 1 $nohtml(%sockreader)
  234.           }
  235.         }
  236.         else {
  237.           if ($len(%sockreader) > 850) did -a sock_disp 1 !!@@ LINE TOO LONG @@!!
  238.           else {
  239.             if ($did(sock_disp,95).state == 1) {
  240.               if ($remove(%sockreader,$chr(9),$chr(32)) != $null) {
  241.                 did -a sock_disp 1 %sockreader
  242.               }
  243.             }
  244.             else did -a sock_disp 1 %sockreader
  245.           }
  246.         }
  247.       }
  248.     }
  249.     elseif ($right($sockname,1) == 2) {
  250.       if ($len($remove(%sockreader,$chr(9),$chr(32))) == 0) halt
  251.       if ($+(*,$did(sock_disp,64),*) iswm $iif($did(sock_disp,90).seltext == After,%sockreader,%sockreader- [ $+ [ $did(sock_disp,44) ] ])) {
  252.         did -ar sock_disp_check 1 %sockreader [ $+ [ $iif($did(sock_disp,90).seltext == After,$+(-,$did(sock_disp,44))) ] ]
  253.         did -ar sock_disp_check 6 %sockreader [ $+ [ $iif($did(sock_disp,90).seltext == Before,$+(-,$did(sock_disp,44))) ] ]
  254.         if ($+(*,$did(sock_disp_check,7),*) iswm $did(sock_disp_check,6)) {
  255.           did -ar sock_disp_check 8 IS on the line that you have specified to contain the unique data/string
  256.           did -v sock_disp_check 11
  257.         }
  258.         else {
  259.           did -ar sock_disp_check 8 IS NOT on the line that you have specified to contain the unique data/string
  260.           did -v sock_disp_check 17
  261.         }
  262.         unset %sockreader*
  263.         sockclose $sockname
  264.       }
  265.       if ($len($remove(%sockreader,$chr(9))) > 0) {
  266.         var %x = $calc($did(sock_disp,44) - 1)
  267.         while (%x > -1) {
  268.           if ($len(%sockreader [ $+ [ $iif(%x != 0,$+(-,%x)) ] ]) <= 850) set %sockreader [ $+ [ $+(-,$calc(%x + 1)) ] ] %sockreader [ $+ [ $iif(%x != 0,$+(-,%x)) ] ]
  269.           dec %x
  270.         }
  271.       }
  272.     }
  273.     elseif ($right($sockname,1) == 3) {
  274.       if ($+(*,$did(sock_disp,64),*) iswm %sockreader) {
  275.         did -ar sock_disp_lineref 6 %sockreader
  276.         if (%sockreader == $did(sock_disp,13)) {
  277.           did -v sock_disp_lineref 11
  278.           did -ar sock_disp_lineref 9 The line that was found using the data you specified IS the same as the line you want.
  279.         }
  280.         else {
  281.           did -v sock_disp_lineref 10
  282.           did -ar sock_disp_lineref 9 The line that was found using the data you specified IS NOT the same as the line you want.
  283.         }
  284.         sockclose $sockname
  285.       }
  286.     }
  287.   }
  288. }
  289.  
  290. on *:SOCKCLOSE:dsock.2: {
  291.   did -ar sock_disp_check 8 IS NOT on the line that you have specified to contain the unique data/string
  292. }
  293.  
  294. on *:SOCKCLOSE:dsock.3: {
  295.   did -ar sock_disp_lineref 6 NOT FOUND
  296.   did -v sock_disp_lineref 10
  297.   did -ar sock_disp_lineref 9 The string you specified is not contained anywhere on any line.
  298. }
  299.  
  300. ; DOUBLE CLICK ON PAGE LIST
  301. on *:dialog:sock_disp:dclick:1:{
  302.   if ($did(1).seltext && $did(1).seltext != !!@@ LINE TOO LONG @@!!) {
  303.     did -ar sock_disp 13,16 $did(1).seltext
  304.     did -fu sock_disp 6
  305.   }
  306. }
  307.  
  308. ; "USE LINE" BUTTON CLICK
  309. on *:dialog:sock_disp:sclick:78:{
  310.   if ($did(1).seltext && $did(1).seltext != !!@@ LINE TOO LONG @@!!) {
  311.     did -ar sock_disp 13,16 $did(1).seltext
  312.     did -fu sock_disp 6
  313.   }
  314. }
  315.  
  316. ; "COPY LINE" BUTTON CLICK
  317. on *:dialog:sock_disp:sclick:126:{
  318.   clipboard $did(1).seltext
  319. }
  320.  
  321. ; CHAR CODE LIST
  322. on *:dialog:sock_disp:sclick:93:{
  323.   window -laCdo -t15,30 @Chr -1 -1 240 400
  324.   aline @Chr $+(Character,$chr(9),Chr Code)
  325.   var %i = 32
  326.   while (%i <= 255) {
  327.     aline @Chr $+($chr(%i),$chr(9),$chr(36),chr,$chr(40),%i,$chr(41))
  328.     inc %i
  329.   }
  330. }
  331.  
  332. ; SINGLE CLICK ON PAGE LIST
  333. on *:dialog:sock_disp:sclick:1:{
  334.   did -ar sock_disp 27 $did(1).seltext
  335.   did -ar sock_disp 29 Length: $len($did(1).seltext)
  336.   did -ar sock_disp 104 Line Number: $did(1).sel
  337. }
  338.  
  339. ; SEARCH PAGE LIST
  340. on *:dialog:sock_disp:sclick:105:{
  341.   unset %sockdispres
  342.   unset %sckdispfnd.*
  343.   var %i $did(1).lines
  344.   var %c 0
  345.   set %sockdispres 1
  346.   while (%c <= %i) {
  347.     if ($+(*,$did(101),*) iswm $did(1,%c)) {
  348.       set %sckdispfnd. [ $+ [ %sockdispres ] ] %c
  349.       inc %sockdispres
  350.     }
  351.     inc %c
  352.   }
  353.   if (%sckdispfnd.1) did -c sock_disp 1 %sckdispfnd.1
  354.   did -ar sock_disp 107 $calc(%sockdispres - 1)
  355.   set %sckdispnextimes 1
  356.   did -ar sock_disp 27 $did(1).seltext
  357.   did -ar sock_disp 29 Length: $len($did(1).seltext)
  358.   did -ar sock_disp 104 Line Number: $did(1).sel
  359. }
  360.  
  361. ; SEARCH PAGE LIST --> NEXT
  362. on *:dialog:sock_disp:sclick:102:{
  363.   if (%sckdispnextimes == $calc(%sockdispres - 1)) set %sckdispnextimes 0
  364.   inc %sckdispnextimes
  365.   did -c sock_disp 1 %sckdispfnd. [ $+ [ $calc(%sckdispnextimes) ] ]
  366.   did -ar sock_disp 27 $did(1).seltext
  367.   did -ar sock_disp 29 Length: $len($did(1).seltext)
  368.   did -ar sock_disp 104 Line Number: $did(1).sel
  369. }
  370.  
  371. ; SEARCH PAGE LIST --> GOTO
  372. on *:dialog:sock_disp:sclick:110:{
  373.   did -c sock_disp 1 $did(108)
  374.   did -ar sock_disp 27 $did(1).seltext
  375.   did -ar sock_disp 29 Length: $len($did(1).seltext)
  376.   did -ar sock_disp 104 Line Number: $did(1).sel
  377. }
  378.  
  379. alias -l updatechanges {
  380.   did -ar sock_disp 16 $did(13)
  381.   set %sckdispchanges $iif($did(sock_disp,33) != $null || $did(sock_disp,35) != $null,$chr(36) $+ regml(1),$chr(37) $+ sockreade [ $+ [ $iif($did(sock_disp,123).state == 1 && $did(sock_disp,90).seltext == After && $did(sock_disp,21).state == 1,$+(r,-,$did(sock_disp,44)),r)) ] ])
  382.   if ($did(85).state == 1) { did -ar sock_disp 16 $nohtml($did(16)) | set %sckdispchanges $chr(36) $+ nohtml( $+ %sckdispchanges $+ ) }
  383.   noop $regex($did(16),/ $+ $iif($did(33),$regexfriendly($did(33)),^) $+ (.*?) $+ $iif($did(35),$regexfriendly($did(35)),$) $+ /Si)
  384.   if ($regml(1)) { did -ar sock_disp 16 $regml(1) }
  385.   tokenize 44 $did(31)
  386.   if ($did(31) != $null) { set %sckdispchanges $chr(36) $+ remove( $+ %sckdispchanges $+ $iif($1,$chr(44) $+ $1) $+ $iif($2,$chr(44) $+ $2) $+ $iif($3,$chr(44) $+ $3) $+ $iif($4,$chr(44) $+ $4) $+ $iif($5,$chr(44) $+ $5) $+ $iif($6,$chr(44) $+ $6) $+ $iif($7,$chr(44) $+ $7) $+ $iif($8,$chr(44) $+ $8) $+ $iif($9,$chr(44) $+ $9) $+ $iif($10,$chr(44) $+ $10) $+ $iif($11,$chr(44) $+ $11) $+ $iif($12,$chr(44) $+ $12) $+ ) }
  387.   var %sckstredit = $chr(175) $+ $replace($did(31),$chr(40),OBKT,$chr(41),CBKT,$chr(44),$chr(175)) $+ $chr(175)
  388.   var %sckstredit = $regsubex(%sckstredit,/\$chrOBKT([0-9]+)CBKT/gSi,$chr(\t))
  389.   tokenize 175 %sckstredit
  390.   if ($did(31) != $null) { did -ar sock_disp 16 $remove($did(16),$1,$2,$3,$4,$5,$6,$7,$8,$9,$10,$11,$12) }
  391.   tokenize 44 $did(30)
  392.   if ($did(30) != $null) { set %sckdispchanges $chr(36) $+ replace( $+ %sckdispchanges $+ $iif($1,$chr(44) $+ $1) $+ $iif($2,$chr(44) $+ $2) $+ $iif($3,$chr(44) $+ $3) $+ $iif($4,$chr(44) $+ $4) $+ $iif($5,$chr(44) $+ $5) $+ $iif($6,$chr(44) $+ $6) $+ $iif($7,$chr(44) $+ $7) $+ $iif($8,$chr(44) $+ $8) $+ $iif($9,$chr(44) $+ $9) $+ $iif($10,$chr(44) $+ $10) $+ $iif($11,$chr(44) $+ $11) $+ $iif($12,$chr(44) $+ $12) $+ ) }
  393.   var %sckstredit = $chr(175) $+ $replace($did(30),$chr(40),OBKT,$chr(41),CBKT,$chr(44),$chr(175)) $+ $chr(175)
  394.   var %sckstredit = $regsubex(%sckstredit,/\$chrOBKT([0-9]+)CBKT/gSi,$chr(\t))
  395.   tokenize 175 %sckstredit
  396.   if ($did(30) != $null) { did -ar sock_disp 16 $replace($did(16),$1,$2,$3,$4,$5,$6,$7,$8,$9,$10,$11,$12) }
  397.   if ($did(25).state == 1) { did -ar sock_disp 16 $nohtml($did(16)) | set %sckdispchanges $chr(36) $+ nohtml( $+ %sckdispchanges $+ ) }
  398.   if ($did(92) != $null) { did -ar sock_disp 16 $eval($replace($did(92),@LINE@,$did(16)),2) | set %sckdispchanges $replace($did(92),@LINE@,%sckdispchanges) }
  399. }
  400.  
  401. ; UPDATE CHANGES
  402. on *:dialog:sock_disp:sclick:32:{
  403.   $updatechanges
  404. }
  405.  
  406. ; TOGGLE ADVANCED MODE
  407. on *:dialog:sock_disp:sclick:21:{
  408.   did $iif($did(21).state == 0,-h,-v) sock_disp 39-41,24,92,112,28,83,86-89,123,65-66,44,118,90
  409. }
  410.  
  411. ; SCRIPT CREATE
  412. on *:dialog:sock_disp:sclick:61:{
  413.   $updatechanges
  414.   dialog -mad sock_disp_create sock_disp_create
  415. }
  416.  
  417. ; ------------------- Create script ---------------
  418.  
  419. dialog sock_disp_create {
  420.   title "Create Script"
  421.   size -1 -1 130 63
  422.   option dbu
  423.   icon scksave.ico,0
  424.   edit "", 1, 6 17 96 10, limit 30 right
  425.   text "What would you like to call this file?", 2, 14 8 87 8
  426.   button "OK", 3, 21 48 37 12, default
  427.   radio ".mrc", 5, 104 15 23 7
  428.   radio ".txt", 6, 104 22 22 7
  429.   text "Note: If the filename already exists, it will be overwritten.", 4, 7 30 111 15
  430.   button "Cancel", 7, 64 48 37 12, cancel
  431. }
  432.  
  433.  
  434. ; INITILISATION COMMANDS
  435. on *:DIALOG:sock_disp_create:INIT:0: {
  436.   did -c sock_disp_create 5
  437.   did -ar sock_disp_create 1 $did(sock_disp,60)
  438. }
  439.  
  440. on *:dialog:sock_disp_create:sclick:3:{
  441.   if ($did(1) && $did(1) != notes && $did(1) != readme && $did(1) != versions) {
  442.     did -f sock_disp 61
  443.     set %sockdispdir $replace($did(sock_disp_create,1),$chr(32),$chr(95))
  444.     set %sockdispdir $regsubex(%sockdispdir,/([\!\"\£\$\%\^\&\*\(\)\=\}\{\]\[\#\~\@\'\:\;\?\,\\\|\\\\<\>\¬\`\/])/g,$null)
  445.     set %sockdispdir $+(",$scriptdir,%sockdispdir,$chr(46),$iif($did(5).state == 1,mrc,txt),")
  446.     did -ar sock_disp 128 $nopath(%sockdispdir)
  447.     unset %sckerror
  448.     did -r sock_disp 97,98
  449.     if ($did(sock_disp,13) == $null) { did -a sock_disp 97 * You have not opened a socket to choose a line from | set %sckerror yes }
  450.     if ($did(sock_disp,13) == $null || $did(sock_disp,13) == No line selected) { did -a sock_disp 97 * You have not selected a line within the socket! | set %sckerror yes }
  451.     if ($did(sock_disp,64) == $null) { did -a sock_disp 97 * Must specify value ALWAYS on a line | set %sckerror yes }
  452.     if ($did(sock_disp,42) == $null && $did(sock_disp,119).state == 1) || ($did(sock_disp,115) == $null && $did(sock_disp,119).state == 0) { did -a sock_disp 97 No trigger defined. Used !trigger | $simplerad | did -arv sock_disp 42 !trigger | did -c sock_disp 119 | did -u sock_disp 120 }
  453.     if ($did(sock_disp,48) == $null) { did -a sock_disp 97 No output message: Used Result: @RESULT@ | did -a sock_disp 48 Result: @RESULT@ }
  454.     if ($did(sock_disp,60) == $null) { did -a sock_disp 60 socket $+ $rand(100,100000) | did -a sock_disp 97 No socket defined: Used socket: $did(sock_disp,60) }
  455.     if ($did(sock_disp,73) == $null) { did -a sock_disp 97 No variable defined. Value will be unset after. }
  456.     if ($left($did(sock_disp,73),1) != $chr(37) && $did(sock_disp,73) != $null) { did -ar sock_disp 73 $chr(37) $+ $did(sock_disp,73) | did -a sock_disp 97 Corrected invalid variable - added $chr(37) $+ . }
  457.     if (%sckerror != yes) {
  458.       write -c %sockdispdir $chr(59) $iif($did(sock_disp,42).visible == $true,$did(sock_disp,42),$did(sock_disp,60)) script created using Chessnut's Simple Socket Script Creator
  459.       write %sockdispdir $crlf
  460.       write %sockdispdir $iif($did(sock_disp,42).visible == $false,$did(sock_disp,115),on *:text: $+ $did(sock_disp,42) $+ *:#: $chr(123))
  461.       if ($did(sock_disp,94).state == 1) write %sockdispdir var $chr(37) $+ sckid = $+($chr(36),right,$chr(40),$chr(36),ticks,$chr(44),5,$chr(41))
  462.       if ($did(sock_disp,94).state == 0) write %sockdispdir if ( $+ $chr(36) $+ sock( $+ $did(sock_disp,60) $+ )) .sockclose $did(sock_disp,60)
  463.       if ($did(sock_disp,120).state == 1) {
  464.         var %i = 1
  465.         while (%sckdisptrigway. [ $+ [ %i ] ]) {
  466.           write %sockdispdir $iif($did(sock_disp,94).state == 0,%sckdisptrigway. [ $+ [ %i ] ],$replace(%sckdisptrigway. [ $+ [ %i ] ],$+($chr(37),way),$+($chr(37),way) $+ . $chr(91) $chr(36) $+ + $chr(91) $chr(37) $+ sckid $chr(93) $chr(93))))
  467.           inc %i
  468.         }
  469.       }
  470.       if ($did(sock_disp,119).state = 1 && $did(sock_disp,46).state = 1) write %sockdispdir set $chr(37) $+ chan $+ $iif($did(sock_disp,94).state == 1,. $chr(91) $chr(36) $+ + $chr(91) $chr(37) $+ sckid $chr(93) $chr(93)) $chr(36) $+ chan
  471.       if ($did(sock_disp,119).state = 1 && $did(sock_disp,47).state = 1) write %sockdispdir set $chr(37) $+ nick $+ $iif($did(sock_disp,94).state == 1,. $chr(91) $chr(36) $+ + $chr(91) $chr(37) $+ sckid $chr(93) $chr(93)) $chr(36) $+ nick
  472.       write %sockdispdir sockopen $did(sock_disp,60) $+ $iif($did(sock_disp,94).state == 1,. $chr(91) $chr(36) $+ + $chr(91) $chr(37) $+ sckid $chr(93) $chr(93)) %sockdisphost %sockdispport
  473.       write %sockdispdir $chr(125)
  474.       write %sockdispdir on *:SOCKOPEN: $+ $did(sock_disp,60) $+ $iif($did(sock_disp,94).state == 1,.*) $+ : $chr(123)
  475.       write %sockdispdir sockwrite -nt $chr(36) $+ sockname $iif($did(sock_disp,28).state == 1,GET,POST) %sockdisppage HTTP/1.1
  476.       write %sockdispdir sockwrite -nt $chr(36) $+ sockname Host: %sockdisphost
  477.       $iif($did(sock_disp,40),write %sockdispdir sockwrite -nt $chr(36) $+ sockname User-Agent: $did(sock_disp,40))
  478.       var %j = 1
  479.       var %k = $did(sock_disp,88).lines
  480.       while (%j <= %k) {    
  481.         if ($did(sock_disp,88) != $null) write %sockdispdir sockwrite -nt $chr(36) $+ sockname $did(sock_disp,88, [ $+ [ %j ] ] )
  482.         inc %j
  483.       }  
  484.       write %sockdispdir sockwrite -nt $chr(36) $+ sockname $chr(36) $+ crlf
  485.       write %sockdispdir $chr(125)
  486.       write %sockdispdir on *:SOCKREAD: $+ $did(sock_disp,60) $+ $iif($did(sock_disp,94).state == 1,.*) $+ : $chr(123)
  487.       write %sockdispdir if ( $+ $chr(36) $+ sockerr) $chr(123)
  488.       if ($did(sock_disp,119).state == 1) {
  489.         if ($did(sock_disp,46).state == 1) {
  490.           write %sockdispdir msg $chr(37) $+ chan $+ $iif($did(sock_disp,94).state == 1,. $chr(91) $chr(36) $+ + $chr(91) $chr(36) $+ right( $+ $chr(36) $+ sockname,5) $chr(93) $chr(93)) Socket Error: $chr(36) $+ sockname $chr(36) $+ + . Error code: $chr(36) $+ sockerr Please inform $chr(36) $+ me of this error message.
  491.         }
  492.         if ($did(sock_disp,47).state == 1) {
  493.           write %sockdispdir notice $chr(37) $+ nick $+ $iif($did(sock_disp,94).state == 1,. $chr(91) $chr(36) $+ + $chr(91) $chr(36) $+ right( $+ $chr(36) $+ sockname,5) $chr(93) $chr(93)) Socket Error: $chr(36) $+ sockname $chr(36) $+ + . Error code: $chr(36) $+ sockerr Please inform $chr(36) $+ me of this error message.
  494.         }
  495.         if ($did(sock_disp,91).state == 1) {
  496.           write %sockdispdir echo -s Socket Error: $chr(36) $+ sockname $chr(36) $+ + . Error code: $chr(36) $+ sockerr $+ .
  497.         }  
  498.       }
  499.       else {
  500.         write %sockdispdir $chr(37) $+ way $+ $iif($did(sock_disp,94).state == 1,. $chr(91) $chr(36) $+ + $chr(91) $chr(36) $+ right( $+ $chr(36) $+ sockname,5) $chr(93) $chr(93)) Socket Error: $chr(36) $+ sockname $chr(36) $+ + . Error code: $chr(36) $+ sockerr Please inform $chr(36) $+ me of this error message.
  501.       }
  502.       write %sockdispdir halt
  503.       write %sockdispdir $chr(125)
  504.       write %sockdispdir else $chr(123)
  505.       write %sockdispdir var $chr(37) $+ sockreader
  506.       write %sockdispdir sockread $chr(37) $+ sockreader
  507.       write %sockdispdir if (* $+ $did(sock_disp,64) $+ * iswm $iif($did(sock_disp,90).seltext == Before && $did(sock_disp,123).state == 1 && $did(sock_disp,21).state == 1,$chr(37) $+ sockreader- [ $+ [ $did(sock_disp,44) ] ],$chr(37) $+ sockreader)) $+ $chr(41) $chr(123)
  508.       $iif($did(sock_disp,33) != $null || $did(sock_disp,35) != $null,write %sockdispdir noop $chr(36) $+ regex( $+ $iif($did(sock_disp,90).seltext == After && $did(sock_disp,123).state == 1 && $did(sock_disp,21).state == 1,$chr(37) $+ sockreader- [ $+ [ $did(sock_disp,44) ] ],$chr(37) $+ sockreader) $+ $chr(44) $+ / $+ $iif($did(sock_disp,33),$regexfriendly($did(sock_disp,33)),^) $+ (.*?) $+ $iif($did(sock_disp,35),$regexfriendly($did(sock_disp,35)),$) $+ /Si))
  509.       $iif($did(sock_disp,33) != $null || $did(sock_disp,35) != $null,set %sckdispchanges $replace(%sckdispchanges,$iif($did(sock_disp,90).seltext == After && $did(sock_disp,123).state == 1 && $did(sock_disp,21).state == 1,% $+ sockreader- [ $+ [ $did(sock_disp,44) ] ],% $+ sockreader),$ $+ regml(1)))
  510.       $iif($did(sock_disp,33) != $null || $did(sock_disp,35) != $null,write %sockdispdir $iif($did(sock_disp,73) == $null,var $+($chr(37),tempvar),set $did(sock_disp,73)) $replace(%sckdispchanges,@zero£,0),write %sockdispdir $iif($did(sock_disp,73) == $null,var $+($chr(37),tempvar), set $did(sock_disp,73)) $replace(%sckdispchanges,@zero£,0))
  511.       did -ar sock_disp 48 $regsubex($did(sock_disp,48),/(.*?[^ ])@RESULT@/Sig,\1 $chr(36) $+ + @RESULT@)
  512.       did -ar sock_disp 48 $regsubex($did(sock_disp,48),/@RESULT@([^ ].*?)/Sig,@RESULT@ $chr(36) $+ + \1)
  513.       if ($did(sock_disp,119).state == 1) {
  514.         var %i = 1
  515.         var %c = $did(sock_disp,48).lines
  516.         while (%i <= %c) {  
  517.           if ($did(sock_disp,46).state == 1) {
  518.             write %sockdispdir msg $chr(37) $+ chan $+ $iif($did(sock_disp,94).state == 1,. $chr(91) $chr(36) $+ + $chr(91) $chr(36) $+ right( $+ $chr(36) $+ sockname,5) $chr(93) $chr(93)) $replace($did(sock_disp,48, [ $+ [ %i ] ] ),@RESULT@,$iif($did(sock_disp,73) == $null,$+($chr(37),tempvar), $did(sock_disp,73)))
  519.           }
  520.           if ($did(sock_disp,47).state == 1) {
  521.             write %sockdispdir notice $chr(37) $+ nick $+ $iif($did(sock_disp,94).state == 1,. $chr(91) $chr(36) $+ + $chr(91) $chr(36) $+ right( $+ $chr(36) $+ sockname,5) $chr(93) $chr(93)) $replace($did(sock_disp,48, [ $+ [ %i ] ] ),@RESULT@,$iif($did(sock_disp,73) == $null,$+($chr(37),tempvar), $did(sock_disp,73)))
  522.           }
  523.           if ($did(sock_disp,91).state == 1) {
  524.             write %sockdispdir echo -s $replace($did(sock_disp,48, [ $+ [ %i ] ] ),@RESULT@,$iif($did(sock_disp,73) == $null,$+($chr(37),tempvar), $did(sock_disp,73)))
  525.           }  
  526.           inc %i
  527.         }  
  528.       }
  529.       else {
  530.         var %i = 1
  531.         var %c = $did(sock_disp,48).lines
  532.         while (%i <= %c) {  
  533.           write %sockdispdir $chr(37) $+ way $+ $iif($did(sock_disp,94).state == 1,. $chr(91) $chr(36) $+ + $chr(91) $chr(36) $+ right( $+ $chr(36) $+ sockname,5) $chr(93) $chr(93)) $replace($did(sock_disp,48, [ $+ [ %i ] ] ),@RESULT@,$iif($did(sock_disp,73) == $null,$+($chr(37),tempvar), $did(sock_disp,73)))
  534.           inc %i
  535.         }
  536.       }
  537.       if ($did(sock_disp,94).state == 1) write %sockdispdir unset $chr(37) $+ * $+ $iif($did(sock_disp,94).state == 1,. $chr(91) $chr(36) $+ + $chr(91) $chr(36) $+ right( $+ $chr(36) $+ sockname,5) $chr(93) $chr(93))
  538.       if ($did(sock_disp,123).state == 1 && $did(sock_disp,21).state == 1) write %sockdispdir unset $chr(37) $+ sockreader*
  539.       if ($did(sock_disp,119).state = 1 && $did(sock_disp,46).state = 1) write %sockdispdir unset $chr(37) $+ chan
  540.       if ($did(sock_disp,119).state = 1 && $did(sock_disp,47).state = 1) write %sockdispdir unset $chr(37) $+ nick
  541.       write %sockdispdir sockclose $chr(36) $+ sockname
  542.       write %sockdispdir $chr(125)
  543.       if ($did(sock_disp,123).state == 1 && $did(sock_disp,21).state == 1) {
  544.         write %sockdispdir if ($len($remove(%sockreader,$chr(9),$chr(32))) > 0) $chr(123)
  545.         write %sockdispdir var $chr(37) $+ x = $calc($did(sock_disp,44) - 1)
  546.         write %sockdispdir while (%x > -1) $chr(123)
  547.         write %sockdispdir if ($len(%sockreader $chr(91) $chr(36) $+ + $chr(91) $chr(36) $+ iif(%x != 0,$+(-,%x)) $chr(93) $chr(93) $+ ) <= 850) set $chr(37) $+ sockreader $chr(91) $chr(36) $+ + $chr(91) $chr(36) $+ +(-,$calc(%x + 1)) $chr(93) $chr(93) $chr(37) $+ sockreader $chr(91) $chr(36) $+ + $chr(91) $chr(36) $+ iif(%x != 0,$+(-,%x)) $chr(93) $chr(93)
  548.         write %sockdispdir dec $chr(37) $+ x
  549.         write %sockdispdir $chr(125)
  550.         write %sockdispdir $chr(125)
  551.       }
  552.       write %sockdispdir $chr(125)
  553.       write %sockdispdir $chr(125)
  554.       did -a sock_disp 97 Full script successfully saved to $+($scriptdir,%sockdispdir)
  555.       did -a sock_disp 97 SCRIPT CREATED SUCCESSFULLY.
  556.       dialog -x sock_disp_create sock_disp_create
  557.     }
  558.     else {
  559.       did -a sock_disp 97 SCRIPT NOT CREATED.
  560.       dialog -x sock_disp_create sock_disp_create
  561.     }
  562.   }
  563. }
  564.  
  565.  
  566. ; ----------------- Back to main dialog -----------------------
  567.  
  568. ; SELECT CREATION LINE
  569. on *:dialog:sock_disp:sclick:97:{
  570.   did -ar sock_disp 98 $did(97).seltext
  571. }
  572.  
  573. ; FIND ERROR
  574. on *:dialog:sock_disp:sclick:99:{
  575.   if ($did(98) == $null) halt
  576.   if (*opened a socket to choose* iswm $did(98)) || (*not selected a line* iswm $did(98)) { did -f sock_disp 5 | did -f sock_disp 2 }
  577.   if (*value ALWAYS on a line* iswm $did(98)) { did -f sock_disp 6 | did -f sock_disp G }
  578.   if (*No trigger* iswm $did(98)) { did -f sock_disp 42 }
  579.   if (*No output* iswm $did(98)) { did -f sock_disp 48 }
  580.   if (*No socket* iswm $did(98)) { did -f sock_disp 60 }
  581.   if (*No variable* iswm $did(98)) { did -f sock_disp 73 }
  582.   if (*invalid variable* iswm $did(98)) { did -f sock_disp 73 }
  583. }
  584.  
  585. ; SCRIPT TEST
  586. on *:dialog:sock_disp:sclick:51:{
  587.   if (%sockdisphost && %sockdispport && $did(13) != No line selected) {
  588.     did -h sock_disp 80
  589.     did -h sock_disp 81
  590.     did -r sock_disp 76,55,52
  591.     did -r sock_disp 68 Script initialised
  592.     if ($sock(testsock)) .sockclose testsock
  593.     set %reponce 1
  594.     unset %testvalue
  595.     sockopen testsock %sockdisphost %sockdispport
  596.   }
  597. }
  598.  
  599. on *:SOCKOPEN:testsock: {
  600.   did -a sock_disp 68 Socket opened successfully
  601.   sockwrite -nt $sockname $iif($did(sock_disp,28).state == 1,GET,POST) %sockdisppage HTTP/1.1
  602.   sockwrite -nt $sockname Host: %sockdisphost
  603.   $iif($did(sock_disp,40),sockwrite -nt $sockname User-Agent: $did(sock_disp,40))
  604.   var %j = 1
  605.   var %k = $did(sock_disp,88).lines
  606.   while (%j <= %k) {    
  607.     sockwrite -nt $sockname $did(sock_disp,88, [ $+ [ %j ] ] )
  608.     inc %j
  609.   }
  610.   sockwrite -nt $sockname $crlf
  611.   did -a sock_disp 68 Written data to socket: Host: %sockdisphost $+ , Page: %sockdisppage
  612. }
  613.  
  614. on *:SOCKREAD:testsock: {
  615.   if ($sockerr) {
  616.     did -a sock_disp 68 SOCKET ERROR: $sockerr
  617.     $iif(%testvalue != $null,did -v sock_disp 80,did -v sock_disp 81)
  618.     halt
  619.   }
  620.   else {
  621.     if (%reponce == 1) {
  622.       did -a sock_disp 68 Socket read without errors.
  623.       set %reponce 0
  624.     }
  625.     var %sockreader
  626.     sockread %sockreader
  627.     if ($len($remove(%sockreader,$chr(9),$chr(32))) = 0) halt
  628.     if ($+(*,$did(sock_disp,64),*) iswm $iif($did(sock_disp,90).seltext == Before && $did(sock_disp,123).state == 1 && $did(sock_disp,21).state == 1,%sockreader- [ $+ [ $did(sock_disp,44) ] ],%sockreader)) {
  629.       did -a sock_disp 68 Line found: $iif($did(sock_disp,90).seltext == After && $did(sock_disp,123).state == 1 && $did(sock_disp,21).state == 1,%sockreader- [ $+ [ $did(sock_disp,44) ] ],%sockreader)
  630.       did -ra sock_disp 52,55 $iif($did(sock_disp,90).seltext == After && $did(sock_disp,123).state == 1 && $did(sock_disp,21).state == 1,%sockreader- [ $+ [ $did(sock_disp,44) ] ],%sockreader)
  631.       set %sckdispchanges $iif($did(sock_disp,90).seltext == After && $did(sock_disp,123).state == 1 && $did(sock_disp,21).state == 1,$chr(37) $+ sockreader- [ $+ [ $did(sock_disp,44) ] ],$chr(37) $+ sockreader)
  632.       if ($did(sock_disp,85).state == 1) { did -ar sock_disp 55 $nohtml($did(sock_disp,55)) | set %sckdispchanges $chr(36) $+ nohtml( $+ %sckdispchanges $+ ) }
  633.       noop $regex($did(sock_disp,55),/ $+ $iif($did(sock_disp,33),$regexfriendly($did(sock_disp,33)),^) $+ (.*?) $+ $iif($did(sock_disp,35),$regexfriendly($did(sock_disp,35)),$) $+ /Si)
  634.       if ($regml(1)) set $iif($did(sock_disp,90).seltext == After && $did(sock_disp,123).state == 1 && $did(sock_disp,21).state == 1,% $+ sockreader- [ $+ [ $did(sock_disp,44) ] ],% $+ sockreader) $regml(1)
  635.       tokenize 44 $replace($did(sock_disp,31),0,@zero£)
  636.       if ($did(sock_disp,31) != $null) { did -ar sock_disp 55 $remove($did(sock_disp,16),$1,$2,$3,$4,$5,$6,$7,$8,$9,$10,$11,$12) | set %sckdispchanges $chr(36) $+ remove( $+ %sckdispchanges $+ $iif($1 != $null,$chr(44) $+ $1) $+ $iif($2,$chr(44) $+ $2) $+ $iif($3,$chr(44) $+ $3) $+ $iif($4,$chr(44) $+ $4) $+ $iif($5,$chr(44) $+ $5) $+ $iif($6,$chr(44) $+ $6) $+ $iif($7,$chr(44) $+ $7) $+ $iif($8,$chr(44) $+ $8) $+ $iif($9,$chr(44) $+ $9) $+ $iif($10,$chr(44) $+ $10) $+ $iif($11,$chr(44) $+ $11) $+ $iif($12,$chr(44) $+ $12) $+ ) }
  637.       tokenize 44 $replace($did(sock_disp,30),0,@zero£)
  638.       if ($did(sock_disp,30) != $null) { did -ar sock_disp 55 $replace($did(sock_disp,16),$1,$2,$3,$4,$5,$6,$7,$8,$9,$10,$11,$12) | set %sckdispchanges $chr(36) $+ replace( $+ %sckdispchanges $+ $iif($1,$chr(44) $+ $1) $+ $iif($2,$chr(44) $+ $2) $+ $iif($3,$chr(44) $+ $3) $+ $iif($4,$chr(44) $+ $4) $+ $iif($5,$chr(44) $+ $5) $+ $iif($6,$chr(44) $+ $6) $+ $iif($7,$chr(44) $+ $7) $+ $iif($8,$chr(44) $+ $8) $+ $iif($9,$chr(44) $+ $9) $+ $iif($10,$chr(44) $+ $10) $+ $iif($11,$chr(44) $+ $11) $+ $iif($12,$chr(44) $+ $12) $+ ) }
  639.       if ($did(sock_disp,25).state == 1) { did -ar sock_disp 55 $nohtml($did(sock_disp,16)) | set %sckdispchanges $chr(36) $+ nohtml( $+ %sckdispchanges $+ ) }
  640.       if ($did(sock_disp,92) != $null) { did -ar sock_disp 55 $eval($replace($did(sock_disp,92),@LINE@,$did(sock_disp,55)),2) | set %sckdispchanges $replace($did(sock_disp,92),@LINE@,%sckdispchanges) }
  641.       set %testvalue $eval($retchanges,2)
  642.       did -ra sock_disp 55 %testvalue
  643.       did -a sock_disp 68 $iif(%testvalue != $null,Data found: %testvalue,DATA NOT FOUND)
  644.       $iif(%testvalue != $null && $did(sock_disp,52) != HTTP/1.1 200 OK,did -v sock_disp 80,did -v sock_disp 81)
  645.       var %i = 1
  646.       var %c = $did(sock_disp,48).lines
  647.       while (%i <= %c) {    
  648.         did -a sock_disp 56 $iif($did(sock_disp,91).state == 1,$chr(124) ECHO $chr(124) $+ >,< $+ $me $+ >) $replace($did(sock_disp,48, [ $+ [ %i ] ] ),@RESULT@,%testvalue)
  649.         inc %i
  650.       }  
  651.       unset %reponce    
  652.       unset %testvalue
  653.       unset %sockreader*
  654.       sockclose testsock
  655.     }
  656.     if ($did(sock_disp,123).state == 1 && $did(sock_disp,21).state == 1) {
  657.       if ($len($remove(%sockreader,$chr(9),$chr(32))) > 0) {
  658.         var %x = $calc($did(sock_disp,44) - 1)
  659.         while (%x > -1) {
  660.           if ($len(%sockreader [ $+ [ $iif(%x != 0,$+(-,%x)) ] ]) <= 850) set %sockreader [ $+ [ $+(-,$calc(%x + 1)) ] ] %sockreader [ $+ [ $iif(%x != 0,$+(-,%x)) ] ]
  661.           dec %x
  662.         }
  663.       }
  664.     }
  665.   }
  666. }
  667.  
  668. on *:SOCKCLOSE:testsock: {
  669.   did -a sock_disp 68 Socket closed successfully
  670.   $iif(%testvalue != $null && $did(sock_disp,52) != HTTP/1.1 200 OK,did -v sock_disp 80,did -v sock_disp 81)
  671. }
  672.  
  673. ; TEST LINE SELECT
  674. on *:dialog:sock_disp:sclick:68:{
  675.   did -ar sock_disp 76 $did(68).seltext
  676. }
  677.  
  678. ; FAKE CHAT WINDOW SELECT
  679. on *:dialog:sock_disp:sclick:56:{
  680.   did -ar sock_disp 77 $did(56).seltext
  681. }
  682.  
  683. ; NEXT CLICK
  684. on *:dialog:sock_disp:sclick:70:{
  685.   did -fu sock_disp 37
  686. }
  687.  
  688. ; CHECK FROM OTHER LINE
  689. on *:dialog:sock_disp:sclick:123:{
  690.   did $iif($did(123).state == 0,-b,-e) sock_disp 65,44,66,118,90
  691. }
  692.  
  693.  
  694. ; CHECK LINES CLICK
  695. on *:dialog:sock_disp:sclick:124:{
  696.   if ($did(sock_disp,123).state == 1 && $did(sock_disp,21).state == 1) {
  697.     did -r sock_disp 125
  698.     if ($did(44)) dialog -mad sock_disp_check sock_disp_check
  699.     else did -ar sock_disp 125 The number of lines cannot be zero.
  700.   }
  701.   else {
  702.     dialog -mad sock_disp_lineref sock_disp_lineref
  703.   }
  704. }
  705.  
  706. ;;;;;;;;;;;;;;;;;;;; CHECK LINES DIALOG ;;;;;;;;;;;;;;;
  707.  
  708. dialog sock_disp_check {
  709.   title "Multiple line reference checker"
  710.   size -1 -1 155 167
  711.   option dbu
  712.   icon sckicon.ICO, 0
  713.   edit "", 1, 7 36 141 10, read autohs
  714.   text "The line you wish to get is:", 2, 8 28 86 8
  715.   text "If the following information is correct, you have the right line selected!", 3, 18 4 126 14, center
  716.   box "Specified lines", 4, 5 20 145 53
  717.   text "The line that should contain the unique data/string is:", 5, 8 49 133 8
  718.   edit "", 6, 7 58 141 10, read autohs
  719.   edit "", 7, 7 93 141 10, read autohs
  720.   text "IS on the line that you have specified to contain the unique data/string", 8, 9 105 132 14
  721.   text "The unique string you specified:", 9, 9 85 116 8
  722.   box "Valid?", 10, 5 77 145 68
  723.   icon 17, 68 121 15 15, sckcross.png, 0, hide
  724.   icon 11, 68 121 15 15, scktick.png, 0, hide
  725.   button "OK", 12, 57 149 37 12, default ok cancel
  726. }
  727.  
  728.  
  729. on *:DIALOG:sock_disp_check:INIT:0: {
  730.   did -ar sock_disp_check 7 $did(sock_disp,64)
  731.   sockopen dsock.2 %sockdisphost %sockdispport
  732. }
  733.  
  734. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  735.  
  736. ;;;;;;;;;;;;;;;;;;;; CHECK LINES DIALOG - SIMPLE ;;;;;;;;;;;;;;;
  737.  
  738. dialog sock_disp_lineref {
  739.   title "Line Reference Checker"
  740.   size -1 -1 153 168
  741.   option dbu
  742.   icon sckicon.ICO, 0
  743.   text "If the following information is correct, you have used the right data to identify the line.", 1, 23 5 110 16, center
  744.   edit "", 2, 8 39 137 10, read autohs
  745.   text "The data you have selected to identify the line is:", 3, 9 31 124 7
  746.   box "Line identification", 4, 4 22 145 66
  747.   text "The first line that contains this, and the line that you wish to get data from, is:", 5, 9 53 125 15
  748.   edit "", 6, 8 69 137 10, read autohs
  749.   button "OK", 7, 59 146 37 12, result default ok cancel
  750.   icon 11, 69 119 15 15, scktick.png, 0, hide
  751.   box "Result", 8, 4 91 145 50
  752.   text "", 9, 10 100 129 16
  753.   icon 10, 69 119 15 15, sckcross.png, 0, hide
  754. }
  755.  
  756.  
  757. on *:DIALOG:sock_disp_lineref:INIT:0: {
  758.   did -ar sock_disp_lineref 2 $did(sock_disp,64)
  759.   sockopen dsock.3 %sockdisphost %sockdispport
  760. }
  761.  
  762. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  763.  
  764. ; VIEW SCRIPT CLICK
  765. on *:dialog:sock_disp:sclick:71:{
  766.   run notepad.exe %sockdispdir
  767. }
  768.  
  769. ; TO TEST CLICK
  770. on *:dialog:sock_disp:sclick:82:{
  771.   did -fu sock_disp 38
  772. }
  773.  
  774. ; VIEW IN BROWSER
  775. on *:dialog:sock_disp:sclick:84:{
  776.   if ($left($did(3),7) != http:// && $did(3) != $null) did -ar sock_disp 3 http:// $+ $did(3)
  777.   $iif($did(3),run $did(3))
  778. }
  779.  
  780. ; SOCKCLOSE CLICK
  781. on *:dialog:sock_disp:sclick:83:{
  782.   if ($sock(testsock)) { .sockclose testsock | did -a sock_disp 68 Socket forced closed by user. }
  783. }
  784.  
  785. ; LOAD SCRIPT
  786. on *:dialog:sock_disp:sclick:111:{
  787.   if ($exists(%sockdispdir) == $true) {
  788.     if ($?!"This will load your script into remotes. Any script with the same name will be overwritten. Continue?" == $true) {
  789.       load -rs %sockdispdir
  790.       did -a sock_disp 68 Script $qt($nopath(%sockdispdir)) loaded.
  791.     }
  792.     else did -a sock_disp 68 Script loading cancelled.
  793.     did -f sock_disp 111
  794.   }
  795.   else {
  796.     did -a sock_disp 68 No such file: $qt(%sockdispdir)
  797.   }
  798. }
  799.  
  800. ; HELP CLICK
  801. on *:dialog:sock_disp:sclick:18:{
  802.   if ($+($scriptdir,SockCreator_readme.txt)) {
  803.     run $scriptdir $+ SockCreator_readme.txt
  804.   }
  805.   else echo -a Help file not found.
  806. }
  807.  
  808. ; FEEDBACK CLICK
  809. on *:dialog:sock_disp:sclick:117:{
  810.   run mailto:chessnutrs@gmail.com
  811. }
  812.  
  813. ; TRIGGER RADIO CHANGE -> ADV
  814. on *:dialog:sock_disp:sclick:120:{
  815.   did -h sock_disp 91,47,46,42
  816.   did -v sock_disp 113,115
  817. }
  818.  
  819. alias -l simplerad {
  820.   did -v sock_disp 91,47,46,42
  821.   did -h sock_disp 113,115
  822. }
  823.  
  824. ; TRIGGER RADIO CHANGE -> SIMPLE
  825. on *:dialog:sock_disp:sclick:119:{
  826.   $simplerad
  827. }
  828.  
  829. ; ADV TRIGGER OPTIONS
  830. on *:dialog:sock_disp:sclick:113:{
  831.   dialog -mad sock_disp_trig sock_disp_trig
  832. }
  833.  
  834. ; -------------- Update Checker ----------------------
  835.  
  836. dialog sock_disp_upd {
  837.   title "Autoupdater"
  838.   size -1 -1 162 229
  839.   option dbu
  840.   icon sckupd.ICO, 0
  841.   edit "Connecting to update page... (http://h1.ripway.com/Chessnut/sckupdates.txt)", 1, 8 4 145 17, read multi center
  842.   text "Newest Version:", 2, 88 31 40 8
  843.   edit "", 3, 54 30 20 10, disable
  844.   text "Current Version:", 4, 13 31 41 8
  845.   edit "", 5, 128 30 20 10, disable
  846.   text "Up-to-date?", 6, 12 47 30 8
  847.   icon 7, 44 43 15 15, scktick.png, 0, hide
  848.   box "Version check", 8, 9 23 146 56
  849.   box "Latest version", 9, 9 82 146 79
  850.   button "Cancel", 10, 63 211 38 15, cancel
  851.   text "New features:", 12, 14 91 41 8
  852.   edit "", 14, 14 102 136 55, read multi hsbar vsbar
  853.   text "Connecting to update page...", 16, 64 44 88 15
  854.   icon 17, 45 43 14 14, sckcross.png, 0, hide
  855.   box "Topics", 18, 8 163 146 45, disable
  856.   button "Latest version SwiftIRC topic", 19, 28 171 43 17, disable multi
  857.   button "Latest version Hawkee topic", 20, 94 171 43 17, disable multi
  858.   text "", 21, 61 91 36 8, hide
  859.   text "", 22, 103 91 36 8, hide
  860.   text "Click one of the above topics for the latest update download link.", 11, 16 191 133 13, disable
  861.   edit "", 13, 68 64 83 10, read autohs
  862.   text "Expected release date for next version:", 15, 11 62 56 13
  863. }
  864.  
  865. ; CHECK FOR UPDATES
  866. on *:dialog:sock_disp:sclick:122:{
  867.   if ($sock(sckdispupd)) sockclose sckdispupd
  868.   dialog -mad sock_disp_upd sock_disp_upd
  869.   did -ar sock_disp_upd 3 $remove($did(sock_disp,121),v)
  870.   sockopen sckdispupd h1.ripway.com 80
  871. }
  872.  
  873. ; http://h1.ripway.com/Chessnut/sckupdates.txt
  874. on *:SOCKOPEN:sckdispupd: {
  875.   sockwrite -nt $sockname GET /Chessnut/sckupdates.txt HTTP/1.1
  876.   sockwrite -nt $sockname Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
  877.   sockwrite -nt $sockname Accept-Language: en-gb,en;q=0.5
  878.   sockwrite -nt $sockname Host: h1.ripway.com
  879.   sockwrite -nt $sockname Keep-Alive: 300
  880.   sockwrite -nt $sockname Proxy-Connection: keep-alive
  881.   sockwrite -nt $sockname If-None-Match: "fa7ba6628f3cc71:3ff"
  882.   sockwrite -nt $sockname Pragma: no-cache
  883.   sockwrite -nt $sockname Cache-Control: no-cache
  884.   sockwrite -nt $sockname $crlf
  885. }
  886.  
  887. on *:SOCKREAD:sckdispupd: {
  888.   if ($sockerr) {
  889.     did -ar sock_disp_upd 1 Error connecting to update page: $sockerr $crlf Page: http://h1.ripway.com/Chessnut/sckupdates.txt
  890.     did -ar sock_disp_upd 16 Error connecting to update page.
  891.     halt
  892.   }
  893.   else {
  894.     var %sockreader
  895.     sockread %sockreader
  896.     if ($regex(%sockreader,/Latest Version: (.*?) !END!/)) {
  897.       did -ar sock_disp_upd 1 Connection Established.
  898.       did -ar sock_disp_upd 5 $regml(1)
  899.     }
  900.     if ($regex(%sockreader,/Latest Version Topic URLs: (.*?) !END!/)) {
  901.       tokenize 124 $regml(1)
  902.       did -ar sock_disp_upd 21 $1
  903.       did -ar sock_disp_upd 22 $2
  904.     }
  905.     if ($regex(%sockreader,/Updates in the new version: (.*?) !END!/)) {
  906.       did -ar sock_disp_upd 14 $replace($regml(1),$+($chr(124),$chr(32)),$crlf)
  907.     }
  908.     if ($regex(%sockreader,/Next Version: (.*?) !END!/)) {
  909.       if ($did(sock_disp_upd,5) <= $did(sock_disp_upd,3)) {
  910.         did -ar sock_disp_upd 13 $regml(1)
  911.       }
  912.     }
  913.     if ($regex(%sockreader,/:END OF FILE:/)) {
  914.       sockclose sckdispupd
  915.       if ($did(sock_disp_upd,5) <= $did(sock_disp_upd,3)) {
  916.         did -v sock_disp_upd 7
  917.         did -ar sock_disp_upd 16 Your Simple Socket Script Creator is up to date!
  918.         did -ev sock_disp_upd 11,18-20
  919.       }
  920.       else {
  921.         did -ev sock_disp_upd 11,17-20
  922.         did -ar sock_disp_upd 13 It's out now!
  923.         did -ar sock_disp_upd 16 Version $did(sock_disp_upd,5) has been released. You are strongly advised to update.
  924.       }
  925.     }
  926.     if (</html> iswm %sockreader) {
  927.       sockclose sckdispupd
  928.       did -ar sock_disp_upd 1 Error connecting to update page. $crlf Page: http://h1.ripway.com/Chessnut/sckupdates.txt
  929.       did -ar sock_disp_upd 16 Error connecting to update page: Url not found?
  930.     }
  931.   }
  932. }
  933.  
  934. ; SwiftIRC CLICK
  935. on *:dialog:sock_disp_upd:sclick:19:{
  936.   run $did(21)
  937. }
  938.  
  939. ; Hawkee CLICK
  940. on *:dialog:sock_disp_upd:sclick:20:{
  941.   run $did(22)
  942. }
  943.  
  944.  
  945. ; ---------------------- Trigger Dialog ------------------------
  946.  
  947. dialog sock_disp_trig {
  948.   title "Trigger Creation"
  949.   size -1 -1 162 213
  950.   option dbu
  951.   icon sckicon.ico,0
  952.   tab "Advanced Trigger Creation", 1, 7 2 146 195
  953.   box "Finished Trigger", 2, 15 152 133 27, tab 1
  954.   button "Cancel", 3, 107 181 37 12, tab 1 cancel
  955.   button "Use Trigger", 4, 14 181 37 12, tab 1 ok cancel default
  956.   edit "", 5, 19 161 124 12, tab 1 read autohs
  957.   box "Starting characters", 7, 15 18 132 36, tab 1
  958.   text "Enter possible starting characters. E.G. '!@-' will trigger on !TEXT, @TEXT and -TEXT", 9, 21 38 122 13, tab 1
  959.   radio "Message channel", 12, 80 110 50 7, tab 1
  960.   radio "Notice nick", 18, 80 119 50 7, group tab 1
  961.   radio "Echo status", 11, 80 128 50 7, tab 1
  962.   box "Define starting character action", 13, 15 92 133 59, tab 1
  963.   list 17, 22 101 50 43, tab 1 size
  964.   button "See example", 6, 108 200 36 10, tab 1
  965.   edit "", 8, 23 26 117 12, autohs
  966.   text "Enter possible text triggers separated with a comma. E.G. 'google,search,find'", 14, 21 75 122 13
  967.   box "Text trigger", 15, 15 55 132 36
  968.   edit "", 16, 22 63 117 12, autohs
  969. }
  970.  
  971.  
  972. ; INITILISATION COMMANDS
  973. on *:DIALOG:sock_disp_trig:INIT:0: {
  974.   did -c sock_disp_trig 12
  975.   if ($did(sock_disp,115) != $null) {
  976.     noop $regex($did(sock_disp,115),/\[(.*?)\]\((.*?)\)/g)
  977.     did -ar sock_disp_trig 8 $remove($regml(1),\)
  978.     did -ar sock_disp_trig 16 $replace($remove($regml(2),\),$chr(124),$chr(44))
  979.     var %i = 0
  980.     while (%i != $len($did(8))) {
  981.       inc %i
  982.       did -a sock_disp_trig 17 $mid($did(8),%i,1)
  983.       if (!%sckdisptrigt. [ $+ [ $mid($did(8),%i,1) ] ]) set %sckdisptrigt. [ $+ [ $mid($did(8),%i,1) ] ] ,12,18,11
  984.     }
  985.     if ($did(16) != $null && $did(8) != $null) did -ar sock_disp_trig 5 on $+($chr(36),*:text:/^,$chr(91),$regexfriendly($did(8)),$chr(93),$chr(40),$replace($regexfriendly($did(16)),$chr(44),$chr(124)),$chr(41),/Si:#:, ,$chr(123))
  986.   }
  987. }
  988.  
  989. ; PRIM TRIGGER EDIT
  990. on *:dialog:sock_disp_trig:edit:8:{
  991.   did -r sock_disp_trig 17,5
  992.   if ($did(16) != $null && $did(8) != $null) did -ar sock_disp_trig 5 on $+($chr(36),*:text:/^,$chr(91),$regexfriendly($did(8)),$chr(93),$chr(40),$replace($regexfriendly($did(16)),$chr(44),$chr(124)),$chr(41),/Si:#:, ,$chr(123))
  993.   var %i = 0
  994.   while (%i != $len($did(8))) {
  995.     inc %i
  996.     did -a sock_disp_trig 17 $mid($did(8),%i,1)
  997.     if (!%sckdisptrigt. [ $+ [ $mid($did(8),%i,1) ] ]) set %sckdisptrigt. [ $+ [ $mid($did(8),%i,1) ] ] ,12,18,11
  998.   }
  999. }
  1000.  
  1001. ; SEC TRIGGER EDIT
  1002. on *:dialog:sock_disp_trig:edit:16:{
  1003.   did -r sock_disp_trig 5
  1004.   if ($did(16) != $null && $did(8) != $null) did -ar sock_disp_trig 5 on $+($chr(36),*:text:/^,$chr(91),$regexfriendly($did(8)),$chr(93),$chr(40),$replace($regexfriendly($did(16)),$chr(44),$chr(124)),$chr(41),/Si:#:, ,$chr(123))
  1005. }
  1006.  
  1007. ; RADIO CHANGES
  1008. on *:dialog:sock_disp_trig:sclick:12:{
  1009.   set %sckdisptrigt. [ $+ [ $did(17).seltext ] ] ,12,18,11
  1010. }
  1011. on *:dialog:sock_disp_trig:sclick:18:{
  1012.   set %sckdisptrigt. [ $+ [ $did(17).seltext ] ] ,18,12,11
  1013. }
  1014. on *:dialog:sock_disp_trig:sclick:11:{
  1015.   set %sckdisptrigt. [ $+ [ $did(17).seltext ] ] ,11,18,12
  1016. }
  1017.  
  1018. ; LISTBOX CHANGE
  1019. on *:dialog:sock_disp_trig:sclick:17:{
  1020.   tokenize 44 %sckdisptrigt. [ $+ [ $did(17).seltext ] ]
  1021.   did -c sock_disp_trig $1
  1022.   did -u sock_disp_trig $2 $+ $chr(44) $+ $3
  1023. }
  1024.  
  1025. ; USE TRIGGER
  1026. on *:dialog:sock_disp_trig:sclick:4:{
  1027.   if ($did(16) != $null && $did(8) != $null) did -ar sock_disp_trig 5 on $+($chr(36),*:text:/^,$chr(91),$regexfriendly($did(8)),$chr(93),$chr(40),$replace($regexfriendly($did(16)),$chr(44),$chr(124)),$chr(41),/Si:#:, ,$chr(123))
  1028.   unset %sckdisptrigway.*
  1029.   var %i = 1
  1030.   while (%i <= $len($did(8))) {
  1031.     if ($gettok(%sckdisptrigt. [ $+ [ $mid($did(8),%i,1) ] ],1,44) == 12) set %sckdisptrigway. [ $+ [ %i ] ] msg $+($chr(36),chan)
  1032.     if ($gettok(%sckdisptrigt. [ $+ [ $mid($did(8),%i,1) ] ],1,44) == 18) set %sckdisptrigway. [ $+ [ %i ] ] notice $+($chr(36),nick)
  1033.     if ($gettok(%sckdisptrigt. [ $+ [ $mid($did(8),%i,1) ] ],1,44) == 11) set %sckdisptrigway. [ $+ [ %i ] ] echo -s
  1034.     set %sckdisptrigway. [ $+ [ %i ] ] if $+($chr(40),$chr(36),left,$chr(40),$chr(36),1,$chr(44),1,$chr(41),$chr(32),==,$chr(32),$mid($did(8),%i,1),$chr(41)) set $+($chr(37),way) %sckdisptrigway. [ $+ [ %i ] ]
  1035.     inc %i
  1036.   }
  1037.   did -ar sock_disp 115 $did(5)
  1038. }
  1039.  
  1040. ; SEE EXAMPLE
  1041. on *:dialog:sock_disp_trig:sclick:6:{
  1042.   did -ar sock_disp_trig 8 !@-
  1043.   did -ar sock_disp_trig 16 google,search,find
  1044.   did -ar sock_disp_trig 5 on $+($chr(36),*:text:/^,$chr(91),$regexfriendly($did(8)),$chr(93),$chr(40),$replace($regexfriendly($did(16)),$chr(44),$chr(124)),$chr(41)/Si:#:, ,$chr(123))
  1045.   set %sckdisptrigt.! ,18,11,12
  1046.   set %sckdisptrigt.@ ,12,18,11
  1047.   set %sckdisptrigt.- ,11,18,11
  1048.   did -r sock_disp_trig 17
  1049.   var %i = 0
  1050.   while (%i != $len($did(8))) {
  1051.     inc %i
  1052.     did -a sock_disp_trig 17 $mid($did(8),%i,1)
  1053.     if (!%sckdisptrigt. [ $+ [ $mid($did(8),%i,1) ] ]) set %sckdisptrigt. [ $+ [ $mid($did(8),%i,1) ] ] ,12,18,11
  1054.   }
  1055. }
  1056.  
  1057. ; CLOSE TRIGGER CREATION
  1058. on *:dialog:sock_disp_trig:close:0:{  
  1059.   var %i = 0
  1060.   while (%i != $len($did(8))) {
  1061.     inc %i
  1062.     did -a sock_disp_trig 17 $mid($did(8),%i,1)
  1063.     set %sckdisptrigsafe. [ $+ [ $mid($did(8),%i,1) ] ] %sckdisptrigt. [ $+ [ $mid($did(8),%i,1) ] ]
  1064.   }
  1065.   unset %sckdisptrigt.*
  1066.   var %i = 0
  1067.   while (%i != $len($did(8))) {
  1068.     inc %i
  1069.     did -a sock_disp_trig 17 $mid($did(8),%i,1)
  1070.     set %sckdisptrigt. [ $+ [ $mid($did(8),%i,1) ] ] %sckdisptrigsafe. [ $+ [ $mid($did(8),%i,1) ] ]
  1071.   }
  1072.   unset %sckdisptrigsafe.*
  1073. }

Comments