#plugins-dev-chat
1 messages Β· Page 54 of 1
I'm too lazy to try to figure it out
My script dowsnt wanna a knowge what i want
I make code that barely works as is
If I try adding pathfinding to my bodyguard code I'll probably inadvertently cause like 50 billion server crashes and break like 3 other classes
Lmao
π₯
I basically know what I want but it doesn't seems to get it
good luck implementing that in SL ππ
What is A*?
pathfinding algorithm
I am so glad you asked
There is
An amazing Polylog video
00:00 Intro
01:38 Change the lengths!
06:34 What is a good potential?
12:31 Implementation
16:20 Bonus
Tom SlΓ‘ma's video: https://youtu.be/umszOeerdsU
Our Patreon: https://www.patreon.com/Polylog
Github: https://github.com/polylog-cs/Astar/tree/main
Blog: https://vasekrozhon.wordpress.com/2024/09/04/the-hidden-beauty-of-the-a-algorithm/
Some...
I never find this video when I look up "A* pathfinding" so it takes some digging cause I always forget the details
Istg polylog is like shadow-banned or something cause I never find his content even though it's absolutely π₯
A* is dijkstra but cooler
I wouldnt say its cooler xd
Watch this polylog video and you may change your mind
A* is pretty rad
But I do know how it works xd
A* is just diakstra with heuristic function
A* is really good when you have a large data pool
It's why almost all GPS services use some variant of A*
Which SL doesnt
Yeah lol
If I add pathfinding to SL I'm adding Dijkstra and not A*
It's a lot more work for little payoff
I was thinking about pathfinding system which Barotrauma uses
Like each room will have nodes for paths where you can go from-to
and interact with stuff
Dijsktra is like the breadth-first search of algorithms
π π
But what if
I want
Obstacle detection
I <3 ad blockers
Work pc
your work pc should be the #1 pc to have an ad block
unless your IT dept is absolutely off their fucking rocker
you guys know how exceptions can disconnect players due to a plugin sometimes, what method is called in the case of that? i wanna patch it so i can log it to discord
It will be only on player side
it logs Disconnecting netId={id} because of exception or smth inside of LocalAdminLogs tho
so there has to be some sort of method called that logs that specifically, rather than just watching the log method all the time
Oh then, well search for that string in dnspy
ive never used it, looked it up and it seems like the project is archived? does it still work or is there a new ver?
Mirror.NetworkMessages::WrapHandler
It's a method that returns a delegate
thank you so much
yeah it's in a catch block so I can add a method in there
using transpiler
hmm, it's internal only, im publicizing it with BepInEx but I still can't use it in nameof π
Then you didn't do it right
ok now it works? wtf π
does anyone know why my harmony patch might return NotSupportedException π
what
oh...
Do you want me to use my magic ball to tell why
i was gunna send the code!
i dont need the generics tho
so that doesn't really affect me...
im just using a transpiler to add a method here
patch should work fine but ofc i get the error
because of the generics
π
guess i gotta patch this then instead then?
Get the disconnect
unity has a uh
Nvm you can't trace back what was wrong
ReceivedLogMessageThreaded or something like this event
or do you specifically need the exceptionM
patch microsoft 
id like to have it but ig I could just send the log that the server gives out to discord anyway
At what point can I patch the entire game
I want people to join an SCP:SL server and end up playing an entirely different genre
okie
I wanna join Chaos Theory and end up playing a 2D Mario knock-off
you can use the non-threaded version too but i assume you have a buffer that you send every x seconds
Lmao
i dont have a buffer?
@icy knoll you can maybe do is in disconnect you get why is disconnected (check stack trace has WrapHandler.)
But you still wont be able to get the exception for it
W
no ill check what the content is smh
sorry but i understood nothing π
uh i wouldnt know how to do that π
Nvm that still might use generic
me neither
exactly!
Just edit the assembly to run an action
You sub to it
Easy

If not well you fucked the whole mirror but well
What if you check if a player disconnecting corresponds with an error happening around that timeframe
Instead of trying to trace back the player disconnect, just check for any error within like .1 seconds
I'd rather not do any file scanning thanks
Is file scanning the local admin log really going to be harder than tracing back the error from the player disconnecting?
not reliable π
also, the wraphandler is the only global exception handler, no?
you can just
check if it starts with Disconnecting connId=
idk, someone just told me that's the only place where my needed code can be found
so i thought id patch it
because ye
generics

Oh
π€·
I know nothing about how unity works lmao I just make plugins
I have never opened Unity Hub a day in my life
i need to do some unity stuff in future tbh... it's fun making plugins that interact with unity...
you still know some unity stuff
but in the end you should just make sure your code doesn't throw
And I know how to read it
oh the host disconnectn't
tell that to NW
Other than my knowledge of C# and fucking with assemblies I have no clue how to do unity shit
@icy knoll
[HarmonyPatch(typeof(NetworkServer), nameof(NetworkServer.UnpackAndInvoke))]
public static class HostDisconnectPatch
{
public static void Postfix(ref bool __result, NetworkConnectionToClient connection, NetworkReader reader, int channelId)
{
if (connection.connectionId == 0)
{
__result = true;
}
}
}
i dont know where it throws tho! a random NRE will just throw from smth that's not even nullable and ill cry
If you want it to work for all players remove the if statement
what does this do?
π₯
Prevents it from disconnecting the host for exceptions
@grand flower you're my hero
remove the if statement and it'll prevent disconnecting anyone
the host isn't disconnecting
lol
it's players
true
hmm
ill just leave as is so people can ping me if they crash and ill see the logs
Exactly
If people don't report the problem then it doesn't exist
I just did a few patches for the host player because it being kicked is stupid
and causes a shit ton of issues
Mirror disconnects players to protect you
nullable annotations are just annotations
what code do you mean by that?
You shouldn't turn that off
I know
That's why my code only does the host player
This is the realest shit ever though
ik they are annotations but sometimes it throws on stuff that don't even seem to be nullable so ye
Unity objects can always be null
not unity
I've had a few NRE yeah
Just sanity check fucking everything
just silence your compiler
I was too lazy to figure out how and also my compiler is usually good about giving suggestions
ignore the compiler πΏ
why πππ
The only time I do end up suppressing exceptions for players is when it's a NW moment
I just like getting that success with no warnings
solution: don't compile 
Impossible
Besides, my compiler's right, it SHOULDN'T be null, but it sometimes somehow is
It's near impossible
Everything can be null
just write code that the compiler likes
not that difficult
^
Because nullable isn't a promise
I can't be bothered to suppress warnings I know will never cause an issue. (Like a nullable field not having a value when leaving its constructor. Its intentional, since objects of this type are created via a wrapper that initializes said field)
Unless my mindset is wrong
which it may be
i can be a null
Its a privilege
My code is all written to appease my compiler overlords
^
then
= null!
or disable nullable warnings for that section
IEnumerable<Item?> Items
gosh, you're so anti-nullable
it saves quite some headache
I have parts in my code where I add in a "?? throw new NRE" just to appease the compiler gods
Nullables are great when used properly
^
I use nullables selectively in my plugin
but i hate adding =null! to every unity ojbect field so ii just don't use it in a unity project
I do more C# outside of Unity than with Unity, screw that engine
Real
W
I don't have any desire to learn Unity
I like C# though
Same
C# is a cool language
i do more unitying than C#ing in unity 
I'm happy with Unreal
Based
I happy just making stuff until I find a good engine
when can we have "paste as child" for multiple selected objects
i have to do that every freaking time
Lmao
Don't child
Every object equals
Thus far in my experience with coding C# is like the perfect level
i have a hierarch of many prefabs
like holy moly
unpacking prefabs in the editor player actually freezes the game so much
It's not python high-level but it's not assembly low-level
-# probably cuz i had millions of little prefabs in one scene
Literally no idea what this means but I agree ππΌ
I also like can compile my C# project into NAOT
wdym python high-level π
that's not
Js
high-level
Medium
just functional
Is python not a higher-level language than C#?
the editor took 30 seconds to load a new scene
because i had prefabs with a size of hundreds of megabytes on disk (lots of tiny prefabs)
half of that time was "editor: merge prefabs"
like you're just walking around
30s frame drop
C# and python are both high level
not sure if i wanna call python general-purpose but it kinda is
Higher leverl is when you think it runs that
i think πΏ was talking about
how functional (as in paradigm) the languages are
I mean like
C# is both an OOP and functional language
Python you don't have to define types
and let's not talk about POOP
It's much more prone to errors and shit
that's jusno
But it's easy to write code
Me crashing the whole python with just ctrl + C
That doesn't really define the low/high levelness of it
In like basic C you don't get as much abstraction
a
The higher the level, the more abstracted
Python abstracts more than C#
Which abstracts more than C
Yes, Python is generally considered a higher-level programming language than C#.
Here's why:
- Abstraction: Python offers a higher level of abstraction from the underlying hardware. You don't need to worry as much about memory management, pointers, or low-level system details. C#, while also abstracting away much of the hardware, still gives you more direct control over these aspects.
- Syntax and Readability: Python's syntax is often described as more natural and closer to human language, making it easier to read and write. C# syntax is more verbose and explicitly typed.
- Memory Management: Python uses automatic garbage collection, meaning you don't manually allocate or deallocate memory. C# also has automatic garbage collection, but it provides more options for direct memory manipulation when needed.
- Development Speed: Due to its simplicity, extensive libraries, and dynamic typing, Python often allows for faster development and prototyping. C# can also be fast for development, especially with tools like Visual Studio, but Python generally has an edge in rapid development.
- Type System: Python is dynamically typed, meaning type checking happens at runtime. C# is statically typed, meaning type checking happens at compile time, which can catch errors earlier but also adds more boilerplate code.
While both are powerful and widely used languages, Python typically sits at a higher level of abstraction compared to C#.
gemini said so
and i ahte it
should've asked it t gaslight me 
using AI 
Gaslighting
I rarely ever get shit right
it's no match for natural stupidity though
This is so true
me when wikipedia says otherwise lol https://en.wikipedia.org/wiki/High-level_programming_language
A high-level programming language is a programming language with strong abstraction from the details of the computer. In contrast to low-level programming languages, it may use natural language elements, be easier to use, or may automate (or even hide entirely) significant areas of computing systems (e.g. memory management), making the process o...
This explains the distinction between high and low level
It doesn't say you can't have hierarchies within the levels
What about medium level
It defines the distinction between high and low level yes
-# several people are typing
godlike level
#~ me yapping
A language can be considered "higher level" than another language based on how much it abstracts
So wait, where would you put brainfuck then
Brainfuck is lower level because it abstracts less
(not a joke, just a random thought as a good example)
The more abstraction, the higher level
it abstracts less?
Yes
it abstracts everything 
brainfuck doesn't have memory or stack manipulation
<<>>[[[]][[
what about jsfuck
but it is a very primitive language, it is a high level one
Fuck js
i knew you were gonna say that
Other question
It's not that it's low level
But it's lower level
"High-level languages intend to provide features that standardize common tasks, permit rich debugging, and maintain architectural agnosticism; while low-level languages often produce more efficient code through optimization for a specific system architecture. Abstraction penalty is the cost that high-level programming techniques pay for being unable to optimize performance or use certain hardware because they don't take advantage of certain low-level architectural resources."
From the wiki article you gave
Ok chatgpt
That's wikipedia
In brainfuck you have to make functions to do simple tasks
In python you can just do those simple tasks
Python has more abstraction
how do you make functions in brainfuck...
Where does scratch go?
there are no functions in brainfuck
You can make your own pseudo-functions
mfing gta cheat code moves
let me find a better language than brainfuck for a good example
what about malbolge
I can send you an old video I watched about it if you'd like
It's very interesting
Might take me a while to find though
Thats a cigarette brand
^
Its the highest
Literally never heard of malbolge
malbolge is fuuun
(=<`#9]~6ZY327Uv4-QsqpMn&+Ij"'E%e{Ab~w=_:]Kw%o44Uqp0/Q?xNvL:`H%c#DD2^WV>gY;dts76qKJImZkj
This is hello world
Im a little confused as to why saying python is higher-level than C# sparked such a debate
I thought it was general nomenclature to call a language "higher-level" if it abstracts more
Was it designed to be that hard? Or some people do use this
Considering the original distinction between high and low level is all about how much it abstracts
There are programming languages that are designed to be hard
It is the intention of it
kinda like an art piece
Dont understand why people do that
Novelty, art piecce, fun
^
It's like
I made automated systems in No Man's Sky
And I optimize builds in Mindustry
In a way that's very similar to what people get out of working with these dumb programming languages
I can serialize a vector3 right?
There's not really a productive result from it, it's just cool and fun
just checking
in yml to config? ye
thxs
there's a chicken programming language
If I'm being so honest, I don't actually know what serialization is
I don't know what yml is lmao
you have many data
you put data in line
π
usually data -> blob
turns anything sequenced thingy basically
deserialization is the opposite
Why is it a question if you can serialize a Vector3? At some level you can always write data to a file
json, yml, binary, etc etc
because prev you couldnt
NW made a ser for it
Default yaml configuration doesnt allow it
Whats the syntax for printing?
because apparently Unity missed to add [Serialiuble] or whaetever
So the game has built-in serialization to write data to files that didn't include Vector3 but now does?
You have to add your own serializers to yaml builder
didn't y'all add a serializer for that? π
t
default defualt
not in the default config..?
I learned something new today :)
not
I love learning new things!
that in NW
this
learn deez
For the chicken language
I cant select correct msg ffs
i wanna edit the config to use kind of same as in C# name
like
longClassNameWithThesesTuff
rather than ___
3114 isn't even stable
I was able to patch in 3114 damaging other SCPs but I forgot if I gave up on making him strangle others because it was impossible or if it was just because I was lazy
is it possible to destroy clutter in Hcz ?
Like delete pickup items?
Ofc
There's a clutter generator
i dont remember how they work
ok am i like crazy i thought roletypeid was in Assembly-CSharp
it is
Pretty sure those are baked into the rooms
ur just bad
^
no
theyre apart of a clutter system
well
meanie
check your reference paths
it is i just checked it twice
show
<Reference Include="Assembly-CSharp_publicized">
<HintPath>$(EXILED_REFERENCES)\Assembly-CSharp_publicized.dll</HintPath>
</Reference>
do you have a publicized one?
Hm
I wonder
oh my fucking god
and is the EXILED_REFERENCES env var set properly?
0kb
πππππ
Haha
mine didnt work ig
thats what i did
Assembly publicizer
oml
also, you're better off with this 
THATS WHAT I DID
msbuild publicizer
GRRRR
wha
So
proto NERDS
invasion of denmark
Lmao real
nuh uh
eve: "look at all these nerds"
I helped my friend build a protogen costume but I still make fun of him because it's funny
bagoly mondja verΓ©bnek π
like a uh
fursuit?
Yes

It was all DIY shit
"here, furry shit"
"look at you, stupid furry"
Scavenged some LED panels and a raspberry pi
I make fun of everyone
Including myself
where did you get them from π
i neeeeeeeeeeeed iiiiiitttttttt
Sure let me find the LED panels we used
I'm pretty sure these were the panels we used
https://www.amazon.com/2048-Matrix-Adjustable-Brightness-Compatible/dp/B0BRBGHFKQ/ref=asc_df_B0BRBGHFKQ?mcid=a8f7e836db693b21935d4f72fa54ad51&hvocijid=16315210327698303843-B0BRBGHFKQ-&hvexpln=73&tag=hyprod-20&linkCode=df0&hvadid=721245378154&hvpos=&hvnetw=g&hvrand=16315210327698303843&hvpone=&hvptwo=&hvqmt=&hvdev=m&hvdvcmdl=&hvlocint=&hvlocphy=9019621&hvtargid=pla-2281435178138&psc=1
It was Adafruit 32x64
We had two panels that we wired for each side
The panels are eh
They're a little jittery
I'm not sure if that's the panel's fault or the raspberry pi or the program I used
But π€·
At least it works
I just have a bad sense of humor
these "simple" displays often have very low throughput
so a batch update can take noticeable time
if you can, send as little updates as possible
I just enjoy helping people with stuff, especially friends
As much as I have a deprecating sense of humor, I think people are great
π
HAIII
How you doing
Thank you
your like the first one to ever say that
am guddd :3 wbu
Yess doing good
got maturita
4 months of freedom
then Czech Technical University
Ofc! I see you here and on the LabAPI issues and shit and I know it takes a lot of effort outside of your daily life to keep up with it all
nuh uh
ooo sounds gud
have fun there
definitly not gonna suffer
nah
let's announce a david appreciation day
That's what I'm saying!
Love that guy
uh yes
theyre network objects
you can even spawn new ones
sweet
also it will adjust the generator count dynamically
for announcements
1 out of 100 generators activated 
I just wanna prevent certain spots from being used because they're hell to defend for 079/Puppet (on Bright's)
i miss "5 out of 5 generators activated. All generators have been successfully engaged. SCP-079 recontainment sequence commencing. Heavy Containment Zone overcharge in T-1 minute." 
oh?
like which spots
players will generally tend to have an explosive jailbird/particle disruptor prepped to obliterate Puppet
what
Modded server
SCP-079 picks a player to become Puppet
Pinging teleports the player to the ping location
Pinging Puppet heals it
WHAT
Puppet has 1000 HP, increases every time 079 tiers up
i didnt know this 
i havent played doctor brights more than 4 times tbf
tons of changes 
I reworked all of the underperfoming SCPs
096 especially, poor thing really wasn't built to be the lone SCP in base game
So now it's smaller when docile so it can go under players to enrage, and it gets varying speed boosts

(thanks @unique crane for the scale stuff)
it's actually super fun
also made it so "Try Not To Cry" gives it the Invisible effect
you can still hear 096 but not see it
096 charge still spawns grenades
although we had to reduce the count a while back

I did a bunch of stuff for Last Stand SCPs on the server I do stuff for
It was basic though
Nothing crazy
Mayhem has only one SCP per round so we had to buff them a ton
48 player servers give most SCPs over 10k hp
Is there a way to get all spawn locations of generators
uhhh
yes..
should be i just
forgot the method

sweet ty
I love having to make this because I can still get a NRE from the try somehow π
u sure .Value isnt null ?
use HasValue
still throws NRE :3

me when you moment
hey this isn't me!
eve moment
What if Strangle is null
then i question how skeleton is able to strangle at all
yeah but where r u getting Strangle from

_strangle == null
unity life check forms dont work on null objects that dont exist
You can out _strangle here
that too
They do
they do???
Yeah
okie back to unity life check

i thought when an object is straight up just null and not initialized unity wouldnt be able to do that

The implicit operator literally is just a null comparison
damn
Cant change MicroHID Energy state on pickup?
π
Weird request
call fro the templates
could have just put a static on SetEnergy since it doesnt even need to do much
π
Has anyone had success decoding voice packets and writing them out to a wav file? Every time I try I get heavily distorted, robotic sounding audio.
I agree
Separate the templates from the instances
This is so weird
UhΔ₯h
Not sure if you're allowed to do that
Not planning to use it on a live server, just doing it for fun
As I you're not allowed
VSR doesn't allow it, I see no problem if I'm not running the code on a verified server
Oh
Fair
Use the built-in OpusDecoder
Then you need to write the wave file
You can keep the stream open and write data whenever available
I've been trying to, I'm simply decoding the packet that comes in, then using NAudio to write the float samples to a wav file
It just comes out sounding terrible
Poggies
WaveFileWriter, right?
Yeah
float[] buffer = new float[24000];
OpusDecoder decoder = new OpusDecoder();
int len = decoder.Decode(ev.Message.Data, ev.Message.DataLength, buffer);```
Using 24000 because the game uses it for the buffer size too π€·ββοΈ
Should work
Then write the buffer to the file with len
Cyanox spotted
Yeah, it writes out some semblance of the voice, you can clearly make out what's being said, but it's half speed and robotic
Tried that too, that just produced static noise
when i try to set the event OnPlayerPickingUpItem IsAllowed=false for a specific user the others can't take the item, why?
Remove InUse from the pickup's info
thanks
Create a sample provider that reads from the buffer, then pass that through a converter (.ToWaveProvider) and write the wave data instead of samples
Np
Perhaps post issue about it on github
So we add it to the wrapper
ye i might
Is this necessary? This seems like a more complicated way to write the wav file to avoid using WaveFileWriter.WriteSamples(), I don't imagine the library's logic would differ between the two approaches. I feel like it's gotta be something stupid I'm doing wrong with this decoder or wave writer.
Here's my full code atm, ignore the structure and buffer inefficiency, it's just for testing
public static OpusDecoder Decoder = new OpusDecoder();
private static FileStream fw = new FileStream("test.wav", FileMode.Create);
static WaveFileWriter writer = new WaveFileWriter(fw, new WaveFormat(48000, 1));
public override void OnPlayerReceivingVoiceMessage(PlayerReceivingVoiceMessageEventArgs ev)
{
float[] buffer = new float[24000];
int len = Decoder.Decode(ev.Message.Data, ev.Message.DataLength, buffer);
writer.WriteSamples(buffer, 0, len);
}
// just saving the file when round start is triggered because im too lazy to write a command
public override void OnServerRoundStarted()
{
writer.Dispose();
fw.Dispose();
}```
buffer reallocation π
shhh
WaveFileWriter.CreateFile
I threw this together in 1 minute for testing this
how about that
Not seeing that as a function
new wavefilewriter with path arg?
Oh it's static
yeah
Again, I don't know that changing the function I'm using for writing the file would fix it, I doubt it's the library's fault. Am I decoding the audio from the game incorrectly?
uh sec
wait nvm
the player wouldn't receive their own voice message
thought the event might be firing multiple times
^ yeah
But why is the player receiving their own voice packets?
the player sending the voice message as well
the host player probs
unless it really is you
in this case it might be called twice per voice packet
which might cause the issue you have
For some reason I was thinking this was the server's POV, like when the server receives a voice message from the client lol
probs to allow the player to hear their own voice
oh yeah it does call for yourself
we had that bug after a fix where Puppet would hear its own voice

I think at least
π
sorry to interrupt and idk if this is the right place to ask. but quick question. has NW auth servers been having issues recently or just me?
try restarting steam
Yup, my game just rejected my auth and started crashing while trying to test this lol
uh
no im talkin serverside
yes
nvm
that's serverside
central servers run on a potato
like whole server of 25 just got kicked on round restart bc auth didnt work killing it
welcome to SL
Happens 
I can't even test now 
This makes a lot of sense, explains the half speed voice
offline mode
Still got no idea why they're even a thing
sure discord auth (but that's gone) and patreon (why route auth through it for that though, just link your account and have the servers communicate for badges idk)
Seems I was right about it being something very stupid
Well thank you for the help anyways @upper vapor!
Me neither lmao
oh help why is that public
when new version on nuget?
probably a cedric request
isnt the newest version in nuget?
also i got an email about my pr
nope
still 1.0.2
we've been spam pinging you and beryl for ages π
yeah i was gonna say ππ
I just got the role and the project was completely paused, dont expect an update soon soon
too much to do
but we will get there
what's the version in game rn, 1.1.0?
okay welp ill get that done
tysm jesus!

no worries, trying to get the project back on track
Jesus
is this back on track? π
yes
cooked
Yup
Unrailed 2: Back on Track
We are so APIback
Anyway i believe in you all!
david can get anything merged
eve will still blame david for the delay tho
Expected from her
I blame you
what
Thats not the delay at all

David its okay
they were all QA tested quite some time ago
Can we all agree its eve's fault?
Yes
Thats homophobic
yeah, i think ax and slejm can also agree with this one
don't hat eyourself, that's homophobic
Its quite evephobic yea
@upper vapor #labapi-logs message
yes
Yes
okay well there we go, that was kinda annoying to do since I merged stuff but master should have 1.1.0
I need to wait to get the nuget package signed
tysm jesus!
and ill update it
no worries
let me know if this ever happens again
feel free to ping me
sweet
ty
I replied to your comment on my PR
But the gist of it is that we have to use delays a bunch in SL
π ill take a look later
need to do smt real quick
Which one from the million
Or a 100 of
I only have one open PR
issues, that's something else

scp 001?
@teal junco @upper vapor
Thanks for the info, but yeah sadly i was looking for a way to have (almost) no delay of the primitive moving with the body :/
And yeah, atm we just update the position of the primitive each frame ,_,
There won't be any delay
Clients will receive the update for the primitive on the same frame as the player's position
As long as you update it every frame
Hii, how can I access for example the serialLabel of a Custom Keycard that I have in my inventory?

So we've disabled collisions between items to help with server lag
However, this has had the unfortunate side effect of causing immense lag when armor is inside other armor
If you respawn the entire server at your position and everyone dies instantly, it's 48 armor sets overlapping with each other
Which seems to cause issues in BodyArmorPickup.OnTriggerStay
165 FPS at the start. 30 now
the method checks if the item is armor, but at the very end
Would it be possible to have the check be placed at the start considering it's cheaper than most of the other checks?
if (other.gameObject.layer != 9 || (double) Vector3.Dot(Vector3.up, this.transform.right) > -0.800000011920929 || !other.transform.root.TryGetComponent<ItemPickupBase>(out component) || (double) component.Info.WeightKg > 2.0999999046325684 || !this._alreadyMovedPickups.Add(component.Info.Serial) || !InventoryItemLoader.AvailableItems.TryGetValue(component.Info.ItemId, out itemBase) || itemBase.Category == ItemCategory.Armor)
return;
!InventoryItemLoader.AvailableItems.TryGetValue(component.Info.ItemId, out itemBase) || itemBase.Category == ItemCategory.Armor
Not that I think this would fix the performance that much anyway
The fact overlaps trigger already tanks it so we're probably going to have to re-enable item collision
why does armor do that lol
where do you disable collisions
public override void OnServerRoundStarted()
{
if (Plugin.Instance.PluginConfig.DisableItemCollision)
{
Physics.IgnoreLayerCollision(9, 9, true);
Physics.IgnoreLayerCollision(20, 9, true);
}
}
is it not possible to just enable collisions for armor only
need to check their layer again
nah
it's the same as the other items
so can't selectively make them collide with armor
can u disable collisions for a specific item
maaaaaaaybe
maybe if I modify the item prefab
but i can't be arsed to deal with this right now so re-enabling item collision will suffice
well
Cabinet
Is Pickup.Creat() work normal?

even only Pickup.Create(ItemType.Lantern, player!. Position); nor does it show any items
you probably arenβt doing Pickup::Spawn()
Think of .Create as a prepare method
sometimes you only want to create an instance you want to spawn on-demand, instead of instant spawning
setting properties before spawning for example also
Create a PR adding
bool Spawn = true in the create
i love breaking changes
There are changes in progress to make this more clear
cast the item to a KeycardItem, get its base and go through the Details
admin toy wrappers all have a networkSpawn param
got mp3 streaming working on linux fairly easily
i forgot that i renamed the file π






