ELF x WINSOCK history ELF x WINSOCK has been developed by Alfredo Milani-Comparetti in 1995-97. Version 1.00 has been released after having written an italian version for DOS. The command parser remained the same for compatibility, but everything else had to be totally rewritten. If you are or like italian and can connect using a serial link then you migth find nice to take a look at ELF x DOS. You can find it by FTP at FTP.ATS.IT. 1.00 - Porting from DOS version of commands and expressions parser - link to WINSOCK DLL - visual interface - configuration - function @WOPEN(title) to open a user window (returns an integer value to be used as ID, -1 if unsuccessful) - META-COMMAND @WCLOSE id to close a user window - META-COMMAND @WCLEAR id erase the content of a user window - function @WLINES(id) to get how many lines are in a user window - META-COMMAND @WPUT id,line number,text to write in a user window - function @WGET(id,line number) to retrieve text from a user window - user windows accept ANSI coloured text - when the left mouse button is pressed over an existing line of a user window the alias ONWINCLICK is called with the following parameters: ONWINCLICK id,x,y where X and Y are 0 based - when you quit ELF, then alias ONQUIT (with no parameter) is called - ELF stores user window's positions by name in ELFWINS.INI when they are closed and recreates them in that position next time - much much else... 1.01 - opening a connection by host name instead of numeric address now works fine - a SEND of 0 bytes to the SOCKET is cancelled to be compatible with the TRUMPET WINSOCK that considers this an error (Microsoft's TCP/IP doesn't) - deleting a MACRO now works fine - enabled the multi-selection of macros for editing and deleting - smoother showing of the first received lines - the numeric address derived from the opening of a connection by host name is now stored in MUD's data - enhanced the resizing of some configuration pages, correctly updating OK buttons and showing SCROLLERs if needed - SHIFT-TAB toggles invisible editing on/off - correctly stored and retrieved from ELF.INI the size of the header of the list box in MACRO's configuration - the maximum number of characters that can be used for a command are now correctly updated depending on the number of lines used thus letting you use as much characters as possible up to the maximum internal value of 254 - CTRL-W lets you enter a text to be sent plain or as a sequence of commands to the MUD 1.02 - when processing data, the logo, the real time watch, the tick timer and @IdleProc are stopped to speed up operations - now it is possible to specify the rate for processing windows messages selecting after how many consecutive lines, received from the MUD, windows messages are to be processed. This enhances ELF's speed but might arise problems in other mission critical applications (a rate up to 10 seems to work fine on slower systems). I'm obviously unable to determinate the magic value: have some trials :-) - the previous changes brought a speed increment of about 25% - the ANSI code for BOLD is translated to HIGH INTENSITY and correctly used 1.03 - implemented a registration code that survives through downloaded versions 1.04 - multi-selecting triggers, aliases, macros and vars during configuration now follows standard windows's behaviours - now you can close ELF by double-clicking the system-menu - receiving TELNET ECHO OFF from remote system, now auto-selects hidden input - the page named INTERNAL in configuration has been renamed GENERAL - now the socket is closed automatically when the asyncronous message SOCKET CLOSE is received from the remote system - the size of the main window, as well as its status (normal/maximized), is stored in ELF.INI - enhanced error checking for user windows - CTRL-K (Send Raw String) now works fine - the font used for the scroll-buffer is now stored in ELF-INI 1.05 - now you can access individual configure pages and pc's selection by using the main menu - last chosen MUD is put on top of MUD's list and auto-selected to speed up reconnecting - now it is possible to use the ALT key for MENU selection. Any already defined macro using the ALT key with or without the SHIFT key will be activated (see General Config Page) - THE SOCKET IS NO LONGER AUTOMATICALLY CLOSED (I NEED TESTING...) - scroll-buffer's memory is now allocated in larger blocks to save used resources (and to slightly improve startup speed) 1.06 - faster scrolling 1.07 - at last, the height of the font of the main window is parsed correctly - added TRANSLATIONS editing in config pages - on exit ELF asks wether to check untested translations - translations may be sorted by name or by UNTESTED during config changes - translations may be added, deleted and modified - updated translations are now stored on disk on exit - restructured the circular buffer used to store scroll-back data - fixed (at least I hope so :-)) a bug when refreshing multiple lines together in scroll-buffer to speed up things 2.00 - fixed tab order in config's GENERAL page - correctly got the height of the font loaded ad startup (at least I hope so ;-)) - it is possibile to set REFRESHRATE to force a smoother scroll when receiving a lot of data ***************************************************************************** * - UNREGISTERD version is no longer enabled to change PC or to have more * * than one mud defined... Sorry, but a marketing expert told me I was an * * idealist not limiting ELF in any way and this seems to be the nicest * * way to limit my idealism :-) * ***************************************************************************** - function @LOGNAME returns '' if the LOG file is closed and its file name if is opened - @LOGCLOSE closes the LOG file (if open) - the @LOG @META-COMMAND now needs a string expression. Therefore you have to issue the command '@LOG "PROVA.TXT"' and not '@LOG PROVA.TXT' - @INGROUP now returns 0 if not a member of your group or the index inside your group if member (try thinking of this feature using a user window to selected which member to auto-rescue and which not) - the font dialog now uses the right color - CTRL-O opens MACROs's config page - CTRL-V opens VARIABLEs's config page - CTRL-Y opens ALIASes's config page - CTRL-R opens TRANSLATIONs's config page - CTRL-T opens TRIGGERs's config page - CTRL-J opens MOUSE's config page - config pages now have keyboard short-cuts for all buttons - correctly set the fields with initial focus in various dialogs - extended use of short-cuts in buttons, radiogroups and checkboxes - the dialog for macro's editing now uses a button to activate the selection of the key sequence - added short-cuts to main window - fixed a problem with variable substitution in lines starting with '@' - added function @RND(n) that returns a random number between 0 and n-1 (n must be in the interval 0-->65535) - when saving text selected from the scroll buffer, ELF was trying to remove REAL ANSI sequences and not their ELF internal form, corrupting the text. Fixed - GENERAL config page lets you specify how many seconds before tick must be executed @CALL @PRETICK - in GENERAL config page the selection of main font and beeps now is done by pressing buttons, to speed up keyboard operations 2.01 - enabled short-cuts for almost every field - configuration correctly handles the number of seconds to anticipate tick's arrival - the running logo now runs smoother, is faster and uses less system resources - now ELF handles exceptions when playing ALL WAV files avoiding unexpected messages to appear and corrupt program flow 2.02 - added code to help detecting a strange error when FREEZEing and scrolling backwards 2.03 - configuration lets you choose if @INGROUP uses the extended syntax (added for compatibility with old triggers sets) - GAUGE.VBX is no longer used, to avoid conficts with other software. An internal DELPHI component is used instead - BWCC.DLL is no longer needed (so the distribution file is smaller :-)) - added documentation in WinWord 2.0 format 2.04 - the multimedia player now plays WAV and MID files - pressing left mouse button over a user window now calls OnWinClick with the correct line number (no longer limited by the number of lines currently present in the window) - added a small button to promote registering :-) - GENERAL config page now lets you select which panels are visible and which are not in the main window - WHATSNEW.TXT has been integrated with an on-line auto-showing info window 2.05 - BIVBX11.DLL is no longer needed - the configuration dialog hides when selecting (in)visible panels - added capability to change several fonts in the main window - the font of the scroll-back can be changed from the APPEARANCE dialog - the APPEARANCE dialog uses a popup menu called by the right mouse button - the COLORS config page has been changed to APPEARANCE - the APPEARANCE dialog now is located in the APPEARANCE config page - the font of the scroll-back now must be changed via the APPEARANCE dialog in the APPEARANCE config page - the maximum length of a line in the scroll buffer now must be changed in the APPEARANCE config page - LOGO speed now must be changed in the APPEARANCE config page - now the history buffer works in two different ways (see GENERAL config page) - now you can select which questions are to be made on quitting ELF (see GENERAL config page) 2.06 - if the main window is restored in maximized state then the normal state is derived so that it is easy to resize - when FREEZE is ON, triggers are no longer verified on incomplete lines and @IDLEPROC is no longer @CALLed - fixed a problem when using the default PROMPT and PROMPTTEST and the movement was used to recognise the tick - the expression parser now correctly handles the UNARY MINUS (@num=-12 now works fine) - FOR REGISTERED USERS: the number of lines in the SCROLL-BACK may be changed in the GENERAL config page (you are no longer limited to 500 lines) - fixed a problem with the multimedia player - added a panel to send dir commands with the mouse (COMPASS PANEL) - the COMPASS panel may be hidden using the APPEARANCE dialog - now it is easier to define new Playing Characters and related files (can be derived from the active PC) - FOR REGISTERED USERS: added FIND FIRST e FIND NEXT in the SCROLL-BACK (enabled only when SELECTED in ON) - the string found in the SCROLL-BACK is highlighted in inverse video - added an EXPLAIN button in the HOW TO dialog that illustrates the BONUSES that a REGISTERED user will get - horizontal and vertical toolbar correctly handle fonts changes - log and connect are now handled in a better way 2.07 - some panels in the main window have been repositioned - FOR REGISTERED USERS: the COMPASS panel has 3 user definable buttons - META-COMMAND @TOCLIP "text" to put TEXT in the clipboard - now the font of the INPUT BOX is selectable - the font and the visibility of the MESSAGE LINE (the bottom one) are now user-definable - FOR REGISTERED USERS: the running LOGO can be stopped by setting its speed to 0 - added checking for corrupted logo - external BMP files are now included in ELF.EXE as resources - FOR REGISTERED USERS: only registered users can run multiple instances of ELF x WINSOCK - double-clicking on a file name in the OPEN LOG dialog will open the LOG - TELNET ECHO ON correctly sets visible input (before, it could cause an invisible input after some triggers) - added a panel to show the number of characters in the input line - when SELECT is turned ON, automatically FREEZE is turned ON too - when SELECT is ON, a popup menu can be activated with the right mouse button over the scroll-buffer - FOR REGISTERED USERS: SELECT's popup menu lets you save selected text to the clipboard 2.08 - added a TRIGGER WIZARD - added an ANSI COLOR WIZARD - fixed a possible problem in recursive processing of messages with some system configurations - FOR REGISTERED USERS: - the TRIGGER WIZARD actually creates the newly created trigger (UNREGISTERED users will have to copy it by hand :-)) - the ANSI COLOR WIZARD automatically inserts the generated code in the commands 2.09 - speeded up the presentation of the very first page of text - fixed up a problem when removing with ENTER the error messages issued by user windows - a list box in the main window lets you reopen hidden user windows - before loading a new PC's configuration, ELF issues @CALL @QUITPC (if @QuitPC exists) - heavily restructured the routines for showing incoming data (I think (hope) that all those strange problems are fixed :-)) - the GENERAL CONFIG page lets you specify MOVEMENT's position in the prompt test string - added functions MYHP, MYMANA and MYMOV - the internal word-processor auto-selects its text - the fixed size font used is now FIXEDSYS and no longer TERMINAL (this font (VGAFIX.FON) is now included in the distribution package) 2.10 - restructured some important routines - greatly reduced problems when scrolling the scroll-buffer (problems with the mouse capture) - created a 32 bit version for Windows 95 (currently under advanced beta-testing :-)) (this WON'T BE considered a MAJOR UPGRADE :-)) - added short-cuts and sorted controls' tab order in new windows - panel visibility is now stored in local PC's configuration TOO - it is possible to set a delay to auto-save the log file - for every MUD you can define different end of line sequences (CR, LF, CR+LF, LF+CR). Nice for MUSH players (I think :-)) - changed ELF's icon - restructured the GENERAL configuration page - added infos on configuration in ELF's documentation - META-COMMAND @WADD(id,text) to add a line of text at the end of a user window - FUNCTION @WOPEQ(title). Returns the ID of the user window with the same TITLE or the ID of a new one if it doesn't exist - FUNCTION @WNUM(title). Returns the ID of the window with the specified TITLE (-1 if not found) - FUNCTION @WSTAT(id). Returns a value depending on the visual status of the user window - FUNCTION @WMAXID. Returns the highest ID allocated for user windows - FUNCTION @WTITLE(id). Returns the title of the user window ('' if it doesn't exist) - extended (ELF) ANSI background color codes now work correctly - @WADD brings to view the last added line (only if previously the last line was shown too) - now @CALL @ONQUIT is executed even when exit confirmation is disabled 2.11 - the extraction of variable parts ('*' processing in triggers, aliases, etc...) has been buffered to increase processing speed - converted DOCumentation to HLPmentation :-))) - HOME and END now correctly go before the first and beyond the last character in the editing field - the system menu in user windows has been re-enabled, but CLOSE is still disabled (for programming purposes) - added a toolbar to control multiple instances - various changes to fonts, appearance, styles and so on - added an option to aliases that forces the variables to be expanded in the pattern before checking it (see help for more infos) - the list-boxes in the CONFIG dialog are created on the fly to speed up operations - the translation of a long name into a short name can be selected by double-clicking on a word of the long name 2.12 - Windows 95 version correctly handles multiple instances - speeded up interprocess communication for handling multiple instances opened at once - improved speed especially when receiving chars from the MUD - now ELF politely signals to TELNET servers the options it doesn't recognise (so you can connect even via normal TELNET) - added all missing short-cuts in the dialogs - added in the dialogs several references (help buttons) to on-line help - with CTRL-D you can clear the history buffer (to definitely hide your password :-)) 2.13 - added a vertical scroll-bar when editing commands - added a few new messages in the trigger wizard - added file-handling META-COMMANDS and FUNCTIONS: - @FWR id,string (writes a line of text to a file) - @FCL id (closes an open file) - @FOPW(file-name):number (opens a file for writing) - @FOPA(file-name):number (opens a file for appending) - @FOPR(file-name):number (opens a file for reading) - @FNRD(id):number (reads a number from a file) - @FSRD(id):string (reads a string from a file) - @FEOF(id):number (tests EOF condition for a file) 2.14 - added a new menu FLAGS that lets you modify FREEZE, BUFFERED, SELECT and TRIGGERS ON - the timer that show when the TICK will happen is now dinamically showed on one the following panels (the first one that is visible): TIME panel, EXITS panel, HORIZONTAL TOOLBAR - fixed a bug that caused the definitions of the mouse over the scroll buffer to be lost when modifying the configuration without accessing the mouse page - CTRL-PAGE-UP, CTRL-PAGE-DOWN, CTRL-UP and CTRL-DOWN let you navigate in the scroll buffer - added a hint window - the configuration files are now always read from program's directory - completely rewritten the PROMPT WIZARD!!! Take a look at it in the GENERAL-CONFIGURATION page - added a new option in the GENERAL CONFIG page: NOSOUND, to disable all sounds: useful if you have problems with sounds on a computer with no sound card 2.15 - registered users can hide the panel containing the running logo - FUNCTION @CRY("text","key"). Returns text encrypted using the specified key - FUNCTION @DCRY("text","key"). Returns decrypted text using the specified key - added 10 more buttons to the horizontal toolbar - added demo triggers and aliases to demonstrate how to use ENCRYPTED messaging - in VARS.ITA: - trigger DECODIFICA: automatically decodes the text between '.,' and '.,' - aliases TELL codificato, SEND codificato... : execute TELL, SEND, MESS, TELE and GT coding the message - in VARS.ENG: - trigger DECRYPT: automatically decodes the text between '.,' and '.,' - alias CRYPT TELL: executes TELL coding the message - all the routines use the variable @CRYPWD to contain the password: both the sender and the receiver of the message must have the same password in @CRYPWD 2.16 - speeded up decryption - REMOVED A BUG THAT SELDOM CAUSED AN ERROR WRITING VARS.xxx - using find to find a non-existing string in a full scroll-buffer no longer causes a RANGE CHECK ERROR (that, anyhow, caused no harm at all) - in the CONFIGURATION-ALIAS page now you can view either alias names or alias patterns 3.00 - the dialogs used to modify triggers, aliases, macros and buttons have been fully rewritten with a common resizable interface - added a COMMAND WIZARD to interactively insert meta-commands - the command interpreter now uses TOKENS to lower memory requirements (you'll be able to write longer sequences of commands) and to speed up things - added functions for much much easyer and faster color setting in command sequences - added function @PUSHCOLORS and @POPCOLORS for temporary color overriding in complex output text - added a FUNCTION WIZARD to interactively insert functions - added function @NORMALCOLORS that reset colors to default values inside an output text - added function @PARMS that returns the value of a parameter (much like '%') as a string. @ParmS(2=a) equals to '%2=a' but is faster and completely avoids maximum string length overflow (255 chars) - added function @PARMN that returns the value of a parameter (much like '%') as a number. @ParmS(1=t) equals to '%1=t' but is faster and completely avoids maximum string length overflow (255 chars) - several windows remember their size - in the MAIN WINDOW APPEARANCE dialog the selection of the font for the WATCHES PANEL now works fine again - added explicit HELP buttons in the various CONFIGuration pages - the PARAMETER WIZARD (used by the TRIGGER WIZARD) lets you fully configure parameter extraction - the TRIGGER WIZARD uses the new common dialog to define the commands to be executed - added function @HICOLORS to set high intensity ANSI colors - the ANSI WIZARD works with the new color functions too - added function @POPUPS("option-1",..,"option-n") that displays a popup menu and returns the name of the selected item - added function @POPUPN("option-1",..,"option-n") that displays a popup menu and returns the index (starting from 1) of the selected item - added meta-command @ASSIGN("variable-name",expression) that assigns the value resulting from to the specified variable - Windows 95 version has SYNTAX HIGHLIGHT (can be disabled) when editing command sequences - added meta-command @REM to insert a comment in a sequence of commands - added in the APPEARANCE configuration page the controls to create custom syntax highlight - fully restructured (de)crypting routines to avoid overflow problems in 16 bit version - the variable parts in the trigger wizard are now shown in BOLD - fixed a 'feature' that caused single '#' in output text to be converted to a NULL character and speeded up '#' parsing - drag&drop now can't be activated for horizontal and vertical toolbars by simply passing over the buttons with the left ouse button pressed - added a LOGIN WIZARD that creates the proper triggers for automatically login you character in the MUD - FULLY RESTRUCTURED THE TRIGGER WIZARD to improve friendlyness - added function @POS(,,) that finds a substring in a string starting from a specified position - increased ELF's tolerance in recognising multiple ticks - @POPUPN and @POPUPS activate a special mode very similar to FREEZE to avoid problems - added meta-command @TICKNOW that forces tick recognition - FULLY RESTRUCTURED THE PROMPT WIZARD to improve friendlyness - added several new features to automatic TICK recognition to improve precision - when the right mouse button is pressed over an existing line of a user window the alias ONWINRCLICK is called with the following parameters: ONWINRCLICK id,x,y where X and Y are 0 based - added META-COMMAND @WINSERT ,, that inserts at in user window - now it is possible to @WCLOSE a user window while handling its ONWINCLICK (and ONWINRCLICK) - ONWINCLICK and ONWINRCLICK now set the y value accordigly with the scroller - @PARMS and @PARMN are now expanded even when there is not an expression (much like variables). Now you can FULLY AVOID using '%' parameter expansion, thus increasing speed! 3.01 - all the list boxes in the configuration dialog now use a proportional default font - now it is possible to disable the login wizard for a particular configuration - colors definitions (@FGxxx and @BGxxx) are now recognised in a more extended way 3.02 - it is possibile to disable the login wizard - you can choose how to be informed when the maximum value for a stat is detected (with a message, with an alias call (OnMaxMANA, OnMaxMOV, OnMaxHP), with nothing) 4.00 - FROM NOW ON, ONLY WINDOWS 95 VERSION WILL BE ENHANCED - PLEASE, POST ME ANY ERROR OR STRANGE BEHAVIOUR YOU MAY ENCOUNTER - almost every limit in string length (chars received from the mud, command length, ...) has been removed - the DELAY meta-command has been reenabled and works fine 4.01 - revised the appearance of some dialogs (especially the CONFIG dialog) - added meta-command @QUEUE , 4.02 - NOW ELF CAN BE REGISTERED USING CREDIT CARDS AND OTHER SERVICES - CHECK HTTP://ASCU.UNIAN.IT/~MILANI - added a (beta-version) AUTO-MAPPER. Test it and let me know! - the alias ONCONNECT is called when connection is established - the alias ONDISCONNECT is called when connection is lost - now ELF correctly closes sockets after disconnections - added function @LASTMUD that returns a string containing the name of the last established connection - added meta-command @CONNECT to connect to (as it appears in the connection dialog) - added meta-command @DISCONNECT to disconnect the active connection - removed a BUG that caused ELF to hang on exit if using extended alias recognition - added features to default ENGLISH configuration (like PERSONAL CHAT WINDOWS with right mouse button handling) - added a ROLLER to user windows. Use with care, especially when using several user windows - the buttons to (dis)connect have collapsed into the same button - LOG files are now correctly parsed (RAW,COMPRESSED,STRIPPED)