#plugins-dev-chat

1 messages · Page 169 of 1

slate flume
#

My english teacher use to take my notebook away so I'd pay attention

celest thorn
#

but they never

slate flume
#

You had your own PC?

celest thorn
#

because they couldn't prove

celest thorn
#

because they allowed it

restive turret
celest thorn
#

my books where so heavy

slate flume
#

Damn that's dope

#

I live in a rural area so I had to save up to build my own PC

#

It was dope but I only got it like 2 years ago

slate flume
#

I used to spend obscene amounts of money on office supplies cause the only thing I could do was like pen and paper math

#

I went through dozens of notebooks

restive turret
#

As far as I know and remember always had PC when we are in current
place

slate flume
#

Computers are dope

celest thorn
#

yea ig

slate flume
#

I've had a lot of stints in different computer-based hobbies but I never got past like intermediate with any of it cause it gets boring after a while

restive turret
#

And played unreal tournament 99 on it

slate flume
#

People who can dedicate themselves to one thing their whole lives have my respect

celest thorn
#

like embedded is not for me

slate flume
slate flume
#

And I don't wanna dedicate my whole life to some niche improvement that'll leave me as a footnote in some book a hundred years from now

#

And I'm not rich lmao so that rules that out

#

I'm just here to have a good time yk

upper vapor
#

Papyra

celest thorn
upper vapor
#

Bruh

#

PyraColonThree

#

Problem solved

celest thorn
restive turret
celest thorn
restive turret
celest thorn
restive turret
#

I have nothing to do with triangles!

celest thorn
restive turret
#

Also

#

Please send what events you wish to be added

#

So can add more into backlog

#

(and focus on that instead of uni)

celest thorn
restive turret
#

LabEvents

celest thorn
#

im sorry but i never asked for events?

restive turret
#

I Know

sacred sierra
celest thorn
#

and i don't play hypixel much

sacred sierra
#

hypixel skyblock is the only thing i really enjoyed on hypixel

restive turret
#

I got banned in hypixel

#

And never enjoyed it

sacred sierra
restive turret
#

bedwars and maybe some murder mysteries and shit like that

#

The grinch event was my favorite of all time

sacred sierra
restive turret
#

Tbh I never seen why would I play skyblock in a server

#

Only good with friends, I dont really play MC alone

#

Gets really boring

#

Even if play mod pack or gamemode

sacred sierra
#

it is skyblock only in like first 5 minutes

restive turret
#

Still not validate that i continue playing

sacred sierra
restive turret
#

You would be surprised but i don't really like rpg

sacred sierra
#

im just saying its very different from other hypixel minigames

restive turret
#

Ye ik

#

I watched videos of it

#

Seen how the economy was going

upper vapor
celest thorn
restive turret
#

😋 cooked ax

celest thorn
upper vapor
celest thorn
#

idk what that even means

upper vapor
#

Literature shit

upper vapor
#

-# 40%

#

Nyomokban tartalmazhat agysejteket
-# may contain braincells

royal mica
#

please dont

restive turret
#

may contains fibre cable

upper vapor
upper vapor
royal mica
#

Agysejtek is bad for the health

upper vapor
restive turret
#

Howdoyouknow

#

Have u tried it

upper vapor
#

But braincells in brain != eaten braincells

royal mica
#

I had Agysejtek but then I became a programmer and lost it all

upper vapor
restive turret
#

Real

upper vapor
#

Matter

#

Get it

#

They're not real

restive turret
#

Anti matter

upper vapor
#

Kek

#
<park>
    <a></a>
</park>
royal mica
#

i hate you

celest thorn
# royal mica https://tenor.com/view/half-life-in-the-end-gif-26400303

This is a video I did for a contest machinima.com was hosting some time back
(EDIT: if I remember right, it was a tribute to Eli contest, which I did not even place in because it was rejected for copyright music, right at the start of YouTube really starting to crack down on copyright music). .. That made me make my own silly music, because I ...

▶ Play video
upper vapor
celest thorn
restive turret
upper vapor
restive turret
#

Discord didn't load half of the messages again

upper vapor
#

Xd

restive turret
#

I swear, I check this channel and like it doesn't load until i close and reopen

restive turret
#

That is utub

upper vapor
#

No, i selected this chord

royal mica
#

not using revanced smh

restive turret
#

999+ notif

#

Crazy

restive turret
royal mica
#

I'm using like 3 yr old client and still works LULE LULE

restive turret
#

So i been using it in browser

icy knoll
#

revanced is peak

#

i have to reinstall tiktok every time i update tho otherwise it becomes a laggy mess

restive turret
#

Real

icy knoll
#

better than instagram reels which is just racist slop

celest thorn
#

Tiktok 90% of the time is ads

icy knoll
#

i tend to find tons of gems on tiktok

icy knoll
#

so it's pretty peak

restive turret
#

Im glad i dont use either

celest thorn
icy knoll
#

revanced also removes those

restive turret
celest thorn
#

Sadly ios and i should sideload it every 7 days which ngl i tend to forget

pulsar locust
#

Imagine not having an iPhone with trollstore

celest thorn
#

And ngl i don’t wanna waste money

pulsar locust
celest thorn
#

The cert stuff is

pulsar locust
pulsar locust
#

Since trollstore is in a privileged container

#

at least that's how it worked on like iOS 15 lol

celest thorn
#

The auto sign is until 17.0

#

It uses a cve

#

But mine rn is

pulsar locust
celest thorn
#

Im waiting for a new cve to get out

#

Because im not updating anymore

#

Last time it did it automatically

restive turret
celest thorn
#

It has been named since day one

#

Like this

restive turret
#

My one is "Redmi Máté"

#

Bc it's a redmi phone

celest thorn
#

My old phone was “i like dudes”

upper vapor
#

*300 MB

#

i'm gonna kill the fucking ISP

#

trying to anydesk on 3mbits/s

upper vapor
#

and then

#

move to life

icy knoll
#

smh

restive turret
#

Shaking my phone

upper vapor
#

that's so cool

#

thanks unity

hearty shard
warped prairie
#

Just hold on man smh

sweet flax
#

how to do collision detection i had an idea to make a primitive and attach a monobehaviour with OnCollisionEnter but i think i would need to make the primitve collidable i want it to work like a zone

restive turret
#
PrimitiveObjectToy primitive = PrimitiveObjectToy.Create();
        primitive.Flags = AdminToys.PrimitiveFlags.Visible;
        primitive.Color = Color.white;
        primitive.Type = PrimitiveType.Sphere;
        primitive.MovementSmoothing = 100;
        Timing.CallDelayed(0.1f, () =>
        {
            if (primitive.GameObject.TryGetComponent(out Rigidbody rigidbody))
                rigidbody.isKinematic = false;
        });
        var collider = primitive.GameObject.AddComponent<SphereCollider>();
        collider.isTrigger = true;

// Your funny component here
primitive.GameObject.AddComponent<AutoPickupComponent>();
soft turtle
#

Which method is called when the server restarts?
For example, when the RestartInNextRound command is specified.

upper vapor
upper vapor
#

you can spawn the primitive, and one frame later, set _collider.isTrigger to true

#

attach your custom component to the collider's GO

restive turret
#

That can work too

#

Mine prob overcomplicatied

upper vapor
#

yea

sweet flax
upper vapor
#

also make sure to set the flags not to have Collidable before spawning

#

wait

#

you don't even need a primitive toy if you don't want it to be visible

upper vapor
#
var go = new GameObject("amogus")
{
    transform =
    {
        position = pos,
        rotation = rot,
        scale = scale
    }
};
go.AddComponent<BoxCollider>().isTrigger = true;
go.AddComponent<SussyCollisionCheck>();
restive turret
#

Ah ye

upper vapor
#

spawning a primitive looks cleaner though

restive turret
#

That was before I wanted to see where is it on my client

upper vapor
#

i cannot see

#

i'm legally blind

restive turret
#

Thats why it was leftover code

upper vapor
#

are you gonna eat it

restive turret
#

Ye

#

I cooked it

#

Now can be eaten

upper vapor
#

don't overcook it

#

-# next time

soft turtle
#

Which method is called when the server restarts?
For example, when the RestartInNextRound command is specified.

hearty shard
soft turtle
hearty shard
#

ServerStatic.StopNextRound

soft turtle
hearty shard
#

but uh, id still check the labapi implementations before going through basegame

hearty shard
restive turret
hearty shard
#

i see

upper vapor
soft turtle
#

What is this room called? RoomName.EzOfficeLarge?

boreal snow
#

This gets called when the server is online and awaiting players.

#

I use it in my plugin (#1446680094939545642) to clear an array of player IDs when the round restarts, given that the setting in the config is enabled.

hearty shard
restive turret
#

Tbh the Enabled only runs full restart

hearty shard
restive turret
#

And every server startup

hearty shard
#

but

boreal snow
hearty shard
#

i dunno

restive turret
#

Tag the user and ask idk

hearty shard
boreal snow
#

true

#

I'm currently trying to port SrLicht's RemoteKeycard plugin to LabAPI... surprisingly not that much work, just gotta rename a few event handlers and stuff.

#

Does anyone else here strictly use C# 10.0?

upper vapor
restive turret
boreal snow
upper vapor
#

Oh no j*va

#

(Not surprised)

boreal snow
boreal snow
upper vapor
#

But yeah collection expressions are fire, you should totally try them

upper vapor
#

NullPointerException when querying for your java knowledge

boreal snow
#

true

sacred sierra
upper vapor
#

yeah that happens

celest thorn
#

I love JAVA

#

(Now oracle release my family please)

#

the JVM is the best idea ever please we need MORE and more more jvm in our lives

upper vapor
spare zodiac
restive turret
#

Hey that's my picture

turbid socket
#

how can i make primitive non collidable to specific player?

restive turret
#

FakeSync!

tulip kiln
#

Though it would be better if you would make it non-collidable on the server and then faked that it collides for all other clients

#

otherwise be prepared for desync ultimate

tulip kiln
#

Can't believe Axwabo copied my response 7 minutes ago

#

😔

turbid socket
#

i never did it before

upper vapor
upper vapor
teal junco
grand flower
teal junco
grand flower
#

Luau is very compatible with Lua

teal junco
#

it was mad crazy

grand flower
#

There are some changes but nothing incredibly bad

#

Lua is compatible with Luau, Luau to Lua takes some changes but not a full rewrite

teal junco
#

for implying Roblox is uniquely evil for not being compatible with UE or Unity

grand flower
#

thats dumb

upper vapor
#

Amazing language

#

Looks like the uh

upper vapor
grand flower
#

so you're right heh

#

TempleOS (formerly J Operating System, LoseThos, and SparrowOS) is a biblical-themed lightweight operating system (OS) designed to be the Third Temple from the Hebrew Bible. It was created by American computer programmer Terry A. Davis, who developed it alone over the course of a decade after a series of manic episodes that he later described as...

upper vapor
#

Lmao

carmine prawn
#

Why is there a slight lag when the player is first set to SCP106?

carmine prawn
#

wAiT

#

Why MaxHumeShield = 0 on roundstarted?

unique crane
waxen kayak
#

program with unsafe!

upper vapor
hazy kelp
#

do you know why this is happend?

tulip kiln
#

It's due to rendering priority, someone explained this before

#

here

still notch
unique crane
#

Fixed next update :3

still notch
slate flume
#

At least that's what I'd assume

hearty shard
#

where is one even checking this

#

player.MaxHumeShield?

carmine prawn
#

me

#

💀

#

I used IHumeShieldProvider to give the SCP an extra shield, but it doesn't restore properly upon respawning

spare zodiac
#

@feral haven is that the Xaze of 87?

rain acorn
#

☠️

carmine prawn
upper vapor
#

why do you use a status effect for setting max hs instead of just changing it directly?

slate flume
#

This could mean any number of potential scenarios

#
  1. Hume shield is not changed from base game values
  2. Hume shield is changed from base game values but isn't able to return to base game values after a role change
  3. Hume shield isn't changed from base game values initially, but is able to be changed after the second respawn
  4. Hume shield is working properly but not properly scaling with health
  5. Hume shield changes fully work initially, including scaling, but fail after a role set
    ...
#

You have not thoroughly explained your goal, nor what has gone wrong

slate flume
#

There's a reason I asked you to elaborate, writing code doesn't happen in a complete vacuum

#

There are 15 different ways to do the same thing

#

Different methods are better for different situations

#

If you would explain what you hope to achieve, what you've done to achieve that goal (including what has gone wrong), and the context behind that, then I could give better advice

celest thorn
#

meow

carmine prawn
slate flume
upper vapor
#

just add a hs process then

celest thorn
slate flume
#

That's an AHP thing, no?

celest thorn
upper vapor
#

"you have no place on our platforms"

#

-# why is there no such gif

celest thorn
carmine prawn
slate flume
upper vapor
#

right

#

soooo

celest thorn
#

wait

upper vapor
#

it's cooked

celest thorn
#

nope

#

you need

#

to store it in a dictionary

#

or else do an offset

upper vapor
#

you can add an ahp process though which acts the same as hs

celest thorn
#

if you know how much it is

slate flume
#

And change the HS Max getter to return an added value

#

It's the simplest solution

carmine prawn
#

trying now

slate flume
# carmine prawn > trying now
[HarmonyPatch(typeof(DynamicHumeShieldController), nameof(DynamicHumeShieldController.HsMax), MethodType.Getter)]
public class ExtraHumeShield
{
    private static readonly IReadOnlyDictionary<RoleTypeId, float> ExtraHumeShieldByRole =
        new Dictionary<RoleTypeId, float>
        {
            [RoleTypeId.Scp049] = 100f,
            [RoleTypeId.Scp939] = 200f
        };
    public static float Postfix(float value, DynamicHumeShieldController __instance)
    {
        if (ExtraHumeShieldByRole.TryGetValue(__instance.Owner.GetRoleId(), out float extra))
            return value + extra;
        return value;
    }
}
#

Tested it, it works

#

The only caveat is that when one of those SCPs spawn, they spawn with their current hume shield as their old max, rather than the new max

#

That can be easily fixed by updating their hume shield after spawning though

#

I'm not sure where in the code that happens so that's what I've got for now

carmine prawn
#

yea, thanks, so this is the first question I wanted to ask...

slate flume
carmine prawn
#

that's why I want Timing.CallDelayed (1f, () => Player.HumeShield = Player.MaxHumeShield

slate flume
#

What?

#

You really gotta work on prefacing your statements

carmine prawn
#

sorry, my bad

slate flume
#

It's all good just it's easiest when the initial goal is clear

#

A clear statement of what you're looking for and potentially the difficulties you have had is what's needed

#

In this case we've done the former, so I just need the latter

carmine prawn
#

I'm not good at expressing myself in English (use machine translation), so

slate flume
#

All good, you're doing a good job at phrasing, just need to be more direct in your statements

#

It's hard to infer your meaning because I don't have the same context you have about what your goals are

carmine prawn
#

thank so much

#

First, I want to give SCP an additional HS mechanism independent of the original HS mechanism (the lower the health, the more shields)

carmine prawn
restive turret
#

So basically you could add (hp as 500 give 1000 shield

#

Or even remove or change fields

carmine prawn
slate flume
slate flume
#

Well for now the easiest way is just by adding a Timing.CallDelayed(Timing.WaitForOneFrame, () => player.HumeShield = player.MaxHumeShield)
I'll look around the code to see if I can't find where it's happening

carmine prawn
restive turret
#

Probably because you have to wait atleast 1 frame?

#

I think I had similar problem before with any stats and I just added more waiting

carmine prawn
#

at least 0.2 seconds, in my tests

upper vapor
#

wait for two frames

slate flume
restive turret
#

Yes

#

Every system have to set up, player have to spawn, so that thing takes time

slate flume
restive turret
#

Well good luck on that

#

Create a stopwatch and check every frame that the humeshield when not 0

upper vapor
#

stopwatch notLikeThis

restive turret
#

Or whatever

carmine prawn
#

Also, it seems that the more players respawn at the same time, the longer the wait becomes...

#

💀

#

0.2 seconds is still not enough for round start of 30 player

restive turret
#

Try run in onplayerroleset ?

restive turret
carmine prawn
slate flume
#

Oh I think I got it

#

I need to test first

#

I'm gonna send a rough version and then clean it up

slate flume
#
[HarmonyPatch]
public class ExtraHumeShield
{
    private static readonly IReadOnlyDictionary<RoleTypeId, float> ExtraHumeShieldByRole =
        new Dictionary<RoleTypeId, float>
        {
            [RoleTypeId.Scp049] = 100f,
            [RoleTypeId.Scp939] = 200f
        };

    private static float ModifyMaxHumeShield(float oldValue, ReferenceHub player)
    {
        float newValue = oldValue;
        if (ExtraHumeShieldByRole.TryGetValue(player.GetRoleId(), out float extra))
            newValue += extra;
        return newValue;
    }
    
    [HarmonyPostfix]
    [HarmonyPatch(typeof(DynamicHumeShieldController), nameof(DynamicHumeShieldController.HsMax), MethodType.Getter)]
    public static float SetNewHumeShield(float value, DynamicHumeShieldController __instance) => ModifyMaxHumeShield(value, __instance.Owner);

    [HarmonyPatch(typeof(DynamicHumeShieldController), nameof(DynamicHumeShieldController.SpawnObject))]
    public static IEnumerable<CodeInstruction> Transpiler(IEnumerable<CodeInstruction> instructions, ILGenerator generator)
    {
        var codeMatcher = new CodeMatcher(instructions, generator);
        codeMatcher.MatchStartForward(CodeMatch.Calls(typeof(HumeShieldModuleBase).PropertySetter(nameof(HumeShieldModuleBase.HsCurrent))))
            .Insert(CodeInstruction.LoadArgument(0),
                new CodeInstruction(OpCodes.Callvirt, typeof(HumeShieldModuleBase).PropertyGetter(nameof(HumeShieldModuleBase.Owner))),
                CodeInstruction.Call(typeof(ExtraHumeShield), nameof(ModifyMaxHumeShield)));
        return codeMatcher.Instructions();
    }
}
#

The only thing you have to care about is the ModifyMaxHumeShield bit

#

It takes in the old hume shield max and the player, and the return value is what the new hume shield max is set to

#

Now

#

The more polished version would be something like

#
[HarmonyPatch]
public class HumeShieldModifier
{
    public static event Func<float, ReferenceHub, float>? MaxHumeShieldChanging;
    private static float ModifyMaxHumeShield(float oldValue, ReferenceHub player) => MaxHumeShieldChanging?.Invoke(oldValue, player) ?? oldValue;
    
    [HarmonyPatch(typeof(DynamicHumeShieldController), nameof(DynamicHumeShieldController.HsMax), MethodType.Getter)]
    public static float Postfix(float value, DynamicHumeShieldController __instance) => ModifyMaxHumeShield(value, __instance.Owner);

    [HarmonyPatch(typeof(DynamicHumeShieldController), nameof(DynamicHumeShieldController.SpawnObject))]
    public static IEnumerable<CodeInstruction> Transpiler(IEnumerable<CodeInstruction> instructions, ILGenerator generator)
    {
        var codeMatcher = new CodeMatcher(instructions, generator);
        codeMatcher.MatchStartForward(CodeMatch.Calls(typeof(HumeShieldModuleBase).PropertySetter(nameof(HumeShieldModuleBase.HsCurrent))))
            .Insert(CodeInstruction.LoadArgument(0),
                new CodeInstruction(OpCodes.Callvirt, typeof(HumeShieldModuleBase).PropertyGetter(nameof(HumeShieldModuleBase.Owner))),
                CodeInstruction.Call(typeof(HumeShieldModifier), nameof(ModifyMaxHumeShield)));
        return codeMatcher.Instructions();
    }
}
#

You can copy/paste that into your code base somewhere

#

This allows you to do something pretty cool

#
public class EditHumeShieldMax : CustomEventsHandler
{
    public override void OnServerWaitingForPlayers()
    {
        HumeShieldModifier.MaxHumeShieldChanging += Increase939Hume;
    }

    public override void OnServerRoundRestarted()
    {
        HumeShieldModifier.MaxHumeShieldChanging -= Increase939Hume;
    }

    private static float Increase939Hume(float oldValue, ReferenceHub player)
    {
        if (player.GetRoleId() != RoleTypeId.Scp939)
            return oldValue;
        return oldValue + 200f;
    }
}
#

You just subscribe to the event with whatever function you want

#

Those functions get called whenever the max hume shield is changing, and allow you to modify the result

#

You can change it however you like, do whatever logic you want, and it won't prevent the base-game scaling from applying

carmine prawn
#

thanks a lot

slate flume
hidden horizon
#

Is there a way to include rich text like <link=> in a kick message?

upper vapor
hidden horizon
#

alr ty

upper vapor
#

np

carmine prawn
sacred sierra
#

any idea why primitives ignore layers i give them and collide with everything no matter what?

celest thorn
#

the only thing is

#

the bullets one

celest thorn
#

love for all of you

sacred sierra
#

i also tried hitbox and some other ones

wary gust
#

So you'll have to patch some stuff

#

And sync the primitive as either Collidable off if you want no collision or on if you want primitive<->player collisions

sacred sierra
teal junco
#

new cassie changes

#

time to get to work

#

or maybe it wont have changed much

#

i gotta study the changelog

restive turret
teal junco
#

well it all looks well and jolly

#

but i looked at my code and it uses a bunch of old CASSIE code so I'm gonna have to find out where they put the new one and what all of its methods are

restive turret
#

Ye check labapi one too

slate flume
#

The version I gave you is also more scalable

#

When you subscribe changing hume shield to an event, you can have multiple events run on the same code, allowing you to stack them together without any rewrites

slate flume
#

If you want to diagnose the error in your code, add Logger statements

#

Like before you set __instance.HsCurrent, log what value you're setting to it

#

It narrows down the issue

slate flume
#

Or better yet, if the role isn't defined, it'd be better to do

internal static float GetAllExtraMaxHs(ReferenceHub hub)
{
    if (!MaxAddHs.TryGetValue(hub.GetRoleId(), out float defAddHs))
        return 0;
    // etc...
    return defAddHs;
}

And avoid having to run unnecessary extra logic you presumably do where the // etc... is

#

However, if a dictionary query is all you do, you can one-line it

#
internal static float GetAllExtraMaxHs(ReferenceHub hub) => MaxAddHs.GetValueOrDefault(hub.GetRoleId(), 0);
slate flume
#

I mean the code seems accurate enough but I'm unsure what you really want from me here

#

I just don't know why you'd want to rewrite it, my original code has no issues

#

At least none that I've experienced

#

The spawn object patch makes role spawning work, the other makes general gameplay work

#

You said

I also noticed that when a player switches from observer to SCP, DynamicHumeShieldController.ShieldOverHealth.Evaluate(this._hp.NormalizedValue) seems to be evaluated with _hp equal to 0, which results in incorrect values.
And my assumption was that this was relating to an error in your rewritten code

#

Because I have not experienced this issue in the code I made, Hume Shield is being set accurately

#

Again, if you need help, you need to clearly state the goal you're trying to achieve
You asked for a way to change Hume Shield without affecting the base-game scaling, I gave you that
If you need more functionality that for some reason isn't there, then you need to say what you're trying to achieve and why you can't do it with the old one

#

I have no idea why you rewrote it, where this error you speak of is happening, why this error is an issue, if it's an error with my code or your code, and a whole host of other things

#

It's especially odd because the error you mentioned happening isn't even shown in any of the code that's been sent here

#

You say "this is an issue" and yet the issue is never shown

#

You never say where the issue is happening

#

You never say why you're running that code, where you're running that code

#

You're still being incredibly vague and I can't help you based off of those vague statements combined with incomplete code that doesn't even show the error you're talking about

#

Again, the specifics are incredibly important

#

If you tell me what you're trying to accomplish, then I can help you accomplish it

#

I think you keep forgetting that I don't have the same information you have about your goals, motivations, plans, code, ...

#

When I see something like // etc... I can't just infer the code that's supposed to be there, because I have no idea what you're trying to do
Likewise, when I see something like // !!! I can't just know what the issue is, because I have no idea what you're trying to do nor what's going wrong

#

If you tell me an issue I can't infer the context because I, again, have no idea what you're trying to do

restive turret
#

@slate flume check experimental branch

carmine prawn
slate flume
#

MY KING 👑

#

HYPEEEE

#

It's so beautiful 🥹

#

Also damn bro what you guys cooking up with Cassie

upper vapor
#

it's actually peak

slate flume
upper vapor
#

everything you could ask for

  • properly synced subtitles
  • full server authority
  • Spans :3
  • announcement priority
  • announcement waiting
upper vapor
slate flume
#

So uh

#

Does that mean the disconnect bug is fixed

upper vapor
#

which disconnect but

#

g

slate flume
#

If an SCP kills another SCP it causes a disconnect

upper vapor
#

huh

#

never seen that before Kek

slate flume
#

It's not possible base-game but can happen if you force friendly fire between them

#

It's because the announcer would try to announce an SCP termination but didn't account for the death subtitles being null

#

The SubtitleParts is null when certain SCPs kill each other via friendly fire

upper vapor
#

average null check in unity (erm actually do not use nullable reference types)

#

-# i suggested to add a null check in the new implementation, just in case

slate flume
#

Yeah that's pretty much my only concern with the new update

#

I can't seem to immediately find where the announcing for SCP termination was migrated but I'm guessing that's just because it's still experimental

#

It was a huge bug I experienced with one of the custom items I made

#

For my dedicated server

slate flume
#

Assuming a non-null SubtitleParts

#

To fix it I just did

#

I made my own announcement

#

The problem is that some of the damagehandlers with SCPs don't have SubtitleParts

#

Cause the assumption is that they'd never have to be used for other SCPs do to the lack of friendly fire

#

Also another thing with SCP friendly fire, I had to fix 173's teleport

#

He kept killing himself when he teleported lmao

#

The problem is that the BestTarget is selected by the client, then validated by the server

#

For 99% of cases it reduces server load, but in my case it meant I could never get friendly fire working without patching it

slate flume
slate flume
#

Hey @soft depot you did custom effects right? When you make an effect using the base-game system, how do I get it to register like other effects?
Like I know there's server vs client, so I'm make a server-sided effect, and I have no idea how to get the game to recognize it once the class is made

#

You've got like 50x the knowledge I do in this area

soft depot
#

check out SecretAPI

#

it has a thing for that

slate flume
#

Love that

#

Sick

soft depot
#

where you make inheritors of StatusEffectBase and write code in there

slate flume
#

I already use it for SSSS so I'll peak into it

slate flume
soft depot
#

ye

#

so SecretAPI got yo back

slate flume
#

If it's as easy as I think, this is epic

slate flume
soft depot
#

there's no attribute or anything?

slate flume
soft depot
#

I bet if you inherit CustomPlayerEffect it'd work

slate flume
#

I tried

soft depot
#

hmmmmm

#

so you need to add to EffectsToRegister somehow

slate flume
#

Now it's working

soft depot
#

but SecretAPI loads first Kek

#

welp, at least you had an example

slate flume
#

Fr

#

You just need to add the effect to the prefab so the game instantiates it with the rest of the effects

#

The client doesn't recognize it but I do

#

And that's what counts

upper vapor
slate flume
upper vapor
#

i uh

#

replaced the scp queue completely

slate flume
#

🔥

#

My fear is if the null check is going to be implemented, will the underlying issue be fixed?

#

Cause if not I'll still have to patch it and run the same BS

upper vapor
#

was it not implemented?

slate flume
slate flume
#

Ideally it shouldn't be null in the first place

upper vapor
#

yeah there are null checks in place regarding my suggestion, dunno if the call site you're referring to is correct

#

which method was it again?

soft depot
# upper vapor replaced the scp queue completely

Now imagine the hell I have to go through just to keep Exiled CASSIE plugins from not imploding cuz NW decided to consolidate the accessibility of announcement specific variables to the queuing methods (all the Exiled Cassie events are for playing an announcement not queuing 😭)

upper vapor
#

yeah announcers are uh

#

yeah

soft depot
#

they coulda just... included the DamageHandler in the CassieScpTerminationAnnouncement but NoOoOoO who needs those

#

there's prolly gonna be a big rewrite of CASSIE for Exiled 10 soonTM

upper vapor
#

the humble ConditionalWeakTable:

soft depot
#

will ponder over it tho

soft depot
#

good for you SteamHappy

#

THEY DID WHAAAAAAAT!??!!!!?!??!?!

upper vapor
upper vapor
soft depot
#

no

#

but am angy they keep using dang components for this stuff instead of more class

#

like why bruh

#

why they gotta be glazing the UnityEditor 😭

upper vapor
#

is this in the changelog

soft depot
#

ye

#

servers go down automatically

#

after like 20s or something

upper vapor
soft depot
#

custom class idk? But component is literally Unity object

upper vapor
#

yes..?

soft depot
#

is slow BlurryEyes

upper vapor
#

and that makes sense because we're in unity

upper vapor
soft depot
#

well the reason they probably did it is so they just have to drag the component onto whatever elevator they want in the editor

#

like, it sounds / feels nice, but any person who is willing to put in some effort for optimization wouldn't do that

soft depot
upper vapor
soft depot
#

it's mostly animations iirc

soft depot
upper vapor
#

have you ever opened up the unity editor and actually made something 😭

soft depot
#

but I have used it somewhat for stuff

upper vapor
soft depot
#

guess what, that's what components are like in the Unity editor Trolley

upper vapor
#

???

soft depot
#

you just drag component where you want it then change buttons on component till you got what you want

upper vapor
#

"easy testability and easy to read code"

#

that's not inherent to this approach whatsoever

#

neither of those are

upper vapor
#

it's easy to configure

#

in the editor

#

but that does not mean that the code handling it is pretty

next ivy
#

Hi, can you please help me, like in Pastbin, write a link in the discord server, well, when you click on the server information

next ivy
upper vapor
inner citrus
#

Or a link tag

#

<link="http://example.com/">my text here</link>

restive turret
#

Oops sorry didn't mean to ping

upper vapor
restive turret
#

Well sadly my stuff got broken cus of jb hitreg merge

unique crane
#

Idk what your inheritance issue is

upper vapor
#

Peak comeback ngl

icy knoll
#

honestly, people that complain about this are silly 😭

#

legit that's what you should do for game objects

#

that's the correct way to handle this sort of feature

#

you cant be complaining because we did something correctly, bffr

slate flume
slate flume
slate flume
#

It doesn't exist anymore in the experimental branch

slate flume
#

I haven't looked at the new code yet

#

The point is that the null checks are showing that there's a problem
Those items shouldn't be returning null

#

They only are because the base-game behaviour is bugged

#

Null checks don't fix the underlying cause, they just prevent the game from shitting itself when it has a problem

#

OOO new bug alert alertnalertnalertn

#

Okay so

#

I tried to spawn a ragdoll

#

That uses

#

ServerCreateRagdoll calls ServerOnRagdollCreated with a null ReferenceHub

restive turret
slate flume
#

I did that?

restive turret
#

Ye

#

I remember it

slate flume
#

Nice

#

Good for me

#

Sorry the dementia is kicking in lmao

#

I've reported like a dozen bugs so I forget sometimes

#

I'm gonna fix this rq

restive turret
#

Wait i have to check again

#

Idk if got merged that or not, but atleast the serial thing is fixed

#

(so new ragdoll will have new serial and not 0)

#

After the thing being public i will close the issues that got fixed

slate flume
restive turret
#

Ye ik

#

Ragdolls had like 2 or 3

slate flume
#

Oh gotcha gotcha

restive turret
#

Feel free to patch it. (Lel)
This is just a small-ish(?) updoot

#

Many stuff hasn't been merged yet, slowly but we getting there to fix every labAPI reported bugs (that we can still confirm it's a bug)

slate flume
#

The new TimedGrenadeProjectile change had me hyped

#

I feel like I've been screaming into the void about this stuff for like half a year

restive turret
#

I'm gonna say but probably scream later is.
Try hunt for many but as possible
Fear

#

Please don't be nullable stuff bc i will also scream for it

slate flume
#

I'm hoping this list will start to dwindle moving to the future

icy knoll
#

idk why there is like null checks in places there shouldnt be null checks, like it's good to know when there is a null value because then we can see where the underlying issue actually is 😭

slate flume
#

Though some of them are more personal bugs rather than full bugs

slate flume
#

This is my concern with the new CASSIE update

#

Was the problem actually fixed, or were null checks slapped on and they called it a day?

restive turret
slate flume
#

Still proud of myself for figuring that one out

#

It's been a problem plaguing random servers and devs for years

#

Only hope that one is fixed at some point

#

If a person connects and disconnects from a server in the same frame, the server shits itself

#

Bricks movement for the entire server

#

It's like two lines of code to fix it

#

Like with pretty much every bug I find 😭

restive turret
#

Ye its in the backlog idk when will be fixed or merged

#

Sadly

slate flume
#

If a cheat dev found that out they could wreak havoc

#

Like literally the act of joining a server can cause the whole server to get fucked

#

That's insane

#

At least I know my server is protected lmao

#

It's actually protected the server I dev for a time or two

#

The fix is legit two lines of code

#

Well actually three cause you need the early return

#

FirstPersonMovementModule::UpdateMovement
Add a null check for the Hub at the beginning
If it's null, run ResetObject and return

restive turret
#

5 lines

upper vapor
upper vapor
slate flume
#

The point is it's easy

upper vapor
#

We breaking exiled for 2 months again with this one 🗣️🗣️

restive turret
#

2? Nah, we going to fully break it

#

5 month

#

Or year

spring swan
#

We also need triangle primitives.. I’ve been asking for it for 4 years already..

restive turret
#

Instead of triangles adding 4D cubes and 4D objects to the gsme

spring swan
#

So Slejm, you’d keep your word right if I promote the fuck out of that LabAPI triangle request FancyTroller

sinful bronze
#

Hi chat

slate flume
sinful bronze
#

Im here to rep Slejm

#

And go away

#

!rep @restive turret

regal lakeBOT
#

You have just given @restive turret a reputation point!

sinful bronze
#

Bye

slate flume
spring swan
slate flume
#

Pyramids > prisms

#

More versatile

#

Besides you can always tile some pyramids together to make a prism

spring swan
#

, but what if I want to have a triangle for 1 side and not the other crythentroll

slate flume
restive turret
sinful bronze
#

Exist

restive turret
sinful bronze
#

And u ar cat

#

Thats all i need

slate flume
#

Cut it in half like that

#

Now it's two pyramids

sinful bronze
#

What if remove all sides

spring swan
slate flume
#

Cause like

#

People already make meshes

spring swan
slate flume
#

Or like

#

textures

slate flume
slate flume
spring swan
slate flume
#

3D objects are different story because they're 3D

#

Pyramids make more sense to add than a 2D triangle because you can already make 2D triangles

spring swan
#

True

#

Either way

restive turret
#

You cant stand on textoy

spring swan
#

Yeah

slate flume
spring swan
#

I don’t want the invisible blocks

slate flume
#

Also can Unity handle standing on infinitely thin objects?

restive turret
#

¯_(ツ)_/¯

slate flume
#

You can't stand on a text toy? Put a primitive below it

spring swan
#

Yeah, but as I said I’d like a plane without needing to use a text toy and alpha’d primitives

#

Wait I’m stupid

slate flume
spring swan
#

Oh it can very easily be supported

slate flume
#

You would need continuous physics rather than discrete

#

And I'm not sure that's how Unity operates with some of its physics calculations

spring swan
#

It’s something I’d have to check out again myself later

slate flume
#

For things like player movement, most projects use discrete calculations rather than continuous

#

Because it's much less CPU intensive, and it makes sense to use since players generally don't move fast enough to have to worry about tunneling

#

The other question is also then if the continuous physics calculations can deal with infinitely thin planes

#

Overall, it just makes much more sense to have a floor or wall or ceiling with thickness

#

Why enforce this idea that they need to be infinitely thin?

#

I don't even know why that'd be a big deal in the first place

slate flume
#

Which is bad practice

#

I don't understand the problem you're facing that requires this

spring swan
#

It’s simple really, the one sided triangles just a stupid thing I always ask for ever since I helped beta test MER, pyramids legit are the way forward, however I will never let the triangle bit die, and yes if something stupid like it does exist, I had some really cool event ideas in theory that could work. But yeah, oops for the circles and serious discussions

slate flume
#

Based

#

Triangles 2025

spring swan
#

Although when will NW add pyramids smug

slate flume
#

I believe

#

Trust

slate flume
#

Though it'd be interesting to see how pyramids are defined
You can't really just do position + rotation + scale because you want to have like variable apex

icy knoll
#

youll need to craft them using the triangle primitive when that releases

#

as it will be a triangle plane

upper vapor
#

-# what a crazy scp reference

spring swan
#

Surely will get them before EOL of Scp SL or whatever Hubert said in that interview quite recently

upper vapor
#

Either way, a single pyramid or single triangle is not sufficient to create arbitrary meshes

spring swan
# upper vapor What

Like whenever scp sl goes into EOL support, surely by then will get those god damn pyramids and triangles

icy knoll
#

i dont think SCPSL will go into EOL for many years

spring swan
#

Indeed

#

, but I’m sayin, by the time comes, it will exist

upper vapor
#

I wouldn't bet even a penny on that xd

spring swan
#

I was close to getting triangles into SL the first time around

#

So surely if I resume my efforts, I could see the dream smug

slate flume
#

They'd allow for more intricate work with primitives

#

And they're much more practical than a triangle plane primitive

#

Also if a "triangle plane" primitive gets added, it'd mostly likely actually be a triangular prism, not a plane

#

Which is also less versatile than a pyramid

upper vapor
#

Okay so why do people say triangle plane specifically
A triangle is a 2D shape 😭

#

Is it because planes only have faces on one side only?

slate flume
#

Why do we want more 2D objects in the game as the first priority

#

We can already make 2D textures and objects with texttoys

#

More versatile 3D objects >>>

upper vapor
#

"I can't make my goku model without triangles"
The ancient Egyptians built pyramids with hard work and forced labor, you can make your goku model with currently available primitives with a bit of effort

slate flume
upper vapor
#

Yeah yeah, there are gonna be a lot of triangles to render
But it doesn't help much if you spam tens of thousands of gameobjects regardless of whether it has 3 vertices or 4

upper vapor
#

And canvas overhead might be a factor

slate flume
#

Anything with discrete physics is cooked

upper vapor
#

I love non-convex colliders

slate flume
upper vapor
#

They work great

#

Except for when I build for WebGL

#

They get un-cooked or something

slate flume
upper vapor
#

Yes I've faced issues before

slate flume
#

And I'm guessing some things in SL use discrete physics

upper vapor
#

That's the default in Unity so I wouldn't be surprised

slate flume
#

In summary: pyramids >>>>>

upper vapor
#

In summary: make your own game

slate flume
upper vapor
#

Then

#

Fork SL

slate flume
carmine prawn
#

you know what, I know a player who set up an old version of the SL server and claimed it was their own game

#

he also believes that the current SL is the "today version", while his is the "original version"

upper vapor
#

Xððððð

#

Surely his name is Hubert

carmine prawn
#

ridiculous, right? but it's true

upper vapor
#

Stupidity leaderboard

slate flume
upper vapor
#

real, based, truthy

worn gull
#

Me when no pickup wrapper for Scp1509 pepe_sadOcean

restive turret
#

Yet

boreal snow
#

I got a NullPointerException trying to go to Sleep(); last night 😭

upper vapor
grand flower
#

How are we supposed to make Cassie announcements with:

  • No subtitles
  • Subtitles that are spaced properly (line by line) instead of showing the entire announcement at once

Using the new system

boreal snow
#

can't execute a non-existent method

south socket
boreal snow
static meteor
south socket
#

isnt it called

#

.bell or smth

#

or bell

#

BELL_START

#

or am i dumb

static meteor
#

Decontaimination has its own bell

south socket
#

oh the decon

static meteor
south socket
boreal snow
#

and scps

restive turret
grand flower
#

our stuff broke randomly

south socket
grand flower
#

We dont use Exiled

boreal snow
#

This is LabApi

#

¯_(ツ)_/¯

grand flower
#

How are you supposed to make new lines with this update

restive turret
#

That is basegame

boreal snow
south socket
grand flower
#

We use \n on Bright's and this update just breaks them for some reason

restive turret
#

Try
<split>

grand flower
#

Do I need to close that

restive turret
#

Uh dont know

#

I'm no longer on pc , whoever there can check

grand flower
#

Also what dll is CassieAnnouncement from?

#

Rider seems to think it's nowhere

south socket
#

split not working anymore

#

I also used split, but it no longer works.

grand flower
#

I need a thanks northwood emote

boreal snow
south socket
boreal snow
boreal snow
south socket
grand flower
#

nvm it's just the decompiled SL code that gives it the wrong assembly

#

i have it

boreal snow
#

I got the wave announcement

grand flower
#

I'm guessing I also have to replace all pitch_0.1 with $PITCH_0.1 right?

restive turret
#

I have zero clue sorry i never used Cassie stuff

south socket
grand flower
#

alright i'll have to try this

#

and i'll try and figure out newlines later

#

dunno why that got removed

south socket
grand flower
#

once im done with my two jobs sure

#

we love update day

south socket
#

yippie

#

We love breaking changes.

grand flower
#

Can't be an SL update without breaking changes for modders

south socket
#

They could have at least warned us...

boreal snow
south socket
#

in the assembly-csharp

boreal snow
grand flower
#

idk i would've just made sure the legacy behavior still worked

#

at least for a few updates

#

maybe splits can be done via subtitle parts idk

restive turret
#

I checked its
<split>

#

No need to close

#

Or wdym new line of stuff

grand flower
#

and we expected Cassie to like, split it into a new part

#

so it would clear subtitles and then display the next part

restive turret
#

Ah ye

grand flower
#

split replaces that?

restive turret
#

Thats what the split should do

grand flower
#

aight i'll try

south socket
#

split working for you huh?

restive turret
#

No i read the code

#

Subtitles.SubtitleCategory
Its not client ifdef'd

south socket
#

ah i see

grand flower
#

gonna test

#

when the game starts

#

in 3 minutes mmLul

#

dunno why it takes so long

restive turret
#

Put it into ssd

#

Might help

grand flower
#

I only have SSDs

#

my PC is overkill for gaming heh

#

Now I will say this update somehow makes it boot a bit faster, idk what changed

#

all M.2s

restive turret
#

Crazy man

south socket
#

Since a few updates, my game crashes 20 times before I can join a server. Tragic.

grand flower
restive turret
#

I never crashed

south socket
restive turret
#

I maybe crashed out but the game never crashed

grand flower
#

yep <split> worked

#

Thanks

restive turret
#

Lool

#

Okay

grand flower
#

I wish NW would just keep \n as a legacy way to do split

#

(╯°□°)╯︵ ┻━┻

restive turret
#

Hmm

#

Its an array so can be added

#

!remindme 16h legacy subtitles cassie \n

regal lakeBOT
restive turret
#

Watch me gonna ignore this and play GoWR all day Trolley

grand flower
#

Hmmm question

#

how do you make cassie not play the announcement jingle before your message

restive turret
#

Pfkshfueg

#

What jingle

#

The bells

grand flower
#

yeah

#

bells -> your message -> the end thingy

#

i just want my message, no jingle or end part

restive turret
#

PlayBackground = false

grand flower
#

sweet ty

restive turret
#

In TlsPayload

#

Or in args

grand flower
#

we use it for horror ambiance

#

and right now it's just hilarious

#

"may i have your attention please: screech"

restive turret
#

That's funny

restive turret
#

bell boo! screeech

grand flower
boreal snow
#

btw

#

I found cassie in Assembly-CSharp > Respawning > RespawnEffectsController

restive turret
#

You have exactly 10 minutes to finish it then I gonna step into the dream word

restive turret
#

U might have older one

south socket
boreal snow
#

Uhh lemme try updating rq

restive turret
#

How can I opt out of that

boreal snow