1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178
|
:macro Convers
echo
echo Konferenn server LinPac %V
echo Vstup %C v %T
echo
if %(exist STN_NICKNAME) = 1
echo Ahoj %STN_NICKNAME, vtej v konferenci !
else
echo Ahoj %N, vtej v konferenci !
endif
echo Pro npovdu napi /H
echo
;;*********************** INICIALIZACE ************************
set CONVERS "LP_CONVERS" ;;Pro rozpoznani kanalu na kterem bezi koference
set LOGTIME %T ;;Cas vstupu do konference
set CALL %C ;;Znacka ucastnika
if "%N" = "%U" ;;Zjisteni jmena ucastnika
set NAME "???"
else
set NAME "%N"
endif
set LAST "%<"
set OUT1 ""
set OUT2 ""
set OUT3 ""
set OUT4 ""
set OUT5 ""
set OUT6 ""
set OUT7 ""
set OUT8 ""
set MSG1 ""
set MSG2 ""
set MSG3 ""
set MSG4 ""
set MSG5 ""
set MSG6 ""
set MSG7 ""
set MSG8 ""
set LAST "*** Vstupuje do konference v %T ***"
conv @SENDALL
label MAIN
flush
;;**** KONTROLA, ZDA SE NEMA NECO POSLAT Z JINYCH KANALU ****
set i 1
label TESTOUT
if "%OUT%i" <> "" ;;Prislo neco z jineho kanalu ?
echo <%C@%i> ;; ANO - vypis informace
echo %OUT%i ;; vypis text
set OUT%i "" ;; vprazdni buffer
flush
endif
if "%MSG%i" <> "" ;;Totez pro soukrome zpravy
echo *%C@%i*
echo %MSG%i
set MSG%i ""
flush
endif
set i %[%i+1]
if (%i <= 8) goto TESTOUT ;;Opakuj pro vsechny kanaly
set LAST "%<" ;; Zjisti zda neprisel novy text
if ("%LAST" = "") goto MAIN
;;UZIVATEL ZADAL NEJAKY RETEZEC
if ("%(strleft 1 "%LAST")" = "/") goto COMMAND ;;Zacina lomitkem - je to prikaz
conv @SENDALL ;;Neni prikaz - rozesli vsem jako text
goto MAIN
;;**** ODESLANI RETEZCE VSEM STANICIM ****
label SENDALL
set I 1
label SENDING
if "%CONVERS@%I" = "LP_CONVERS" ;;Pokud dany kanal je v konferenci
if %I <> %K ;; (a neni to zrovna nas kanal)
set@%I OUT%K "%LAST" ;;Posli text na dany kanal
endif
endif
set I %[%I+1]
if (%I <= 8) goto SENDING
return
;; **** VYHODNOCENI PRIKAZU ****
label COMMAND
set CMD "%(Upcase %LAST)"
if (%CMD = /Q) goto KONEC
if (%CMD = /H) goto HELP
if (%CMD = /W) goto WHO
if (%CMD = /U) goto WHO
if (%(strleft 4 "%CMD") = "/MSG") goto MSGS
echo *** Neznm pkaz.
goto MAIN
;; ************************ PRIKAZ /H **************************
label HELP
echo *** Pkazy konference:
echo /H - tato npovda
echo /MSG <call> - posln privtn zprvy
echo /Q - odpojen od konference
echo /W nebo /U - seznam uivatel
echo ***
goto MAIN
;; ************************ PRIKAZ /MSG *************************
label MSGS
;; ODSTRANENI '/MSG'
set I %(strpos " " "%LAST")
if (%I = 0) goto MSGERROR
set I %[%(strlen %LAST) - %I - 1]
set LAST "%(strr %I "%LAST")"
;; ROZDELENI NA ZPRAVU A ZNACKU
set I %(strpos " " "%LAST")
if (%I = 0) goto MSGERROR
set MSGC "%(strleft %I "%LAST")"
set MSGC "%(upcase "%MSGC")"
set I %[%(strlen "%LAST") - %I - 1]
set LAST "%(strr %I %LAST)"
;; VYHLEDANI ZNACKY
set FND 0
set I 1
label CMSGS
if %CALL@%I = %MSGC
set@%I MSG%K "%LAST"
set FND 1
endif
set I %[%I+1]
if (%I < 9) goto CMSGS
if %FND = 0
echo *** Nikdo s takovou znakou nen v konferenci
endif
unset MSGC FND
goto MAIN
;; Chyba pri MSGS
label MSGERROR
echo *** Nutno zadat znaku a zprvu !
goto MAIN
; ************************ PRIKAZ /W **********************
label WHO
echo *** Seznam uivatel:
set I 1
label CWHO
if "%CONVERS@%I" = "LP_CONVERS"
echo %CALL@%I - %NAME@%I - pipojen od %LOGTIME@%I
endif
set I %[%I+1]
if (%I < 9) goto CWHO
echo ***
goto MAIN
; ************************ ODPOJENI ***********************
label KONEC
set LAST "*** Odpojen od konference v %T ***"
echo Vstup z konference v %T.
if %(exist STN_NICKNAME) = 1
echo Pij zase, %STN_NICKNAME !
else
echo Pij zase, %N !
endif
conv @SENDALL
unset CONVERS LOGTIME CALL NAME I CMD
unset OUT1 OUT2 OUT3 OUT4 OUT5 OUT6 OUT7 OUT8
unset MSG1 MSG2 MSG3 MSG4 MSG5 MSG6 MSG7 MSG8
|