Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- |delaytalk.mac
- |
- | Written by: Sorvani (Koro on PEQ TGC)
- | Last Modified: 09/02/2010
- |
- | This macro will delay speak something with all members of your group.
- | Obviously if you are trying to set the delay to 0 seconds you do not need this macro,
- | just use /bcaa //say BLAH BLAH BLAH
- |
- | Parameter 1: Delay in seconds between target command and character's speech
- | Parameter 2: channel to use (say g gu ttell)
- | Parameter 3-7: text to say. If the text is more than five words surround it in quotes. example: "Please bind my soul you sexy NPC"
- | If you say more than 5 words without quoting it, it WILL truncate your phrase to 5 words.
- | USAGE
- | If you have Rytan targeted in Gloomingdeep, the above command would get him to buff your entire party.
- | /macro delaytalk.mac 1 say blessed
- |
- | Have soul binder bind you.
- | /macro delaytalk.mac 1 say bind my soul
- |
- | useful for player created buff bots have your team /ttell your target
- | /macro delaytalk.mac 10 ttell ds
- |
- | i recommend creating an alias for your most common usages such as 1 second in /say.
- | /alias /dt1 /mac delaytalk 1 say
- | now /dt1 blessed would replace the above example for Rytan
- |
- | This next one I use to stagger my hails so I can what the bot screens more closely for
- | the character flag text or whatever event the hail is supposed to cause.
- | /alias /dh /mac delaytalk 1 hail
- |Set these two constants to whatever channels you prefer to use.
- |Some people like /bc instead of bct, but it works the same either way.
- #define ERR_CHAN "/echo"
- #define CMD_CHAN "/bct"
- Sub Main
- /declare GroupLoop int local 0
- /declare TargetID int local ${Target.ID}
- /declare TargetDelay string local
- /declare TalkChan string local
- /declare TalkThis string local
- /declare TalkPerson string local
- /if (!${TargetID}) {
- ERR_CHAN you must have a target before using this macro, exiting ${Macro.Name}.
- /return
- }
- /if (${Defined[Param0]}) {
- /vardata TargetDelay Param0
- /if (${TargetDelay}==0) {
- ERR_CHAN RTFM please. You know, all that text at the top of the macro...
- }
- } else {
- |delay between each character was not speicifed, inform user and exit
- ERR_CHAN No delay specified, exiting ${Macro.Name}.
- /return
- }
- /if (${Defined[Param1]}) {
- /vardata TalkChan Param1
- } else {
- |channel to use was not specified, inform user and exit
- ERR_CHAN No talk channel specified, exiting ${Macro.Name}.
- /return
- }
- |if the talk channel was hail then no other text will be used
- /if (${TalkChan.Equal[hail]}) {
- /varset TalkChan hail
- } else {
- |if the talk channel was anything else, then accept up to 5 unquoted words as the text to say
- /if (${Defined[Param6]}) {
- /varset TalkThis ${Param2} ${Param3} ${Param4} ${Param5} ${Param6}
- } else /if (${Defined[Param5]}) {
- /varset TalkThis ${Param2} ${Param3} ${Param4} ${Param5}
- } else /if (${Defined[Param4]}) {
- /varset TalkThis ${Param2} ${Param3} ${Param4}
- } else /if (${Defined[Param3]}) {
- /varset TalkThis ${Param2} ${Param3}
- } else /if (${Defined[Param2]}) {
- /varset TalkThis ${Param2}
- } else {
- |nothing to say was specified, inform user and exit
- ERR_CHAN No talk text specified, exiting ${Macro.Name}.
- /return
- }
- }
- |the loop counts backwards to ensure the person running the macro doesn't zone first
- |as a result of the command or some other such event.
- |/mac delaytalk say Nedaria would break if the person running the macro zoned first.
- /for GroupLoop ${Group.Members} downto 0
- |Get the name of the group memeber who will be speaking
- /vardata TalkPerson Group.Member[${GroupLoop}].Name
- |clear that group member's current target
- CMD_CHAN ${TalkPerson} //squelch /target clear
- |quick delay for gui
- /delay 1
- |have the group member target the macro user's target
- CMD_CHAN ${TalkPerson} //target ID ${TargetID}
- |If this is the first person in the macro, no need to delay the full delay.
- |just wait 1s for target aquisition. The point of the full delay is to wait
- |for the target to finish doing whatever they do in response to your text,
- |the delay is not just for targeting purposes.
- /if (${GroupLoop}==${Group.Members}) {
- /delay 1s
- } else {
- /delay ${TargetDelay}s
- }
- |have the group member speak the text to the targeted NPC/PC
- /if (${TalkChan.Equal[hail]}) {
- CMD_CHAN ${TalkPerson} //${TalkChan}
- } else {
- CMD_CHAN ${TalkPerson} //${TalkChan} ${TalkThis}
- }
- /next GroupLoop
- /return
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement