pinku
Journeyman
Posts: 118
Likes Given: 4
Likes Received: 2 in 2 posts
Joined: Apr 2013
Reputation: 4
|
RE: RAND and Functions
(02-03-2014 09:49 PM)Mazer Wrote: Im sorry im not best scripter in UO, but as i understand EVAL RAND(500) is random number between 0 and 500 second i dont really know how SRC.SKILL return value 50.5% skill its 505 or 50.5.
And you should start from easiest function. With 50% of skill if its 50.0. The chance to get last ELSEIF is about 1:30000. You really want this ?
If you could declare random value in the beginning of the script. etc
x = EVAL RAND(500) + SKILL if player have 50% skill and he rolls 100, x would be 150 then declaring chances
if X >= 550 then
function1 (rarest)
elseif x >= 400 then
function2
elseif x >= 300 then
function3
elseif x < 300 then
function4
function1 gona happen 1:500 times with 50% skill and 50:500 with 100% skill
function 2 gona happen 150:500 times with 50% skill and 200:500 with 100% skill
function 3 gona happen 250:500 times with 50% skill and 300:500 with 100% skill
and function4 gona happen 350:500 times with 50% skill and 400:500 with 100% skill
Thank you, a lot!
I did what you said with a simple LOCAL and I could make the things happen, plus, making my char say the numbers rolled.
(02-03-2014 10:15 PM)Alaric Wrote: I wrote almost the same but removed that because i found out, that with this system you will have with 0%skill 0%chance to do the best thing. I was quite confused how he wants it to work and how to do it. I would have to sit back and look at it closely.
After evaluation skill value should be 10times higher than real value. 100%=1000.
Thanks, I could swear I was using the RAND wrong, in the end, it was the skill 10 times higher, just like you said.
Thank you!
(02-04-2014 12:46 PM)Coruja Wrote: probably the math fails because 100.0 skill = 1000 value, not 100
also, just replace the formula with real numbers and you will see the mistake
Code:
(<EVAL RAND(500)> <= 100+<SRC.SKILL>)
=
(0~499 <= 100+1000)
=
(0~499 <= 1100)
this will always return true because any number between 0~499 is <= 1100, thats why you always got 'function1_happens' as result
Thank you, Coruja!
Your help was much appreciated!
|
|
02-04-2014 04:58 PM |
|
|