#plugins-dev-chat

1 messages · Page 34 of 1

harsh thorn
#

it breaks so the server doesnt send it (as it returns None)

turbid socket
#

have this too

harsh thorn
#

so lmk if it still happens from like 30 minutes after that message

late shoal
#

same for me

pallid galleon
#

Good to know I'm not alone lmao

#

The schizo update

harsh thorn
pallid galleon
#

Been reading through it, cheers! peepoLove

#

I'll send a message in here if we encounter it tomorrow

harsh thorn
#

👍

#

(you may need to ping me as i dont read here all the time)

pallid galleon
rugged laurel
#

Faking someones role to spectator makes everyone in the server here them. Iv noticed this when i do it with my plugin and i just stop their voice packets.

harsh thorn
#

although it didnt happen when they were faked to FilmMaker

#

but i guess it may be because that is handled differenrly

rugged laurel
#

Ya i just know i ran into that problem since i believe mimicry

harsh thorn
#

ill just do a check just in case

rugged laurel
#

And i just stop the voice packets cause i fake ppl as spectators for stuff

#

it also happens if you fake a human role as an scp role

harsh thorn
#

ill just add a check to stop a vc packet if synced to spectator and the player isnt actually a spectator

grand flower
#

question about serverside settings, are they per server or is it possible to make a group of servers use the same settings?

#

i.e. multiple servers running the exact same plugins that should share settings

worthy rune
#

its per server, there isnt away to properly share settings across servers but you can do hacks like creating new ids for settings each time with the default vaules of settings for the player if you store them on the server(doesnt work for plaintext input tho)

grand flower
#

bleh

#

if I wanted to suggest such a thing, should I do it on the LabAPI repo?

#

Because without it, it kinda makes using the system a lot more annoying for players

worthy rune
grand flower
#

especially when you have like, ~20 servers

#

ah

#

cool

worthy rune
#

btw these 20 servers are they on the same ip?

grand flower
#

nop, that's the issue

icy knoll
#

why tf do you have 20 servers

#

😭

hearty shard
#

for active servers it makes sense

grand flower
#

Bright

hearty shard
#

Yea

worthy rune
grand flower
#

NA servers, two different modes, then EU servers with same thing

#

nah IP changes too

#

not for all servers but groups of them

worthy rune
#

how split up are they, as in if setting were shared per ip would that still be a problem

grand flower
#

you'd have to port over your settings at least 5 times

worthy rune
#

hmmm

hearty shard
#

tbf making them ip based would be based... Except for auto verified hosts...

grand flower
#

would help but it'd be nice if we could just set a string id on the server

#

and it'd just use it to group the settings as belonging to one host

hearty shard
#

Itd need some way to verify it

grand flower
#

I don't see the issue with that

#

What are peeps gonna use it for outside of keybinds and gameplay toggles

worthy rune
#

we need another way

grand flower
#

you've got the verified server system

#

could make that string id be on top of that

#

client checks the verified server belongs to the group, and then sends it the settings based on the configured id

carmine prawn
restive turret
carmine prawn
unique crane
#

Yes, I fixed it in internal PR too

restive turret
#

will come in 14.2

carmine prawn
#

👍

unique crane
#

Assuming it gets merged by then

carmine prawn
#

and server console [WARN] [LabApi] Missing DoorName enum value for door name tag HID_LAB

random scaffold
carmine prawn
restive turret
celest thorn
#

Is it possible to scale pickups?

hearty shard
celest thorn
#

because Scale doesn't seem to exist

hearty shard
grand flower
#

gameObject.transform.localScale

hearty shard
#

!!

#

Its networked

#

Since its a network object

celest thorn
#

fr?

#

Oh nice

hearty shard
#

(you might have to send spawn msg tho)

#

But its always been possible

grand flower
#

shouldn't need to

hearty shard
#

I think

hearty shard
grand flower
#

you only need to do it for players if you're faking their scale iirc

#

don't remember

hearty shard
grand flower
#

I just know you don't need to for those

#

I don't do it and it just works

celest thorn
#

How can i create a damagehandler for the Disruptor so i can apply it to ragdolls?

                    ragdoll.DamageHandler = new DisruptorDamageHandler(new DisruptorShotEvent(Item.Get(ItemType.ParticleDisruptor, Server.Host).Base as InventorySystem.Items.Firearms.Firearm, DisruptorActionModule.FiringState.FiringSingle), Vector3.up, -1);

I had this on exiled but i don't think it works especially for the Item.Get

random scaffold
#

..........

celest thorn
#

at the time

#

im talking 5/6 months ago

upper vapor
#

you can set the event to null and initialize the firingstate property

random scaffold
#

ced777ric writing...

harsh thorn
#

@worthy rune @restive turret @pallid galleon @late shoal ive had someone else woth the issue provide some more data, it should be entirely fixed now

I may revise it later as i need to reveal someones class to the entire servef when they use a radio, and i think checking if they are near any radio is expensive, so itl just reveal for now

#

Make sure you install the latest using the update commands if you disabled the updater, if its on itl do it by itself
(checkforcedmodupdate and installcedmodupdate

carmine prawn
restive turret
#

@hearty shard btw ref doesnt work since its not a field

hearty shard
#

hm

#

Alright ur forgiven

random scaffold
#

or just unsafe and *ev.isAllowed

restive turret
#

TEEHEEE

#

no

random scaffold
restive turret
#

no

random scaffold
#

must works im guess

#

why

hearty shard
#

unsafe code is UGLY

restive turret
#

because i dont wanna use unsafe

random scaffold
restive turret
#

what

worn gull
#

What emojis can the remoteadmin display?

worn gull
#

Thanks

slate flume
slate flume
#

W

#

Appreciate it

severe cave
#

how can I set a dummys role?

random scaffold
#

setrole

pseudo hawk
#

How do I display text on a client's screen?

restive turret
restive turret
pseudo hawk
unique crane
restive turret
#

or use some that does that for u idk

unique crane
#

Here are the tags you can use

#

Including the positioning ones

pseudo hawk
#

Oh i meant like x, y pos

#

Thats more of a client-side thing im assuming

#

Because im looking to place my XP and level text somewhere near the edge of the HUD

unique crane
pseudo hawk
#

Source engine has spoiled me

unique crane
#

You will have to combine the positioning tags

pseudo hawk
#

Ill try that, thanks

random scaffold
#

oh

severe cave
#

how do I set a dummy hit point and speed if possible?

hearty shard
#

Wdym

#

Hit point? As in damage?

#

For speed use MovementBoost effect

severe cave
severe cave
hearty shard
celest thorn
#

Is it possible to make "custom models" be visible in the hands of the player like in the hands of a player
Like how do i calculate it

obtuse glade
#

anyone have any idea if you can get the player's steamid?

severe cave
obtuse glade
unique crane
#

There is discord login, northwood, dummy, etc too

hearty shard
#

DAVID

unique crane
#

EVE

hearty shard
#

when do i get a paycheck from nw

#

im like

#

#1 dev

unique crane
#

Ask ced

hearty shard
#

@ced paycheck where

obtuse glade
wispy dirge
#

what

upper vapor
#

you need to have a collider on the server but not on the client
so yes these flags are good but do a delayed call after spawning, enable the collider and set isTrigger to true

#

primitive._collider

#

or GetComponent<Collider>()

heady turret
#
    public class ShootingWeaponSlowness : CustomRolePlayEffect
    {
        public override CustomRolePlayEffectType Type { get; set; } = CustomRolePlayEffectType.ShootingWeaponSlowness;
        public ItemType[] AffectedWeapons { get; set; } = { ItemType.GunFRMG0, ItemType.GunLogicer };
        public byte Intensity { get; set; } = 30;
        protected override void RegisterEvents()
        {
            Exiled.Events.Handlers.Player.Shot += OnShot;
            base.RegisterEvents();
        }
        protected override void UnregisterEvents()
        {
            Exiled.Events.Handlers.Player.Shot -= OnShot; 
            base.UnregisterEvents();
        }
        public override void GiveEffect(RolePlayPlayer rpPlayer)
        {
            base.GiveEffect(rpPlayer);
            rpPlayer.ExiledPlayer.EnableEffect(Exiled.API.Enums.EffectType.Slowness, Intensity, 1);
        }
        void OnShot(ShotEventArgs ev)
        {
            if (RolePlayPlayer.TryGet(ev.Player, out var rolePlayPlayer) && rolePlayPlayer != null && rolePlayPlayer.IsHaveRolePlayEffect(this) == false) return;

            if (AffectedWeapons.Contains(ev.Item.Type)) GiveEffect(rolePlayPlayer);
        }
    }```
#

what problem? Why events dont registering?

#

( I know thats exiled, but just tell me did i something wrong with registerall so events doesnt registered (RegisterEvents Doesnt executing) )

random scaffold
soft turtle
#

For what reason could such an error appear?

upper vapor
#

hub is null

#

player has been destroyed

#

oh it uses StaticUnityMethods.Update

#

😭

#

you're cooked

random scaffold
#

gameobject null

soft turtle
# random scaffold

This is understandable.
I'm trying to figure out why it becomes null and causes this error.

true cedar
hearty shard
#

i dont believe

upper vapor
#

exception -> blow up

hearty shard
#

for some reason..

#

yea

upper vapor
#

and remaining events don't get called

true cedar
#

ah

#

better than needless components imo :3

hearty shard
#

but also

#

horrific to debug

true cedar
#

simply have no bugs

upper vapor
soft turtle
#

Can the server be unverified if I return the old horror sounds when meeting an SCP?

soft turtle
unique crane
#

Im assuming you mean the one from CB?

#

I dont think there is any issue with that

soft turtle
soft turtle
#

:D

slate flume
#

Quick question, if anyone knows
When you set Damage on a damage handler (eg. firearmDamageHandler.Damage = 10) is this affected by armor and penetration and status effects and all of that, or is that just going to be plain damage?

unique crane
#

Check the license but I think yes?

soft turtle
hearty shard
#

cuz if you do it before the armor checks etc then yeah will check armor as normal

#

if you do it after that then it will do your damage

grand flower
#

You need to override ProcessDamage or ApplyDamage

#

don't remember the name

hearty shard
#

do it the right time

grand flower
#

how would you do it at the right time

#

you can't from events

#

patching maybe sure

hearty shard
#

when is Hurting called

#

cuz again

#

the question is what does it do when you set Damage value

#

it depends

#

Hurting event will be different from smth else

grand flower
#

Hurting's the only place you can change the damage afaik

#

without patching

hearty shard
#

might be

#

i do think there should be 2 events for it tho

#

might confuse some though

grand flower
#

wdym two events

hearty shard
#

1 for before

#

and one for after

grand flower
#

Hurting/Hurt?

hearty shard
#

no like

#

where you can modify Damage

#

with what they asked

#

both things

#

or ig

#

could add a property to damage handler?

grand flower
#

Armor damage is handled in ProcessDamage

#

so you'd have to override or patch that

hearty shard
#

events

#

from

#

LabAPI

#

one for before it one for after

grand flower
#

The current events

#

Hurting/Hurt

hearty shard
#

yeah but

grand flower
#

run before

#

processdamage

hearty shard
#

Hurt isnt before ?

#

is it

grand flower
#

it is

hearty shard
#

wtf

#

@unique crane why

grand flower
#

Hurting is

#

Hurt is after damage & damage calculations

unique crane
#

?

hearty shard
#

nvm

hearty shard
grand flower
#

So yeah either make a custom damage handler or patch the armor calculations out

#

yeah my bad

unique crane
#

What is it

hearty shard
unique crane
#

okiiii

hearty shard
#

2 events

grand flower
#

Talking about armor calculations being done after the Hurting event

hearty shard
#

for hurting

#

yeah

grand flower
#

would be nice to have an event

#

to override armor damage reduction

unique crane
#

There is like ing/ed events for.. almost everything?

grand flower
#

well not for that

hearty shard
unique crane
#

Then what do you mean

upper vapor
#

y'all want an event for everything Heartbreaking
i need to unapi the lab

hearty shard
#

theres event for before damage happens and one for after

grand flower
#

basically a way to override armor damage reduction

hearty shard
#

but we want for before damage is like affected by armor etc

unique crane
hearty shard
#
  • after
grand flower
#

right now Hurting runs before armor damage reduction

unique crane
#

banned from downloading the normal one

grand flower
#

Or maybe just, add an argument to Hurting

#

or more

#

to change how armor is handled

hearty shard
unique crane
#

WHAT DO YOU MEAN STEAMHAPPY

hearty shard
#

etc

upper vapor
#

kek

grand flower
#

yes

hearty shard
upper vapor
#

i genuinely laughed out loud

#

i like patching

#

transpilers

#

:3

unique crane
#

Yeah

#

and then I join server when someone makes their own api and patches out 9567896 things

#

and I get blamed that the game doesnt work properly

#

(its their fault all the time)

upper vapor
#

that's their fault

#

i need performance for testing my stuff on a server only i have access to

grand flower
#

I do my best to keep patches low and use transpilers for compat

#

but there's still plenty of things you need them for

#

or even just NW fixes

#

like wearables disappearing on role change

slate flume
#

I appreciate the help

upper vapor
grand flower
#

got a whole folder of them mmLul

unique crane
#

And did you report them

#

(if they arent already)

grand flower
#

most of them are already on the tracker

#

need to check the wearable one

random scaffold
#

!nwmoment

regal lakeBOT
grand flower
#

also need to fix 079 getting stuck with Decontaminating today

unique crane
#

Huh

#

I dont know about that one

hearty shard
#

i had 079 just

#

not tell me my gens were activating

grand flower
#

079 can get Decontaminating in light

hearty shard
#

for some reason earlier

grand flower
#

and sometimes keeps it for the rest of the round

hearty shard
unique crane
#

Oh yea I think I fixed that one

#

In one of my prs

hearty shard
#

oh

#

oh decon not

unique crane
#

I mean decon

#

not gens activating

hearty shard
#

do you know what would make 079 not get told their gens are activating

unique crane
#

0 clue

hearty shard
#

cuz 2 of them didnt

#

the final did

unique crane
#

Is it this pattern all the time?

#

or is it random

hearty shard
#

i didnt see it map and it didnt display

#

it was random PI_Shrug

unique crane
#

gg

hearty shard
#

ive never seen this before

#

wasnt on my server either so i cant check for 079 related changes

upper vapor
#

cedmod

#

surely

unique crane
#

Check on non-modded server

#

I guess

hearty shard
#

yeah but even that server never seen that bug before

#

it was just one round lol

unique crane
#

I dont think that anything related to 079 was changed

#

except for value changes

#

like energy regen

hearty shard
#

david...

#

THIS GAME SUCKSSSS

#

the random ass bugs

#

💔

unique crane
#

Its free

#

then dont play it

hearty shard
#

i cant believe youd break them

#

NO!

#

I PAID for this!!!

#

trust!!!

#

i DONT lie

unique crane
#

No you didnt

hearty shard
#

:c

#

calling me a liar

#

im telling hubert

unique crane
#

Show me the patreon receipt

hearty shard
#

i bought it on my 27th alt on steam

unique crane
#

with your name on it

hearty shard
#

lost the password

unique crane
#

Sure..

hearty shard
#

david

#

david

#

ddavid

unique crane
#

eve

#

eve

hearty shard
#

i have something to show u

#

remember what i said

unique crane
#

Hm?

hearty shard
#

about how you should join a meowing contest

unique crane
#

How about no

hearty shard
#

HAHAHAHA

upper vapor
#

meowing contest

#

with david

#

hmm

hearty shard
#

david meowed

#

i saw it

upper vapor
#

not here i guess

hearty shard
#

obviously

#

then everyone would have blackmail

unique crane
#

obviously I wont do that here

hearty shard
#

yes!!

#

david does that in staff chat

#

WHAT

#

DAVID

icy knoll
#

david did it in the staff discord!

hearty shard
#

Lumi get out!!!

icy knoll
#

cant send it tho otherwise id get nuked :c

hearty shard
#

stop getting ur members to meow for you

unique crane
#

hardcoded game ban

icy knoll
hearty shard
#

YOU

#

TOLD

#

YOUR ENTIRE

#

COMMUNITY

#

TO MEOW

icy knoll
icy knoll
hearty shard
#

YOU

unique crane
hearty shard
#

yeah

icy knoll
#

how did you even get access

#

you aint even in the discord

hearty shard
upper vapor
icy knoll
#

stop having slaves in my discord smh

#

/j

hearty shard
#

now stop getting ur members to meow for you

#

😭

icy knoll
#

trust me

#

never again

hearty shard
#

no you WILL do it again

#

i KNOW you

icy knoll
#

i wont 😭

hearty shard
#

whens the next lumi cancellation

unique crane
#

When we deporting eve?

icy knoll
#

please 🙏

#

she bullies me for legit doing stuff my community asks for

hearty shard
#

got them to meow for you

icy knoll
#

it felt so weird fuckin doing all that trust me

hearty shard
#

😭

#

at least not yet

unique crane
#

what do you mean yet

icy knoll
#

ok so that means she will send a voice message meowing at some point

hearty shard
#

not in a public chat

#

im not lumi

grand flower
#

@unique crane I don't see an issue for the wearables bug but if you escape/change role with wearables they get reset to none, and don't show up until the player drops/puts the armor back on

unique crane
#

You sure thats not plugin issue?

#

cause like..

grand flower
#

I'll test on a vanilla server but it'd be a weird issue for a plugin to cause

unique crane
#

I think someone would notice that

hearty shard
#

however

#

you cant think

grand flower
#

I found that WearableSync.OnServerRoleSet overrides wearables to None

#

idk if something else is supposed to pick up the slack afterwards

grand flower
#

yeah no I RA switched a Dummy from MTF Captain to Class D with no inventory reset

#

the armor isn't visible anymore

hearty shard
#

troll

#

david broke armor!!!

unique crane
#

Please report it then

grand flower
#

will do

#

northwood-qa/scpsl-bug-reporting#1495

#

Happens for any role change

#

northwood-qa/scpsl-bug-reporting#514 still happens in 14.1 too, any time you kill and respawn a player on the same frame

#

On that note, what triggers the black screen for clients and is it something I can patch out

#

I'm assuming it's part of the role change net message?

unique crane
#

¯_(ツ)_/¯

grand flower
#

trying to fix it since it happens to a lot of our players

restive turret
#

Why do people try to join the server when they know they are banned

upper vapor
grand flower
#

SpectatorSpawnReasonReaderWriter.WriteSpawnReason gonna try patching this to never write KilledByPlayer

upper vapor
#

I swear if NW added a client-side ban progressbar they could stream that shit to retirement homes

grand flower
#

nvm getting killed by a player doesn't do the black screen

#

only deaths caused by nobody? hm

#

nvm it does it if you don't switch to a player

#

maybe i can forcefully make them look at a player to prevent that

icy knoll
#

Someone asked in exiled if it is possible to sync Transform::LookAt(Transform) to the client, and idk how to do that lol

icy knoll
hearty shard
#

yeah thats not

#

helpful

#

i dont remember if its a network object

icy knoll
#

grrr

#

hold on

#

lemme figure that part out

#

it inherits Scp079InteractableBase which is a MonoBehaviour

hearty shard
#

not network object

grand flower
#

can you network parenting an object

hearty shard
#

well yes

#

but

icy knoll
#

great

grand flower
#

can I send a network message to parent a gameobject to a networked game object

hearty shard
#

they both need network object

#

actually

#

wait

#

yes

grand flower
#

wait map loaded game objects aren't referenceable via network?

hearty shard
#

well....

#

a lot isnt...

grand flower
#

fun

#

can you force a player to spectate another player

#

or is that fully clientside

hearty shard
#

you cannot

grand flower
#

great, can't really fix the black screen bug then

hearty shard
#

client will give what it is spectating tho

#

yea...

grand flower
#

ugh

hearty shard
#

you cant sync that one

grand flower
#

i mean i could just

#

patch the damage handlers to always send the spectator spawn reason as "killed by X player"

#

so that the player tracks them instead of fading to black

hearty shard
grand flower
#

but that'd be confusing for players

#

so i'll just pray NW fixes it soon

true cedar
#

whats the bug

grand flower
#

if you die to any other reason than being killed by another player, and then respawn on the same frame, you still get the spectator fade to black

#

while you're alive

#

I can "fix" it by forcing the spectator reason to be "Killed by X player" and making X a player that's alive, since that'll prevent fade to black, but it'd be confusing for players

slate flume
hearty shard
#

💔

grand flower
#

can happen in vanilla if you die on the same frame as a spawn wave

#

modded servers can make that easier depending on what they do

plain gazelle
#

Is there any "easy" way to transform an Item from a players inventory into a Pickup in the world?

grand flower
#

drop it

plain gazelle
#

player.DropItem() ?
Can the returned Pickup be used to immediately set its position?

grand flower
#

yes

plain gazelle
#

Thank you

grand flower
#

o7

plain gazelle
# grand flower drop it

When i use DropAmmo, the return type is
IEnumerable<AmmoPick>
Probably because it might drop multiple ammo boxes?
How can i handle this IEnumerable? Im not familiar with this return type ^^"

grand flower
#

loop through it

plain gazelle
#

And is there a way to make it so the method is guaranteed to only create a single ammo box?
Either with increase yield or by limiting the "amount" variable i give it?

grand flower
#

Your only guarantee would be to patch the ServerDropAmmo method to only allow it to return one pickup

#

but otherwise you'd just do this

#
var pickups = player.DropAmmo(...);
foreach (var pickup in pickups)
{
    // Do something with pickup.
}
plain gazelle
#

Thank you ^^

ashen hornet
#

Does Network_collisionsEnabled = false; in CapybaraToy work for you guys?

#

Cause I'm pretty sure it did and now it does not

#

Unless I'm a schizo

hearty shard
#

so you have to enable and disable it

#

for it to sync

ashen hornet
#

idk

hearty shard
#

errr

#

damn

#

idk then

hearty shard
#

If it doesnt work then im clueless

ashen hornet
#

@hearty shard that works, thx

hearty shard
#

now fix it basegame trolling

ashen hornet
#

I think the reason it being broken is collider not existing at that point yet

hearty shard
#

oh i thought it just didnt sync it properly

worthy rune
grand flower
#

Disabling ragdolls sounds like a heavy fix

worthy rune
#

you could try denying the spawn only for the player that died

#

otherwise waiting for a base game fix would be the only way imo

grand flower
#

i'll probably wait unless i find a better solution somehow

#

otherwise i'll have to write detection for dying and spawning on the same frame mmLul

#

not fun

plain gazelle
#

I have an issue with the player.DropAmmo function
Trying to drop lower amounts of ammo creates inconsistent results and doesnt drop the actual specified amount.
If i have less than 7 ammo, specifying an amount between 1-6 drops exactly that amount.
If i have 7 or more ammo, specifying an amount between 1-6 always drops exactly 7.

grand flower
#

send code

grand flower
#

no but it's annoying

#

cause i gotta kill the player and re-run everything that already ran for the player on spawn

#

and it might not even guarantee anything

plain gazelle
# grand flower send code
public static bool TryDropAmmo(Player player, ItemType ammoType, ushort amount, out string output)
{
    output = "Requested item is not ammo.";
    if (!IsAmmoType(ammoType))
        return false;

    output = "Why do you want to drop 0 ammo ._.";
    if (amount == 0)
        return false;

    if (!TryGetPlacementPosition(player, out Vector3 point, out Vector3 rotation))
    {
        output = "Failed to get a placement position.";
        return false;
    }

    IEnumerable<AmmoPickup> pickup = player.DropAmmo(ammoType, amount);
    int iterations = 0;
    foreach (AmmoPickup p in pickup)
    {
        p.Position = point + (Vector3.up * iterations * 0.1f);
        iterations++;
        p.Rotation = Quaternion.Euler(rotation);
    }

    if (iterations == 1)
        output = "Placed 1 box of ammo.";
    else if (iterations >= 2)
        output = $"Placed {iterations} boxes of ammo.";
    else
        output = "Placed invalid amount boxes of ammo? ....What? How?";

    return true;
}

I checked the sent "amount" variable and that indeed is 1-6 and not suddenly 7

grand flower
#

how are you calling the method

plain gazelle
# grand flower how are you calling the method
if (arguments.At(0).ToLower() == "ammo")
{
    response = "Wrong usage of command";
    if (arguments.Count <= 2)
        return false;
    if (!ushort.TryParse(arguments.At(1), out ushort amount))
        return false;
    if (!EvaluateAmmoType(arguments.At(2), out ItemType ammoType))
        return false;

    // Main function
    if (!TryDropAmmo(requester, ammoType, amount, out response))
        return false;

    if (arguments.Count >= 4)
        response += "\n[Info] Additional arguments do not change the function of this command.";

    return true;
}
#

In a client command Execute()

#

If i have 5 ammo and do the command to drop 3, it drops 3
If i have 20 ammo and do the command to drop 3, it drops 7

grand flower
#

what kind of ammo are you trying to drop

plain gazelle
#

ItemType.Ammo9x19

#

Other ammo types also do it but with different values

#

44cal's minimum is 3

#

556 is 20

#

Huh its the same value of the leftmost button for 556 and 44. (although 9x19's left button is 10, and not 7...)

#

Maybe it is this checkMinimals...

#

Yup setting it to false did what i wanted ._.

#

Thanks for being my rubber duck

grand flower
#
[log] ArgumentException: Destination array was not long enough. Check destIndex and length, and the array's lower bounds
[log] Parameter name: destinationArray
[log] at System.Array.Copy (System.Array sourceArray, System.Int32 sourceIndex, System.Array destinationArray, System.Int32 destinationIndex, System.Int32 length) [0x000cb] in <069d7b80a3914a08b6825aa362b07f5e>:0
[log] at System.Array.Copy (System.Array sourceArray, System.Array destinationArray, System.Int32 length) [0x0002c] in <069d7b80a3914a08b6825aa362b07f5e>:0
[log] at InventorySystem.Items.Autosync.AutosyncMessage..ctor (Mirror.NetworkWriter writer, InventorySystem.Items.ItemIdentifier itemId) [0x0004e] in <8db1ca0fe9a6484084cda320b139932c>:0
[log] at InventorySystem.Items.Autosync.AutosyncWriterBase.Send () [0x00010] in <8db1ca0fe9a6484084cda320b139932c>:0
[log] at InventorySystem.Items.Autosync.AutosyncWriterBase.Dispose () [0x00000] in <8db1ca0fe9a6484084cda320b139932c>:0
[log] at InventorySystem.Items.Autosync.AutosyncItem.ServerSendTargetRpc (ReferenceHub receiver, System.Action`1[T] extraData) [0x00020] in <8db1ca0fe9a6484084cda320b139932c>:0
[log] at InventorySystem.Items.Keycards.ChaosKeycardItem.ServerOnNewPlayerConnected (ReferenceHub hub) [0x00007] in <8db1ca0fe9a6484084cda320b139932c>:0
[log] at InventorySystem.Items.Keycards.KeycardItem.<OnTemplateReloaded>b__46_0 (ReferenceHub hub) [0x00008] in <8db1ca0fe9a6484084cda320b139932c>:0
[log] at (wrapper delegate-invoke) System.Action`1[ReferenceHub].invoke_void_T(ReferenceHub)
[log] at ReferenceHub.Start () [0x00009] in <8db1ca0fe9a6484084cda320b139932c>:0
#

Can I just make a bug report and copy this stacktrace over?

random scaffold
#

no

grand flower
#

Sweet, I'll wait for an answer from Northwood

mild ice
# grand flower Sweet, I'll wait for an answer from Northwood

I'm not a part of the QA team so take my answer with a grain of salt:
If you do open a bug report the worst they will do is ask for more information, if you have reliable reproduction steps that work on a vanilla dedicated server you should be fine

grand flower
#

I'll try and find a way to reproduce it, but so far it's just spamming our server logs when a player connects

#

I'm assuming there's a chaos keycard somewhere on the map

grand flower
#

Do ragdolls not have network identities?

#

Getting an exception when I call NetworkServer.Destroy() on one

#
NullReferenceException: Object reference not set to an instance of an object
  at Mirror.NetworkIdentity.OnStopServer () [0x00023] in <d73d070e2abb49cd982556c9f692e950>:0
  at Mirror.NetworkServer.DestroyObject (Mirror.NetworkIdentity identity, Mirror.NetworkServer+DestroyMode mode) [0x000be] in <d73d070e2abb49cd982556c9f692e950>:0
  at Mirror.NetworkServer.DestroyObject (UnityEngine.GameObject obj, Mirror.NetworkServer+DestroyMode mode) [0x0001e] in <d73d070e2abb49cd982556c9f692e950>:0
  at Mirror.NetworkServer.Destroy (UnityEngine.GameObject obj) [0x00000] in <d73d070e2abb49cd982556c9f692e950>:0
worthy rune
#

they should have one, how was it spawned in the first place

true cedar
#

the amount of copies mirror makes should be illegal

#

i counted it and there are 5 times when data is copied (mostly from writer to writer)

grand flower
#

i kill a bunch of dummies, cleanup code destroys the ragdolls after 5 seconds

#

apparently one of the network behaviours in the identity is null or invalid

worthy rune
#

weird

grand flower
#

a little annoying

#

i'll just patch mirror ig

#

... the null check in the patch doesn't fix the error

#

@worthy rune

#

So for some reason... the ragdolls have a null network behaviour array?

worthy rune
#

hmnm

#

where they network spawned yet, or just object.instantiated?

grand flower
#

considering I see them from my client, im guessing they should be

worthy rune
#

to network spawn them you would have to have the networkbehaviour list to make the spawn payload valid

grand flower
#

I just kill the dummies via the kill command, I don't do anything special

#

is there some special behaviour im not aware of for ragdolls?

worthy rune
#

you are not using a special version of mirror or something

grand flower
#

nope, regular SL

#

with two patches to fix null refs

#

which shouldn't affect this

worthy rune
grand flower
#

I'll test on a vanilla server with just some ragdoll cleanup code

#
public override void OnPlayerSpawnedRagdoll(PlayerSpawnedRagdollEventArgs args)
{
    Timing.CallDelayed(5.0f, () =>
    {
        if (args.Ragdoll != null && args.Ragdoll.Base)
        {
            Logger.Warn("Valid ragdoll, destroying.");
            NetworkServer.Destroy(args.Ragdoll.Base.gameObject);
        }
    });
}
#

yeah no it really seems to be SL

#
[2025-05-31 22:12:05.954 -07:00] [STDOUT] MEC.Timing:Update()
[2025-05-31 22:12:05.954 -07:00] [STDOUT] NullReferenceException: Object reference not set to an instance of an object
[2025-05-31 22:12:05.955 -07:00] [STDOUT]   at Mirror.NetworkIdentity.OnStopServer () [0x00023] in <d73d070e2abb49cd982556c9f692e950>:0
[2025-05-31 22:12:05.955 -07:00] [STDOUT]   at Mirror.NetworkServer.DestroyObject (Mirror.NetworkIdentity identity, Mirror.NetworkServer+DestroyMode mode) [0x000be] in <d73d070e2abb49cd982556c9f692e950>:0
[2025-05-31 22:12:05.955 -07:00] [STDOUT]   at Mirror.NetworkServer.DestroyObject (UnityEngine.GameObject obj, Mirror.NetworkServer+DestroyMode mode) [0x0001e] in <d73d070e2abb49cd982556c9f692e950>:0
[2025-05-31 22:12:05.955 -07:00] [STDOUT]   at Mirror.NetworkServer.Destroy (UnityEngine.GameObject obj) [0x00000] in <d73d070e2abb49cd982556c9f692e950>:0
[2025-05-31 22:12:05.955 -07:00] [STDOUT]   at SLTestPlugin.MyEventHandlers+<>c__DisplayClass0_0.<OnPlayerSpawnedRagdoll>b__0 () [0x0004b] in <def0e20a2c984b8b92d9ebdbdb7ad54e>:0
[2025-05-31 22:12:05.955 -07:00] [STDOUT]   at MEC.Timing+<_DelayedCall>d__310.MoveNext () [0x00056] in <857a4408504f4deea6b81470f00f71dd>:0
[2025-05-31 22:12:05.955 -07:00] [STDOUT]   at MEC.Timing.Update () [0x0043c] in <857a4408504f4deea6b81470f00f71dd>:0
#

that piece of code is the only thing on top of vanilla

worthy rune
#

ill take alook at something

grand flower
#

ty

worthy rune
#

oh its because that event gives you the prefab, and your destroying it over and over

#

so its was a labapi issue

grand flower
#

rip

#

okay I'll remove ragdoll cleanup for now

#

or

#

I can just patch it

worthy rune
#

patch should work

#

ofc im going to try and get it fixed but idk when such change would come out

grand flower
#

fair enough

#

thank you for your help, it's much appreciated

#

was going insane

worthy rune
#

no worries

grand flower
#

yep that solved it

#
[HarmonyPatch(typeof(RagdollManager), nameof(RagdollManager.ServerSpawnRagdoll))]
public static class NWServerSpawnRagdollFixes
{
    [HarmonyTranspiler]
    public static IEnumerable<CodeInstruction> ServerSpawnRagdoll_Transpiler(IEnumerable<CodeInstruction> instructions, MethodBase method,
        ILGenerator generator)
    {
        var matcher = new CodeMatcher(instructions, generator)
            // LabApi.Events.Handlers.PlayerEvents.OnSpawnedRagdoll(new PlayerSpawnedRagdollEventArgs(owner, currentRole.Ragdoll, handler));
            .MatchStartForward(
                new(OpCodes.Ldarg_0),
                new(OpCodes.Ldloc_0),
                new(OpCodes.Callvirt),
                new(OpCodes.Ldarg_1),
                new(OpCodes.Newobj),
                new(OpCodes.Call, AccessTools.Method(typeof(PlayerEvents), nameof(PlayerEvents.OnSpawnedRagdoll)))
            )
            .Advance(1)
            .RemoveInstructions(2)
            // LabApi.Events.Handlers.PlayerEvents.OnSpawnedRagdoll(new PlayerSpawnedRagdollEventArgs(owner, basicRagdoll, handler));
            .InsertAndAdvance(new CodeInstruction(OpCodes.Ldloc_1));

        return matcher.InstructionEnumeration();
    }
}
#

if anybody needs it fixed

grand flower
#

Hiiiiii so we have a recurring bug where after a spawn wave players get soft disconnected

#

I got logs from one of them:

Disconnecting connection: connection(0). This can happen if the other side accidentally (or an attacker intentionally) sent invalid data. Reason: System.IndexOutOfRangeException: Index was outside the bounds of the array.
  at RelativePositioning.WaypointBase.TryGetWaypoint (System.Byte id, RelativePositioning.WaypointBase& wp) [0x00000] in <00000000000000000000000000000000>:0 
  at RelativePositioning.RelativePosition.get_Position () [0x00000] in <00000000000000000000000000000000>:0 
  at PlayerRoles.FirstPersonControl.FpcStandardRoleBase.ReadSpawnData (Mirror.NetworkReader reader) [0x00000] in <00000000000000000000000000000000>:0 
  at PlayerRoles.PlayerRoleManager.InitializeNewRole (PlayerRoles.RoleTypeId targetId, PlayerRoles.RoleChangeReason reason, PlayerRoles.RoleSpawnFlags spawnFlags, Mirror.NetworkReader data) [0x00000] in <00000000000000000000000000000000>:0 
  at PlayerRoles.RoleSyncInfo..ctor (Mirror.NetworkReader reader) [0x00000] in <00000000000000000000000000000000>:0 
  at PlayerRoles.PlayerRolesNetUtils.ReadRoleSyncInfo (Mirror.NetworkReader reader) [0x00000] in <00000000000000000000000000000000>:0 
  at Mirror.NetworkReader.Read[T] () [0x00000] in <00000000000000000000000000000000>:0 
  at Mirror.NetworkMessages+<>c__DisplayClass8_0`2[T,C].<WrapHandler>b__0 (Mirror.NetworkConnection conn, Mirror.NetworkReader reader, System.Int32 channelId) [0x00000] in <00000000000000000000000000000000>:0 
  at Mirror.NetworkClient.UnpackAndInvoke (Mirror.NetworkReader reader, System.Int32 channelId) [0x00000] in <00000000000000000000000000000000>:0 
  at Mirror.NetworkClient.OnTransportData (System.ArraySegment`1[T] data, System.Int32 channelId) [0x00000] in <00000000000000000000000000000000>:0 
  at Mirror.LiteNetLib4Mirror.LiteNetLib4MirrorClient.OnNetworkReceive (LiteNetLib.NetPeer peer, LiteNetLib.NetPacketReader reader, System.Byte channel, LiteNetLib.DeliveryMethod deliverymethod) [0x00000] in <00000000000000000000000000000000>:0 
  at LiteNetLib.NetManager.ProcessEvent (LiteNetLib.NetEvent evt) [0x00000] in <00000000000000000000000000000000>:0 
  at LiteNetLib.NetManager.PollEvents () [0x00000] in <00000000000000000000000000000000>:0 
UnityEngine.DebugLogHandler:Internal_Log(LogType, LogOption, String, Object)
UnityEngine.DebugLogHandler:LogFormat(LogType, Object, String, Object[])
UnityEngine.Logger:Log(LogType, Object)
UnityEngine.Debug:LogError(Object)
Mirror.<>c__DisplayClass8_0`2:<WrapHandler>b__0(NetworkConnection, NetworkReader, Int32)
Mirror.NetworkClient:UnpackAndInvoke(NetworkReader, Int32)
Mirror.NetworkClient:OnTransportData(ArraySegment`1, Int32)
Mirror.LiteNetLib4Mirror.LiteNetLib4MirrorClient:OnNetworkReceive(NetPeer, NetPacketReader, Byte, DeliveryMethod)
LiteNetLib.NetManager:ProcessEvent(NetEvent)
LiteNetLib.NetManager:PollEvents()
#

Which leads to this

#

Any chance of NW adding a length check to each of them mmLul

#

trying to find out how we even send this

upper vapor
#

yeah how do you send a nonexistent waypoint ClassD_Hollow

#

do you have doors or lockers somewhere that you don't network spawn?

#

near the wave's spawnpoint area

grand flower
#

nope

#

nothing special like that

#

but honestly the method should probably do some sanity checks

#

on another note, is it possible to give nightvision to players?

#

like SCPs

#

apparently not nvm

unique crane
grand flower
#

bummer

unique crane
#

And not tell client about it

#

Otherwise I dont know why it could happen

grand flower
#

nothing like that in our codebase

unique crane
worthy rune
#

im pretty sure all those arrays are statically initalized with 255 elements

grand flower
#

it's already pretty rare on a 48 player server but i'll try to reproduce it

#

but like

unique crane
#

Also.. which one of these 3 it is

grand flower
#

the whole respawn wave got disconnected

unique crane
grand flower
#

around 20 players

#

sec

worthy rune
#

must be index

#

oh too many waypoints spawned?

unique crane
#

Doubt that happens base game

grand flower
#

we don't spawn any waypoints

worthy rune
#

doors/lockers count as waypoints

grand flower
#

yeah ik

#

don't do anything with them

worthy rune
grand flower
#

no deletion, no creation

worthy rune
#

you dont do anything like serialize your own spawndata message

#

there technically should be a + 1 after byte.MaxValue as the since 255 elements has a max index of 254

grand flower
#

hmmm

#

we do

#

However, it wasn't active at the time of the crash

#

afaik

#

lemme check

unique crane
#

Seed of the map where it happend?

worthy rune
#

its the only way i could explain it, as if the waypoint id was 255 it would be out of range like in the exception

unique crane
#

So I can see how many waypoints are there

grand flower
#

lemme try and find the seed

worthy rune
#

iirc most maps have like 100 waypoints normally

worthy rune
#

like to fake roles and stuff

grand flower
#

i can send our code for that but i'm pretty sure i'm 1:1 with the game

#

had to update it for 14.1

unique crane
#

ah

grand flower
#

trying to find the seed in our logs nvm it's not logged

#
 NetworkServer.SendSpawnMessage(player.ReferenceHub.characterClassManager.netIdentity, player.Connection);

as a sanity check, this couldn't cause it right?

worthy rune
#

dont think so

grand flower
#

we do use fake role info for one thing but it wasn't active at the time of the bug

#

it was a few minutes earlier but the player using it died

#

I also made sure to update it for 14.1 since it was causing issues during the beta when we were porting everything

grand flower
worthy rune
#

yeah

grand flower
#

I could patch writing the waypoint id to make sure it's not out of bounds, but if the issue is mismatch between what the server is writing in the net message and client is reading, it won't solve it anyway

#

i can't see any mismatch though

#

and considering it wasn't even active for a few minutes before the mass disconnect, idk

#

only the spawn wave got dc'd, rest of the players were fine

unique crane
#

Well the question is why did it send so high waypoint index

grand flower
#

wish I knew

unique crane
#

Perhaps add debug log for when the index is over 200?

grand flower
#

yeah I'll add that in

#

Everytime players send a screenshot like this, my blood pressure rises. I assume it's the dedicated server player being disconnected

#

although tbf, I'd rather it be the dedi player being disconnected and not clientside

#

at least the former I can probably fix

unique crane
#

what are you doing

grand flower
#

They're dummies

#

Was fun writing the code for those

#

I like how you skipped over the w i d e mtf

unique crane
#

rather not question that

grand flower
#

personally don't see the appeal but players like it

trail phoenix
#

what wrong?

restive turret
#

Basegame issue

grand flower
#

patch it

restive turret
#

Or just ignore

grand flower
#

I hate log spam

worn gull
#
default:
  inherited_groups: []
  permissions: []
owner:
  inherited_groups: []
  permissions:
  - .*
over:
  inherited_groups: []
  permissions:
  - .*
admin:
  inherited_groups: []
  permissions:
  - xps.refresh
  - mt.*
  - mpr.*
  - ev.*
hmoderator:
  inherited_groups: []
  permissions:
  - xps.refresh
  - mt.*
moderator:
  inherited_groups: []
  permissions:
  - xps.refresh
  - mt.*

What could be the problem?

worthy rune
#

what group are you in?

worn gull
#

Admin

worthy rune
#

if you get extra info for you from the RA what does it say

worn gull
#

Ah I got it, so I have a plugin which gets the player roles from discord and sets the group and if the player is not in config_ra.txt the it's not works 😦

carmine prawn
limber silo
worn gull
#

and I get the group with ServerStatic.PermissionsHandler.GetGroup(group)

limber silo
#

the permissions provider is directly reading them from PermissionsGroupName which will prevent it to work with dynamic group changes like you are doing, that should be changed

#

you can temporarily fix it by doing ServerStatic.PermissionsHandler.Members.Add(userId, groupKey)

severe cave
#

How can I make or use navmesh?

limber silo
limber silo
#

lol, well that's good to know

#

but well it is the same

#

was just wondering if there was some issue with the api

worn gull
#

I didn't know how to do it and search how other plugins do it

brazen dune
#

it doesn't show custominfo if you're playing 3114 and if i understood source code correctly thats client behaviour

#

any way to avoid this?

unique crane
#

That is a bug, sorry

brazen dune
hearty shard
upper vapor
#

check LA logs

ionic prawn
#

my server is hosting on a windows 11 and when i try to start it, it keeps saying

upper vapor
ionic prawn
#

idk

hearty shard
#

but like

#

no error

ionic prawn
#

also when my plugin tries to do stuff to scp330 but nothing happends and i check localadmin and i get this

hearty shard
#

these always happen

upper vapor
hearty shard
#

[2025-06-01 14:42:52.646 +02:00] [STDOUT] HandleData Unknown connectionId:0
[2025-06-01 14:42:52.646 +02:00] [STDOUT] HandleData Unknown connectionId:0
[2025-06-01 14:42:52.646 +02:00] [STDOUT] HandleData Unknown connectionId:0
[2025-06-01 14:42:52.647 +02:00] [STDOUT] Skipped Data message handling because connection is null.
[2025-06-01 14:42:52.647 +02:00] [STDOUT] Skipped Data message handling because connection is null.

#

that

ionic prawn
#

but my plugin does this
private static readonly Translation _translation = new Translation();

private readonly Dictionary<string, int> _playerCandyCount = new(); // Track by UserId

private const int PinkChance = 3;
private const int MaxCandiesPerPlayer = 2;

public override void OnPlayerInteractingScp330(PlayerInteractingScp330EventArgs ev)
{
if (!ev.IsAllowed)
return;

string userId = ev.Player.UserId;

if (!_playerCandyCount.TryGetValue(userId, out int currentCount))
{
    currentCount = 0;
}

if (currentCount >= MaxCandiesPerPlayer)
{
    ev.IsAllowed = false;
    ev.AllowPunishment = true;
    return;
}
if (UnityEngine.Random.Range(1, 101) <= PinkChance)
{
    ev.CandyType = CandyKindID.Pink;
}

_playerCandyCount[userId] = currentCount + 1;

}

public override void OnPlayerInteractedScp330(PlayerInteractedScp330EventArgs ev)
{
if (ev.AllowPunishment)
ev.Player.SendHint(_translation.SeveredText, 4);
else
{
string pickupText = _translation.CandyText.TryGetValue(ev.CandyType, out string candy)
? _translation.PickupText.Replace("%type%", candy)
: string.Empty;
if (!string.IsNullOrEmpty(pickupText))
ev.Player.SendHint(pickupText, 4);
}
}

ionic prawn
#

eventshandler.cs

hearty shard
unique crane
#

Just disable Stdout or however is that setting called

ionic prawn
hearty shard
hearty shard
ionic prawn
#

def did not remake it a bit

#

but everything should work ):

    PlayerEvents.InteractingScp330 += new EventsHandler().OnPlayerInteractingScp330;
    PlayerEvents.InteractedScp330 += new EventsHandler().OnPlayerInteractedScp330;
hearty shard
#

err

#

do not new() it twice

ionic prawn
#

what

#

PlayerEvents.InteractingDoor += new EventsHandler().OnPlayerInteractingDoor;
PlayerEvents.InteractingGenerator += new EventsHandler().OnPlayerInteractingGenerator;
PlayerEvents.InteractingLocker += new EventsHandler().OnPlayerInteractingLocker;
PlayerEvents.Joined += new EventsHandler().OnPlayerJoined;
PlayerEvents.Left += new EventsHandler().OnPlayerLeft;
PlayerEvents.InteractingScp330 += new EventsHandler().OnPlayerInteractingScp330;
PlayerEvents.InteractedScp330 += new EventsHandler().OnPlayerInteractedScp330;

hearty shard
#

why are you creating a new instance of event handler

#

per event

ionic prawn
#

thats what i larned

hearty shard
#

new EventsHandler()

#

no

#

EventHandler eventHandler = new EventsHandler();

#

now register to that one

ionic prawn
#

but stuff still work without it?

hearty shard
#

should but

#

its not good

ionic prawn
#

do i put it outside or inside the enable

hearty shard
#

also

#

private static readonly Translation _translation = new Translation();

#

wont use the config

restive turret
#

You slowing down GC and your own appp

hearty shard
#

well actually

#

for an event handler

restive turret
#

Since most of those can be static

hearty shard
#

could just be static methods

restive turret
#

Ye

hearty shard
#

i dont do it cuz im a hater

#

but

#

it is better

restive turret
#

I do when i sub to basegame

ionic prawn
hearty shard
#

you said you used my code

#

so look at my code again

#

also when nw fix

restive turret
hearty shard
#

invigorated makes the bottom left of your screen crash out

restive turret
#

Why is 207 yellow

hearty shard
#

green light

restive turret
hearty shard
#

yellow light

#

red light

hearty shard
restive turret
#

I never seen it

hearty shard
#

its only in inventory

#

might be settings related

restive turret
#

Might be bc shaders conflict

hearty shard
#

perhaps

restive turret
#

Eve

ionic prawn
#

do i need to use this public override void LoadConfigs()
{
Config = this.TryLoadConfig("config.yml", out Config? config)
? config
: new Config();
Translation = this.TryLoadConfig("translation.yml", out Translation? translation)
? translation
: new Translation();
}

hearty shard
restive turret
ionic prawn
#

but i want my translation file to be translation.cs

hearty shard
#

ok well

hearty shard
#

= if you want to modify it you have to modify the dll

#

is what i was saying

#

i was just pointing it out

restive turret
#

Yes, since you not loading or saving any file all your config, translation will not be settable outside (in the yml files)

ionic prawn
#

what if i place the translation inside config instead

restive turret
#

you can do that i guess

#

nothing stops you

ionic prawn
#

yay

restive turret
#

did anyone made a dummy AI yet

hearty shard
#

so you make it

restive turret
#

im trying

#

hard to do

slate flume
#

Amazing

wheat flower
#

got automodded

#

cant believe this

restive turret
#

can we have a RoleChangeReason.Custom?

upper vapor
#

(RoleChangeReason) 65105261484

restive turret
#

itsn thats a byte

random scaffold
#

.None?

upper vapor
#

the number

#

whatever number you cast

true cedar
#

enums are basically just constants so u can have values outside of the predefined enums

upper vapor
#

^

#

C-style enums

true cedar
#

or even two enums

upper vapor
#

implicitly

#

java enums though >>>

true cedar
#

i prefer rust enums :333

#

java enums are bloated

latent pebble
upper vapor
#

oh no

true cedar
#

rust enums are really nice cause they can actually store data

upper vapor
#

you mean..?

true cedar
#

as in like

#

not constant data

#

for example, in rust you can do

enum Option<T> {
   None,
   Some(T)
}
#

(predefined type)

hearty shard
#

paislee

upper vapor
#

so like a union

hearty shard
#

why r u like this

upper vapor
#

kinda

true cedar
#

basically just union types but

#

yea

upper vapor
#

why is it called an enum then
right cuz
enumeration
and we're just brainwashed into thinking that enums can only be constant

true cedar
#

well

#

its like

#

an enumerated list of options

#

also because union has a very different meaning in rust

upper vapor
#

does it have a european union

true cedar
#

the formal name for rust enums is "discriminated unions," aka they store what type they are

upper vapor
#

yes

true cedar
#

but

#

normal unions dont

#

and so they're unsafe

upper vapor
true cedar
#

yea but u need an unsafe modifier

#

or

#

statement

#

whatever

true cedar
#

sorry im a nerd about this stuff

upper vapor
#

what do you expect from

hearty shard
#

hate nerds

upper vapor
# hearty shard not nerds

in hungarian we would say "bagoly mondja verébnek" which directly translates to "owl says to sparrow"

restive turret
#

jack sparrow

upper vapor
#

yes

#

Veréb Jani

tulip kiln
#

Btw is there any chance Hitboxes will be blessed with a NetworkIdentity so they can be parents of primitives?

#

Or is this already the case and I'm a bit dumb

plain gazelle
#

Is it possible to check what is in a specific Inventory slot on a player?

hearty shard
#

well

#

you have to -1

#

since 0 is the first time

upper vapor
#

what

#

eve

#

no

#

clients are ordered on the client arbitrarily

tulip kiln
#

Slots are not stored

upper vapor
#

the order isn't synced to the server

hearty shard
#

oh

#

hm

upper vapor
hearty shard
#

im dement

#

💀

upper vapor
#

kek

tulip kiln
#

I hate pinging them since I'm always complaining 😭

#

however

hearty shard
#

david getting pinged 24/7

unique crane
#

damageable primitive?

tulip kiln
#

Primitive that follows the player's head

#

When looking up or down

unique crane
#

Oh and the firearm raycast is blocking damage

#

?

tulip kiln
#

No

#

The head isn't a netid'd object (if I'm not stupid)

upper vapor
#

you could uh
offset and rotate on based in the camera reference for now

tulip kiln
#

and I can't attach to it directly

unique crane
#

Yeah it isnt as far as I know

tulip kiln
upper vapor
#

one small step for NW

#

big step for map creators

plain gazelle
upper vapor
#

yea

#

i tried to bring back the ordered inventory thing

#

and failed miserably

tulip kiln
unique crane
#

Actually @worthy rune since he made the parenting thingy

upper vapor
#

there is a proposal issue on github i think

#

or

#

idea

tulip kiln
#

I made the idea but the concept is bad

#

like real bad

upper vapor
#

right

unique crane
hearty shard
#

axwabo

#

UR GONE

upper vapor
restive turret
#

What if i don't like parenting

soft turtle
upper vapor
#

no családi pótlék though

sweet flax
#

how do i get ammo inside of primary mag?

upper vapor
#

firearm.TryGetModule(out IPrimaryAmmoContainer container)

#

that should have the stored ammo

sweet flax
#

thanks

sweet flax
upper vapor
#

should be it

#

ideally put it in an if check