View difference between Paste ID: Byr7XG7Q and yPC1Hb4v
SHOW: | | - or go back to the newest paste.
1
// Some generic lists that may be used elsewhere
2
3
tld = [com net org de us cz fr gb jp ro ru se uk ws]
4
char_high = [ABCDEFGHIJKLMNOPQRSTUVWXYZ]
5
char_low  = [abcdefghijklmnopqrstuvwxyz]
6
7
// Some generic commands that may be used elsewhere
8
9
createine = [if (=s (getalias $arg1) "") [$arg1 = $arg2]]
10
append = [$arg1 = (concat (getalias $arg1) $arg2)]
11
12
charcase = [
13
	_str = $arg1
14
	_bool = [? $arg1 $char_high $char_low]
15
	loop c (strlen $arg1) [
16
		_char = (substr $_str $c 1)
17
		if (> (strstr (_bool (! $arg2)) $_char) -1) [
18
			_str = (strreplace $_str $_char (substr (_bool $arg2) (strstr (_bool (! $arg2)) $_char) 1))
19
		]
20
	]
21
	result $_str
22
]
23
24
isnum = [
25
	_bool = 1
26
	loop n (strlen $arg1) [
27
		if (< (strstr "0123456789." (substr $arg1 $n 1)) 0) [_bool = 0]
28
	]
29
	result $_bool
30
]
31
32
isip = [
33
	&& (
34
		= (listlen (strreplace $arg1 . " ")) 4
35
	) (
36
		< (listfind i (strreplace $arg1 . " ") [|| (> $i 255) (< $i 0)]) 0
37
	) (isnum $arg1)
38
]
39
40
listdelall = [
41
	_str = $arg1
42
	looplist i $arg2 [_str = (listdel $_str $i)]
43
	result $_str
44
]
45
46
mins = [
47
	_str = (at $arg1 0)
48
	looplist i $arg1 [if (<s $i $_str) [_str = $i]]
49
	result $_str
50
]
51-
	_qc_servname = (substr $_qc_servname 1)
51+
52-
	listcomplete qc $_qc_servname
52+
sortlistdes = [
53-
	listcomplete qcdelserv $_qc_servname
53+
	_list = ""
54-
	listcomplete qcviewserv $_qc_servname
54+
	loop p (listlen $arg1) [
55
		append _list (mins (listdelall $arg1 $_list))
56
	]
57
	result $_list
58
]
59
60
// Alias variables for the first use
61
62
createine _qc_servlist ""
63
createine _qc_servname ""
64
65
// Define some commands as helpers
66
67
_qc_findserv = [listfind i $_qc_servlist [=s $arg1 (at $i 0)]]
68
_qc_complete = [
69
	_qc_servname = ""
70
	looplist i $_qc_servlist [append _qc_servname (at $i 0)]
71
	_qc_servname = (substr (sortlistdes $_qc_servname) 1)
72
	looplist i "qc qcdelserv qcviewserv" [
73
		listcomplete $i $_qc_servname
74
	]
75
]
76
_qc_info = [
77
	_qc_sel = (at $_qc_servlist (_qc_findserv $arg1))
78
	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))
79
]
80
81
// Below here lies the magic, user commands.
82
83
qcaddserv = [
84
	cond (|| (> (_qc_findserv $arg1) -1) (isip $arg1)) [
85
		error "^f3QC entry already exists or is invalid!"
86
	] (
87
		? (>= $numargs 2) (
88
			? (< (indexof $tld (charcase (at (strreplace $arg2 . " ") (- (listlen (strreplace $arg2 . " ")) 1)))) 0) (! (isip $arg2))
89
		) (! (isconnected))
90
	) [
91
		error "^f3IP or Domain is invalid!"
92
	] [
93
		append _qc_servlist (
94
			format ["%1 %2 %3"] @arg1 (
95
				? (> @numargs 1) $arg2 (connectedip)
96
			) (
97
				? (> @numargs 2) $arg3 (? (isconnected) (connectedport) 28785)
98
			)
99
		)
100
		echo "^f2QC ^f7entry^f2" $arg1 "^f7has been included successfully!"
101
		_qc_complete
102
	]
103
]
104
105
qcdelserv = [
106
	if (< (_qc_findserv $arg1) 0) [
107
		error "^f3QC entry does not exist!"
108
	] [
109
		_qc_servlist = (listdel $_qc_servlist (format ["%1"] (at $_qc_servlist (_qc_findserv $arg1))))
110
		echo "^f2QC ^f7entry^f2" $arg1 "^f7has been deleted successfully!"
111
		_qc_complete
112
	]
113
]
114
115
qclistserv = [
116
	if (=s $_qc_servlist "") [error "^f3No registered entries!"] [
117
		if $numargs [looplist i $_qc_servname [_qc_info $i]] [
118
			echo (format "^f2%1^f7 Available servers: ^f2%2" (listlen $_qc_servname) (strreplace (prettylist $_qc_servname) "," "^f7,^f2"))
119
		]
120
	]
121
]
122
123
qcviewserv = [
124
	if (< (_qc_findserv $arg1) 0) [
125
		error "^f3QC entry does not exist!"
126
	] [_qc_info $arg1]
127
]
128
129
qc = [
130
	if (=s $_qc_servlist "") [error "^f3No registered entries!"] [
131
		connect (at (at $_qc_servlist (_qc_findserv $arg1)) 1) (at (at $_qc_servlist (_qc_findserv $arg1)) 2)
132
	]
133
]
134
135
// Compile tab completion upon execution, just in case
136
137
_qc_complete
138