Metropoli BBS
VIEWER: login.pps MODE: TEXT (CP437)
; Messy source? .. hum.. who gives a shit?

STRING NAME,K, NUPPER, PAGER, NUPPIE, NUP, F, PWD, CHATPPE
BOOLEAN USENUP, USEPAGE
INTEGER CHOSEN, TRIES, X, MAXTRIES, pwdtries, Y

PRINT "@POFF@"
FOPEN 0, PPEPATH()+"LOGIN.CFG", O_RW, S_DB
  FGET 0, NUPPER
  FGET 0, PAGER
  FGET 0, CHATPPE
  FGET 0, NUPPIE
  FGET 0, MAXTRIES
FCLOSE 0  
IF (UPPER(NUPPER) = "NO") THEN USENUP = TRUE
	ELSE USENUP = FALSE
	endif
IF (UPPER(PAGER) = "NO") THEN USEPAGE = TRUE
	ELSE USENUP = FALSE
	endif	
:entername
if (tries > MAXTRIES-1) then
		Cls
		PRINTLN "@X02TOO MANY NAME TRiES"
		DTROFF
		HANGUP
		ENDIF
CLS
DISPFILE PPEPATH()+"LOGIN.PCB", GRAPH
Ansipos 19,4
:NotJustEnterDumbAss
INPUTSTR "_", NAME, 7, 50, MASK_ASCII()+"¢æå¥ÆÅ", UPCASE
if (NAME = "") then goto NotJustEnterDumbAss: endif
if (U_RECNUM(NAME) = -1) then
:menu
Ansipos 32,11: PRINT "@X02eSC = lOGOFF"
			 AnsiPos 3,9
			 Print "@X04|-@X02CONTiNUE@X04-@X02AS@X04-@X02NEWUSER@X04-|"
			 chosen = 1
:d
			 k = inkey()
			 IF (k = chr(27)) then
		 	        	   DISPFILE PPEPATH()+"LOGOFF.PCB", GRAPH
					   DTROFF
			        	   HANGUP
					   ENDIF			 		   
			 if (k = chr(13)) then goto checkwhat: endif
			 if (k = "RIGHT") then
			 		  inc chosen
			 		  if (chosen = 2) then
			 		  		AnsiPos 3, 9
			 		  		Print "@X02|-CONTiNUE-AS-NEWUSER-|"
			 		  		AnsiPos 29,9
							Print "@X04|----@X02RE-ENTER@X04-@X02NAME@X04----|"
							chosen = 2
			 		  		endif
					  if (chosen = 3) then 
					  		Ansipos 29,9
					  		Print "@X02|----RE-ENTER-NAME----|"
					  		Ansipos 55,9
					  		Print "@X04|-----@X02PAGE@X04-@X02SYSOP!@X04-----|"
							chosen = 3
							endif
					  if (chosen = 4) then
					  		Ansipos 55,9
					  		Print "@X02|-----PAGE-SYSOP!-----|"
					  		Ansipos 3,9
					  		Print "@X04|-@X02CONTiNUE@X04-@X02AS@X04-@X02NEWUSER@X04-|"
					  		chosen = 1
					  		endif
			 endif
			 if (k = "LEFT") then
 			 		  dec chosen
			 		  if (chosen = 2) then
					  		Ansipos 55,9
 					  		Print "@X02|-----PAGE-SYSOP!-----|"
			 		  		AnsiPos 29,9
							Print "@X04|----@X02RE-ENTER@X04-@X02NAME@X04----|"
							chosen = 2
			 		  		endif
					  if (chosen = 0) then 
			 		  		AnsiPos 3, 9
			 		  		Print "@X02|-CONTiNUE-AS-NEWUSER-|"
					  		Ansipos 55,9
					  		Print "@X04|-----@X02PAGE@X04-@X02SYSOP!@X04-----|"
							chosen = 3
							endif
					  if (chosen = 1) then
					  		Ansipos 29,9
					  		Print "@X02|----RE-ENTER-NAME----|"
					  		Ansipos 3,9
					  		Print "@X04|-@X02CONTiNUE@X04-@X02AS@X04-@X02NEWUSER@X04-|"
					  		chosen = 1
					  		endif
					  		
			 endif
			 goto d
ELSE
GetALTuser U_RECNUM(NAME)
			       ANSIPOS 19, 6
			       PRINT "@X02"+U_CITY
:pwdenter
inc pwdtries
if (pwdtries > Maxtries) then
			    DISPFILE PPEPATH()+"WRONGPWD.PCB", GRAPH
			    DTROFF
			    HANGUP
			    ENDIF
Ansipos 19,5 
InputStr "_", PWD, 7, 50, MASK_ASCII()+"¢æå¥ÆÅ", ECHODOTS
if (UPPER(PWD) = UPPER(U_PWD)) THEN
			       ANSIPOS 19, 6
			       PRINT "                                    "		
			       GOTO LOGIN
else
	ANSIPOS 19, 6
	PRINT "@X04Wrong Password Entered, Tries Left : ",MAXTRIES-PwdTries
	Pwd = ""
	AnsiPos 19, 5
	Print "                                                         "
	goto PwdEnter
endif 
ENDIF
:LOGIN
kbdstuff NAME+CHR(13)+CHR(13)
kbdstuff PWD+CHR(13)
CLS
goto endie
:checkwhat			 
if (chosen = 1) then
		if (USENUP = FALSE) THEN CALL NUPPER
			else
			CLS
			PRINTLN "@X01|-----------------------------------------------------------------------------|"
			PRINTLN " @X02ENTER NUP: "
			PRINTLN "@X01|-----------------------------------------------------------------------------|"
		        ANSIPOS 13,2
		        INPUTSTR "_", NUP, 7, 30, MASK_ASCII()+"¢æå¥ÆÅ", UPCASE
		         IF (UPPER(NUP) = UPPER(NUPPIE)) THEN
		         				 DISPFILE PPEPATH()+"CORRECT.PCB", GRAPH
		            ELSE
		            				 DISPFILE PPEPATH()+"WRONG.PCB", GRAPH
							 DTROFF
							 HANGUP
		            ENDIF
		       ENDIF
ENDIF
IF (Chosen = 2) then 
		inc tries
		goto entername
		endif		            
IF (Chosen = 3) then
		CLS
		PRINTLN "@X02PAGiNG SYSOP ..."
		PRINTLN "@X01|-------------------------------------|"
		PRINTLN ""
		PRINTLN "@X01|-------------------------------------|@X02"
print "@X8F"
ANSIPOS 10,10: SPRINT "USER PAGiNG! PRESS <ENTER> TO CHAT / SPACE TO LOGOFF USER"
print "@X02"
		ANSIPOS 1,3
:doodle
		For x = 1 to 39
			Print "·"
          		sound 400
	        For y = 1 to 25
		F = KINKEY()
	        if (f = chr(13)) then
	        	Sound 0
	        	goto sysopin
	        	endif
		if (f = " ") then
			Println
			Print "@X07Stack Error!"
			for y = 1 to 100
			   Print Chr(Random(255))
			next
			dtroff  ; should hangup user.. 
			Hangup  ; just in case ;)
			endif
		NEXT
		Sound 0
		NEXT
	
endif
CLS
DISPFILE PPEPATH()+"LOGIN.PCB", GRAPH
goto menu
:sysopin
CALL CHATPPE
CLS
DISPFILE PPEPATH()+"LOGIN.PCB", GRAPH
GOTO MENU
:endie
[ RETURN TO DIRECTORY ]