#RueI

1 messages ยท Page 2 of 1

slender night
#

smh

ripe marlin
#

since you can also do it basically exclusively by reflection

slender night
#

did you just copy my whole plugin

#

you can admit it its ok

ripe marlin
#

TRUE

slender night
#

i wont be mad

ripe marlin
ancient sequoiaBOT
#
Ping Trigger

@ripe marlin - Not gonna be active on Discord. I'm meeting a @oak peak (a real one) in half an hour.

slender night
#

as long as you pay my house rent

ripe marlin
#

if you want to be really fucky you can actually reference something

#

but not cause type errors

#

if its not there

slender night
#

thats evil

#

no way

slender night
#

rule

ripe marlin
#
        private static IHintProvider GetProvider()
        {
            try
            {
                LoadRueI();
                return new RueIHintProvider();
            }
            catch (TypeLoadException)
            {
                return new VanillaHintProvider();
            }
        }

        [MethodImpl(MethodImplOptions.NoInlining)] // inlining could cause type load errors
        private static void LoadRueI() => RueIMain.EnsureInit();
    }
slender night
#

will you join VC and tell me how to do it with reflection

ripe marlin
#

i have an example of it if you want

slender night
#

send it

#

in dms so i dont lose it

ripe marlin
#
namespace ExamplePlugin
{
    /*
    This demonstrates using RueI exclusively through reflection.
    With this approach, you do not need to have a dependency on RueI.
    */
    using System.Reflection;

    using Exiled.API.Features;
    using Exiled.API.Interfaces;
    using Exiled.Events.EventArgs.Player;

    public class Config : IConfig
    {
        public bool IsEnabled { get; set; } = true;

        public bool Debug { get; set; } = false;
    }

    public class RueIManager
    {
        public delegate void ElementShower(ReferenceHub core, string content, float position, TimeSpan time);

        private const string RUEINAME = "RueI";
        private const string RUEIMAIN = "RueI.RueIMain";
        private const string ENSUREINIT = "EnsureInit";
        private const string REFLECTIONHELPERS = "RueI.Extensions.ReflectionHelpers";
        private const string GETELEMENTSHOWER = "GetElementShower";

        private readonly Action<ReferenceHub, string, float, TimeSpan>? shower;

        public RueIManager()
        {
            Assembly? assembly = Exiled.Loader.Loader.Dependencies.FirstOrDefault(x => x.GetName().Name == RUEINAME);

            if (assembly == null)
            {
                return;
            }

            MethodInfo? elementShower = assembly?.GetType(REFLECTIONHELPERS)?.GetMethod(GETELEMENTSHOWER);
            var result = elementShower?.Invoke(null, new object[] { });

            if (result is not Action<ReferenceHub, string, float, TimeSpan> elemShower)
            {
                return;
            }

            MethodInfo? init = assembly?.GetType(RUEIMAIN)?.GetMethod(ENSUREINIT);
            if (init == null)
            {
                return;
            }

            init.Invoke(null, new object[] { });
            shower = elemShower;
        }

        public void ShowHint(Player player, string content, TimeSpan span)
        {
            if (shower != null)
            {
                shower(player.ReferenceHub, content, 0, span);
            }
            else
            {
                player.ShowHint(content, (float)span.TotalSeconds);
            }
        }
    }

    public class ExamplePlugin : Plugin<Config>
    {
        public RueIManager RueIManager { get; private set; }

        public static ExamplePlugin Instance { get; } = new();

        private ExamplePlugin()
        {
        }


        public override void OnEnabled()
        {
            Exiled.Events.Handlers.Player.Spawned += OnPlayerSpawned;

            RueIManager = new();
            base.OnEnabled();
        }

        public override void OnDisabled()
        {
            RueIManager = null;
            base.OnDisabled();
        }

        private void OnPlayerSpawned(SpawnedEventArgs ev)
        {
            RueIManager.ShowHint(ev.Player, "Welcome to the server!", TimeSpan.FromSeconds(5));
        }
    }
}
slender night
#

what did i just say about dms

ripe marlin
#

oh

slender night
#

@twilit stone hey you

#

wake up

twilit stone
ancient sequoiaBOT
#
Ping Trigger

@twilit stone - Not gonna be active on Discord. I'm meeting a @oak peak (a real one) in half an hour.

fast marsh
#

@ripe marlin is there a way to show a hint to a player that will delete itself after x seconds?

ancient sequoiaBOT
#
Ping Trigger

@ripe marlin - aaa

ripe marlin
#

look in displaycoreextensions

fast marsh
#

or addtemp?

#

oh its addtemp

ripe marlin
#

gonna publish a release which fixes a few issues soon

#

@slender night btw for every rueimanager you make you access ruei through reflection and get the method

ancient sequoiaBOT
#
Ping Trigger

@ripe marlin - Not gonna be active on Discord. I'm meeting a @oak peak (a real one) in half an hour.

ripe marlin
#

you only have to do it once

#

just make shower static and have the value be a method call to MakeNew

#

actually wait no

#

you're right you have to do that fuck

#

ill make a fix for that

tame elk
#

THEY DID IT
MADMAN

twilit stone
tame elk
#

Yessir

#

ik

ripe marlin
#

hi ifany of you have like

#

complicated hints

#

i want to try and test shit

#

im trying to test out my size compensation

#

rn its (((biggestChar / 34.7 * 0.2) + 0.8) * 40.665) - 40.665

#

(((biggestChar / 34.7 * 0.4) + 0.6) * 40.665) - 40.665 seems to work better in some scenarios though

#

idk i need to test it

#

theres still a lot i have to do in regards to characters

twilit stone
#

Hey Rue could you try to test Scripted Events because it looks like it does not work

fast marsh
#

@ripe marlin is it possible to get the player that is currently having the hint?

#

using autoelement

ripe marlin
ancient sequoiaBOT
#
Ping Trigger

@ripe marlin - aaa

ripe marlin
#

1 sec

#
public static AutoElement AutoElement { get; } = new AutoElement(Roles.HumanRoles, MyElement);

// later on
foreach (Player player in Player.List)
{
    if (Roles.HumanRoles.HasFlagFast(player.Role.Base.RoleTypeId)) {
        // player has element
    }
}
#

why do you need to know who has the hint tho? im curious

fast marsh
#

i dont think that would work tho for just showing a players name

ripe marlin
ancient sequoiaBOT
#
Ping Trigger

@ripe marlin - aaa

fast marsh
#

whats that

ripe marlin
#

public static AutoElement AutoElement { get; } = new(Roles.Scps, (core) => new SetElement(500, core.Hub.name))

#

idk fi core.Hub works rn

#

i mean it works but it might not be in the current build

#

but thats what you do

fast marsh
#

it doesnt

#

๐Ÿ˜ญ

ripe marlin
#

well new build will be out

#

eventually

#

i need to figure out spacing shit

dry bane
#

this is a bug or I did something wrong?

private static List<string> ItemList = new List<string>();

private static string SbName(Player player)
{
    var sb = new StringBuilder();

    var text = player.Role.Type.ToString();

    // just to test dynamicelements
    if (player.CurrentItem is Firearm Gun)
    {
        text = Gun.Ammo.ToString();
    }

    sb.Append(text);

    return sb.ToString();
}

private static string SbItemList()
{
    var sb = new StringBuilder()
    .SetSize(65, MeasurementUnit.Percentage)
    .SetAlignment(HintBuilding.AlignStyle.Right);

    sb.Append("Items: ").AddLinebreak();

    foreach (var item in ItemList)
    {
        sb.Append(item).AddLinebreak();
    }
    return sb.ToString();
}
ripe marlin
#

so um

#

you haven't done anything wrong

#

size is a teeny bit fucked

#

and transparency

#

im working on it but

#

its very annoying

ripe marlin
#

sorry lol one of the things about how i handle multiple hints at once is that i have to have quite literally like

#

pixel perfect information about the vertical spacing

#

but size tags currently fuck up vertical spacing ever so slightly

#

in the meantime i AM working on it

#

just difficult when literally all you can do is brute force black box testing

#

((i didnt expect it to get accepted like immediately

faint panther
#

we put the dll in depency folder or plugins folder?

ripe marlin
ripe marlin
#

i havent tested it yet but

fast marsh
ripe marlin
ancient sequoiaBOT
#
Ping Trigger

@ripe marlin - aaa

ripe marlin
#

i mean in that build yea

fast marsh
ripe marlin
#

ill release a few like actual plugins for ruei soonish maybe idk

#

ik a watermark plugin is in high demand

fast marsh
ripe marlin
#

umm o

#

so

#

i made a pr for respawn timer that adds support

#

i can prob do it for spectator list

#

ik xp system uses hints but it uses its own system so

fast marsh
#

is the xpsystem compatible with ruei?

ripe marlin
#

ill prob make a plugin that forces compatibility eventually

ripe marlin
ancient sequoiaBOT
#
Ping Trigger

@ripe marlin - aaa

ripe marlin
fast marsh
#

๐Ÿ‘

ripe marlin
#

why is it disappearing so quickly wtf

#

ill worko n that

#

might be an issue with emec ughh

ripe marlin
#

check what this logs

#

when you pick up a radio ors omething

#

something that shows a hint

#

it should be a number

#

in your server console

dry bane
#

Okkk

#

give me a minute

dry bane
#

Also, I don't know if it has something do with it but I update the Dynamic Elements like this

//copy+pasted from autoelement because idk how to properly update:(
private static void ScheduleUpdate(DisplayCore core, PeriodicUpdate update)
{
    core.Scheduler.Schedule(update.time, () => ScheduleUpdate(core, update), update.token);
}
dry bane
ripe marlin
#

okay that makes sense

faint panther
crystal dirge
#

can this be used to show how many teammates still alive

faint panther
#

and yeah

ripe marlin
#

you can show anything with it

#

anything that can be displayed with hints can be displayed with this

twilit stone
#

@ripe marlin can you make more described installation

In what dependency I put it in? In Exiled or NWApi?

ripe marlin
#

any dependency folder, if you're using exiled put it in exiled

#

if you're using nwapi put it in nwapi

twilit stone
#

Oh man

#

Do you think you could if you will have time test it with Scripted events because we tested it with @fierce heart and it did not work

ripe marlin
#

did it log anything

fierce heart
#

we can test it

#

I remember it not working

#

but maybe it changed

#

also it would help us immensely with a lot of stuff

ripe marlin
#

its prob not working lol

fierce heart
#

oh well

ripe marlin
#

actually

#

where did you put

fierce heart
#

we can try

ripe marlin
#

the dll

fierce heart
#

dependencies for exiled

ripe marlin
#

okay

#

ummm

#

how were you using it?

fierce heart
#

maybe it's an issue on the thunders side

fierce heart
#

which I seen had some ruei in it

ripe marlin
#

i think what it does for se is that for every script it has a different element, so if you show a hint using one script

fierce heart
#

tho didn't know what was happening

ripe marlin
#

and then show another hint using the same script

#

it'll overwrite

fierce heart
#

what

ripe marlin
#

is that what is happenign

fierce heart
#

that's stupid

#

no wonder why it didn't work for me

#

I was using the same script

ripe marlin
#

i think it would prob require a unique action

fierce heart
#

up to thunder I guess

slender night
#

being completely honest here, I don't play SL anymore nor use Ruei on my personal testing server, so you guys will have to educate me on how it works and the best course of action for it. I have absolutely no problem supporting Ruei if I get assistance while adding it

#

especially if it makes SE more compatible w/ other plugins

#

@fierce heart @ripe marlin @twilit stone

#

that being said, if I understand Ruei's intentions, it's intended to allow multiple plugins to show their hints simultaneously with no issues. if that's correct, then I'd like my default hint actions to use Ruei if the server has it installed, so that the hints show with other plugins as expected

#

if it's not working due to my error integrating it and I'm unavailable, Andrzej is welcome to change my code per Rue's direction to make it work

#

but i need some direction here, as I said I'm not at all familiar with how the plugin works

ripe marlin
#

well

#

in ruei there's no like "hints", its just elements

#

when the display (a ruei thing that manages a player) is updated, all of the 'elements' in the display are combined together to form one hint

#

so theres no just "showing a hint" basically without helper methods

#

basically all you have to know is that with the reflection helper class

#

GetElementShower returns an Action<string, float, TimeSpan, Referencehub> (i dont remember the exact order) that you can use to display an element for one player

#

every call to GetElementShower creates a new elem ref - you can only have one element with an associated elem ref in a display at a time

#

so doing
var x = GetElementShower()
var y = GetElementShower()
x(...)
y(...)

#

will result in 2 elements on the player's display

#

so doing
var x = GetElementShower()
x(....)
// later
x(...)
will result in the element being overwritten

#

GetElemCreator just returns a Func that calls GetElementShower

#

basically if you want to show a element that doesn't overwrite anything just do

#

GetElemCreator()(string, position, TimeSpan, ReferenceHub)

#

admittedly this system is weird as shit

#

the idea is that you don't have to manually invoke the show element method every time you want to show an element

#

i'll probably redo it eventually

lament drift
#

Rue why the fuck have you made something that doesnt make any sense the more I look at it uncanny

ripe marlin
#

idk complexity is prob the biggest fault of ruei as a whole rn

ripe marlin
#

its pretty simple to me obv but

lament drift
#

ok uh

#

here can i just show you what im doin

#

and ask why it no work

ripe marlin
#

i promise the reflection system is terrible but everything else is mostly fine i think idk

#

yes

#

it may be a me issue

lament drift
#

So i either attach a display to the player and add my element then register to my dict

#

or i delete it and remove from dict

ripe marlin
#

oh if you're using a single element then you dont rlly need a display just use an elem reference

lament drift
#

a quar

#

uno second

ripe marlin
# lament drift a quar

basically ruei displaycores store a dictionary with an elem reference as the key and the element as the value

#

thats the easiest way to explain it

#

also you dont need to keep deleting / removing the display

#

you can just remove and add elements

#
  • you create 2 displays
lament drift
#

If they dont want the ui

#

why keep a display sitting around

#

im not using it for anything else in the plugin except this

ripe marlin
#

you're making display the thing with the element but then add a new display

lament drift
#

Ah wait lmfao

#

im fucking stupid

#

That would DEFINITELY help

#

i am literally blind

ripe marlin
#

lmk if it fixes it

lament drift
#

erm no it did not

ripe marlin
#

uh

#

is it not showing up

#

is there an error

#

this might be a me issue ummm

lament drift
#

no errors

#

as you could at one point see

ripe marlin
#

its not showing up?

lament drift
#

nothin

ripe marlin
#

the fuck

#

um

lament drift
#

and yes i am updating it

ripe marlin
#

i should really add a debug mode

lament drift
#

coroutine updates it on every player with a display every 1s

ripe marlin
lament drift
#

nothing

ripe marlin
#

okay this is prob a me issue lmfao

lament drift
#

uh

#

wait

#

i DONT think the text is supposed to uh

#

be fucking hallucinogenic or whatever the word is

ripe marlin
#

that happens

#

wait

#

wait

#

what version are you using

#

2.0.4?

lament drift
#

latest tag

ripe marlin
#

FCK

#

FUCK

#

okay i have time to fix it tomorrow

#

ill prob make a debug build too

lament drift
#

also maybe like

#

FIX THIS HOLY FUCKKKK

ripe marlin
#

IM SORRY

lament drift
#

its like having screen burnin LMAO

#

nah im just bein rude cause

#

silly

ripe marlin
#

its so fuckig weird

lament drift
#

so true

ripe marlin
#

i update it after like

#

a hint outside of ruei is shown

#

after like 3 seconds but i dont think that works

#

theres transparency issues and ughh

lament drift
#

yeah no

#

whatever your last hint was

#

is locked on your screen now

#

and its always faded

ripe marlin
#

what the fuck

lament drift
ripe marlin
#

okay that might be caused by me but

lament drift
#

Ive stood away from this

#

for 15 seconds

ripe marlin
#

thats also definitely a problem with hints

lament drift
#

its a 5 second hint

ripe marlin
#

dead honest

#

i didnt expect this to get accepted so quickly so um

#

its still

#

kinda buggy to be honest

lament drift
#

but like

ripe marlin
#

but im working on it

lament drift
#

is this the issue

#

how i update it

#

or do you think it really is just a skil issue

ripe marlin
#

btw this is not the cause but i recommend that if you update that frequently use the scheduler

#

it helps with the ratelimit

lament drift
#

Shut yo dork ass uppppp

ripe marlin
#

DUDE I PUT SO MUCH EFFORT INTO IT

lament drift
#

IM JOKING

ripe marlin
#

:(((

lament drift
#

CALM

#

I just

#

Idk i dont trust myself to not fuck it up and cause some sort of pileup

ripe marlin
#

use a jobtoken :333

#

okay but this is definitely a me issue and ill look into it tomorrow

#

displays worked fine for me but

#

can you show me the full content of your hint btw

#

it might be an issue with parsing

#

if parsing gets fucked up then shit breaks very easily

lament drift
#

uh quick question

#

can you newline

#

or must it be a separate elem dun dundun

#

that could literally just be my fault cause im lazy

ripe marlin
#

dw

lament drift
#

then yeah uh here

#
<size=20>TotalCleaner.Instance.Config.BroadcastConf.CleanupInfoPrefix}\\n{Server.Tps.ToString(CultureInfo.InvariantCulture)}/{Application.targetFrameRate.ToString()} <color=#8f8f8f>Ticks Per Second</color></size><size=25>\\n{LoadedItems.Count} <color=#8f8f8f><size=20>Loaded</size></color> : {UnloadedItems.Count} <color=#8f8f8f><size=20>Unloaded Items</size></color> | {RagdollQueue.Count()}/{TotalCleaner.Instance.Config.MaxRagdolls} <color=#8f8f8f><size=20>Ragdoll Queue</size></color>\\n{RemovedItemCount} <color=#8f8f8f><size=20>Items</size></color> | <color=red>Removed</color> | {RemovedRagdollCount} <color=#8f8f8f><size=17>Ragdolls</size></color></size>

its VERY ugly

ripe marlin
#

okay um

#

yeah i don't see what could cause that

#

ill check soon

#

it might be an issue with parsing that causes it to be placed so far out of the display that you cant see it

#

idk

#

ill work on it tomorrow pinky promise

ripe marlin
#

if you make the text super simple

#

does it show up fine

lament drift
#

uhhhhhh im already off and playing normal

#

heh

#

sorry

ripe marlin
#

oh well if you can get around to it later

#

it would help me a LOT

ripe marlin
lament drift
#

Sorry

#

having to write a paper last minute isnt fun

#

teacher gave us zero help or notice with it so we all are rushing to do it

ripe marlin
#

oh i see

slender night
#

RueI try to make sense challenge

ripe marlin
ancient sequoiaBOT
#
Ping Trigger

@ripe marlin - Not gonna be active on Discord. I'm meeting a @oak peak (a real one) in half an hour.

ripe marlin
#

NOT THAT COMPLICATED I SWEAR

lament drift
#

IT IS

#

Its odd trying to understand every difference

#

I could barely understand what i was doing

#

like its not hard

#

but it isnt very easy to work with at all

#

and the DisplayBase DisplayCore and Display and what is needed to display just a single line of text confuses me

#

you need a good sample project

#

like make the SCPList thing

#

and make it as simple as you can

fast marsh
#

more samples too

ripe marlin
#

okay well

#

im working on more examples but

ripe marlin
#

NOBODY READS THRM

lament drift
#

I READ THE DOCS

ripe marlin
#

OKAY WELL

lament drift
#

THEY EXPLAIN VERY LITTLE

#

and you uh

lament drift
#

the jobtoken thing

ripe marlin
#

myes

lament drift
#

like how to make a basic display and add elements

ripe marlin
#

okay thats fair

lament drift
#

or how the dynamic element is comstructed

lament drift
#

so it just seems stupid to delete a token never used once in the example

ripe marlin
#

for what example

ripe marlin
lament drift
#

The JobToken cancelling

#

You have a unassigned token

#

destroy the job that doesnt exist

#

then never assign it like you said you could

ripe marlin
#

no?

#

public static JobToken HelloToken { get; } = new();

#

anyways ill make more docs and probably simplify some things

#

i need to fix the bugs first tho

lament drift
#

So what job are you terminating??

#

Nothing

#

And you never wrote how to assign tasks to jobtokens

ripe marlin
#

it'll kill it

ripe marlin
#

um

#

i think

#

hints are broken

#

why is the duration 0 seconds

#

im ngl i think a lot of these issues arent caused by me

#

the hint system is just so shitty

lament drift
#

Skill issue

fast marsh
ripe marlin
#

they prob wont do anything

ripe marlin
#

@lament drift i tested it its the content of the hint thats breaking ruei

#

so prob a parsing issue

#

idk what would cause it tho

faint panther
#

when ruei plugin trolling

fallen basin
#

cuz

#

its not made like that

runic lark
ancient sequoiaBOT
#
Ping Trigger

@runic lark - Uwu ;3

runic lark
merry lake
#

@ripe marlin how can I align an element? SetElement takes pos argument, but it's only vertical position. Having <align=right> in a text doesn't change anything

ripe marlin
#

huh wha

#

oh you need quotes i thijk maybe

#

try <align="right">

#

it migjt be broken

merry lake
#

will try

ripe marlin
merry lake
#

'<align=left><size=30><color=%ACTIONCOLOR%>[%ACTIONTYPE%/%DISPLAYNICKNAME%]: %ACTION%</color></size>'

ripe marlin
#

um

#

thats weird

#

wait

#

FUCK

#

I KNOW

#

GODDAMNIT

#

give me a second

lament drift
#

Did you fuck up parsing or smth

ripe marlin
#

well

#

kit inserts a tiny period

#

but that'll fuck iwth align

#

and yes i have to insert the period otherwise everything breaks

lament drift
#

pov tf2 coconut

ripe marlin
#

its to do with weird size and line height shit

#

its complicated and hard to explain and i think im the only person in the world who cares about it

#

but if i dont do it then line height becomes weird

#

i spent hours figuring out how to predict it only to raelize that i could fix it doing this sO

ripe marlin
#

<line-height=0>\n<line-height>

#

put that before

lament drift
#

why not just

#

add that to the thing

#

so that nobody else has the issue

ripe marlin
#

well i am

#

but for now

lament drift
#

smh do it faster

ripe marlin
#

so that

#

do that

#

im playing with haskell

ripe marlin
lament drift
#

Rue im a fucking idiot

#

apart from a bit too much of a newline

#

it works now

#

That being said

#

Alpha locking is broken

#

stuff like default hints causes the alpha to go to like 0.1

#

and now default hints just

#

dont work

#

at all

#

and the hint is just stuck to my screen with this alpha

#
  • after it destroys the display
#

the hint remains like this

ripe marlin
lament drift
#

for the current font size

ripe marlin
#

huh wha

lament drift
#

the newline

#

being too beeg

ripe marlin
#

wait so

#

what do you mean

#

is the line height too big or

#

is there a weird offset

lament drift
#

line height for newline stuff looks off

ripe marlin
#

oh thats

lament drift
#

but if i just make my newline have lineheight equal to the font size it fixes

#

so idc much

ripe marlin
#

at least the newest release

lament drift
#

it doesnt tho

#

2.0.5

ripe marlin
#

weird

#

i do <line-height=40.665>

lament drift
#

yeah thats fixed height

#

doesnt change if you scale text

ripe marlin
#

oh yea

lament drift
#

thats why lol

ripe marlin
lament drift
#

i dont blame you

ripe marlin
#

how tmp determines the line height is very very very very very weird

lament drift
#

wouldnt be fun

#

I hate parsing

#

atleast manual parsing

ripe marlin
#

((1 - 0.5) * -32.2) + 40.665 + 40.665

lament drift
ripe marlin
#

i figured out the formula but like

#

the problem is that it wouldve affected other hints

lament drift
#

just leave it

#

its more of a me issue

ripe marlin
lament drift
#

also for context the issue

#

"$"

#

or maybe

ripe marlin
#

wha

lament drift
#

\\n

ripe marlin
#

did having $ break it

lament drift
#

cause of how i pasted my text

ripe marlin
#

that shouldnt break it though

lament drift
#

then i think its the \\n

ripe marlin
#

its prob \n

lament drift
#

lol

ripe marlin
#

i have special logic to detect escaped \n

lament drift
#

i think it just doesnt like that

ripe marlin
#

but it might of broken

#

thats actually incredibly likely

lament drift
#

it would make sense too

ripe marlin
#

wouldve errored i think but

#

ill take a look

#

im not exactly proud

lament drift
#

also i feel like my updates are VERY behind

ripe marlin
lament drift
#

I FUCKIADNAWD

#

RUE KIL LME

ripe marlin
#

what

lament drift
#

I HATE MY LIFEEEEEEEEEEAAAAAAAAAAAAAA

#

Im being the stupidest ive been in years

#

My timing was on 6f not .6f

#

and my shrimp ass posture

ripe marlin
#

oh

lament drift
#

is keeping me from seeing that

ripe marlin
#

i think

#

that would probably cause it to be off

lament drift
#

ya think

#

WTF

#

And somehow

#

the normal hints work??

ripe marlin
#

huh wha

#

you might be updating so frequently that it

lament drift
#

nevermind

#

it was temporary

ripe marlin
#

i dont know

lament drift
#

shame

ripe marlin
#

i figured out that

#

what is happening is that after a hint is shown is that ruei does a thing where it looks at the duration of the hint

#

and then waits for that duration or 3 seconds (whichever is smaller)

#

and then updates the display

lament drift
#

Wait

ripe marlin
#

but the duration is always 0????

#

so it was IMMEDIATELY updating

lament drift
#

Question

ripe marlin
#

yes!

lament drift
#

It isnt possible to grab stuff like that and add it to its own display right

#

atleast the stupid pickup ones

ripe marlin
#

ummmmm

#

well i mean the problem is that its localized

lament drift
#

but like server hints

#

basic plugin hints

#

are those accounted for in any way or just same old

ripe marlin
#

oh like external hints?

lament drift
#

ye

ripe marlin
#

um not yet

#

eventually they will be

lament drift
#

I mean

ripe marlin
#

through a special addon plugin

lament drift
#

it shouldnt be that hard

#

that being said it works fine otherwise and ill convert my other plugins to use this once the duration thing gets fixed

ripe marlin
#

can you check rq if adding \\n breaks it

#

bc i wanna isolate it

lament drift
#

uhh

#

no

#

I really dont know

#

I think it was the $""

#

it must not like the functions being written in it

ripe marlin
#

wacky

#

i do like that bc i rely on like

#

barely any base game things

#

i dont have to update it no matter what happens

#

to the game

ripe marlin
#

the whole

#

thing

lament drift
#

No :3

#

nah i think i get it but it still has issues and isnt welcoming

ripe marlin
#

true but

#

idk i didnt rlly just want to make like

#

a thing that can combine multiple hints

#

i wanted a whole ui library

#

that undoubtedly has introduced a lot of new complexity

#

and maybe in hindsight was not the best idea but

ripe marlin
#

can you show me the

#

updateevery

#

oh

#

no you're talking about the loading bar

#

if you print something to the console

#

howoften does its how up

#

it might be a scheduling issue

#

okay

#

well

ripe marlin
#

no

#

how often does it print to the console

#

put a log info in this

#

i want to see if it is your loop that is doing it every 3 seconds

#

ill take a look soon

#

what version are you using btw

#

okay

lament drift
#

Is there a way to make a dynamic element get text based on the player it is attached to

#

or will i need to make each player their own

ripe marlin
#

sowwy :(

lament drift
#

RAAAAAAAAAAAAAAAAAAAAH

ripe marlin
#

i mean what you can do is abuse closures

#

you can do like

#

with an autoelement

lament drift
#

with a what

ripe marlin
#

(hub) => new DynamicElement(GetText(hub))

#

or something like that

#

and then GetText returns a Func<string>

#

so it looks something like

#

public void GetText(ReferenceHub hub) {
return () => "hello, " + hub.name
}

#

i'll change it SOON

#

next update

lament drift
#

yeah

#

please make it pass in the ref hub

ripe marlin
#

SOON

fast marsh
#

Does ruei support queue system

ripe marlin
ancient sequoiaBOT
#
Ping Trigger

@ripe marlin - aaa

ripe marlin
#

which is even better

sour otter
fallen basin
ripe marlin
#

RueI

#

i can't reproduce this

#

ill check in a bit

#

but my unit tests have worked fine

#

idek

lament drift
#

Ive decided im gonna use ruei for secretower

ripe marlin
#

awesom

#

i still need to add support for more characters fml

lament drift
#

NOW IF ONLY THE IMAGE WASNT SQUISHED

#

I have to like double the fucking image lines

#

ughhh

ripe marlin
lament drift
#

its just richtext/textmeshpro being annoying

ripe marlin
#

oh

lament drift
#

lmao

ripe marlin
#

A Lot

lament drift
#

i can tell

ripe marlin
#

this shit has become my religion i literally memorized the default line heigjt

ripe marlin
#

if you'd like you can try using the scale tag

lament drift
#

I hate scale

ripe marlin
#

it's completely undocumented lmfao

lament drift
#

it sucks

#

so broken

ripe marlin
#

is it?

lament drift
#

Yes

#

it is abnormal

ripe marlin
#

i thought it just

#

stretched out

#

idk i have support for it in ruei's parser but its very basic so

#

god i also have to do unicode shit ughhh

#

i think the one thing i will literally never support fully is voffsets

#

right now ruei just converts them to line heights followed by a linebreak

#

which is far from how they actually work

lament drift
#

uhhh

#

wait a minute

#

is ZIndex backwards

#

I thought higher meant on top

#

ok nevermind

#

it just does nothing

ripe marlin
lament drift
#

nothing

#

its based on what you add first

#

currently

#

what

#

ok now it just doesnt work at all

ripe marlin
#

it might be backwards but

lament drift
#

I tried both ways

#

no matter what

#

it still doesnt work

#

and the red 0 im trying to find a circle ascii that works

#

but that black bar behind the scp logo should be on top regardless

#

and theres white text that should be on top but always shows on bottom

ripe marlin
#

wait

#

you're right

#

FUCK LOL

lament drift
#

And even when i add it in a different order it does nothing

ripe marlin
#

yea it's completely broken im gonna be honedt

#

thats a me issue

mortal torrent
ripe marlin
#

idk ill take a look Soon

lament drift
#

skull emoji

#

anyways im working on SecretTower UI and i mean this def really helps lol

#

Im also working on a system to possibly get your profile picture on steam and use that as an icon in the UI

lament drift
#

dont think it should be

#

and ill disable for DNT

ripe marlin
#

what

#

i hope you know i dont even like men

fast marsh
#

is there a way to show pictures in Hints like Gato did?

lament drift
#

its very annoying

#

ye

ripe marlin
#

i need someone to test a build for me

fallen basin
#

@fast marsh

ancient sequoiaBOT
#
Ping Trigger

@fallen basin - aaa

fallen basin
#

monkey man has no life

ripe marlin
#

wait

#

@lament drift you said zindex didnt work

#

right

lament drift
#

yeah

ripe marlin
#

i thoguht i did osmething wrong

#

but are you sure it isnt backwards

lament drift
#

Ive tried both ways

#

but this text is ALWAYS behind it

ripe marlin
#

um

#

ummm

#

im confused bc

ripe marlin
#

it seems like it'd work

lament drift
ripe marlin
#

um

#

well

lament drift
#

i dont get whats wrong

#

i just gave up for now

ripe marlin
#

and you're sure enabled features is called?

lament drift
#

Yes

#

It literally wouldnt show this or

#

apply the ui

#

if i didnt

ripe marlin
#

ummmmmmmm

#

well fuck

#

bc i do this

lament drift
#

also i have no clue why but it refuses to fucking get teh profile picture to show

#

but it clearly converts

ripe marlin
# lament drift

could you try doing

public static SetElement SecureTowerText = new SetElement(75, "...") {
  ZIndex = 10
}
lament drift
#

Written out as a file this is correct

ripe marlin
#

well you're doing cspace=0

#

i think

#

wait no theres no mspace

#

do you see like

#

a white spot or something

lament drift
#

You gotta do cspace=0

#

and i undo it after the image

ripe marlin
#

everything

lament drift
#

it doesnt show period

ripe marlin
#

okay but it doesnt break everything?

lament drift
#

and this didnt work

lament drift
ripe marlin
#

weird

lament drift
#

i do the exact same thing

#

for the scp logo

#

that works just fine

ripe marlin
#

secure tower

lament drift
#

no its

sec
                  tower
ripe marlin
#

okay well is that the secure tower text

#

like the hint

lament drift
#

yes

ripe marlin
#

okay

lament drift
ripe marlin
#

i think ruei prob struggles with the

#

giant scp logo

lament drift
#

might be newlines?

ripe marlin
#

no its prob the margin

lament drift
#

ah

ripe marlin
#

unless

#

you have newlines

#

i mean

#

what does it look like

lament drift
#

it was like this premargin

#

AHAHAH lmao

#

i got the profile picture to load

ripe marlin
#

huhwha

#

how

#

by disabling other things?

ripe marlin
#

are you relying on overflows

#

bc im not sure whether or not that is in ruei's like

#

character list

#

the block character

fallen basin
#

If you convert it to text, yes

lament drift
ancient sequoiaBOT
#
Ping Trigger

@final salmon - Uwu ;3

lament drift
ripe marlin
#

like

#

not \n

lament drift
#

nope

#

its all \n

ripe marlin
#

okay

lament drift
#

margin is used to offset from the side

ripe marlin
#

i think its prob a size issue

ripe marlin
#

line indent

#

nvm use indent

#

anyways its prob an issue with the size tag

#

since your things are so close the bottom

#

try this

#

its a debug build so it'll prob spam your logs a little but

lament drift
#

Rue i think im going to jump off a cliff

ripe marlin
#

what

lament drift
#

I wasnt seeing yellow when i started my LocalAdmin

#

iykyk

#

but it fixed align

#

pfp didnt load

#

Neither one worked

#

both directions of zindex

ripe marlin
#

damn

lament drift
#

and pfp doesnt load

ripe marlin
#

um

#

fuck

#

what happens if you tinker with the positions

#

like bring everything up more

lament drift
#

nothing

#

Ok uh

#

i think it just

#

cant update for some reason

#

I removed my first update

#

and now only update once i add the async profile picture

#

and it now shows nothing

#

is there a character limit or smth

#

that might be it

#

removing the SCP logo fixed it

#

except the text is still not Z-ing properly

ripe marlin
#

yea

#

theres a byte limit

lament drift
ripe marlin
#

eventually

#

ruei will be able to optimize and massively decrease the size of like

#

text

ripe marlin
# lament drift

actually it wouldnt eb that hard like i could completely get rid of all </color> tags

lament drift
#

wait

#

you dont even need them do you

ripe marlin
#

kind of

#

color tags can be nested iirc

#

so if you do

#

<color=red><color=blue>hello world!</color>bye world!</color>

#

bye world would be in red

#

which presents issues in relation to other elements

#

its pretty simple to get around it tho

#

store a counter of how many nested colors there are when parsjng an element, if it is 0 and you encounter a </color> then replace it with <color=#FFFFFF>

lament drift
#

i scrapped the whole logo thing

#

instead going simple

sour otter
#

Oooo

lament drift
#

too bad cause its only going to be used on SecureTower

#

Its a long story

#

Its just

#

when you join

#

if you have DNT on

#

it instead tells you youre a guest

#

since i cant store data for you

#

and thus cant store your currency or stats

lament drift
#

very cool thank u rue

lament drift
#

skull emoji

#

ruei is just something you HAVE to start with

#

if you dont its a pain

#

if you do its not bad

#

the ui stuff im doing would take a whole week to a month of figuring out

#

thats a you problem

#

yes

sour otter
#

yes

#

literally skill issue

#

bro is litterally going off

#

๐Ÿ’€

lament drift
#

Didnt you literally harrass Rue enoigh today man? No need to keep going further

#

Hey man literally take a minute

#

breathe

#

I have so little time

#

and yet i still keep trying

#

Just take it slow

#

development takes time eithe rway

sour otter
#

no way..

lament drift
#

starting to think someones a bit angry that everything isnt going their way

#

Homie you can get the help you need with this

#

or you can get out

#

ive offered you both solutions

#

development is a long process and you cant always get where you want to be

#

Hey if you dont want the help from me I think a therapist could be of more use here

sour otter
#

Bro I was literally joking

#

Everyone's got a skill issue, even me, tbh I don't even know how to any of this shit

lament drift
#

Just show me the code

#

Its hard to understand in words

#

ElemSetTemp

#

Why do you call that so many times

#

i thought thats a one call

#

My point is you seem to somehow ratelimit it

#

the performance is fine but something ratelimits it to keep it from updating

#

And i know the performance is fine as it works perfectly with totalcleaner

#

maybe just try not using temp

#

I think it genuinely just doesnt like the temps or is updating too often somehow but i could be very wrong who knows

ripe marlin
#

cool

#

im a single person working on this huge project

#

i have put many many hours into it

#

its far from perfect and i still need to improve a lot of it

#

i never claimed that it was perfectly functional

#

plus you've been super weird to me

#

one of your accs had the status "wanna to fuck rue"

#

just fucking stop it

#

stop making your fucking weird unwarranted sexual advances

#

unbelievably disgusting

#

i greatly appreciate feedback and bug reports but not when you simultaneously sexualize me and yell about how shitty the thing im making is

#

im a fucking human being dude

#

so fuck off from my project

lament drift
#

Can we get a mod

#

this is 100% harrassment

ripe marlin
#

so if you're updating it super frequently

lament drift
#

is there like

#

a variable to get when the last update was

#

maybe add that so devs can account for it

#

or if there is mb

ripe marlin
#

um no

#

technically i could check the ratelimit

#

there is an event for when the display is updated though

lament drift
#

Also can you update multiple displays at once

#

or would ratelimit fuck your ass

ripe marlin
#

oh yeah that was something planned

#

i mean you can just do

#

foreach update

#

the ratelimit applies per client

lament drift
#

client as in user or display

#

Cause if i have 5 displays on a used

#

I want to update them all

#

what do

#

(hypothetical)

ripe marlin
#

okay so

#

if you update the displaycore

#

all displays get updated

#

and updating a display is the same thing as updating the displaycore

lament drift
#

ah

#

so it does it either way

#

or do you gotta do displaycore

ripe marlin
#

either way works

lament drift
#

alr

ripe marlin
#

display.update is just there for convenience

#

its kinda a relic of ruei v1

ripe marlin
#

which is why i like

#

push it so much

#

if you know you're going to be updating frequently and consistently then i can't recommend it enough

misty marsh
#

<@&741817902826520657> Im going to ping you because this seems extremely (and arguably excessively) rude
#1168307795817414746 message
#1168307795817414746 message
#1168307795817414746 message
#1168307795817414746 message

blissful bone
#

Time to re create dota ui with emojis trolling

misty marsh
#

Have fun

ancient sequoiaBOT
#
User banned

992507420553248768 has been banned for: toxicity

slender night
#

womp

#

@misty marsh thx maam

ancient sequoiaBOT
#
Ping Trigger

@slender night - I am not your personal tech support. If you can't figure it out while the solution has been provided, thens that a you issue

blissful bone
slender night
#

@sour otter @ripe marlin sorry I was offline and didn't get to it faster, hope u guys are ok pepecry_TJN

misty marsh
ancient sequoiaBOT
#
Ping Trigger

@misty marsh - Not gonna be active on Discord. I'm meeting a @oak peak (a real one) in half an hour.

slender night
#

Blatant harassment, especially sexual harassment is never ok in this server, please don't hesitate to ping discord staff faster for stuff like that

misty marsh
#

I just noticed it

#

but it is very true, it was kinda omega cringe that guy was doin

ripe marlin
#

@lament drift question when you display multiple elements at once

#

are you getting subtle like

#

offsets

lament drift
#

rarely

#

very rarely

#

depends on the element/tags

ripe marlin
#

even with the debug build i gave you?

lament drift
#

yes

#

i didnt even recognize it was a debug

ripe marlin
#

bc i don't want any offsets whatsoever

#

i think its something to do with size tags

#

thatd help me immensely :3

#

i thought the debug build would fix it but

#

idk basically just send me a report anytime you get weird offsets or any issues basically