Compare commits

...

5 Commits

Author SHA1 Message Date
Teodor Spæren 01812ae62e Update conf.lua 2012-10-15 18:17:55 +03:00
Teodor Spæren b7603a9728 Update conf.lua 2012-10-15 18:14:09 +03:00
Teodor Spæren 3e692d31f9 Update conf.lua 2012-10-15 18:08:47 +03:00
Teodor Spæren c51a4f58d3 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.
2012-10-15 15:54:25 +02:00
Teodor Spæren 092e90fa2c Added /reply and upgraded conf.lua a lot.
Adding a new command and updating the configuration file is not to bad
:)
This will need to be tested later when I get to my desktop PC.
2012-10-15 13:36:24 +02:00
8 changed files with 349 additions and 135 deletions

163
.gitignore vendored Normal file
View File

@ -0,0 +1,163 @@
#################
## Eclipse
#################
*.pydevproject
.project
.metadata
bin/
tmp/
*.tmp
*.bak
*.swp
*~.nib
local.properties
.classpath
.settings/
.loadpath
# External tool builders
.externalToolBuilders/
# Locally stored "Eclipse launch configurations"
*.launch
# CDT-specific
.cproject
# PDT-specific
.buildpath
#################
## Visual Studio
#################
## Ignore Visual Studio temporary files, build results, and
## files generated by popular Visual Studio add-ons.
# User-specific files
*.suo
*.user
*.sln.docstates
# Build results
[Dd]ebug/
[Rr]elease/
*_i.c
*_p.c
*.ilk
*.meta
*.obj
*.pch
*.pdb
*.pgc
*.pgd
*.rsp
*.sbr
*.tlb
*.tli
*.tlh
*.tmp
*.vspscc
.builds
*.dotCover
## TODO: If you have NuGet Package Restore enabled, uncomment this
#packages/
# Visual C++ cache files
ipch/
*.aps
*.ncb
*.opensdf
*.sdf
# Visual Studio profiler
*.psess
*.vsp
# ReSharper is a .NET coding add-in
_ReSharper*
# Installshield output folder
[Ee]xpress
# DocProject is a documentation generator add-in
DocProject/buildhelp/
DocProject/Help/*.HxT
DocProject/Help/*.HxC
DocProject/Help/*.hhc
DocProject/Help/*.hhk
DocProject/Help/*.hhp
DocProject/Help/Html2
DocProject/Help/html
# Click-Once directory
publish
# Others
[Bb]in
[Oo]bj
sql
TestResults
*.Cache
ClientBin
stylecop.*
~$*
*.dbmdl
Generated_Code #added for RIA/Silverlight projects
# Backup & report files from converting an old project file to a newer
# Visual Studio version. Backup files are not needed, because we have git ;-)
_UpgradeReport_Files/
Backup*/
UpgradeLog*.XML
############
## Windows
############
# Windows image file caches
Thumbs.db
# Folder config file
Desktop.ini
#############
## Python
#############
*.py[co]
# Packages
*.egg
*.egg-info
dist
build
eggs
parts
bin
var
sdist
develop-eggs
.installed.cfg
# Installer logs
pip-log.txt
# Unit test / coverage reports
.coverage
.tox
#Translations
*.mo
#Mr Developer
.mr.developer.cfg
# Mac crap
.DS_Store

View File

@ -3,6 +3,9 @@ ABOUT
Redsand is a collection of utilites for servers. It is not aimed at adding new blocks to the game,
but rather add more chat commands and so on.
Another goal is to activly develope a configuration file.
This is a version is made by Teodor Spæren ( TheRedMood )
====
FEATURES
====
@ -15,4 +18,10 @@ COMMANDS
========
/list - List out the players on the server.
/kill - Lower your health to 0.
/msg <target> <msg> - Talk to someone.
/msg <target> <msg> - Talk to someone.
/reply <msg> - Reply to the last person who talked to you.
===
LICENCE
===
READ LICENCE.txt now!

View File

@ -1,26 +1,29 @@
-- Care about small and BIG letters?
careLetters = true
--[[ What do you want to be loaded? ]]--
useList = true -- List command
useMSG = true -- Message command
useKill = true -- Kill command
useReply = true -- Reply command
-- List command
useList = true
listprivs = {shout = true}
useMOTD = true -- Message of the day
useDeathMSG = true -- Death messages
useReviveMSG = true -- Revive messages
-- Kill command
useKill = true
killprivs = {shout = true}
--[[ GLOBAL OPTIONS ]]--
careLetters = true -- Care about small and BIG letters?
-- MSG command
useMSG = true
msgprivs = {shout = true}
--[[ Privleges ]]--
listprivs = {shout = true} -- List privleges
killprivs = {shout = true} -- kill privleges
msgprivs = {shout = true} -- message privleges
replyprivs = {shout = true} -- reply privleges
--MOTD
useMOTD = true
MOTD = "Welcome %s! This is the default MOTD."
--[[ 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 Phoenix %s rises from the ashes." -- Revive message
-- Death message
useDeathMSG = true
DEATH_MSG = "%s left this world :("
-- Revive message
useReviveMSG = true
REVIVE_MSG = "Like a Phonix %s rises from the ashes."
--[[ What do you want after the / ]]--
listcmd = "list"
msgcmd = "msg"
killcmd = "kill"
replycmd = "reply"

29
events.lua Normal file
View File

@ -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

26
functions.lua Normal file
View File

@ -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

33
general.lua Normal file
View File

@ -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

122
init.lua
View File

@ -1,115 +1,11 @@
--[[ This mod was made by Teodor Spæren (TheRedMood) ]]--
-- Let the loading begin
-- Essential components
dofile(minetest.get_modpath("redsand").."/conf.lua")
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("list", {
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("kill", {
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("msg", {
params = "<target> <text>",
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))
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")

55
messages.lua Normal file
View File

@ -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 = "<target> <text>",
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 = "<text>",
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