--McRainbow-- --Author: Kwen local McRainbow = {} McRainbow.__index = McRainbow warps = {} function McRainbow:new() local t = {} setmetatable(t, McRainbow) local w = Lua__cPlugin:new() tolua.setpeer(w, t) w:tolua__set_instance(w) return w end function McRainbow:Initialize() self:SetName( "McRainbow" ) self:SetVersion( 1 ) PluginManager = cRoot:Get():GetPluginManager() PluginManager:AddHook( self, cPluginManager.E_PLUGIN_PLAYER_MOVE) PluginManager:AddHook( self, cPluginManager.E_PLUGIN_PLAYER_JOIN ) PluginManager:AddHook( self, cPluginManager.E_PLUGIN_CHAT ) PluginManager:AddHook( self, cPluginManager.E_PLUGIN_TICK ) PluginManager:AddHook( self, cPluginManager.E_PLUGIN_BLOCK_DIG ) PluginManager:AddHook( self, cPluginManager.E_PLUGIN_BLOCK_PLACE ) PluginManager:AddHook( self, cPluginManager.E_PLUGIN_LOGIN ) self:AddCommand("/mute", " Mutes the player.", "McRainbow.troll") self:AddCommand("/give", " Gives player free itenz.", "McRainbow.give") self:AddCommand("/warp", " Moves player to location of warp [Tag].", "warp.warp") self:AddCommand("/setwarp", " Creates a warp at players location.", "warp.setwarp") self:AddCommand("/dropwarp", " Deletes a warp.", "warp.dropwarp") self:AddCommand("/listwarp", " Lists all warps.", "warp.listwarp") self:BindCommand("/mute", "McRainbow.troll", HandleMute ) self:BindCommand("/unmute", "McRainbow.troll", HandleUnmute ) self:BindCommand("/freeze", "McRainbow.troll", HandleFreeze ) self:BindCommand("/unfreeze", "McRainbow.troll", HandleUnFreeze) self:BindCommand("/stop", "McRainbow.troll", HandleStopped ) self:BindCommand("/unstop", "McRainbow.troll", HandleUnStopped) self:BindCommand("/kill", "McRainbow.troll", HandleKill) self:BindCommand("/crash", "McRainbow.crash", HandleCrash) self:BindCommand("/smite", "McRainbow.crash", HandleSmite) self:BindCommand("/smitep", "McRainbow.crash", HandleSmitePlayer) self:BindCommand("/sun", "McRainbow.crash", HandleSunnyTimesWithMe) self:BindCommand("/norain", "McRainbow.crash", HandleSunnyTimesWithMe) self:BindCommand("/rainsucks", "McRainbow.crash", HandleSunnyTimesWithMe) self:BindCommand("/iminabadrainymood", "McRainbow.crash", HandleSunnyTimesWithMe) self:BindCommand("/rain", "McRainbow.crash", HandleRainyTimesWithMe) self:BindCommand("/dontusethis", "McRainbow.crash", HandleRainyTimesWithMe) self:BindCommand("/gamemode", "McRainbow.crash", HandleGameMode) self:BindCommand("/gm", "McRainbow.crash", HandleGameMode) self:BindCommand("/gmp", "McRainbow.crash", HandlePlayerGameMode) self:BindCommand("/gamemodeplayer", "McRainbow.crash", HandlePlayerGameMode) self:BindCommand("/weather", "McRainbow.crash", HandleWeather) self:BindCommand("/rocket", "jumpto.troll", HandleRocket) self:BindCommand("/tppos", "jumpto.troll", HandleTpPos) self:BindCommand("/tpup", "jumpto.troll", HandleTpUp) self:BindCommand("/tptp", "jumpto.troll", HandleTpPlayerToPlayer) self:BindCommand("/heal", "jumpto.troll", HandleHeal) self:BindCommand("/getpos", "jumpto.troll", HandleGetPos) self:BindCommand("/give", "McRainbow.give", HandleGiveCommand) self:BindCommand("/warp", "warp.warp", HandleWarpCommand) self:BindCommand("/setwarp", "warp.setwarp", HandleSetWarpCommand) self:BindCommand("/dropwarp", "warp.dropwarp", HandleDropWarpCommand) self:BindCommand("/listwarp", "warp.listwarp", HandleListWarpCommand) local World = cRoot:Get():GetDefaultWorld() local warpsINI = cIniFile("warps.ini") if ( warpsINI:ReadFile() == true ) then warpNum = warpsINI:GetNumKeys(); for i=0, warpNum do local Tag = warpsINI:GetKeyName(i) warps[Tag] = {} warps[Tag]["w"] = warpsINI:GetValue( Tag , "w") warps[Tag]["x"] = warpsINI:GetValueI( Tag , "x") warps[Tag]["y"] = warpsINI:GetValueI( Tag , "y") warps[Tag]["z"] = warpsINI:GetValueI( Tag , "z") end end Log( "Initialized " .. self:GetName() .. " v." .. self:GetVersion() ) return true end function McRainbow:OnPlayerJoin( Player ) local UsersIni = cIniFile("users.ini") if ( UsersIni:ReadFile() == true ) then if(UsersIni:FindKey(Player:GetName()) < 0) then UsersIni:AddKeyName( Player:GetName() ) UsersIni:SetValue( Player:GetName() , "Groups", "Admins") UsersIni:SetValue( Player:GetName() , "Muted" , "") UsersIni:SetValue( Player:GetName() , "Frozen" , "") UsersIni:SetValue( Player:GetName() , "Stopped" , "") UsersIni:SetValue( Player:GetName() , "Logins" , "") UsersIni:WriteFile() else Value = UsersIni:GetValue( Player:GetName(), "Logins" ) LOG( tonumber(Value) ) end end return false end function trimStr(s) -- Straightforward trim function, googled somewhere local from = s:match"^%s*()" return from > #s and "" or s:match(".*%S", from) end function getPlayerByName( PartialName ) -- Searches entire string instead of only from the start -- 'Rates' names; the shorter a matched name is, the higher -- the propability the user meant that person. FoundPlayer = nil LastRating = 100 local abc = function ( Player ) TestPlayer = Player TestPlayerName = TestPlayer:GetName() if(string.find(TestPlayerName, PartialName) ~= nil) then if(string.len(TestPlayerName) < LastRating) then FoundPlayer = TestPlayer LastRating = string.len(TestPlayerName) end end end World:ForEachPlayer( abc ) -- for i, TestPlayer in ipairs( PlayerList ) do -- -- TestPlayer = Player:GetPlayer() -- TestPlayerName = TestPlayer:GetName() -- -- if(string.find(TestPlayerName, PartialName) ~= nil) then -- if(string.len(TestPlayerName) < LastRating) then -- FoundPlayer = TestPlayer -- LastRating = string.len(TestPlayerName) -- end -- end -- end return FoundPlayer end function HandleKill( Split, Player ) local World = cRoot:Get():GetDefaultWorld() local Server = cRoot:Get():GetServer() local OtherPlayer = World:GetPlayer( Split[2] ) if( OtherPlayer == nil ) then Player:SendMessage( cChatColor.Green .. "Could not find player " .. Split[2] ) return true end OtherPlayer:TakeDamage( 100 , Player ) end function HandleGameMode( Split, Player ) local World = cRoot:Get():GetDefaultWorld() local Server = cRoot:Get():GetServer() Player:SetGameMode( Split[2] ) return true end function HandlePlayerGameMode( Split, Player ) local World = cRoot:Get():GetDefaultWorld() local Server = cRoot:Get():GetServer() local OtherPlayer = World:GetPlayer( Split[2] ) OtherPlayer:SetGameMode( Split[3] ) Server:SendMessage( OtherPlayer:GetName() .. "'s gamemode changed." ) return true end function HandleSmite( Split, Player ) local World = cRoot:Get():GetDefaultWorld() local Server = cRoot:Get():GetServer() local Tracer = cTracer( World ) Tracer:Trace( Vector3f(Player:GetEyePosition()) , Player:GetLookVector(), 200 ) X = Tracer.BlockHitPosition.x Y = Tracer.BlockHitPosition.y Z = Tracer.BlockHitPosition.z World:CastThunderbolt( X, Y, Z ) Player:SendMessage( cChatColor.Red .. "BOOM!" ) return true end function HandleSmitePlayer( Split, Player ) local World = cRoot:Get():GetDefaultWorld() local Server = cRoot:Get():GetServer() local OtherPlayer = World:GetPlayer( Split[2] ) X = math.floor(OtherPlayer:GetPosX()) Y = math.floor(OtherPlayer:GetPosY()) Z = math.floor(OtherPlayer:GetPosZ()) World:CastThunderbolt( X, Y, Z ) Player:SendMessage( cChatColor.Red .. "BOOM!" ) return true end function HandleSunnyTimesWithMe( Split, Player ) local World = cRoot:Get():GetDefaultWorld() local Server = cRoot:Get():GetServer() World:SetWeather( 0 ) Server:SendMessage( cChatColor.Red .. "Sunny times with Kwen!" ) return true end function HandleRainyTimesWithMe( Split, Player ) local World = cRoot:Get():GetDefaultWorld() local Server = cRoot:Get():GetServer() World:SetWeather( 1 ) Server:SendMessage( cChatColor.Red .. "Rainy sad times with cruisecho!" ) return true end function HandleWeather( Split, Player ) local World = cRoot:Get():GetDefaultWorld() local Server = cRoot:Get():GetServer() if( string.upper( Split[2] ) == "DAY" ) then World:SetWeather( 0 ) Server:SendMessage( cChatColor.Green .. Player:GetName() .. " set the weather to day.") elseif( string.upper( Split[2] ) == "SUN" ) then World:SetWeather( 0 ) Server:SendMessage( cChatColor.Green .. Player:GetName() .. " set the weather to day.") elseif( string.upper( Split[2] ) == "RAIN") then World:SetWeather( 1 ) Server:SendMessage( cChatColor.Green .. Player:GetName() .. " set the weather to rain") end return true end function HandleMute( Split, Player ) local World = cRoot:Get():GetDefaultWorld() local Server = cRoot:Get():GetServer() local OtherPlayer = World:GetPlayer( Split[2] ) if( OtherPlayer == nil ) then Player:SendMessage( cChatColor.Green .. "Could not find player " .. Split[2] ) return true end Server:SendMessage( OtherPlayer:GetName() .. " muted. " ) OtherPlayer:SendMessage( "You've been muted." ) local UsersIni = cIniFile("users.ini") if ( UsersIni:ReadFile() == true ) then UsersIni:DeleteValue( OtherPlayer:GetName() , "Muted") UsersIni:SetValueB(OtherPlayer:GetName(), "Muted", true) UsersIni:WriteFile() end return false end function HandleUnmute( Split, Player ) local World = cRoot:Get():GetDefaultWorld() local Server = cRoot:Get():GetServer() local OtherPlayer = World:GetPlayer( Split[2] ) local UsersIni = cIniFile("users.ini") if ( UsersIni:ReadFile() == true ) then UsersIni:DeleteValue( OtherPlayer:GetName() , "Muted") UsersIni:SetValueB(OtherPlayer:GetName(), "Muted", false) UsersIni:WriteFile() end Server:SendMessage( OtherPlayer:GetName() .. "unmuted. " ) OtherPlayer:SendMessage( "You've been unmuted." ) return true end function HandleFreeze( Split, Player ) local World = cRoot:Get():GetDefaultWorld() local Server = cRoot:Get():GetServer() local OtherPlayer = World:GetPlayer( Split[2] ) if( OtherPlayer == nil ) then Player:SendMessage( cChatColor.Green .. "Could not find player " .. Split[2] ) return true end Server:SendMessage( OtherPlayer:GetName() .. " frozen. " ) OtherPlayer:SendMessage( "You've been frozen." ) local UsersIni = cIniFile("users.ini") if ( UsersIni:ReadFile() == true ) then UsersIni:DeleteValue( OtherPlayer:GetName(), "Frozen") UsersIni:SetValueB( OtherPlayer:GetName(), "Frozen", true) UsersIni:WriteFile() end return false end function HandleUnFreeze( Split, Player ) local World = cRoot:Get():GetDefaultWorld() local Server = cRoot:Get():GetServer() local OtherPlayer = World:GetPlayer( Split[2] ) local UsersIni = cIniFile("users.ini") if ( UsersIni:ReadFile() == true ) then UsersIni:DeleteValue( OtherPlayer:GetName(), "Frozen") UsersIni:SetValueB( OtherPlayer:GetName(), "Frozen", false) UsersIni:WriteFile() end Server:SendMessage( OtherPlayer:GetName() .. " defrosted. " ) OtherPlayer:SendMessage( "You've been defrosted." ) return true end function HandleStopped( Split, Player ) local World = cRoot:Get():GetDefaultWorld() local Server = cRoot:Get():GetServer() local OtherPlayer = World:GetPlayer( Split[2] ) if( OtherPlayer == nil ) then Player:SendMessage( cChatColor.Green .. "Could not find player " .. Split[2] ) return true end Server:SendMessage( OtherPlayer:GetName() .. " stopped. " ) OtherPlayer:SendMessage( "You've been stopped." ) local UsersIni = cIniFile("users.ini") if ( UsersIni:ReadFile() == true ) then UsersIni:DeleteValue( OtherPlayer:GetName(), "Stopped") UsersIni:SetValueB( OtherPlayer:GetName(), "Stopped", true) UsersIni:WriteFile() end return false end function HandleUnStopped( Split, Player ) local World = cRoot:Get():GetDefaultWorld() local Server = cRoot:Get():GetServer() local OtherPlayer = World:GetPlayer( Split[2] ) local UsersIni = cIniFile("users.ini") if ( UsersIni:ReadFile() == true ) then UsersIni:DeleteValue( OtherPlayer:GetName(), "Stopped") UsersIni:SetValueB( OtherPlayer:GetName(), "Stopped", false) UsersIni:WriteFile() end Server:SendMessage( OtherPlayer:GetName() .. " released. " ) OtherPlayer:SendMessage( "You've been released." ) return true end function HandleCrash( Split, Player ) if( #Split < 2 ) then Player:SendMessage( cChatColor.Green .. "Usage: /crash [Player]" ) return true end local World = cRoot:Get():GetDefaultWorld() local Target = World:GetPlayer( Split[2] ) if( Target == nil ) then Player:SendMessage( cChatColor.Green .. "Could not find player " .. Split[2] ) return true end Target:SendMessage( "trollolololtrollolololtrollolololtrollolololtrollolololtrollolololtrollolololtrollolololtrollolololtrollolololtrollolololtrollolololtrollolololtrollolololtrollolololtrollolololtrollolololtrollolololtrollolololtrollolololtrollolololtrollolololtrollolololtrollolololtrollolololtrollolololtrollolololtrollolololtrollolololtrollolololtrollolololtrollolololtrollolololtrollolololtrollolololtrollolololtrollolololtrollolololtrollolololtrollolololtrollolololtrollolololtrollolololtrollolololtrollolololtrollolololtrollolololtrollolololtrollolololtrollolololtrollolololtrollolololtrollolololtrollolololtrollolololtrollolololtrollolololtrollolololtrollolololtrollolololtrollolololtrollolololtrollolololtrollolololtrollolololtrollolololtrollolololtrollolololtrollolololtrollolololtrollolololtrollolololtrollolololtrollolololtrollolololtrollolololtrollolololtrollolololtrollolololtrollolololtrollolololtrollolololtrollolololtrollolololtrollolololtrollolololtrollolololtrollolololtrollolololtrollolololtrollolololtrollolololtrollolololtrollolololtrollolololtrollolololtrollolololtrollolololtrollolololtrollolololtrollolololtrollolololtrollolololtrollolololtrollolololtrollolololtrollolololtrollolololtrollolololtrollolololtrollolololtrollolololtrollolololtrollolololtrollolololtrollolololtrollolololtrollolololtrollolololtrollolololtrollolololtrollolololtrollolololtrollolololtrollolololtrollolololtrollolololtrollolololtrollolololtrollolololtrollolololtrollolololtrollolololtrollolololtrollolololtrollolololtrollolololtrollolololtrollolololtrollololol" ) return true end function HandleRocket( Split, Player ) Server = cRoot:Get():GetServer() World = cRoot:Get():GetDefaultWorld() OtherPlayer = World:GetPlayer( Split[2] ) X = OtherPlayer:GetPosX() Y = OtherPlayer:GetPosY() Z = OtherPlayer:GetPosZ() OtherPlayer:TeleportTo( X, Y+100, Z) OtherPlayer:SendMessage( "Rocketeeeeer" ) return true end function HandleTpPos( Split, Player ) Server = cRoot:Get():GetServer() World = cRoot:Get():GetDefaultWorld() X = Split[2] Y = Split[3] Z = Split[4] Player:TeleportTo( X, Y, Z) Player:SendMessage( "Teleported." ) return true end function HandleTpPlayerToPlayer( Split, Player ) Server = cRoot:Get():GetServer() World = cRoot:Get():GetDefaultWorld() OtherPlayer = World:GetPlayer( Split[2] ) TargetPlayer = World:GetPlayer( Split[3] ) X = TargetPlayer:GetPosX() Y = TargetPlayer:GetPosY() Z = TargetPlayer:GetPosZ() OtherPlayer:TeleportTo( X, Y, Z) Player:SendMessage( "Teleported " .. OtherPlayer:GetName() .. " to " .. TargetPlayer:GetName() ) return true end function HandleTpUp( Split, Player ) Server = cRoot:Get():GetServer() World = cRoot:Get():GetDefaultWorld() X = math.floor(Player:GetPosX()) Y = Split[2] Z = math.floor(Player:GetPosZ()) Player:TeleportTo( X, Y, Z) World:SetBlock(X, Y-1, Z, E_BLOCK_GLASS, 1) Player:SendMessage( "Teleported to height " .. Split[2] ) return true end function HandleHeal( Split, Player ) Server = cRoot:Get():GetServer() World = cRoot:Get():GetDefaultWorld() if( #Split < 2 ) then Player:Heal( 30 ) Player:SendMessage( "Healed to full health. " ) return true end Player:Heal( Split[2] ) Player:SendMessage( "Healed to " .. Split[2] .. " health. " ) return true end function HandleGetPos( Split, Player ) Server = cRoot:Get():GetServer() World = cRoot:Get():GetDefaultWorld() X = math.floor(Player:GetPosX()) Y = math.floor(Player:GetPosY()) Z = math.floor(Player:GetPosZ()) Player:SendMessage( "Your current position: X:" .. X .. " Y: " .. Y .. " Z: " .. Z ) return true end function HandleWarpCommand( Split, Player ) if #Split < 2 then --No warp given, list warps available. HandleListWarpCommand( Split, Player ) return true end local Tag = Split[2] if warps[Tag] == nil then Player:SendMessage(cChatColor.Red .. 'Warp "' .. Tag .. '" is invalid.') return true end if (Player:GetDefaultWorld():GetName() ~= warps[Tag]["w"]) then Player:MoveToWorld(warps[Tag]["w"]) end Player:TeleportTo( warps[Tag]["x"] , warps[Tag]["y"] , warps[Tag]["z"]) Player:SendMessage(cChatColor.Green .. 'Warped to "' .. Tag .. '".') return true end function HandleSetWarpCommand( Split, Player) local Server = cRoot:Get():GetServer() local World = Player:GetDefaultWorld():GetName() local pX = math.floor(Player:GetPosX()) local pY = math.floor(Player:GetPosY()) local pZ = math.floor(Player:GetPosZ()) if #Split < 2 then Player:SendMessage(cChatColor.Red .. 'Must supply a tag for the warp.') return true end local Tag = Split[2] if warps[Tag] == nil then warps[Tag] = {} end warps[Tag]["w"] = World warps[Tag]["x"] = pX warps[Tag]["y"] = pY warps[Tag]["z"] = pZ local warpsINI = cIniFile("warps.ini") warpsINI:ReadFile() if (warpsINI:FindKey(Tag)<0) then warpsINI:AddKeyName(Tag); else warpsINI:DeleteValue( Tag , "w") warpsINI:DeleteValue( Tag , "x") warpsINI:DeleteValue( Tag , "y") warpsINI:DeleteValue( Tag , "z") end warpsINI:SetValue( Tag , "w" , World) warpsINI:SetValue( Tag , "x" , pX) warpsINI:SetValue( Tag , "y" , pY) warpsINI:SetValue( Tag , "z" , pZ) warpsINI:WriteFile(); Server:SendMessage("Warp \"" .. Tag .. "\" set to World:" .. World .. " x" .. pX .. " y" .. pY .. " z" .. pZ, Player) return true end function HandleDropWarpCommand( Split, Player) local Server = cRoot:Get():GetServer() if #Split < 2 then Player:SendMessage(cChatColor.Red .. 'Must supply a tag for the warp.') return true end local Tag = Split[2] warps[Tag] = nil local warpsINI = cIniFile("warps.ini") warpsINI:ReadFile() if (warpsINI:FindKey(Tag)>-1) then warpsINI:DeleteKey(Tag); warpsINI:WriteFile(); else Server:SendMessage(cChatColor.Red .. "Warp \"" .. Tag .. "\" was not found.", Player) return true end Server:SendMessage(cChatColor.Green .. "Warp \"" .. Tag .. "\" was removed.", Player) return true end function HandleListWarpCommand( Split, Player) local warpStr = "" local inc = 0 for k, v in pairs (warps) do inc = inc + 1 warpStr = warpStr .. k .. " " end Player:SendMessage(cChatColor.Green .. 'Warps: ' .. warpStr) return true end function HandleGiveCommand( Split, Player ) if #Split < 3 then Player:SendMessage( cChatColor.Green .. "Usage: /give [PlayerName] [ItemID/Name] " ) return true end local World = cRoot:Get():GetDefaultWorld() local GivePlayer = World:GetPlayer( Split[2] ) if GivePlayer == nil then Player:SendMessage( cChatColor.Green .. "Player " ..Split[2].. " not found." ) return true end ItemID = Split[3] ItemMeta = 0 sPos = string.find(Split[3], ":") if (sPos ~= nil) then ItemID = tonumber(string.sub(Split[3], 1, sPos-1)) ItemMeta = tonumber(string.sub(Split[3], sPos+1)) else ItemID = tonumber(Split[3]) end if( ItemID == nil or not IsValidItem( ItemID ) ) then Player:SendMessage( cChatColor.Green .. "Item " ..Split[3].. " not found." ) return true end ItemAmount = 1 if( #Split >= 4 ) then ItemAmount = tonumber(Split[4]) if( ItemAmount == nil or ItemAmount < 1 or ItemAmount > 512 ) then Player:SendMessage( cChatColor.Red .. "Invalid Amount !" ) return true end end local NewItem = cItem( ItemID, ItemAmount , ItemMeta) if( GivePlayer:GetInventory():AddItem(NewItem) == true ) then Player:SendMessage( cChatColor.Green .. "Gave item ("..ItemID..":"..ItemMeta..") to "..Split[2].."." ) LOG("Gave " .. GivePlayer:GetName() .. " " .. ItemAmount .. " times " .. ItemID ) else Player:SendMessage( cChatColor.Red .. "Not enough space in inventory !" ) end return true end function McRainbow:OnChat( Message, Player ) local World = cRoot:Get():GetDefaultWorld() local Server = cRoot:Get():GetServer() local UsersIni = cIniFile("users.ini") if ( UsersIni:ReadFile() == true ) then if( UsersIni:GetValueB( Player:GetName(), "Muted", false) == true ) then Player:SendMessage( "You are currently muted." ) return true end else return false end end function McRainbow:OnPlayerMove( Player ) local World = cRoot:Get():GetDefaultWorld() local Server = cRoot:Get():GetServer() local UsersIni = cIniFile("users.ini") X = math.floor(Player:GetPosX()) Y = math.floor(Player:GetPosY()) Z = math.floor(Player:GetPosZ()) if ( UsersIni:ReadFile() == true ) then if( UsersIni:GetValueB( Player:GetName(), "Frozen", false) == true ) then Player:SendMessage( "You are currently frozen." ) Player:TeleportTo( X, Y, Z) return false end end return false end function McRainbow:OnBlockPlace( PacketData, Player ) local World = cRoot:Get():GetDefaultWorld() local Server = cRoot:Get():GetServer() local UsersIni = cIniFile("users.ini") if PacketData.m_ItemType == 292 then local Tracer = cTracer( World ) Tracer:Trace( Vector3f(Player:GetEyePosition()) , Player:GetLookVector(), 200 ) X = Tracer.BlockHitPosition.x Y = Tracer.BlockHitPosition.y Z = Tracer.BlockHitPosition.z World:CastThunderbolt( X, Y, Z ) Player:SendMessage( cChatColor.Red .. "BOOM!" ) elseif ( UsersIni:ReadFile() == true ) then if( UsersIni:GetValueB( Player:GetName(), "Stopped", false) == true ) then Player:SendMessage( "You are currently stopped." ) return true end else return false end end function McRainbow:OnBlockDig( Message, Player ) local World = cRoot:Get():GetDefaultWorld() local Server = cRoot:Get():GetServer() local UsersIni = cIniFile("users.ini") if ( UsersIni:ReadFile() == true ) then if( UsersIni:GetValueB( Player:GetName(), "Stopped", false) == true ) then Player:SendMessage( "You are currently stopped." ) return true end else return false end end Plugin = McRainbow:new() cRoot:Get():GetPluginManager():AddPlugin( Plugin )