On *:START: {   if (!$hget(feelslike)) { hmake feelslike 20 }   if ($isfile(feelslike.hsh)) { hload -s feelslike feelslike.hsh } }   on *:LOAD: {   if (!$hget(feelslike)) { hmake feelslike 20 }   if ($isfile(feelslike.hsh)) { hload -s feelslike feelslike.hsh } }   ;==================== ; Add or Remove Users ;====================   on *:TEXT:!fladd *:#: {   hadd -m feelslike $nick $2   .notice $nick You've been added to the hash table with code $2   hsave -s feelslike feelslike.hsh   msg # Added, use !fl }   on *:TEXT:!fldel *:#: {   if (($nick == $2) || ($nick == CriminalMind)) {     hdel feelslike $nick $2     msg # User deleted successfully.   }   else { msg # Permission Denied. } }   ;============================== ; Main Trigger, set search vars ;==============================   on *:TEXT:!fl*:#:{   .ignore -cu5 $nick 2   if ($sock(feelslike)) sockclose feelslike   if ($1 == !flx) {     set %fl.trig extra   }   if ($1 == !fl) {     set %fl.trig fl   }   if ($1 == !flf) {     set %fl.trig cond   }   if ($2) {     if ($hget(feelslike,$2) == $null) {       msg # No location specified for $2 $+ .     }     else {       set %userloc $hget(feelslike,$2)       sockopen feelslike www.intellicast.com 80       sockmark feelslike msg #       set %fl.nick $2     }   }   if (!$2) {     if ($hget(feelslike,$nick) == $null) {       msg # No location specified for $nick $+ .     }     else {       set %userloc $hget(feelslike,$nick)       sockopen feelslike www.intellicast.com 80       sockmark feelslike msg #       set %fl.nick $nick     }   } }   ;=============================== ; Open socket, retrieve the info ;===============================   on *:SOCKOPEN:feelslike: {   sockwrite -nt $sockname GET /Local/Weather.aspx?location= $+ %userloc HTTP/1.1   sockwrite -nt $sockname Host: www.intellicast.com   sockwrite -nt $sockname Connection: close   sockwrite -nt $sockname $crlf }   on *:SOCKREAD:feelslike: {   if ($sockerr) { $sock(feelslike).mark Socket Error: $sock(feelslike).wsmsg }   var %sockreader   sockread %sockreader     ;==================   ; Set the info vars   ;==================     if (%fl.trig == fl) {     if (*Feels Like:* iswm %sockreader) {       set %fl.t $remove($gettok(%sockreader,7,32),°,) $+ °       set %fl.tc $round($calc(($remove(%fl.t,°) - 32) * (5/9)), 2) $+ °C       set %fl.r $round($calc($remove($gettok(%sockreader,7,32),°) + 459.66), 2) $+ °     }     if (*Weather Report in* iswm %sockreader) {       set %fl.locmsg $remove($gettok(%sockreader,2-,32),Weather Report in, -)     }     if (*Heat Index: * iswm %sockreader) {       sockread %sockreader       set %fl.hi $replace($remove(%sockreader,,),°,°)       set %fl.hic $round($calc(($remove(%fl.hi,°) - 32) * (5/9)), 2) $+ °C     }     if (*Visibility* iswm %sockreader) {       sockread %sockreader       set %fl.vis $replace($remove(%sockreader,,),°,°)       set %fl.visk $round($calc($remove(%fl.vis,mi)*1.61), 2) $+ km     }     if (*Dew Point* iswm %sockreader) {       sockread %sockreader       set %fl.dew $replace($remove(%sockreader,,),°,°)F       set %fl.dewc $round($calc(($remove(%fl.dew,°) - 32) * (5/9)), 2) $+ °C     }     if (*Wind: * iswm %sockreader) {       sockread %sockreader       set %fl.wind $remove(%sockreader,,)       set %fl.windk $round($calc($remove(%fl.wind,mph)*1.61), 2) $+ km/h     }     if (*Direction: * iswm %sockreader) {       sockread %sockreader       set %fl.dir $replace($remove(%sockreader,,),°,°)     }     if (*Humidity: * iswm %sockreader) {       sockread %sockreader       set %fl.hum $remove(%sockreader,,)     }     if (*Pressure: * iswm %sockreader) {       sockread %sockreader       set %fl.pre $remove(%sockreader,,)       set %fl.prek $round($calc($remove(%fl.pre,") * 33.86), 2) $+ mb     }     if (*Gusts: * iswm %sockreader) {       sockread %sockreader       set %fl.gusts $remove(%sockreader,,)       set %fl.gustsk $round($calc($remove(%fl.gusts,mph)*1.61), 2) $+ km/h     }     if (*As of* iswm %sockreader) {       set %fl.time $remove($left(%sockreader,16),As of)     }     if (** iswm %sockreader) {       sockread %sockreader       set %fl.conditions $nohtml(%sockreader)     }   }   if (%fl.trig == extra) {     if (*UV Index:* iswm %sockreader) {       set %fl.uvindex %sockreader     }     if (*Relative Humidity:* iswm %sockreader) {       set %fl.relhum %sockreader     }     if (*Precipitation:* iswm %sockreader) {       set %fl.precip %sockreader     }     if (*Snow:* iswm %sockreader) && ($right(%sockname,1) == %) {       set %fl.snow %sockreader     }     if (*Cloud Coverage:* iswm %sockreader) {       set %fl.clco %sockreader     }     if (** iswm %sockreader) {       set %fl.desc $remove(%sockreader,,,
)     }     if (*Sunrise:* iswm %sockreader) {       set %fl.sunr $remove(%sockreader,,,
)     }     if (*Sunset:* iswm %sockreader) {       set %fl.suns $remove(%sockreader,,)     }     if (*Moonrise:* iswm %sockreader) {       set %fl.moonr $remove(%sockreader,,,
)     }     if (*Moonset:* iswm %sockreader) {       set %fl.moons $remove(%sockreader,,)     }     if (*Moonphase:
* iswm %sockreader) {       sockread %sockreader       set %fl.moonp $remove(%sockreader,,,
)     }   }   if (%fl.trig == cond) {     if (id="detail0" isin %sockreader) {       sockread %sockreader       sockread %sockreader       sockread %sockreader       sockread %sockreader       sockread %sockreader       if (evening isin %sockreader) {         sockread %sockreader         set %fl.condi $regsubex($nohtml(%sockreader),/( -?(\d+)F)/g,$+(\1,$chr(32),$chr(40),$round($calc((\2 - 32)*(5/9)),2),C,$chr(41)))       }       sockread %sockreader       set %fl.condi $regsubex($nohtml(%sockreader),/( -?(\d+)F)/g,$+(\1,$chr(32),$chr(40),$round($calc((\2 - 32)*(5/9)),2),C,$chr(41)))       sockread %sockreader       if (evening isin %sockreader) {         set %fl.condie $regsubex($nohtml(%sockreader),/( -?(\d+)F)/g,$+(\1,$chr(32),$chr(40),$round($calc((\2 - 32)*(5/9)),2),C,$chr(41)))       }     }   } }   ;=================================== ; Close the socket, message the info ;===================================   on *:SOCKCLOSE:feelslike: {   if (%fl.trig == fl) {     $sock(feelslike).mark 7Currently for %fl.nick $+ : %fl.conditions & %fl.tc ( $+ %fl.t $+ F $+ ) :: 7Heat Index: %fl.hic ( $+ $remove(%fl.hi,$chr(32)) $+ F $+ ) :: 7Humidity: %fl.hum :: 7Wind: %fl.dir at %fl.windk ( $+ $remove(%fl.wind,$chr(32)) $+ ) :: $iif($left(%fl.gustsk,1) == 0,,7Gusts: %fl.gustsk ( $+ $remove(%fl.gusts,$chr(32)) $+ ) ::) 7Visibility: %fl.visk ( $+ $remove(%fl.vis,$chr(32)) $+ ) :: 7Dew Point: %fl.dewc ( $+ $remove(%fl.dew,$chr(32)) $+ F $+ ) :: 7Pressure: %fl.prek ( $+ $remove(%fl.pre,$chr(32)) $+ ) :: 7Updated: %fl.time     ;unset %fl.*     unset %userloc   }   if (%fl.trig == extra) {     $sock(feelslike).mark 7Currently for %fl.nick $+ : %fl.uvindex :: %fl.relhum :: %fl.precip :: %fl.snow :: %fl.clco :: %fl.sunr :: %fl.suns :: %fl.moonr :: %fl.moons : Moonphase: %fl.moonp     unset %fl.*     unset %userloc   }   if (%fl.trig == cond) {     if (%fl.condie == $null) {       $sock(feelslike).mark Forecast: %fl.condi     }     if (%fl.condie != $null) {       $sock(feelslike).mark Forecast: %fl.condi %fl.condie     }     unset %fl.*     unset %f.x     unset %userloc   } } ;=================================== ; Aliases ;=================================== alias -l nohtml {   var %x, %i = $regsub($1-,/(^[^<]*>|<[^>]*>|<[^>]*$)/g,$null,%x), %x = $remove(%x, )   return %x }   on *:EXIT: {   if ($hget(feelslike))   hfree feelslike }