diff options
-rw-r--r-- | chat.lua | 32 |
1 files changed, 23 insertions, 9 deletions
@@ -104,6 +104,25 @@ local function draw_lb(W,scores) end end +-- persistence +local function save_scores(scores) + local file,err = fs.open(".chatscores","w") + if err then error("fs.open "..err) end + file.write(textutils.serialize(scores)) + file.flush() + file.close() +end + +local function load_scores() + local file,err = fs.open(".chatscores","r") + if err then + print("fs.open "..err.." - resetting scores") + return {} + end + local c = file.readAll() or "" + file.close() + return textutils.unserialize(c) or {} +end -- scoring @@ -113,14 +132,8 @@ local function score(msg) return s end -local userscores = setmetatable({ - aaa=10, - bbb=100, - ccc=12345, - ddd=234287, - thethethethe=69420, - harold=111222, -},{__index=function()return 0 end}) + +local userscores = setmetatable(load_scores(),{__index=function()return 0 end}) while true do draw_lb(wLb,userscores) @@ -128,7 +141,8 @@ while true do local s = score(msg) userscores[user] = userscores[user] + s if isnan(userscores[user]) then userscores[user] = 0 end - p(M,string.format("(%d) <%s> %s",s,user,msg)) + save_scores(userscores) + p(wLog,string.format("(%d) <%s> %s",s,user,msg)) end |