View difference between Paste ID: b0jdHM5u and 1AiYjJKd
SHOW: | | - or go back to the newest paste.
1
--different possible groupings and their
2
--corresponding greetings
3-
local groupings = {
3+
4-
    {"kaibochan"},
4+
5-
    {"kaibochan", "sethrl"},
5+
local defaultText = "Welcome to Biopunk"
6-
    {"sethrl"},
6+
7-
    {"N0LIF3RRE3"},
7+
8-
    {"kaibochan", "N0LIF3RRE3"},
8+
    ["scale"] = 1.5,
9-
    {"N0LIF3RRE3", "sethrl"},
9+
    ["textColor"] = "lime",
10-
    {"kaibochan", "N0LIF3RRE3", "sethrl"},
10+
    ["bgColor"] = "black",
11
}
12
13-
local greetings = {
13+
function findGroup(players, groupings)
14-
    "Welcome back, Kai",
14+
    local foundGroup
15-
    "Welcome, disciples",
15+
16-
    "Hey cutie ;-)",
16+
    --iterate through all different groups
17-
    "ICEJJPICK!?",
17+
18-
    "ADHD squad B-)",
18+
        foundGroup = true
19-
    "TWO CUTIES!?\nAT MY BASE!?",
19+
20-
    "What's up CS squad",
20+
        --iterate through names within the
21
        --current group, checking for a
22
        --match, then printing the
23-
local settings = {
23+
        --corresponding greeting
24-
    {
24+
        if #players ==  #group then
25-
        ["scale"] = 1,
25+
            for j, name in ipairs(group) do
26-
        ["textColor"] = colors.lime,
26+
                if players[j] ~= name then
27-
        ["bgColor"] = colors.black,
27+
28-
    },
28+
29-
    {
29+
30-
        ["scale"] = 1,
30+
31-
        ["textColor"] = colors.yellow,
31+
32-
        ["bgColor"] = colors.black,
32+
            foundGroup = false
33-
    },
33+
34-
    {
34+
35-
        ["scale"] = 2,
35+
        if foundGroup then
36-
        ["textColor"] = colors.pink,
36+
            return i
37-
        ["bgColor"] = colors.black,  
37+
38-
    },
38+
39-
    {
39+
40-
        ["scale"] = 2,
40+
41-
        ["textColor"] = colors.black,
41+
function loadGreetingFiles()
42-
        ["bgColor"] = colors.white,
42+
    --load greeting data from files
43-
    },
43+
    local fileGroupings = fs.open("groupings.txt", "r")
44-
    {
44+
    local groupings = textutils.unserialise(fileGroupings.readAll())
45-
        ["scale"] = 2,
45+
    fileGroupings.close()
46-
        ["textColor"] = colors.red,
46+
47-
        ["bgColor"] = colors.black,
47+
    local fileGreetings = fs.open("greetings.txt", "r")
48-
    },
48+
    local greetings = textutils.unserialise(fileGreetings.readAll())
49-
    {
49+
    fileGreetings.close()
50-
        ["scale"] = 1,
50+
51-
        ["textColor"] = colors.red,
51+
    local fileGreetFormat = fs.open("greetFormat.txt", "r")
52-
        ["bgColor"] = colors.white,
52+
    local settings = textutils.unserialise(fileGreetFormat.readAll())
53-
    },
53+
    fileGreetFormat.close()
54-
    {
54+
55-
        ["scale"] = 1,
55+
    return groupings, greetings, settings
56-
        ["textColor"] = colors.lightBlue,
56+
57-
        ["bgColor"] = colors.black,
57+
58-
    },
58+
59
    local groupings, greetings, settings = loadGreetingFiles()
60
61
    --sort each grouping for easy comparison
62-
local defaultText = "Biopunk"
62+
63
        table.sort(group)
64
    end
65-
    ["scale"] = 2,
65+
66-
    ["textColor"] = colors.lime,
66+
67-
    ["bgColor"] = colors.black,
67+
68
    playerDetector = peripheral.find("playerDetector")
69
70
    while true do
71
        --only activate once every 1/8 of a second
72
        sleep(1/8)
73
        
74
        monitor.setCursorPos(1, 1)
75
76
        --get a sorted list of nearby players
77
        local players = playerDetector.getPlayersInCubic(3, 3, 3)
78
        table.sort(players)
79
        
80
        local group = findGroup(players, groupings)
81
        if group then
82
            monitor.setTextScale(settings[group].scale)
83
            monitor.setTextColor(colors[settings[group].textColor])
84-
        monitor.clear()
84+
            monitor.setBackgroundColor(colors[settings[group].bgColor])
85
            monitor.clear()
86
87
            monitor.write(greetings[group])
88-
        local players = playerDetector.getPlayersInCubic(2, 2, 2)
88+
89
            --if no players nearby or no matching group found
90
            --display default text
91-
        --if no players nearby, display default
91+
92-
        --text
92+
93-
        if #players == 0 then
93+
            monitor.setTextColor(colors[defaultSettings.textColor])
94
            monitor.setBackgroundColor(colors[defaultSettings.bgColor])
95-
            monitor.setTextColor(defaultSettings.textColor)
95+
            monitor.clear()
96-
            monitor.setBackgroundColor(defaultSettings.bgColor)
96+
97
            monitor.write(defaultText)
98
        end
99-
            local foundGroup
99+
100
end
101-
            --iterate through all different groups
101+
102-
            for i, group in ipairs(groupings) do
102+