SHOW:
|
|
- or go back to the newest paste.
| 1 | ;.oO{ moo script v3.19 by HM2K }Oo. - [email protected]
| |
| 2 | ||
| 3 | ;description: | |
| 4 | ;no more moo.dll! -- this script uses $com to lookup the WMI functions to return specified system information. | |
| 5 | ;moo script was originally created to display your system information via IRC, including: operating system, | |
| 6 | ; uptime, cpu, memory usage, graphics card, resolution, network details and hard drive details. | |
| 7 | ||
| 8 | ;install: | |
| 9 | ;NOTICE: please unload and remove any old moo scripts, else this script may not work. | |
| 10 | ;make sure moo.mrc is in your $mircdir then type: /load -rs moo.mrc | |
| 11 | ||
| 12 | ;Please make sure you have the latest windows updates or the latest WMI core (http://goo.gl/nAYpB) | |
| 13 | ;Also, please use the latest version of mIRC, ideally mIRC v6.16 or above... | |
| 14 | ||
| 15 | ;usage: | |
| 16 | ;for moo type: /moo or !moo (if enabled) | |
| 17 | ;for uptime only type: /up or !uptime (if enabled) | |
| 18 | ||
| 19 | ;history: | |
| 20 | ;moo script v3.19 - added better output relaying | |
| 21 | ;moo script v3.18 - added find the fastest network interface and find active graphics card | |
| 22 | ;moo script v3.17 - added cpu architecture descriptors | |
| 23 | ;moo script v3.16 - Added /stat and /statself, and fixed local echoing. | |
| 24 | ;moo script v3.15 - Fixed a few bugs + Fixed the repeat checker + Out of beta | |
| 25 | ;moo script v3.14 - Change the WMI lookup location of the rammax inline with the ramuse. | |
| 26 | ;moo script v3.13 - Changed the ram function to use a more reliable WMI location, added OSArchitecture (osarc) for Vista, fixed CPU load to not return anything if there's no load. | |
| 27 | ;moo script v3.12 - Minor tweaks, a few code changes, added /moo echo and a few more functions. | |
| 28 | ;moo script v3.11 - Added some new features and made it easier to style the output, added some additional notes | |
| 29 | ;moo script v3.1 - Added the long awaited flood protection, simple lookup error checking, more/better functions, quicker script | |
| 30 | ;moo script v3.0 - The whole script was changed, no more moo.dll, it now uses WMI however this version MUST be run on mIRC v6.16 or above. | |
| 31 | ;[moo] script v2.27 - !moo trigger fix, now turned off by default to stop abuse | |
| 32 | ;[moo] script v2.26 - Lots of little changes made up till this version, including getmoo. | |
| 33 | ;[moo] script v2.23 - changed some alias' to alias -l, fixed small bugs, added new featuers | |
| 34 | ;[moo] script v2.22 - minor bug fixes, bold added etc. | |
| 35 | ;[moo] script v2.21 - added a feature to turn the !moo get and !getmoo on or off, and fixed a few bugs. | |
| 36 | ;[moo] script v2.2 - name change, completly changed the /moo and !moo system, should work better now, no mistakes. | |
| 37 | ;moo script v2.13 - still a few mistakes, changes made, mbm5 isn't functioning correctly... | |
| 38 | ;moo script v2.12 - many small changes and fixes made, mbm5 was fixed also. | |
| 39 | ;moo script v2.11 - simple bug fixes. | |
| 40 | ;moo script v2.1 - minor modifications, final public release. | |
| 41 | ;moo script v2.0 - New name, new style, new script, same idea. | |
| 42 | ;MooDll Script v1.21 - Many bug fixes, first public release | |
| 43 | ;MooDll Script v1.0 - Original private release, very simple, buggy. | |
| 44 | ||
| 45 | ;thanks: | |
| 46 | ;Mark (from influenced.net) for the original concept and for letting me know that he was not creating a new moo.dll | |
| 47 | ;HndlWCare who inspired me to write this for making false claims about the original moo.dll | |
| 48 | ||
| 49 | ;support: | |
| 50 | ;Help support continued development: Please consider donating (http://tinyurl.com/hm2kpaypal). Thanks! | |
| 51 | ||
| 52 | ;-------------------------------------------------------------------------------------------------------- | |
| 53 | ;SETTINGS - START | |
| 54 | ;-------------------------------------------------------------------------------------------------------- | |
| 55 | ||
| 56 | ;moo banned channels - these are channels you don't want the triggers to function in | |
| 57 | alias -l moo.banchans return #php #windows #eztv | |
| 58 | ||
| 59 | ;moo style - use this to style the titles of the output | |
| 60 | alias -l moos return $+(,$1,:) | |
| 61 | ||
| 62 | ;moo prefix - style the prefix | |
| 63 | alias -l mooprefix return moo: | |
| 64 | ||
| 65 | ;-------------------------------------------------------------------------------------------------------- | |
| 66 | ;SETTINGS - END | |
| 67 | ;-------------------------------------------------------------------------------------------------------- | |
| 68 | ||
| 69 | ;NOTICE: DO NOT edit below unless you know what you're doing. If you do make any changes, please let me know! :) | |
| 70 | ||
| 71 | alias -l moover return moo script v3.19 | |
| 72 | ||
| 73 | ;usage: /moo <os|up|cpu|gfx|res|ram|hdd|net> | |
| 74 | alias moo $iif($isid,return $stat($1),stat $1) | |
| 75 | alias stat {
| |
| 76 | if ($isid) {
| |
| 77 | if (!$mooi(name)) { return lookup error }
| |
| 78 | if (!$1) { return $mooprefix $moo(os) $moo(up) $moo(cpu) $moo(gfx) $moo(res) $moo(ram) $moo(hdd) $moo(net) }
| |
| 79 | if ($1 == os) { return $moos($1) $mooi(ostitle) - $mooi(ossp) $brak($mooi(osver)) }
| |
| 80 | if ($1 == up) { return $moos($1) $duration($mooi(up)) }
| |
| 81 | if ($1 == cpu) { return $moos($1) $mooi(cpuname) $brak($mooi(cpuarch)) at $mooi(cpuspeed) $mooi(cpuload) }
| |
| 82 | if ($1 == gfx) { return $moos($1) $mooi(gfxmake) $mooi(gfxproc) $mooi(gfxram) }
| |
| 83 | if ($1 == res) { return $moos($1) $mooi($1) $mooi(resbit) $mooi(resrate) }
| |
| 84 | if ($1 == ram) { var %moo.rammax = $mooi(rammax) | var %moo.ramuse = $mooi(ramuse) | return $moos($1) $+($round($calc(%moo.rammax - %moo.ramuse),0),/,%moo.rammax,MB) $+($chr(40),$round($calc((%moo.rammax - %moo.ramuse) / %moo.rammax * 100),2),%,$chr(41)) $moorambar($round($calc((%moo.rammax - %moo.ramuse) / %moo.rammax * 100),2)) }
| |
| 85 | if ($1 == hdd) { return $moos($1) $mooi(hdd) }
| |
| 86 | if ($1 == net) { return $moos($1) $iif($mooi(netname),$ifmatch $iif($mooi(netspeed), - $ifmatch, ) $mooi(netin) In $mooi(netout) Out, ) }
| |
| 87 | elseif ($mooi($1)) { return $moos($1) $ifmatch }
| |
| 88 | } | |
| 89 | var %out $relay($active) | |
| 90 | if (!$1) { %out $moo | return }
| |
| 91 | if ($moo($1)) { %out $mooprefix $ifmatch }
| |
| 92 | } | |
| 93 | alias mooecho {
| |
| 94 | var %out echo $color(info2) -gat | |
| 95 | if (!$1) { %out $moo | return }
| |
| 96 | if ($moo($1)) { %out $mooprefix $ifmatch }
| |
| 97 | } | |
| 98 | alias statself mooecho $1- | |
| 99 | ||
| 100 | alias -l relay { ;output relay v0.05 by HM2K
| |
| 101 | ;default | |
| 102 | var %out echo $color(info2) -gat | |
| 103 | ;channel command | |
| 104 | var %chanmsg msg | |
| 105 | ;user action | |
| 106 | var %usermsg msg | |
| 107 | ||
| 108 | if ($modespl) {
| |
| 109 | if ($1) {
| |
| 110 | if (!$gettok($1,2,32)) {
| |
| 111 | if ($left($1,1) != $chr(35)) { var %out %chanmsg $1 }
| |
| 112 | elseif ($chan($1)) { var %out %chanmsg $1 }
| |
| 113 | } | |
| 114 | } | |
| 115 | elseif (($nick) && ($nick != $me)) { var %out %usermsg $nick }
| |
| 116 | } | |
| 117 | if ($isid) { return %out }
| |
| 118 | %out $1- | |
| 119 | } | |
| 120 | ||
| 121 | ;info - below are the useful or interesting wmi functions to use with the script | |
| 122 | alias mooi {
| |
| 123 | if ($1 == name) { return $wmiget(Win32_ComputerSystem).Name }
| |
| 124 | if ($1 == ostitle) { return $wmiget(Win32_OperatingSystem).Caption }
| |
| 125 | if ($1 == ossp) { return $wmiget(Win32_OperatingSystem).CSDVersion }
| |
| 126 | if ($1 == osver) { return $wmiget(Win32_OperatingSystem).Version }
| |
| 127 | if ($1 == osinstall) { var %time = $ctime($iif($wmiget(Win32_OperatingSystem).InstallDate,$+($mid($ifmatch,7,2),/,$mid($ifmatch,5,2),/,$mid($ifmatch,1,4)) $+($mid($ifmatch,9,2),:,$mid($ifmatch,11,2),:,$mid($ifmatch,13,2)))) | return $asctime(%time) $brak($duration($calc($ctime - %time)) ago) }
| |
| 128 | if ($1 == osarc) { return $wmiget(Win32_OperatingSystem).OSArchitecture }
| |
| 129 | if ($1 == up) { return $uptime(system,3) }
| |
| 130 | if ($1 == cpuname) { return $wmiget(Win32_Processor).Name }
| |
| 131 | if ($1 == cpuspeed) { return $+($wmiget(Win32_Processor).CurrentClockSpeed,MHz) }
| |
| 132 | if ($1 == cpuload) { return $iif($wmiget(Win32_Processor).LoadPercentage,$brak($+($ifmatch,% Load)),) }
| |
| 133 | if ($1 == cputotal) { return $wmiget(Win32_ComputerSystem).NumberOfProcessors }
| |
| 134 | if ($1 == cpuarch) { return $mooarch($wmiget(Win32_Processor).Architecture) }
| |
| 135 | if ($1 == gfxmake) { return $wmiget(Win32_VideoController,$moogfx).AdapterCompatibility }
| |
| 136 | if ($1 == gfxproc) { return $wmiget(Win32_VideoController,$moogfx).VideoProcessor }
| |
| 137 | ;if ($1 == gfxproc) { return $wmiget(CIM_VideoController,$moogfx).Description }
| |
| 138 | if ($1 == gfxram) { return $bytes($wmiget(Win32_VideoController,$moogfx).AdapterRam,3).suf }
| |
| 139 | if ($1 == res) { return $+($wmiget(Win32_VideoController,$moogfx).currenthorizontalresolution,x,$wmiget(Win32_VideoController).currentverticalresolution) }
| |
| 140 | if ($1 == resbit) { return $wmiget(Win32_VideoController,$moogfx).currentbitsperpixel $+ bit }
| |
| 141 | if ($1 == resrate) { return $wmiget(Win32_VideoController,$moogfx).currentrefreshrate $+ Hz }
| |
| 142 | if ($1 == rammax) { return $round($calc($wmiget(Win32_OperatingSystem).TotalVisibleMemorySize / 1024),1) }
| |
| 143 | if ($1 == ramuse) { return $round($calc($wmiget(Win32_OperatingSystem).FreePhysicalMemory / 1024), 1) }
| |
| 144 | if ($1 == netname) { return $wmiget(Win32_PerfRawData_Tcpip_NetworkInterface,$mooni).Name }
| |
| 145 | if ($1 == netspeed) { return $calc($wmiget(Win32_PerfRawData_Tcpip_NetworkInterface,$mooni).CurrentBandwidth / 1000000) $+ MB/s }
| |
| 146 | if ($1 == netin) { return $bytes($wmiget(Win32_PerfRawData_Tcpip_NetworkInterface,$mooni).BytesReceivedPersec).suf }
| |
| 147 | if ($1 == netout) { return $bytes($wmiget(Win32_PerfRawData_Tcpip_NetworkInterface,$mooni).BytesSentPersec).suf }
| |
| 148 | if ($1 == hdd) { var %i 1 | while (%i <= $disk(0)) { if ($disk(%i).type == fixed) var %var %var $disk(%i).path $+($bytes($disk(%i).free).suf,/,$bytes($disk(%i).size).suf) | inc %i } | return %var }
| |
| 149 | if ($1 == sound) { return $wmiget(Win32_SoundDevice).Name }
| |
| 150 | if ($1 == mobo) { return $wmiget(Win32_BaseBoard).Manufacturer $wmiget(Win32_BaseBoard).Product }
| |
| 151 | } | |
| 152 | ||
| 153 | ;find active graphics card | |
| 154 | alias -l moogfx {
| |
| 155 | var %i = 1, %t = $wmiget(Win32_VideoController,-1).Availability | |
| 156 | while (%i < %t) {
| |
| 157 | if ($wmiget(Win32_VideoController,%i).Availability == 3) { return %i }
| |
| 158 | inc %i | |
| 159 | } | |
| 160 | } | |
| 161 | ||
| 162 | ;find fastest network interface | |
| 163 | alias mooni {
| |
| 164 | var %i = 0, %s = 0, %n = 0 | |
| 165 | %t = $wmiget(Win32_PerfRawData_Tcpip_NetworkInterface,-1).CurrentBandwidth | |
| 166 | while (%i < %t) {
| |
| 167 | inc %i | |
| 168 | %ns = $wmiget(Win32_PerfRawData_Tcpip_NetworkInterface,%i).CurrentBandwidth | |
| 169 | if (%ns >= %s) {
| |
| 170 | %s = %ns | |
| 171 | %n = %i | |
| 172 | } | |
| 173 | } | |
| 174 | return %n | |
| 175 | } | |
| 176 | ||
| 177 | ;cpu architecture descriptors | |
| 178 | alias -l mooarch {
| |
| 179 | if ($1 == 0) { return x86 }
| |
| 180 | if ($1 == 1) { return MIPS }
| |
| 181 | if ($1 == 2) { return Alpha }
| |
| 182 | if ($1 == 3) { return PowerPC }
| |
| 183 | if ($1 == 6) { return Intel Itanium Processor Family (IPF) }
| |
| 184 | if ($1 == 9) { return x64 }
| |
| 185 | } | |
| 186 | ||
| 187 | ;rambar - the famous rambar from the original script with a couple of changes | |
| 188 | alias -l moorambar {
| |
| 189 | if ($len($1) < 990) {
| |
| 190 | var %moo.rb.size = 10 | |
| 191 | var %moo.rb.used = $round($calc($1 / 100 * %moo.rb.size),0) | |
| 192 | var %moo.rb.unused = $round($calc(%moo.rb.size - %moo.rb.used),0) | |
| 193 | var %moo.rb.usedstr = $str(|,%moo.rb.used) | |
| 194 | var %moo.rb.unusedstr = $str(-,%moo.rb.unused) | |
| 195 | if ((%moo.rb.usedstr) && (%moo.rb.unusedstr)) return $+([,%moo.rb.usedstr,%moo.rb.unusedstr,]) | |
| 196 | } | |
| 197 | } | |
| 198 | ||
| 199 | ;Get WMI data - this is the most useful function here, this only works if mIRC has the $COM function, its very useful, but a little slow. | |
| 200 | alias wmiget {
| |
| 201 | var %com = cominfo, %com2 = cominfo2, %com3 = cominfo3 | |
| 202 | if ($com(%com)) { .comclose %com }
| |
| 203 | if ($com(%com2)) { .comclose %com2 }
| |
| 204 | if ($com(%com3)) { .comclose %com3 }
| |
| 205 | .comopen %com WbemScripting.SWbemLocator | |
| 206 | var %x = $com(%com,ConnectServer,3,dispatch* %com2), %x = $com(%com2,ExecQuery,3,bstr*,select $prop from $1,dispatch* %com3), %x = $comval(%com3,$iif($2,$2,1),$prop) | |
| 207 | if ($com(%com)) { .comclose %com }
| |
| 208 | if ($com(%com2)) { .comclose %com2 }
| |
| 209 | if ($com(%com3)) { .comclose %com3 }
| |
| 210 | return %x | |
| 211 | } | |
| 212 | ||
| 213 | ;backets - I got fed up of repeating the same thing | |
| 214 | alias -l brak return $+($chr(40),$1-,$chr(41)) | |
| 215 | ||
| 216 | ;uptime script - this is the short uptime script created to return your current update and retain your best uptime | |
| 217 | on *:connect: up x | |
| 218 | alias up { ;uptime v0.4
| |
| 219 | $iif($timer(up) == $null,.timerup 0 60 up x) | |
| 220 | if (($uptime(system,3) >= %up) || (%up == $null)) set %up $uptime(system,3) | |
| 221 | $iif($1 == x,halt,$iif($chan,msg $chan,$iif($active == Status Window,echo,say)) $+(Windows,2000) Uptime: $uptime(system,1) Best: $duration(%up)) | |
| 222 | } | |
| 223 | ||
| 224 | #!uptime on | |
| 225 | on *:text:!uptime:#: if (!$istok($moo.banchans,$chan,32)) { up | $repeatcheck(!uptime) }
| |
| 226 | #!uptime end | |
| 227 | ||
| 228 | ;moo triggers - public display, sharing the script and ctcp moo | |
| 229 | ||
| 230 | #!moo on | |
| 231 | on *:text:!moo*:#: if (!$istok($moo.banchans,$chan,32)) { $relay($chan) $moo($2) | $repeatcheck(!moo) }
| |
| 232 | #!moo end | |
| 233 | #!getmoo on | |
| 234 | on *:text:!getmoo:*: {
| |
| 235 | if ($chan) { .notice $nick moo: To get $moover type: "/msg $me !getmoo" (set "/dccignore off" first) | $repeatcheck(!getmoo) | halt }
| |
| 236 | else { .close -m $nick | .dcc send $nick $script | .notice $nick moo: Once you receive the script issue: "/load -rs $nopath($script) $+ ", and don't forget to do "/dccignore on" | $repeatcheck(!getmoo) | halt }
| |
| 237 | } | |
| 238 | #!getmoo end | |
| 239 | #ctcpmoo off | |
| 240 | ctcp *:*:*: if (($1 == MOO) || ($1 == VERSION)) { .ctcpreply $nick $1 $moover by HM2K | $repeatcheck(ctcpmoo) }
| |
| 241 | #ctcpmoo end | |
| 242 | ||
| 243 | alias -l repeatcheck { ;v0.12 by HM2K - will disable the appropriate group if its flooded
| |
| 244 | var %rep.lim = 3 | |
| 245 | var %rep.t.lim = 25 | |
| 246 | var %rep.t.expr = 10 | |
| 247 | if (%rep.lockusr- [ $+ [ $nick ] ]) { echo $ifmatch | haltdef }
| |
| 248 | inc $+(-u,%rep.t.lim,$chr(32),%,rep-,$nick,.,$len($strip($1-)),.,$hash($strip($1-),32)) 1 | |
| 249 | if (%rep- [ $+ [ $nick ] $+ . $+ [ $len($strip($1-)) ] $+ . $+ [ $hash($strip($1-),32) ] ] == %rep.lim) {
| |
| 250 | ;ignore -u60 $address($nick,5) | |
| 251 | if ($group($chr(35) $+ $1) == on) { .disable $chr(35) $+ $1 | .echo -gat $1 is $group($chr(35) $+ $1) due to a repeat flood from $iif($chan,$nick in $chan,$nick) $+ , to re-enable: /enable $chr(35) $+ $1 }
| |
| 252 | .set $+(-u,%rep.t.expr,$chr(32),%,rep.lockusr-,$nick) 1 | |
| 253 | } | |
| 254 | } | |
| 255 | ||
| 256 | ;onload and onunload checks - making sure everything is as it should be | |
| 257 | on *:load: { up x | if ($version < 6.16) { echo -a moo: you need mIRC v6.16 or greater to run this script, get the latest version from www.mirc.com/get.html | unload -rs $script | halt } }
| |
| 258 | on *:unload: { .timerup off | $iif($input(Do you want to remove the best uptime data,y,unset %up),unset %up,) | .echo $colour(info2) -gat $moover was unloaded, to reload type: /load -rs $script }
| |
| 259 | ||
| 260 | ;the menus - only simple at the moment, however this script is designed to utilise the /moo and !moo triggers | |
| 261 | menu channel,query {
| |
| 262 | $moover | |
| 263 | .moo all (/moo): moo | |
| 264 | .moo uptime (/up): up | |
| 265 | .- | |
| 266 | .!moo trigger ( $+ $group(#!moo) $+ ):{
| |
| 267 | if ($group(#!moo) != on) { .enable #!moo }
| |
| 268 | else { .disable #!moo }
| |
| 269 | .echo -ga moo: !moo is $group(#!moo) | |
| 270 | } | |
| 271 | .!uptime trigger ( $+ $group(#!uptime) $+ ):{
| |
| 272 | if ($group(#!uptime) != on) { .enable #!uptime }
| |
| 273 | else { .disable #!uptime }
| |
| 274 | .echo -ga moo: !uptime is $group(#!uptime) | |
| 275 | } | |
| 276 | .!getmoo trigger ( $+ $group(#!getmoo) $+ ):{
| |
| 277 | if ($group(#!getmoo) != on) { .enable #!getmoo }
| |
| 278 | else { .disable #!getmoo }
| |
| 279 | .echo -ga moo: !getmoo is $group(#!getmoo) | |
| 280 | } | |
| 281 | .ctcp moo trigger ( $+ $group(#ctcpmoo) $+ ):{
| |
| 282 | if ($group(#ctcpmoo) != on) { .enable #ctcpmoo }
| |
| 283 | else { .disable #ctcpmoo }
| |
| 284 | .echo -ga moo: ctcpmoo is $group(#ctcpmoo) | |
| 285 | } | |
| 286 | .- | |
| 287 | .unload $remove($script,$scriptdir) | |
| 288 | ..are you sure? | |
| 289 | ...yes: { .unload -rs $script }
| |
| 290 | ...no: { .echo $colour(info2) -gat $remove($script,$scriptdir) was NOT unloaded. }
| |
| 291 | } | |
| 292 | ;EOF |