#plugins-dev-chat

1 messages · Page 134 of 1

hearty shard
#

real

cosmic hedge
#

not even

hearty shard
#

async ?

cosmic hedge
upper vapor
#

yeah i agree that the system itself is a bit complicated, but check out the usage example
seems fairly straightforward
#plugins-dev-chat message

hearty shard
#

bro is not gonna tell us

cosmic hedge
#

never!

#

ill post when i fix it

hearty shard
#

i mean

#

theres some stuff in unity you cant do that i assume u dont know

cosmic hedge
#

i havent even touched anything unity

hearty shard
#

i feel like getting some intel would be nice when ur modding rather than being blind into it

#

yk

hearty shard
cosmic hedge
#

also i do unity

hearty shard
#

you have touched sl

cosmic hedge
#

i know

hearty shard
#

and thus you have touched unity

cosmic hedge
#

a weighted random method is not touching anything insane

hearty shard
#

interesting

soft depot
upper vapor
hearty shard
#

riptide will prob end up doing basegame changes

soft depot
hearty shard
#

ya

soft depot
#

was hoping for something that could be better than ASS at what it is, and still fill in that "idk how to do settings" niche

cosmic hedge
#

it was RandomGenerator.GetInt32
😭

upper vapor
hearty shard
#

interesting

true cedar
#

huh

cosmic hedge
#

im not even kidding

#

switched it to unity's Random.Range and works fine

true cedar
#

how'd you even

#

stumble upon that method

#

im not surprised that it crashes cause its cryptographically secure

hearty shard
#

by default its not

#

you have to add true as a param

true cedar
cosmic hedge
hearty shard
#

RandomGenerator is sl

true cedar
#

oh

cosmic hedge
upper vapor
#

@restive turret

restive turret
#

heelo

upper vapor
#

why tf are you using RandomGenerator

#

😭

#

and not UnityEngine.Random

restive turret
#

cus why would I call unity engine to make my already shit performance more shit?

upper vapor
restive turret
#

do you know it calling c++ and marhsaling back to c#?

cosmic hedge
#

like it wasnt responding at ALLLLL

hearty shard
# upper vapor crypto is even shitter
ublic static int GetInt32Unsecure(int min, int max)
  {
    RandomGenerator.Random.NextBytes(RandomGenerator.FourBytes);
    int int32;
    for (int32 = BitConverter.ToInt32(RandomGenerator.FourBytes, 0); int32 < min || int32 >= max; int32 = BitConverter.ToInt32(RandomGenerator.FourBytes, 0))
      RandomGenerator.Random.NextBytes(RandomGenerator.FourBytes);
    return int32;
  }
cosmic hedge
#

that method specifically did it, i checked

restive turret
#

lel

#

i guess i swithc to unity shit?

#

idk

cosmic hedge
#

yes lmao

restive turret
#

piece of shit unity

hearty shard
#

basegame bug moment

#

@unique crane david

#

do you know

#

why it stalls

restive turret
#

works on real dotnet btw

cosmic hedge
#
/// <summary>
    /// Getting a random element from the <paramref name="dictionary"/>, if could not able to get one use the <paramref name="defaultValue"/>
    /// </summary>
    /// <typeparam name="T"></typeparam>
    /// <param name="dictionary"></param>
    /// <param name="defaultValue"></param>
    /// <returns></returns>
    public static T GetRandomWeight<T>(this Dictionary<T, int> dictionary, T defaultValue = default)
    {
        var sum = dictionary.Values.Sum();
        var chance = Random.Range(1, sum + 1);
        var returnT = defaultValue;

        foreach (var pair in dictionary)
        {
            Logger.Info(chance);
            if (chance <= pair.Value)
            {
                returnT = pair.Key;
                break;
            }
            
            chance -= pair.Value;
        }

        return returnT;
    }
restive turret
#

unity skill issue

hearty shard
#

GetInt32 is SL not unity

restive turret
#

ye csu its basic c# and works on other C# probejct

hearty shard
#

fair enough

#

it works basegame no?

restive turret
#

basegame use unity

hearty shard
#

yes

#

but basegame works, plugin doesnt

#

but basegame uses secure prob

#

maybe thats why

#

it has to be an infinite loop surely

#

nothing else in there looks like itd cause stall

restive turret
#

btw

#

RandomGenerator is made by NW

hearty shard
#

ya

restive turret
#

so blame NW for it

cosmic hedge
#

doesn't change the fact that it froze the entire server, yeah

hearty shard
#

i mean i did ping david for it kek

#

even tho i dont think hes a math nerd

cosmic hedge
#

hey look, i found a funny! yippeee!

restive turret
#

but ye

#

i switched now to unity one

hearty shard
#

slimeee

restive turret
#

what

hearty shard
#

hows sl clone going

restive turret
#

i playing factorio rn

#

thats how

#

lel

hearty shard
#

wowzers

restive turret
cosmic hedge
#

sometimes i wake up and create issues for fun clearly

unique crane
cosmic hedge
#

RandomGenerator.GetInt32 stalled lmao

#

froze the entire server

cosmic hedge
unique crane
#

Whats RandomGenerator.GetInt32

cosmic hedge
#

from SL

hearty shard
#

well

#

you can have crypto, but its defaulted to unsecure so no crypto

restive turret
cyan crown
hearty shard
restive turret
#

not clone but the one that i started rewriting

cyan crown
#

Oh ok

cosmic hedge
#

what in the

unique crane
cyan crown
#

Since im also working on a SL clone

royal mica
cosmic hedge
restive turret
cyan crown
#

I couldn't get ragdolls to work due to models not working well sadly

unique crane
#

Is it used anywhere in the base game?

restive turret
hearty shard
#

nvm

#

i lied

#

this one isnt used

unique crane
hearty shard
#

this one is

cosmic hedge
#

it did literally freeze it though

cosmic hedge
#

like you can test it, it does

hearty shard
cosmic hedge
#

because it uses a while loop

unique crane
#

Which one causes the crash again?

#

GetInt32?

cosmic hedge
#

yep

hearty shard
cosmic hedge
#

RandomGenerator.Int32(1, 7) is an exact repro i believe

unique crane
#

😐

hearty shard
unique crane
#

Whatever

cosmic hedge
#

that's the secure method

unique crane
#

the important part is the loop

cosmic hedge
#

yeah

hearty shard
#

ya

cosmic hedge
#

why is it looping lmfao

#

who wrote this 🔥

unique crane
#

Me when I set min and max to 1

hearty shard
unique crane
#

No wonder that freezes

#

The chance of you getting like that number is ~2^32

hearty shard
#

yeaaahh

unique crane
#

Just get more lucky

#

XD

cosmic hedge
#

i'd like to thank my desire to not instantiate random and not having unityengine as a reference when i first wrote it for freezing my game

soft depot
#

I legit looked up the definition once

hearty shard
#

prefabs...

cosmic hedge
#

real...

unique crane
#

I think ill just pass it through mask for the bits you might need and clamp it xd

soft depot
hearty shard
restive turret
soft depot
#

having a child could be though of instantiating from 2 humans

cosmic hedge
#

first plugin i make to mess around and i freeze the server
starting strong

cosmic hedge
restive turret
#

happened to us tbh but i just cached the result

cosmic hedge
# unique crane

side issue is that it's technically doing the same exact thing twice in two different methods (with regards to inside the using)

unique crane
#

Like I found that PlayerPrefs arrays arent serialized correctly

#

and depend on your localization XD

#

(No one used them before so no one could find out)

cosmic hedge
#

i fix a lot of silly things like that where i do most of my stuff, yeah

#

it's very funny

hearty shard
#

PlayerPrefsSl or unity

unique crane
#

@cosmic hedge Report it on labapi please

#

github

unique crane
hearty shard
cosmic hedge
unique crane
#

Happens

cosmic hedge
upper vapor
#

this is peak gambling

#

"99.999% of servers hang before generating a random number!"

slate flume
# unique crane

This is why I use my own implementation with System.Random

hearty shard
#

axed

slate flume
#

I don't need my shit cryptographically secure, I just need a random enough number that it seems random to the average player

hearty shard
#

it defaults to not cryptographically secure

#

the only issue is basegame doesnt use every method in there so they havent tested them all for this issue

#

honestly idk if it uses any of the min max ones

slate flume
#

Quick question

#

I've been browsing for a while

#

I genuinely cannot find a way to get the vector3 center of a door

#

Should I do it manually or can I cast it like you can with IDestructibles to get center of mass

upper vapor
#
  1. create 0-extents bounds with center of door position
  • loop through colliders, bounds.Encapsulate(collider.bounds)
  • get final bounds center
slate flume
#

Step 1 confuses me "create 0-extents bounds with center of door position"
I don't have the center of the door's position, that's my current issue

upper vapor
#

i meant like

#

pass the door position as the center

slate flume
#

Oh gotcha

#

I see

#

Yeah I'll give it a shot, thank you!

upper vapor
#

np

slate flume
#

Wow that was beautiful

#

It worked first try

upper vapor
slate flume
#
Bounds bounds = new Bounds(door.transform.position, Vector3.zero);
foreach (var collider in door.AllColliders)
    bounds.Encapsulate(collider.bounds);
PrimitiveObjectToy.Create(bounds.center);
#

Well except this one

#

This one is weird

upper vapor
#

uuhhhhhh

slate flume
#

Probably cause I had the door open

upper vapor
#

yeah that is probably causing mishap

#

maybe precompute the centers

#

or

#

add the y value of the center to the door's position

slate flume
#

Ahhh smart!

upper vapor
#

well, overwrite it cuz otherwise surface doors' "centers" would be at y = 590 Kek

slate flume
#

Is it better to
Vector3.up * bounds.center.y
Or
new Vector3(0, bounds.center.y, 0)

upper vapor
#

last one is probs faster

#

don't add it though, just set the y value from the bounds

slate flume
#

Oh yeah

#

You right you right

warped prairie
upper vapor
#

xdd

slate flume
upper vapor
slate flume
#

NW Moment

upper vapor
#

"spell check was never an option"

restive turret
slate flume
#
private static readonly System.Random Rnd = new();
public static double NextDouble() => Rnd.NextDouble();
public static float RandomFloat(float min, float max) => (float)NextDouble() * (max - min) + min;
public static int RandomInt(int min, int max) => (int)Math.Floor(NextDouble() * (max + 1 - min) + min);
#

That's good for about 99% of applications

#

Now that I'm thinking though

#

I should just use Mathf.FloorToInt

#

Wait

#

That just does the same thing

#

But with a cast

#

Nvm

cosmic hedge
#

i just use Random.Range personally

slate flume
cosmic hedge
# slate flume Why

youre just casting and im p sure methods exist for this
look at unitys Random for example

slate flume
#

UnityEngine.Random uses a different system than System.Random

slate flume
# cosmic hedge why even

Because I feel more comfortable using System.Random, it's better documented what happens behind the scenes to make it work

#

Iirc Unity has never stated what algorithm they use to generate random numbers

#

If I'm remembering correctly, .NET 4.8 uses a version of the uh

#

Knuth algorithm or whatever

restive turret
glad pagoda
#

it just returns a sinusoid between max and min value

slate flume
#

Yeah I don't really know much about it

#

That sounds funny though

glad pagoda
#

it's bad if you need random looking results lol

static meteor
slate flume
glad pagoda
#

i was once making a flappy bird clone for fun

#

and iu used unity ranom for pipe offsets

#

and the pipe holes kept makign a sinusoid lol

#

i switched to system.random

#

and suddenly they appeared random

#

eversince I never use the unity one

restive turret
celest thorn
static meteor
#

Factorio

restive turret
#

Factorio

celest thorn
#

Crazy

slate flume
slate flume
slate flume
#

Generally I'm happy with my choice using System.Random, and I've had no issues
I know what algorithm is used, I know how it works behind the scenes, all that

#

I can't say the same for UnityEngine

glad pagoda
slate flume
#

They changed algorithms like

#

2020 or something

#

I know SL uses 4.8 so I'm unsure if it still uses Knuth or what

plain gazelle
#

is there any kind of event for deleting items? like through RA panel?

i need an efficient way to know when an item has been deleted

#

InventorySystem.InventoryExtensions.OnItemRemoved ?

grand flower
#

yeah

#

that'll do it

plain gazelle
#

The parameters are (ReferenceHub hub, ItemBase base1, ItemPickupBase base2)
I can only explain the hub being of the player owning the item, ItemBase being the item, but what is ItemPickupBase for?
Does this event also get called for Pickups?

grand flower
#

check what fires it

plain gazelle
#

Went down the execution path and i dont understand it

#

ill just ignore it

restive turret
#

Either one can be null

#

Base1 and base2 too

plain gazelle
#

if (base1 == null) return;

#

x3c

#

Thanks

restive turret
#

Idunno how i did it but did some checking and stuff

plain gazelle
#

In the event PlayerEvents.ItemUsageEffectsApplying += ItemUsageEffectsApplying;
If i block the usage of the Hat, SCP-268, the player can no longer open their inventory and the hat stays on their head :x

#

Whats going on

slate flume
#

What's happening is you're preventing the Invisible effect from applying, but not actually preventing the hat itself from being put on

plain gazelle
#

wack

slate flume
#

So the game puts the hat on, but then determines you're not wearing the hat

warped prairie
plain gazelle
#

What im trying to do is

  1. Player is putting on the hat, with animation
  2. When animation finishes,
    nothing - Hat item
    nothing - Physical head object is deleted
    nothing - No effect is applied
restive turret
#

Why not just disable the using?

plain gazelle
#

I want the animation

restive turret
#

I never done such a thing so

#

Why not wait after applying then do such a thing?

plain gazelle
#

1 frame of invisibility

#

fineeeeeeeeeeeeeeeeeeee

celest thorn
#

i know a way you can trigger the animation

#

without giving the effect

restive turret
#

Do
Timing.CallDelayed(-1, nything());
So it runs 1 frame before

celest thorn
#

i did it for a server of mine

restive turret
celest thorn
#
            new StatusMessage(StatusMessage.StatusType.Start, ev.UsableItem.Base.ItemSerial).SendToAuthenticated(0);
            Timing.CallDelayed(ev.UsableItem.Base.UseTime - 0.1f, () =>
            {
                new StatusMessage(StatusMessage.StatusType.Cancel, ev.UsableItem.Base.ItemSerial).SendToAuthenticated(0);
                cur_item?.OnAnimationEnded(ev.Player, ev.UsableItem);
            });
#

here

celest thorn
restive turret
#

Nice

cyan crown
#

I finished doing the fuck ass networking for my SL clone

#

I hate that shit man :(

grand flower
#

already?

restive turret
#

Day 0 or something idk

restive turret
cyan crown
#

Yeah i got no relay so it wouldnt work anyways

cyan crown
grand flower
#

Still sounds pretty fast

cyan crown
#

Really?

#

How does it usually take tho?

grand flower
#

Depends on the project, and how serious you want it to be tbh

#

Movement is one of the tougher ones in your list

cyan crown
#

Since i did do networking long time ago and i used same things i did back then

#

I also followed this tutorial back then

https://youtu.be/kZF41MdT1Fo?si=hfxA0Fy0NS3aTKpP

Creating Unity multiplayer games is simple with Netcode for GameObjects. Later it is easy to connect it with other Unity gaming services such as Leaderboards, Matchmaking, Relay and more! In this tutorial, I will teach you how to sync player movement and connect multiple clients to your game.

Start project files - https://github.com/Freedom-C...

▶ Play video
grand flower
#

I'll check it out in a bit

true cedar
#

netcode isnt real

sinful bronze
#

In unity 6 (and i think from 2022) multiplayer creation more simply

grand flower
#

There's no simple way to do movement

#

Not on Unity

cyan crown
#

Unity 6 makes multiplayer really easy to do

#

Im using 6.2

sinful bronze
#

Netcode always good way

grand flower
#

There's a difference between just having multiplayer and having a good implementation

sinful bronze
#

Gangsta pineapple

limber silo
#

It is in their docs

hearty shard
#

Jesus!!

cyan crown
#

Yeah true its obviously not good i still experience lag with movement

hearty shard
#

Bestie!!

limber silo
#

hey

sinful bronze
#

Hey

hearty shard
cyan crown
#

I need to add more debug tools and man i have to work on the fuck ass ra panel😿

hearty shard
sinful bronze
grand flower
#

I'd put that low in your priority heh

cyan crown
#

I should work on classes manager since i have the UI set up for it

grand flower
#

Yes

#

Also looked at the tutorial and yeah it's not gonna be really good

#

But if you're just making a clone for fun then w/e

true cedar
#

im too lazy to learn

#

how do labapi configs work

slate flume
hearty shard
#

What specifically do yoj wanna nnow

cyan crown
grand flower
#

If you're going for experience on multiplayer games then I'd still reconsider your current implementation

cyan crown
#

Since i dont have money and assets to buy them from the store i picked SL to clone

grand flower
#

Look into more advanced techniques

limber silo
#

And it works the same way

true cedar
limber silo
#

you just dont have to inherit IConfig

cyan crown
hearty shard
#

Or override the load config method

#

In Plugin

#

And then uhhh

#

this.TryLoadConfig

hearty shard
hearty shard
true cedar
#

okay and then u just use

#

plugin.config i assume

true cedar
restive turret
#

Description

#

Same as in exiled one

true cedar
#

i legitimately have not used exiled for like

#

2 years

limber silo
#

thats all from yamldotnet

restive turret
#

[Description("meow")]

hearty shard
hearty shard
true cedar
hearty shard
restive turret
#

Can we destroy yaml

hearty shard
#

Create labapiconfighandlingsystemthattotallyworksverywell

#

Make sure its that long

restive turret
#

Oh yeah make sure you do not do stuff like SCP in the config and do Scp instead

#

Cus it will ser as |s_c_p`

true cedar
#

why

#

oh

restive turret
#

Bc yaml

true cedar
#

stupid

restive turret
#

NW made a settings for snake case

true cedar
#

yamldotnet is garbage

hearty shard
#

Slime r u a witch

hearty shard
true cedar
#

we should gc you

restive turret
#

Which you cannot change and I redid the yaml stuff for my own which does the same as you typed

#

But ofc the first letter is always lowercase

hearty shard
restive turret
hearty shard
#

@moderators id like to report an evil creature

hearty shard
restive turret
restive turret
hearty shard
restive turret
#

Aren't You evil too

hearty shard
#

No

#

Never

#

I should sleep

restive turret
#

Fake, false

hearty shard
#

Its 1 am

restive turret
#

Yes

restive turret
hearty shard
restive turret
hearty shard
#

its okay

#

cuz im eve and id win

#

actually

#

Im so cooked

restive turret
#

Bc you are evil

hearty shard
#

Cooking class with nausea and having puked multiple times is gonna be horrid

#

Might skip

cyan crown
#

for those who are curious this is what i got finished

#

for my SL clone

#

this is being held by duct tape😂

restive turret
#

As unity too

cyan crown
#

these objects in the video represente the zones LCZ, HCZ, SZ and i have made theme transition between them it only happens once so i can put this next to gates or transition between zones to switch the theme

cyan crown
restive turret
#

I dont really have any vid of me doing anything so

cyan crown
#

i was thinking of using Old Models since the new models don't have any public T posing Rigged ones so i can't really make ragdolls :(

#

its fine i like to share with people and see what they think and i would like to see what people cook in unity

restive turret
#

I will try to create some new UI stuff with TMP

#

So some people who like doing broadcast and hints and other stuff might be pleased or something idk

cyan crown
teal junco
cyan crown
#

i haven't really fully read its documentation i just know the basic stuff but it has a lot of potential

restive turret
#

I used it 2 times

teal junco
#

Also you need to fix that footstep noisemaker

#

please

cyan crown
#

yeah its fucked up

#

i got stuck with footsteps after finishing syncing shit

teal junco
#

I imagine it's harder than it looks

soft depot
# cyan crown

I wish normal SL server wasn't headless so I could use cameras Trolley

teal junco
#

some gigabytes

cyan crown
#

lol i have this reference image i took a week ago

teal junco
#

Jovix what is next on yourlist of stuff

cyan crown
#

i did encounter a funny bug

restive turret
restive turret
soft depot
teal junco
burnt hearth
cyan crown
#

i can do first person shadows as soon as possible but it will kill performance :'D

restive turret
cyan crown
#

10 fps for you and the other 50 is diveded on the half of the server

teal junco
teal junco
teal junco
#

headless is <1gb

restive turret
#

6gb ye

cyan crown
#

these are the sprites i have right now

#

i really don't understand how they did inventory slots since these slots don't make any sense at all

teal junco
#

couldnt you theoretically install assets into the server so it can become self aware and produce screenshots

cyan crown
#

it doesn't make any sense but i'll look into it later

restive turret
#

Anyway gonna sleep, gn

#

I might record some show what i did

cyan crown
#

since its almost 1 am i'll just add a ms tracker or some shit to test

cyan crown
restive turret
#

1x1 is my favorite

cyan crown
#

yes but most of them are not correctly fitting the other sprites at all

restive turret
#

Can't you still the inv8 with slot8's?

cyan crown
#

yeah i think it will work i'll test it

#

it will take me time since i have to launch SL and get a pixel perfect reference

#

since without taking references from the game it will feel off and weird

#

they must be rotated to fit perfectly

#

but my guess i'll use a event trigger

restive turret
#

Tbh i would use diff Inv system

#

I mean the cycrlers

#

Aaa it's too late

cyan crown
#

yeah gg :(

#

i haven't coded anything for inventory yet

#

so there is still hope

#

since i only wanted to add ms text on top left

#

to help with debug and other shit

true cedar
#

@hearty shard give me a name for my watermark plugin

#

if u dont im naming it watruemark

worthy rune
#

Thanks for taking the time to review the system I really appreciate that. I do plan todo base game changes so that other SSSS systems can be made compatible with each other as I don't want to limit peoples choices. I did initially use harmony patches in development(mostly for bug fixes) but I had moved them all to the base-game as of 14.1.4.

The generics are a implementation detail, I would like to hide them as I agree they are very confusing at a glance and you would never actually need to use them. Performance I'm not sure about yet as I have not tested with a full server(I will likely do some testing on a full live server for this), I have been keeping track of the complexity of each major operation and made sure I'm using the cheapest update method based on the change. for example the the ServerSettings.SendToPlayer methods are O(n) where N is the number of potentially visible settings. this should mean its quite cheap to call per player, on the other hand ServerSettings.BuildModel requires all settings to be looped over which isn't ideal but is necessary in some situations. Also PlayerSettings that have get/set properties will use the cheap base-game update methods internally so you don't have to resend every time you make a change. This will make it such that the "expensive" BuildModel/SendToPlayer are only required when either a setting is added/removed or a setting has a property changed which wasn't syncable with the cheap methods which shouldn't happen often unless your making a pretty complex tool.

#

For updates I did implement something similar to IgnoreNextResponse as I have encountered this problem in the past with the base game SSSS system. There's a enum EventUpdateFilter which allows you to ignore certain updates like Initial acquisition and reacquisition(reacquisition is where you receive the same value again, which happens when the client responds to a setting being send again) I find this to be a much easier way to go about it as the consumer, even if a little less flexible. if you need every update no matter what you can specify EventUpdateFilter.All to receive all updates, although I don't recommend it.

As for grouped the server-only settings into the setting models im not sure I understand it, are you refering to how ServerSided is specified on a per model basis, or that ServerSided is set when theres no Id provided, or something else?

I was hoping to cover most basis including complex stuff, ill check out your ASS.Example and see if its replicatable(in a reasonable manner) in this system

soft depot
# worthy rune For updates I did implement something similar to ``IgnoreNextResponse`` as I hav...

what I meant is that I was sad that you had to include handling for server-onlu settings in each setting model (like DropdownModel, etc...) instead of having a dedicated model for server-only settings (which is what I essentially did with ASS, although I haven't tested it)

I feel like it's nicer this way because then you can reasonably have the properties of the server-only settings be get set, but then have the client settings be only get only (because you cant sync the value back)

I feel this kind of behavior is justified (seperating server-only into a different branch of classes) because you cant dynamically change server-only, you'd have to resend settings to switch between server-only and client

#

did you ever check out ASS when making ComposableSettings btw? I'm a bit proud of it :3

worthy rune
#

i did, but only near the end of development as i was curious how other systems were made

soft depot
#

alr, do you think it's good?

worthy rune
#

i wont lie, i found it abit confusing especially when looking at the example(i know half of that code is because EXILED/LabAPI) but i found the amount of events abit overwhelming. the API on the otherhand I found to be easy to understand at a glance. didnt look too much into it though

soft depot
#

yeah I need to work on adding docs...

worthy rune
soft depot
#

well the model is just the backend for the settings right? I kinda take my point back after thinking abt it

#

I keep forgetting settings are essentially static with that API

soft depot
#

you cant really change a pages settings now can you?

#

they're all based on the properties of an inherited class

#

and the models only do backend stuff to manage the properties

worthy rune
soft depot
#

really?

worthy rune
#

yeah

#

you can even do Dictionary<Player,List<SettingBase>> if you want to show a completely different set of settings per player

#

although that should be pretty rare

soft depot
worthy rune
#

well you woudnt use that for menus

soft depot
#

something like the keycard creator I made

#

you want certain settings based on a previous input

worthy rune
#

that should be possible

soft depot
#

man I honestly cannot figure out where you evaluate the IEnumerable / Dictionary so I just give up 😭 🙏 if you say it works it works

soft depot
#

I can see the wrappers

#

but not where they're evaluated in SendToPlayer

worthy rune
#

the graph is exposed through the interfaces if that makes sense

soft depot
#

idk man it's too much interface / generic for me

worthy rune
#

idealy you wouldnt have to read the code to understand it, will definitely make a wiki/docs to explain all its features when the time comes

soft depot
#

also DnSpy is prolly butchering it all

worthy rune
#

yeah

soft depot
worthy rune
soft depot
#

yea DnSpy butchered it

#

it'll prolly be a lot more readable once you guys commit that to LabAPI

#

why did you use underscores in local/argument names bro 😭 🙏

worthy rune
#

xD

true cedar
#

and dnspyex is even worse

#

thats not related to anything

teal junco
#

does anyone know a plugin or lib with a high quality player state save/load?

true cedar
#

works 100%

teal junco
#

No more like the actual data, not serialization

true cedar
#

yea write to a json fie

#

file

true cedar
teal junco
#

what do you think i mean by player state

#

i probably couldve worded it better.

#

unless im being dumb here

true cedar
#

i was thinking you wanted to

#

save

#

info about players

#

like stays

#

stats

#

in a database

teal junco
#

oh i know how to do that. I mean I could learn Sql for that but i mean like

#

serializing a player's gamestate (inventory, role, hp info, position, etc)

true cedar
#

oh

teal junco
#

and the ability to unload it onto a player

true cedar
#

i had to do that for brights

#

idk if anyone has done it before

true cedar
teal junco
#

alr

#

thanks

true cedar
#

tmrw tho

teal junco
#

thats fine im not doing anything

upper vapor
true cedar
#

rust uses snake case exclusively

#

well

slate flume
#

Snake case is psycho behavior

upper vapor
true cedar
#

i do

#

and so everyone should

worthy rune
#

making different sub pages types was probably unnecessary, a single subpage type that took a list and string(for the name) would also work

restive turret
#

Confusing in first time

slate flume
#

God I'd click for an SSSS wrapper in LabAPI

#

Not that I hate what other people have made just I wish to not rely on unofficial support and I don't wanna have to make my own

worthy rune
teal junco
#

SS wrappers would be nice

#

working with it is kinda fucked up lwk

static meteor
restive turret
#

Go to sleep my man

worn gull
worn gull
restive turret
#

Formal Languages and Automata

#

8-12

worn gull
restive turret
#

not gonna disclose it

worn gull
#

Alr

royal mica
restive turret
#

when the basics is javacsript 💀

upper vapor
#

Xd

icy knoll
restive turret
#

ye but you should not start with that

#

start with basics that you getting familiar with data types

icy knoll
#

i started with python then went to js, i preferred js in the end 😭

restive turret
#

and like actual basics

#

i mean ye you can write prob some shit faster in js since doesnt neccessary need any background knowledge of types

#

you only know like two, number and string

upper vapor
#

Python has alien syntax

unique crane
#

Both equally sucks

upper vapor
#

Start by seeing sharp, problem solved

cyan crown
#

Sea sharp

celest thorn
#

hello

restive turret
#

hi

upper vapor
royal mica
#

a lot

#

don't forget the pasta as well

#

that is mandatory

upper vapor
#

I don't eat soup with pasta in it
I eat pasta with some soup in it

unique crane
#

whar

wanton turtle
royal mica
restive turret
#

Suup

warped prairie
true cedar
restive turret
#

General with the plugin devs

tulip kiln
# worthy rune heres what i came up with, not sure ifs a 1:1 but should be pretty close. only t...

A wrapper would be amazing but one other feature would be even better. Could we make SSSS options "hideable", but still usable by clients? They could be useful in a case like this:

There is a global dropdown to select a "page". Selecting a page sends different settings to a client.
Each page has its own set of settings.
Page 1 has a button. This works, since a button needs to be visible in order to be pressed.
Page 2 contains a keybind. Now we have an issue where if someone is on Page 1, they will not be able to use the bind.

Hidden options would solve this by hiding settings instead of not sending them okis
Would this be possible? 🙏

hearty shard
#

already

tulip kiln
#

how

hearty shard
#

you just send the keybinds in 1 page when client closes the settings

rain isle
tulip kiln
#

I asked this a while back and someone said I couldn't do that

#

hm

hearty shard
#

client tells you when they close the settings page

#

so you send keybinds only there

#

and then when they open you resync the correct page

#

but yeah i should make a labapi issue for what i have already asked for on SSS

worthy rune
hearty shard
#

yea

worthy rune
#

i think someone suggested client sided pages, which could solve this issue more efficeniently while also solving other problems like how you have to hoist all the settings on the initial send

hearty shard
#

@worthy rune

upper vapor
hearty shard
#

i might not be fully clear on everything but yk

#

2/3 of these require client changes

upper vapor
#

We have issue logs now

#

Crazy

hearty shard
#

yum

worthy rune
#

you cant really do PlayerSetting.Get(ServerSpecificSettingBase user_setting) and the way your use them would be very different from base-game sss that it would be weird to call them wrappers

tulip kiln
alpine glade
hearty shard
alpine glade
restive turret
hearty shard
#

@soft depot howd u make it be this stinky

#

howd u end up with a broken setting system that requires this patched

restive turret
#

Eve can you patch your code

hearty shard
#

this is why we

soft depot
#

That defaults to true Trolley

restive turret
#

CallDelayed(-1,..) Fear

hearty shard
#

also why return false here when you can = null it

true cedar
#

they should let me design the new ss setting system

#

and only me

hearty shard
soft depot
royal mica
soft depot
hearty shard
hearty shard
upper vapor
royal mica
#

Actually that is a pretty good question why it is send during preauth

soft depot
#

I wonder if riptide is gonna change when default SendToPlayer happens Trolley

upper vapor
restive turret
#

When the auth is pre or something

royal mica
#

Yeah but preauth ppl should not interract until they are auth

true cedar
#

but i didnt

upper vapor
restive turret
#

Tag hubert , he's the one who made the system HubertBall ClassDTroll1

soft depot
true cedar
#

eve

hearty shard
restive turret
#

Yes

true cedar
#

have u rigged the firework show

upper vapor
true cedar
#

im ngl

#

atp why even use hsm

upper vapor
soft depot
#

How come nameless gets to go in the logs but I dont 😔

true cedar
hearty shard
#

good

upper vapor
#

Why would you use threads

#

For hints

#

Like omg...

true cedar
upper vapor
#

There was a branch made to do something like that afaik

#

At least at some point

true cedar
# true cedar meh

GPL makes it so that you would have to provide it somehow if u ran a server iirc

#

and idgaf what people do with it as long as its not like

#

evil

upper vapor
true cedar
#

The WTFPL is a permissive free software license. As a public domain like license, the WTFPL is essentially the same as dedication to the public domain. It allows redistribution and modification of the work under any terms. The name is an abbreviation of Do What The Fuck You Want To Public License.
The first version of the WTFPL, released in Marc...

#

this is a good license

upper vapor
#

What the fucky

cyan crown
#

Plugins dev chat

hearty shard
cyan crown
#

Pretty evil from you i'm deleting discord after this😿 SteamHappy

true cedar
cyan crown
#

Plugins dev chat?

restive turret
#

Dev chat plugin?

true cedar
#

what if ur only a plugin dev

#

not a plugins dev

cyan crown
#

Chat dev plugin!?

upper vapor
cyan crown
#

😿

worthy rune
true cedar
#

chat plugin dev

cyan crown
#

Chat plugin devSteamHappy

true cedar
#

what is a tr*nslator doing here

cyan crown
#

😿

#

So evil

true cedar
#

what do u even speak

#

i bet its something stupid

#

like french

restive turret
cyan crown
#

I speak arabic , english and a little bit of french

true cedar
#

see

#

i was kinda right

restive turret
#

I don't speak i just listen

true cedar
cyan crown
#

😿

hearty shard
cyan crown
#

That was so evil i'm sending guards to KOS you in every single server

true cedar
#

damn

modern lark
true cedar
#

more people from the northern woods???

upper vapor
modern lark
cyan crown
#

:3

celest thorn
#

yo chat how big should i do a hub 500x500 or 1000x1000?

restive turret
#

50000x5000000

cyan crown
celest thorn
#

for reference

#

im planning to use this

cyan crown
#

Oh ok i thought you were actually making a 1km x 1km map

celest thorn
#

which is lile

#

399x399

cyan crown
#

399 meters💀

celest thorn
#

but its going to be in the background

#

yes

celest thorn
#

what do you expect

cyan crown
#

All that for backgroundSteamHappy

celest thorn
#

btw im not going back to general

#

im too scared

#

this is a 500x 500

#

and the thing selected is the player

limber silo
#

trust

hearty shard
warped prairie
#

Who up developing they plugin rn

celest thorn
warped prairie
#

Your just here for the love of the game atp

celest thorn
civic flume
#

It is gone

celest thorn
civic flume
#

😭😭

#

I dont even have embed permsClassDHollow

teal junco
#

plugin dev chat is my home

#

i havent even looked at general in weeks

celest thorn
cyan crown
clear siren
#

yo anyone able to help me on this?

cyan crown
#

I guess you can check over watch since it probably has a function that allows scps to be heard by OW player

#

Im not sure but devs here will tell you exact script and code used for it

clear siren
#

ok

#

because i tried with my friends

celest thorn
#

and then check SSSS

icy knoll
#

im giving them support in the thread

#

no need to give support here

restive turret
#

Lel

hearty shard
restive turret
#

Wdym no

celest thorn
restive turret
#

You too?

celest thorn
hearty shard
celest thorn
restive turret
#

There is so much more voice

#

Like atleast 7

celest thorn
warped prairie
restive turret
#

You

cyan crown
#

I hate map gen man i can't get it to work in my clone

warped prairie
restive turret
#

You can even network the rooms

#

So can move runtime

#

;torl

cyan crown
#

True but im not like using same code as SL btw

#

Im trying to use a different method then layouts

#

Which is why its impossible to make for now

restive turret
#

SL using something like image gen or something

cyan crown
#

Yeah they use a 2D map gen that spawns room sprites then those sprites spawn the prefab assigned to them

#

Thats why 079 and 106 soft reworkes were a thing in 12.0 bc hubert rewrote map gen and it became more accessable

celest thorn
#

i tried to make maps generate in specific spots i wanted but couldn't figure it out how

cyan crown
#

The issue right now is that i need to make a 2D sprite generator that i can generate sprites from and assign to rooms

#

SL also uses a custom scene to generate icons for items

#

It was seen in a developer stream back then i think when they worked on 127

restive turret
#

Check how Minecraft does it with it's rooms (trial chamber)

cyan crown
#

Oh ok i'll check it out

noble lava
#

I say we send jovix to the trial chamber

cyan crown
#

Oh man😿

celest thorn
cyan crown
#

I saw that minecraft uses chunk based generation i guess i can slap a box collider that covers the whole room from top to bottom then have that room has 2 empty gameobject called connectors now the tricky part is how i rotate and connect the other rooms not in code but general idea and logic

restive turret
#

He trial on my chambers

cyan crown
#

💀

#

I guess i can have the shit hard coded and it spawns a specific room every time but differently rotated

cyan crown
#

Or i can do the "peak" method and just make maps and swap between them when loading a scene

#

Oh so good idea then

celest thorn
#

minecraft generates world, caves and then structures

#

and at the end the world spawnpoint

#

which has rules

cyan crown
#

I had this idea of expanding a single room spawns in 0 0 0 and it spawns other rooms around it

celest thorn
#

or just making it compatible with base game?

cyan crown
#

Custom

celest thorn
#

then use a sort of dungeon generation

cyan crown
#

Oh cool i'll do more reasearch

#

Since i want this system to be expandable in the future if i want to make some insane layouts

cyan crown
upper vapor
cyan crown
#

Oh :( if you find what its called ping me please

#

It will be very helpful

teal junco
#

i feel like map gen should be the easiest part

unique crane
#

@celest thorn White Knuckle update btw

celest thorn
restive turret
teal junco
#

I don't have any projects requiring it right now

restive turret
#

Do it send to jovix, profit

teal junco
#

Maybe later

restive turret
#

TF2 reference??

teal junco
#

I realize jovis mightve wanted procedural

#

instead of preset

#

so kinda harder than I thought

plain gazelle
#

How can i remove the SCP-268 invisible hat timer off of someone?

cyan crown
#

Map gen is the hardest thing right next after Character class manager

teal junco
teal junco
cyan crown
#

Btw i read the messages its not procedural

plain gazelle
cyan crown
#

Its preset but isnt limited to layouts it makes its own layouts rather then manually doing it

#

So yeah i guess its procedural some one way or another

upper vapor
#

the labapi wrapper probably has a property like this

plain gazelle
#

thankies

upper vapor
#

np

teal junco
#

containment breach had occasional issues with end rooms spawning in the same place

weary lark
#

Guys why isn’t my plug in being read or wtv it dosent work for some reason

static meteor
restive turret
plain gazelle
#

Every now and then the entire server lags insanely hard and the console gets flooded with this but i have no idea what this means. Something something Cedmod? Can anyone help decipher this qwq

restive turret
#

Cedmod cannot connect to some server

#

Check cedmod server for any announcement or stuff like that

#

Either the cedmod server died
Or you server is somehow denying the connection to cedmod server

celest thorn
#

Or cedmod is being cedmod

harsh thorn
#

fyi, "no such host is known"
is a dns issue, or some other kind of network issue on protocol level

#

usually a result of a host with networking issues

#

or a ddos attack causing packets to not reach their destination

worn gull
#

Hi! How can I change the ff multiplier in plugin?

grand flower
#

PlayerHurting event, check if it's friendly fire, change the damage to your liking

worn gull
#

okay thanks

#

I thought I can change it

#

Like a value

grand flower
#

no idea

#

maybe a server setting

#

yeah there is

hearty shard
grand flower
#
friendly_fire: false
friendly_fire_multiplier: 0.4
#

config_gameplay.txt

hearty shard
#

oh i thought they wanted player specific or smth

worn gull
#

But I want to change it in a plugin

grand flower
#

if player specific then yeah find where friendly_fire_multiplier is handled and patch it

worn gull
#

Okay (tried that but did't find it)

#

The I will continue the search

celest thorn
#

Someone knows the shot error codes for what they stand for?

#

@unique crane you know what the code stand for i know 2.x is for modules but 1.0?

unique crane
#

?

celest thorn
slate flume
unique crane
#

idk the exact numbers

#

some are module busy

#

etc

celest thorn
unique crane
#

idk

celest thorn
#

its the most common one i've seen

cyan crown
restive turret
#

True

pallid galleon
# weary lark

you had to use code kadava at checkout for it to work tf

#

jk just put it in the port or global folder 🙂

cyan crown
#

i added sigma ms

#

it actually works

#

when connecting my ping is 1000 ms💀

#

after a while it goes down slowly until it reaches 27 or 6 ms

grand flower
#

needs to calculate

#

probably defaults to 1000

slate flume
#

ItemPickupBase.OnPickupAdded will capture every pickup that spawns, right?
Cause I've been using a combination of ServerPickupCreated, PlayerDroppedItem, and other events to try this but it still fails when a player escapes

teal junco
#

ts gonna be huge

slate flume
true cedar
#

do any of u know how the fuck to use docfx

#

im so fucking exhausted

#

im trying to set up a doc site and im doing the Exact Same FUcking THing that i did for the old docs except its not working

teal junco
#

But the body text is basically saying my full name

#

chances this guy literally never hires anyone

slate flume
#

Wait quick question

#

Off-topic

#

Are pickup serials different than the serials for held items?

#

Like

#

If I have an item

#

And then I drop it

#

Is the serial between it and the pickup the same

true cedar
#

yes

#

anyways can i rant about docfx

slate flume
#

Sure