#plugins-dev-chat
1 messages · Page 73 of 1
this built-in popup is good because
- opt-in
- official and stated in the EULA
- players see it when they join a server for the first time ever
if servers are not allowed to record players voices, what would that mean for other players. i doubt them grdp docs make any distiction between server/clients or are even technical on any level
train ai
duh
I can make the same shit
you can't
wdym
well do it and show it
yeah have fun clicking those
isnt this all before AI really became popular
i guess you can do that
SSS
but you'd likely pass that to AI for moderation
doesnt make u able to click a hint
no shit
SSSH
again, it's not an official, built-in game feature
SSSS is, but not the exact confirmation dialog
what is SSSS isn't it server specified settings?
that's not related to hints though
I no no wanna hear N-Words
but yea N-Word is allowed to say like normal without context, but saying it to someone is not allowed anymore
i.e 'helicopter' 'car' i must ask like helicopter and car?
hello, helicopter is dev
what is ghostz doing here
VC reports without requiring the reporter to have some recording software
I see.
not to someone, more like aimed at them
ahhh
yep
im pretty sure other games have it
!shoot 699629271089414224 1h toxicity
I mean, ever since an SL server back in 2018 successfully pulled off auto bans via voice recordings which is uh something a decent amount of server owners kinda keep bringing up every once in a while
who'd you mute
at that point
you don't need to store it
just pass it to an ML speech recognition model
logic_gun#0 has been muted in this server for 1 hour.
That guy
ohh.. and i didn't even think of that
what did bro say
thanks for idea :b
WOO
"erm prononuns, erm 🤓"
originally was my plan
well uh
!warn @random scaffold disrespectful behaviour - unoriginal pronoun joke
did you know you can ignore pronouns in English language by refering only with name?
in the popup it says "short recordings for gameplay features"
so that doesn't count
Did you know English as a language suck ass
YES
but it's waaaaay better then 🇨🇿
thx @idle depot
Anytime
it's also way better than hungarian
Atleast there is no difference between "te" as male is female
udělal/a
*or
xd
you use / refering to both genders in Czechia
exactly
did you mean "ő"
ó
I guess
í
æ
see? you can't even hungary
let's not talk about the romanian language
i wanted to send something but i'll avoid that
English has no čřšť just plain chracters
saskyč is my name and people be like "how do I pronouns your name"
*pronounce
shashkeech?
sastsktsktsk
mlem mlem mlem
yea
are you serious right meow
maybe changing my name to saskus would be better
sus
suskus
why's there no developer suggestion for people here?
like toys that could be added etc.
github issues
that's for issues right?
feature requests and issues
do they also handle suggestions through it?
yes
and where can I make this issue?
because you can't install visual fosdio 🤓
Does anyone have a guide on how to make Server specific settings menu?
Ours often "breaks" and completely disappears for all/most players and i want to learn how they work to try and fix it
Basically, put everything in the static list
When syncing players only then filter the list
Dont forget to permission check
Using wrapper for 2 settings >.>
SSS is very simple tbh
using wrapper for 1 setting

and for compat with other plugins
i can't guarantee that other devs won't just override mine
even if i do everything to "'comply" with theirs
have you tried secretapi
Thank you both ^^
np
No and wont cause it doesnt meet my needs
well what do you need
No dependencies 



Why?
theres a feature that afaik is intended where you can pick up 3 500s and then a 330
but the thing is if you do candy then 500 it doesnt rly
work
or just another way of excluding 330 from the check
to you can pickup without dropping and picking up
or add ScpItemSearchCompletor to ignore it
or make ItemSearchCompletor ignore the ItemType.Scp330
idk!
this is prob the best one rather than new category tbh
is there an event i can use to cover every time a player receives an item (in any way)?
does the labapi picked up event cover that
InventoryExtensions.OnItemAdded
Where is the game checking when the nuke detonates who to kill?
In AlphaWarheadController.Detonate
The CanBeDetonated is probably the part you mean though
AlphaWarheadController.CanBeDetonated
Thanks

Okay yo
You guys know how cassie announces respawns and does multiple lines back-to-back
Where the subtitles change part-way
Like each sentence
yes
Is it possible to do that myself
add a newline
yes
So how does it know when to change if I use custom subtitles
Cause I wanna do multiple messages with the voice effects
Or does it not work if I use custom subtitles
So
Doesn't work with custom subtitles 
it works with custom subtitles
Do I need to do \n in both the message and custom subtitles?
I did it in just the custom subtitles
huh
I figured as much
If you declare custom subtitles there's no way for cassie to know where you want the switch for the next line to be
I could have it say "A B C" and want it to switch between the custom subtitles of "1" "2" and "3" and it would have no way of figuring that out
So the question is now
What do I do
I could just do the subtitles myself but that sounds really dumb
Would it be possible to reduce the delay between queued CASSIE messages to zero?
Follow-up, if I wanted to prevent a player from moving + jumping, could I spoof a strangulation on them?
Bonnie Tyler - Holding Out For A Hero (Official Lyric Video)
Stream Bonnie Tyler here: https://bonnietyler.lnk.to/Streaming
Subscribe to the Bonnie Tyler YouTube Channel: https://bonnietyler.lnk.to/YTSubscribe
WATCH TOTAL ECLIPSE OF THE HEART MUSIC VIDEO ► https://bonnietyler.lnk.to/YouTubeTT/youtube
WATCH HOLDING OUT FOR A HERO MUSIC VIDE...
Also to add onto this to clarify
I remember that in the past there was someone who made a mod that required client-side patching that worked off of the InventoryItemLoader or some shit and would be able to modify names and descriptions for custom items
I wonder if it would be possible to simply change what items the client thinks it has when someone opens their inventory (eg. replace a gun in the inventory with a custom keycard)
The actual picture of the item would be inaccurate but you would then be able to give it a custom name
I suspect that it wouldn't work but I figured I'd say it in case I'm onto something
Also one interesting thing I noticed is that using \n when sending an announcement literally just does
Also the textbox where you can enter it doesn't actually display the \n characters, it displays a new line
So it looks like
So you can cascade down the screen w/ it
It moves up depending on how many new lines you have it appears
howdy people. Just now trying ro learn how to code plugins. Imma struggle so much because i have no idea what im doing. Yippe!!!! B)))
hey does anyone know how to properly get a player to copy another player's rotation?
its fucking messed up and idk why
i know it must have something to do with how CurrentVertical is handled in Mouselook
player1.Rotation = player2.Rotation
no, i also need to copy pitch
LookRotation
player1.LookRotation = player2.LookRotation

what are you trying to do
That works on dummies
You're doing it wrong
You're doing MouseLook.CurrentVertical = rotation.y;
I'll bet
okay ill take a look again
If you want to set dummy lookrotation to be the same as yours just do dummy.LookRotation = player.LookRotation
Don't fuck with mouselook or anything, just do that
It'll work
100%
Lmao all good
It's a little counter-intuitive
Usually vertical = y
But no no
Vertical = x
Absolute garbage
i tried copying what exiled did which i guess was not a good idea here
Lmao real shit
Yeah when I use lookrotation for dummies i do some shit
This is upsetting me that I can't figure it out
It has to be possible, right?
Like wtf
I want to do it with custom subtitles so I can remove the voice effects I do
Will that still work?
yeah
Baller lemme test it
Custom subtitles are usually just unreadable (to cassie) text along with the actual words hidden
Cool
so anything that works in the CASSIE command works on custom subs
no problem
You're so goated
feels good to pay you back <5 minutes after you help me with the most obvious shit ever
Lmao hey happy to help
I've legit been trying to figure it out for like 2 hours
Funny thing was I was reading your previous messages about Cassie and I was like "Woah this guy knows a lot about this maybe I should @ him" but I didn't wanna disturb you for something you might not even know haha
which messages
and yeah i had to become like a cassie expert
hubert should have documented cassie when he wrote it
well maybe there is internal docs, i have no idea. i mean usually competent programmers do have docs on like everything essentially
Ong bro
I mean having no documentation for any of the code is a nightmare sometimes
oh yeah that
yeah im a god damn genius
that on top of writing a plugin for cassie
for no conceivable reason
it has embedded some cassie knowledge deep into my head
um no youre not
thats me with hints
uhm yes i am
trust me, heh
you dont wanna mess with someone of my intellect
👿
i have the default line height memorized and know all the rules of when a tag can be parsed
i distinctly remember you always reporting your findings and progress on ruei in exiled dev chat
it was an ardous journey
and this time i wanted to mirror how tmp parses tags as closely as possible
but tmp tags are so fucked
cant do that in SCP sl
no its possible. he just cant do it
they
^
i mean maybe you can but it has to convert into tmp at some point
no
why not
scpsl is using a vulnerable version of mirror which allows granting access to client effectively turning this game into a more dangerous gmod 🔥
its a client side thing, so scp sl has to have it implemented basegame
please make this real
it would be really funny
my current project has me ripping my hair out and i dont know if its worth it
custom models
im writing the demo system
bro
r u sure they're not using primitives
yeah bro
can you send footage or something
no
oh
i made it up sorry
though u can mod sl clientside its fun
although il2cpp is annoying
the crouch feature is still in SL for some reason with the only missing thing being the animation (but u can add it back using UABEA). it takes about 5 lines of code for a server + clientside mod to re add crouching
fun fact: <line-height=5 HELLO WORLD!!! e> works fine
😭
so thats what im dealing with
man i gotta learn uabea smh
wait so you can inject lines of code?
ah okay
ive seen a couple of people using something like it to spawn assets in SCP SL.
so u can prevent a method from running, change args, return result, etc
there's lieutenant griefer on reddit & a couple of people i spoke to on EXILED
sorry are you talking about client side modding or plugins ?
UABEA
right
ah idk about that for code
thats what i was talking about
I was using bepinex for code and uabea for models and such
yup
so if i can figure out how to mod the SL client with a modloader then i can also mod the server the same way right
awesome
I’m not sure. I was just using plugins for server to not break my head
i probably wont even bother figuring this stuff out but its nice to know in case i ever wanna
It’s actually quite easy. But annoying
oh, yeah
Because for server modding is really easy but on client side it’s difficult
you can probably just write your custom stuff directly on the server side and just have your own network messages and stuff
haha
I had some nw devs help me with some workings of the game though
Yup
thats how those people on EXILED did it
so the assets were injected on the client side, and the server just told the client that it spawned
well if i ever decide to try it at least i know this kind of modding is possible
only good for private servers but its still fun
Idk how many people did it
I did 😁
at least four i think
there's a guy on reddit who posts his mods
theres like two people on exiled
and there's you now
3396 Views - Watch turkey keycard? by warden161 and millions of other SCP Secret Laboratory videos on Medal. Tags: SCP Secret Laboratory, SCP: Secret Laboratory
This one
Crouch
wait how do i run SCP SL in unsafe mode so AC doesnt catch me?
awesome dude
Scpsl mod patch + scpsl classic
yup that
i used it to make a couple of texture replacements
NW will smite you
I dont think you should be posting in here xd
Ahahhhahaha
why not?
Because it's a bypass for the (useless) anticheat SL has 
Does somebody have a patch for this?
[2025-07-19 11:48:19.687 +02:00] [STDOUT] ArgumentException: An item with the same key has already been added. Key: ReferenceHub (Name='Player [connId=3]', NetID='27079', PlayerID='23')
[2025-07-19 11:48:19.687 +02:00] [STDOUT] at System.Collections.Generic.Dictionary2[TKey,TValue].TryInsert (TKey key, TValue value, System.Collections.Generic.InsertionBehavior behavior) [0x0015a] in <069d7b80a3914a08b6825aa362b07f5e>:0 [2025-07-19 11:48:19.687 +02:00] [STDOUT] at System.Collections.Generic.Dictionary2[TKey,TValue].Add (TKey key, TValue value) [0x00000] in <069d7b80a3914a08b6825aa362b07f5e>:0
[2025-07-19 11:48:19.687 +02:00] [STDOUT] at LabApi.Features.Wrappers.Player..ctor (ReferenceHub referenceHub) [0x0000b] in <ed207da941d64f12942f0c5cc79632fc>:0
[2025-07-19 11:48:19.687 +02:00] [STDOUT] at LabApi.Features.Wrappers.Player.AddPlayer (ReferenceHub referenceHub) [0x00008] in <ed207da941d64f12942f0c5cc79632fc>:0
[2025-07-19 11:48:19.687 +02:00] [STDOUT] at (wrapper delegate-invoke) System.Action`1[ReferenceHub].invoke_void_T(ReferenceHub)
[2025-07-19 11:48:19.687 +02:00] [STDOUT] at (wrapper dynamic-method) ReferenceHub.ReferenceHub.Start_Patch2(ReferenceHub)
[HarmonyPriority(Priority.VeryLow)]
[HarmonyPatch(typeof(Player), nameof(Player.AddPlayer))]
internal static class AddPlayerPatch
{
private static bool Prefix(ReferenceHub referenceHub)
{
if (referenceHub.isLocalPlayer)
return false;
if (Player.Dictionary.ContainsKey(referenceHub))
return false;
_ = new Player(referenceHub);
return false;
}
}
Thanks
which method teleport items from scp106 to door / pos?
look for items in shadow dimension and just set their pos
or do you mean the automatic method
ValidateDoor(DoorVariant dv, FacilityZone requiredZone) was patched
but it same teleport items
PlayerRoles.PlayableScps.Scp106.Scp106PocketItemManager::Update()
but without the players
wai
here it sets item's position
where he get drop position
how can I make the player see the artificial flashes through the walls? (mimic SCP-1334)
i wanna make legal wallhack in settings
I want to ask for this too
give them 1344 
or make them 096 and make everyone a target
me need individually for any role
yo people how do I get information about keycard like lable from keycard that is defaultly defined by NW and not the custom keycard? I have been searching and it's fucking hard to do.
foreach (DetailBase detail in this.Details)
{
if (detail is IItemNametag itemNametag)
return itemNametag.Name;
}
This but for any other detail you need
LINQ moment
I just used the decompiled Name getter 
I haven't found Detail in KeycardItem
*details
Are you looking at InventorySystem.Items.Keycards.KeycardItem?
Then you should
why would I look for it though?
keycard.Base.Details
Cause that class has Details
var x = (KeycardItem)ev.Player.CurrentItem.Base;
Base doesn't exist in x
Details does though
I finally got it thank you
well yeah if you make it reference the basegame and not labapi theres no .Base
tbh makes sense
my bad
hope i dont get banned
hi, i joined and i got a basic question which maybe a plugin will do. does anybody know if the scpsl server on linux supports stdin? trying to send broadcast messages through a socket to notify players of a server reboot (have had some weird freezes overnight before and ideally a reboot would solve that). please let me know if this is not the proper chat for this either. thank you!
doesnt that tool force you to online mode anyways
they probably don’t, but i can help if needed
github died ?
yes
text chat uses ruei, so does timers, you can read my source
you can just type /broadcast in the server console
Oh nice
didn't know that
the SL server can't read from LA's stdin
timers uses it
hmm the problem i have really is that before i calculated everything with Vector2
with x, y
i don’t use that, i just use voffset and pos lol
position on the screen now i need to replicate it on that
i was trying that with screen but it was never working (works fine when i run the script manually... which defeats the point of an automatic reboot). i appreciate the info that it doesn't read from stdin!
thats too much work
its better to use that
for configs
and easier to understand
¯_(ツ)_/¯
youcan have the script write a broadcast command
your shell script
i could steal the method used by HSM to calculate it so it looks the same
let me send a screenshot. you might be able to solve this since im having trouble with screen. when i run this script manually, it works. but when i run it via cron or systemctl, it fails and i cant figure out the solution. it says must be attached to a terminal, doesn't work even if my screen is attached or detached.
oh wait i cannot
if i run this shell script via the terminal, works fine. but screen fails when i do it through an automated service which is what is giving me trouble. i tried with -d -m and whatnot, but still nothing.
cron fails and systemctl fails as well. it has to do with the screen session and being headless but i am stumped on it
im probably going to have to at this point, which is why i joined here
is there a plugin already, or should i probably start making one
there's an option in the config restart_after_rounds iirc
so it auto-restarts every x rounds
gameplay config
@icy knoll can you get the height of the line or the lenght of the line
in hints?
i need to recalculate the way HSM did the position
because im using Vector2 for the configs
there's no way to get the height or length of a line unfortunately
Y: (700 - Y) voffset
X: <pos={0:0.#}>
i mean this are the calculation it does
but without them i don't think they will be precise
but honestly its better than nothing
im a bit confused why u need the length of the line
- hint.LineHeight;// Add extra line height on top of the first line so that the line height will not be calculated for the first line
line height is a tag
because so everything has the same position
huh
check this out
im migrating from HintServiceMeow to Ruei
because im fucking done
the only thing u need to place correctly urself is the X
voffset for y
yes but y is already consistent in ruei
this is how meow calculates it
if you set what it should be
but it wants the line height or someshit
that i still don't understand why it needs it
ig i can just use this
and refine it
the configs
yea ruei does all the vertical positioning for u
crazy
schizophrenia
does hsm... not?
because i just tested
hi rue
my server with 4 people destroys itself
on ruei ?
that to my knowledge is a u issue
i dont think we would be switching to ruei if we were on it already
you can test changes on smth ur swapping to

Idk
wdym idk lol
No v2
and thats crashing the server?
;(
we are switching TO ruei
yes thats Y
why do they need line height
theyre adding HSM to ruei idk
Im trying to migrate positions from HSM to ruei
To just not break everything
ppl have already added ruei to hsm
no need for the other way around
they have lol?
I need to just calculate position thats it
Lol
Its not that big
til
should've made Tag a record smh
ur so obsessed with records
well i needed really fine grain control over when a tag == another tag
cuz they make life simpler
if two tags are created differently with a null id then they shouldn't equal each other
if other can be null and is handled fine why not make it nullable
it implements the iequatable interface
oh okay
ah
oh wait i can make it nullable wtf
so like javascript symbols
i think so yea
Can i ask you something can i create temp elements?
like a SendHint
but for ruei?
ye
new Tag("hello") == new Tag("hello")
its time to rewrite :3
@celest thorn DisplayCore::SetElemTemp()
ok nice
that's for temp hints
display.Add(new BasicElement(500f, "hello), TimeSpan.FromSeconds(2));
as in inherit from element?
yea
yea
what do you do for hints that you want to remove during a certain point?
.
so i can do this
and directly call the ctor
yea
Tag tag = new();
display.Add(tag, new BasicElement(500f, "hello"));
// later
display.Remove(tag);
make a method 
isnt this for v3
yea
do you have an overload for no tag returning a new tag
how did you make 2 add methods for a dictionary 😭
yeah that adds up
i was thinking of renaming Add to Show
public class ChatSystem : AutoElement
{
public ChatSystem(Roles roles, Func<DisplayCore, Element> creator) : base(roles, creator)
{
}
public ChatSystem(Roles roles, Element element) : base(roles, element)
{
}
}
i don't think i can do this lol
for textchat, i just found it easier to use a dynamic element lol
I don't know nothing
im going blind
plus with dynamic element, you call whenever you want to update
AutoElement, you don't
droles was stupid
my god ur nuking peak...
what's the alternative again? i find it useful to have it for timers
events
thats so sad
like make it update every second and me not having to do a coroutine
like for what i see here
oh update intervals is an option in dynamicelement
it's a pretty large class ye
before i was using a class Elements
lumi
🙏 tysm
why are you using class tuples
im scared
😭
because easier for me to write :3
(Type1, Type2)
im so scared
boringggggg
because it will become massive pretty fast
you're allocating unnecessary memory
wait i have an idea
wait that really does that over named tuples?
yes
its a class
lemme install rider
u can which is silly
who tf is alt+tabbing my computer on its own
i love linux
who is
yay -S rider
simple rider install
i'm trying to press number keys
and it just alt tabs
wtf
WINDOWS
wanna hotkey in SL or write an apostrophe? SWITCH TO A DIFFERENT WINDOW
oh i know
i made a program to do that
😭
dumbass
holy shit why tf is .net so large...
please tell me you're not installing the entire esverything sdk
the sl plugin dev addiction
How can i get the elements on a player screen?
for ruei?
yea obv
im migrating rn
because i need to remove a specific element
in v2 you can add the elements to a display but
atgs
oh use an elemreference
ev.PlayerDisplay.RemoveHint("LoadingScreen");
on meow i was doing this
but now how?
idk i barely remember how to do it in v2
why tf do you have goto
because it skips one
but honestly thats not even the point lol

if (instance is TPS ? !checkPermission : !instance.IsDefault) continue
wait how can you set the X axes?
Why are you downloading mono
oh i forgot i need to do it manually
paws
Set the dotnet path in the Rider settings
pos tag
how did i know...
The problem is How do i save the element
i could save it in a dictionary
because i do this
idk i think ur better off waiting for ruei v3 before migrating
the problem is how much is it going to take
because if its more than 2 months im switching
SO you mean create a dictionary
and do new()
yeah just do that ig
dunno your use case for removing elemnts
i'd have a separate screen/display if many things change
the problem is most of the stuff is dynamic
for a simple reason
from Switching Hubs and stuff
to countdown
@hearty shard
no
me neither
and thats paws plural to you
no i got rid of the other paws
element = AutoElement.Create(Roles.All, raw).UpdateEvery(TimeSpan.FromSeconds(0.1));
i was reading but
Create doesn't exist
yea the examples are outdated sorry lol
i don't quite understand why
this choice
but you cannot remove manually an auto element
like this gives me so much of an ick
.Disable() no ?
if (xxx)
return string.Empty;
Scp330Bag
wait
what r uon about
ItemType ?
the class ?
basegame or labapi wrapper ?
ItemType.Scp330 iirc
me when ppl use this chat for config stuff instead of only coding 
RIGHT
smart
okay
mb
like
im trying so badly to understand
do i really need
a display
that badly to just display hints
is it horrible
v3!!!!!
what
like im going to cry to bed
what data
im going insane
can we normalise not stealing my shit
"erm"
it's AGPL
you can't ignore it
i would recommend for legal sakes, do not steal my work.
we're gonna send rocks to your window
i should make it so you cant do anything with secretapi except reference it
how is that open source at that point 😭

thats the point
nah
secretapi will always be free to use if theres a comment w credit
make your own hosting for secretapi
wha
like
in the readme
the code that got yoinked?
yes
nodders
yeah but
i havent given a licence cuz im lazy
CC0
PR one idk
-# -paws
also i just realised, i dont really need to publicize assembly-csharp in 99% of my plugins...
will this code work to remove an item without destroying it?
just remove it from player
why are you doing that though
to swap inventories?
they wanna keep the instance
no, i want to put the item in limbo to access it later.
uhhhhh
for anyone who comes across the same issue, i fixed it by not using cron, using systemctl, and having the service that runs the script (not the timer for a daily server reboot) use the username that the screen session is running from. it runs from root by default and root screen sessions are different than user screen sessions. stdin wont work for this case.
oke
oh i just use _player.ClearInventory();
??
and then i just clear inv
wouldn't that destroy the item instances
probably it would
it doesnt for me
it calls public void RemoveItem(ItemBase item) => Inventory.ServerRemoveItem(item.ItemSerial, null);
i mean
im converting my plugin fully to labapi so all the small things that exiled has is jarring to me and sometimes i dont wanna trace the full thing that exiled wraps
impossible
a last year when i made one of my first plugins, an exiled wrapper that wrapped the same exact method caused the item to be deleted and ghost items
anyways
i will try what axwabo did
uuuuuhhhhhh
hmmm
i do see it destroys but
for me its working afaik
i havent had issues and i remember testing it
"afaik"
what were you testing
afk replace
it gave me items
and ammo
and kept custom items

blink
also, does anyone know if serials are re-used within one round?
yeah that makes sense
which was for a temp fix
until nw added support
okay that explains it
but it does work
like if an item is destroyed, will a new item made later on possibly use that serial?
very unlikely
i think it just goes ++
so you need 65k itemsp
in a round
for overflow









