View difference between Paste ID: w6BDGr8r and Byr7XG7Q
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 = [
40+
41
	_str = (at $arg1 0)
42-
	looplist i $arg2 [_str = (listdel $_str $i)]
42+
43
	result $_str
44
]
45
46
maxs = [
47
	_str = (at $arg1 0)
48
	looplist i $arg1 [if (>s $i $_str) [_str = $i]]
49
	result $_str
50
]
51
52-
sortlistdes = [
52+
sortlist = [
53
	_list = ""
54
	loop p (listlen $arg1) [
55-
		append _list (mins (listdelall $arg1 $_list))
55+
		append _list (
56
			format ["%1"] ((? $arg2 maxs mins) (listdel $arg1 $_list))
57
		)
58
	]
59
	result $_list
60
]
61
62
// Alias variables for the first use
63
64
createine _qc_servlist ""
65
createine _qc_servname ""
66
67
// Define some commands as helpers
68
69
_qc_findserv = [listfind i $_qc_servlist [=s $arg1 (at $i 0)]]
70
_qc_complete = [
71-
	_qc_servname = (substr (sortlistdes $_qc_servname) 1)
71+
72
	looplist i $_qc_servlist [append _qc_servname (at $i 0)]
73
	_qc_servname = (substr (sortlist $_qc_servname) 1)
74
	looplist i "qc qcdelserv qcviewserv" [
75
		listcomplete $i $_qc_servname
76
	]
77
]
78
_qc_info = [
79
	_qc_sel = (at $_qc_servlist (_qc_findserv $arg1))
80
	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))
81
]
82
83
// Below here lies the magic, user commands.
84
85
qcaddserv = [
86
	cond (|| (> (_qc_findserv $arg1) -1) (isip $arg1)) [
87
		error "^f3QC entry already exists or is invalid!"
88
	] (
89
		? (>= $numargs 2) (
90
			? (< (indexof $tld (charcase (at (strreplace $arg2 . " ") (- (listlen (strreplace $arg2 . " ")) 1)))) 0) (! (isip $arg2))
91
		) (! (isconnected))
92
	) [
93
		error "^f3IP or Domain is invalid!"
94
	] [
95
		append _qc_servlist (
96
			format ["%1 %2 %3"] @arg1 (
97
				? (> @numargs 1) $arg2 (connectedip)
98
			) (
99
				? (> @numargs 2) $arg3 (? (isconnected) (connectedport) 28785)
100
			)
101
		)
102
		echo "^f2QC ^f7entry^f2" $arg1 "^f7has been included successfully!"
103
		_qc_complete
104
	]
105
]
106
107
qcdelserv = [
108
	if (< (_qc_findserv $arg1) 0) [
109
		error "^f3QC entry does not exist!"
110
	] [
111
		_qc_servlist = (listdel $_qc_servlist (format ["%1"] (at $_qc_servlist (_qc_findserv $arg1))))
112
		echo "^f2QC ^f7entry^f2" $arg1 "^f7has been deleted successfully!"
113
		_qc_complete
114
	]
115
]
116
117
qclistserv = [
118
	if (=s $_qc_servlist "") [error "^f3No registered entries!"] [
119
		if $numargs [looplist i $_qc_servname [_qc_info $i]] [
120
			echo (format "^f2%1^f7 Available servers: ^f2%2" (listlen $_qc_servname) (strreplace (prettylist $_qc_servname) "," "^f7,^f2"))
121
		]
122
	]
123
]
124
125
qcviewserv = [
126
	if (< (_qc_findserv $arg1) 0) [
127
		error "^f3QC entry does not exist!"
128
	] [_qc_info $arg1]
129
]
130
131
qc = [
132
	if (=s $_qc_servlist "") [error "^f3No registered entries!"] [
133
		connect (at (at $_qc_servlist (_qc_findserv $arg1)) 1) (at (at $_qc_servlist (_qc_findserv $arg1)) 2)
134
	]
135
]
136
137
// Compile tab completion upon execution, just in case
138
139
_qc_complete
140