Updated core plugin.
Added limited world. Configurable through webadmin. Added a Manage server page in webadmin where you can reload/restart/stop the server. You can add players to groups with the webadmin. without the player have to relog first You can change someone's group in-game with a command, without the player have to relog first Hardcore mode Improved death messages git-svn-id: http://mc-server.googlecode.com/svn/trunk@1306 0a769ca7-a7f5-676a-18bf-c427514a06d6
This commit is contained in:
parent
a4e6a027a1
commit
03e29802cd
@ -17,6 +17,7 @@ function InitConsoleCommands()
|
|||||||
PluginMgr:BindConsoleCommand("save-all", HandleConsoleSaveAll, "Saves all chunks");
|
PluginMgr:BindConsoleCommand("save-all", HandleConsoleSaveAll, "Saves all chunks");
|
||||||
PluginMgr:BindConsoleCommand("say", HandleConsoleSay, "Sends a chat message to all players");
|
PluginMgr:BindConsoleCommand("say", HandleConsoleSay, "Sends a chat message to all players");
|
||||||
PluginMgr:BindConsoleCommand("unload", HandleConsoleUnload, "Unloads all unused chunks");
|
PluginMgr:BindConsoleCommand("unload", HandleConsoleUnload, "Unloads all unused chunks");
|
||||||
|
PluginMgr:BindConsoleCommand("rank", HandleConsoleRank, " [Player] [Rank] - to add someone to a group");
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
@ -166,8 +167,39 @@ function HandleConsoleUnload(Split)
|
|||||||
return true;
|
return true;
|
||||||
end
|
end
|
||||||
|
|
||||||
|
function HandleConsoleRank(Split)
|
||||||
|
if Split[2] == nil or Split[3] == nil then
|
||||||
|
LOG("Usage: /rank [Player] [Group]")
|
||||||
|
return true
|
||||||
|
end
|
||||||
|
local GroupsIni = cIniFile("groups.ini")
|
||||||
|
if( GroupsIni:ReadFile() == false ) then
|
||||||
|
LOG("Could not read groups.ini!")
|
||||||
|
end
|
||||||
|
if GroupsIni:FindKey(Split[3]) == -1 then
|
||||||
|
LOG("Group does not exist")
|
||||||
|
return true
|
||||||
|
end
|
||||||
|
local UsersIni = cIniFile("users.ini")
|
||||||
|
if( UsersIni:ReadFile() == false ) then
|
||||||
|
LOG("Could not read users.ini!")
|
||||||
|
end
|
||||||
|
UsersIni:DeleteKey(Split[2])
|
||||||
|
UsersIni:GetValueSet(Split[2], "Groups", Split[3])
|
||||||
|
UsersIni:WriteFile()
|
||||||
|
local loopPlayers = function( Player )
|
||||||
|
if Player:GetName() == Split[2] then
|
||||||
|
Player:SendMessage( cChatColor.Green .. "You were moved to group " .. Split[3] )
|
||||||
|
Player:LoadPermissionsFromDisk()
|
||||||
|
end
|
||||||
|
end
|
||||||
|
local loopWorlds = function ( World )
|
||||||
|
World:ForEachPlayer( loopPlayers )
|
||||||
|
end
|
||||||
|
cRoot:Get():ForEachWorld( loopWorlds )
|
||||||
|
LOG("Player " .. Split[2] .. " Was moved to " .. Split[3])
|
||||||
|
return true
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
function HandleConsole(Split)
|
function HandleConsole(Split)
|
||||||
|
@ -19,7 +19,7 @@ function Initialize(Plugin)
|
|||||||
PLUGIN = Plugin
|
PLUGIN = Plugin
|
||||||
|
|
||||||
Plugin:SetName("Core")
|
Plugin:SetName("Core")
|
||||||
Plugin:SetVersion(10)
|
Plugin:SetVersion(12)
|
||||||
|
|
||||||
PluginManager = cRoot:Get():GetPluginManager()
|
PluginManager = cRoot:Get():GetPluginManager()
|
||||||
PluginManager:AddHook(Plugin, cPluginManager.HOOK_PLAYER_JOINED)
|
PluginManager:AddHook(Plugin, cPluginManager.HOOK_PLAYER_JOINED)
|
||||||
@ -29,13 +29,17 @@ function Initialize(Plugin)
|
|||||||
PluginManager:AddHook(Plugin, cPluginManager.HOOK_KILLING)
|
PluginManager:AddHook(Plugin, cPluginManager.HOOK_KILLING)
|
||||||
PluginManager:AddHook(Plugin, cPluginManager.HOOK_CRAFTING_NO_RECIPE)
|
PluginManager:AddHook(Plugin, cPluginManager.HOOK_CRAFTING_NO_RECIPE)
|
||||||
PluginManager:AddHook(Plugin, cPluginManager.HOOK_CHAT) -- used in web_chat.lua
|
PluginManager:AddHook(Plugin, cPluginManager.HOOK_CHAT) -- used in web_chat.lua
|
||||||
|
PluginManager:AddHook(Plugin, cPluginManager.HOOK_CHUNK_GENERATING)
|
||||||
|
PluginManager:AddHook(Plugin, cPluginManager.HOOK_PLAYER_MOVING)
|
||||||
|
|
||||||
PluginManager:BindCommand("/back", "core.back", HandleBackCommand, " - Return to your last position");
|
PluginManager:BindCommand("/back", "core.back", HandleBackCommand, " - Return to your last position");
|
||||||
PluginManager:BindCommand("/save-all", "core.save-all", HandleSaveAllCommand, " - Saves all your worlds");
|
PluginManager:BindCommand("/save-all", "core.save-all", HandleSaveAllCommand, " - Saves all your worlds");
|
||||||
PluginManager:BindCommand("/help", "core.help", HandleHelpCommand, " [Page] - Show available commands");
|
PluginManager:BindCommand("/help", "core.help", HandleHelpCommand, " [Page] - Show available commands");
|
||||||
|
PluginManager:BindCommand("/rank", "core.rank", HandleRankCommand, " [Player] [Rank] - to add someone to a group");
|
||||||
PluginManager:BindCommand("/pluginlist", "core.pluginlist", HandlePluginListCommand, " - Show list of plugins");
|
PluginManager:BindCommand("/pluginlist", "core.pluginlist", HandlePluginListCommand, " - Show list of plugins");
|
||||||
PluginManager:BindCommand("/tp", "core.teleport", HandleTPCommand, " [Player] - Teleport yourself to a player");
|
PluginManager:BindCommand("/tp", "core.teleport", HandleTPCommand, " [Player] - Teleport yourself to a player");
|
||||||
PluginManager:BindCommand("/item", "core.item", HandleItemCommand, " [ItemType/Name] <Amount> - Give yourself an item");
|
PluginManager:BindCommand("/item", "core.item", HandleItemCommand, " [ItemType/Name] <Amount> - Give yourself an item");
|
||||||
|
PluginManager:BindCommand("/i", "core.item", HandleItemCommand, "");
|
||||||
PluginManager:BindCommand("/list", "core.playerlist", HandlePlayerListCommand, " - Shows list of connected players");
|
PluginManager:BindCommand("/list", "core.playerlist", HandlePlayerListCommand, " - Shows list of connected players");
|
||||||
PluginManager:BindCommand("/who", "core.playerlist", HandlePlayerListCommand, " - Shows list of connected players");
|
PluginManager:BindCommand("/who", "core.playerlist", HandlePlayerListCommand, " - Shows list of connected players");
|
||||||
PluginManager:BindCommand("/playerlist", "core.playerlist", HandlePlayerListCommand, " - Shows list of connected players");
|
PluginManager:BindCommand("/playerlist", "core.playerlist", HandlePlayerListCommand, " - Shows list of connected players");
|
||||||
@ -55,10 +59,14 @@ function Initialize(Plugin)
|
|||||||
PluginManager:BindCommand("/viewdistance", "core.viewdistance", HandleViewDistanceCommand, " [".. cClientHandle.MIN_VIEW_DISTANCE .."-".. cClientHandle.MAX_VIEW_DISTANCE .."] - Change your view distance")
|
PluginManager:BindCommand("/viewdistance", "core.viewdistance", HandleViewDistanceCommand, " [".. cClientHandle.MIN_VIEW_DISTANCE .."-".. cClientHandle.MAX_VIEW_DISTANCE .."] - Change your view distance")
|
||||||
|
|
||||||
InitConsoleCommands();
|
InitConsoleCommands();
|
||||||
|
|
||||||
local IniFile = cIniFile("settings.ini")
|
-- Load the settings
|
||||||
|
IniFile = cIniFile("Settings.ini")
|
||||||
if ( IniFile:ReadFile() == true ) then
|
if ( IniFile:ReadFile() == true ) then
|
||||||
SHOW_PLUGIN_NAMES = IniFile:GetValueB("HelpPlugin", "ShowPluginNames", true )
|
HardCore = IniFile:GetValueSet("GameMode", "Hardcore", "false")
|
||||||
|
LimitWorld = IniFile:GetValueSetB("Worlds", "LimitWorld", true)
|
||||||
|
LimitWorldWidth = IniFile:GetValueSetI("Worlds", "LimitWorldWidth", 200)
|
||||||
|
SHOW_PLUGIN_NAMES = IniFile:GetValueSetB("HelpPlugin", "ShowPluginNames", true )
|
||||||
end
|
end
|
||||||
|
|
||||||
-- Load whitelist, and add default values and stuff
|
-- Load whitelist, and add default values and stuff
|
||||||
@ -96,6 +104,7 @@ function Initialize(Plugin)
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
Plugin:AddWebTab("Manage Server", HandleRequest_ManageServer);
|
||||||
Plugin:AddWebTab("Server Settings", HandleRequest_ServerSettings);
|
Plugin:AddWebTab("Server Settings", HandleRequest_ServerSettings);
|
||||||
Plugin:AddWebTab("Chat", HandleRequest_Chat);
|
Plugin:AddWebTab("Chat", HandleRequest_Chat);
|
||||||
Plugin:AddWebTab("Playerlist", HandleRequest_PlayerList);
|
Plugin:AddWebTab("Playerlist", HandleRequest_PlayerList);
|
||||||
|
21
MCServer/Plugins/Core/onchunkgenerating.lua
Normal file
21
MCServer/Plugins/Core/onchunkgenerating.lua
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
function OnChunkGenerating(World, ChunkX, ChunkZ, ChunkDesc)
|
||||||
|
if LimitWorld == true then
|
||||||
|
SpawnX = math.floor(World:GetSpawnX() / 16)
|
||||||
|
SpawnZ = math.floor(World:GetSpawnZ() / 16)
|
||||||
|
if ( (SpawnX + LimitWorldWidth) < ChunkX ) or ( (SpawnX - LimitWorldWidth) > ChunkX ) then
|
||||||
|
FillBlocks(World, ChunkX, ChunkZ, ChunkDesc)
|
||||||
|
end
|
||||||
|
if ( (SpawnZ + LimitWorldWidth) < ChunkZ ) or ( (SpawnZ - LimitWorldWidth) > ChunkZ ) then
|
||||||
|
FillBlocks(World, ChunkX, ChunkZ, ChunkDesc)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function FillBlocks(World, ChunkX, ChunkZ, ChunkDesc)
|
||||||
|
ChunkDesc:FillBlocks(0,0)
|
||||||
|
ChunkDesc:SetUseDefaultBiomes(false)
|
||||||
|
ChunkDesc:SetUseDefaultHeight(false)
|
||||||
|
ChunkDesc:SetUseDefaultComposition(false)
|
||||||
|
ChunkDesc:SetUseDefaultStructures(false)
|
||||||
|
ChunkDesc:SetUseDefaultFinish(false)
|
||||||
|
end
|
@ -1,24 +1,87 @@
|
|||||||
function OnKilling(Victim, Killer)
|
function OnKilling(Victim, Killer)
|
||||||
if (Killer == nil) then
|
if Victim:IsPlayer() == true then
|
||||||
local KilledPlayer = tolua.cast(Victim, "cPlayer")
|
Server = cRoot:Get():GetServer()
|
||||||
if( not KilledPlayer:IsA("cPlayer") or KilledPlayer == nil ) then
|
if Killer == nil then
|
||||||
return false
|
if Victim:IsOnFire() then
|
||||||
|
Server:SendMessage( cChatColor.Red .. "Player " .. Victim:GetName() .. " burned away." )
|
||||||
|
CheckHardcore(Victim)
|
||||||
|
return false
|
||||||
|
end
|
||||||
|
if Victim:GetWorld():GetBlock(Victim:GetPosX(), Victim:GetPosY(), Victim:GetPosZ()) == 10 or Victim:GetWorld():GetBlock(Victim:GetPosX(), Victim:GetPosY(), Victim:GetPosZ()) == 11 then
|
||||||
|
Server:SendMessage( cChatColor.Red .. Victim:GetName() .. " tried to swim in lava" )
|
||||||
|
CheckHardcore(Victim)
|
||||||
|
return false
|
||||||
|
end
|
||||||
|
else
|
||||||
|
if Killer:IsPlayer() == true then
|
||||||
|
Server:SendMessage( cChatColor.Red .. "Player " .. Victim:GetName() .. " is killed by " .. Killer:GetName() )
|
||||||
|
CheckHardcore(Victim)
|
||||||
|
return false
|
||||||
|
elseif Killer:IsMob() == true then
|
||||||
|
if Killer:IsA("cZombie") then
|
||||||
|
Server:SendMessage( cChatColor.Red .. "Player " .. Victim:GetName() .. " is eaten by a zombie")
|
||||||
|
CheckHardcore(Victim)
|
||||||
|
return false
|
||||||
|
elseif Killer:IsA("cSkeleton") then
|
||||||
|
Server:SendMessage( cChatColor.Red .. "Player " .. Victim:GetName() .. " is killed by a skeleton" )
|
||||||
|
CheckHardcore(Victim)
|
||||||
|
return false
|
||||||
|
elseif Killer:IsA("cCreeper") then
|
||||||
|
Server:SendMessage( cChatColor.Red .. "Player " .. Victim:GetName() .. " is killed by a creeper")
|
||||||
|
CheckHardcore(Victim)
|
||||||
|
return false
|
||||||
|
elseif Killer:IsA("cSpider") then
|
||||||
|
Server:SendMessage( cChatColor.Red .. "Player " .. Victim:GetName() .. " is killed by a spider")
|
||||||
|
CheckHardcore(Victim)
|
||||||
|
return false
|
||||||
|
elseif Killer:IsA("cCaveSpider") then
|
||||||
|
Server:SendMessage( cChatColor.Red .. "Player " .. Victim:GetName() .. " is killed by a cavespider")
|
||||||
|
CheckHardcore(Victim)
|
||||||
|
return false
|
||||||
|
elseif Killer:IsA("cBlaze") then
|
||||||
|
Server:SendMessage( cChatColor.Red .. "Player " .. Victim:GetName() .. " is killed by a blaze")
|
||||||
|
CheckHardcore(Victim)
|
||||||
|
return false
|
||||||
|
elseif Killer:IsA("cEnderman") then
|
||||||
|
Server:SendMessage( cChatColor.Red .. "Player " .. Victim:GetName() .. " is slain by a enderman")
|
||||||
|
CheckHardcore(Victim)
|
||||||
|
return false
|
||||||
|
elseif Killer:IsA("cSilverfish") then
|
||||||
|
Server:SendMessage( cChatColor.Red .. "Player " .. Victim:GetName() .. " is killed by a silverfish")
|
||||||
|
CheckHardcore(Victim)
|
||||||
|
return false
|
||||||
|
elseif Killer:IsA("cSlime") then
|
||||||
|
Server:SendMessage( cChatColor.Red .. "Player " .. Victim:GetName() .. " is killed by a slime")
|
||||||
|
CheckHardcore(Victim)
|
||||||
|
return false
|
||||||
|
elseif Killer:IsA("cWitch") then
|
||||||
|
Server:SendMessage( cChatColor.Red .. "Player " .. Victim:GetName() .. " is killed by a witch")
|
||||||
|
CheckHardcore(Victim)
|
||||||
|
return false
|
||||||
|
elseif Killer:IsA("cZombiepigman") then
|
||||||
|
Server:SendMessage( cChatColor.Red .. "Player " .. Victim:GetName() .. " is slain by a zombiepigman")
|
||||||
|
CheckHardcore(Victim)
|
||||||
|
return false
|
||||||
|
elseif Killer:IsA("cMagmacube") then
|
||||||
|
Server:SendMessage( cChatColor.Red .. "Player " .. Victim:GetName() .. " is killed by a magmacube")
|
||||||
|
CheckHardcore(Victim)
|
||||||
|
return false
|
||||||
|
elseif Killer:IsA("cWolf") then
|
||||||
|
Server:SendMessage( cChatColor.Red .. "Player " .. Victim:GetName() .. " is killed by a wolf")
|
||||||
|
CheckHardcore(Victim)
|
||||||
|
return false
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
Server:SendMessage( cChatColor.Red .. Victim:GetName() .. " Died")
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function CheckHardcore(Victim)
|
||||||
|
if HardCore == "true" then
|
||||||
|
if Victim:IsPlayer() == true then
|
||||||
|
local KilledPlayer = tolua.cast(Victim, "cPlayer")
|
||||||
|
BanPlayer(KilledPlayer:GetName(), "You Died")
|
||||||
end
|
end
|
||||||
|
|
||||||
local Server = cRoot:Get():GetServer()
|
|
||||||
Server:SendMessage( cChatColor.Red .. KilledPlayer:GetName() .. " died" )
|
|
||||||
else
|
|
||||||
local KilledPlayer = tolua.cast(Victim, "cPlayer")
|
|
||||||
if( not KilledPlayer:IsA("cPlayer") or KilledPlayer == nil ) then
|
|
||||||
return false
|
|
||||||
end
|
|
||||||
local KillerPlayer = tolua.cast(Killer, "cPlayer")
|
|
||||||
if( not KillerPlayer:IsA("cPlayer") or KillerPlayer == nil ) then
|
|
||||||
return false
|
|
||||||
end
|
|
||||||
|
|
||||||
local Server = cRoot:Get():GetServer()
|
|
||||||
Server:SendMessage( cChatColor.Red .. KilledPlayer:GetName() .. " was killed by " .. KillerPlayer:GetName() .. "!" )
|
|
||||||
end
|
end
|
||||||
return false
|
|
||||||
end
|
end
|
21
MCServer/Plugins/Core/onplayermoving.lua
Normal file
21
MCServer/Plugins/Core/onplayermoving.lua
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
function OnPlayerMoving( Player )
|
||||||
|
if LimitWorld == true then
|
||||||
|
local World = Player:GetWorld()
|
||||||
|
local SpawnX = math.floor(World:GetSpawnX() / 16)
|
||||||
|
local SpawnZ = math.floor(World:GetSpawnZ() / 16)
|
||||||
|
local X = math.floor(Player:GetPosX() / 16)
|
||||||
|
local Z = math.floor(Player:GetPosZ() / 16)
|
||||||
|
if ( (SpawnX + LimitWorldWidth - 1) < X ) then
|
||||||
|
Player:TeleportTo(Player:GetPosX() - 1, Player:GetPosY(), Player:GetPosZ())
|
||||||
|
end
|
||||||
|
if ( (SpawnX - LimitWorldWidth + 1) > X ) then
|
||||||
|
Player:TeleportTo(Player:GetPosX() + 1, Player:GetPosY(), Player:GetPosZ())
|
||||||
|
end
|
||||||
|
if ( (SpawnZ + LimitWorldWidth - 1) < Z ) then
|
||||||
|
Player:TeleportTo(Player:GetPosX(), Player:GetPosY(), Player:GetPosZ() - 1)
|
||||||
|
end
|
||||||
|
if ( (SpawnZ - LimitWorldWidth + 1) > Z ) then
|
||||||
|
Player:TeleportTo(Player:GetPosX(), Player:GetPosY(), Player:GetPosZ() + 1)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
33
MCServer/Plugins/Core/rank.lua
Normal file
33
MCServer/Plugins/Core/rank.lua
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
function HandleRankCommand( Split, Player )
|
||||||
|
if Split[2] == nil or Split[3] == nil then
|
||||||
|
Player:SendMessage(cChatColor.Rose .. "Usage: /rank [Player] [Group]")
|
||||||
|
return true
|
||||||
|
end
|
||||||
|
local GroupsIni = cIniFile("groups.ini")
|
||||||
|
if( GroupsIni:ReadFile() == false ) then
|
||||||
|
LOG("Could not read groups.ini!")
|
||||||
|
end
|
||||||
|
if GroupsIni:FindKey(Split[3]) == -1 then
|
||||||
|
Player:SendMessage(cChatColor.Rose .. "Group does not exist")
|
||||||
|
return true
|
||||||
|
end
|
||||||
|
local UsersIni = cIniFile("users.ini")
|
||||||
|
if( UsersIni:ReadFile() == false ) then
|
||||||
|
LOG("Could not read users.ini!")
|
||||||
|
end
|
||||||
|
UsersIni:DeleteKey(Split[2])
|
||||||
|
UsersIni:GetValueSet(Split[2], "Groups", Split[3])
|
||||||
|
UsersIni:WriteFile()
|
||||||
|
local loopPlayers = function( Player )
|
||||||
|
if Player:GetName() == Split[2] then
|
||||||
|
Player:SendMessage( cChatColor.Green .. "You were moved to group " .. Split[3] )
|
||||||
|
Player:LoadPermissionsFromDisk()
|
||||||
|
end
|
||||||
|
end
|
||||||
|
local loopWorlds = function ( World )
|
||||||
|
World:ForEachPlayer( loopPlayers )
|
||||||
|
end
|
||||||
|
cRoot:Get():ForEachWorld( loopWorlds )
|
||||||
|
Player:SendMessage(cChatColor.Green .. "Player " .. Split[2] .. " Was moved to " .. Split[3])
|
||||||
|
return true
|
||||||
|
end
|
@ -1,6 +1,8 @@
|
|||||||
function HandleStopCommand( Split, Player )
|
function HandleStopCommand( Split, Player )
|
||||||
Server = cRoot:Get():GetServer()
|
Server = cRoot:Get():GetServer()
|
||||||
|
PluginManager = cRoot:Get():GetPluginManager()
|
||||||
Server:SendMessage( cChatColor.Green .. "Stopping the server..." )
|
Server:SendMessage( cChatColor.Green .. "Stopping the server..." )
|
||||||
cRoot:Get():ServerCommand("stop")
|
PluginManager:ExecuteConsoleCommand("stop")
|
||||||
|
--cRoot:Get():ServerCommand("stop")
|
||||||
return true
|
return true
|
||||||
end
|
end
|
24
MCServer/Plugins/Core/web_manageserver.lua
Normal file
24
MCServer/Plugins/Core/web_manageserver.lua
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
function HandleRequest_ManageServer( Request )
|
||||||
|
local Content = ""
|
||||||
|
if( Request.PostParams["RestartServer"] ~= nil ) then
|
||||||
|
cRoot:Get():ServerCommand("restart")
|
||||||
|
elseif( Request.PostParams["ReloadServer"] ~= nil ) then
|
||||||
|
cRoot:Get():GetPluginManager():ReloadPlugins()
|
||||||
|
elseif( Request.PostParams["StopServer"] ~= nil ) then
|
||||||
|
cRoot:Get():ServerCommand("stop")
|
||||||
|
end
|
||||||
|
Content = Content .. [[
|
||||||
|
<form method="POST">]]
|
||||||
|
|
||||||
|
Content = Content .. [[<table>
|
||||||
|
<tr style="padding-top:5px;">
|
||||||
|
<td><input type="submit" value="Restart Server" name="RestartServer"> <br /> restart the server</td>
|
||||||
|
<td><input type="submit" value="Reload Server" name="ReloadServer"> <br /> reload the server</td>
|
||||||
|
<td><input type="submit" value="Stop Server" name="StopServer"> <br /> stop the server</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
]]
|
||||||
|
return Content
|
||||||
|
end
|
||||||
|
|
@ -1,11 +1,6 @@
|
|||||||
local function ShowUsersTable()
|
local function ShowUsersTable()
|
||||||
local Content = "<h4>Users</h4>"
|
local Content = "<h4>Users</h4>"
|
||||||
|
|
||||||
local UsersIni = cIniFile("users.ini")
|
|
||||||
if( UsersIni:ReadFile() == false ) then
|
|
||||||
return "Could not read users.ini!"
|
|
||||||
end
|
|
||||||
|
|
||||||
local NumUsers = UsersIni:GetNumKeys()
|
local NumUsers = UsersIni:GetNumKeys()
|
||||||
|
|
||||||
Content = Content .. "<table>"
|
Content = Content .. "<table>"
|
||||||
@ -36,11 +31,6 @@ end
|
|||||||
local function ShowGroupsTable()
|
local function ShowGroupsTable()
|
||||||
local Content = "<h4>Groups</h4>"
|
local Content = "<h4>Groups</h4>"
|
||||||
|
|
||||||
local GroupsIni = cIniFile("groups.ini")
|
|
||||||
if( GroupsIni:ReadFile() == false ) then
|
|
||||||
return "Could not read groups.ini!"
|
|
||||||
end
|
|
||||||
|
|
||||||
local NumGroups = GroupsIni:GetNumKeys()
|
local NumGroups = GroupsIni:GetNumKeys()
|
||||||
|
|
||||||
Content = Content .. "<table>"
|
Content = Content .. "<table>"
|
||||||
@ -69,9 +59,55 @@ local function ShowGroupsTable()
|
|||||||
return Content
|
return Content
|
||||||
end
|
end
|
||||||
|
|
||||||
|
local function AddPlayers( Request )
|
||||||
|
local Content = "<h4>Add Players</h4>"
|
||||||
|
if( Request.PostParams["AddPlayerToGroup"] ~= nil ) then
|
||||||
|
if Request.PostParams["AddPlayer"] ~= "" then
|
||||||
|
if Request.PostParams["AddGroups"] ~= "" then
|
||||||
|
if GroupsIni:FindKey(Request.PostParams["AddGroup"]) == -1 then
|
||||||
|
return "Group does not exist"
|
||||||
|
end
|
||||||
|
UsersIni:DeleteKey(Request.PostParams["AddPlayer"])
|
||||||
|
UsersIni:GetValueSet(Request.PostParams["AddPlayer"], "Groups", Request.PostParams["AddGroup"])
|
||||||
|
UsersIni:WriteFile()
|
||||||
|
local loopPlayers = function( Player )
|
||||||
|
if Player:GetName() == Request.PostParams["AddPlayer"] then
|
||||||
|
Player:SendMessage( cChatColor.Green .. "You were moved to group " .. Request.PostParams["AddGroup"] )
|
||||||
|
Player:LoadPermissionsFromDisk()
|
||||||
|
end
|
||||||
|
end
|
||||||
|
local loopWorlds = function ( World )
|
||||||
|
World:ForEachPlayer( loopPlayers )
|
||||||
|
end
|
||||||
|
cRoot:Get():ForEachWorld( loopWorlds )
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
Content = Content .. [[
|
||||||
|
<form method="POST">
|
||||||
|
<table>
|
||||||
|
<tr><td style="width: 20%;">Player:</td>
|
||||||
|
<td><input type="text" name="AddPlayer" value=""></td></tr><br>
|
||||||
|
<tr><td style="width: 20%;">Group:</td>
|
||||||
|
<td><input type="text" name="AddGroup" value=""></td></tr>
|
||||||
|
</table>
|
||||||
|
<input type="submit" value="Add Player" name="AddPlayerToGroup">]]
|
||||||
|
return Content
|
||||||
|
end
|
||||||
|
|
||||||
function HandleRequest_Permissions( Request )
|
function HandleRequest_Permissions( Request )
|
||||||
|
GroupsIni = cIniFile("groups.ini")
|
||||||
|
if( GroupsIni:ReadFile() == false ) then
|
||||||
|
return "Could not read groups.ini!"
|
||||||
|
end
|
||||||
|
UsersIni = cIniFile("users.ini")
|
||||||
|
if( UsersIni:ReadFile() == false ) then
|
||||||
|
return "Could not read users.ini!"
|
||||||
|
end
|
||||||
|
|
||||||
local Content = ""
|
local Content = ""
|
||||||
|
|
||||||
|
Content = Content .. AddPlayers( Request )
|
||||||
Content = Content .. ShowGroupsTable()
|
Content = Content .. ShowGroupsTable()
|
||||||
Content = Content .. ShowUsersTable()
|
Content = Content .. ShowUsersTable()
|
||||||
|
|
||||||
|
@ -52,6 +52,13 @@ local function ShowGeneralSettings( Request )
|
|||||||
if( tonumber( Request.PostParams["Authentication_Authenticate"] ) ~= nil ) then
|
if( tonumber( Request.PostParams["Authentication_Authenticate"] ) ~= nil ) then
|
||||||
SettingsIni:SetValue("Authentication", "Authenticate", Request.PostParams["Authentication_Authenticate"], false )
|
SettingsIni:SetValue("Authentication", "Authenticate", Request.PostParams["Authentication_Authenticate"], false )
|
||||||
end
|
end
|
||||||
|
if( tonumber( Request.PostParams["Limit_World"] ) ~= nil ) then
|
||||||
|
SettingsIni:SetValue("Worlds", "LimitWorld", Request.PostParams["Limit_World"], false )
|
||||||
|
end
|
||||||
|
if( tonumber( Request.PostParams["LimitWorldWidth"] ) ~= nil ) then
|
||||||
|
SettingsIni:SetValue("Worlds", "LimitWorldWidth", Request.PostParams["LimitWorldWidth"], false )
|
||||||
|
end
|
||||||
|
|
||||||
if( SettingsIni:WriteFile() == false ) then
|
if( SettingsIni:WriteFile() == false ) then
|
||||||
InfoMsg = [[<b style="color: red;">ERROR: Could not write to settings.ini!</b>]]
|
InfoMsg = [[<b style="color: red;">ERROR: Could not write to settings.ini!</b>]]
|
||||||
else
|
else
|
||||||
@ -88,6 +95,13 @@ local function ShowGeneralSettings( Request )
|
|||||||
<td>]] .. HTML_Select_On_Off("Authentication_Authenticate", SettingsIni:GetValueI("Authentication", "Authenticate") ) .. [[</td></tr>
|
<td>]] .. HTML_Select_On_Off("Authentication_Authenticate", SettingsIni:GetValueI("Authentication", "Authenticate") ) .. [[</td></tr>
|
||||||
</table><br>
|
</table><br>
|
||||||
|
|
||||||
|
<table>
|
||||||
|
<th colspan="2">LimitWorld</th>
|
||||||
|
<tr><td style="width: 50%;">Limit World:</td>
|
||||||
|
<td>]] .. HTML_Select_On_Off("Limit_World", SettingsIni:GetValueI("Worlds", "LimitWorld") ) .. [[</td></tr>
|
||||||
|
<tr><td>Max Chunks from spawn:</td>
|
||||||
|
<td><input type="text" name="LimitWorldWidth" value="]] .. SettingsIni:GetValue("Worlds", "LimitWorldWidth") .. [["></td></tr>
|
||||||
|
</table><br>
|
||||||
<input type="submit" value="Save Settings" name="general_submit"> WARNING: Any changes made here might require a server restart in order to be applied!
|
<input type="submit" value="Save Settings" name="general_submit"> WARNING: Any changes made here might require a server restart in order to be applied!
|
||||||
</form>]]
|
</form>]]
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user