#plugins-dev-chat

1 messages ยท Page 39 of 1

slate flume
#

How do I get the server's current TPS

#

I'm reasonably confident it's NetworkServer.tickRate but idk if I should use that or NetworkServer.actualTickRate or something else

worthy rune
#

i think theres a Server.Tps prop

slate flume
#

OHHH SHIT

#

You right

#

๐Ÿ™๐Ÿผ

teal junco
#

@upper vapor Thank you for the resources and help, btw

#

I found a perfect way to play sounds at slower or faster speeds

upper vapor
#

what method did you end up with?

#

procrastination

true cedar
#

btw theres a Predicate<T> type perfect for these scenarios

#

although i think an ienumerable<player> would be better ngl

worthy rune
#

isnt the predicate type somewhat deprecated, as in microsoft dont want you to use it

upper vapor
#

mirror docs:

Obviously, the host can cheat. If you cheat on LAN then you need professional help.
peak

worthy rune
#

yeah, all i can find is that it existed before action/func. not really anything that says you shouldn't use it tho

#

i do prefer func as its a more commonly used type

teal junco
#

I didn't want to add another library for what is really a relatively simple function

unique crane
#

Perhaps we can add another task to already giant list of todos

#

Networked audio modifiers xd

#

(pitch,speed)

teal junco
#

๐Ÿ˜ญ

#

how about we just network entire audio files

#

hopefully nobody sends 1gb audio files over the server

upper vapor
#

uh

#

not simple

upper vapor
grand flower
#

i mean you already do it by streaming audio data

#

why not mmLul

upper vapor
#

streaming != sending the whole shebang at once

wheat flower
#

workshop for scp sl

main zenith
#

is there a Event that check if player changed attachment of the gun or can u just prevent player from changing attachment of the gun?

unique crane
#

You can patch the AttachmentSync

#

To add temporary for yourself

main zenith
#

damn

wheat flower
#

i just had interesting idea

#

why not pool eventargs classes

#

because every event being invoked allocates an eventarg object even if theres no handlers for it

main zenith
wheat flower
#

PlayerUsingItem

#

ev.IsAllowed = false

#

pretty sure that works

#

or you can make a patch

true cedar
worthy rune
#

i believe the problem with pooling them is that some people will hold on to references to event args and process them at a later time

harsh thorn
#

(i do this)

wheat flower
#

i do as well

#

but theres workarounds

harsh thorn
#

yes, copying references to everything into your own variables

#

but is it worth the hassle that pooling eventargs actually matter

worthy rune
#

there was some places where it did matter tho, which is why its still something to look into. most notably the FPC distributer and ValidatedVisiblityEventArgs

upper vapor
wheat flower
#

its just an idea bro

upper vapor
#

Yep

wheat flower
#

if you genuinely think its not worth

#

then fine

#

but i just thought it could be done / interesting

harsh thorn
#

tbh, for validated visability and voicechatting if that may make a difference we could do a "static" eventarg for that that just gets changed or pooled (although thered only be 1 in circulation per call anyway, as its 1 thread)

i highly doubt someone keeps these eventargs for long as you cant really do much with keeping them

wheat flower
#

maybe ref structs with an id that increments

main zenith
main zenith
upper vapor
#

Source generators

#

x3rt

wheat flower
#

then you need a patch

upper vapor
#

Wakey wakey

celest thorn
#

Im working with old plugins and i found out one of them is using RuntimeAnimatorController, how can i reimport the original content into a .anim to use? because i need to save the animation any way i tried to do it automatically to recompile it, it wouldn't work

random scaffold
#

why door.isOpened dont works for gate in hcz049?

#

false

#

but its opened

terse bone
#

So you can use adrenaline without it triggering OnPlayerUsedItemEvent by switching to another item at the end of the animation or by trying to drop it from inventory

celest thorn
#
    foreach (var src in controller.animationClips)
    {
        var dest = new AnimationClip
        {
            frameRate = src.frameRate,
            legacy    = src.legacy,
            name      = src.name
        };
        foreach (var binding in AnimationUtility.GetCurveBindings(src))
        {
            var curve = AnimationUtility.GetEditorCurve(src, binding);
            AnimationUtility.SetEditorCurve(dest, binding, curve);
        }

        foreach (var binding in AnimationUtility.GetObjectReferenceCurveBindings(src))
        {
            var keyframes = AnimationUtility.GetObjectReferenceCurve(src, binding);
            AnimationUtility.SetObjectReferenceCurve(dest, binding, keyframes);
        }

        var events = AnimationUtility.GetAnimationEvents(src);
        AnimationUtility.SetAnimationEvents(dest, events);

        string safeName = src.name.Replace("/", "_");
        string assetPath = $"{controllerFolder}/{safeName}.anim";
        AssetDatabase.CreateAsset(dest, assetPath);
        Debug.Log($"[Importer] Cloned '{src.name}' โ†’ '{assetPath}'");
    }

Someone knows what's wrong with this? because animation cloned is 0/0 keyframes

What im trying to do is converting RuntimeAnimatorController to AnimationController

upper vapor
#

what if you cloned the curves

celest thorn
upper vapor
#

new AnimationCurve(curve.keys)

celest thorn
#

nope

#
private static string ExportControllerClips(RuntimeAnimatorController controller, string schematicName)
{
    const string animationsRoot = "Assets/Animations";

    if (!AssetDatabase.IsValidFolder(animationsRoot))
        AssetDatabase.CreateFolder("Assets", "Animations");

    string schematicFolder = $"{animationsRoot}/{schematicName}";
    if (!AssetDatabase.IsValidFolder(schematicFolder))
        AssetDatabase.CreateFolder(animationsRoot, schematicName);

    string controllerFolder = $"{schematicFolder}/{controller.name}";
    if (!AssetDatabase.IsValidFolder(controllerFolder))
        AssetDatabase.CreateFolder(schematicFolder, controller.name);

    foreach (var src in controller.animationClips)
    {
        var dest = new AnimationClip
        {
            frameRate = src.frameRate,
            legacy    = src.legacy,
            name      = src.name
        };

        foreach (var binding in AnimationUtility.GetCurveBindings(src))
        {
            var oldCurve = AnimationUtility.GetEditorCurve(src, binding);
            var newCurve = new AnimationCurve(oldCurve.keys)
            {
                preWrapMode  = oldCurve.preWrapMode,
                postWrapMode = oldCurve.postWrapMode
            };
            AnimationUtility.SetEditorCurve(dest, binding, newCurve);
        }

        foreach (var binding in AnimationUtility.GetObjectReferenceCurveBindings(src))
        {
            var oldKeyframes = AnimationUtility.GetObjectReferenceCurve(src, binding);
            AnimationUtility.SetObjectReferenceCurve(dest, binding, oldKeyframes);
        }

        var events = AnimationUtility.GetAnimationEvents(src);
        AnimationUtility.SetAnimationEvents(dest, events);

        string safeName = src.name.Replace("/", "_");
        string assetPath = $"{controllerFolder}/{safeName}.anim";
        AssetDatabase.CreateAsset(dest, assetPath);
        Debug.Log($"[Importer] Cloned '{src.name}' โ†’ '{assetPath}'");
    }

    AssetDatabase.SaveAssets();
    AssetDatabase.Refresh();
    return controllerFolder;
}
upper vapor
#

try using SetCurve on the clip instead of seteditorcurve

#

also debug.log if there are any keys in the old curve at all

#

btw

#

couldn't you just

#

Object.Instantiate the clip

celest thorn
#

BUT

#

if i port the same system to work it on what im using it does

#

but i cannot export it

#

because i need the .anim

upper vapor
celest thorn
upper vapor
#

the animation clips

celest thorn
#

and honestly its too important too

#

nope it doesn't

#

nothing

#

this is the unity docs for it btw

ionic prawn
#

im using cedmod and it says my server is whitelisted how should i even fix it

flat vine
#

ask John CedMod

#

visit CedMod discord for help

ionic prawn
#

nvm i fixed it

upper vapor
#

running the player and

#

then trying to export

celest thorn
#

like what im trying to do is simple

upper vapor
#

just get the clips out of the uh

celest thorn
#

Map Editor uses this

#

and still tho they are empty

#

even on MER

#

but they work fine

#

like let me show you

#

if you can

upper vapor
#

EditorUtility.CopySerialized(originalClip, newClip);

random scaffold
#

why hint works stupidly?

upper vapor
#

the hint area isn't fullscreen

#

also new lines clear the indents

random scaffold
random scaffold
upper vapor
#

you copy the align and pos tags for every line

random scaffold
#

..

true cedar
#

iirc

#

u can use line indent

upper vapor
#

yeah it should

#

work

#

but it doesn't

random scaffold
#

its give nothing

#

horizontal works

true cedar
#

huh

random scaffold
#

how fix vertical?

true cedar
#

oh i didnt see the

#

best option is to not use voffset

#

its extremely hard to work with

random scaffold
#

then how?

#

@true cedar

true cedar
#

line height tag

upper vapor
#

yeah

#

or add new lines toomuchtrolling

unique crane
grand flower
#

Is there a specific reason why hints aren't full screen?

random scaffold
#

how i can check player is disguised or not?

unique crane
restive turret
#

Ye obv

hearty shard
#

Scp3114Role

restive turret
#

Otherwise you really cant

hearty shard
#

you can fake a players role

#

to disguise

restive turret
#

fake deez

hearty shard
#

shh

restive turret
#

hi eve

random scaffold
#

or something

unique crane
#

Well you have to kinda store the data yourself

random scaffold
#

why labapi doesnt have method for change appearance

fair rain
#

Where should I post my fork of AdvanceMERTools that uses the new PMER/LabAPI?

random scaffold
#

there

hearty shard
#

thats for exiled to do

restive turret
hearty shard
#

who r u

#

get out

unique crane
restive turret
#

u 2

random scaffold
#

eve moment

random scaffold
fair rain
hearty shard
unique crane
#

Aw

restive turret
#

I think that's fake

#

Fake memories

random scaffold
#

how i can disallow break the door?
doesnt exists ready event or something

slate flume
#

Can I fuck with player rotation yet or nah

worthy rune
#

you can set player rotation with Player.Rotation

slate flume
#

And it's synced with client?

#

Cause when it was NWApi I found out I wasn't able to do that

worthy rune
#

try it and see

slate flume
#

It works with yaw but not pitch

#

๐Ÿ‘๐Ÿผ

grand flower
#

LookRotation will work for pitch

slate flume
#

I directly use TryOverridePosition, which is exactly what it calls anyways

grand flower
#

Works fine for us

#

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

slate flume
#

So you can set vertical rotation AND horizontal rotation @grand flower ?

#

Because if you're telling me LookRotation works for pitch, you're telling me you can set pitch AND yaw

#

Because I can set yaw

true cedar
#

don't remember how

#

check exiled discord ig

slate flume
#

I'm gonna crash out

worthy rune
#

you can set pitch/yaw its through override messages now

#

are you sure the rotation you are setting is actually changing the pitch?

slate flume
#

This is my entire code

#

I mean I'm pretty sure I'm setting the proper rotation

#

Considering I grab it before the server actually does anything

worthy rune
#

the rotation you store doesnt contain the pitch

slate flume
#

Interesting

#

Why am I so dumb why

slate flume
#

Broke the server with this one SunglassesThumbsUp

#

Oh

#

I know

#

Okay what

#

These are the exact same methods implemented by the Player wrapper

#

So why does it not work for pitch

#

It's the same issue as before

slate flume
worthy rune
#

could be that its being overriden after you set it, its hard to tell when your code runs exactly

slate flume
#

Interesting

worthy rune
slate flume
slate flume
#

Prefix and postfix on the serversetrole

worthy rune
#

well thats what the TryOverrideRotation method does iirc

slate flume
#

To make sure it's not being overriden, I'll try a timing.calldelayed on my postfix

#

Well that's

#

Something

#

CallDelayed worked

#

Why is rotation being set after the ServerSetRole call?

#

I really should've learned more C# and programming before I attempted doing all this shit lmao

worthy rune
#

not sure how thats related

#

does your code have to be in a prefix/postfix, why not try using an event like PlayerSpawned for example

slate flume
#

My goal is just to make it so that anytime a player switches between two living roles, their rotation isn't reset

#

So I looked at the SetRole command and saw ServerSetRole

worthy rune
#

you should use events if you can get away with it, you should only patch if you really need to

slate flume
#

I'll try a thing with ChangingRole and Changedrole

#

Same thing

#

That's so odd

#

Doesn't

#

Lemme try to find the right amount of time to wait

worthy rune
#

you could probably just do 0 seconds

slate flume
#

0 didn't work

#

Timing.WaitForOneFrame didn't work

#

The secret is waiting two frames

#

Then it works

#

This isn't even the most lost I've been today

#

Still no clue why that's happening

upper vapor
# slate flume CallDelayed worked

The spawnpoint handler sets the rotation but only horizontal
So on role change (after ServerSetRole) the spawn rotation is set and sent to the client next frame with as spawn data

grand flower
#

even without RoleSpawnFlags.UseSpawnpoint?

upper vapor
#

Good question

grand flower
#

apparently not

#

good to know

hearty shard
#

it is not performant to use exceptions

unique crane
#

Its not that they arent performant

#

its that they are gonna break the server

#

and disconnect client if it happens in some methods

hearty shard
#

that too

#

but shh

#

server breaking is fine

#

100% worth it

upper vapor
fallen orchid
#

Monaspace Radon Medium is much better fr fr

upper vapor
icy knoll
upper vapor
#

Why is that the case bruhh

slate flume
slate flume
#

I use default rider settings

upper vapor
#

what is that warning sign

slate flume
#

Clicking it redirects me to

#

๐Ÿคท๐Ÿผ

#

I thought it was weird too but I got used to it

#

Might I say though, off-topic, y'all are for real my saviors bro I don't know a lot about game mechanics for this game so it's actually so cool that you guys have been helping me out

royal mica
#

it is the size 8

#

increase it to 9 or 10

unique crane
restive turret
#

?

#

David

#

3114 events when

unique crane
#

No news about that my dude

restive turret
#

Sob

#

Events on 079?

royal mica
unique crane
#

oh ok

restive turret
#

Just don't use jetbeansSteamHappy

royal mica
slate flume
restive turret
#

Nano, mc

royal mica
#

Word 2009. You can even have custom syntax highight

restive turret
#

Lmao

slate flume
#

Oh I see

#

I like to have a lot of code on screen at once so I Ctrl - MouseWheel all the way out

#

But it decreases font size to 8

upper vapor
#

omg

#

that looks so weird

slate flume
#

Wow that uh

#

Was no difference

#

Let me try that again

#

I just like being zoomed out

upper vapor
rain isle
#

why are they yelling :(

upper vapor
#

well, not yelling

#

whispering maybe

#

shh

rain isle
upper vapor
#

there's that if

#

flip it

random scaffold
#

there

upper vapor
slate flume
#

Not anymore

upper vapor
slate flume
#

It yells at me when I check this stuff

hearty shard
upper vapor
slate flume
#

Exactly

upper vapor
#

but you're doing a null check

slate flume
#

Yes

#

I know

unique crane
#

I shall say

#

Rider moment

#

bye

hearty shard
#

david

#

ur a david moment

unique crane
#

ur a eve moment

upper vapor
hearty shard
#

this is evephobia

unique crane
#

Yep

upper vapor
#

because the game is dumb sometimes and still invokes the event with a null player?

slate flume
#

You were telling me to unnest my code

#

Yeah no I had other stuff to add

upper vapor
#

yeeeesss

upper vapor
#

but the id can't be two at the same time

#

so if you else if the second branch

#

you could invert the if

slate flume
#

What

upper vapor
#

cancel the event and return

slate flume
#

I have two separate things I do under different conditions

upper vapor
#

under different conditions

#

see?

slate flume
#

Yeah which is why the if statements exist

upper vapor
#

there isn't a scenario where both ifs will execute

slate flume
#

Yeah

upper vapor
#

so if you change the second one to else if
Rider could suggest that you invert the if

slate flume
#

No rider suggestions

#

๐Ÿคท๐Ÿผ

upper vapor
#
if (fall)
{
    cancel();
    return;
}

if (tesla || crushed)
{
// invert this
}
#

put the simple conditions first

#

it's generally easier to read if you filter out the short conditions

#

hence the name guard clause

slate flume
upper vapor
#

precisely

slate flume
#

Thanks king ๐Ÿ™๐Ÿผ

upper vapor
slate flume
#

I'm not good at unnesting code when it comes to things like this lol

#

I did watch a dope video about it though

upper vapor
#

(another) great code aesthetic video

slate flume
#

He gave me major inspiration

#

I reformatted my coin gambling code to separate the events

#

So I can handle them in different functions

#

And it's so much easier to read

upper vapor
slate flume
upper vapor
#

i mean

#

if it's a one-liner

slate flume
upper vapor
#

i usually don't add an extra return or continue

#

up to preference

slate flume
#

Is not one-liner

upper vapor
#

oh

#

nvm

#

xd

slate flume
#

Lol

#

Peak coding

hearty shard
upper vapor
#

uh

slate flume
#

Fun fact?

upper vapor
#

yes

#

eve will tell you

hearty shard
#

if (!PlayersIgnoring.Remove())
PlayersIgnoring.Add()

upper vapor
#

i would too

hearty shard
slate flume
#

๐Ÿ˜ฎ

upper vapor
#

yep

slate flume
#

HOLY SHIT

upper vapor
#

nanoseconds faster

hearty shard
#

and if its a hashset the reverse also works (if no add then remove)

upper vapor
#

also you have a semicolon there not anymore

slate flume
#

This is why you're the GOAT

hearty shard
#

if i was the goat i wouldnt be so poor ๐Ÿ’”

upper vapor
slate flume
#

So uh

#

Dumb question

#

How do I check a KeycardItem against a Door

hearty shard
hearty shard
#

secret api has

upper vapor
slate flume
#

I have secret api!

upper vapor
#

i hate school

slate flume
#

How use

hearty shard
#

wait

#

what r u doing

upper vapor
#

school

hearty shard
#

i need to know

upper vapor
#

๐Ÿ˜ญ

#

not rn

hearty shard
#

before i give wrong answer

#

not you

upper vapor
#

cuz sunday

slate flume
#

Me?

hearty shard
#

yes

slate flume
#

I'm doing remote keycard

hearty shard
#

what r u using it for

slate flume
hearty shard
#

oh

#

thats

#

easyyy

slate flume
#

Yeah

#

I just don't wanna overcomplicate

hearty shard
#

player.HasDoorPermission(door.Base)

slate flume
#

Lmao peak

hearty shard
#

DoorPermissionCheck.Bypass | DoorPermissionCheck.Role | DoorPermissionCheck.FullInventory

#

give it that too

#

after door base

upper vapor
#

overloads for labapi

hearty shard
#

default only checks held item

#

not full inv

slate flume
#

Gotcha

hearty shard
#

yeah

#

actually

#

wait

#

DoorPermissionCheck.All

#

๐Ÿ˜ญ

#

just use that

slate flume
#

๐Ÿ˜„

hearty shard
#

bypass, scps and keycard items are now considered !!!

slate flume
#

EVE thank you for SecretAPI

#

Very cool

hearty shard
#

yes

slate flume
#

Very nice

hearty shard
#

its just public versions of my private APIs

#

lol

slate flume
#

I would lose my shit if I had to make my own SSSS wrapper

hearty shard
upper vapor
slate flume
#

Okay so uh

#

What about lockers and generators lmao

hearty shard
#

same thing

#

just instead of door.base

#

its generator.Base

slate flume
upper vapor
#

same method name,

hearty shard
#

it wasnt named well

upper vapor
hearty shard
upper vapor
#

you need the chamber there

hearty shard
#

oh

#

right

slate flume
hearty shard
#

yeah

slate flume
#

Y'all make my life like 10x better

hearty shard
#

i didnt know what to call the method ngl

#

i went off of the IDoorPermissionRequester interface lol

slate flume
#

I mean technically speaking it always is a door

#

So you're good

#

What generator event do I latch onto lmao I don't wanna trial and error

hearty shard
#

idk

slate flume
#

Gotcha

#

I'll test some shitg

upper vapor
#

eve

#

how does this build

#

i hate how you

#

whatever

slate flume
#

EVE

#

I can't open D-Class cells anymore lmao

#

I'm locked in

hearty shard
upper vapor
#

you

#

...

#

should use nuget

hearty shard
#

i havent swapped to it

#

yet

#

didnt bother

upper vapor
#

what if i pr

#

that too

hearty shard
#

go ahead

hearty shard
#

oh

#

yeah i hate doing the other thing

#

tbh

upper vapor
#

okay

hearty shard
#

stylecop :3

upper vapor
#

oh how i hate writing boilerplate docs

#

i've done that enough

hearty shard
upper vapor
#

but then i need to add a using

hearty shard
#

guh

upper vapor
#

i guess that's better

hearty shard
#

a single using....

upper vapor
#

yes

#

i need a using for that

#

okay i'll add the using

slate flume
#

Why do generator events not have ev.CanOpen?

random scaffold
#

use isalllowed

slate flume
#

Doesn't work

random scaffold
#

nw moment

slate flume
#

What if I change doorpermissionsflags on the generator to fake it

upper vapor
#

you can cancel the event and then open it yourself or play the beep

slate flume
#

ev.IsAllowed = false; on the PlayerUnlockingGenerator event doesn't prevent them from interacting with the generator lmao

upper vapor
#

bruh

slate flume
#

Ikr

#

ev.IsAllowed appears to do literally nothing in the OnPlayerUnlockingGenerator event
My guess is the only thing it works for is preventing a player from unlocking the generator with a keycard if you want to do that for some reason

upper vapor
#

check github issues

slate flume
#

Hahahaha

#

Love it

#

I was right

#

Think I might just transpiler change the if(!ev4.IsAllowed) flag = false; to flag = ev4.IsAllowed

upper vapor
hearty shard
#

in ur pr

#

can u just make All = -1

#

will make it give all trolling

#

even if we add

#

i think

#

i mean

#

i dont think sl will ever need any more permission checks

upper vapor
#

isn't Bypass | Role | FullInventory good

#

o

#

i see your point

#

however

#

idk

#

fine

hearty shard
#

idc if u add it

#

just thought it

nova cosmos
#

how does one trigger a round end with only one player?

hearty shard
#

config

#

change it to allow it

#

or if u want to code it Round.End()

nova cosmos
#

I cant find the option in the config

upper vapor
#

end_round_on_one_player

#

or somethng

hearty shard
#

end_round_on_one_player: true

nova cosmos
#

thanks

teal junco
#

why doesnt Cassie have a vanilla custom subtitle part?

#

like there is one already but it just straight up doesnt work

upper vapor
#

uh

#

nope :3

#

oh wait

#

can you show what you're doing

#

also @hearty shard

hearty shard
upper vapor
#

that's how your git tree looks like

#

a railway station

hearty shard
#

guh

upper vapor
#

look at it

#

rotate

#

they look the same

#

-# the rails

slate flume
#

Wrote my first transpiler patch ๐Ÿ’ช๐Ÿผ

#

It was easier than I thought it'd be, but also I wasn't doing anything crazy

#

It helps that I used to code Assembly lmao

#

Feeling pretty high and mighty ngl

teal junco
#

i assume youre supposed to use string data with it but that does nothing

upper vapor
#

uh

#

NW

#

:3

#

i don't think it's possible to mix translated and custom subtitles currently

teal junco
#

theres a subtitletype called "Custom"

#

and when I send it as part of a SubtitlePart with a string, it just doesnt do anything

hearty shard
#

david...

teal junco
hearty shard
#

can the wrappers for doors and stuff provide IDoorPermissionRequester

#

without .Base call

#

i wanna have a single method that can be called with all of them without requiring .Base call

teal junco
#

is base call unperformant or just ugly?

hearty shard
#

or

#

i add a method for every wrapper

upper vapor
#

or accept my PR :3

hearty shard
#

however

#

that does what i want to avoid

#

so im asking nw for it

#

dw ur pr will be merged

upper vapor
hearty shard
#

at some point...

#

just want NW to make it easier for stuff

#

like this

upper vapor
#

not sure if they wanna return those base-game stuff

restive turret
#

Like deez

upper vapor
#

a wrapper interface would be okay i guess

restive turret
#

Waiter waiter more wrapper please

upper vapor
#

the base-game interfaces look weird on the wrappers but they are als omore convenient

upper vapor
teal junco
hearty shard
#

theres a Ffmpeg wrapper for C# too

teal junco
#

Yeah

upper vapor
#

it's like being able to play the piano using a violin toomuchtrolling

hearty shard
#

C# libraries like to wrap stuff

upper vapor
#

wait no

hearty shard
#

a lot of modding communities too

upper vapor
#

that's

#

nevermind

hearty shard
#

what

#

axwabo pls seek help

upper vapor
#

i'm tired

teal junco
#

its just like, imagine having an object whose entire job it is to call methods for another object and it provides only like 1% new functionality

#

its not funny to you probably

#

but it is to me

upper vapor
restive turret
hearty shard
#

real

hearty shard
#

is not supported a real thing

#

dont think so

upper vapor
#

bru

hearty shard
#

damn

upper vapor
#

NotFiniteNumberException

teal junco
teal junco
upper vapor
#

ExceptionAsNaNMarshaller<T>

upper vapor
#

decades

#

i don't have to think to state that toomuchtrolling

teal junco
#

Micrisoft skcus

upper vapor
#

prove it

#

-# hey gemini rewrite all c# classes

#

cuz now you know the requirements and what you need

teal junco
upper vapor
#

and which .NET version toomuchtrolling

upper vapor
worn gull
#

Hi! How can I make an animation for the player or the camera? I mean I want to make a cinematic video but filmmaker is not the best because I can't save it also it would be much easier to make it in Unity. Is there any way doing it?

unique crane
#
  • Give them 0 gravity and keep teleporting them
#

Cant think of anything better

worn gull
#

Alright, thanks, it just came to my mind that with a plugin I can add a primitive to the player as a parent is it possible to add the player to a primitve and then I can animate the primitive?

unique crane
#

You can parent primitive to something

#

not opposite

restive turret
#

Also give them disabled effect

unique crane
#

Whoever came up with that name bruh

worn gull
#

That's unlucky, thanks

unique crane
#

ensnarled

restive turret
#

Enshitted

true cedar
#

since the net48 dictionary sucks

teal junco
#

how so

true cedar
#

no support for some basic operations

#

like

#

there's also no "swap" method or get or add method

#

(e.g bool TrySwap(TKey key, out TValue value))

slate flume
#

Setting AutomaticActionModule.Cocked = true; and then running .ServerUpdate() isn't working to cock my weapon ๐Ÿ˜ญ

slate flume
#

Okay pro tip for anyone in the same boat:

#

ServerCycleAction has everything you need in one little function it's fuckin awesome

grand flower
#

good catch

slate flume
unique crane
#

You need to run resync

#

I think..

slate flume
#

I did .Cocked = True then .UpdateServer

unique crane
#

No

#

That one only processes shot requests

slate flume
unique crane
#

Hm?

slate flume
#

It calls .ServerResync

#

Well in the else of one of the statements so I'm probably wrong

#

I wasn't looking at it too hard lol

stuck peak
tulip kiln
#

therefore invalid

hearty shard
#

xert

#

why were u 4 months back

#

i didnt realize when i replied to smth there ๐Ÿ˜ญ

#

i blame xert here

tulip kiln
#

Is it intended that disallowing WaveRespawningEvent will not cancel the base-game WaveManager.OnWaveSpawned event?
This will cause a few interesting things:

  1. SCP-127 will react to a spawn wave that didn't spawn.
  2. The target faction will have its respawn token taken from them.
  3. The timer for the disallowed wave will increase as if it spawned.
  4. Mini wave will start counting down to its check for whether or not the faction's objective was failed.
worthy rune
#

probably not intended, you can make an issue on the labapi github if you want

unique crane
#

5 minutes fix

hearty shard
unique crane
hearty shard
#

btw david someone pointed it out in exiled, but environmental hazards check distance every tick

#

why not use a collider?

#

honestly same could go for Escape

tulip kiln
#

That would most likely make the most sense

#

Okay I was too vague with this one

hearty shard
tulip kiln
#

Give me a second

true cedar
#

distance checks are insanely fast

#

much faster than, say, bounding box collision checks

hearty shard
#

is it?

tulip kiln
unique crane
hearty shard
#

idk about unity

unique crane
#

so -loud buzzer-

true cedar
#

a collider still needs to do collision checks

hearty shard
true cedar
#

which can be expensive afaik

hearty shard
#

fair enough

unique crane
#

I was saying it for the FpcPositionDistributor

upper vapor
hearty shard
#

i thought u said the - in general

#

whoops

unique crane
tulip kiln
#

and disallowing with a delay the length of the animation is a bit hacky

unique crane
#

Okay then

slate flume
#

I'm trying to change 3114's spawnpoint by latching on to the ChangedRole event and checking roles spawn flags but uh

#

The role spawn flag is empty

#

When I use Assign Inventory and Use Spawnpoint in the RA Panel

upper vapor
#

why don't you log the flags

slate flume
#

Wdym

upper vapor
#

no need for Enum.GetName

slate flume
#

Okay I'll do that

upper vapor
#

enum tostring can tostring to multiple ones

#

there might be flags set but you don't see them cuz the combined flags aren't defined

slate flume
#

๐Ÿ‘๐Ÿผ

#

Testing now

#

Oh okay

#

You're right

#

How is it setting both

#

How do I check for that

upper vapor
#

either .HasFlag()

#

or in Rider you type a dot after the variable and press enter on the flag you want to check

slate flume
#

Thank you!

upper vapor
#

e.g.

flags.HasFlag(RoleSpawnFlags.AssignInventory)
(flags & RoleSpawnFlags.AssignInventory) != 0
#

the latter runs a little bit faster

slate flume
#

Okie I'll change it then

upper vapor
#

check if it works cuz i wrote that from memory lol

slate flume
#

Testing now ore_sunglas

#

A triggered but not B

#

Oh

#

I know

#

Let me try

hearty shard
slate flume
#

Why even have all then lol

hearty shard
#

so you can just get all

#

or check all

#

or set all

slate flume
#

But

hearty shard
#

without having to bit wise operation it

slate flume
#

If ev.SpawnFlags = AssignInventory and UseSpawnpoint, then ev.SpawnFlags != All

#

So why have all

hearty shard
#

All is both

#

combined

#

its just a value

#

aka -1

slate flume
#

Then why did my check not work

hearty shard
#

All is if you set to All

#

its value is -1

#

so only if you set to all in code really

slate flume
#

My whole thing is like

#

[AssignInventory & UseSpawnpoint] != All

#

That's dumb

#

Because that IS all the spawn flags

hearty shard
#

-1 is all bitwise

#

will always return true on HasFlag

#

its used for code

#

so instead of RoleSpawnFlags.AssignInventory | RoleSpawnFlags.UseSpawnpoint

#

you just .All it

slate flume
#

I just wanted to be able to check ev.SpawnFlags == RoleSpawnFlags.All

#

But that doesn't ever return true

#

Unless I manually set it to all beforehand

#

Which defeats the purpose

hearty shard
#

it does if you code it to all

hearty shard
#

i think some things use All

#

but when you do it through RA

#

its combined

slate flume
#

๐Ÿคท๐Ÿผ

hearty shard
slate flume
#

I get your point

#

My point is why can't it be simpler

#

Like I get how it works, and why it works

#

It just could be better

hearty shard
#

the reason behind using All = -1

#

is that

#

it means if you update it

#

ever

#

it will always work

slate flume
#

True but has this ever changed

hearty shard
#

if you add a new enum value to it

#

no but its still there for it

slate flume
#

At the cost of making it slightly more complicated to check spawn flags

hearty shard
#

wait

#

what r u checking All for

#

if ur changing spawnpoint wouldnt you just use the spawnpoint flag

slate flume
#

I didn't know RoleSpawnFlags was something that was bitwise so I was just checking if it was UseSpawnpoint or All

hearty shard
#

ev.SpawnFlags.HasFlag(RoleSpawnFlags.UseSpawnpoint)

slate flume
#

This also works

hearty shard
#

yeah uhhh

#

it will always be like that

#

it has to be bitwise

slate flume
#

Yeah I was just confused as to why ev.SpawnFlags == RoleSpawnFlags.All wasn't working

#

And then I realized RoleSpawnFlags.AssignInventory & RoleSpawnFlags.UseSpawnpoint != RoleSpawnFlags.All

#

Which upsets me

hearty shard
#

im stupid

slate flume
#

So am I bro

#

Dw

unique crane
hearty shard
unique crane
#

You wouldnt do that

hearty shard
#

i blame you david

unique crane
#

Actually I believe I changed RoleSpawnFlags

#

It might be my fault XD

hearty shard
#

no uh

upper vapor
hearty shard
#

it was related to smth else

upper vapor
unique crane
#

Oh no I didnt chage that

#

I changed something else nvm

hearty shard
#

Oh

#

btw

#

david

celest thorn
#

if i apply the layermask to the primitive does it work ghostly fine?

#

or cause desync?

hearty shard
#

IUsageProvider

#

why doesnt it show ingame

#

it wouldnt happen to be

#

fully client sided would it

upper vapor
#

show whole class

hearty shard
#

fym show it all

#

๐Ÿ’”

upper vapor
#

uh

hearty shard
upper vapor
#

should work

hearty shard
#

well it doesnt

upper vapor
#

oh right

#

you have to define that on the parent command

hearty shard
#

oh

#

right

upper vapor
#

i was like "but there's a base-game give command already"

#

right

hearty shard
#

bleh

#

ok how do i

#

make it work for subcommands Hmm

upper vapor
#

gotta list all the usages

hearty shard
#

damn

upper vapor
#

you can't do that afaik

unique crane
#

As its not possible now

unique crane
#

Like command suggestion in RA

#

that has more than 1 word

#

like sub commands

hearty shard
#

ah

upper vapor
#

huh

celest thorn
#

can you set ghostly to work on primitives?

unique crane
celest thorn
unique crane
#

Well so you can walk through them?

celest thorn
slender lynx
#

we need collision to be enabled until a player has a certain effect

celest thorn
#

Wait

#

so you are telling me if i make a BoxCollider Convex

hearty shard
#

change its flags

#

primitive flags

celest thorn
#

you cannot?

#

remember

#

you cannot fake syncvar that

hearty shard
#

u cant?

#

why not

celest thorn
#

of when it got introduced

#

that everyone couldn't do it

#

it syncs back

slender lynx
#

you've never been able to

hearty shard
#

not a constant resync

#

good to know

celest thorn
#

It checks probably

#

idk

#

its SL

#

none knows the magic behind the client

unique crane
#

Let me see

unique crane
celest thorn
#

yea i know

#

you can

#

we cannot

hearty shard
celest thorn
#

if i could TOUCH that source code

hearty shard
#

unfortunately

#

this is server side

celest thorn
#

i could do great things

hearty shard
#

but idk why client would beg for a resync constantly

celest thorn
inner citrus
celest thorn
#

Honestly

slender lynx
#

(de)optimization

celest thorn
#

im not surprised

#

if thats the case

#

or if they check if they are the same on the server

upper vapor
#

fake sync flags

celest thorn
#

because thats probably whats happening

upper vapor
#

should be possible

celest thorn
hearty shard
upper vapor
#

what

hearty shard
#

it might

celest thorn
upper vapor
#

why would it...

hearty shard
#

but i dont think so

celest thorn
#

on server and client

#

for desync