// Tribes by RabidToaster // Settings. local tTribes = { { "The Stranded", Color( 255, 255, 255 ) }, { "Fire", Color( 255, 0, 0 ) }, { "Water", Color( 0, 0, 255 ) }, { "Thunder", Color( 255, 255, 0 ) }, { "Earth", Color ( 0, 255, 0 ) } } local sCommand = "!settribe" local iStart = 0 // Stops conflicts. // End of settings. for iTeam, tTeam in pairs( tTribes ) do team.SetUp( iStart + iTeam, tTeam[ 1 ], tTeam[ 2 ] ) end if ( SERVER ) then AddCSLuaFile( "tribes.lua" ) local function SetTribe( pPlayer, iTribe ) if ( tTribes[ iTribe ] == nil ) then return end if ( pPlayer:Team() == iTribe ) then pPlayer:ChatPrint( "You are already a member of the '" .. tTribes[ iTribe ][ 1 ] .. "' tribe." ) else pPlayer:ChatPrint( "You are now a member of the '" .. tTribes[ iTribe ][ 1 ] .. "' tribe." ) for _, pTeam in pairs( team.GetPlayers( pPlayer:Team() ) ) do pTeam:ChatPrint( pPlayer:Name() .. " has left your tribe." ) end pPlayer:SetTeam( iStart + iTribe ) for _, pTeam in pairs( team.GetPlayers( iStart + iTribe ) ) do pTeam:ChatPrint( pPlayer:Name() .. " has joined your tribe." ) end end end local function PlayerSay( pPlayer, sText, bPublic ) if ( string.Left( sText, string.len( sCommand ) ) != sCommand ) then return end local sTribe = string.sub( sText, string.len( sCommand ) + 2 ) if ( tonumber( sTribe ) != nil ) then local iTribe = tonumber( sTribe ) if ( tTribes[ iTribe ] != nil ) then SetTribe( pPlayer, iTribe ) else pPlayer:ChatPrint( "Please enter a tribe between 1 and " .. #tTribes .. "." ) end else local sTribeL = string.Trim( string.lower( sTribe ) ) for iTribe, tTribe in pairs( tTribes ) do if ( string.lower( tTribe[ 1 ] ) == sTribeL ) then SetTribe( pPlayer, iTribe ) return "" end end pPlayer:ChatPrint( "Tribe '" .. sTribe .. "' does not exist." ) end return "" end hook.Add( "PlayerSay", "Tribes.PlayerSay", PlayerSay ) end