PDA

View Full Version : My scripts



Pages : [1] 2 3 4 5

Tgo01
01-09-2014, 01:58 AM
New!

Feature requests for my scripts might be implemented if I feel like it.

Offers of silver tips for feature requests have a much better chance of being implemented.

Bugs will be fixed for free...eventually...

Figured I'd just consolidate all of the scripts I have on the repo into one thread for any bug reports or feedback or etc.

735 -- Tracks your successful/failed casts of 735 and informs you of any negative conditions you should fix before casting 735 at an item. Also keeps track of your kills to determine how many kills you need to reach your weekly cap.
925 -- Similar to 735 except for 925.
auto-level -- Gets you to level 3. AUTOMATICALLY!
bard-renewal-test -- Calculates your bard renewal penalty/bonus/thingie. We were trying to figure out the formula a ways back but I think we've given up on that for now.
cobble -- Will master cobbling for you.
colmaster (http://forum.gsplayers.com/showthread.php?87884-My-scripts&p=1891602#post1891602) -- Masters COL in Solhaven for you.
disarm-no-more -- Start with your weapon and shield in your hands and this script will automatically pick them up if they are on the ground for any reason.
donoharm (http://forum.gsplayers.com/showthread.php?87884-My-scripts&p=2030609#post2030609) -- Do no more harm!
dont-lose-it -- Thread here. (http://forum.gsplayers.com/showthread.php?101226-Don-t-Lose-it!)
finish-it -- Thread here. (http://forum.gsplayers.com/showthread.php?87884-My-scripts&p=1934179#post1934179)
maxcap -- Thread here. (http://forum.gsplayers.com/showthread.php?87884-My-scripts&p=1900388#post1900388)
no-spirit-death (http://forum.gsplayers.com/showthread.php?87884-My-scripts&p=1886129#post1886129)
random-verb (http://forum.gsplayers.com/showthread.php?87884-My-scripts&p=1862784#post1862784) -- Perform a random verb!
rogue -- Automates many rogue guild tasks.
skinme -- Tracks your successful skinning attempts on a per critter basis and a per kneeling/stance offensive basis.
song-manager -- Lets you customize which songs you want to always have up, which ones you want to sing once then stop singing and sing again after your renewal and various other options. Helps cut down on multisong penalty.
sorc -- Automates illusion ranks. So far only works with rose illusions.
squelch (http://forum.gsplayers.com/showthread.php?87884-My-scripts&p=1858604#post1858604) -- Perfect if you want to ignore someone. Various options to only squelch someone's verbs towards you, all of their verbs, their speech etc. This won't squelch the entire room when the ignored person and their disk are in the room.
task -- Works with the rogue script to automate rogue guild partner tasks.
task-sorc -- Works with the sorc script to automate partner reps if both players have both sorc and task-sorc.
testme -- Performs various tests on an item to find out as much information about an item as you can.
tgo01-rep -- Discussed here (http://forum.gsplayers.com/showthread.php?87884-My-scripts&p=1815657#post1815657).
thiefwatch -- Will automatically close containers you specify 10 seconds after you open them, will inform you if you are missing silvers due to a theft (even if you didn't witness said theft) and various other options.
title -- Discussed here. (http://forum.gsplayers.com/showthread.php?87884-My-scripts&p=1776282#post1776282)
tpick -- Automated box picker/disarmer/thingie.
warrior -- Automates warrior guild tasks.

Tgo01
01-09-2014, 02:04 AM
Updated disarm-no-more so now it tracks your right hand and your left hand. Start the script with your weapon/offhand in your hands and the script will automatically pick them up if it ever sees them on the ground for any reason. Script will inform you which room you were in (or within 2 rooms) when it thinks you lost your weapon/offhand. If go2 is running when you lose your item the script will automatically stop go2 and go back to the room it thinks your item is in and attempt to pick it up.

Also uploaded squelch. Squelch allows you to squelch various game lines of someone you wish to ignore. Unlike just squelching someone's name in Stormfront this script allows you to just squelch their verbs towards you, squelch all verbs performed by them, squelch them entering/leaving your room, squelch them casting spells and etc etc. Also unlike squelching their name in Stormfront this script won't squelch the entire room if the person or their disk is in the room with you; instead when you LOOK it's as if they don't even exist, everything will be normal except their name doesn't show up.

I'm sure there are some game lines that need to be added to squelch but I got all of the ones I could think of. If you see a game line that should be squelched (like a verb performed by the person) then please let me know and I'll add it to the script.

Anebriated
01-09-2014, 02:17 AM
"you must spread some rep" someone get him for me because I can rep him again yet. Love the scripts Tgo, thanks for the work.

Tgo01
01-09-2014, 02:24 AM
"you must spread some rep" someone get him for me because I can rep him again yet. Love the scripts Tgo, thanks for the work.

Why thank ya and you're welcome :D

I might have gotten a bit too ambitious with the squelch script, it seems to slow the game way down. Gonna see if I can't fix that. Or maybe it's just me?

Gibreficul
01-09-2014, 05:09 AM
I'm about to dive into Illusions... I have a baby sorc that's just over a week in existence rolled for the purpose of being a partner for my main sorcerer. Once his 30 days are up, I plan to master illusions. I'll be looking at sorc, but you know how I roll, I'll probably make my own script for it.. Maybe some collaboration is in order. If that goes well... maybe we can finally get a complete rogue guild script up for the masses. I know you did something with partner reps... I'd be interested to see how you managed that. Anyway... fine work. The world needs more good scripters.

ROTOR
01-09-2014, 12:11 PM
Hi, great scripts - thanks for all the work.

Was just trying out disarm-no-more, and while it works great if you get disarmed or cursed, it doesn't seem to know if you're purposely sheathing or stowing your weapon - for example, when stowing items to climb a cliff or slope into a hunting area. If you sheath your weapon with the script running it gets the weapon out and swaps it back and forth 3 or four times. Might do the same thing if you're stowing your weapon to get an alternate skinning weapon but haven't actually checked that yet.

Would be great to see a complete rogue guild script btw. Been adding stuff to the one you made already, but I'm not a scripter and it's very long and messy!

MrMortimur
01-09-2014, 01:06 PM
Some amazing scripts btw.
I currently use song-manager on my bard and love it. No more 1018 explosions. I think I had some trouble getting it to sing my custom sonics, but that might have been user error. I'll logon my bard a little later and try again.
I downloaded testme to prepare for some locker organizing. Is there a command I need to use for it to wear a wearable scripted item before testing the scripts?
The variety you put into Tpick and the breakdown at the end, love it. Only place I'd find it hanging is if there are enough coins in a box to cause RT, it will attempt to disarm the next box on the ground while still in RT. I have just been copy/pasting the disarm #123456 into cmd line to have it resume. This is while using tpick ground loot.

Thanks again for putting all these up there.

Tgo01
01-09-2014, 03:30 PM
I'll be looking at sorc, but you know how I roll, I'll probably make my own script for it.. Maybe some collaboration is in order. If that goes well... maybe we can finally get a complete rogue guild script up for the masses.

That would be awesome.


I know you did something with partner reps... I'd be interested to see how you managed that.

The easiest way I could think of was to just create a second script (task-sorc) to work with the main sorc script. Basically task-sorc waits for whispers (from sorc) from the other player and starts up sorc.


Was just trying out disarm-no-more, and while it works great if you get disarmed or cursed, it doesn't seem to know if you're purposely sheathing or stowing your weapon - for example, when stowing items to climb a cliff or slope into a hunting area. If you sheath your weapon with the script running it gets the weapon out and swaps it back and forth 3 or four times. Might do the same thing if you're stowing your weapon to get an alternate skinning weapon but haven't actually checked that yet.

As soon as I'm able to access the repo again I'll upload a version that works around this. If you started the script as ;disarm-no-more 3 (3 can be any number you want) then it will wait 3 seconds after you stow your weapon/off hand before grabbing it. If you grab your weapon/off hand manually before the time is up it won't mess with the script or anything. Even if you use this option the script will always pick up your weapon/off hand from the ground as soon as it sees it there.


I think I had some trouble getting it to sing my custom sonics, but that might have been user error. I'll logon my bard a little later and try again.

If you're still having trouble let me know what happens and what your setting is.


I downloaded testme to prepare for some locker organizing. Is there a command I need to use for it to wear a wearable scripted item before testing the scripts?

No but I'll probably add an option to do something like this at some point.


Only place I'd find it hanging is if there are enough coins in a box to cause RT, it will attempt to disarm the next box on the ground while still in RT. I have just been copy/pasting the disarm #123456 into cmd line to have it resume. This is while using tpick ground loot.

I think I fixed this, as soon as I'm able to upload to the repo again I'll upload the new version.

Tgo01
01-09-2014, 06:51 PM
Alright updated tpick and disarm-no-more.

Also I managed to fix the slowdown problem with squelch so I have uploaded a working version of that as well.

Gibreficul
01-10-2014, 08:53 AM
Where did you learn to make the GUIs? I just looked at tpick's GUI setup and it's really nice. I've dabbled with them, but I have no clue what I was doing. It was mostly just stealing code from other scripts with GUI and getting lucky on modifications. I can't seem to find any useful help or information about GTK online. Mostly, I have no clue what the parameters mean... the true/false, and the numbers that follow. Very frustrating.

As for partner reps...I was more thinking a "watcher" script that scans LNet thoughts instead of whispers... Whispers might be easier, but LNet thoughts seem to be more powerful for people who are "otherwise occupied" when help is requested. (Shattered environment where say, the watcher script will pause/kill a hunt script, go to a location, do the reps, then unpause/restart the hunter.)

Tgo01
01-10-2014, 12:29 PM
Where did you learn to make the GUIs? I just looked at tpick's GUI setup and it's really nice. I've dabbled with them, but I have no clue what I was doing. It was mostly just stealing code from other scripts with GUI and getting lucky on modifications. I can't seem to find any useful help or information about GTK online. Mostly, I have no clue what the parameters mean... the true/false, and the numbers that follow. Very frustrating.

Honestly I stole most of the code from Bigshot and just changed and edited stuff around.


As for partner reps...I was more thinking a "watcher" script that scans LNet thoughts instead of whispers... Whispers might be easier, but LNet thoughts seem to be more powerful for people who are "otherwise occupied" when help is requested. (Shattered environment where say, the watcher script will pause/kill a hunt script, go to a location, do the reps, then unpause/restart the hunter.)

That's a good idea. It would be nice if your partner doesn't want to just sit in a room waiting for you to need them.

Gibreficul
01-10-2014, 06:21 PM
Honestly I stole most of the code from Bigshot and just changed and edited stuff around.

I looked at that code. I'm a "why" person. If I don't know why, it makes no sense, and I don't know why you need the false, 1, 3, 6 or whatever for the parameters. Maybe one day I'll find a good reference.


That's a good idea. It would be nice if your partner doesn't want to just sit in a room waiting for you to need them.

I actually have the framework for that done. I used it for a couple years to request picking service on IFW for my sorcerer in Shattered. I even had a part in there looking for rogues requesting guild help, but I never did finish that part.



status_tags
while x = get
unless x =~ /.*"thoughts".*?\[(GibsChannel|Private)\].*?(GSF|GSPlat|GSIV):(\w+)\: "(.*?)".*?/
next
else
channel = $1
game = $2
person = $3
mess = $4
end
# echo "#{channel}: #{game}: #{person}: #{mess}"
next unless channel =~ /GibsChannel|Private/
next unless game == XMLData.game
next unless [$rogues, $my_group].flatten.include?(person)
if mess =~ /rogue guild/i && $rogues.include?(person)
echo "Guild summon"
end
end
status_tags

Yeah, that's basically what I have so far (minus the picker summon shit, since it has no relevancy here.) Obviously, I have arrays set up elsewhere for $rogues and $my_group... but there's the framework.

Tillmen
01-12-2014, 10:38 AM
I looked at that code. I'm a "why" person. If I don't know why, it makes no sense, and I don't know why you need the false, 1, 3, 6 or whatever for the parameters. Maybe one day I'll find a good reference.


http://ruby-gnome2.sourceforge.jp/hiki.cgi?Ruby%2FGTK

I'm not sure I'd call it a good reference, but it's what I use. If you're wanting to use something that has a particularly crappy or even missing description on that reference, it can be helpful to search for a Python GTK reference. The syntax will be somewhat different, but it's documented better.

Tgo01
01-13-2014, 05:53 PM
Just uploaded a new version of Rogue. I didn't add too much to this version, mostly just cleaned up the script because all of the goto commands were bugging me.

I did add a setup menu so you no longer need to open the file itself to change the settings around. Currently only works in Solhaven, Landing and Icemule. If you want me to add another rogue guild to this script let me know and I'll tell you what information I need you to gather for me.

Currently automates all solo sweep, gambit, cheap shot and subdue tasks. Can also automate critter sweep tasks.
In order to automate sweep, gambit and cheap shot partner reps you and your partner must have both this script and the "task" script.

Must do ;rogue setup and fill out the settings before running this script.

Type ;rogue for usage.

Type ;rogue sweep to automate solo sweep tasks. ;rogue sweep <partnername> for partner tasks.
Type ;rogue gam to automate solo gambit tasks. ;rogue gam <partnername> for partner tasks.
Type ;rogue cheap to automate solo cheap shot tasks. ;rogue cheap <partnername> for partner tasks.
Type ;rogue sub to automate solo subdue tasks.
Type ;rogue lmas to do lockmastery tasks. Doesn't do all lockmastery tasks.
Typing ;rogue <sweep, gam, sub or lmas> will also turn in completed tasks to the NPC.
Type ;rogue cal to calibrate your calipers.
Type ;rogue wedge <number> to create specified number of wedges.
Note: do not type GLD while script is running, it could make the script stop working.

For lock mastery it does the pit your skills against a footpad and most later tasks that come after the trap components.

Thondalar
01-13-2014, 06:53 PM
Does this not work with stun maneuvers? Seems like that would be one of the easier ones to script.

Tgo01
01-13-2014, 09:05 PM
Does this not work with stun maneuvers? Seems like that would be one of the easier ones to script.

Yeah but I started writing this script after I already mastered stun maneuvers :/

I'm pretty sure Gib's script does stun maneuvers though.

Geijon Khyree
01-14-2014, 12:51 AM
grgguild is fantastic.

Geijon Khyree
01-14-2014, 01:00 AM
Error message

--- Exception: string not matched
rogue:225:in `[]='
--- Lich: rogue has exited.

Trying to do gambits solo. The ;rogue setup won't close and the above errors triggers. I have tasks and line 25 of rogue is between your author credit, a blank line (25), and =end so nothing jumps out at me.

Tgo01
01-14-2014, 01:03 AM
Hmm. If you do ;settings list does it list the rogue setting on there somewhere?

It might not have saved your settings if you can't close the window.

Geijon Khyree
01-14-2014, 01:15 AM
Double checked, filled it all out. It did not show up in ;settings list. I deleted both task and rogue (They had previously been trusted too) and I was going to re-download them, but it looks like you removed it for the time being.

Tgo01
01-14-2014, 01:17 AM
Double checked, filled it all out. It did not show up in ;settings list. I deleted both task and rogue (They had previously been trusted too) and I was going to re-download them, but it looks like you removed it for the time being.

I haven't deleted anything :/

I've been having trouble with the repo lately so maybe it's doing something funky from my end.

I'll try uploading them both again.

Geijon Khyree
01-14-2014, 01:23 AM
Script is back. It still gets stuck open in the GUI. I need some sleep though so I'll check this tomorrow morning. Appreciate all the work.

--- Exception: string not matched
rogue:226:in `[]='

;settings list
--- Players's settings
jewelrysack: cloak
wandsack: cloak
clothingsack: cloak
op: {"flee_count"=>"3", "hunting_stance"=>"offens", "flee_clouds"=>true, "always_flee_from"=>"titan", "resting_scripts"=>"", "wounded_eval"=>"percenthealth <= 50", "oom"=>"0", "loot_script"=>"sloot3", "hunting_scripts"=>"isigil", "lone_targets_only"=>false, "resting_commands"=>"stow khopesh, wear shield, ;k isigil", "resting_room_id"=>"228", "wand"=>"", "invalid_targets"=>"", "signs"=>"", "hunting_room_id"=>"2570", "hide_for_ammo"=>false, "use_wracking"=>false, "rest_till_spirit"=>"8/8", "hunting_commands_b"=>"attack target", "monitor_interaction"=>false, "rest_till_mana"=>"100", "hunting_commands_c"=>"", "hunting_commands"=>"kill target", "wracking_spirit"=>"", "targets"=>"giant, crone, troll", "hunting_boundaries"=>"2571, 2557", "dead_wand_container"=>"", "ammo"=>"", "fresh_wand_container"=>"", "rest_till_exp"=>"65", "spam"=>true, "depart_switch"=>false, "dead_man_switch"=>false, "ammo_container"=>"", "disable_commands"=>"", "wand_if_oom"=>false, "encumbered"=>"", "fried"=>"100", "hunting_prep_commands"=>"get khopesh, rem shield"}
stowsack: pack
lockpicksack: cloak
magicsack: cloak
skinweaponfire:
skinweaponsack:
rogue_password: Pull, knock, knock, rub, push, tap, pull
skinweaponfiresack:
boxsack: pack
foragesack:
skinweaponblunt:
slib: {"version"=>3.0905201}
skinweaponbluntsack:
herbsack: pack
scrollsack: cloak
skinweapon:
ammosack: cloak
reagentsack: cloak
skinsack: cloak
uncommonsack: cloak
lootsack: pack
rogue: password Pull, knock, knock, rub, push, tap, pull
weapons2: dagger
gemsack: cloak

Tgo01
01-14-2014, 01:26 AM
rogue_password: Pull, knock, knock, rub, push, tap, pull
rogue: password Pull, knock, knock, rub, push, tap, pull

If this is how your settings look that might be the problem.

Try typing ;settings delete rogue and running the setup again.

Gibreficul
01-15-2014, 09:44 PM
Yeah but I started writing this script after I already mastered stun maneuvers :/

I'm pretty sure Gib's script does stun maneuvers though.

It certainly does.

Tgo01
01-17-2014, 05:06 PM
Uploaded a new version of testme that will wear a wearable item before performing zest tests.

There may be some "false positives" for some verbs showing up as zests when they are really just the normal messaging for that particular verb being performed at items. I think I got most of them though but if you run into any let me know the verb and the messaging and I can add it to the list of messaging to ignore as a zest.

Tgo01
01-21-2014, 02:29 AM
Uploaded a new version of 735 that keeps track of your kills to help determine how many kills you need to reach your weekly cap.

Always leave this script running (add to your favs list), whenever you prepare 735 the script will run a check on all positive/negative variables that are under your control (wounds, workshop, spirit) and it will inform you of what you should correct before proceeding with your 735 cast to make sure you have the best possible chance to successfully ensorcell your item. The script will also give you a base percentage chance of success (this is just a guess on my part, no data has gone into this guess) when you first channel at an item. Script will also keep track of successful and failed casts and will give you your own observed success rate the next time you do a first channel at an item.

Script will also keep track of your current week's and previous week's kills to help determine how many kills you need to reach your weekly cap. If you have the option set to receive after kill stats the script will also remind you every 50 kills to cast 735 to check to see if you have reached your cap for the week.

Usage:
Simply prepare 735 and cast at yourself or at an item for stats about your success rate with 735.
Type "ens on" to show stats after each kill.
Type "ens off" to turn off stats after each kill.
Type "ens remind on" to remind you to cast 735 after every 50 kills.
Type "ens remind off" to stop reminding you to cast 735 after every 50 kills.
Type "ens stats" to show all stats from current week and previous week.
Type "ens reset" to reset ALL stats for current week. It is not recommended to use this option but it's here in case you want it.
Type "ens begin" after your first kill that yields experience after your gift has started for the week to start the script tracking your kills for the week.
Type "ens end" when you have reached your energy cap for the week so the script stops keeping track for the week.
Type "ens help" for help.

Once you have reached your cap for the week the script will stop keeping track of kills until your gift starts again.

After kill messaging:



You gesture at a kobold.
CS: +259 - TD: +3 + CvA: +20 + d100: +70 == +346
Warding failed!
A dull grey beam snakes out toward the kobold!
... 112 points of damage!
The kobold crumples to a heap on the ground and dies.
Cast Roundtime 3 Seconds.
Killed kobold (level 1)
Critters killed within level range: 0
Critters killed of unknown level: 0
Critters killed of too low level: 1




You gesture at a rolton.
CS: +259 - TD: +3 + CvA: +25 + d100: +6 == +287
Warding failed!
A dull grey beam snakes out toward the rolton!
... 114 points of damage!
The rolton collapses to the ground, emits a final bleat, and dies.
Cast Roundtime 3 Seconds.
Killed rolton (level 1)
You have reached your maximum necrotic energy for the week. Type 735 stats to see your kills for the week.


Stats page messaging:



CURRENT WEEK:
Can gain more energy this week: YES
Current level: 47
Current Necromancy Lore ranks: 0
Critters killed within level range: 0
Critters killed of unknown level: 0
Critters killed of too low level: 1

Critters within level range killed:
------------------------------
Critters of unknown level killed:
------------------------------
Critters too low level killed:
kobold (level 1): 1
------------------------------

LAST WEEK:
Last week level: 47
Last week Necromancy Lore ranks: 0
Critters killed within level range: 0
Critters killed of unknown level: 0
Critters killed of too low level: 1

Critters within level range killed:
------------------------------
Critters of unknown level killed:
------------------------------
Critters too low level killed:
rabid squirrel (level 2): 1
------------------------------


The necromancy lore and level of previous week will be whatever your necromancy lore and level was when you reached your cap for that week. Current necromancy lore and current level are simply your current necro lore and current level. Maybe some day if I'm feeling less lazy I'll list kills based on what your stats were at the time of the kill.

Maybe.

All critters and their levels were gotten from Krakiipedia. If the script doesn't provide a level it's either because A) I screwed up B) The critter isn't on Krakiipedia C) The critter is one whose level depends on the character's level (rogues, bandits, etc etc) or D) It's a grizzled critter. Even if script doesn't note the critters level it will keep track of the name of the critter and how many of that critter you have killed, it will just list them under the "unknown level" stat.

Also the script only keeps track of critters you have tagged if the word "damage" appears when using said attack. I don't use any spells that don't use the word "damage" so that's how I set it up. If you use a different spell and want it added let me know. Also script has no way of knowing if you received any credit for killing said critter, it only sees that you inflicted some damage on the critter before it died. So if you hit it for 3 damage and your group finishes it off the script will still count that as a kill.

Tgo01
01-22-2014, 07:34 PM
Not a huge update but I uploaded a new version of 735 that lets you turn after kill stats on/off and separately turn the reminder to cast 735 after every 50 kills on/off. Also now keeps track of whether you reached your weekly cap for the previous week.

Type "ens on" to show stats after each kill.
Type "ens off" to turn off stats after each kill.
Type "ens remind on" to remind you to cast 735 after every 50 kills.
Type "ens remind off" to stop reminding you to cast 735 after every 50 kills.
Type "ens stats" to show all stats from current week and previous week.
Type "ens reset" to reset ALL stats for current week. It is not recommended to use this option but it's here in case you want it.
Type "ens begin" after your first kill that yields experience after your gift has started for the week to start the script tracking your kills for the week.
Type "ens end" when you have reached your energy cap for the week so the script stops keeping track for the week.
Type "ens help" for help.

Gibreficul
01-23-2014, 05:37 AM
I'm curious... where did you get the critter list, or did you just surf the maps and copy down everything from there?

Tgo01
01-23-2014, 11:21 AM
I'm curious... where did you get the critter list, or did you just surf the maps and copy down everything from there?

Krakiipedia. I just went through the whole beastiary on there and jotted down all names and levels.

Anebriated
01-23-2014, 01:30 PM
hang on, just got the new version and it seems to be fixed.


edit: nevermind


735 off
>[voodoo]>prepare 735
[voodoo]>cast off
You begin drawing a faint, twisting symbol while softly intoning the words for Ensorcell...
Your spell is ready.
>
Cast at what?

--- Error: sf_to_wiz: private method `scan' called for #<Proc:0x0d5555d8@735:215>
$_SERVERSTRING_: You attempt to discern any aspects of this room that could affect your ability to pierce the veil in any summoning exploits. Nothing stands out to you.
>
------------------------------
You are not in a workshop.
------------------------------

doesnt seem to be friendly with voodoo or wizFE :D

Tgo01
01-23-2014, 01:33 PM
hang on, just got the new version and it seems to be fixed.

Eep! What was the problem?

Tgo01
01-23-2014, 02:42 PM
hang on, just got the new version and it seems to be fixed.


edit: nevermind


735 off
>[voodoo]>prepare 735
[voodoo]>cast off
You begin drawing a faint, twisting symbol while softly intoning the words for Ensorcell...
Your spell is ready.
>
Cast at what?

--- Error: sf_to_wiz: private method `scan' called for #<Proc:0x0d5555d8@735:215>
$_SERVERSTRING_: You attempt to discern any aspects of this room that could affect your ability to pierce the veil in any summoning exploits. Nothing stands out to you.
>
------------------------------
You are not in a workshop.
------------------------------

doesnt seem to be friendly with voodoo or wizFE :D

I can probably change the commands when I get home.

Tgo01
01-23-2014, 05:16 PM
Alright I uploaded a new version of 735 that doesn't use the phrase '735' to change the settings, this won't affect your current settings or stats, only how you want to change your settings in the future. Also since my sorc's gift just reset I realized the way I had the new week/max energy setup all nice and automatically wouldn't work. 735 doesn't recognize a new week has started until you have actually killed something that yields experience after your gift has started. So simply looking for the wording that your energy has maxed out for the week and that your gift has started could screw everything up.

So now when a new gift starts (or when you first download script) type 'ens begin' and when you have maxed out your energy for the week type 'ens end' so the script stops tracking kills for the week. Of course if you don't care about the kill tracking part you don't have to worry about any of this.

I might think of a more elegant solution later but this works for now.

Type "ens on" to show stats after each kill.
Type "ens off" to turn off stats after each kill.
Type "ens remind on" to remind you to cast 735 after every 50 kills.
Type "ens remind off" to stop reminding you to cast 735 after every 50 kills.
Type "ens stats" to show all stats from current week and previous week.
Type "ens reset" to reset ALL stats for current week. It is not recommended to use this option but it's here in case you want it.
Type "ens begin" after your first kill that yields experience after your gift has started for the week to start the script tracking your kills for the week.
Type "ens end" when you have reached your energy cap for the week so the script stops keeping track for the week.
Type "ens help" for help.

Anebriated
01-23-2014, 05:20 PM
seems to be working as intended now. thanks for the update!


still doesnt like wizFE though :D

>ens remind on
Show 735 reminder after every 50 kills: ON
--- Error: sf_to_wiz: private method `scan' called for #<Proc:0x13084920@735:233>
$_SERVERSTRING_: Please rephrase that command.

Tgo01
01-23-2014, 05:24 PM
Huh, that's odd. I don't use wizFE so I'm not sure what that's all about. Is the script not working or does it break anything else? Or does it just throw that error message when you type that?

Anebriated
01-23-2014, 05:51 PM
everything works perfectly, it just doesnt like something in there when run with wizFE. Nothing thats worth trying to fix anyway. Although it doesn't track the level for minotaur magus.

>ens stats
CURRENT WEEK:
Can gain more energy this week: YES
Current level: 80
Current Necromancy Lore ranks: 50
Critters killed within level range: 28
Critters killed of unknown level: 15
Critters killed of too low level: 0

Critters within level range killed:
lesser minotaur (level 74): 1
minotaur warrior (level 76): 27
------------------------------
Critters of unknown level killed:
minotaur warrior (level 76): 15
------------------------------
Critters too low level killed:
------------------------------

LAST WEEK:
Can gain more energy this week: YES
Last week level: 80
Last week Necromancy Lore ranks: 50
Critters killed within level range: 184
Critters killed of unknown level: 184
Critters killed of too low level: 0

Critters within level range killed:
lesser minotaur (level 74): 2
minotaur warrior (level 76): 182
------------------------------
Critters of unknown level killed:
: 2
lesser minotaur (level 74): 1
minotaur warrior (level 76): 181
------------------------------
Critters too low level killed:
------------------------------
--- Error: sf_to_wiz: private method `scan' called for #<Proc:0x13084920@735:233>
$_SERVERSTRING_: Please rephrase that command.

Anebriated
01-23-2014, 05:52 PM
actually some of that might have been screwed up by downloading the new script. the numbers showed correctly on the old version but not since i downloaded the new version. Bottom line is it doesnt list minotaur magus.

Tgo01
01-23-2014, 05:55 PM
Those 15 minotaur warriors under "unknown" critters killed are probably minoatur magus'. I just noticed a bug that would list the last known critter you killed as an unknown critter when you kill an unknown critter.

Is the critter name actually "minotaur magus" or "minotaur magi"? It says magi in both Narost and on Krakiipedia. That would be the problem if they are called magus.

Never mind. The critter name shows up as magi on Krakiipedia but they show a log of the critter in action and it says magus. I shall fix this and upload a new version as soon as the repo allows me :/

Tgo01
01-23-2014, 06:07 PM
Alright uploaded a new version that should list the actual name of the critter killed if it's a critter with an unknown level and it should properly track magus' now.

This new version won't affect your stats.

Anebriated
01-23-2014, 06:22 PM
thanks :)

MrMortimur
01-23-2014, 07:29 PM
Begun my sorcerer's lumnis today, tracking now. Curious to see what data comes out of this.

Tgo01
01-26-2014, 04:55 PM
Introducing skinme! A simple little script that tracks your skinning attempts on a per critter basis and whether or not you were kneeling or in offensive stance at the time of the skinning attempt.

Usage:
skinme stats to show your stats.
skinme reset to reset your stats.

Example of script in action:



Skinme stats
crooked crone finger success rates:
Offensive|Kneeling: 0 (0%)
Offensive|Not Kneeling: 0 (0%)
Not Offensive|Kneeling: 0 (0%)
Not Offensive|Not Kneeling: 3 (100.000%)
Total Attempts: 3

seeker eye success rates:
Offensive|Kneeling: 0 (0%)
Offensive|Not Kneeling: 0 (0%)
Not Offensive|Kneeling: 0 (0%)
Not Offensive|Not Kneeling: 4 (50.000%)
Total Attempts: 8

giant scalp success rates:
Offensive|Kneeling: 0 (0%)
Offensive|Not Kneeling: 0 (0%)
Not Offensive|Kneeling: 0 (0%)
Not Offensive|Not Kneeling: 1 (50.000%)
Total Attempts: 2

frozen scalp success rates:
Offensive|Kneeling: 0 (0%)
Offensive|Not Kneeling: 0 (0%)
Not Offensive|Kneeling: 0 (0%)
Not Offensive|Not Kneeling: 2 (100.000%)
Total Attempts: 2

m444w
01-26-2014, 05:18 PM
Krakiipedia. I just went through the whole beastiary on there and jotted down all names and levels.

If anyone has need for a JSON collection of the bestiary from now on:

http://bestiary.symboli.se/bestiary

I'd advise your Lich script to download it once and then save it to a local file so my tiny VPS doesn't get crushed by someone accidentally DoSing it when they use your script.

Buckwheet
01-26-2014, 06:41 PM
If anyone has need for a JSON collection of the bestiary from now on:

http://bestiary.symboli.se/bestiary

I'd advise your Lich script to download it once and then save it to a local file so my tiny VPS doesn't get crushed by someone accidentally DoSing it when they use your script.

Might want to try setting up cloudflare to cache the file for you. They are a pretty decent free CDN solution.

m444w
02-27-2014, 11:14 AM
;rogue is borked for audience reps and gambits in Prime (and I suspect Plat)

You cannot hide in TSC, so you have to move west, hide, sneak back to TSC and then just do your audience reps that away.

This is a quick script I wrote as a monkeypatch, feel free to cannibalize the logic. (https://gist.github.com/ondreian/9253288)

Tgo01
02-27-2014, 11:26 AM
You cannot hide in TSC, so you have to move west, hide, sneak back to TSC and then just do your audience reps that away.

Well that's just stupid, it's like they don't want rogues to master gambits.


This is a quick script I wrote as a monkeypatch, feel free to cannibalize the logic. (https://gist.github.com/ondreian/9253288)

Awesome, I'll update rogue at some point to make use of this.

m444w
07-26-2014, 12:27 PM
When you are doing "lessons from a master" for sweep (and maybe for cheapshots?), it's better to hide after you sweep the master, so they don't return. You'll cut 6+ seconds per round out of the equation that away.

[rogue]>sweep Reilly
[Roll result: 159 (open d100: 53) Bonus: 25]
You crouch, sweep a leg at Master Footpad Reilly and connect!
Master Footpad Reilly falls to the ground! You deftly regain your footing.


[You have 1 repetition(s) remaining.]
Roundtime: 5 sec.
R>
[rogue]>sweep Reilly
Master Footpad Reilly is already prone.
>
You feel fully energetic again.
>
* Prisym joins the adventure.
>cman vanish ... VANISHED JUST FOR DEMO, CAN HIDE
With subtlety and speed, you aim to clandestinely vanish into the shadows.
You attempt to blend with the surroundings, and feel confident that no one has noticed your doing so.
H>
Reilly stands back up.
Reilly exclaims, "Hey! Get out here! Don't make me come find you."
H>
[rogue]>sweep Reilly
You come out of hiding.
[Roll result: 201 (open d100: 95) Bonus: 25]
You crouch, sweep a leg at Master Footpad Reilly and connect!
Master Footpad Reilly falls to the ground! You deftly regain your footing.


[You have completed your training task.]
Roundtime: 5 sec.

Tgo01
07-26-2014, 12:47 PM
When you are doing "lessons from a master" for sweep (and maybe for cheapshots?), it's better to hide after you sweep the master, so they don't return. You'll cut 6+ seconds per round out of the equation that away.

Awesome. I uploaded a new version that should hide after sweeping a master. Also pretty sure I fixed the problem people were having with picking contests with masters not working.

m444w
07-26-2014, 01:47 PM
Awesome. I uploaded a new version that should hide after sweeping a master. Also pretty sure I fixed the problem people were having with picking contests with masters not working.

Muchas Gracias!

Also, another random enhancement I've ran into is it would be considerably more efficient for stealth speed gambits if you use smastery (if you know smastery and you have the stamina for it), I monkey patched this in my version as well awhile ago but here is a Gist (https://gist.github.com/ondreian/da60e52be7f3b10ac631) of it if you want to cannibalize the logic.

Tgo01
07-26-2014, 02:06 PM
Muchas Gracias!

Also, another random enhancement I've ran into is it would be considerably more efficient for stealth speed gambits if you use smastery (if you know smastery and you have the stamina for it), I monkey patched this in my version as well awhile ago but here is a Gist (https://gist.github.com/ondreian/da60e52be7f3b10ac631) of it if you want to cannibalize the logic.

Sounds sexy. I'll check that out when I get home.

Jace Solo
07-27-2014, 11:16 AM
Can you do one for the warriors guild that works as well as the rogue script?

Tgo01
07-27-2014, 12:11 PM
Can you do one for the warriors guild that works as well as the rogue script?

I don't have a warrior though :(

Jace Solo
07-27-2014, 12:40 PM
So it's all about you?!

Perhaps I could donate one if I can dig up the account info on a lvl 30

Tgo01
07-27-2014, 12:41 PM
So it's all about you?!

Well duh.

Allereli
07-27-2014, 12:51 PM
can you rename testme to testes?

Tgo01
07-27-2014, 12:54 PM
can you rename testme to testes?

But that's the name of my cyber script.

Jace Solo
07-29-2014, 10:02 AM
Trying to use tpick but getting:

>;tpick setup
--- Lich: tpick active.
--- Exception: undefined method `empty?' for 50:Fixnum
tpick:1220:in `start_script'
--- Lich: tpick has exited.

Tgo01
07-29-2014, 10:04 AM
Trying to use tpick but getting:

>;tpick setup
--- Lich: tpick active.
--- Exception: undefined method `empty?' for 50:Fixnum
tpick:1220:in `start_script'
--- Lich: tpick has exited.

Try ;settings delete tpick and running ;tpick setup again

Jace Solo
07-29-2014, 10:16 AM
That did it. Thx

Whirlin
08-01-2014, 11:24 AM
How about a script that tracks how many charges have been added to something when using 517?

Tillmen
08-01-2014, 12:56 PM
There's a chargeimbed and useimbed on the repository. They share settings. One tracks when you charge the thing and the other tracks when you use it.

ROTOR
08-03-2014, 04:15 AM
Question on the 'rogue' script. This script only works in landing/mule/solhaven? If I want it to work in Ta'Illistim do I just need to add the relevant guild room numbers for items like 'illistimdirt_rooms' and similar? And make sure 'do other guild tasks' is set to no so I don't get run to icemule from Illistim! Anything else I might need to add/delete/change?

Thanks.

Maerit
08-04-2014, 10:48 AM
I was recently having some weird issues with disarm-no-more. When I travel with go2 that requires my hands be free, the go2 script will stow my weapon and then disarm-no-more will retrieve it and swap it to my left hand? This breaks the go2 script somehow, and then I just end up standing there looking foolish...

It happened infrequently (maybe 1 / 10 travels), but when it happened it was very odd behavior. Especially since it was a runestaff the script was retrieving that shouldn't be held in the left hand. After I disabled disarm-no-more the issue never happened again, which is frustrating since that script is pretty handy in general.

ROTOR
08-04-2014, 11:18 AM
You can set disarm-no-more to wait a certain number of seconds before retrieving the weapon, such as "disarm-no-more 15" will wait 15 seconds. May or may not solve your problems but worth a try.

m444w
08-04-2014, 11:38 AM
;alias add go2=;e s='disarm-no-more'; if running?(s) then pause_script(s); restart=true; end; start_script 'go2', ["\?"]; wait_while { running? "go2" }; unpause_script(s) if restart;



>go2 bank
--- Lich: exec1 active.
--- Lich: disarm-no-more paused.
--- Lich: go2 active.
[go2: ETA: 0:00:00 (3 rooms to move through)]
[go2]>east
[go2]>go bank
[Gardenia Lane]
A pair of tall, beribboned stone columns flanks the entrance to the Four Winds National Bank. The three-story building dwarfs the surrounding shops and remains the largest in the city proper. Tiled in a rustic red shingle, the roof of the bank appears to be on fire, as sun glints off its surface. A pair of armor-clad elven warriors guard the entrance, their gaze never wavering as they protect the city's treasure.
Obvious paths: east, west
[go2]>go arch
>
[Mist Harbor Bank, Lobby]
Exotic potted palms line the walls, their fronds gracefully reaching out creating a canopy of leaves that tickle the ceiling. Handwoven imported grass rugs cover the wood floors. Patrons come and go irregularly, wandering through an intricately carved maoral arch that leads farther into the bank. You also see an exchange booth.
Obvious exits: out
>
[Mist Harbor Bank, Bank Windows]
A table covered with a magnificent bouquet of freshly cut orchids sits in the center of the room. Behind a long counter that stretches from wall to wall, the tellers are busy helping the customers. Casually dressed guards stand on each end of the counter, quietly watching the room. You also see a banking assistant and an intricately carved maoral arch.
Obvious exits: east
>
[go2: travel time: 0:00:00]
--- Lich: go2 has exited.
--- Lich: disarm-no-more unpaused.
--- Lich: exec1 has exited.

Tgo01
08-04-2014, 12:06 PM
I was recently having some weird issues with disarm-no-more. When I travel with go2 that requires my hands be free, the go2 script will stow my weapon and then disarm-no-more will retrieve it and swap it to my left hand? This breaks the go2 script somehow, and then I just end up standing there looking foolish...

It happened infrequently (maybe 1 / 10 travels), but when it happened it was very odd behavior. Especially since it was a runestaff the script was retrieving that shouldn't be held in the left hand. After I disabled disarm-no-more the issue never happened again, which is frustrating since that script is pretty handy in general.

If go2 is running while disarm-no-more is running then disarm-no-more will wait 1 second before checking to see if your weapon still isn't in your hand. If your weapon needs to be put away longer than that while go2 is running then it would indeed cause problems. If there is a particular room you're aware of that requires your weapon to be put away for longer than 1 second then let me know and I can make it so the script doesn't check for your weapon not being out while in those room(s).

Otherwise m444w's alias would work well in pausing disarm-no-more while go2 is running and unpause once it is done. Also what ROTOR suggests would probably work too.


Question on the 'rogue' script. This script only works in landing/mule/solhaven? If I want it to work in Ta'Illistim do I just need to add the relevant guild room numbers for items like 'illistimdirt_rooms' and similar? And make sure 'do other guild tasks' is set to no so I don't get run to icemule from Illistim! Anything else I might need to add/delete/change?

Thanks.

If you're feeling up to it you can get me the following information then I can add it to the rogue script :p

All rooms with dirt in the Illistim guild.
All rooms with windows.
All rooms with plants.
Room where audience reps should be done.
Room where training administrator is.
Room where toolbenches are
Room where guild master is.
Room where training masters are found.
Room where sweeping dummies are found.
Room where kitchen is found.
Room where mannequins are found.
Room where tool rack is found.
Training administrator's name.
Guild master name.
Master names.
Flower name(s).

ROTOR
08-04-2014, 01:31 PM
Cool. Thanks. Should be able to get you those room numbers in the next day or two.

ROTOR
08-05-2014, 09:00 AM
request on tpick please: if we are unable to open someone elses plated box, could you alter the script to give the box back to the person and restart the script? at the moment it seems to just say 'can't open the plated box' and exits the script. Also seems to close my toolkit for some reason which messes up the script next time it is run if I don't remember to re-open the kit (which is most of the time!).

Also, any chance of getting it to recast lores if failed due to hindrance?

Thanks!

Tgo01
08-05-2014, 11:46 AM
request on tpick please: if we are unable to open someone elses plated box, could you alter the script to give the box back to the person and restart the script? at the moment it seems to just say 'can't open the plated box' and exits the script.

It should already do that. Where is it failing exactly? Like do you have vials, do you wedge the box open? Is it trying to use 407 first? You sure you were picking other people's boxes?


Also seems to close my toolkit for some reason which messes up the script next time it is run if I don't remember to re-open the kit (which is most of the time!).

Is the toolkit your rogue's toolkit where your putty and stuff is found or is this a container where you keep like your wedges and stuff? If it's in the latter it should open them up the next time the script runs and it should only close them if they were closed to begin with. If it's the former it shouldn't be doing that at all.


Also, any chance of getting it to recast lores if failed due to hindrance?

Done.

ROTOR
08-05-2014, 12:45 PM
It should already do that. Where is it failing exactly? Like do you have vials, do you wedge the box open? Is it trying to use 407 first? You sure you were picking other people's boxes?

I don't have any vials/wedges and won't learn 407 until next level. It looks for those first and then exits without giving the box back.

Quick log:
You accept XX offer and are now holding an acid-pitted brass trunk.
J>You accept XX offer and are now holding an acid-pitted brass trunk.

[tpick]>disarm #9863691
You carefully begin to examine an acid-pitted brass trunk for traps...

There appears to be a plate over the lock, sealing it and preventing any access to the tumblers.

It looks like a somewhat difficult trap (-121).

You still have a good enough picture of the trap in your mind, that you could try to disarm it.

Roundtime: 5 sec.
You carefully begin to examine an acid-pitted brass trunk for traps...
[tpick]>disarm #9863691
Having discovered a trap on the trunk you begin to carefully attempt to disarm it...

You don't seem to have any way to get through that metal plate covering the lock. Gonna chew through it?
Roundtime: 3 sec.
RJ>
[tpick: No vials found bundled in your locksmith's pouch, going to try wedging this box open.]
You don't seem to have any way to get through that metal plate covering the lock. Gonna chew through it?
[tpick]>get my wedge from my kit
Get what?
J>
[tpick]>open my kit
That is already open.
J>
[tpick]>get my wedge from my kit
Get what?
J>
[tpick: Couldn't open this box.]
[tpick]>close my kit
You close a sinew-stitched kit.
J>
--- Lich: tpick has exited.




Is the toolkit your rogue's toolkit where your putty and stuff is found or is this a container where you keep like your wedges and stuff? If it's in the latter it should open them up the next time the script runs and it should only close them if they were closed to begin with. If it's the former it shouldn't be doing that at all.

Think I discovered part of problem here. I had my wedge/vial sack set to the same as my locksmithing kit (with putty, etc). So, next time I got a box without a plate the kit would be closed and the script would hang. Maybe you could add a 'no' option in the setup under 'containers' if we don't have any vials/wedges? Then it would skip looking for those altogether. I think just setting a different container will hopefully solve my problem though.




Done.


Excellent. Thank you.

Tgo01
08-05-2014, 01:21 PM
The problem with the script not handing the box back should be fixed now.

As far as it closing your locksmith's pouch yeah...for now the best thing to do would be to set your wedge container to something else. When I feel less lazy I'll fix the whole opening and closing of containers issue because it's not working properly anyways.

Kaldonis
08-07-2014, 03:38 AM
Here's a wiz script for illusions I've been bugfixing and patching. Not the smoothest thing ever, but it works at least up to shadows, and I got it working in lich of course.

http://www.cns.s.u-tokyo.ac.jp/~daid/files/illusions.cmd

One day I should get repo access to upload.

Cannot remember who wrote it originally, but it wasn't me.

Mighty Nikkisaurus
08-15-2014, 08:41 AM
Because my cobbling pattern book is altered, the cobbling script doesn't work with it. I'm on a mac so I don't know how to manually go in and change things, but is there a way to set the description for the book of patterns (mine is a pattern book).

Tgo01
08-15-2014, 10:51 AM
Here's a wiz script for illusions I've been bugfixing and patching. Not the smoothest thing ever, but it works at least up to shadows, and I got it working in lich of course.

http://www.cns.s.u-tokyo.ac.jp/~daid/files/illusions.cmd

One day I should get repo access to upload.

Cannot remember who wrote it originally, but it wasn't me.

Looks pretty gosh darn sexy.


Because my cobbling pattern book is altered, the cobbling script doesn't work with it. I'm on a mac so I don't know how to manually go in and change things, but is there a way to set the description for the book of patterns (mine is a pattern book).

I can probably update the script so you can enter the name of your book of patterns. I take it you interact with yours via "book"?

Tgo01
08-15-2014, 11:36 AM
Alright I uploaded another version of cobble that allows you to specify the name of your patterns book.

There might still be a problem because at one point the script checks to see if the book is opened by looking for the line about the cover being embossed when trying to read a pattern from the book.

What does it say when you try to read a pattern from your book when it's closed?

Mighty Nikkisaurus
08-15-2014, 11:51 AM
Alright I uploaded another version of cobble that allows you to specify the name of your patterns book.

There might still be a problem because at one point the script checks to see if the book is opened by looking for the line about the cover being embossed when trying to read a pattern from the book.

What does it say when you try to read a pattern from your book when it's closed?

Thanks I do interact with it as "book"

This is what happens when it's closed:

read book
The cover is embossed with block script that reads, "Catalog of Patterns".
>

When you flip it to find patterns though you still "flip pattern", though flip book works too

Tgo01
08-15-2014, 11:53 AM
Thanks I do interact with it as "book"

This is what happens when it's closed:

read book
The cover is embossed with block script that reads, "Catalog of Patterns".
>

When you flip it to find patterns though you still "flip pattern"

Awesome. Everything should still work fine then.

Mighty Nikkisaurus
08-15-2014, 12:34 PM
This is probably unrelated but it hung up I *think* because I forgot to wear my cobblesack item.. now it won't take me to my rented workshop?

Sorry for breaking the script, lol.


[go2: travel time: 0:00:00]
--- Lich: go2 has exited.
[cobble]>go door
>
The hyacinth-inlaid door opens easily as you pass through into your workshop.
[Hyacinth Workshop]
Solid and well-built, the áworktable† is made from oak and is durable enough to withstand any amount of abuse. There is a átool rack† containing all the necessary equipment to create superior footwear within easy reach of the table. Underneath the rack, a ásquare cask† is simply bursting with discarded items. Hanging on the back wall, a large piece of petrified thanot outlined with pieces of yellow hyacinth holds diagrams that can be used to obtain precise measurements for different sized feet. You also see a hyacinth-inlaid door and a sturdy shoe form.
Obvious exits: none
>
[cobble]>art skills
In the skill of forging - one handed blunt, you are an apprentice with 112 ranks.
In the skill of cobbling, you are a highly skilled laborer with 443 ranks.
>
[cobble]>look on form
There is nothing on there.
>
[cobble]>stow left
You can't stow something in itself.
>
[cobble]>look at skin on worktable
I could not find what you were referring to.
>
[cobble]>stow left
You can't stow something in itself.
>
[cobble]>tap my skin in my pack
What were you referring to?
>
[cobble]>go door
[The Cobbler's Cobby, Hallway]
Mounted on the wall, greeting all that walk this corridor, is the gruesome sight of a stuffed Agresh troll áwarrior head†. Steel grey paint runs down the warrior's face in equal strips, and its mouth is frozen in a rictus snarl. The shaggy hair of the beast moves ever so slightly on a current of air from an open window, while its glass eyes appear to track your every move. You also see a hyacinth-inlaid door with a large wooden sign on it and an agate-inlaid door with a large wooden sign on it.
Obvious exits: northeast, west
>
--- Lich: go2 active.
[go2: ETA: 0:00:00 (2 rooms to move through)]
[go2]>northeast
[go2]>west
[The Cobbler's Cobby, Atrium]
Plum trees thrive in the middle of the central hall. Freely growing Imaera's lace and other creeping vines obscures most of the walls of the airy chamber. Individual beds of various plants and bushes are scattered throughout, creating a tranquil setting. You also see the registrar's office and the foreman's office.
Obvious exits: north, southeast, south, southwest, west
>
[Cobbler's Cobby, Storage Room]
Bound by thick cords, spotted leopard pelts lay in a heap outside of an áoverturned coffer†. On a ácountertop† in the rear of the room, clear ájars† are filled with an assortment of various-sized brass studs. Displayed on the opposite end of the counter are shiny buckles that can be used to adorn almost any style boots or shoes. You also see an attentive warehouse manager and a narrow flight of steps.
Obvious exits: east
>
[go2: travel time: 0:00:00]
--- Lich: go2 has exited.
[cobble]>order 1
You ask about the price of a tanned goat skin.

Putting on a charming smile, you engage the old shopkeeper in a negotiation on the price. "You will drive me to ruin!" she exclaims upon hearing your first offer, but she eventually comes down some on her price, to 498 silvers.

You may order a QUANTITY of this item, ORDER something else, or BUY this item.
>
[cobble]>buy

The old shopkeeper exclaims, "Sold for 498 silvers!"
The old shopkeeper takes the 498 silvers you offer in payment.
She hands you a tanned goat skin and says, "Here's your purchase. Thanks for your patronage."
>
[cobble]>put my skin in my pack
You put a tanned goat skin in your barkcloth pack.
>
[cobble]>stow left
You can't stow something in itself.
>
--- Lich: go2 active.
--- Lich: go2 has exited.
[cobble]>go hyacinth-inlaid door
Where are you trying to go?
>
[cobble: Looks like you ran into a problem in go_to_workshop. Please run the script again and if you run into the same problem please copy this line and about the previous 20 game lines and send the information to the author.]
--- Lich: cobble has exited.

Tgo01
08-15-2014, 12:45 PM
Hmm...it's because it's trying to "go hyacinth-inlaid door", that's probably not how you're supposed to enter that door.

I think when I wrote the script I thought it would be cool if it remembered which door was yours so it didn't have to try each door every time until you found the one that was unlocked. Apparently that doesn't work for every door :p

Hmm...it's also setup to deal with rent status too.

Well until I figure out a better way of handling that how do you enter the particular door? Is there a way? Like "go hyacinth door"? Or is the only option like "go other door"?

Mighty Nikkisaurus
08-15-2014, 12:51 PM
Hmm...it's because it's trying to "go hyacinth-inlaid door", that's probably not how you're supposed to enter that door.

I think when I wrote the script I thought it would be cool if it remembered which door was yours so it didn't have to try each door every time until you found the one that was unlocked. Apparently that doesn't work for every door :p

Hmm...it's also setup to deal with rent status too.

Well until I figure out a better way of handling that how do you enter the particular door? Is there a way? Like "go hyacinth door"? Or is the only option like "go other door"?


>go hyacinth-inlaid door
The hyacinth-inlaid door opens easily as you pass through into your workshop.

So it's not the door, it just.. won't send me out of the foreman's office to my workshop.

Tgo01
08-15-2014, 12:53 PM
>go hyacinth-inlaid door
The hyacinth-inlaid door opens easily as you pass through into your workshop.

So it's not the door, it just.. won't send me out of the foreman's office to my workshop.

Ohhh...I missed that it never took you to the workshop room.

You on Teras by any chance? I think someone said go2 didn't work properly by taking them out of the foreman's office on Teras.

Err, nevermind. Script isn't even setup for Teras :p

Looks like it got stuck in the store room. Try going to the store room manually and using go2 to go someplace, like the bank. Does go2 just start and exit without moving like it did in the script?

Mighty Nikkisaurus
08-15-2014, 12:54 PM
Ohhh...I missed that it never took you to the workshop room.

You on Teras by any chance? I think someone said go2 didn't work properly by taking them out of the foreman's office on Teras.

Cysaegir! I'm going to try to re-install and use a different container (instead of a "pack" since that can get mixed up with package)

Tgo01
08-15-2014, 12:57 PM
Cysaegir! I'm going to try to re-install and use a different container (instead of a "pack" since that can get mixed up with package)

Sorry I edited my post.


Err, nevermind. Script isn't even setup for Teras :p

Looks like it got stuck in the store room. Try going to the store room manually and using go2 to go someplace, like the bank. Does go2 just start and exit without moving like it did in the script?

I seem to recall a problem with some of the workshops in Cysaegir. Going to find the old post about this script to see if I can find what.

In the meantime I know the script works perfectly in the Landing :p

Tgo01
08-15-2014, 12:59 PM
Alright so I do remember something funky going on with some workshops in Cysaegir but apparently I didn't write them down. I think some of them didn't have room numbers or they used the same room number or something.

I think the best bet might be to wait to see if you get a different room that works or head on over to the landing ;)

Mighty Nikkisaurus
08-15-2014, 01:06 PM
Alright so I do remember something funky going on with some workshops in Cysaegir but apparently I didn't write them down. I think some of them didn't have room numbers or they used the same room number or something.

I think the best bet might be to wait to see if you get a different room that works or head on over to the landing ;)

NEVEEER. I'll just do it by hand and hope I find a room that will make it work once my time goes up ;) Please let us know if/when it gets fixed if it does!

Tgo01
08-15-2014, 01:09 PM
NEVEEER. I'll just do it by hand and hope I find a room that will make it work once my time goes up ;) Please let us know if/when it gets fixed if it does!

What? You no like landing? :O

There's also a third town I'm pretty sure it works in. Or is it Cysaegir or nothing? :p

Mighty Nikkisaurus
08-15-2014, 01:34 PM
Zul Logoth is another option, but I like to be within range of Illistim in case of need of a cleric and because I'm selling a bunch of crap, and the cart ride makes that prohibitive!

Mighty Nikkisaurus
08-15-2014, 03:32 PM
Found another issue with the book vs patterns thing, so you can flip patterns but you can't look pattern:

[cobble]>get my book from my pelisse
You remove a heavy tawny leather pattern book inset with intricate copper filigree from in your cotton pelisse.
>
[cobble]>read my pattern
>
You can't do that.
>
[cobble: Looks like you ran into a problem in get_correct_pattern. Please run the script again and if you run into the same problem please copy this line and about the previous 20 game lines and send the information to the author.]
--- Lich: cobble has exited.
read my patt
You can't do that.

>read my book
A tawny leather pattern book is open to the pattern for a pair of thonged sandals.
>

But like I said, you CAN still "flip pattern" to get to the page you need.

Tgo01
08-15-2014, 03:41 PM
Found another issue with the book vs patterns thing, so you can flip patterns but you can't look pattern:

[cobble]>get my book from my pelisse
You remove a heavy tawny leather pattern book inset with intricate copper filigree from in your cotton pelisse.
>
[cobble]>read my pattern
>
You can't do that.
>
[cobble: Looks like you ran into a problem in get_correct_pattern. Please run the script again and if you run into the same problem please copy this line and about the previous 20 game lines and send the information to the author.]
--- Lich: cobble has exited.
read my patt
You can't do that.

>read my book
A tawny leather pattern book is open to the pattern for a pair of thonged sandals.
>

But like I said, you CAN still "flip pattern" to get to the page you need.

I think I've fixed this in all instances where it would be a problem.

Mighty Nikkisaurus
08-15-2014, 03:48 PM
I feel like a jerk, sorry! I owe you a bunch of ice cream for being awesome! I did find this:

[cobble]>gaze pattern
What were you referring to?

Tgo01
08-15-2014, 03:50 PM
I feel like a jerk, sorry! I owe you a bunch of ice cream for being awesome:

[cobble]>gaze pattern
What were you referring to?

Hmm..okay it's been like a year since I did cobbling so...does one ever interact with just a pattern that's in your inventory?

Because some places I put "patterns" and I knew those were all referring to the book but some places I put "pattern" and I wasn't sure if there was an actual pattern we bought or if I meant the patterns book when I typed that.

I know you apparently gaze at a pattern when you buy them.

Tgo01
08-15-2014, 03:54 PM
Okay I changed that so it gazes at your cobblingbook setting...that was what it's supposed to do, right? :p

Or was it supposed to stay as pattern? :O

Mighty Nikkisaurus
08-15-2014, 04:01 PM
Hmm..okay it's been like a year since I did cobbling so...does one ever interact with just a pattern that's in your inventory?

Because some places I put "patterns" and I knew those were all referring to the book but some places I put "pattern" and I wasn't sure if there was an actual pattern we bought or if I meant the patterns book when I typed that.

I know you apparently gaze at a pattern when you buy them.

You only ever interact with the specific pattern while buying a pattern, otherwise it's whatever your book is called, a book of patterns or in my special snowflake case, pattern book.

Tgo01
08-15-2014, 04:02 PM
You only ever interact with the specific pattern while buying a pattern, otherwise it's whatever your book is called, a book of patterns or in my special snowflake case, pattern book.

Alright I think I got them all now. Let me know if you see any other issues where it's trying to interact with a pattern(s) when it's supposed to be interacting with your cobblingbook setting :p

Mighty Nikkisaurus
08-15-2014, 06:46 PM
You're the best! I had to go to dinner and then put the baby to bed, but I did get it to run through one time without any errors before all that :)

ROTOR
08-17-2014, 05:52 AM
Finally got the info you asked for about the Ta'Illistim rogue's guild. Two things to note which may or may not be a problem - the kitchen itself doesn't have a room number (4) and go2 does not take you into the guild as it doesn't recognize the entry door into the guild. You have to go2 13350 and then go gold door before using go2 inside the guild.

Training admin: 17883, Boucher
Guild master: 17886, Lydon
Kitchen: 17889 then ‘go kitchen’ (kitchen room is 4)
Tool rack: 17861
Mannequins: 17861
Dummies: 17862
Toolbench: 17881
Audience room: 188 (Dais)

Masters: 17864
Vigil
Ritchie
Colvin
Purkhiser

Dirt rooms
17840
17876
17877
17879
17878

Window rooms
17871
17872
17853
17860
17869

Flower rooms (wildflowers)
17871
17851
17855
17869
17870


Let me know if anything is missing.

Many thanks!

Methais
08-17-2014, 11:55 AM
How's the all inclusive RP script coming along? I need some RPAs for my warrior!

Jace Solo
08-17-2014, 12:05 PM
So now that you're playing a warrior, you gonna get to that script I mentioned?

Tgo01
08-17-2014, 02:03 PM
How's the all inclusive RP script coming along? I need some RPAs for my warrior!

I've been slacking on that script :(


So now that you're playing a warrior, you gonna get to that script I mentioned?

I don't have a warrior yet :p

Tgo01
08-17-2014, 02:10 PM
You have to go2 13350 and then go gold door before using go2 inside the guild.

Hmm...I can probably work around this. Can you use go2 to leave the guild?

ROTOR
08-17-2014, 02:25 PM
Yeah, once you're in there's no problem getting around inside or leaving.

Tgo01
08-17-2014, 02:39 PM
Yeah, once you're in there's no problem getting around inside or leaving.

Awesome. Uploaded a new version that should work. Let me know if there are any problems.

Also be sure to set the "do other guild tasks" setting to "no" or feel free to gather the information from the nearest guild so the script can move between the two guilds to do plant and window tasks faster :p

ROTOR
08-17-2014, 05:04 PM
getting this message:

--- Exception: undefined local variable or method `target_room' for main:Object
rogue:267:in `start_script'

Any ideas?

Tgo01
08-17-2014, 05:19 PM
getting this message:

--- Exception: undefined local variable or method `target_room' for main:Object
rogue:267:in `start_script'

Any ideas?

See if the version I just uploaded fixes this.

ROTOR
08-17-2014, 06:14 PM
Fixed the previous error. However, when starting the script in Ta'Illistim it wants to take me to the landing for reps.

Tgo01
08-17-2014, 06:30 PM
Fixed the previous error. However, when starting the script in Ta'Illistim it wants to take me to the landing for reps.

Hmm...weird. Next time you get an audience rep one try starting ;rogue while in the Ta'Illistim guild and see where it wants to take you then try starting it outside of the Ta'Illistim guild and see where it takes you.

Where were you when you tried it already?

Only thing I can think of is go2 for some reason thinks landing is closer if you're inside of the guild or you have some settings marked that would make Landing closer...like the platinum portals or something.

Cereal Killer
08-17-2014, 07:11 PM
The Ta'Illistim guild isn't linked to the rest of the map for some reason. If you want to use ;go2 to get to its rooms, you have to go through the gold door of the arboretum.

Tgo01
08-17-2014, 07:17 PM
The Ta'Illistim guild isn't linked to the rest of the map for some reason. If you want to use ;go2 to get to its rooms, you have to go through the gold door of the arboretum.

Hmm...that would explain the problem then.

ROTOR
08-18-2014, 11:12 AM
just tried this again from inside the guild and it works fine, although it does take you outside the guild to room 13350, through the gold door and then back into the guild. but hey, it works. now just to get the maps to connect so it works properly from outside the guild!

thanks for all the hard work Tgo01.

ROTOR
08-18-2014, 12:03 PM
updated my personal map database with mapmap and the script works flawlessly now. can actually probably take out the workaround going to room 13350 first. i've sent the map to tillmen so will see if I did it properly to update the database!

Tgo01
08-18-2014, 12:05 PM
updated my personal map database with mapmap and the script works flawlessly now. can actually probably take out the workaround going to room 13350 first. i've sent the map to tillmen so will see if I did it properly to update the database!

You can use go2 to get into the Illistim guild now from outside of it?

ROTOR
08-18-2014, 12:10 PM
You can use go2 to get into the Illistim guild now from outside of it?

I can personally. I've sent the map update to Tillmen so if I did it right, hopefully he'll update the general map database. But yes, it works for me now from outside the guild.

Also, just got this message going dirt reps for sweep for the first time:

[rogue]>get broom from rack
You pick out a wooden broom from a tool rack.
>
[rogue]>get bag from rack
You pick out a burlap bag from a tool rack.
>
--- Exception: undefined local variable or method `dirt_rooms' for main:Object
rogue:947:in `start_script'
--- Lich: rogue has exited.

Tgo01
08-18-2014, 12:13 PM
See if this update fixes the dirt problem.

ROTOR
08-18-2014, 12:16 PM
yep, that works now. great stuff. thanks.

Mighty Nikkisaurus
08-19-2014, 07:04 PM
So this is weird, I rented a workshop then tried to run ;cobble and it just ran me between the foreman office and the workshop (this is in Cysaegir). Any ideas??

Tgo01
08-19-2014, 07:08 PM
So this is weird, I rented a workshop then tried to run ;cobble and it just ran me between the foreman office and the workshop (this is in Cysaegir). Any ideas??

Hmm...since I'm too lazy to run to Cysaegir can you do something for me when you have a minute?

Can you go to each room that has workshops and enter this:

;eq echo "#{Room.current.id}"

And jot down the number it gives you (if it gives you one) and the workshop door names for that particular room?

Mighty Nikkisaurus
08-19-2014, 07:11 PM
Hmm...since I'm too lazy to run to Cysaegir can you do something for me when you have a minute?

Can you go to each room that has workshops and enter this:

;eq echo "#{Room.current.id}"

And jot down the number it gives you (if it gives you one) and the workshop door names for that particular room?
I'll do it right now! just a moment.

Mighty Nikkisaurus
08-19-2014, 07:17 PM
[exec1: 4699]
You also see a hyacinth-inlaid door and an agate-inlaid door.

[exec1: 4700]
You also see a jacinth-inlaid door and an opal-inlaid door.

[exec1: 4701]
You also see a ruby-inlaid door and a despanal-inlaid door.

[exec1: 4697]
You also see a diamond-inlaid door.

[exec1: 4698]
You also see a feystone-inlaid door and a sapphire-inlaid door.

[exec1: 17173]
You also see a rosespar-inlaid door and a heliodor-inlaid door.

Tgo01
08-19-2014, 07:21 PM
Hmm...okay those room numbers and door names all match what I have in the script...

Do you happen to know which workshop you rented when you ran into this problem?

Also try asking the foreman about renting a workshop when you already have a workshop rented and copy and paste over what he says.

Mighty Nikkisaurus
08-19-2014, 07:28 PM
The hyacinth one, which sometimes makes other hinky problems in the script where it won't take me through the door and I have to wait for the rental to expire before running the script again. I haven't been able to detect a rhyme or reason why it happens.


>ask foreman about rental
"Excellent, excellent! Delighted that you asked," the foreman says, crossing over towards a ledgerbook. "Let me see if I have anything for you," he says, humming softly as he scans the recent entries there. Quickly, he looks up, an amused chuckle escaping his lips. "Ah, having the little joke on me, Arulisse? I see you already have a workshop here."

Tgo01
08-19-2014, 07:32 PM
Mmm hmm.
Mmm hmm.

Have you exited the game since this happened?

If not try typing this:

;eq echo "#$my_workshop_room"

And see what it says.

If you have already exited the game then try running the script again first and let it take you to the workshop first before doing the above.

Also what does it say when you walk through the door?

Something like...

The hyacinth-inalid door opens easily as you pass through into your workshop

???

Mighty Nikkisaurus
08-19-2014, 07:38 PM
Ah, it had targeted the agate-inlaid door for me!

[cobble]>go door
The hyacinth-inlaid door opens easily as you pass through into your workshop.

Thank you for your ongoing help, the script is amazing.

Mighty Nikkisaurus
08-19-2014, 07:40 PM
Ok, and this is the other issue with this door:

>
--- Lich: go2 active.
--- Lich: go2 has exited.
[cobble]>go hyacinth-inlaid door
Where are you trying to go?
>
You hear the faint thoughts of [LNet]-GSIV:Endraig echo in your mind:
"anyone able to open the gate to graveyard?"
[cobble: Looks like you ran into a problem in go_to_workshop. Please run the script again and if you run into the same problem please copy this line and about the previous 20 game lines and send the information to the author.]
--- Lich: cobble has exited.

It won't leave the foreman's office before trying to go into the door.

Tgo01
08-19-2014, 07:41 PM
So ;eq echo "#$my_workshop_room" showed agate-inlaid even though your workshop is hyacinth-inalid?

Try using ;go2 from the foreman's office to the workshop room number and see if that will take you there.

Mighty Nikkisaurus
08-19-2014, 07:47 PM
;whereami
--- Lich: whereami active.
Current room id:
--- Lich: whereami has exited.

Unless you mean the door the room is in?

Mighty Nikkisaurus
08-19-2014, 07:49 PM
I tried to go2 to the room the door is in when it hung up in the foreman's office, the script still stalled out because the go door order comes right after the blank go2.

Tgo01
08-19-2014, 07:49 PM
;whereami
--- Lich: whereami active.
Current room id:
--- Lich: whereami has exited.

Unless you mean the door the room is in?

Yeah sorry, the room where the door is in. The workshops themselves don't have room numbers. :p

Tgo01
08-19-2014, 07:50 PM
I tried to go2 to the room the door is in when it hung up in the foreman's office, the script still stalled out because the go door order comes right after the blank go2.

The hyacinth-inalid workshop is in room number 4699. Doing ;go2 4699 from the foreman's office didn't do anything?

Mighty Nikkisaurus
08-19-2014, 08:01 PM
The hyacinth-inalid workshop is in room number 4699. Doing ;go2 4699 from the foreman's office didn't do anything?

Nope.

Tgo01
08-19-2014, 08:04 PM
Nope.

Hmm...so even just manually running ;go2 4699 from the foreman's office causes go2 to just exit and not take you anywhere?

How do you leave the foreman's office? Like go door or something?

Once you leave the foreman's office does running ;go2 4699 from that room take you to the correct room?

Mighty Nikkisaurus
08-19-2014, 08:08 PM
If I type go2 4699 it will take me from the foreman's office to the room with the door, it just won't "pick up" from there in the ;cobble script and will still be like "there was an issue with go_to_workshop, try running this script again".

Leaving the foreman's office you go out and then southwest, so it's only 2 rooms. The issue is that after I ask the foreman about rental in the ;cobble script, go2 activates and then exits out without actually taking me anywhere, and then the next like is ;go hyacinth door but as I'm still in the office that's obviously pre-mature. I hope I'm explaining this correctly.

Tgo01
08-19-2014, 08:24 PM
I understand what you're saying :D

I just thought you said ;go2 wasn't leaving the foreman's office at all, even if you used it manually.

Just trying to figure out what's going on because as far as I can tell it should be working.

Okay so I just uploaded a new version that hopefully fixes the problem you're having...

But just in case it doesn't there is some information I need from the script so I've included a message in the script that should give me the information I need. You should be able to recognize the message so just copy and paste it on over when you see it.

Downloading the new version won't mess with your settings.

Mighty Nikkisaurus
08-19-2014, 08:30 PM
[cobble: Hey Mighty Nikkisaurus. It's me. Jesus. Here is all that you need to know: my_workshop_number is and my_workshop_room is hyacinth-inlaid. Pass it on!]

Haha

Tgo01
08-19-2014, 08:41 PM
Okay that's very odd. For some reason it's not updating the variable my_workshop_number even though the variable my_workshop_room is being updated and the only way to see that message is after my_workshop_number should have been updated :/

I uploaded a new version that should work around that now. I've also removed Jesus' message to you :p

Let me know if you're still having trouble.

Mighty Nikkisaurus
08-19-2014, 08:47 PM
I logged out and logged back in and I *think* it's all ok now. Thank you!!

Mighty Nikkisaurus
08-19-2014, 08:51 PM
>
--- Lich: go2 active.
--- Lich: go2 has exited.
[cobble]>go hyacinth-inlaid door
Where are you trying to go?
>
[cobble: Looks like you ran into a problem in go_to_workshop. Please run the script again and if you run into the same problem please copy this line and about the previous 20 game lines and send the information to the author.]

Damn, it's still doing it. I have no clue what the issue is!

Mighty Nikkisaurus
08-19-2014, 08:53 PM
It also missed a JOIN command:

[cobble]>get sandals from form
You remove a pair of unfinished sandals from on a sturdy shoe form.
>
[cobble]>rub my sandals
You rub the unfinished sandals in your hand.
>
[cobble]>rub my sandals
You rub the unfinished sandals in your hand.
>
[cobble]>put my sandals in cask
As you place a pair of unfinished sandals into a square cask you feel pleased with yourself at having cleaned up the surrounding area.
>

Tgo01
08-19-2014, 09:07 PM
When I get home I'm gonna head on down there and see what's going on :p

Cuin
08-21-2014, 03:20 PM
Heya,

Didn't I read someplace that you wrote ;capacity as well? It woks great except for this one cloak I just found "You estimate that a green serpent skin cloak can store a particularly large amount (?-? pounds) with enough space for any number of items.".

Like I said it works great for everything else, so if you wrote it great job ... if not then nevermind :p

Tgo01
08-21-2014, 10:40 PM
Heya,

Didn't I read someplace that you wrote ;capacity as well? It woks great except for this one cloak I just found "You estimate that a green serpent skin cloak can store a particularly large amount (?-? pounds) with enough space for any number of items.".

Like I said it works great for everything else, so if you wrote it great job ... if not then nevermind :p

Yeah I wrote that script, glad you like it :D

I got all of the numbers from a page on Krakiipedia...which I can't seem to find at the moment...

Some of the sizes hadn't been tested at the time I wrote it and I'm not sure if there has been any updates to it or not.

You should figure out how much that cloak can carry so I can put that in as an estimate for now.

Tgo01
08-21-2014, 10:47 PM
Alright so I uploaded a couple of scripts to the repo:

;autoforge
;autohelperforge

;autoforge will automatically max out the forging - crafting and forging - one handed edged skill for you. Just set your forgingsack setting and the script will do the rest. It will check to see if you're wearing an apron and if it not it will check for one in your forgingsack and if it can't find one it will buy one. It will then check to see if you have a forging hammer and if not it will make one. After that it will keep making bronze daggers until you either run out of silver in the bank or you max out both skills. It's been tested in Icemule but it should work in any town that has a forging workshop.

;autohelperforge is a companion script for ;autoforge. It's a blatant rip off of Tillmen's ;scriptcheck script but I've modified it slightly for this script. It's an optional script.

If you have ;autohelperforge downloaded and you start ;autoforge as ;autoforge watch then it will automatically start and stop ;autohelperforge when needed.

;autohelperforge sends all game lines to the familiar window. Once a game line has been seen 3 times it no longer sends that game line to the familiar window. Any game line that has been seen less than 3 times will be echoed to the familiar window and a message in both the game window and the familiar window will be displayed stating it's an unrecognized game line.

The idea is to highlight the unrecognized game line warning then let the script run for a while, eventually it will have seen most/all of the game lines associated with forging so whenever you see the message it could be a GM doing a script check.

You could add a sound to the unrecognized game line warning to make it even more obvious of a possible script check.

I'm not guaranteeing this will work flawlessly, although it's been working for me thus far, nor am I advocating afk scripting. This is just so you help make sure you don't miss a GM script check amongst all the scroll.

Cuin
08-21-2014, 11:23 PM
Yeah I wrote that script, glad you like it :D

I got all of the numbers from a page on Krakiipedia...which I can't seem to find at the moment...

Some of the sizes hadn't been tested at the time I wrote it and I'm not sure if there has been any updates to it or not.

You should figure out how much that cloak can carry so I can put that in as an estimate for now.

Ahh I see, didn't know how the script worked. Next time I'm on I'll start filling it up and get the numbers for ya.

EDIT: Or Allereli can come along with the answer and stop me from buying a bunch of junk to fill up my cloak so I can see how much it holds :D

Allereli
08-21-2014, 11:26 PM
Yeah I wrote that script, glad you like it :D

I got all of the numbers from a page on Krakiipedia...which I can't seem to find at the moment...

Some of the sizes hadn't been tested at the time I wrote it and I'm not sure if there has been any updates to it or not.

You should figure out how much that cloak can carry so I can put that in as an estimate for now.

http://www.krakiipedia.org/wiki/Inspect

Tgo01
08-21-2014, 11:28 PM
http://www.krakiipedia.org/wiki/Inspect

Well it looks like it's been updated a lot since then. Going to update the script.

Andddddd....the script has been updated.

Thank ya.

Tgo01
11-17-2014, 08:06 PM
I uploaded warrior to the repo.

Warrior is similar to my other script; rogue.

Warrior automates warrior guild tasks. Since my warrior just recently joined the guild it doesn't do a whole lot at the moment but I'll be updating the script as my warrior tackles more guild tasks.

Currently I'm working my way through berserk with batter barriers as my secondary skill.

Right now the script automates berserk sauna tasks, berserk ice tub and berserk critters.

It also does batter barrier boards and ice blocks.

The script will also do the first task with masters in berserk and batter barriers. The script will also join the warrior guild if you're not already a member.

Currently only works in Icemule. If you want another town added let me know so I can tell you what information I need you to gather to make it work in other cities.

Tgo01
11-17-2014, 10:32 PM
Uploaded a new version that fixed a bug with sauna tasks.

Tgo01
11-18-2014, 10:34 PM
Berserk dark chamber tasks are now in the script.

Tgo01
11-18-2014, 11:34 PM
Berserk dark chamber tasks are now in the script.

Spoke too soon. Didn't realize there were 3 different tasks for the exact same task.

Uploaded a new version that should work properly with all dark chamber tasks.

Tgo01
11-20-2014, 04:55 PM
;warrior now breaks branches and crates as well for battering tasks.

Tgo01
11-26-2014, 01:18 AM
Finally got my respond to verbs script all finished.

Just bare bones for now as it just does the same verbs in response to everything, but it reacts to almost every verb. Just have to add common things people might say like "Thank you" or "How are you" and get my roleplaying script finished and my characters just might become walking and talking NPCs. Woot!

Dreaven waves.
>
[verbs]>say :: Dreaven Careful out there, I think the critters are swarming.
Speaking quietly to Dreaven, you say, "Careful out there, I think the critters are swarming."

Dreaven turns to you and cheers!
>
[verbs]>whisper Dreaven Hi.
You quietly whisper to Dreaven, "Hi."

Dreaven leans over and licks your cheek sloppily!
>
[verbs]>act Rolls Pins all over the place.
(Ryjin Rolls Pins all over the place.)

Dreaven sticks out his tongue and lets loose with a loud, "Thbtbtbtbt" from his lips!

[verbs]>whisper Dreaven Hi.
You quietly whisper to Dreaven, "Hi."

Changeling
11-26-2014, 08:22 PM
I'm sad that in the future players will miss out on the real crazy Dreaven. :)

Also you need a script to tally all those silvers you get when Annorax raises you so you know when you've hit the 1M mark.

Tgo01
11-26-2014, 09:10 PM
I'm sad that in the future players will miss out on the real crazy Dreaven. :)

But it'll be the same crazy Dreaven, just all automated now ;)


Also you need a script to tally all those silvers you get when Annorax raises you so you know when you've hit the 1M mark.

Good point. Think I'm at like 12 silvers. Only another 999,988 more deaths to go.

Methais
11-26-2014, 09:35 PM
What's the deal with rolls pins all over the place? Are you bowling or something?

Tgo01
11-26-2014, 09:53 PM
What's the deal with rolls pins all over the place? Are you bowling or something?

Yes.

You have said before that you wanted a script that would randomly do "act RPs all over the place." so I did the next best thing I could think of that wouldn't be OOC.

RPs all over the place...Rolls Pins all over the place...

It's funny! Laugh damn you!

Methais
11-26-2014, 11:25 PM
Yes.

You have said before that you wanted a script that would randomly do "act RPs all over the place." so I did the next best thing I could think of that wouldn't be OOC.

RPs all over the place...Rolls Pins all over the place...

It's funny! Laugh damn you!

Everything is so much more clear now.

http://www.reactionface.info/sites/default/files/images/1310498559979.png

RangerZ
11-28-2014, 06:39 PM
For Shattered,
In Teras for warrior to work, are these what you need?:

npc_names = Harmbab|Cavour|Urgrok|Electra|Havelok
guild_master_rooms = '17282'
training_administrator_rooms = '17257'
master_rooms = '17287'
sauna_rooms = '17271'
tub_rooms = '17267'
board_rooms = '17280'
ice_rooms = '17267'
branch_rooms = '17274'
boxes_rooms = '17280'
dark_chamber_rooms = '17259'

I don't see any crates or sheet metal.

Tgo01
01-04-2015, 01:38 AM
For Shattered,
In Teras for warrior to work, are these what you need?:

npc_names = Harmbab|Cavour|Urgrok|Electra|Havelok
guild_master_rooms = '17282'
training_administrator_rooms = '17257'
master_rooms = '17287'
sauna_rooms = '17271'
tub_rooms = '17267'
board_rooms = '17280'
ice_rooms = '17267'
branch_rooms = '17274'
boxes_rooms = '17280'
dark_chamber_rooms = '17259'

I don't see any crates or sheet metal.

Sorry I seemed to have missed this post when you originally posted it. Did you still need help with this?

Also I uploaded a new version of ;warrior. My warrior has successfully managed to afk script his way to mastering berserk with said script.

Tgo01
01-06-2015, 01:36 AM
Uploaded a new version of tpick. Bards will now automatically loresing to boxes to see the difficulty on the box so they can use the appropriate lockpick for the lock, similar to how rogues can do the same with calipers. This still needs to be tested at the moment since my bard doesn't pick but I'm pretty sure it should work.

If you're a bard and you don't want to loresing to boxes and you just want to use a vaalin lockpick like the script used to do then you need to use the v variable, for example ;tpick v, ;tpick ground v

Etc.

If you're a bard and you're used to not having to use the v variable and you don't like this change well...tough :p

Tgo01
01-08-2015, 09:21 PM
Another small update to ;tpick: script now knows how many boxes and of which kind you have in your open containers so it no longer tries to grab a strongbox when you have no strongbox.

Not a huge update but that always kind of bugged me. Plus it could save .239 seconds per false box grab attempt! Efficiency, baby!

Tgo01
01-09-2015, 11:09 PM
Do you forget to register your important items? Can you not be bothered to go through your entire inventory to figure out what is important enough to register and what isn't? Do you want to make sure you don't lose that special moldy bone of yours?

Well ;register-all is the script for you!

This script will automatically register everything you are wearing and everything in your open containers, it will even put back the items in the containers they were originally in! The script will not attempt to register something that has already been registered so feel free to run it every once in a while without worrying about it re-registering your whole 300 item inventory!

Allereli
01-10-2015, 01:38 PM
http://forums.play.net/forums/GemStone%20IV/Game%20Design%20Discussions/Items%20and%20Inventory/view/1474

I'd like to take a moment to remind everyone what registering does, and why it's important. When you REGISTER an item, it creates a snapshot of that item at that time. It doesn't offer any tracking, it doesn't create a paper trail to where the item is. But it gives us an idea of how to rebuild the item, should we be able to figure out what happened to it. Without registering, staff cannot rebuild an item if it comes down to needing that. There are a slew of reasons why we may need to review a registration of an item. It's not always if you lost your item. So using the REGISTER command is very important. It doesn't hurt to register something you've already registered, especially if the properties may have changed (you should definitely update a registered entry when something changes).

The casual player tends to have about 30 to 50 registrations over a character's lifetime. Someone who goes to a lot of merchant events, or gets a lot of merchant work, usually have about 200 to 300 registered items over the character's lifetime. Someone who is very thorough with their registering might have 500 or so entries per registration category (we have a few, not many). These are good, healthy numbers. However, something seems to have changed recently. I'm not sure if someone has built a function to automatically register items. But it seems people are registering, well, everything. Someone registered what I believe was an alchemy mule character. Every single alchemy reagent and gem. Several times.

So that brings me to the next subject. Erroneous registering. When we only have several dozen registration logs to review, we typically can find what we're looking for pretty quickly. But when there are thousands, the chance for human error increases quite a bit. And it can take us a long time to review things. Unfortunately, our system requires us to go through only a set number of entries at a time. This could definitely increase the likelihood that we can't do anything about your given situation.

Register responsibility in 2015! Friends don't let friends loop through inventory! Try not to read between the lines. Registering is needed, but in moderation.

~Wyrom, APM

Gelston
01-10-2015, 01:44 PM
http://forums.play.net/forums/GemStone%20IV/Game%20Design%20Discussions/Items%20and%20Inventory/view/1474

I'd like to take a moment to remind everyone what registering does, and why it's important. When you REGISTER an item, it creates a snapshot of that item at that time. It doesn't offer any tracking, it doesn't create a paper trail to where the item is. But it gives us an idea of how to rebuild the item, should we be able to figure out what happened to it. Without registering, staff cannot rebuild an item if it comes down to needing that. There are a slew of reasons why we may need to review a registration of an item. It's not always if you lost your item. So using the REGISTER command is very important. It doesn't hurt to register something you've already registered, especially if the properties may have changed (you should definitely update a registered entry when something changes).

The casual player tends to have about 30 to 50 registrations over a character's lifetime. Someone who goes to a lot of merchant events, or gets a lot of merchant work, usually have about 200 to 300 registered items over the character's lifetime. Someone who is very thorough with their registering might have 500 or so entries per registration category (we have a few, not many). These are good, healthy numbers. However, something seems to have changed recently. I'm not sure if someone has built a function to automatically register items. But it seems people are registering, well, everything. Someone registered what I believe was an alchemy mule character. Every single alchemy reagent and gem. Several times.

So that brings me to the next subject. Erroneous registering. When we only have several dozen registration logs to review, we typically can find what we're looking for pretty quickly. But when there are thousands, the chance for human error increases quite a bit. And it can take us a long time to review things. Unfortunately, our system requires us to go through only a set number of entries at a time. This could definitely increase the likelihood that we can't do anything about your given situation.

Register responsibility in 2015! Friends don't let friends loop through inventory! Try not to read between the lines. Registering is needed, but in moderation.

~Wyrom, APM

rofl

Androidpk
01-10-2015, 01:50 PM
Who the fuck registers reagents and gems!?! Tgo, stop trying to break the game.

Gelston
01-10-2015, 01:50 PM
Who the fuck registers reagents and gems!?! Tgo, stop trying to break the game.

It is revenge for healing being nerfed.

Whirlin
01-10-2015, 01:54 PM
And this is why they follow Tgo01 around with a nerfbat.

Tgo01
01-10-2015, 01:56 PM
http://forums.play.net/forums/GemStone%20IV/Game%20Design%20Discussions/Items%20and%20Inventory/view/1474

I'd like to take a moment to remind everyone what registering does, and why it's important. When you REGISTER an item, it creates a snapshot of that item at that time. It doesn't offer any tracking, it doesn't create a paper trail to where the item is. But it gives us an idea of how to rebuild the item, should we be able to figure out what happened to it. Without registering, staff cannot rebuild an item if it comes down to needing that. There are a slew of reasons why we may need to review a registration of an item. It's not always if you lost your item. So using the REGISTER command is very important. It doesn't hurt to register something you've already registered, especially if the properties may have changed (you should definitely update a registered entry when something changes).

The casual player tends to have about 30 to 50 registrations over a character's lifetime. Someone who goes to a lot of merchant events, or gets a lot of merchant work, usually have about 200 to 300 registered items over the character's lifetime. Someone who is very thorough with their registering might have 500 or so entries per registration category (we have a few, not many). These are good, healthy numbers. However, something seems to have changed recently. I'm not sure if someone has built a function to automatically register items. But it seems people are registering, well, everything. Someone registered what I believe was an alchemy mule character. Every single alchemy reagent and gem. Several times.

So that brings me to the next subject. Erroneous registering. When we only have several dozen registration logs to review, we typically can find what we're looking for pretty quickly. But when there are thousands, the chance for human error increases quite a bit. And it can take us a long time to review things. Unfortunately, our system requires us to go through only a set number of entries at a time. This could definitely increase the likelihood that we can't do anything about your given situation.

Register responsibility in 2015! Friends don't let friends loop through inventory! Try not to read between the lines. Registering is needed, but in moderation.

~Wyrom, APM


I believe a script was written to register everything and uploaded to the repo.

That's hilarious but the person they are referring to wasn't me and this is not due to my script. When testing this script all I had it do was remove/get and wear/stow the items to make sure it was working properly. Once I got it working properly I tested it once with it actually registering stuff and even then it was just like 15 items, most of which I actually wanted registered and like 6 gems and white flasks and shit.

Also the script was uploaded yesterday and so far has zero downloads.

But I didn't even think about items needing to be re-registered if something changed...hmm...I'll have to fiddle with the script.

Tgo01
01-10-2015, 01:56 PM
It is revenge for healing being nerfed.

:D


Who the fuck registers reagents and gems!?! Tgo, stop trying to break the game.

:(


And this is why they follow Tgo01 around with a nerfbat.

:(

Tgo01
01-10-2015, 05:22 PM
Updated ;register-all again!

Typing ";register-all" will only register items that haven't already been registered and will not register things like gems and alchemy components.
Typing ";register-all all" will register every worn item and items in open containers, even things like gems and items that have already been registered. Should only be used if you're sure you want to register everything.
Typing ";register-all reg" will register everything that has already been registered. Useful for when you just want to make sure your currently registered items are up to date in case their properties have changed.

I haven't tested it extensively but I've tested it enough that it should ignore just about every common item like gems and junk and alchemy components, unless you use the "all" option that is.

If the script thinks an item is an item it should ignore but you don't want it to ignore it you can always manually register it then use the ";register-all reg" feature in the future to keep the item updated.

Gelston
01-10-2015, 05:31 PM
Just call it ;breakgs and be done with it.

Tgo01
01-10-2015, 05:33 PM
Just call it ;breakgs and be done with it.

I have a script in the works that is really going to break GS :O

Gelston
01-10-2015, 05:35 PM
I have a script in the works that is really going to break GS :O

EXPLAIN THIS SCRIPT. I bet it ends up being a segway.

Tgo01
01-10-2015, 05:41 PM
EXPLAIN THIS SCRIPT. I bet it ends up being a segway.

You want me to end up like Jimi Heselden? :O

Gelston
01-10-2015, 05:45 PM
You want me to end up like Jimi Heselden? :O

Riding a segway off a liff instead of simple stepping off before it goes over the edge? Maybe. Maybe not. Depends on your script.

I was more referring to the inventor who said he had just invented the best object in the world that was going to change mankind... And then revealed the Segway.

Tgo01
01-10-2015, 05:47 PM
Riding a segway off a liff instead of simple stepping off before it goes over the edge? Maybe. Maybe not. Depends on your script.

I was more referring to the inventor who said he had just invented the best object in the world that was going to change mankind... And then revealed the Segway.

I can do both!

Gelston
01-10-2015, 05:47 PM
I can do both!

Stop trying to stonewall me here. EXPLAIN YOUR GS DESTROYING SCRIPT OF DOOM. Or else.

Tgo01
01-10-2015, 05:51 PM
Stop trying to stonewall me here. EXPLAIN YOUR GS DESTROYING SCRIPT OF DOOM. Or else.

:scared2:

Gelston
01-10-2015, 05:53 PM
:scared2:

http://i129.photobucket.com/albums/p217/zwvirtual/motivator299698fe39379c2450d190b56fe2480393274330. jpg

Whirlin
01-10-2015, 07:27 PM
To be fair... Thondalar and I crashed Gemstone when we became Paupers officers. We just used House Roster... and since Paupers has like, a billion members... They disabled that function shortly thereafter.

Tgo01
01-12-2015, 07:31 PM
To be fair... Thondalar and I crashed Gemstone when we became Paupers officers. We just used House Roster... and since Paupers has like, a billion members... They disabled that function shortly thereafter.

You're the reason the game crashed that night!

Also I updated register-all with marking powers!



This script will register everything you are wearing and everything in your open containers. Script will not register something that has already been registered.

Typing ";register-all" will only register items that haven't already been registered and will not register things like gems and alchemy components.
Typing ";register-all all" will register every worn item and items in open containers, even things like gems and items that have already been registered. Should only be used if you're sure you want to register everything.
Typing ";register-all reg" will register everything that has already been registered. Useful for when you just want to make sure your currently registered items are up to date in case their properties have changed.

Adding the word "mark" after any of the above command lines will also mark whatever is registered.

Example:

Typing ";register-all reg mark" will register everything that has already been registered and mark the same items as well.

Tgo01
01-13-2015, 03:24 AM
Yay! ;warrior now handles critter box battering tasks.

Pretty sure it handles all batter tasks except the metal stage door ones now.

Tgo01
01-14-2015, 07:02 PM
All the recent hubbub about registering and my register-all script made me want to test out my own script again and I noticed a huge and glaring bug that I somehow missed before.

I fixed the bug and tested the script on multiple characters and the script should now work as advertised.

Proof!

Here's the default setting in action:



>--- Lich: register-all active.
[register-all]>inv full
You are currently wearing and carrying:
a hooded black silk stalking cloak (registered) (marked)
a steel-linked black vultite spikestar with a lacquered white oak handle (registered)
a lacquered orase greatshield (registered) (marked)
an ivory-hilted tapered iron bodkin (registered) (marked)
a bone cudgel (registered) (marked)
an elegant black silk gem pouch (registered) (marked)
a medium grey pearl
some golden rhimar-bloom
a medium pink pearl
a medium white pearl
a piece of green jade
a black silk climbing pack (registered) (marked)
some fine opaline dust (registered) (marked)
an oaken wand
some vultite scalemail (registered) (marked)

(15 items displayed.)

>
[register-all: All done.]
--- Lich: register-all has exited.


It didn't register the gems or wand or anything that had already been registered. Like a good little script.

A tougher challenge for the register-all script!



[register-all]>inv full
You are currently wearing and carrying:
a hooded black silk stalking cloak (registered) (marked)
a cudgel (registered) (marked)
an ice pick (registered) (marked)
a platinum fang
a green sapphire
a fiery ruby talon
an aquamarine gem
an uncut diamond
a green garnet
a violet sapphire
a metallic black pearl
a fiery ruby talon
a pink sapphire
a star sapphire
a large black pearl
a star ruby
an uncut emerald
a tiny blue and green spherine
an uncut diamond
a tiny white pearl
a tiny red and blue spherine
an uncut emerald
a copper fang
a green sapphire
a green sapphire
a yellow sapphire
a barbed cerebralite tentacle
a tiny white and black spherine
a jagged rift crawler tooth
a small black pearl
a jagged rift crawler tooth
a jagged rift crawler tooth
a jagged rift crawler tooth
a yellow sapphire
a small black pearl
a barbed cerebralite tentacle
a barbed cerebralite tentacle
a jagged rift crawler tooth
a jagged rift crawler tooth
a barbed cerebralite tentacle
a pale violet riftstone
a translucent spidersilk satchel (registered) (marked)
a radiant opalescent thunderstone
an uncut diamond
a sparkling emerald talon
an uncut diamond
an uncut diamond
a smoky grey thunderstone
a blue sapphire
a mithril fang
a deep blue thunderstone
a mithril fang
a mithril fang
a mithril fang
a violet sapphire
a platinum fang
a glistening onyx talon
a small grey pearl
an aquamarine gem
a glistening onyx talon
a large black pearl
an uncut diamond
a star sapphire
an uncut emerald
a blue star-shaped riftshard
a yellow sapphire
a sanguine wyrm's-eye garnet
a glistening onyx talon
a pink sapphire
a large pink pearl
an aquamarine gem
a small black pearl
a star sapphire
an uncut emerald
a deep blue thunderstone
a platinum fang
a pink sapphire
a star ruby
an uncut emerald
a green sapphire
a radiant opalescent thunderstone
a green sapphire
a small black pearl
a green garnet
a sparkling emerald talon
a deep blue thunderstone
a green sapphire
a star ruby
an uncut diamond
an iron fang
a copper fang
a star ruby
an iron fang
an uncut diamond
a star ruby
a sparkling emerald talon
a sanguine wyrm's-eye garnet
some vultite augmented chain (registered) (marked)
a black silk climbing pack (registered)
some fine opaline dust (registered)
a white flask
a barbed cerebralite tentacle

(102 items displayed.)

>
[register-all: All done.]
--- Lich: register-all has exited.

Tgo01
01-15-2015, 06:33 PM
Updated tpick with some exciting features! Well, exciting to me anyways.

You can now set your locksmith's container in the setup menu. You know the thing where your cotton balls and lumps of putty are found.

Upon starting the script it will now tell you how many cotton balls, putty and vials of acid you have in your locksmith's container. Useful to help remind you when you need to buy more of this shit.



[tpick: Putty remaining: 100]
[tpick: Cotton balls remaining: 100]
[tpick: Vials of acid remaining: 9]


A new command line option:

;tpick buy

Starting the script this way will have the script withdraw silvers from the bank then run to the nearest locksmith (assuming your town's locksmith has been tagged as "locksmith" in narost) and buy locksmith's containers to bundle with/fill your current locksmith container up to 100 each of cotton balls and putty. The script will keep your current locksmith's container even if it buys another locksmith's container of the same kind so your vials of acid are safe.

Script will now exit if you attempt to disarm a box that requires putty and you are out of putty. Before the script would keep looping trying to disarm the box.

There is now also an option in the setup menu to have the script automatically bundle vials into your locksmith's container whenever you get one from a box while disarming. Script will not attempt to bundle vial into your locksmith's container if you already have the max of 10 vials in your locksmith's container.

I haven't tested these new features extensively but I've tested them enough that they should work.

Let me know if you run into any bugs.

Aeronal
01-18-2015, 10:14 AM
great tpick change

if i may, here are 4 more suggestions that i've edited in to your script- maybe others might enjoy as well;

1) a toggle for whether we want to keep our caliper/keyring/wedge containers open or shut them. I personally don't see the point in keeping my wedges calipers and lockpicks in a closed container, as they're not stealable and i dont store them with/in stealable things.

2) get my calipers <-- should suffice. getting them from a specific place only makes the script get pissed off if they accidentally got stowed when launching tpick, or somehow wound up somewhere else.

3) picking for others, ;tp ready cancels offers--- which is a bit "dense." Yeah it's great to say "ready" or what have you THEN have people offer you their stuff- but i've edited it so that if someone happens to offer me a box and then I ;tp that it doesnt cancel the offer they just made and make them re-do it. I think long-gone are the days of the east tower with people trying to jump the queue for locksmiths by aggressively handing out their boxes.

4) the option to calibrate calipers for those without 40 ranks of lmastery yet. I've addressed this by writing an SF script to layer ontop of tpick that waits for every 5th CLICK!, pauses tpick, calibrates, then resumes tpick. I get that the function is already built into your script to do this- but it's not usable if you don't have 40 lmastery ranks yet which is unfortunate, since those without those ranks yet still need to calibrate!

Tgo01
01-18-2015, 01:31 PM
1) a toggle for whether we want to keep our caliper/keyring/wedge containers open or shut them. I personally don't see the point in keeping my wedges calipers and lockpicks in a closed container, as they're not stealable and i dont store them with/in stealable things.

Yeah one of these days when I'm feeling less lazy I'm just going to remove all of the reclosing of containers of such. I don't think they serve too much purpose and I screwed up when writing them in the first place :p


2) get my calipers <-- should suffice. getting them from a specific place only makes the script get pissed off if they accidentally got stowed when launching tpick, or somehow wound up somewhere else.

I suppose I can do that.


3) picking for others, ;tp ready cancels offers--- which is a bit "dense." Yeah it's great to say "ready" or what have you THEN have people offer you their stuff- but i've edited it so that if someone happens to offer me a box and then I ;tp that it doesnt cancel the offer they just made and make them re-do it. I think long-gone are the days of the east tower with people trying to jump the queue for locksmiths by aggressively handing out their boxes.

I don't use this feature but I'm pretty sure I did it that way because the script doesn't know who is offering you the box unless they offer it to you after the script starts.


4) the option to calibrate calipers for those without 40 ranks of lmastery yet. I've addressed this by writing an SF script to layer ontop of tpick that waits for every 5th CLICK!, pauses tpick, calibrates, then resumes tpick. I get that the function is already built into your script to do this- but it's not usable if you don't have 40 lmastery ranks yet which is unfortunate, since those without those ranks yet still need to calibrate!

If you want to send me a log of how calibrating calipers with a box looks like I can incorporate that into the script :D

Gelston
01-18-2015, 01:38 PM
http://new2.fjcdn.com/thumbnails/comments/I+love+u+in+the+most+gayest+possible+way+ever+_35f 3b2502a7fc730ba1e4b5afcf45b21.jpg

Tgo01
01-18-2015, 01:40 PM
http://new2.fjcdn.com/thumbnails/comments/I+love+u+in+the+most+gayest+possible+way+ever+_35f 3b2502a7fc730ba1e4b5afcf45b21.jpg

You too?! :O

Gelston
01-18-2015, 01:42 PM
You too?! :O

Gazelles make me wanna go NNNNNNNNNGH

Aeronal
01-18-2015, 05:48 PM
I don't use this feature but I'm pretty sure I did it that way because the script doesn't know who is offering you the box unless they offer it to you after the script starts.


I don't use it too often, but it's fun to open icemuleians' boxes for free now and then
what I've been doing is just editing out the cancel part, and copy/pasting the offer line to 'kick start' the script. I think I *could* read the name out of the manually input 'accept' line, but regular expressions give me nightmares and I never wind up getting them to work correctly.

I'll send a log of each calibration result (i think there are 3?) in just a sec.

Donquix
01-20-2015, 11:46 AM
I don't use it too often, but it's fun to open icemuleians' boxes for free now and then
what I've been doing is just editing out the cancel part, and copy/pasting the offer line to 'kick start' the script. I think I *could* read the name out of the manually input 'accept' line, but regular expressions give me nightmares and I never wind up getting them to work correctly.

I'll send a log of each calibration result (i think there are 3?) in just a sec.

http://rubular.com/ is your friend

Tgo01
01-20-2015, 11:58 AM
I don't use it too often, but it's fun to open icemuleians' boxes for free now and then
what I've been doing is just editing out the cancel part, and copy/pasting the offer line to 'kick start' the script. I think I *could* read the name out of the manually input 'accept' line, but regular expressions give me nightmares and I never wind up getting them to work correctly.

I suppose I could do that.


http://rubular.com/ is your friend

Also this.

rubular 4 lyfe!

Tgo01
01-21-2015, 12:24 PM
Updated some of my scripts while the PC was down.

-thiefwatch now keeps track of items in addition to silvers. If you're just chilling in TC and suddenly thiefwatch informs you have less total items than you did before chances are someone stole an item from you!

The script isn't perfect obviously. I've tried to account for as many legitimate reasons for losing an item as possible; give an item to someone, dropping an item, selling an individual item. However selling your entire cloak full of gems will set off thiefwatch's alarm, so will closing a container since the script can no longer see what's in that container. But still, can be pretty nifty.

tpick changes:

-tpick now has an option to relock boxes after you open and loot a box (use the relock command line variable when starting the script.) Only works if using the ground+loot options or picking boxes in your open containers.
-tpick now just does "get my calipers" instead of trying to get them specifically from your calipers container. Script will still store the calipers in your calipers container.
-tpick no longer closes any containers, it will still attempt to open a container if it can't find something
-tpick will always put items that are in your hands in the containers you specify in setup; ie all lockpicks in your lockpick container, all wedges in your wedge container, etc. Sometimes the script used to simply STOW these items, most notably when script first started.
-tpick will once again keep trying to use the same lockpick as long as you are getting the "sense the lock is within your abilities" message. A few versions back I broke this and instead whenever the script saw this message it would put the lockpick away, attempt to pick the box with no lockpick, then move on to the next highest lockpick. This has been fixed in the latest version. Script will still move on to next lockpick if you receive messaging that it's not within your abilities or your lockpick gets stuck.
-tpick no longer cancels offers when started up to pick other people's boxes

-tpick changed the way command line variables work. To pick boxes on the ground you must use the variable "ground" and to pick other people's boxes you must use the variable "other", not using either of these two variables will have the script pick all boxes in your open containers. All other command line variables remain unchanged and work the same. The order in which you use command line variables no longer matters.

For example you can do:

;tpick ground loot

or

;tpick loot ground

And in both cases the script will pick all boxes on the ground and take the loot out of them.

;warrior changes:

-warrior now does batter metal door with weapon tasks
-warrior should do berserk tasks in Illistim

Anyone know for sure if you get batter metal door without a weapon tasks? krakiipedia doesn't specifically say that you do, it just says you get batter door tasks both with and without a weapon so it sounds like you do but not sure if the person meant with and without a weapon for both types of doors.

It's been 10 ranks since I first got a batter metal door WITH a weapon task and I want to move on from batter as soon as I have the script setup to do all batter tasks.

Tgo01
01-21-2015, 11:38 PM
Another change to tpick:

Script can now calibrate your calipers even if you have less than 40 ranks of lock mastery. YAY!

Tgo01
01-22-2015, 04:22 AM
Yay, more tpick changes.

There is now a setting that will allow rogues to automatically repair their lockpick after they have bent it while trying to pick a lock. Rogue needs to have the lmas skill to repair lockpicks for this to work properly.

There is also a new command line feature; repair

If you're a rogue with the lmas skill to repair lockpicks then using this option will go through all of your tpick lockpicks in your broken lockpick container and check to see if they are broken and in need of repair. The script will then fix any broken lockpicks it sees.

Currently I only have the toolbench room numbers for Icemule, Landing, Sol Haven and Illistim. Any other town won't work, well it will but it'll run you to the nearest city I just listed. If you want another town added then please provide me with the lich room number of your local rogue guild's toolbench.

Tgo01
01-25-2015, 07:44 PM
More changes to tpick? You betcha! Right when I think I couldn't possibly squeeze anymore lock picking goodness into the script I think of another way to improve it.

-tpick should now stow an enruned/mithril plated box that you are trying to pop and move on to the next box. This is for picking your own boxes in open containers/your disk. Before script would just exit. Script already skipped boxes if you were picking other people's boxes or ground picking.

-tpick now has messaging throughout the script letting you know what it's doing; disarming a trap, what trap it found, whether or not the trap is too difficult, etc.

-You can now set how many times you want the script to manually check for traps before moving on to picking the box. If set higher than 1 the script will only check for traps again if it failed to find any traps.

-tpick now properly checks for trap difficulty and compares it with your ability to disarm traps. Even though I had a setting for this in the setup menu the script wasn't reading trap difficulty at all. This has now been fixed and the script can be set up to skip traps if the difficulty is too high.

Here are the instructions for the "Trap roll" variable found in setup. Failure to use this variable correctly is not my fault :p

Trap Roll: Determines what difficulty boxes you want to attempt.
Set to 0 to never try anything higher than your total disarm skill + lore bonus.
Setting to 10 would attempt traps 10 points higher than your disarm skill + lore bonus.
Setting to -10 would only attempt traps that are a maximum of 10 points lower than your disarm skill + lore bonus.
Set this value to whatever number you want. A value of 1000 would attempt to disarm all traps.
Script will always use 404 if it determines you need the spell to disarm a trap.

If it turns out the script isn't disarming traps that you think you can handle then set this number higher. If you would rather play it safe and don't want to blow yourself up then try setting this number lower.



-tpick has a new command line variable, pop

pop is for those who have zero training in disarm traps and picking locks. By using the pop command line variable you will attempt to open all boxes using 407 and 408. Script accomplishes this by using 416 to check each box for traps. The only concern with using 416 is it will automatically set off glyph traps but this doesn't hurt you or anything, just a minor annoyance. Script is also setup to take you back to the room you started the script in if you do set off a glyph trap. Just might want to be careful if you're ground picking so you don't lose your boxes before you get back. Also if you're a sorc you can set the script up to check each box for a glyph trap by using 704 first so you never have to worry about setting off glyph traps.

You can also set how many times you want the script to check for traps by using 416.

Here is how the pop feature handles each type of trap it finds.

The following traps are ignored and the script goes straight to using 407 to open the box. This is because nothing bad happens at all if you don't disarm these traps first before using 407.

Needle
Jaws
Plate (obviously)

Boxes with the following traps are always skipped no matter what because from what I understand 408 will always set them off.

Sulphur

The following traps may be set off when using 408:

Scarab
Sphere
Scales
Acid Vial
Fire Vial
Spores
Boomer
Cloud
Rods

In the setup menu you can set the script up to either attempt to disarm the above traps with 408 or skip boxes with these traps.

If the script disarms the trap or finds no traps and the box isn't enruned or mithril then the script will open the box using 403+407.

The pop feature only works with ground picking or picking your own boxes, doesn't work with the "other" command line variable.

I was actually pretty surprised at how well this setup worked. My capped wizard was disarming and popping lower level boxes faster than my capped rogue. 3 second cast RT vs 20 second hard RT FTW! Of course the experience is much less which is why my rogue continues to get the honor :p

My wizard was also doing pretty well on boxes from capped critters too. He never failed to see a trap and only set off one trap. Some boxes took a few casts of 403+407 to open though, but it wasn't too bad.

Pop your boxes open today!

BigWorm
01-30-2015, 08:39 PM
Adds 218 support to disarm-no-more



=begin
This script monitors your right hand and left hand to make sure you're carrying your weapon and shield/off hand.

The following happens if your weapon is not in your right hand or shield/off hand isn't in your left hand:
Script will kill go2 if it's running.
Script will tell you which room it thought you were in the last time it saw your weapon or shield in your hands.
Script will run back to that room if it's not the room you're currently in.
Script will automatically pick up your weapon and shield if it sees it on the ground in any room.
Script will attempt to grab your weapon and shield (in one of your containers or on the ground) when it has reached the room it thought you were in when you lost it.

This script will always attempt to pick up your weapon or shield off the ground for any reason; disarmed, itch curse, you accidentally dropped it, etc.

Start the script with your weapon in your right hand and your shield/off hand in your left hand.

Starting the script as ;disarm-no-more <#> will make the script wait X number of seconds before grabbing your weapon/off hand after you stowed it.
Example: ;disarm-no-more 5 will make the script wait 5 seconds after it sees you stow your weapon/off hand before grabbing it. Script will always grab your weapon/off hand off the ground as soon as it sees it there.

This script works with bigshot, sloot and loot (waitloot) and will not interfere with their functionality.

Author: Tgo01
Version 10

=end

have_weapon = "yes"
have_off_hand = "yes"

weapon = GameObj.right_hand.id
weapon_name = GameObj.right_hand.name
weapon_noun = GameObj.right_hand.noun
room = nil
weapon_search = nil
lost_weapon_updated = "no"

off_hand = GameObj.left_hand.id
off_hand_name = GameObj.left_hand.name
off_hand_noun = GameObj.left_hand.noun
off_hand_room = nil
off_hand_search = nil
lost_off_hand_updated = "no"

have_weapon = nil if GameObj.right_hand.id == nil
have_off_hand = nil if GameObj.left_hand.id == nil

swap_okay = nil

Thread.new {
loop{
(waitrt?;fput "swap";swap_okay = nil) if GameObj.right_hand.id == off_hand and swap_okay
weapon_search = GameObj.loot.find { |loot| loot.id == weapon }
if weapon_search != nil
(pause_script 'bigshot' if running? 'bigshot';wait_while{ running?('sloot') } if running? 'sloot';wait_while{ running?('waitloot') } if running? 'waitloot';waitrt?;fput "get ##{weapon}";weapon_search = nil;unpause_script 'bigshot' if running? 'bigshot')
end
off_hand_search = GameObj.loot.find { |loot| loot.id == off_hand }
if off_hand_search != nil
(pause_script 'bigshot' if running? 'bigshot';wait_while{ running?('sloot') } if running? 'sloot';wait_while{ running?('waitloot') } if running? 'waitloot';waitrt?;fput "get ##{off_hand}";off_hand_search = nil;unpause_script 'bigshot' if running? 'bigshot')
end
(waitrt?;fput "swap";swap_okay = nil) if GameObj.left_hand.id == weapon and swap_okay
sleep 0.1
}
}

Thread.new {
loop{
(room = Room.current.id;lost_weapon_updated = "yes") if GameObj.right_hand.id != weapon and lost_weapon_updated == "no" and have_weapon
(off_hand_room = Room.current.id;lost_off_hand_updated = "yes") if GameObj.left_hand.id != off_hand and lost_off_hand_updated == "no" and have_off_hand
lost_weapon_updated = "no" if GameObj.right_hand.id == weapon and lost_weapon_updated == "yes" and have_weapon
lost_off_hand_updated = "no" if GameObj.left_hand.id == off_hand and lost_off_hand_updated == "yes" and have_off_hand
sleep 0.1
}
}


loop{
if (GameObj.right_hand.id != weapon and have_weapon) or (GameObj.left_hand.id != off_hand and have_off_hand) and Room.current.id != 10815 and Room.current.id != 10817 and Room.current.id != 10821
pause_script 'bigshot' if running? 'bigshot'
wait_while{ running?('sloot') } if running? 'sloot'
wait_while{ running?('waitloot') } if running? 'waitloot'
if running? 'go2'
sleep 1
elsif script.vars[1] != nil
sleep Integer(script.vars[1])
end
(waitrt?;fput "swap";sleep 0.3) if GameObj.left_hand.id == weapon
if GameObj.right_hand.id != weapon and have_weapon
if weapon_name =~ /sonic/i
(waitrt?;waitcastrt?;multifput "prep 1012", "sing #{weapon_noun}";weapon = GameObj.right_hand.id)
else
stop_script 'go2' if running? 'go2'
stop_script 'wander' if running? 'wander'
echo "Last time you were holding your weapon was in or around room number #{room}." if room != nil and have_weapon
echo "Last time you were holding your shield/off hand was in or around room number #{off_hand_room}." if off_hand_room != nil and have_off_hand
start_script "go2", [room] if Room.current.id != room and room != nil
wait_while{ running?('go2') }
if Spell[218].active? && GameObj.npcs.any? { |npc| npc.noun == 'spirit' }
waitrt?
fput "tell spirit to give #{weapon_noun} #{Char.name}"
else
(waitrt?;fput "get ##{weapon}")
end
swap_okay = "yes"
wait_until { GameObj.right_hand.id == weapon}
end
end
(room = nil;swap_okay = nil)
(waitrt?;fput "swap";sleep 0.3) if GameObj.right_hand.id == off_hand
if GameObj.left_hand.id != off_hand and have_off_hand
if GameObj.left_hand.id != off_hand and have_off_hand
if off_hand_name =~ /sonic/i
(waitrt?;waitcastrt?;multifput "prep 1009", "sing #{off_hand_noun}";off_hand = GameObj.left_hand.id)
else
stop_script 'go2' if running? 'go2'
stop_script 'wander' if running? 'wander'
echo "Last time you were holding your weapon was in or around room number #{room}." if room != nil and have_weapon
echo "Last time you were holding your shield/off hand was in or around room number #{off_hand_room}." if off_hand_room != nil and have_off_hand
start_script "go2", [off_hand_room] if Room.current.id != off_hand_room and off_hand_room != nil
wait_while{ running?('go2') }
(waitrt?;fput "get ##{off_hand}")
swap_okay = "yes"
wait_until { GameObj.left_hand.id == off_hand}
end
end
end
(off_hand_room = nil;swap_okay = nil)
unpause_script 'bigshot' if running? 'bigshot'
end
sleep 0.1
}

Tgo01
01-30-2015, 11:20 PM
Adds 218 support to disarm-no-more



=begin
This script monitors your right hand and left hand to make sure you're carrying your weapon and shield/off hand.

The following happens if your weapon is not in your right hand or shield/off hand isn't in your left hand:
Script will kill go2 if it's running.
Script will tell you which room it thought you were in the last time it saw your weapon or shield in your hands.
Script will run back to that room if it's not the room you're currently in.
Script will automatically pick up your weapon and shield if it sees it on the ground in any room.
Script will attempt to grab your weapon and shield (in one of your containers or on the ground) when it has reached the room it thought you were in when you lost it.

This script will always attempt to pick up your weapon or shield off the ground for any reason; disarmed, itch curse, you accidentally dropped it, etc.

Start the script with your weapon in your right hand and your shield/off hand in your left hand.

Starting the script as ;disarm-no-more <#> will make the script wait X number of seconds before grabbing your weapon/off hand after you stowed it.
Example: ;disarm-no-more 5 will make the script wait 5 seconds after it sees you stow your weapon/off hand before grabbing it. Script will always grab your weapon/off hand off the ground as soon as it sees it there.

This script works with bigshot, sloot and loot (waitloot) and will not interfere with their functionality.

Author: Tgo01
Version 10

=end

have_weapon = "yes"
have_off_hand = "yes"

weapon = GameObj.right_hand.id
weapon_name = GameObj.right_hand.name
weapon_noun = GameObj.right_hand.noun
room = nil
weapon_search = nil
lost_weapon_updated = "no"

off_hand = GameObj.left_hand.id
off_hand_name = GameObj.left_hand.name
off_hand_noun = GameObj.left_hand.noun
off_hand_room = nil
off_hand_search = nil
lost_off_hand_updated = "no"

have_weapon = nil if GameObj.right_hand.id == nil
have_off_hand = nil if GameObj.left_hand.id == nil

swap_okay = nil

Thread.new {
loop{
(waitrt?;fput "swap";swap_okay = nil) if GameObj.right_hand.id == off_hand and swap_okay
weapon_search = GameObj.loot.find { |loot| loot.id == weapon }
if weapon_search != nil
(pause_script 'bigshot' if running? 'bigshot';wait_while{ running?('sloot') } if running? 'sloot';wait_while{ running?('waitloot') } if running? 'waitloot';waitrt?;fput "get ##{weapon}";weapon_search = nil;unpause_script 'bigshot' if running? 'bigshot')
end
off_hand_search = GameObj.loot.find { |loot| loot.id == off_hand }
if off_hand_search != nil
(pause_script 'bigshot' if running? 'bigshot';wait_while{ running?('sloot') } if running? 'sloot';wait_while{ running?('waitloot') } if running? 'waitloot';waitrt?;fput "get ##{off_hand}";off_hand_search = nil;unpause_script 'bigshot' if running? 'bigshot')
end
(waitrt?;fput "swap";swap_okay = nil) if GameObj.left_hand.id == weapon and swap_okay
sleep 0.1
}
}

Thread.new {
loop{
(room = Room.current.id;lost_weapon_updated = "yes") if GameObj.right_hand.id != weapon and lost_weapon_updated == "no" and have_weapon
(off_hand_room = Room.current.id;lost_off_hand_updated = "yes") if GameObj.left_hand.id != off_hand and lost_off_hand_updated == "no" and have_off_hand
lost_weapon_updated = "no" if GameObj.right_hand.id == weapon and lost_weapon_updated == "yes" and have_weapon
lost_off_hand_updated = "no" if GameObj.left_hand.id == off_hand and lost_off_hand_updated == "yes" and have_off_hand
sleep 0.1
}
}


loop{
if (GameObj.right_hand.id != weapon and have_weapon) or (GameObj.left_hand.id != off_hand and have_off_hand) and Room.current.id != 10815 and Room.current.id != 10817 and Room.current.id != 10821
pause_script 'bigshot' if running? 'bigshot'
wait_while{ running?('sloot') } if running? 'sloot'
wait_while{ running?('waitloot') } if running? 'waitloot'
if running? 'go2'
sleep 1
elsif script.vars[1] != nil
sleep Integer(script.vars[1])
end
(waitrt?;fput "swap";sleep 0.3) if GameObj.left_hand.id == weapon
if GameObj.right_hand.id != weapon and have_weapon
if weapon_name =~ /sonic/i
(waitrt?;waitcastrt?;multifput "prep 1012", "sing #{weapon_noun}";weapon = GameObj.right_hand.id)
else
stop_script 'go2' if running? 'go2'
stop_script 'wander' if running? 'wander'
echo "Last time you were holding your weapon was in or around room number #{room}." if room != nil and have_weapon
echo "Last time you were holding your shield/off hand was in or around room number #{off_hand_room}." if off_hand_room != nil and have_off_hand
start_script "go2", [room] if Room.current.id != room and room != nil
wait_while{ running?('go2') }
if Spell[218].active? && GameObj.npcs.any? { |npc| npc.noun == 'spirit' }
waitrt?
fput "tell spirit to give #{weapon_noun} #{Char.name}"
else
(waitrt?;fput "get ##{weapon}")
end
swap_okay = "yes"
wait_until { GameObj.right_hand.id == weapon}
end
end
(room = nil;swap_okay = nil)
(waitrt?;fput "swap";sleep 0.3) if GameObj.right_hand.id == off_hand
if GameObj.left_hand.id != off_hand and have_off_hand
if GameObj.left_hand.id != off_hand and have_off_hand
if off_hand_name =~ /sonic/i
(waitrt?;waitcastrt?;multifput "prep 1009", "sing #{off_hand_noun}";off_hand = GameObj.left_hand.id)
else
stop_script 'go2' if running? 'go2'
stop_script 'wander' if running? 'wander'
echo "Last time you were holding your weapon was in or around room number #{room}." if room != nil and have_weapon
echo "Last time you were holding your shield/off hand was in or around room number #{off_hand_room}." if off_hand_room != nil and have_off_hand
start_script "go2", [off_hand_room] if Room.current.id != off_hand_room and off_hand_room != nil
wait_while{ running?('go2') }
(waitrt?;fput "get ##{off_hand}")
swap_okay = "yes"
wait_until { GameObj.left_hand.id == off_hand}
end
end
end
(off_hand_room = nil;swap_okay = nil)
unpause_script 'bigshot' if running? 'bigshot'
end
sleep 0.1
}


Awesome, I'll update the script when I get home. What's 218 by the way?

Tgo01
01-30-2015, 11:31 PM
Awesome, I'll update the script when I get home. What's 218 by the way?

At spirit servant. Makes sense.

Tgo01
01-31-2015, 01:12 AM
Alright uploaded a new version with BigWorm's addition.

Also cleaned up my old code while I was at it.

JackWhisper
01-31-2015, 01:17 AM
WASSUP BIG PERM!!

I I... I mean big WORM!

Tgo01
03-19-2015, 08:31 PM
Someone requested this change for tpick so I went ahead and implemented it:

tpick now has a setting where you can specify where you want to stow gems when looting a box in case you want to stow gems in a different container than your STOW container.

Whirlin
03-19-2015, 09:35 PM
Fix uberbarwiz for me.

Tgo01
03-19-2015, 09:40 PM
Fix uberbarwiz for me.

What's wrong with it?

Whirlin
03-19-2015, 09:42 PM
>;uberbarwiz
--- Lich: uberbarwiz active.
error in Gtk.queue: undefined local variable or method `uberBar_status_bar' for main:Object

Tgo01
03-19-2015, 09:43 PM
I don't even see this script on the repo :(

Whirlin
03-19-2015, 09:44 PM
=begin


So I was thinkin to myself the other day,
'Hey, I want an uberbar for Wizard, and I think other people do too.'
So here it is. Stay classy San Diego.
;e fizzle = File.open("#{$lich_dir}IconDEAD.png", 'rb') ; respond [fizzle.read].pack('m').gsub("\n", "")

=end


if $SAFE > 0
echo "error: This script needs to be trusted to work. (;trust #{script.name.downcase})"
exit
end


no_kill_all
no_pause_all
hide_me
debug = false
wait_while { XMLData.next_level_text !~ /(experience|until next level)/ or !XMLData.next_level_value.integer? }
#$test_nlt = "10000000 experience"


#defining all my variables... I hate variables... there's - too many of them!
window_close = false


uberBar_label_table = uberBar_layout = uberBar_damage = uberBar_table = uberBar = done = window_close = nil
uberBar_damage_nsys_w1 = uberBar_damage_leftArm_w1 = uberBar_damage_rightArm_w1 = uberBar_damage_rightLeg_w1 = uberBar_damage_leftLeg_w1 = uberBar_damage_head_w1 = uberBar_damage_rightFoot_w1 = uberBar_damage_leftFoot_w1 = uberBar_damage_rightHand_w1 = uberBar_damage_leftHand_w1 = uberBar_damage_rightEye_w1 = uberBar_damage_leftEye_w1 = uberBar_damage_back_w1 = uberBar_damage_neck_w1 = uberBar_damage_chest_w1 = uberBar_damage_abdomen_w1 = nil
uberBar_damage_nsys_w2 = uberBar_damage_leftArm_w2 = uberBar_damage_rightArm_w2 = uberBar_damage_rightLeg_w2 = uberBar_damage_leftLeg_w2 = uberBar_damage_head_w2 = uberBar_damage_rightFoot_w2 = uberBar_damage_leftFoot_w2 = uberBar_damage_rightHand_w2 = uberBar_damage_leftHand_w2 = uberBar_damage_rightEye_w2 = uberBar_damage_leftEye_w2 = uberBar_damage_back_w2 = uberBar_damage_neck_w2 = uberBar_damage_chest_w2 = uberBar_damage_abdomen_w2 = nil
uberBar_damage_nsys_w3 = uberBar_damage_leftArm_w3 = uberBar_damage_rightArm_w3 = uberBar_damage_rightLeg_w3 = uberBar_damage_leftLeg_w3 = uberBar_damage_head_w3 = uberBar_damage_rightFoot_w3 = uberBar_damage_leftFoot_w3 = uberBar_damage_rightHand_w3 = uberBar_damage_leftHand_w3 = uberBar_damage_rightEye_w3 = uberBar_damage_leftEye_w3 = uberBar_damage_back_w3 = uberBar_damage_neck_w3 = uberBar_damage_chest_w3 = uberBar_damage_abdomen_w3 = nil
uberBar_damage_nsys_s1 = uberBar_damage_leftArm_s1 = uberBar_damage_rightArm_s1 = uberBar_damage_rightLeg_s1 = uberBar_damage_leftLeg_s1 = uberBar_damage_head_s1 = uberBar_damage_rightFoot_s1 = uberBar_damage_leftFoot_s1 = uberBar_damage_rightHand_s1 = uberBar_damage_leftHand_s1 = uberBar_damage_rightEye_s1 = uberBar_damage_leftEye_s1 = uberBar_damage_back_s1 = uberBar_damage_neck_s1 = uberBar_damage_chest_s1 = uberBar_damage_abdomen_s1 = nil
uberBar_damage_nsys_s2 = uberBar_damage_leftArm_s2 = uberBar_damage_rightArm_s2 = uberBar_damage_rightLeg_s2 = uberBar_damage_leftLeg_s2 = uberBar_damage_head_s2 = uberBar_damage_rightFoot_s2 = uberBar_damage_leftFoot_s2 = uberBar_damage_rightHand_s2 = uberBar_damage_leftHand_s2 = uberBar_damage_rightEye_s2 = uberBar_damage_leftEye_s2 = uberBar_damage_back_s2 = uberBar_damage_neck_s2 = uberBar_damage_chest_s2 = uberBar_damage_abdomen_s2 = nil
uberBar_damage_nsys_s3 = uberBar_damage_leftArm_s3 = uberBar_damage_rightArm_s3 = uberBar_damage_rightLeg_s3 = uberBar_damage_leftLeg_s3 = uberBar_damage_head_s3 = uberBar_damage_rightFoot_s3 = uberBar_damage_leftFoot_s3 = uberBar_damage_rightHand_s3 = uberBar_damage_leftHand_s3 = uberBar_damage_rightEye_s3 = uberBar_damage_leftEye_s3 = uberBar_damage_back_s3 = uberBar_damage_neck_s3 = uberBar_damage_chest_s3 = uberBar_damage_abdomen_s3 = nil
uberBar_label_lxplogin = uberBar_label_lxptotal = uberBar_label_lxppulse = uberBar_label_lroomnum = uberBar_label_xplogin = uberBar_label_xptotal = uberBar_label_xppulse = uberBar_label_roomnum = nil
uberBar_label_align_lxplogin = uberBar_label_align_lxptotal = uberBar_label_align_lxppulse = uberBar_label_align_lroomnum = uberBar_label_align_xplogin = uberBar_label_align_xptotal = uberBar_label_align_xppulse = uberBar_label_roomnum = nil
uberBar_progress_pulse = uberBar_progress_health = uberBar_progress_mana = uberBar_progress_stamina = uberBar_progress_spirit = uberBar_progress_exp = uberBar_progress_mind = uberBar_progress_stance = uberBar_progress_encumb = uberBar_progress_rthard = uberBar_progress_rtcast = nil
uberBar_status_IconSITTING = uberBar_status_IconKNEELING = uberBar_status_IconPRONE = uberBar_status_IconSTANDING = uberBar_status_IconBLEEDING = uberBar_status_IconDEAD = uberBar_status_IconDISEASED = uberBar_status_IconHIDDEN = uberBar_status_IconINVISIBLE = uberBar_status_IconJOINED = uberBar_status_IconPOISONED = uberBar_status_IconSTUNNED = uberBar_status_IconWEBBED = nil
oldHP = oldMP = oldST = oldSP = oldXP = oldMD = oldSN = oldEN = oldIN = oldWO = oldRTs = oldCTs = nowRT = nowCT = oldRM = oldSS = nil
oldRT = oldCT = 0
image_dir = "#{$lich_dir}data#{File::Separator}uberBarWiz#{File ::Separator}"
Dir::mkdir(image_dir) unless File.exists?(image_dir)


Settings.load
if variable[2]
Settings[Char.name] = {}
Settings[Char.name]['window_width'] = 167
Settings[Char.name]['window_height'] = 216
Settings[Char.name]['window_position'] = [0, 0]
Settings[Char.name]["health_file"] = variable[1]
Settings[Char.name]["health_locs"] = variable[2]
exit
end


Settings[Char.name] ||= {}
Settings[Char.name]['window_width'] ||= 167
Settings[Char.name]['window_height'] ||= 216
Settings[Char.name]['window_position'] ||= [0, 0]
Settings[Char.name]["health_file"] ||= "#{image_dir}Health.bmp"
Settings[Char.name]["health_locs"] ||= {"leftEye" => [15, 3], "rightEye" => [50, 3], "head" => [33, 28], "neck" => [33, 43], "chest" => [33, 58], "abdomen" => [33, 71], "leftArm" => [12, 43], "rightArm" => [54, 43], "leftHand" => [8, 20], "rightHand" => [56, 20], "leftLeg" => [23, 101], "rightLeg" => [43, 101], "back" => [6, 77], "nsys" => [59, 77], "leftFoot" => [51, 127], "rightFoot" => [16, 127]}


window_width = Settings[Char.name]['window_width']
window_height = Settings[Char.name]['window_height']
window_position = Settings[Char.name]['window_position']
health_file = Settings[Char.name]['health_file']
health_locs = Settings[Char.name]['health_locs']
wound1_file = "#{image_dir}Wound1.png"
wound2_file = "#{image_dir}Wound2.png"
wound3_file = "#{image_dir}Wound3.png"
scar1_file = "#{image_dir}Scar1.png"
scar2_file = "#{image_dir}Scar2.png"
scar3_file = "#{image_dir}Scar3.png"
statusBAR_file = "#{image_dir}StatusBAR.png"
iconSITTING_file = "#{image_dir}IconSITTING.png"
iconKNEELING_file = "#{image_dir}IconKNEELING.png"
iconPRONE_file = "#{image_dir}IconPRONE.png"
iconSTANDING_file = "#{image_dir}IconSTANDING.png"
iconBLEEDING_file = "#{image_dir}IconBLEEDING.png"
iconDEAD_file = "#{image_dir}IconDEAD.png"
iconDISEASED_file = "#{image_dir}IconDISEASED.png"
iconHIDDEN_file = "#{image_dir}IconHIDDEN.png"
iconINVISIBLE_file = "#{image_dir}IconINVISIBLE.png"
iconJOINED_file = "#{image_dir}IconJOINED.png"
iconPOISONED_file = "#{image_dir}IconPOISONED.png"
iconSTUNNED_file = "#{image_dir}IconSTUNNED.png"
iconWEBBED_file = "#{image_dir}IconWEBBED.png"


setupwindow = ["window_col", [240,240,240], [ 0, 0, 0]]
#labelname label x y
setuplabel_loc = [81, 160, 14]
setuplabel = [
["lxplogin", "Login: ", "0, 1, 0, 1"],
["xplogin", "", "1, 2, 0, 1"],
["lxptotal", "XP/hr: ", "0, 1, 1, 2"],
["xptotal", "", "1, 2, 1, 2"],
["lxppulse", "Pulse: ", "0, 1, 2, 3"],
["xppulse", "", "1, 2, 2, 3"]]
#name x y w h normal back normal fore prelight back prelight fore
setupprogress_loc = [81, 16]
setupprogress = [
["rthard", [ 80,150-setupprogress_loc[1]*5, 63, setupprogress_loc[1]+3], [ 0, 0, 0], [207, 0, 0], [207, 0, 0], [255,255,255]],
["rtcast", [143,150-setupprogress_loc[1]*5, 25, setupprogress_loc[1]+3], [ 0, 0, 0], [115,159,207], [115,159,207], [255,255,255]],
["health", [ 80,150-setupprogress_loc[1]*4, 88, setupprogress_loc[1]+3], [ 0, 0, 0], [255,255,255], [128, 0, 0], [255,255,255]],
["mana", [ 80,150-setupprogress_loc[1]*3, 88, setupprogress_loc[1]+3], [ 0, 0, 0], [255,255,255], [ 0, 0,255], [255,255,255]],
["stamina", [ 80,150-setupprogress_loc[1]*2, 88, setupprogress_loc[1]+3], [ 0, 0, 0], [255,255,255], [208,152, 57], [255,255,255]],
["spirit", [ 80,150-setupprogress_loc[1]*1, 88, setupprogress_loc[1]+3], [ 0, 0, 0], [255,255,255], [192,192,192], [255,255,255]],
["exp", [ 0,150+setupprogress_loc[1]*0,168, setupprogress_loc[1]+3], [ 0, 0, 0], [255,255,255], [ 0,128, 0], [255,255,255]],
["mind", [ 0,150+setupprogress_loc[1]*1,168, setupprogress_loc[1]+3], [ 0, 0, 0], [255,255,255], [ 0,128, 0], [255,255,255]],
["stance", [ 0,150+setupprogress_loc[1]*2,168, setupprogress_loc[1]+3], [ 0, 0, 0], [255,255,255], [ 0,128, 0], [255,255,255]],
["encumb", [ 0,150+setupprogress_loc[1]*3,168, setupprogress_loc[1]+3], [ 0, 0, 0], [255,255,255], [ 0,128, 0], [255,255,255]]]
setupstatus_bar = ["StatusBAR", 82, 45]
setupstatus = [
["IconSITTING", setupstatus_bar[1]+56, setupstatus_bar[2]+ 2],
["IconKNEELING", setupstatus_bar[1]+56, setupstatus_bar[2]+ 2],
["IconPRONE", setupstatus_bar[1]+56, setupstatus_bar[2]+ 2],
["IconSTANDING", setupstatus_bar[1]+56, setupstatus_bar[2]+ 2],
["IconBLEEDING", setupstatus_bar[1]+ 2, setupstatus_bar[2]+ 6],
["IconDEAD", setupstatus_bar[1]+56, setupstatus_bar[2]+ 2],
["IconDISEASED", setupstatus_bar[1]+11, setupstatus_bar[2]+ 6],
["IconHIDDEN", setupstatus_bar[1]+28, setupstatus_bar[2]+ 2],
["IconINVISIBLE", setupstatus_bar[1]+28, setupstatus_bar[2]+ 2],
["IconJOINED", setupstatus_bar[1]+39, setupstatus_bar[2]+ 2],
["IconPOISONED", setupstatus_bar[1]+11, setupstatus_bar[2]+ 6],
["IconSTUNNED", setupstatus_bar[1]+20, setupstatus_bar[2]+ 6],
["IconWEBBED", setupstatus_bar[1]+ 2, setupstatus_bar[2]+ 2]]


filelist = [health_file, wound1_file, wound2_file, wound3_file, scar1_file, scar2_file, scar3_file, statusBAR_file, iconSITTING_file, iconKNEELING_file, iconPRONE_file, iconSTANDING_file, iconBLEEDING_file, iconDEAD_file, iconDISEASED_file, iconHIDDEN_file, iconINVISIBLE_file, iconJOINED_file, iconPOISONED_file, iconSTUNNED_file, iconWEBBED_file]
filelist.each do |filey|
if !File.exists?(filey)
respond ""
respond "Can't find the files I need"
respond "Download, trust, and run one of the theme packages from the repository"
respond "UBW-theme-sf, -dude or -sexy"
respond ""
exit
end
end


capped = false
capped = true if Char.level == 100 or XMLData.next_level_text =~ /experience/


# XP watcher variables
firstpulse = true
xpnFirstTime = 0 # Time UB was first run
#pause("0.5s")
xpnNLT = xpnCur = xpnOld = xpnHour = xpnLast = xpnTotal = 0 # Zero total xp to start


areas = ["nsys","leftArm","rightArm","rightLeg","leftLeg","head","rightFoot","leftFoot","rightHand","leftHand","rightEye","leftEye","back","neck","chest","abdomen"]
arean = [["s3", "scar3"], ["s2", "scar2"], ["s1", "scar1"], ["w3", "wound3"], ["w2", "wound2"], ["w1", "wound1"]]


done = false
Gtk.queue {

uberBar = Gtk::Window.new
uberBar.title = "#{Char.name}'s Uberbar"
uberBar.signal_connect('delete_event') { window_close = true }
uberBar.border_width = 0


uberBar_layout = Gtk::Layout.new
uberBar_layout_style = Gtk::Style.new
uberBar_layout_style.set_bg(Gtk::STATE_NORMAL, 0, 0, 0)
uberBar_layout.set_style uberBar_layout_style
uberBar.add uberBar_layout


uberBar_label_style = Gtk::Style.new
uberBar_label_style.set_fg(Gtk::STATE_NORMAL, 255*255, 255*255, 255*255)
uberBar_label_table = Gtk::Table.new 3, 2, true
uberBar_layout.put(uberBar_label_table, 81, -2)

setuplabel.each do |label|
eval("uberBar_label_#{label[0]} = Gtk::Label.new(\"#{label[1]}\")")
eval("uberBar_label_align_#{label[0]} = Gtk::Alignment.new 1, 0, 0, 0")
eval("uberBar_label_align_#{label[0]}.add(uberBar_label_#{label[0]})")
eval("uberBar_label_#{label[0]}.set_style uberBar_label_style")
eval("uberBar_label_table.attach(uberBar_label_align_#{l abel[0]}, #{label[2]})")
end


uberBar_damage = Gtk::Image.new(health_file)
uberBar_layout.put(uberBar_damage, 0, 0)


areas.each do |area|
arean.each do |an|
eval("uberBar_damage_#{area}_#{an[0]} = Gtk::Image.new(#{an[1]}_file)")
end
end
areas.each do |area|
arean.each do |an|
eval("uberBar_layout.put(uberBar_damage_#{area}_#{an[0]}, -50, -50)")
end
end


eval("uberBar_status_bar = Gtk::Image.new(\"#{image_dir}#{setupstatus_bar[0]}.png\")")
eval("uberBar_layout.put(uberBar_status_bar, #{setupstatus_bar[1]}, #{setupstatus_bar[2]})")
setupstatus.each do |ss|
eval("uberBar_status_#{ss[0]} = Gtk::Image.new(\"#{image_dir}#{ss[0]}.png\")")
eval("uberBar_layout.put(uberBar_status_#{ss[0]}, -50, -50)")
end


setupprogress.each do |progress|
eval("uberBar_progress_#{progress[0]} = Gtk::ProgressBar.new")
eval("uberBar_progress_style_#{progress[0]} = Gtk::Style.new")
eval("uberBar_progress_style_#{progress[0]}.set_bg(Gtk::STATE_NORMAL, #{progress[2].join('*255, ')}*255)")
eval("uberBar_progress_style_#{progress[0]}.set_fg(Gtk::STATE_NORMAL, #{progress[3].join('*255, ')}*255)")
eval("uberBar_progress_style_#{progress[0]}.set_bg(Gtk::STATE_PRELIGHT, #{progress[4].join('*255, ')}*255)")
eval("uberBar_progress_style_#{progress[0]}.set_fg(Gtk::STATE_PRELIGHT, #{progress[5].join('*255, ')}*255)")
eval("uberBar_progress_#{progress[0]}.set_style uberBar_progress_style_#{progress[0]}")
eval("uberBar_progress_#{progress[0]}.height_request = #{progress[1][3]}")
eval("uberBar_progress_#{progress[0]}.width_request = #{progress[1][2]}")
eval("uberBar_layout.put(uberBar_progress_#{progress[0]}, #{progress[1][0]}, #{progress[1][1]})")
end


uberBar.show_all
uberBar.resize(window_width.to_i, window_height.to_i)
window_position[0] = [[0, window_position[0].to_i].max, (Gdk.screen_width-window_width.to_i)].min
window_position[1] = [[0, window_position[1].to_i].max, (Gdk.screen_height-window_height.to_i)].min
uberBar.move(window_position[0].to_i, window_position[1].to_i)
#uberBar.keep_above = true


done = true
}
wait_while { !done }


before_dying {
done = false
Gtk.queue {
window_width = uberBar.allocation.width
window_height = uberBar.allocation.height
window_position = uberBar.position
uberBar.destroy
done = true
}
wait_until { done }
Settings[Char.name]['window_width'] = window_width
Settings[Char.name]['window_height'] = window_height
Settings[Char.name]['window_position'] = window_position if (window_position.class == Array) and (window_position[0].to_i > -5) and (window_position[1].to_i > -5)
Settings.save
}


loop {
wait_while { oldRT.to_i == checkrt.to_i and oldCT.to_i == checkcastrt.to_i and oldSS == XMLData.indicator.to_s and oldHP == checkhealth and oldMP == checkmana and oldST == checkstamina and oldSP == checkspirit and oldXP == XMLData.next_level_text and oldMD == XMLData.mind_text and oldSN == XMLData.stance_text and oldEN == XMLData.encumbrance_text and oldIN == XMLData.injuries.to_s and window_close == false }
if window_close then exit end
nowTime = Time.now
nowRT = checkrt
nowCT = checkcastrt
doLines = ""

if oldHP != checkhealth then echo "updated health" if debug ; oldHP = checkhealth ; doLines += "uberBar_progress_health.fraction = percenthealth/100.0 ; uberBar_progress_health.text = \"#{checkhealth}/#{maxhealth}\" ; " end
if oldMP != checkmana then echo "updated mana" if debug ; oldMP = checkmana ; doLines += "uberBar_progress_mana.fraction = percentmana/100.0 ; uberBar_progress_mana.text = \"#{checkmana}/#{maxmana}\" ; " end
if oldST != checkstamina then echo "updated stamina" if debug ; oldST = checkstamina ; doLines += "uberBar_progress_stamina.fraction = percentstamina/100.0 ; uberBar_progress_stamina.text = \"#{checkstamina}/#{maxstamina}\" ; " end
if oldSP != checkspirit then echo "updated spirit" if debug ; oldSP = checkspirit ; doLines += "uberBar_progress_spirit.fraction = percentspirit/100.0 ; uberBar_progress_spirit.text = \"#{checkspirit}/#{maxspirit}\" ; " end
if oldMD != XMLData.mind_text then echo "updated mind" if debug ; oldMD = XMLData.mind_text ; doLines += "uberBar_progress_mind.fraction = XMLData.mind_value/100.0 ; uberBar_progress_mind.text = XMLData.mind_text ; " end
if oldSN != XMLData.stance_text then echo "updated stance" if debug ; oldSN = XMLData.stance_text ; doLines += "uberBar_progress_stance.fraction = XMLData.stance_value/100.0 ; uberBar_progress_stance.text = XMLData.stance_text ; " end
if oldEN != XMLData.encumbrance_text then echo "updated encumbr" if debug ; oldEN = XMLData.encumbrance_text ; doLines += "uberBar_progress_encumb.fraction = XMLData.encumbrance_value/100.0 ; uberBar_progress_encumb.text = XMLData.encumbrance_text ; " end
if oldRM != Room.current.id then echo "updated room" if debug ; oldRM = Room.current.id ; doLines += "uberBar_label_roomnum.text = #{Room.current.id}.to_s ; " end
if oldRT != nowRT then echo "updated roundtime" if debug
oldRTs = nowRT if oldRTs == 0
oldRTs = 0 if nowRT == 0
doLines += "uberBar_progress_rthard.fraction = #{nowRT/(oldRTs+0.001)} ; uberBar_progress_rthard.text = \"#{(nowRT+0.999).to_i}\" ; "
oldRT = nowRT
end
if oldCT != nowCT then echo "updated cast roundtime" if debug
oldCTs = nowCT if oldCTs == 0
oldCTs = 0 if nowCT == 0
doLines += "uberBar_progress_rtcast.fraction = #{nowCT/(oldCTs+0.001)} ; uberBar_progress_rtcast.text = \"#{(nowCT+0.999).to_i}\" ; "
oldCT = nowCT
end
if oldSS != XMLData.indicator.to_s then echo "updated status" if debug ; oldSS = XMLData.indicator.to_s
setupstatus.each do |ss|
doLines += "uberBar_layout.move(uberBar_status_#{ss[0]}, -50, -50) ; "
if XMLData.indicator[ss[0]] == "y"
doLines += "uberBar_layout.move(uberBar_status_#{ss[0]}, #{ss[1]}, #{ss[2]}) ; "
end
end
end
if oldIN != XMLData.injuries.to_s then echo "updated wounds" if debug ; oldIN = XMLData.injuries.to_s
woundsev = 0
areas.each do |area|
arean.each do |an|
doLines += "uberBar_layout.move(uberBar_damage_#{area}_#{an[0]}, -50, -50) ; "
end
if eval("Wounds.#{area}") > 0 then woundsev = eval("Wounds.#{area}") ; doLines += "uberBar_layout.move(uberBar_damage_#{area}_w#{woun dsev}, health_locs[\"#{area}\"][0], health_locs[\"#{area}\"][1]) ; "
elsif eval("Scars.#{area}") > 0 then woundsev = eval("Scars.#{area}") ; doLines += "uberBar_layout.move(uberBar_damage_#{area}_s#{woun dsev}, health_locs[\"#{area}\"][0], health_locs[\"#{area}\"][1]) ; "
end
end
end
if oldXP != XMLData.next_level_text then echo "updated exper" if debug ; oldXP = XMLData.next_level_text
xpnNLT = XMLData.next_level_text
if xpnNLT =~ /( experience| until next level)/
xpnCur = xpnNLT.delete(' experience').delete(' until next level').to_i
xpnLast = xpnOld - xpnCur
xpnLast *= -1 if xpnLast < 0
xpnLast = 0 if xpnLast > 2499
else
xpnCur = 0
xpnLast = 0
end
if firstpulse
xpnFirstTime = Time.now - 1
xpnTotal = 0
xpnLast = 0
firstpulse = false
end
if capped
xpnCap = (xpnCur / 2500 + 1) * 2500 - xpnCur
xpnValue = (100 - (xpnCap / 25)) / 100.00
xpnText = "#{xpnCap} until TP"
else
xpnValue = XMLData.next_level_value.to_i / 100.00
xpnText = sprintf("Level: %2s %6s TNL", Char.level, xpnCur)
end
xpnTotal += xpnLast
xpnHour = ((1.00 * xpnTotal) / ((nowTime - xpnFirstTime)/3600.00)).to_i
xpnOld = xpnCur
doLines += "uberBar_progress_exp.fraction = xpnValue ; uberBar_progress_exp.text = xpnText ; uberBar_label_xplogin.text = xpnTotal.to_s ; uberBar_label_xptotal.text = xpnHour.to_s ; uberBar_label_xppulse.text = xpnLast.to_s ; "
end


doLines += "done = true"
done = false
Gtk.queue { eval(doLines) }
wait_while { !done }
}

Tgo01
03-19-2015, 09:51 PM
=begin


So I was thinkin to myself the other day,
'Hey, I want an uberbar for Wizard, and I think other people do too.'
So here it is. Stay classy San Diego.
;e fizzle = File.open("#{$lich_dir}IconDEAD.png", 'rb') ; respond [fizzle.read].pack('m').gsub("\n", "")

=end


if $SAFE > 0
echo "error: This script needs to be trusted to work. (;trust #{script.name.downcase})"
exit
end


no_kill_all
no_pause_all
hide_me
debug = false
wait_while { XMLData.next_level_text !~ /(experience|until next level)/ or !XMLData.next_level_value.integer? }
#$test_nlt = "10000000 experience"


#defining all my variables... I hate variables... there's - too many of them!
window_close = false


uberBar_label_table = uberBar_layout = uberBar_damage = uberBar_table = uberBar = done = window_close = nil
uberBar_damage_nsys_w1 = uberBar_damage_leftArm_w1 = uberBar_damage_rightArm_w1 = uberBar_damage_rightLeg_w1 = uberBar_damage_leftLeg_w1 = uberBar_damage_head_w1 = uberBar_damage_rightFoot_w1 = uberBar_damage_leftFoot_w1 = uberBar_damage_rightHand_w1 = uberBar_damage_leftHand_w1 = uberBar_damage_rightEye_w1 = uberBar_damage_leftEye_w1 = uberBar_damage_back_w1 = uberBar_damage_neck_w1 = uberBar_damage_chest_w1 = uberBar_damage_abdomen_w1 = nil
uberBar_damage_nsys_w2 = uberBar_damage_leftArm_w2 = uberBar_damage_rightArm_w2 = uberBar_damage_rightLeg_w2 = uberBar_damage_leftLeg_w2 = uberBar_damage_head_w2 = uberBar_damage_rightFoot_w2 = uberBar_damage_leftFoot_w2 = uberBar_damage_rightHand_w2 = uberBar_damage_leftHand_w2 = uberBar_damage_rightEye_w2 = uberBar_damage_leftEye_w2 = uberBar_damage_back_w2 = uberBar_damage_neck_w2 = uberBar_damage_chest_w2 = uberBar_damage_abdomen_w2 = nil
uberBar_damage_nsys_w3 = uberBar_damage_leftArm_w3 = uberBar_damage_rightArm_w3 = uberBar_damage_rightLeg_w3 = uberBar_damage_leftLeg_w3 = uberBar_damage_head_w3 = uberBar_damage_rightFoot_w3 = uberBar_damage_leftFoot_w3 = uberBar_damage_rightHand_w3 = uberBar_damage_leftHand_w3 = uberBar_damage_rightEye_w3 = uberBar_damage_leftEye_w3 = uberBar_damage_back_w3 = uberBar_damage_neck_w3 = uberBar_damage_chest_w3 = uberBar_damage_abdomen_w3 = nil
uberBar_damage_nsys_s1 = uberBar_damage_leftArm_s1 = uberBar_damage_rightArm_s1 = uberBar_damage_rightLeg_s1 = uberBar_damage_leftLeg_s1 = uberBar_damage_head_s1 = uberBar_damage_rightFoot_s1 = uberBar_damage_leftFoot_s1 = uberBar_damage_rightHand_s1 = uberBar_damage_leftHand_s1 = uberBar_damage_rightEye_s1 = uberBar_damage_leftEye_s1 = uberBar_damage_back_s1 = uberBar_damage_neck_s1 = uberBar_damage_chest_s1 = uberBar_damage_abdomen_s1 = nil
uberBar_damage_nsys_s2 = uberBar_damage_leftArm_s2 = uberBar_damage_rightArm_s2 = uberBar_damage_rightLeg_s2 = uberBar_damage_leftLeg_s2 = uberBar_damage_head_s2 = uberBar_damage_rightFoot_s2 = uberBar_damage_leftFoot_s2 = uberBar_damage_rightHand_s2 = uberBar_damage_leftHand_s2 = uberBar_damage_rightEye_s2 = uberBar_damage_leftEye_s2 = uberBar_damage_back_s2 = uberBar_damage_neck_s2 = uberBar_damage_chest_s2 = uberBar_damage_abdomen_s2 = nil
uberBar_damage_nsys_s3 = uberBar_damage_leftArm_s3 = uberBar_damage_rightArm_s3 = uberBar_damage_rightLeg_s3 = uberBar_damage_leftLeg_s3 = uberBar_damage_head_s3 = uberBar_damage_rightFoot_s3 = uberBar_damage_leftFoot_s3 = uberBar_damage_rightHand_s3 = uberBar_damage_leftHand_s3 = uberBar_damage_rightEye_s3 = uberBar_damage_leftEye_s3 = uberBar_damage_back_s3 = uberBar_damage_neck_s3 = uberBar_damage_chest_s3 = uberBar_damage_abdomen_s3 = nil
uberBar_label_lxplogin = uberBar_label_lxptotal = uberBar_label_lxppulse = uberBar_label_lroomnum = uberBar_label_xplogin = uberBar_label_xptotal = uberBar_label_xppulse = uberBar_label_roomnum = nil
uberBar_label_align_lxplogin = uberBar_label_align_lxptotal = uberBar_label_align_lxppulse = uberBar_label_align_lroomnum = uberBar_label_align_xplogin = uberBar_label_align_xptotal = uberBar_label_align_xppulse = uberBar_label_roomnum = nil
uberBar_progress_pulse = uberBar_progress_health = uberBar_progress_mana = uberBar_progress_stamina = uberBar_progress_spirit = uberBar_progress_exp = uberBar_progress_mind = uberBar_progress_stance = uberBar_progress_encumb = uberBar_progress_rthard = uberBar_progress_rtcast = nil
uberBar_status_IconSITTING = uberBar_status_IconKNEELING = uberBar_status_IconPRONE = uberBar_status_IconSTANDING = uberBar_status_IconBLEEDING = uberBar_status_IconDEAD = uberBar_status_IconDISEASED = uberBar_status_IconHIDDEN = uberBar_status_IconINVISIBLE = uberBar_status_IconJOINED = uberBar_status_IconPOISONED = uberBar_status_IconSTUNNED = uberBar_status_IconWEBBED = nil
oldHP = oldMP = oldST = oldSP = oldXP = oldMD = oldSN = oldEN = oldIN = oldWO = oldRTs = oldCTs = nowRT = nowCT = oldRM = oldSS = nil
oldRT = oldCT = 0
image_dir = "#{$lich_dir}data#{File::Separator}uberBarWiz#{File ::Separator}"
Dir::mkdir(image_dir) unless File.exists?(image_dir)


Settings.load
if variable[2]
Settings[Char.name] = {}
Settings[Char.name]['window_width'] = 167
Settings[Char.name]['window_height'] = 216
Settings[Char.name]['window_position'] = [0, 0]
Settings[Char.name]["health_file"] = variable[1]
Settings[Char.name]["health_locs"] = variable[2]
exit
end


Settings[Char.name] ||= {}
Settings[Char.name]['window_width'] ||= 167
Settings[Char.name]['window_height'] ||= 216
Settings[Char.name]['window_position'] ||= [0, 0]
Settings[Char.name]["health_file"] ||= "#{image_dir}Health.bmp"
Settings[Char.name]["health_locs"] ||= {"leftEye" => [15, 3], "rightEye" => [50, 3], "head" => [33, 28], "neck" => [33, 43], "chest" => [33, 58], "abdomen" => [33, 71], "leftArm" => [12, 43], "rightArm" => [54, 43], "leftHand" => [8, 20], "rightHand" => [56, 20], "leftLeg" => [23, 101], "rightLeg" => [43, 101], "back" => [6, 77], "nsys" => [59, 77], "leftFoot" => [51, 127], "rightFoot" => [16, 127]}


window_width = Settings[Char.name]['window_width']
window_height = Settings[Char.name]['window_height']
window_position = Settings[Char.name]['window_position']
health_file = Settings[Char.name]['health_file']
health_locs = Settings[Char.name]['health_locs']
wound1_file = "#{image_dir}Wound1.png"
wound2_file = "#{image_dir}Wound2.png"
wound3_file = "#{image_dir}Wound3.png"
scar1_file = "#{image_dir}Scar1.png"
scar2_file = "#{image_dir}Scar2.png"
scar3_file = "#{image_dir}Scar3.png"
statusBAR_file = "#{image_dir}StatusBAR.png"
iconSITTING_file = "#{image_dir}IconSITTING.png"
iconKNEELING_file = "#{image_dir}IconKNEELING.png"
iconPRONE_file = "#{image_dir}IconPRONE.png"
iconSTANDING_file = "#{image_dir}IconSTANDING.png"
iconBLEEDING_file = "#{image_dir}IconBLEEDING.png"
iconDEAD_file = "#{image_dir}IconDEAD.png"
iconDISEASED_file = "#{image_dir}IconDISEASED.png"
iconHIDDEN_file = "#{image_dir}IconHIDDEN.png"
iconINVISIBLE_file = "#{image_dir}IconINVISIBLE.png"
iconJOINED_file = "#{image_dir}IconJOINED.png"
iconPOISONED_file = "#{image_dir}IconPOISONED.png"
iconSTUNNED_file = "#{image_dir}IconSTUNNED.png"
iconWEBBED_file = "#{image_dir}IconWEBBED.png"


setupwindow = ["window_col", [240,240,240], [ 0, 0, 0]]
#labelname label x y
setuplabel_loc = [81, 160, 14]
setuplabel = [
["lxplogin", "Login: ", "0, 1, 0, 1"],
["xplogin", "", "1, 2, 0, 1"],
["lxptotal", "XP/hr: ", "0, 1, 1, 2"],
["xptotal", "", "1, 2, 1, 2"],
["lxppulse", "Pulse: ", "0, 1, 2, 3"],
["xppulse", "", "1, 2, 2, 3"]]
#name x y w h normal back normal fore prelight back prelight fore
setupprogress_loc = [81, 16]
setupprogress = [
["rthard", [ 80,150-setupprogress_loc[1]*5, 63, setupprogress_loc[1]+3], [ 0, 0, 0], [207, 0, 0], [207, 0, 0], [255,255,255]],
["rtcast", [143,150-setupprogress_loc[1]*5, 25, setupprogress_loc[1]+3], [ 0, 0, 0], [115,159,207], [115,159,207], [255,255,255]],
["health", [ 80,150-setupprogress_loc[1]*4, 88, setupprogress_loc[1]+3], [ 0, 0, 0], [255,255,255], [128, 0, 0], [255,255,255]],
["mana", [ 80,150-setupprogress_loc[1]*3, 88, setupprogress_loc[1]+3], [ 0, 0, 0], [255,255,255], [ 0, 0,255], [255,255,255]],
["stamina", [ 80,150-setupprogress_loc[1]*2, 88, setupprogress_loc[1]+3], [ 0, 0, 0], [255,255,255], [208,152, 57], [255,255,255]],
["spirit", [ 80,150-setupprogress_loc[1]*1, 88, setupprogress_loc[1]+3], [ 0, 0, 0], [255,255,255], [192,192,192], [255,255,255]],
["exp", [ 0,150+setupprogress_loc[1]*0,168, setupprogress_loc[1]+3], [ 0, 0, 0], [255,255,255], [ 0,128, 0], [255,255,255]],
["mind", [ 0,150+setupprogress_loc[1]*1,168, setupprogress_loc[1]+3], [ 0, 0, 0], [255,255,255], [ 0,128, 0], [255,255,255]],
["stance", [ 0,150+setupprogress_loc[1]*2,168, setupprogress_loc[1]+3], [ 0, 0, 0], [255,255,255], [ 0,128, 0], [255,255,255]],
["encumb", [ 0,150+setupprogress_loc[1]*3,168, setupprogress_loc[1]+3], [ 0, 0, 0], [255,255,255], [ 0,128, 0], [255,255,255]]]
setupstatus_bar = ["StatusBAR", 82, 45]
setupstatus = [
["IconSITTING", setupstatus_bar[1]+56, setupstatus_bar[2]+ 2],
["IconKNEELING", setupstatus_bar[1]+56, setupstatus_bar[2]+ 2],
["IconPRONE", setupstatus_bar[1]+56, setupstatus_bar[2]+ 2],
["IconSTANDING", setupstatus_bar[1]+56, setupstatus_bar[2]+ 2],
["IconBLEEDING", setupstatus_bar[1]+ 2, setupstatus_bar[2]+ 6],
["IconDEAD", setupstatus_bar[1]+56, setupstatus_bar[2]+ 2],
["IconDISEASED", setupstatus_bar[1]+11, setupstatus_bar[2]+ 6],
["IconHIDDEN", setupstatus_bar[1]+28, setupstatus_bar[2]+ 2],
["IconINVISIBLE", setupstatus_bar[1]+28, setupstatus_bar[2]+ 2],
["IconJOINED", setupstatus_bar[1]+39, setupstatus_bar[2]+ 2],
["IconPOISONED", setupstatus_bar[1]+11, setupstatus_bar[2]+ 6],
["IconSTUNNED", setupstatus_bar[1]+20, setupstatus_bar[2]+ 6],
["IconWEBBED", setupstatus_bar[1]+ 2, setupstatus_bar[2]+ 2]]


filelist = [health_file, wound1_file, wound2_file, wound3_file, scar1_file, scar2_file, scar3_file, statusBAR_file, iconSITTING_file, iconKNEELING_file, iconPRONE_file, iconSTANDING_file, iconBLEEDING_file, iconDEAD_file, iconDISEASED_file, iconHIDDEN_file, iconINVISIBLE_file, iconJOINED_file, iconPOISONED_file, iconSTUNNED_file, iconWEBBED_file]
filelist.each do |filey|
if !File.exists?(filey)
respond ""
respond "Can't find the files I need"
respond "Download, trust, and run one of the theme packages from the repository"
respond "UBW-theme-sf, -dude or -sexy"
respond ""
exit
end
end


capped = false
capped = true if Char.level == 100 or XMLData.next_level_text =~ /experience/


# XP watcher variables
firstpulse = true
xpnFirstTime = 0 # Time UB was first run
#pause("0.5s")
xpnNLT = xpnCur = xpnOld = xpnHour = xpnLast = xpnTotal = 0 # Zero total xp to start


areas = ["nsys","leftArm","rightArm","rightLeg","leftLeg","head","rightFoot","leftFoot","rightHand","leftHand","rightEye","leftEye","back","neck","chest","abdomen"]
arean = [["s3", "scar3"], ["s2", "scar2"], ["s1", "scar1"], ["w3", "wound3"], ["w2", "wound2"], ["w1", "wound1"]]


done = false
Gtk.queue {

uberBar = Gtk::Window.new
uberBar.title = "#{Char.name}'s Uberbar"
uberBar.signal_connect('delete_event') { window_close = true }
uberBar.border_width = 0


uberBar_layout = Gtk::Layout.new
uberBar_layout_style = Gtk::Style.new
uberBar_layout_style.set_bg(Gtk::STATE_NORMAL, 0, 0, 0)
uberBar_layout.set_style uberBar_layout_style
uberBar.add uberBar_layout


uberBar_label_style = Gtk::Style.new
uberBar_label_style.set_fg(Gtk::STATE_NORMAL, 255*255, 255*255, 255*255)
uberBar_label_table = Gtk::Table.new 3, 2, true
uberBar_layout.put(uberBar_label_table, 81, -2)

setuplabel.each do |label|
eval("uberBar_label_#{label[0]} = Gtk::Label.new(\"#{label[1]}\")")
eval("uberBar_label_align_#{label[0]} = Gtk::Alignment.new 1, 0, 0, 0")
eval("uberBar_label_align_#{label[0]}.add(uberBar_label_#{label[0]})")
eval("uberBar_label_#{label[0]}.set_style uberBar_label_style")
eval("uberBar_label_table.attach(uberBar_label_align_#{l abel[0]}, #{label[2]})")
end


uberBar_damage = Gtk::Image.new(health_file)
uberBar_layout.put(uberBar_damage, 0, 0)


areas.each do |area|
arean.each do |an|
eval("uberBar_damage_#{area}_#{an[0]} = Gtk::Image.new(#{an[1]}_file)")
end
end
areas.each do |area|
arean.each do |an|
eval("uberBar_layout.put(uberBar_damage_#{area}_#{an[0]}, -50, -50)")
end
end


eval("uberBar_status_bar = Gtk::Image.new(\"#{image_dir}#{setupstatus_bar[0]}.png\")")
eval("uberBar_layout.put(uberBar_status_bar, #{setupstatus_bar[1]}, #{setupstatus_bar[2]})")
setupstatus.each do |ss|
eval("uberBar_status_#{ss[0]} = Gtk::Image.new(\"#{image_dir}#{ss[0]}.png\")")
eval("uberBar_layout.put(uberBar_status_#{ss[0]}, -50, -50)")
end


setupprogress.each do |progress|
eval("uberBar_progress_#{progress[0]} = Gtk::ProgressBar.new")
eval("uberBar_progress_style_#{progress[0]} = Gtk::Style.new")
eval("uberBar_progress_style_#{progress[0]}.set_bg(Gtk::STATE_NORMAL, #{progress[2].join('*255, ')}*255)")
eval("uberBar_progress_style_#{progress[0]}.set_fg(Gtk::STATE_NORMAL, #{progress[3].join('*255, ')}*255)")
eval("uberBar_progress_style_#{progress[0]}.set_bg(Gtk::STATE_PRELIGHT, #{progress[4].join('*255, ')}*255)")
eval("uberBar_progress_style_#{progress[0]}.set_fg(Gtk::STATE_PRELIGHT, #{progress[5].join('*255, ')}*255)")
eval("uberBar_progress_#{progress[0]}.set_style uberBar_progress_style_#{progress[0]}")
eval("uberBar_progress_#{progress[0]}.height_request = #{progress[1][3]}")
eval("uberBar_progress_#{progress[0]}.width_request = #{progress[1][2]}")
eval("uberBar_layout.put(uberBar_progress_#{progress[0]}, #{progress[1][0]}, #{progress[1][1]})")
end


uberBar.show_all
uberBar.resize(window_width.to_i, window_height.to_i)
window_position[0] = [[0, window_position[0].to_i].max, (Gdk.screen_width-window_width.to_i)].min
window_position[1] = [[0, window_position[1].to_i].max, (Gdk.screen_height-window_height.to_i)].min
uberBar.move(window_position[0].to_i, window_position[1].to_i)
#uberBar.keep_above = true


done = true
}
wait_while { !done }


before_dying {
done = false
Gtk.queue {
window_width = uberBar.allocation.width
window_height = uberBar.allocation.height
window_position = uberBar.position
uberBar.destroy
done = true
}
wait_until { done }
Settings[Char.name]['window_width'] = window_width
Settings[Char.name]['window_height'] = window_height
Settings[Char.name]['window_position'] = window_position if (window_position.class == Array) and (window_position[0].to_i > -5) and (window_position[1].to_i > -5)
Settings.save
}


loop {
wait_while { oldRT.to_i == checkrt.to_i and oldCT.to_i == checkcastrt.to_i and oldSS == XMLData.indicator.to_s and oldHP == checkhealth and oldMP == checkmana and oldST == checkstamina and oldSP == checkspirit and oldXP == XMLData.next_level_text and oldMD == XMLData.mind_text and oldSN == XMLData.stance_text and oldEN == XMLData.encumbrance_text and oldIN == XMLData.injuries.to_s and window_close == false }
if window_close then exit end
nowTime = Time.now
nowRT = checkrt
nowCT = checkcastrt
doLines = ""

if oldHP != checkhealth then echo "updated health" if debug ; oldHP = checkhealth ; doLines += "uberBar_progress_health.fraction = percenthealth/100.0 ; uberBar_progress_health.text = \"#{checkhealth}/#{maxhealth}\" ; " end
if oldMP != checkmana then echo "updated mana" if debug ; oldMP = checkmana ; doLines += "uberBar_progress_mana.fraction = percentmana/100.0 ; uberBar_progress_mana.text = \"#{checkmana}/#{maxmana}\" ; " end
if oldST != checkstamina then echo "updated stamina" if debug ; oldST = checkstamina ; doLines += "uberBar_progress_stamina.fraction = percentstamina/100.0 ; uberBar_progress_stamina.text = \"#{checkstamina}/#{maxstamina}\" ; " end
if oldSP != checkspirit then echo "updated spirit" if debug ; oldSP = checkspirit ; doLines += "uberBar_progress_spirit.fraction = percentspirit/100.0 ; uberBar_progress_spirit.text = \"#{checkspirit}/#{maxspirit}\" ; " end
if oldMD != XMLData.mind_text then echo "updated mind" if debug ; oldMD = XMLData.mind_text ; doLines += "uberBar_progress_mind.fraction = XMLData.mind_value/100.0 ; uberBar_progress_mind.text = XMLData.mind_text ; " end
if oldSN != XMLData.stance_text then echo "updated stance" if debug ; oldSN = XMLData.stance_text ; doLines += "uberBar_progress_stance.fraction = XMLData.stance_value/100.0 ; uberBar_progress_stance.text = XMLData.stance_text ; " end
if oldEN != XMLData.encumbrance_text then echo "updated encumbr" if debug ; oldEN = XMLData.encumbrance_text ; doLines += "uberBar_progress_encumb.fraction = XMLData.encumbrance_value/100.0 ; uberBar_progress_encumb.text = XMLData.encumbrance_text ; " end
if oldRM != Room.current.id then echo "updated room" if debug ; oldRM = Room.current.id ; doLines += "uberBar_label_roomnum.text = #{Room.current.id}.to_s ; " end
if oldRT != nowRT then echo "updated roundtime" if debug
oldRTs = nowRT if oldRTs == 0
oldRTs = 0 if nowRT == 0
doLines += "uberBar_progress_rthard.fraction = #{nowRT/(oldRTs+0.001)} ; uberBar_progress_rthard.text = \"#{(nowRT+0.999).to_i}\" ; "
oldRT = nowRT
end
if oldCT != nowCT then echo "updated cast roundtime" if debug
oldCTs = nowCT if oldCTs == 0
oldCTs = 0 if nowCT == 0
doLines += "uberBar_progress_rtcast.fraction = #{nowCT/(oldCTs+0.001)} ; uberBar_progress_rtcast.text = \"#{(nowCT+0.999).to_i}\" ; "
oldCT = nowCT
end
if oldSS != XMLData.indicator.to_s then echo "updated status" if debug ; oldSS = XMLData.indicator.to_s
setupstatus.each do |ss|
doLines += "uberBar_layout.move(uberBar_status_#{ss[0]}, -50, -50) ; "
if XMLData.indicator[ss[0]] == "y"
doLines += "uberBar_layout.move(uberBar_status_#{ss[0]}, #{ss[1]}, #{ss[2]}) ; "
end
end
end
if oldIN != XMLData.injuries.to_s then echo "updated wounds" if debug ; oldIN = XMLData.injuries.to_s
woundsev = 0
areas.each do |area|
arean.each do |an|
doLines += "uberBar_layout.move(uberBar_damage_#{area}_#{an[0]}, -50, -50) ; "
end
if eval("Wounds.#{area}") > 0 then woundsev = eval("Wounds.#{area}") ; doLines += "uberBar_layout.move(uberBar_damage_#{area}_w#{woun dsev}, health_locs[\"#{area}\"][0], health_locs[\"#{area}\"][1]) ; "
elsif eval("Scars.#{area}") > 0 then woundsev = eval("Scars.#{area}") ; doLines += "uberBar_layout.move(uberBar_damage_#{area}_s#{woun dsev}, health_locs[\"#{area}\"][0], health_locs[\"#{area}\"][1]) ; "
end
end
end
if oldXP != XMLData.next_level_text then echo "updated exper" if debug ; oldXP = XMLData.next_level_text
xpnNLT = XMLData.next_level_text
if xpnNLT =~ /( experience| until next level)/
xpnCur = xpnNLT.delete(' experience').delete(' until next level').to_i
xpnLast = xpnOld - xpnCur
xpnLast *= -1 if xpnLast < 0
xpnLast = 0 if xpnLast > 2499
else
xpnCur = 0
xpnLast = 0
end
if firstpulse
xpnFirstTime = Time.now - 1
xpnTotal = 0
xpnLast = 0
firstpulse = false
end
if capped
xpnCap = (xpnCur / 2500 + 1) * 2500 - xpnCur
xpnValue = (100 - (xpnCap / 25)) / 100.00
xpnText = "#{xpnCap} until TP"
else
xpnValue = XMLData.next_level_value.to_i / 100.00
xpnText = sprintf("Level: %2s %6s TNL", Char.level, xpnCur)
end
xpnTotal += xpnLast
xpnHour = ((1.00 * xpnTotal) / ((nowTime - xpnFirstTime)/3600.00)).to_i
xpnOld = xpnCur
doLines += "uberBar_progress_exp.fraction = xpnValue ; uberBar_progress_exp.text = xpnText ; uberBar_label_xplogin.text = xpnTotal.to_s ; uberBar_label_xptotal.text = xpnHour.to_s ; uberBar_label_xppulse.text = xpnLast.to_s ; "
end


doLines += "done = true"
done = false
Gtk.queue { eval(doLines) }
wait_while { !done }
}




=begin


So I was thinkin to myself the other day,
'Hey, I want an uberbar for Wizard, and I think other people do too.'
So here it is. Stay classy San Diego.
;e fizzle = File.open("#{$lich_dir}IconDEAD.png", 'rb') ; respond [fizzle.read].pack('m').gsub("\n", "")

=end


if $SAFE > 0
echo "error: This script needs to be trusted to work. (;trust #{script.name.downcase})"
exit
end

uberBar_status_bar = nil
uberBar_progress_style_rthard = nil
uberBar_progress_style_rtcast = nil
uberBar_progress_style_health = nil
uberBar_progress_style_mana = nil
uberBar_progress_style_stamina = nil
uberBar_progress_style_spirit = nil
uberBar_progress_style_exp = nil
uberBar_progress_style_mind = nil
uberBar_progress_style_stance = nil
uberBar_progress_style_encumb = nil
no_kill_all
no_pause_all
hide_me
debug = false
wait_while { XMLData.next_level_text !~ /(experience|until next level)/ or !XMLData.next_level_value.integer? }
#$test_nlt = "10000000 experience"


#defining all my variables... I hate variables... there's - too many of them!
window_close = false


uberBar_label_table = uberBar_layout = uberBar_damage = uberBar_table = uberBar = done = window_close = nil
uberBar_damage_nsys_w1 = uberBar_damage_leftArm_w1 = uberBar_damage_rightArm_w1 = uberBar_damage_rightLeg_w1 = uberBar_damage_leftLeg_w1 = uberBar_damage_head_w1 = uberBar_damage_rightFoot_w1 = uberBar_damage_leftFoot_w1 =

uberBar_damage_rightHand_w1 = uberBar_damage_leftHand_w1 = uberBar_damage_rightEye_w1 = uberBar_damage_leftEye_w1 = uberBar_damage_back_w1 = uberBar_damage_neck_w1 = uberBar_damage_chest_w1 = uberBar_damage_abdomen_w1 = nil
uberBar_damage_nsys_w2 = uberBar_damage_leftArm_w2 = uberBar_damage_rightArm_w2 = uberBar_damage_rightLeg_w2 = uberBar_damage_leftLeg_w2 = uberBar_damage_head_w2 = uberBar_damage_rightFoot_w2 = uberBar_damage_leftFoot_w2 =

uberBar_damage_rightHand_w2 = uberBar_damage_leftHand_w2 = uberBar_damage_rightEye_w2 = uberBar_damage_leftEye_w2 = uberBar_damage_back_w2 = uberBar_damage_neck_w2 = uberBar_damage_chest_w2 = uberBar_damage_abdomen_w2 = nil
uberBar_damage_nsys_w3 = uberBar_damage_leftArm_w3 = uberBar_damage_rightArm_w3 = uberBar_damage_rightLeg_w3 = uberBar_damage_leftLeg_w3 = uberBar_damage_head_w3 = uberBar_damage_rightFoot_w3 = uberBar_damage_leftFoot_w3 =

uberBar_damage_rightHand_w3 = uberBar_damage_leftHand_w3 = uberBar_damage_rightEye_w3 = uberBar_damage_leftEye_w3 = uberBar_damage_back_w3 = uberBar_damage_neck_w3 = uberBar_damage_chest_w3 = uberBar_damage_abdomen_w3 = nil
uberBar_damage_nsys_s1 = uberBar_damage_leftArm_s1 = uberBar_damage_rightArm_s1 = uberBar_damage_rightLeg_s1 = uberBar_damage_leftLeg_s1 = uberBar_damage_head_s1 = uberBar_damage_rightFoot_s1 = uberBar_damage_leftFoot_s1 =

uberBar_damage_rightHand_s1 = uberBar_damage_leftHand_s1 = uberBar_damage_rightEye_s1 = uberBar_damage_leftEye_s1 = uberBar_damage_back_s1 = uberBar_damage_neck_s1 = uberBar_damage_chest_s1 = uberBar_damage_abdomen_s1 = nil
uberBar_damage_nsys_s2 = uberBar_damage_leftArm_s2 = uberBar_damage_rightArm_s2 = uberBar_damage_rightLeg_s2 = uberBar_damage_leftLeg_s2 = uberBar_damage_head_s2 = uberBar_damage_rightFoot_s2 = uberBar_damage_leftFoot_s2 =

uberBar_damage_rightHand_s2 = uberBar_damage_leftHand_s2 = uberBar_damage_rightEye_s2 = uberBar_damage_leftEye_s2 = uberBar_damage_back_s2 = uberBar_damage_neck_s2 = uberBar_damage_chest_s2 = uberBar_damage_abdomen_s2 = nil
uberBar_damage_nsys_s3 = uberBar_damage_leftArm_s3 = uberBar_damage_rightArm_s3 = uberBar_damage_rightLeg_s3 = uberBar_damage_leftLeg_s3 = uberBar_damage_head_s3 = uberBar_damage_rightFoot_s3 = uberBar_damage_leftFoot_s3 =

uberBar_damage_rightHand_s3 = uberBar_damage_leftHand_s3 = uberBar_damage_rightEye_s3 = uberBar_damage_leftEye_s3 = uberBar_damage_back_s3 = uberBar_damage_neck_s3 = uberBar_damage_chest_s3 = uberBar_damage_abdomen_s3 = nil
uberBar_label_lxplogin = uberBar_label_lxptotal = uberBar_label_lxppulse = uberBar_label_lroomnum = uberBar_label_xplogin = uberBar_label_xptotal = uberBar_label_xppulse = uberBar_label_roomnum = nil
uberBar_label_align_lxplogin = uberBar_label_align_lxptotal = uberBar_label_align_lxppulse = uberBar_label_align_lroomnum = uberBar_label_align_xplogin = uberBar_label_align_xptotal = uberBar_label_align_xppulse = uberBar_label_roomnum =

nil
uberBar_progress_pulse = uberBar_progress_health = uberBar_progress_mana = uberBar_progress_stamina = uberBar_progress_spirit = uberBar_progress_exp = uberBar_progress_mind = uberBar_progress_stance = uberBar_progress_encumb =

uberBar_progress_rthard = uberBar_progress_rtcast = nil
uberBar_status_IconSITTING = uberBar_status_IconKNEELING = uberBar_status_IconPRONE = uberBar_status_IconSTANDING = uberBar_status_IconBLEEDING = uberBar_status_IconDEAD = uberBar_status_IconDISEASED = uberBar_status_IconHIDDEN =

uberBar_status_IconINVISIBLE = uberBar_status_IconJOINED = uberBar_status_IconPOISONED = uberBar_status_IconSTUNNED = uberBar_status_IconWEBBED = nil
oldHP = oldMP = oldST = oldSP = oldXP = oldMD = oldSN = oldEN = oldIN = oldWO = oldRTs = oldCTs = nowRT = nowCT = oldRM = oldSS = nil
oldRT = oldCT = 0
image_dir = "#{$lich_dir}data#{File::Separator}uberBarWiz#{File ::Separator}"
Dir::mkdir(image_dir) unless File.exists?(image_dir)


Settings.load
if variable[2]
Settings[Char.name] = {}
Settings[Char.name]['window_width'] = 167
Settings[Char.name]['window_height'] = 216
Settings[Char.name]['window_position'] = [0, 0]
Settings[Char.name]["health_file"] = variable[1]
Settings[Char.name]["health_locs"] = variable[2]
exit
end


Settings[Char.name] ||= {}
Settings[Char.name]['window_width'] ||= 167
Settings[Char.name]['window_height'] ||= 216
Settings[Char.name]['window_position'] ||= [0, 0]
Settings[Char.name]["health_file"] ||= "#{image_dir}Health.bmp"
Settings[Char.name]["health_locs"] ||= {"leftEye" => [15, 3], "rightEye" => [50, 3], "head" => [33, 28], "neck" => [33, 43], "chest" => [33, 58], "abdomen" => [33, 71], "leftArm" => [12, 43], "rightArm" => [54, 43], "leftHand" => [8,

20], "rightHand" => [56, 20], "leftLeg" => [23, 101], "rightLeg" => [43, 101], "back" => [6, 77], "nsys" => [59, 77], "leftFoot" => [51, 127], "rightFoot" => [16, 127]}


window_width = Settings[Char.name]['window_width']
window_height = Settings[Char.name]['window_height']
window_position = Settings[Char.name]['window_position']
health_file = Settings[Char.name]['health_file']
health_locs = Settings[Char.name]['health_locs']
wound1_file = "#{image_dir}Wound1.png"
wound2_file = "#{image_dir}Wound2.png"
wound3_file = "#{image_dir}Wound3.png"
scar1_file = "#{image_dir}Scar1.png"
scar2_file = "#{image_dir}Scar2.png"
scar3_file = "#{image_dir}Scar3.png"
statusBAR_file = "#{image_dir}StatusBAR.png"
iconSITTING_file = "#{image_dir}IconSITTING.png"
iconKNEELING_file = "#{image_dir}IconKNEELING.png"
iconPRONE_file = "#{image_dir}IconPRONE.png"
iconSTANDING_file = "#{image_dir}IconSTANDING.png"
iconBLEEDING_file = "#{image_dir}IconBLEEDING.png"
iconDEAD_file = "#{image_dir}IconDEAD.png"
iconDISEASED_file = "#{image_dir}IconDISEASED.png"
iconHIDDEN_file = "#{image_dir}IconHIDDEN.png"
iconINVISIBLE_file = "#{image_dir}IconINVISIBLE.png"
iconJOINED_file = "#{image_dir}IconJOINED.png"
iconPOISONED_file = "#{image_dir}IconPOISONED.png"
iconSTUNNED_file = "#{image_dir}IconSTUNNED.png"
iconWEBBED_file = "#{image_dir}IconWEBBED.png"


setupwindow = ["window_col", [240,240,240], [ 0, 0, 0]]
#labelname label x y
setuplabel_loc = [81, 160, 14]
setuplabel = [
["lxplogin", "Login: ", "0, 1, 0, 1"],
["xplogin", "", "1, 2, 0, 1"],
["lxptotal", "XP/hr: ", "0, 1, 1, 2"],
["xptotal", "", "1, 2, 1, 2"],
["lxppulse", "Pulse: ", "0, 1, 2, 3"],
["xppulse", "", "1, 2, 2, 3"]]
#name x y w h normal back normal fore prelight back prelight fore
setupprogress_loc = [81, 16]
setupprogress = [
["rthard", [ 80,150-setupprogress_loc[1]*5, 63, setupprogress_loc[1]+3], [ 0, 0, 0], [207, 0, 0], [207, 0, 0], [255,255,255]],
["rtcast", [143,150-setupprogress_loc[1]*5, 25, setupprogress_loc[1]+3], [ 0, 0, 0], [115,159,207], [115,159,207], [255,255,255]],
["health", [ 80,150-setupprogress_loc[1]*4, 88, setupprogress_loc[1]+3], [ 0, 0, 0], [255,255,255], [128, 0, 0], [255,255,255]],
["mana", [ 80,150-setupprogress_loc[1]*3, 88, setupprogress_loc[1]+3], [ 0, 0, 0], [255,255,255], [ 0, 0,255], [255,255,255]],
["stamina", [ 80,150-setupprogress_loc[1]*2, 88, setupprogress_loc[1]+3], [ 0, 0, 0], [255,255,255], [208,152, 57], [255,255,255]],
["spirit", [ 80,150-setupprogress_loc[1]*1, 88, setupprogress_loc[1]+3], [ 0, 0, 0], [255,255,255], [192,192,192], [255,255,255]],
["exp", [ 0,150+setupprogress_loc[1]*0,168, setupprogress_loc[1]+3], [ 0, 0, 0], [255,255,255], [ 0,128, 0], [255,255,255]],
["mind", [ 0,150+setupprogress_loc[1]*1,168, setupprogress_loc[1]+3], [ 0, 0, 0], [255,255,255], [ 0,128, 0], [255,255,255]],
["stance", [ 0,150+setupprogress_loc[1]*2,168, setupprogress_loc[1]+3], [ 0, 0, 0], [255,255,255], [ 0,128, 0], [255,255,255]],
["encumb", [ 0,150+setupprogress_loc[1]*3,168, setupprogress_loc[1]+3], [ 0, 0, 0], [255,255,255], [ 0,128, 0], [255,255,255]]]
setupstatus_bar = ["StatusBAR", 82, 45]
setupstatus = [
["IconSITTING", setupstatus_bar[1]+56, setupstatus_bar[2]+ 2],
["IconKNEELING", setupstatus_bar[1]+56, setupstatus_bar[2]+ 2],
["IconPRONE", setupstatus_bar[1]+56, setupstatus_bar[2]+ 2],
["IconSTANDING", setupstatus_bar[1]+56, setupstatus_bar[2]+ 2],
["IconBLEEDING", setupstatus_bar[1]+ 2, setupstatus_bar[2]+ 6],
["IconDEAD", setupstatus_bar[1]+56, setupstatus_bar[2]+ 2],
["IconDISEASED", setupstatus_bar[1]+11, setupstatus_bar[2]+ 6],
["IconHIDDEN", setupstatus_bar[1]+28, setupstatus_bar[2]+ 2],
["IconINVISIBLE", setupstatus_bar[1]+28, setupstatus_bar[2]+ 2],
["IconJOINED", setupstatus_bar[1]+39, setupstatus_bar[2]+ 2],
["IconPOISONED", setupstatus_bar[1]+11, setupstatus_bar[2]+ 6],
["IconSTUNNED", setupstatus_bar[1]+20, setupstatus_bar[2]+ 6],
["IconWEBBED", setupstatus_bar[1]+ 2, setupstatus_bar[2]+ 2]]


filelist = [health_file, wound1_file, wound2_file, wound3_file, scar1_file, scar2_file, scar3_file, statusBAR_file, iconSITTING_file, iconKNEELING_file, iconPRONE_file, iconSTANDING_file, iconBLEEDING_file, iconDEAD_file,

iconDISEASED_file, iconHIDDEN_file, iconINVISIBLE_file, iconJOINED_file, iconPOISONED_file, iconSTUNNED_file, iconWEBBED_file]
filelist.each do |filey|
if !File.exists?(filey)
respond ""
respond "Can't find the files I need"
respond "Download, trust, and run one of the theme packages from the repository"
respond "UBW-theme-sf, -dude or -sexy"
respond ""
exit
end
end


capped = false
capped = true if Char.level == 100 or XMLData.next_level_text =~ /experience/


# XP watcher variables
firstpulse = true
xpnFirstTime = 0 # Time UB was first run
#pause("0.5s")
xpnNLT = xpnCur = xpnOld = xpnHour = xpnLast = xpnTotal = 0 # Zero total xp to start


areas = ["nsys","leftArm","rightArm","rightLeg","leftLeg","head","rightFoot","leftFoot","rightHand","leftHand","rightEye","leftEye","back","neck","chest","abdomen"]
arean = [["s3", "scar3"], ["s2", "scar2"], ["s1", "scar1"], ["w3", "wound3"], ["w2", "wound2"], ["w1", "wound1"]]


done = false
Gtk.queue {

uberBar = Gtk::Window.new
uberBar.title = "#{Char.name}'s Uberbar"
uberBar.signal_connect('delete_event') { window_close = true }
uberBar.border_width = 0


uberBar_layout = Gtk::Layout.new
uberBar_layout_style = Gtk::Style.new
uberBar_layout_style.set_bg(Gtk::STATE_NORMAL, 0, 0, 0)
uberBar_layout.set_style uberBar_layout_style
uberBar.add uberBar_layout


uberBar_label_style = Gtk::Style.new
uberBar_label_style.set_fg(Gtk::STATE_NORMAL, 255*255, 255*255, 255*255)
uberBar_label_table = Gtk::Table.new 3, 2, true
uberBar_layout.put(uberBar_label_table, 81, -2)

setuplabel.each do |label|
eval("uberBar_label_#{label[0]} = Gtk::Label.new(\"#{label[1]}\")")
eval("uberBar_label_align_#{label[0]} = Gtk::Alignment.new 1, 0, 0, 0")
eval("uberBar_label_align_#{label[0]}.add(uberBar_label_#{label[0]})")
eval("uberBar_label_#{label[0]}.set_style uberBar_label_style")
eval("uberBar_label_table.attach(uberBar_label_align_#{l abel[0]}, #{label[2]})")
end


uberBar_damage = Gtk::Image.new(health_file)
uberBar_layout.put(uberBar_damage, 0, 0)


areas.each do |area|
arean.each do |an|
eval("uberBar_damage_#{area}_#{an[0]} = Gtk::Image.new(#{an[1]}_file)")
end
end
areas.each do |area|
arean.each do |an|
eval("uberBar_layout.put(uberBar_damage_#{area}_#{an[0]}, -50, -50)")
end
end


eval("uberBar_status_bar = Gtk::Image.new(\"#{image_dir}#{setupstatus_bar[0]}.png\")")
eval("uberBar_layout.put(uberBar_status_bar, #{setupstatus_bar[1]}, #{setupstatus_bar[2]})")
setupstatus.each do |ss|
eval("uberBar_status_#{ss[0]} = Gtk::Image.new(\"#{image_dir}#{ss[0]}.png\")")
eval("uberBar_layout.put(uberBar_status_#{ss[0]}, -50, -50)")
end


setupprogress.each do |progress|
eval("uberBar_progress_#{progress[0]} = Gtk::ProgressBar.new")
eval("uberBar_progress_style_#{progress[0]} = Gtk::Style.new")
eval("uberBar_progress_style_#{progress[0]}.set_bg(Gtk::STATE_NORMAL, #{progress[2].join('*255, ')}*255)")
eval("uberBar_progress_style_#{progress[0]}.set_fg(Gtk::STATE_NORMAL, #{progress[3].join('*255, ')}*255)")
eval("uberBar_progress_style_#{progress[0]}.set_bg(Gtk::STATE_PRELIGHT, #{progress[4].join('*255, ')}*255)")
eval("uberBar_progress_style_#{progress[0]}.set_fg(Gtk::STATE_PRELIGHT, #{progress[5].join('*255, ')}*255)")
eval("uberBar_progress_#{progress[0]}.set_style uberBar_progress_style_#{progress[0]}")
eval("uberBar_progress_#{progress[0]}.height_request = #{progress[1][3]}")
eval("uberBar_progress_#{progress[0]}.width_request = #{progress[1][2]}")
eval("uberBar_layout.put(uberBar_progress_#{progress[0]}, #{progress[1][0]}, #{progress[1][1]})")
end


uberBar.show_all
uberBar.resize(window_width.to_i, window_height.to_i)
window_position[0] = [[0, window_position[0].to_i].max, (Gdk.screen_width-window_width.to_i)].min
window_position[1] = [[0, window_position[1].to_i].max, (Gdk.screen_height-window_height.to_i)].min
uberBar.move(window_position[0].to_i, window_position[1].to_i)
#uberBar.keep_above = true


done = true
}
wait_while { !done }


before_dying {
done = false
Gtk.queue {
window_width = uberBar.allocation.width
window_height = uberBar.allocation.height
window_position = uberBar.position
uberBar.destroy
done = true
}
wait_until { done }
Settings[Char.name]['window_width'] = window_width
Settings[Char.name]['window_height'] = window_height
Settings[Char.name]['window_position'] = window_position if (window_position.class == Array) and (window_position[0].to_i > -5) and (window_position[1].to_i > -5)
Settings.save
}


loop {
wait_while { oldRT.to_i == checkrt.to_i and oldCT.to_i == checkcastrt.to_i and oldSS == XMLData.indicator.to_s and oldHP == checkhealth and oldMP == checkmana and oldST == checkstamina and oldSP == checkspirit and oldXP ==

XMLData.next_level_text and oldMD == XMLData.mind_text and oldSN == XMLData.stance_text and oldEN == XMLData.encumbrance_text and oldIN == XMLData.injuries.to_s and window_close == false }
if window_close then exit end
nowTime = Time.now
nowRT = checkrt
nowCT = checkcastrt
doLines = ""

if oldHP != checkhealth then echo "updated health" if debug ; oldHP = checkhealth ; doLines += "uberBar_progress_health.fraction = percenthealth/100.0 ; uberBar_progress_health.text = \"#

{checkhealth}/#{maxhealth}\" ; " end
if oldMP != checkmana then echo "updated mana" if debug ; oldMP = checkmana ; doLines += "uberBar_progress_mana.fraction = percentmana/100.0 ; uberBar_progress_mana.text = \"#{checkmana}/#

{maxmana}\" ; " end
if oldST != checkstamina then echo "updated stamina" if debug ; oldST = checkstamina ; doLines += "uberBar_progress_stamina.fraction = percentstamina/100.0 ; uberBar_progress_stamina.text = \"#

{checkstamina}/#{maxstamina}\" ; " end
if oldSP != checkspirit then echo "updated spirit" if debug ; oldSP = checkspirit ; doLines += "uberBar_progress_spirit.fraction = percentspirit/100.0 ; uberBar_progress_spirit.text = \"#

{checkspirit}/#{maxspirit}\" ; " end
if oldMD != XMLData.mind_text then echo "updated mind" if debug ; oldMD = XMLData.mind_text ; doLines += "uberBar_progress_mind.fraction = XMLData.mind_value/100.0 ; uberBar_progress_mind.text =

XMLData.mind_text ; " end
if oldSN != XMLData.stance_text then echo "updated stance" if debug ; oldSN = XMLData.stance_text ; doLines += "uberBar_progress_stance.fraction = XMLData.stance_value/100.0 ; uberBar_progress_stance.text =

XMLData.stance_text ; " end
if oldEN != XMLData.encumbrance_text then echo "updated encumbr" if debug ; oldEN = XMLData.encumbrance_text ; doLines += "uberBar_progress_encumb.fraction = XMLData.encumbrance_value/100.0 ; uberBar_progress_encumb.text

= XMLData.encumbrance_text ; " end
if oldRM != Room.current.id then echo "updated room" if debug ; oldRM = Room.current.id ; doLines += "uberBar_label_roomnum.text = #{Room.current.id}.to_s ; " end
if oldRT != nowRT then echo "updated roundtime" if debug
oldRTs = nowRT if oldRTs == 0
oldRTs = 0 if nowRT == 0
doLines += "uberBar_progress_rthard.fraction = #{nowRT/(oldRTs+0.001)} ; uberBar_progress_rthard.text = \"#{(nowRT+0.999).to_i}\" ; "
oldRT = nowRT
end
if oldCT != nowCT then echo "updated cast roundtime" if debug
oldCTs = nowCT if oldCTs == 0
oldCTs = 0 if nowCT == 0
doLines += "uberBar_progress_rtcast.fraction = #{nowCT/(oldCTs+0.001)} ; uberBar_progress_rtcast.text = \"#{(nowCT+0.999).to_i}\" ; "
oldCT = nowCT
end
if oldSS != XMLData.indicator.to_s then echo "updated status" if debug ; oldSS = XMLData.indicator.to_s
setupstatus.each do |ss|
doLines += "uberBar_layout.move(uberBar_status_#{ss[0]}, -50, -50) ; "
if XMLData.indicator[ss[0]] == "y"
doLines += "uberBar_layout.move(uberBar_status_#{ss[0]}, #{ss[1]}, #{ss[2]}) ; "
end
end
end
if oldIN != XMLData.injuries.to_s then echo "updated wounds" if debug ; oldIN = XMLData.injuries.to_s
woundsev = 0
areas.each do |area|
arean.each do |an|
doLines += "uberBar_layout.move(uberBar_damage_#{area}_#{an[0]}, -50, -50) ; "
end
if eval("Wounds.#{area}") > 0 then woundsev = eval("Wounds.#{area}") ; doLines += "uberBar_layout.move(uberBar_damage_#{area}_w#{woun dsev}, health_locs[\"#{area}\"][0], health_locs[\"#{area}\"][1]) ; "
elsif eval("Scars.#{area}") > 0 then woundsev = eval("Scars.#{area}") ; doLines += "uberBar_layout.move(uberBar_damage_#{area}_s#{woun dsev}, health_locs[\"#{area}\"][0], health_locs[\"#{area}\"][1]) ; "
end
end
end
if oldXP != XMLData.next_level_text then echo "updated exper" if debug ; oldXP = XMLData.next_level_text
xpnNLT = XMLData.next_level_text
if xpnNLT =~ /( experience| until next level)/
xpnCur = xpnNLT.delete(' experience').delete(' until next level').to_i
xpnLast = xpnOld - xpnCur
xpnLast *= -1 if xpnLast < 0
xpnLast = 0 if xpnLast > 2499
else
xpnCur = 0
xpnLast = 0
end
if firstpulse
xpnFirstTime = Time.now - 1
xpnTotal = 0
xpnLast = 0
firstpulse = false
end
if capped
xpnCap = (xpnCur / 2500 + 1) * 2500 - xpnCur
xpnValue = (100 - (xpnCap / 25)) / 100.00
xpnText = "#{xpnCap} until TP"
else
xpnValue = XMLData.next_level_value.to_i / 100.00
xpnText = sprintf("Level: %2s %6s TNL", Char.level, xpnCur)
end
xpnTotal += xpnLast
xpnHour = ((1.00 * xpnTotal) / ((nowTime - xpnFirstTime)/3600.00)).to_i
xpnOld = xpnCur
doLines += "uberBar_progress_exp.fraction = xpnValue ; uberBar_progress_exp.text = xpnText ; uberBar_label_xplogin.text = xpnTotal.to_s ; uberBar_label_xptotal.text = xpnHour.to_s ; uberBar_label_xppulse.text = xpnLast.to_s ; "
end


doLines += "done = true"
done = false
Gtk.queue { eval(doLines) }
wait_while { !done }
}

Whirlin
03-19-2015, 09:56 PM
error in Gtk.queue: (eval):15: syntax error, unexpected '=', expecting end-of-input
= XMLData.encumbrance_text ; u...

Tgo01
03-19-2015, 09:56 PM
error in Gtk.queue: (eval):15: syntax error, unexpected '=', expecting end-of-input
= XMLData.encumbrance_text ; u...

Why do you suck so much? :(

Tgo01
03-19-2015, 09:56 PM
I had it working on my end, which theme thingie are you using?

Whirlin
03-19-2015, 09:59 PM
It's cause I just copy/pasted from the forum code tags, which inserted a shit ton of additional paragraph breaks, breaking some syntaxes... As I remove the additional spacing, various parts of the bar show up!

Tgo01
03-19-2015, 10:01 PM
It's cause I just copy/pasted from the forum code tags, which inserted a shit ton of additional paragraph breaks, breaking some syntaxes... As I remove the additional spacing, various parts of the bar show up!

I thought this might be the problem too so I copy pasted what I had copy and pasted into a new script and I got the same error.

Tgo01
03-19-2015, 10:04 PM
All you really have to do is use your old code and just add these lines towards the beginning of the script:


uberBar_status_bar = nil
uberBar_progress_style_rthard = nil
uberBar_progress_style_rtcast = nil
uberBar_progress_style_health = nil
uberBar_progress_style_mana = nil
uberBar_progress_style_stamina = nil
uberBar_progress_style_spirit = nil
uberBar_progress_style_exp = nil
uberBar_progress_style_mind = nil
uberBar_progress_style_stance = nil
uberBar_progress_style_encumb = nil


I added them right after:



if $SAFE > 0
echo "error: This script needs to be trusted to work. (;trust #{script.name.downcase})"
exit
end

Whirlin
03-19-2015, 10:12 PM
yep, added that... I loaded up both files in Word with a compare in place, looking for other changes... When running it again I got an error regarding:

error in Gtk.queue: no implicit conversion from nil to integer

Whirlin
03-19-2015, 10:13 PM
yep, added that... I loaded up both files in Word with a compare in place, looking for other changes... When running it again I got an error regarding:

error in Gtk.queue: no implicit conversion from nil to integer

HP, SP, Stamina, Spirit, Mind, Stance, and Encumbrance are all populating on the bar correctly... RT and XP seem to be erroneous

Tgo01
03-19-2015, 10:26 PM
HP, SP, Stamina, Spirit, Mind, Stance, and Encumbrance are all populating on the bar correctly... RT and XP seem to be erroneous

Which part of the experience is erroneous? It seems to be working fine on my end.

Only thing I see wrong with the RT is sometimes the roundtime will shoot back up to 2 seconds after counting down to 0, is that what you're referring to or is it something else?

Whirlin
03-19-2015, 10:31 PM
Just tested it... Worked fine on my normal account... those attributes won't populate on the F2P account

Weird as hell

Tgo01
03-19-2015, 10:33 PM
Just tested it... Worked fine on my normal account... those attributes won't populate on the F2P account

Weird as hell

Yeah that's odd, don't see why it would matter if it's a free account or not :/

Whirlin
03-19-2015, 10:44 PM
I also just tested some of the variables it calls... I was successfully able to pull RT, castRT, XMLData.next_level_text with just ;e echo.... So I'm really stumped as to what's causing the problems... I know you have an F2P account... any problems on yours?

Tgo01
03-19-2015, 11:04 PM
I also just tested some of the variables it calls... I was successfully able to pull RT, castRT, XMLData.next_level_text with just ;e echo.... So I'm really stumped as to what's causing the problems... I know you have an F2P account... any problems on yours?

I actually deleted all of my f2p account information.

I can make another f2p account to test it out with later.

m444w
03-19-2015, 11:11 PM
Use a gist for the love of Arjuna



https://gist.github.com

Tgo01
03-19-2015, 11:18 PM
Use a gist for the love of Arjuna



https://gist.github.com

Never!!

Deathravin
03-20-2015, 02:59 PM
Updated and put it on the repository.

You still need to run one of the themes before you can run it. The themes build the images it uses and send the damage locations for each area to the main script. It's not the standard way it's done now, but it was a quick fix that seemed to work for me. Without running a theme the first time, it can't run.

Both the theme and the script need to be trusted.

'ubw-theme-dude'
'ubw-theme-sexy'
'ubw-theme-sf'

I generally prefer dude. I also have a Stormfront theme that changes its default view if you want that too. Included it in this comment.

As far as I know the themes should all still work... actually, not completely sure. But they work for me - though I did have quite a time getting them fixed after I re-activated. So who knows.

I also fixed a glitch with it crashing any time it got to a room with an error room number (lockers, rogue guild toolbenches, rogue guild master rooms, etc). Since that code was just left-over from ;uberbar for SF, I removed it. (;uberbar has the room # listed, ubw doesn't. ubw removed it to make room for the status icons)

Verified as working on an F2P account


__________________
Stormfront theme that changes the default health guy to 'dude' - also moves the status icons to the left. But since it also removes the speech-to-command button you will have to switch back to default for any new characters.

Tgo01
04-10-2015, 03:03 PM
REMEMBER: AFK SCRIPTING IS STRICTLY FORBIDDEN IN GS PRIME AND GS PLATNIUM. USAGE OF THIS SCRIPT WHILE NOT PAYING ATTENTION TO THE GAME SCREEN CAN CAUSE YOU TO GET IN TROUBLE WITH GMS IF YOU ARE CAUGHT.
PLEASE REMEMBER TO PAY ATTENTION TO THE GAME SCREEN WHILE RUNNING THIS SCRIPT IN GS PRIME AND GS PLATNIUM.

Must setup the script before using it by typing ;warrior setup

;warrior has had a major overhaul.

The ;warrior script now does the following guild skills:

All Batter Barrier tasks (99% certain on this.)
All Berserk tasks (100% certain on this.)
All Disarm Weapon tasks, including partner reps (99% certain on this.)
All Tackle tasks, including partner reps (99% certain on this.)
All War Cries tasks, including partner reps but not including critter reps (might not work for master or partner reps for cries learned after the first one but it should) (99% certain on this)
All Warrior Tricks tasks up to rank 26 have been tested but the script should work up until rank 36. Even after this point it should work for everything except master reps where you are taught a new trick after rank 26 (and even then it might work for some of them), and it probably won't work for audience reps for tricks learned after rank 26 (again though it actually might work for some of these) (100% certain on this.)

Here is the ;warrior help screen:

Solo tasks information:
Type ;warrior bat or ;warrior batter to work on Batter Barriers tasks.
Type ;warrior ber or ;warrior berserk to work on Berserk tasks.
Type ;warrior dis or ;warrior disarm to work on Disarm Weapon tasks.
Type ;warrior tac or ;warrior tackle to work on Tackle tasks.
Type ;warrior cri or ;warrior cries to work on War Cries tasks.
Type ;warrior tri or ;warrior tricks to work on Warrior Tricks tasks.

Partner task information:
Type ;warrior <any solo command> <partner name> to do a partner task with a partner who is in the room with you.
Type ;warrior <any solo command> <partner name> <room number> to first run to the specified room number (where your partner should be) before doing a partner task.
Using ;warrior <command> <partner name> <room number> will continue attempting to do solo tasks and partner tasks until you kill script.

To help others with their tasks:
Type ;warrior partner to set your character up to help anyone with their partner reps.
Type ;warrior partner name to set your character up to help only the specified person with their partner reps.
Type ;warrior setup to enter the setup screen.
Type ;warrior help to display this help screen.

Some Disarm and Tricks tasks will require you to have silvers in the bank in order to finish these tasks.
Good idea to have at least 10k in the bank when using this script for those skills.

The script does everything you need; it will buy weapons when needed, buy containers when needed, buy drinks when needed, there is an option so the script will move to a different warrior guild if needed for certain tasks like polishing armor and scrubbing floors. The script will even join the warrior guild if you haven't already.

Currently only works for Icemule, Landing, and Solhaven guilds.

I still need the room number for the metal stage door for Landing and Solhaven guild if anyone can provide these to me if they get a Batter Barrier task requiring the metal stage door. This is the room number where you actually perform the task on the stage door, after typing "go metal door." You can't enter this room until you receive a task requiring it.

In the meantime the script will still work for metal stage door tasks if you're running the script in Landing or Solhaven, it will just run to Icemule first.

I also need the room number where crates and sheet metal can be found in Solhaven for Batter Barrier tasks; I looked all over for them but couldn't find them so they might not even exist. Please let me know either way. Again the script will still work if given these tasks in Solhaven, it will just run to the Landing first.

If you want to help others with their partner reps you simply type:

;warrior partner

And the script will help out anyone who is also running this script and has you set as their partner.

If you only want to help a specific person and not just any grimy halfling warrior then type:

;warrior partner <name of partner>

And this will only help the person you specified.

Likewise if you're doing guild work and you require the help of a partner and they are in the room with you when you start the script type:

;warrior <name of skill> <name of partner>

Example:

;warrior disarm bob

The script will ask Bob for help. If they are also running ;warrior partner then the scripts will communicate with one another via whispers and everything will be automated on both ends. If your partner is not running the ;warrior script then your end can still be automated by simply typing NOD when the script prompts you to.

After finishing up your partner task the script will exit the next time you are given a partner task.

If someone is helping you with guild tasks and will be in a specific room whenever you need their help with partner reps then use the following command:

;warrior <name of skill> <name of partner> <room number>

Example:

;warrior tackle bob 3400

In this example whenever you are given a partner task you will run to room 3400 first, the script will then wait until Bob is in the room with you then proceed to communicate with Bob/Bob's warrior script via whispers. As soon as the partner task is finished your character will turn in the task, continue to automate tasks and if given another partner task it will again run to room 3400 and wait for Bob and continue on. This means all tasks, including partner tasks, will be 100% automated.

If there is any interest I suppose I could add an option that would Lnet message the specified partner when their help is needed so they don't have to sit in the specified room the whole time and can just run to the room when they receive the Lnet message.

The person helping with tasks should have ;warrior partner running first before being asked for help. It's no big deal if they aren't running it first; the script will inform the person asking for help that the other person didn't answer and it will ask again in 10 seconds and if the other person has started up ;warrior partner by then it will proceed as normal. The script will keep asking every 10 seconds until confirmation is received or the person types NOD if the person is not using ;warrior partner to help with your tasks.

Also it's not necessary to enter a character's full name, just their partial name would work like "jon" for "Jones."

Gelston
04-10-2015, 03:04 PM
Your script is dumb and your face is stupid.

Tgo01
04-10-2015, 03:08 PM
If you want the script to work for other guilds you can either: A) Wait for me to get around to getting the required information (don't hold your breath) or B) Gather the information for me.

Let me know if you want the script to work for another guild and I'll tell you what information I need.

Gelston
04-10-2015, 03:08 PM
If you want the script to work for other guilds you can either: A) Wait for me to get around to getting the required information (don't hold your breath) or B) Gather the information for me.

Let me know if you want the script to work for another guild and I'll tell you what information I need.

I need a bard guild script.

Tgo01
04-10-2015, 03:09 PM
Your script is dumb and your face is stupid.

You're dumb and stupid! :(

Tgo01
04-10-2015, 03:11 PM
I need a bard guild script.



if Char.prof == 'Bard'
echo "There is no bard guild skills to work on!"
else
echo "You're not a bard!"
end

Gelston
04-10-2015, 03:12 PM
if Char.prof == 'Bard'
echo "There is no bard guild skills to work on!"
else
echo "You're not a bard!"
end


Doesn't even take you to it and join you? Pathetic.

Tgo01
04-10-2015, 03:15 PM
Doesn't even take you to it and join you? Pathetic.

:(

Thondalar
04-10-2015, 04:37 PM
>;warrior cries
--- Lich: warrior active.
>
---------------------------------
---------------------------------
---------------------------------
Closest Warrior Guild is: Landing
---------------------------------
---------------------------------
---------------------------------
>
-------------------------------
-------------------------------
-------------------------------
Doing task - War Cries: Masters
-------------------------------
-------------------------------
-------------------------------
--- Lich: go2 active.
[go2: ETA: 0:00:00 (3 rooms to move through)]
[go2]>east
[go2]>east
[Warrior Guild, Courtyard E - 16980]
Standing in the shadow of the great Guild Hall, you can spy into the eastern ground-floor windows, the closest of which belongs to the Guild Masters' office. The second floor window has a thick film of dust, appearing neglected. A converging set of dirt footpaths scar the plush, grassy lawn, leading east to the East Lawn and woodshed, west to the courtyard center and south to other parts of the courtyard. You also see some scattered leaves and a pair of large bear topiaries.
Obvious paths: east, south, west
>
[go2]>east
[Warrior Guild, East Lawn - 16981]
Walking along this path that stretches across the East Lawn, you can smell the poignantly sweet scent wafting from the trellis draped with flower vines. The trellis obscures the view of the pugilism ring that sits alongside the eastern wall of the Guild Hall. South of the path sits the woodshed. You also see some scattered leaves, a row of tackling dummies, some huckleberry bushes and a row of saunas.
Obvious paths: east, west
>
[Warrior Guild, East Lawn - 16982]
The paths from the north and west break into a large, well-worn spot in the middle of this expansive part of the East Lawn. Obviously, this bare patch was created by the many guild denizens who commit their robust daily practice here. You also see Master at Arms Erta, Master at Arms Witt, some scattered leaves, Master at Arms Khalea, Master at Arms Olaff, Master at Arms Gaetan, a row of workout wheels and a rickety wood shed.
Obvious paths: north, west
>
[go2: travel time: 0:00:00]
--- Lich: go2 has exited.
[warrior]>ask Gaetan about training warcries
You ask Gaetan about getting some training in War Cries.

Gaetan pulls Jimbrov aside for some instruction.
[Warrior Guild, Shady Lawn - 4]
This is a quiet corner of the lawn and rather private as well, providing a good refuge from the din of the practice area--a perfect place for discussion, contemplation or simply escaping the crowd. You also see Master at Arms Gaetan and a weapons case.
Obvious paths: out
>
"Let me show you how Yertie's Yowlp is done." Gaetan inhales deeply, throws back his shoulders and lets out a resounding yowlp. You feel emboldened.

Gaetan smiles smugly. "Now you try a few times."

>
Gaetan raises an eyebrow at you. "Need me to show you again? All right..."
>
"Let me show you how Yertie's Yowlp is done." Gaetan inhales deeply, throws back his shoulders and lets out a resounding yowlp. You feel emboldened.

Gaetan smiles smugly. "Now you try a few times."
>
Gaetan raises an eyebrow at you. "Need me to show you again? All right..."
>
"Let me show you how Yertie's Yowlp is done." Gaetan inhales deeply, throws back his shoulders and lets out a resounding yowlp. You feel emboldened.

Gaetan smiles smugly. "Now you try a few times."


etc...etc...etc...


?

Tgo01
04-10-2015, 04:45 PM
It doesn't say "Click here to begin" when you're supposed to start yowlping? It does that for the first task, bellow.

Alright, I uploaded a version that should work around that.

Whirlin
04-10-2015, 05:35 PM
>;warrior cries

?
Well, you're certainly getting your crying reps done on the forums...


ohhhhhhh

Warriorbird
04-10-2015, 06:16 PM
;warrior is amazing.

Thanks man.

Tgo01
04-11-2015, 12:15 AM
Uploaded a new version of ;warrior.

I noticed that now all of a sudden you don't need to be on a metal stage door/wooden stage door task to actually enter those rooms so I went to go get the room numbers for Solhaven and Landing and noticed they use the same Lich room numbers and apparently they must also share the same room numbers as the Nations door rooms because the script tried to take me there when I used ;go2 to go to those room numbers.

In any case I fixed the problem by having the script just take you right outside the door room instead so the wooden and metal stage door information is working for Icemule, Landing, and Solhaven. Still need room numbers for Solhaven crates and sheet metal rooms, if those even exist.

Malisai
04-11-2015, 01:18 AM
Here is some stuff, i dont do enough warrior things to know where all the rooms that you need are, but here are the ones i found.

Guild rooms:
River's Rest Rooms:
Guild Master: 17353
Training Administrator Room: 17368
Master Room: 17344

River's Rest Rooms:
Sauna Room:
Tub Room:
Dark Chamber Room: 17351

River's Rest Rooms:
Board Room: 17366
Ice Room: 17358
Branch Room:
Crate Room:
Sheet Metal Room:
Boxes Room: 17366
Stage Door Room:

River's Rest Rooms:
Audience Room:
Tool Rack Room: 17357

River's Rest Rooms:
Room To Buy Drinks:
Order number:
Order name:
Price:



River's Rest Rooms:
Disarm wheel room: 17344
17362 [warrior guild, frigidarium]
17363 [warrior guild, steam room]

Warriorbird
04-11-2015, 01:29 AM
Seems to get confused on critter runs and go "You're already here!" over and over sometimes. Is this perhaps an issue where I only need to have consecutive room numbers?

Tgo01
04-11-2015, 01:35 AM
Thank you, Malisai, I added the information to the list.

I also cleaned up the list a bit so it's easier to read and it's sorted by town now.

Tgo01
04-11-2015, 01:36 AM
Seems to get confused on critter runs and go "You're already here!" over and over sometimes. Is this perhaps an issue where I only need to have consecutive room numbers?

Hmm, that's odd. What do you have in the critter room numbers field and which task is it working on?

Warriorbird
04-11-2015, 01:55 AM
Hmm, that's odd. What do you have in the critter room numbers field and which task is it working on?

I have these connected but not in order rooms in Stone Valley.

3730, 3764, 3765, 3789, 3790, 3791, 3792, 3793, 3794, 3795, 3796, 3797, 3798, 3799

...because it said list all rooms.

Then running it on a disarm task:

[go2: travel time: 0:00:20]
--- Lich: go2 has exited.
--- Lich: go2 active.
[go2: you're already here...]
--- Lich: go2 has exited.
--- Lich: go2 active.
[go2: you're already here...]
--- Lich: go2 has exited.
--- Lich: go2 active.
[go2: you're already here...]
--- Lich: go2 has exited.
--- Lich: go2 active.
[go2: you're already here...]
--- Lich: go2 has exited.
--- Lich: go2 active.
[go2: you're already here...]
--- Lich: go2 has exited.

before I paused the script.

I also have it trying to trade in my task on warcries right now, which was critters. It seemed to work fine after I did though, seguing to partner.

Tgo01
04-11-2015, 02:00 AM
It should be fine if the rooms are listed in any order.

Did you happen to notice which room this happened in? Was it all rooms? Random? Just one room? Let me know if it happens again, I haven't experienced this bug before myself.

Also try removing the space after the commas, I think while testing this the spaces caused a problem.

Tgo01
04-11-2015, 02:06 AM
Yeah the spaces after the commas might be the culprit, I just tested the string of rooms with my hunting script (which basically uses the same code to move around rooms) and it worked fine.

Warriorbird
04-11-2015, 02:20 AM
Yeah the spaces after the commas might be the culprit, I just tested the string of rooms with my hunting script (which basically uses the same code to move around rooms) and it worked fine.

I'll run it edited.

EDIT:

Seems to work perfect on that bit now.

Tgo01
04-14-2015, 01:27 AM
Another update to ;warrior.

Things fixed/changed:

Script now uses room tags so the script should work for every guild now and no further information is required (with a couple of exceptions noted below)
Script now finds/whispers correct partner, before script would just whisper the first person listed in the room
Script now uses free drinks in warrior guild for wtrick guzzle tasks, saving you silvers
Script now buys weapons whenever needed for disarm and warrior trick tasks and remembers it has bought them even if script is stopped (but will forget after exiting the game) and will reuse weapons whenever possible. Before the script threw most weapons away so this should save more silvers!
All of the various settings for weapons to use for tasks requiring being disarmed are no longer needed and have been removed from setup. Script is very careful to only use weapons it has purchased from the weapon shop for tasks in which you are disarmed.
Script now automatically goes through the weaponshop catalog (no matter which town you're in) and looks for the cheapest weapon to buy for the type of weapon it needs (blunt, edged, polearm, etc etc), saving even more coinage!

Things that couldn't be fixed/changed:

Crate rooms and sheet metal rooms apparently don't have any room tags so Batter Barriers tasks requiring these will not work for any town outside of Icemule, Landing, and Solhaven. Well, the script will work, it will just attempt to take you to one of these towns first. It would be best if you got these room numbers for me so I can add them to them script before attempting to work on your Batter Barriers skill.

Script still only travels between Icemule, Landing, and Solhaven to finish certain tasks. If there are other guilds that are close together let me know which ones and I can set the script up to travel between them as well.

These are the names of the hedges I currently have listed in the script: hedge, shrub, tree, bush, topiary

If the guild you're working out of has different names for the hedges let me know so I can add it to the script otherwise the script will skip all hedges not listed.

Druhar
04-16-2015, 09:18 PM
;tpick works like a champ for me at disarming boxes, but it stops mid task at the calipers. I am not skilled enough in the guild to use the calipers yet, so it stops working and asks me to manually pick the lock using a trick or use lm sense. Any thoughts on a work around for those of us that haven't worked lock mastery up to the point where we can use calipers?

Tgo01
04-16-2015, 09:23 PM
You can use the v variable when starting the script so the script will always use whichever lock you have indicated in the vaalin lock pick setting in setup, this will also skip using calipers.

JackWhisper
04-16-2015, 09:36 PM
Saw TGO posting in this thread, immediately thought of Mickey Avalon

TGO: MY SCRIPTS! LARGE LIKE THE CHARGERS THE WHOLE TEAM! YO SCRIPT WAS CODED LIKE YOU THIRTEEN!

rofl.

Tgo01
04-21-2015, 01:12 AM
;warrior now does War Cry critter reps and Warrior Tricks Spin Attack reps.

Tgo01
04-21-2015, 01:23 AM
Not sure if anyone downloaded that new version yet but I uploaded a new version after that version. I didn't know using warcries over and over until your voice wore out made it more difficult to perform warcries successfully so I added a 15 second wait between each warcry attempt so you don't wear out your voice...at least not so fast, anyways.

Warriorbird
04-21-2015, 01:47 AM
Not sure if anyone downloaded that new version yet but I uploaded a new version after that version. I didn't know using warcries over and over until your voice wore out made it more difficult to perform warcries successfully so I added a 15 second wait between each warcry attempt so you don't wear out your voice...at least not so fast, anyways.

Will download. Thanks.