Pull in the latest core changes.

Squashed commit of the following:

commit da84f4977522ab48ead4af7a71efd43cdd4e3d0a
Merge: cc77056 a631484
Author: bearbin <bearbin@gmail.com>
Date:   Thu Aug 1 10:58:05 2013 -0700

    Merge pull request #10 from mc-server/tabmix

    Fix the inconsistency of spaces and tabs.

commit a6314849c2b474b6e17a245c91a2ac74c7acf7bf
Author: Alexander Harkness <bearbin@gmail.com>
Date:   Thu Aug 1 16:47:15 2013 +0100

    Changed everything to use the correct system of tabs.

commit cc7705645b6b387c618c9448fa6b0d5c789370c6
Author: Tiger Wang <ziwei.tiger@hotmail.co.uk>
Date:   Wed Jul 31 16:56:41 2013 +0100

    Rewrote Info Messages + Implemented #7 [SEE DESC]

    Standardisation of info messages: [INFO] [WARNING] [JOIN] [LEAVE]
    [FATALITY] with colours Green, Gold, Red, Rose, and Yellow.
    Individual worlds have individual LimitWorld setting, with individual
    WebAdmin setting as well.

commit 16cae4cdc0ec067e7e71fa5c5a3ba8c248ce063b
Author: Tiger Wang <ziwei.tiger@hotmail.co.uk>
Date:   Mon Jul 29 14:47:45 2013 +0100

    Fix of nil value in SpawnProtect

commit 7c33f75e7da7fc104112c17fcb53bc9f06fe09fc
Author: Tiger Wang <ziwei.tiger@hotmail.co.uk>
Date:   Mon Jul 29 13:19:11 2013 +0100

    Fixed potential SpawnProtect nil value issue

    Now detects if PROTECTRADIUS is zero, and if so, cancels checks.

commit 0c4a9d427620ab04ca01b5f31ed9b90530353d96
Author: Tiger Wang <ziwei.tiger@hotmail.co.uk>
Date:   Mon Jul 29 13:07:50 2013 +0100

    Enhanced SpawnProtect greatly (thanks xoft)

    Wow. Who knew ~30 lines of code could become one?

commit 17f5ef4fed0b6f32900cc7473563848466139655
Author: Tiger Wang <ziwei.tiger@hotmail.co.uk>
Date:   Mon Jul 29 11:11:22 2013 +0100

    Removed Development LOGINFOs

commit 02034bf2d67f2ae62092b0688d81338f7b0788df
Author: Tiger Wang <ziwei.tiger@hotmail.co.uk>
Date:   Mon Jul 29 10:40:57 2013 +0100

    Implemented Issue #5 Enhancement [SEE DESC]

    Made spawn protection configurable in each world's world file. World has
    to be listed in settings.ini!

commit ccc73db8c51e45372069ec0a42f437cfb25253b1
Merge: 6bf4b40 21c7c68
Author: Alexander Harkness <bearbin@gmail.com>
Date:   Sun Jul 28 14:00:15 2013 +0100

    Merge branch 'master' of github.com:tigerw/MCSCore into tigerw-master

    Conflicts:
    	main.lua

commit 21c7c68d20782a7dfd0d8f9ce0996397549dd425
Author: Tiger Wang <ziwei.tiger@hotmail.co.uk>
Date:   Sun Jul 28 12:55:50 2013 +0100

    Default WorldLimiter = Off

commit 141298481f3adef30b68d0c4200204aa264cb3e2
Author: Tiger Wang <ziwei.tiger@hotmail.co.uk>
Date:   Sun Jul 28 12:47:24 2013 +0100

    Fixed Potential WorldLimit & OnDisable Bugs

    Changed WorldLimiter if detection from nil value to config boolean.
    Changed OnDisable to use hardcoded name as Plugin:GetName was apparently
    a nil value. ??

commit 6bf4b40a0e27677afa6df9cb3521266e6b99c4f7
Merge: 1ca4217 bfd6c5f
Author: bearbin <bearbin@gmail.com>
Date:   Sat Jul 27 11:44:18 2013 -0700

    Merge pull request #3 from tonibm19/master

    Added /me command

commit bfd6c5f2a47cda4ac98a7225736e2669eaf61849
Author: tonibm19 <tonibm19@gmail.com>
Date:   Sat Jul 27 20:35:22 2013 +0200

    Added /me command

commit d25abaf44a6f5828b90297ff80003d2cd2a90be5
Author: tonibm19 <tonibm19@gmail.com>
Date:   Sat Jul 27 20:30:31 2013 +0200

    Added /me command

commit 9047f7778aa1cdd42d22c4dcf925db792b4d684e
Author: tonibm19 <tonibm19@gmail.com>
Date:   Sat Jul 27 20:29:24 2013 +0200

    added /me command

commit 1ca42172391d41ba71c65a3f15d3a96d15a80496
Merge: 52a6f4e 7a40336
Author: Tiger Wang <ziwei.tiger@hotmail.co.uk>
Date:   Sat Jul 27 09:01:45 2013 -0700

    Merge pull request #2 from tigerw/master

    Fixed /give descriptor & removed webadmin

commit 7a40336437525c447adae3d9800e75b39c0300c4
Author: Tiger Wang <ziwei.tiger@hotmail.co.uk>
Date:   Sat Jul 27 17:00:38 2013 +0100

    Fixed /give descriptor & removed webadmin

commit 52a6f4e35bdea2ae9f33977928b6693f5800e515
Merge: f5d56ff 2af1da8
Author: Tiger Wang <ziwei.tiger@hotmail.co.uk>
Date:   Sat Jul 27 08:51:45 2013 -0700

    Merge pull request #1 from tigerw/master

    Added TPA (tonibm9's fork)

commit 2af1da8a3cd8e94674b22805662b83de87ac4a95
Author: Tiger Wang <ziwei.tiger@hotmail.co.uk>
Date:   Sat Jul 27 16:38:10 2013 +0100

    Added TPA (tonibm9's fork)

    With code from STR_Warrior.

commit f5d56ffeb02fef4735e846661fa71d15622d25b9
Author: Tiger Wang <ziwei.tiger@hotmail.co.uk>
Date:   Sat Jul 27 15:51:18 2013 +0100

    Integrated SpawnProtect & Bugfixes [SEE DESC.]

    Integrated bearbin's SpawnProtect. Fixed config file bugs. Improved
    SpawnProtect to use settings.ini. Variable cleanup (SHOW_PLUGIN_NAMES).
    File and filename cleanup.

commit 56dc51c00af4514253c04e38b5ccc9fbed2f0022
Author: Tiger Wang <ziwei.tiger@hotmail.co.uk>
Date:   Fri Jul 26 23:14:40 2013 +0100

    Update README.md

    Added info.

commit acd7e2849dcd7f3ee7bdc6b0f9b777ee1d9cbb3c
Author: Tiger Wang <ziwei.tiger@hotmail.co.uk>
Date:   Fri Jul 26 19:37:59 2013 +0100

    Implemented Block Property checking for Collisions

    Used g_BlockIsSolid, instead of checking data values.

commit 246d423ff9660a2b00a1c51e6276ec74eb3419de
Author: Tiger Wang <ziwei.tiger@hotmail.co.uk>
Date:   Fri Jul 26 15:49:55 2013 +0100

    Updated Files

    Buildpermandcollision: updated collision code to check for torches and
    redstone torches.
    Help: attempt at always showing page number
    Web_serversettings: attempt at introducing a check for Maximum Players
    (must be above zero).

commit 868f99ab49edeee78f4fc1c212c6bf614b860378
Author: Tiger Wang <ziwei.tiger@hotmail.co.uk>
Date:   Thu Jul 25 19:46:08 2013 +0100

    Update README.md

    Extended 'GUI Redesign' section.

commit e0df40bd082bdeb5c6823b485bc5001103a77502
Author: Tiger Wang <ziwei.tiger@hotmail.co.uk>
Date:   Thu Jul 25 19:43:00 2013 +0100

    Update README.md

    Added features and fixes and instructions for use.

commit 332d8221f753f1a38d6c21bfc30af5890f48e3bb
Author: Tiger Wang <ziwei.tiger@hotmail.co.uk>
Date:   Thu Jul 25 19:35:27 2013 +0100

    Uploaded All Files

    All Core files, both modified and unmodified.

commit 3dd191f6bed71c863ee264856fbc3660e52cf88b
Author: Tiger Wang <ziwei.tiger@hotmail.co.uk>
Date:   Thu Jul 25 04:59:50 2013 -0700

    Initial commit
master
Alexander Harkness 2013-08-02 07:48:47 +01:00
parent 3531bdb60b
commit 207a452171
16 changed files with 202 additions and 202 deletions

View File

@ -39,7 +39,7 @@ function BanPlayer(PlayerName, Reason)
end
function HandleUnbanCommand( Split, Player )
if( #Split < 2 ) then
if( #Split < 2 ) then
Player:SendMessage(cChatColor.Yellow .. "[INFO] " .. cChatColor.White .. "Usage: /unban [Player]" )
return true
end

View File

@ -5,7 +5,7 @@ function InitConsoleCommands()
-- Please keep the list alpha-sorted
PluginMgr:BindConsoleCommand("ban", HandleConsoleBan, "Bans a player by name");
PluginMgr:BindConsoleCommand("unban", HandleConsoleUnban, "Unbans a player by name");
PluginMgr:BindConsoleCommand("unban", HandleConsoleUnban, "Unbans a player by name");
PluginMgr:BindConsoleCommand("banlist", HandleConsoleBanList, "Lists all players banned by name");
PluginMgr:BindConsoleCommand("banlist ips", HandleConsoleBanList, "Lists all players banned by IP");
PluginMgr:BindConsoleCommand("help", HandleConsoleHelp, "Lists all commands");
@ -40,7 +40,7 @@ function HandleConsoleBan(Split)
end
function HandleConsoleUnban(Split)
if( #Split < 2 ) then
if( #Split < 2 ) then
return true, "Usage: /unban [Player]"
end

View File

@ -32,7 +32,7 @@ function HandleHelpCommand(Split, Player)
-- CurrentPage now contains the total number of pages, and Output has the individual help lines to be sent
Player:SendMessage(cChatColor.Purple .. "---------- [COMMANDS HELP " .. cChatColor.Gold .. "(Page " .. PageRequested .. " / " .. CurrentPage .. ")" .. cChatColor.Purple .. "] -----------");
Player:SendMessage(cChatColor.Purple .. "'-' means no prefix, '~' means a value is required.");
Player:SendMessage(cChatColor.Purple .. "'-' means no prefix, '~' means a value is required.");
for idx, msg in ipairs(Output) do
Player:SendMessage(msg);
end;

View File

@ -13,10 +13,10 @@ function Initialize(Plugin)
Plugin:SetName("Core")
Plugin:SetVersion(13)
--ADD HOOKS
--ADD HOOKS
PluginManager = cRoot:Get():GetPluginManager()
PluginManager:AddHook(Plugin, cPluginManager.HOOK_PLAYER_JOINED)
PluginManager:AddHook(Plugin, cPluginManager.HOOK_DISCONNECT)
PluginManager:AddHook(Plugin, cPluginManager.HOOK_DISCONNECT)
PluginManager:AddHook(Plugin, cPluginManager.HOOK_PLAYER_BREAKING_BLOCK)
PluginManager:AddHook(Plugin, cPluginManager.HOOK_PLAYER_PLACING_BLOCK)
PluginManager:AddHook(Plugin, cPluginManager.HOOK_LOGIN)
@ -25,9 +25,9 @@ function Initialize(Plugin)
PluginManager:AddHook(Plugin, cPluginManager.HOOK_CHAT) -- used in web_chat.lua
PluginManager:AddHook(Plugin, cPluginManager.HOOK_PLAYER_MOVING)
--PLEASE ALPHA SORT http://elmosaukko.com/sort-alphabetically/ THIS LIST
--BIND COMMANDS
PluginManager:BindCommand("/back", "core.back", HandleBackCommand, " - Return to your last position");
--PLEASE ALPHA SORT http://elmosaukko.com/sort-alphabetically/ THIS LIST
--BIND COMMANDS
PluginManager:BindCommand("/back", "core.back", HandleBackCommand, " - Return to your last position");
PluginManager:BindCommand("/ban", "core.ban", HandleBanCommand, " ~ Ban a player");
PluginManager:BindCommand("/give", "core.give", HandleGiveCommand, " ~ Give yourself an item");
PluginManager:BindCommand("/gm", "core.changegm", HandleChangeGMCommand, " ~ Change your gamemode");
@ -46,10 +46,10 @@ function Initialize(Plugin)
PluginManager:BindCommand("/stop", "core.stop", HandleStopCommand, " - Stops the server");
PluginManager:BindCommand("/time", "core.time", HandleTimeCommand, " ~ Sets the time of day");
PluginManager:BindCommand("/downfall", "core.downfall", HandleDownfallCommand, " - Toggles the weather");
PluginManager:BindCommand("/me", "core.me", HandleMeCommand, " ~ Tell what you are doing");
PluginManager:BindCommand("/me", "core.me", HandleMeCommand, " ~ Tell what you are doing");
PluginManager:BindCommand("/top", "core.top", HandleTopCommand, " - Teleport yourself to the top most block");
PluginManager:BindCommand("/tp", "core.teleport", HandleTPCommand, " ~ Teleport yourself to a player");
PluginManager:BindCommand("/tpa", "core.teleport", HandleTPACommand, " ~ Ask to teleport yourself to a player");
PluginManager:BindCommand("/tp", "core.teleport", HandleTPCommand, " ~ Teleport yourself to a player");
PluginManager:BindCommand("/tpa", "core.teleport", HandleTPACommand, " ~ Ask to teleport yourself to a player");
PluginManager:BindCommand("/tpaccept", "core.teleport", HandleTPAcceptCommand, " ~ Accept a teleportation request");
PluginManager:BindCommand("/unban", "core.unban", HandleUnbanCommand, " ~ Unban a player");
PluginManager:BindCommand("/viewdistance", "core.viewdistance", HandleViewDistanceCommand, " [".. cClientHandle.MIN_VIEW_DISTANCE .."-".. cClientHandle.MAX_VIEW_DISTANCE .."] - Change your view distance")
@ -63,27 +63,27 @@ function Initialize(Plugin)
HardCore = IniFile:GetValueSet("GameMode", "Hardcore", "false")
IniFile:WriteFile()
end
WorldsSpawnProtect = {}
local KeyIdx = IniFile:FindKey("Worlds") --(FIND WHERE 'WORLDS' KEY IS LOCATED)
local NumValues = (IniFile:GetNumValues( KeyIdx )) --(HOW MANY VALUES ARE THERE?)
WorldsSpawnProtect = {}
local KeyIdx = IniFile:FindKey("Worlds") --(FIND WHERE 'WORLDS' KEY IS LOCATED)
local NumValues = (IniFile:GetNumValues( KeyIdx )) --(HOW MANY VALUES ARE THERE?)
for i = 0, NumValues - 1 do --(FOR EVERY WORLD KEY, TAKING ACCOUNT OF OFF BY ONE ERRORS)
WorldIni = cIniFile(IniFile:GetValue(KeyIdx, i) .. "/world.ini")
if WorldIni:ReadFile() == true then
WorldsSpawnProtect[IniFile:GetValue(KeyIdx, i)] = WorldIni:GetValueSetI("SpawnProtect", "ProtectRadius", 10)
WorldIni:WriteFile()
end
end
WorldsWorldLimit = {}
local KeyIdx = IniFile:FindKey("Worlds") --(FIND WHERE 'WORLDS' KEY IS LOCATED)
local NumValues = (IniFile:GetNumValues( KeyIdx )) --(HOW MANY VALUES ARE THERE?)
for i = 0, NumValues - 1 do --(FOR EVERY WORLD KEY, TAKING ACCOUNT OF OFF BY ONE ERRORS)
WorldIni = cIniFile(IniFile:GetValue(KeyIdx, i) .. "/world.ini")
if WorldIni:ReadFile() == true then
WorldsWorldLimit[IniFile:GetValue(KeyIdx, i)] = WorldIni:GetValueSetI("WorldLimit", "LimitRadius", 0)
WorldIni:WriteFile()
end
end
WorldIni = cIniFile(IniFile:GetValue(KeyIdx, i) .. "/world.ini")
if WorldIni:ReadFile() == true then
WorldsSpawnProtect[IniFile:GetValue(KeyIdx, i)] = WorldIni:GetValueSetI("SpawnProtect", "ProtectRadius", 10)
WorldIni:WriteFile()
end
end
WorldsWorldLimit = {}
local KeyIdx = IniFile:FindKey("Worlds") --(FIND WHERE 'WORLDS' KEY IS LOCATED)
local NumValues = (IniFile:GetNumValues( KeyIdx )) --(HOW MANY VALUES ARE THERE?)
for i = 0, NumValues - 1 do --(FOR EVERY WORLD KEY, TAKING ACCOUNT OF OFF BY ONE ERRORS)
WorldIni = cIniFile(IniFile:GetValue(KeyIdx, i) .. "/world.ini")
if WorldIni:ReadFile() == true then
WorldsWorldLimit[IniFile:GetValue(KeyIdx, i)] = WorldIni:GetValueSetI("WorldLimit", "LimitRadius", 0)
WorldIni:WriteFile()
end
end
--LOAD WHITELIST
WhiteListIni = cIniFile( Plugin:GetLocalDirectory() .. "/whitelist.ini" )
@ -120,7 +120,7 @@ function Initialize(Plugin)
end
end
--ADD WEB INTERFACE TABULATES
--ADD WEB INTERFACE TABULATES
Plugin:AddWebTab("Manage Server", HandleRequest_ManageServer);
Plugin:AddWebTab("Server Settings", HandleRequest_ServerSettings);
Plugin:AddWebTab("Chat", HandleRequest_Chat);
@ -132,7 +132,7 @@ function Initialize(Plugin)
LoadMotd()
LOG( "Initialized " .. Plugin:GetName() .. " v." .. Plugin:GetVersion() )
return true
return true
end
--AWESOMENESS STILL GOING!
@ -140,12 +140,12 @@ end
function WriteLog(breakPlace, X, Y, Z, player, id, meta)
local logText = {}
table.insert(logText, player)
table.insert(logText, player)
table.insert(logText, " tried to ")
if breakPlace == 0 then
table.insert(logText, "break ")
else
table.insert(logText, "break ")
else
table.insert(logText, "place ")
end
@ -159,23 +159,23 @@ function WriteLog(breakPlace, X, Y, Z, player, id, meta)
table.insert(logText, tostring(Z))
table.insert(logText, ".")
LOGINFO(table.concat(logText,''))
LOGINFO(table.concat(logText,''))
if LOGTOFILE then
local logFile = io.open( Plugin:GetLocalDirectory() .. '/blocks.log', 'a')
logFile:write(table.concat(logText,'').."\n")
logFile:close()
end
local logFile = io.open( Plugin:GetLocalDirectory() .. '/blocks.log', 'a')
logFile:write(table.concat(logText,'').."\n")
logFile:close()
end
return
end
function WarnPlayer(Player)
Player:SendMessage(cChatColor.Rose .. "[INFO] " .. cChatColor.White .. "Go further from spawn to build")
return
end
function OnDisable()
LOG( "Disabled Core!")
LOG( "Disabled Core!")
end
--END AWESOMENESS :'(

View File

@ -4,12 +4,12 @@ function HandleMeCommand( Split, Player )
for i, Text in ipairs(Split) do
Message = Message .. " " .. Text;
end
if (Split[1] == nil) then
Player:SendMessage(cChatColor.Yellow .. "[INFO] " .. cChatColor.White .. "Usage: /me <action>")
return true
end
if (Split[1] ~= nil) then
cRoot:Get():GetServer():BroadcastChat(Player:GetName() .. "" .. Message);
return true
end
if (Split[1] == nil) then
Player:SendMessage(cChatColor.Yellow .. "[INFO] " .. cChatColor.White .. "Usage: /me <action>")
return true
end
if (Split[1] ~= nil) then
cRoot:Get():GetServer():BroadcastChat(Player:GetName() .. "" .. Message);
return true
end
end

View File

@ -4,116 +4,116 @@ function OnPlayerPlacingBlock(Player, BlockX, BlockY, BlockZ, BlockFace, CursorX
return false
end
local PROTECTRADIUS = WorldsSpawnProtect[Player:GetWorld():GetName()];
local PROTECTRADIUS = WorldsSpawnProtect[Player:GetWorld():GetName()];
if not (Player:HasPermission("core.build")) then
return true
else
if not (Player:HasPermission("core.spawnprotect.bypass")) and not (PROTECTRADIUS == 0) then
local World = Player:GetWorld()
local xcoord = World:GetSpawnX()
local ycoord = World:GetSpawnY()
local zcoord = World:GetSpawnZ()
if not (Player:HasPermission("core.spawnprotect.bypass")) and not (PROTECTRADIUS == 0) then
local World = Player:GetWorld()
local xcoord = World:GetSpawnX()
local ycoord = World:GetSpawnY()
local zcoord = World:GetSpawnZ()
if not ((BlockX <= (xcoord + PROTECTRADIUS)) and (BlockX >= (xcoord - PROTECTRADIUS))) then
return false -- Not in spawn area.
end
if not ((BlockY <= (ycoord + PROTECTRADIUS)) and (BlockY >= (ycoord - PROTECTRADIUS))) then
return false -- Not in spawn area.
end
if not ((BlockZ <= (zcoord + PROTECTRADIUS)) and (BlockZ >= (zcoord - PROTECTRADIUS))) then
return false -- Not in spawn area.
end
if not ((BlockX <= (xcoord + PROTECTRADIUS)) and (BlockX >= (xcoord - PROTECTRADIUS))) then
return false -- Not in spawn area.
end
if not ((BlockY <= (ycoord + PROTECTRADIUS)) and (BlockY >= (ycoord - PROTECTRADIUS))) then
return false -- Not in spawn area.
end
if not ((BlockZ <= (zcoord + PROTECTRADIUS)) and (BlockZ >= (zcoord - PROTECTRADIUS))) then
return false -- Not in spawn area.
end
--WriteLog(1, BlockX, BlockY, BlockZ, Player:GetName(), id, meta)
--WriteLog(1, BlockX, BlockY, BlockZ, Player:GetName(), id, meta)
WarnPlayer(Player)
WarnPlayer(Player)
return true
else
if BlockType == "50" or BlockType == "76" then
local X = BlockX
local Y = BlockY
local Z = BlockZ
X, Y, Z = AddFaceDirection(X, Y, Z, BlockFace)
if (Y >= 256 or Y < 0) then
return true
end
local CheckCollision = function(Player)
-- drop the decimals, we only care about the full block X,Y,Z
local PlayerX = math.floor(Player:GetPosX(), 0)
local PlayerY = math.floor(Player:GetPosY(), 0)
local PlayerZ = math.floor(Player:GetPosZ(), 0)
local collision = false
if ((BlockFace == BLOCK_FACE_TOP) and (PlayerY == BlockY - 2) and (PlayerX == BlockX) and (PlayerZ == BlockZ)) then
collision = true
end
if ((BlockFace == BLOCK_FACE_BOTTOM) and (PlayerY == BlockY + 1) and (PlayerX == BlockX) and (PlayerZ == BlockZ)) then
collision = true
end
if ((BlockFace == BLOCK_FACE_NORTH) and (PlayerX == BlockX) and (PlayerZ == BlockZ - 1)) then
if ((PlayerY == BlockY) or (PlayerY + 1 == BlockY)) then collision = true end
end
if ((BlockFace == BLOCK_FACE_SOUTH) and (PlayerX == BlockX) and (PlayerZ == BlockZ + 1)) then
if ((PlayerY == BlockY) or (PlayerY + 1 == BlockY)) then collision = true end
end
if ((BlockFace == BLOCK_FACE_WEST) and (PlayerX == BlockX - 1) and (PlayerZ == BlockZ)) then
if ((PlayerY == BlockY) or (PlayerY + 1 == BlockY)) then collision = true end
end
if ((BlockFace == BLOCK_FACE_EAST) and (PlayerX == BlockX + 1) and (PlayerZ == BlockZ)) then
if ((PlayerY == BlockY) or (PlayerY + 1 == BlockY)) then collision = true end
end
return collision
end
if (Player:GetWorld():ForEachPlayer(CheckCollision) == false) then
return true
end
end
end
end
return false
return true
else
if BlockType == "50" or BlockType == "76" then
local X = BlockX
local Y = BlockY
local Z = BlockZ
X, Y, Z = AddFaceDirection(X, Y, Z, BlockFace)
if (Y >= 256 or Y < 0) then
return true
end
local CheckCollision = function(Player)
-- drop the decimals, we only care about the full block X,Y,Z
local PlayerX = math.floor(Player:GetPosX(), 0)
local PlayerY = math.floor(Player:GetPosY(), 0)
local PlayerZ = math.floor(Player:GetPosZ(), 0)
local collision = false
if ((BlockFace == BLOCK_FACE_TOP) and (PlayerY == BlockY - 2) and (PlayerX == BlockX) and (PlayerZ == BlockZ)) then
collision = true
end
if ((BlockFace == BLOCK_FACE_BOTTOM) and (PlayerY == BlockY + 1) and (PlayerX == BlockX) and (PlayerZ == BlockZ)) then
collision = true
end
if ((BlockFace == BLOCK_FACE_NORTH) and (PlayerX == BlockX) and (PlayerZ == BlockZ - 1)) then
if ((PlayerY == BlockY) or (PlayerY + 1 == BlockY)) then collision = true end
end
if ((BlockFace == BLOCK_FACE_SOUTH) and (PlayerX == BlockX) and (PlayerZ == BlockZ + 1)) then
if ((PlayerY == BlockY) or (PlayerY + 1 == BlockY)) then collision = true end
end
if ((BlockFace == BLOCK_FACE_WEST) and (PlayerX == BlockX - 1) and (PlayerZ == BlockZ)) then
if ((PlayerY == BlockY) or (PlayerY + 1 == BlockY)) then collision = true end
end
if ((BlockFace == BLOCK_FACE_EAST) and (PlayerX == BlockX + 1) and (PlayerZ == BlockZ)) then
if ((PlayerY == BlockY) or (PlayerY + 1 == BlockY)) then collision = true end
end
return collision
end
if (Player:GetWorld():ForEachPlayer(CheckCollision) == false) then
return true
end
end
end
end
return false
end
function OnPlayerBreakingBlock(Player, BlockX, BlockY, BlockZ, BlockFace, Status, OldBlockType, OldBlockMeta)
-- dont check if the direction is in the air
-- dont check if the direction is in the air
if (BlockFace ~= -1) then
local PROTECTRADIUS = WorldsSpawnProtect[Player:GetWorld():GetName()];
local PROTECTRADIUS = WorldsSpawnProtect[Player:GetWorld():GetName()];
if not (Player:HasPermission("core.build")) then
return true
else
if not (Player:HasPermission("core.spawnprotect.bypass")) and not (PROTECTRADIUS == 0) then
local World = Player:GetWorld()
local xcoord = World:GetSpawnX()
local ycoord = World:GetSpawnY()
local zcoord = World:GetSpawnZ()
if not ((BlockX <= (xcoord + PROTECTRADIUS)) and (BlockX >= (xcoord - PROTECTRADIUS))) then
return false -- Not in spawn area.
end
if not ((BlockY <= (ycoord + PROTECTRADIUS)) and (BlockY >= (ycoord - PROTECTRADIUS))) then
return false -- Not in spawn area.
end
if not ((BlockZ <= (zcoord + PROTECTRADIUS)) and (BlockZ >= (zcoord - PROTECTRADIUS))) then
return false -- Not in spawn area.
end
--WriteLog(0, BlockX, BlockY, BlockZ, Player:GetName(), id, meta)
WarnPlayer(Player)
if not (Player:HasPermission("core.spawnprotect.bypass")) and not (PROTECTRADIUS == 0) then
local World = Player:GetWorld()
local xcoord = World:GetSpawnX()
local ycoord = World:GetSpawnY()
local zcoord = World:GetSpawnZ()
if not ((BlockX <= (xcoord + PROTECTRADIUS)) and (BlockX >= (xcoord - PROTECTRADIUS))) then
return false -- Not in spawn area.
end
if not ((BlockY <= (ycoord + PROTECTRADIUS)) and (BlockY >= (ycoord - PROTECTRADIUS))) then
return false -- Not in spawn area.
end
if not ((BlockZ <= (zcoord + PROTECTRADIUS)) and (BlockZ >= (zcoord - PROTECTRADIUS))) then
return false -- Not in spawn area.
end
--WriteLog(0, BlockX, BlockY, BlockZ, Player:GetName(), id, meta)
WarnPlayer(Player)
return true
end
end
end
return true
end
end
end
return false
end

View File

@ -3,7 +3,7 @@ function OnKilling(Victim, Killer)
SetBackCoordinates( Victim )
Server = cRoot:Get():GetServer()
if Killer == nil then
if Victim:GetWorld():GetBlock(Victim:GetPosX(), Victim:GetPosY(), Victim:GetPosZ()) == 10 or Victim:GetWorld():GetBlock(Victim:GetPosX(), Victim:GetPosY(), Victim:GetPosZ()) == 11 then
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 .. "[FATALITY] " .. cChatColor.White .. Victim:GetName() .. " tried to swim in lava (and failed)" )
CheckHardcore(Victim)
return false

View File

@ -1,11 +1,11 @@
function OnPlayerJoined(Player)
ShowMOTDTo( Player )
local Server = cRoot:Get():GetServer()
local Server = cRoot:Get():GetServer()
Server:SendMessage(cChatColor.Yellow .. "[JOIN] " .. cChatColor.White .. Player:GetName() .. " has joined the game" )
return false
end
function OnDisconnect(Player, Reason)
local Server = cRoot:Get():GetServer()
Server:SendMessage(cChatColor.Yellow .. "[LEAVE] " .. cChatColor.White .. Player:GetName() .. " has left the game" )
local Server = cRoot:Get():GetServer()
Server:SendMessage(cChatColor.Yellow .. "[LEAVE] " .. cChatColor.White .. Player:GetName() .. " has left the game" )
end

View File

@ -4,7 +4,7 @@ function OnLogin(Client, ProtocolVersion, Username)
local Server = cRoot:Get():GetServer()
Server:SendMessage( Username .. " tried to join, but is banned!" )
LOGINFO( Username .. " tried to join, but is banned!")
return true -- Player is banned, return true to deny access
return true -- Player is banned, return true to deny access
end
if( WhiteListIni:GetValueB("WhiteListSettings", "WhiteListOn", false ) == true ) then
if( WhiteListIni:GetValueB("WhiteList", Username, false ) == false ) then -- not on whitelist

View File

@ -15,7 +15,7 @@ function HandlePortalCommand( Split, Player )
end
function HandleWorldsCommand( Split, Player )
local SettingsIni = cIniFile("settings.ini")
local SettingsIni = cIniFile("settings.ini")
if SettingsIni:ReadFile() == false then
Player:SendMessage(cChatColor.Yellow .. "[INFO] " .. cChatColor.White .. "No worlds found" )
end

View File

@ -33,7 +33,7 @@ function HandleRankCommand( Split, Player )
end
function HandleGroupsCommand( Split, Player )
local GroupsIni = cIniFile("groups.ini")
local GroupsIni = cIniFile("groups.ini")
if GroupsIni:ReadFile() == false then
Player:SendMessage(cChatColor.Rose .. "[INFO] " .. cChatColor.White .. "No groups found" )
end

View File

@ -1,21 +1,21 @@
function HandleSaveAllCommand( Split, Player )
cRoot:Get():SaveAllChunks();
local Server = cRoot:Get():GetServer()
local Server = cRoot:Get():GetServer()
Server:SendMessage(cChatColor.Rose .. "[WARNING] " .. cChatColor.White .. "Saving all worlds!")
return true;
end
function HandleStopCommand( Split, Player )
Server = cRoot:Get():GetServer()
local Server = cRoot:Get():GetServer()
Server = cRoot:Get():GetServer()
local Server = cRoot:Get():GetServer()
Server:SendMessage(cChatColor.Red .. "[WARNING] " .. cChatColor.White .. "Server is terminating!" )
cRoot:Get():QueueExecuteConsoleCommand("stop")
return true
end
function HandleReloadCommand( Split, Player )
Server = cRoot:Get():GetServer()
local Server = cRoot:Get():GetServer()
Server = cRoot:Get():GetServer()
local Server = cRoot:Get():GetServer()
Server:SendMessage(cChatColor.Rose .. "[WARNING] " .. cChatColor.White .. "Reloading all plugins!" )
cRoot:Get():GetPluginManager():ReloadPlugins()
return true

View File

@ -2,6 +2,6 @@ function HandleSpawnCommand(Split, Player)
World = Player:GetWorld()
SetBackCoordinates(Player)
Player:TeleportToCoords(World:GetSpawnX(), World:GetSpawnY(), World:GetSpawnZ())
Player:SendMessage(cChatColor.Green .. "[INFO] " .. cChatColor.White .. "Returned to world spawn" )
Player:SendMessage(cChatColor.Green .. "[INFO] " .. cChatColor.White .. "Returned to world spawn" )
return true
end

View File

@ -16,45 +16,45 @@ function HandleTPCommand(a_Split, a_Player)
end
function HandleTPACommand( Split, Player )
if Split[2] == nil then
Player:SendMessage(cChatColor.Yellow .. "[INFO] " .. cChatColor.White .. "Usage: /tpa [Player]" )
return true
end
local loopPlayer = function( OtherPlayer )
if OtherPlayer:GetName() == Split[2] then
OtherPlayer:SendMessage(cChatColor.Yellow .. "[INFO] " .. cChatColor.White .. Player:GetName() .. " send a teleport request" )
Player:SendMessage(cChatColor.Green .. "[INFO] " .. cChatColor.White .. "You send a teleport request to " .. OtherPlayer:GetName() )
Destination[OtherPlayer:GetName()] = Player:GetName()
end
end
local loopWorlds = function( World )
World:ForEachPlayer( loopPlayer )
end
cRoot:Get():ForEachWorld( loopWorlds )
return true
if Split[2] == nil then
Player:SendMessage(cChatColor.Yellow .. "[INFO] " .. cChatColor.White .. "Usage: /tpa [Player]" )
return true
end
local loopPlayer = function( OtherPlayer )
if OtherPlayer:GetName() == Split[2] then
OtherPlayer:SendMessage(cChatColor.Yellow .. "[INFO] " .. cChatColor.White .. Player:GetName() .. " send a teleport request" )
Player:SendMessage(cChatColor.Green .. "[INFO] " .. cChatColor.White .. "You send a teleport request to " .. OtherPlayer:GetName() )
Destination[OtherPlayer:GetName()] = Player:GetName()
end
end
local loopWorlds = function( World )
World:ForEachPlayer( loopPlayer )
end
cRoot:Get():ForEachWorld( loopWorlds )
return true
end
function HandleTPAcceptCommand( Split, Player )
if Destination[Player:GetName()] == nil then
Player:SendMessage(cChatColor.Rose .. "[INFO] " .. cChatColor.White .. "Nobody has send you a teleport request" )
return true
end
local loopPlayer = function( OtherPlayer )
if Destination[Player:GetName()] == OtherPlayer:GetName() then
if OtherPlayer:GetWorld():GetName() ~= Player:GetWorld():GetName() then
OtherPlayer:MoveToWorld( Player:GetWorld():GetName() )
end
OtherPlayer:TeleportToEntity( Player )
Player:SendMessage(cChatColor.Yellow .. "[INFO] " .. cChatColor.White .. OtherPlayer:GetName() .. " teleported to you" )
OtherPlayer:SendMessage(cChatColor.Green .. "[INFO] " .. cChatColor.White .. "You teleported to " .. Player:GetName() )
Destination[Player:GetName()] = nil
end
end
local loopWorlds = function( World )
World:ForEachPlayer( loopPlayer )
end
cRoot:Get():ForEachWorld( loopWorlds )
return true
if Destination[Player:GetName()] == nil then
Player:SendMessage(cChatColor.Rose .. "[INFO] " .. cChatColor.White .. "Nobody has send you a teleport request" )
return true
end
local loopPlayer = function( OtherPlayer )
if Destination[Player:GetName()] == OtherPlayer:GetName() then
if OtherPlayer:GetWorld():GetName() ~= Player:GetWorld():GetName() then
OtherPlayer:MoveToWorld( Player:GetWorld():GetName() )
end
OtherPlayer:TeleportToEntity( Player )
Player:SendMessage(cChatColor.Yellow .. "[INFO] " .. cChatColor.White .. OtherPlayer:GetName() .. " teleported to you" )
OtherPlayer:SendMessage(cChatColor.Green .. "[INFO] " .. cChatColor.White .. "You teleported to " .. Player:GetName() )
Destination[Player:GetName()] = nil
end
end
local loopWorlds = function( World )
World:ForEachPlayer( loopPlayer )
end
cRoot:Get():ForEachWorld( loopWorlds )
return true
end
-- Teleports a_SrcPlayer to a player named a_DstPlayerName; if a_TellDst is true, will send a notice to the destination player
@ -73,8 +73,8 @@ function TeleportToPlayer(a_SrcPlayer, a_DstPlayerName, a_TellDst)
end
end
local World = a_SrcPlayer:GetWorld();
if (not(World:DoWithPlayer(a_DstPlayerName, teleport))) then
a_SrcPlayer:SendMessage(cChatColor.Rose .. "[INFO] " .. cChatColor.White .. "Can't find player " .. a_DstPlayerName);
local World = a_SrcPlayer:GetWorld();
if (not(World:DoWithPlayer(a_DstPlayerName, teleport))) then
a_SrcPlayer:SendMessage(cChatColor.Rose .. "[INFO] " .. cChatColor.White .. "Can't find player " .. a_DstPlayerName);
end
end

View File

@ -43,8 +43,8 @@ local function ShowGeneralSettings( Request )
SettingsIni:SetValue("Server", "MaxPlayers", Request.PostParams["Server_MaxPlayers"], false )
end
if( tonumber( Request.PostParams["Server_Port"] ) ~= nil ) then
if( tonumber( Request.PostParams["Server_Port"] ) > 0 ) then
SettingsIni:SetValue("Server", "Port", Request.PostParams["Server_Port"], false )
if( tonumber( Request.PostParams["Server_Port"] ) > 0 ) then
SettingsIni:SetValue("Server", "Port", Request.PostParams["Server_Port"], false )
end
end
if( tonumber( Request.PostParams["Server_PortsIPv6"] ) ~= nil ) then
@ -363,7 +363,7 @@ function ShowWorldSettings( Request )
WorldIni:DeleteValue( "SpawnPosition", "Z" )
WorldIni:SetValue( "SpawnPosition", "Z", Request.PostParams["World_SpawnZ"] )
end
if( tonumber( Request.PostParams["LimitWorldWidth"] ) ~= nil ) then
if( tonumber( Request.PostParams["LimitWorldWidth"] ) ~= nil ) then
WorldIni:DeleteValue( "WorldLimit", "LimitRadius" )
WorldIni:SetValue( "WorldLimit", "LimitRadius", Request.PostParams["LimitWorldWidth"] )
end
@ -669,8 +669,8 @@ function ShowWorldSettings( Request )
<td><input type="text" name="World_SpawnZ" value="]] .. WorldIni:GetValue("SpawnPosition", "Z") .. [["></td></tr>
</table>
<br />
<table>
<th colspan="2">LimitWorld</th>
<table>
<th colspan="2">LimitWorld</th>
<tr><td>Max chunks from spawn (0 to disable):</td>
<td><input type="text" name="LimitWorldWidth" value="]] .. WorldIni:GetValue("WorldLimit", "LimitRadius") .. [["></td></tr>
</table><br />

View File

@ -1,5 +1,5 @@
function OnPlayerMoving( Player )
LimitWorldWidth = WorldsWorldLimit[Player:GetWorld():GetName()]
LimitWorldWidth = WorldsWorldLimit[Player:GetWorld():GetName()]
if LimitWorldWidth > 0 then
local World = Player:GetWorld()
local SpawnX = math.floor(World:GetSpawnX() / 16)