Jump to content

chain

Administrators
  • Content Count

    4,449
  • Joined

  • Last visited

  • Days Won

    5

chain last won the day on May 13

chain had the most liked content!

Community Reputation

17 Good

5 Followers

About chain

  • Rank
    Founder Owner Administrator
  • Birthday 01/26/1962

Contact Methods

  • Website URL
    http://chainscriptz.net

Profile Information

  • Gender
    Male
  • Location
    Montreal,Quebec
  • Interests
    scripting and chatting

Recent Profile Visitors

24,961 profile views
  1. Last year marked a slight decrease in global technology M&A activity from the blockbuster year that was 2018 – when SAP bought Qualtrics for $8 billion, IBM acquired Red Hat for a staggering $33 billion and Broadcom picked up CA Technologies for $18.9 billion in cash. As of the end of Q3 2019, technology M&A deals worth $245 billion had been announced globally, marking a decrease of 25% year-on-year according to GlobalData. Which mergers and acquisitions does 2020 have in store? If January alone is anything to go by, there will be no slowing of major deals across the industry, with security already proving to be a hot area. [ Keep up on the latest thought leadership, insights, how-to, and analysis on IT through Computerworld’s newsletters. ]Here are the biggest technology acqusitions of 2020 so far, in reverse chronological order. Read More @https://www.computerworld.com/article/3513439/biggest-technology-acquisitions-2020.html
  2. Google this week released Chrome 83, picking up after skipping a version because of the COVID-19 pandemic, auto-upgrading eligible users to DNS-over-HTTPS (DoH) and enabling tab groups for everyone. The search firm paid at least $76,000 in bounties to bug researchers who reported some of the 38 vulnerabilities patched in Chrome 83. Five were marked "High," the second-most serious in Google's four-level threat ranking, with three of those marked as "use after free" flaws. The first vulnerability listed, a use-after-free bug in Chrome's reader mode, earned researcher Woojin Oh a $20,000 reward Read More @ https://www.computerworld.com/article/3211427/whats-in-the-latest-chrome-update.html
  3. As the PS5 launch approaches, the pillars of what will make Sony's next-generation games console so special are coming into focus. Its unique SSD will allow for speedy loading times and larger worlds, and its graphics chip will help power visually stunning engines like the Unreal Engine 5.  But the amount of attention Sony is heaping on its Tempest Audio Engine, capable of dynamic and immersive 3D sound, suggests it may be the secret weapon in the PlayStation 5 arsenal. At a corporate strategy meeting for Sony, a slideshow called the PlayStation 5 an "evolution of sound". "By installing a customized 3D audio processing unit in PS5, we have made it possible to deliver diverse and sophisticated 3D audio experiences," the slide reads. "Players can experience sound that moves in from front to behind, above to below, and all around them." Unique experiencesCombining that engine with the speedy SSD and haptic feedback from the DualSense controllers will offer "experiences that were not possible before." Earlier in the year, PS5 lead system architect Mark Cerny described how it would be possible to produce thousands of individual sound sources potentially with the PS5, letting a player hear not only a rainstorm, but the fall and splash of individual droplets. All this would be delivered through a pair of headphones, too, without the need for costly surround sound audio systems. The real question, beyond price and release date, now rests with the games set to take advantage of these innovative features. The latest rumors point to a PS5 games reveal by June, so that wait may soon be over. Source: techradar.com
  4. Apple's iOS 13.5 update is about to make your face mask-wearing life a little easier, with the clearest sign that its next major iPhone software update is imminent. The GM (golden master) version of iOS 13.5 is now out for developers, and that's always the last update Apple issues before its software updates go public. iOS 13.5 features are headlined by a simplified unlock process for Face ID-equipped iPhones if you're wearing a face mask, according to the release notes via 9to5Mac. That's good news for those struggling with Face ID on iOS 13. You'll be able to unlock your phone right away with a passcode instead of waiting for the Face ID menu to fail twice, which is how it currently works. Apple's face-mask-detection feature will work on any iPhone without a home button – so from iPhone 11 to iPhone X, but not the iPhone SE 2020 – when you swipe up from the bottom of the lock screen, or need to authenticate with the App Store, Apple Books, Apple Pay or iTunes. iOS 13.5 supports Covid-19 contact tracing apps Contact tracing apps have been heralded as an essential step to reopening countries and avoiding the further spread of Covid-19. Apple and Google are leading contact tracing efforts, developing functionality into their smartphone operating systems. iOS 13.5 includes an 'Exposure Notification API' to support Covid-19 contact tracing apps from public health authorities. No, those critical apps aren't here yet – that's up to individual governments to create or enable – but the framework is ready. The Exposure Notification API uses Bluetooth Low Energy to determine if, in the last 14 days, you've passed someone and they later test positive for Covid-19 then log it into a centralized database. All of this happens anonymously. Contact tracing apps will be tech's most important contribution to helping life get back to normal, and iOS 13.5 is the first step toward making that happen. For the immediate future, however, the ability to unlock your phone faster is the main reason to download the iOS 13.5 update as soon as it launches. Source : techradar.com
  5. Gary Lin, a Chinese-American business owner in New York City, has been working through the coronavirus crisis to keep his ramen restaurant afloat. He is worried about getting sick and bringing the virus to his family, but has remained partially open for takeout services as rent and bills pile up. On top of the financial struggles, Lin said he and his employees have also been facing harassment due to their Asian background and that business was already down as early as February. Read More @https://abcnews.go.com/Business/asian-americans-face-coronavirus-double-whammy-skyrocketing-unemployment/story?id=70654426&cid=clicksource_4380645_2_heads_hero_live_hero_hed
  6. another one for all types of styles https://www.messletters.com/en/
  7. looking to change the style of your nickname go here!! https://lingojam.com/StylishTextGenerator
  8. chain

    screenshot

    Another with whats his name LOL
  9. chain

    screenshot

    Found this awhile back!!!
  10. France followed in Germany's footsteps by passing a law Wednesday to slap huge fines on social media companies that  don't remove illegal or harmful content within an hour of notification. The new rules, which go into effect July 1, mean that companies must remove the most problematic content -- child abuse and terrorism-related content -- within 60 minutes. For hate speech and other harmful content, the companies will get 24 hours to pull down the content. Failing to comply with the law can lead to fines of up 1.25 million euros ($1.36 million), or up to 4% of their global revenue for serious, repeat offenders. https://www.cnet.com/news/france-gives-social-media-companies-one-hour-to-delete-illegal-content/
  11. Version 4.22.9

    0 downloads

    Script Updates Converted all files from ANSI/chcp 1252 to UTF-8, and added Unicode support to regular expressions in functions. Fixed XDCC.ptm bug that prevented translation from working properly. The old exploit was apparently not completely fixed. It should now be fixed. The Splash screen is back! We have fixed all known bugs, and the script is back to what it was when 4.22 was released.
  12. chain

    Peace and Protection

    Version 4.22.9 is released. (2020-03-25) Script Updates Converted all files from ANSI/chcp 1252 to UTF-8, and added Unicode support to regular expressions in functions. Fixed XDCC.ptm bug that prevented translation from working properly. The old exploit was apparently not completely fixed. It should now be fixed. The Splash screen is back! We have fixed all known bugs, and the script is back to what it was when 4.22 was released. Peace&Protection
  13. ; #= ppweather -rs ; ######################################## ; Peace and Protection ; PnP Weather (standard addon) ; ######################################## #.ppa.info off [addon] name=Weather group=Tutorial popup=Weather author=acvxqs version=1.12 url=https://github.com/acvxqs/PnPAddons422 email= id=ppweather ppver=4.22 config=weather unload=weather.unload vars2=weather.apiurl weather.apikey weather.pchar weather.qstring weather.ustring weather.astring weather.mstring weather.kstring weather.istring weather.trigger windows= dialogs=weather [files] 1=weather.ppa [notes] 1=This addon allows you to retrieve weather information from OpenWeatherMap.org using command: /weather {city},{country code} or respond in channel to a !weather {city},{country code} trigger. 2=Please note that city name and country code are divided by comma, use ISO 3166 country codes. #.ppa.info end on *:LOAD:{ ; PnP check if (!$_ispnp) { echo 4 -ati2 *** This addon requires Peace and Protection by pai to use. echo 4 -ati2 *** You can download Peace and Protection at http://www.kristshell.net/pnp/ .timer -mio 1 0 .unload -rs " $+ $script $+ " halt } ; Invalid load method check if (!$istok($_cfgx(addons,ids),$readini($script,n,addon,id),32)) { .timer -mio 1 0 .unload -rs " $+ $script $+ " dispa Unloading ' $+ $script $+ ' $chr(40) $+ addon is not properly loaded; use /addon to load it $+ $chr(41) halt } if ($version < 7.52) { .timer -mio 1 0 .unload -rs " $+ $script $+ " dispa Unloading ' $+ $script $+ ' $chr(40) $+ This script requires mIRC version 7.52+ $+ $chr(41) halt } if ($version < 7.56) { dispa This script requires SReject's JSON For mIRC! dispa Please get it from: https://github.com/SReject/JSON-For-Mirc/archive/v1.0.4000.zip } else getJFM } dialog weather { title "Weather Central" size -1 -1 202 214 option dbu icon script\pnp.ico box "Respond to trigger on networks:", 1, 5 5 95 90 combo 2, 10 15 50 50, size button "Add", 3, 65 15 27 11, disable button "Remove", 4, 65 30 27 11, disable radio "Whitelist channels", 5, 10 70 60 10, group disable radio "Blacklist channels", 6, 10 80 60 10, disable box "Specify channels:", 7, 103 5 95 90 combo 8, 108 15 50 50, size disable button "Add", 9, 163 15 27 11, disable button "Remove", 10, 163 30 27 11, disable box "", 11, 5 100 193 90 check "City", 12, 10 110 50 10, disable check "Country", 13, 10 120 50 10, disable check "Weather short", 14, 10 130 50 10, disable check "Weather long", 15, 10 140 50 10, disable check "Humidity", 16, 10 150 50 10, disable check "Temperature", 17, 65 110 50 10, disable check "Temp. min.", 18, 65 120 50 10, disable check "Temp. max.", 19, 65 130 50 10, disable check "Pressure", 20, 65 140 50 10, disable check "Visibility", 21, 65 150 50 10, disable check "Wind speed", 22, 120 110 50 10, disable check "Wind degree", 23, 120 120 50 10, disable check "Sunrise", 24, 120 130 50 10, disable check "Sunset", 25, 120 140 50 10, disable check "Clouds", 26, 120 150 50 10, disable radio "Kelvin", 27, 10 175 50 10, group disable radio "Metric", 28, 65 175 50 10, disable radio "Imperial", 29, 120 175 50 10, disable text "Unit format:", 30, 10 165 37 8 button "OK", 100, 5 195 40 12, ok button "Cancel", 101, 65 195 37 12, cancel button "API Key", 102, 120 195 37 12 } on *:DIALOG:weather:init:0:{ ; convert active entries to entries the dialog can work with var %anetworks $hget(pnp.weather,anetworks) hadd pnp.weather networks %anetworks if (%anetworks) { ; iterate over networks var %n 1 while ($gettok(%anetworks,%n,44)) { ; there's two net specific hashes: -opt and -channels ; make sure they are ported from 'anet' to 'net' ; data should exist in them already, but cannot hurt to check: var %network $v1 if ($hget(pnp.weather,$+(anet-,%network,-opt))) hadd pnp.weather $+(net-,%network,-opt) $v1 if ($hget(pnp.weather,$+(anet-,%network,-channels))) hadd pnp.weather $+(net-,%network,-channels) $v1 ; now let's focus on all the channels for the network, if ; they exist! ; grab $v1 from previous if-check, handy! var %achannels $v1 if (%achannels) { var %c 1 while ($gettok(%achannels,%c,44)) { var %chan $v1 if ($hget(pnp.weather,$+(achan-,%network,-,%chan))) hadd pnp.weather $+(chan-,%network,-,%chan) $v1 inc %c } } inc %n } ; well we have to load networks if they exist! didtok $dname 2 44 %anetworks } } alias -l wedloadnet { var %network $1 if (!$hget(pnp.weather,$+(net-,%network,-opt))) hadd pnp.weather $+(net-,%network,-opt) 1,1100010000000001 tokenize 44 $hget(pnp.weather,$+(net-,%network,-opt)) if ($1) { did -u $dname 5 did -c $dname 6 wesetopt $2 } else { did -c $dname 5 did -u $dname 6 } did -r $dname 8 if ($hget(pnp.weather,$+(net-,%network,-channels))) { didtok $dname 8 44 $v1 } did -u $dname 8 } alias -l wedloadchan { var %network $1 var %chan $2 if (!$hget(pnp.weather,$+(chan-,%network,-,%chan))) hadd pnp.weather $+(chan-,%network,-,%chan) 1100010000000001 if ($did(5).state) wesetopt $hget(pnp.weather,$+(chan-,%network,-,%chan)) } alias -l wedu { goto $did(2,0).sel $+ $did(8,0).sel $+ $did(6).state :000 | :001 | :010 ;echo -a 000 001 010 $caller did -b $dname 4,5,6,8,9,10,12-29 did -r $dname 8 return :011 ;echo -a 011 $caller did -r $dname 8 did -ra $dname 11 Settings did -b $dname 5,6,8,9,10,12-29 did -u $dname 12-29 return :100 ;echo -a 100 $caller did -bu $dname 12-29 did -e $dname 4,5,6,8 did -ra $dname 11 Settings return :101 ;echo -a 101 $caller did -e $dname 4,5,6,8,12-29 did -ra $dname 11 Settings for network: $did(2,0).text return :110 ;echo -a 110 $caller did -e $dname 8,10,12-29 did -ra $dname 11 Settings for channel: $replace($did(8,0).text,&,&&) on network: $did(2,0).text return :111 ;echo -a 111 $caller did -e $dname 10 did -ra $dname 11 Settings for network: $did(2,0).text return } on *:DIALOG:weather:sclick:*:{ if ($did < 1) return elseif ($did == 2) { if ($did(2,0).sel) wedloadnet $did(2,0).text | wedu } elseif ($did == 3) { _ddadd $dname 2 $did(2,0).text hadd pnp.weather networks $addtok($hget(pnp.weather,networks),$did(2,0).text,44) did -uf $dname 2 } elseif ($did == 4) { hadd pnp.weather networks $remtok($hget(pnp.weather,networks),$did(2,0).text,1,44) did -d $dname 2 $did(2,1).sel did -r $dname 8 did -uf $dname 2 did -b $dname 3,4,5,6,8,9,10,12-29 did -ra $dname 11 Settings } elseif ($did == 5) { var %do $+(net-,$did(2,0).text,-opt) hadd pnp.weather %do $puttok($hget(pnp.weather,$+(net-,$did(2,0).text,-opt)),0,1,44) if ($did(8,0).text) wedloadchan $did(2,0).text $did(8,0).text wedu } elseif ($did == 6) { var %do $+(net-,$did(2,0).text,-opt) hadd pnp.weather %do $puttok($hget(pnp.weather,$+(net-,$did(2,0).text,-opt)),1,1,44) wedloadnet $did(2,0).text wedu } elseif ($did == 8) { if ($did(8,0).sel) wedloadchan $did(2,0).text $did(8,0).text | wedu } elseif ($did == 9) { _ddadd $dname 8 $did(8,0).text hadd pnp.weather $+(net-,$did(2,0).text,-channels) $addtok($hget(pnp.weather,$+(net-,$did(2,0).text,-channels)),$did(8,0).text,44) did -uf $dname 8 } elseif ($did == 10) { hadd pnp.weather $+(net-,$did(2,0).text,-channels) $remtok($hget(pnp.weather,$+(net-,$did(2,0).text,-channels)),$did(8,0).text,1,44) hdel pnp.weather $+(chan-,$did(2,0).text,-,$did(8,0).text) did -d $dname 8 $did(8,1).sel did -uf $dname 8 if ($did(5).state) did -b $dname 12-29 else did -e $dname 12-29 did -b $dname 10 did -ra $dname 11 Settings } elseif ($istok(12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29,$did,32)) { ;editing for channel? if ($did(5).state) { hadd pnp.weather $+(chan-,$did(2,0).text,-,$did(8,0).text) $wegetopt } ; editing for network? elseif ($did(6).state) { var %do $+(net-,$did(2,0).text,-opt) hadd pnp.weather %do $puttok($hget(pnp.weather,%do),$wegetopt,2,44) } } elseif ($did == 100) { ; purging channels that were removed... var %rn 1 while ($gettok($hget(pnp.weather,anetworks),%rn,44)) { var %rc 1,%rnetwork $v1 while ($gettok($hget(pnp.weather,$+(anet-,%rnetwork,-channels)),%rc,44)) { var %rchan $v1 if (!$istok($hget(pnp.weather,$+(net-,%rnetwork,-channels)),%rchan,44)) { hdel pnp.weather $+(achan-,%rnetwork,-,%rchan)) } inc %rc } inc %rn } var %networks $hget(pnp.weather,networks) hadd pnp.weather anetworks %networks if (%networks) { ; iterate over networks var %n 1 while ($gettok(%networks,%n,44)) { ; there's two net specific hashes: -opt and -channels ; make sure they are ported from 'net' to 'anet' var %network $v1 `weather $+(anet-,%network,-opt) $hget(pnp.weather,$+(net-,%network,-opt)) `weather $+(anet-,%network,-channels) $hget(pnp.weather,$+(net-,%network,-channels)) ; now let's focus on all the channels for the network, if ; they exist! ; grab $v1 from previous if-check, handy! var %channels $hget(pnp.weather,$+(net-,%network,-channels)) if (%channels) { var %c 1 while ($gettok(%channels,%c,44)) { var %chan $v1 if ($hget(pnp.weather,$+(chan-,%network,-,%chan))) `weather $+(achan-,%network,-,%chan) $v1 inc %c } } inc %n } } ; throw away dialog data hdel -w pnp.weather net-* hdel -w pnp.weather chan-* hdel pnp.weather networks } elseif ($did == 101) { ; throw away changes hdel -w pnp.weather net-* hdel -w pnp.weather chan-* hdel pnp.weather networks } elseif ($did == 102) { `set weather.apikey $_entry(-1,$hget(pnp.config,weather.apikey),What is your API key?) } } on *:DIALOG:weather:edit:2:{ if ($did(2,0).text == $null) { did -b $dname 3 } elseif ($_scandid($dname,2,$did(2,0).text)) { did -c $dname 2 $v1 did -b $dname 3 did -e $dname 4 wedloadnet $did(2,0).text } else { did -e $dname 3 did -b $dname 4,8 } wedu } on *:DIALOG:weather:edit:8:{ if ($did(8,0).text == $null) { did -b $dname 9 did -ra $dname 11 Settings } elseif ($_scandid($dname,8,$did(8,0).text)) { did -c $dname 8 $v1 did -b $dname 9 wedloadchan $did(8,0).text wedu } else { did -e $dname 9 did -b $dname 10 } wedu } alias -l wesetopt { if ($left($1,1)) did -c $dname 12 else did -u $dname 12 if ($mid($1,2,1)) did -c $dname 13 else did -u $dname 13 if ($mid($1,3,1)) did -c $dname 14 else did -u $dname 14 if ($mid($1,4,1)) did -c $dname 15 else did -u $dname 15 if ($mid($1,5,1)) did -c $dname 16 else did -u $dname 16 if ($mid($1,6,1)) did -c $dname 17 else did -u $dname 17 if ($mid($1,7,1)) did -c $dname 18 else did -u $dname 18 if ($mid($1,8,1)) did -c $dname 19 else did -u $dname 19 if ($mid($1,9,1)) did -c $dname 20 else did -u $dname 20 if ($mid($1,10,1)) did -c $dname 21 else did -u $dname 21 if ($mid($1,11,1)) did -c $dname 22 else did -u $dname 22 if ($mid($1,12,1)) did -c $dname 23 else did -u $dname 23 if ($mid($1,13,1)) did -c $dname 24 else did -u $dname 24 if ($mid($1,14,1)) did -c $dname 25 else did -u $dname 25 if ($mid($1,15,1)) did -c $dname 26 else did -u $dname 26 if ($right($1,1) == 1) { did -u $dname 27 did -c $dname 28 did -u $dname 29 } elseif ($right($1,1) == 2) { did -u $dname 27 did -u $dname 28 did -c $dname 29 } else { did -c $dname 27 did -u $dname 28 did -u $dname 29 } } alias -l wegetopt { var %opt,%i 12 while (%i <= 26) { %opt = %opt $+ $did(%i).state inc %i } if ($did(27).state) %opt = %opt $+ 0 elseif ($did(28).state) %opt = %opt $+ 1 elseif ($did(29).state) %opt = %opt $+ 2 else %opt = %opt $+ 1 return %opt } alias -l weather.load { if ($hget(pnp.weather)) hdel -w pnp.weather * else hmake pnp.weather 30 var %file $_cfg(weather.dat) if ($isfile(%file)) hload pnp.weather " $+ %file $+ " } alias weather.unload { if ($islias(jsonclose)) jsonclose -w PPWEATHER.* weather.save 1 if (!$_yesno(1,Would you like to keep weather configuration data?)) .remove $_cfg(weather.dat) } alias -l weather.save { var %file $_cfg(weather.dat) if ($hget(pnp.weather)) { hsave pnp.weather " $+ %file $+ " if ($1) hfree pnp.weather } } alias -l weather.setup { if ($hget(pnp.weather) == $null) weather.load if (!$hget(pnp.config,weather.apiurl)) `set weather.apiurl $weather.owm(apiurl) if (!$hget(pnp.config,weather.pchar)) `set weather.pchar $weather.owm(pchar) if (!$hget(pnp.config,weather.qstring)) `set weather.qstring $weather.owm(qstring) if (!$hget(pnp.config,weather.ustring)) `set weather.ustring $weather.owm(ustring) if (!$hget(pnp.config,weather.astring)) `set weather.astring $weather.owm(astring) if (!$hget(pnp.config,weather.mstring)) `set weather.mstring $weather.owm(mstring) if (!$hget(pnp.config,weather.istring)) `set weather.istring $weather.owm(istring) if (!$hget(pnp.config,weather.kstring)) `set weather.kstring $weather.owm(kstring) if (!$hget(pnp.config,weather.trigger)) `set weather.trigger !weather } alias weather.owm { if ($istok(apiurl dunits pchar qstring ustring astring mstring istring kstring,$1,32)) goto $1 else return $null :apiurl | return http://api.openweathermap.org/data/2.5/weather :pchar | return ? :qstring | return q= :ustring | return &units= :astring | return &appid= :mstring | return metric :istring | return imperial :kstring | return kelvin } on *:START:{ if ($_ispnp) _startup.add _weather.start Initializing weather addon } on *:EXIT:{ weather.save | jsonclose -w PPWEATHER.* } alias _weather.start { weather.setup } ; `weather varname [value] ; varname should not include the %` alias `weather { if ($hget(pnp.weather,$1) == $2-) return if ($2- == $null) { hdel pnp.weather $1 write -ds [ $+ [ $1 ] ] config\ $+ $hget(pnp,user) $+ \weather.dat _broadcastp hdel pnp.weather $1 } else { hadd pnp.weather $1 $2- write -s [ $+ [ $1 ] ] config\ $+ $hget(pnp,user) $+ \weather.dat $1- _broadcastp _`weather $1 } } alias _`weather hadd pnp.config $1 $read(config\ $+ $hget(pnp,user) $+ \weather.dat,nts,$1) alias weather { var %caller $caller if ($isid) return var %switch,%rest if (+* iswm $1) { %switch = $mid($1,2) %rest = $2- } else { if (%caller == editbox) %switch = m elseif (%caller == event) { if ($istok($hget(pnp.weather,anetworks),$network,44)) { var %netopt $hget(pnp.weather,$+(anet-,$network,-opt)) if ($gettok(%netopt,1,44)) { if ($right($gettok(%netopt,2,44),1) == 0) %switch = k elseif ($right($gettok(%netopt,2,44),1) == 1) %switch = m elseif ($right($gettok(%netopt,2,44),1) == 2) %switch = i else halt } elseif ($istok($hget(pnp.weather,$+(anet-,$network,-channels)),$chan,44)) { var %chanopt $hget(pnp.weather,$+(achan-,$network,-,$chan)) if ($right(%chanopt,1) == 0) %switch = k elseif ($right(%chanopt,1) == 1) %switch = m elseif ($right(%chanopt,1) == 2) %switch = i else halt } else halt } else halt } else %switch = m %rest = $1- } if (%rest) { if (%switch === m) { var %units $+($hget(pnp.config,weather.ustring),$hget(pnp.config,weather.mstring)) %switch = metric } elseif (%switch === i) { var %units $+($hget(pnp.config,weather.ustring),$hget(pnp.config,weather.istring)) %switch = imperial } elseif (%switch === k) { var %units $+($hget(pnp.config,weather.ustring),$hget(pnp.config,weather.kstring)) %switch = kelvin } if (!$hget(pnp.config,weather.apikey)) { dispa Weather: API key not set! halt } var %city $gettok(%rest,1,44) %city = $replace(%city,$chr(32),$chr(37) $+ 20) var %cc $gettok(%rest,2,44) var %pattern /^[-%20a-z]{2,}$/i if (($regex(%city,%pattern)) && ($regex(%cc,/^[a-z]{2}$/i))) { var %jsonname $lower($+(PPWEATHER.,%city,.,%cc,.,%switch)) if (!$JSON(%jsonname)) { weatherfetch %caller %jsonname %city %cc %units } else { var %dt $json(%jsonname,dt).value if ((!%dt) || ($calc($ctime - %dt) >= 600)) { JSONCLOSE %jsonname weatherfetch %caller %jsonname %city %cc %units } else { if (%caller == editbox) dispa [Weather] (cached) $regsubex($json(%jsonname).string,/(\d)/g,$:t(\1))) elseif (%caller == event) { if ($_weatherfetchresult(%jsonname)) msg $chan [Weather] (cached) $v1 } } } } else { if (%caller == editbox) dispa Usage: /weather <+m|i|k> <city>,<country code> elseif (%caller == event) notice $nick Usage: $hget(pnp.config,weather.trigger ) <city>,<country code> | notice $nick Example: $hget(pnp.config,weather.trigger) Vlissingen,nl } } else _dialog -am weather weather } alias -l _weatherfetchresult { var %jsonname $1, %result ; respond to network? if ($istok($hget(pnp.weather,anetworks),$network,44)) { ; blacklist channels? If so, respond to all channels! var %netopt $hget(pnp.weather,$+(anet-,$network,-opt)) if ($gettok(%netopt,1,44)) { ; if channel not blacklisted, then proceed if (!$istok($hget(pnp.weather,$+(anet-,$network,-channels)),$chan,44)) { if ($gettok(%netopt,2,44)) { var %opt $v1 %result = $_weatherfetchresult2(%jsonname,%opt) } } } ; whitelist channels? ; check if channel is in the list and if it is ; check its options elseif ($istok($hget(pnp.weather,$+(anet-,$network,-channels)),$chan,44)) { var %opt $hget(pnp.weather,$+(achan-,$network,-,$chan)) %result = $_weatherfetchresult2(%jsonname,%opt) } else %result = $null } else %result = $null return %result } alias -l _weatherfetchresult2 { var %jsonname $1 var %opt $2 var %city $json(%jsonname,name).value var %cc $json(%jsonname,sys,country).value var %short $json(%jsonname,weather,0,main).value var %long $json(%jsonname,weather,0,description).value var %hum $json(%jsonname,main,humidity).value var %temp $json(%jsonname,main,temp).value var %min_temp $json(%jsonname,main,temp_min).value var %max_temp $json(%jsonname,main,temp_max).value var %pressure $json(%jsonname,main,pressure).value var %vis $json(%jsonname,visibility).value var %wspeed $json(%jsonname,wind,speed).value var %wdegree $json(%jsonname,wind,deg).value var %sunrise $json(%jsonname,sys,sunrise).value var %sunset $json(%jsonname,sys,sunset).value var %clouds $json(%jsonname,clouds,all).value var %result if ($left(%opt,1)) %result = City: %city • if ($mid(%opt,2,1)) %result = %result Country: %cc • if ($mid(%opt,3,1)) %result = %result Weather: %short • if ($mid(%opt,4,1)) %result = %result Description: %long • if ($mid(%opt,5,1)) %result = %result Humidity: %hum • if ($mid(%opt,6,1)) %result = %result Temperature: %temp • if ($mid(%opt,7,1)) %result = %result Min. temp.: %min_temp • if ($mid(%opt,8,1)) %result = %result Max. temp: %max_temp • if ($mid(%opt,9,1)) %result = %result Pressure: %pressure • if ($mid(%opt,10,1)) %result = %result Visibility: %vis • if ($mid(%opt,11,1)) %result = %result Wind speed: %wspeed • if ($mid(%opt,12,1)) %result = %result Wind degree: %wdegree • if ($mid(%opt,13,1)) %result = %result Sunrise: ETA $duration($remove($calc($ctime - %sunrise),-),3) • if ($mid(%opt,14,1)) %result = %result Sunset: ETA $duration($remove($calc($ctime - %sunset),-),3) • if ($mid(%opt,15,1)) %result = %result Clouds: %clouds • return %result } alias -l weatherfetch { var %caller $1 var %jsonname $2 var %city $3 var %cc $4 var %units $5 var %page $+($hget(pnp.config,weather.apiurl),$hget(pnp.config,weather.pchar)) %page = $+(%page,$hget(pnp.config,weather.qstring),%city,$chr(44),%cc) %page = $+(%page,%units)) %page = $+(%page,$hget(pnp.config,weather.astring),$hget(pnp.config,weather.apikey)) JSONOPEN -u %jsonname %page if ($json(%jsonname).httpStatus == 200) { if (%caller == editbox) dispa [Weather] $regsubex($json(%jsonname).string,/(\d)/g,$:t(\1))) elseif (%caller == event) { if ($_weatherfetchresult(%jsonname)) msg $chan [Weather] $v1 } else dispa %caller } elseif ($json(%jsonname).string) { if (%caller == editbox) dispa Weather: $json(%jsonname).string elseif (%caller == event) msg $chan [Weather] $json(%jsonname).string } else dispa Weather: $json(%jsonname).httpStatus - $json(%jsonname).httpStatusText } on *:TEXT:$($hget(pnp.config,weather.trigger) *):#:weather $2- alias getJFM { ; sha-512 of JSON For mIRC.mrc v1.0.4000 var %sha512-1 b29de8c964b002d089fa030a9a5357e3c737f17cd16309c0fa82142120a590db2223d4703cafe97f37b65de170bb4d9dbf7bb508f4052a47a2127fc74c10a6d6 ; group enabled hash var %sha512-2 183153806705c99fce8fb3003ea7e5522e9f67c40b3e064280ad83111e3d8f92b4cfae106b8827a9d99c2377c32d6d6892fe878a027bcaea24a466450cfeead8 ; check if JSON For mIRC is loaded if ($isalias(JSONVersion)) { ; script is loaded, but what version? var %file $isalias(JSONVersion).fname if (!$istok(%sha512-1 %sha512-2,$sha512(%file,2),32)) { dispa Unloading $JSONVersion ... .unload -rs $qt(%file) | .timer -mio 1 0 getJFM } else return 0 } elseif ($1 isnum) { if ($urlget($1).state == fail) { dispa Downloading JSON For mIRC failed. Are you connected to the internet? | halt } elseif ($zip($urlget($1).target,eo,scripts)) { var %file $qt($findfile(scripts\JSON-For-Mirc-1.0.4000,JSON For mIRC.mrc,1)) if ($sha512(%file,2) == %sha512-1) dispa Loading JSON For mIRC ver1.0.4000 | .load -rs %file else dispa Wrong sha512 hash for %file $+ ! .remove $urlget($1).target } else { dispa Something went wrong unzipping $:t($urlget($1).target) } } else { var %url https://github.com/SReject/JSON-For-Mirc/archive/v1.0.4000.zip var %target JFM.zip dispa Obtaining JSON For mIRC... return $urlget(%url,gf,%target,getJFM) } }
  14. chain

    mIRC v7.61

    This is a small update that addresses a number of issues reported by users since the last release. It includes improvements, changes and fixes to a number of features, including:Fixed custom toolbar buttons not being displayed correctly.Fixed /if isnum backward compatibility issue due to recent change.Fixed local host/ip addresses not being changeable while connected to a server.Fixed bitmap memory bug in About dialog.Fixed /cnick not updating nick color immediately when used with a full address.How to upgrade?mIRC is distributed in an installer that installs mIRC on your computer for you. Simply download and run the installer from the download page on the mIRC website. Follow the instructions the installer gives to you. When upgrading all your old settings and scripts will stay as they were, if you want that. Read the questions the installer asks with care and nothing can go wrong. You will be chatting with the new mIRC in no time. If you get stuck or if you want to find out more about a certain feature, just click on a Help button or browse the Help file and you should find lots of hints to help you out.Where to download?As always, the latest version of mIRC can be downloaded from the download page on the mIRC website.Registering mIRCAs you know, mIRC can be downloaded freely and evaluated for 30 days. If you find that you enjoy using mIRC, it would be great and much appreciated if you registered your copy. This licenses you to use your copy of mIRC and helps to support our continued work on mIRC. You can find out how to register here.Full list of Fixes, Changes and Additions.For a more detailed list of recent changes, please see the whatsnew.txt file. You will need to read through the help file to learn more about these changes and their impact. Some changes are obvious, some need getting used to - please take your time to play with them and see how they work. May we invite you to use these forums for all questions you might have? The forums offer great help with everything related to mIRC!
  15. Adobe, events are always exciting opportunities to showcase our innovation, to be inspired, network, and learn from one another. We have made the critical decision to pivot Adobe’s in-person events to a virtual format for the remainder of 2020. It is our ongoing commitment to continue to protect the health and wellbeing of our employees, customers, partners, and communities and do our part to flatten the curve of COVID-19. This unprecedented time has spawned an amazing amount of creativity, productivity, collaboration, and innovation at Adobe. More than ever, we are committed to delivering the world’s best digital events for our customers and communities all around the world. On October 19, we will host Digital MAX, which promises to be one of the most immersive, imaginative, and innovative digital events of the year. As always, we’ll be unveiling the latest Creative Cloud innovation, hearing from some of the most inspirational creative leaders in the world, and creating new and exciting ways to connect our global community. And best yet, the magic of Adobe MAX will be open to everyone. Read More Here
×
×
  • Create New...