rcmaehl

IRC UDF - Updated Version of Chips' IRC UDF - Release: V1.22 - 09/06/2016 - Technical Writer Needed!

85 posts in this topic

#1 ·  Posted (edited)

A UDF to connect to IRC using TCP Functions, as well as perform actions once connected.

WANTED: Technical Writer able to create / maintain a helpfile (.chm) using the Autoit helpfile layout for an negotiated rate.

Notes:
Originally created by Chip.
UDF Headers updated compared to old script.
Error and Parameter Handling updated compared to old script.
If you need to bypass the RFC compliance of this UDF, use _IRCRaw.
The majority of the old functions have been modified. It will break most, if not all, scripts using the old UDF.
These commands should work on every server following either RFC 1459 (legacy) or RFC 2812 (preferred).

 

Potential Uses:
IRC Chat Clients
Chatroom Integration for software
IRC Bots for Channel / Server Administration
IRC Bots for Games such as Hangman, Mafia, and WereWolf
Remote Administration without having to setup your own AutoIt server



Functions:
_IRCChannelInvite
_IRCChannelJoin
_IRCChannelKick
_IRCChannelPart
_IRCChannelTopic
_IRCConnect
_IRCDisconnect
_IRCGetMsg
_IRCMultiMode
_IRCMultiSendMsg
_IRCRaw
_IRCSelfOper
_IRCSelfSetNick
_IRCSelfSetStatus
_IRCServerPing
_IRCServerPong
_IRCServerTime
_IRCServerVersion

 

Extra Functions:
_IRCReplyTo (IRCExtras.au3)
_IRCStripSpecial (IRCExtras.au3)

 

Downloads:

 

Additional Links:
Chips' Old UDF Topic:


 

DISCLAIMER:
While these downloads are more stable than the ones above, I do not have time to thoroughly test all functions and variable entries. If something doesn't work as expected or gives you an error please check @error and @extended variables then create a reply to this topic.


Changelog:

09/06/2016:

  IRC.au3            Fixed   : Updated Headers to UDF-spec (- instead of =)
  _IRCGetMsg         Fixed   : Incorrect Return Value On Error
  _IRCStripSpecial   Added   : Better documentation of Flags
  _IRCMultiSendMsg   Added   : Better documentation of Flags
  _IRCMultiSendMsg   Fixed   : Max Message Size based on https://forums.unrealircd.org/viewtopic.php?t=6811
  Updated all files to consider themselves a standalone install by default
  All Functions that didn't Return anything now return Number of bytes sent
  Slight Performance Improvements by using Parameter Gating instead of Single Input Single Output

07/21/2016:

  Example.au3        Fixed  : Includes
  Example.au3        Renamed: IRC_Example.au3
  IRC.au3            Changed: Minor Performance Improvements

04/18/2016:

  IRCConstants.au3   Updated: A Ton of New Constants added
  IRCMultiSendMsg    Added  : Color Example
  Increased TCP Timeout in all Examples

04/13/2016:

  CUI.au3            Updated: Errors now output to Error Stream in Console
  (C/G)UI.au3        Fixed  : Userlists (FOR REAL THIS TIME) by being sure to get the current channel
                     Removed: Duplicate Constants File Include
                     Removed: Local Declaration inside of While loop for Performance
                     Updated: TCPTimeout Increased
                     Updated: $sTemp renamed $sStrip for Readibility
  Example.au3        Updated: TCPTimeout Increased
  GUI_Client.au3     Renamed: GUI.au3
  _IRCStripSpecial   Added  : Parameter Checking
                     Updated: Documentation
  _IRCMultiSendMsg   Added  : Additional flags for Message Type (POSSIBLY SCRIPT BREAKING if using $_bTrim!)
                     Updated: Example to show new flags
                     Updated: Increase Max Message Size from 368 To 436
                     
04/09/2016:

  IRC.au3            Updated: All Documentation
                     Added  : Now has a Constaznts file
  _IRCConnnect       Fixed  : Now PROPERLY returns any errors
  _IRCGetMsg         Removed: $_iChars parameter since it gets one packet at a time and parsing is easier
  _IRCReplyTo        Fixed  : Now properly returns username
  _IRCStripSpecial   Added  : Now uses Constants File
  All files are now in a single ZIP
  Includes 2 basic IRC "clients", a CUI, and a GUI

07/15/2015:

  Example.au3        Added  : Improved Debugging
                     Updated: All Space Indents to Tab Idents
  IRC.au3            Removed: Exception skipping @error = -1 in IRCGetMsg() as 3.3.14.0 fixed it

07/15/2015:

  Example.au3        Added  : Ping Timeout
                     Fixed  : Userlist clipping of last user
  IRC.au3            Fixed  : IRCGetMsg() Hang

07/08/2015:

  Example.au3        Fixed  : User Lists
                     Fixed  : Nickname now switches to backup nickname if first choice is already in use
  IRC.au3            Added  : UDF Index
                     Added  : #include-once
                     Updated: All Functions updated to Single Entry, Single Exit
                     Updated: Now passes Au3Check on -q -d -w 1 -w 2 -w 3 -w- 4 -w 5 -w 6 -w- 7

01/15/2015:

  Example.au3        Fixed  : Ampersand channels causing a crash

12/20/2014:

  Example.au3        Fixed  : Nicks not updating on all channel lists when a user changed their nick
                     Fixed  : Nicks not deleting on all channel lists when a user quits the network

12/19/2014:

  Example.au3        Added  : User lists
                     Added  : Channel lists
                     Added  : Bot keeps track of own nick
                     Added  : Secondary nick in case first nick choice is in use.
                     Added  : Extremely Minor performance improvements

  _IRCConnect        Added  : Improved parameter checking
  _IRCGetMsg         Updated: Now only retrieves one packet by default (MAY be script breaking)

10/14/2014:

  Example.au3        Added  : Shutdown TCP on exit
                     Fixed  : $Recipient now gets the actual Recipient instead of the 3rd message
                     Added  : Now exits when told to quit.
  IRC.au3            Added  : Improved Error Reporting (Includes @extended on error)
  _IRCDisconnect     Added  : Close Socket on Disconnect
  _IRCStripSpecial   Added  : Improved Color Stripping

09/28/2014:

  _IRCConnect        Fixed  : Checking if Mode was blank.
  _IRCGetMsg         Fixed  : Spamming of 0 and incorrectly thinking there was an error.

09/28/2014:

  IRC.au3            Fixed  : All functions now return when errors are encountered instead of continuing
  _IRCConnect        Added  : Now returns an error if optional password failed to send
  _IRCGetMsg         Added  : Now returns an error if it failed to receive a custom amount of data
  _IRCServerVersion  Fixed  : Capitalized "Version"

09/26/2014:

  Example.au3        Fixed  : Pings not ending with @CRLF
  IRCExtras.au3      Added  : _IRCStripSpecial(), Cleans special characters sometimes seen in IRC

09/24/2014:

  Example.au3        Added  : Checking for PrivMsg
                     Fixed  : Infinite loop if you removed _IRCDisconnect
                     Updated: Bot now disconnects when receiving "!quit" instead of automatically
  Discontinuted BETA UDF project.

04/20/2014:

  IRCExtras.au3      Added  : Additional IRC Functions
  _IRChangeNick      Renamed: _IRCSelfSetNick (SCRIPT BREAKING! Fix: Replace _IRCChangeNick with _IRCSelfSetNick)
  _IRCGetMsg         Fixed  : Now no longer Splits Packets if Default option is used
  _IRCChannelInvite  Added  : Invites a User to a Channel
  _IRCChannelKick    Added  : Kick a User from a channel
  _IRCJoinChannel    Renamed: _IRCChannelJoin (SCRIPT BREAKING! Fix: Replace _IRCJoinChannel with _IRCChannelJoin)
  _IRCMode           Renamed: _IRCMultiMode (SCRIPT BREAKING! Fix: Replace _IRCMode with _IRCMultiMode)
  _IRCOper           Renamed: _IRCSelfOper (SCRIPT BREAKING! Fix: Replace _IRCOper with _IRCSelfOper)
  _IRCPartChannel    Renamed: _IRCChannelPart (SCRIPT BREAKING! Fix: Replace _IRCPartChannel with _IRCChannelPart)
  _IRCPing           Renamed: _IRCServerPing (SCRIPT BREAKING! Fix: Replace _IRCPing with _IRCServerPing)
  _IRCPong           Renamed: _IRCServerPong (SCRIPT BREAKING! Fix: Replace _IRCPong with _IRCServerPong)
  _IRCSelfSetStatus  Added  : Sets you AFK and un-AFK
  _IRCSendMessage    Renamed: Renamed _IRCMultiSendMsg. (SCRIPT BREAKING Fix: Replace IRCSendMessage with IRCMultiSendMsg)
  _IRCSendMessageRaw Renamed: Renamed _IRCRaw (SCRIPT BREAKING! Fix: Replace _IRCSendMessageRaw with _IRCRaw)
  _IRCServerTime     Added  : Get time from a Server
  _IRCServerVersion  Added  : Get Software Version from a Server
  _IRCTopic          Renamed: _IRCChannelTopic (SCRIPT BREAKING! Fix: Replace _IRCTopic with _IRCChannelTopic)
  Improved Parameter detection in all Functions
  Renamed Functions to show who/what they effect, MASSIVE Script Breaking. Sorry! :/

04/06/2014:

  _IRCGetMsg         Added  : Use to get IRC Messages.
  _IRCSetTopic       Changed: Now named _IRCTopic (SCRIPT BREAKING! Fix: Replace _IRCSetTopic with _IRCTopic)
                     Changed: Can now be used to query topic and does so by default. Use "" to blank the topic
  All functions now thoroughly check their parameters
  Updated all functions to use @extended to some errors
  Fixed @error returning 0 by starting all errors at 1 instead of 0

03/20/2014:

  _IRCChangeMode     Changed: Now named _IRCMode (SCRIPT BREAKING! Fix: Replace _IRCChangeMode with _IRCMode)
                     Changed: $_sMode is now OPTIONAL. Allowing the command to be used to Query current mode as well
  _IRCConnect        Fixed  : Missing Colon Before $_sRealName. It should now allow Real Names with spaces
  _IRCDisconnect     Fixed  : Issue with Blank Messages. Should now properly blank to Default
  _IRCPing           Changed: $_Server is now REQUIRED. (SCRIPT BREAKING! Fix: Specify a server as Parameter 2)
  _IRCSendMessage    Added  : $_bTrim, Trims message if too long instead of breaking up the message, Default is true
  _IRCSetTopic       Added  : Command for setting a Channel Topic
  Updated Most Functions to include better error checking
  Updated Most Channel Related Functions to check for valid channels

03/16/2014:

  _IRCChangeMode     Added  : Optional parameters for channel modes
                     Changed: Parameter ordering Target is now before Mode (SCRIPT BREAKING! Fix: Swap Parameters 2 and 3)
  _IRCConnect        Changed: No longer exits the script on error, instead returns TCPConnect Error Code
  _IRCJoinChannel    Added  : Now Supports Channel Passwords
  _IRCOper           Added  : Command for IRC Server Operator Login
  Updated All Functions to have UDF standard error codes

02/24/2014:

  _IRCSendMessage    Changed: Split Into _IRCSendMessage and _IRCSendMessageRaw (SCRIPT BREAKING! No Simple Fix Available)

02/23/2014:

  Made variables comply to UDF Standards http://www.autoitscript.com/autoit3/udfs/UDF_Standards.htm
  Removed MsgBoxes left over from old UDF
  Updated / Uploaded IRC.au3

Known and Reported Bugs:

Message output only displays ANSI characters in CUI. (Can't Fix)
Freenode requires registration for part messages thus the part message in example doesn't show up (Can't fix)
Messages (e.g. PRIVMSG) are not forwarded?, when it contains umlauts/german mutations and when the message only contains a dot '.' (Unconfirmed)

Warnings:

Do NOT send a lot of messages at once. MOST networks will disconnect you. SOME networks will permanently ban you. A MINORITY will harshly retailiate.

Do NOT use the Sleep() function in your scripts. It prevents you from receiving any new data, can disconnect your from the network, and have other undesired consequences. Use the TimerInit() and TimerDiff() functions and possibly a message queue.

To Do:

Possibly add in SSL functionality
Create More Functions for IRC commands
An entire IRC daemon written in AutoIt
Possibly Include Kips TCP UDF for ASync Port Listening in Example
Create Additional UDFs for extras such as CTCP, DCC, and Error Lookup
Experiment with having functions check for the reply and see if reliable.

Upcoming Changes:

To Be Decided
Edited by rcmaehl
Scrapping a couple to do's
2 people like this

My UDFs are generally for me. If they aren't updated for a while, it means I'm not using them myself. As soon as I start using them again, they'll get updated.

MY PROJECTS


Active: IRC UDF, WindowEx UDF
Discontinued: GithubBubbleSort UDF

Share this post


Link to post
Share on other sites

UDFs shouldn't use MsgBox() to report errors, this is down to the developer to decide. You have quite a bit of work to do before calling this a UDF.

1 person likes this

_AdapterConnections()_AlwaysRun()_AppMon()_AppMonEx()_BinaryBin()_CheckMsgBox()_CmdLineRaw()_ContextMenu()_ConvertLHWebColor()/_ConvertSHWebColor()_DesktopDimensions()_DisplayPassword()_DotNet_Load()/_DotNet_Unload()_Fibonacci()_FileCompare()_FileCompareContents()_FileNameByHandle()_FilePrefix/SRE()_FindInFile()_GetBackgroundColor()/_SetBackgroundColor()_GetConrolID()_GetCtrlClass()_GetDirectoryFormat()_GetDriveMediaType()_GetFilename()/_GetFilenameExt()_GetHardwareID()_GetIP()_GetIP_Country()_GetOSLanguage()_GetSavedSource()_GetStringSize()_GetSystemPaths()_GetURLImage()_GIFImage()_GoogleWeather()_GUICtrlCreateGroup()_GUICtrlListBox_CreateArray()_GUICtrlListView_CreateArray()_GUICtrlListView_SaveCSV()_GUICtrlListView_SaveHTML()_GUICtrlListView_SaveTxt()_GUICtrlListView_SaveXML()_GUICtrlMenu_Recent()_GUICtrlMenu_SetItemImage()_GUICtrlTreeView_CreateArray()_GUIDisable()_GUIImageList_SetIconFromHandle()_GUIRegisterMsg()_GUISetIcon()_Icon_Clear()/_Icon_Set()_IdleTime()_InetGet()_InetGetGUI()_InetGetProgress()_IPDetails()_IsFileOlder()_IsGUID()_IsHex()_IsPalindrome()_IsRegKey()_IsStringRegExp()_IsSystemDrive()_IsUPX()_IsValidType()_IsWebColor()_Language()_Log()_MicrosoftInternetConnectivity()_MSDNDataType()_PathFull/GetRelative/Split()_PathSplitEx()_PrintFromArray()_ProgressSetMarquee()_ReDim()_RockPaperScissors()/_RockPaperScissorsLizardSpock()_ScrollingCredits_SelfDelete()_SelfRename()_SelfUpdate()_SendTo()_ShellAll()_ShellFile()_ShellFolder()_SingletonHWID()_SingletonPID()_Startup()_StringCompact()_StringIsValid()_StringRegExpMetaCharacters()_StringReplaceWholeWord()_StringStripChars()_Temperature()_TrialPeriod()_UKToUSDate()/_USToUKDate()_WinAPI_Create_CTL_CODE()_WinAPI_CreateGUID()_WMIDateStringToDate()/_DateToWMIDateString()Au3 script parsingAutoIt SearchAutoIt3 PortableAutoIt3WrapperToPragmaAutoItWinGetTitle()/AutoItWinSetTitle()CodingDirToHTML5FileInstallrFileReadLastChars()GeoIP databaseGUI - Only Close ButtonGUI ExamplesGUICtrlDeleteImage()GUICtrlGetBkColor()GUICtrlGetStyle()GUIEventsGUIGetBkColor()Int_Parse() & Int_TryParse()IsISBN()LockFile()Mapping CtrlIDsOOP in AutoItParseHeadersToSciTE()PasswordValidPasteBinPosts Per DayPreExpandProtect GlobalsQueue()Resource UpdateResourcesExSciTE JumpSettings INISHELLHOOKShunting-YardSignature CreatorStack()Stopwatch()StringAddLF()/StringStripLF()StringEOLToCRLF()VSCROLLWM_COPYDATAMore Examples...

Updated: 04/09/2015

Share this post


Link to post
Share on other sites

UDFs shouldn't use MsgBox() to report errors, this is down to the developer to decide. You have quite a bit of work to do before calling this a UDF.

 

I'll upload a new version without them (They were left in from the original UDF) and the Variable names updated in a bit.


My UDFs are generally for me. If they aren't updated for a while, it means I'm not using them myself. As soon as I start using them again, they'll get updated.

MY PROJECTS


Active: IRC UDF, WindowEx UDF
Discontinued: GithubBubbleSort UDF

Share this post


Link to post
Share on other sites

#4 ·  Posted (edited)

Update:

.
  _IRCChangeMode     Added  : Optional parameters for channel modes
                     Changed: Parameter ordering Target is now before Mode (SCRIPT BREAKING! Fix: Swap Parameters 2 and 3)
  _IRCConnect        Changed: No longer exits the script on error, instead returns TCPConnect Error Code
  _IRCJoinChannel    Added  : Now Supports Channel Passwords
  _IRCOper           Added  : Command for IRC Server Operator Login
  Updated All Functions to have UDF standard error codes

 

Edited by rcmaehl
Reduce Post Size and Clean up Formatting

My UDFs are generally for me. If they aren't updated for a while, it means I'm not using them myself. As soon as I start using them again, they'll get updated.

MY PROJECTS


Active: IRC UDF, WindowEx UDF
Discontinued: GithubBubbleSort UDF

Share this post


Link to post
Share on other sites

#5 ·  Posted (edited)

Update:

.
  _IRCChangeMode     Changed: Now named _IRCMode (SCRIPT BREAKING! Fix: Replace _IRCChangeMode with _IRCMode)
                     Changed: $_sMode is now OPTIONAL. Allowing the command to be used to Query current mode as well
  _IRCConnect        Fixed  : Missing Colon Before $_sRealName. It should now allow Real Names with spaces
  _IRCDisconnect     Fixed  : Issue with Blank Messages. Should now properly blank to Default
  _IRCPing           Changed: $_Server is now REQUIRED. (SCRIPT BREAKING! Fix: Specify a server as Parameter 2)
  _IRCSendMessage    Added  : $_bTrim, Trims message if too long instead of breaking up the message, Default is true
  _IRCSetTopic       Added  : Command for setting a Channel Topic
  Updated Most Functions to include better error checking
  Updated Most Channel Related Functions to check for valid channels

 

Edited by rcmaehl
Reduce Post Size and Clean up Formatting

My UDFs are generally for me. If they aren't updated for a while, it means I'm not using them myself. As soon as I start using them again, they'll get updated.

MY PROJECTS


Active: IRC UDF, WindowEx UDF
Discontinued: GithubBubbleSort UDF

Share this post


Link to post
Share on other sites

#6 ·  Posted (edited)

Update:

.
  _IRCGetMsg         Added  : Use to get IRC Messages.
  _IRCSetTopic       Changed: Now named _IRCTopic (SCRIPT BREAKING! Fix: Replace _IRCSetTopic with _IRCTopic)
                     Changed: Can now be used to query topic and does so by default. Use "" to blank the topic
  All functions now thoroughly check their parameters
  Updated all functions to use @extended to some errors
  Fixed @error returning 0 by starting all errors at 1 instead of 0

 

Edited by rcmaehl
Reduce Post Size and Clean up Formatting

My UDFs are generally for me. If they aren't updated for a while, it means I'm not using them myself. As soon as I start using them again, they'll get updated.

MY PROJECTS


Active: IRC UDF, WindowEx UDF
Discontinued: GithubBubbleSort UDF

Share this post


Link to post
Share on other sites

#7 ·  Posted (edited)

Update:

.
  IRCExtras.au3      Added  : Additional IRC Functions
  _IRChangeNick      Renamed: _IRCSelfSetNick (SCRIPT BREAKING! Fix: Replace _IRCChangeNick with _IRCSelfSetNick)
  _IRCGetMsg         Fixed  : Now no longer Splits Packets if Default option is used
  _IRCChannelInvite  Added  : Invites a User to a Channel
  _IRCChannelKick    Added  : Kick a User from a channel
  _IRCJoinChannel    Renamed: _IRCChannelJoin (SCRIPT BREAKING! Fix: Replace _IRCJoinChannel with _IRCChannelJoin)
  _IRCMode           Renamed: _IRCMultiMode (SCRIPT BREAKING! Fix: Replace _IRCMode with _IRCMultiMode)
  _IRCOper           Renamed: _IRCSelfOper (SCRIPT BREAKING! Fix: Replace _IRCOper with _IRCSelfOper)
  _IRCPartChannel    Renamed: _IRCChannelPart (SCRIPT BREAKING! Fix: Replace _IRCPartChannel with _IRCChannelPart)
  _IRCPing           Renamed: _IRCServerPing (SCRIPT BREAKING! Fix: Replace _IRCPing with _IRCServerPing)
  _IRCPong           Renamed: _IRCServerPong (SCRIPT BREAKING! Fix: Replace _IRCPong with _IRCServerPong)
  _IRCSelfSetStatus  Added  : Sets you AFK and un-AFK
  _IRCSendMessage    Renamed: Renamed _IRCMultiSendMsg. (SCRIPT BREAKING Fix: Replace IRCSendMessage with IRCMultiSendMsg)
  _IRCSendMessageRaw Renamed: Renamed _IRCRaw (SCRIPT BREAKING! Fix: Replace _IRCSendMessageRaw with _IRCRaw)
  _IRCServerTime     Added  : Get time from a Server
  _IRCServerVersion  Added  : Get Software Version from a Server
  _IRCTopic          Renamed: _IRCChannelTopic (SCRIPT BREAKING! Fix: Replace _IRCTopic with _IRCChannelTopic)
  Improved Parameter detection in all Functions
  Renamed Functions to show who/what they effect, MASSIVE Script Breaking. Sorry! :/

 

Edited by rcmaehl
Reduce Post Size and Clean up Formatting

My UDFs are generally for me. If they aren't updated for a while, it means I'm not using them myself. As soon as I start using them again, they'll get updated.

MY PROJECTS


Active: IRC UDF, WindowEx UDF
Discontinued: GithubBubbleSort UDF

Share this post


Link to post
Share on other sites

Any feedback or requested features would be appreciated. It would help me decide what to put out sooner and what I can put off.


My UDFs are generally for me. If they aren't updated for a while, it means I'm not using them myself. As soon as I start using them again, they'll get updated.

MY PROJECTS


Active: IRC UDF, WindowEx UDF
Discontinued: GithubBubbleSort UDF

Share this post


Link to post
Share on other sites

great !! , thx for your job

Share this post


Link to post
Share on other sites

That's great, thank you very much!

can you add something like "return userlist"? like an "/who" and after that it parses the server responses.

Share this post


Link to post
Share on other sites

good work. thanks

Share this post


Link to post
Share on other sites

#12 ·  Posted (edited)

 

On 6/6/2014 at 8:28 AM, D00M4N said:

great !! , thx for your job

On 7/7/2014 at 3:12 AM, PhuongHieu said:

good work. thanks

Thanks for feedback!

On 7/2/2014 at 0:43 PM, NobodyKue said:

That's great, thank you very much!

can you add something like "return userlist"? like an "/who" and after that it parses the server responses.

Working on that. There's a possible issue if a message other than the response gets sent to the function before the actual response occurs. I'm working on away to solve this.

Also.

Updates:

.
  Example.au3        Added  : Checking for PrivMsg
                     Fixed  : Pings not ending with @CRLF
                     Fixed  : Infinite loop if you removed _IRCDisconnect
                     Updated: Bot now disconnects when receiving "!quit" instead of automatically
  IRCExtras.au3      Added  : _IRCStripSpecial(), Cleans special characters sometimes seen in IRC
  Discontinuted BETA UDF project.

 

Edited by rcmaehl
Reduce Post Size and Clean up Formatting

My UDFs are generally for me. If they aren't updated for a while, it means I'm not using them myself. As soon as I start using them again, they'll get updated.

MY PROJECTS


Active: IRC UDF, WindowEx UDF
Discontinued: GithubBubbleSort UDF

Share this post


Link to post
Share on other sites

#13 ·  Posted (edited)

Updates:

.
  IRC.au3            Fixed  : All functions now return when errors are encountered instead of continuing
  _IRCConnect        Added  : Now returns an error if optional password failed to send
                     Fixed  : Checking if Mode was blank.
                     Fixed  : Spamming of 0 and incorrectly thinking there was an error.
  _IRCGetMsg         Added  : Now returns an error if it failed to receive a custom amount of data
  _IRCServerVersion  Fixed  : Capitalized "Version"

 

Edited by rcmaehl
Reduce Post Size and Clean up Formatting

My UDFs are generally for me. If they aren't updated for a while, it means I'm not using them myself. As soon as I start using them again, they'll get updated.

MY PROJECTS


Active: IRC UDF, WindowEx UDF
Discontinued: GithubBubbleSort UDF

Share this post


Link to post
Share on other sites

#14 ·  Posted (edited)

Update:

.
  Example.au3        Added  : Shutdown TCP on exit
                     Fixed  : $Recipient now gets the actual Recipient instead of the 3rd message
                     Added  : Now exits when told to quit.
  IRC.au3            Added  : Improved Error Reporting (Includes @extended on error)
  _IRCDisconnect     Added  : Close Socket on Disconnect
  _IRCStripSpecial   Added  : Improved Color Stripping

Notes:

My main goal for the next version is to add in functioning user lists to the Example. While I could put this off to the user to figure out how to do this, It'd be more user-friendly to give an example of this. As such, I will be experimenting with multiple forms on github and will likely not push an update to the forums for some time, unless a bug is discovered in an existing function.

Edited by rcmaehl
Reduce Post Size and Clean up Formatting

My UDFs are generally for me. If they aren't updated for a while, it means I'm not using them myself. As soon as I start using them again, they'll get updated.

MY PROJECTS


Active: IRC UDF, WindowEx UDF
Discontinued: GithubBubbleSort UDF

Share this post


Link to post
Share on other sites

#15 ·  Posted (edited)

Thanks to >Manadar's TrayIRC it looks like I might be able to add in user lists by the end of next month. Channel list, a key part of user lists for when a nick changes, has been completed, but I'm still working on user lists.

Edited by rcmaehl

My UDFs are generally for me. If they aren't updated for a while, it means I'm not using them myself. As soon as I start using them again, they'll get updated.

MY PROJECTS


Active: IRC UDF, WindowEx UDF
Discontinued: GithubBubbleSort UDF

Share this post


Link to post
Share on other sites

Hey rcmaehl,

very nice IRC udf you made :) i have request / question regarding it: is there a plan to implement SSL? Or could some1 with enough knowledge help me in adressing the SSL DLLs directly to create a SSL connect?

thanks and keep up the good work your doing

1 person likes this

Share this post


Link to post
Share on other sites

#17 ·  Posted (edited)

Hey rcmaehl,

very nice IRC udf you made :) i have request / question regarding it: is there a plan to implement SSL? Or could some1 with enough knowledge help me in adressing the SSL DLLs directly to create a SSL connect?

thanks and keep up the good work your doing

 

There are plans to eventually add in SSL, however they're not anytime soon due to my lack of knowledge on how to use it.

Edited by rcmaehl

My UDFs are generally for me. If they aren't updated for a while, it means I'm not using them myself. As soon as I start using them again, they'll get updated.

MY PROJECTS


Active: IRC UDF, WindowEx UDF
Discontinued: GithubBubbleSort UDF

Share this post


Link to post
Share on other sites

#18 ·  Posted (edited)

Update:

.
  Example.au3        Added  : User lists
                     Added  : Channel lists
                     Added  : Bot keeps track of own nick
                     Added  : Secondary nick in case first nick choice is in use.
                     Added  : Extremely Minor performance improvements
  _IRCConnect        Added  : Improved parameter checking
  _IRCGetMsg         Updated: Now only retrieves one packet by default (MAY be script breaking)

 

Edited by rcmaehl
Reduce Post Size and Clean up Formatting

My UDFs are generally for me. If they aren't updated for a while, it means I'm not using them myself. As soon as I start using them again, they'll get updated.

MY PROJECTS


Active: IRC UDF, WindowEx UDF
Discontinued: GithubBubbleSort UDF

Share this post


Link to post
Share on other sites

#19 ·  Posted (edited)

Update:

.
  Example.au3        Fixed  : Nicks not updating on all channel lists when a user changed their nick
                     Fixed  : Nicks not deleting on all channel lists when a user quits the network

 

Edited by rcmaehl
Reduce Post Size and Clean up Formatting

My UDFs are generally for me. If they aren't updated for a while, it means I'm not using them myself. As soon as I start using them again, they'll get updated.

MY PROJECTS


Active: IRC UDF, WindowEx UDF
Discontinued: GithubBubbleSort UDF

Share this post


Link to post
Share on other sites

#20 ·  Posted (edited)

Update:

.
  Example.au3        Fixed  : Ampersand channels causing a crash

 

Edited by rcmaehl
Reduce Post Size and Clean up Formatting

My UDFs are generally for me. If they aren't updated for a while, it means I'm not using them myself. As soon as I start using them again, they'll get updated.

MY PROJECTS


Active: IRC UDF, WindowEx UDF
Discontinued: GithubBubbleSort UDF

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now

  • Similar Content

    • okolaris
      By okolaris
      Hey everyone,
      I thought I might share my little Language UDF plus the more powerful SciTE Tool to ship Strings from SciTE into the xml file. While I haven't had the time to fully adapt the small UDF to one of the big XML-UDFs the so called "Language Transmitter" that basically writes the XML file for you runs mostly on "XML DOM wrapper (COM)" by eltorro. The Transmitter should work with other XML-Language-UDFs depending on their encoding.
       
      First let's start with the UDF, there are two functions of interest: _LangInit($sFilePath) and s($sString) As you will have guessed, _LangInit($sFilePath) is called once to initialize the UDF and s($sString) is used to receive the string to your key. Plain and simple.
      Now to the actual "new" part, the Language Transmitter. It basically allows you to transfer a selected String from SciTE into a xml file. While doing so it will scan for AutoIt variables, macros etc. and parse the string to fit StringFormat(). It then saves the formatted string in the xml file and returns the formatted call into SciTE. If the selected string is already defined it will directly parse the key into SciTE. To change the default output file, you can either edit the ini-file in the @ScriptDir of the LanguageTransmitter.exe or press Alt+A on empty space again and keep clicking cancel/no until the Transmitter let's you select the current output file. Standard output is strings.xml in the current opened AutoIt Script.
      Example:
      ; given the line: MsgBox(16, 'Error', 'Error message') ; select 'Error' run the Transmitter follow the instructions, repeat with 'Error message'. Outcome (e.g.): MsgBox(16, s('Error'), s('Error_msg')) ; Variables and Macro example: $sString = "Value: " & $iValue & @CRLF & 'Another value: '& $iValue2 ; Select the full string including all AutoIt variables and macros etc. in SciTE and press Alt+A (default) to run the LanguageTransmitter ; follow the instructions and it will then paste a formatted string like that into SciTE: $sVar = StringFormat(s('Key'), $iValue, $iValue2) ; the correlating xml entry should look like that: ; <string name="Key">Value: %s\r\nAnother value: %s</string> ; as you can see @CRLF has been replaced with \r\n as well. If you are working on a project and want to directly add a string to the xml file just start the Language Transmitter without selecting any text, enter your string and a key.
      SetUp/Installation
      Examples
      Since xml files are required all examples can be found in the zip file. There are two examples, one includes a language selection interface.
      Language File Checker
      I added a script to check whether the xml file contains all required strings or even unnecessary strings.
       
      Hope you like my little helper!
       
      UDF - LanguageSupport.zip
    • imitto
      By imitto
      Hello all!
      I use Autoit for a while, already made some automation for a TV station's master control room with it. I made a UDF to easily work with PAL timecode and time with milliseconds, convert, add or subtract them. Feel free to use it if you want something like this
      #Region ;**** Directives created by AutoIt3Wrapper_GUI **** #AutoIt3Wrapper_Res_Description=PAL Timecode Calculator UDF #AutoIt3Wrapper_Res_LegalCopyright=horvath.imre@gmail.com #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI **** ; ; #FUNCTION# ; Name...........: _tcAdd ; Description....: Returns addition of two timecodes ; Syntax.........: _tcAdd($fTc1, fTc2 [, $fFormat = "P"]) ; ; Parameters.....: $fTc1 - First timecode in hh:mm:ss.ff format ; $fTc2 - Second timecode in hh:mm:ss.ff format ; $fFormat - Time base - "P" (default): PAL (25 fps) ; "M" : millisecond ; ; Return value...: Sum of the two timecode in the selected format Func _tcAdd($fTc1, $fTc2, $fFormat = "P", $fHourFormat = 1) Local $fMs1 = _tcToMs($fTc1) Local $fMs2 = _tcToMs($fTc2) Local $fSumMs = $fMs1 + $fMs2 Return _msToTc($fSumMs, $fFormat, $fHourFormat) EndFunc ; #FUNCTION# ; Name...........: _tcsSub ; Description....: Returns addition of two timecodes ; Syntax.........: _tcSub($fTc1, fTc2 [, $fFormat = "P"]) ; ; Parameters.....: $fTc1 - First timecode in hh:mm:ss.ff format ; $fTc2 - Second timecode in hh:mm:ss.ff format ; $fFormat - Time base - "P" (default): PAL (25 fps) ; "M" : millisecond ; ; Return value...: Subtract $fTc2 from $fTc1 in the source format Func _tcSub($fTc1, $fTc2, $fFormat = "P") Local $fMs1 = _tcToMs($fTc1) Local $fMs2 = _tcToMs($fTc2) Local $fSumMs = $fMs1 - $fMs2 If $fSumMs < 0 Then $fSumMs = _tcToMs("24:00:00.00") - ($fSumMs * -1) EndIf Return _msToTc($fSumMs, $fFormat) EndFunc ; #FUNCTION# ; Name...........: _tcToMs ; Description....: Returns timecode converted to total milliseconds ; Syntax.........: _tcToMs($fTc) ; ; Parameters.....: $fTc - Timecode in hh:mm:ss.ff or hh:mm:ss:xxx format, where xxx are milliseconds ; ; Return value...: Milliseconds as an integer value Func _tcToMs($fTc) Local $fTemp = StringSplit($fTc, ":.") Local $fChr = StringLen($fTemp[4]) Switch $fChr Case 2 Return ($fTemp[4] * 40) + ($fTemp[3] * 1000) + ($fTemp[2] * 60000) + ($fTemp[1] * 3600000) Case 3 Return ($fTemp[4]) + ($fTemp[3] * 1000) + ($fTemp[2] * 60000) + ($fTemp[1] * 3600000) EndSwitch EndFunc ; #FUNCTION# ; Name...........: _msToTc ; Description....: Converts total milliseconds to timecode ; Syntax.........: _msToTc($fIn, $fFormat = "P", $fHourFormat = 1) ; ; Parameters.....: $fIn - Time in milliseconds ; $fFormat - Output format "P": PAL TC (default) ; "M": hh:mm:ss.xxx where xxx are milliseconds ; $fHourFormat - Hour format "1": max. value is 23, then starts from 0 (default) ; "0": hours can be more then 23 ; ; Return value...: Timecode as string in the selected format Func _msToTc($fIn, $fFormat = "P", $fHourFormat = 1) Switch $fFormat Case "P" Local $fFr = StringFormat("%02i", (StringRight($fIn, 3) - Mod(StringRight($fIn, 3), 40)) / 40) Case "M" Local $fFr = StringFormat("%03i", StringRight($fIn, 3)) EndSwitch $fIn = StringTrimRight($fIn, 3) Local $fSec = StringFormat("%02i", Mod($fIn, 60)) $fIn -= $fSec Local $fMinTot = $fIn / 60 Local $fMin = StringFormat("%02i", Mod($fMinTot, 60)) $fIn -= $fMin*60 Local $fHourTot = $fIn / 60 / 60 Switch $fHourFormat Case 1 $fHour = StringFormat("%02i", Mod($fHourTot, 24)) Case 0 $fHour = StringFormat("%02i", $fHourTot) EndSwitch Return($fHour & ":" & $fMin & ":" & $fSec & "." & $fFr) EndFunc ; #FUNCTION# ; Name...........: _tcFormatChange ; Description....: Toggle TC format ; Syntax.........: _tcFormatChange($fTc) ; ; Parameters.....: $fTc - Timecode in hh:mm:ss.ff or hh:mm:ss:xxx format, where xxx are milliseconds ; ; Return value...: PAL timecode or time with milliseconds as string, depends on input Func _tcFormatChange($fTc) Local $fTemp = StringSplit($fTc, ":.") Local $fChr = StringLen($fTemp[4]) Switch $fChr Case 2 Return $fTemp[1]&":"&$fTemp[2]&":"&$fTemp[3]&"."&StringFormat("%03i", $fTemp[4]*40) Case 3 Return $fTemp[1]&":"&$fTemp[2]&":"&$fTemp[3]&"."&StringFormat("%02i", ($fTemp[4]-Mod($fTemp[4], 40))/40) EndSwitch EndFunc And the example script:
      #include<_PAL_TC_Calc.au3> $palTC1 = "00:01:12.20" $palTC2 = "23:59:50.02" $msTC1 = "00:01:12.800" $msTC2 = "23:59:50.120" MsgBox(0, "1", _tcAdd($palTC1, $palTC2)); Adds $palTC1 to $palTC2, turns hour back to 0 after 23, returns PAL TC format MsgBox(0, "2", _tcAdd($palTC1, $palTC2, "M")); Adds $palTC1 to $palTC2, turns hour back to 0 after 23, returns time with milliseconds format MsgBox(0, "3", _tcAdd($palTC1, $palTC2, "M", 0)); Adds $palTC1 to $palTC2, hours can be infinite, returns time with milliseconds format MsgBox(0, "4", _tcAdd($msTC1, $msTC2)); Adds $palTC1 to $palTC2, turns hour back to 0 after 23, returns PAL TC format MsgBox(0, "5", _tcAdd($msTC1, $msTC2, "M")); Adds $palTC1 to $palTC2, turns hour back to 0 after 23, returns time with milliseconds format MsgBox(0, "6", _tcAdd($msTC1, $msTC2, "M", 0)); Adds $palTC1 to $palTC2, hours can be infinite, returns time with milliseconds format MsgBox(0, "7", _tcSub($palTC2, $palTC1)); Subtract $palTC1 from $palTC2, returns PAL TC format MsgBox(0, "8", _tcSub($palTC2, $palTC1, "M")); Subtract $palTC1 from $palTC2, time with milliseconds format MsgBox(0, "9", _tcSub($msTC1, $msTC2)); Subtract $palTC1 from $palTC2, returns PAL TC format - when hits zero, counts back from 24:00:00.00 MsgBox(0, "10", _tcSub($msTC1, $msTC2, "M")); Subtract $palTC1 from $palTC2, time with milliseconds format - when hits zero, counts back from 24:00:00.000 MsgBox(0, "11", _tcFormatChange($palTC2)); Convert PAL TC to time with milliseconds and back MsgBox(0, "12", _tcFormatChange($msTC2)); Convert PAL TC to time with milliseconds and back  
      TC_CALC_example.au3
      _PAL_TC_Calc.au3
    • TRAGENALPHA
      By TRAGENALPHA
      A small UDF to Modify the Console Interface.
      #include-once ;#AutoIt3Wrapper_Au3Check_Parameters=-q -d -w 1 -w 2 -w 3 -w- 4 -w 5 -w 6 -w- 7 ; =============================================================================================================================== ; Name...........: Console Modify ; Description ...: A small UDF to manipulate the Console Interface for scripts that are compiled as a console application. ; Syntax.........: _ConsoleClear() -- Clears the Console ; _ConsoleTitle("VALUE") - Sets the console title. ; _ConsoleWindow([WIDTH BUFFER SIZE], [HEIGHT BUFFER SIZE]) - Sets the Width and Height Buffer size of the console. ; Parameters ....: $bh6e5v_ctval = Title of the Console Window. ; $bh6e5v_cwwidth = Window width buffer size. ; $bh6e5v_cwheight = Window height buffer size. ; Return values .: True = Console window buffer size has been changed ; False = Failed to change console window buffer size. ; Author ........: TRAGENALPHA <3 ; Example .......: _ConsoleTitle("This is the new title") // _ConsoleWindow(200, 60) ; =============================================================================================================================== ; -- This is here because writing RunDos and including a whole UDF is too much. But this is basically just _RunDos() ;Func cmd($bh6e5v_ldvar) ; RunWait(@ComSpec & " /c " & $bh6e5v_ldval) ;EndFunc Func _ConsoleClear() RunWait(@ComSpec & " /c cls") EndFunc Func _ConsoleTitle($bh6e5v_ctval) RunWait(@ComSpec & " /c title " & $bh6e5v_ctval) EndFunc Func _ConsoleWindow($bh6e5v_cwwidth, $bh6e5v_cwheight) If IsNumber($bh6e5v_cwwidth) And IsNumber($bh6e5v_cwheight) And ($bh6e5v_cwwidth > 0) And ($bh6e5v_cwheight > 0) Then RunWait(@ComSpec & " /c mode con: cols=" & $bh6e5v_cwwidth & " lines=" & $bh6e5v_cwheight) Return True Else Return False EndIf EndFunc  
      ConsoleModify.au3
    • FrancescoDiMuro
      By FrancescoDiMuro
      Good morning everyone
      I'm working on a little project, and, I encountered a little strange error when I try to add some data to an array...
      The code I wrote is this:
      Func _WMI_Get_Win32_TemperatureProbe($blnCanUseWMI, $blnCustomArrayDisplay = False, $blnReturnEU = False) If $blnCanUseWMI Then Local $objWMI_QueryResult = $objWMI.ExecQuery("SELECT * FROM Win32_TemperatureProbe", "WQL", 32) If @error Then __ConsoleWrite("Error executing the query on Win32_TemperatureProbe class.", @error, 9999) Else Local $arrWin32_TemperatureProbe[1][3] _ArrayDelete($arrWin32_TemperatureProbe, 0) If @error Then __ConsoleWrite("Error deleting the 0st element $arrWin32_TemperatureProbe array.", @error, 9999) Else Local $objWMI_Variable = Null, $strWMI_QueryResult = "", $i = 0 For $objWMI_Variable In $objWMI_QueryResult $strWMI_QueryResult &= "QUERY RESULT" & "|# " & $i & "|/" & @CRLF & _ "Accuracy" & "|" & $objWMI_Variable.Accuracy & "|" & "[sint32]" & @CRLF & _ "Availability" & "|" & $objWMI_Variable.Availability & "|" & "[uint16]" & @CRLF & _ "Caption" & "|" & $objWMI_Variable.Caption & "|" & "[string]" & @CRLF & _ "ConfigManagerErrorCode" & "|" & $objWMI_Variable.ConfigManagerErrorCode & "|" & "[uint32]" & @CRLF & _ "ConfigManagerUserConfig" & "|" & $objWMI_Variable.ConfigManagerUserConfig & "|" & "[boolean]" & @CRLF & _ "CreationClassName" & "|" & $objWMI_Variable.CreationClassName & "|" & "[string]" & @CRLF & _ "CurrentReading" & "|" & $objWMI_Variable.CurrentReading & "|" & "[sint32]" & @CRLF & _ "Description" & "|" & $objWMI_Variable.Description & "|" & "[string]" & @CRLF & _ "DeviceID" & "|" & $objWMI_Variable.DeviceID & "|" & "[string]" & @CRLF & _ "ErrorCleared" & "|" & $objWMI_Variable.ErrorCleared & "|" & "[boolean]" & @CRLF & _ "ErrorDescription" & "|" & $objWMI_Variable.ErrorDescription & "|" & "[string]" & @CRLF & _ "InstallDate" & "|" & $objWMI_Variable.InstallDate & "|" & "[datetime]" & @CRLF & _ "IsLinear" & "|" & $objWMI_Variable.IsLinear & "|" & "[boolean]" & @CRLF & _ "LastErrorCode" & "|" & $objWMI_Variable.LastErrorCode & "|" & "[uint32]" & @CRLF & _ "LowerThresholdCritical" & "|" & $objWMI_Variable.LowerThresholdCritical & "|" & "[sint32]" & @CRLF & _ "LowerThresholdFatal" & "|" & $objWMI_Variable.LowerThresholdFatal & "|" & "[sint32]" & @CRLF & _ "LowerThresholdNonCritical" & "|" & $objWMI_Variable.LowerThresholdNonCritical & "|" & "[sint32]" & @CRLF & _ "MaxReadable" & "|" & $objWMI_Variable.MaxReadable & "|" & "[sint32]" & @CRLF & _ "MinReadable" & "|" & $objWMI_Variable.MinReadable & "|" & "[sint32]" & @CRLF & _ "Name" & "|" & $objWMI_Variable.Name & "|" & "[string]" & @CRLF & _ "NominalReading" & "|" & $objWMI_Variable.NominalReading & "|" & "[sint32]" & @CRLF & _ "NormalMax" & "|" & $objWMI_Variable.NormalMax & "|" & "[sint32]" & @CRLF & _ "NormalMin" & "|" & $objWMI_Variable.NormalMin & "|" & "[sint32]" & @CRLF & _ "PNPDeviceID" & "|" & $objWMI_Variable.PNPDeviceID & "|" & "[string]" & @CRLF & _ "PowerManagementCapabilities" & "|" & $objWMI_Variable.PowerManagementCapabilities & "|" & "[uint16]" & @CRLF & _ "PowerManagementSupported" & "|" & $objWMI_Variable.PowerManagementSupported & "|" & "[boolean]" & @CRLF & _ "Resolution" & "|" & $objWMI_Variable.Resolution & "|" & "[uint32]" & @CRLF & _ "Status" & "|" & $objWMI_Variable.Status & "|" & "[string]" & @CRLF & _ "StatusInfo" & "|" & $objWMI_Variable.StatusInfo & "|" & "[uint16]" & @CRLF & _ "SystemCreationClassName" & "|" & $objWMI_Variable.SystemCreationClassName & "|" & "[string]" & @CRLF & _ "SystemName" & "|" & $objWMI_Variable.SystemName & "|" & "[string]" & @CRLF & _ "Tolerance" & "|" & $objWMI_Variable.Tolerance & "|" & "[sint32]" & @CRLF & _ "UpperThresholdCritical" & "|" & $objWMI_Variable.UpperThresholdCritical & "|" & "[sint32]" & @CRLF & _ "UpperThresholdFatal" & "|" & $objWMI_Variable.UpperThresholdFatal & "|" & "[sint32]" & @CRLF & _ "UpperThresholdNonCritical" & "|" & $objWMI_Variable.UpperThresholdNonCritical & "|" & "[sint32]" $i+=1 Next ConsoleWrite($strWMI_QueryResult & @CRLF) _ArrayAdd($arrWin32_TemperatureProbe, $strWMI_QueryResult) ; I'll wait for an answer... See you later :) If @error Then __ConsoleWrite("Error inserting item #" & $i & " in the $arrWin32_TemperatureProbe array.", @error, 9999) Else If $blnCustomArrayDisplay Then _ArrayDisplay($arrWin32_TemperatureProbe, "Win32_TemperatureProbe:", "", 64 + 32 + 4, "|", "VARIABLE NAME|ACTUAL VALUE|ENGINEERING UNIT", 350, 0xD3D3D3) If @error Then __ConsoleWrite("Error displaying the $arrWin32_TemperatureProbe array.", @error, 9999) EndIf EndIf If $blnReturnEU = False Then _ArrayColDelete($arrWin32_TemperatureProbe, 2) If @error Then __ConsoleWrite("Error deleting the column #2 of $arrWin32_TemperatureProbe array.") EndIf EndIf If IsArray($arrWin32_TemperatureProbe) Then Return $arrWin32_TemperatureProbe Else Return False EndIf EndIf EndIf EndIf EndIf EndFunc And I get this error ( undocumented in the Help File on _ArrayAdd() function ):
      [15/09/2017 10:24:46] : Error inserting item #4 in the $arrWin32_TemperatureProbe array. > Error: 0 Adding a ConsoleWrite() before the _ArrayAdd() function, I can see the content of $strWMI_QueryResult, and, here it is:
      QUERY RESULT|# 0|/
      Accuracy|32768|[sint32]
      Availability||[uint16]
      Caption|Sensore numerico|[string]
      ConfigManagerErrorCode||[uint32]
      ConfigManagerUserConfig||[boolean]
      CreationClassName|Win32_TemperatureProbe|[string]
      CurrentReading||[sint32]
      Description|CPU Thermal Probe|[string]
      DeviceID|root\cimv2 0|[string]
      ErrorCleared||[boolean]
      ErrorDescription||[string]
      InstallDate||[datetime]
      IsLinear||[boolean]
      LastErrorCode||[uint32]
      LowerThresholdCritical||[sint32]
      LowerThresholdFatal||[sint32]
      LowerThresholdNonCritical||[sint32]
      MaxReadable|1270|[sint32]
      MinReadable|64266|[sint32]
      Name|Sensore numerico|[string]
      NominalReading||[sint32]
      NormalMax||[sint32]
      NormalMin||[sint32]
      PNPDeviceID||[string]
      PowerManagementCapabilities||[uint16]
      PowerManagementSupported||[boolean]
      Resolution|1000|[uint32]
      Status|Unknown|[string]
      StatusInfo||[uint16]
      SystemCreationClassName|Win32_ComputerSystem|[string]
      SystemName|DESKTOP-25LFPVU|[string]
      Tolerance|32768|[sint32]
      UpperThresholdCritical||[sint32]
      UpperThresholdFatal||[sint32]
      UpperThresholdNonCritical||[sint32]QUERY RESULT|# 1|/
      Accuracy|32768|[sint32]
      Availability||[uint16]
      Caption|Sensore numerico|[string]
      ConfigManagerErrorCode||[uint32]
      ConfigManagerUserConfig||[boolean]
      CreationClassName|Win32_TemperatureProbe|[string]
      CurrentReading||[sint32]
      Description|True Ambient Thermal Probe|[string]
      DeviceID|root\cimv2 1|[string]
      ErrorCleared||[boolean]
      ErrorDescription||[string]
      InstallDate||[datetime]
      IsLinear||[boolean]
      LastErrorCode||[uint32]
      LowerThresholdCritical||[sint32]
      LowerThresholdFatal||[sint32]
      LowerThresholdNonCritical||[sint32]
      MaxReadable|1270|[sint32]
      MinReadable|64266|[sint32]
      Name|Sensore numerico|[string]
      NominalReading||[sint32]
      NormalMax||[sint32]
      NormalMin||[sint32]
      PNPDeviceID||[string]
      PowerManagementCapabilities||[uint16]
      PowerManagementSupported||[boolean]
      Resolution|1000|[uint32]
      Status|Unknown|[string]
      StatusInfo||[uint16]
      SystemCreationClassName|Win32_ComputerSystem|[string]
      SystemName|DESKTOP-25LFPVU|[string]
      Tolerance|32768|[sint32]
      UpperThresholdCritical||[sint32]
      UpperThresholdFatal||[sint32]
      UpperThresholdNonCritical||[sint32]QUERY RESULT|# 2|/
      Accuracy|32768|[sint32]
      Availability||[uint16]
      Caption|Sensore numerico|[string]
      ConfigManagerErrorCode||[uint32]
      ConfigManagerUserConfig||[boolean]
      CreationClassName|Win32_TemperatureProbe|[string]
      CurrentReading||[sint32]
      Description|Memory Module Thermal Probe|[string]
      DeviceID|root\cimv2 2|[string]
      ErrorCleared||[boolean]
      ErrorDescription||[string]
      InstallDate||[datetime]
      IsLinear||[boolean]
      LastErrorCode||[uint32]
      LowerThresholdCritical||[sint32]
      LowerThresholdFatal||[sint32]
      LowerThresholdNonCritical||[sint32]
      MaxReadable|1270|[sint32]
      MinReadable|64266|[sint32]
      Name|Sensore numerico|[string]
      NominalReading||[sint32]
      NormalMax||[sint32]
      NormalMin||[sint32]
      PNPDeviceID||[string]
      PowerManagementCapabilities||[uint16]
      PowerManagementSupported||[boolean]
      Resolution|1000|[uint32]
      Status|Unknown|[string]
      StatusInfo||[uint16]
      SystemCreationClassName|Win32_ComputerSystem|[string]
      SystemName|DESKTOP-25LFPVU|[string]
      Tolerance|32768|[sint32]
      UpperThresholdCritical||[sint32]
      UpperThresholdFatal||[sint32]
      UpperThresholdNonCritical||[sint32]QUERY RESULT|# 3|/
      Accuracy|32768|[sint32]
      Availability||[uint16]
      Caption|Sensore numerico|[string]
      ConfigManagerErrorCode||[uint32]
      ConfigManagerUserConfig||[boolean]
      CreationClassName|Win32_TemperatureProbe|[string]
      CurrentReading||[sint32]
      Description|Video Card Thermal Probe|[string]
      DeviceID|root\cimv2 3|[string]
      ErrorCleared||[boolean]
      ErrorDescription||[string]
      InstallDate||[datetime]
      IsLinear||[boolean]
      LastErrorCode||[uint32]
      LowerThresholdCritical||[sint32]
      LowerThresholdFatal||[sint32]
      LowerThresholdNonCritical||[sint32]
      MaxReadable|1270|[sint32]
      MinReadable|64266|[sint32]
      Name|Sensore numerico|[string]
      NominalReading||[sint32]
      NormalMax||[sint32]
      NormalMin||[sint32]
      PNPDeviceID||[string]
      PowerManagementCapabilities||[uint16]
      PowerManagementSupported||[boolean]
      Resolution|1000|[uint32]
      Status|Unknown|[string]
      StatusInfo||[uint16]
      SystemCreationClassName|Win32_ComputerSystem|[string]
      SystemName|DESKTOP-25LFPVU|[string]
      Tolerance|32768|[sint32]
      UpperThresholdCritical||[sint32]
      UpperThresholdFatal||[sint32]
      UpperThresholdNonCritical||[sint32]
       
      Could please anyone help me out? 
      Thanks in advance
      Francesco
    • TheDcoder
      By TheDcoder
      Hello, I recently opened a bug report without reading the Helpfile... My bad . After @Melba23's gentle reminder, I was curious about why it was like that.
      It is about SetError's behaviour. This is the example from the bug report:
      Example() If @error Then ConsoleWrite("Error" & @CRLF) Else ConsoleWrite("No Error" & @CRLF) EndIf Func Example() SetError(1) Sleep(1000) EndFunc What I tried to do is set Example's (my user defined function's) @error value to 1... but the value set by SetError is cleared after calling a function, I wonder why? Why should calling to an external function effect my function's @error which is set when my function returns.
      Setting the error of a UDF in advance by using SetError makes sense... but I cannot find a reason why calling a function should clear it? Please note that I am not talking about @error, I am talking about the @error set by my function when it ends/returns!
      I hope someone can enlighten me, thanks for the answers in advance!
      P.S I tried to explain my best but my English is not very good and I didn't feel like I did a good job explaining today, so please pardon any mistakes that I have made