-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathChuck.mrc
142 lines (133 loc) · 7.37 KB
/
Chuck.mrc
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
;*************************************************************************************************
;*
;* Chuck Norris Addon v1.2 © by www.eVolutionX-Project.de (eVolutionX-Project Team)
;*
;*************************************************************************************************
;* Beschreibung
;*************************************************************************************************
;*
;* Postet ein Chuck Norris Zitat in den Channel.
;*
;*************************************************************************************************
;* Befehle
;*************************************************************************************************
;*
;* Mit !chuck kannst du ein Chuck Norris Zitat wiedergeben lassen.
;* Mit !chuck info siehst du den Copyright.
;*
;*************************************************************************************************
;* Changes
;*************************************************************************************************
;*
;* v1.2
;* Added: Flood-Protection.
;* Changed: Code gesäubert und verbessert.
;* Changed: Es wird nun per Zufall ein Zitat ausgelesen.
;*
;* v1.1
;* Fixed: Wenn Zitat zu lang wurde er nicht bis zum Ende gepostet.
;* Fixed: Wenn leerzeichen im Pfad ging Addon nicht richtig.
;* Fixed: Beim entladen wurde die variable '%Mod.Chuck.vLine' nicht entfernt.
;* Fixed: Am anfang wurde der erste Zitat 2x gepostet und der letzte Zitat wurde ausgelassen.
;* Added: Wenn Chuck.txt nicht vorhanden, wird die ausm Internet geladen.
;*
;*************************************************************************************************
;* IRC Kontakt
;*************************************************************************************************
;*
;* Server: irc.SpeedSpace-IRC.eu
;* Port: 6667
;* Channel: #eVolutionX
;*
;* Befehl: /server -m irc.SpeedSpace-IRC.eu -j #eVolutionX
;*
;*************************************************************************************************
;* ON EVENTS Start
;*************************************************************************************************
; - Lädt die Chuck.txt wenn nicht existiert.
;*************************************************************************************************
on *:LOAD: Mod.Chuck.aLoad
;*************************************************************************************************
; - Entfernt die Chuck.txt beim entladen.
;*************************************************************************************************
on *:UNLOAD:{
if ($isfile($Mod.Chuck.aFile)) {
noop $input(Soll die Datei Chuck.txt gelöscht werden?, yv, Datei Löschen?)
if ($! == $yes) .remove -b $Mod.Chuck.aFile
}
.timerMod.Chuck* off | unset %Mod.Chuck*
}
;*************************************************************************************************
; - Prüft beim Starten ob die Chuck.txt vorhanden ist, wenn nicht lädt er sie.
;*************************************************************************************************
on *:START: Mod.Chuck.aLoad
;*************************************************************************************************
; - Trigger Befehl des Chuck Norris Addon.
;*************************************************************************************************
on *:TEXT:!chuck*:#:{
if ($2 == info) { .notice $nick 14Chuck Norris Addon v1.2 © by 09www.eVolutionX-Project.de14 (09eVolutionX-Project Team14) | halt }
if (!$timer($+(Mod.Chuck-Flood., #, ., $cid))) {
if (($isfile($Mod.Chuck.aFile)) && ($lines($Mod.Chuck.aFile))) {
.timerMod.Chuck-Flood. $+ $+(#, ., $cid) 1 40 halt | var %Mod.Chuck.vText = $read($Mod.Chuck.aFile)
if ($len(%Mod.Chuck.vText) > 400) {
var %Mod.Chuck.vCount = $calc($count(%Mod.Chuck.vText, $chr(32)) / 2)
.msg # 09 $+ $gettok(%Mod.Chuck.vText, 1- $+ %Mod.Chuck.vCount, 32)
.msg # 09 $+ $gettok(%Mod.Chuck.vText, $calc(%Mod.Chuck.vCount + 1) $+ -, 32)
}
else .msg # 09 $+ %Mod.Chuck.vText
}
else { .msg # 14Es stehen keine 09Einträge14 in meiner Datenbank. Bitte versuche es später noch einmal. | Mod.Chuck.aLoad }
}
else {
if ($timer($+(Mod.Chuck-Flood., #, ., $cid, ., $nick, .3))) halt
var %secs = $timer($+(Mod.Chuck-Flood., #, ., $cid)).secs | .notice $nick 14Flood-Protection: Versuch's in09 $duration(%secs) 14nochmal!
inc $+($chr(37), Mod.Chuck-vFlood., #, ., $cid, ., $nick) | .timerMod.Chuck-Flood. $+ $+(#, ., $cid, ., $nick, *) off
.timerMod.Chuck-Flood. $+ $+(#, ., $cid, ., $nick, ., $eval($+(%, Mod.Chuck-vFlood., #, ., $cid, ., $nick), 2)) 1 %secs unset %Mod.Chuck-vFlood.*
}
}
;*************************************************************************************************
; - Öffnet www.eVolutionX-Project.de
;*************************************************************************************************
on *:SOCKOPEN:Mod.Chuck.sHTTP:{
if ($sockerr > 0) halt
sockwrite -n $sockname GET /dl/Chuck.txt HTTP/1.1
sockwrite -n $sockname Host: www.eVolutionX-Project.de
sockwrite -n $sockname $crlf
}
;*************************************************************************************************
; - Schreibt die Chuck.txt
;*************************************************************************************************
on *:SOCKREAD:Mod.Chuck.sHTTP:{
if ($sockerr > 0) halt
sockread %Mod.Chuck-sRead
while ($sockbr) {
if (%Mod.Chuck-sRead == >-EOF-<) { sockclose Mod.Chuck.sHTTP | unset %Mod.Chuck-* | halt }
if ((%Mod.Chuck-sRead == $null) && ($sockbr > 0) && (!%Mod.Chuck-vRead)) set -u50 %Mod.Chuck-vRead 1
elseif ((%Mod.Chuck-vRead) && (%Mod.Chuck-sRead != $null) && ($sockbr > 0)) {
if (%Mod.Chuck-vRead == 1) { write -cn $Mod.Chuck.aFile %Mod.Chuck-sRead | inc %Mod.Chuck-vRead }
else write -n $Mod.Chuck.aFile $crlf $+ %Mod.Chuck-sRead
}
sockread %Mod.Chuck-sRead
}
}
;*************************************************************************************************
;* ON EVENTS Ende
;*************************************************************************************************
;*************************************************************************************************
;* ALIASES Start
;*************************************************************************************************
; - Gibt den Pfad zur Datei wieder:
; - $Mod.Chuck.aFile
;*************************************************************************************************
alias Mod.Chuck.aFile {
if (!$isdir(System)) mkdir System
return $+(", $mircdirSystem\Chuck.txt, ")
}
;*************************************************************************************************
; - Lädt Chuck.txt runter:
; - /Mod.Chuck.aLoad
;*************************************************************************************************
alias -l Mod.Chuck.aLoad { if ((!$isfile($Mod.Chuck.aFile)) && (!$sock(Mod.Chuck.sHTTP))) sockopen Mod.Chuck.sHTTP www.eVolutionX-Project.de 80 }
;*************************************************************************************************
;* ALIASES Ende
;*************************************************************************************************