#plugins-dev-chat

1 messages ยท Page 52 of 1

slate flume
#

Real talk

#

Lemme try it

upper vapor
#

OHHHHHHH

#

you know why?

#

the hitreg disables hitboxes temporarily

#

for the shooter

slate flume
#

Are you

#

So for real rn

upper vapor
#

yes

slate flume
#

What the fucking shit bro

upper vapor
#

so the player doesn't shoot themselves

#

raycast magic

slate flume
#

So they just

#

Make the player invincible?

#

That's so wild

upper vapor
#

for the duration of the shot being processed, kind of

#

it doesn't disable damage, it's just that the hitboxes won't be hit by physics casts

slate flume
#

What if I just

#

Nvm

#

I was gonna say kill the attacker

#

But that's dumb

upper vapor
#

bru

slate flume
#

I hate this

slate flume
#

That's insane to me

upper vapor
#

do you know a better way to ignore one exact collider when raycasting?

slate flume
#

Offset the raycast to start outside of the collider?

upper vapor
#

i guess

#

with intersectray

slate flume
#

Wait

#

What the fuck

#

I offset the explosion by an entire second

#

Still no work

#

I am going to freak out

upper vapor
#

what

upper vapor
#

at an arbitrary time

royal mica
#

you have 255 layers, just assign 1 layer to each palyer xdx

#

You never need to collide with yourself

upper vapor
#

there are only 32 layers

royal mica
#

oh

upper vapor
#

unity

slate flume
#

Oh

#

It's because when I offset the explosion

#

It does no damage

#

Gotcha

#

Lemme

upper vapor
#

what

slate flume
#

What if I hit the dummy with my car

#

I'm too exhausted for this shit

upper vapor
slate flume
#

Take #46

slate flume
#

The FF code

#

Probably broke it all

upper vapor
#

did you do calldelayed

slate flume
#

THERE WE GO

#

Fucking

#

Finally

upper vapor
#

lol

slate flume
#

I added the FF code back

#

It works now

upper vapor
slate flume
#

This is so ass

#

I can clean it a bit

#

But it

#

work

#

finally

#

๐Ÿ˜ญ

upper vapor
#

epic

slate flume
#

I always encounter the weirdest problems ong

#

Well thank you @upper vapor ๐Ÿ˜

#

Much appreciated

upper vapor
#

np

#

this was an interesting one

slate flume
#

It's nice having a place to go to figure shit out

#

๐Ÿ™๐Ÿผ

slate flume
#

I've added like 3 issues to the LabAPI GitHub because of the shit I've found

#

It's not a lot but it is for me because I started doing this shit like a month ago

upper vapor
#

the grind never stops

untold raft
#

How to check player faction

upper vapor
unique crane
untold raft
#

Yep but

restive turret
#

Least blind ServerHostClassDTroll1

#

()

#

Guuh

untold raft
#

oh right

restive turret
#

GetFaction()

untold raft
#

()

restive turret
#

Or

#

ev.Attacker.Faction

upper vapor
#

the attacker might be dead by the time the damage is dealt

untold raft
#

I checking if Attacker == null and return

untold raft
#

Player not contain Faction

upper vapor
#

it'll just check whether the damage was dealt by someone else

untold raft
#

But PlayerHurtingEventArgs not have ev.amount

upper vapor
#

not sure how that's relevant

#

get the damage handler, check if it's an AttackerDamageHandler
that contains a footprint to the attacker at the correct point in time

#

for grenades, that's the thrower

restive turret
#

R u sur

upper vapor
#

yes i'm ๐Ÿบ

untold raft
#

What with scp 018?

restive turret
#

That's a ball

upper vapor
#

still a projectile though

restive turret
#

Thrower obviously

slate flume
#

I just avoid doing shit with going into PlayerHurting or PlayerHurt for grenades

#

Just

#

Modify the damage curve

restive turret
#

Just

slate flume
#

It saves you the headache

restive turret
#

Just don'tSteamHappy

slate flume
restive turret
#

That's nice

#

However

upper vapor
slate flume
#

Now you can make half-damage grenades just by doing

slate flume
#

It looks worse

restive turret
#

Trul

upper vapor
slate flume
#

Idk I just think it looks better

untold raft
upper vapor
#

fair

slate flume
upper vapor
slate flume
#

Once it's populated, I don't run the code again

restive turret
#

Or whatever

slate flume
#

Oh

#

I use it in one spot for a grenade launcher

restive turret
#

I steal it and gonna do something good with it

#

Sometimes

#

You work while I sleep ClassDTroll

slate flume
#

Lmao real

#

I lurk on these forums all the time to find solutions and ideas

#

Whenever I have something I reuse in a bunch of classes I throw it into my Resources class

restive turret
#

Can you find deez nuts

slate flume
#

It's like 500 lines

restive turret
#

Sorry

#

U r new here

slate flume
#

All good lol

restive turret
#

Nvm lvl 10

upper vapor
slate flume
#

It's filled with dumb shit

restive turret
#

Like 1500

#

Or 8000

upper vapor
slate flume
#

Oh wait

#

You right

#

I was lazy

#

๐Ÿ˜ญ

#

Lemme fix

upper vapor
#

should've used spans smh

slate flume
#

No idea how to use spans

upper vapor
#

introduce variable

#

?

slate flume
upper vapor
#

guy

slate flume
#

WOAH

#

Cool

restive turret
#

Send as ref

slate flume
#

But what if I want to view the truncated name and the original

#

Tbh I don't believe I do any processing anywhere after I run TruncateName besides throwing it in the middle of a leaderboard or spectator list or some shit

#

So I don't wanna do ref for that

upper vapor
#

imagine

restive turret
#

Image

upper vapor
#

if there was a source generator that created an interceptor for these uh uhhhhh

#

string interpolations

#

and used stackalloc

#

to createa a buffer for the whole string, then it tostring()'ed it

restive turret
#

Idk the nsme tho

upper vapor
#

that's

#

different

restive turret
#

Ye

upper vapor
#
using InterpolatedParsing;

List<int> numbers = null!;

InterpolatedParser.Parse(
    "Winning numbers are: 5,10,15,25",
    $"Winning numbers are: {numbers:,}");

List<string> beans = null!;
InterpolatedParser.Parse(
    "Bean list: black, coffee, green",
    $"Bean list: {beans:', '}"); // Add single quotes to support whitespace

this is so good

restive turret
#

Ye

upper vapor
restive turret
#

Not my pic

#

Me when i see someone throw multiple 018 at me

upper vapor
#

*ball

restive turret
#

Anyway, can we have player.Throw(Item,bool)

restive turret
covert flame
#

^

restive turret
#

I still dont get your explanation sorry

restive turret
#

Oh

#

Check how its done inside the server

covert flame
#

how what's done?

restive turret
#

The hiding the tag

#

Probably inside ServerRoles

covert flame
#

I'm sorry, but I'm really tired right now and have got no clue what you're talking about O.o

restive turret
#

Server code contains the functions that makes your tag hidden, search it and try understand why it removes from it.
I highly think because the tag you make is not inside the ServerGroups List and can't see the hidden version of it

covert flame
#

Where is the ServerGroups List?

restive turret
#

I dont know not on pc reverse where you set the name of your group / tag

#

In ServerRoles

covert flame
#

Like where you define the roles, in the remoteadmin config file?

restive turret
#

Ahhh nvm

#

Is the bronzerole / bronzegroup is in your RA config?

covert flame
#

Yes, both of those roles are in the remoteadmin config file

untold raft
#

Exist any plugin with SS keybind? I need it for example

unique crane
icy knoll
restive turret
#

Because it's not very good or very maintained ClassDTrollHD

icy knoll
icy knoll
#

secretapi v2 when?

restive turret
#

first FreakyAPI

#

Where you control AI

hearty shard
#

i didnt really wanna release 2.0.0 just for breaking changes on settings

#

๐Ÿ’”

restive turret
#

You already doing breaking changes so

#

Not really much tbh

#

Also when fix for fakeSync

#

@hearty shard

hearty shard
#

what

#

is it broken ?

restive turret
#

Ye

#

Yours probably

hearty shard
#

what

#

wdym "probably"

restive turret
#

AdminToys

hearty shard
#

thats

#

not my code

#

i only have fake rpc

restive turret
#

Ah

hearty shard
#

admintoy position is a sync var

#

not rpc

restive turret
#

So no FakeSync

#

Ah ye you dont have that

#

nvm then

#

Sorry

frank flicker
#

Just got home to try some things and this worked when building from the terminal Woot
I've still got a lot of fiddling and convincing to do, but at least I know the end goal is achievable now. Thanks for the help everyone :>

#

only like 2 more (unrelated) things to figure out and I'm done with windows for good slugclose

restive turret
#

Can't help with the Rider specific stuff since I aint using it

#

Btw funfact

#

You can make a .net8/9 csproj and edit the .csproj file to be net48

frank flicker
#

I saw that online somewhere, will probs try that first

untold raft
#

Scp Roles doesn't have wrappers?

hearty shard
#

no role does

frank flicker
#

still working on that

icy knoll
untold raft
#

Or Active camera

hearty shard
hearty shard
restive turret
hearty shard
#

@untold raft

icy knoll
#

as easy as that

restive turret
#

Uhhuh

icy knoll
#

for xp, use the thing eve sent above

untold raft
#

Super easy Troll_Face

hearty shard
#

also

#

scp079Role._curCamSync._lastCam

#

Scp079Role has it by itself

icy knoll
#

Scp079GameRole::CurrentCamera for camera :3

hearty shard
#

oh

restive turret
hearty shard
#

lmao

icy knoll
#

silly eve giving hard methods for no reason

hearty shard
#

oh

untold raft
#

How to check if camera is on surface

hearty shard
restive turret
#

Idk

untold raft
#

just FacilityZone.Surface

restive turret
#

Iidk i dont see ingame code rn

hearty shard
#

im checking if current cam has it

untold raft
#

damm thank you

royal mica
#

Also the Env vars in Rider

frank flicker
#

oh yep, ok I tried that but I placed it in the wrong folder. Moved it to the right one and it works now

royal mica
#

๐Ÿ˜„

frank flicker
#

it working now ColonThreeCat

frank flicker
restive turret
#

Nice

#

GG!

#

Now you can see the csproj and understand whats inside it

upper vapor
hearty shard
icy knoll
#

looking into CustomDataStore stuff, because StoreInstances is private, how am I supposed to be able to get the players with the stores? I dont want to add a store to every player if I don't have to...

royal mica
#

If you get a Playdr frpm the store it should create them

icy knoll
#

and I dont want to do that, I just want to get ๐Ÿ˜ญ

royal mica
#

Huh?

upper vapor
icy knoll
#

atleast not at first glance

#

no room identifier

royal mica
#

Why ontl get, not create?

upper vapor
royal mica
#

Imo, use custom data store implentation

icy knoll
#

because I am doing a foreach on Player.ReadyList, I don't want to use memory if I don't need to.

worthy rune
#

how big is the custom data store?

icy knoll
#

controls hints via ruei

#

and the classes in there contains lists and stuff

#

it's like small amounts of memory id say, but still

#

micro-optimisations

#

lol

worthy rune
#

yeah i would say so, memory is usually cheap these days

#

on VPS's that is

icy knoll
#

yeah

#

but data stores are very useful

#

thanks to the person who decided to make them btw

worthy rune
#

i think theres a PR for data store Get, so you will have to wait until then

icy knoll
#

okie

royal mica
#

You could also fet h via reflection xdx

upper vapor
icy knoll
#

also i just found out that CustomDataStore::Owner exists... ive been making my own Player field ๐Ÿ˜ญ

upper vapor
#

bru

icy knoll
#

what

#

smh

#

also, this plugin very close to releasing

#

so i hope my code is good...

restive turret
#

Hope

icy knoll
#

yes

#

someone will rip into me if not ig

restive turret
icy knoll
#

ive been using my members as test dummies and fixed loads of issues i would have never spotted

upper vapor
#

i just hate seeing this Heartbreaking

#

stupid path

#

not your fault but like

#

ugh

icy knoll
#

i get you

#

yeah

upper vapor
#

lumi...

icy knoll
#

what

#

oh no

upper vapor
#

do you or do you not reformat your files

#

eve would kill you

icy knoll
#

i usually let rider do it for me

#

like whenever i finish a line of code or smth

#

usually reformats for me

upper vapor
#

pro tip

upper vapor
icy knoll
#

i dont commit with that ๐Ÿ˜ญ

#

is there a way to reformat a whole code base in 1? ๐Ÿ˜ญ

upper vapor
#

right click sln

#

reformat code

icy knoll
#

done

hearty shard
#

hm

#

idk

upper vapor
#

Base.Room

hearty shard
#

sh

#

i saw

#

yeah

upper vapor
#

lol

icy knoll
#

pushed the code cleanup

hearty shard
#

i searched for room it didnt show

icy knoll
#

lol

hearty shard
#

idk

icy knoll
#

hopefully that looks better now...

upper vapor
icy knoll
#

ty ax again :3

hearty shard
#

Oh

#

ax

#

i know why

restive turret
#

Skill issue

hearty shard
#

its interactable base

#

not just camera

#

makes sense

hearty shard
upper vapor
upper vapor
restive turret
hearty shard
#

not true

restive turret
#

Yet

hearty shard
#

ur fired

restive turret
#

Nuh uh

icy knoll
# upper vapor np

im now honestly tryna figure out ways to optimise my code as idk if i did anything in a very unneeded way or not ๐Ÿ˜ญ

upper vapor
#

chatcommand

#

oh

#

OHHHHH

#

nvm

#

smart

#

okay

hearty shard
upper vapor
hearty shard
#

its nullable

#

but the type doesnt indicate it as

icy knoll
#

because i dont have nullable on

hearty shard
upper vapor
#

that would lead to breaking changes

icy knoll
#

im not using nullable ever, i hate it sm ๐Ÿ˜ญ

upper vapor
#

for new codebases i use nullable though

hearty shard
icy knoll
#

what ๐Ÿ˜ญ

hearty shard
#

why

#

if something can be null why not indicate it as so

upper vapor
#

Component:45
you could use TryDequeue

icy knoll
upper vapor
#

Queue::TryDequeue

#

should be an extension somewhere

icy knoll
#

bruh i didnt know the class Queue existed

#

I was using dictionary

hearty shard
#

๐Ÿ˜ญ

hearty shard
#

99% its not an extension

#

and is just part of the class

#

idk though

icy knoll
#

how do queues work ๐Ÿ˜ญ

hearty shard
#

its like

#

stack

upper vapor
hearty shard
#

but not really

#

you add to a queue

upper vapor
#

i don't think she understood anything from that lol

hearty shard
#

and then you dequeue

#

and you get that value

upper vapor
#

think of tesko

#

enqueue
dequeue

#

first item in, first item out

hearty shard
#

think of it as a super market queue

upper vapor
#

first to go in line gets out first

hearty shard
#

you enter queue

#

you get helped

#

you leave queue

#

Troll

icy knoll
#

yeah but i need a queue for the player and the list of items they have

#

i need to save their list of items

#

do I just put queue on their list of items?

#

because it's technically not a queue in a supermarket

#

as everyone can have a msg at the same time

upper vapor
#

yeah

icy knoll
#

just not all their msgs at the same time

#

so idk

upper vapor
#

buteach player has a queue

icy knoll
#

like this ig?

upper vapor
#

ye

icy knoll
#

so, do I continue to use FirstOrDefault to get the next item in the queue?

upper vapor
#

btw you should probably update this so there's an OnDestroy method that does the cleanup
and in Start you delay the call to _toy.Destroy
the OnDestroy method shouldn't destroy the toy itself

upper vapor
icy knoll
hearty shard
upper vapor
icy knoll
upper vapor
#

yes

icy knoll
upper vapor
#

this also cleans up toys that are destroyed on scene unload

upper vapor
#

but you do calldelayed

icy knoll
#

yes

#

but like

#

when i add an item to a queue

#

but call delayed isn't going on

#

how do I like know whether a msg is going or not?

#

๐Ÿ˜ญ

upper vapor
#

uh

icy knoll
#

ig I could use the components list?

upper vapor
#

brainfart moment

icy knoll
#

and see whether one is active

upper vapor
#

ummmm

icy knoll
upper vapor
#

how about

#

Dictionary<Player, (Component, Queue<string>)> Components

icy knoll
#

we're adding a tuple now?

upper vapor
#

for faster access

#

i can't believe there's no tryremove for dictionaries

#

honestly with all this yapping i could just PR the changes lol

icy knoll
#

please ๐Ÿ˜ญ

#

because im probably gunna fuck this up

upper vapor
#

oh we even got credit @restive turret

icy knoll
#

ofc

#

i legit couldnt have done it without you 2

hearty shard
#

.Remove

#

is a bool

upper vapor
#

yeah but

hearty shard
#

Remove is the try trolling

upper vapor
#

then you don't geth the removed value

hearty shard
#

well

#

thats a you issue

#

you dont need it

restive turret
upper vapor
hearty shard
#

nuh uh

#

i said no

restive turret
#

I'm blind

upper vapor
upper vapor
icy knoll
#

haha

#

fair enough

#

ima wait a bit

#

see if my members find any bugs

#

probably not, patched a billion by now

#

but rather be safe than sorry

random scaffold
#

typical nw moment

unique crane
hearty shard
#

@unique crane any possibility of filmmaker role receiving more than 20 seconds record time

unique crane
#

I have never ever used that role in my life xd

hearty shard
#

well

#

you should

#

now

upper vapor
#

the keyframe editing is

#

painful

#

also no splines

#

which is unacceptable

subtle ravine
#

I tried to use it
(idk how)

#

someone teach me

limber silo
#

unplayable game

subtle ravine
upper vapor
upper vapor
#

the code is

#

not pretty

icy knoll
#

finally released the plugin

#

ugh

#

yippie tho!

restive turret
#

Yippe

teal junco
#

Filmmaker role is holy dogshit

#

i hope it gets a buff someday

#

because its functions are really unique

#

its very underutilized

#

once I had an argument with a guy because i asked him to use filmmaker role for his video, and he said it was too much work and started ignoring me and being dismissive

hearty shard
teal junco
#

i mean, yeah, but its not unusable and it looks way better

#

and basic planning mitigates most of its downsides (a filmmaker cannot improvise movements, cannot hear voice chat)

upper vapor
teal junco
#

idk ๐Ÿคท its better than using FPS controller where i can also tell exactly when the cameraman changed directions, and i can see the exact sensitivity he has on, and its just overall very obvious im looking at noclip footage

plain gazelle
#

So Locker.Loot is a LockerLoot array, but as far as i see, it doesnt hold any information or references to the held/generated pickups?

hearty shard
#

And thats it

#

It doesnt rly need to hold reference to it

hearty shard
#

Well

#

I said doesnt need to

hearty shard
plain gazelle
#

Chamber.Base also has a List of "ToBeSpawned" ItemPickupBases

hearty shard
#

whats the code behind it

hearty shard
#

Oh yeah

plain gazelle
hearty shard
#

okay

#

i lied when i said doesnt need to lol

plain gazelle
#

Its fine

hearty shard
#

it creates the the pickup server side and stores it ig

#

i thought it stored the ItemType

plain gazelle
#

Hm, does Base.Content already hold the unspawned Items too?

hearty shard
#

try

grand flower
plain gazelle
grand flower
unique crane
grand flower
#

rent from the pool

#

no return

#

or i'm guessing you manually return it later (but that's dirty af never do it)

unique crane
#

Well thats your issue if you dont return it later

#

And in that case

grand flower
#

That's like, bad architecture though

unique crane
#

GC clears it

upper vapor
#

me when
<remarks>returns a pooled list</remarks>

grand flower
#

does it

unique crane
hearty shard
upper vapor
#

i hate it

hearty shard
#

it returns to GC

#

And is deleted from memory

grand flower
#

so

#

what's the point

#

of the hash set pool

#

if it's going to be GC'd regardless

upper vapor
#

pooled objects are only used to reduce initial allocation

unique crane
#

No it wont be returned if you dont do it

hearty shard
upper vapor
#

clearing a set/list is faster than creating a new one

hearty shard
#

If you return to pool

#

Its still stored

#

In your list

#

Its not unused

grand flower
#

yeah I know that, just wondering why use a pooled hash set in this scenario then

hearty shard
#

so its not cleared by GC

grand flower
#

you're gonna have to re-allocate down the line if you just let it be GC'd

hearty shard
unique crane
#

Why is he doing Base.Content.ToArray()

unique crane
grand flower
#

So either, you return it, or you forget to and it gets GC'd

plain gazelle
grand flower
#

in both scenarios it's bad design

unique crane
plain gazelle
#

And im trying to figure out how to separate loose pickups from pickups in lockers

upper vapor
#

but at that point you can use RemoveAll

unique crane
#

h

#

Oh

plain gazelle
#

So my plan was cloning Pickup.List and going through them all or sth and check if they exist in a Locker? idfk im just trying things ._.

upper vapor
#

or RemoveWhere on a set

grand flower
unique crane
#

IIII dont think so

hearty shard
upper vapor
#

class PooledHashSet<T> : HashSet<T>, IDisposable toomuchtrolling

unique crane
#

but if you want you can make issue on labapi github

hearty shard
#

.toArray kinda stinks

grand flower
#

Is that LabAPI code

unique crane
#

Cause like

hearty shard
#

you could IEnumerable and yield return trolling

plain gazelle
unique crane
#

in some cases

#

Like GetBannedPlayers()

grand flower
#

There's like

#

no docs right now

hearty shard
grand flower
#

how are we supposed to know we have to return it

hearty shard
#

Use the nuget

#

nuget package includes docs

grand flower
#

Right, have to use the nuget, otherwise there's no docs

hearty shard
#

same with exiled

#

and like

#

yeah

upper vapor
#

you have to use nuget (it's outdated) YIPPEE

grand flower
upper vapor
#

JESUS

#

wakey wakey

grand flower
#

Any kind of API that requires me to return something without explicitly needing me to, or telling me to, is like, bad design

plain gazelle
# unique crane Why

That is decompiled code from SL :c
From LabApi.Features.Wrappers.LockerChamber

grand flower
#

I'd rather it crash than silently fail

upper vapor
grand flower
#

or well

#

silently misuse it

upper vapor
#

bruhhhh

plain gazelle
upper vapor
#

what do you mean by loose items

#

i guess on waiting for players you can cache items in lockers

unique crane
upper vapor
#

not many people will see "pooled" or understand it tho...

unique crane
#

Well

plain gazelle
#

<- doesnt understand what a pooled list of players means

unique crane
#

in worst case its getting gced

plain gazelle
#

we love c# gc yippeee
i would never survive c++

unique crane
#

We can look into how to tell devs what that is

#

in some docs

upper vapor
#

void GetCurrentSpectators(List<Player> results)

plain gazelle
#

TF2-dev-type conversation here fr

grand flower
#

IMO anything returned from a method shouldn't be pooled

#

do what Axwabo does with out results

#

let the caller handle pooling

plain gazelle
#

Stuff not in an enclosed container

upper vapor
#

ohhhhh

plain gazelle
#

.w.

upper vapor
#

make them a hashset

plain gazelle
#

<- doesnt know what a hashset is

#

.w .

upper vapor
#

a list with unique items basically

#

can't have the same thing twice

unique crane
plain gazelle
#

alr i get you tho

upper vapor
#

you can put the uh
locker pickups in one set, then "loose" pickups would be all pickups except the ones in lockers
sets have ExceptWith

plain gazelle
#

Ye

#

I get confused by your last 5 words

true cedar
plain gazelle
#

Neat ^^

#

Does this make sense >.>

true cedar
#

no

#

wait yes

upper vapor
#

lmao

upper vapor
true cedar
#

i thought UnionWith returned a new hashset for a sec

upper vapor
#

you could add all pickups to loose at the start and exceptwith in the locker loop

#

that would eliminate the last foreach

plain gazelle
#

Ah so the other way around

#

?

#

ItemsInLockers.ExceptWith(ItemsLoose);

upper vapor
#

a.ExceptWith(b) removes b from a

plain gazelle
#

x.x

#

Thank you

hearty shard
#

Guys.....

true cedar
hearty shard
plain gazelle
#

beautiful?

#

^^

hearty shard
#

uhhh

#

nah pai isn that

plain gazelle
#

WOA

#

rude

upper vapor
unique crane
#

Meanwhile Eve sending me gif that she didnt even read the text on

hearty shard
#

I THOUGHT IT WAS FOR THE FOREHEAD THOUGH

#

YK THE TOP OF YOUR HEAD

unique crane
#

Hmm

#

still funny as hell when you realized

hearty shard
#

๐Ÿ’”

unique crane
hearty shard
#

I HATE YOU

unique crane
#

Hate me?

#

You sent that

#

not me

hearty shard
#

i hate you...

unique crane
#

I hate you too :3

upper vapor
#

the power of friendship ๐ŸŒˆ

upper vapor
hearty shard
upper vapor
#

...

#

this

sinful bronze
#

Pong

hearty shard
#

However

#

goofy ass word

#

So ill defenestrate you

upper vapor
upper vapor
hearty shard
#

...

upper vapor
hearty shard
upper vapor
#

ominousifier

restive turret
plain gazelle
#

Using those weird x = bla => thingy ma bobs, would it be possible to easily filter out null refs out of a hashset?

#

My beginner ass would make a new empty HashSet, foreach through the full one and individually check for nulls and add valid entries to the new one

#

._.

upper vapor
#

it's called a lambda expression btw

true cedar
plain gazelle
#

ooooo wait i read online that since HashSets cant contain multiples, even nulls apparently, i can "just" .Remove(null) ?

true cedar
#

NO.

plain gazelle
#

.>

true cedar
#

oh not to u

upper vapor
#

and yes you're creating an anonymous function

#

okay

plain gazelle
upper vapor
#

names are confusing

#

Pickup wrappers can't be null

#

you should remove those that are destroyed

plain gazelle
#

like thiiiiiis

upper vapor
#

nononono

#

that'll throw an exception

#

you can't modify a collection while iterating through it

#

that's why you have to use RemoveWhere

plain gazelle
#

right

#

itemsLoose.RemoveWhere(x => x.IsDestroyed);

#

?

upper vapor
#

yep

plain gazelle
#

my first time using that thingymabob

#

:3

upper vapor
plain gazelle
#

hmmmm
The medkit was found to be "in a locker", but the pills were not

grand flower
true cedar
#

im being pedantic both are valid

plain gazelle
#

it must

#

why it no work qwq

#
public static class MapItemInfo
{
    private static HashSet<Pickup> itemsInLockers = [];
    public static HashSet<Pickup> ItemsInLockers
    {
        get
        {
            if (itemsInLockers.Count == 0)
                Sort();
            else
                itemsInLockers.RemoveWhere(x => x.IsDestroyed);
            return itemsInLockers;
        }
    }
    private static HashSet<Pickup> itemsLoose = [];
    public static HashSet<Pickup> ItemsLoose
    {
        get
        {
            if (itemsLoose.Count == 0)
                Sort();
            else
                itemsLoose.RemoveWhere(x => x.IsDestroyed);
            return itemsLoose;
        }
    }
    public static void Sort()
    {
        itemsInLockers.Clear();
        itemsLoose.Clear();

        itemsLoose = new HashSet<Pickup>(Pickup.List);
        foreach (var locker in Locker.List)
        {
            foreach (var chamber in locker.Chambers)
            {
                itemsInLockers.UnionWith(chamber.GetAllItems());
            }
        }
        itemsLoose.ExceptWith(itemsInLockers);
    }
}
grand flower
#

bump

slate flume
#

Anyone know why I sometimes get ghost players in my game?

#

Every once in a while, a player drops connection with the server but doesn't die

#

It creates this like "ghost" where I can't kick them, ban them, etc. but they exist as a player

grand flower
#

Plugin bug probably

#

Check local admin logs for exceptions

slate flume
#

Another question

#

How are devs able to show hints so far off the screen?

grand flower
#

need to know if it's deterministic

#

for a project

true cedar
#

FUCK

teal junco
true cedar
teal junco
#

anyways, i would go and figure it out for you but i just closed SL and i dont wanna start it again

grand flower
teal junco
grand flower
#

if not it's fine, just a bit more stuff to save

upper vapor
grand flower
#

if i don't have to do it, i'd rather not

teal junco
#

if so i am interested in seeing what you store

grand flower
#

not at that part yet

#

working on the file format, and gonna need something to store the initial state at the start so I can apply deltas on top

true cedar
#

ucan do

#

<align=left><pos=-100> or wtv

#

along with like 2 other methods

upper vapor
teal junco
#

i probably wont finish mine, but i actually think it was really useful to me for understanding binary encoding

#

i may pick it up again at some point just as a film-making tool

#

but that's a big maybe

grand flower
#

started on ours because we wanna be able to get proof for any infraction

upper vapor
teal junco
#

i was thinking it would be a really good moderation tool

grand flower
#

and it's a fun project, albeit a behemoth with the way we're doing things

teal junco
#

and 90% of people wouldnt see it coming

grand flower
#

heh

teal junco
#

although uhhhh

grand flower
#

no point in secrecy for that kind of stuff

teal junco
#

you wont catch any Hard-Rs

#

because vsr

grand flower
#

yeah, dumb af

#

never heard of any other game having something like that in place

teal junco
grand flower
#

eh word goes out fast once someone gets sanctioned because of it

#

and besides

teal junco
grand flower
#

lots of other games with voice chat

#

that don't arbitrarily prevent you from doing stuff

upper vapor
grand flower
teal junco
#

yeah

upper vapor
#

wait...

grand flower
#

you can't just throw out gdpr like it's a response to everything

#

that's a per server basis

#

NW has nothing to do with it

upper vapor
#

can you record US ppl but not EU ppl? Hmm

teal junco
#

including voice chat

grand flower
#

^

teal junco
#

i havent seen any legal issues

grand flower
#

NW is just being stupid af

#

restrictions for the sake of it

#

oh well

#

brb quick shopping trip

upper vapor
#

maybe they just wanna make sure they don't catch a lawsuit

teal junco
grand flower
teal junco
#

i might need to reread VSR

#

i am planning on putting a server up when i turn 16

grand flower
#

ยฏ_(ใƒ„)_/ยฏ

#

just put it on the pile of stuff you can't do for no actual reason

teal junco
#

i remember how much some developers complained about reloading becoming client side and i wonder if stuff like that gives Northwood a cocaine high they cant replicate any other way

#

and thats why speaker ID is a byte and you cant really customize gun properties

grand flower
#

Tbh speaker ids being a byte is like, fine IMO

#

I'm talking more about arbitrary VSR stuff than gameplay decisions

upper vapor
grand flower
#

SL issues are something else

#

VSR is stupid

teal junco
upper vapor
#

oh you meant like netID would be better?

teal junco
#

but it just feels really clausterphobic to me

#

and to save like

#

3 bytes

teal junco
upper vapor
#

why tho

teal junco
#

because im always afraid of something going wrong

grand flower
#

Your server wont handle that much audio data being streamed

teal junco
grand flower
#

And until you find a time where 255 speakers arent enough, I dont think NW is gonna change it

teal junco
#

but my fear is not rational

#

maybe as a coping method i should ask a bunch of people to install a plugin designed to monitor speaker ID usage and watch as the peak speaker ID usage is 15 sounds

upper vapor
teal junco
#

and i will finally come to my senses and realize there is no issue

grand flower
upper vapor
#

i meant for storing voice

#

at all

grand flower
#

If you mean audio recording, idk off the top of my head

#

!vsr

regal lakeBOT
teal junco
upper vapor
#

i couldn't find anything with the keyword "audio" or "voice"

teal junco
#

Honestly though Northwood has really been feeding us well lately

#

im grateful.

teal junco
#

they never had to add primitives

#

but they did

#

primitives are honestly where it all started going downhill

#

after that there was no going back for Northwood

#

now look what has happened

#

CUSTOM KEYCARDS

grand flower
#

You're right, cant see it in VSR hmmm

#

I just know it's forbidden

upper vapor
#

better ask tho yeah

grand flower
#

So actually interested in where that's stated

teal junco
#

this is my favorite detail in the VSR

#

yes, i will post racist homophobic pornographic swearing via CASSIE and the only reason that more people dont is because the VSR forbids it

upper vapor
upper vapor
teal junco
#

it was not fun

upper vapor
teal junco
#

i cant imagine Cassie engineering racist shit, but i guess it makes sense that some people would do that

#

its the internet after all lol

upper vapor
teal junco
# upper vapor wha

it was a part of my job to make CASSIE say certain words that he couldnt normally

#

one second

upper vapor
#

ohhhh

teal junco
#

lemme find some

upper vapor
#

with jams?

teal junco
upper vapor
teal junco
#

@upper vapor enjoy these

#

they were painful to make and served zero purpose but thats everything in SCP SL

#

"Civilian" more like

upper vapor
#

siwillein ๐Ÿ˜ญ๐Ÿ˜ญ

teal junco
#

here is the first CASSIE engineer and it was when i discovered the wonders of cassie engineering

#

my friend made this one

#

and i thought "wow thats fucking genius"

upper vapor
#

smart

slate flume
#

Thank you guys

grand flower
#

nope

#

not deterministic

#

more work i guess

true cedar
#

why is this so important

upper vapor
#

replay

grand flower
#

would've been simpler

#

it's fine, I can grab initial state at round start

true cedar
#

oh

teal junco
#

how are you gonna do item physics?

#

just recording the items position and the actors are gravity off

grand flower
#

not planned

teal junco
#

also do you plan to have the dummies actually performing the actions like opening doors or just letting the world take care of that

teal junco
grand flower
#

state handles the world

grand flower
#

doors are deterministic

#

in the sense that their sync id is deterministic

#

so that's good at least

#

makes identifying them simple (and cheap since they're bytes)

covert flame
#

Okay so now when I want to remove the role from the player, what do I do? or will it get removed when the player leaves the server, or is that done manually? because it's stuck on the player now, I've tried a few things but nothing has worked so I'm just gonna ask for help instead lol

upper vapor
#

Remove then from the members dictionary

grand flower
#

fuck my life

#

the hard hard way it is

upper vapor
grand flower
#

can plugins be .net standard 2.1?

restive turret
#

Or maybe sorry idk if exist

upper vapor
#

Nvm

upper vapor
restive turret
#

But definitely does in net5+

grand flower
#

lemme install .net standard 2.1 then

upper vapor
upper vapor
#

Just change the target framework

grand flower
#

rider's not letting me heh

restive turret
upper vapor
restive turret
grand flower