#plugins-dev-chat

1 messages · Page 95 of 1

upper vapor
#

you define it in the loop declaration

icy knoll
#

tbh, i just go for easier to read and quick

#

i doubt there is even the smallest slowdown using foreach over for in most cases

#

makes it easier to read anyway

unique crane
#

For loop fans when Hashset walks in

upper vapor
#

xd

#

ElementAt

#

sobbing

unique crane
upper vapor
#

ehhh

icy knoll
#

also

#

found smth weird today

#

Player::UserGroup can't be equal to ServerStatic.PermissionsHandler.GetGroup(name)

#

for some odd reason

#

you have to compare the names 😭

unique crane
#

I think that new UserGroup gets created on assignment?

#

with just like a copy

#

properties

upper vapor
#

i was looking at master skullbutreal

icy knoll
#

probably

unique crane
icy knoll
#

maybe add an implicit operator and an Equals method to compare the names instead?

upper vapor
unique crane
#

but why

icy knoll
#

idk

#

but yeah

#

i think the implicit operator with the Equals method would just be better

#

lol

#

easier than figuring out why that is done

upper vapor
unique crane
#

Looking at PermissionsHandler

#

I think best option would be to

#

Ctrl a

restive turret
unique crane
#

delete

upper vapor
unique crane
#

(joke ofc)

#

Maybe someone nice will rewrite it in the future

upper vapor
#

i would rewrite it

#

but at that point i'll rewrite labapi perms too

icy knoll
#

ax

#

let's be for real rn

#

you'd rewrite the whole game

upper vapor
#

trueing

unique crane
#

You would quickly realise that is NOT happening

upper vapor
unique crane
#

Like I was just thinking yesterday

#

"hmm lets refactor decontamination a bit"

harsh thorn
#

tbf technically the game is being rewritten one update at a time hmm

unique crane
#

Yea

upper vapor
#

when CustomNetworkManager update

harsh thorn
#

everytime someone touches 2017 code and need to change it for something that it just cant support, it gets rewritten

upper vapor
#

decontamination was changed to support disabling but it's uh
kinda weird still

harsh thorn
#

thn it wasnt bad enough to the point where it had to be killed trollage

upper vapor
#

yeah

unique crane
upper vapor
#

better uh

#

scenario or whatever

unique crane
#

wdym

upper vapor
#

optoin to disable the announcementú

#

like the uh

#

announcements could be triggered by the server instead of being client bound

unique crane
#

I would love to support custom time announcements

#

but they are kinda hardcoded into the audio

upper vapor
#

that's fine

#

just let the server decide when to play them instead of this

#

whatever we have currently

unique crane
#

Yea why not

upper vapor
#

decontamination pausing doesn't work properly on the client

unique crane
#

Ik

restive turret
#

Then fix it ClassDTroll

upper vapor
#

let's make everything server-side so zero can make it client-side again

celest thorn
#

And not knowing what is going on

random scaffold
#

!status

regal lakeBOT
random scaffold
restive turret
#

Skill issue

tulip kiln
#

Do we need to sync scale by ourselves for new players? Sometimes a new player will se a (0.5, 0.5, 0.5) player as their full size equivalent, just in the ground. Sometimes players also just retain their old scale despite me setting it to (1, 1, 1) through the Player wrapper.

random scaffold
tulip kiln
random scaffold
#

sp

restive turret
unique crane
#

as it just ignores the message if the player's role is not fpc sync

#

Already got fix for it and it will hopefully make it in the hotfix

restive turret
#

Thanks, I waiting for that hotfix

#

Hopefully it will be hot

#

And actually fixing stuff

harsh thorn
# random scaffold bruh

go to tech support, its an issue with the library for webrequests
we need people that can reproduce the issue so we can make bugreports for the library and test what the issue actually is

tepid sluice
#

ig smth blocked main thead?

harsh thorn
#

possibly, but webrequests dont really occur on the main thread

#

so thats a bit weird

#

server makes them on 2 other threads

#

and so do clients

tepid sluice
#

u could try it urslef

harsh thorn
#

i am busy

#

if its an issue consider making a bugreport

tepid sluice
#

okay

restive turret
#

I don't have this issue soSteamHappy

tepid sluice
#

that will make server use unitywebrequest for http request

fresh zenith
#

hey uh how do i get the time until chaos/mtf spawns?

upper vapor
icy knoll
#

ok so did some testing....... OnBeforePlayerDestroyed in ReferenceHub is infact called before setting the players role to destroyed... but it's after setting to spectator so now i don't really know what to do... (fyi for the people unaware, i need an event to track when the person leaves the server, but before they turn into spectator or destroyed as i need their information before that, like health and position)

what method should i patch? as i dont think ima find an event...

restive turret
#

Changing role?

icy knoll
upper vapor
#

CustomNetworkManager::OnServerDisconnect

restive turret
icy knoll
upper vapor
#

yes

#

that kills the player

fresh zenith
icy knoll
icy knoll
upper vapor
#

still can't believe how we don't have something actually usable for this

icy knoll
#

@unique crane TrollDespair

unique crane
#

what

upper vapor
#

off to issues

icy knoll
#

true

#

too lazy tho

unique crane
#

what

upper vapor
#

poggies

unique crane
#

Uhhhhhhhhhhhhhhhhhhhhhhhh

icy knoll
#

god damnit gotta do a transpiler for this i think

upper vapor
#

yyyyeeaaaaaa

icy knoll
#

just Advance by -1 before here

#

simple as

upper vapor
#

it will break shit though

#

like

icy knoll
#

wdym

upper vapor
#

exiled does this already

#

and other plugins perhaps

icy knoll
#

how will that break shit tho?

upper vapor
#

like either your transpiler won't work or the other transpilers won't work

#

cuz

#

conflict

restive turret
#

Just dont care about it ClassDTroll

upper vapor
icy knoll
#

well

#

im doing this to remove exiled totally from my server

#

so who gives a fuck

upper vapor
#

ohhhh

icy knoll
#

yeah lol

unique crane
#

Cant you just like

#

Subscribe to on role change

icy knoll
#

as i said

unique crane
#

And check for RoleChangeReason to Destroyed

icy knoll
#

no

#

because

#

OnServerDisconnect gives the reason Unknown

#

which sets to spectator

#

and then spectator to destroyed has the reason Destroyed

icy knoll
#

anyone know why this might not be working? im looping through the new codes from the codematcher and nothing has changed, my IL hasn't been added...

upper vapor
#

why do you match the whole statement 😭

#

you have a ldsfld

#

with no field

#

does that match?

icy knoll
icy knoll
#

can I just shorten it down to the Callvirt then?

upper vapor
#

yeah

icy knoll
#

okie ill do that after a bit of cyberpeak :3

#

ty ax

icy knoll
#

which i dont think is right?

#

wait

#

Advance back

#

okie

restive turret
#

Huh

fresh zenith
#

how do i send more than 1 hint at the same time? like uh how do i make 2 differant hints which show at the same time but at different positions?

random scaffold
#

its easy way

fresh zenith
#

thx

true cedar
#

what

#

i would not call that the easy way

restive turret
#

just dont do hints

#

thats more easy way

thin shuttle
warped prairie
#

Hey. Quick question. How versatile is the 106 pocket dimention work. Like is it possible to get the correct door needed to escape?

unique crane
#

Absolutely

warped prairie
#

Veryyyyyy interesting pepe_Evil

thin shuttle
#

PocketDimensionTeleport.PDTeleportType

warped prairie
#

This will be noted. Ty

thin shuttle
#

PocketDimensionTeleport.AllInstances

unique crane
#

You can use our pocket dimension wrapper

#

PocketDimension

#

PocketDimension.PocketTeleports

#

There is get/set property IsExit

thin shuttle
unique crane
#

Why do you ask me about 2017 code 😭

thin shuttle
#

why should i not ask

unique crane
#

Idk

thin shuttle
#

i made hubert modify this code to implement the PocketDimensionTeleport.AllInstances

restive turret
#

ye you should use byte to yknow uint256

thin shuttle
#

because they was still doing last year an GameObject.Finds<PocketDimensionTeleport>()

#

actually it's int

#

but we could technically do custom escape

#

with that

#

(PDTeleportType)3

#

and implement your new stuff

#

to it

#

actually Yeah

#

new if (this._type == 3)

restive turret
#

DebugBool

thin shuttle
#

that pddebug command

icy knoll
# thin shuttle You really don't need that much of check

i did it because if I do MatchStartForward, it will put the index at the start of the match, if I just did Callvirt it would put the index before the callvirt... but i found it easier to just .Advance(-6) and it worked lol

thin shuttle
warped prairie
true cedar
icy knoll
celest thorn
#

btw must say the game im playing rn is good but fight are dogshit (the category is a bit dogshit i must say) but story wise really good im loving it (rn im at the start of chapter 4 after 4.30h of gameplay but i had some bugs and needed to restart so like 20/30 minutes cannot be counted to the main run i was doing)

ashen hound
#

I hate networking xd

unique crane
restive turret
#

I was wanted to do the same

ashen hound
#

while serialize of syncvars when theres like TextToy class it uses AdminToyBase soo what happens its writing...```
AdminToyBase
writer.WriteULong(base.syncVarDirtyBits);
TextToy
writer.WriteULong(base.syncVarDirtyBits);

#

twice lol

restive turret
#

Yes

#

Ax, me fixed it on my thing, and zero has his own implementation of it too

#

That mirror for u

#

:P

ashen hound
#

thats my fix lol

#

its not even scpsl server its proxy atm

restive turret
#

Huh

#

What you doing with that proxy BaguettesCar

ashen hound
#

currently making lobby

restive turret
#

And dont you have the full src of the client and serverClassDClueless

ashen hound
#

its standalone app running .net 9

#

0 unity

restive turret
#

Well, you could do some stuff since many just spawning and doing messages but

#

How would you handle moving on objects

#

Trusting client fully?

ashen hound
#

Its only for purpose of lobby I not making like way to play with multiple players

#

this will use normal sl server but proxied when playing with multiple

restive turret
#

What

ashen hound
#

Its fake server with only you being connected

#

and thats like whole thing required to make this

restive turret
#

Ah

#

And probably it says where you gonna move

ashen hound
#

I want to add like portals but still I need to fix receiving position from client

restive turret
#

I mean as pocket exit

#

Ye position is a bit funny let just say

slow delta
#

914 SEEMS TO BE THE CAUSE OF CARD DUPLICATION

restive turret
#

Known

#

Happens to our own server, and others too

slow delta
restive turret
#

Ye it randomly appearing most of stuff i seen was in heavy or in random players feet

worn gull
#

What can I do with CustomDataStore?

restive turret
#

Good stuff

#

I use it for doing special effects to players

#

For example my custom role is basically a DataStore that contains function that uses the parsed yml to do things

worn gull
#

Ah okay thanks

restive turret
#

Since you have the player you can basically do anything you want with the player there

worn gull
restive turret
#

Ye, but you have to do some sort of starter mechanism (like just a Start function in there)

worn gull
#

Okay, thanks 😄

restive turret
#

Ye we use datastore for some of our custom roles and its great, the initial making was headache and made me hate it but after fixing the spawn issue (players didn't registered their custom storage) I cleaned up some stuff and its easy and great

worn gull
restive turret
#

32 of our custom role has datastore (out of idk, 100?)

worn gull
#

👀

hearty shard
#

Personally i store stuff in the custom role

restive turret
#

Datastore is pretty good

hearty shard
#

for me just bool issocool; works fine

restive turret
restive turret
#

Every X minute you get effect

#

You don't need to have that for every role

#

Only like what you choose to be

#

Or after X hit you spawn a grenade for example

#

Not really needed to code that inside the core

worn gull
#

Like a disk which you can put into the players and remove it?

ashen hound
barren pasture
#

What is the event for 079 pinging?

worn gull
barren pasture
worn gull
barren pasture
worn gull
#

Huh

#

Did you referenced LabApi or installed the Northwood.LabApi NuGet?

barren pasture
#

I was in the wrong labapi version mb

rugged laurel
pallid galleon
swift nexus
#

@rugged laurel feel free to ping any member of QA management (me, banzai, or multiverse), if you have questions about bugs that pop up

#

whoops

#

@pallid galleon

pallid galleon
#

I just assume a lot of stuff is an us issue, then by the time it starts getting annoying usually someone in here posts or it's fixed 😛

#

this is pretty neat though

true cedar
pallid galleon
warped prairie
#

Truly a skill issue ngl

#

that guys just really bad at the game

pallid galleon
#

You made the classic blunder of going down in an up elevator

warped prairie
#

yep my fault. i wont do that next time

swift nexus
#

most of the clips I've seen of this issue are spectators, interesting to see it happens to live players as well

#

did you add any custom waypoints?

pallid galleon
#

From this guy here @warped prairie

#

And we got no custom waypoints

warped prairie
#

Hai

pallid galleon
#

It's taken from a modded server though, but I don't think the player has any scale changes applied to them

warped prairie
spare zodiac
keen halo
#

It seems like even when you set the cassie messages isHeld: false it still waits the 3 seconds

#

And it makes me angry

slate flume
#

Like with a respawn wave

keen halo
#

I don't want pauses

#

That's why I set the isHeld to false

#

and it still waits 3 seconds >:(

slate flume
#

Why are you sending messages in quick succession

keen halo
#

Becuse I want it to say a couple messages quickly

keen halo
slate flume
#

You can make breaks between messages without making them actual entire separate announcements

keen halo
#

They are generated messages.

slate flume
#

Yeah, and?

keen halo
#

Its just a pain in the ass when the isHeld could just ya know work.

slate flume
#

True because it deviates from what you wanted but I would say the process of
Generate messages -> combine them into one announcement -> send isn't too much more difficult than
Generate messages -> send as separate announcements

#

A lot of things are really buggy and don't work but the beauty is finding as way around it

#

Or something like that idk I'm tired

keen halo
#

Suuuuuuure

#

But like

#

Plz fix papa northwood

restive turret
#

Never

slate flume
thin shuttle
swift nexus
thin shuttle
#

Yeah

celest thorn
safe robin
#

Does the shotgun choke & extended barrel have the incorrect text?

unique crane
#

Bugreports channel please

restive turret
upper vapor
#

❌ join the qa server
✅ make a labapi bug report
-# toomuchtrolling

unique crane
#

Tf you mean

restive turret
#

Nah thats unknown

#

I dont know where it leads me

unique crane
#

information

#

bug report

restive turret
#

I don't have bugs ClassDTroll

#

Only little happy uncertain features

celest thorn
#

hangout today is so lonely

restive turret
#

Cus I'm at work

celest thorn
#

im just streaming a game

restive turret
#

A Roblox game

celest thorn
upper vapor
#

not a nw game

restive turret
#

Then I'm not interested either

celest thorn
upper vapor
#

normalize doing labapi stuff in labapi hangout without people joining for 2 seconds then leaving

restive turret
#

Normalize doing labapi staff??

upper vapor
#

UHHHHH

#

stuff

upper vapor
#

😭

upper vapor
restive turret
celest thorn
#

Im going to scream

#

this boss is too high level

#

and i farmed for 4 hours

#

(8h rn)

restive turret
#

Ok

worn gull
#

Hi! Is it possible to make a Window not to be damaged by SCPs

upper vapor
#

playerdamagingwindow event?

worn gull
upper vapor
#

np

restive turret
#

110 euro / question

random scaffold
#

109 euro / answer

random scaffold
#

how to fix

restive turret
#

Never happened to me

#

Seems to be skill issue

harsh thorn
#

Verify files

random scaffold
#

without reinstall

hearty shard
hearty shard
random scaffold
hearty shard
#

it doesnt delete configs though

#

unless you have a custom egg that does that

#

unless ur modifying configs directly through assembly csharp dll youd be fine

every server running ptero does this to update between versions of the game

plain gazelle
#

If i would fake sync an interactable toys position far away, would the person who sees it still be able to interact with it and call the toys' events, or would it be caught/denied by some anticheat or anything firT

upper vapor
#

btw you can just set islocked

restive turret
#

Probably client side you can interact but server doesn't do anything

upper vapor
#

yeah slejm is right

#

if it's there for the server then it'll check the server thing

#

i'd fake sync IsLocked instead and check if that client has IsLocked on the server (store in a set)

restive turret
#

You can always try it i guess

upper vapor
restive turret
#

Nah use David's clientClassDTroll

fresh zenith
#

how can i reset the players scale?

upper vapor
#

player.Scale = Vector3.one

fresh zenith
#

and for what is Normalize?=

upper vapor
#

you don't need that here

#

vector.normalized gives you a vector pointing in the same direction with a magnitude (length) of 1

fresh zenith
#

oh k thanks good to know.

upper vapor
#

np

undone jacinth
#

While we're talking about scale, is it a known bug that the ragdoll spawns at scale 1, 1, 1 even when the player isn't that scale?

upper vapor
unique crane
#

Intended behavior

undone jacinth
#

Is there a way I can scale the ragdoll

grand flower
#

don't think so

#

wouldn't be networked to clients

upper vapor
grand flower
#

huh

upper vapor
#

change it before NetworkServer.Spawn in RagdollManager.SpawnRagdolls

upper vapor
undone jacinth
#

Okay, that's what I tried. What am I doing wrong?

upper vapor
#
  1. which event is this in
  2. what is the player's role
undone jacinth
#

OnPlayerDeath, ClassD

upper vapor
#

OnPlayerDeath
by this time the player is dead so their role is spectator

grand flower
#

sweet

upper vapor
grand flower
#

nw moment

undone jacinth
upper vapor
#

isn't there a ragdoll spawning event

undone jacinth
#

I'll try

undone jacinth
unique crane
#

Wdym not really supported

upper vapor
#

they look weird when scaled

#

Intended behavior
so it doesn't shit itself

#

right?

#

or am i twittering

unique crane
#

well yea

#

they dont scale the way you would expect

#

and nor did I when I did it

upper vapor
#

oh was it the uh
there was a bug report with some objects not having a default scale of one
yamato did it
was it with ragdolls? i forgor

unique crane
#

Yea

#

049 has default of like 0.42 or something

#

So 1,1,1 makes it hugeeeeeee

#

But yea im not gonna spend time on it now

upper vapor
#

i thuoght that was fixed CFbruh

unique crane
#

I dont think so

hearty shard
#

multiply the ragdoll size by the player size

#

ez

fresh zenith
#

how long does it exactly take until you spawn from an wave? like how long is the time between it blinks and then you actually spawn?

upper vapor
#

check the wave's animation time

#

IAnimatedWave

#

though the labapi wrappers probably include them already

unique crane
#

I think it does..

#

let me check

#

It does

fresh zenith
hearty shard
# unique crane

What if instead of wrappers you made basegame perfect so wrappers wouldnt be needed

#

🙄

unique crane
#

Oh right game would be SO much managable if we had everything in a single network behavior

unique crane
hearty shard
#

You should have 1 class for the entire game

hearty shard
#

Oh..

upper vapor
unique crane
upper vapor
unique crane
upper vapor
#

eh fair

#

can we get a synced movement speed multiplier :3

unique crane
#

My best creation is still this

#

Server activity

upper vapor
#

mark bot

unique crane
#

with markiplier gif

upper vapor
#

peak

unique crane
#

based off that

upper vapor
#

can't say it here though cuz it's kinda political :(

unique crane
#

gg

#

You can in dms if you want

restive turret
#

So you could fakesync everything

icy knoll
#

deleted exiled off of my server

restive turret
mild walrus
#

I’m trying to create a lobby overlay using hints. The problem is that the hint system seems to only allow one active hint per player.
If I send a hint for the server title, then another for the round info, the second one replaces the first instead of displaying both.
This forces me to combine all my text into a single hint, but then <align>, <line-height>, and padding changes affect the whole overlay at once, making it impossible to position each block independently.

Does anyone know of a way to position the text separately? For example: Round information on the left, vertically centered at the height of the square that indicates the number of players on the server.

slate flume
slate flume
hearty shard
#

or create your own hint manager

slate flume
#

Yep

celest thorn
mild walrus
#

tysm guyss

hearty shard
#

Ratio

#

chicken butt

slate flume
celest thorn
slate flume
#

I use HSM on 32 player servers and get 60 tps

celest thorn
#

And hsm was doing alot of useless stuff

slate flume
#

😁

grand flower
#

hints be expensive

slate flume
#

Where's that one emoji that's "Works fine on my machine"

grand flower
#

You're not all servers though mmLul

slate flume
#

You don't know me

grand flower
#

I work on probably the most heavily modded servers ever, I know hints are expensive from experience ¯_(ツ)_/¯

#

Once you start having to compute and send them for every player it gets a little slow

#

Especially at higher player counts

slate flume
#

Though I don't do like 50 billion hints

grand flower
#

You're talking to the guy that patched a ton of performance improvements to servers :p Efficiently or not it's inherently not a fast system

slate flume
#

I have a decent amount but not above average I'd say

grand flower
#

The more you have to use it for every player, the slower it gets

slate flume
#

I learned that from my experience

grand flower
#

48 player servers are like, already tough to handle unfortunately

#

Since the game really doesn't seem to be made for more than 30 according to NW

slate flume
#

I stopped using AutoText in HSM in favor of updating it manually to prevent constant updates

#

I had to patch some health setters and things to get that to work

grand flower
#

I wish there was a better system to display stuff on clients

slate flume
#

Don't we all

restive turret
#

Trol

#

AnywayBedge

slate flume
#

Oh so this is a known issue?

restive turret
#

There is no issue what do you mean

slate flume
static meteor
#

Its client validation irrc so you cant patch it

worn gull
#

Hi! How can I get which plugin eats the most tps?

slate flume
#

It's really just about taking inventory over what you're doing and cutting out the most resource-intensive stuff

#

But I gather you're not making a plugin in-house and are instead collecting LabAPI plugins

#

So may I ask what plugins you have

worn gull
#

I'm making plugins I just don't know if I'm coding in an optimalized way 😄

slate flume
#

My advice is generally don't worry about optimization so much for a majority of things

worn gull
#

Ah okay

slate flume
#

Unless you're someone like Zer0Two or Cyn developing some crazy heavily modded servers, you generally won't have much of a performance impact from plugins

slate flume
pine parcel
#

@slate flume Did you get that proxchat working btw?

slate flume
#

Though I'd advise not doing prox chat rn

#

If 106 sends a prox chat message it kicks people

pine parcel
#

holy crap, do we know why?

static meteor
#

Client validation iirc

pine parcel
#

got it

#

but that's only 106 using prox chat, not their typical global scp voice chat right?

winged meteor
#

what if I found a 106 prox chat without any lab api updates?

#

as if its only removed from lab API...

#

it should be possible to do it

slate flume
winged meteor
#

they fully removed it?

slate flume
#

No

#

The problem is the client can't validate a proximity chat channel message from 106

#

Even if you send a proximity chat channel message from 106 not using LabAPI, the client still has to validate it

#

This isn't necessarily a LabAPI issue, it's a base-game validation bug

winged meteor
#

ahhh alrig

pine parcel
#

my question is if I want to send audio, through a player's prox chat, or if they're an scp, through their global chat, how does the listener.Connection.Send() code change in your snippet from earlier to send audio files loaded as a stream

#

for context, I wanted to use the speech synthesis (ideally from DECTalk, but that's a WIP) from Windows built-in to receive a text command from a player, take the string that was sent, create a speech clip in memory stream, and then send from the player that sent that command as a prox chat/global chat

pine parcel
#

I have a friend who can't always play with a microphone, so this felt like a decent way to allow communication that didn't require line of sight, plus I imagine it should work with 939's voice stealing if done right?

slate flume
#

I'm unsure

#

If it's been updated?

pine parcel
#

I've used this lib for one of my projects, and it seems to still be working, but so far iirc for local stuff, they attach a speaker object to a player's position? this would make voice stealing impossible to my knowledge. Still, a great way to start I suppose

slate flume
#

Oh true!

slate flume
pine parcel
#

I really appreciate it, don't worry too much if it takes too long or anything, and of course if I figure it out I'm happy to share what I learnt

slate flume
#

Okay I've been checking around for a bit
Generally the goal is to get a working VoiceMessage, which to my understanding you can make from an AudioMessage
I say this because you need the byte[] data for the message, but I'm unsure what these bytes are supposed to be or how to get them from an audio file
SpeakerToys to play audio use AudioTransmitters
I have noticed the AudioTransmitter::Transmit does a bunch of stuff, but then runs audioMessage.SendToHubsConditionally<AudioMessage>(new Func<ReferenceHub, bool>(audioTransmitter.\u003CTransmit\u003Eb__32_0));
Now the problem is that's a compiler-generated method

#

I know that if you prescribe to OnPlayerSendingVoiceMessage or otherwise you can change the ev.Message.Speaker to any referencehub it'll send the through the player specified by the reference hub

pine parcel
#

so it looks like the issue really is how to convert an audio stream into the format send() expects, right?

slate flume
#

I'm also unsure if the message requires constant sending

#

But I would believe that you'd have to constantly send the message

pine parcel
#

if that were the case, then surely you can run an async task that reads a bit from the memory stream, and then sends, and continues until the stream end is reached, and then finishes up the send

slate flume
#

One thought I preliminarily have is if you can get the audio sending through a speakertoy, would it be possible to grab the audio message from that, convert it to a voice message, and send it through a player?

pine parcel
slate flume
#

I think what I would do is check out the AudioTransmitter::Transmit

pine parcel
#

thanks, will do

slate flume
#

If you harmony patch to replace the SendToHubsConditionally call with a call to your function, check if the speakertoy is what you want, and then convert the audio message to a voice message and send it yourself, that should give the desired effectr

pine parcel
#

I see, this is all stuff I'll have to learn, I'm still new to C# in general, but I'm sure I'll come back around to this and might be able to get something really cool working

teal junco
#

the audio message shoulf work if you just construct the same thing but as a voice message

slate flume
#

Routing through speakertoys and patching the AudioMessage send should be the easiest way of overcoming those barriers

teal junco
#

only issue is sending a voice message and the player actually speaking has been known to sometimes function weirdlg

#

mostly with intercom though.

slate flume
#

Haven't heard of that before

pine parcel
#

anyone know if there's a way to override magazine capacity of a gun, or how much ammo is currently in a gun?

soft turtle
#

Is there a method to find out ZoneType from Vector3?

unique crane
pine parcel
unique crane
soft turtle
slate flume
#

MY HERO

#

I have a question

restive turret
#

answer

slate flume
#

@unique crane is it possible to fix 106's prox chat issues with a patch or is it client-side where I can't do anything about it

warped prairie
pine parcel
slate flume
harsh thorn
#

Scps dont have a handler for proximity anyway
So itd just play globally

So using a different channel that does the same would give you the desired effect

slate flume
#

Okay 👍🏼

#

Thank you @harsh thorn

celest thorn
#

hello chat

slate flume
#

Is the Speaker IsSpatial working yet?

#

Or is it still broken

celest thorn
#

still broken

#

it worked 1 update and then broke

slate flume
#

That's fucked

tepid sluice
celest thorn
#

honestly its sl

slate flume
#

I just wanna remove reverb from my speaker

celest thorn
#

my expectation are so low that even if a cube gets added and doesn't break in one update im happy

celest thorn
#

because IsSpatial was for that

#

you can try

#

but atleast for me no changes and always that way

slate flume
#

Well the issue is still open so I assume no fix

celest thorn
#

(opened by me)

#

Hope instead nw gives us a way to like set them

#

how the reverb works

slate flume
#

I just don't want reverb :(

celest thorn
#

no but settings for reverb and everything they would allow you to remove it to add slightly

#

etc...

worthy rune
#

isSpatial does work, reverb is a seperate thing from it

#

so the fix would be to add away to control reverb

celest thorn
#

so wait

#

why when it first came out it worked fine

#

and it was without reverb and then at some point got changed

#

it doesn't make any sense

worthy rune
#

yeah unity 6 did that

celest thorn
#

Thank you unity 6

restive turret
#

Daily hate on unity Agree

upper vapor
teal junco
#

i wonder what modding tool will be added next

upper vapor
teal junco
#

everything recently has been amazing

pine parcel
#

any reason not to?

restive turret
#

Unity

upper vapor
pine parcel
restive turret
#

Unity runs in one core/thread

#

If you call stuff in other you crash

worthy rune
#

actually using async with unity is fine

pine parcel
#

oh, how do you run things without blocking then?

upper vapor
slate flume
celest thorn
grand flower
worthy rune
restive turret
pine parcel
worthy rune
#

but async also works but i recommend async for I/O blocking stuff like web requests

upper vapor
restive turret
upper vapor
teal junco
slate flume
teal junco
#

sprcifically

grand flower
slate flume
#

I get reverb but I was able to use Opus to boost the gain on it

#

So it's not too quiet

pine parcel
#

@worthy rune you wouldn't happen to know how I could send an audiostream through a player's microphone would you?

upper vapor
restive turret
slate flume
#

Worked for me

teal junco
#

To run a coroutine just use Timing.RunCoroutine

and provide a method with return type IEnumerator<float> and each yield return (number) is a waiting period

pine parcel
#

thanks Chai!!!

upper vapor
restive turret
#

Yield return float.Nan

slate flume
teal junco
upper vapor
slate flume
#

Don't just pass in random floats

slate flume
teal junco
restive turret
#

do that

pine parcel
#

voice message is just a series of PCM?

restive turret
#

Wait for 1000 float tick

upper vapor
upper vapor
slate flume
teal junco
#

I just want to give a comprehensive explanation to newer devs cus i had to figure some stuff all on my own

pine parcel
#

oh!!! thanks!!!

upper vapor
#

I'm working on a library to make audio stuff a million times easier

grand flower
#

Me when coroutine abuse, make components and save your sanity

pine parcel
grand flower
#

Easier to maintain in the long run

upper vapor
#

Writing docs is pain though

restive turret
slate flume
upper vapor
pine parcel
grand flower
#

Easier to handle components over coroutines

#

Slap em on a player or whatever's playing audio

#

Hell even the host player since it's a thing for some stupid reason, make it useful instead of just there to crash your server

upper vapor
grand flower
#

Encode and send data in Update()

#

Easy as pie

upper vapor
teal junco
slate flume
#

:)

upper vapor
#

i love components, audio or not

teal junco
upper vapor
#

just do things in Update()

#

instead of

restive turret
#

Learn unity

upper vapor
#

while (true)
yr Timing.WaitForOneFrame

upper vapor
#

or you can use awaitables for more complex stuff

teal junco
grand flower
#

Dont use awaitables for audio stuff

#

Literally no point

upper vapor
upper vapor
#

but like some complex state

teal junco
slate flume
# upper vapor just do things in Update()

So uh how do I get shit in the update function
Like I have a coroutine I use to move players into a black hole, can I get the position of the primitive inside of the component?

grand flower
#

Unity sucks ass but if you're gonna make SL stuff just bite the bullet and use the engine properly

teal junco
#

i dont even know if unity is bad

grand flower
teal junco
#

like what did they do

grand flower
#

They shit on devs

slate flume
teal junco
upper vapor
grand flower
#

However you're already doing it, just pass the reference to a component you create

#

Instead of passing it to a coroutine

restive turret
#

I only used unity when I did the game object tree check and decompiled the game

teal junco
#

and do gameObject.AddComponent<ComponentType>().Init(objcets);

grand flower
#

Please split your stuff heh

slate flume
grand flower
#
var component = gameObject.AddComponent<MyComponent>();
component.Initialize(data);
slate flume
#

Including myself

grand flower
#

I chew out people who do that for a living

upper vapor
grand flower
#

Unless there's a good reason to and it's readable

#

One line if statements are an immediate execution

slate flume
#

I mean I get not liking large one-liners

#

What's the problem with a short one-line if statement though

grand flower
#

Congrats your git diff screwed up, your if statement now applies to another line of code instead of what it did before, oops runtime bug you didn't catch

slate flume
grand flower
#

Worth the {} you saved DogKek

#

No it wouldn't

slate flume
#

It does big flashing underlines

grand flower
#

Not always

upper vapor
slate flume
#

Yes it does

restive turret
slate flume
upper vapor
grand flower
#

Start is a Unity method you're fucked up if you call it manually heh

teal junco
#

i try to avoid one liners more now, they suck to write and suck to read

slate flume
grand flower
upper vapor
slate flume
#

I don't see the issue with that

teal junco
#

but i dont always think about them so i end up writing a lot

grand flower
#

It wont always be like that

slate flume
slate flume
restive turret
slate flume
grand flower
#

Because you're applying an if to an if

slate flume
#

And my IDE warned me

grand flower
#

It won't always be the case

slate flume
grand flower
#

Source: has happened multiple times at work which is why I kill anyone who does it nowadays

slate flume
#

I don't believe it until I see it

#

Because my IDE warns me when I don't use proper indentation, if I forget a return, it'll warn me because I didn't indent

upper vapor
slate flume
#

I.E. I get warned if my one-liner doesn't work

upper vapor
grand flower
#
if (something) method();
anotherMethod();
if (something) anotherMethod();
anotherMethod();
slate flume
grand flower
#

I can't check the broken commits from work

#

Either way it's happened

#

It's a bad habit

upper vapor
slate flume
slate flume
grand flower
#

¯_(ツ)_/¯

#

It's happened on bigger projects than SL, we ban it, everyone's happier

slate flume
#

I have not once experienced an issue like that

grand flower
#

Which is great, not the case for everyone else

slate flume
#

Good for them

upper vapor
#

having the code on a new line makes it much more readable

if (someAbsurdlyLongConditionLikeJavaXdIDontEventKnowWhatToPutHereJustForDemonstration) DoSomething();

vs

if (someAbsurdlyLongConditionLikeJavaXdIDontEventKnowWhatToPutHereJustForDemonstration)
    DoSomething();

i don't have to read the entire condition

grand flower
#

It's unreadable

slate flume
#

if (ev.Message.Channel != VoiceChatChannel.ScpChat) return;

#

Simple

#

Easy

teal junco
#

nobody cares how you write your code, only you do, unless youre gonna work on a team or professionally

slate flume
#

If my if statement is long I indent

upper vapor
#

so true

teal junco
#

only person you hurt is yourself (or potential contributors)

grand flower
#

What will you ever do with those {} you didn't type, saved ya a lot of time DogKek

slate flume
#

It's not about saving time

grand flower
#

Yeah I work in big teams on monolithic codebases

teal junco
grand flower
#

We have reasons we forbid stuff like that

upper vapor
#

everyone else has different coding styles and they refuse to reformat, no .editorconfig

slate flume
#

I indent when it matters

#

I don't indent if it's a one-line like 20-character thing

upper vapor
grand flower
#

We have an editorconfig and bypassing it or not following conventions gets your PR denied

teal junco
#

and ive seen more talented programmers doing the same stuff (one liner or no brackets), its weird to see but i guess everyones different

slate flume
teal junco
grand flower
#

When we work in codebases that have 50k+ files, we can't afford wasting time because someone decided they were better than everyone else

#

Same reason we ban AI

teal junco
#

rn i install stylecop 50% of the time and then ignore the warnings i dislike instead of reconfiguring it. so i should probably get an editorconfig

grand flower
#

I personally spent enough time rewriting shitty AI generated code merged by a junior to get it banned by management

#

Like yeah it looks okay on merge, then you find out it's sheite when it interacts with the rest of the codebase later down the line

#

Enjoy the ticking bomb you'll have to cleanup a few weeks or months later

slate flume
teal junco
#

AI generated code in a professional context is insane

restive turret
#

Real

grand flower
#

I'm fine with AI if you're experienced and know when it spews bs

#

I'll still judge but I won't be annoyed or worried

upper vapor
grand flower
#

Juniors that abuse it just piss me off

slate flume
grand flower
#

They won't learn as much as they should

#

And I have to cleanup their mess later

upper vapor
grand flower
#

And they get their head screwed back on or fired

upper vapor
#

why are you programming at this point if you just prompt skullbutreal

grand flower
#

Job security for me

restive turret
#

No AI can write a disasterous code than me

grand flower
#

You wish heh

unique crane
#

I'm back

teal junco
#

or at least the cringiest code

restive turret
#

4 years ago probably

#

Or 3

grand flower
#

Cringing at your old code is great

unique crane
#

I wanted to sleep but someone outside decided to lawn grass

grand flower
#

Means you've improved

restive turret
#

Sometimes with database and bunch of if statement

teal junco
restive turret
slate flume
teal junco
#

personal lib i wrote last year. i might need to rewrite it sometime both for LabAPI and general improvements

slate flume
#

I watch a lot of videos like that

grand flower
#

I don't watch much of those

grand flower
#

Some are good, others are just eh

restive turret
#

*code

#

And not wife

upper vapor
#

c++ wife

teal junco
upper vapor
slate flume
grand flower
#

Also that video broke about 10 of our conventions in 2 minutes

#

So not for me heh

slate flume
#

I thought it was pretty good

grand flower
#

It is

teal junco
#

like i wrote a switch statement for a bool

grand flower
#

Like it's not bad but wouldn't apply for us

teal junco
#

and i had a function dedicated to calling the biggest if statement ever

#

which was like 99% redundant i think

grand flower
#

auto is automatically forbidden 95% of the time

#

The only time I'd accept it is for structured bindings

slate flume
teal junco
grand flower
#

Did I misread

slate flume
grand flower
#

Ah

#

Well still breaks our rules

#

No auto unless for structured bindings generally

teal junco
grand flower
#

Explicit is best

#

Yes

slate flume
grand flower
#

I'll happily type a full name over auto

teal junco
#

ive fallen into the realm of var recently

#

cant get out

grand flower
#

var is good

slate flume
teal junco
slate flume
#

So long as the type is explicitly stated in the line

grand flower
teal junco
#

sometimes its fine if the type is very easily inferrable

#

but other times its just laziness and can hurt readabilty

pine parcel
#

as a beginner csharp programmer, why do I ever use var? shouldn't I always know what type something is going to be?

grand flower
#

C++ is a lot wilder

slate flume
upper vapor
grand flower
grand flower
upper vapor
#

like don't do IEnumerator<int> = list.GetEnumerator(); (it boxes)

grand flower
#

Actually a rule of mine

teal junco
upper vapor
#

what else would you use them for

grand flower
#

I just mean that while that is fair in C#, I would never do the same in C++

upper vapor
grand flower
#

In C++ I will happily type UE::TSomeTemplate<MyClass>::Descriptor Something = ....

grand flower
#

Not as dangerous as C++

#

Auto can fuck you over

upper vapor
#

ah

grand flower
#

Especially once you start getting into pointers and references etc

teal junco
#

c++ is more low level right

grand flower
#

Yes

upper vapor
grand flower
#

C# is also a lot easier for your IDE to analyse

#

No more like static analysis of C++ is extremely expensive computation wise

grand flower
#

Meaning most IDEs won't or they'll do their best

#

But they can't always catch everything

#

Not as much as C#

grand flower
#

Unreal is also huge itself, so add that and then the game itself on top and you'll understand why I have 192GB of RAM

grand flower
#

Compiler might prioritize another possible inferred type

grand flower
#

C# generally has the IDE yell at you if that can happen, C++ it generally won't unless it's very wrong

#

So you might end up with behaviour that differs from what you wanted

grand flower
#

Maybe not a lot different, could still work fine but be a little costlier for instance

worthy rune
grand flower
#

Rare

#

Afaik

harsh thorn
grand flower
#

I think I've only had it happen a single digit amount of times in the past

grand flower
#

But when it happens it's either just costlier or catastrophic and hard to debug

grand flower
harsh thorn
#

More like stack corruption

restive turret
grand flower
#

Especially when you start getting the bug in non-debug builds/optimized builds and not your editor/dev ones

#

Yeah that's ass

#

Had it happen a few times

#

Generally it was a more junior dev returning references when they shouldn't

worthy rune
#

i need an example, what your describing sounds way to wild for the compiler to be doing

grand flower
#

And like, in debug builds, the compiler actually made it work, so in editor it was okay, then it blew up in shipping and they couldn't understand ehy

#

I'd have to find one