Notice: Any messages purporting to come from this site telling you that your password has expired, or that you need to verify your details, confirm your email, resolve issues, making threats, or asking for money, are
spam. We do not email users with any such messages. If you have lost your password you can obtain a new one by using the
password reset link.
Entire forum
➜ MUSHclient
➜ Lua
➜ Strange problem with Reroll Script
Strange problem with Reroll Script
|
It is now over 60 days since the last post. This thread is closed.
Refresh page
Pages: 1 2
Posted by
| Invictus84
USA (6 posts) Bio
|
Date
| Fri 29 Jun 2007 06:56 AM (UTC) Amended on Fri 29 Jun 2007 08:12 AM (UTC) by Invictus84
|
Message
| Below is my basic version of a Realms of Despair reroll script. It'll roll fine for a few minutes, then halt with this error:
Error number: 0
Event: Compile error
Description: [string "Trigger: "]:1: unexpected symbol near '>='
Called by: Immediate execution
Usually, I can manually reroll, type gold to set the stat check off and off it'll go again... for another few minutes, before halting again with the same thing.
Any help is greatly appreciated :)
PS. If it means anything to anyone, I'm using version 4.12.
PPS. Below here is that code I promised :P
<code>
<trigger
enabled="y"
expand_variables="y"
keep_evaluating="y"
match="Strength * *"
send_to="9"
sequence="1"
variable="str"
>
<send>%1</send>
</trigger>
<trigger
enabled="y"
expand_variables="y"
keep_evaluating="y"
match="Dexterity * *"
send_to="9"
sequence="15"
variable="dex"
>
<send>%1</send>
</trigger>
<trigger
enabled="y"
expand_variables="y"
keep_evaluating="y"
match="Intelligence * *"
send_to="9"
sequence="30"
variable="int"
>
<send>%1</send>
</trigger>
<trigger
enabled="y"
expand_variables="y"
keep_evaluating="y"
match="Wisdom * *"
send_to="9"
sequence="45"
variable="wis"
>
<send>%1</send>
</trigger>
<trigger
enabled="y"
expand_variables="y"
keep_evaluating="y"
match="Charisma * *"
send_to="9"
sequence="60"
variable="cha"
>
<send>%1</send>
</trigger>
<trigger
enabled="y"
expand_variables="y"
keep_evaluating="y"
match="Constitution * *"
send_to="9"
sequence="75"
variable="con"
>
<send>%1</send>
</trigger>
<trigger
enabled="y"
expand_variables="y"
keep_evaluating="y"
match="Luck * *"
send_to="9"
sequence="90"
variable="lck"
>
<send>%1</send>
</trigger>
<trigger
enabled="y"
expand_variables="y"
keep_evaluating="y"
match="* You have * gold pieces."
send_to="12"
sequence="100"
>
<send>if @str >= 18 and @dex >= 18 and @int >= 9 and @wis >= 9 and @cha >= 9 and @con >= 9 and @lck >= 16 then
Execute ("pull cord;save;save;quit")
return
end
if @str < 18 or @dex < 18 or @int < 9 or @wis < 9 or @cha < 9 or @con < 9 or @lck < 9 then
Execute ("reroll;gold")
return
end</send>
</trigger>
<trigger
enabled="y"
expand_variables="y"
match="If you know well the ways of this world, *, simply type: EXPERIENCED"
sequence="100"
>
<send>help start
config +brief
config +nointro
config +beckon
experienced
get all sack
wear all
u
'path of the peaceful
nw</send>
</trigger>
<trigger
back_colour="8"
enabled="y"
expand_variables="y"
keep_evaluating="y"
match="You have * gold pieces."
match_back_colour="y"
match_text_colour="y"
send_to="12"
sequence="100"
text_colour="11"
>
<send>if @str >= 18 and @dex >= 18 and @int >= 9 and @wis >= 9 and @cha >= 9 and @con >= 9 and @lck >= 16 then
Execute ("pull cord;save;save;quit")
return
end
if @str < 18 or @dex < 18 or @int < 9 or @wis < 9 or @cha < 9 or @con < 9 or @lck < 9 then
Execute ("reroll;gold")
return
end</send>
</trigger>
</triggers>
| Top |
|
Posted by
| Invictus84
USA (6 posts) Bio
|
Date
| Reply #1 on Fri 29 Jun 2007 07:10 AM (UTC) Amended on Fri 29 Jun 2007 08:14 AM (UTC) by Invictus84
|
Message
| Some things I guess I should note... Yes, there is a duplicate trigger (the gold trigger) :) Sometimes, the return message from typing gold shows up on the prompt line, so I had to duplicate it with an asterisk at the beginning to account for it showing up on my prompt line.
Secondly, everything was carried out through the GUI. I'm a bit of a coding newb, so it was easier on my aching head to just input what code was needed to carry out a few functions and let MUSHclient input the rest for me :)
For anyone that may not have seen RoD's reroll output, looks like this:
Your character's base stats have been rerolled...
New Previous
Strength 17 15
Dexterity 14 17
Intelligence 15 15
Wisdom 14 11
Charisma 10 9
Constitution 14 14
Luck 11 14
Sometimes the "Your character's base stats have been rerolled..." line appears on my prompt line, so I try to avoid using it as part of the triggers set.
One last thing, while I was typing this, I was letting it roll to see if it'd do anything different, and wouldn't you know it... it did. It happened to roll 18 strength and dex, however the luck was terrible (I have it set to look for 18 str/dex, 16lck) and instead of rerolling it or even trying to keep it, since two of the stats matched, it just stopped. No error message or anything, just sat there :|
Hope these bits help :) | Top |
|
Posted by
| Shaun Biggs
USA (644 posts) Bio
|
Date
| Reply #2 on Fri 29 Jun 2007 08:03 AM (UTC) Amended on Fri 29 Jun 2007 08:05 AM (UTC) by Shaun Biggs
|
Message
| Can you give a list of the stats stored in the variables when the script crashes? Might give some idea of what it's trying to match that's failing. Also, if you could post the code within [code] tags, we could check for excess spaces easier, since the forums normally just eat them in display.
This is why I hate random roll generation... just begs to have people script a bot to get good stats. Not that I can really complain much, as I'd do the same thing. |
It is much easier to fight for one's ideals than to live up to them. | Top |
|
Posted by
| Nick Gammon
Australia (23,122 posts) Bio
Forum Administrator |
Date
| Reply #3 on Fri 29 Jun 2007 08:08 AM (UTC) |
Message
| Considering your trigger basically does this:
if @str >= 18 and @dex >= 18 ... and so on
... and your error message is "unexpected symbol near '>='", then I am guessing that the variables contain something unusual.
I would put in a debugging display, like:
Note ("str = @str, dex = @dex" )
(and do on), so you can see what the variable is, at the time it fails. |
- Nick Gammon
www.gammon.com.au, www.mushclient.com | Top |
|
Posted by
| Nick Gammon
Australia (23,122 posts) Bio
Forum Administrator |
Date
| Reply #4 on Fri 29 Jun 2007 08:11 AM (UTC) |
Message
|
Quote:
It happened to roll 18 strength and dex, however the luck was terrible ...
I think I have worked out in the past, that to get a good score on everything you probably have to spend thousands of hours of server time. Quite apart from the load on the MUD, you will have a long wait. |
- Nick Gammon
www.gammon.com.au, www.mushclient.com | Top |
|
Posted by
| Invictus84
USA (6 posts) Bio
|
Date
| Reply #5 on Fri 29 Jun 2007 08:47 AM (UTC) Amended on Fri 29 Jun 2007 08:48 AM (UTC) by Invictus84
|
Message
| I just watched it run for a few minutes and kept checking the variables, see if they were pulling the correct numbers and what have you... and here's the odd part - Some of them come back blank every so often, and at that point the script shoots back that error message. So, I think that in itself is the cause. Can't check A against B if A doesn't contain anything.
Unfortunately, still leaves me a bit lost. Something is obviously is going awry in the capture, but what? It's left me more than slightly confused :p Still unsure why it just stopped that one time, maybe it'll go away on it's own when the bigger issue gets taken care of.
And yeah, the reroll system has cursed all of us players who try to actively play. I've been known to have 4 and 5 rerolling characters going at the same time for in excess of 2 weeks at a time, waiting for just one to come out with stats I want. | Top |
|
Posted by
| Shaun Biggs
USA (644 posts) Bio
|
Date
| Reply #6 on Fri 29 Jun 2007 09:38 AM (UTC) |
Message
| I think I figured it out and how to solve the problem. Does it crash out when a stat is rolled that's below 10? The single digit stats look like they have different spacing, so the trigger might not pick them up. You can fix this with a regex trigger match like this:
match="^Strength/w+(/d+).+" |
It is much easier to fight for one's ideals than to live up to them. | Top |
|
Posted by
| Shaun Biggs
USA (644 posts) Bio
|
Date
| Reply #7 on Fri 29 Jun 2007 09:43 AM (UTC) |
Message
|
Quote: And yeah, the reroll system has cursed all of us players who try to actively play. I've been known to have 4 and 5 rerolling characters going at the same time for in excess of 2 weeks at a time, waiting for just one to come out with stats I want.
Doing some quick math, that's about 2000 hours put in for character creation just rolling stats. If I were the person running a mud that worked like this, I think I'd code in a way to limit rerolls to 100 per IP address per day. Or just give up and make it some sort of point based system to completely cut down on people wasting the server's processing power and bandwidth with something so inane. |
It is much easier to fight for one's ideals than to live up to them. | Top |
|
Posted by
| Nick Gammon
Australia (23,122 posts) Bio
Forum Administrator |
Date
| Reply #8 on Fri 29 Jun 2007 09:45 AM (UTC) |
Message
| I think Shaun is right. A trigger like this:
Match: "Intelligence * *"
... has very specific spacing. One space more or less and it won't match. I would do what he suggests and make a regexp to match an indefinite number of spaces.
|
- Nick Gammon
www.gammon.com.au, www.mushclient.com | Top |
|
Posted by
| Nick Gammon
Australia (23,122 posts) Bio
Forum Administrator |
Date
| Reply #9 on Fri 29 Jun 2007 09:49 AM (UTC) |
Message
|
Quote:
I've been known to have 4 and 5 rerolling characters going at the same time for in excess of 2 weeks at a time, waiting for just one to come out with stats I want.
Message to MUD admins: I have suggested it before, and I'll suggest it again. If you are wondering where all your network bandwidth, and CPU power is going, it is your random stats system.
I suggest you replace random stats with fixed stats (perhaps fixed per class/race) so there is no point in using stats rollers. You could give players a "pool" of extra stats to distribute as they see fit, so everyone doesn't start with exactly the same stats (although that is exactly what World of Warcraft does -simply allocates fixed stats based on the class you choose to play). |
- Nick Gammon
www.gammon.com.au, www.mushclient.com | Top |
|
Posted by
| Isthiriel
(113 posts) Bio
|
Date
| Reply #10 on Fri 29 Jun 2007 01:51 PM (UTC) Amended on Fri 29 Jun 2007 01:53 PM (UTC) by Isthiriel
|
Message
| Realms of Despair used to have a name-munger so your choice of name predetermined the stats you'd start with. Not that that mattered very much on RoD with the number of stat boosters floating around.
... though, on reflection, since RoD is the reference implementation of Smaug that is probably something that everyone already knows. *sigh* | Top |
|
Posted by
| David Haley
USA (3,881 posts) Bio
|
Date
| Reply #11 on Fri 29 Jun 2007 02:00 PM (UTC) |
Message
| All that did was get people to create charts of which letters in which positions gave you which stats. It became a game of picking the right name to get good stats while being able to pass off the name as a "natural" one.
IMHO any kind of randomness in character development is a bad idea. It either encourages this kind of repetitive stat hammering to get a good dice roll, or it creates unfairness which over time can cumulate to big differences in ability (e.g. a few points in constitution, compounded over 45 level gains, can make for a good number of hit points). |
David Haley aka Ksilyan
Head Programmer,
Legends of the Darkstone
http://david.the-haleys.org | Top |
|
Posted by
| Invictus84
USA (6 posts) Bio
|
Date
| Reply #12 on Fri 29 Jun 2007 09:48 PM (UTC) |
Message
| As suggested, I went back and converted all the capture triggers to regular expressions. I also put in the full spacing for each return message from reroll and so far, it's been rolling on it's own for quite a while without a single stop, so I think that's got it :)
Thanks everyone for the help, it's greatly appreciated :) | Top |
|
Posted by
| Nick Gammon
Australia (23,122 posts) Bio
Forum Administrator |
Date
| Reply #13 on Fri 29 Jun 2007 10:09 PM (UTC) |
Message
| It's quite funny to think that if the MUD admins ever did a profile on their code usage it might look like this:
Players fighting and walking around: 1%
Players spending weeks rerolling for better stats: 99%
|
- Nick Gammon
www.gammon.com.au, www.mushclient.com | Top |
|
Posted by
| Antwon00
(1 post) Bio
|
Date
| Reply #14 on Tue 13 Sep 2011 11:55 PM (UTC) |
Message
| What would the finished product of this script be. I am not a savvy computer expert in any way but would like to use this script for realms. Thanks for the assistance.
| Top |
|
The dates and times for posts above are shown in Universal Co-ordinated Time (UTC).
To show them in your local time you can join the forum, and then set the 'time correction' field in your profile to the number of hours difference between your location and UTC time.
51,621 views.
This is page 1, subject is 2 pages long: 1 2
It is now over 60 days since the last post. This thread is closed.
Refresh page
top