-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathinit.lua
120 lines (98 loc) · 3.29 KB
/
init.lua
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
skywars = {}
core.register_privilege("game_admin", {
give_to_singleplayer = false,
give_to_admin = true,
})
local log = core.log
local modpath = core.get_modpath(core.get_current_modname()).."/src"
local files = {
"configuration",
"api",
"hud",
"player",
"countdown",
"_map/main",
"_map/nodes",
"_map/playerbox",
"game",
"spectator",
"commands",
"treasures",
"kits",
}
for _, file in ipairs(files) do
dofile(modpath.."/"..file..".lua")
end
if core.get_modpath("player_api") then
dofile(modpath.."/npc.lua")
end
core.register_on_joinplayer(function(player, last_login)
if not skywars.is_admin(player) then
core.after(0.1, skywars.init_player, player)
end
end)
core.register_on_leaveplayer(function(player, timed_out)
if skywars.get_player_in_list(player, skywars.get_players()) then
skywars.remove_player(player)
skywars.send_leave_message(player)
if skywars.get_player_count() > 1 then
skywars.show_player_count()
end
elseif skywars.get_player_in_list(player, skywars.get_spectators()) then
skywars.remove_player_in_list(player, skywars.spectators)
end
end)
core.register_on_dieplayer(function(player, reason)
if skywars.get_player_in_list(player, skywars.get_players()) then
skywars.remove_player(player)
skywars.send_leave_message(player)
if skywars.get_player_count() > 1 then
skywars.show_player_count()
skywars.add_spectator(player)
end
player:respawn()
end
end)
core.register_on_respawnplayer(function(player)
if skywars.get_player_in_list(player, skywars.get_spectators()) then
core.after(0.1, skywars.teleport_spectator, player)
else
core.after(0.1, skywars.init_player, player)
end
end)
core.register_on_mods_loaded(function()
local old_handlers = core.registered_on_chat_messages
core.registered_on_chat_messages = {
function(name, message)
local chat = message:sub(1, 1) ~= "/"
if chat and not core.check_player_privs(name, {shout = true}) then
skywars.send_message(name, "nil", "-!- You don't have permission to speak.")
return true
end
for _, handler in ipairs(old_handlers) do
if handler(name, message) then
return true
end
end
local is_spectator = false
if skywars.get_player_in_list(core.get_player_by_name(name), skywars.get_spectators()) then
is_spectator = true
end
if chat and is_spectator then
for _, spectator in ipairs(skywars.get_spectators()) do
skywars.send_message(
spectator:get_player_name(),
"#909090",
"[Spectator] <" .. name .. "> " .. message
)
log("action", "[Spectator] <" ..name .. "> " .. message)
end
return true
elseif chat and not is_spectator then
core.chat_send_all("<" .. name .. "> " .. message)
log("action", "CHAT: <" ..name .. "> " .. message)
end
return true
end
}
end)