Hello again! It's been a long while, so I thought I'd "re-introduce," myself.
I stopped playing Ultima about 3 years ago as life got busy for myself as well as for my IRL friend who got me into the Free Shard he was on. On top of that the server owner started making changes that I found less enjoyable, so I just left. I'm between jobs right now, and found myself with a lot of free time and fired up Ultima and EasyUO to work on some unfinished business that had been bothering me. I also wanted to say thanks to TrailMyx for maintaining the site and providing the forum.
From the help of many here I was able to go from a scripting novice, where my scripts would memory leak to no end causing constant client crashes and Windows BSODs every 3-5 days, to the point where I can run several scripts that do several things almost endlessly (weeks to months) before a client crash. And no more BSODs. Thanks for your patience and willingness to help, EN.
I wouldn't really consider myself a player as much as a scripter. I find much more satisfaction from the challenges of how to script something than from playing. I don't know how long I'll be around this time, but I've invested several thousands of hours into EasyUO over the years, and am working on some subs that I'd like to share once I get some testing and/or logic done.
I left before with a handful of scripts ~90% complete, (miner, logger, BOD sorter, BOD filler/turn-in, and a bunch of stand-alone helper scripts for certain tasks). All in working order and decent enough to share if I wanted to. But there was always one nagging issue that I didn't want to tackle at the time. I knew how to solve it, but I also knew it would require restructuring my scripts from the ground up and that was too daunting at the time. Now, after 3 years, I am no longer invested in my previous scripts and it feels "fresh."
I play on an AFK friendly FS (great place for script testing/writing) that's based in Sweden. I live near west coast US. My ping varies from 250-350ms regularly with spikes from 700-1500ms,
AND I often lose connection. My scripts work just fine in a vacuum, but not in reality where the server I'm connecting to is thousands of miles away across an ocean.
I've solved ping for basically any situation (exevent drag/drop is the only action I can think of where I have to use a "static," wait time with sufficient tolerance, as I have not found some type of confirmation in EasyUO), but losing connection was the big issue. Reconnecting is easy, but to truly tackle the issue requires structuring scripts so that connection is the focal point for every client interaction. If stable, full automation is the goal.
The big sub I'm working on right now I call Sub ClientAction, where every client action is funneled into a singular varCheck that checks for connection and reconnects if lost and your script picks up at or near where it left off. The goal is to minimize client spam and bifurcate all client interactions from the EasyUO logic, so that EasyUO keeps itself busy, rather than spamming the client if connection is lost.
A simple example of a call:
instead of
event macro 8 7
while #contid <> #backpackid
wait
you would
gosub clientAction open backpack
And if connection is lost before the backpack opens, Sub ClientAction would automatically reconnect, attempt again to open the backpack, and then return once successful. The script/client having been none the wiser.
I'm reaching the point where I'm polishing the first-ish draft, but I won't post it until I do a write-up which will likely take me a full days work, as it includes a few sub-subs and at least one handler sub. And I still need to decide how to handle click actions for crafting/other multi-click-action gumps. That's not happening soon. Maybe in a week or two. I'll start a discussion thread about it once I start working on the write-up. Maybe within a few days time. I'm very interested in any/all feedback, critical or otherwise.
My main focus right now is this sub, and other "operational" functionality, as well as the ins/outs of beating EasyUO into submission. I think most can agree, it is somewhat limited in terms of expected functionality (like subs not being true localized functions), but it is also
VERY robust and provides ample work-arounds for any perceived short-comings. And that also adds to the enjoyment (or maybe headache

) of scripting in EasyUO, and I am looking forward to hopefully discussing these topics and more with everyone here, again.
Well... that's about it for my "re-introduction," sorry for the long-winded post, resurrecting a "dead," thread and probably/partially off-topic directory. Thanks to those who bothered to read it.
And thanks again, TM!