Rolling Triggers

Posted by Meredin on Tue 31 Jan 2006 08:23 PM — 8 posts, 28,133 views.

#0
Okay, I'm very curious about these rolling triggers. It seems to me that they would work fine, I even tested them out with smaller numbers and it worked, but after nearly two weeks of constant rolling, I happened to be sittin at my computer to witness an 18 18 16 roll, which is very good indeed! Unfortunately, the script sent reroll and I can't for the life of me figure it out why. The output from the screen was...

Strength 18 13
Dexterity 18 13
Intelligence 10 13
Wisdom 11 16
Charisma 9 11
Constitution 13 17
Luck 16 12


I'll paste my triggers here too, just so I'm giving up everything.


<triggers>
<trigger
enabled="y"
match="(Strength|Dexterity|Intelligence|Wisdom|Charisma|Constitution|Luck)\s*(\d+)\s*(\d+)$"
name="Stats"
regexp="y"
script="Store_Stats"
sequence="100"
>
</trigger>
</triggers>

I was pretty sure I had copied these straight from other forums and that they had worked for me in the past, but apparently I was wrong. Any help would be greatly appreciated, thanks!


Dim Str, Dex, Int, Wis, Cha, Con, Lck

Sub Store_Stats (TriggerName, TriggerLine, arrWildcards)
Select Case arrWildcards(1)
Case "Strength"
Str = arrWildcards(2)
Case "Dexterity"
Dex = arrWildcards(2)
Case "Intelligence"
Int = arrWildcards(2)
Case "Wisdom"
Wis = arrWildcards(2)
Case "Charisma"
Cha = arrWildcards(2)
Case "Constitution"
Con = arrWildcards(2)
Case "Luck"
Lck = arrWildcards(2)
Check_Stats
End Select
End Sub

Sub Check_Stats
if (Str => 18) and _
(Dex => 18) and _
(Int => 0) and _
(Wis => 0) and _
(Cha => 0) and _
(Con => 0) and _
(Lck => 15) then
World.Send "touch orb"
else
World.Send "reroll"
end if
End Sub
#1
http://www.gammon.com.au/forum/bbshowpost.php?bbsubject_id=3107

That's the link to the triggers I was using, and I did some further testing, and when I set the numbers considerably lower, the trigger had no problem sending touch orb when the numbers were considerably higher than the pre-requisites that I assigned in the script, so I'm not sure what's going on here.
#2
Sorry for the multiple posts, but I thought of something else that I'd love to ask you. Assuming that with your help I can get these triggers and scripts to work again, is there any way that I can play sound sort of sound or .wav file when they hit? That would be... awesome
Australia Forum Administrator #3
You want to get to know "Debug simulated world input". Then you can test your trigger straight away. See Game menu -> Test Trigger (Shift+Ctrl+F12).

I tried that on your trigger, and that output, and it replied "touch orb". Maybe the script simply wasn't enabled?

Also, I think you should use CInt (convert to integer) on the amounts, otherwise it does a string compare, not a numeric compare.

For example "2" is greater than "15" when you do a string compare.


Dim Str, Dex, Int, Wis, Cha, Con, Lck

Sub Store_Stats (TriggerName, TriggerLine, arrWildcards)

Dim amount

amount = CInt (arrWildcards(2))

Select Case arrWildcards(1)
     Case "Strength"
       Str = amount
     Case "Dexterity"
       Dex = amount
     Case "Intelligence"
       Int = amount
     Case "Wisdom"
       Wis = amount
     Case "Charisma"
       Cha = amount
     Case "Constitution"
       Con = amount
     Case "Luck"
       Lck = amount
       Check_Stats
End Select
End Sub



To play a sound, see:

http://www.gammon.com.au/scripts/doc.php?function=Sound
Australia Forum Administrator #4
You could check the script is running, and keep track of it, by adding a "roll number" which updates a count on the status line, like this:


Dim roll_number
roll_number = 0

Sub Check_Stats
if (Str => 18) and _
   (Dex => 18) and _
   (Int => 0) and _
   (Wis => 0) and _
   (Cha => 0) and _
   (Con => 0) and _
   (Lck => 15) then
     World.Send "touch orb"
else
  World.Send "reroll"
  roll_number  = roll_number + 1
  SetStatus "Roll number " & roll_number
end if
End Sub


Now you will see "Roll number 1" (and so on) whenever it rejects some stats.
Amended on Tue 31 Jan 2006 10:06 PM by Nick Gammon
#5
Okay, this is now the exact script that I am using...

Dim Str, Dex, Int, Wis, Cha, Con, Lck

Sub Store_Stats (TriggerName, TriggerLine, arrWildcards)

Dim amount

amount = CInt (arrWildcards(2))

Select Case arrWildcards(1)
Case "Strength"
Str = amount
Case "Dexterity"
Dex = amount
Case "Intelligence"
Int = amount
Case "Wisdom"
Wis = amount
Case "Charisma"
Cha = amount
Case "Constitution"
Con = amount
Case "Luck"
Lck = amount
Check_Stats
End Select
End Sub

Dim roll_number
roll_number = 0

Sub Check_Stats
if (Str => 18) and _
(Dex => 18) and _
(Int => 0) and _
(Wis => 0) and _
(Cha => 0) and _
(Con => 0) and _
(Lck => 15) then
World.Send "touch orb"
World.sound "ohyeah.wav"
else
World.Send "reroll"
roll_number = roll_number + 1
SetStatus "Roll number " & roll_number
end if
End Sub


If I try to test the trigger using Test Trigger under game, I copy the text exactly and I get no response, not even the color changing triggers work, tho I'm not sure if they are suppose to. However, if I log on the game and actually start rolling, the reroll part seems to happen just fine, though there isn't anything that comes up saying what number roll I am on. I would be very interested in seeing the roll_number work, but I still can't seem to test the triggers without lowering the numbers to something easily attainable and just watching. And I don't understand why test trigger isn't working, what am I doing wrong? I copied and pasted the screen, I put new lines in the front and back, I even manually typed it all in so I could hit Ctrl+Enter in the correct places...
#6
After playing around with it some more, I noticed that the roll_number is actually there, down in what I would call the information bar, I was expecting it to be in the world somewhere, but I still don't see anywhere sending reroll or touch orb! :-) Thanks again
#7
Okay, well I'm an idiot. I spent like three hours trying to get this all fixed up before I ever posted here, not to mention the three weeks that I've been rolling just about every night and have yet to hit (because they weren't working). And finally, I found out the problem. I had, of course, the triggers which sent the information to the script, but then I added triggers which would change the color of let's say strength if it was indeed 18, so I could visually see how close I was coming on my different worlds. Well, to make a long story short, I didn't check the keep evaluating box. Thus, when I was actually rolling, the information never got to the script, but when I changed the requirements to "TEST" the trigger, the color triggers never hit, so they never interfered, and so the script funtioned as normal. Anyways, I think it works now, and I can use the Test Trigger option but only when the world is connected, otherwise it won't show me the touch orb and reroll, but if I connect and then try, it will work. Sorry for all the confusion and all my stupidity! Thanks! :-\