PDA

View Full Version : the dreaded zmud...



pabstblueribbon
03-25-2007, 12:03 PM
ok, i like zmud. So if there's anyone else out there thats got an autohunter working for zmud i'd like to have your thoughts on this script. At the moment, it will follow its path and kill the rats, gather the arrows, etc. But its really unelegant. I resorted to #TEMP triggers and enabling and disabling of class folders to bypass the mud eating any commands sent to fast. IE more than one line at a time. Main problem is the temp trigger.. not sure if there's a way i can pass a command into a queue and have it trigger on the prompt... but i digress..
And before you say, zmud sucks!! the reason i want this, is so that I can do things like this
#TRIGGER {%1 does blah..} {#MATH wait %random( 5, 10);#ALARM {+@wait} {#CASE %random {nod %1} {bow %1} {sayto 1% howdy there stranger!} {greet %1}};#di} "Old|afk"

Which upon the first brace would pick a random number between 5 and 10, wait for that number, then randomly respond. Pretty cool to use just for random shit if you go afk a bit.. can also make it so that you walk a bit randomly, with random pauses between rooms.

Anyways.. here it is... just ask and i'll explain whats going on if you cant figure it out. Oh and snagging the gsl codes straight from the game ROCKS! no more looking or typing EXP to see if yer minds fried, (also doesnt give away the fact that you're scripting, AND if a GM looks at your FE type its OTHER.. they dont know if yer runnin a script or not)


#CLASS {Old}
#TRIGGER {That'll be five silvers entrance fee} {give guard 5;#step}
#TRIGGER {~[&%*room~]$} {#COLOR %eval( %color( bright)+%color( white));@monster = 0;@people = ""}
#TRIGGER {{Also here|Also in the room}: &%*people} {}
#CLASS 0
#CLASS {Old|autohunter}
#ALIAS resumelaunch {#echo Resuming Launch;#resume l1;#resume l2;#resume l3;#resume l4;#resume l5;#resume l6}
#ALIAS abortlaunch {#echo Aborting Launch;#suspend sleepy;#suspend l1;#suspend l2;#suspend l3;#suspend l4;#suspend l5;#suspend l6}
#ALIAS gathering {gather arrow}
#TRIGGER {It carried a * &%wchest on it!} {get @chest} "" {disable}
#TRIGGER {Get what?} {stance defensive;#t- find;#t+ walk;#t+ retreatpoint;#t- startpoint;#t- loot;#ALARM +.5 {look;#Resume a1}}
#TRIGGER "kill" {You have regained your physical balance.} {#temp firey {You remove} {fire @autotarget};get 1 arrow from my quiver} "" {disable}
#TRIGGER "aimcheck" {I could not find what you} {put arrow inside arrow in my quiver;#unt firey;#t- loot;#t+ find;#t+ walk;#ALARM +.5 {look;#Resume a1}} "" {disable}
#TRIGGER {You have slain} {#T- kill;#t- aimcheck;#T+ rest;#t+ loot}
#TRIGGER "loot" {You have regained your physical balance.} {#alarm +.5 {search @autotarget};#t- loot;#t+ gather;#alarm +1 {gathering}} "" {disable}
#TRIGGER {{ground and dies.|final squeal}} {#T- kill;#t- aimcheck;#T+ rest;#t+ loot}
#TRIGGER {Roundtime: &%droundtime sec.} {#add roundtime .5;#alarm +@roundtime {#Echo You have regained your physical balance.};#var roundtime2 %1}
#TRIGGER {A * is quite dead already.} {search @autotarget;#t- loot;#temp {^~>} {gathering}}
#TRIGGER {You pick up a} {put @chest in my longcoat}
#CLASS 0
#CLASS {Old|autohunter|find}
#ALIAS attacker {#if (@targetter = 1) {#t- walk;#suspend a1;#T+ kill;#t+ aimcheck;#T- find;#t- gather;#temp {You sling a composite bow off} {get 1 arrow from my quiver};#temp {You remove a single} {fire @target};remove bow;#va autotarget thyril;#va targetter 0} {#va targetter 0}}
#TRIGGER {{a giant rat|a giant rat,}} {#va autotarget rat;#va monster 1}
#TRIGGER {^Obvious {paths|exits}:} {#IF (@monster = 1 and @people == "") {#t- walk;#suspend a1;#T+ kill;#t+ aimcheck;#T- find;#t- gather;get 1 arrow from my quiver;#alarm +.5 {fire @autotarget}} {#noop}}
#CLASS 0
#CLASS {Old|autohunter|walk}
#TRIGGER {{Obvious paths:|Obvious exits:}} {#ALARM "a1" +.5 {#STEP;#PAUSE}} "" {notrig}
#CLASS 0
#CLASS {Old|autohunter|RetreatPoint}
#TRIGGER {~[Frozen Garden, Path~]} {#slow fromhunt}
#CLASS 0
#CLASS {Old|autohunter|StartPoint}
#TRIGGER "autohunt" {~[Frozen Garden, Path~]} {#echo Starting;exp;#T- kill;#T+ find;#T+ autohunt;#t+ walk;#alarm "l1" +1 {#cr;#echo 4 minutes remaining};#alarm "l2" +2 {cast;#cr;#echo 3 minutes remaining and checking if we are hungry...};#alarm "l3" +3 {say hmm};#alarm "l4" +4 {#cr;#echo 2 minutes remaining};#alarm "l5" +5 {#cr;#echo 1 minute remaining};stance neutral;#alarm "l6" +6 {#cr;#echo Starting;#slow lookrats;#pause}}
#CLASS 0
#CLASS {Old|autohunter|Gather}
#TRIGGER {You gather * %w arrows} {#var arrow 0;put arrow inside arrow in my quiver}
#TRIGGER {You pick up the * arrow, but} {#var arrow 0;put arrow inside arrow in my quiver}
#TRIGGER {The arrow is out of your reach.} {gather arrow}
#TRIGGER {You add a * arrow} {#t- gather;#t+ find;#t+ walk;#ALARM +.5 {look;#Resume a1}}
#TRIGGER {You bundle} {#t- gather;#t+ find;#t+ walk;#ALARM +.5 {look;#Resume a1}}
#CLASS 0

StrayRogue
03-25-2007, 03:02 PM
It's simple for a GM to check if you're running a script or not.

Celephais
03-25-2007, 04:27 PM
It's simple for a GM to check if you're running a script or not.

With stormfront there is a tag that's sent for script started, and another sent that says script ended when it ends. So I'm pretty sure they've got flags set up to point out long running scripts while a player is gaining exp. Not sure what the Wizard does.

pabstblueribbon
03-25-2007, 08:16 PM
Exactly my point cel. Its not so much that they cant detect it in zmud. Hell it'd be easy. Port him to a locale and send out some text and see if it fires.

The point is to not get looked at by doing extremely complicated and seemingly random stuff. Like the amount of time between moving can be random. You could set up a timer that activates randomly that could have a million case's.. to say or do things that interact with the environment. I would think GMs not knowing your terminal type would help as well.

Im sure any of the other front ends would work just fine and do even more complicated behaviours. I just prefer zmud because.. well thats what I know. So anyone figured out how to queue commands so that the mud doesnt eat them with zmud?

Celephais
03-25-2007, 08:27 PM
I would think GMs not knowing your terminal type would help as well.

Actually that probably throws up a few red flags on it's own... because they know you're not using a standard FE it's easier for you to hide scripts.

The type ahead problem is difficult to work around, you can't simply buffer commands and re-play them if you get the type ahead, safest bet is to wait for a prompt between each command, but you'll severly slow yourself down.

pabstblueribbon
03-25-2007, 08:47 PM
I dont know. I think its possible.. someone out there knows.. its probably something to do with..

%additem(s,list)


which adds items to a list.. then using

a simple prompt trigger..

^~> to #exec any commands in the list... then

%delete item to remove it from the queue.

might be a way to use %onoutput to input commands from the list when it sees any output

I'll post on the zmud forums and post back on what i've found.

Then i'll chop up the code above down into specific peices. The finder function, the filter out players function, the walking function, and then the command entering function.

Celephais
03-25-2007, 10:39 PM
I haven't used ZMud in a long time, but you can find some posts on the forums by "GuinnessKMF" which was me, should have a few things on magic tracking and making an exp window, advantage calculator, few other items. There was a graphics pack that I don't know if it's hosted on the forums, if not I can try to dig up my backup if you want them (basically a resource rip of the Wizard FE)

Kranar
03-26-2007, 12:43 PM
There's no way for Simu to know what client you're using, they just get a tag that tells them whether you're using SF of WizardFE but you can just fake it.

There is a sneaky tag that's sent if you use StormFront that flags whether you're scripting or not, WizardFE doesn't do any such thing. In all honesty though, there isn't much that the GMs do to keep track of scripters, people get caught by other players rather than by some hidden pattern matching that tracks scripters.