From c51a4f58d3e428e310ae08d5bb9a225ae00802ca Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Teodor=20Sp=C3=A6ren?= Date: Mon, 15 Oct 2012 15:54:25 +0200 Subject: [PATCH] Updated the structure of the project. I splitted the one file I had into many files so that it would be easier in the future to easly edit things. I plan to keep this structure where everything is just called from init.lua. --- conf.lua | 33 ++++++----- events.lua | 29 ++++++++++ functions.lua | 26 +++++++++ general.lua | 33 +++++++++++ init.lua | 151 +++----------------------------------------------- messages.lua | 55 ++++++++++++++++++ 6 files changed, 168 insertions(+), 159 deletions(-) create mode 100644 events.lua create mode 100644 functions.lua create mode 100644 general.lua create mode 100644 messages.lua diff --git a/conf.lua b/conf.lua index a5fc81f..960cb05 100644 --- a/conf.lua +++ b/conf.lua @@ -1,11 +1,10 @@ --[[ What do you want to be loaded? ]]-- +useList = true -- List command +useMSG = true -- MSG command +useKill = true -- Kill command +useReply = true -- Reply command -useList = true -- List command -useMSG = true -- MSG command -useKill = true -- Kill command -useReply = true -- Reply command - -useMOTD = true -- Message of the day +useMOTD = true -- Message of the day useDeathMSG = true -- Death messages useReviveMSG = true -- Revive messages @@ -13,18 +12,18 @@ useReviveMSG = true -- Revive messages careLetters = true -- Care about small and BIG letters? --[[ Privleges ]]-- -listprivs = {shout = true} -- List privleges -killprivs = {shout = true} -- kill privleges -msgprivs = {shout = true} -- msg privleges -replyprivs = {shout = true} -- reply privleges +listprivs = {shout = true} -- List privleges +killprivs = {shout = true} -- kill privleges +msgprivs = {shout = true} -- msg privleges +replyprivs = {shout = true} -- reply privleges --[[ Message strings ]]-- -MOTD = "Welcome %s! This is the default MOTD." -- Message of the day -DEATH_MSG = "%s left this world :(" -- Death message -REVIVE_MSG = "Like a Phonix %s rises from the ashes." -- Revive message +MOTD = "Welcome %s! This is the default MOTD." -- Message of the day +DEATH_MSG = "%s left this world :(" -- Death message +REVIVE_MSG = "Like a Phonix %s rises from the ashes." -- Revive message --[[ What do you want after the / ]]-- -listcmd = "list" -msgcmd = "msg" -killcmd = "kill" -replycmd = "reply" \ No newline at end of file +listcmd = "list" +msgcmd = "msg" +killcmd = "kill" +replycmd = "reply" \ No newline at end of file diff --git a/events.lua b/events.lua new file mode 100644 index 0000000..217f7df --- /dev/null +++ b/events.lua @@ -0,0 +1,29 @@ +--[[ + All code that is triggered when an event happens should reside + here :D +]]-- + +-- !!! EVENTS !!! -- + +--[[ What happens when a player joins? ]]-- +if useMOTD then + minetest.register_on_joinplayer( function(player) + minetest.after( 2.0, function(param) + minetest.chat_send_player(player:get_player_name(), string.format(MOTD, player:get_player_name())) + end ) + end ) +end + +--[[ What happens when a player die? ]]-- +if useDeathMSG then + minetest.register_on_dieplayer( function(player) + minetest.chat_send_all(string.format(DEATH_MSG, player:get_player_name())) + end ) +end + +--[[ What happens when a player respawn ]]-- +if useReviveMSG then + minetest.register_on_respawnplayer( function(player) + minetest.chat_send_all(string.format(REVIVE_MSG, player:get_player_name())) + end ) +end diff --git a/functions.lua b/functions.lua new file mode 100644 index 0000000..5495cec --- /dev/null +++ b/functions.lua @@ -0,0 +1,26 @@ +-- !!! FUNCTIONS !!! -- +-- Getting the player object. +function get_player_obj (name) + goodname = string.match(name, "^([^ ]+) *$") + if goodname == nil then + print("ERROR!") + return nil + end + + -- Looping trough all the players currently online + for _,player in ipairs(minetest.get_connected_players()) do + local name = player:get_player_name() + + -- Caring about letters or not? + if not careLetters then + if string.lower(name) == string.lower(goodname) then + return player + end + else + if name == goodname then + return player + end + end + end + return nil +end \ No newline at end of file diff --git a/general.lua b/general.lua new file mode 100644 index 0000000..574e6c9 --- /dev/null +++ b/general.lua @@ -0,0 +1,33 @@ +--[[ Single functions or non set commands should go in here ]]-- + +-- !!! COMMANDS !!! -- +--[[ List function. ]]-- +if useList then + minetest.register_chatcommand(listcmd, { + params = "", -- short parameter description + description = "List connected players", -- full description + privs = listprivs, -- require the "privs" privilege to run + func = function(name, param) + local namelist, count = "", 0 + for _,player in ipairs(minetest.get_connected_players()) do + local name = player:get_player_name() + namelist = namelist .. string.format("%s, ", name) + count = count + 1 + end + minetest.chat_send_player(name, string.format("\nCurrent players online: %d\nNames: \[%s\]", count, namelist)) + end, + }) +end + +--[[ Kill command ]]--- +if useKill then + minetest.register_chatcommand(killcmd, { + params = "", + description = "Kills you :(", + privs = killprivs, + func = function(name, param) + local player = get_player_obj(name) + player:set_hp(0.0) + end, + }) +end \ No newline at end of file diff --git a/init.lua b/init.lua index 40217d8..0fc9f42 100644 --- a/init.lua +++ b/init.lua @@ -1,144 +1,11 @@ +--[[ This mod was made by Teodor Spæren (TheRedMood) ]]-- + +-- Let the loading begin + +-- Essential components dofile(minetest.get_modpath("redsand").."/conf.lua") -lastspoke = {} +dofile(minetest.get_modpath("redsand").."/functions.lua") --- !!! FUNCTIONS !!! -- - --- Getting the player object. -function get_player_obj (name) - goodname = string.match(name, "^([^ ]+) *$") - if goodname == nil then - print("ERROR!") - return nil - end - - -- Looping trough all the players currently online - for _,player in ipairs(minetest.get_connected_players()) do - local name = player:get_player_name() - - -- Caring about letters or not? - if not careLetters then - if string.lower(name) == string.lower(goodname) then - return player - end - else - if name == goodname then - return player - end - end - end - return nil -end - --- !!! COMMANDS !!! --- - ---[[ List function. ]]-- -if useList then - minetest.register_chatcommand(listcmd, { - params = "", -- short parameter description - description = "List connected players", -- full description - privs = listprivs, -- require the "privs" privilege to run - func = function(name, param) - local namelist, count = "", 0 - for _,player in ipairs(minetest.get_connected_players()) do - local name = player:get_player_name() - namelist = namelist .. string.format("%s, ", name) - count = count + 1 - end - minetest.chat_send_player(name, string.format("Current players online: %d", count)) - minetest.chat_send_player(name, string.format("Names: \[%s\]", namelist)) - end, - }) -end - ---[[ Kill command ]]--- -if useKill then - minetest.register_chatcommand(killcmd, { - params = "", - description = "Kills you :(", - privs = killprivs, - func = function(name, param) - local player = get_player_obj(name) - player:set_hp(0.0) - end, - }) -end - ---[[ MSG command ]]--- -if useMSG then - minetest.register_chatcommand(msgcmd, { - params = " ", - description = "Talk to someone!", - privs = msgprivs, - func = function(name, param) - if string.match(param, "([^ ]+) (.+)") == nil then - minetest.chat_send_player(name, "Missing parameters") - return - end - - -- Generating the variables out of the parameters - local targetName, msg = string.match(param, "([^ ]+) (.+)") - target = get_player_obj(targetName) - - -- Checking if the target exists - if not target then - minetest.chat_send_player(name, "The target was not found") - return - end - - -- Sending the message - minetest.chat_send_player(target:get_player_name(), string.format("From %s: %s", name, msg)) - -- Register the chat in the target persons lastspoke tabler - lastspoke[target:get_player_name()] = name - end, - }) -end - ---[[ REPLY command]] -- -if useReply then - minetest.register_chatcommand(replycmd, { - params = "", - description = "Reply the last peron that messaged you.", - privs = replyprivs, - func = function(name, param) - -- We need to get the target - target = lastspoke[name] - - -- Make sure I don't crash the server. - if not target then - minetest.chat_send_player(name, "No one has spoke to you :(") - elseif param == "" then - minetest.chat_send_player(name, "You need to say something.") - else - -- We need to send the message and update the targets lastspoke[] status. - minetest.chat_send_player(target, string.format("From %s: %s", name, param)) - lastspoke[target] = name - end - end, - }) -end - - --- !!! EVENTS !!! -- - ---[[ What happens when a player joins? ]]-- -if useMOTD then - minetest.register_on_joinplayer( function(player) - minetest.after( 2.0, function(param) - minetest.chat_send_player(player:get_player_name(), string.format(MOTD, player:get_player_name())) - end ) - end ) -end - ---[[ What happens when a player die? ]]-- -if useDeathMSG then - minetest.register_on_dieplayer( function(player) - minetest.chat_send_all(string.format(DEATH_MSG, player:get_player_name())) - end ) -end - ---[[ What happens when a player respawn ]]-- -if useReviveMSG then - minetest.register_on_respawnplayer( function(player) - minetest.chat_send_all(string.format(REVIVE_MSG, player:get_player_name())) - end ) -end +dofile(minetest.get_modpath("redsand").."/messages.lua") +dofile(minetest.get_modpath("redsand").."/events.lua") +dofile(minetest.get_modpath("redsand").."/general.lua") \ No newline at end of file diff --git a/messages.lua b/messages.lua new file mode 100644 index 0000000..e12efa4 --- /dev/null +++ b/messages.lua @@ -0,0 +1,55 @@ +--[[ All code around the messaging system should be kept here. ]]-- +lastspoke = {} + +--[[ MSG command ]]--- +if useMSG then + minetest.register_chatcommand(msgcmd, { + params = " ", + description = "Talk to someone!", + privs = msgprivs, + func = function(name, param) + if string.match(param, "([^ ]+) (.+)") == nil then + minetest.chat_send_player(name, "Missing parameters") + return + end + + -- Generating the variables out of the parameters + local targetName, msg = string.match(param, "([^ ]+) (.+)") + target = get_player_obj(targetName) + + -- Checking if the target exists + if not target then + minetest.chat_send_player(name, "The target was not found") + return + end + + -- Sending the message + minetest.chat_send_player(target:get_player_name(), string.format("From %s: %s", name, msg)) + -- Register the chat in the target persons lastspoke tabler + lastspoke[target:get_player_name()] = name + end, + }) +end + +--[[ REPLY command]] -- +if useReply then + minetest.register_chatcommand(replycmd, { + params = "", + description = "Reply the last peron that messaged you.", + privs = replyprivs, + func = function(name, param) + -- We need to get the target + target = lastspoke[name] + + -- Make sure I don't crash the server. + if not target then + minetest.chat_send_player(name, "No one has spoke to you :(") + elseif param == "" then + minetest.chat_send_player(name, "You need to say something.") + else + -- We need to send the message and update the targets lastspoke[] status. + minetest.chat_send_player(target, string.format("From %s: %s", name, param)) + end + end, + }) +end \ No newline at end of file