Trying to get it working
This commit is contained in:
parent
c973475017
commit
f353b753cd
|
@ -11,6 +11,7 @@ The syntax is this:
|
|||
The `<times>` bit is optional (default 1), the `d` letter is optional too if `times` = 1 and `bonus` = 0.
|
||||
|
||||
Example:
|
||||
|
||||
/roll 1d4
|
||||
/roll 2d5-2
|
||||
/roll d20+3
|
||||
|
@ -22,6 +23,6 @@ This module uses Mersenne-Twister random-number library for better random number
|
|||
|
||||
You can get the newest library version [here.](http://www.math.sci.hiroshima-u.ac.jp/~m-mat/MT/MT2002/emt19937ar.html)
|
||||
|
||||
The library uses BSD license so it's included here (for Lua 5.2). Just compile the `random.so` and put it in plugin directory.
|
||||
The library uses BSD license so it's included here (for Lua 5.2). Just compile the `random.so` and put it in `/usr/lib/prosody` or `/usr/lib/lua/5.1` directory.
|
||||
|
||||
Then, drop the module to Prosody dir (usually `/usr/lib/prosody/modules`) and turn it on in your config.
|
||||
|
|
|
@ -3,10 +3,9 @@
|
|||
-- based on mod_muc_intercom by Kim Alvefur <zash@zash.se>
|
||||
|
||||
local host_session = prosody.hosts[module.host];
|
||||
local st_msg = require "util.stanza".message;
|
||||
local jid = require "util.jid";
|
||||
local random=require"random"
|
||||
r=random.new(os.time())
|
||||
--local random = require"random"
|
||||
--r=random.new(os.time())
|
||||
|
||||
local function get_room_by_jid(mod_muc, jid)
|
||||
if mod_muc.get_room_by_jid then
|
||||
|
@ -16,13 +15,13 @@ local function get_room_by_jid(mod_muc, jid)
|
|||
end
|
||||
end
|
||||
|
||||
function roll (times, sides, bonus)
|
||||
local function roll (times, sides, bonus)
|
||||
local result = {}
|
||||
result.dice = {}
|
||||
bonus = bonus or 0
|
||||
|
||||
for i = 1, times do
|
||||
result.dice[#result.dice + 1] = r(sides)
|
||||
result.dice[#result.dice + 1] = math.random(sides)
|
||||
end
|
||||
|
||||
result.bonus = bonus
|
||||
|
@ -30,7 +29,7 @@ function roll (times, sides, bonus)
|
|||
return result
|
||||
end
|
||||
|
||||
function parseroll(message)
|
||||
local function parseroll(message)
|
||||
local result = {}
|
||||
result.times = 1
|
||||
result.sides = 20
|
||||
|
@ -60,29 +59,35 @@ function parseroll(message)
|
|||
end
|
||||
end
|
||||
|
||||
function check_message(data)
|
||||
local origin, stanza = data.origin, data.stanza;
|
||||
local mod_muc = host_session.muc;
|
||||
local function check_message(data)
|
||||
local stanza = data.stanza;
|
||||
local body = stanza:get_child("body");
|
||||
|
||||
if not body then return; end -- No body, like topic changes
|
||||
if not (stanza.name == "message" and tostring(stanza.attr.type) == "groupchat") then return; end
|
||||
if not mod_muc then return; end
|
||||
|
||||
local this_room = get_room_by_jid(mod_muc, stanza.attr.to);
|
||||
if not this_room then return; end -- no such room
|
||||
|
||||
local from_room_jid = this_room._jid_nick[stanza.attr.from];
|
||||
if not from_room_jid then return; end -- no such nick
|
||||
|
||||
local from_room, from_host, from_nick = jid.split(from_room_jid);
|
||||
|
||||
local body = stanza:get_child("body");
|
||||
if not body then return; end -- No body, like topic changes
|
||||
local mod_muc = host_session.muc;
|
||||
data.stanza.body = "hello"
|
||||
body = body and body:get_text();
|
||||
if not string.match(body, '^%s*/roll%s') then return; end -- No command
|
||||
local message = body:match("^@([^:]+):(.*)");
|
||||
if not message then return; end
|
||||
|
||||
local forward_stanza = st_msg({from = sender, to = this_room, type = "groupchat"}, message);
|
||||
stanza.body = body .. " rolled: "
|
||||
local result = roll(parseroll(message))
|
||||
|
||||
this_room:broadcast_message(forward_stanza);
|
||||
local total = 0
|
||||
for i = 1, #result.dice do
|
||||
if i == 1 then
|
||||
stanza.body = stanza.body .. result.dice[i]
|
||||
else
|
||||
stanza.body = stanza.body .. "," .. result.dice[i]
|
||||
end
|
||||
total = total + result.dice[i]
|
||||
end
|
||||
total = total + result.bonus
|
||||
data.stanza.body = stanza.body .. ", total: " .. total
|
||||
end
|
||||
|
||||
module:hook("message/bare", check_message, 10);
|
||||
|
|
|
@ -8,8 +8,8 @@
|
|||
|
||||
# these will probably work if Lua has been installed globally
|
||||
LUA= /usr
|
||||
LUAINC= $(LUA)/include
|
||||
LUALIB= $(LUA)/lib
|
||||
LUAINC= $(LUA)/include/lua5.1
|
||||
LUALIB= $(LUA)/lib/lua5.1
|
||||
LUABIN= $(LUA)/bin
|
||||
|
||||
# probably no need to change anything below here
|
||||
|
|
Loading…
Reference in New Issue