[Request] Random Number Generator - Printable Version
-Shoutbox (https://shoutbox.menthix.net)
+-- Forum: MsgHelp Archive (/forumdisplay.php?fid=58)
+--- Forum: Messenger Plus! for Live Messenger (/forumdisplay.php?fid=4)
+---- Forum: Scripting (/forumdisplay.php?fid=39)
+----- Thread: [Request] Random Number Generator (/showthread.php?tid=91773)
[Request] Random Number Generator by cerealkiller54 on 08-05-2009 at 07:25 AM
Hello, all.
I would like to have a script that gives me a random number from an input number.
I.e. if I typed "/random 6" in the text box and sent it, it would give me a random number between 0 and 6.
And I don't want 6 to be the only number that can be randomized, I want the number after /random # to be a user input.
Any help?
-------------------
xxxx says: 4
xxxx says: 8
xxxx says: 12
xxxx says: 0
xxxx says: 6
xxxx says: 5
-------------------
/random 12
-------------------
RE: [Request] Random Number Generator by Matti on 08-05-2009 at 08:16 AM
There are already many scripts which can do that, have a look in the scripts database.
The only problem I see is that you want a random number in the range of 0..n, whereas most dice roller scripts work in the range of 1..n (with n the upper limit). You could get around this by using a more advanced dice rolling formula, for example to roll between 0 and 12 you could use this command for Advanced Dice Roller:
code: /roll 1d13-1
What I did here is increase the amount of sides of the dice by 1 and afterwards substract 1 from the result, resulting in a number between 0 and 12 instead of 1 and 12. This might be a bit complicated and long to type every time you need it, but you can make it a bit easier for you by storing your most used rolls in a Plus! quick text (Preferences > Conversations > Quick Texts > New), for example:
quote: Alias: /random12
Text: /dice 1d13-1
Then you can simply type /random12 every time you want a random number between 0 and 12. If that doesn't satisfy you, you could also modify the script itself, but that's not really recommended.
RE: [Request] Random Number Generator by cerealkiller54 on 08-05-2009 at 06:30 PM
Wow thanks a bunch!
I already searched the script database, but I literally used the search function and I guess I was looking up the wrong keywords (number,random).
RE: [Request] Random Number Generator by matty on 08-05-2009 at 07:15 PM
js code: function OnEvent_ChatWndSendMessage(oChatWnd, sMessage){
if (/^\/([^\s\/]+)\s*([\s\S]*)$/.exec(sMessage) !== null) {
var Command = RegExp.$1.toLowerCase();
var Param = parseFloat(RegExp.$2);
switch (Command) {
case 'random':
if (Param !== 'NaN') {
return Math.floor((Param)*Math.random());;
} else {
return '';
}
}
}
return sMessage;
}
Something like that lol
RE: [Request] Random Number Generator by Matti on 08-05-2009 at 07:32 PM
Ah, matty goes the DIY way again!
However, I think you have a small error in your error handling. When parseFloat can't convert Param into a valid floating point number, it'll return NaN. Now, NaN isn't just a string containing those three letters, it's a special value and - ironically - is of the type Number.
The correct way to see whether the result is valid is by using the isNaN function provided by JScript/JavaScript. I also recommend doing the parseFloat call after confirming that the /random command was sent. So, this would be the corrected code:
js code: function OnEvent_ChatWndSendMessage(oChatWnd, sMessage){
if (/^\/([^\s\/]+)\s*([\s\S]*)$/.exec(sMessage) !== null) {
var Command = RegExp.$1.toLowerCase();
var Param = RegExp.$2;
switch (Command) {
case 'random':
>>> if (!isNaN(Param = parseFloat(Param))) {<<<
return Math.floor((Param)*Math.random());;
} else {
return '';
}
}
}
return sMessage;
}
Yes, that line is perfectly valid. First I re-assign Param to the parseFloat result, then that result is checked against isNaN. Neat, uh?
RE: [Request] Random Number Generator by matty on 08-05-2009 at 07:55 PM
Wow shows how rusty I am... good catch my young padwan.
|