View difference between Paste ID: wmHHMDeY and USRMAKdr
SHOW: | | - or go back to the newest paste.
1
// Some generic commands that may be used elsewhere
2-
iscorrectip = [result (= (listlen (strreplace $arg1 . " ")) 4)]
2+
3
createine = [ if (=s (getalias $arg1) "") [ $arg1 = $arg2 ] ]
4-
	connect (
4+
append = [$arg1 = (concat (getalias $arg1) $arg2)]
5-
		at (at $qc_servlist (listfind i $qc_servlist [(=s @arg1 (at $i 0))])) 1
5+
strtochar = [
6-
	) (
6+
	temp = ""
7-
		at (at $qc_servlist (listfind i $qc_servlist [(=s @arg1 (at $i 0))])) 2
7+
	loop c (strlen $arg1) [
8
		append temp (format ["%1"] (substr $arg1 $c 1))
9
	]
10
	result $temp
11
]
12-
	cond (= (listfind i $qc_servlist [(=s @arg1 (at $i 0))]) 0) [
12+
13-
		echo "^f7QC entry already exists!"
13+
// Ugly and could use many improvements, but for
14-
	] (? (>= $numargs 2) (! (iscorrectip @arg2)) (! (isconnected))) [
14+
// the most part, it does its job pretty nicely
15-
		echo "^f7Incorrect IP was rejected!"
15+
16
isip = [
17
	result (
18
		&& (
19
			= (listlen (strreplace $arg1 . " ")) 4
20
		) (
21-
				? (isconnected) (connectedport) (? (> $numargs 2) @arg3 28785)
21+
			< (listfind i (strreplace $arg1 . " ") [|| (> $i 255) (< $i 0)]) 0
22
		) (
23
			< (listfind p (strtochar $arg1) [< (indexof "0 1 2 3 4 5 6 7 8 9 ." $p) 0]) 0
24-
		qc_servname = ""
24+
25-
		looplist i $qc_servlist [append qc_servname (at $i 0)]
25+
26-
		listcomplete qc $qc_servname
26+
27
28-
]
28+
// Alias variables for the first use
29
30
createine qc_servlist ""
31
createine qc_servname ""
32
createine qc_sel      ""
33
34
// Define some commands as helpers
35
36
qc_findserv = [listfind i $qc_servlist [=s @arg1 (at $i 0)]]
37
qc_complete = [
38
	qc_servname = ""
39
	looplist i $qc_servlist [append qc_servname (at $i 0)]
40
	qc_servname = (substr $qc_servname 1)
41
	listcomplete qc $qc_servname
42
	listcomplete delqcserv $qc_servname
43
	listcomplete viewqcserv $qc_servname
44
]
45
46
// Below here lies the magic, user commands.
47
48
addqcserv = [
49
	cond (|| (> (qc_findserv $arg1) -1) (isip $arg1)) [
50
		error "^f3QC entry already exists or is invalid!"
51
	] (
52
		? (>= $numargs 2) (
53
			? (< (indexof "com org net de us" (at (strreplace $arg2 . " ") (- (listlen (strreplace $arg2 . " ")) 1))) 0) (! (isip $arg2))
54
		) (! (isconnected))
55
	) [
56
		error "^f3Incorrect IP was rejected!"
57
	] [
58
		append qc_servlist (
59
			format ["%1 %2 %3"] @arg1 (
60
				? (isconnected) (connectedip) @arg2
61
			) (
62
				? (isconnected) (connectedport) (? (> @numargs 2) @arg3 28785)
63
			)
64
		)
65
		echo "^f2QC ^f7entry has been included successfully!"
66
		qc_complete
67
	]
68
]
69
70
delqcserv = [
71
	if (< (qc_findserv $arg1) 0) [
72
		error "^f3QC entry does not exist!"
73
	] [
74
		qc_servlist = (listdel $qc_servlist (format ["%1"] (at $qc_servlist (qc_findserv $arg1))))
75
		qc_complete
76
	]
77
]
78
79
listqcserv = [
80
	echo (format "^f2%1^f7 Available servers: ^f2%2" (listlen $qc_servname) (strreplace $qc_servname " " "^f7, ^f2"))
81
]
82
83
viewqcserv = [
84
	qc_sel = (at $qc_servlist (qc_findserv $arg1))
85
	echo (format "^f7Name: ^f2%1 ^f7%2: ^f2%3 ^f7Port: ^f2%4" (at $qc_sel 0) (? (isip (at $qc_sel 1)) IP Domain) (at $qc_sel 1) (at $qc_sel 2))
86
]
87
88
qc = [
89
	if (!=s $qc_servlist "") [
90
		connect (at (at $qc_servlist (qc_findserv $arg1)) 1) (at (at $qc_servlist (qc_findserv $arg1)) 2)
91
	]
92
]
93
94
// Compile tab completion upon execution, just in case
95
96
qc_complete
97