00:30 < bridge> just realized my vid is broken 00:31 < bridge> actually i just reopened the game and it's still doing it even with no controllers ever having been detected 00:31 < bridge> seems like whenever u start the game with a controller plugged in and have joystick inputs, mouse movement is treated as joystick input even when no controller is connected 00:40 < dann> hi 01:27 < ws-client> hi 01:28 < bridge> yo :) 01:29 < ws-client> papa tiga 02:50 < ws-client> https://zillyhuhn.com/cs/.1726361423.png 02:50 < ws-client> i have the feeling i designed my code poorly <:justatest:572499997178986510> 02:56 < bridge> big urgh 05:17 < ws-client> jiggsel still wakey? @jxsl13 05:17 < bridge> yes 05:17 < ws-client> nice 05:17 < ws-client> what stats to track in zCatch? 05:18 < ws-client> also wtf happend to ur sleep schedule 05:20 < bridge> https://github.com/jxsl13/zcatch/blob/zCatch-0.7.x/src/game/server/gamemodes/zcatch/playerstats.cpp#L25 05:20 < bridge> I had stuff like this here 05:20 < ws-client> ticksCaught and in game interesting 05:20 < ws-client> is a fail a missed shot or a lost game? 05:21 < bridge> fail is being killed by gametiles 05:21 < ws-client> lol 05:21 < ws-client> what a shame stat 05:21 < bridge> falling down in ctf5 basically 05:21 < ws-client> i guess too ez to farm 05:21 < ws-client> but ima yoink the ticksCaught and in game thats cool 05:22 < bridge> can add spectator ticks if you want 05:22 < bridge> that's not caught._. 05:22 < ws-client> ye ima count only actual in game and actual dead time 05:22 < ws-client> no warmup and no spec 05:23 < bridge> I'd find warmup interessante ng tonsee as well 05:23 < bridge> Interesting 05:23 < ws-client> why xd 05:23 < bridge> juat from a data hoarder perspective it's cool to see how much of their ingame time people spend on what activity 05:24 < bridge> preferrably not too much on warmup 05:24 < ws-client> im not wasting clock cycles on stuff ppl wont bother to compare their ranks in :D 05:25 < bridge> clock cycles 05:25 < ws-client> but i made it easy to extend for ppl who want to fork it 05:25 < bridge> bruh 05:25 < bridge> add the integer xD 05:25 < ws-client> i rather track missed shots, wallshots and shortest time to win before that 05:25 < ws-client> but i dont think any of them are needed 05:26 < bridge> track everything you come up with >:D 05:26 < ws-client> -.- maybe ill extend it one day. But altering database layout sounds annoying thats why asked you to make sure im not missing anything crucial 05:26 < bridge> it's for us, not for them 05:26 < ws-client> lol 05:27 < bridge> I love them numbers 05:27 < bridge> gimme those numbers 05:27 < ws-client> https://github.com/ddnet/zcatch/blob/5edca2a937e40ac77e565adc4ccbf224c4967b00/src/game/server/ranking.cpp#L52 05:27 < ws-client> savander giga chad 05:27 < ws-client> tracking name and wins 05:27 < ws-client> all u need 05:28 < bridge> there is a wiki article by me 05:28 < ws-client> it feels so redudant to build yet another zcatch db omagawd xd 05:28 < bridge> highly suggest you read it 05:28 < ws-client> wat wiki articile 05:28 < ws-client> send 05:28 < bridge> https://wiki.ddnet.org/wiki/ZCatch 05:29 < bridge> about how easy it is to farm wins 05:29 < ws-client> why does the url say ZCatch and not zCatch? 05:29 < bridge> I did not create the site 05:29 < bridge> so 05:29 < ws-client> in my code ofc it says ``Zcatch`` to follow proper camel case coding style xd 05:29 < bridge> I live with eye cancer 05:30 < bridge> the gist 05:30 < bridge> it's easy to farm wins if all you need is 5 players 05:30 < bridge> 1-3 people, dummies 05:31 < bridge> that's why that zCatch has a minimum player count of 10 in order for a win to actually count 05:31 < bridge> guess what 05:31 < ws-client> 10?! 05:31 < bridge> it's hard to get 9 players occupied until a tenth joins 05:31 < ws-client> yes! 05:32 < bridge> and that's why zCatch is dead on 0.6 (and 0.7 cuz nearly no playerbase) 05:32 < ws-client> ou but i like the 10 player requirement for the win to count makes it valuable 05:32 < bridge> don't 05:32 < ws-client> you totally convinced me already 05:32 < bridge> look at my code 😄 05:32 < ws-client> i was planning 4 but ima go with 10 now 05:33 < bridge> make 5 05:33 < ws-client> maybe 4 unique ips might already be enough 05:33 < bridge> the classic 05:33 < ws-client> oh ye 5 05:33 < ws-client> wat ur code do? 05:35 < bridge> gotta find where the score is calculated 05:35 < bridge> there is basically a distinction between wins and score earned by wins 05:35 < ws-client> nice wiki article btw 05:35 < ws-client> ou that also sounds good @jxsl13 to earn something other than a win 05:35 < bridge> depending on how many players you caught for the win, you get exponentially more score points 05:36 < bridge> 1vs4 is worth less then 1vs15 05:36 < ws-client> I will add a score column then! 05:36 < bridge> than* 05:39 < bridge> https://github.com/jxsl13/zcatch/blob/zCatch-0.7.x/src/game/server/gamemodes/zcatch.cpp#L1599 05:46 < ws-client> sharing stats between laser and grenade zcatch is fine right @jxsl13 ? 05:46 < bridge> depending on what you intend to put in the table 05:47 < bridge> wallshots 05:47 < ws-client> yes wallshots xd 05:47 < bridge> might be laser specific 05:47 < ws-client> no i mean in zcatch i wont have wallshots 05:47 < ws-client> but do you think that the ranking makes sense 05:47 < bridge> what exactly? 05:47 < ws-client> is the wins top5 being polluted or not interesting if you as a grenade main see also laser players there? 05:48 < bridge> primarily it is player stats 05:48 < bridge> and you might have a short version of the data for rankings 05:48 < ws-client> do you need to know with which weapons you farmed the stats? 05:48 < bridge> and a long version for the player himself 05:49 < bridge> I think there should be a clear destinction in which variant of zCatch you earned those points 05:49 < bridge> grenade is not laser 05:49 < bridge> and everything else is just for fun (hammer, shotgun, etc) 05:49 < ws-client> ._. 05:49 < ws-client> i was intending to have one zcatch table with wins and score 05:49 < bridge> just add a column 05:49 < bridge> with an enum value 05:49 < ws-client> what column? 05:50 < bridge> game mode 05:50 < ws-client> that would require another table 05:50 < bridge> not really, you can have all of those in ine table 05:50 < ws-client> if i have the columns ``name, kills, wins`` i can not just say weapon as well 05:50 < ws-client> then i would need ``grenade_kills, laser_kills`` and thats ugly 05:51 < bridge> mode (laser, grenade, hammer, shotgun, all, ninja), kills, deaths, score, wins 05:51 < ws-client> ah yes name is a unique key i don't intend having multiple records with the same name 05:51 < bridge> what's the problem? 05:51 < bridge> make a combined unique key 05:51 < bridge> with mode, name 05:52 < ws-client> dbs have enums? that would be a string then i guess 05:52 < ws-client> hmm i dont like it too much 05:52 < bridge> that's what I would do, if I did not want multiple tables containing basically the same data 05:52 < bridge> at least postgres has enums 05:52 < ws-client> im using ddnet so mariadb 05:53 < ws-client> and sqlite 05:53 < bridge> highly likely mariadb also has them 05:53 < ws-client> hm or i go with multiple tables but thats also a bit inconsitent 05:53 < bridge> sqlite probably not 05:53 < bridge> make it an integer field 05:53 < bridge> or column 05:54 < ws-client> ok well if you say that information is really important then ill go with multiple tables 05:55 < ws-client> i almost tied the table name to the gametype. Since i didnt might as well use that flexibility 05:57 < bridge> imagine you earned a score in grenade and then people start playing laser again and you join with a big score being big noob \:D 05:57 < bridge> ppl will call you a fake 05:58 < bridge> cuz no account system 05:58 < ws-client> yea i see 05:59 < ws-client> ok what can and should be merged then? 05:59 < ws-client> gCTF and iCTF also split? 05:59 < ws-client> fng and solofng? boomfng and fng? 05:59 < bridge> yes 05:59 < bridge> I'd think so 05:59 < ws-client> so split it all? 05:59 < bridge> funno the difference between solofng 05:59 < bridge> dunno 05:59 < bridge> and whatever the counterpart is 05:59 < ws-client> fng and solofng is team vs no team 06:00 < bridge> ok 06:00 < bridge> would split 06:00 < ws-client> in team fng you can unfreeze your mates and win as a team 06:00 < bridge> definitly 06:00 < ws-client> so also split gDM and gTDM? xd 06:00 < bridge> you need a different kind of skill set for each of those 06:01 < ws-client> classic chillerdreggen startup having more db tables than users ... 06:01 < bridge> just cuz you good in gDM does not mean you good in a team 06:01 < bridge> discord dead, 6:01 am 06:02 < ws-client> dood why u never sleep jigsaw 06:02 < bridge> I do sleep xD 06:02 < ws-client> i think i will make a checksum of ALL server side config variables and the resulting sha256 string will be the table name 06:03 < bridge> hm 06:03 < ws-client> clearly anti camper on or off demands a separate ranking system 06:03 < ws-client> <:troll:490644344341135380> 06:03 < bridge> sounds like a pretty sane suggestion 06:03 < bridge> *coughs blood* 06:04 < ws-client> ? watfak 06:04 < bridge> *hell freezes* 06:04 < bridge> *eyes bleed* 06:04 < bridge> *posessed by the devil* 06:05 < ws-client> longtimeuser29: "where is my rank" 06:05 < ws-client> admin: "you dont have a rank in this config. Try voting warmup time 10 seconds and 8 in game slots and check your rank again" 06:06 < bridge> I think you gotta print tue server config for the user 06:06 < bridge> the 06:06 < ws-client> ALL of it? xd 06:06 < bridge> or provide checksum votes for every configuration permutation 06:06 < bridge> my rank was earjed with checksum 12345abc 06:06 < ws-client> ppl gonna spam votes 06:06 < bridge> gotta vote that server config 06:07 < ws-client> i mean its all shits and giggles 06:07 < ws-client> but the reality would be a softer form of that 06:08 < bridge> O.o u no cereals? 06:08 < ws-client> "bru i got 100 hours in fng why am i unranked in solofng????" 06:08 < bridge> The short for would be: gtfo, join the gDM server 06:08 < ws-client> hm ye 06:08 < bridge> I would not provide any vote options at all 06:08 < bridge> for changing game modes/types and stuff 06:09 < ws-client> oh hm 06:09 < bridge> technically possible 06:09 < bridge> but practically, spin up two new game servers 06:09 < ws-client> yea i like no votes as well but then you gotta spam servers 06:09 < bridge> I personally would not hist fng 06:10 < bridge> host 06:10 < ws-client> haha 06:10 < bridge> cuz I don't know nothing there 06:10 < bridge> not my community, not engaged 06:10 < ws-client> ok nader 06:10 < bridge> that's for ppl wgo play(ed) it 06:10 < bridge> I host zCatch laser, tho 06:11 < bridge> who* 06:14 < bridge> *sleeping* 06:14 < bridge> adios 06:14 < ws-client> good nite 06:24 < bridge> my db name was derived from mode + 0.7 skill level actually: ._. https://github.com/jxsl13/zcatch/blob/zCatch-0.7.x/src/game/server/gamemodes/zcatch.cpp#L1595 06:25 < bridge> 06:25 < bridge> aaand truely gone xd 06:25 < ws-client> skill level bruv 06:25 < bridge> 0.7 has such a concept 06:25 < bridge> apoarently 06:25 < ws-client> ye ye ikr 06:26 < ws-client> but why different stats there :D 06:26 < bridge> apparently 06:26 < bridge> dunno 06:26 < ws-client> you are one step away from the checksum madness 06:26 < bridge> never used different skull levels anyway 06:26 < bridge> skill 06:26 < ws-client> :skull: 06:27 < bridge> but have a beginner server 06:27 < bridge> which cheaply prevents high score ppl from joining x) 07:47 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1284752371443961937/image.png?ex=66e7c662&is=66e674e2&hm=65aaa3fa90dcdc7d58c456c6144a26a978440e1d3a7cd079dcd80e8f8fc36c62& 08:01 < bridge> morning 09:00 < bridge> @heinrich5991 is it possible to make https://github.com/heinrich5991/libtw2/tree/master/wireshark-dissector work with wireshark 4.0? 09:16 < bridge> How to delete health and armour in hud and jumps and guns ? 09:16 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1284774836165677126/image.png?ex=66e7db4e&is=66e689ce&hm=895578a01460e9037cc3ef516ebbff9cec1fae215f0fab756ccc3f4aee7038cd& 09:45 < bridge> please use #questions next time. 09:45 < bridge> 09:45 < bridge> Look here: 09:45 < bridge> https://ddnet.org/settingscommands/ 09:45 < bridge> 09:45 < bridge> All commands that start with `cl_showhud_` are for hud rendering 09:56 < bridge> @jupeyy_keks yo can you help me with text rendering stuff. There's a function for rendering movement information https://github.com/ddnet/ddnet/blob/dcd02b50bb49038c51c11dcd6eabf0b1f13598b4/src/game/client/components/hud.cpp#L1282 and it passes `TextRender()->DefaultTextColor()` as color but somehow it uses different color when it renders speed(red, green) :thonk: why is it not always just white? 09:57 < bridge> You can set one color when you create the vertices for the text (text container) 09:57 < bridge> 09:57 < bridge> and you can set one color applied at runtime (when actually rendering) 09:58 < bridge> That allows multi color text setup for example 09:59 < bridge> but if I pass different color, not white, it renders only with that color 10:01 < bridge> mh weird: 10:01 < bridge> 10:01 < bridge> the colors for creation are set here I assume: 10:01 < bridge> https://github.com/ddnet/ddnet/blob/dcd02b50bb49038c51c11dcd6eabf0b1f13598b4/src/game/client/components/hud.cpp#L1372-L1379 10:41 < ws-client> @milkeeycat just compile wireshark 4.2.5 from source -.- 11:00 < bridge> Ye, I guess that's what I will do xd 11:44 < bridge> oh 12:11 < bridge> @milkeeycat: Are you already debugging on the network level? Send repo of your tw client 12:12 < bridge> im preparing all the tools for debugging I can 12:12 < bridge> Nice 12:13 < bridge> I can already feel multiple hours debugging for some stupid stuff 12:13 < bridge> Which protocol do you implement? 12:14 < bridge> I didn't start with protocol yet, I was doing packer 12:14 < bridge> MilkeeyCat: just ping me before you debug for hours. I did run into all possible nob mistakes one could make 12:14 < bridge> and opened CVariableInt::Pack 12:14 < bridge> Which do you want to do? 12:14 < bridge> and oh boi there're a lot of bit wise operations 12:14 < bridge> 0.7? 12:15 < bridge> Yes! 12:15 < bridge> Was pain in lua xd 12:15 < bridge> which one is better? 12:15 < bridge> or which one is easier xd 12:15 < bridge> I wanted to support old lua which didn’t have the bit ops so I used a library and it had bugs in the bit operations that a time sink to debug 12:15 < bridge> xddd 12:16 < bridge> Well I would say implementing 0.6 is as useful as 0.5 12:16 < bridge> 0.6.5 is sane because it has security tokens 12:16 < bridge> But everything before 0.6 is troll 12:16 < bridge> ok, we're cooking 0.6 then 12:17 < bridge> You mean 0.6.5 with tokens? Or 0.6.3 which can’t connect to ddnet servers? Xd 12:17 < bridge> 0.6.5 12:17 < bridge> 0.6.3 12:17 < bridge> 0.6.5 12:18 < bridge> I mean then there is also ddnet extensions 12:18 < bridge> sounds not important 12:18 < bridge> But you can always add them later on top no matter which version of the tw protocol 12:19 < bridge> For debugging tools you might find this website helpful too. @milkeeycat https://twnet.zillyhuhn.com 12:24 < ws-client> just copy paste the traffic you get into the form and it will tell you what tw packet that is. Can be the entire udp packet with header or only the tw packet. https://twnet.zillyhuhn.com/?d=10+00+00+01+54+4b+45+4e+ff+ff+ff+ff&v=6 12:43 < bridge> I'm 100% sure I will need it in future 13:01 < bridge> chillerdragon: how to allow using wireshark built from source 13:01 < ws-client> allow? 13:01 < bridge> I used `sudo dpkg-reconfigure wireshark-common` when I installed it from apt 13:02 < ws-client> you want to capture traffic with wireshark? 13:02 < bridge> ``` 13:02 < bridge> On Debian and Debian derivatives such as Ubuntu, if you have installed Wireshark from a package, try running 13:02 < bridge> 13:02 < bridge> sudo dpkg-reconfigure wireshark-common 13:02 < bridge> 13:02 < bridge> selecting "" in response to the question 13:02 < bridge> 13:02 < bridge> Should non-superusers be able to capture packets? 13:02 < bridge> 13:02 < bridge> adding yourself to the "wireshark" group by running 13:02 < bridge> 13:02 < bridge> sudo usermod -a -G wireshark {your username} 13:02 < bridge> 13:02 < bridge> and then logging out and logging back in again 13:02 < bridge> ``` 13:02 < ws-client> yea i never capture traffic with wireshark its considered unsafe and bad practice because you dont want unsanitized network traffic in all of your filters 13:02 < ws-client> as root 13:03 < ws-client> i always capture with ``tcpdump`` and then open the file with wireshark without root 13:03 < ws-client> s/filters/dissectors/ 13:04 < bridge> ye, and you choose in that wireshark-common thingy so you can use wireshark if the user in `wireshark` group 13:04 < ws-client> yea sori i never tried doing that 13:04 < ws-client> also since when are you debian enjoyer i thought ur on gentoo? 13:06 < bridge> chillerdragon 13:06 < ws-client> wot 13:06 < bridge> that was a reply 13:07 < ws-client> https://zillyhuhn.com/cs/.1726398414.png 13:07 < ws-client> irc moment 13:07 < ws-client> when send ur bridge to mrafk5991 13:07 < ws-client> so i can see replies 13:07 < bridge> 05/18/2024 2:05 PM that's when I installed debian 13:07 < ws-client> woah 13:07 < ws-client> switch from gentoo to debian? xd 13:07 < ws-client> why 13:08 < bridge> gentoo to hard for such a reptile brain like me 13:08 < ws-client> how can it get hard after running it as a daily driver already? 13:08 < ws-client> did you also get Gnome PRO the ultimative desktop environment? 13:08 < bridge> I didn't like managing all the packages, versions for them etc 13:09 < bridge> i3 😏 13:09 < bridge> i changed os but everything else is the same 13:09 < ws-client> gnome is underrated 13:09 < ws-client> was my first love 13:09 < ws-client> nah who am i kidding macOS IDE was my first love xd 13:09 < bridge> try i3 for a week 13:09 < ws-client> i tried i3 for 5min and rq 13:09 < bridge> xd 13:10 < bridge> did you find an exit shortcut? 13:10 < ws-client> probably not was so long ago 13:18 < bridge> chillerdragon: i just had to add `-DDUMPCAP_INSTALL_OPTION=capabilities` to cmake command :DD 13:21 < bridge> yoo, I can see all the data I've read about in a book about networking :poggers2: 14:08 < ws-client> <:poggers2:1008007455936094328> 14:18 < bridge> chillerdragon: here's the repo https://github.com/MilkeeyCat/ddnet-meraki 14:19 < bridge> everything will be in one file xd 14:19 < bridge> because I don't have imports or modules :santatrollet: 14:19 < bridge> Hello tees!\n 14:20 < bridge> is i8 unsigned? :justatest: 14:20 < bridge> it's signed 14:20 < bridge> char is `i8` not `u8` 14:21 < bridge> what if i wanted to write © 14:21 < bridge> what if i wanted to write © (169) 14:22 < bridge> well 14:22 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1284851832790847533/image.png?ex=66e82304&is=66e6d184&hm=3f7dd555151b8c6919ee92938c656626a3cb912d05465b483ac8f911ec7aefb8& 14:22 < bridge> it works 14:22 < bridge> huh? 14:23 < bridge> how tf to you represent 169 with an i8 14:23 < bridge> u have lots of negative numbers 14:24 < bridge> i used `printf("©")` 14:24 < bridge> so it's a pointer to a string and I have no clue how much space it takes 14:25 < bridge> char is unspecified 14:25 < bridge> on ARM it is unsigned 14:25 < bridge> for me it's `i8` xd 14:25 < bridge> just ignore c weirdnesses and move on 14:25 < bridge> what does `fn printf(format: *i8) -> void;` do then? 14:25 < bridge> the same as in C 14:26 < bridge> in ur language? 14:26 < bridge> yea so why is it i8 not u8? 14:26 < bridge> i'd use unsigned tbh 14:26 < bridge> makes logically more sense 14:26 < bridge> i had it u8 at first 14:26 < bridge> then ryo said in rust it's i8 and i changed it :pepeW: 14:27 < bridge> whaaat 14:27 < bridge> huh? 14:27 < bridge> in rust char is 4 bytes 14:27 < bridge> it must hold a unicode code point 14:27 < bridge> https://doc.rust-lang.org/stable/std/ffi/type.c_char.html 14:28 < bridge> ``` 14:28 < bridge> #[derive(PartialEq, PartialOrd, Eq, Ord)] 14:28 < bridge> #[stable(feature = "rust1", since = "1.0.0")] 14:28 < bridge> #[cfg_attr(not(test), lang = "String")] 14:28 < bridge> pub struct String { 14:28 < bridge> vec: Vec, 14:28 < bridge> } 14:28 < bridge> ``` 14:28 < bridge> right from rust std 14:28 < bridge> that should be unspecified 14:28 < bridge> like in c 14:28 < bridge> "On modern architectures this type will always be either i8 or u8, " 14:29 < bridge> ryo lied! 14:29 < bridge> tja 14:29 < bridge> it's not schrödinger's type, it has to be either u8 or i8 xd 14:29 < bridge> just uninstall c 14:29 < bridge> well it is different on each architechturesa 14:29 < bridge> i have only 1 :santatrollet: 14:30 < bridge> problem solved 14:46 < ws-client> schrödinger's type xd 14:46 < ws-client> sounds like javascript 14:46 < ws-client> you never know if its ``NaN`` unless you have a look 14:47 < bridge> ye 14:47 < bridge> lea joined the chat 14:47 < bridge> i am about to get destroyed 14:52 < bridge> Be not insecure, you are completely correct 14:52 < bridge> even this ? 🤭 14:54 < bridge> ah lol, didn't even realize before. 14:54 < bridge> 14:54 < bridge> epyc 14:54 < bridge> make it so that you can run the game with 1 million tees at once 14:55 < bridge> didn't realize wat? 14:55 < bridge> u create ddnet 3 14:55 < bridge> more like 0.69 14:56 < bridge> i will be happy if i can make something similar to chiller's assembly client 15:20 < bridge> a 15:21 < bridge> b 15:22 < bridge> c 15:24 < bridge> ??? 15:24 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1284867504291709013/image.png?ex=66e8319c&is=66e6e01c&hm=6537748f71fb636165a2f690000771d60ea010340e1ef60b7a1b4f0e0a51a342& 15:24 < bridge> why does it look like that 15:25 < bridge> looks like what 15:28 < bridge> windowed fullscreen with the bar on top 15:29 < bridge> seems like it doesnt work for you 15:29 < bridge> tja 15:29 < bridge> random windows behavior 15:30 < bridge> it worked a few mins ago, fixed by changing from windowed back to windowed fullscreen 15:57 < bridge> rust fellows, epic lame question: how to wrap trait with state? 15:58 < bridge> i have a trait and every struct that implements it should have 1 exact same field with same functionality 15:58 < bridge> and its used only internally 15:58 < bridge> that's not the traits job 15:58 < bridge> if u want to access it, make a getter 15:58 < bridge> no 15:58 < bridge> thats why i said its used only internally 15:59 < bridge> is it const? 15:59 < bridge> nop 15:59 < bridge> then what you want makes no sense in terms of traits and is impossible 16:00 < bridge> yup thats why ask for workaround xd 16:00 < bridge> i came up with using wrapper struct with boxed trait 16:00 < bridge> with state inside 16:00 < bridge> but its kinda meh 16:00 < bridge> But why do you care about the state, if u dont access it anyway 16:00 < bridge> i don't access it from outside 16:00 < bridge> trait object uses it on every function call 16:00 < bridge> like counter-- 16:01 < bridge> maybe outside and inside confuses me 16:01 < bridge> does something else than the type that impl the trait access it? 16:01 < bridge> seems no 16:01 < bridge> then ever struct that impl the trait can have that thing as a field 16:02 < bridge> completely unaccessable 16:02 < bridge> like imagine u have actor that should do things on function call until ur counter is not 0 16:02 < bridge> ok but a trait is just an interface 16:02 < bridge> if u want logic in a trait func, u need to use getters & setters 16:02 < bridge> like a pre-implemented function 16:02 < bridge> yeah but its code duplication inside every trait impl 16:03 < bridge> but the trait itself can pre implement a function 16:03 < bridge> u can do 16:03 < bridge> 16:03 < bridge> tick() { 16:03 < bridge> your_logic; 16:03 < bridge> tick_impl() 16:03 < bridge> } 16:03 < bridge> 16:03 < bridge> tick_impl(); 16:03 < bridge> so tick_impl stays "undefined" 16:04 < bridge> Traits are interfaces. Like abstract base classes in other languages. It doesn't make much sense to have data in them 16:05 < bridge> seems i need to reconsider my code architecture 16:05 < bridge> thank you guys 16:05 < bridge> gl 16:05 < bridge> u can also think about moving the increasing part outside of the trait 16:05 < bridge> You could have a trait, and a magic derive macro that implements the trait and embeds the extra data field 16:05 < bridge> struct MyTypeWrappe{ 16:05 < bridge> el: Box, 16:06 < bridge> my_state: State 16:06 < bridge> } 16:06 < bridge> oh i could use a Wrappe now 16:06 < bridge> ye thats what i wanted to in first 16:06 < bridge> but its so ugly smh 16:07 < bridge> Do you need to use a trait? 16:07 < bridge> Else u can do smth like this 16:07 < bridge> 16:07 < bridge> struct MyClass> { ... } 16:07 < bridge> then you can access the state which must come from the object itself 16:08 < bridge> Well maybe that even works with Box 16:08 < bridge> yeah i have to store em in containers 16:09 < bridge> Box> 16:09 < bridge> Then your original types must implement AsMut 😄 16:09 < bridge> combined with this 16:09 < bridge> and it's the closest you can get 16:10 < bridge> you can also directly do `trait Trait: AsMut<..> {}` 16:10 < bridge> couldnt you do struct MyStuff> 16:10 < bridge> 16:10 < bridge> will implement the trait and asmut 16:10 < bridge> bit cleaner 16:10 < bridge> ye 16:11 < bridge> he doesnt want to use generics 16:11 < bridge> pff 16:11 < bridge> i cant store different type objects in one container 16:11 < bridge> depends 😄 16:11 < bridge> without unsafe xd 16:11 < bridge> enum MyTypes{ A(Ty1), B(Ty2), C(Ty3) } 16:12 < bridge> thats how they're stored 16:12 < bridge> but i need Ty1 Ty2 Ty3 that implements trait 16:12 < bridge> because they come from another crate 16:14 < bridge> Well `MyTypes` could also implement the trait 16:14 < bridge> and transfer the requests to the individual things 16:14 < bridge> ye just thought about it xd 16:14 < bridge> smol brain moment 16:15 < bridge> thank you big jup 16:15 < bridge> But it's not like Box is evil. if that makes ur code better fine 16:15 < bridge> hey - i just debugged a triple forloop in c++ because i made a single typo for 40 minutes :YEP: 16:15 < bridge> rip 16:17 < bridge> tja 16:17 < bridge> ```` 16:17 < bridge> for (int i = 0; i < arr_size; i++) { 16:17 < bridge> for (int j = 0; j < arr2_size; j++) { 16:17 < bridge> for (int b = 0; b < (arr_size - 1); b++) 16:17 < bridge> ``` 16:17 < bridge> 16:17 < bridge> i made a typo in the type incrementation (e.g the second forloop was incrementing i - not j 16:17 < bridge> ```` 16:17 < bridge> for (int i = 0; i < arr_size; i++) { 16:17 < bridge> for (int j = 0; j < arr2_size; j++) { 16:17 < bridge> for (int b = 0; b < (arr_size - 1); b++) 16:17 < bridge> ``` 16:17 < bridge> 16:17 < bridge> i made a typo in the incrementation (e.g the second forloop was incrementing i - not j 16:17 < bridge> do you even need the indices to loop here? 16:18 < bridge> nub 16:18 < bridge> for(auto& el: array) [} 16:18 < bridge> for(auto& el: array) {} 16:18 < bridge> no i'm just playing around with things rn 16:18 < bridge> not working on anything particular :P 16:19 < bridge> ```cpp 16:19 < bridge> int *apply_all(int arr[], int arr2[], int arr_size, int arr2_size) { 16:19 < bridge> int *new_arr = new int[arr_size * arr2_size]; 16:19 < bridge> 16:19 < bridge> for (int i = 0; i < arr_size; i++) { 16:19 < bridge> for (int j = 0; j < arr2_size; j++) { 16:19 < bridge> int b = arr[i] * arr2[j]; 16:19 < bridge> new_arr[i * arr2_size + j] = b; 16:19 < bridge> } 16:19 < bridge> } 16:19 < bridge> 16:19 < bridge> return new_arr; 16:19 < bridge> } 16:19 < bridge> 16:19 < bridge> int main() { 16:19 < bridge> int arr[] {1,2,3,4,5}; 16:19 < bridge> int arr_size = sizeof(arr) / sizeof(arr[0]); 16:19 < bridge> 16:19 < bridge> int arr2[] {10,20,30}; 16:19 < bridge> int arr2_size = sizeof(arr) / sizeof(arr[0]); 16:19 < bridge> 16:19 < bridge> int *result = apply_all(arr, arr2, arr_size, arr2_size); 16:19 < bridge> 16:19 < bridge> for(int b = 0; b < arr_size * arr2_size; b++) 16:19 < bridge> { 16:19 < bridge> std::cout << result[b] << std::endl; 16:19 < bridge> } 16:19 < bridge> delete[] result; 16:20 < bridge> } 16:20 < bridge> ``` 16:20 < bridge> 16:20 < bridge> tja 16:20 < bridge> u could write it safer 16:20 < bridge> but since u want back to basic 16:20 < bridge> i respect that 16:20 < bridge> i didnt stick to a single language for so long i basically forgot the basics, so now i'm trying to grasp the understanding between stack and heap allocation - dynamically allocating memory etc 16:21 < bridge> i'm doing hiccups on the simplest of things it annoys me :kek: 16:21 < bridge> i didnt stick to a single language for so long i basically forgot the basics, so now i'm trying to grasp the understanding between stack and heap allocation **again** - dynamically allocating memory etc 16:23 < bridge> But can you visualize the difference? 16:23 < bridge> 16:23 < bridge> The idea behind both 16:23 < bridge> You could go as far and say a stack is just a heap allocated block 16:23 < bridge> Just that you don't alter it or delete it 16:25 < bridge> Just that you don't alter(realloc) it or delete it 16:25 < bridge> @blaiszephyr come vc xd 16:25 < bridge> i mean the difference is a bit more than that - but yes i think i can visualize the difference of something static and something dynamically adjustable 16:25 < bridge> your poor keyboard 16:27 < bridge> @learath2 my cool parser thinks that `i` in `while` is a struct expression :lol: 16:27 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1284883200740688043/image.png?ex=66e8403b&is=66e6eebb&hm=279860ab096778171d62578f55964f64bb41bd2d7c4f426c44ce17eae4dc90a3& 16:27 < bridge> How does that happen wtf 16:28 < bridge> it parses ident and then looks if there's `{` after it xd 16:28 < bridge> and there actually is 16:30 < bridge> Huh, your parser sounds interesting. Why is not not expecting `expr {` after while? 16:30 < bridge> it does 16:30 < bridge> but when it parses an expression it parses an ident 16:30 < bridge> which checks if there's `{` 16:32 < bridge> maybe parenthesis weren't that bad on an idea 16:32 < bridge> maybe parenthesis weren't that bad of an idea 18:17 < bridge> i didn't mean to close this^ 18:59 < bridge> today i tried to join the game but when i joined an go to server it says "getting server list from master server" even that it doesnt let me play anymap cuz its all empty plus it say 0 players and 0 of 0 servers 19:18 < bridge> Mh why are struct definitions expressions? 19:19 < bridge> don't they return a value? life Foo {a: 10} for example 19:20 < bridge> Oh, you allow constructing struct literals? Fancy 19:20 < bridge> 😏 19:20 < bridge> didn't you see before 😦 19:22 < bridge> Another reason why many languages aren't "context-free". Parsing C and C++ involves "lexical feedback". Typedefs are special things that modify the grammar on the go 19:26 < bridge> btw why to see `debug` level prints client has to have `trace` level -.- https://github.com/ddnet/ddnet/blob/0f12044fcd56ff10b501fbf75c7eb4f4d024b387/src/engine/client/serverbrowser.cpp#L995 19:26 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1284928265366016106/image.png?ex=66e86a33&is=66e718b3&hm=66645957eaae32a5d8cb1d02fc9bcc4d3199fa4064f8b13b2a209049786b06e0& 19:28 < bridge> Huh, debug isn't enough? 19:31 < bridge> as you can see i set 1(debug) level and it prints nothing xd 19:45 < bridge> but theres no debug messages 19:45 < bridge> shouldnt it be with `D` letter 20:03 < bridge> good evening devs 20:04 < bridge> good morning 20:04 < bridge> https://github.com/ddnet/ddnet/blob/0f12044fcd56ff10b501fbf75c7eb4f4d024b387/src/engine/shared/console.cpp#L310-L318 20:05 < bridge> watafak 20:05 < bridge> im unlocking keyboard wisdom 20:05 < bridge> `OUTPUT_LEVEL_DEBUG` is `LEVEL_TRACE` 20:05 < bridge> xd 20:06 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1284938531633893456/image.png?ex=66e873c2&is=66e72242&hm=59368591c2fa5629aef62185429b85e3994cbf8ede9aa0c2962f251646ff3190& 20:07 < bridge> im finally kinda getting back to where i was on qwerty 20:07 < bridge> What are you learning? Colemak? 20:07 < bridge> yea 20:07 < bridge> 😬 20:07 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1284938742838067331/image.png?ex=66e873f5&is=66e72275&hm=ed52f6133e1b8243a6fea6f1bf009c069f651d3a36b774a8ad04aafafbab1ac5& 20:08 < bridge> How are the symbol positions in colemak for coding? 20:09 < bridge> o how do i see this 20:09 < bridge> good as long as you never look at the keyboard 20:10 < bridge> it's a history for all time 20:10 < bridge> i've had to re-try 3 or 4 times to get the right bracket before but not like i didn't do the same thing for normal letters for the first weeks 20:10 < bridge> click on profile and scroll donw 20:10 < bridge> click on profile and scroll down 20:11 < bridge> you'd get used to it in good time. especially if you code a lot 20:11 < bridge> sweet 20:12 < bridge> i thought i had logged way more tests on here 20:13 < bridge> i dont think i was logged in for a while 20:13 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1284940093215342693/image.png?ex=66e87537&is=66e723b7&hm=6efb885ba55dea3dc4857b411cfe75a5c06a17aafd329ab228bb89f736e53fcc& 20:13 < bridge> but it doesnt show gaps in time on this graph lol 20:13 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1284940174450753648/image.png?ex=66e8754a&is=66e723ca&hm=e31d890793fb21f618f013179d2e74b1be0bfbdbdedbbbeff110d61d8583b893& 20:13 < bridge> im very active xd 20:13 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1284940281308909800/image.png?ex=66e87564&is=66e723e4&hm=c7f5d8b8f86a9d3d67280d42b02ebfdd026f2eacee32dcbcbf2db58dfa05bf6b& 20:14 < bridge> nice 20:14 < bridge> u ever do different tests 20:15 < bridge> u see my dots are all over but besides th last few months those are usually more words or punctuated 20:15 < bridge> I vaguely remember someone committing something about upnp. Do we use upnp? 20:15 < bridge> always default one "time 30sec" 20:15 < bridge> it's a good challenge 20:15 < bridge> i have my default set to english 100 words 20:15 < bridge> so that's what all of these are 20:16 < bridge> not as far as I know. the game would probably complain about port forwarding much, much less if we did 20:16 < bridge> It exists, but It's not compiled in by default. 20:16 < bridge> csazo 20:16 < bridge> crazy 20:21 < bridge> would you recommend multiple instances of IJob for something like a dumb thread pool, or the threading API directly? 20:25 < bridge> IJobs are pretty much designed for parallel execution so why not? 20:26 < bridge> Yeah, it's really hard to tell people how to port forward, maybe we should start building with it. Why is it disabled? 20:26 < bridge> IJobs already run in a pool 20:26 < bridge> Don't host your own pool on top of our engine jobs as they would hog the pool workers 20:55 < bridge> epic @matodor 21:06 < bridge> ooh are we flexibg monkey type 21:07 < bridge> https://monkeytype.com/profile/key 21:16 < bridge> :pepeW: 21:16 < bridge> i'm only at like 130wpm :( 21:16 < bridge> hpw cam i add ,y own bind ,what should i add at controls.cpp ? 21:16 < bridge> hpw cam i add my own bind ,what should i add at controls.cpp ? 21:17 < bridge> use .cfg files 21:17 < bridge> $wiki cfg 21:17 < bridge> not like this ,i want add stroke of code and add this like bind 21:17 < bridge> in settings page in ddnet 21:18 < bridge> in this page i mean 21:18 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1284956369824387215/image.png?ex=66e8845f&is=66e732df&hm=e4ceb45098d3f75cdcde1eb33ea087e4b1e7e01b133d96ace08cf30db9559473& 21:19 < bridge> lookup how other binds are created - look for `cl_dummy_hammer 0 1` for example and see how a bind is implemented 21:20 < bridge> i can't find where the lines with this code are 21:21 < bridge> menus_settings.cpp on line 1000 21:21 < bridge> do u use a stenographer keyboard 21:23 < bridge> no im on qwerty 21:34 < bridge> nice 21:35 < bridge> idk if I just wasn’t built for it but I plateaued at like 130 on qwerty 21:35 < bridge> when I was just qwerty 21:35 < bridge> but maybe I am making new neural connections or whatever 21:46 < bridge> When I try to put my own background on the card and save it, an error pops up, is there any way to fix this? 21:47 < bridge> what is the card 21:47 < bridge> photo 21:47 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1284963796049199224/2024-09-15_222112.png?ex=66e88b4a&is=66e739ca&hm=8da2a33d4a25acc81fb3a56d939ab39e35b19fcfc99fc713ee563616a9b265e3& 21:51 < bridge> save your image as 24 or 32 bit png 21:52 < bridge> how did you make it? 21:53 < bridge> You need to convert your imagine to rgba format, it says that in the error 21:53 < bridge> 21:53 < bridge> https://anyconv.com/de/rgba-konverter/ 21:53 < bridge> ah gg german 21:53 < bridge> WTF :justatest: 21:53 < bridge> :KEKW: 22:03 < bridge> it's shitty translation for a map 22:05 < bridge> but that is also the wrong word :( 22:05 < bridge> window? 22:08 < bridge> I tried to convert to other formats, but ddnet only sees PNG files. I think, most likely, I’m stupid and don’t understand the obvious, but okay, I’ll take ready-made backgrounds 22:11 < bridge> well, where did you get the images? if it's e.g. an indexed png (with a fixed palette) then DDNet will not be able to decode it 22:12 < bridge> so u can use an online converter like this or an image editor like paint.net. (i don't know if microsoft paint can do it, which comes with most versions of windows, but you can try) 22:13 < bridge> you're looking for the options bit depth (like 24 or 32) or sRGB 22:26 < bridge> or use nightly version of game 22:27 < bridge> that fixes everything 22:28 < bridge> nice 22:29 < bridge> jopsti have u seen wuffs 22:29 < bridge> namely its png decoder 22:29 < bridge> i wonder why i see no other libraries have tried to do simd png decoding like that 22:30 < bridge> i wonder why i see no other libraries that have tried to do simd png decoding like that 22:31 < bridge> Go client aim follow is not smooth :'/ 22:31 < bridge> rip 22:32 < bridge> i was trying to hack something with 0.7 and couldn't figure out from where does it get the god damn token, the answer was in a function I looked at 50 times and skipped because I thought it wasn't important 😬 22:40 < bridge> that's cloudflare# 22:55 < bridge> do you just pray you get lucky for the 10 words test 23:03 < bridge> kinda lmao 23:03 < bridge> i average maybe 210, sometimes u get really good words though 23:06 < bridge> welp 23:06 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1284983634746409104/image.png?ex=66e89dc4&is=66e74c44&hm=cc95fcb9ce6f8ffb606b939f50b77d75cc2f56c95112dbd3d6860bc84cbf0f76& 23:08 < bridge> on en 23:08 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1284984273740365967/image.png?ex=66e89e5c&is=66e74cdc&hm=d0c6ed88567f699904cadce4e3e16474cb6e42f9d812e231ff243ac90db48dd0& 23:51 < bridge> check out how other config variables are declared at `src/engine/shared/config_variables.h` 23:52 < bridge> tysm!