00:09 < bridge_> xd sure chillerbot.png is lyfe 00:15 < bridge_> bot detected, cid=0 00:17 < bridge_> https://cdn.discordapp.com/attachments/293493549758939136/1422346634548875304/Screen_Shot_2018-09-16_at_1.19.33_AM_2.png?ex=68dc5707&is=68db0587&hm=bcbd196625e38fd8da7038c24114c0594ed71b260d1c3dde8d1959793fc85dd1& 00:46 < bridge_> "Test Map Locally" will put 00:46 < bridge_> `change_map #MegaRosenkohl` 00:46 < bridge_> instead of 00:46 < bridge_> `change_map "#MegaRosenkohl"` 00:46 < bridge_> https://cdn.discordapp.com/attachments/293493549758939136/1422353845534855178/screenshot_2025-09-30_00-45-07.png?ex=68dc5dbe&is=68db0c3e&hm=68e469cbf56fca9d3a6719883d712f7ee671d06a5c153feddc584b3f423385c4& 00:46 < bridge_> So any map with a special character as the first word will not be able to automatically change. 00:47 < bridge_> Using nightly, can someone confirm this as well? 00:56 < bridge_> map names should really be a-zA-Z0-9_- 00:57 < bridge_> you can look at the code to see what its doin 00:57 < bridge_> (which i will do) 00:58 < bridge_> ` str_format(aMapChange, sizeof(aMapChange), "change_map %s", aFileNameNoExt);` 00:58 < bridge_> to be absolutely safe it should be with quotes and use str_escape 01:01 < bridge_> https://maps.ddnet.org/ 01:01 < bridge_> https://cdn.discordapp.com/attachments/293493549758939136/1422357571842474144/image.png?ex=68dc6137&is=68db0fb7&hm=d2b72220bceeef7122d49fc786fad627be1502ae606469d65c430f953f462310& 01:01 < bridge_> Then these need to be fixed as well 01:01 < bridge_> hehe are we allowed to fix "#wontfix" 01:02 < bridge_> idk 01:02 < bridge_> make a gh issue about it 01:02 < bridge_> Nah, imma make a PR 01:02 < bridge_> ohh maa gooosh 01:02 < bridge_> I wanna try actually doing something 01:03 < bridge_> 👍 01:03 < bridge_> If I fix it, I can freely call you lazy so 01:04 < bridge_> mmm 01:04 < bridge_> no u 01:04 < bridge_> https://tenor.com/view/skeleton-mewing-mewing-meme-think-thinking-gif-8986451654826218658 01:04 < bridge_> cooked 04:31 < bridge_> https://tenor.com/view/where-you-at-gif-21177622 04:40 < bridge_> so how can I get the 'ddnet' module in pythone 04:40 < bridge_> so how can I get the 'ddnet' module in python 04:40 < bridge_> I tried pip install ddnet 04:40 < bridge_> but it still can't find module 'ddnet' 04:50 < bridge_> uhh we dont support botting 04:51 < bridge_> My fault 04:51 < bridge_> I don't know about python 04:52 < bridge_> DX 06:59 < bridge_> i just realized 06:59 < bridge_> if i get enough support of std 06:59 < bridge_> maybe i can compile rust itself in my os or cross compile it 08:24 < bridge_> <12944qwerty> this diffing stuff for snaps is annoying to figure out lol 09:24 < bridge_> @12944qwerty: does it make sense on a high level how it should work? Do you have some code already? 10:42 < bridge_> i think i got threads 10:42 < bridge_> https://cdn.discordapp.com/attachments/293493549758939136/1422503947549151333/image.png?ex=68dce989&is=68db9809&hm=bea5c3ffd92faff73d3744e22f6448011ccca2f81552bf6287d560dd52ec6ca8& 10:58 < ws-client1> **** @milkeeycat wanna debug pyson for me? xd 10:59 < bridge_> im a big pyson pro, i could try xd 11:00 < ws-client1> **** epic 11:01 < ws-client1> **** I have the following snapshot payload: 11:01 < ws-client1> **** `00 0a 00 04 99 13 90 25 b0 0f 01 04 9a 13 b0 25 b0 0f 00 04 9b 13 b0 26 b0 0f 02 04 9c 13 b0 27 b0 0f 03 04 9d 13 b0 28 b0 0f 04 06 00 00 01 00 0a 00 9f 07 b0 1b 91 10 00 80 02 00 00 00 40 00 00 b0 1b 90 10 00 00 0a 00 0a 01 00 00 00 0b 00 08 00 00 15 00 b0 1b ae 10 27 15 01 b0 1b b1 10 27` 11:01 < ws-client1> **** it is already huffman decompressed 11:01 < ws-client1> **** but still int compressed 11:01 < ws-client1> **** it is the entire data section 11:02 < ws-client1> **** https://chillerdragon.github.io/teeworlds-protocol/07/system_messages.html#NETMSG_SNAPSINGLE_data 11:02 < ws-client1> **** this field to be precise 11:02 < ws-client1> **** a 0.7 snap single 11:02 < ws-client1> **** the in ddnet c++ i used the snapshot debug dump to print all snap items 11:02 < ws-client1> **** my pyson unpacks all values the same except the two sound y coordinates 11:02 < ws-client1> **** they are at the end of the snap 11:03 < ws-client1> **** here is what the c++ client printed for the sounds 11:03 < ws-client1> **** https://gitlab.com/teeworlds-network/twnet_parser/-/blob/3c1d837763d00485a7704a621175cd2da7175b5a/tests/packets7/another_snap_single_test.py#L68-75 11:03 < ws-client1> **** lets only look at the first sound event 11:04 < ws-client1> **** the C++ client wants a m_Y=1040 11:04 < ws-client1> **** and my pyson printed a 1070 11:04 < ws-client1> **** you only have to look at the last bytes of the snap dump i sent earlier so these: `ae 10 27 15 01 b0 1b b1 10 27` 11:06 < ws-client1> **** at first i suspected my int unpacker to be wrong 11:07 < ws-client1> **** but then i double checked it with ddnet code and it also unpacs the 1070 which should be 1040 11:07 < ws-client1> **** then i suspected my huffman decoder to be wrong but i double checked it with libtw2 11:08 < ws-client1> **** here my C++ check for it 11:08 < ws-client1> **** https://paste.zillyhuhn.com/Rv 11:10 < ws-client1> **** i wonder if there is any chance that the C++ dump data is wrong xd 11:10 < ws-client1> **** but blaming the reference implementation sounds quite desperate 11:11 < ws-client1> **** even if i confused the snapshot somehow (unlikely because my client would dump 1 snap and then call `exit(1);`) why do ALL the other values match perfectly 11:34 < bridge_> chillerdragon: did you find the problem? 11:54 < bridge_> No :/ 11:55 < bridge_> Maybe I need to add more prints to the client and do the entire thing again 11:55 < bridge_> To see when it starts to differ 11:57 < bridge_> use a debugger? xd 11:57 < bridge_> Print better 11:58 < bridge_> I remember when Heinrich promised he might look into the snap dissector „tomorrow in the airplane“ 11:58 < bridge_> That was like 2023 11:59 < bridge_> maybe he lives in the arctic 12:00 < bridge_> Fr 12:00 < bridge_> Wait I actually know where he lives o0 12:01 < bridge_> @learath2: when do we meet in some ams pub? Get drunk and high and merge all prs? 12:02 < bridge_> chillerdragon: do you have code to get `1040` in C++ code? 12:02 < bridge_> // yes 12:02 < bridge_> The paste I sent 12:02 < bridge_> A 12:03 < bridge_> but it shows that it prints `1070` 12:04 < bridge_> Well 12:04 < bridge_> That’s the entire troll 12:04 < bridge_> The 1040 comes from snap debug print 12:04 < bridge_> U want that? 12:04 < bridge_> ye 12:04 < bridge_> It’s a bit different because it just iterates snap items 12:05 < bridge_> And snap gets unpacked weird in c++ I never did it like that 12:05 < bridge_> They first unpack all ints and then go through it 12:05 < bridge_> I go int by int and already build items 12:05 < bridge_> The dump is python code that generates C++ iirc 12:07 < bridge_> https://github.com/ddnet/ddnet/blob/0b7ce0d01c436b036557685b5e56a0f11718f1b3/src/engine/shared/snapshot.cpp#L123 12:07 < bridge_> Mobile is the worst 12:16 < bridge_> https://github.com/ddnet/ddnet/blob/0b7ce0d01c436b036557685b5e56a0f11718f1b3/datasrc/compile.py#L277 12:37 < bridge_> chillerdragon: I don't have time right now, I'll try later, I'd first check why C++ code prints `1040` when it decodes `1070` 12:50 < bridge_> What is this and for what it? 12:50 < bridge_> https://cdn.discordapp.com/attachments/293493549758939136/1422536086034452531/image.png?ex=68dd0778&is=68dbb5f8&hm=ef242d9e1a90a796bbfab0f4527c1f04c59d8b537f79647016c16515eef022cc& 12:54 < bridge_> ```cpp 12:54 < bridge_> static CMapBugsInternal MAP_BUGS[] = 12:54 < bridge_> { 12:54 < bridge_> {{"Binary", 2022597, s("65b410e197fd2298ec270e89a84b762f6739d1d18089529f8ef6cf2104d3d600")}, BugToFlag(BUG_GRENADE_DOUBLEEXPLOSION)}};``` 12:57 < bridge_> ```cpp 12:57 < bridge_> if(((pTargetChr && (pOwnerChar ? !pOwnerChar->GrenadeHitDisabled() : g_Config.m_SvHit || m_Owner == -1 || pTargetChr == pOwnerChar)) || Collide || GameLayerClipped(CurPos)) && !IsWeaponCollide) 12:57 < bridge_> { 12:57 < bridge_> if(m_Explosive /*??*/ && (!pTargetChr || (pTargetChr && (!m_Freeze || (m_Type == WEAPON_SHOTGUN && Collide))))) 12:57 < bridge_> { 12:57 < bridge_> int Number = 1; 12:57 < bridge_> if(GameServer()->EmulateBug(BUG_GRENADE_DOUBLEEXPLOSION) && m_LifeSpan == -1) 12:57 < bridge_> { 12:57 < bridge_> Number = 2; 12:57 < bridge_> } 12:57 < bridge_> ``` 12:59 < bridge_> @chillerdragon you did the screenshots 12:59 < bridge_> https://github.com/ddnet/ddnet/pull/10954 12:59 < bridge_> hehe 13:01 < bridge_> i addded screenies regardless 13:18 < ws-client1> **** was missing screens for lattest button patch, thanks 13:19 < ws-client1> **** @I am stupid the map "Binary" makes use of a bug where the grenade explodes twice. This bug is needed to pass the part. The bug was fixed. So this code enables the bug only on this map 13:23 < ws-client1> **** @Solly (bun bun) your screenshot breaks rule 7 btw 13:27 < bridge_> fuck 13:28 < bridge_> its not my fault my demos are named like that 13:31 < ws-client1> **** yea tbh nobody care probably. I just became the hugest rule 7 enjoyer there is somehow. 13:31 < ws-client1> **** If my ~/.teeworlds folder would be leaked i might actually be in serious trouble 13:31 < ws-client1> **** so these names arent that bad 13:32 < ws-client1> **** @milkeeycat i had greate idea! Ignore bug and continue adding features .. ez 13:33 < bridge_> xd 13:45 < bridge_> i get it thx 14:09 < bridge_> chillerdragon: can you gimme code which uses snapshot debug dump to print all snap items from your input? 14:51 < ws-client1> **** not sure what you mean 14:52 < bridge_> I want to get this https://gitlab.com/teeworlds-network/twnet_parser/-/blob/3c1d837763d00485a7704a621175cd2da7175b5a/tests/packets7/another_snap_single_test.py#L16-75 14:52 < ws-client1> **** i used this plus a `exit(1);` here https://github.com/ddnet/ddnet/pull/11011/files#diff-9008c287b2e3181f671692c3dd859c3921d5ee178753b62cc254d9abd1b1e5a3R2080 14:52 < ws-client1> **** and connected to a 0.7 server with pickups at spawn 14:53 < ws-client1> **** `./teeworlds_srv` 14:53 < ws-client1> **** `./DDNet "connect tw-0.7+udp://127.0.0.1"` 14:55 < ws-client1> **** plus a `tcpdump` that i copy pasted into pyson 14:59 < bridge_> How does this pr not lag for you 14:59 < bridge_> I had 1 fps with it 15:07 < ws-client1> **** must be a windows issue xd 15:08 < ws-client1> **** even on ma potat laptop its smooth 15:42 < bridge_> anyone ever got this? 😬 15:42 < bridge_> https://cdn.discordapp.com/attachments/293493549758939136/1422579380101845143/image.png?ex=68dd2fca&is=68dbde4a&hm=8b3be745450da7c324471ceb7b05da721801f55a3bd28c4f3ea1d81c66d8821d& 15:45 < bridge_> yea its common 15:48 < bridge_> You need the ignore file thingy for it 15:48 < bridge_> The json lib doesn’t care about the issue 15:48 < bridge_> And DDNet doesn’t patch third party 15:49 < bridge_> is there not some inline way to ignore the error 15:49 < bridge_> okay, this one is not in third party xd 15:49 < bridge_> https://cdn.discordapp.com/attachments/293493549758939136/1422581206200877197/image.png?ex=68dd317d&is=68dbdffd&hm=63e71b609f65e6981614a205dc30960a69fbb24444db9ad902c1ede5bc84a25e& 15:50 < bridge_> Let’s blame assa 15:50 < bridge_> @sollybunny: inline is patch 15:50 < bridge_> We have in repo ignore files you should use anyways 15:51 < bridge_> @learath2: do we do sober October now or what? 15:51 < bridge_> its another option to do it 15:52 < bridge_> i meant like changing upstrream, even if they dont care about the problem itself, if it actually isnt a problem then some way to ignore it withou tan extra file will be accepted 15:54 < bridge_> Oh you mean pr ignore to upstream? 15:54 < bridge_> Ye go do it 16:09 < bridge_> chillerdragon: what map did you use? 16:16 < bridge_> Custom 16:16 < bridge_> then i can't get the same values :pepeW: 16:17 < bridge_> Yes 16:17 < bridge_> I don’t have the map with me 16:17 < bridge_> It’s very local custom 16:18 < bridge_> Any map with a few pickups at spawn will get you close 16:20 < bridge_> You need it? 16:20 < bridge_> I think it’s on my laptop 16:23 < bridge_> You have the entire packet in the test. You can also patch the client udp recv 17:31 < bridge_> Meetup yes, merge all prs no 17:33 < bridge_> cc: chillerdragon 17:33 < bridge_> !remind 90000 make learath tipsy and eepy, steal laptop and forcefully remove 0.7 17:33 < chillerbot> Helo melon I will remind you at Tue Oct 07 2025 17:33:19 GMT+0200 (Central European Summer Time) about your matter again. 17:33 < bridge_> melon = 🍈 17:34 < bridge_> I don't have ssh-agent, so you need to first steal my passphrase for my ssh keys 17:34 < bridge_> !remind 90000 steal learath's beer until he leaks passphrase 17:34 < chillerbot> Helo melon I will remind you at Tue Oct 07 2025 17:34:44 GMT+0200 (Central European Summer Time) about your matter again. 17:40 < bridge_> <12944qwerty> yeah. just confused on which members are deltas and which inputs to send back are deltas either 18:00 < ChillerDragon> @learath2 ssh passphrases are useless if you also have a gh session in your browser anyways 18:00 < ChillerDragon> i have no pass 18:05 < bridge_> <12944qwerty> i set up some code so that the tee will copy exactly what i do, but it's still doing something weird where it either doesnt' move or it moves to far whenever I move left or right 18:05 < bridge_> <12944qwerty> `input.direction = char.direction` 18:07 < ChillerDragon> is that python code? 18:07 < bridge_> <12944qwerty> yea 18:07 < ChillerDragon> that one line of code looks good xd 18:07 < ChillerDragon> its probably laggy or something else why it feels unresponsive 18:08 < bridge_> <12944qwerty> it's not unresponsive, it's more like all or nothing 18:08 < ChillerDragon> hmm 18:08 < ChillerDragon> is your code public? 18:08 < bridge_> <12944qwerty> no not yet 18:08 < ChillerDragon> not that i feel like debugging that right now xd 18:09 < ChillerDragon> i still got too many essential todos in the lib it self before i can start debugging user code 18:09 < bridge_> <12944qwerty> yeah 18:09 < ChillerDragon> the issue is probably not on your side 18:09 < bridge_> <12944qwerty> i made my own client type of thing where every tick it will update a list of all the players locations and character objs and then I send an input 18:09 < ChillerDragon> but yay i made some progress today 18:09 < ChillerDragon> woah where did you get player locations from? 18:10 < bridge_> <12944qwerty> snap_single, objcharacter, x,y deltas 18:10 < ChillerDragon> did you implement snaps before me now? xd 18:10 < bridge_> <12944qwerty> you fixed the snap unpacking 2 days ago?? 18:11 < ChillerDragon> woah u use the brand new work in progress code? xd 18:11 < ChillerDragon> nice 18:11 < bridge_> <12944qwerty> you changed like 2 lines for that xd 18:11 < ChillerDragon> it doesnt even diff the previous deltas 18:11 < bridge_> I smell bot vibes 18:11 < ChillerDragon> no he legit 18:11 < ChillerDragon> he wants to train AI 18:12 < bridge_> Hm, carry on 18:12 < bridge_> <12944qwerty> i know, i set up the deltas my end 18:12 < ChillerDragon> pro 18:12 < bridge_> <12944qwerty> ofc it doesn't work because idk which members to diff 18:12 < ChillerDragon> i drafted delta diff code today 18:12 < ChillerDragon> but it bugged af 18:12 < ChillerDragon> like it just crashes 18:12 < ChillerDragon> but maybe tomorrow i fix it with a 2 line diff xd 18:13 < ChillerDragon> or today idk my hands are too cold to play gores anyways 18:13 < bridge_> <12944qwerty> my impl does'nt even store the deltas, it just diffs the most recent snap i ever had 18:14 < ChillerDragon> a tricky 18:14 < ChillerDragon> you will be sent the tick you should delta against 18:14 < ChillerDragon> then you delta against the full snap at that tick 18:15 < ChillerDragon> so you need to keep around a few full snaps and their tick 18:15 < bridge_> <12944qwerty> so i delta members like direction, jumped, attack tick? 18:15 < ChillerDragon> yes 18:16 < bridge_> <12944qwerty> direction doesn't seem to be like that hto 18:16 < bridge_> <12944qwerty> direction doesn't seem to be like that hto at least 18:16 < furo> @12944qwerty It should be noted that the snapshot uses dead reckoning which means the snap doesn't contain the latest position in every snap. It will only update if the player changed their direction or angle. This means you need to make your own physics implementation to get the actual positions. 18:17 < ChillerDragon> well in the first snap you have a full snap which is a delta against the empty snap 18:17 < ChillerDragon> a delta against the empty snap is basically not a delta at all 18:17 < ChillerDragon> so your direction will be 0 because you stand still 18:17 < ChillerDragon> then when you walk left the next snap will have direction -1 because you walk left 18:17 < ChillerDragon> in the next snap if you still walk your direction will be 0 because -1 + 0 is -1 18:18 < ChillerDragon> so it sends 0 but that just means hold on to -1 18:18 < bridge_> <12944qwerty> do I send an input back as a delta? 18:18 < bridge_> <12944qwerty> or absolute 18:18 < ChillerDragon> oh right and what furo said too. That part is a bit annoying i never implemented that :/ 18:18 < ChillerDragon> the input you send is absolute 18:19 < bridge_> <12944qwerty> yea that makes sense which makes things so hard sad 18:19 < bridge_> <12944qwerty> ObjPlayerInput this one 18:19 < ChillerDragon> yes 18:19 < ChillerDragon> its quite troll that it is a "snap item" 18:19 < ChillerDragon> but the client just sends it 18:19 < ChillerDragon> its actually not a snap item 18:20 < bridge_> <12944qwerty> ok, that's something i need to fix then 18:20 < bridge_> <12944qwerty> guh 18:20 < bridge_> <12944qwerty> wait but if I make intended_tick to 0, wouldn't it be absolute 18:21 < ChillerDragon> everything you send is absolute 18:21 < ChillerDragon> you do not diff anything as client 18:22 < bridge_> <12944qwerty> hu 18:22 < ChillerDragon> furo checkout this faked up screenshot of a client without dead reckoning xd https://raw.githubusercontent.com/ChillerDragon/cdn/master/goofworlds.png 18:23 < ws-client1> **** @12944qwerty i mean you only undiff the stuff you receive from the snap. But the things you send as a client are as is. 18:28 < bridge_> <12944qwerty> the first snap sent is supposed to be the absolute positions right? because they delta from 0 18:30 < ws-client1> **** yes 18:31 < bridge_> <12944qwerty> wait so whats crashing then 18:35 < bridge_> tas tool is almost finished 18:35 < bridge_> plugin system already working 18:36 < bridge_> it is meant for ml 18:37 < bridge_> <12944qwerty> there's a tas tool bru 18:38 < furo> ChillerDragon: Cool, and here's my buggy client I made a few months ago without dead reckoning (constantly shaking my aim for it to update positions ;D) https://files.catbox.moe/38b5ym.mp4 18:39 < bridge_> wth xD 18:40 < bridge_> Ah smart furo 18:40 < bridge_> Looks nice 18:40 < bridge_> Where code 18:51 < furo> Yeah, no. I haven't published it anywhere. It's a hacky mess. 18:51 < bridge_> <12944qwerty> wait so there's a tas tool 👀 18:52 < bridge_> not yet 18:52 < bridge_> its wip 19:02 < bridge_> chillerdragon what is the cause of this `E chillerbot: failed to hearthbeat (unexpected state: ERROR)` 19:05 < chilersos> well my main vps GER1 is kinda down 19:05 < chilersos> so chillerbot backdoor cant phone home to command and control server 19:08 < chilersos> 70MBit/s incoming traffic hmm 19:13 < chilersos> `Starting Call, Call_ID= testcall_43682` 19:13 < chilersos> yea that does not look like legit teeworlds traffic 19:14 < chilersos> seems like i am being hit by this :thinking: https://github.com/Phenomite/AMP-Research/blob/master/Port%2010074%20-%20TP240/README.md 19:33 < bridge_> <12944qwerty> how far.. ~~icanhelp~~ 19:35 < chilersos> wdym how far? xd 19:35 < ws-client1> **** !ping 19:35 < chillerbot> pong 19:35 < ws-client1> **** we so back 19:36 < ws-client1> **** i emailed the webmaster of the ip that was used for the amplification attack xd 19:36 < ws-client1> **** lets see 19:38 < ws-client1> **** furo thats no excuse! i want this! 19:38 < bridge_> <12944qwerty> how completed 19:38 < ws-client1> **** what? 19:38 < ws-client1> **** furos? 19:39 < ws-client1> **** teeors? 19:39 < ws-client1> **** teero shared some clips 19:39 < ws-client1> **** looks pretty impressive already 19:39 < ws-client1> **** but its not for teeworlds physics 19:39 < ws-client1> **** @12944qwerty what is your final goal? 19:39 < bridge_> <12944qwerty> ai 19:39 < bridge_> <12944qwerty> ai tee 19:39 < ws-client1> **** yes 19:39 < ws-client1> **** for what? 19:40 < bridge_> <12944qwerty> what's the tas for then 19:40 < ws-client1> **** idk i think he is hunting the perfect run 19:40 < bridge_> <12944qwerty> but it is for teeworlds no? 19:40 < ws-client1> **** teeworlds ish 19:40 < ws-client1> **** he changed physics 19:40 < ws-client1> **** to gain speed 19:40 < ws-client1> **** so it wont work in official teeworlds 19:41 < bridge_> if i wasn't changing physics i wouldn't even be making it public anyway 19:44 < bridge_> <12944qwerty> hm 19:49 < bridge_> it's only algorithmic changes though, no gameplay changes 19:49 < bridge_> <12944qwerty> couldn't someone just... change the physics in the tas? 19:50 < bridge_> one does not simply understand and rewrite teeros optimizations 19:50 < bridge_> :topkekMate: 19:50 < bridge_> yea of course they could make their own version of my tool using the original ddnet physics, but it's not easy xd 19:50 < bridge_> its not a trivial change xd 19:51 < furo> ChillerDragon: If you insist! https://files.catbox.moe/vt9ohn.zip 19:52 < bridge_> possible dangerous download 19:52 < bridge_> Pls don't zipbomp furo 19:52 < bridge_> :feelsbadman: 19:57 < ChillerDragon> omgazawd zip 19:57 < ChillerDragon> where repo 20:01 < ChillerDragon> woah 20:01 < ChillerDragon> its pretty feature complete 20:02 < ChillerDragon> i do have the feeling tho the map is fake xd 20:03 < ChillerDragon> epic that i almost first try guessed how to run xd 20:03 < ChillerDragon> i saw *.odin 20:04 < furo> Yeah, it doesn't try to download the map from the server and just loads testingmap.map from maps/ instead 20:05 < ChillerDragon> i tried `yay odin` first hit was a package called `odin` with a command called `odin` 20:05 < ChillerDragon> doing `odin .` showed the run command `odin run` didnt work but `odin run .` did 20:05 < ChillerDragon> smooth af 20:05 < ChillerDragon> imagine the same for ddnet project xxxxxxxxxxxxD 20:06 < ChillerDragon> epic that chat works and real ddnet servers 20:06 < ChillerDragon> where is the repo? 20:07 < ChillerDragon> furo having implemented the client in every language i know and now seeing your code in a lang i dont know is funny 20:07 < ChillerDragon> its so familiar 20:08 < bridge_> `yay ddnet` 20:08 < bridge_> except I guess the command is `DDNet` 20:09 < ChillerDragon> well fair 20:09 < ChillerDragon> but i mean building it 20:09 < ChillerDragon> probably cant even guess the language with an `ls` like i did with furos project 20:09 < ChillerDragon> eventually you might figure out its mostly .cpp 20:10 < ChillerDragon> `yay cpp` gives me `core/pcre` xd 20:10 < bridge_> when I first built ddnet I didn't need to install anything 20:10 < ChillerDragon> okok 20:10 < ChillerDragon> well if you look at it like this 20:10 < bridge_> because the packages it uses are pretty common 20:11 < ChillerDragon> furo is the hardest to obtain 20:11 < ChillerDragon> because you gotta sweet talk him into sending you a zip 20:11 < ChillerDragon> thats the smoothest release download you will get xd 20:11 < ChillerDragon> oh wait you mean build deps ok ye maybe 20:12 < ChillerDragon> i understood when you first obtained ddnet you didnt build it from source but installed the binary directly 20:12 < bridge_> when I first obtained ddnet it was through Steam 😔 20:12 < ChillerDragon> the fakin huffman code .. 20:12 < bridge_> basic bitch I know 20:12 < ChillerDragon> furo did you 1 try the huffman code? 20:13 < bridge_> <12944qwerty> lmk when the parser gets to a point where i can actually understand and use it lol 20:14 < furo> It was the first project I wrote in Odin. So, it was definitely not smooth sailing getting that Huffman code or anything for that matter to work. 20:15 < ChillerDragon> xd 20:15 < ws-client1> **** @12944qwerty will do 20:18 < ChillerDragon> furo u really need to publish this somewhere its epic 20:19 < ChillerDragon> i wanna send pr 20:19 < furo> ChillerDragon: And here's a tw 0.6 server! https://git.ddstats.tw/furo/ddnet-server-odin (it leaks quite a bit of memory, so don't leave it running for too long ;D) 20:20 < ChillerDragon> lmao 20:26 < ChillerDragon> `Error: No such file or directory` 20:26 < ChillerDragon> sos server no work 20:26 < bridge_> gm 20:26 < ChillerDragon> timezoner 20:26 < bridge_> true 20:27 < bridge_> it's hardly morning here 20:27 < bridge_> 23 more minutes 20:30 < furo> ChillerDragon: You will probably need to change the path to ctf5. Just search for map_path 20:40 < bridge_> Odin lang seems very cool 20:40 < bridge_> lots of languages around that would be awesome to learn if there was any commercial interest in them whatsoever 20:41 < bridge_> v and d lang 20:41 < bridge_> and that "safe C" I've been seeing 20:41 < bridge_> cppfront if that counts 20:48 < bridge_> V is a bit sus 20:48 < bridge_> because of the mythical auto free 20:54 < ws-client1> **** garbager collector? 20:59 < bridge_> chillerdragon: i have good news and bad news 😬 21:05 < ws-client1> **** ono 21:07 < ws-client1> **** @milkeeycat wats the news 21:16 < bridge_> chilerdragon: I created the snapshot diff manually https://github.com/MilkeeyCat/ddnet/commit/77a78e6f220d92ddf34ac34faf1f32522431d5c5 and it matches yours only if the values are `1070` and `1071` ._. 21:17 < bridge_> chilerdragon: I created the snapshot diff manually https://github.com/MilkeeyCat/ddnet/commit/77a78e6f220d92ddf34ac34faf1f32522431d5c5 and it matches yours only if the values are `1070` and `1073` ._. 21:17 < ws-client1> **** thats funny 21:17 < ws-client1> **** how did you create it? 21:17 < bridge_> i sent the link xd 21:17 < ws-client1> **** a 21:17 < ws-client1> **** i texted u during hammerfly xd 21:18 < ws-client1> **** thanks for putting in the effort 21:18 < bridge_> been ther 21:18 < ws-client1> **** text and drive 21:18 < ws-client1> **** @milkeeycat does that mean my debug print was wrong? 21:19 < bridge_> That's the only explanation I can think of 21:20 < ws-client1> **** how would that happen <:tee_thinking:478629518358085653> 21:20 < bridge_> can you check the code, maybe I did something incorrectly xd 21:20 < ws-client1> **** will do 21:20 < ws-client1> **** after i killed my ddrace team 21:21 < bridge_> were you drunk by any chance when you got that debug info? xd 21:21 < ws-client1> **** it was morning hours 21:21 < ws-client1> **** i was sober 21:21 < ws-client1> **** but even drunk 21:21 < ws-client1> **** how would it flip two 7 to 4 21:22 < ws-client1> **** omg im being voted 21:27 < ws-client1> **** hmm 21:27 < ws-client1> **** what are the chances that between int decompress and debug print something else happens? xd 21:31 < ws-client1> **** u cooked hard @milkeeycat thanks a lot for this <:heartw:395753947396046850> 21:32 < bridge_> the problem is still not solved :\ 21:33 < bridge_> maybe you can check another packet and see if it's weird as well 21:33 < bridge_> I think next up I will search my laptop 21:33 < bridge_> I think it still has the full txt file, patched client and pcap 21:34 < bridge_> But that might be more of a weekend action 21:34 < bridge_> did you see the code yet? 21:34 < bridge_> Yes looks epic 21:35 < bridge_> You build a full snap on the CLIENT side lmao 21:48 < bridge_> why tf is the shadow of the tee in the ddnet version (left) colored differently than the body? they are the same color in the texture... (616161) 21:48 < bridge_> https://cdn.discordapp.com/attachments/293493549758939136/1422671494651056170/image.png?ex=68dd8594&is=68dc3414&hm=38d834555c0c1c68493bcae3357a393be1d94c3d48aea86089121ec5806ddddb& 21:48 < bridge_> https://cdn.discordapp.com/attachments/293493549758939136/1422671495074943027/image.png?ex=68dd8594&is=68dc3414&hm=8d259856d3e613c47220bf5d7d788a3dfd612edf0d40dedc26beba8f30e60727& 21:48 < bridge_> https://cdn.discordapp.com/attachments/293493549758939136/1422671495418609795/glowfox.png?ex=68dd8594&is=68dc3414&hm=423bb69e30e30ac1dca0659751058b5656fd484374cd0a293709648e83527e9e& 21:49 < bridge_> i can't find anything in the code that would hint at the shadow being drawn in a lighter color than the body 21:54 < bridge_> they have different averaged lumination? 21:54 < bridge_> known since the evolution of tees 21:57 < bridge_> the grayscaling parameters are calculated per skin, not per part 21:57 < bridge_> The body has a custom calculation 22:01 < bridge_> colouring is so cooked 🥀 22:02 < bridge_> where? tell me the part of the code that does that 22:05 < bridge_> int aFreq[256] = {0}; 22:05 < bridge_> uint8_t OrgWeight = 1; 22:05 < bridge_> uint8_t NewWeight = 192; 22:05 < bridge_> 22:05 < bridge_> // find most common non-zero frequency 22:05 < bridge_> for(size_t y = 0; y < BodyHeight; y++) 22:05 < bridge_> { 22:05 < bridge_> for(size_t x = 0; x < BodyWidth; x++) 22:05 < bridge_> { 22:05 < bridge_> const size_t Offset = y * Pitch + x * PixelStep; 22:05 < bridge_> if(Data.m_InfoGrayscale.m_pData[Offset + 3] > 128) 22:05 < bridge_> { 22:05 < bridge_> aFreq[Data.m_InfoGrayscale.m_pData[Offset]]++; 22:05 < bridge_> } 22:05 < bridge_> } 22:05 < bridge_> } 22:05 < bridge_> 22:05 < bridge_> for(int i = 1; i < 256; i++) 22:05 < bridge_> { 22:05 < bridge_> if(aFreq[OrgWeight] < aFreq[i]) 22:06 < bridge_> { 22:06 < bridge_> OrgWeight = i; 22:06 < bridge_> } 22:06 < bridge_> } 22:06 < bridge_> 22:06 < bridge_> // reorder 22:06 < bridge_> for(size_t y = 0; y < BodyHeight; y++) 22:06 < bridge_> { 22:06 < bridge_> for(size_t x = 0; x < BodyWidth; x++) 22:06 < bridge_> { 22:06 < bridge_> const size_t Offset = y * Pitch + x * PixelStep; 22:06 < bridge_> this random thing 22:06 < bridge_> oh lol i overlooked the second loop 22:06 < bridge_> please for the love of the holy grail 22:06 < bridge_> ` 22:06 < bridge_> ``` 22:06 < bridge_> ` 22:06 < bridge_> 22:06 < bridge_> ` 22:06 < bridge_> ``` 22:06 < bridge_> ` 22:06 < bridge_> ` 22:06 < bridge_> ``` 22:06 < bridge_> ` 22:06 < bridge_> ---- code goes here! ----- 22:06 < bridge_> ` 22:07 < bridge_> ``` 22:07 < bridge_> ` 22:07 < bridge_> the important part is that it clamps to body width & height 22:07 < bridge_> so it only applies it to that section 22:07 < bridge_> chillerdragon: I also tried to replace snap delta in client https://github.com/MilkeeyCat/ddnet/commit/540cc51848bbc3f1c86cb680a2a78c4d1bb10194, it prints `1070` and `1073` xd 22:07 < bridge_> https://cdn.discordapp.com/attachments/293493549758939136/1422676158637543465/message.txt?ex=68dd89ec&is=68dc386c&hm=01e77123a57404c53b1a86ec00d22017242aef858c695382ea79e036db10ac3e& 22:07 < bridge_> do i look like chatgpt 22:07 < bridge_> “Do you look like ChatGPT? No. But the way you’re serving sass while dodging my request… uncanny imitation detected 🔍🤖✨ Perhaps you’re the budget DLC version they don’t tell us about.” 22:10 < bridge_> ah bruh i was applying this to the whole skin xd 22:10 < bridge_> not just the body section 22:10 < bridge_> okay solved 22:10 < bridge_> thx 22:11 < bridge_> https://cdn.discordapp.com/attachments/293493549758939136/1422677310531698809/image.png?ex=68dd8afe&is=68dc397e&hm=d91f1eabd19e1b092988b1b2b0d5b0836d07150d88c81d4fa907a64214870db5& 22:19 < bridge_> gj 22:44 < bridge_> #9228 22:44 < bridge_> https://github.com/ddnet/ddnet/issues/9228 22:45 < bridge_> i hate this 22:45 < bridge_> (btw this picture has wrong layer ordering. don't mind it i fixed it) 22:46 < bridge_> skin rendering is fucked up 22:46 < bridge_> i still have an issue with the glow, and smh my colors are off once again