00:30 < bridge_> Do you know that you can earn $5,000 or more weekly from crypto Trading? With Just $500… 100% Inbox Admin on Telegram for more details 👇👇👇👇👇👇 https://t.me/PROFITSWITHSTEVE 11:57 < bridge_> @heinrich5991 can u enable cors on master? 11:57 < bridge_> im making my own master server list frontend 11:58 < bridge_> CORS error: No 'Access-Control-Allow-Origin' header is present on the requested resource 11:58 < bridge_> sure 11:59 < bridge_> thanks 11:59 < bridge_> hmmm 11:59 < bridge_> I think that header is already set? 12:02 < bridge_> https://cdn.discordapp.com/attachments/293493549758939136/1130801826204229652/image.png 12:02 < bridge_> https://master2.ddnet.org/ddnet/15/servers.json 12:02 < bridge_> i dont see it i think 12:03 < bridge_> is this the correct master url? 12:03 < bridge_> i got it from the client 12:03 < bridge_> ohh 12:03 < bridge_> @heinrich5991 https://master1.ddnet.org/ddnet/15/servers.json 12:03 < bridge_> has it set 12:03 < bridge_> but 2 not xD 12:03 < bridge_> ill use 1 12:04 < bridge_> I'll check master2 then ^^ 12:31 < bridge_> It's time for the daily rust question you'll find completely unreasonable to even ask: 12:31 < bridge_> 12:31 < bridge_> ```rust 12:31 < bridge_> struct Context { 12:31 < bridge_> handler: Handler, 12:31 < bridge_> } 12:31 < bridge_> 12:31 < bridge_> struct Handler { 12:31 < bridge_> context: Arc 12:32 < bridge_> } 12:32 < bridge_> 12:32 < bridge_> impl Handler { 12:32 < bridge_> fn new(context: Arc) -> Self { 12:32 < bridge_> Handler { context } 12:32 < bridge_> } 12:32 < bridge_> } 12:32 < bridge_> 12:32 < bridge_> let context = Context { handler: Handler::new(..); }; 12:32 < bridge_> ``` 12:32 < bridge_> 12:32 < bridge_> How would you handle something like this? 12:33 < bridge_> In C/C++ I'd leave handler just uninitialized, and initialize it in the next line but that's obviously not a possibility in Rust 12:33 < bridge_> first ask the question 12:33 < bridge_> do you really need this circular dependency 12:33 < bridge_> Use c++? 12:34 < bridge_> not an option its unsafe 12:34 < bridge_> I'm trying to get myself to use newfangled technology 12:34 < bridge_> I can avoid it but then I need something much weirder 12:34 < bridge_> yesterday i told u how to partial init a struct 12:34 < bridge_> altho i recommend thinking another way of doing this 12:35 < bridge_> just pass ctx to the methods 12:35 < bridge_> what does handler do? 12:36 < bridge_> one thing about rust, is u should try to code rust like 12:36 < bridge_> It's a container mostly, it has a `Vec>` in it, it'll soon also have utility functions modules can use on it 12:37 < bridge_> do you really need to store context 12:37 < bridge_> I guess I could have the modules pass their own copy of the context to the utility functions 12:37 < bridge_> cant u simply pass it to the methods 12:37 < bridge_> when u call them 12:37 < bridge_> u dont need box here 12:37 < bridge_> vec is already heap 12:37 < bridge_> iirc 12:37 < bridge_> try it 12:37 < bridge_> Can it store a trait object without a box I wonder 12:37 < bridge_> yeah 12:38 < bridge_> iirc 12:38 < bridge_> this is a memleak right there. you could replace it with a weak pointer maybe 12:38 < bridge_> https://doc.rust-lang.org/std/sync/struct.Weak.html 12:38 < bridge_> I don't think `Vec` can store a trait object without box 12:38 < bridge_> it's of unknown size 12:38 < bridge_> oh 12:38 < bridge_> and `Vec` needs fixed size 12:38 < bridge_> rly? 12:38 < bridge_> u can have a struct like this 12:39 < bridge_> Yeah compiler confirms this 12:39 < bridge_> struct A { vec: Vec } 12:39 < bridge_> it doesnt need box 12:39 < bridge_> `A` is fixed size 12:39 < bridge_> (3 pointers large) 12:39 < bridge_> ah ok 12:39 < bridge_> However it can store a reference to a trait object if I add some lifetimes 12:39 < bridge_> yeah ref is fixed size 12:39 < bridge_> this wouldn't work in C++ if you want to be able to tear it down 12:39 < bridge_> e.g. `Vec<&(dyn Module + Send + Sync)>` 12:39 < bridge_> Wym tear it down? 12:40 < bridge_> the destructor would never be calld 12:40 < bridge_> because the object always holds a reference to itself 12:40 < bridge_> You are thinking newfangled smart pointers 12:41 < bridge_> I was thinking `std::shared_ptr` 12:41 < bridge_> Yeah, I was thinking just `struct Handler *` and `struct Context *` 12:41 < bridge_> newflangled sounds so bad xdd 12:42 < bridge_> I don't mind managing my own memory (yeah I know as an imperfect human I'm guaranteed to leak memory) 12:42 < bridge_> I see. this can't be representted using a `Arc` because it's a memleak 12:42 < bridge_> not with weak? 12:42 < bridge_> https://doc.rust-lang.org/std/sync/struct.Weak.html 12:42 < bridge_> yes, with weak, it might work 12:42 < bridge_> Hm, I basically have this situation with an extra level of indirection, is this something the compiler is supposed to catch? 12:43 < bridge_> no 12:43 < bridge_> memleaks are safe 12:43 < bridge_> in rust 12:43 < bridge_> the compiler catches it by you not being able to initialize it ^^ 12:43 < bridge_> (without extra steps) 12:43 < bridge_> ah u mean the cycle 12:43 < bridge_> (i need to read kek) 12:44 < bridge_> I mean I can have an `Option` there and it'll create the same dependency 12:44 < bridge_> I'll just need some unwraps, but it'll have the memleak just fine 12:45 < bridge_> yes. with `Option` alone, it won't work, but by adding `Mutex` you could make it work 12:45 < bridge_> no, the rust compiler won't catch that 12:45 < bridge_> Why not? 12:46 < bridge_> now also has CORS 12:46 < bridge_> because you couldn't modify the `Option<>` after the creation of the `Arc` anymore 12:46 < bridge_> Ah yes, true not mutable 12:47 < bridge_> Yeah, I'll just not have that extra copy of context for convenience I guess, modules can use their own copy of it 12:49 < bridge_> what are you trying to accomplish in a bigger picture? 12:49 < bridge_> what are `Context` and `Handler`? 12:49 < bridge_> Still just messing around with ideas on how to structure my discord bot 12:50 < bridge_> I don't know a good answer to that 12:50 < bridge_> I don't know how to structure something like teeworlds there 12:50 < bridge_> I guess I should read some larger projects to find out 12:52 < bridge_> `Context` is a set of global stuff like the `SqlitePool`, the discord api client, a http client, bots current state, it's current user_id 12:52 < bridge_> 12:52 < bridge_> `Handler` is a handler to initialize and dispatch events to `Module`s 12:52 < bridge_> 12:52 < bridge_> `Module`s will call back into the `Handler` for registering what should be dispatched to them 12:52 < bridge_> dont store context in handler 12:52 < bridge_> its super simple 12:52 < bridge_> Yes, this is what I have concluded aswell a couple lines ago, I was just elaborating because @heinrich5991 asked more specifically 12:52 < bridge_> on the handler dispatch function just pass context by ref or smth 12:53 < bridge_> make the module trait accept ctx as arg 12:53 < bridge_> (Funny though that the easiest way to do this is to go back to passing the context around for a subset of functions) 12:53 < bridge_> well because saving pointers is always harder than just using them on the stop isnt it 12:54 < bridge_> Modules get a copy of the context when they get initialized and they keep it, no problem on that part 12:54 < bridge_> well because saving pointers is always harder than just using them on the spot isnt it 12:54 < bridge_> why u want handler to store ctx then 12:54 < bridge_> doesnt sound like handler should need it 12:54 < bridge_> no memleak there? 12:55 < bridge_> The issue was `Module`s using utility functions in `Handler`, it needs a copy of the context, I'll just think of something else 12:55 < bridge_> @learath2 traits can have implemented functions btw 12:56 < bridge_> automatically* 12:56 < bridge_> just define the method with the body 12:56 < bridge_> Yes memleak I guess, hadn't really thought about it, but the `Context` and `Module`s live for the entire duration of the program so it's not too too bad 😄 12:56 < bridge_> I guess I could make the copies I keep in the modules weak fixing that? 13:02 < ChillerDragon> wat u hackin on lerato? 13:03 < bridge_> I'm just messing around with Rust, trying to learn the Rust way of doing things 13:03 < ChillerDragon> rust for the sake of rust? 13:03 < bridge_> https://github.com/Learath2/ddnet-discordbot-ng my playground 13:03 < ChillerDragon> no actual outcome? 13:03 < ChillerDragon> a 13:03 < bridge_> Well the outcome will be a new discord bot that can finally replace the 3 bots we have 😄 13:03 < ChillerDragon> how many ddnet discord bots are there? 13:03 < ChillerDragon> :D 13:04 < ChillerDragon> i see 13:04 < bridge_> If I like what I make that is 13:04 < ChillerDragon> https://xkcd.com/927/ 13:04 < ChillerDragon> reminds me of this 13:05 < bridge_> @heinrich5991 how does one usually use `Weak`? Am I supposed to be upgrading it before use so I can make sure it doesn't get dropped while I'm using it? 13:06 < ChillerDragon> why ever your discord bot needs a lexer xd 13:06 < bridge_> It was originally going to have chat commands, then I remembered discord now has slash commands, I'll see if those are good enough to replace the chat commands 13:06 < bridge_> ye 13:07 < bridge_> upgrade returns an option its none if context was dropped 13:07 < bridge_> simply dont save the returned arc 13:07 < bridge_> use it there and thats it 13:13 < bridge_> yes, can't access the weak without upgrading it anyway 13:13 < bridge_> oh, @ryozuki has already answered 13:13 < bridge_> I'm always reading top-to-bottom ^^ 13:21 < bridge_> they good 13:21 < bridge_> even have slots for arguments with types and autofill and enums 14:19 < ChillerDragon> lerato sos 14:20 < ChillerDragon> i am being bullied for using ``goto`` 14:20 < ChillerDragon> make ddnet goto again 14:23 < ws-client> trollosdragos 14:32 < bridge_> RenderPlayer(&m_pClient->m_aClients[ClientID].m_RenderPrev, &m_pClient->m_aClients[ClientID].m_RenderCur, &m_aRenderInfo[ClientID], ClientID); 14:33 < bridge_> guys how it works 14:33 < bridge_> what is render info 14:33 < bridge_> i wanna render my player in a local position in the world 14:34 < ws-client> after clicking on render infos and analysing the struct, what do you think is render info? 14:40 < ChillerDragon> dood asking client questions 14:40 < ChillerDragon> ... wonder if he is making hax 14:40 < ChillerDragon> axaxaxax 14:41 < ws-client> i'd be surprised if not xd 14:41 < bridge_> xd 14:41 < bridge_> 14:41 < ws-client> ryo's checklist is probably already 70% satisfied 14:42 < bridge_> is a cock 14:42 < ChillerDragon> ok that good :) 14:42 < bridge_> mlml 14:42 < bridge_> im trying to do a useless thing 14:43 < ChillerDragon> cocks are not useless 14:43 < bridge_> hilarious 14:43 < bridge_> where you could do I forget what and did like a screenshot of your location 14:43 < ChillerDragon> ?xd 14:43 < bridge_> i wanna do that 14:43 < bridge_> shh 14:43 < bridge_> my useless things 14:44 < ChillerDragon> oh yikes 14:44 < ChillerDragon> im 15 14:44 < bridge_> u are my man 14:44 < bridge_> m_pClient->m_Players.RenderPlayer(&m_pClient->m_aClients[m_pClient->m_aLocalIDs[0]].m_RenderPrev, &m_pClient->m_aClients[m_pClient->m_aLocalIDs[0]].m_RenderCur, m_pClient->m_aClients[m_pClient->m_aLocalIDs[0]].m_RenderInfo, m_pClient->m_aLocalIDs[0]); 14:44 < bridge_> i can't ddo that because renderplayer is private, but ghost use that idk how 14:44 < ChillerDragon> make it public 14:45 < bridge_> this client makes me feel like i don't know how to code 14:45 < bridge_> not rly good 14:45 < ChillerDragon> i know that feeling 14:46 < ChillerDragon> but its not only when working with ddnet client 14:47 < bridge_> ses 14:49 < ChillerDragon> sas 14:49 < bridge_> sus 14:50 < bridge_> oh sos 14:50 < bridge_> i did 14:50 < bridge_> xd 14:50 < ws-client> friend class 14:50 < bridge_> class CPlayers : public CComponent 14:50 < bridge_> { 14:50 < bridge_> friend class CGhost; 14:50 < bridge_> 14:50 < bridge_> this gay 14:50 < bridge_> yes, but, from where are u writing? 14:51 < ws-client> just make it public if u need it lmao 14:51 < bridge_> no i don't like 14:51 < bridge_> ENCAPSULATION 14:52 < ws-client> then write a getter that does the same 14:54 < bridge_> ik 14:54 < ChillerDragon> jopsti is writing from https://chat.zillyhuhn.com/ 14:54 < bridge_> no prob i did that 14:54 < ChillerDragon> the chattest platform of them all 14:54 < ws-client> chaddest 14:54 < ChillerDragon> new unicorn about to surpass tiktok marketshare 14:55 < bridge_> why andd login with what 14:55 < ws-client> name and pw 14:55 < bridge_> why and login with what 14:55 < ChillerDragon> your english is quite chaotic if i may say 14:55 < bridge_> yes but which xd 14:55 < ChillerDragon> its invite only 14:55 < ChillerDragon> high society secret gaming club 14:55 < ws-client> its only for VIPs 14:55 < bridge_> im italian, my mind is chaotic 14:55 < bridge_> ohh 14:55 < bridge_> oke 14:55 < ws-client> rich golf club members only 14:56 < ChillerDragon> xd 14:57 < bridge_> m_pClient->m_Players.RenderPlayer(&m_pClient->m_aClients[m_pClient->m_aLocalIDs[0]].m_RenderPrev, &m_pClient->m_aClients[m_pClient->m_aLocalIDs[0]].m_RenderCur, &m_pClient->m_aClients[m_pClient->m_aLocalIDs[0]].m_RenderInfo, &m_pClient->m_aLocalIDs[0]); 14:57 < bridge_> 14:57 < bridge_> 14:57 < bridge_> where can i found renderinfo of my tee 14:58 < ChillerDragon> https://zillyhuhn.com/cs/.1689685112.png 14:58 < ChillerDragon> jopsti face reveal 14:59 < ChillerDragon> the code you sent is the renderinfo of your tee 15:01 < bridge_> cannot convert 'CTeeRenderInfo' to 'const CTeeRenderInfo*' 15:02 < bridge_> its a pointer 15:02 < bridge_> remove the & 15:03 < bridge_> same error 15:03 < bridge_> No viable conversion from 'CTeeRenderInfo' to 'const CTeeRenderInfo *'clang(typecheck_nonviable_condition) 15:03 < bridge_> players.h(22, 25): Passing argument to parameter 'pRenderInfo' here 15:03 < bridge_> the other way around 15:04 < bridge_> exactly. your parameter has to be a cons pointer 15:04 < bridge_> exactly. your parameter has to be a const pointer 15:04 < bridge_> so you make a const CTeeRenderInfo and then pass it in as &myrenderinfo 15:05 < bridge_> or what are you trying to do? 15:05 < bridge_> yes i edited with that but nothing 15:05 < bridge_> let me try close and open again the project 15:05 < bridge_> what exactly are you trying to do? 15:06 < bridge_> ~~remove the &~~ add an & 15:06 < bridge_> const CTeeRenderInfo *pInfo = &m_pClient->m_aClients[m_pClient->m_aLocalIDs[0]].m_RenderInfo; 15:06 < bridge_> 15:06 < bridge_> m_pClient->m_Players.RenderPlayer(&m_pClient->m_aClients[m_pClient->m_aLocalIDs[0]].m_RenderPrev, &m_pClient->m_aClients[m_pClient->m_aLocalIDs[0]].m_RenderCur, &pInfo, &m_pClient->m_aLocalIDs[0]); 15:07 < bridge_> you already have a pointer there so no need to put another & when you call the function 15:07 < bridge_> oh 15:07 < bridge_> yes im gay i edited without check 15:07 < bridge_> but u know how edit the position 15:09 < bridge_> the position is stored in `m_RenderPrev` and `m_RenderCur`, the client interpolates between those two so it looks smooth the the eye. 15:09 < bridge_> the position is stored in `m_RenderPrev` and `m_RenderCur`, the client interpolates between those two so it looks smooth the the eye 15:11 < bridge_> @everestkio I'll be removing you from this channel since you still haven't privated your aimbotting video using CE on youtube 15:13 < bridge_> I probably shouldve dm'ed him that 😅 15:14 < bridge_> @everestkio [REDACTED] 15:15 < ws-client> really awesome that every person to ever ask a question in this channel is a cheater xD 15:15 < ws-client> healthy development xD 15:15 < bridge_> but it seems like a recent development, no? 15:15 < ChillerDragon> woah he really is a known hax dev? i was half trolling 15:16 < ws-client> i dunno what was the last contributor to ddnet that you helped? xd 15:16 < bridge_> he was a bot dev? 15:16 < bridge_> smh 15:17 < bridge_> we're talking about development often here, I think ^^ 15:17 < ChillerDragon> we need a #bot-dev channel 15:17 < bridge_> and all ppl who chat there get banned 15:17 < bridge_> kek 15:17 < ChillerDragon> axaxax 15:18 < ChillerDragon> lerato add to your new bot 15:18 < bridge_> honeypot 15:18 < ChillerDragon> then we also need a #crypto channel for the spammers hrhrhr 15:29 < bridge_> Does anyone know what `UI()->MouseDeltaY()` actually returns? I would expect it to return the change of the y coordinate in whatever unit all other stuff is. So that `UI()->MouseDeltaY() / View.y` would give the percentage the mouse moved in the `View`. It seems to work fine for x, but not for y coordinates 15:32 < bridge_> Jupstar: see, a non-bot-dev 15:33 < bridge_> I could be working on my bot right now :think_bot: 15:38 < ws-client> @heinrich5991 paid actor xd 15:38 < bridge_> 😄 15:43 < ChillerDragon> xd 15:49 < bridge_> Y might be flipped 15:50 < bridge_> How far off is it? 15:51 < bridge_> <_voxeldoesart> marmare's bot client where the ui is actually usable and theres no actual bot in it 15:52 < bridge_> It seems to be off by some constant factor 15:55 < bridge_> Whats also confusing me is that panning in the editor uses `UI()->MouseDeltaY() / Graphics()->WindowWidth()`. So I tried multiplying it with `Graphics()->WindowWidth() / Graphics()->WindowHeight()` but its still off 15:56 < ws-client> mhh devide by width sounds wrong here, but dunno what panning is 15:59 < bridge_> panning is just changing the position of the viewport (ie ctrl + left click) 16:04 < ws-client> @marmare_314 where in the code even are you? i don't find any code like that in editor.cpp 16:05 < bridge_> https://github.com/ddnet/ddnet/blob/ff9bda9e2f566298affda2276d9e8dd2640942d4/src/game/editor/editor.cpp#L2915 16:07 < ws-client> i think the mousewscale is not directly comparable to the window width 16:07 < bridge_> Its defined here https://github.com/ddnet/ddnet/blob/ff9bda9e2f566298affda2276d9e8dd2640942d4/src/game/editor/editor.cpp#L7335 16:08 < ws-client> yeah its basically the scale between window width and the virtual world width 16:08 < ws-client> its just a factor 16:09 < ws-client> smth like 1.75x 16:10 < ws-client> i think we always respect the aspect ratio in the world view, so this should:tm: be ok to do even for height 16:15 < bridge_> Yeah seems to work just fine, I just cannot figure out how to do the same for the envelope editor 16:17 < ws-client> i guess u have to use getScreenPoints or smth like that 16:17 < ws-client> it will give u the virtual view similar to what the world is doing 16:17 < ws-client> its some function in graphics 16:27 < bridge_> Couldnt find it, but maybe i can figure out what `MapScreenToWorld` does 16:29 < bridge_> @deen would be cool for ddnet to provide emails for services 16:29 < bridge_> like wiki 16:33 < ws-client> @marmare_314 GetScreen 16:33 < bridge_> @heinrich5991 do u know why u128 has a align of 16 on m1? 16:33 < bridge_> @jupeyy_keks 16:33 < bridge_> xd 16:33 < ws-client> what alignment do u expect else? 16:34 < bridge_> 8 16:34 < ws-client> long long double also has 16 i think 16:34 < bridge_> it should be 8 cuz registers no? 16:34 < bridge_> I think x86 also wants 16-byte alignment for 16-byte simd vectors 16:35 < bridge_> it's kinda unrelated to registers. it's related to guarantees of load/store operations and how the compiler wants to model these 16:35 < bridge_> i see 16:36 < bridge_> interesting 16:37 < bridge_> https://github.com/rust-lang/rust/issues/54341 16:37 < bridge_> xd 16:44 < ws-client> @ryozuki good that u use u128.. future proof alien software. that's what i want to see. the ppl in 20000000000000 years will still use it 16:45 < bridge_> zs 16:45 < bridge_> xd 16:45 < ws-client> my game uses femtoseconds 16:59 < ws-client> @ryozuki why does as_nanos from Duration return u128 and from_nanos takes u64. You as llvm champ must tell me 17:01 < bridge_> ```rust 17:01 < bridge_> pub const fn as_nanos(&self) -> u128 { 17:01 < bridge_> self.secs as u128 * NANOS_PER_SEC as u128 + self.nanos.0 as u128 17:01 < bridge_> } 17:01 < bridge_> ``` 17:01 < bridge_> lol 17:01 < bridge_> idk 17:02 < ws-client> hipsters 17:02 < bridge_> you can represent any amount of `u64` nanos in a `Duration`, but a `Duration` can have more nanos than fit into a `u64` 17:02 < bridge_> this way, you get infallible conversions, I guess 17:03 < ws-client> and if both are u128 17:03 < ws-client> do you mean while using Add? 17:04 < bridge_> 2**127 nanoseconds don't fit into a duration 17:05 < bridge_> I think the max is `2**64-1 seconds + 10*9-1 nanoseconds`, I believe 17:05 < ws-client> mh ok 17:07 < ws-client> and they choose to use seconds at all for performance concerns, or floating point inaccuracies? 17:09 < bridge_> I wouldn't use floating point for anything fundamental like that tbh 17:09 < ws-client> but they offser as_secs_f32 17:10 < ws-client> dividing 2 f32 nanoseconds would not work accurately 17:10 < ws-client> so they choose seconds + nanoseconds, instead of nanoseconds only 17:10 < ws-client> that was my question 17:11 < bridge_> they starting offering the f32 stuff very late IIRC 17:11 < bridge_> I guess they chose seconds because that's also a repr in certain operating systems 17:12 < bridge_> using u64 seconds plus u32 nanoseconds 17:42 < bridge_> is github slow 17:42 < bridge_> rn 17:42 < bridge_> microsoft so unreliable 17:42 < bridge_> my git https://git.edgarluque.com/ 17:42 < bridge_> has 100% uptime 17:42 < bridge_> they should hire u 17:42 < bridge_> ye 18:11 < bridge_> semi announcement: 18:11 < bridge_> 18:11 < bridge_> i wanna host an aditional service on ddstats.org (which currently hosts the datasette instance), i will move the datasette instance to https://db.ddstats.org/ 18:11 < bridge_> the service will basically be a really pretty master server viewer, with skin rendering, teams, statistics, and even a stream of events based on diffing requests (e.g, a list of who joined what server or left, on the sidebar? or some ideas like that) 18:11 < bridge_> anyway @murpi if u can change the link on #welcome to https://db.ddstats.org/ 18:11 < bridge_> for now both point to datasette but ill soon change it 18:12 < bridge_> ill also include a link to https://db.ddstats.org/ inside ddstats.org when i have the web tho 18:16 < bridge_> @_voxeldoesart also i found a use for the logo i requested long ago xd 18:34 < bridge_> <_voxeldoesart> yay! 18:35 < bridge_> <_voxeldoesart> ~~when ddstats emoji~~ 18:35 < bridge_> <_voxeldoesart> :wiki: 18:36 < bridge_> https://cdn.discordapp.com/attachments/293493549758939136/1130900810419679304/image.png 18:36 < bridge_> epic 18:36 < bridge_> better colors than official logo 18:40 < bridge_> No 18:41 < bridge_> daft punk 18:41 < bridge_> Yes 18:41 < bridge_> Sounds cool! 18:41 < bridge_> (@ryozuki) 18:43 < bridge_> ooo that sounds so good 18:43 < bridge_> https://cdn.discordapp.com/attachments/293493549758939136/1130902635331997736/DDStats_Logo_Bundle.zip 18:43 < bridge_> here is the logo with the svgs too 18:43 < bridge_> if someone wants to mess around 18:43 < bridge_> who made them 18:43 < bridge_> made by voxel obviously 18:43 < bridge_> @_voxeldoesart 18:43 < bridge_> <_voxeldoesart> i am so cool 18:43 < bridge_> :EZ: 18:43 < bridge_> <_voxeldoesart> https://cdn.discordapp.com/attachments/1036731039898419350/1050180564830924840/image.png 18:44 < bridge_> should be an ingame skin too 18:44 < bridge_> :YEP: 18:44 < bridge_> <_voxeldoesart> maybe 18:44 < bridge_> <_voxeldoesart> tm 18:44 < bridge_> the firefox svg renderer has artifacts lmao 18:44 < bridge_> yeah 18:44 < bridge_> broken af 18:50 < bridge_> future discord or smth https://discord.gg/2Bwz2rn3YJ 18:51 < bridge_> lmao 18:52 < bridge_> ddnet 2.0 by Ryozuki 18:52 < bridge_> kek 18:59 < bridge_> why this not work 18:59 < bridge_> SELECT * 18:59 < bridge_> FROM race 18:59 < bridge_> WHERE Time LIKE '%.00' 19:06 < bridge_> real 19:24 < bridge_> it does for faster loading but it also supports misaligned but you need to use loadu instruction. load instruction on misaligned will trigger an exception (segfault iirc) 19:35 < bridge_> @robyt3 i have a question 19:35 < bridge_> when we return invalid texture if loadtexture fails 19:35 < bridge_> doesnt that mean we always create a bug? 19:36 < bridge_> i mean isnt that completely broken even in vanilla already 19:36 < bridge_> or am i stupid rn 19:36 < bridge_> do we have some check to prevent it from being unloaded 19:37 < bridge_> Yes 19:37 < bridge_> https://github.com/ddnet/ddnet/blob/b221b35e10be82202be60aede843bb082ff9072e/src/engine/client/graphics_threaded.cpp#L265-L268 19:37 < bridge_> mhh i see 19:37 < bridge_> so false alarm :/ 19:37 < bridge_> why do u mean call invalidate before initilizing it? 19:38 < bridge_> You mean in #6836? 19:38 < bridge_> https://github.com/ddnet/ddnet/pull/6836 19:38 < bridge_> yes 19:39 < bridge_> I can never be sure enough whether the constructor is actually called already :justatest: 19:40 < bridge_> mhh 19:40 < bridge_> i really dont understand why 2 times at one day the killmsg thing happened 19:40 < bridge_> its so random 19:41 < bridge_> Did the other one have an assert log with more information? 19:42 < bridge_> he didnt send me that 19:43 < bridge_> did we add any kind of memcpy or mem_zero lately 19:43 < bridge_> in the game client 19:43 < bridge_> that might overflow or smth xd 19:43 < bridge_> Reports were from before bezier support was merged, right? 19:44 < bridge_> Because that would have added a lot 19:44 < bridge_> u changed smth in text.cpp 19:44 < bridge_> maybe the killmsg isnt created bcs of text container fails 19:44 < bridge_> but also unrealistic 19:45 < bridge_> from the recent commits i have no real idea 19:45 < bridge_> 36d8dd587cbfd8594755661985785065caee5704 19:45 < bridge_> https://github.com/ddnet/ddnet/commit/36d8dd587cbfd8594755661985785065caee5704 19:45 < bridge_> but why should it break the client xD 19:45 < bridge_> thats the only direct commit related to killmsgs 19:46 < bridge_> even if this commit causes it somehow, the bug was there before 19:49 < bridge_> Would it help if we add more debug information on this assertion? 19:49 < bridge_> we only check if m_Body.IsValid() 19:49 < bridge_> 19:49 < bridge_> theoretically that could fail maybe 19:49 < bridge_> Like the current value of `m_vTextureIndices[TextureID.Id()]` 19:50 < bridge_> i'm not sure, i'd guess the index store in that array is simply the next valid index 19:50 < bridge_> the best would be if texturehandles would be a shared ptr and track their usage 19:50 < bridge_> then we'd see as soon as they are in use while being destroyed 19:51 < bridge_> that's not a trivial change tho 19:51 < bridge_> Only ~200 lines :justatest: 19:51 < bridge_> and rn it might be possible if 2 components reference the same texture 19:51 < bridge_> while only 1 destroys it 19:51 < bridge_> and the other doesnt use it in good faith xD 19:52 < bridge_> the shared ptr would think it's still in use 19:52 < bridge_> ok 19:52 < bridge_> Nice logo @_voxeldoesart 19:52 < bridge_> that's also why i wanted to remove the shared ptr in the text containers. but since it works quite nice we can keep it xd 19:57 < ChillerDragon> @davide55 im bugged again this time real good also on ger10 not only @fokkonaut server :c 19:57 < ChillerDragon> https://zillyhuhn.com/tmp/fokko_anon.pcap 19:57 < ChillerDragon> here pcap of chillerbot-zx connecting to foxonaut 19:57 < bridge_> it fails at the feet textures only 19:58 < ChillerDragon> dont get confused by the chilerbot specific messages xd 19:58 < bridge_> both crashlogs 19:58 < bridge_> i wonder if this function can fails for feet, but not for body 19:58 < bridge_> https://github.com/ddnet/ddnet/blob/3991d199667d133a220758b3e0def3e75911a1b2/src/engine/client/graphics_threaded.cpp#L711 20:00 < ChillerDragon> @davide55 and here me connecting to ger10 using vanilla ddnet https://zillyhuhn.com/tmp/ger10_anon.pcap 20:00 < ChillerDragon> https://zillyhuhn.com/cs/.1689703271.png 20:00 < ChillerDragon> epic 20:01 < ChillerDragon> im still in connecting 20:01 < ChillerDragon> but the one chat message of misterx swapping came through haha 20:01 < ChillerDragon> i spam reloaded both tw.fokkonaut.de and ger10.ddnet.org in my firefox browser 20:03 < ChillerDragon> o/ belkka 20:04 < belkka> what a weird place 20:04 < ChillerDragon> xd 20:05 < ChillerDragon> bro accidentally opend irc 20:06 < ChillerDragon> rip davide afk :c non susterism for me then maybe that explains why the server is not full today hehe all filtered 20:07 < ChillerDragon> btw jopsti i can not recommend 4090 dat bitsh heated ma room to 30 degree i have phisical pain 20:08 < ChillerDragon> chiller monologue moment 20:09 < bridge_> why should it heat your room to 30° 20:09 < bridge_> wtf have u been doing with it 20:09 < ChillerDragon> connecting to ger10 20:09 < ChillerDragon> rendering tw menu in 4k 20:09 < ChillerDragon> xd 20:09 < bridge_> thats 2% usage for a 4090 20:09 < ChillerDragon> it had 29 degree when i turned the pc on earlier 20:09 < bridge_> maybe open your window lmao 20:09 < ChillerDragon> i use linux 20:09 < ChillerDragon> idiot 20:10 < bridge_> under 80% usage GPUs are very power efficient generally 20:10 < bridge_> bcs they clock really low 20:10 < ChillerDragon> tell that to my fan 20:10 < ChillerDragon> he going places 20:10 < ChillerDragon> airplane mode 20:10 < bridge_> bro 4090 fan never even goes on 20:10 < bridge_> fakenews 20:10 < bridge_> @ryozuki can confirm 20:10 < bridge_> 4090 has completely overkill passive coolers xD 20:10 < bridge_> my sister has 4090 20:10 < bridge_> i ran cyberpunk on rtx ultra 20:10 < bridge_> fans idle 20:10 < ChillerDragon> ye its external fans of da case 20:11 < bridge_> ah 20:11 < ChillerDragon> lmao 20:11 < bridge_> trollerdragores 20:11 < ChillerDragon> maybe jopsti is rite 20:11 < bridge_> ur troll 20:11 < ChillerDragon> and i really should bios 20:11 < bridge_> spitting some fake news 20:11 < ChillerDragon> maybe my cpu is needing it 20:11 < bridge_> my bios has system fan controls 20:11 < bridge_> most probs 20:11 < bridge_> such a powefull cpu gets hot 20:11 < ChillerDragon> spinnin cycles computing gnome 20:11 < ChillerDragon> axaxax 20:13 < ChillerDragon> ryo why ur sister got 4090 lol 20:13 < bridge_> @smetanolub Yo bro, can I ask you: Do you use custom skins, do you use skins.tw or smth? Would really help 🙂 20:13 < bridge_> Thanks for your coorperation 20:14 < ChillerDragon> teeworlds-skins.cdn.facebook.com 20:15 < bridge_> @jupeyy_keks We are loading skins from a thread, right? 20:16 < bridge_> not that i am aware of 20:16 < bridge_> graphics is not thread safe at all 20:16 < ChillerDragon> graphics_threaded.cpp 20:16 < bridge_> so if we loading skins, then only the file itself 20:16 < bridge_> So can only one thread be in this function at a time? https://github.com/ddnet/ddnet/blob/3991d199667d133a220758b3e0def3e75911a1b2/src/engine/client/graphics_threaded.cpp#L354-L365 20:16 < bridge_> chillerdragon: yeah biggest troll. it should be backend_threaded 20:16 < ChillerDragon> hrhr 20:16 < bridge_> bcs thats the only threaded part about it 20:16 < ChillerDragon> all marketing 20:16 < bridge_> This uses `m_vSpriteHelper` state variable so it's not thread-safe 20:17 < bridge_> yes 20:18 < bridge_> It looks like sprites are just copied from the complete texture buffer, so the feet texture being invalid shouldn't have an effect on the other textures 20:19 < bridge_> Is it possible to get a list of all skin names in the database for fuzz-testing? 20:19 < bridge_> if u know some js 20:19 < bridge_> https://ddnet.org/skins/skin/skins.json 20:20 < bridge_> else i can also quickly write it 20:20 < bridge_> Your IP is still the same? 20:20 < bridge_> https://cdn.discordapp.com/attachments/293493549758939136/1130927208203026552/message.txt 20:21 < bridge_> @robyt3 20:21 < bridge_> Thanks 20:24 < ChillerDragon> idk wat my ip was last time xd 20:25 < ChillerDragon> @ 20:25 < ChillerDragon> omg 20:25 < ChillerDragon> xd 20:26 < ChillerDragon> @Chairn commenting every ddnet github action in existance hehe 20:26 < bridge_> uh? 20:26 < ChillerDragon> yes u 20:26 < bridge_> only one? 20:26 < ChillerDragon> you top commenter 20:26 < bridge_> where ? 20:26 < ChillerDragon> more active than me in tw youtube section 20:27 < bridge_> i don't deal with your opinion, only with facts... 20:27 < ChillerDragon> i spammed out issues and prs in the last days and you commented all like a fulltime githubber 20:27 < bridge_> i commented 2 20:28 < ChillerDragon> bro being defensive about it xd 20:28 < bridge_> one was a typo from you, i had to correct it 20:28 < bridge_> we have some standards here 20:29 < ChillerDragon> also i wouldnt call #2170 stupid :c looks pretty functional to me 20:29 < chillerbot> https://github.com/ddnet/ddnet/issues/#2170 20:29 < ChillerDragon> thanks chillerbot 20:29 < ChillerDragon> omg github changed links fuk 20:29 < ChillerDragon> chilerbot depended on issue links wiht pr ids redirecting to prs 20:29 < ChillerDragon> they stopped doing that omahgwd 20:30 < bridge_> The bot kept the `#` in the URL 20:30 < bridge_> It works without 20:30 < ChillerDragon> i just realized 20:30 < ChillerDragon> i think that is even a known issue and i was too lazy to fix last time xd 20:30 < ChillerDragon> quality bot 20:30 < ChillerDragon> https://github.com/ddnet/ddnet/pull/2170 20:38 < ChillerDragon> @davide55 i sent heinrich my ip again bro u need to get some messenger ur such a discord maximalist xd 20:39 < ChillerDragon> go send me your rsa public key and ill send you my ip encrypted in this chat xd 20:42 < bridge_> 😂 🤣 20:42 < ChillerDragon> or slide in my gmail dms chillerdragon@gmail.com 20:47 < bridge_> time to send furries 21:03 < bridge_> Chiller you should start using carrier pigeons to send your ip to Davide, it'd be so cool 21:09 < bridge_> <_voxeldoesart> i didnt know you were a furry 21:09 < bridge_> im not 21:10 < ChillerDragon> davide probably has a literal wall of fire surrounding his house that would kill all pigeons 21:11 < ChillerDragon> only letting through amazon traffic 21:11 < ChillerDragon> true propriatary enjoyer discord ooser 21:13 < ChillerDragon> wot belkka how do you know about the #teeworlds-ctf irc channel o.O 21:25 < bridge_> @deen how is deen-jr doin 21:25 < bridge_> xD 21:25 < bridge_> maybe its Miss Twinbop 21:26 < bridge_> gotta get a famous name like: Aoe 21:26 < bridge_> tem gente dando lag em srvr Br 21:26 < bridge_> tem gente offtopic le brazil 21:26 < bridge_> xdd 21:27 < bridge_> oq é offtopic? 21:27 < bridge_> #off-topic for brazil 21:27 < bridge_> a 21:29 < ChillerDragon> xd 21:33 < bridge_> @jupeyy_keks I haven't found anything yet with this, went through all skins once. You can try with this patch, just start server, connect, `dbg_dummies 31` or `63` and `reload`: https://github.com/Robyt3/ddnet/tree/Debug-Server-Dummies-Skins-KillMsg 21:33 < bridge_> https://cdn.discordapp.com/attachments/293493549758939136/1130945343891181588/DDNet_2023.07.18_-_21.29.12.03-1.mp4 21:34 < bridge_> maybe its a bug in dummy code or dummy network code 21:34 < bridge_> there so many possibilities 21:36 < bridge_> Can these warnings be fixed for skins in the DB? 21:36 < bridge_> `libpng: warning for file "downloadedskins/Bat.15596.tmp": iCCP: known incorrect sRGB profile` 21:37 < bridge_> yeah 21:37 < bridge_> i think we simply have to resave them 21:37 < bridge_> @ravie_ravie release date should not reset anymore, so we can fix such issues 21:37 < bridge_> 21:37 < bridge_> @robyt3 do you have a list of all warnings? 21:37 < bridge_> then the crew can do it at once 21:37 < bridge_> https://cdn.discordapp.com/attachments/293493549758939136/1130946569194176702/message.txt 21:38 < bridge_> its not hurry, just when u have fun to clean up some database stuff 21:39 < bridge_> Maybe they can write a script to detect this though 21:39 < bridge_> well new skins will be resaved by the @SkinDB bot 21:40 < bridge_> so i guess this wont happen anymore 21:40 < bridge_> I see 21:46 < bridge_> I have 2066 files in the `downloadedskins` folder and more than 80% of those files are `.tmp` files 21:47 < bridge_> i guess some downloads were cancelled then 21:47 < bridge_> did u set breakpoints? 21:47 < bridge_> No 21:47 < bridge_> Sometimes client crashes I guess 21:49 < bridge_> its stupid that we download the skins like rn anyway xd 21:49 < bridge_> we should add a sha256 to the skins in the skins.json in the db 21:49 < bridge_> download that 21:49 < bridge_> 21:49 < bridge_> and load the skins from downloaded skins first 21:49 < bridge_> using the hash 21:49 < bridge_> if the db hash matches 21:49 < bridge_> wtf is this file 21:49 < bridge_> https://cdn.discordapp.com/attachments/293493549758939136/1130949550920716288/image.png 21:50 < bridge_> 0 bytes size 21:50 < bridge_> is that from skins.tw? 21:50 < bridge_> date says is from almost exactly two months ago 21:50 < bridge_> it's the only weird file after I deleted the .tmp files 21:52 < bridge_> i also have .tmp 21:52 < bridge_> 21:52 < bridge_> and they are actually finished downloads 21:52 < bridge_> https://cdn.discordapp.com/attachments/293493549758939136/1130950151792504872/image.png 21:52 < bridge_> so i guess the client doesnt clean it up correctly when closing or somewhere 21:56 < bridge_> I just added a space after my skin name and somehow this immediately started a download for `bluekitty .7612.tmp` 21:57 < bridge_> There shouldn't be a skin with a space at the end, so I assume we trim spaces somewhere but not for the filename 22:07 < bridge_> @jupeyy_keks eh you want us to resave and reupload all those? xd 22:07 < bridge_> well or remove them if they are ugly xD 22:08 < bridge_> nah there are some old and good ones 22:08 < bridge_> it's just about saving them again without some extra png chunks 22:09 < bridge_> I think photoshop is one program that adds some CHRM chunks or whatever 22:52 < bridge_> Which lunatic puts a space at the end of a skin name 22:53 < bridge_> i put space after my name in your chatroom chillerdragon xD 22:53 < bridge_> You indeed are crazy sir 22:53 < bridge_> 10/10 hack 22:53 < bridge_> Abgespaced we say in Germany 22:58 < bridge_> I wanted to trigger a skin change so it would send it to the server, so I added and removed a space 23:06 < bridge_> Defs unintuitive behavior. What ever causes it