#plugins-dev-chat

1 messages Β· Page 74 of 1

teal junco
#

yep

hearty shard
#

its old i think

#

like probably 100 years old

#

also

#

if ur removing and readding same item

#

itll keep same serial

#

yea

teal junco
#

oh yeah ofc

#

the serial tracks the item as long as it exists in any form its like the second thing i ever learned about items

#

haha

hearty shard
#

its great code

hearty shard
#

delete item completely

#

create a new item with same serial

#

and youll be fine

#

dont do that but it is technically possible

upper vapor
teal junco
#

it sounds fucking terrible why would anyone do that

hearty shard
#

unless u want them to have same instance behaviour

#

but then just

upper vapor
#

i mean if you keep the instance then yeah don't

hearty shard
#

dont delete the item

#

i never removed try catch

#

when nw fixed the error

true cedar
#

so true

upper vapor
#

btw @teal junco if you remove the item from userinventory, make sure to unparent the transform

#

i'd be surprised if eve's method actually worked, i guess its worth a shot

hearty shard
#

is kinda easy to test

upper vapor
#

*destroys item*
*item exists*

hearty shard
upper vapor
#

copium and shittium

hearty shard
#

its literally just
item.Base.ServerDropItem

#

without spawning it

upper vapor
#

can we remake SL from scratch

hearty shard
#

and then Pickup.Get() the result and throw it into player.AddItem

#

@unique crane get to work

upper vapor
#

day #alot of asking

unique crane
#

???

#

context

hearty shard
#

make it BETTER

unique crane
#

Parts of the game are rewritten with each update

upper vapor
#

godot SL with normal SL compat layer

hearty shard
#

if you repair a ship til everything has been replaced with new parts

#

is it the same ship

#

i will test with these items ax

#

cuz it worked last update (14.1)

upper vapor
#

vine boom

hearty shard
#

now i just

#

wait a minute and a half

upper vapor
#

too much wait

hearty shard
#

i didnt actually implement an easy debug of this

#

to me it looks to work

upper vapor
#

when pinv

#

command

#

(yes it exists)

hearty shard
#

oh

#

i couldve

#

just used that

#

instead of

#

killing

#

...

upper vapor
#

yeah

#

kill

#

sl

hearty shard
#

ill redo test ig

upper vapor
#

are the items functional though

hearty shard
#

i didnt test this time

#

but it has been before

upper vapor
#

i'd expect some weird behavior

hearty shard
#

well

#

idk!

#

cuz it just creates a pickup

#

and then creates a new item

upper vapor
#

i forgor

#

nvm then

hearty shard
#
 public static ItemBase ServerAddItem(
      this Inventory inv,
      ItemType type,
      ItemAddReason addReason,
      ushort itemSerial = 0,
      ItemPickupBase pickup = null)
    {
      if (!NetworkServer.active)
        throw new InvalidOperationException("Method ServerAddItem can only be executed on the server.");
      ItemBase itemBase;
      if (inv.UserInventory.Items.Count >= 8 && InventoryItemLoader.AvailableItems.TryGetValue(type, out itemBase) && itemBase.Category != ItemCategory.Ammo)
        return (ItemBase) null;
      if (itemSerial == (ushort) 0)
        itemSerial = ItemSerialGenerator.GenerateNext();
      ItemBase itemInstance = inv.CreateItemInstance(new ItemIdentifier(type, itemSerial), inv.isLocalPlayer);
      if ((UnityEngine.Object) itemInstance == (UnityEngine.Object) null)
        return (ItemBase) null;
      inv.UserInventory.Items[itemSerial] = itemInstance;
      itemInstance.ServerAddReason = addReason;
      itemInstance.OnAdded(pickup);
      Action<ReferenceHub, ItemBase, ItemPickupBase> onItemAdded = InventoryExtensions.OnItemAdded;
      if (onItemAdded != null)
        onItemAdded(inv._hub, itemInstance, pickup);
      if (inv.isLocalPlayer && itemInstance is IAcquisitionConfirmationTrigger confirmationTrigger)
      {
        confirmationTrigger.ServerConfirmAcqusition();
        confirmationTrigger.AcquisitionAlreadyReceived = true;
      }
      inv.SendItemsNextFrame = true;
      return itemInstance;
    }
#

this

#

it works weird

#

and i had to do it weird cuz of NW

#

πŸ’”

#

couldnt have just given us a way to remove item without destroying

upper vapor
unique crane
#

Tf is pinv command

#

Never heard of that

hearty shard
#

preview inventory or smth

#

apparently

upper vapor
#

playerinventory

hearty shard
#

me neither til today!

#

oh

upper vapor
#

or that

#

idk tbh

#

p inventory

#

what if it's peek

hearty shard
upper vapor
upper vapor
teal junco
#

i get the gameobject, and set the transform parent to null?

hearty shard
#

uh

#

armor

true cedar
#

hi mart

teal junco
#

of the item

hearty shard
#

is taken into account

#

when adding items

upper vapor
#

right

#

that's stupid and dumb

#

what if you use itemaddreason remoteadmin

hearty shard
#

what i do

upper vapor
#

dyingium

celest thorn
#

honestly

#

my brain is fried

#

like fries are less fried

#

than my brain

unique crane
#

Deep fried zero

upper vapor
#

hello zero whose brain is fried

celest thorn
#

ruei

#

it needs a degree

upper vapor
#

we're telling you to use v3!!

celest thorn
#

V3 IS NOT EVEN out

#

im going insaen

upper vapor
upper vapor
#

compile it

celest thorn
#

bruh

upper vapor
#

you can steal the whole thing

#

or parts of it

#

and refactor however you like

celest thorn
#

honestly

#

im going to stick with hint service

#

and see if i can make the code better

upper vapor
#

miserium

celest thorn
#

like thats the best i can do

celest thorn
upper vapor
#

paws

celest thorn
#

i could really try

#

to compile it

upper vapor
#

just do a prerelease

celest thorn
#

honestly

#

im going to compile it

#

lets try

upper vapor
narrow kelp
#

thissounds stupidb

#

but

#

h ow do i know if something is a dependency

#

is it a .dll file

#

like the others

#

or

celest thorn
#

it just annoys me

#

to compile it

upper vapor
#

the readme of the plugin should tell you which is which

narrow kelp
#

oh okay

upper vapor
#

like "install harmony as a dependency"

narrow kelp
#

this one doesnt say sauch but id assume labapiextensions ia dependency

#

right

icy knoll
upper vapor
#

yes

#

i believe so

narrow kelp
#

ok

upper vapor
#

that has no release though

#

what are you trying to do

narrow kelp
#

im talking about uhh

#

simplecustomroles

#

bly slejumur

#

by

upper vapor
#

@restive turret make installation guides!!1!1

restive turret
#

heat

restive turret
narrow kelp
#

ok

#

thanks goat

restive turret
#

havefun

teal junco
icy knoll
#

live laugh love exiled...

#

totes

upper vapor
teal junco
#

oh yeah labapi doesnt have harmony does it

upper vapor
#

nope

restive turret
#

@upper vapor

#

is this good?

upper vapor
#

i guess

#

why don't you make releases though

#

lazy?

restive turret
#

yes

upper vapor
#

releases with github actions

#

🀯

restive turret
#

lazy

upper vapor
#

github is lazy?

restive turret
#

me lazy

#

i have to tag

upper vapor
#

oh well

celest thorn
#

@true cedar
[2025-07-19 20:37:53.095 +00:00] [ERROR] [LabApi] [LOADER] Couldn't enable the plugin 'RueI', Version: 3.0.0.0, Author: 'Rue <3'
[2025-07-19 20:37:53.105 +00:00] [ERROR] [LabApi] HarmonyLib.HarmonyException: Patching exception in method System.Void Hints.HintDisplay::Show(Hints.Hint hint) ---> System.Exception: Wrong null argument: call NULL

When trying to enable it

upper vapor
#

what

celest thorn
#

when i start up the server thats displaying

upper vapor
#

fix the patch

celest thorn
#

i gues si will remove it

#

just for now

upper vapor
#

right

#

you can do that too

celest thorn
#

Funny enough

#

HSM was lagging the server

#

alot of errors

#

im just going to wait

upper vapor
#

fix the errors toomuchtrolling

slender lynx
#

explode

hearty shard
#

@upper vapor i think ik why my code works

upper vapor
#

managed unity reference is kept in the dictionary or what

hearty shard
#

i closed rider and wont open but im 99% sure creating the pickup doesnt use a unity call other than getting the .Base

#

its not trying to access smth thats destroyed inside of unity like .transform

#

and ItemType and stuff isnt rly a component

#

so its not destroyed

#

thats my guess

upper vapor
true cedar
#

chat

hearty shard
true cedar
#

i want to make a SetVisible(Tag, bool) method

#

for displays

#

but

royal mica
#

does == work for unity

slender lynx
#

@true cedar so uh

[2025-07-19 20:41:43.413 +00:00] [STDERR] at System.Linq.Enumerable.ToDictionary<System.Linq.IGrouping`2<char, System.ValueTuple`2<RueI.Utils.Collections.Trie`1/StringSlice<RueI.API.Parsing.Enums.RichTextTag>, RueI.API.Parsing.Enums.RichTextTag>>, char, RueI.Utils.Collections.Trie`1/RadixNode<RueI.API.Parsing.Enums.RichTextTag>> (System.Collections.Generic.IEnumerable`1<System.Linq.IGrouping`2<char, System.ValueTuple`2<RueI.Utils.Collections.Trie`1/StringSlice<RueI.API.Parsing.Enums.RichTextTag>, RueI.API.Parsing.Enums.RichTextTag>>>,System.Func`2<System.Linq.IGrouping`2<char, System.ValueTuple`2<RueI.Utils.Collections.Trie`1/StringSlice<RueI.API.Parsing.Enums.RichTextTag>, RueI.API.Parsing.Enums.RichTextTag>>, char>,System.Func`2<System.Linq.IGrouping`2<char, System.ValueTuple`2<RueI.Utils.Collections.Trie`1/StringSlice<RueI.API.Parsing.Enums.RichTextTag>, RueI.API.Parsing.Enums.RichTextTag>>, RueI.Utils.Collections.Trie`1/RadixNode<RueI.API.Parsing.Enums.RichTextTag>>) [0x00004] in <fd1d0d7d3ab340b2ac4af4d8f373b6c7>:0 [2025-07-19 20:41:43.413 +00:00] [STDERR] at RueI.Utils.Collections.Trie`1<RueI.API.Parsing.Enums.RichTextTag>.Build (System.Collections.Generic.IEnumerable`1<System.ValueTuple`2<RueI.Utils.Collections.Trie`1/StringSlice<RueI.API.Parsing.Enums.RichTextTag>, RueI.API.Parsing.Enums.RichTextTag>>) [0x0007a] in <a4db8c766a4640d4961e08786c594b4a>:0

it dosent like ruei and may have genned a 2gb log file

hearty shard
upper vapor
true cedar
#

do i make it so that if you do like

Tag tag = new();
display.Add(tag, new BasicElement(...));
display.SetVisible(tag, false);
display.Add(tag, new BasicElement(...)); // should thi sbe visible?
upper vapor
hearty shard
upper vapor
#

== null

hearty shard
#

unity destroyed the unity stuff

upper vapor
#

does

royal mica
hearty shard
celest thorn
#

today im going to murder someone

hearty shard
#

but

true cedar
#

i fixed that but

#

v3 is not like

#

server ready at all

celest thorn
#

...

slender lynx
#

is there like

#

any way

true cedar
#

im just pushing stuff so people can see what it will look like

slender lynx
#

you can push a prerelease

#

with that fixed

true cedar
#

ig

slender lynx
#

ur the best

true cedar
#

but it has a lot of annoying logs

slender lynx
#

thats fine

#

i just need a vers

celest thorn
#

idc

royal mica
#

ahh dependency errors blobsunglasses

upper vapor
#

idk what happens before the end of frame

royal mica
upper vapor
#

it probably still "exists" if you do that before the frame ends

royal mica
#

that it should be if (ibp) and not if (ibp == null)

hearty shard
# royal mica does == work for unity

TLDR

You can check null since its not a unity object, its literally non existent entirely
you cannot use == null to check if a unity object is usable tho, only if it is a reference

upper vapor
royal mica
royal mica
#

C# does not have truthy values

upper vapor
#

guys

true cedar
#

yes it does

royal mica
#

so it cannot be same

true cedar
#

lol

upper vapor
#

unity overloads ==

true cedar
#

you can overload it

upper vapor
#

and implicit operators

hearty shard
#

== null isnt

#

true

#

if it isnt null

upper vapor
royal mica
#

Then why doesn't if (something) work for others

true cedar
#

because you can override it

hearty shard
royal mica
hearty shard
upper vapor
true cedar
#

no, it's not the == override

hearty shard
#

OH

#

i misunderstood

#

yea you need to implicitly turn it into a bool

true cedar
#

oh yea it is implicit conersion to bool

#

thats dumb

royal mica
upper vapor
#

check for destroyCancellationToken i guess

true cedar
upper vapor
#

has

#

implicit operator bool for Object

#

that does a check for null under the hood

true cedar
#

@hearty shard EVE

hearty shard
upper vapor
#

other classes don't have this operator

hearty shard
#

what do you want

slender lynx
#

@true cedar thx

true cedar
hearty shard
#

sure

#

idk

#

go ahead

#

i usually just return empty string or would remove it

true cedar
#

yea but if you want to implement screens

upper vapor
#

i'd expect all tags to be invisible if you say "set tag visible to false"

#

all e3quivalent tags

hearty shard
true cedar
#

i just don't want people thinking that it would make it visible

#

when they show an element

upper vapor
#

wha

true cedar
#

like

#

if you set a tag to be not visible

#

and then add an element with that tag

#

i don't want people to think it makes the tag visible

upper vapor
#

rename tag to CssClass

true cedar
#

screams

upper vapor
#

omg

#

imagine

#

CSS hint framework

true cedar
#

id ratehr blow my head off

upper vapor
#

when you need an element to expand to the remaining space

#

you're gonna miss CSS

true cedar
#

<align=flush>

upper vapor
#

i hate that

#

justify or flush

#

we could run PWAs in SL

#

on hints

#

except no interactivity

royal mica
#

just run electron

upper vapor
royal mica
#

can we have nodejs admintoy please

upper vapor
#

i'll make my own js engine

royal mica
#

I want to run my vercel webapp in SCPSL

upper vapor
#

bun

royal mica
#

also an nginx as well please

upper vapor
royal mica
#

"sorry lightbulb SCP disabled my cloudflare item, 5 sec"

upper vapor
#

xDDDDDD

#

"please hang tight as we solve the DDoS caused by SCP-079"

royal mica
#

"Can you call a sysadmin to reboot the server?"
"Uhh, wait lemme playerlist. Oh I see a scientist, lemme pbc them to pickup and throw the server object in heavy"

upper vapor
royal mica
#

5 minutes lates

#

WHO THE FUCK DROPPED NGINX ITEM IN POCKET DIMENSION AND WHY

#

NOW 6 OUT OF 8 PACKETS ARE KILLED

upper vapor
#

it'll drop out of pocket after some time

royal mica
#

I already dropped out dogkek

upper vapor
#

of egyetem?

royal mica
#

ofc

upper vapor
#

yayayayaya

royal mica
#

ELTE made me want to undo exist

upper vapor
#

noooo

#

zad

royal mica
#

dimat is more zad

royal mica
#

I would say my mental health is better now that I left that hellhole, but I destroyed the current one myself

#

oops

upper vapor
#

what

#

are you yappin

royal mica
#

uhh

#

something something alcohol?

upper vapor
royal mica
#

ok back to cs2

#

@grok can I play cs2 in vim

upper vapor
#

css2

#

😭

celest thorn
#

I tried again ruei v3 but no update this time like it does one time and never again

#

(update interval exist)

#

@true cedar

true cedar
#

huh

celest thorn
#

it does this

#

never ever again

#
                element = new DynamicElement(instance.Position.y, instance.OnInternalRender)
                {
                    UpdateInterval = TimeSpan.FromSeconds(0.1f)
                };
true cedar
#

oh it prob errored

celest thorn
# true cedar oh it prob errored
[2025-07-19 21:44:14.193 +00:00] [STDOUT] ArgumentException: An item with the same key has already been added. Key: CloseAlign
[2025-07-19 21:44:14.193 +00:00] [STDOUT]   at System.Collections.Generic.Dictionary`2[TKey,TValue].TryInsert (TKey key, TValue value, System.Collections.Generic.InsertionBehavior behavior) [0x000dd] in <069d7b80a3914a08b6825aa362b07f5e>:0
[2025-07-19 21:44:14.193 +00:00] [STDOUT]   at System.Collections.Generic.Dictionary`2[TKey,TValue].Add (TKey key, TValue value) [0x00000] in <069d7b80a3914a08b6825aa362b07f5e>:0
[2025-07-19 21:44:14.193 +00:00] [STDOUT]   at RueI.API.Parsing.Parser..cctor () [0x0019f] in <d6ff54a2e2e24206b9355ee3babb6bc5>:0
[2025-07-19 21:44:14.193 +00:00] [STDOUT] Rethrow as TypeInitializationException: The type initializer for 'RueI.API.Parsing.Parser' threw an exception.
[2025-07-19 21:44:14.193 +00:00] [STDOUT]   at RueI.API.Elements.DynamicElement.GetParsedData (ReferenceHub hub) [0x0000c] in <d6ff54a2e2e24206b9355ee3babb6bc5>:0
[2025-07-19 21:44:14.193 +00:00] [STDOUT]   at RueI.API.Parsing.ElementCombiner.Combine (ReferenceHub hub, System.Collections.Generic.IEnumerable`1[T] elements) [0x000af] in <d6ff54a2e2e24206b9355ee3babb6bc5>:0
[2025-07-19 21:44:14.193 +00:00] [STDOUT]   at RueI.API.Display.FrameUpdate () [0x00057] in <d6ff54a2e2e24206b9355ee3babb6bc5>:0
[2025-07-19 21:44:14.193 +00:00] [STDOUT]   at RueI.API.Display.CheckDisplays () [0x000a0] in <d6ff54a2e2e24206b9355ee3babb6bc5>:0
[2025-07-19 21:44:14.193 +00:00] [STDOUT]   at (wrapper delegate-invoke) <Module>.invoke_void()
[2025-07-19 21:44:14.193 +00:00] [STDOUT]   at StaticUnityMethods.Update () [0x00009] in <d9731e675e55453197cf28cd60eed3f2>:0
true cedar
#

yea i fixed that

#

gimme a sec

celest thorn
#

don't worry

slender lynx
slender lynx
#

@true cedar any updates

#

no rush btw i just wanna know if we should start trying to fix some stuff or not

true cedar
#

i pushed it

slender lynx
#

neat

restive turret
royal mica
restive turret
royal mica
#

This is Hungary on January 1st

restive turret
#

Lel

celest thorn
# true cedar i pushed it
[2025-07-19 22:38:37.854 +00:00] [STDOUT] ArgumentOutOfRangeException: Specified argument was out of the range of valid values.
[2025-07-19 22:38:37.854 +00:00] [STDOUT]   at RueI.API.Parsing.ElementCombiner.SplitUntil[T] (System.ReadOnlySpan`1[T]& span, System.Int32 position) [0x00021] in <10b99966c13b4bfabd709b11ed3ee9fc>:0
[2025-07-19 22:38:37.854 +00:00] [STDOUT]   at RueI.API.Parsing.ElementCombiner.Combine (ReferenceHub hub, System.Collections.Generic.IEnumerable`1[T] elements) [0x00303] in <10b99966c13b4bfabd709b11ed3ee9fc>:0
[2025-07-19 22:38:37.854 +00:00] [STDOUT]   at RueI.API.Display.FrameUpdate () [0x00057] in <10b99966c13b4bfabd709b11ed3ee9fc>:0
[2025-07-19 22:38:37.854 +00:00] [STDOUT]   at RueI.API.Display.CheckDisplays () [0x000a0] in <10b99966c13b4bfabd709b11ed3ee9fc>:0
[2025-07-19 22:38:37.854 +00:00] [STDOUT]   at (wrapper delegate-invoke) <Module>.invoke_void()
[2025-07-19 22:38:37.854 +00:00] [STDOUT]   at StaticUnityMethods.Update () [0x00009] in <d9731e675e55453197cf28cd60eed3f2>:0

heads up for some other issues, that we found

celest thorn
#

nothing but after

#

it does log something

true cedar
#

?

celest thorn
celest thorn
#

but the update never reaches the point of sending it

#

it never sends the hint

true cedar
celest thorn
#

the error

true cedar
#

whats the text that it errors on

celest thorn
#

idk

slender lynx
#

no clue

#

it just throws it

#

thats the first thing it logs

true cedar
#

um

celest thorn
#

but never actually sends it

#

like it doesn't reach the point of sending the message to the hub

true cedar
#

well yea

#

if it errors it'll dothat

#

if u get the text that it errors on

#

that'd be extremely helpful

celest thorn
#

ok i will try

#

to like disable everything

celest thorn
true cedar
#

huh

#

nah i have a headache i dont feel like vc'ing

slender lynx
#

always throws

true cedar
#

without any elements?

hearty shard
#

hi paws

true cedar
#

BE QUIET.

celest thorn
hearty shard
#

wow i see how it is

#

first u break ruei and now u tell me to shush

celest thorn
true cedar
#

well then what element causes it T_T

slender lynx
#

we gotta test each one

#

(14 of them)

true cedar
#

can u send me the text

#

i can prob tell which one would cause it maybe

celest thorn
#

yea

#

i narrow it down probably to one

#

but not sure

#

<b><size=30>Loading...</size></b>\n\n\n<b><size=40>Test</b></size>

true cedar
#

thats prob not it

celest thorn
#

nope

#

its not

#

it throws it in any case

#

like with everything

#

i tried with something else totally unrelated and it throws it

true cedar
#

huh

#

it cant be any case

celest thorn
#

let me try with a static message ig

celest thorn
#

but i think dynamic cause that issue

true cedar
#

i think its ur text

celest thorn
#
    public override string Name { get; set; } = "Hi";
    public override string Text { get; set; } = "Hi";
    public override Vector2 Position { get; set; } = new Vector2(0, 0);
    public override bool IsDefault { get; set; } = true;
    public override int Size { get; set; } = 20;
    public override bool UseAspectRatio { get; set; }
#

this is the one i tested and worked

#

my text is fine

#
        StringBuilder sb = new StringBuilder()
            .SetSize(Size, MeasurementUnit.Percentage)
            .SetHorizontalPos(Position.x);
        
        sb.Append("  <b><size=30>Loading...</size></b>\n\n\n<b><size=40>Test</b></size>");
        
        return sb.ToString();
#

this is what am i doing for all of them

true cedar
#

are you doing the use aspect ratio

celest thorn
#

no

#

im not even using it

true cedar
#

ill take a look ig

celest thorn
#

ok

true cedar
#

did u make any other changes

celest thorn
#

idk try to send me your version

slender lynx
true cedar
#

uh oh

slender lynx
#

thats not a good sign

true cedar
#

something works differently than how i thought it worked and um

#

in simple terms FUCK MY LIFE

slender lynx
#

its so over

true cedar
#

this is actually

#

ughhhhh

celest thorn
#

So sad

slate flume
#

So uh

#

How tf do I check keycard permissions for a pickup

#

Like access levels and shi

#

Oh nvm

#

Wait

#

Huh

#

Is there no way to get the access levels for a keycard?

slate flume
#

I can get the door provider and match it against different doors

#

ATP I may just find a way to make fake door permission requesters so I can check individual permissions and pinpoint it lmao

#

Wtf

slate flume
#

This is so peak

#

I love SL

true cedar
slate flume
#

Any better ideas?

true cedar
#

im psure theres a way to do it

#

but they reworked the keycard system

slate flume
#

I have no idea how to do it

#

Generally if no one responds after an hour or two I just do hacky fixes like that

#

I've got priorities

slate flume
#

Also

#

Is bullet inaccuracy and spread calculated by the client or the server?

#

I'd have to imagine the server

grand flower
#

Client

slate flume
#

WHAT

#

That's wild to me

grand flower
#

How would the client get spread if it has to wait for the server's response

slate flume
#

Doesn't that just make it more susceptible to cheaters?

grand flower
#

Cheaters already aimbot

#

Doesn't matter

slate flume
#

I would imagine being able to make a shotgun beam you with 12 headshots anywhere on the map is a little busted, no?

grand flower
#

Valve did have the inaccuracy/spread be server sided for CSGO but reverted to clientsided for CS2 because it felt like shit to normal players and cheaters be cheating anyway

slate flume
#

Like surface

grand flower
#

They'll just beam you down with any automatic anyway

slate flume
#

You're on one end of surface and a guy at the other end shoots one shot from a shotgun and kills you

grand flower
#

Although im p sure shotguns have a set pattern

#

Shotgun, automatic aimed to your head, won't matter

slate flume
#

Yeah but at least if you controlled spread server-side you could avoid no spread hacks making cheaters even more busted

#

Though tbf I've seen cheaters straight up client-side clip through walls and pick up items

grand flower
#

They're already busted

#

You're just making the experience worse for normal players

slate flume
#

It's not like SL has good anti-cheat lmao

grand flower
#

Anticheat or not

#

Cheaters will cheat

slate flume
#

Fs

grand flower
#

Don't make the game feel like shit for normal players to try and catch cheaters

slate flume
#

Well idk I just imagined that something like spread wouldn't be a big deal to do server-side

#

Especially for a casual game like SL

#

Besides handling server-side would allow us to modify spread ourselves which would be dope

grand flower
#

Sweet now your bullets you see dont match what the server does

#

Or they are delayed by your ping

slate flume
#

Just do server confirmation

grand flower
#

To what point

slate flume
#

Run code client-side and if it checks out with the server then send it

grand flower
#

Cool you just invented shooting netcode from most games :p

#

There's really no point

#

Valve undid it for good reasons

slate flume
#

But don't like

#

Half of all games do spread server-side

#

Client shows a predicted spread

#

Server validates

#

It prevents no-spread cheats

grand flower
#

That's what CS2 does

slate flume
#

That's what I'm saying

#

Just do that bro

grand flower
#

Which stops nothing because if they're able to predict inaccuracy, they can undo it by changing the camera position for the shot

#

which equates to no spread

slate flume
#

OOHHH you right for that

#

I was thinking shotguns

#

Because even if one pellet hits it doesn't matter because the rest won't

grand flower
#

Set pattern for SL afaik, dunno how they validate hitreg for it, would have to check the code

slate flume
#

Relying on client-side for that means you can make all pellets from one shot hit regardless of distance

grand flower
#

Depends on how the game implements it

#

Haven't fully checked SL

slate flume
#

I just wanna be able to modify guns 🀷🏼

grand flower
#

You'd probs need clientside mods

slate flume
#

I like handling stuff server-side so I can

#

Exactly

grand flower
#

SL's not made with that in mind

slate flume
#

I'll rip and tear

#

Like that one song from the Doom soundtrack

grand flower
#

Have fun

slate flume
celest thorn
upper vapor
#

You can change that on the server

celest thorn
upper vapor
#

What are you saying

celest thorn
#

you can see by the screenshot only one line is moving

#

but in theory everyone should

upper vapor
#

Are they different elements

celest thorn
#

same element

upper vapor
#

AFAIK pos only works for one line

celest thorn
#

what should i do then?

#

what should i use?

upper vapor
#

Indent

celest thorn
#

which one?

upper vapor
#

Indent

#

Not line indent

celest thorn
#

oh indent

#

ok

#

let me try it

#

the only problem im now thinking is vertical offset

#

i need to check if it works

#

im going to cry

#

it works

#

finally

#

finally

#

3 hours

#

from yesterday night to today

#

and in all of this tps never got lower of 60/60

#

so it was meow

#

:3

upper vapor
celest thorn
#

if rue wants i found the issue for the hint exploding when dynamic

#

she made an error on the position

#

i've seen some errors around the src

#

and now it works :3

upper vapor
#

at paws

#

or PR

celest thorn
#

Ig

#

For now im trying to remake every ui element

#

And everything working again

#

But thats easy

upper vapor
celest thorn
#

I just need to re enable everything and fix their position

#

Or else figuring out how i can calculate the voffset

#

By how meow was doing it

upper vapor
#

use the ruei position

celest thorn
upper vapor
#

bruh

celest thorn
#

Like i set the float

#

But nope

#

Voffset works tho

#

So i might check whats going on there

#

It seems to be working

#

Because it is correct

#

I just think i need to invert it

upper vapor
#

yea positive is up

celest thorn
#

No thats correct

upper vapor
#

unlike in almost every other UI lib

celest thorn
#

But meow did a breaking change

#

That made it calculated in another way

#

For up before i wrote 1050 now i need to write 150

#

Don’t ask me how

#

Or why

#

1000 is the max ig

#

For ruei?

upper vapor
#

yes it says it right there

celest thorn
#

150

#

was too low

#

btw im amazed on how optimize this shit is

#

lol

upper vapor
#

you better be using stringbuilderpool

celest thorn
#

before the server like exploded everytime it loaded a player

celest thorn
#

but for now its just testing and messing

#

im planning to change

#

and use stringbuilder everywhere

celest thorn
#

creating a new stringbuilder is so heavy?

upper vapor
#

yes

#

it reduces allocations and GC time

#

and it's a two-line change wherever you wanna use it

celest thorn
# upper vapor and it's a two-line change wherever you wanna use it
public string OnInternalRender(ReferenceHub hub)
    {
        StringBuilder sb = StringBuilderPool.Shared.Rent()
            .SetIndent(Position.x)
            //.SetVOffset(Position.y)
            .SetSize(Size);
        
        sb.Append(OnRender(hub));

        sb.CloseIndent();
        //sb.CloseVOffset();
        sb.CloseSize();
        
        return StringBuilderPool.Shared.ToStringReturn(sb);
    }

Like this

#

im going to add as an arg to render

upper vapor
#

yes

#

yes

celest thorn
#

the stringbuilder

#

and just use that

#

im going to cry in a corner this shit works

celest thorn
#

finally i see 60/60

#

and not 59/60

#

i can rest in peace

upper vapor
celest thorn
#

i can just return void

upper vapor
#

at some point return it

#

after you've built the whole thing

#

the whole ruei element

celest thorn
upper vapor
#

yassss

celest thorn
#

im gonna be honest v3 is easier to use

#

i understand more using v3

#

than the code of v2

upper vapor
#

me when Roles

celest thorn
#

instead of crying in a corner and saving each element

upper vapor
#

kekw

celest thorn
#

from meow's code to ruei

#

i saved like 100 lines

#

just saying

random scaffold
#

why this stupid game trying find location on the same door?

random scaffold
# celest thorn for what?

[HarmonyPatch(typeof(Scp106PocketItemManager), nameof(Scp106PocketItemManager.IsInPocketDimension))]

celest thorn
#

code.

#

what are you doing

#

like

random scaffold
#

protect bounds

#

around custom door

celest thorn
#

wdym

#

by protect bounds

#

and can you show code

random scaffold
#

protect the door, which is designed to allow players to move around, from selecting items from Scp106 to spawn

upper vapor
#

you're patching the wrong method

random scaffold
#

i dont wanna use transpiler

celest thorn
#

c*dm*d moment

upper vapor
#

i don't see where it checks doors though

celest thorn
#

10 stuff to fix still

#

Im going to cry

#

the hardest

#

is gone :3

unique crane
celest thorn
#

dmed rue

slate flume
celest thorn
#

with the fix for the problem of yesterday

celest thorn
upper vapor
slate flume
#

That's beautiful

#

Can you change running accuracy and shit?

upper vapor
#

RunningInaccuracy and AdsInaccuracy params i believe

slate flume
#

WOAH

#

Dope

upper vapor
#

the first one may be named BulletInaccuracy

#

i don't rember

slate flume
#

I'm writing that in my notes for later

celest thorn
#

btw hii david

slate flume
#

While there are a bunch of devs here, I want to ask, what layer mask should I use to Raycast without hitting players?

unique crane
#

haiii

celest thorn
#

no debug messages

#

so no spam in console

#

yippe

slate flume
#

Woah

celest thorn
#

or was for the opposite i don't remember

unique crane
#

Not sure what raycast would ignore player

slate flume
#

that's really interesting

upper vapor
#

from here

upper vapor
#

so i'm not sure why it's an issue for you

slate flume
# upper vapor

This may be a really dumb question but how should I uh read this for future reference

celest thorn
#

alot of time ago

#

the start of labapi

celest thorn
#

if i recall

#

or else 1 << n

slate flume
#

Sorry

upper vapor
slate flume
#

Revelation

#

I was like "Why are half the boxes missing" for a hot second

#

I'm a little high rn I'm struggling

#

Lmao

celest thorn
#

(a bit broken)

upper vapor
slate flume
#

Actually my hero

icy knoll
icy knoll
#

smh

celest thorn
#

saved my server from 1 tps

#

lower

icy knoll
#

how bruh

celest thorn
icy knoll
#

ik it’s good but how did i do it 😭

celest thorn
#

switching to ruei v3 was probably the best idea

icy knoll
#

i’m still on v2 as rue said v3 isn’t finished yet

#

i don’t wanna migrate to smth that’s likely to break at any point

celest thorn
unique crane
#

You define the layer names

celest thorn
#

you are loosing on alot of cool stuff

unique crane
#

Its gonna be enum with options

celest thorn
#

like type of level that now its easy

upper vapor
unique crane
#

Layer1,
Layer2

unique crane
icy knoll
celest thorn
#

i mean after solving a problem

#

now its stable

#

i dmed rue with the solution

#

for a massive issue with dynamic hints

icy knoll
celest thorn
#

it is

#

im gonna be honest

#

it is

icy knoll
#

just from 1 solution? sounds like bs i’m sorry 😭

celest thorn
#

after solving that issue i didn't encounter any problems

icy knoll
#

what issue even was it

celest thorn
#

i know crazy

celest thorn
#

for sending them

icy knoll
#

ah, shit i don’t know

celest thorn
#

int pos = current.Position - (text.Length - buffer.Length);

#

like this is what she needed to do

icy knoll
#

well

#

i’m still waiting for v3

#

is there a way to do roles like how you did for auto element?

#

ik auto element is removed but id rather not do an if check during the new dynamic element

celest thorn
#

you need to manually add them

#

but let me check

icy knoll
#

the if checks? damn

celest thorn
#

i have the src open

upper vapor
#

rolechanged event shrug

celest thorn
#

im honestly loving how simple it is

#

before i was crying

#

for how complicated it is

#

now im crying for how simple it is

#

Nope there's nothing for roles

icy knoll
#

but the one thing i loved about auto element

#

is that it did all that for me

#

the if checks

#

the event checks

#

etc

upper vapor
#

PR auto elemnt shrug

#

or

#

better yet

#

make your own library

#

and open source it

icy knoll
#

they must have removed it for a reason…

#

so idk

celest thorn
#

honestly

#

its easier this one

#

autoelement wasn't really that much easier

#

so i kinda like the idea that you have alot of power

#

on deciding stuff

icy knoll
#

it seems pretty simple ye

#

how do i force an update on dynamic element tho?

celest thorn
#

you get it from the Tag

icy knoll
#

good

celest thorn
#

and then Update()

#

and that will tell the stuff to force trigger it

#

i tested it and it works

#

so

icy knoll
#

can you not save the element on the player itself or must it be the tag?

celest thorn
#

you just apply the tag

#

and get them

#

by the tag name

icy knoll
#

oh

#

okie

celest thorn
#

its similar to Meow has a concept and i really like it

icy knoll
#

what’s the point of a name tho if you have to add a tag to each player bruh

celest thorn
#

because its easy to manage and reminds me of DOM

celest thorn
#

just for one element

#

the element is inside the player

icy knoll
#

hm

#

so you can add 1 element to multiple people

#

ok

celest thorn
#

like see

#

this is when a player joins in my server

icy knoll
#

to me tho that looks like i’ll need to save the element

upper vapor
#

display.GetElement(tag)?

celest thorn
icy knoll
#

hopefully that exists or smth

#

because it looks like ima still have to save it lol

celest thorn
#

public void Remove(Tag tag)

#

remove

icy knoll
#

otherwise i’ll have to save tag

#

:3

celest thorn
#

Yea i will test it soon enough

upper vapor
#

but

celest thorn
#

or else i will change it

upper vapor
#

new Tag() != new Tag()

icy knoll
upper vapor
#

i just said it

celest thorn
#

i have something to test

#

rn

#

just give me a few seconds and i will be able to tell you if it works by instance or not

upper vapor
celest thorn
#

oh

#

it should then

icy knoll
#

you could also make static method Get if the tag references are saved

#

Β―_(ツ)_/Β―

upper vapor
#

ideally there would be a Get(string tag) to avoid allocations

celest thorn
#

i think the best migration

#

i've ever done

#

was Exiled to LabAPI

#

it took me 2 hours

upper vapor
celest thorn
#

ATOH 500 files

#

and shit

#

took me 2 hours

#

and 1 hour for meow

#

Sl is updating???

#

wtf

icy knoll
#

it took me like a week to migrate discordlab

celest thorn
#

crazy

icy knoll
#

because i recoded the whole thing

celest thorn
#

oh i did a bit of recoding

icy knoll
#

exiled’s syntax made it hard to just swap out the old for the new for me

#

so i just decided to redo the whole thing

celest thorn
#

it makes sense

#

i didn't really do much changes

#

but after porting it

#

i decided to rewrite it took me a week to do the entire library for loading stuff more optimized

#

from 58 tps to 60

#

on loading

upper vapor
#

tpsmaxxing

celest thorn
#

yes

#

what server has 20k primitives

#

and does 60/60

upper vapor
#

not sure

upper vapor
#

maybe some hungarian server
-# that may or may not spoof the tps toomuchtrolling

celest thorn
#

wtf

#

is even the point

upper vapor
#

nevermind i'm thinking of something different

icy knoll
#

what’s the point of spoofing tps unless ur showing it to everyone…

icy knoll
#

why tho

upper vapor
#

one server like a year ago i believe

icy knoll
#

whats the point

#

lol

upper vapor
icy knoll
#

why show the tps

upper vapor
#

but it constantly showed 60/60
which is very difficult to believe

celest thorn
#

i use it for debug

teal junco
#

how much does primitives affect tps?

upper vapor
#

and they had many builds

celest thorn
upper vapor
icy knoll
upper vapor
celest thorn
#

mine is 100% real

#

because i use it for debug

#

lol

teal junco
upper vapor
celest thorn
#

btw it works by doing a new

teal junco
#

also yeah i figured that was pretty obvious

upper vapor
#

i don't use MER anyway

celest thorn
#

meow meow

#

last time i used mer

celest thorn
#

my server was doing 30 tps

upper vapor
#

it checks for serioalization

#

and if there's nothing

#

it sends an "empty" EntityStateMessage

celest thorn
upper vapor
#

at least i think so

celest thorn
#

this works btw

upper vapor
#

the new Tag(str) is so unnecessary

celest thorn
#

i know :3

#

but atleast it works

icy knoll
#

i hate the new tag syntax please add strings

teal junco
# upper vapor make them static

i figure that static primitives affect tps about as much as most map stuff does, but i dont know as much low level stuff so idk

slate flume
#

What's the benefit of RueI over something like HSM?

upper vapor
slate flume
#

How much performance?