Looking for more active discussion? Join our Discord at https://discord.gg/x2s7fY6

Proper Use of %pos to track eqbal from prompt in Zmud?

edited December 2012 in Tech Talk
Damn these questions are a useful means of getting basic scripting info for nubs like me.

[code]
PATTERN: 
^H:(%d)%sM:(%d)%sE:(%d)~%%sW:(%d)~%%sB:(%d)~%%s~[(%w)~]

VALUE:
currenthealth=%1
currentmana= %2
currentendurance= %3
currentwillpower= %4
blood= %5
#IF %pos( 'e', %6) {equilibrium = 1} {equilibrium = 0}
#IF %pos( 'b', %6) {balance = 1} {balance = 0}
[/code]

The patterns return the values fine from prompt but the %pos is not updating pre-existing equilibrium/balance variables.  This leads me to believe that syntactically there is something wrong with my eq and bal checking #if lines, probably related to my unfamiliarity with the %pos command.  What did I do wrong?
image

Best Answer

  • Accepted Answer
    Hmm... I can't really say. You're sure the pattern is firing on the lines that you're off eq? (You can check this by putting in a temporary #echo.) Do you have the trigger set to 'trigger on prompt', not on 'new line'? 

Answers

  • It's been a long time since I used zMUD, I recall it being a lot less finicky than CMUD but now that I use CMUD I tend to side with denigrating everything very exactly because she is a very finicky lady. First, I dunno if the apostrophes actually work as quotes, it doesn't seem as though they do in CMUD. Second, the qualifier can be entirely distinguished with parenthesis. Third, if I was using CMUD I would be super exact with changing my variables instead of just using the equal sign (#var equilibrium 1 rather than equilibrium=1), but I don't remember that mattering in zMUD at all.

    So, maybe try: #if (%pos( "e", %6)) {equilibrium=1} {equilibrium=0}

    I hope that works, and good luck with it if it doesn't. Coding can be funky and teaching it to yourself can be awkward. I've been in the same position.

    Also for future reference, coding questions likely belong in Tech Talk.



    Theophorus
  • edited December 2012
    Thanks, will try that. 

    Also, thought this was tech-talk.  I had that section open when I 'asked a question'.  Still getting used to this forum interface.  Maybe a mod can move it?

    And for the record, adding brackets and changing the single quote to double-quote marks didn't really work.  Pattern is still firing, variables aren't being updated when I use secrets to knock myself off EQ.

    Lines now look like:

    [code]
    #IF (%pos( "e", %6)) {equilibrium=1} {equilibrium=0}
    #IF (%pos( "b", %6)) {balance = 1} {balance = 0}
    [/code]
    image
  • Aye, it was the prompt.
    Final solution to script problem as identified by Edhain:

    #TRIGGER {^H:(%d)%sM:(%d)%sE:(%d)~%%sW:(%d)~%%sB:(%d)~%%s~[*~]} {currenthealth=%1;currentmana= %2;currentendurance= %3;currentwillpower= %4;blood= %5;#if (%pos( e, %6)) {equilibrium=1} {equilibrium=0};#if (%pos( b, %6)) {balance=1} {balance=0}} "" {nocr|prompt}

    Thanks!
    image
  • ArbreArbre Arbrelina Jolie Braavos
    #IF %pos( d, %6) {#VAR deaf 1} {#VAR deaf 0}

    That's mine.
  • edited December 2012
    also. Use (%x) instead of (%*) or (%w).

    (%x) matches any character that isn't a space, so it'll match [eq] as well as [-q] and [--].

    Every once in a while (%*) seems to mess up, if I recall from using zmud, matching weird stuff when you don't think it should.

    Also, I found not enclosing %s in brackets for triggers can be a pain in the keister in zmud.
    image
    image
    Theophorus
  • ArbreArbre Arbrelina Jolie Braavos
    I always used (*) not (%*)
Sign In or Register to comment.