Page Menu
Home
1F616EMO Bugtracker
Search
Configure Global Search
Log In
Files
F156131
init.lua
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Flag For Later
Award Token
Size
3 KB
Referenced Files
None
Subscribers
None
init.lua
View Options
-- twi_mods/beerchat_mods/init.lua
-- special channels
-- Copyright (C) 2024 1F616EMO
-- SPDX-License-Identifier: LGPL-3.0-or-later
local
S
=
core
.
get_translator
(
"beerchat_mod"
)
local
owner
=
core
.
settings
:
get
(
"name"
)
or
"$SYSTEM"
local
function
is_privileged
(
name
)
local
privs
=
core
.
get_player_privs
(
name
)
return
name
==
owner
or
privs
.
server
or
privs
.
privs
or
privs
.
ban
or
privs
.
role_helper
or
false
end
do
local
old_is_player_subscribed_to_channel
=
beerchat
.
is_player_subscribed_to_channel
function
beerchat
.
is_player_subscribed_to_channel
(
name
,
channel
)
if
channel
==
"Moderators"
then
return
is_privileged
(
name
)
elseif
channel
==
"grounded"
then
return
is_privileged
(
name
)
or
old_is_player_subscribed_to_channel
(
name
,
channel
)
end
return
old_is_player_subscribed_to_channel
(
name
,
channel
)
end
end
beerchat
.
register_callback
(
'before_invite'
,
function
(
name
,
_
,
channel
)
if
channel
==
"Moderators"
or
channel
==
"grounded"
then
return
false
,
S
(
"The members of #@1 is automatically set by the server."
,
channel
)
end
end
)
-- Does not handle forced join
beerchat
.
register_callback
(
'before_join'
,
function
(
name
,
channel
)
if
channel
==
"Moderators"
or
channel
==
"grounded"
then
return
false
,
S
(
"The members of #@1 is automatically set by the server."
,
channel
)
end
end
)
beerchat
.
register_callback
(
'before_leave'
,
function
(
name
,
channel
)
if
channel
==
"Moderators"
then
return
false
,
S
(
"The members of #@1 is automatically set by the server."
,
channel
)
elseif
channel
==
"grounded"
and
is_privileged
(
name
)
then
return
false
,
S
(
"Can't leave #@1: You're privileged."
,
channel
)
end
end
)
beerchat
.
register_callback
(
'before_delete_channel'
,
function
(
name
,
delete
)
local
channel
=
delete
.
channel
if
channel
==
"Moderators"
or
channel
==
"grounded"
then
return
false
,
S
(
"Can't delete #@1: It's a system channel."
,
channel
)
end
end
)
-- Make sure system-handled channels are registered
beerchat
.
channels
.
Moderators
=
beerchat
.
channels
.
Moderators
or
{}
beerchat
.
channels
.
Moderators
.
owner
=
owner
beerchat
.
channels
.
Moderators
.
name
=
"Moderators"
beerchat
.
channels
.
Moderators
.
password
=
""
-- Don't worry, players can't join anyways
beerchat
.
channels
.
Moderators
.
color
=
beerchat
.
channels
.
Moderators
.
color
or
beerchat
.
default_channel_color
beerchat
.
channels
.
grounded
=
beerchat
.
channels
.
grounded
or
{}
beerchat
.
channels
.
grounded
.
owner
=
owner
beerchat
.
channels
.
grounded
.
name
=
"grounded"
beerchat
.
channels
.
grounded
.
password
=
""
-- Don't worry, players can't join anyways
beerchat
.
channels
.
grounded
.
color
=
beerchat
.
channels
.
grounded
.
color
or
beerchat
.
default_channel_color
beerchat
.
mod_storage
:
set_string
(
"channels"
,
core
.
write_json
(
beerchat
.
channels
))
-- Invite owner (so they can modify the channel) and kick all others
beerchat
.
register_callback
(
'after_joinplayer'
,
function
(
player
,
last_login
)
local
name
=
player
:
get_player_name
()
local
meta
=
player
:
get_meta
()
if
name
==
owner
then
beerchat
.
playersChannels
[
name
].
Moderators
=
"owner"
beerchat
.
playersChannels
[
name
].
grounded
=
"owner"
else
beerchat
.
playersChannels
[
name
].
Moderators
=
nil
if
beerchat
.
playersChannels
[
name
].
grounded
==
"owner"
then
beerchat
.
playersChannels
[
name
].
grounded
=
nil
end
end
if
not
beerchat
.
playersChannels
[
name
][
beerchat
.
currentPlayerChannel
[
name
]]
then
beerchat
.
currentPlayerChannel
[
name
]
=
beerchat
.
main_channel_name
meta
:
set_string
(
"beerchat:current_channel"
,
beerchat
.
main_channel_name
)
end
meta
:
set_string
(
"beerchat:channels"
,
core
.
write_json
(
beerchat
.
playersChannels
[
name
]))
end
)
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Fri, Feb 27, 12:17 PM (4 d, 18 h ago)
Storage Engine
local-disk
Storage Format
Raw Data
Storage Handle
b7/6e/ae06717a24e8bbfb809a76ca381b
Default Alt Text
init.lua (3 KB)
Attached To
Mode
rTWIMODS Survival Server Custom Modifications
Attached
Detach File
Event Timeline
Log In to Comment