#plugins-dev-chat

1 messages · Page 80 of 1

teal junco
#

crazy thing is, a basic blacklist would probably actually work on 99% of server owners

upper vapor
teal junco
#

someone asked me to implement a blacklist on a plugin i was making so an rp server they didnt like couldnt use it

#

only, i eventually realized, with a few exceptions, all rp servers are exactly the same in terms of morality.

spring swan
teal junco
#

he wanted me to make it so a server he didnt like was not allowed to use it

upper vapor
#

adding a blacklist to an open-source plugin? d_rockd_rock

teal junco
#

tbh both servers in this case were in a deficit of plugin devs lol

#

i held all the cards

#

also the second server likely wouldnt want my plugin anyway

teal junco
#

i never got around to open sourcing it tho

upper vapor
#

sobbing

teal junco
#

making BlacklistLibrary.dll dependency that enables blacklist functionality for my plugins

royal mica
#

Imagine if you could pay for more 173 range

grand flower
#

If it wasn't C#

#

it'd actually be worth it

#

but since it's C# and it takes 5 seconds to decompile your plugin

royal mica
upper vapor
grand flower
#

Still kinda dumb, if you make your plugin open source or public, don't try to add blacklists lol

royal mica
#

Just use permissions and implement nrgating permissions.yml LUL

restive turret
#

Make a C# plugin call a Native dll

#

You can obfuscate the C# dll and the native with upx and VMP / Denuvo ClassDTroll1

royal mica
#

SCPSL LabApi Denuvo 💀

restive turret
#

Termida

#

*th

teal junco
#

but honestly like i said earlier, it would probably work enough to stop 99% of people from using your plugin

#

theyre not gonna know wtf happened and their dev either doesnt exist, doesnt care enough about the provided functionality, or will just make their own inhouse version

slate flume
#

What happens with custom keycards in 914?

unique crane
#

they dont change on processing

#

I believe

slate flume
#

Baller

#

I trust

worn gull
#

Hi! How can I get from FirearmItem which ammo I need to load that gun?

upper vapor
worn gull
#

Thanks

upper vapor
#

np

royal mica
tepid sluice
#

How do i get the players who are affeted by flash bang

slate flume
#

Which calls

tepid sluice
#

patch time

slate flume
#

Patch onto ProcessPlayer right here ->

tepid sluice
#

anyway thx

slate flume
#

Or just latch onto UpdatedEffect and do Flashed

#

Depending on what you need it for

#

Would be pretty painless to check if a player becomes flashed

#

Wouldn't need a patch

tepid sluice
#

i need to check if they are flashed by tm

#

friendlyfire things

unique crane
#

if(player.GetEffect<Flashed>().Intensity > 0)

#

is flashed check

tepid sluice
#

@slate flumehere is a base hmmmmmmm,should i use Reflection?

slate flume
#

Yeah

tepid sluice
#

i havent used this before

#

is this ok

slate flume
#

So do you have FF on?

tepid sluice
#

yep

slate flume
#

And you want to prevent flashbangs when they come from a teammate?

#

What's the ultimate goal

tepid sluice
#

yea this is the last one i need to do

slate flume
#

So don't patch ServerFuseEnd

#

Patch ProcessPlayer

#

Do a harmony prefix

tepid sluice
#

ok

slate flume
#

And prevent the code from running

#

Something like

public static bool ProcessPlayerPrefix(ReferenceHub hub, FlashbangGrenade __instance)
    {
        if (__instance.PreviousOwner.Role.GetFaction() == hub.GetFaction()) return false;
        return true;
    }
#

Or actually

#
[HarmonyPrefix]
[HarmonyPatch(typeof(FlashbangGrenade), nameof(FlashbangGrenade.ProcessPlayer))]
public static bool ProcessPlayerPrefix(ReferenceHub hub, FlashbangGrenade __instance)
{
    if (__instance.PreviousOwner.Role.GetFaction() == hub.GetFaction()) return false;
    return true;
}```
Should work
#

@tepid sluice

tepid sluice
#

oh thx

slate flume
#

Of course!

tepid sluice
#

i think this work perfectly

slate flume
#

That's the hope

hearty shard
#

assassination

royal mica
# tepid sluice

If you do not take the publicize route and want to be on the Reflection side:
Cache the GetMethod in a variable that is only reassign on constructing the class. Methods rarely change, so caching them instead of fetching is performance gain. Also make sure you have the correct flags for GetMethod, as it matters

#

(This is generally for reflection, not for this exact case)

tepid sluice
#

okay,thx for remind

restive turret
#

Publicize, makes your job easier

hearty shard
#

my favorite commit

upper vapor
upper vapor
hearty shard
#

i think i just forgot to name the pr

upper vapor
hearty shard
#

no

#

i named it

#

blame jesus for that one

unique crane
#

Can you ban people from github repos?

#

I think we have a candidate

hearty shard
#

GUH

#

i did your job

royal mica
restive turret
unique crane
#

Lets ban eve

#

whos against?

restive turret
#

None

hearty shard
#

david isnt that more work for you

#

i bet u didnt make a pr with what i added

worn gull
#

How can I create a grenade and set the fuse time for it and spawn it to a pos?

hearty shard
restive turret
#

ExplosiveGrenade.SpawnActive

#

0.1 being fuse time

#

Use your ide to search

royal mica
hearty shard
worn gull
#

thanks

celest thorn
#

Hiii chat :3

restive turret
#

Hi

restive turret
hearty shard
unique crane
celest thorn
celest thorn
unique crane
#

We are cooking

#

both literally

restive turret
unique crane
#

and coding

celest thorn
#

some pasta?

unique crane
#

nah

#

chicken with paprika

#

and dumplings

restive turret
#

Nice

celest thorn
#

bro a good plate of pasta

unique crane
#

That was a backup plan

#

if my sister ate all the dumplings

celest thorn
#

today i will eat a potato gateau

unique crane
#

nice

celest thorn
#

i love potatos

#

potatos are amazing

#

if you want to burry me and make me happy in the middle of a potato farm

unique crane
#

xd

celest thorn
#

potatos are the best food ever

#

you can just even eat them raw

#

and they taste good

unique crane
#

EW

#

raw potatoes

unique crane
#

wtf

celest thorn
#

Nah

#

I DIDN'T MEAN I EAT THEM RAW

upper vapor
#

have you tried not getting food poisoning

unique crane
#

You wont get poisoned from that probably

#

but like

celest thorn
#

I DON'T EAT THEM RAW

upper vapor
unique crane
#

they are gonna taste

upper vapor
unique crane
#

e w

celest thorn
#

;(

#

i don't eat raw potatos

#

honestly if you give me just a plate of boiled potatos

#

you make me happy

#

just anything + potato and you make me happy

unique crane
#

Okay

#

at least we know what to feed you when your gonna end up in the basement

upper vapor
#

i love air + potato

celest thorn
#

i get paid more by the gov than working for nw

#

just staying home

upper vapor
#

you could get paid extra

celest thorn
hearty shard
celest thorn
#

because who else gets 3.3k for just going to uni

celest thorn
#

most likely what i will get paid are meds and 3.3k a year

hearty shard
celest thorn
upper vapor
celest thorn
#

I don't need to work

#

or else lower money

#

the scholarship pays me more a month than a job

#

if i now go to work i would get paid 500 euros a month

#

so do your math is it worth it?

unique crane
#

Then just get the fuck out of your country and all of their investments gone

celest thorn
#

7 days from 7 am to 9 pm

unique crane
celest thorn
#

like everyone

#

i plan to do classes with italian & english

unique crane
#

Move to Tahiti

slate flume
#

If I wanted to get a random item from an IEnumerator should I just .ToArray().RandomItem()
Or should I .OrderBy(_ => rnd.Next()).First()
Or something else?

upper vapor
#

do you mean an IEnumerable

hearty shard
upper vapor
#

benchmark it

hearty shard
#

i dont remember why i used list

unique crane
#

There is random value in IEnumerable in Northwoodlib too?

#

I believe

hearty shard
#

is there?

#

isnt that for lists

slate flume
#

Gotcha

upper vapor
slate flume
slate flume
unique crane
#

I guess it isnt then

restive turret
#

Skill issue

slate flume
#

Just

#

.ToArray().RandomItem() :)

hearty shard
#

and yea it is array / list

upper vapor
#

guess what

restive turret
upper vapor
#

you're probably better off with ToArray, but benchmark if you really need performance

slate flume
hearty shard
upper vapor
#

extension methods

slate flume
#

I wanted to create an overload for .RandomItem()

hearty shard
#

extension method

slate flume
#

Won't work

upper vapor
#

why

slate flume
#

It'll be recursive

hearty shard
#

what

upper vapor
#

?????

slate flume
#

Let me

#

Write it out

upper vapor
#

name it different

hearty shard
#

then dont make it recursive 😭

#

or yeah name it different

upper vapor
#

also if you call toarray

slate flume
upper vapor
#

it'll call the array overload

slate flume
#

You missed the point

#

I wanted to create an overload for it but I can't

hearty shard
#

yea ur pointing it to your own method

slate flume
#

Yeah

hearty shard
#

public static T GetRandomValue<T>(this IEnumerable<T> collection) => collection.ToArray().RandomItem();

slate flume
#

Exactly my original POINT

#

I KNOW THIS

hearty shard
#

yes but

slate flume
#

You're acting like I don't get it

#

I do

upper vapor
slate flume
hearty shard
upper vapor
#

you don't need to use the extension syntax

slate flume
#

No shot

upper vapor
#

they're static methods after all

unique crane
#

Yall small brains

#
public static T RandomItem<T>(this IEnumerable<T> enumerable)
{
    return enumerable.ElementAt(Random.Range(0, enumerable.Count()));
}
slate flume
#

HUGE

unique crane
#

You dont create a new array

hearty shard
#

removes .ToArray() so probably

#

yeah

unique crane
#

so I guess?

slate flume
#

Bet

unique crane
#

You just iterate it

#

not a big deal

restive turret
#

Add into nwlib

#

NOW

unique crane
#

unless its two billion one hundred forty-seven million four hundred eighty-three thousand six hundred forty-seven long

slate flume
#

Is this a problem?

unique crane
#

You can theoretically select a random value in a single iteration

restive turret
#

Nope

unique crane
#

but this is not an issue

slate flume
#

When should I worry about multiple enumeration

#

What does it even mean

hearty shard
#

it means ur looping multiple times

restive turret
#

2 times

#

Or more since you get the elementar

#

Nvm its exactly 2 time

hearty shard
#

.Count() enumerates

upper vapor
slate flume
#

So like if I did Log(enumerable.Count()) and Log(enumerable.Sum()) that would be a multiple enumeration

upper vapor
restive turret
#

First because count.
Second because ElementAr

slate flume
#

So

#

I should just use array?

restive turret
hearty shard
upper vapor
restive turret
#

Ye it iterate 2 times, one for the length/count other because of elementAt

upper vapor
slate flume
upper vapor
#

whar

hearty shard
upper vapor
#

an array is a reference type

hearty shard
#

what i get from the game kek

#

well

#

using game references and framework 4.8

#
// Type: System.Linq.Enumerable
// Assembly: System.Core, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
// Assembly location: E:\SteamLibrary\steamapps\common\SCP Secret Laboratory Dedicated Server\SCPSL_Data\Managed\System.Core.dll
// XML documentation location: C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.8.1\System.Core.xml
slate flume
#

Just which is faster is the question

upper vapor
#

huh

hearty shard
hearty shard
slate flume
#

I'll be honest

#

I've literally never benchmarked anything in C# a day in my life

hearty shard
#

do you need maximum performance

slate flume
#

No but I'm curious

upper vapor
upper vapor
hearty shard
upper vapor
#

i opened secretapi for testing but references weren't the same

hearty shard
upper vapor
#

very easy to use

#

you just gotta know what you're doing

slate flume
upper vapor
#

i've seen stupid benchmarks

slate flume
#

I'm just eager to learn is all

upper vapor
slate flume
#

I wanna have good practices

slate flume
upper vapor
#

just like a switch statement but easier

#

checks for the first type

#

if not that type go to the next one

#

_ is the fallback

slate flume
#

Interesting so it checks IEnumerable casting to 2 different types and runs different code depending on what cast is valid?

upper vapor
#

kinda

#
if (a is B b)
    return b.shit;
if (a is C c)
    return c.shit;
return a.evenMoreShit;
#

basically

slate flume
#

Oh cool

#

So checking if IEnumerable is something would allow you to use that something to do stuff more performative than if you used the IEnumerable?

celest thorn
slate flume
#

That's so cool!

upper vapor
#

how is this not Unity's theme song

#

or like

#

intro

celest thorn
#

Roblox tycoon

#

😭

#

how we ended up from roblox tycoon to roblox being for dating

#

btw i wanna try getting 2k hours

#

im rn 1.7k

upper vapor
#

you don't even play the game

#

you just afk

#

while you write code

celest thorn
#

I was testing the language system

#

translation is so easy for both me and the translators

#

translators have a website

#

i just download and drop it

#

it works

upper vapor
#

live translation editing in SL Smart

#

SSSS can do that

celest thorn
#

and honestly i want alot of logs

#

for now we just have
Italian, French, Polish and Finnish

#

(french is done by me)

#

I mean if someone wants to translate hit me up in dms

#

lol

hearty shard
#

i can english translate

#

english to english

#

for only $50

upper vapor
#

can you translate to british

restive turret
#

I translate English to blublub

#

80€

hearty shard
#

lucid is typing...

restive turret
#

Now not

celest thorn
#

you can

#

but how would you translate "Loading..."?

restive turret
#

Init'in

celest thorn
#

AHHAHAHAHAHAHA

upper vapor
celest thorn
#

let me find some loading messages

#

how would you translate this?

restive turret
#

I'm not British idks

celest thorn
#

let me ask chatgpt

#

"Desynchronisation is deliberate."

upper vapor
#

After careful consideration, we ought to include lack of synchronisation at certain points in time...

celest thorn
#

Honestly

#

i might add it as a joke

#

many jokes languages

#

just for the fun

upper vapor
#

cat language (mc ref)

#

pirate language

celest thorn
upper vapor
celest thorn
#

uwuify

hearty shard
celest thorn
#

"Wewease Mwe!"

#

AHHAHAHAHHAHA

upper vapor
celest thorn
#

it should be Release Me!

upper vapor
#

unfortunately i can read

#

and understand

celest thorn
#

AHAHHA

#

i love ai

celest thorn
#

take your pirate

upper vapor
#

should be

#

physics arr held...

celest thorn
#

im having so much fun

upper vapor
#

you can just string::Replace for UwUlang

slate flume
#

I stole it

#

What's funny is

#

Iirc I also stole that gif from you lmao

#

I've gone full degenerate

celest thorn
celest thorn
hearty shard
hearty shard
#

they do .ToArray() always no ?

upper vapor
celest thorn
celest thorn
#

i remember it was there

#

imagine maro waking up

hearty shard
#
 public static T GetRandomValue<T>(this IEnumerable<T> enumerable)
        {
            if (enumerable is null)
                return default;

            T[] array = enumerable.ToArray();
            return array.Length == 0 ? default : array[Random.Range(0, array.Length)];
        }
celest thorn
#

and the first thing she sees is me

hearty shard
#

you mean this?

#

yeah thats exiled

hearty shard
#

but thats still .ToArray()

#

and isnt the code ax shown

celest thorn
#

roblox terms

upper vapor
#

zero...

celest thorn
#

what?

upper vapor
#

you can just copy the text

celest thorn
#

Ok

upper vapor
#

instead of making a 10000 line long embed

hearty shard
upper vapor
#

my bad

celest thorn
hearty shard
#

like how poly

upper vapor
#

cap able

#

are you able to cap

celest thorn
#

"Mamma mia, almost ready!"
in pasta terms

#

im dying

upper vapor
#

sob

celest thorn
#

loading got translated in
"Boiling… Loading…"

#

yo axwabo

#

wanna try something

upper vapor
celest thorn
#

how accurate it is?

upper vapor
#

ellenőrzőpont 😭😭

#

szob emoji

celest thorn
#

i wonder how accurate chatgpt is at translating

upper vapor
#

decent

celest thorn
#

if you join a server would you understand?

upper vapor
#

yes

celest thorn
#

this are much more complicated so

celest thorn
upper vapor
#

replace hub with elosztó

celest thorn
#

I mean i wasn't planning to put hungarian

upper vapor
#

and there's no plural

celest thorn
#

crazy

#

i've just put plural for languages like Italian, French and english that have Seconds and Second

upper vapor
celest thorn
#

nah wondering how accurate it is

#

because with italian it was 100%

upper vapor
#

chatgpt is a lot better than google translate

celest thorn
#

i might outsource some translation for some harder languages to find

upper vapor
#

95% maybe
there are some weird feels in places

celest thorn
#

with internal people

unique crane
#

Everything is better than google translate xd

celest thorn
upper vapor
celest thorn
#

We have femboy language, baugette language, pasta language and Alcholics language (Finnish)

upper vapor
#

"femboy language"

#

WAIT

celest thorn
#

i mean polish is the best way to describe it

upper vapor
#

WAIT WAIT

celest thorn
#

?

upper vapor
celest thorn
#

Honestly

#

Nah

#

like bars where full asf

#

every night

#

Someone knows how the region sent by central server

upper vapor
#

can't you just

#

add a setting for that

#

and add a hint to show how to change the language

#

or text objects

upper vapor
#

banned

#

terminated

slate flume
#

I speak American, thank you very much OhReally

upper vapor
#

freedom

#

🦅🦅🦅🦅

slate flume
#

I bleed red, white, and blue 🫡 🛻 🍻 🦅 🇺🇸

upper vapor
#

french?

slate flume
restive turret
#

Lmao

restive turret
#

Me when i visit a Hungarian government website

upper vapor
hearty shard
restive turret
#

No shit

slate flume
restive turret
#

I trying to be against this group that controls what games is available on platforms

hearty shard
restive turret
#

And this would be the official way

celest thorn
slate flume
#

I hate inclusivity

celest thorn
#

But i know how to speak

upper vapor
#

at this point you can just send a broadcast in all languages

upper vapor
#

i'm not sure if you can use aut data/IP for that
northwood answer

celest thorn
#

And nw provides me with it

#

I just don’t save it so everytime you join you need to apply it

upper vapor
#

you can just use geolocation

#

🤯

celest thorn
upper vapor
#

yeah

celest thorn
#

Ig i could do

#

DNT manual

upper vapor
#

why would region be allowed then

celest thorn
#

Non dnt automatic

celest thorn
upper vapor
celest thorn
#

Im just saying its used for geoblock so ig it makes sense i cannot use it for that

upper vapor
#

8.2. IP addresses of players, the secret part of the authentication token, and the preauthentication
token, must be treated as confidential data and never be disclosed publicly.

upper vapor
#

i guess you can geolocate with that

celest thorn
#

Its such a unique problem

upper vapor
#

better ask security to make sure

celest thorn
#

Yea most likely i will

#

Or else far easier

#

A message just sent the first time you join “you can change your language if you want”

celest thorn
#

Or everytime you join

#

Idk

#

Its such a unique concept on sl

#

That i’ve never seen it

upper vapor
#

walk into the room when you first join with the flag of your language

#

like 106 PD toomuchtrolling

celest thorn
#

That would be a nightmare

#

To update

upper vapor
#

i wonder if texttoy can render flags properly

restive turret
#

Ofc

#

Set the size of the pixels like big

#

100

celest thorn
#

But the problem are alot

#

I just prefer having a command

#

Or straight up something in SSSS

spare zodiac
#

why when I try ReferenceHub.aspectRatioSync._savedHeight I get an error that I cannot accsess this value?

upper vapor
#

unsafe code

hearty shard
#

oh yeah

#

unsafe code kek

upper vapor
#

why are you using _savedHeight though

#

does the client send its actual resolution?

spare zodiac
spare zodiac
#

why the fuck is YScreenEdge static?

restive turret
#

Ask nw

spare zodiac
#

@NW help :(

hearty shard
spare zodiac
celest thorn
#

Nw please give us hl3

upper vapor
celest thorn
upper vapor
#

aspectratiosync

spare zodiac
#
[2025-07-24 15:43:02.968 +02:00] [ERROR] [Exiled.Events] Method "OnVerified" of the class "FunctionalServerSystem.Modules.PointsShow.EventHandler" caused an exception when handling the event "Exiled.Events.Features.Event`1[[Exiled.Events.EventArgs.Player.VerifiedEventArgs, Exiled.Events, Version=9.6.1.0, Culture=neutral, PublicKeyToken=null]]"
                                 System.FieldAccessException: Field `AspectRatioSync:_savedHeight' is inaccessible from method `FunctionalServerSystem.Modules.PointsShow.EventHandler:OnVerified (Exiled.Events.EventArgs.Player.VerifiedEventArgs)'

                                   at Exiled.Events.Features.Event`1[T].InvokeNormal (T arg) [0x00028] in <0bb51ea693474e0b9e0e3cc40480a7c1>:0
upper vapor
#

exiled

spare zodiac
hearty shard
#

"this shit" 😭

#

literally 1 project setting

upper vapor
#

did you know

upper vapor
#

that _savedWidth and _savedHeight aren't know by the server

restive turret
#

🤯🤯

hearty shard
upper vapor
#

"aspect ratio sync"

#

i wonder what that does

#

sends the exact width & height

#

nuh uh

hearty shard
#

its for Network\u003CXScreenEdge\u003Ek__BackingField

spare zodiac
hearty shard
spare zodiac
#

guys!!!!!!!!!!!!!!
[2025-07-24 15:46:25.507 +02:00] [INFO] [FunctionalServerSystem] _savedHeight 0

#

you wouldn't believe it

hearty shard
#

now what will you do with 0

spare zodiac
#

nothing it's useless

hearty shard
#

idk why Y isnt synced like X is

#

but ig it works

spare zodiac
#

the aspect ratio gives you float like 1.777777778 meaning 16:9, but how the fuck do I get that

unique crane
#

AspectRatio property is synced to the server

spare zodiac
unique crane
#

and these 2 other

upper vapor
#

y can't be larger than x

#

y don't you support shoutube shorts resolution

#

yes i spelled it shoutube

unique crane
#

N o

#

Short videos sucks

#

All you get from them is goldfish attention span

upper vapor
unique crane
#

1KB ram

celest thorn
#

So sad

unique crane
#

YOu want SL to run on phone?

spare zodiac
spare zodiac
unique crane
#

crazy

celest thorn
#

Imagine on a fucking phone

#

I still laugh

#

My pc can run cyberpunk, doom dark ages at 180 fps 1080 raytracing but not sl

unique crane
#

Maybe if we had budget in millions

spare zodiac
#

SL is heavy on CPU

upper vapor
#

maybe if it wasn't unity

spare zodiac
celest thorn
hearty shard
#

or am i crazy

upper vapor
celest thorn
celest thorn
celest thorn
#

But genshin is optimized

unique crane
#

That game still exists?

celest thorn
unique crane
#

crazy

celest thorn
#

Honestly sell sl to some chinese company

unique crane
#

💀

celest thorn
#

Wait sl is in china

spare zodiac
#

yea

celest thorn
#

Does sl send data to the chinese government

hearty shard
#

david r u ready to become french

unique crane
#

what the fuck are you yapping

spare zodiac
celest thorn
#

Does sl without wifi be able to connect to the chinese servers

#

Does sl scan my eyes?

unique crane
#

I think your going crazy

celest thorn
unique crane
#

no

spare zodiac
#

david is also chineese!

unique crane
#

See thats the reasonw hy

#

I dont watch youtube shorts

#

tiktok

#

or instagram

upper vapor
#

based

celest thorn
#

Is hubert chinese?

spare zodiac
hearty shard
#

hubert is a femboy

#

huge difference

upper vapor
hearty shard
unique crane
#

Man Ive seen videos them talking about guns too

#

they are old and clueless

upper vapor
#

if i pull the trigger, will the gun fire?

unique crane
#

Big scary black AR 15

#

(it has aimbot)

spare zodiac
unique crane
#

Thats not even the new keycard

#

get out

spare zodiac
#

no that is the sticker forever forgotten on Exiled's discord

hearty shard
spare zodiac
#

ofc u did trollface

unique crane
#

Is Eve a femboy?

hearty shard
unique crane
#

You didnt say no

hearty shard
#

well

#

that implies im a dude

#

which is

#

kinda

#

transphobic

upper vapor
#

kinda humanphobic

#

what am i saying

spare zodiac
#

jobophobic

unique crane
#

Kinda phobophobic

upper vapor
#

xd

#

david can we get custom rolloff curves for audio toys

#

cuz unity is stupid

spare zodiac
#

david can we david?

#

we david can

upper vapor
#

i hate unity

hearty shard
#

wat

upper vapor
#

it doesn't fade out entirely

#

so after 10 units it's still audible until like 500 units if you use the default logarithmic curve

#

SL culls speakers but unity doesn't do that natively

hearty shard
#

its kinda like how 173 tantrum audio works

upper vapor
#

but i want the sound to disappear after 10 units
yet it DOESN'T

hearty shard
#

yeah

#

im just saying 173 tantrum audio has same issue

#

probably other audios too

upper vapor
#

ah

hearty shard
#

tantrum can be heard from across the map

#

through zones

spare zodiac
# upper vapor

it's like the one curve that goes infinitely lower, but never touching the other one

upper vapor
#

that's a uh

#

math

slate flume
#

So

#

What the hell are ItemTierFlags

unique crane
#

Enum to describe a rarity of item

#

used by disarming system & 106 pocket dimension

slate flume
#

Interesting

#

I'm reading the 106 code rn

#

If you know off-hand, how are tier flags used?

#

Like what do they affect for disarming and pocket dimension?

unique crane
#

You cant disarm someone while they are holding rare or more item

#

and the more rare the item is

#

the more likely it is to get out of pocket dimension

slate flume
#

That's

#

So cool

pallid galleon
slate flume
#

The rarity system is weird

#

COM-18 is on the same level as FR-MG-0 and SCP-127

pallid galleon
#

okay I'm glad I did my own system now

slate flume
#

Literally haha

#

I'm gonna have to do my own system as well for a feature some players are asking for

#

I wanted to see what was available in the code

barren pasture
#

Is the zombie attack not a UNIVERSAL damage handler?

hearty shard
#

or smth

#

it uses AttackType.Scp0492

unique crane
#

^

slate flume
#

Soooo guys

#

I learned

#

If you have PlayerHurting and then say ev.IsAllowed = false; and then hit the overcharge button, 079 doesn't die

#

💀

hearty shard
#

me when not letting 079 die

celest thorn
#

me when 079 just takes damage

slate flume
#

That's probably why

celest thorn
#

just check if damagehandler is RecontainmentDamageHandler

#

or the death translation is Recontained

#

ig should be easier

slate flume
#

I could just patch it

celest thorn
#

its just a line

#

bro

#
if(ev.DamageHandler is RecontainmentDamageHandler)
    return;
slate flume
#

I know but

#

I'd have to go to like 15 quadrillion different files and change it

celest thorn
slate flume
#

SO MUCH

celest thorn
#

Modules?

slate flume
#

So much shit

slate flume
celest thorn
#

i mean what i do with custom items is just use an abstract

#

and check from there

slate flume
#

I do too

celest thorn
#

so do events that are virtual method

slate flume
#

I do

celest thorn
#

🧠

slate flume
#

😁

restive turret
#

SKILL ISSUE

slate flume
#

I have like 50 custom items

celest thorn
#

do an internal

slate flume
#

Only like 15 of them modify onplayerhurting

#

And they all do different clauses and things

celest thorn
#

and the internal check and then calls the virtual

slate flume
#

I have no reason to put it in the abstract class

slate flume
#

Bro

#

You're telling me for every event that I should put it in the abstract class?

celest thorn
#

Not everything...

#

i do for the most basics

#

stuff

slate flume
#

OnPlayerHurting is used by less than half of my items

celest thorn
#

like picking up

#

etc..

slate flume
#

Same

#

The stuff I use all the time I have in the abstract class

true sierra
#

exiled is mildly pissing me off Zer0

slate flume
#

Putting it in the abstract class does nothing for me

restive turret
slate flume
#

Because majoritarily they all do different shit

true sierra
slate flume
#

Some of them increase damage, some do crazy shit, some heal

celest thorn
slate flume
#

@celest thorn There is no point in abstracting that

celest thorn
#

do like everyone else here

slate flume
#

The only common denominator is the initial check

celest thorn
hearty shard
celest thorn
#

that already simpliefies it

true sierra
celest thorn
hearty shard
#

LUCID

true sierra
#

its custom roles specifically that piss me off

celest thorn
#

and do in your plugin a check for that

mild ice
true sierra
#

TryGet returns none

celest thorn
#

when damage is done

true sierra
#

oh hi lucid lol

hearty shard
celest thorn
slate flume
hearty shard
#

probably

slate flume
#

That's so much extra work

#

For what

#

You're telling me to cram 15 quadrillion things into my abstract class for a small subset of items

true sierra
slate flume
#

That's dumb

worthy rune
#

not sure how you can port something that uses exiled custom roles, seems like alot of work

true sierra
#

does labapi come with its own custom roles system?

worthy rune
#

no

mild ice
true sierra
#

okay lol

hearty shard
#

you just gotta make ur own

true sierra
#

NOOO

hearty shard
hearty shard
#

i mean thats what i did for my own

slate flume
mild ice
hearty shard
#

and now here i am rewriting it after ages to be not stinky

celest thorn
#

its so easy

hearty shard
slate flume
celest thorn
#

let me take as an example sl

slate flume
#

It doesn't matter that it's easy

slate flume
#

It matters that it's unnecessary

true sierra
#

i just need exiled ppl to fix
CustomRole.TryGet(player, out var CustomRoles)
then im good

celest thorn
#

its more scalable

#

for the future

#

always think it like this

slate flume
#

I'm not a game dev

#

I'm a plugin dev

#

This is one small server

#

I don't need to make everything scalable

#

This plugin is private

celest thorn
#

that doesn't mean

#

you shouldn't

#

future you will thank you

#

don't become pirate software

slate flume
#

Bro you sound insane

#

You're saying create an interface to do a damage multiplier in my abstract custom item class so I can abstract the hurting event for like 4 items and because it'll be "Easier for future me"

#

It's literally

#

4 lines right now

celest thorn
#

Its litteraly so easy

#

i don't understand why its such a problem

slate flume
#

Because it's unnecessary

#

If I follow that modo I'll have like 15 interfaces for all my shit

#

I don't need that

celest thorn
#

you are complaning that you have 15k stuff

slate flume
#

I'm not complaining

celest thorn
#

and you can simplify like already 4 of them

#

so

slate flume
#

I can simplify them by 1 line

#

By creating an interface

#

And an abstract

#

That ends up being more lines

#

I feel like the point is completely going over your head

slate flume
#

If I have one custom item that heals someone you'd tell me to abstract it in an interface in case I make more

#

That's so absurd

celest thorn
#

no

slate flume
#

If I was making a public plugin sure

#

But why put in the extra work

true sierra
slate flume
#

There's little point

celest thorn
#

if its one why

#

if its 10 yes

slate flume
#

It's 4

celest thorn
#

10 is an example

#

bruh

slate flume
#

I don't have 10 custom items modifying damage

#

At least not in that way

#

Which is my WHOLE POIINT

celest thorn
#

bro 10 is an example number

slate flume
#

If I had a bunch of items that used it, I'd make it into an interface

celest thorn
#

it could be 1000000000000000000000000

#

it could be 2

slate flume
#

Cool

#

It's not

celest thorn
#

if you feel like not doing it then don't

#

im just giving you an advice

slate flume
#

My whole point is that it's unnecessary

#

But you don't get that

#

The point of abstracting is for shared behavior

#

If 5% of my derived classes use that behavior, and that 5% is not a large subset, there's no point in further abstraction

#

I think that's called what

#

I heard it somewhere

#

Shared responsibility principle or something

#

No no

#

Single-responsibility principle

#

My abstract class has the job of maintaining all the custom items, not running the specific logic for a small subset of modules

#

So it handles the spawning, giving, pickup logic, etc.

#

And then the specific unique parts are left to the derived classes

celest thorn
#

bro

#

you realize

#

you are talking alone

slate flume
#

Whatever bro

celest thorn
#

idk at this point don't do it lol

slate flume
#

If you wanna learn more about it I read a cool book for it

#

I can't seem to find where it is

celest thorn
#

honestly

#

i've never read a book

#

or seen a video regarding on how to code

#

i just learned

slate flume
#

Fair

#

I apologize for getting so heated

celest thorn
#

the only thing i've ever ready were the stuff for java like the base rules among dev

slate flume
#

That's my bad

celest thorn
#

like i was an asshole a bit :3

slate flume
#

It happens lol

celest thorn
#

ig

slate flume
#

I have like 3 things I know about for coding and the SOLID principles is one I'm proud of

#

Haha it's dope

#

This guy was fr kinda smart

celest thorn
#

im going to uni

slate flume
#

I know like nothing about C# but I know a bit about programming generally

celest thorn
#

without ever studying programming

slate flume
#

It'll be fire trust

#

You got it though

#

You're a highly competent dev

#

You've been schooling people for a long time in these chats haha

slate flume
#

Ong

celest thorn
#

im crazy stupid

#

im not competent bro

hearty shard
celest thorn
#

idk why everyone thinks so

slate flume
#

You're the GOAT you just have to believe in yourself

#

Programmers by and large love to be perfectionists

celest thorn
slate flume
celest thorn
#

im a noobie