#plugins-dev-chat
1 messages · Page 169 of 1
it really depended for me
but they never
You had your own PC?
because they couldn't prove
last years of high school yes
because they allowed it
I did ye when i was like 9-10ish
my books where so heavy
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
yea same
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
As far as I know and remember always had PC when we are in current
place
Computers are dope
yea ig
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
Was a Pentium g2020
And played unreal tournament 99 on it
People who can dedicate themselves to one thing their whole lives have my respect
i don't like for example wiring
like embedded is not for me
I would say most anything wiring-related you'll do DIY is just putting pre-made components together
IMO we're kind of past the days of large innovation without either a lot of money, a lot of time, or both
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
Papyra
taken
btw gm and how you doing
Internal screqming
the triangles aren't triangling
English isnt englishing
triangles aren't triangling
I have nothing to do with triangles!
sure...
Also
Please send what events you wish to be added
So can add more into backlog
(and focus on that instead of uni)
what...
LabEvents
im sorry but i never asked for events?
I Know
no duels yes hypixel skyblock
idk why i was in there
and i don't play hypixel much
hypixel skyblock is the only thing i really enjoyed on hypixel
what did u play
bedwars and maybe some murder mysteries and shit like that
The grinch event was my favorite of all time
cuz skyblock was a really cool rpg unlike other fast tryhard minigames
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
it is skyblock only in like first 5 minutes
Still not validate that i continue playing
usually i dont look at google ai answers but this one is pretty accurate
You would be surprised but i don't really like rpg
im just saying its very different from other hypixel minigames
I'm saved rn but I'm gonna be cooked in 30 min
exam?
😋 cooked ax
cannibalism
Dual-lesson unknown novella analysis, min 400 words
what
idk what that even means
Literature shit
Real
Do you like burned cables and metal

-# 40%
Nyomokban tartalmazhat agysejteket
-# may contain braincells
please dont
may contains fibre cable
Don't what
Probably contains fibre optic cable (core)
Agysejtek is bad for the health
Trueing
But braincells in brain != eaten braincells
I had Agysejtek but then I became a programmer and lost it all
Yeah at like the age of 9
Real
In the end, it doesn't even matter
Matter
Get it
They're not real
Anti matter
i hate you
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 ...
Thank you
i love you (as a friend [Better adding the disclaimer before any weird ideas] )

What
Discord didn't load half of the messages again
Xd
I swear, I check this channel and like it doesn't load until i close and reopen
That is utub
No, i selected this chord
not using revanced 
I used it for my other account, and broke the ui many times
I'm using like 3 yr old client and still works

So i been using it in browser
revanced is peak
i have to reinstall tiktok every time i update tho otherwise it becomes a laggy mess
Uninstall tiktok
Real
nah dont feel like it
better than instagram reels which is just racist slop
I prefer instagram reels sometimes you find some gems
Tiktok 90% of the time is ads
i tend to find tons of gems on tiktok
revanced removes the ads
so it's pretty peak
Im glad i dont use either
What i mean is ads like hey im selling your dog collar for 50c please buy it
revanced also removes those

Sadly ios and i should sideload it every 7 days which ngl i tend to forget
Imagine not having an iPhone with trollstore
The problem with it is trollstore is paid
And ngl i don’t wanna waste money
No the fuck it isn't
The cert stuff is
Ok but trollstore isn't and there is a system for autosign
Since trollstore is in a privileged container
at least that's how it worked on like iOS 15 lol
That's a skill issue lol
Im waiting for a new cve to get out
Because im not updating anymore
Last time it did it automatically
Nice name
i'm not using it cuz one time i installed it but was too lazy to log in, then i removed it cuz i needed space for snittelgetés (yes i needed the remaining 3000 MB)
*300 MB
i'm gonna kill the fucking ISP
trying to anydesk on 3mbits/s
smh
Shaking my phone
hold
Just hold on man smh
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
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>();
Which method is called when the server restarts?
For example, when the RestartInNextRound command is specified.
you should use OnTriggerEnter
what the helly
you can spawn the primitive, and one frame later, set _collider.isTrigger to true
attach your custom component to the collider's GO
yea
will i still need to add a collider or not
nope
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
just what?
var go = new GameObject("amogus")
{
transform =
{
position = pos,
rotation = rot,
scale = scale
}
};
go.AddComponent<BoxCollider>().isTrigger = true;
go.AddComponent<SussyCollisionCheck>();
Ah ye
spawning a primitive looks cleaner though
That was before I wanted to see where is it on my client
ye
i cannot see
i'm legally blind
Thats why it was leftover code
are you gonna eat it
Which method is called when the server restarts?
For example, when the RestartInNextRound command is specified.
Round has a thing for this i believe
No, I need to track when the server goes into restart, not restart it.
ServerStatic.StopNextRound
Thank you
but uh, id still check the labapi implementations before going through basegame
and prob Server not Round i just realized
There is no Server shutdown event
i see
there is Application.OnQuit
What is this room called? RoomName.EzOfficeLarge?
If you want an event handler, use OnServerWaitingForPlayers()
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.
They seem to want the full restart not just new round
Tbh the Enabled only runs full restart
theyd prob want BEFORE
And every server startup
Alright... I don't have my laptop with me rn, but I'll look when I get to it.
i dunno
Tag the user and ask idk
theyve already been given some options
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?
Why not use the latest C#
I think i have one of the Remote KC plugin in my collection
The basics that I applied from Java and Lua had the most in common with 10.0
Interesting, I'll have to check it out
It's actually funny, I know basically null about Java
But yeah collection expressions are fire, you should totally try them

NullPointerException when querying for your java knowledge
true
fog☠️
yeah that happens
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
java nice day
Microsoft will help you trust
Hey that's my picture
how can i make primitive non collidable to specific player?
FakeSync!
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
#1448741555962908763 message is there other way to fakesync?
i never did it before
i wasn't even looking at this channel
jarvis remove his remove
Wut
idfk
Luau is very compatible with Lua
it was mad crazy
There are some changes but nothing incredibly bad
Lua is compatible with Luau, Luau to Lua takes some changes but not a full rewrite
I just thought the comment was incredibly funny
for implying Roblox is uniquely evil for not being compatible with UE or Unity
thats dumb
-# arguably this would be C++ but wtv
I mean, HolyC was once known as C+
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...
Lmao
Holy hand grenade of antioch!
program with unsafe!
What is blud on about
me when my localadmin stop working
that's so that 😭
Fixed next update :3
what is fixed, the console not responding or the error at the end 😭
Because player roles aren't set until after the RoundStarted event
At least that's what I'd assume
me
💀
I used IHumeShieldProvider to give the SCP an extra shield, but it doesn't restore properly upon respawning
Can you elaborate on this
@feral haven is that the Xaze of 87?
:O
☠️
maybe my code can explain this
why do you use a status effect for setting max hs instead of just changing it directly?
This still doesn't explain it
You say it "...doesn't restore properly upon respawning"
This could mean any number of potential scenarios
- Hume shield is not changed from base game values
- Hume shield is changed from base game values but isn't able to return to base game values after a role change
- Hume shield isn't changed from base game values initially, but is able to be changed after the second respawn
- Hume shield is working properly but not properly scaling with health
- 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
And apparently neither have you shown the full code because in this scenario, the ScpDefaultMaxHsEffect class is entirely unused outside of its declaration
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
meow
I want this hs effect to be "additional", and retaining the original hs effect
What do you mean by "additional" and what do you mean be "retaining the original effect"
Do you mean you want the original hume shield scaling to work and just add an additional constant hume shield on top of it?
Yes, that's what I mean
just add a hs process then
Actually can you do that for hume shields?
That's an AHP thing, no?
yes
"you have no place on our platforms"
-# why is there no such gif
for a second i thought it was roblox ceo
Really? It appears AHP-specific for the StatBase
wait
it's cooked
you can add an ahp process though which acts the same as hs
if you know how much it is
Patch DynamicHumeShieldController
And change the HS Max getter to return an added value
It's the simplest solution
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
yea, thanks, so this is the first question I wanted to ask...
crazy
that's why I want Timing.CallDelayed (1f, () => Player.HumeShield = Player.MaxHumeShield
sorry, my bad
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
I'm not good at expressing myself in English (use machine translation), so
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
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)
Then, when I respawned as an SCP player, I encountered this problem
Or you can simply change the keyframes in the Animation stuff and it will use that instead (i think?)
So basically you could add (hp as 500 give 1000 shield
Or even remove or change fields
So, the problem I want to solve now is this (hs was not intact on spawn)
Also true, but it was specifically asked that this mechanic was detached from the original HS system
Gotcha
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
Also, Timing.WaitForOneFrame seems insufficient, MaxHumeShield always seems to be 0 within 1 second (when a player first becomes a target SCP)
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
Ah yeah
at least 0.2 seconds, in my tests
Your solution is just adding more delay 
Yeah but the question here is how to fix it so you're not guess-timating the delay
Well good luck on that
Create a stopwatch and check every frame that the humeshield when not 0
stopwatch 
Or whatever
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
Try run in onplayerroleset ?
Or add more delay
It run in OnPlayerChangedRole
Oh I think I got it
I need to test first
I'm gonna send a rough version and then clean it up
[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
Of course! Happy to help :)
Is there a way to include rich text like <link=> in a kick message?
nope, they're not clickable
you can highlight it with color, size
alr ty
np
I tried rewriting this patch and tested it, and it works as expected. 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. Would it be appropriate to change it this way?
any idea why primitives ignore layers i give them and collide with everything no matter what?
because client side..
the only thing is
the bullets one
show your code
Iirc the NetworkCollidable resets some things. If it's off then it will disable the collider and I don't think you can change the layer on anything other than server
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
main thing i want to achieve is primitives colliding with floor&walls but not with players
new cassie changes
time to get to work
or maybe it wont have changed much
i gotta study the changelog

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
Ye check labapi one too
I'm lost here
What was your motivation for rewriting the patch? I gave you a working version that uses events
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
On top of that, if the code changes, my version will still work
It means you don't have to replicate the same logic the game code uses, and then worry about it if they decide to change how it works
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
Also here:
internal static float GetAllExtraMaxHs(ReferenceHub hub)
{
float defAddHs = MaxAddHs.TryGetValue(hub.GetRoleId(), out float addHsValue) ? addHsValue : 0;
// etc...
return defAddHs;
}
You can simplify this
float defAddHs = MaxAddHs.TryGetValue(hub.GetRoleId(), out float addHsValue) ? addHsValue : 0;
To
float defAddHs = MaxAddHs.GetValueOrDefault(hub.GetRoleId(), 0);
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);
I guess I'm unclear about what you're trying to say
I presumed the issue was you rewrote it and were now encountering errors?
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
@slate flume check experimental branch
No, I've already solved this problem, thank you very very much for your patience, I just want to share a method I use, it works perfectly fine
:O YOU FUCKING DID IT
MY KING 👑
HYPEEEE
It's so beautiful 🥹
Also damn bro what you guys cooking up with Cassie
Hubert rewrote it all
it's actually peak
NineTailedFoxAnnouncer got obliterated
everything you could ask for
- properly synced subtitles
- full server authority
- Spans :3
- announcement priority
- announcement waiting
well, yeah
If an SCP kills another SCP it causes a disconnect
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
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
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
But yeah I moved back to the main branch, this was the old problem
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
But then the server's BestTarget was recognizing 173 as the BestTarget, because of the new settings, so that's why that happened
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
I did not do it that way 
check out SecretAPI
it has a thing for that
where you make inheritors of StatusEffectBase and write code in there
I already use it for SSSS so I'll peak into it
I mean I made the effect, it's just not being used 
I need to add it to like the effects prefab or some shit
So turns out the SecretAPI code only instantiates the Custom Effects it already made, not new ones, so I just ripped the code 
there's no attribute or anything?

I bet if you inherit CustomPlayerEffect it'd work
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
i had to do some funky stuff for custom scps too 
Subtitle parts should just be added to the damage handlers
Either that or change the way announcements are done 😭
🔥
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
was it not implemented?
No clue
It just mitigates the problem so unsuspecting people don't get disconnected, but doesn't solve the problem that the announcement itself is null
Ideally it shouldn't be null in the first place
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?
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 😭)
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
ye but there hasn't really been a precedent for stuff like that in Exiled yet
will ponder over it tho
me when i can just add it 
sooo uhh
wasn't that a thing in the previous version already
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 😭
is this in the changelog
what class would you use
5 seconds
custom class idk? But component is literally Unity object
yes..?
is slow 
and that makes sense because we're in unity
apply for programmer and make your own super performant component system, and migrate every existing unity behavior to the new system
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
another reason too is probably the fact scripts arent even that performance heavy in SL
do you have any idea how powerful it is to just slap a component on and have it work automagically?
it's mostly animations iirc
I ❤️ Python ahhhhhh argument
have you ever opened up the unity editor and actually made something 😭
ye, schematics 
but I have used it somewhat for stuff
i hate python with every single cell in my body
and the python lovers average reason for liking it is usually easy testability and easy to read code
guess what, that's what components are like in the Unity editor 
???
you just drag component where you want it then change buttons on component till you got what you want
"easy testability and easy to read code"
that's not inherent to this approach whatsoever
neither of those are
well then why did you say this
it's easy to configure
in the editor
but that does not mean that the code handling it is pretty
Hi, can you please help me, like in Pastbin, write a link in the discord server, well, when you click on the server information
pls
Use an <a> tag, just like in html
Can't wait to see exiled 10.0 (or will be 9.11 or 9.10.4?
Oops sorry didn't mean to ping
Can't wait to see all the things breaking 
Well sadly my stuff got broken cus of jb hitreg merge
But component is a class
Idk what your inheritance issue is
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
NineTailedFox::AnnounceScpTermination
Okay Python didn't need to be catching strays
I know it's correct, I had to patch it out 😭
It doesn't exist anymore in the experimental branch
Hence 
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 


Okay so
I tried to spawn a ragdoll
That uses
ServerCreateRagdoll calls ServerOnRagdollCreated with a null ReferenceHub
That's old bug and your reported it
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
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
Oh this is a separate issue
Oh gotcha gotcha
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)
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
I'm gonna say but probably scream later is.
Try hunt for many but as possible

Please don't be nullable stuff bc i will also scream for it
I'm hoping this list will start to dwindle moving to the future
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 😭
Though some of them are more personal bugs rather than full bugs
Exactly!

🗣️
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?
I still giggle over the localadmin log in bug fixes
I have to keep it so I remember why the hell I have the NullFpmmFix there
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 😭
You know with that bug I wonder like
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
5 lines
Right
How about we rewrite the role system again 
Well if you include brackets yeah but it's all pedantics
The point is it's easy
We NEED CCM rework 2 
We breaking exiled for 2 months again with this one 🗣️🗣️
We also need triangle primitives.. I’ve been asking for it for 4 years already..
Instead of triangles adding 4D cubes and 4D objects to the gsme
So Slejm, you’d keep your word right if I promote the fuck out of that LabAPI triangle request 
Hi chat
Are we talking 2d primitives or what kind of 3d prism are we talking
You have just given @restive turret a reputation point!
Cause we could be talking pyramids or prisms
I mean if we get triangle planes and pyramids, lowkey would be dope 
Pyramids > prisms
More versatile
Besides you can always tile some pyramids together to make a prism
, but what if I want to have a triangle for 1 side and not the other 
Only takes two I think
Tile them together
What did i do
Exist
Take the prism
Cut it in half like that
Now it's two pyramids
What if remove all sides
Well I don’t want a pyramid though, I just want a triangle
A 2D triangle for meshes or something?
Cause like
People already make meshes
.. that is a text toy.
I know
Why do you want a 2D triangle
To make a very long and pointed thingamabob for an event I had in my head for years
The point I'm getting at is that anything you want 2D can be made using a text toy using less resources than a hundred triangles
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
You cant stand on textoy
Yeah
If you want to stand on something, make it really thin
I don’t want the invisible blocks
Also can Unity handle standing on infinitely thin objects?
¯_(ツ)_/¯
So again we're back to
You can't stand on a text toy? Put a primitive below it
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
The problem is I don't think Unity supports that
Oh it can very easily be supported
What about tunneling?
You would need continuous physics rather than discrete
And I'm not sure that's how Unity operates with some of its physics calculations
It’s something I’d have to check out again myself later
It just depends on the project
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
Because you can make a "plane" without a text toy
It's just you need a text toy to do textures
If you're saying a 2D triangle can do both, then you're using hundreds of primitives over just a couple
Which is bad practice
I don't understand the problem you're facing that requires this
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
Although when will NW add pyramids 
We can get it in before the end of the year
I believe
Trust
Word
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
pyramids probably wont be likely
youll need to craft them using the triangle primitive when that releases
as it will be a triangle plane
If, not when, but if
-# what a crazy scp reference

Surely will get them before EOL of Scp SL or whatever Hubert said in that interview quite recently
Either way, a single pyramid or single triangle is not sufficient to create arbitrary meshes
What
Like whenever scp sl goes into EOL support, surely by then will get those god damn pyramids and triangles
i dont think SCPSL will go into EOL for many years
I wouldn't bet even a penny on that xd
How much 
I was close to getting triangles into SL the first time around
So surely if I resume my efforts, I could see the dream 
Pyramids would be a good primitive object to add
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
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?
Literally exactly
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 >>>
"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
They can literally make triangles using a text toy anyways 😭
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
But actually that's not collidable
And canvas overhead might be a factor
A 2D plane is likely not collidable with everything anyways
Anything with discrete physics is cooked
Non-convex colliders 
I love non-convex colliders
^
Tunneling is a problem with infinitely thin planes in discrete physics no matter the collider type
True
Yes I've faced issues before
And I'm guessing some things in SL use discrete physics
That's the default in Unity so I wouldn't be surprised
In summary: pyramids >>>>>
Too lazy.

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"
Stupidity leaderboard
- All of us for being here
- Everyone else
real, based, truthy
Me when no pickup wrapper for Scp1509 
Yet
I got a NullPointerException trying to go to Sleep(); last night 😭
the merge hasn't requested properly 
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
No subtitles:
new CassieAnnouncement(new CassieTtsPayload("hello", false <-- SUBTITLES, true), 0f, 1).AddToQueue();
Anyone know how to get the sound that plays before decont announcements?
Its part of the audio file
Decontaimination has its own bell
oh the decon
isnt \n working for the new line stuff?
<br> or <br /> ?
ah right this was an exiled thing
We dont use Exiled
How are you supposed to make new lines with this update
That is basegame
I'll look in a min
Thanks for the tip, I wouldn't have known that without you. 
We use \n on Bright's and this update just breaks them for some reason
Try
<split>
Do I need to close that
I need a thanks northwood emote
If I can find the Api reference 😭
isnt it just Assembly-CSharp?
I use visual studio lol
I'm looking there rn
I got the wave announcement
I'm guessing I also have to replace all pitch_0.1 with $PITCH_0.1 right?
yeah thats how i did it
I have zero clue sorry i never used Cassie stuff
I definitely didn't use a patch for that, no...
alright i'll have to try this
and i'll try and figure out newlines later
dunno why that got removed
Please let me know if you find anything 😭
Can't be an SL update without breaking changes for modders
They could have at least warned us...
where'd you find that?
in the assembly-csharp
alr
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
i.e. right now when we need new lines, we use \n
and we expected Cassie to like, split it into a new part
so it would clear subtitles and then display the next part
Ah ye
split replaces that?
Thats what the split should do
aight i'll try
split working for you huh?
ah i see
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
Crazy man
Since a few updates, my game crashes 20 times before I can join a server. Tragic.

I never crashed
You're just better than me.
I maybe crashed out but the game never crashed
I will remind you of that in 16 hours (<t:1765899679:f>).
Watch me gonna ignore this and play GoWR all day 
Hmmm question
how do you make cassie not play the announcement jingle before your message
yeah
bells -> your message -> the end thingy
i just want my message, no jingle or end part
PlayBackground = false
sweet ty
we use it for horror ambiance
and right now it's just hilarious
"may i have your attention please: screech"
That's funny
Command or plugin?
bell boo! screeech
plugin but got it
You have exactly 10 minutes to finish it then I gonna step into the dream word
Cassie.CassieAnnouncementDispatcher
U might have older one
Cassie will haunt you in your sleep
Uhh lemme try updating rq
I don't want that
How can I opt out of that
yeah 😅






