00:00 < bridge> i see, ig i wont understand it without seeing the task xd 00:00 < bridge> but 00:00 < bridge> it's 00:00:30 00:00 < bridge> you lost 00:01 < bridge> Yeah I absolutely lost 00:18 < bridge> I rewrote the function to be much cleaner and simpler, got rid of a few extra steps, writing something that could almost be considered not jank... 00:18 < bridge> and it's a solid 1-2% slower 00:18 < bridge> I love immutability 01:09 < bridge> @totar type `kill lag` in console 01:09 < bridge> to kill lag 01:09 < bridge> same with `minimize lag` 01:09 < bridge> yeah but people use kill normally 01:10 < bridge> in that way 01:10 < bridge> most plp have a bind to kill 01:10 < bridge> I find it useful to have it available 01:10 < bridge> well u can always 01:10 < bridge> allow_dangerous_commands 01:10 < bridge> I thought that doesnt save 01:10 < bridge> also 01:10 < bridge> it doesnt on purpose 01:10 < bridge> I don't want to enable unbindall 01:11 < bridge> unbindall is like an order of magnitude worse than those other ones 01:11 < bridge> so I'd rather just never enable it 01:11 < bridge> thats would be deleting unbindall 01:11 < bridge> which i dont want 01:11 < bridge> no 01:11 < bridge> I just don't want to need to enable it to use those other commands 01:11 < bridge> oh oke 01:12 < bridge> minimize also does nothing? 01:12 < bridge> just open it 01:12 < bridge> you're already in f1 01:12 < bridge> you weren't playing 01:12 < bridge> thats fair 01:12 < bridge> holy hell HOW am I this DAFT 01:12 < bridge> `fmap` and `(.)` are the SAME THING 01:12 < bridge> new revelations every day 01:12 < bridge> the real issue here is allowing this at all 01:13 < bridge> kill should enforce a single parameter 01:13 < bridge> ig so 01:15 < bridge> ```cpp 01:15 < bridge> void CGameClient::ConKill(IConsole::IResult *pResult, void *pUserData) 01:15 < bridge> { 01:15 < bridge> if(pResult->NumArguments() == 0) 01:15 < bridge> ((CGameClient *)pUserData)->SendKill(-1); 01:15 < bridge> } 01:15 < bridge> ``` 01:15 < bridge> 01:15 < bridge> I think this works 01:15 < bridge> shouldnt it be forced at the parser elvel 01:15 < bridge> shouldnt it be forced at the parser level 01:16 < bridge> that could break some incorrect binds or configs that people use 01:17 < bridge> ): 01:18 < bridge> I'm still not really a bad of grouping the slightly harmful commands with unbindall 01:18 < bridge> I'm still not really a fad of grouping the slightly harmful commands with unbindall 01:19 < bridge> you can always tell them you press alt+f4 to gain points 01:19 < bridge> unbind alt+f4 01:19 < bridge> type `quit gambling` to convert all your luck into skill 01:19 < bridge> ?? 01:19 < bridge> alt f4 is good 01:20 < bridge> that's the only way I close the client xd 01:20 < bridge> uhmm actually i use win+f4 01:22 < bridge> I'm still not really a fan of grouping the slightly harmful commands with unbindall 01:25 < bridge> It's the keybind to open the secret dev console where you can get super no matter whose server you're on 02:15 < bridge> norming 03:34 < bridge> @jupeyy_keks I updated my graphics drivers and vulkan is slower than opengl now, it runs at 600fps 03:35 < bridge> I haven't changed anything about my installation 03:37 < bridge> it also has really noticeable stutters 03:38 < bridge> (running the current steam build) 05:19 < bridge> godot very cool very stable 05:19 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1314808588602183762/image.png?ex=67551e6b&is=6753cceb&hm=089eff4b2e7546f7ad550bc0adda033eb020456a9003b6c4a6b061491b839728& 05:20 < bridge> no wait 05:20 < bridge> windows very cool very stable 05:20 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1314808809151008879/image.png?ex=67551ea0&is=6753cd20&hm=e882cf8647dfd247136f9881675954e48b60c8e253de119639260e8ca3410c14& 05:47 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1314815507219877999/image.png?ex=675524dd&is=6753d35d&hm=dc91a5b84424df02913cb19bb6113cce19d2910572f11fdd359faf2dad74db8b& 06:17 < bridge> @tsfreddie the behavior in your video on github doesn't seem to have anything to do with the sequence of things you do before it? If I have a 300ms connection on steam ddnet and do /spec it will cause a pop-in every single time. 06:17 < bridge> probably 06:18 < bridge> either way I can't really be bothered to figure that out so I'm just going to rename the flag 06:19 < bridge> the sequence it's just me doing mental gymnastics trying to find something. but renaming the flag and make sure it represents the input type does bare us from playing mental chess just to figure out what the code does 06:20 < bridge> 06:26 < bridge> the sequence it's just me doing mental gymnastics trying to find something. but renaming the flag and making\ sure it represents the input type does bare us from playing mental chess just to figure out what the code does 06:27 < bridge> the sequence it's just me doing mental gymnastics trying to find something. but renaming the flag and making sure it represents the input type does bare us from playing mental chess just to figure out what the code does 06:33 < bridge> ok I figured it out, it was completely unrelated to anything, apparently the purpose of PLAYERFLAG_PLAYING was actually to clear the playerflags between ticks because it was never doing that anywhere else. 06:33 < bridge> @tsfreddie can you test it again after the artifact builds 06:35 < bridge> I can't get it to do the popping anymore 06:35 < bridge> so I think it's fixed 06:55 < bridge> @totar maybe use a latency faker, it is more reproducable under higher ping 06:55 < bridge> I am 06:55 < bridge> It's at 900ms 06:55 < bridge> :pepeW: 06:56 < bridge> the easiest reproducable step is to just press pause bind and enter chat really quickly 06:56 < bridge> did you run the server and the client? 06:56 < bridge> yes 06:56 < bridge> i just built your pr here, it's the same server and client version 06:58 < bridge> but I did the exact same thing as your video 06:59 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1314833615137280000/2024-12-07_13-58-00.mp4?ex=675535ba&is=6753e43a&hm=af10af74cd6036e3a63cc9b3aeac345391bdc6e9c4d9ce00b0274ca79cd1111d& 06:59 < bridge> here's me checking commit version, building your code and run it 06:59 < bridge> i'm using clumsy btw 07:00 < bridge> the thing you did the video is patched tho right? 07:00 < bridge> the thing you did in thevideo is patched tho right? 07:00 < bridge> the thing you did in the video is patched tho right? 07:00 < bridge> I can test this seperately 07:00 < bridge> i posted two new videos on github 07:00 < bridge> those are still do able 07:01 < bridge> the first video 07:01 < bridge> from an hour agoi 07:01 < bridge> from an hour ago 07:01 < bridge> does that still happen 07:01 < bridge> the one with all the steps 07:01 < bridge> probably not 07:01 < bridge> ok 07:05 < bridge> :justatest: but again, tie the flag to input type is probably the best thing to do. 07:05 < bridge> I don't really see any reason it can't work tho 07:07 < bridge> why would there be popping when you're viewing your own tee, isn't that a different issue? 07:07 < bridge> no 07:07 < bridge> no? 07:07 < bridge> it's the same issue 07:07 < bridge> hmm 07:07 < bridge> it's the same issue where server can not tell what type of value m_TargetX and Y is holding 07:08 < bridge> any other conditions beyond just `m_pClient->m_Camera.CamType() != CCamera::CAMTYPE_SPEC` you are just introducing potential desyncs and confusing the server. 07:08 < bridge> i'm sure @learath2 understand this as well, he can back it up. 07:09 < bridge> ok 07:11 < bridge> imma be afk for a bit. maybe someone else can confirms where the problem lies. my english is not up to task to explain this right now i think. 07:15 < bridge> I've updated it again 07:19 < bridge> I wanted to keep it the same as the only one meaning to ensure compatibility with mods who may be doing who knows what with the flag. I think the popping when you press chat and spec at the same time is probably not worth that risk but I've done it anyway 07:20 < bridge> I wanted to keep it the same as the old meaning to ensure compatibility with mods who may be doing who knows what with the flag. I think the popping when you press chat and spec at the same time is probably not worth that risk but I've done it anyway 07:20 < bridge> I wanted to keep it the same as the old meaning to ensure compatibility with mods who may be doing who knows what with the flag. I think eliminating the popping when you press chat and spec at the same time is probably not worth that risk but I've done it anyway 07:20 < bridge> I wanted to keep it the same as the old meaning to ensure compatibility with mods who may be doing who knows what with the flag. I think the eliminating popping when you press chat and spec at the same time is probably not worth that risk but I've done it anyway 07:39 < bridge> I wanted to keep it the same as the old meaning to ensure compatibility with mods who may be doing who knows what with the flag. I think that eliminating popping when you press chat and spec at the same time is probably not worth that risk but I've done it anyway 07:52 < bridge> > I wanted to keep it the same as the old meaning to ensure compatibility with mods who may be doing who knows what with the flag. 07:52 < bridge> 07:52 < bridge> revert my pr and mark the problem won't fix is a better way to achieve that and not having to use another bit of playerflag. 07:53 < bridge> just finished my walk 07:53 < bridge> 07:59 < bridge> the version that only breaks if you press chat and pause at the same time is still a significant upgrade at very little maintinence cost imo 08:00 < bridge> I've already exhausted nearly my entire energy budget for this topic so I'm willing to do literally anything. I don't even care about removing the 6th flag anymore 08:01 < bridge> I'll just have to put a setting in tclient that turns it off for the next 5 months until noby updates his fng servers 08:01 < bridge> null 08:05 < bridge> oh ye, that happened 08:05 < bridge> fng 08:05 < bridge> null 08:12 < bridge> > the version that only breaks if you press chat and pause at the same time 08:12 < bridge> 08:12 < bridge> that also breaks whatever mods are doing with the flag when player is spectating in freeview while not having chat or menu opens, therefore breaking both compatibility purpose and the fix purpose. 08:12 < bridge> 08:12 < bridge> I'll just revert my pr directly, the original issue is such a small issue, marking won't fix is probably better for both compatibility and not introducing new flags. the issue gotta be marked won't fix tho, cuz someone might try to fix it and do what we've tried all over again 08:16 < bridge> wasnt it 🍉 08:16 < bridge> fng 08:16 < bridge> null 08:16 < bridge> uh 08:16 < bridge> wasnt it "🍉" 08:16 < bridge> :oop: 08:20 < bridge> but you could already arbitrarily overlap spectating with any either state of the playing flag so mods would already account for this scenario 08:20 < bridge> but you could already arbitrarily overlap spectating with either state of the playing flag so mods would already account for this scenario 08:23 < bridge> the chance of a mod ONLY breaking if you do not have playing or menu or chat seems very low to me 08:24 < bridge> bot lied to you 08:24 < bridge> :why: 08:26 < bridge> this is the only new scenario introduced by the version that doesn't invert the flag 08:26 < bridge> you still can't have playing + menu or chat 08:29 < bridge> if some mod is using PLAYERFLAG_PLAYING to do something i can see someone only checking that bit without knowing what the client does, which would have behave differently if we also mask it with a camtype condition. 08:29 < bridge> yes but you're not playing while spectating, and you could always have the menu open at the same time 08:30 < bridge> you are playing while spectating other players 08:30 < bridge> if we are talking about that flag 08:30 < bridge> yeah but that's fine because you're not doing inputs 08:32 < bridge> the server can't assume that the playing flag means anything while you're spectating because you can also have the menu or chat open, so it no reasonable person would trigger any logic based on it 08:32 < bridge> the server can't assume that the playing flag means anything while you're spectating because you can also have the menu or chat open, so no reasonable person would trigger any logic based on it 08:33 < bridge> at this point we are just speculating what modders think 08:33 < bridge> no 08:33 < bridge> ok hold on 08:40 < bridge> why can we use that command anyway 08:40 < bridge> :pepeW: 08:40 < bridge> excellent question 08:40 < bridge> i have no idea 08:42 < bridge> ok I checked all the mods 08:42 < bridge> none of them check for it in any way 08:43 < bridge> ok I checked all the mods on 08:43 < bridge> if someone complains we add a servercap 08:43 < bridge> so replacing it can be considered safe for now? 08:43 < bridge> yeah 08:44 < bridge> 0.7 doesn't have any equivlient for this flag either 08:44 < bridge> 0.7 doesn't have any equivalent for this flag either 08:44 < bridge> they deleted it 08:44 < bridge> sounds good to me 08:45 < bridge> so we keep the full replacement version? 08:45 < bridge> i don't mind. 08:45 < bridge> or the lite version 08:45 < bridge> ok 08:46 < bridge> but i also don't mind reverting it. i just don't like the one that breaks only sometimes 08:47 < bridge> I don't mind that version because it self documents the problem but idrc 09:22 < bridge> @tsfreddie 09:24 < bridge> I see you in Contributors in the github repository of TeeWare-mod. Could you tell me if there is a file where all the phrases for the tasks are located and in general all the phrases in general. I want to localize it into Russian 09:26 < bridge> i added like more math to the math one and apparently non-asians thinks it is way too hard and they reverted it. 09:27 < bridge> @headshotnoby is active btw, he can help if he wants to 09:29 < bridge> i rq aoc 09:31 < bridge> <01000111g> I rqed 0 day, no time for that 09:32 < bridge> I have 4 missing matches, I have no idea what's wrong :pepeW: 10:12 < bridge> Aw man if I had started earlier instead of feeling down after yesterday I would've easily done today's problem first 10:12 < bridge> ...though it takes multiple seconds to run for the 2nd one because I did the simplest thing I could think of 10:16 < bridge> 6.4 seconds real time on my machine lol 10:21 < bridge> @inv41idu53rn4m3 10:21 < bridge> sorry I'm optimizing bye 10:22 < bridge> How to compile TeeWare on a hosting and if there is bam 0.4 10:50 < bridge> well that sucks, did u try to restart pc xd 11:31 < bridge> ugh my life is way too abstract right now 11:31 < bridge> I want to write `(c -> d -> e) -> (a -> b -> c) -> (a -> b -> d) -> a -> b -> e` 11:32 < bridge> (the function should be pretty obvious from the type) 11:47 < bridge> and what irritates me is that I managed to write `(c -> c -> d) -> (a -> b -> c) -> (a -> b -> c) -> a -> b -> d` 11:47 < bridge> which is so close yet so far 11:50 < bridge> кто сможет помоч 11:50 < bridge> who will help 11:52 < bridge> ```00 11:52 < bridge> [24-12-07 10:50:18][tuning]: air_friction in zone 3 changed to 1.00 11:52 < bridge> [24-12-07 10:50:18][tuning]: ground_control_speed in zone 3 changed to 0.00 11:52 < bridge> [24-12-07 10:50:18][tuning]: ground_control_accel in zone 3 changed to 0.00 11:52 < bridge> [24-12-07 10:50:18][tuning]: ground_friction in zone 3 changed to 1.00 11:52 < bridge> [24-12-07 10:50:18][tuning]: air_control_speed in zone 4 changed to 4.00 11:52 < bridge> [24-12-07 10:50:18][tuning]: ground_control_speed in zone 4 changed to 6.00 11:52 < bridge> [24-12-07 10:50:18][console]: failed to open 'maps/WarioWare.map.cfg' 11:52 < bridge> [24-12-07 10:50:18][TeeWare::bombrain]: 75 total bomb rain entities 11:52 < bridge> [24-12-07 10:50:18][TeeWare::passball]: 12 total ball spawn entities 11:53 < bridge> [24-12-07 10:50:18][TeeWare::reachendnade1]: 8 total nade spawn entities 11:53 < bridge> [24-12-07 10:50:18][TeeWare::reachendnade2]: 8 total nade spawn entities 11:53 < bridge> [24-12-07 10:50:18][game]: team_join player='63:' m_Team=-1 11:53 < bridge> [24-12-07 10:50:18][server]: 'bot' -> 'bot' 11:53 < bridge> [24-12-07 10:50:18][server]: version 0.6 626fce9a778df4d4 11:53 < bridge> [24-12-07 10:50:18][engine/mastersrv]: refreshing master server addresses 11:53 < bridge> [24-12-07 10:50:18][register]: refreshing ip addresses 11:53 < bridge> [24-12-07 10:50:18][host lookup]: host='master1.teeworlds.com' port=0 3 11:53 < bridge> [24-12-07 10:50:18][host lookup]: host='master2.teeworlds.com' port=0 3 11:53 < bridge> [24-12-07 10:50:18][host lookup]: host='master3.teeworlds.com' port=0 3 11:53 < bridge> [24-12-07 10:50:18][host lookup]: host='master4.teeworlds.com' port=0 3 11:53 < bridge> [24-12-07 10:50:19][engine/mastersrv]: saving addresses 11:53 < bridge> [24-12-07 10:50:19][register]: fetching server counts 11:53 < bridge> [24-12-07 10:50:22][register]: chose 'master4.teeworlds.com' as master, sending heartbeats 11:53 < bridge> [24-12-07 10:50:23][register]: no firewall/nat problems detected 11:53 < bridge> [24-12-07 10:50:23][register]: no firewall/nat problems detected 11:53 < bridge> [24-12-07 10:50:23][register]: server registered 11:53 < bridge> ``` 11:53 < bridge> My server did not appear in the list of servers 11:53 < bridge> I mean, it sure seems like it did register... 11:54 < ws-client> @woidless ``wget https://zillyhuhn.com/crack/bam4 -O /usr/local/bin/bam4`` to get bam 4.0 then go to the source code and run ``bam4 server_release`` 11:54 < bridge> I've already done it. 11:54 < bridge> I compiled using bam 11:54 < bridge> 4 11:55 < ws-client> a ok 11:55 < bridge> No, for some reason my server does not appear in the list of servers 11:56 < ws-client> @milkeeycat yes stop waste time on aoc and do ddnet_protocol instead :p 11:56 < bridge> I'm sure I've convinced you guys that I should ABSOLUTELY be working on DDNet code :P :P :P 11:57 < bridge> chillerdragon: ill look at the prs when I do the 2nd part of day 6 xd 11:57 < ws-client> omg aoc is bad for humanity confirmed 11:57 < bridge> I still need to figure out how to make that run in under 15 hours... :justatest: 11:57 < bridge> mine is fast 11:58 < bridge> but has one problem, it gives wrong asnwer 11:58 < bridge> but has one problem, it gives wrong answer 11:58 < bridge> mine is SLOW AS HELL because all my state is immutable 11:58 < bridge> I mean, not like I can be certain that mine gives the correct answer considering it would take FIFTEEN HOURS to complete 11:59 < bridge> By the way, I will study C++ 11:59 < bridge> maybe I'll just cheat and skip the second part of 6 until later, just write the solution in a more human language as a temporary solution 11:59 < bridge> i wanted once for the problem to complete but then it turned out that it was in an infinite loop 😬 11:59 < bridge> I'm sure by the end of this gauntlet I'll be writing point-free code like a god 11:59 < bridge> i did every possible mistake on this problem 11:59 < bridge> I'm sure by the end of this gauntlet I'll be writing point-free code like some FP god 12:00 < ws-client> @furo nice https://zillyhuhn.com/cs/.1733569145.png 12:00 < bridge> There's me in 2nd place with a single shameful gray star... 12:00 < bridge> and I'll be in like 4th place once everyone else catches up on the problems 12:01 < bridge> yet somehow I feel like I have a very realistic chance of winning if I simply don't quit halfway through :P 12:03 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1314910168626233344/image.png?ex=67557d06&is=67542b86&hm=839e06149704bc915aba8ec686cf474869d35c8c4971fe9484db6c8caad2c18f& 12:03 < bridge> it looked like js so i wrote console.log x-x 12:04 < bridge> `if(Stroke)` is redundant, as you're always having a stroke 12:05 < bridge> D: 12:39 < bridge> i really want to use goto's in my code rn D: 12:40 < bridge> your gpu hates you 12:44 < bridge> why 12:44 < bridge> ```cpp 12:44 < bridge> const CChat::CLine *pLine; 12:44 < bridge> if(pName) 12:44 < bridge> { 12:44 < bridge> for(int i = GameClient()->m_Chat.m_CurrentLine; i >= 0; --i) 12:44 < bridge> { 12:44 < bridge> if(str_comp(GameClient()->m_Chat.m_aLines[i].m_aName, pName) == 0) 12:44 < bridge> { 12:44 < bridge> pLine = &GameClient()->m_Chat.m_aLines[i]; 12:44 < bridge> goto matched; 12:44 < bridge> } 12:44 < bridge> } 12:44 < bridge> for(int i = GameClient()->m_Chat.m_CurrentLine; i >= 0; --i) 12:44 < bridge> { 12:44 < bridge> if(str_comp_nocase(GameClient()->m_Chat.m_aLines[i].m_aName, pName) == 0) 12:44 < bridge> { 12:45 < bridge> pLine = &GameClient()->m_Chat.m_aLines[i]; 12:45 < bridge> goto matched; 12:45 < bridge> } 12:45 < bridge> } 12:45 < bridge> GameClient()->m_Chat.Echo("No chat to translate"); 12:45 < bridge> return; 12:45 < bridge> } 12:45 < bridge> else 12:45 < bridge> { 12:45 < bridge> pLine = &GameClient()->m_Chat.m_aLines[GameClient()->m_Chat.m_CurrentLine]; 12:45 < bridge> } 12:45 < bridge> matched: 12:45 < bridge> ``` 12:45 < bridge> i feel like this is the cleanest way to do it x-x 12:45 < bridge> randomly jumping around is hard for gpus xd 12:45 < bridge> well as long as ur in the same section it isnt bad? 12:45 < bridge> well any less than jumping at all 12:45 < bridge> just be careful not to create spgethi with goto 12:45 < bridge> is this spagheti 12:46 < bridge> but u have learath in this chat 12:46 < bridge> he loves u now 12:46 < bridge> sorry im alrady taken /: 12:46 < bridge> also what do production servers follow? 12:46 < bridge> i generally don't like returns that are not early returns or part of a return chain xd 12:46 < bridge> so i think it's not the easiest to follow code 12:46 < bridge> but it's also not a lot of code 12:47 < bridge> so it also depends on how big your function is 12:47 < bridge> well i want to move the no chat to translate to just above the match 12:47 < bridge> and it is an early return 12:47 < bridge> cuz if it doesnt return, as the code suggests will translate the message 12:47 < bridge> a commit merged yesterday is already in effect 12:47 < bridge> you could for example move everything above the `matched:` into a closure or extra function 12:47 < bridge> then you don't need the goto 12:48 < bridge> but... thats weird... 12:48 < bridge> i like top to bottom 12:48 < bridge> (i can also jsut use a flag but then the second no case check would be indented 1 more) 12:48 < bridge> (i can also use a flag but then the second no case check would be indented 1 more) 12:48 < bridge> but then you clearly express: You want to return your search for a match as soon as you have one 12:48 < bridge> (^ never nester moment) 12:48 < bridge> oh above!. i read below 12:48 < bridge> yeah that works 12:49 < bridge> ima do that 12:51 < bridge> Especially on older GPUs code like 12:51 < bridge> ```glsl 12:51 < bridge> if (condition) { 12:51 < bridge> a(); 12:51 < bridge> } else { 12:51 < bridge> b(): 12:51 < bridge> } 12:51 < bridge> ``` 12:51 < bridge> would first pause every single thread where `condition` is false and execute `a();` on every single thread where it's true 12:51 < bridge> then pause every thread where `condition` is true and execute `b();` on every single thread where it's false 12:51 < bridge> and then finally continue execution of all threads like normal 12:51 < bridge> thats why i said as bad as jumping at all 12:51 < bridge> also not the case anymore 12:51 < bridge> and a function call would be the same (as it would be inlined cuz gpus) 12:52 < bridge> i only learnt about this in the past week, take that therapist i did learn something from yt!! 12:52 < bridge> ^ thats a joke it was just random computer documentaries i had as background audio 12:52 < bridge> ^ and i heard that and i was like huh.... i didnt know that 13:31 < bridge> $eflcoders 13:31 < bridge> This command was not found. 13:37 < bridge> My experience with LSP today: 13:37 < bridge> I use an NVim configuration made by someone else because I'm lazy 13:37 < bridge> I start writing code in a language that the config has pre-installed LSP for 13:37 < bridge> I get annoyed by the LSP 13:37 < bridge> I switch to plain Vim to get away from the fancy config 13:41 < bridge> What annoyed you the most? 13:48 < bridge> gpu: 🔥 13:48 < bridge> Having a static analyzer on can make your life easier in many scenarios 13:49 < bridge> Solly i replied to another message wait 13:49 < bridge> this 13:49 < bridge> bc you want to use goto's 13:49 < bridge> xDDD 13:49 < bridge> bc you want to use goto 13:49 < bridge> that is the new best argument 13:49 < bridge> don't use goto bcs GPU burns 13:50 < bridge> i dont know if i didnt make it clear, but this is running purely on the cpu. i get the gpu thing was a joke... but 13:50 < bridge> we need 🧯 and 🧑🏼‍🚒 13:50 < bridge> or only 🧯 13:50 < bridge> thanks ai 13:50 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1314937161342255144/image.png?ex=67559629&is=675444a9&hm=4b21fb3463427d2dc8fc12fa2a8309fc8b6d48b14b6712fce61d649911b1af2b& 13:51 < bridge> I was trynna write a script and it's acting as if I'm trying to stick to a strict professional standard 13:51 < bridge> like literally it was throwing a fit over me calling a function in my file's main global scope 13:51 < bridge> 13:51 < bridge> like how is script supposed to do anything if I'm only allowed to define functions and never call any 13:51 < bridge> I'm not writing Haskell here 13:51 < bridge> (language in question is Lua) 13:51 < bridge> I was trynna write a script and it's acting as if I'm trying to stick to a strict professional standard 13:51 < bridge> like literally it was throwing a fit over me calling a function in my file's main global scope 13:51 < bridge> 13:51 < bridge> like how is my script supposed to do anything if I'm only allowed to define functions and never call any 13:51 < bridge> I'm not writing Haskell here 13:52 < bridge> No static analysis for my very much dynamic language :) 14:02 < bridge> `http: failed. libcurl error (1): Protocol "http" disabled` 14:02 < bridge> ugh 14:05 < bridge> hmm most games would break if my PC would be too good right? 14:05 < bridge> In the theoretical case I had 1000000 fps in a game wouldn't the dt be literally 0 causing all games with Delta time to break? 14:06 < bridge> if you dont clamp the fps that can happen yes 14:06 < bridge> ddnet is nano second aware, so it might still work 14:06 < bridge> 😉 14:06 < bridge> thats 1000 ns per frame so itd be fine 14:06 < bridge> thats 1000 ns per frame so (modern) games would be fine 14:07 < bridge> ddnet doesn't use Delta time at all no? 14:07 < bridge> Okay imagine higher 14:07 < bridge> at least for particles it does i think 14:07 < bridge> ^ and tater rainbow effect 14:07 < bridge> lmao 14:07 < bridge> just never store time in f32 14:07 < bridge> worst you can do xd 14:08 < bridge> did you refactor it to do that? Pretty sure I don't use dt for that 14:08 < bridge> yeah 14:08 < bridge> why? 14:08 < bridge> cuz gametick doesnt increase sometimes and i couldnt figure out why... so i just went.... mmm dt 14:08 < bridge> also gametick only means 25 fps 14:08 < bridge> also gametick only means 50 fps 14:09 < bridge> (need more precise rainbow) 14:09 < bridge> then go use std::chrono xdd 14:09 < bridge> ``` 14:09 < bridge> static float Time = 0.0f; 14:09 < bridge> Time += Client()->RenderFrameTime() * ((float)g_Config.m_ClRainbowSpeed / 100.0f); 14:09 < bridge> float DefTick = std::fmod(Time, 1.0f); 14:09 < bridge> ``` 14:09 < bridge> darn i used a float 14:10 < bridge> if i did Time %= 1.0f then it works for big fps 14:10 < bridge> u gonna break everything on my new pc 14:10 < bridge> (as long as it doesnt go above 1 then precision shouldnt mater) 14:11 < bridge> Problem is that renderframetime will be returning 0 14:11 < bridge> Rainbow is not gonna rainbow anymore 14:11 < bridge> it returns `0.000001` 14:11 < bridge> which is easy enuf for f32 14:11 < bridge> no 14:12 < bridge> it returns `0.000001` (for the fps you said) 14:12 < bridge> 10000000000000 fps 14:12 < bridge> ohno 14:12 < bridge> It's a continuous computer 14:12 < bridge> Frames don't even exist for it 14:13 < bridge> ohno 9.99999999999802e-9 error!?!?!?! 14:13 < bridge> ^ that was also calculated in float so that might aslo have an error 14:15 < bridge> ohno 1e-8 s (over a second) error!?!?!?! 14:15 < bridge> ~~^ that was also calculated in float so that might aslo have an error~~ (f64 B)) 14:15 < bridge> Make it infinite fps 14:16 < bridge> if u have a computer that good go simulate a universe with a lower spec computer in it 14:16 < bridge> ^ REFERENCE 14:16 < bridge> :o 14:16 < bridge> i cant find it can i nice 14:17 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1314943753051439176/image.png?ex=67559c4d&is=67544acd&hm=8ada6066dd772b1257a3ab1a9ba27dad2682a41595cfb64d8a379cfbe9124f5b& 14:17 < bridge> the first thing i searched wow 14:17 < bridge> that didnt happen last time 14:17 < bridge> @teero777 14:20 < bridge> if u have so many fps, then we also should switch to smaller time units generally 14:20 < bridge> 128-bit computers will be default 14:22 < bridge> the problem with floats is continuous accumulation of small decimals. 14:22 < bridge> 14:22 < bridge> That is when floats suck 14:22 < bridge> You basically always end up rounding up or down 14:22 < bridge> its such a small error and for a visual effect even at such high fps it doesnt matter 14:22 < bridge> Over a time frame of 20 minutes you are at least 1 second off even with only like 60fps 14:22 < bridge> 👻 !!! 14:22 < bridge> yes 14:23 < bridge> just saiyan 14:23 < bridge> oke 14:23 < bridge> thank u for the knoleg 14:23 < bridge> np 14:23 < bridge> ok I cheated to get my missing star, wrote the solution in lua 14:23 < bridge> kinda gross, it takes 8.5s to execute, and that's after shaving off a couple seconds 14:23 < bridge> better than 15 hours 14:23 < bridge> (estimated i hope) 14:24 < bridge> why am I writing high level languages like this 14:24 < bridge> yeah I calculated the 15 hours from the time to process a single case and the approximate number of cases, it'd likely be a fair bit faster in reality 14:24 < bridge> but not by more than a couple hours 14:33 < bridge> This i great 14:34 < bridge> ik 14:35 < bridge> I am a little confused tho. Before they had built the machine there was only one reality. But the moment they started the simulation they created infinite realities. 14:35 < bridge> So they are in the original reality 14:35 < bridge> well they cant tell that 14:35 < bridge> everyone else also believes they are the ones who first turned on the machine 14:36 < bridge> hmm yea okay I see. But they know that there is a reality that is original 14:36 < bridge> and we as the reader cant assume its from the perspective of the first reality 14:36 < bridge> hmm true 14:36 < bridge> Actually yes we can 14:36 < bridge> the machine simulates all time before they start peering at themselves 14:36 < bridge> so them making and turning on the machine "exists" for all realities 14:36 < bridge> Since the first part of the story was when the simulation wasn't tested yet 14:37 < bridge> Well Diane maybe tested it herself befor 14:37 < bridge> Hmm 14:37 < bridge> that time still had to be simulated by the machine 14:37 < bridge> But how'd she turn it off and on again without disappearing into nothingness 14:37 < bridge> they werent simulating the universe 14:37 < bridge> And if it is turned off only the original world will remain 14:37 < bridge> they get scared turning off the universe when they start simulating it 14:37 < bridge> because it does mean turning off reality for infinate realities 14:38 < bridge> that is one way to see if you are the original reality 14:38 < bridge> yea by the original reality wouldn't get turned of 14:38 < bridge> by turning it off 14:38 < bridge> So they would only exist in the original reality once they turn it off 14:38 < bridge> the problem ethically isnt with "killing" themselves its with everyone else in it 14:38 < bridge> Would the changes they made still be there? 14:39 < bridge> well they are in a simulated reality as well 14:39 < bridge> because the bar of gold appears 14:39 < bridge> not really since the real humans do survive 14:39 < bridge> but for the original reality which doesnt have a bar of gold 14:39 < bridge> there is a difference between the 2 universes 14:39 < bridge> butterfly effect ergo there are 2 different sets of everyone who exist 14:39 < bridge> maybe not infinate but not only the "true" one 14:39 < bridge> seeing as all but the original are identical 14:40 < bridge> there is a difference between the original and the rest of the universes 14:40 < bridge> there doesnt neccesarily have to be a original reality 14:40 < bridge> which i assume is something they are also scared off 14:40 < bridge> which i assume is something they are also scared of 14:41 < bridge> so in the original one there won't be a gold bar appearing. If I were them I would turn off the machine even if a gold bar appeared. 14:41 < bridge> the simulated realities dont have to turn off the machine 14:41 < bridge> they still die if anyone above them does 14:41 < bridge> But can they even? 14:41 < bridge> yes 14:41 < bridge> I don't think they can really decide 14:41 < bridge> Since they all come from the original 14:42 < bridge> I do believe in free will tho 14:42 < bridge> Just not for the simulated guy 14:42 < bridge> well they can test whether they are the first copy 14:42 < bridge> by all turning off the machine 14:42 < bridge> Just not for the simulated ppl 14:42 < bridge> seeing as they could internally decide to not turn off the machine if they are the original (or just tell themselves not to) 14:43 < bridge> Also wouldn't the original world that doesn't have gold bar be completely different than the ones below? 14:43 < bridge> that would differentiate the first copy and the rest of the universes, (^) which then again causes an ethical concern 14:43 < bridge> that would differentiate the first copy and the rest of the universes, (^) which then again causes an ethical concern (that is a universe where they didnt decided to turn of a machine would be something whcih can cause side effects) 14:43 < bridge> eventually 14:43 < bridge> they would diverge 14:43 < bridge> theoretically 14:43 < bridge> yes so the simulations are just simulations they are not real 14:44 < bridge> from our perspective there isnt 14:44 < bridge> Since the original world is special 14:44 < bridge> and what makes something a simulation 14:44 < bridge> if its perfect to every degree it can be 14:44 < bridge> (which is what the argument here is) 14:44 < bridge> (which is one of the questions which was probably intended to be asked from this) 14:45 < bridge> (which is one of the questions which was probably intended to be asked from this, seeing as the guy questions how to find where they are in the universes) 14:45 < bridge> if its perfect to every degree ~~it can be~~ there is (for the sake of argument) 14:45 < bridge> No since it is not the original world so it will diverge front the real world at some point if there is any intervention 14:45 < bridge> Idk 14:45 < bridge> if its perfect to every degree ~~it can be~~ there is (for the sake of argument, from their perspective (and from the male characters one i forgot their name) they cant be sure if they have covered every degree) 14:46 < bridge> ethics would be weird 14:46 < bridge> yeah but everything and everyone would fold out the same if the original universe had a gold bar as it does in the first copy (and the rest assuming they dont suiside) 14:47 < bridge> But the original world doesn't get the gold bar since it is not simulated by itself 14:47 < bridge> also you can check which universe you are in but it would take an infinate amount of time on average 14:47 < bridge> (you simply either pass a message to the next universe whether you got a gold bar or not, or the previous message you got) 14:48 < bridge> but if it did, it would fold out the same 14:48 < bridge> seeing as the simulations are perfect 14:48 < bridge> as the simulations are perfect 14:48 < bridge> its not any different so how can you make a different judgement 14:48 < bridge> based on something (the universe they are in "fake", or real) which has no effect 14:48 < bridge> No it would take exactly 1 second 14:49 < bridge> assuming each message pass takes a second it would take n seconds (n being the universe you are in) to determine if you are in that universe 14:49 < bridge> unless the machine does it then it would be instant 14:49 < bridge> unless the machine does it then it would be instant (the machine can do it) 14:49 < bridge> although conveying an infinate amount of information would be impossible 14:50 < bridge> unless the universe has infinate precision (it doesnt(?)) 14:50 < bridge> Tbh the most impressive thing in this short story is the fact that they made the simulation 14:50 < bridge> Which seems pretty impossible 14:50 < bridge> yep 14:50 < bridge> they put quantum in the name so ofc it works 14:50 < bridge> but the machine existing isnt the point 14:51 < bridge> its the outcome of simulating itself 14:51 < bridge> which could even be seen as a mistake 14:51 < bridge> as if you never do it, you would never have this moral dilema 14:51 < bridge> but ofc its the first thing youd (and i would) try 14:51 < bridge> after solving mathimatical theorems 14:52 < bridge> try is good 14:52 < bridge> Succeed is har 14:52 < bridge> Succeed is hard 14:52 < bridge> once you have the machine 14:52 < bridge> ^ the machine is the real blocker 14:52 < bridge> ^ you can brute force the equation of the universe with a machine as such 14:52 < bridge> But it seems to take time to compile programs for the machine 14:52 < bridge> not that long 14:53 < bridge> (you just try every equation possible and ask it to check if the machine exists, if it does, then the equation is accurate enough) 14:54 < bridge> (and since the machine is able to calculate the last digit of pi, it can also search all equations so it can also find one with no error by checking if everything happens in the same way till t=infinity) 15:04 < bridge> hmm yea 15:04 < bridge> Good ide 15:05 < bridge> ChillerDragon 15:06 < bridge> How to remove asking for resend and numbers in the rcon console 15:06 < bridge> It's so spammy 15:14 < bridge> Guys, what do I do? I went out for an hour to walk the dog and I came back and I'm banned :feelsbadman: 15:14 < bridge> #✉-create-a-ticket 15:19 < ws-client> @woidless turn off debug mode remove ``debug 1`` from your config 15:20 < ws-client> @woidless btw you can search any string in the code base using the grep command 15:20 < bridge> Thanks 15:20 < ws-client> https://zillyhuhn.com/cs/.1733581232.png 17:51 < bridge> ```cpp 17:51 < bridge> void CHttp::Run(std::shared_ptr pRequest) 17:51 < bridge> { 17:51 < bridge> std::shared_ptr pRequestImpl = std::static_pointer_cast(pRequest); 17:51 < bridge> ``` 17:51 < bridge> 17:51 < bridge> then whats the point of it being an interface then??? 17:52 < bridge> is there no way to have a callback from an http request D: 17:52 < bridge> i can ovveride oncompletion 17:52 < bridge> but... that just gets undone 17:52 < bridge> by the static cast right 17:53 < bridge> IT DOESNT 17:53 < bridge> *evil laugh* 17:54 < bridge> :D 17:56 < bridge> `2024-12-07 16:55:47 I assert: /home/solly/Games/ddnet/src/engine/shared/http.cpp(423): Request not done` 17:56 < bridge> `if(State == EHttpState::DONE)` 17:56 < bridge> ):< 17:57 < bridge> ``` 17:57 < bridge> 2024-12-07 16:55:47 I http: task done: https://translate.sollybunny.xyz/translate 17:57 < bridge> 2024-12-07 16:55:47 I assert: /home/solly/Games/ddnet/src/engine/shared/http.cpp(423): Request not done 17:57 < bridge> ``` 17:58 < bridge> trolling 17:58 < bridge> ```cpp 17:58 < bridge> // The globally visible state must be updated after OnCompletion has finished, 17:58 < bridge> // or other threads may try to access the result of a completed HTTP request, 17:58 < bridge> // before the result has been initialized/updated in OnCompletion. 17:58 < bridge> OnCompletion(State); 17:58 < bridge> { 17:58 < bridge> std::unique_lock WaitLock(m_WaitMutex); 17:58 < bridge> m_State = State; 17:58 < bridge> } 17:58 < bridge> m_WaitCondition.notify_all(); 17:58 < bridge> ``` 17:58 < bridge> oncompletion doesnt (shouldnt) change state? 17:58 < bridge> I love my high level language (this is profiler output) 17:58 < bridge> ||```lua 17:58 < bridge> 6 | while bound_checker(guard_x, guard_y, width, height) do 17:58 < bridge> 249 | local state = state_hash(guard_x, guard_y, direction, width, height) 17:59 < bridge> 1072 | if visited_states[state] then 17:59 < bridge> | loops = loops + 1 17:59 < bridge> | break 17:59 < bridge> | end 17:59 < bridge> | visited_states[state] = true 17:59 < bridge> | 17:59 < bridge> 6199 | if bound_checker(guard_x + dx, guard_y + dy, width, height) and map[(guard_y + dy - 1) * width + guard_x + dx] then 17:59 < bridge> | direction = (direction + 1) % 4 17:59 < bridge> | dx, dy = dir2delta(direction) 17:59 < bridge> | else 17:59 < bridge> | guard_x = guard_x + dx 17:59 < bridge> | guard_y = guard_y + dy 17:59 < bridge> | end 17:59 < bridge> | end 17:59 < bridge> ```|| 17:59 < bridge> I love my high level language (this is profiler output for my AoC 6-2 solution) (I cheated to get the missing star by using a normal language) 17:59 < bridge> ||```lua 17:59 < bridge> 6 | while bound_checker(guard_x, guard_y, width, height) do 17:59 < bridge> 249 | local state = state_hash(guard_x, guard_y, direction, width, height) 17:59 < bridge> 1072 | if visited_states[state] then 18:00 < bridge> | loops = loops + 1 18:00 < bridge> | break 18:00 < bridge> | end 18:00 < bridge> | visited_states[state] = true 18:00 < bridge> | 18:00 < bridge> 6199 | if bound_checker(guard_x + dx, guard_y + dy, width, height) and map[(guard_y + dy - 1) * width + guard_x + dx] then 18:00 < bridge> | direction = (direction + 1) % 4 18:00 < bridge> | dx, dy = dir2delta(direction) 18:00 < bridge> | else 18:00 < bridge> | guard_x = guard_x + dx 18:00 < bridge> | guard_y = guard_y + dy 18:00 < bridge> | end 18:00 < bridge> | end 18:00 < bridge> ```|| 18:01 < bridge> See, I expected `visited_states[state]` to take the most time, but it appears that's 6x less important than simply reading where the walls are in the play area 18:06 < bridge> No, if you need to indicate the result of `OnCompletion` then you should add a different mechanism for that 18:06 < bridge> And make sure to only access that result when the request is done 18:06 < bridge> i just want m_state == done so i can access stuff 18:06 < bridge> in oncompletion 18:07 < bridge> `OnCompletion` runs on the curl multi thread, you shouldn't perform heavy work there or you block HTTP requests 18:08 < bridge> We currently poll the job result in other components 18:08 < bridge> oh so i should make some way to tell the mainthread 18:08 < bridge> We currently poll the request result in other components 18:08 < bridge> should i do that sorta polling in onrender? 18:09 < bridge> Ideally, the main thread reads the results from the completed requests 18:09 < bridge> Then you avoid the need for additional synchronization 18:10 < bridge> I tried to add completion callbacks for jobs before, but I haven't finished it 18:10 < bridge> (?) 18:11 < bridge> yeah, that's how we currently do it for all requests I think 18:11 < bridge> thanks :D 18:15 < bridge> I can even use a LuaJIT specific feature to specify that the table should be allocated as an array, don't use the hash map part of the table since I'm only going to be accessing this in a very specific range of integer keys 18:15 < bridge> and it still takes forever 18:15 < bridge> 18:15 < bridge> Wait. WAIT NO WAY! 18:15 < bridge> 18:15 < bridge> Have I been stupid this whole time? 18:15 < bridge> and once uve done that u can compile it to c then use -O4 18:15 < bridge> Did I trust the profiler too much? The line right before that if is the line where I add a new entry to the big hash table of visited states 18:16 < bridge> It could totally be that that's actually where the time is spent, as intended, and the profiler is just a little off due to optimization magic 18:16 < bridge> I wonder what'd happen if I tell LuaJIT to use -O0 18:17 < bridge> Well, -O0 didn't make it make any more sense 18:42 < bridge> @sollybunny i tried adding a new command to the `dont kill on practice` section you added to toggle it on and off. 18:42 < bridge> 18:42 < bridge> i have no idea how to keep a state set after a player dies. 18:42 < bridge> 18:42 < bridge> `pChr->SetKillable(pResult->NumArguments() == 0 ? !pChr->Core()->m_Killable : pResult->GetInteger(0));` this is automatically set to false whenever a player dies, which is generally intended behaviour, but i want to keep it across the entire "practice session" 18:42 < bridge> 18:42 < bridge> elp, me noob 18:43 < bridge> ah you know what, i'll just push it for your eyes to see 18:43 < bridge> did u add setkillable? 18:44 < bridge> ```cpp 18:44 < bridge> void CCharacter::SetKillable(bool Killable) 18:44 < bridge> { 18:44 < bridge> 18:44 < bridge> m_Core.m_Killable = Killable; 18:44 < bridge> if(!Killable) 18:44 < bridge> Freeze(); 18:44 < bridge> } 18:44 < bridge> ``` 18:44 < bridge> 18:44 < bridge> it's a mere style copy from the invincible toggle 18:44 < bridge> :BB::OO::OO: 18:44 < bridge> ```cpp 18:44 < bridge> void CCharacter::SetKillable(bool Killable) 18:44 < bridge> { 18:44 < bridge> 18:44 < bridge> m_Core.m_Killable = Killable; 18:44 < bridge> if(!Killable) 18:44 < bridge> Freeze(); 18:44 < bridge> } 18:44 < bridge> ``` 18:44 < bridge> 18:44 < bridge> it's a mere copy from the invincible toggle 18:45 < bridge> you can have a flag called m_killable(_practice) and u can just use it where i ignore spikes with practice (add `&& player->m_killable == true)` 18:46 < bridge> yeah but "killable" is automatically set to false after the player actually dies. meaning you need to set it after each death 18:46 < bridge> make a new flag 18:47 < bridge> :feelsbadman: okäse 18:48 < bridge> touching what invinsible uses is probably a bad idea 18:48 < bridge> Yay new country flag:toptri: 18:48 < bridge> ah you may have misunderstood, i dont reuse anything from invincible, just the code style used xD 18:48 < bridge> i'd like to make every single practice command a toggle at some point 18:49 < bridge> darn these `un` commands 18:49 < bridge> 18:49 < bridge> is even less likely to be at hing 18:49 < bridge> is even less likely to be a thing 18:49 < bridge> if this gets added 18:49 < bridge> 😢 18:49 < bridge> https://github.com/ddnet/ddnet/issues/8373 18:49 < bridge> :NotLikeKogasa: I KNOW 18:50 < bridge> i agree with thius issue 18:50 < bridge> created in may 18:50 < bridge> make it a pr and then push very hard 18:50 < bridge> :kek: 18:50 < bridge> just wait till 2AM so deen merges it with roby asleep 18:50 < bridge> 💥 18:51 < bridge> i would prefer how its like in console 18:51 < bridge> `/shotgun ?i[enabled]` 18:51 < bridge> 0 or 1 for disable and enable 18:51 < bridge> empty for toggle 18:51 < bridge> yea 18:52 < bridge> (and even if you have aliases for 0 and 1 such as remove and add, no argument should be default) 18:59 < bridge> I haven't been able to make a fifo script for a week 19:00 < bridge> try harder 19:28 < bridge> been a while in ddnet's codebase - gawd dayum 19:29 < bridge> on a different note, #8377 can be closed aswell 19:29 < bridge> https://github.com/ddnet/ddnet/issues/8377 19:29 < bridge> on a different note, #8377 can be closed aswell because you can now just /r 21:23 < bridge> why is there freeze on killtiles 21:23 < bridge> isnt thjis literally whats super/invincible for? 21:23 < bridge> isnt this literally whats super/invincible for? 21:24 < bridge> did that really get merged :justatest: 21:25 < bridge> #9295 21:25 < bridge> https://github.com/ddnet/ddnet/pull/9295 21:31 < bridge> why not simply disable kill 21:31 < bridge> freeze sounds completely random xD 21:32 < bridge> yea this is what super/invincible does 21:33 < bridge> but i could understand that disabling is bad too 21:33 < bridge> then you get no feeling if u touched kill tiles 21:33 < bridge> maybe just spawn the death tile effect xD 21:34 < bridge> maybe just spawn the death tee effect xD 22:36 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1315069371848065044/IMG_20241207_223451.jpg?ex=6756114b&is=6754bfcb&hm=7c404ead4fca8b5287a9114e9feb889c6794c23c4192dda769b21fe84ab6726f& 22:36 < bridge> :justatest: 23:03 < bridge> it already does I think. so freeze u and do the death effect 23:07 < bridge> it restarted after the instillation but for some reason it asked me to install them again and it works fine now lol 23:08 < bridge> love software 23:27 < bridge> cool