01:38 < bridge> ok i found whats wrong with tune in demos 01:38 < bridge> basically same thing as what my cleanup server tune pr did 01:38 < bridge> will cook up pr 01:45 < bridge> is there a non hacky way of aligning a broadcast to a specific position? 01:46 < bridge> lets just say... 01:46 < bridge> 01:46 < bridge> ``` 01:46 < bridge> str_format(aBuf, sizeof(aBuf), "%s: %d\n%s: %d ", GameServer()->Server()->ClientName(m_Player1ID), m_Score1, GameServer()->Server()->ClientName(m_Player2ID), m_Score2); 01:46 < bridge> ``` 01:46 < bridge> 01:46 < bridge> isnt really what i want to do for score broadcasts. 01:46 < bridge> oh it.. sanitized my dots out 01:46 < bridge> lets just say... 01:46 < bridge> 01:46 < bridge> ```cpp 01:46 < bridge> str_format(aBuf, sizeof(aBuf), "%s: %d\n%s: %d ", GameServer()->Server()->ClientName(m_Player1ID), m_Score1, GameServer()->Server()->ClientName(m_Player2ID), m_Score2); 01:46 < bridge> ``` 01:46 < bridge> 01:46 < bridge> isnt really what i want to do for score broadcasts. 01:46 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1352443295707562086/image.png?ex=67de0878&is=67dcb6f8&hm=8ee965494f35c1c16c2e067115eb9ac139c566a9c9645936e4c7aa873485bf9d& 01:47 < bridge> this isnt really how i'd like to do this :kek: 01:53 < bridge> clang-format is the decider 01:53 < bridge> o i misread 01:53 < bridge> idk 01:53 < bridge> im happy that clang-format doesnt touch my string in that case. :kek: 01:54 < bridge> isnt broadcast just printing the message text on client side, nothing else? 01:54 < bridge> if so cant rly format it from server 01:54 < bridge> if thats what youre asking 01:54 < bridge> not at all, its just that i need to spam dots to align them to the left that way 01:54 < bridge> which is.. horrible 01:56 < furo> There is nothing built in. You could try to calculate the amount of dots needed, but it's kinda problematic as it's not a monospace font. 01:57 < bridge> :/ 01:58 < bridge> spamming space is the way to go then, unlucky 02:08 < bridge> Obviously it should be changed to render html on needed 02:09 < bridge> being able to send formatted broadcasts serverside sounds both cool and horrible :kek: 02:09 < bridge> obviously :troll: 02:09 < bridge> i should PR that.. 02:09 < bridge> 02:09 < bridge> imagine someone being naughty on your server and you just make their entire screen black 02:39 < bridge> how do i check position of recording player in demo? 02:40 < bridge> e.g here it sends tuning of the current player to the demo 02:40 < bridge> so i want to add check `Client()->State() == IClient::STATE_DEMOPLAYBACK` but how do i get the position of the player in demo? 02:42 < bridge> each snapshot should have a local tee integer which will tell you who the "recording player" is 02:42 < bridge> m_Snap.m_LocalClientId 02:42 < bridge> m_Snap.m_LocalClientId? 02:43 < bridge> Sounds good 02:44 < bridge> and how do i properly get position with that? 02:45 < bridge> You also have m\_aClients in the snap that you can index 02:46 < bridge> They you can get the position from there but you can also get the predicted position if you need that instead 02:46 < bridge> Maybe look at the players.cpp how it decides where to render tees 02:47 < bridge> There you can get the position from there but you can also get the predicted position if you need that instead 02:47 < bridge> you can get the position from there but you can also get the predicted position if you need that instead 02:48 < bridge> idk if im using wrong postion and it updates tune tick too late or what 02:48 < bridge> bcs of the prev predicted etc 02:48 < bridge> Ye classic issue 02:49 < bridge> I used to draw a square last time to make sure it properly aligns with my tee :D 02:53 < bridge> ill just test every combination of prev pos, prevprev pos, pred pos until it works 💀 03:02 < bridge> if you're in a demo there is no pred pos 03:02 < bridge> prediction doesn't happen during demos 03:06 < bridge> well idk, ill just skip that 03:06 < bridge> seems to work without it 03:13 < bridge> you should use the render position that gets interpolated between snapshots 03:13 < bridge> you can see it in players.cpp 03:29 < bridge> Ty, will check tmr 04:59 < bridge> looked into this again and found this thingyyy... https://github.com/Homebrew/brew/issues/16137 05:01 < bridge> using the findcurl provided by cmake is good tho, where they first did a find_package(curl QUIET NO_MODULE) before using pkg_check_modules 05:01 < bridge> i don't know if we should change ours to that 07:39 < bridge> hello all 07:40 < bridge> morning all and others 08:01 < bridge> gumo 08:12 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1352540411763232788/image-10-1.png?ex=67de62eb&is=67dd116b&hm=552673683bc989d7749b0a0b2f041ad14b5c1b209f365fa7964568aa30ea4270& 08:22 < bridge> What's the `const void *pId` in `CListboxItem DoNextItem()`? Should I just give it a int value that differs from other items? 09:46 < bridge> @louis.place I think this is actually neat :owo: 09:46 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1352564087711600770/screenshot_2025-03-21_09-46-05.png?ex=67de78f7&is=67dd2777&hm=266df81273ae9c2dd3d24df660576b670fa75c1502bf3883f0f4118da0fa4ca3& 09:47 < bridge> also, this was my first try xD 09:47 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1352564180389199934/screenshot_2025-03-21_09-44-56.png?ex=67de790e&is=67dd278e&hm=23e1100be8caac0e8fe32360213655c972fc8fd463b1a4cdd1122b54a6a663e0& 09:47 < bridge> oh this is actually cool as hell 09:50 < bridge> also my fps went up, because the doors don't need to render a different sprite every tick <.< because rendering a normal quad is so much cheaper 09:50 < bridge> tbh id make the boxes just a tad bit smaller 09:50 < bridge> but other than that i actually kinda like this 09:52 < bridge> @hectavoxel like this? I think you are right, this is even better 09:52 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1352565470758305832/screenshot_2025-03-21_09-51-51.png?ex=67de7a41&is=67dd28c1&hm=6e890161c41fe2b67613f657218c3ebf236b9a734b8c56160d036168104b2d2a& 09:52 < bridge> :pepeW: 09:52 < bridge> yes, perfect! 09:52 < bridge> How cooked is this engine 09:53 < bridge> is say about meduim rare 09:53 < bridge> beautiful. As long as you don't change any physics 09:53 < bridge> *i'd 09:53 < bridge> game is 15 years old, it was very well done for it's time 09:53 < bridge> no ^.^ just optics 09:54 < bridge> Since when are we doing optics in ddnet?? xdd 09:54 < bridge> you mean visuals? 09:54 < bridge> lasers refract, reflect, absorb, so this is optics :justatest: 09:54 < bridge> the tee is slightly wider than it is tall. this is for optical adjustment 09:54 < bridge> I don't think lasers absorb... 09:55 < bridge> it absorms impact 09:55 < bridge> semantics, lasers get absorbed 09:56 < bridge> speaking of impact, guys hop on brick impact 09:56 < bridge> oh wait you don't know what that is ; - ; 09:56 < bridge> oh wait you don't know what that is sorry 09:58 < bridge> hop on genshin impact 10:12 < bridge> 4 years in and I'm almost caught up! I've almost won the game! 10:13 < bridge> The laser rendered in the settings i not a door ... 10:13 < bridge> why 10:19 < bridge> because the settings reimplemented laser rendering 🙂 beatiful, good that I refactored exactly this 10:34 < bridge> only 120K more to go! 10:34 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1352576036122136586/image.png?ex=67de8418&is=67dd3298&hm=ad6d9d8c173300a7c7ffe450e8f60a331f707ed918502ac7f2f1e00892bd37ff& 10:38 < bridge> 10:38 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1352577062451544124/image.png?ex=67de850d&is=67dd338d&hm=5bb7c8e57fdf045ed6c24b076f1c78071af321e35172182154003448d5803831& 10:38 < bridge> What is that? 10:40 < bridge> its a way for me to look through my nix/store and see what provides what and what exists where 10:40 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1352577568724750377/image.png?ex=67de8586&is=67dd3406&hm=778ac0fcfe848ac0021b2882430c3f80ccb07e68e7016569dfade6ea5a8c4640& 10:40 < bridge> my /nix/store is basically a mix of my /usr/bin and /usr/include 10:40 < bridge> 10:40 < bridge> so that is pretty neat to find certain things 10:41 < bridge> time to nix collect garbage 10:42 < bridge> 100th PR :o 10:43 < bridge> ._. 10:43 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1352578372135419904/image.png?ex=67de8645&is=67dd34c5&hm=6a215b173dc34f2fc22c991aeba00815ccee0309b4a84693520ab34cf2110b08& 10:46 < bridge> 😮 I'm catching up 10:52 < bridge> "refactor" `+35 −67` ... 10:53 < bridge> only 99 PRs to go 🥳 12:40 < bridge> @kebscs I have a question regarding #9057, did you forget to add the lasers doors & stuff or is this open PR yourself thing? 12:40 < bridge> https://github.com/ddnet/ddnet/pull/9057 13:04 < bridge> If you know how to render them you can do it 13:05 < bridge> But it's probably gonna not be that great with lasers bcs they can spin etc 13:05 < bridge> Unless can code it as well without problems 13:05 < bridge> I don't know about spinning lasers, but doors should be easy 13:07 < bridge> You could add them i guess 13:14 < bridge> . 14:46 < bridge> ive checked these and not working: 14:46 < bridge> 14:46 < bridge> ```mix(vec2(m_Snap.m_pLocalPrevCharacter->m_X, m_Snap.m_pLocalPrevCharacter->m_Y), vec2(m_Snap.m_pLocalCharacter->m_X, m_Snap.m_pLocalCharacter->m_Y), Client()->IntraGameTick(Conn)); // 3 ticks behind 14:46 < bridge> //m_aClients[m_Snap.m_LocalClientId].m_RenderPos; // 3 ticks behind 14:46 < bridge> //vec2(m_Snap.m_pLocalCharacter->m_X, m_Snap.m_pLocalCharacter->m_Y); // 2 ticks behind``` 15:04 < bridge> yo, any idea where tune zones/server commands are loaded from the mapfile? 15:05 < bridge> yo, any idea where server commands are loaded from the mapfile? 15:05 < bridge> void CGameClient::LoadMapSettings() 15:06 < bridge> thx 15:19 < bridge> 50$ gift https://steanmecomrmunity.com/104394105 15:19 < bridge> @Discord Mod 15:27 < bridge> ive checked these and not working:, but doesnt matter i guess, in demos it shouldnt rely on local player being present 15:27 < bridge> 15:27 < bridge> ```mix(vec2(m_Snap.m_pLocalPrevCharacter->m_X, m_Snap.m_pLocalPrevCharacter->m_Y), vec2(m_Snap.m_pLocalCharacter->m_X, m_Snap.m_pLocalCharacter->m_Y), Client()->IntraGameTick(Conn)); // 3 ticks behind 15:27 < bridge> //m_aClients[m_Snap.m_LocalClientId].m_RenderPos; // 3 ticks behind 15:27 < bridge> //vec2(m_Snap.m_pLocalCharacter->m_X, m_Snap.m_pLocalCharacter->m_Y); // 2 ticks behind``` 15:34 < bridge> i could combine any command with a semicolon right? 15:34 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1352651466350923776/image.png?ex=67deca58&is=67dd78d8&hm=3ad8b4bfc7cf8fcea07837f7d900999be982dc93eb2b56036b7a528064a387df& 15:38 < bridge> probably not here, not sure 15:38 < bridge> i think these arent parsed but sent as whole command, so semicolon wont work here 15:46 < bridge> I had a ban for 1 hour, it passed but it still pops up that I am banned if someone knows how to solve the problem please help 15:48 < bridge> will this change physics 15:49 < bridge> what? 15:50 < bridge> this is the developers channel 15:50 < bridge> if you're asking for a ban appeal go to #✉-create-a-ticket 15:50 < bridge> if not then just go to #general 15:50 < bridge> oh, thanks 15:55 < bridge> are physics constant in the first place? 🤔 15:56 < bridge> idk but i wonder if anything will happen if we make them const 16:04 < bridge> what? 16:05 < bridge> stop talking about changing physics every day 😭 16:05 < bridge> send controllable jump height plz 16:06 < bridge> what 16:07 < bridge> `ground_jump_impulse 13.2` 16:07 < bridge> `air_jump_impulse 12.0` 16:09 < bridge> he means like, the longer you hold space bar the higher you go 16:09 < bridge> i think 16:09 < bridge> oh 16:09 < bridge> that breaks like 50 maps xd 16:10 < bridge> i don't like that feature xd 16:10 < bridge> also in other games 16:12 < bridge> To me it's a basic feature that should be in basically all platformers and it's weird if it's not there 16:12 < bridge> DDRace gets a pass because it's not originally a serious platformer 16:12 < bridge> i really dislike it 16:12 < bridge> I was talking about the physics of the universe, ofc I will change them! 16:13 < bridge> because it doesn't make physical sense? 16:13 < bridge> feels weird? 16:13 < bridge> okay thats fine idc if you change those 16:13 < bridge> yes 16:13 < bridge> i would need to press even more 16:13 < bridge> and i dont like that 16:13 < bridge> can you make e = mc³ to see what happens 16:14 < bridge> No, this would cause immediate death to the universe 16:14 < bridge> No, this would cause immediate death to the universe (as we know it) 16:14 < bridge> lol I hold jump down for a while even in games where it does nothing 16:14 < bridge> because it's basic instinct for me 16:15 < bridge> more like you can finally low hop 16:17 < bridge> to me wasting jump height is uncomfortable, it feels bad falling down a long distance and having to wait to land 16:35 < bridge> How does the ScrollRegions work? Will the .Begin() edit it so that can infinitely HSplit that and the scrollregion will calculate automatically? 16:35 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1352666921689944206/Screenshot_2025-03-21-23-32-28-751_com.android.chrome.jpg?ex=67ded8bd&is=67dd873d&hm=11f39eff306858c78f5e642375f06a9acf073ee886c494a1fa5219b1f7b294a7& 16:42 < bridge> It's quite simple actually, you keep hsplitting and the elements really truly do get out of the screen. The trick is that `Begin` enables graphics clipping, which means things outside the clipping rectangle don't get rendered 16:44 < bridge> Ok, thanks❤️ 16:44 < bridge> I'd think it's not called `hsplit` though, there is probably a function on cscrollregion that adds a new rect below 16:49 < bridge> Yeah it should be .AddRect 16:49 < bridge> Hsplit for cutting the CUIRect 17:00 < bridge> You can comment out the clip enable and clip disable, if you want to see what it actually looks like 17:24 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1352679329204670564/image.png?ex=67dee44b&is=67dd92cb&hm=3e92de344f16384ce01ab7165461c6838d7dbb69be918ec0dfc83f8ea61e7fb2& 17:24 < bridge> why am i so bad at coding 17:25 < bridge> ```cpp 17:25 < bridge> 2025-03-21 16:22:18 E http: https://ftapi.pythonanywhere.com/translate?dl=en&text=hola%20mis%20amigothola mis amigotola mis amigotla mis amigota mis amigot%20mis amigotis amigots amigot%20amigotmigotigotgotott failed. libcurl error (3): URL rejected: Malformed input to a URL function 17:25 < bridge> ``` 17:25 < bridge> im guesing.. its not null termianted but i have no clue why 17:25 < bridge> ```cpp 17:25 < bridge> static void UrlEncode(const char *pText, char *pOut, size_t Length) 17:25 < bridge> { 17:25 < bridge> if(Length == 0) 17:25 < bridge> return; 17:25 < bridge> size_t OutPos = 0; 17:25 < bridge> for (const char *p = pText; *p && OutPos < Length - 1; ++p) 17:25 < bridge> { 17:25 < bridge> unsigned char c = *(const unsigned char*)p; 17:25 < bridge> if(isalnum(c) || c == '-' || c == '_' || c == '.' || c == '~') 17:25 < bridge> { 17:25 < bridge> if(OutPos >= Length - 1) 17:25 < bridge> break; 17:25 < bridge> pOut[OutPos++] = c; 17:26 < bridge> } 17:26 < bridge> else 17:26 < bridge> { 17:26 < bridge> if(OutPos + 3 >= Length) 17:26 < bridge> break; 17:26 < bridge> snprintf(pOut + OutPos, 4, "%%%02X", c); 17:26 < bridge> OutPos += 3; 17:26 < bridge> } 17:26 < bridge> } 17:26 < bridge> pOut[OutPos] = '\0'; 17:26 < bridge> } 17:26 < bridge> ``` 17:26 < bridge> @kebscs The missing outline issue ist not caused by my code, even in the screenshots from you you see the freeze door outline beeing broken, I didn't touch this 17:26 < bridge> missing outlines? 17:26 < bridge> It's just not so noticable due to the constant flickering 17:27 < bridge> yes lasers sometimes miss outlines when zoomed out enough, because the outline is < 1 pixel 17:28 < bridge> thats no too bad 17:28 < bridge> maybe set a limit above which it goes to 0 to avoid flickering, or always goto 1 pixel * zoom amount 17:28 < bridge> maybe set a limit above which it goes [to 0 to avoid flickering, or always goto 1 pixel * zoom amount] 17:28 < bridge> maybe set a limit above which it goes [to 0 to avoid flickering, or 1 pixel * zoom amount] 17:29 < bridge> hmm 🤔 maybe I actually can with the screen size 17:29 < bridge> ```cpp 17:29 < bridge> URL: 19: hola%20mis%20amigos 17:29 < bridge> 2025-03-21 16:29:29 E http: https://ftapi.pythonanywhere.com/translate?dl=en&text=hola%20mis%20amigoshola mis amigosola mis amigosla mis amigosa mis amigos%20mis amigosis amigoss amigos%20amigosmigosigosgososs failed. libcurl error (3): URL rejected: Malformed input to a URL function 17:29 < bridge> ``` 17:29 < bridge> added a print statement, curl is un null terminating my string D: 17:31 < bridge> no nvm, i was unnull terminating my string with a previous attempt at encoding the url 17:31 < bridge> which was still there 17:31 < bridge> refer to this statement 17:31 < bridge> yay /: 17:31 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1352681090028146860/image.png?ex=67dee5ef&is=67dd946f&hm=49a9df0124d6eb328e02e63483471cd25c33988a985018aad5f2c10bfeca4139& 17:32 < bridge> Yea ik 17:32 < bridge> But its not noticeable when its not static 17:32 < bridge> So maybe can find a fix if possible 17:35 < bridge> do you know how to get the zoom scale in a Client component? 🤔 17:44 < bridge> camera is in gameclient, client cant and shouldnt access gameclient 17:49 < bridge> Client _component_ is fine, that already happens for various things 17:50 < bridge> But engine client shouldn't know about game stuff generally 17:50 < bridge> in the end I could also access the config value 17:51 < bridge> but might be unreliable 17:52 < bridge> `GameClient()->m_Camera.m_Zoom`? 17:53 < bridge> thx :owo: might make a followup fix 17:54 < bridge> https://okmij.org/ftp/ML/generalization.html 18:01 < bridge> camera is in gameclient, client cant and shouldnt access gameclient (otherwise i was lied to) 18:12 < bridge> should i apply for mod even tho i dont play 🤔 18:17 < bridge> i would f3 18:18 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1352692755176099921/image.png?ex=67def0cc&is=67dd9f4c&hm=bf5f11f4c98c2df66fc92730ebc88914102782b54b8355339e8f3e3a41aa2221& 18:18 < bridge> ah almost 18:18 < bridge> how do i force a new line xd 18:19 < bridge> well thats like a pre requisite 18:19 < bridge> kek 18:19 < bridge> ```cpp 18:20 < bridge> TextRender()->CreateOrAppendTextContainer(Line.m_TextContainerIndex, &AppendCursor, pTextTranslated); 18:20 < bridge> // Show old text darker 18:20 < bridge> TextRender()->TextColor(ColorRGBA(0.5f, 0.5f, 0.5f, 1.0f)); 18:20 < bridge> TextRender()->CreateOrAppendTextContainer(Line.m_TextContainerIndex, &AppendCursor, pText); 18:20 < bridge> TextRender()->TextColor(Color); 18:20 < bridge> ``` 18:20 < bridge> plz help <3 18:22 < ws-client> @Solly (bun bun) idk but did you try putting a ``"\n"`` there? xd 18:22 < bridge> wait that works 18:23 < ws-client> i think it could 18:23 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1352694017808142489/image.png?ex=67def1f9&is=67dda079&hm=018062246ff10302973f89c2f8d20d59e1c5382930dac6e819d45caea4d26ce1& 18:23 < bridge> ```cpp 18:23 < bridge> AppendCursor.m_X = AppendCursor.m_StartX; 18:23 < bridge> AppendCursor.m_Y += AppendCursor.m_AlignedFontSize + AppendCursor.m_AlignedLineSpacing; 18:23 < bridge> ``` 18:23 < bridge> ill try \n now 18:23 < bridge> yeah that works too 18:24 < ws-client> chillerdregon certified ddnet gfx progamer 18:24 < bridge> x-x 18:24 < ws-client> solly ur name is so cute 18:26 < bridge> thank you 18:26 < bridge> thats souly 18:26 < bridge> it works great when no wrapping 18:26 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1352694779376570542/image.png?ex=67def2af&is=67dda12f&hm=ffc0586bb2dda66ef8f346d1ca865db3cf91319fe171bb59a4f879a26841f856& 18:26 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1352694931080220815/image.png?ex=67def2d3&is=67dda153&hm=46fc07acf390d17bb53d6920413e283449ad9cfbe08f23efa5351f96645a1085& 18:26 < bridge> that is to say, it doesnt when there is 18:27 < bridge> very good!!! 18:27 < bridge> no muy mal 18:28 < bridge> ```cpp 18:28 < bridge> if(!IsScoreBoardOpen && !g_Config.m_ClChatOld) 18:28 < bridge> { 18:28 < bridge> AppendCursor.m_StartX = Cursor.m_X; 18:28 < bridge> AppendCursor.m_LineWidth -= Cursor.m_LongestLineWidth; 18:29 < bridge> } 18:29 < bridge> ``` 18:29 < bridge> theres this weird thing which makes text align to the left with scoreboard open 18:29 < bridge> which means i guess you can see more chat when its open isntead of it being put onto 50 lines 18:29 < bridge> but that screws with translation aswell 18:29 < bridge> i think it also beforehand renders the text to nowhere to get the size to do layout 18:31 < bridge> hell yeah 18:31 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1352696217775247422/image.png?ex=67def406&is=67dda286&hm=42da36571b9e914dc336ccf248c93673c4262c5d7ce8f0990b6c81f06a756f93& 18:31 < bridge> that looks so clean 18:33 < bridge> are we getting a translator in ddnet 18:33 < bridge> this only currently supports 1 job at a time, so autotranslate isnt a thing 18:34 < bridge> so without that or a way to like right click messages, this will only be tater 18:34 < bridge> so without that or a way to like right click messages, this will only be in tater 18:34 < bridge> im using some random endpoint i found but that will probably 403 too many requests 18:34 < bridge> if everyone starts using it 18:35 < bridge> we could pool together a billion servers to do the requests so it doesnt, (the "server" which is just a ptyhon module, is very cheap to run) 18:35 < bridge> with autotranslate 18:36 < bridge> im using some random endpoint i found but that will probably 403 too many requests (to google, its a google wrapper) 18:36 < bridge> ^ i englished so hard there 18:38 < bridge> awesome:deen_star: 18:40 < bridge> i need a translator from my spaghetti code brain to passable parsable english 19:25 < ChillerDragon> solly 19:25 < ChillerDragon> i need translator my russian is so bad 19:25 < ChillerDragon> i use deepl all day on fng xd 19:25 < bridge> mmm 19:25 < bridge> use tclient B) 19:25 < bridge> or like cherry pick the commit 19:26 < bridge> taters probably waiting for good next ddnet release 19:26 < bridge> to do anythign with tclient so even if i get translation to a good state 19:26 < bridge> idk if itll get merged 19:32 < bridge> tclient has a translator?? 19:32 < bridge> will do in the near future hopefully 19:33 < bridge> im trying to fix a single bug, then its usable.. 19:33 < bridge> it keeps translating the newest message no matter how hard i try 19:33 < bridge> oh i didnt see this part 19:33 < bridge> cool, what are u using to translate it? 19:33 < bridge> mb 19:33 < bridge> https://ftapi.pythonanywhere.com/ 19:33 < bridge> or libretranslate 19:41 < bridge> wow 19:41 < bridge> its not perfect but understandable :D 19:41 < bridge> mmm what could be better 19:43 < bridge> well if you don't play you won't be a very useful mod 😄 19:46 < ws-client> @Solly (bun bun) get it into ddnet! 19:47 < bridge> idk how it would work in ddnet 19:47 < ws-client> how does it work in tclient 19:47 < bridge> it accepts a optional name 19:47 < bridge> to filter by 19:47 < bridge> cuz chats get spammy 19:47 < bridge> tclient has bindchat 19:47 < bridge> `bindchat !translate translate` 19:47 < bridge> !translate bun bun 19:47 < bridge> translates the last msg by bun bun 19:48 < bridge> you can apply for admin, they don't have to play ddnet 19:50 < bridge> i think for admins and mods they have to play when they are accepted, but at that point 19:51 < bridge> so its not realtime? 19:51 < bridge> that would probably 403 too many requests 19:52 < bridge> https://github.com/sjrc6/TaterClient-ddnet/pull/36 19:52 < bridge> mm. ill just stick to vanilla client and not mind chat 19:53 < bridge> ddnet isnt vanilla [cat_troll](https://cdn.discordapp.com/emojis/1240405378601189496.webp?size=48&name=cat_troll) 19:54 < bridge> you know exactly what i mean + fake nitro when theres already a trollface :troll: 19:54 < bridge> [trollet~1](https://cdn.discordapp.com/emojis/699222813814554634.webp?size=48&name=trollet%7E1) 19:55 < bridge> ima stres test translate in this weeks cup of the day 19:56 < bridge> sure hope i dont segfault while running 19:59 < bridge> whos gonna win 19:59 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1352718266409160724/image.png?ex=67df088f&is=67ddb70f&hm=87676dfd7fd2cd760c45de18e86a938d832f3ebf51a877c60c68a69a0f499b18& 19:59 < bridge> the start of cotp or this 19:59 < bridge> the start of cotp or this compile job 20:37 < bridge> i wonder if self hosting librettanslate would be ez enough for ddnet lingo 20:38 < bridge> i wonder if self hosting librettanslate would be good enough for ddnet lingo 20:38 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1352728013271339108/image.png?ex=67df11a2&is=67ddc022&hm=634f25556cf27977f92586d50a0d45dcb0e2f301df72197011398e5d5435ce2d& 20:38 < ws-client> it sucks a lot but works a lot @louis xd 20:38 < bridge> yeah but its worse, harder to setup and slower than google translate 20:38 < ws-client> fokko used it server side on block for a while 20:47 < bridge> I think it was pretty much unanimous that we don't want this feature 20:48 < bridge> Perhaps a completely offline implementation of this has a chance of being merged 20:49 < bridge> Otherwise we think this feature belongs in a custom client 20:53 < bridge> but its extremley useful 20:55 < bridge> why are there so many admin mails 20:55 < bridge> it is, but super hard to impliment with our budget and goals of the game 20:55 < bridge> i have it implemented for free :) 20:56 < bridge> i mean yea but it isnt live translates and you need to input a stupid command to what i assume translate a portion of the chat 20:56 < bridge> given that youre pirating google 20:56 < bridge> im not very comfortable with spamming a free api with russian slurs 20:58 < bridge> yeah fair enough 21:00 < bridge> if you host your own google pirate server, then spam it all you want 21:03 < bridge> i don’t think I was actually considering applying but that’s a fun result 21:03 < bridge> admin tho… where do i sign :kek: 21:04 < bridge> they finally got me :feelsbadman: 21:04 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1352734527436623982/IMG_7830.jpg?ex=67df17b3&is=67ddc633&hm=ee0bf26281ce96942420825d5d03c9db748496879499c02f9fe36bba98c8915d& 21:04 < bridge> #mod-recruitment 21:04 < bridge> i need a lawyer dawg 21:04 < bridge> i *had* a jury duty attempt but it got sent to the wrong house and i never got anything from it 21:05 < bridge> 25-39 mph is a big spread 21:05 < bridge> oh i didnt see that part 21:05 < bridge> im blind as hell today im so sorry 21:05 < bridge> were you like in a race against a guy in a wheelchair and almost lost 21:06 < bridge> "im pretty sure i was.... below 10 above the speed limit" 21:06 < bridge> - pilotredsun 21:06 < bridge> so fucking true 21:06 < bridge> that is my life motto 21:06 < bridge> ditch the pills 21:06 < bridge> I disagreed with the speed limit and now I need to bend over for Uncle Sam 21:06 < bridge> my fault anyway 21:06 < bridge> the lanes were wide tho… 21:08 < bridge> they clocked me at 65 in a 40, i don’t pay attention to the speed limit there because it’s directly attached to a highway that I’ve driven on >2 times a week as long as i’ve been driving 21:08 < bridge> where the speed limit is 65 21:09 < bridge> it’s completely my fault because i know the rules of the road & am bound to them as someone with a driver’s license. i just am particularly used to this road & the cop can’t know that or take me at my word for it 21:09 < bridge> it is what it is 21:09 < bridge> also, literally the first time i have seen police patrolling that road 21:10 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1352736217866960946/team_chat.png?ex=67df1946&is=67ddc7c6&hm=89d1b591b8a1b231cdaf63a56e7518567e35015404da835d3c2a397fd98d2613& 21:10 < bridge> ChillerDragon: xD 21:11 < bridge> i might go to IRC 21:11 < bridge> my discord use is waning and i don’t talk in that many places 21:11 < bridge> irc sounds fun but i would miss voice chats 21:11 < bridge> might keep me focused 21:11 < bridge> yea 21:11 < bridge> a different use case 21:12 < bridge> feelsbadman 21:12 < bridge> teamspeak still exists ig 21:12 < bridge> teamspeak3 still exists ig 21:35 < bridge> A lot of replaybotters begging for amnesty 21:36 < bridge> but they got caught, and are not really anonymous asking for amnesty 21:36 < bridge> We don't want anything to do with pirating google or hosting an translation ai model 21:36 < bridge> fair enuf 21:37 < bridge> Well how else would they appeal their ban? Can't be anonymous 21:37 < bridge> <.c.f.m.> for me its because all my servers are on discord 21:38 < bridge> i mean normally like governmental bodies say we will give people who have commited x amnesty if they pay a small fine and promise to never ever wever do it again because we dont have the resources to catch you ourselves 21:38 < bridge> or like the christian booth things 21:38 < bridge> idk what amnesty actually means 21:39 < bridge> Ah, well that's not really the definition of amnesty. But it is indeed used in that context a lot 21:39 < bridge> it just means being pardoned or forgiven 21:40 < bridge> to be technical enough to replaybot then not being able to evade (not that they should) or just play on other servers (i thought bans were only per server, its been a while since ive been banned i dont remember), and then also ask to be forgiven for something which is very very wrong and you have to go out of your way to do 21:40 < bridge> @soulyvevo idk where to type this but I've seen people type about skins here so 21:40 < bridge> can you upload this as a new version please 21:40 < bridge> I won't ask you anymore i just had a last visual bug 21:40 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1352743769077841961/moai.png?ex=67df204f&is=67ddcecf&hm=ab6316bd6ba63af784ede568fc0161d298d65044c0241b0d811e6c0adeb9c5fa& 21:40 < bridge> unless voldertmort client does replaybotting for you, i wouldnt know 21:46 < bridge> done 21:46 < bridge> tysm 23:26 < bridge> i use it daily but i wasn’t gonna suggest it in fear of being fossed 23:26 < bridge> but i know matrix does actually have voip protocols too 23:26 < bridge> or at least, element can make use of some? not sure 23:28 < bridge> When mumble? 23:28 < bridge> looks like foss teamspeak 23:28 < bridge> why nott 23:29 < bridge> why not 23:34 < bridge> sure 23:47 < bridge> okey i sleep 23:47 < bridge> gn everyone and others 23:48 < bridge> gn teero 23:52 < bridge> https://github.com/suitenumerique/docs 23:52 < bridge> french and german office suite