#plugins-dev-chat
1 messages ยท Page 83 of 1
So you use GetComponentInParent to get the parent of the Collider, and check for adjascent components?
my arrows were meant to mean components on the same gameobject
Oh okay gotcha
That's so tough
RIP me
Okay I think I am doing the understanding
The collider is a component of a child of the root
GetComponentInParent takes that child, grabs the parent, and finds components of that
pretty much
though the collider is probably nested deeper than that
doesn't matter with GetComponentInParent
Oh so it climbs up the hierarchy through every parent to get the component
yea
That's kind of ill
Is there any easy way to know where a component will fall in that hierarchy?
log out the hierarchy 
Damnnnn that's kind of tuff
Get every component on that level, then for every parent log their components
๐ฅถ
Kind of icy
My takeaway from this is that it's all voodoo magic and that to get something from a collider do .GetComponentInParent();
Fire
you can transform.root.getcomponent too
ReferenceHub.TryGetHub(tranfsorm.root, out var hub)
What the fuckkkk
for doors & stuff you should probably use GetComponentInParent
well crap
.root.gameObject
also you're probably hitting a HitboxIdentity, right?
then just collider.GetComponent<HitboxIdentity>().Owner
No output :(
print out the collider
Oh you know why
Grenades probably just don't call OnCollided when hitting a player
Different LayerMask
drake laptop gif
I should just send out 26 raycasts every tick to determine collision with players

Wait can I fr do this?
probably
So I was thinking right
I want to be able to "inspect" a seed when a spawns, determine if it's good or bad, and respawn the seed depending on what I find
What would this do for me
Cause when the round restarts, this shit is ran
Nvm I don't think that did a damn thing
I've had this in the back of my mind for weeks and I still don't know what i can do
you're better off replicating the map generation algorithm
The map generation algorithm sucks
At least to try to work with
I tried a while back to do it but cut out all the network spawning shit but it didn't work
Probably because I barely understand what the code is doing
yeah you need to recreate it without messing with unity
I had weird server-client desync and it spawned doors and clutter in places it wasn't supposed to
What if
I just
Destroy the seedsynchronizer and make a new one
remove the map and recreate it with primitives
cooking (death)
I mean
All the seed generation and stuff happens with seed sychronizer's awake
I could theoretically destroy it and redo it
you need to reload the whole scene
Wdym
Oh yeah
Clutter
And doors
And shit
I mean ideally I can avoid recreating the map gen myself
I would love a way to just say "Hey guy, regenerate the map, this seed sucks"
Can I make my own seed synchronizer 
You need to get rid of the network spawning code
As each room generates, it runs network sync code
???
Awake runs
Which runs GenerateLevel
Which runs GenerateFacility
Which calls these zone generators and the generate function
It passes through a System.Random
what network sync are you talking about
AtlasZoneGenerator runs this type shit
the only network sync is the seed, then clutter
Clutter and doors
and doors, yea

It generates clutter and doors as each one is ran
The main problem is just that this code sucks
From the perspective of someone who knows very little about unity, I hate this because I have no idea what any of it means
It's probably fine
I just have no idea what I'm doing
networking is handled by mirror, which is kinda seperate from unity
๐คท๐ผ same difference to me
so you can get a good idea how it works from reading the docs/code for it since its open source
Cool but I still need to remake the entire of seedsync
The main problem is not the doors and clutter spawning
Ignore that I even brought it up
Because I feel like that's quickly becoming the main focus
That's not the issue
The issue is I have no idea what the hell this type of shit is
It's meaningless buzz words to me because I have no idea what it is
Cool we're registering identities and interpreting and randomizing atlases
What are these identities and atlases
I don't know I'm stupid bro
I have no way to learn how any of this works so I'm at a dead end
you read what the code does 
I'll kill you

lol
It wouldn't be such a problem if I didn't have to track down every little goddamn thing
Like okay we're screwing with AtlasInterpretation[] Interpreted
Oh look it's { get; set; }, now I need to find usages
Cool awesome now to look at all of these
I can't do this bro I barely understand unity
It just really shouldn't be this hard to regenerate the map
I have to simulate the entirety of the map gen?
Why?
Dumb
It passes one System.Random instance into every function
So if I miss even one call everything goes out the window
If I even do things in the wrong order it doesn't work
So I then need to figure out, for instance, okay when zone generators are added to the zone generators list, what order are they in?
Then this extends to each room, clutter generation, etc.
I did that
It's just another problem on the pile
Another thing I have to figure out myself
All to do one goddamn thing
i would say map generation is something that is barely moddable, and would go as far to say that its been implemented in a way which is the least friendly to plugin devs
literally my whole point
if i copy the whole code and change it so it runs on its own, can i make it CC0
:3333
only thing i recommend, is that people make an issue on the github about it and make sure it gets upvotes
All I want is to say "no I don't like this seed, generate another one"
so far no ones has made any complaints, so its unlikely to change
Gotcha
Just the LabAPI issues?
map gen modding sounds like a nightmare on both sides
yeah
I don't even want to mod it
I just want to be able to filter seeds
Modding it would be nice but that would require the system to be entirely changed
At least afaik
CC0?
creative commons 0
i'd imagine custom seed atlas support
it might be fun to rewrite the current map gen entirely but it's also painful
just making all map generated things networked, would allow the most possibilities. although would still be a hard problem to deal with for the issue posted above(you would probably have to do all the map gen yourself)

actually, maybe you would be able to just replace a random endroom (e.g. shelter) with a redroom if you needed it
doesn't that do a full server restart?
Yes
idk the values of NextRoundAction
Doing it without setting StopNextRound doesn't work :(
then why don't you restart the round after map gen
I do
Yes
that is horrible
Yes
you can just inspect the seed on waitingforplayers and restart
check if it's good or not
Yes, how?
by that time you have the whole map
but you restart the entire dam server
so just do your check in waitingforplayers and do a simple round restart
Will that be faster
by a million* times
-# *as far as NOT RESTARTING THE WHOLE PROCESS goes
Dope
~20s vs ~2s
You right you right
It's much faster
I thought you meant like
Idek
I'm a little slow
Excuse me
it's okay
np
you might cause some issues by not doing full round restarts
This is the round restart code
When doing a soft restart like that the only things that happen are the OnRestartTriggered action, UptimeRounds increment and check, DestroyAllDummies, GC.Collect, _lastRestartTime update and ServerChangeScene
Afaik I need none of the other shit there to happen
I prefer that it doesn't increment round uptime or anything else
maybe a GC collect after you've found a good seed
what if you find 100 bad seeds back-to-back 
Ty 

Then I'm major league cooked
What is a bad seed

Any seed that doesn't spawn red room or has gates close to each other
Is it possible for me to make a broadcast clear when the next broadcast is received, without setting the next broadcast to clear previous?
If you're talking base-game, I don't believe so
If you're talking with a plugin, 100%
No doubt
Sir, we are talking in "dev-chat"
Where people normally talk about plugin development
Sometimes people come in here and ask about setting settings okay give me a break
Fair, but it's also very safe to assume someone is talking about plugin dev
How can I give myself admin???
Well from the perspective of a dev, the question you asked is a relatively obvious one as something that would be possible
I on win12 pro ultra hd max
So I had to double check
Well I'm not a relatively smart person, so
Lol all good
I think there is a thing when you send a broadcast that clear previous
" without setting the next broadcast to clear previous"
I mean
Patch easier i guess
If your goal is to make it default for all broadcasts that they clear previous then it's probably an easy patch
Cus you just have to get the receive cmd and you run the clearbc method
Probably can be done inside 1 patch that's a prefix
What even is the setting to clear previous on a broadcast?
Oh dope
save a list of known good fallback seeds
It's 4th param
What I go through all the fallback seeds?
https://github.com/northwood-studios/LabAPI/blob/329f3bbf33bd0e698026ba8864a6d6e41a3e9bc8/LabApi/Features/Wrappers/Players/Player.cs#L1093
public void SendBroadcast(string message, ushort duration, Broadcast.BroadcastFlags type = Broadcast.BroadcastFlags.Normal, bool shouldClearPrevious = false)
what
no like
if you cant find good one after 10~ attempts
fallback to a known list and just get random value
I'm looking at the function rn
What if it returns the same one over and over 
then idk temp remove it when you use it
So why don't you want to set the next broadcast to clear previous?
That's easy patch tbh
temp remove until list is empty
then just
reset the list
I know I'm just making the point that you're setting up a fall-back for an incredibly unlikely scenario
"unlikely" != "impossible"
Patch
Broadcast.Singleton.TargetAddElement
Prefix
Get instance, connection param.
Run Broadcast.Singleton.TargetClearElements(connectin);
It doesn't really matter if the server takes an extra couple seconds to load because of it
At some point it'll find a good seed
if u say so
At some point
Bro you're acting like it's gonna be doomsday
3 years later
how?
im just saying to add fallbacks ๐ญ
Count if it's more than idk 30 wrong seed than just use a pre-approval list
No shot it gets 30 wrong in a row
they dont want that
too much work
Literally
they dont care obvs 
You guys just don't understand statistics
The 52th restart el have good deed
Let's say half of all seeds are bad
Fuck the statistics
This is the odds of that happening
But it's never 0
There is quite literally no point

Bro you sound like the people who were saying Dream's speedruns weren't cheated
"But there's a 1 in 4 trillion possibility this would happen"
Sybau
You know what, the day 30 seeds fail in a row, I'll let you know
Well if you hit that jackpot please send me a letter
๐๐ผ
I would set up fallbacks if it like definitively failed after X seeds or something
But it will eventually give a seed
Ye eventually
And the odds of it failing a ton are so incredibly low
And like 20 player waiting
Lmao
It also makes it easier to update my code when I don't need to rely on a pre-approved fallback list
Unless
Hmm
I wonder if I can just automate it
Automate what
Save good seeds as the server runs
was it really that much effort 
A manual list would've been
An automatic list is much better
well yeah
I still doubt I'll ever use the fallback
But eh whatever
It's cool to say I have it
just dont store EVERY good seed, i mean 500000 seeds stored seems like too much
I'm gonna do a hashset and store 100
Maybe less
And with a stalin sort you only get 1
my beloved .Sort()
I use .Sort
i use Slejm.Kill()
Is it bad that I use Json files to save and load data?
What would that look like
Like usernames
thats it?
File.ReadAllLines or smth
List<string> fileText = new();
File.WriteAllLines(path, fileText);
Lmao peak
I feel like I should stop storing data in like 5 different files for my different classes
But I'm unsure how I want to centralize it
database !!!
Oof time to learn how to database?
What would be the base database shit to use
Do while loops check condition at the beginning of each loop?
Damn
What would the best way to do this shit be
Cause if the light is destroyed part-way through the loop, I'll get an exception
Its different from a do while loop which checks conditions at end of loop
ur cooked
FUCK
nah just try catch it
Real shit
[2025-07-28 17:46:06.936 +00:00] [STDOUT] at SecretAPI.Patches.Features.DamageAttackMultiplier.Postfix (PlayerStatsSystem.AttackerDamageHandler __instance, ReferenceHub ply) [0x00017] in <d3ebac98cb714e4799f0f7887366db01>:0
[2025-07-28 17:46:06.936 +00:00] [STDOUT] at (wrapper dynamic-method) MonoMod.Utils.DynamicMethodDefinition.PlayerStatsSystem.AttackerDamageHandler.ProcessDamage_Patch1(PlayerStatsSystem.AttackerDamageHandler,ReferenceHub)
[2025-07-28 17:46:06.936 +00:00] [STDOUT] at PlayerStatsSystem.StandardDamageHandler.ApplyDamage (ReferenceHub ply) [0x00092] in <d9731e675e55453197cf28cd60eed3f2>:0
[2025-07-28 17:46:06.936 +00:00] [STDOUT] at PlayerStatsSystem.Scp049DamageHandler.ApplyDamage (ReferenceHub ply) [0x00000] in <d9731e675e55453197cf28cd60eed3f2>:0
[2025-07-28 17:46:06.937 +00:00] [STDOUT] at PlayerStatsSystem.PlayerStats.DealDamage (PlayerStatsSystem.DamageHandlerBase handler) [0x0008b] in <d9731e675e55453197cf28cd60eed3f2>:0
[2025-07-28 17:46:06.937 +00:00] [STDOUT] at CustomPlayerEffects.CardiacArrest.ServerUpdate () [0x0004f] in <d9731e675e55453197cf28cd60eed3f2>:0
[2025-07-28 17:46:06.937 +00:00] [STDOUT] at CustomPlayerEffects.CardiacArrest.OnEffectUpdate () [0x00007] in <d9731e675e55453197cf28cd60eed3f2>:0
[2025-07-28 17:46:06.937 +00:00] [STDOUT] at CustomPlayerEffects.StatusEffectBase.Update () [0x0000f] in <d9731e675e55453197cf28cd60eed3f2>:0```
@hearty shard
SecretAPI has an NRE
Tf
TIL
๐
do you use the iattacker thing
if you want you can go into ss on the branch and just delete the patch ngl
Temporarily for urself
ill remove it entirely myself probably
Dope
Real shit
I mean LabAPI and the game itself give 10x more errors than SecretAPI so I don't sweat it lmao
Just thought you'd wanna know
ill have forgotten tmrw ngl
while (light != null && light.Base != null && !light.IsDestroyed)
Checked before loop starts
But if middle of the loop it gets destroyed that condition isnt met and itll continue anyway
light is never null and .IsDestroyed just runs the .Base check
So all you need is light.Base
Also cause light.Base has a built in life check or whatever
lool no light can be null
Don't let them rider fool you
Me omw to set it to null
but thats not null thats destroyed
shouldnt
Will
if you set to null krill issue
if (!light.Base) break; is all you need
Because light.IsDestroyed does the same thing
And light is non-nullable
Is it possible to speed up cooldowns and animations and shit
Like lower reload cooldown, speed up micro wind-up, etc?
does anyone know, is it possible to show 939-style pings for players who aren't 939? I want to create a tweak to make it so 106 gets pinged when a player is damaged to make it more lore accurate
I do not believe this is possible but I'm not an expert
939's visual effects are handled through the InsufficientLighting player effect which is handled client-side
hmmm, I'm starting to wonder if I need to start learning how to client side mod
That'd decrease your playerbase by about 95%
Most people playing SL are not going to go out of their way to install client-side mods for one server
hmm, this is true
Also hi Soul
hahaha I'm glad someone recognized it
๐ฅ
What you should do is open a LabAPI Issue
On the github
And then hope and pray they care enough to do it
I have probably 4 open issues atm
are these types of suggestions worth opening an issue for? I didn't wanna bother the devs with non-bugs
It includes non-bugs
Like
oh nice! alright, I'll open an issue for this and maybe some of the other ideas I've been thinking about!!
Yes dude!
Ong just put anything you want to see in there and then pray to our overlords at the LabAPI dev team
Lucky bastards ๐
Fuck can you not give a player the insufficient light effect?
ยฏ_(ใ)_/ยฏ
is me :D
I remember MER in 14.0 being able to spawn in stuff like Lockers and SCP Pedestals. In the new LabAPI ProjectMER not really anymore.
Would anyone have any idea how the process of spawning base game prefabs for everyone using LabApi works?
Is there a uh
EnumerateAllLines in .NET Standard
RunCoroutine(Routine(light).CancelWith(light.GameObject))
That works, too

are you the bay harbour butcher?
idk what that is
there are spoilers
for the new serie
Damn
neverโข
is that possible disable pickup attached to interactable toys?
i'm not sure what exactly you mean
pickup attached to toys (white cub it is a showcase of interactable toy)
do you want to hide them or make it so you can't pick them up
no
I want the pickups not to get stuck on interactableToy but to fall and not touch it.
if you see keycard and radio is flying on interactable toy
it's not stuck on the interactable toy, it's stuck on the cube
you have to set the cube to not be collidable
cube isn`t colliadable
huh
cube is just a preview of interactabletoy
Client side modding is not planned
in client pickups attached to toys and then after time he down
As there is no way to tell what is a mod and what is a cheat
so its so strange
i don't understand
does the pickup "glitch" and fall for the client?
and then it gets teleported back
will effects like 939's ping and other such effects move to server-side ever? Or is it logistically impossible?
It is possible to do that ofc
yea
so sad that cheaters ruin everything
I'll take ThatGuy's advice and put in a suggestion so it doesn't get forgotten about
He doesnt fall for client
but for server yes
im rn making a scripting system and i have the basics done lol
if works
conditions do work for the if and events do work too
Letting us place 079 pings/939 noise pings wherever we want and control who can see them would be so awesome
it would be s cool
make it a suggestion ig
make a bug report on labapi i guess
not sure why those colliders have all collision layers enabled
I was suggesting this for the ability to make 106 more accurate by placing a ping on humans who get injured
Yea
So @upper vapor running the code in the WaitingForPlayers caused desync issues
I will
Try to work around that
not surprised
what if you reload the scene in uh
SeedSynchronizer.GenerationFinished or whatever
GenerationStage isn't very useful cuz it's just a foreach loop on the enum's values before GenerationFinished is invoked xdd
You're evil
Wait
Sometimes map gen finishes after waitingforplayers?
Is there a way I can delay the CharacterClassManager.Start function?
https://ratcentral.is-a-good.site/๐/2l789dfx.png
can you guys understand what this thing does (test just logs test)
or is it too hard?
i hate = true and = false
single equals for comparison is eeehhhhh
it reads fine but it's weird
you can understand it
bro this is for fucking toddler
and it has ! negative too
i can do this and it works
if not something equals true ๐ญ
so ugly
how could i make look "pretty"
I know that but i asked and who asked me for needed a struct like english
I know it sounds dumb
it's nice that you're making an esolang basically
but then it won't be usable anywhere else
wdym?
it won't be usable anywhere else?
I mean no
it has modules and stuff
this are connected to SL
but the basics is from an old java project that i was making
i can do whatever i want im making it bound to sl
but its easy to just migrate it

i just realized im a dumbass
Tf is this
and it was already implemented
a simple scripting language that im trying to do
for someone
that is like plain english
as max as i can
this should work fine too lol
im just stupid and didn't think about it
๐ญ
i don't make the rules lol
ScriptExtension or whatever the thing called it
the parser is there
it already parse some stuff
the actions just need to be coded
but some of them can be just made easier
set is just a set of reflection
Hi! Sometimes 106 can't go through doors
What could be the problem
Only after I set him to another role and back to 106
yeah you have to do that unfortunately
๐ญ๐ญ
Is there any property or field I can check on a Scp2176Projectile to see if it broke on impact or cracked or will I just have to check the velocity which it hit the ground with
which event are you running this in
You will have to patch Scp2176Projectile.ProcessCollision(Collision collision) (base class)
^ check _hasTriggered in a prefix
(These questions are not connected)
-
What is the difference between a round restart and a soft restart? Does some data persist between rounds or whats different?
-
Is there any way to forcefully prevent a round from ending/server being restarted (even through RA/commands)/extend it slightly just before restart actually happens?
round restarts just restarts into a new round and resets stuff related to that
server restart restarts the process
RoundEnding -> ev.IsAllowed
Youll probably have to patch round restart and also figure out how to prevent SL process being ended
subscrbe to Shutdown.OnQuit to do some cleanup
yea u cant rly stop the process ending tbh
you can prevent basegame stuff that handles doing that though
-
I believe for a new plugin a round restart isnt enough, but does plugin data like static variables get reset between rounds?
-
Alright should be fine thanks ^^
- no
ooo interesting alright
thats a you thing to handle
uh oh
memory leak 101
There's a way to subscribe to all events and get their EventArgs details
i figured it out myself :3
how the Transform Parent rpc on admintoys work ?
Anyone know how I can get a roles base max HP? Like being able to get how much max HP scp106 has as a base
trying to get a HP modifier for something after I already have their max HP set to something else
its a rpc with the network id of the thing ur parenting
or wdym
public uint ServerParentId(Transform parent)
{
NetworkIdentity component;
return !((UnityEngine.Object) parent != (UnityEngine.Object) null) || !parent.TryGetComponent<NetworkIdentity>(out component) ? 0U : component.netId;
}
just set the toy's transform
get the role template from PlayerRoleLoader
Does it have an OnCollided action?
That's what I use for my grenades
It processes collision with other.. colliders
Fire
Hi david :)
Question
Can I delay this code running?
Sometimes it runs before map gen finishes
And it fucks up everything
MapGenerated event no ?
^
I want to delay incoming connections and prevent people from joining
Because they join before the map is done loading
So seed sync happens
So I can't generate a new seed without desync
I want to delay the start for when the map is done generating
Then no more desync 
patch it out and timing.WaitUntilTrue or whatever
Gotcha just wanted to make sure this was the safe way to do it
or or or or
skip the method if the object's didStart is false
then delay a call to Start
no ctrl+c ctrl+v required
how i can level up tps with 20+ players?
at cyn
you have access to the instance
yeaaaaaa
its per player
but the log stuff is only called if its called on the dedicated server player
noooooo
Shoot
that is very wrong
coroutine 
Love that
let it pass through if not isLocalPlayer
oh yeah that too
Will this still have the desired effect of delaying connections?
there's no coroutine
pretty sure WaitUntilTrue doesnt work in CallDelayed
"wait until true" can't give you an exact delay
private static IEnumerator<float> Handler(CharacterClassManager dedicated)
{
yield return Timing.WaitUntilTrue(() => generatedMap);
dedicated.Start();
}
Okay sure
Timing.RunCoroutine(Handler(__instance));

i would like to attach an Schematic to a player Camera but idk if i do something wrong but i dont see the schematic after doing it
um
you have to set it to a player
you cant really set it to the head transform
Thank you :)
oh ok sadly
also youd have to set the offset (position) to othe offset to adjust it to be at head
localpos ?
I kinda like this
yea but if ur using labapi wrappers .Position will use localPosition
ok perfect
LightSourceToy light = LightSourceToy.Create(pickup.Transform);
thats rly all you need to do but then add the offset after (and this is pickup not player)
oh ok that easy
np
@grand flower
@grand flower if you were interested in doing seed filtering to get red room back, this is the code I'm running and it appears to work really fast
could be faster 
why do you change to online scehene when you already there since you generated the map
Not a fan of reloading scenes again and again tbh
But that works
I don't do SL modding anymore anyway heh
sup lads
sup
where does one find frameworks for custom guns?
thanks g
you have no idea
recently noticed new logs in the server console with a prefix "[STDOUT]" any clue as to why they appear and how they can be disabled?
la_show_stdout_and_stderr: false in the localadmin config
Thanks
np
I change the scene because I want a different map
Each generation of the online scene generates a new map
Damnnn you got all high and mighty on us?
Makes sense, bro has a j*b
Is there any way to access the whole item list in the game, not only cached items (like Item.List)
Yes, thank you
Does ThrowingProjectile also get called when a player holding a pinless grenade dies?
This is where the event is called
So my base assumption is no
But I can test it rq
hmmm
Do thrown nades also call ServerEvents.PickupCreated, or any other server event?
they should
This was correct
They do not call pickupcreated
:(
I just want to modify the grenades timer, no matter if thrown or live-dropped
(idc about chain explosions)
Any ideas?
Well regular grenades don't call PickupCreated, grenades dropped by dying people do
oo
But it doesn't cover all of them
So i gotta use both methods
Or another method potentially
I'm guessing there's a general method like TimedGrenade.SpawnActive() you could tie onto
Where if you patch that it will have to catch every single grenade, even if they don't call an event
I guess, but i have yet to patch anything myself so id rather not try .w.
Correct me if I'm wrong @upper vapor but I do believe you could potentially edit the grenade prefab to modify fuse time?
Maybe i can just try deleting the nade and spawning my own instant one instead xD
hmm, that could be a bug. technically projectiles are pickups
might be something going on since the projectile might have the same serial
the wrapper handles the pickup created event, and its instantiated in Start or Awake of the ItemPickupBase iirc
Hmm appears the fuse time isn't as I wanted it to be
Oh so i have to set TargetTime instead of fuseTime since its already created?
Set remainingFuseTime to be safe
Throw a separate thing on pickups for dying and it'll work
Does the ev.Projectile.Serial have same serial as the item it was before?
i would hope s o
I'm like
80% sure
I can check
They do

Yo check this gangster shit
[HarmonyPatch(typeof(TimeGrenade), nameof(TimeGrenade.ServerActivate))]
public class Testing
{
public static void Prefix(TimeGrenade __instance) => __instance._fuseTime = 0;
}
: CustomEventsHandler
That will apply to any grenade ever made

(Already tried to consult the MER discord) I try to import the SL-CustomItems thing into Unity (granted it's a slightly later version), and I get this error. How do I fix this?
I'm gonna tack on another question
What causes players to stop be able to send voice messages after really loud noises?
Do you have the newtonsoft.json dependency?
It's an official thing for MER and it works for everyone else, should already have it
You could try adding the dependency
No idea how to add dependencies to Unity projects
Me neither
On player threw projectile
And then I have the Base.OnCollided event linked to a local function
In Scp2176Projectile
That's how it does the collision
I can't find that
There's the LabAPI Wrapper Scp2176Projectile and the ItemInventory whatever
Let me uh
One sec
Yeah its not in the LabAPI wrapper or base
You want the second one
This?
using InventorySystem.Items.Pickups;
using LabApi.Features.Console;
using Scp2176Projectile = InventorySystem.Items.ThrowableProjectiles.Scp2176Projectile;
namespace Test;
[HarmonyPatch(typeof(Scp2176Projectile), nameof(Scp2176Projectile.ProcessCollision))]
public class Testing
{
public static void Prefix(Scp2176Projectile __instance)
{
Logger.Info((__instance.PhysicsModule as PickupStandardPhysics)!.Rb.linearVelocity);
}
}
That should give you the velocity of the 2176 on collision
I'm pretty sure it works idk I'm a little blazed
I think markup tag is csharp btw!
Unless this is a mobile bug...
Probably a mobile bug bc idk what you mean
Or actually
You'd want to run it on ServerFuseEnd prob
using InventorySystem.Items.Pickups;
using LabApi.Features.Console;
using Scp2176Projectile = InventorySystem.Items.ThrowableProjectiles.Scp2176Projectile;
namespace Test;
[HarmonyPatch(typeof(Scp2176Projectile), nameof(Scp2176Projectile.ServerEndFuse))]
public class Testing
{
public static void Prefix(Scp2176Projectile __instance)
{
Logger.Info((__instance.PhysicsModule as PickupStandardPhysics)!.Rb.linearVelocity);
}
}
Not sure if that works but it most likely does
Client-side
Fuck
You can look at the data and modify map and certain game stats and shit but you can't actually modify the game itself
dead chat
Ok, and?
yo guys
[2025-07-30 12:24:18.129 +03:00] [STDOUT] ArgumentException: An item with the same key has already been added. Key: ReferenceHub (Name='Player [connId=21]', NetID='9316', PlayerID='39')
[2025-07-30 12:24:18.130 +03:00] [STDOUT] at System.Collections.Generic.Dictionary`2[TKey,TValue].TryInsert (TKey key, TValue value, System.Collections.Generic.InsertionBehavior behavior) [0x0015a] in <069d7b80a3914a08b6825aa362b07f5e>:0
[2025-07-30 12:24:18.130 +03:00] [STDOUT] at System.Collections.Generic.Dictionary`2[TKey,TValue].Add (TKey key, TValue value) [0x00000] in <069d7b80a3914a08b6825aa362b07f5e>:0
[2025-07-30 12:24:18.130 +03:00] [STDOUT] at LabApi.Features.Wrappers.Player..ctor (ReferenceHub referenceHub) [0x0000b] in <ed207da941d64f12942f0c5cc79632fc>:0
[2025-07-30 12:24:18.130 +03:00] [STDOUT] at LabApi.Features.Wrappers.Player.AddPlayer (ReferenceHub referenceHub) [0x00008] in <ed207da941d64f12942f0c5cc79632fc>:0
[2025-07-30 12:24:18.130 +03:00] [STDOUT] at (wrapper delegate-invoke) System.Action`1[ReferenceHub].invoke_void_T(ReferenceHub)
[2025-07-30 12:24:18.130 +03:00] [STDOUT] at (wrapper dynamic-method) ReferenceHub.ReferenceHub.Start_Patch2(ReferenceHub)
Da hell is that
And also, can such type of errors crash servers?
[HarmonyPriority(Priority.VeryLow)]
[HarmonyPatch(typeof(Player), nameof(Player.AddPlayer))]
internal static class AddPlayerPatch
{
private static bool Prefix(ReferenceHub referenceHub)
{
if (referenceHub.isLocalPlayer)
return false;
if (Player.Dictionary.ContainsKey(referenceHub))
return false;
_ = new Player(referenceHub);
return false;
}
}
here the patch for it but idk when it will be fixed
oh
anyway, what's this?
private static void AddPlayer(ReferenceHub referenceHub)
{
if (referenceHub.isLocalPlayer)
return;
Player player = new Player(referenceHub);
}
AddPlayer has no check in it if the player is already registered so if ReferenceHub.OnPlayerAdded is called again for what ever reason LabAPI doesnt like it.
So, can this thing crash server or smth like this?
i dont think so. never happened to me.
Yo jim how are you doing?
i heard you got shot
wha
The guy that has laboratory yes
Dexter's laboratory
Forever stranded
1.6.4?
1.10.2
but the modpack is bugged
crashed my game
2 times
i uninstall it
F
Try Terrafirmacraft
already completed
with a friend
we ace modpacks togheter but idk sometimes i wanna play alone
Atm 10
Isn't that the Skyblock one
i don't remember
i played it alot of time ago
im searching a good modpack
but all copy and paste
Yes
oh 10 is skyblock
Ye
honestly let me give it a try
neither do i
2 mods i hate the most
Botania and fucking Create
its that mod when you see it you know you are going to spend 20000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 hours to craft a flower that gives you 2 minutes of burn
and then you need to do the process 20 times over
to just get a bit of mana
That's skill issue
i know
and i refuse
so i let my friend do it
while i do some other mod
its boring i find it useless
I hate blood magic
And many other magic with that
i found it in one modpack and it was complicated
Hexa or something
Ye
i don't understand why magic needs to be so much a pain in the ass
Bc its magic
Tech mods just repeat until you fot it automated
and it throws balls
Hehe balls
i scream DEEZ nuts
and the game crashes
(idk i don't have the game i wanted to make a joke)
btw opened the atm 10
and spawned near a warden
how unlucky can i be?
and it doesn't have the skyblock
Im stoopid
Never used MER and I'm 100% this has been asked and answered but: #plugins-discussion message
Does client side only primitive means that it is spawned both sides but are "disconnected" since will receive no updates? (like static objects)
What I know so far, if it is only spawned on client, it would result in falling through
I mean look how mero does it
But no they donโt updates updates or anything
I just tried to attach schematic to player and wtf. I didn't know it's so smooth now it's absulutely ๐ฅ
Hi stoopid im SlejmUr
Like i prefer the old method
Still better and more reliable for me
Hi
Where is MERO hosted? Is it opensauce at all
Yes
what old method?
ah found it
By hand it leaves less headaches
I never used that and I think it's not as good
Obv its desynced a bit
But honestly less headache for me
setting it's parent is much easier
Building meow with that in mind too would be hard
but everyone has preferences
Meow has already alot of stuff to make it look smooth and nice on the client so they look fine
Honestly parenting destroys my primitives alot
And i would need a rewrite on how the fundamentals works
holy shit
It is absurdly simple
simple is in most cases better
$"Got schematic: {schematic.Name}".Print();
trust the process
Crazy
my normal citybuild plot 
Anyone know how I can make a dummy 939 enter focus/pounce state?
setting focusState to 1 doesn't seem to work so I assume there's something I need to call?
you can check what dummies do






