#plugins-dev-chat
1 messages ยท Page 90 of 1
For my own thing i dont use any 3rd party plugin lel.
For dava and his stuff he use mer for schematics and stuff
Not those
what then ๐คจ
I dont cus Hell me i dont wanna open unity
You do your own hints?!
Scary
No i dont use hint system
The only "hint" i make is basically only on CustomRoles which basically just waiting the other hint to hide
Like connection errors etc
I donโt have them in think the server were down or idk
Kedava is behind standards
Do you do custom items?
For some reason VS tools for Unity won't work for me so I had to bugfix MER's decompiler without intellisense and all of that
Obv
well in that case the error is "intended" granted it isnt supposed to happen often
websocket stuff reconnects every 5 seconds
i think the other query things might be 5
CustomRoles
CustomItems
CustomWave (not used in actual server)
LightManager (not in public and broken af rn)
RIp
So how do you handle custom items without hints?
Tbh I dont really wanna do any hint stuff
cuz its either
i print errors so people inform me of shit breaking if i somehow dont notice
or i dont log anything and then people are like "why not working for 3 hours now"
doubled edged sword
Just stop breaking shit 
I just use the basic , you can unsub (deactivate the hints) and do it yourself with your own
somethings shit breaks itself
Unity can break itself pretty easily
TRUE
I'm not even using like
Unity is broken
Me when bug only appears in release config and not in debug
Yes I do.
Now its not handled by me because I got an intern job but i did contribute to the base code of it
me who always builds release config (i turned off the shit on release config)
Me who builds the build on my pentium
So then
How do you do that without hints?
Well basic hints like the most basic hints and thats it
Basically what I did is same on exiled, you pickup it shows the thing etc.
Framework for that little feature isnt worth the hassle to learn it
I might make it to call an Action so it will use that to send hints but otherwise i not really using it
Makes sense
I have a lot of UI elements so I use HSM but I've heard RueI would be better
:3
hsm is a performance issue
ruei is just WEIRDDDD
If you do ui stuff ye I advise using something or writing your own.
But for me I aint really need it.
i need to at some point make my own
Ask ax he made one 
I mean if I was experiencing performance issues I'd switch
But I've still got 60 tps on full servers
Its just the fact a thread is created per player
Yeah
u havent even tried v3
I think ik the issue actually
W my thing
Also live color update
Level 20 moment
Haha!
ill scream
i use lines
No!!
you got hcz navmesh working

yes i do and you can't stop me
Damn how do you detect the door
I casting fireball
Raycast
Duh like i do the same
Params and stuff
Or i might just be blind af and idk how these works
my god
Live footage of the smartest SL player alive
Nature documentary
anyone know what the default gravity value for a player is?
tried the classic -9.8 but that was way too little
-19.6
pog ty

Anyone know the variable name for waterfall room?
Uhhh
2sec
HCZ_Crossroom_Water
i dont believe it had a RoomName
But that is its gameobject name (with the clone part removed)
if you want i could get you the full list 
I was just trying to figure out the water room one because I needed to exclude it from rooms a role can spawn in lol
ppl spawning in at the start of the round in a bottomless pit

sure i can look at it
Offset it 
what is the performance impact of a waypoint
umm
shouldnt be anything that much
its a distance check tho afaik
Vector3.Distance
per player ofc
same way elevators basegame work
okay well if its just the distance check then it shouldnt be that expensive
it is a bit more than you predict though, since i think its a cube collider instead of a sphere collider
it just checks the position instead of the collision with the player/pickup though
So how do you do animations? I never asked
is there anyway to find out what projectile killed someone, like grenade or bouncy ball?
Theres ExplosionDamageHandler
is that applicable for both cases above?
Grenades yes
hmm, I need something to detect death by bouncy ball
public override void OnPlayerDeath(PlayerDeathEventArgs ev)
{
if (ev.DamageHandler is not ExplosionDamageHandler handler ||
handler.ExplosionType != ExplosionType.SCP018) return;
// run code
}
thanks!!
Of course :)
how did you have that on hand so quick?? ๐
I made it!
I have my IDE open so I just typed it out
that makes more sense then, thanks for all your help so far!
Happy to help!
scrolled up to see what happened when I was in school. funy
no more spoofing!
how do I do a server tag like this?
I tried
with hints
didn't work
Plus I need to display multiple hints which I tried doing and it didn't work
Is that the player list?
If you're doing more complicated UI stuff use RueI or HintServiceMeow
The game only supports one hint at a time
RueI and HSM automatically combine all hints into one
how many servers use them even
and I currently do this btw.
so I would need to fix stuff for it
to work
Uh
I'd estimate just about 80-90% of modded servers use them
lots of servers use in house hint systems
Really?
i know ct and brights do at least
Well yeah
Those guys are huge
Most people are NOT building their own in-house systems lol
True but still
Hint manager
do I make my own, or use Ruel?
.
so RueI or custom?
HSM has performance issues
i mean prob ruei/hsm if ur new to hints
Which means it's not as performative
ruei v3 is coming out soon tm
I've never experienced them but it may matter if you aren't running on good hardware
are the performance issues in hsm bad enough that they might cause issues on a mid range terabit server?
i've thought about using it before
im trying to make it the definitive hint framework so
(tm)
I also have never had any issues
I want to be like big server with alot of custom stuff
well in that case u prob want a custom framework
but that gonna be pain ๐
but if ur new to plugin dev
I am new to lab api
just use a hint framework
i've tried ruei but it was too scary for me to figure out (to be fair i was still new to development when i tried it) 
NOT new to plugin dev
i made some design blunders when making it ngl
originally it was designed for my own use in a plugin
If you're new to LabAPI HSM is already completed and is easy to work with
RueI is good but not completed yet and may be a little more complicated to work with starting off
And when your needs change it shouldn't be wildly difficult to port the things you need
ruei v2 is finished ruei v3 isnt

wdym
HSM does string IDs for hints
ruei v3 has that too
ok I will just compile v3 myself ๐
Imma check out RueI v3 when it drops I think but for now I've been rolling with HSM
im v v v v proud of it
is there an unfinished version of ruei v3 public yet (even just source code) or is it only gonna be public when its finished?
yea theres source code
They're two different hint systems
its under the v3 branch
ooh dope
whjat should i use for my minimally modded server i only want a spectator list
like
whos spectating you
neither ideally
^
Use RueI
More performative
ok thanks

A lot of plugins requires a hint manager system though (even if I think itโs unneeded)
if I did my own how can I replicate YCoordinate on HSM
Unneeded?
It makes people's lives a lot easier
voffset / line height
how do I use those in hints?
<voffset=500>hello
To move around text you use Unity rich text tags
I personally think that when you have to have a hint manager to have them all work together, you might have too many hints on a server
i mean
Personal opinion*
if you GASP want to have 2 hints show at once
I don't like this take personally
And thatโs okay
If I want to show server stats and spectator UI in two separate hints (god forbid) then it helps tremendously to have a hint manager
Because hint managers don't necessarily mean a lot of hints, you may just have seperate hints you want to be toggleable

I wish you luck
give me things to add along the way ๐
I'm happy I started with a hint manager because it made expanding my plugin really easy and when I started work with LabAPI I knew like 1/10 of the things I do now
how hard is it to just make a custom hint manager?
i dunno yet
@true cedar
idk if i wanna make my own simple one that i can add stuff to if i need or just use an existing one
it depends on how complicated u want it to e
realistically 90% of ruei is powered by a single function
that calculates the offset between 2 hints
does -1f just keep a hint forever?
try it and see ๐
ok I do same
If I wanted togglable hints I would just setup an SSSS thing for it, maybe itโs just a different approach on stuff but a hint manager to toggle something where it can be done a different way.
Another thing for me is (and HSM is incredibly guilty of this from observation) just an update to a hint manager can break functionality.
Either way though, each people make their plugins in different ways, and itโs ultimately up to the server owner to include or not include plugins that requires or doesnโt require a plugin that uses a hint manager
which has like AddHint() RemoveHint()
you liar! put in HMS y coord for it. didn't work
how do I convert HMS y coord to working coord?
I did HMs for bottom of screen
wdym update to hint manager
oh
Updates to stuff like HSM, there has been breaking updates in minor revisions (5.4.2 to 5.4.4 has given people issues from what I noticed due to breaking changes)
o
I cannot say this is the case for most server owners, but something like 5.4.2 to 5.4.4 for HSM being labeled as a revision where stuff has broke where it would be more appropriate to be versioned differently would not catch them off too hard as it did
Is there a RoleChangeReason that I can use to tell my ChangedRole event to do some special shit?
PlayerRoles.RoleChangeReason enum
Is there a RoleChangeReason
Like a value from it
That would not be given anywhere in base game?
oh wait im stupid
๐ญ
i dont think so unless you just use one of the existing ones that might not be used in your server
I'm just gonna try using a weird peice of knowledge
how do I make this go on Bottom for my hint manager?
as the thing
he guy said
didn't work
None
Custom
Probably
I use none for my custom roles
Hello
<voffset=-2%>
so that should put it on bottom?
Idk
Changing window size?
no
ยฏ_(ใ)_/ยฏ
what if I try negative ๐
I want to be like CT with a custom hint manager but this is pain
๐ญ
Hi
i give up.
tomorrow im setting up something else
ima keep code mabye paislee can help tomorrow

btw stupid question i know, does someone know if you can change SSSS labels and stuff just for a client
So for example a button
Label A Press Button
Label B Don't Press the Button
if i understand your question, yes
you dont have todo anything fancy either, just filter the player when you send an update
Just modify for a player some text
so i can use the same update as the Text hmm crazy
It's in FpcGravityController
AnimationCurves
Probably with MER
is there a way to override SCP-106 energy stats?
Patch
do you happen to have an example?
You can use the property in the role base
The what now?
Send the new SSSS to that player only
๐คฏ
Also SecretAPI supports per-player SSS
But i ain't use secretapi
I made my own for menus thats why
Drake laptop gif
settingsBase.SendLabelUpdate(settingsBase.Label + " UWU", true, referenceHub => hub == referenceHub);
Im doing this but nope lol
F
and my error says this lol (on the client)
@upper vapor ok I officially lost my bunny pic
I got it from twitter with some bunny posting account but apparently i scrolled every post of it and dont find it.
Even searching it results not that post.
I even searched for "bunny caption" and "bunny think" but all i got was girls in bunny suit 
I lost my bunnies :(
WHAT
bro searching for bunnies and found other bunnies
is there a way to find out if a player has looked at 096 asides from tracking them with a list using the AddedTargetEvent?
YES
And most of the search is limited bc twitter now hides nsfw so.
But fr I literally searching bunny animal pics but all i got is girls dressed as bunnies ๐
Consider
HAHAAHAHAHHAHA
Deleting Twitter
If you like to do coroutine and check for tracing your eye
No, i have tons of cat pic from it
so no exposed list that can be queried huh
Check 096's subroutines
Scp096TargetsTracker
There is probably a list inside
I might be having a stupid moment, but I can't get Scp096TargetsTracker.Targets, I'll keep trying to figure out what I'm doing wrong
Use dnspy and search for a list or search where the event being used and search around there
Publicize?
wdym?
What stopping you? Cant access because the field is private/internal?
Publicize it
RoleBase.TryGetSubroutine
I think I need to study csharp more. This is where I'm struggling with the mechanics of how this works and what you guys are suggesting. Unfortunately medicine is my career lol, this is all a hobby I'm learning as I go.
Thanks for the tips, I'll see what I can figure out
Rock ok gif
Also is it only me when I set IsLocked true then set IsLocked false after some time?
The item being still lockex
maybe its still InUse as well
I didn't set inuse true
in the wrapper?
What
which class
Pickup
that should work
Ye but apparently not
can you show the full code
xd
slejm
you should be storing the list in a local var
why do you even use a dictionary for that ๐ญ
Player can escape more than once even when denying
ah
I mean it triggers it
And I just saying "fuck off just wait until i set your role to valid one"
why not just have a hashset for escaping players
and store the pickup list in a local variable
cuz you're getting a KeyNotFoundException
in calldelayed
PlayerEscaped is a list
right
but PlayerEscapedItems has no reason to exist
and you could make PlayerEscaped a set
skull
settingsBase.SendLabelUpdate(settingsBase.Label + " UWU", false, referenceHub => hub == referenceHub);
Btw someone knows why this doesn't work? (Im doing it after 0.5f after loading) else im going to make it on the default system
any LA logs
i tried true
too
and nothing
i set it to false
just to test
idk black magic?
or it will force to sync?
idk
why not just resend all settings
idk
i have no idea why it wouldn't work
its just trying i wanted to make it a bit easier
but i think i will make it in default
make a command for changing the label
im doing it once the player opens the submenu
so after 0.5 that the player has opened the menu
to let everything sync
yeah but what are you updating
Dropdown labe, button label
this
and nothing else
which setting
the just re-send the settings
to the label
instead of sending adding UwU to every label separately
i think i will make it default and just make that it clones the list and sets the labels for that
and then sends it to the player
yea
List<ServerSpecificSettingBase> settings = GetSettings(hub);
Send(player, settings)
Rn is like this so i can just go and do settings.Label += "UwU"
awesome waypoints
yep
๐ญ
is there any fix?
if you disable EXILED it stops if from doing that
but theres still alittle bit of distortion
XDDD
I see
is it actually exiled fucking up
so the cola becoming massive is just an exiled bug?
Real
all items have this
what i meant yeah
this reminds me... @upper vapor ............ im waiting :3
lmfao
i'm still not done with my video
what video ๐ญ
yesterday had insane labapi chat activity
btw for waypoints ill likely be changing them abit so where the bounds is specified separately, instead of using the scale as a proxy. the issue is that when the waypoint is scaled parenting can cause distortion if the waypoint wasn't scaled uniformly(this is esspecially true if the transform heirarchy introduces any skew). so in future all waypoints shouldnt be scaled if possible
๐
let's break every map editor again 
please tell me this update won't be released for like
a month

Fixing my hot
i feel like people wont change it
it's gonna be a breaking change
so people will be required to move to a size property
yeah
we will do an update on Exiled that will fix than Pickup get giant
im hoping better now than later
will probably be release today idk when
every map editor just updated and they'll be broken already ๐ญ
what's the method to get whether the person has their steam profile public (i.e. being able to see the person icon in the player list)
i guess a quick fix for would be to set the size from scale
very good question
i think it's in the auth token?
i know it's in auth somewhere
oh yeah @worthy rune you have good idea here making overide
@harsh thorn mentioned it somewhere but i couldnt find it
cedmod ping
yes
not sure how i would write that tbh
look at how CullingParent works
reuse that bounds behavior
but no need for a separate position property
and then just move from DefaultBounds to the instance's bounds
i am thinking to it but may not be good idea finally it's would require AdminToyBase::Scale to be virtual
what
we are refering to
set the size from scale
but to ensure compatibility with older schematics
you need to do that
NW's breaking it so editor plugins need to fix it
until the schematics are migrated (may never happen for some)
to add instructions to the start of a method in transpiler I just do new CodeMatcher(instructions).Insert(...) right? or is there a better way to add stuff at the start of the method?
true
now i gotta work out how to edit a value with the transpiler calling a method
is there maybe a way to set a value as a ref (i forgot if that's the way to do it...)
Its called synchashed
Its either on the serverroles instance, authmanager, or authtoken in the auth manager
Synchashed true means hidden
Dnt truecis also hidden + dnt
yeah i wanna check for both in my plugin
thanks
hmm i dont think player has anything for it
this may take a while
ldarga or ldloca to pass as reference
Or ldflda for fields
how do I define which arg with ldarga?
cant find SyncHashed anywhere in any of these
unless im blind
found it
Player::ReferenceHub.authManager.AuthenticationResponse.AuthToken.SyncHashed
You give it an index as the operand
Me when double shift
ohhhhh
how do i search within references tho?
boom
hopefully this is right...
It'll do that automatically if you press double shift
If not
"All places' instead of"solution"
Or the symbols tab
unless i fucked smth up here
But your method isn't ref
Either ldarg call starg (if returns string)
Or
Void yea
Np
Hi! Why's that happens if I want to make the custom info: CustomInfo\nPlayer.DisplayName\n**<color=#A0A0A0>RoleName</color>** this and it's not working but if I color also the CustomInfo then it works
And I checked separately with ValidateCustomInfo and everything is correct but all of them together is giving me "Provided text has rich text tag which is not allowed";
You have the color the full custom info
But I can add multiple color:
This works
player.CustomInfo = $"<color=#A0A0A0>{customInfo}</color>\n{player.DisplayName}\n<color=#A0A0A0>{roleName}</color>"
This not
player.CustomInfo = $"{customInfo}\n{player.DisplayName}\n<color=#A0A0A0>{roleName}</color>"
Because it's the same color
It has to be uniform
older shematic could not cast it to Waypoint class so if they don't they will just use the AdminToy Scale method
and not the WaypointToy.Scale method
Could it be that you have coloring or other tags in the customInfo as well?
what if you add a <NoParse> to customInfo
or whatever that tag is
yeah
player.CustomInfo = $"<noparse>{customInfo}</noparse>\n<noparse>{player.DisplayName}</noparse>\n<color=#A0A0A0>{roleName}</color>"
try the noparse on the name as well
otherwise you get the injection problem
like <size=1000>MyName</size> 
basegame actually solves this
oh
actually
you mean on custom info specifically
yeahhh..
I will check it later cuz I'm trying to fix this for 2 days straight and I need other plugins to do
that was fun
Well you can normalize the displayname
Or do noparse on displayname
player.CustomInfo = $"{customInfo}\n<noparse>{player.DisplayName}<\noparse>\n<color=#A0A0A0>{roleName}</color>"
I guess
Relay table
Check pee are
Lay Thor
https://www.youtube.com/watch?v=hCQCP-5g5bo
This video
I got a bit concerningly obsessed with birds for a few months.
Follow Sarah and The Mouth! https://linktr.ee/inkydragon
Older bat vid: https://www.youtube.com/watch?v=X4eqkaHkTAI
๐ Support this channel and join an amazing community: http://www.patreon.com/bennjordan
๐ Stalk me on social media for more frequent updates: https://linktr.e...
lets send png with birds or plugins
This reminds me of
!ipoac
In computer networking, IP over Avian Carriers (IPoAC) is a humorous but ostensibly functional proposal to carry Internet Protocol (IP) traffic by birds such as homing pigeons. IP over Avian Carriers was initially described in RFC 1149 issued by the Internet Engineering Task Force, written by David Waitzman, and released on April 1, 1990. It i...
WTF
Imagine your fucking carrier giving you a pidegon instead of internet access
Not reliable and slow
Packet loss
pidgeon loss
It's "pigeon" btw
Dunno where people get the extra letter from
i know
-# imagination
English is hard and stupid
Anyone happen to know how the player DisplayName and/or custom info is synced to clients? :3
Don't remember but you can decompile with dnspy
Syncvars
Nice xml doc
slejm is getting bullied with all this fake sync vars shit ๐ญ
bullied?
someone sends smth related to fake sync vars: "EVERYONE PING SLEJM"
Can i have the xml doc of acs 
Well he has the code
of what
no
Yes
Fun fact i dont think my fakesyncvar with sending multiple works
just get the pdb 
Is it intended that people with the Fade effect can't be pounced by 939?
maybe Im buggin
oh if you combine ghostly and fade you can't be pounced
what now
will make video to show
fade is just player model dissapearing
fading 
Nvm I think it's just a dummy thing?
When I apply the fade effect they dont become a target or smthn
like you see im hovering over them and theres no name
but it only happens sometimes
seems like if the fade effect is applied as 939 is crouching, it makes it so you can't pounce them or see their name/info
ig this is a bug, nice body spinning btw
Lol
Is there a way to get if a ragdoll was shot?
I would assume raycasts but if there is an easier way, that would be helpful
Plugins will be stuck on .NET 4.8.1 max ?
Ragdolls are client side
there is no way of you telling of player hit it
on the server
Fuck
(They do exists as server object, but do not move)
you can use mscorlib.dll from the server files
You can use higher .NET version. See
https://github.com/northwood-studios/LabAPI/issues/192
I mean i need a RabbitMQ.Client dependency but make for .NET 5 or 6 i dont remember
They do move but not accurately with client
I have attached a primitivetoy on a ragdoll for a plugin and grenade make it moved
Just make ragdoll unspawnv
Or you see easily the difference after a single grenade
Oh wait i do remind a bug of scale with it now lol
On primitive
Unity 6 was not built on a recent .NET version iirc ?
No
I like this concept. Where might I find the plugin?
I did it in private but it's very easy
Hmm
Any specific primitive, or does it matter?
You can attach an elevator if you want
lmao
Oh well
Or a teslagate
I assume just set the child of the ragdoll gameobject to the gameobject of whatever I'm using to move it?
No because unity is far behind .net
I got it the wrong way around
Im gonna pray for unity under CoreCLR 
@upper vapor Sloc keeps hiearchy of the gameobjects, right?
How do I get Ragdoll gameobject?
you can use .net standard libraries
epic
on the server at least
Time to switch back from mapforge
doors & culling parents get spawned on the root for the client
-agony noises-

I can't believe we got ForceReload but no authorization override for reloads ๐ญ
are you serious right meow

what

rip
We can force client to reload but said client will not send us a notification they want to reload despite vanilla conditions disallowing it

can the hotfix include removal of client reload checks
Uhhhh prob no

How can i check if item is firearm in ShotEvent, Reload, Unload
what
have you looked at the event arg class
something if ev.Item is ev.Firearm but this event not contains ev.Item
bybybyby
does any regex person know how to make regex pickup anything in the word? rn my Regex class is only picking up that specific piece of regex, it's not picking up stuff that may be in the same word...
wdym
wdym
wdym
ok bruh
*match*
\w+ will include the @ so it doesn't match
all the regex testers i use pickup steam@steam from (steam@steam) but not my regex class
huhh
well it seems to work fine without brackets
but when brackets are added
nvm
it doesn't match
i forgot what \w is
idk how to solve... ๐ญ
word
regex is dumb
how do you match
i dont wanna match that, as i dont wanna replace the brackets itself
MatchCollection matches = IDRegex.Matches(q);
How do I get Ragdoll gameobject?
not sure why it wouldn't match
ragdoll.GameObject
i just said all the regex testers i use said it worked
but when i put it in testing
it didnt fuckin work
bruh
๐ญ
can you give me the regex?
that's why i asked here
Doesn't seem to exist
then get it from the base
the c# experience
Not defined in BasicRagdoll either
bruh
ragdoll
is a unity object
which has gameObject
have you tried using your IDE
^\w+@(steam|discord|northwood|patreon)
Try using this
it should be fine ig
I'm a dumbass
that just makes it slower
why?
also they want to match inside the brackets
im retrying again, maybe i didnt upload the plugin properly or some dumb shit
Oh i know that by experience
alot of time
you know when you live in italy and your server is in NYC i don't think this is a solution
and no i will not use winscp
then stop existing
btw what you guys think of Dexter new season?
I watched ALL Of them
from season 1 to new seasons recent episodes
dexter is peak but the problem is they are just milking it tooo much
Payday
payday
!pd
@mild ice Here, take some $. Enjoy! (+10,000 $!)
You currently have 60,000 $.
You are currently #1,430 on the global leaderboard!
the new tool waypoint what does it mean?
elevators
Allows you to define your own bounds where player can be
and move player with it
and anything else in it
david
when I have player out of bounds do I need to place doors still or is it handled other way now?
when I try 1050 as voffset, but when I try restting it before next one with like voffset=0 before the next one it still just competly brekas the next hint when it should auto be where hints normally are
any help?
if I teleport waypoints constantly to player's will it break things like door did?
anything over 1k i believe is just not doing anything as its considered the max w v offset
Afaik
look how HSM handles this
ok I will in abit
I want a custom thing ๐
or use them as a framework
aka use the ideas from the code
Btw
You need a new line to put a new line height and stuff
I dont remember specifics
ya
probably
๐ญ
youll need to parse everything and adjust their positions based on other hints to prevent them pushing each other
I hate this but I want to be like CT/Doctor Bright's with custom
Thats the price you gotta pay for working w hints
dont recommend hsm anyway
ya its for line heights for seperate stuff
i dont recommend using voffset
paislee!!!
idk the specifics ur just gonna have to do some math
what percentage will work at bottom?
my worst enemy
also when synced velocity
doesnt need to be synced, if server can say "+10 for you" that works as well
i just wanter water and fans
I hate this alread.y
UNDEFINED VARIABLE ALREAD! CANNOT READ Y OF UNDEFINED
...
y = 5
5+y
=
10
(different in each programming language al ittle ๐ )
why is y 5
idfk
understandable have a grate y
dont give in to EVE
but I can't fix my stuff
whyt?
var hintBuilder = StringBuilderPool.Shared.Rent($"<color={roleColor ?? "white"}><size=16><align=center>");
for (int i = 0; i < (44 - hints.Count); i++)
{
hintBuilder.AppendLine("");
}
โจ works โจ
huh
I collect all of the lines I want to show FROM the bottom
and then just fill the rest with new lines
thats @true cedar not me
math gives me PTSD
you are blamed for everything
no u

guys idk what to even do.
at some point you start to enjoy pain
Sit down
Look at what you want to do
What is currently happening
Compare the two
Start breaking down the problem:
- Why is it not doing that
- What could change
- Mistakes made
- Improvements could be made
everythnig is done bad
yea this works
programming problems are not one problem
most systems work like this iirc
software problems are literally thousands problems just viewed as single
Do you look at other programs as "how the fuck this work while mine fucking falls apart the second I touch it?"
public class CustomHint : ICustomHint
{
public override string HintID { get; }
public override string Text { get; }
public CustomHint(string id, string text)
{
HintID = id;
Text = $"{text}";
}
}
``` ```using LabApi.Features.Wrappers;
using System.Collections.Generic;
using System.Text;
using LabApi.Features.Console;
namespace LabAPI_PillPlugin.HintManager;
public class HintManager
{
private readonly Dictionary<Player, Dictionary<string, ICustomHint>> _activeHints = new();
public static readonly HintManager Instance = new();
public void AddHint(Player player, ICustomHint hint)
{
Logger.Info(player.DisplayName + ": " + hint.Text);
if (!_activeHints.ContainsKey(player))
_activeHints[player] = new Dictionary<string, ICustomHint>();
_activeHints[player][hint.HintID] = hint;
UpdatePlayerHintDisplay(player);
}
public void RemoveHint(Player player, string hintID)
{
Logger.Info(player.DisplayName + ": " + hintID);
if (_activeHints.TryGetValue(player, out var hints) && hints.Remove(hintID))
{
Logger.Info(hintID + " Removed from "+player.DisplayName);
UpdatePlayerHintDisplay(player);
}
}
private void UpdatePlayerHintDisplay(Player player)
{
if (!_activeHints.TryGetValue(player, out var hints)) return;
var builder = new StringBuilder();
foreach (var hint in hints.Values)
{
builder.AppendLine(hint.Text+"\n");
}
Logger.Info(builder.ToString());
player.SendHint(builder.ToString(), 999999f); // Show "forever"
}
}``` ```namespace LabAPI_PillPlugin.HintManager;
public abstract class ICustomHint
{
public abstract string Text { get; }
public abstract string HintID { get; }
}```
my thing
hold up
first thing, why ICustomHint when it's a struct not an interface
idfk I was tired
the CustomHint can be a struct
first off lets make it better without changing that and so hints are displayed correctly
the whole code looks otherwise functionality wise correct?
eeeh
tbh u might just want to use an existing hint framework depending on how flexible u want it to be
do u want to place a hint anywhere on the screen regardless of other hints
yes
or do u just want a preset number of lines/positions
I need anywhere on screen regardless
then atp i'd just recommend using a hint framework
but I want something custom like CT ๐
ct has a line based system iirc
then
You're just gonna reinvent the wheel
doctor brights
dr brights also has a line based system
RAHH
The hint system is just limited and ass
they need to fix it
You can't do much better on your own




