Project

General

Profile

Scripting » History » Version 169

Per Amundsen, 08/02/2013 02:19 AM

1 167 Per Amundsen
h1. Scripting changes as of 1.9.1
2 39 Per Amundsen
3 166 Per Amundsen
h1. Implemented mIRC events so far:
4 1 Per Amundsen
5 166 Per Amundsen
<pre>
6
raw <numeric>:<matchtext>:<commands>
7 1 Per Amundsen
8 166 Per Amundsen
ctcp <level>:<matchtext>:<*|#|?>:<commands>
9 38 Per Amundsen
10 166 Per Amundsen
on 1:sockopen:name:commands
11 1 Per Amundsen
12 166 Per Amundsen
on 1:sockread:name:commands
13 1 Per Amundsen
14 166 Per Amundsen
on 1:socklisten:name:commands
15 1 Per Amundsen
16 166 Per Amundsen
on 1:sockclose:name:commands
17 149 Per Amundsen
18 1 Per Amundsen
on *:SIGNAL:name:command
19 167 Per Amundsen
20
on <level>:LOGON:*:<commands>
21 1 Per Amundsen
22 166 Per Amundsen
on <level>:DNS:<commands>
23 149 Per Amundsen
24 166 Per Amundsen
on <level>:CTCPREPLY:<matchtext>:<commands>
25 1 Per Amundsen
26 166 Per Amundsen
on <level>:OPEN|CLOSE:<?|@|=|!|*>:<matchtext>:<commands>
27 149 Per Amundsen
28 166 Per Amundsen
on <level>:ACTIVE:<*#?=!@>:<commands>
29 1 Per Amundsen
30 166 Per Amundsen
on <level>:HOTLINK:<matchtext>:<*#?=!@>:<commands>
31 1 Per Amundsen
32 166 Per Amundsen
on <level>:INVITE:<#[,#]>:<commands>
33 1 Per Amundsen
34 166 Per Amundsen
on <level>:TABCOMP:<*#?=!@>:<commands>
35 1 Per Amundsen
36 166 Per Amundsen
on <level>:WALLOPS:<matchtext>:<commands>
37 1 Per Amundsen
38 166 Per Amundsen
on <level>:ERROR:<matchtext>:<commands>
39 1 Per Amundsen
40 166 Per Amundsen
on <level>:RAWMODE:#:<commands>
41 1 Per Amundsen
42 166 Per Amundsen
on <level>:DEHELP:<#[,#]>:<commands>
43 1 Per Amundsen
44 166 Per Amundsen
on <level>:HELP:<#[,#]>:<commands>
45 1 Per Amundsen
46 166 Per Amundsen
on <level>:DEVOICE:<#[,#]>:<commands>
47 1 Per Amundsen
48 166 Per Amundsen
on <level>:VOICE:<#[,#]>:<commands>
49 1 Per Amundsen
50 166 Per Amundsen
on <level>:DEOP:<#[,#]>:<commands>
51 1 Per Amundsen
52 166 Per Amundsen
on <level>:OP:<#[,#]>:<commands>
53 1 Per Amundsen
54 166 Per Amundsen
on <level>:INPUT:<*#?=!@>:<commands>
55 1 Per Amundsen
56 166 Per Amundsen
on <level>:UNBAN:<#[,#]>:<commands>
57 1 Per Amundsen
58 166 Per Amundsen
on <level>:BAN:<#[,#]>:<commands>
59 149 Per Amundsen
60 166 Per Amundsen
on <level>:CHAT:<matchtext>:<commands>
61 1 Per Amundsen
62 166 Per Amundsen
on <level>:KICK:<#[,#]>:<commands>
63 1 Per Amundsen
64 166 Per Amundsen
on <level>:NOTIFY:<commands>
65 1 Per Amundsen
66 166 Per Amundsen
on <level>:UNNOTIFY:<commands>
67 1 Per Amundsen
68 166 Per Amundsen
on <level>:NICK:<commands>
69 1 Per Amundsen
70 166 Per Amundsen
on <level>:QUIT:<commands>
71 1 Per Amundsen
72 166 Per Amundsen
on <level>:LOAD:<commands>
73 1 Per Amundsen
74 166 Per Amundsen
on <level>:UNLOAD:<commands>'
75 1 Per Amundsen
76 166 Per Amundsen
on <level>:START:<commands>
77 1 Per Amundsen
78 166 Per Amundsen
on <level>:EXIT:<commands>
79 1 Per Amundsen
80 166 Per Amundsen
on <level>:DNS:<commands>
81 1 Per Amundsen
82 166 Per Amundsen
on <level>:CONNECTFAIL:<commands>
83 1 Per Amundsen
84 166 Per Amundsen
on <level>:CONNECT:<commands>
85 1 Per Amundsen
86 166 Per Amundsen
on <level>:DISCONNECT:<commands>
87 1 Per Amundsen
88 166 Per Amundsen
on <level>:TOPIC:<#[,#]>:<commands>
89 1 Per Amundsen
90 166 Per Amundsen
on <level>:USERMODE:<commands>
91 1 Per Amundsen
92 166 Per Amundsen
on <level>:MODE:<#[,#]>:<commands>
93 1 Per Amundsen
94 166 Per Amundsen
on <level>:PART:<#[,#]>:<commands>
95 1 Per Amundsen
96 166 Per Amundsen
on <level>:JOIN:<#[,#]>:<commands>
97 1 Per Amundsen
98 166 Per Amundsen
on <level>:SNOTICE:<matchtext>:<commands>
99 1 Per Amundsen
100 166 Per Amundsen
on <level>:NOTICE:<matchtext>:<*><?><#[,#]>:<commands>
101 1 Per Amundsen
102 166 Per Amundsen
on <level>:ACTION:<matchtext>:<*><?><#[,#]>:<commands>
103 1 Per Amundsen
104 166 Per Amundsen
on <level>:TEXT:<matchtext>:<*><?><#[,#]>:<commands>
105 1 Per Amundsen
106 166 Per Amundsen
This event is added as a replacement for OnSongChanged
107
on <level>:SONG:<commands>
108
109 1 Per Amundsen
</pre>
110
111 166 Per Amundsen
Supported prefixes so far are ^ to enable halt events (hide default text output from the event), ! to ignore events made by you, @ to only trigger if you have channel op, $ to indicate the wildcard text is a regular expression.
112 1 Per Amundsen
113 166 Per Amundsen
User access will come later. 
114 1 Per Amundsen
115 169 Per Amundsen
h1. identifiers added so far
116 166 Per Amundsen
117
<pre>
118 1 Per Amundsen
$0
119 169 Per Amundsen
$abs
120
$acos
121 1 Per Amundsen
$active
122 166 Per Amundsen
$activeserver
123
$activewid
124
$adate
125 1 Per Amundsen
$address
126 169 Per Amundsen
$addtok
127
$addtokcs
128 166 Per Amundsen
$adiircdir
129
$adiircexe
130
$adiircini
131
$album
132 169 Per Amundsen
$and
133 1 Per Amundsen
$anick
134 166 Per Amundsen
$appactive
135
$appstate
136
$artist
137 169 Per Amundsen
$asc
138
$asctime
139
$asin
140
$atan
141 166 Per Amundsen
$audio
142
$away
143 1 Per Amundsen
$awaymsg
144
$awaytime
145 169 Per Amundsen
$base
146
$bfind
147
$bindip
148
$bitoff
149
$biton
150 166 Per Amundsen
$bitrate
151 169 Per Amundsen
$bvar
152 166 Per Amundsen
$bwdown
153 1 Per Amundsen
$bwdownb
154
$bwname
155
$bwspeed
156
$bwup
157
$bwupb
158 169 Per Amundsen
$bytes
159
$calc
160 1 Per Amundsen
$cb
161 169 Per Amundsen
$ceil
162 1 Per Amundsen
$chan
163
$chanmodes
164
$channel
165
$chantypes
166 169 Per Amundsen
$chat
167
$chr
168 1 Per Amundsen
$cid
169
$clevel
170 166 Per Amundsen
$cmdline
171 169 Per Amundsen
$color
172
$colour
173
$comchan
174 1 Per Amundsen
$comment
175 169 Per Amundsen
$cos
176
$count
177
$countcs
178 166 Per Amundsen
$cpucache
179
$cpucount
180
$cpuident
181
$cpuload
182
$cpumhz
183 1 Per Amundsen
$cpuname
184 166 Per Amundsen
$cr
185 169 Per Amundsen
$crc
186 1 Per Amundsen
$crlf
187
$ctime
188
$date
189 169 Per Amundsen
$datediff
190
$datematch
191 166 Per Amundsen
$day
192
$daylight
193 169 Per Amundsen
$decode
194
$decrypt
195
$deltok
196
$dialog
197
$did
198
$didreg
199
$didtok
200
$didwm
201 166 Per Amundsen
$disk
202 1 Per Amundsen
$diskfree
203 169 Per Amundsen
$diskmenu
204 1 Per Amundsen
$disktotal
205
$dlevel
206 169 Per Amundsen
$dns
207
$dotnet
208 166 Per Amundsen
$duration
209 169 Per Amundsen
$editbox
210
$encode
211
$encodingmenu
212
$encrypt
213 166 Per Amundsen
$error
214 1 Per Amundsen
$event
215 169 Per Amundsen
$exists
216 1 Per Amundsen
$false
217
$feof
218 166 Per Amundsen
$ferr
219 169 Per Amundsen
$fgetc
220
$file
221
$finddir
222
$findfile
223
$findtok
224
$findtokcs
225
$fline
226
$floop
227
$floor
228
$fopen
229
$frand
230
$fread
231 1 Per Amundsen
$frequency
232
$fulladdress
233 166 Per Amundsen
$fulldate
234 1 Per Amundsen
$fulltitle
235 166 Per Amundsen
$genre
236
$getdir
237 169 Per Amundsen
$getdot
238
$gettok
239 1 Per Amundsen
$gfx
240 166 Per Amundsen
$gfxram
241 1 Per Amundsen
$gmt
242 169 Per Amundsen
$group
243
$height
244
$hfind
245
$hget
246 166 Per Amundsen
$highlight
247
$host
248
$ial
249 169 Per Amundsen
$ialchan
250
$ibl
251 166 Per Amundsen
$ident
252
$idle
253 169 Per Amundsen
$iel
254 166 Per Amundsen
$ignore
255 169 Per Amundsen
$iil
256
$inellipse
257
$ini
258 166 Per Amundsen
$inmidi
259
$inpaste
260 169 Per Amundsen
$inpoly
261
$input
262
$inrect
263
$insert
264 166 Per Amundsen
$insong
265 169 Per Amundsen
$instok
266
$int
267
$invitemenu
268 166 Per Amundsen
$inwave
269
$ip
270 169 Per Amundsen
$isalias
271
$isbit
272
$isdir
273
$isfile
274 166 Per Amundsen
$isid
275 169 Per Amundsen
$islower
276
$istok
277
$istokcs
278
$istype
279
$isupper
280 166 Per Amundsen
$layer
281
$left
282 169 Per Amundsen
$len
283 166 Per Amundsen
$length
284 169 Per Amundsen
$lf
285
$line
286
$lines
287
$log
288 166 Per Amundsen
$logdir
289
$logstamp
290 1 Per Amundsen
$logstampfmt
291 169 Per Amundsen
$longfn
292
$longip
293
$lower
294 166 Per Amundsen
$ltimer
295
$maddress
296 169 Per Amundsen
$mask
297 166 Per Amundsen
$matchkey
298 169 Per Amundsen
$matchtok
299
$matchtokcs
300
$md5
301 166 Per Amundsen
$me
302
$memfree
303
$memfreep
304
$memtotal
305 169 Per Amundsen
$menu
306
$mid
307 166 Per Amundsen
$mircdir
308
$mircexec
309
$mircini
310 169 Per Amundsen
$mkfn
311
$mklogfn
312
$mknickfn
313 166 Per Amundsen
$mnick
314
$mode
315
$modespl
316
$motherboard
317 169 Per Amundsen
$mouse
318
$mp3
319
$msfile
320 166 Per Amundsen
$mversion
321
$myhost
322
$myident
323
$network
324
$newnick
325
$nick
326 169 Per Amundsen
$nofile
327
$nopath
328
$noqt
329
$not
330
$notify
331 166 Per Amundsen
$now
332
$null
333
$numeric
334 169 Per Amundsen
$numtok
335 166 Per Amundsen
$online
336 169 Per Amundsen
$or
337
$ord
338 166 Per Amundsen
$os
339
$osbuild
340
$osedition
341 169 Per Amundsen
$osinstalldate
342 166 Per Amundsen
$osmajor
343
$osminor
344
$osname
345
$osservicepack
346
$osversion
347
$percentl
348
$percentp
349 169 Per Amundsen
$pic
350 166 Per Amundsen
$playcount
351
$player
352
$port
353 169 Per Amundsen
$portfree
354
$pos
355
$poscs
356 166 Per Amundsen
$position
357
$prefix
358
$progress
359 169 Per Amundsen
$prop
360
$puttok
361
$qt
362
$query
363 166 Per Amundsen
$r
364
$r0
365 169 Per Amundsen
$rand
366 166 Per Amundsen
$raw0
367
$rawbytes
368
$rawmsg
369 169 Per Amundsen
$read
370
$readini
371
$realname
372
$regex
373
$regml
374
$regsub
375
$regsubex
376
$remove
377
$removecs
378
$remtok
379
$remtokcs
380
$replace
381
$replacecs
382
$replacex
383
$replacexcs
384
$reptok
385
$reptokcs
386 166 Per Amundsen
$result
387 169 Per Amundsen
$rgb
388
$right
389
$round
390
$scid
391
$scon
392 166 Per Amundsen
$screen
393
$screenb
394
$screenh
395
$screenw
396
$script
397
$scriptdir
398
$scriptline
399 169 Per Amundsen
$sdir
400 166 Per Amundsen
$server
401
$serverip
402 169 Per Amundsen
$sfile
403
$sha1
404
$shortfn
405 166 Per Amundsen
$show
406 169 Per Amundsen
$sin
407 166 Per Amundsen
$site
408
$size
409 169 Per Amundsen
$slapsmenu
410
$sline
411
$snick
412
$sock
413 166 Per Amundsen
$sockbr
414
$song
415 169 Per Amundsen
$sorttok
416
$sorttokcs
417
$sqrt
418 166 Per Amundsen
$status
419 169 Per Amundsen
$str
420
$strip
421
$style
422
$submenu
423
$tan
424 166 Per Amundsen
$target
425
$ticks
426
$time
427 169 Per Amundsen
$timer
428 166 Per Amundsen
$timestamp
429
$timestampfmt
430
$timezone
431 169 Per Amundsen
$tip
432 166 Per Amundsen
$title
433 169 Per Amundsen
$token
434
$toolbar
435 166 Per Amundsen
$totaltracks
436
$track
437
$true
438 169 Per Amundsen
$trust
439 166 Per Amundsen
$ulevel
440
$updays
441
$uphours
442
$upmins
443 169 Per Amundsen
$upper
444
$uptime
445
$user
446 166 Per Amundsen
$usermode
447 169 Per Amundsen
$utfdecode
448
$utfencode
449
$var
450 166 Per Amundsen
$version
451 169 Per Amundsen
$vol
452 166 Per Amundsen
$volume
453
$volumeb
454
$volumep
455
$wid
456 169 Per Amundsen
$width
457 166 Per Amundsen
$wildsite
458 169 Per Amundsen
$wildtok
459
$wildtokcs
460 166 Per Amundsen
$window
461 169 Per Amundsen
$xor
462 166 Per Amundsen
$year
463
</pre>
464 149 Per Amundsen
465 166 Per Amundsen
All operaters are added.
466
467 154 Per Amundsen
h1. Example scripts
468
469
Simple kickcounter script:
470
471
<pre>
472 166 Per Amundsen
alias kick { 
473
	if (!%kickcount) %kickcount = 0
474 154 Per Amundsen
475 166 Per Amundsen
	inc %kickcount
476 154 Per Amundsen
		 
477 166 Per Amundsen
	if (!$3) { 
478
		kick # $$2 Kick number %kickcount
479 154 Per Amundsen
		halt
480
	} 
481
}
482
</pre>
483
484
Kickban example
485
<pre>
486 166 Per Amundsen
alias kb {
487 154 Per Amundsen
	if (!$1) {
488 166 Per Amundsen
		echo /kb - Nick missing
489 154 Per Amundsen
		return
490
	}
491
492 166 Per Amundsen
	var %msg = $iif(#, $2-, $3-)
493
	var %chan = $iif(#, #, $2)
494 154 Per Amundsen
		
495 166 Per Amundsen
	; Set this for default ban reason, or remove for no default reason
496
	; Can be shortened to %msg = $iif(%msg, %msg, GTFO)
497
	if (!%msg) %msg = GTFO
498 154 Per Amundsen
499
	if ($me isop %chan) {
500 166 Per Amundsen
		MODE %chan +b $wildsite
501
		KICK %chan $1 %msg
502 154 Per Amundsen
	} 
503 166 Per Amundsen
	else echo You are not oper on %chan
504 154 Per Amundsen
}
505
</pre>
506
507
Simple calculator script:
508
<pre>
509 166 Per Amundsen
alias calc {
510 154 Per Amundsen
	if (!$1) {
511 166 Per Amundsen
		echo /calc - Parameters missing
512 154 Per Amundsen
		return
513
	}
514
		
515 166 Per Amundsen
	; typing /calc -p <expression> sends output to channel
516 154 Per Amundsen
	if ($1 == -p) {
517 166 Per Amundsen
		msg # Calculating : $2-
518
		msg # Result is : $calc($2-)
519 154 Per Amundsen
	} else {
520 166 Per Amundsen
		echo Calculating : $1-
521
		echo Result is : $calc($1-)
522 154 Per Amundsen
	}
523
}
524
</pre>
525
526
Colored version
527
<pre>
528 166 Per Amundsen
alias calc {
529 154 Per Amundsen
	if (!$1) {
530 166 Per Amundsen
		echo /calc - Parameters missing
531 154 Per Amundsen
		return
532
	}
533 156 Per Amundsen
	
534
	# typing /calc -p <expression> sends output to channel
535 154 Per Amundsen
	if ($1 == -p) {
536 166 Per Amundsen
		msg # $chr(3)4Calculating : $2-
537
		msg # $chr(3)4Result is : $calc($2-)
538 154 Per Amundsen
	} else {
539 166 Per Amundsen
		echo $chr(3)4Calculating : 4$1-
540
		echo $chr(3)4Result is : $calc($1-)
541 154 Per Amundsen
	}
542 166 Per Amundsen
}
543 154 Per Amundsen
</pre>
544
545
CTCP flood detection example
546
547
<pre>
548 166 Per Amundsen
CTCP *:*:*:{
549
	if (!%count) set -u10 %count 1
550
	else inc -u10 %count 1
551 154 Per Amundsen
552 166 Per Amundsen
	if (%count > 4) ignore -tu30 $wildsite
553 154 Per Amundsen
}
554
</pre>
555
556
Mass mode example
557
558
<pre>
559 166 Per Amundsen
alias mass {
560 154 Per Amundsen
	if (!$2) {
561 166 Per Amundsen
		echo /mass - Parameters missing [+/-<mode> <nick> <nick> <nick>]
562 154 Per Amundsen
		return
563
	}
564
565
	%len = 2
566
	
567 166 Per Amundsen
	; equal to while (%len <= $count(%1-, $chr(32)))
568
	while (%len <= $0) {
569
		if ($(%len) ison #) mode # $1 $($ $+ %len)
570
		inc %len
571 154 Per Amundsen
	}
572
}
573
</pre>
574
575
Shows info about servers, channels and users
576
<pre>
577 166 Per Amundsen
on *:JOIN:#: {
578 154 Per Amundsen
	var %s = $server(0), %c = 0, %u = 0, %t = 0, %c2 = 0;
579
	
580
	while (%t < %s) {
581 166 Per Amundsen
		inc %t
582
		setserver $server(%t);
583 154 Per Amundsen
		%c += $chan(0)
584
	
585
		%c2 = 0
586
		while (%c2 < $chan(0)) {
587 166 Per Amundsen
			in %c2
588 154 Per Amundsen
			%u += $user($chan(%c2), 0)
589
		}
590
	}
591
592 166 Per Amundsen
	/echo You are on ( $+ %s $+ ) servers, ( $+ %c $+ ) channels with ( $+ %u $+ ) users
593 154 Per Amundsen
}
594
</pre>
595
596
It is possible to use scripts as functions.
597
These functions are fully nested like the client functions.
598
599
Lets say you make a /mycalc like this.
600
<pre>
601 166 Per Amundsen
alias mycalc {
602
	return $calc($$1 + $$2);
603 154 Per Amundsen
}
604
</pre>
605
606
Then you can call this function with eiter /mycalc <number> <number> the normal way or $mycalc(<number, <number>)
607
Typing /testcalc will show the result.
608
<pre>
609 166 Per Amundsen
alias testcalc {
610
	echo -a $1 + $2 is $mycalc($1, $2);
611
	echo -a 5 + 4 is $mycalc(5, 4);
612 154 Per Amundsen
}
613
</pre>
614
615
Simple convert temperature C to F or F to C
616
/temp C 20 will print 68 F
617
618
<pre>
619 166 Per Amundsen
alias temp {
620
	if ($1 == C) echo $calc(($2 * 9/5) + 32) F
621
	else if ($1 == F) echo $round($calc(($2 - 32) * 5/9), 1) C
622
	else echo Temp missing
623 154 Per Amundsen
}
624
</pre>
625
626 166 Per Amundsen
Announce song changes in a channel or to a user
627 154 Per Amundsen
<pre>
628 166 Per Amundsen
On *:SONG:{ 
629
	nmsg <network> <channel/Nick> $1-
630 154 Per Amundsen
}
631 158 Per Amundsen
</pre>
632
633 166 Per Amundsen
Announce to several channels with:
634 158 Per Amundsen
<pre>
635 166 Per Amundsen
On *:SONG:{ 
636
	nmsg <network> <channel1/Nick>,<channel2/Nick> $1-
637
	nmsg <network2> <channel3/Nick> $1- 
638 158 Per Amundsen
}
639 166 Per Amundsen
</pre>
640 158 Per Amundsen
641 166 Per Amundsen
Automatically find the summary of a imdb url
642
<pre>
643
On *:TEXT:*:#k: {
644
    var %reg = $regex($1-, http://www\.imdb\.com(/title/[a-z0-9]+/))
645
    if (!%reg) { return }
646
    sockclose imdb
647
    unset %data
648
    %imdb = $regml(1) $+ plotsummary
649
    %imdbchan = #
650
    sockopen imdb www.imdb.com 80
651 1 Per Amundsen
}
652
653 166 Per Amundsen
on *:sockopen:imdb: {
654
    sockwrite -n imdb GET %imdb HTTP/1.1
655
    sockwrite -n imdb Host: www.imdb.com
656
    sockwrite -n imdb User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.5 (KHTML, like Gecko) Chrome/19.0.1084.24 Safari/536.5
657
    sockwrite -n imdb Referer: http://www.imdb.com
658
    sockwrite -n imdb Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,video/x-mng,image/png,image/jpeg,image/gif;q=0.2,text/css,*/*;q=0.1
659
    sockwrite -n imdb Accept-Language: en-us, en;q=0.50
660
    sockwrite -n imdb Connection: Close $+ $crlf $+ $crlf
661 1 Per Amundsen
}
662
663 166 Per Amundsen
on *:sockread:imdb:{
664
    sockread %text
665
    %data = %data $+ %text 
666 1 Per Amundsen
}
667
668 166 Per Amundsen
on *:sockclose:imdb: {
669
    if ($regex(%data, <p class="plotpar">([\s\S]*?)<i>)) {
670
        msg %imdbchan $regml(1)
671
    }
672 1 Per Amundsen
673 166 Per Amundsen
    unset %data
674 1 Per Amundsen
}
675
</pre>