Author Topic: CMUD auto rescue script for tanks  (Read 6571 times)

0 Members and 1 Guest are viewing this topic.

Doug

  • Newbie
  • Posts: 12
CMUD auto rescue script for tanks
« on: February 12, 2014, 02:48:45 PM »
Hi All!  I'm new to arctic/scripting and was wondering if anyone had an auto rescue script so I can auto rescue caster types.  I use cmud fwiw.   Currently I use a manual setup of highlighting names with rescue aliases but the action seems too fast for a manual setup...or maybe I'm just getting old...not sure.  Anyway, thanks for the help!

« Last Edit: February 15, 2014, 11:38:44 AM by Doug »

Brad

  • Fodder
  • *
  • Posts: 88
Re: auto rescue script for tanks
« Reply #1 on: February 14, 2014, 03:40:09 PM »
I've found a need for this as well.  I have heard of a "look" command setting off triggers to rescue people fighting/sitting.  That might be the way to go.  I don't know of any way to trigger rescue off of "assist" that wouldn't go off every round someone dodged.  That might mess up if someone was charmed as well.  I'm throwing around a few ideas of how to make this work atm, It's not as easy as it seems.

Brad

Oligo

  • Guest
Re: auto rescue script for tanks
« Reply #2 on: February 15, 2014, 02:10:16 AM »
You don't want a look based trigger, would be too slow to react to mage tether bombs and other ambush attempts.
These occur with greater regularity at higher levels of play.


Doug

  • Newbie
  • Posts: 12
Re: auto rescue script for tanks
« Reply #3 on: February 15, 2014, 11:37:43 AM »
Gulca posted a rescue script last year that looks pretty sweet

http://arcticmud.org/forums/index.php/topic,226.msg4116.html#msg4116

I've been trying to convert this to cmud script but I lack the knowledge to convert wintin to cmud.  Anyone have any tips?  I might need to go out and buy scripting for dummies =p

Loretta also mentioned in the above thread about an auto target rescue for last attacked caster...anyone use this?

gulca

  • Zone Leader
  • ***
  • Posts: 308
Re: CMUD auto rescue script for tanks
« Reply #4 on: February 15, 2014, 02:53:55 PM »
I never did compile a list of all aggro actions, and never will.

If you just need a basic auto-rescue, you need to be able to do the following.

1. A trigger to set your group members. (something I did not have. call me lazy :))
a. Through group command.
b. Manual alias setting.
I remember rescuing named mobs instead of my group when I wasn't paying attention and caused a few deaths. It is easy to run a check to see if the attacked is part of your group.

2. A flag to turn on when you see aggro actions on the above members.
a. Here you need to compile a list of aggro actions. The script that I posted contains only the "melee" attacks.
b. Lazy method is just to type "look", and look at who is fighting in the room.
c. Purpose of the flag is just to let you know you need to do something. If you get 10 actions that triggers this flag, you are not spamming 10 rescues in that round. You will only remember the last action and prepare to rescue that member.

3. Once the flag is on, your auto-rescue will rescue the "last" member that was aggro'ed.
a. If fancy, you need to keep track if you are already doing something else or in bash lag. You don't want to be spamming rescue if it is not needed.
b. Again, you want to only do 1 rescue per round.

4. Turn off flag once you did an action.
a. Again, to be fancy, you need a list of un-aggro actions.
b. To be lazy, just type look (not efficient as Oligo mentioned) and see who is still aggro'ed.

Oligo

  • Guest
Re: CMUD auto rescue script for tanks
« Reply #5 on: February 15, 2014, 05:26:03 PM »
This was a Finnish mage/tether bomb scenario, and a look trigger would be inherently weak in this situation.
Consider also stab scenarios.

435H 189V 1X 5.71% 841C Mem:2 Exits:N>
Leo slowly fades into existence.
Leo crashes into Trix in a thundering collision, knocking him to the ground!

435H 189V 1X 5.71% 841C Mem:2 Exits:N>
Sullivan heroically rescues Trix.

435H 189V 1X 5.71% 841C Mem:2 Exits:N>

« Last Edit: February 15, 2014, 05:56:46 PM by Oligo »

Brafu

  • Zoner
  • **
  • Posts: 170
Re: CMUD auto rescue script for tanks
« Reply #6 on: May 25, 2014, 11:01:45 PM »
The best way I have found to reliably make a rescue script is to use variables (or a database or something if your client supports it) in the actions and then set the variables when you join a group. Back when I would main a lot I relied heavily on my script to assist me, but I would never just go on full auto pilot because, aside from the fact it's against the rules, it isn't full proof and there are certain situations where it can, and will, get you messed up.

A small example of how I had to do it for wintin95...

#action {^%0 annihilates $AR%1} {#if {$rescue=1} {rescue $AR;#var rescue 0}} {1}

Now, naturally, that's just one small line of a fairly hefty script that tries to take into account many different types of attacks and also eliminate any potential spamming of rescue.  The script itself is, frankly, huge because of the limitations of wintin95, but even so it works and once I worked out the bug's it's never given me any issues.

Slunt

  • Newbie
  • Posts: 23
Re: CMUD auto rescue script for tanks
« Reply #7 on: May 27, 2014, 01:47:39 PM »
The way to do this is you need a list of your group mates. Make it how ever you like.

Then you need to prioritize this list so you need a pair key for each player in the list. (also in your table or list or tuple, hash or what ever)

During a combat round you need triggers to add names that are being attacked to a list. WHich is sorted by priority.
When the round ends you get a prompt,  on the prompt you need to evaluate the list and  fire rescue for the highest priority player on the list

This is a higher level explanation of how i would do it but hopefully if you have some programming knowledge you can make it happen utilizing your favorite scripting language. 

You could also have logic that breaks the routine and fires when ever a healer is attacked or similar.

Slunt

  • Newbie
  • Posts: 23
Re: CMUD auto rescue script for tanks
« Reply #8 on: May 27, 2014, 01:53:53 PM »
When i tanked i never used any rescue scripts. I used highlights and and aliases. I find the more i play in larger groups the slower the text seems to scroll. Some fights are very spammy, but you can make gags and highlights to help see what needs to be done.

enochvey

  • Fodder
  • *
  • Posts: 57
Re: CMUD auto rescue script for tanks
« Reply #9 on: May 29, 2014, 01:34:33 PM »
When i tanked i never used any rescue scripts. I used highlights and and aliases. I find the more i play in larger groups the slower the text seems to scroll. Some fights are very spammy, but you can make gags and highlights to help see what needs to be done.

Same, I use a highlight/alias system, have since the late 1990's.

(1) Highlight damage text of varying colors based opon the severity of the damage done. Example: Obliterate is red
(2) Highlight the names of people you group with, and even pets some other color than the damage text. Example: Green
(3) Highlight/sub other common, but important text. Example "rescues" is yellow, Breech success is subbed, etc.
(4) Gag common irrelevant text (I'm too lazy to do this, and it hasn't been necessary)
(5) Alias rescue to each group member upon forming  or changing of a group. Can do this with pets, but spirits/corpses bleh.
(6) Manually use the look command as needed to see who is fighting who and when.

The end result is that if you see damage text, or other relevant harmful activity BEFORE a highlighted group member on any line, you know they need a rescue. If you use the look command and see group member color AFTER a mob name, again they will need a rescue.

You are also notified when something happens and a group member will need a rescue before they get hit. For example; a mob rescues another mob or targets a group member, this should prompt action on your part to either rescue or use the look command to regain awareness of what is going on before you rescue.

The hardest part of this system is it requires manual input pretty much every group to make sure you have people aliased to rescue. It also requires above average ability to sift through large amounts of text and pick out only the info that you have highlighted or subbed previously. If you can do both of those, and also hit the rescue aliases fast enough/accurately enough, there really isn't a need for an actual script.

That having been said, my main atm is Paquitolos, and I think most people who have grouped with me would be able to say that I do well with both the timing and prioritizing of rescues. If people still want to use a script thats fine, but it is possible to tank very well without one.

A quick example of adding new group members:

806H 94V 14550616X 59.05% 901C Exits:EU> gro
Your group of 4 members consists of:
  Member              Hits      Move      Position  Fly Inv Water iMT Here Light Mem
------------------------------------------------------------------------------------
  SC Pacific          perfect   rested    standing   Y   N    Y    Y   Y     0    0
  CL Marshawn         perfect   rested    standing   Y   N    N    Y   Y     0    1
  WA Tukey            perfect   rested    standing   Y   N    Y    Y   Y     0    0
  BA Paquitolos       v.good    rested    standing   Y   N    Y    Y   Y     0    0


806H 94V 14550616X 59.05% 901C Exits:EU> Aliased 'rs' to: rescue shargelay
#ali rs rescue shargelay

Marshawn utters some strange words.
A glowing circle appears on the ground.

806H 94V 14550616X 59.05% 901C Exits:EU>
Marshawn tells your clan 'zz'

806H 94V 14550616X 59.05% 901C Exits:EU>
Dooley tells your clan 'sleeping'

806H 94V 14550616X 59.05% 901C Exits:EU> 'Shargelay' will now be highlighted with: green
#high Shargelay green

Marshawn shuts his eyes and concentrates deeply.
Dooley arrives suddenly.

806H 94V 14550616X 59.05% 901C Exits:EU>
Dooley awakens.

Dooley now follows Pacific.

830H 104V 14550616X 59.05% 901C Exits:EU> Aliased 'rd' to: rescue dooley
#ali rd rescue dooley

 

Brafu

  • Zoner
  • **
  • Posts: 170
Re: CMUD auto rescue script for tanks
« Reply #10 on: May 29, 2014, 09:05:27 PM »
Many moons ago when I played barbs a lot I would use the highlight and manual rescue method, but I realized that the intense focus that was required was also limiting my playing ability to a few hours before I had to rest, else I would get headaches and serious eye strain.

It's when I decided to put in the time and effort to make a solid reliable rescue script to aid me.

enochvey

  • Fodder
  • *
  • Posts: 57
Re: CMUD auto rescue script for tanks
« Reply #11 on: June 02, 2014, 06:38:15 PM »
Many moons ago when I played barbs a lot I would use the highlight and manual rescue method, but I realized that the intense focus that was required was also limiting my playing ability to a few hours before I had to rest, else I would get headaches and serious eye strain.

It's when I decided to put in the time and effort to make a solid reliable rescue script to aid me.

Hadn't thought of that, good point there.

Myte

  • Fodder
  • *
  • Posts: 54
Re: CMUD auto rescue script for tanks
« Reply #12 on: July 04, 2014, 05:13:26 PM »
Don't overspecialize your rescue scripts. All you will do is add unnecessary latency. I've used wintin.net, wintin, tt++, jmc, etc. I've made PERL based rescue scripts and everything else you can think of. In the end, a simple alias/action system is FASTER and more secure than any other system. This is what I've been using since wintin.net stopped getting updated and I permanently shifted to tintin based clients. wintin++ is what I use now.

Example of overspecialized script which I eventually ditched because it was too much of a pain in the ass when I just wanted to play normally:

Code: [Select]
#alias arc {
#var {wait} {0};
#act {{^\d.+>}} {
#if {$wait == 0} {
resc_exec
}
};
#act {^You are sent sprawling} {
#var wait 1;
stand
};
#act {^You can't do that while sitting} {
#var wait 1;
stand
};
#act {^You stand up} {
#var wait 0
};
#act {^But nobody is fighting %w.} {
#var wait 0;
#var last_failed 0
};
#act {^Your feeble rescue efforts end in failure.} {
#var wait 0;
#var last_failed 1
};
#act {^You try to shove %w out of the way, but fail.} {
#var wait 0;
#var last_failed 1
};
#act {^What a self-sacrificing act! You're such a hero!} {
#var wait 0;
#var last_failed 0
};
#act {^You couldn't find what you were looking for.} {
#var wait 0;
#var last_failed 0
};
#act {^You slam hard into %w and push %w out of harms way.} {
#var wait 0;
#var last_failed 0
};
#act {^You flee head over heels.} {
#list resc_tgt clear;
#showme <120>[ list: resc_tgt cleared ];
#var wait 0;
#var last_failed 0
};
#act {^You disappear} {
#list resc_tgt clear;
#showme <120>[ list: resc_tgt cleared ];
#var wait 0;
#var last_failed 0
};
#act {^You are dead} {
#list resc_tgt clear;
#showme <120>[ list: resc_tgt cleared ];
#var wait 0;
#var last_failed 0
};
#showme <120>[ rescue engine enabled ]
}

#alias unarc {
#var wait 1;
#list resc_tgt clear;
#unact {{^\d.+>}};
#unact {^You are sent sprawling};
#unact {^You can't do that while sitting};
#unact {^You stand up};
#unact {^But nobody is fighting %w.};
#unact {^Your feeble rescue efforts end in failure.};
#unact {^What a self-sacrificing act! You're such a hero!};
#unact {^You couldn't find what you were looking for.};
#unact {^You slam hard into %w and push %w out of harms way.};
#unact {^You flee head over heels.};
#unact {^You disappear};
#unact {^You are dead};
#showme <120>[ rescue engine disabled ]
}

#alias addbsp {
#high {%1} {light yellow};
#act {is standing here, fighting %1.} {
#if {$wait == 0} {
#list resc_tgt insert {1} {%1};
#showme <120>[ add: <130>%1 <120>]
}
};
#act {is sitting here, fighting %1.} {
#if {$wait == 0} {
#list resc_tgt insert {1} {%1};
#showme <120>[ add: <130>%1 <120>]
}
};
#act {opponent and turns to %1 instead.} {
#list resc_tgt insert {1} {%1};
#showme <120>[ add: <130>%1 <120>]
};
#act {stops fighting %1.} {
#list resc_tgt find {%1} resc_del_val;
#list resc_tgt delete $resc_del_val;
};
#act {^You slam hard into %1 and push %w out of harms way.} {
#list resc_tgt find {%1} resc_del_val;
#list resc_tgt delete $resc_del_val;
};
#showme <120>[ added: <130>%1<120>, priority 2 to engine ]
}

#alias addbspc {
#high {%1} {light yellow};
#act {is standing here, fighting %1.} {
#if {$wait == 0} {
#list resc_tgt insert {-1} {%1};
#showme <120>[ add: <130>%1 <120>]
}
};
#act {is sitting here, fighting %1.} {
#if {$wait == 0} {
#list resc_tgt insert {-1} {%1};
#showme <120>[ add: <130>%1 <120>]
}
};
#act {opponent and turns to %0 instead.} {
#list resc_tgt insert {-1} {%1};
#showme <120>[ add: <130>%1 <120>]
};
#act {stops fighting %1.} {
#list resc_tgt find {%1} resc_del_val;
#list resc_tgt delete $resc_del_val;
};
#act {^You slam hard into %1 and push %w out of harms way.} {
#list resc_tgt find {%1} resc_del_val;
#list resc_tgt delete $resc_del_val;
};
#showme <120>[ added: <130>%1<120>, priority 1 to engine ]
}

#alias rembsp {
#unhigh {%1};
#unact {is standing here, fighting %1.};
#unact {opponent and turns to %1 instead.};
#unact {stops fighting %1.};
#unact {^You slam hard into %1 and push %w out of harms way.}
}

#alias resc_exec {
#if {$last_failed == 1} {
#list resc_tgt insert {-1} $last;
#showme <120>[ add: <130>$last <120>];
#var last_failed 0
};
#if {@eval_list{} >= 1} {
#var wait 1;
#list resc_tgt get {-1} last;
rescue $last;
#list resc_tgt find $last resc_del_val;
#list resc_tgt delete $resc_del_val;
};
}

#function eval_list {
#list resc_tgt size result
}



The BEST script I've ever had, that I still use:

Code: [Select]

#ALIAS {addbsp}
{
#highlight {%1} {light yellow};
#action {is resting here, fighting %1.} {#if {$wait == 0} {rescue %1}};
#action {is standing here, fighting %1.} {#if {$wait == 0} {rescue %1}};
#action {is sitting here, fighting %1.} {#if {$wait == 0} {rescue %1}};
#action {opponent and turns to %1 instead.}{#if {$wait == 0} {rescue %1}}
}
{5}

#ALIAS {rembsp}
{
#unhighlight {%1};
#unaction {is resting here, fighting %1.};
#unaction {is standing here, fighting %1.};
#unaction {is sitting here, fighting %1.};
#unaction {opponent and turns to %1 instead.}
}
{5}

#ALIAS {arc}
{
#variable {wait} {0};
#showme <120>[ rescue engine enabled ]
}
{5}

#ALIAS {unarc}
{
#variable wait 1;
#showme <120>[ rescue engine disabled ]
}
{5}

#VARIABLE         {wait}  {0}
« Last Edit: July 15, 2014, 07:37:55 PM by Myte »

enochvey

  • Fodder
  • *
  • Posts: 57
Re: CMUD auto rescue script for tanks
« Reply #13 on: July 15, 2014, 07:18:25 PM »
Myte, thats about as close to my system as ive seen that actually counts as a script


I may borrow that :P

Myte

  • Fodder
  • *
  • Posts: 54
Re: CMUD auto rescue script for tanks
« Reply #14 on: July 15, 2014, 07:41:08 PM »
^^ yeah it was mostly for PK, so I could have a priority rescue system, which I don't really need anymore. I just found a few minor things in the code section that I just fixed. I missed a minus sign before a 1 on the addbspc alias, and added some anchors to the actions and unactions. It's a good base to do something with at least. Lists are very useful. I just prefer a simpler system for every day zoning.