00:00 < bridge_> (1 / 1 + (high_number / x))**high_number tends to e^x as high_number tends to infinity 00:01 < bridge_> hmm 00:02 < bridge_> i wonder how i would write it to make it not an approximation 00:14 < bridge_> short answer: `2.718281828459045` 00:14 < bridge_> long answer: you can't represent e exactly, e is an irrational number 00:16 < bridge_> i see 01:13 < bridge_> @learath2 are empty compilation units forbidden by the C standard? 01:14 < bridge_> why is C2183 a thing and why is it only being thrown when you disable MS extensions? 01:15 < bridge_> an empty file? It should be fine iirc 01:15 < bridge_> Atleast in c99 01:18 < bridge_> Well let me clarify, atleast I don't remember reading anything that forbids it 01:20 < bridge_> https://learn.microsoft.com/en-us/cpp/error-messages/compiler-errors-1/compiler-error-c2183?view=msvc-170&viewFallbackFrom=vs-2017 01:20 < bridge_> https://learn.microsoft.com/en-us/cpp/error-messages/compiler-errors-1/compiler-error-c2183 01:21 < bridge_> thanks, ms? 01:21 < bridge_> MS is very well known for their non compliant C compiler, no? 01:21 < bridge_> I need to enable `/Za` for `stdlib.h` not to define `min`/`max` macros 01:21 < bridge_> `/Za` means "turn on standard compliance" 01:21 < bridge_> but `/Za` also turns on this error 01:21 < bridge_> very funny 01:22 < bridge_> Huh, interesting, maybe I remember wrong, let me take a look at the standard 01:25 < bridge_> why can’t you define NOMINMAX before including Windows.h? 01:26 < bridge_> Yeah I don't see any issue, 5.1.1.2 even has a mention about "A source file that is not empty" implying if it is empty it's fine (IMO) 01:26 < bridge_> it comes from `stdlib.h`, not `windows.h` for whatever reason 01:26 < bridge_> took me quite some time to debug where this stupid macro is coming from 01:26 < bridge_> hmm 01:26 < bridge_> gcc -E? 01:26 < bridge_> msvs should have something similar 01:26 < bridge_> what if you just -D? 01:27 < bridge_> https://stackoverflow.com/q/26541150/870079 01:27 < bridge_> doesn't help, that strips all macros 01:27 < bridge_> `-D` what? 01:27 < bridge_> but it should show where includes start 01:27 < bridge_> NOMINMAX 01:27 < bridge_> doesn't in cl.exe 01:27 < bridge_> the equivalent flag 01:28 < bridge_> sry, gcc -D. dunno what it is in cl 01:28 < bridge_> `stdlib.h` doesn't check for `NOMINMAX` 01:28 < bridge_> hmm 01:28 < bridge_> also `-D`/`/D` 01:28 < bridge_> it's just /D on cl? 01:28 < bridge_> -D also works 01:28 < bridge_> yes 01:29 < bridge_> @learath2 gcc apparently also thinks so; seems like this might actually be something 01:35 < bridge_> they are the same 01:46 < bridge_> I actually don't see it, weird 01:46 < bridge_> Maybe it's an indirect result of another rule because I took a look at all the sections that I think governs translation 02:02 < bridge_> @heinrich5991 apparently it is a real thing, took someone in #C to tell me but 6.9, the syntax for a `translation-unit` is: 02:02 < bridge_> ``` 02:02 < bridge_> translation-unit: 02:02 < bridge_> external-declaration 02:02 < bridge_> translation-unit external-declaration 02:02 < bridge_> ``` 09:33 < bridge_> ah. annoying 09:50 < ChillerDragon> @heinrich5991 poggers new docs 09:54 < bridge_> ChillerDragon: I described the ddnet token protocol and also updated the wireshark-dissector to finally have support for it 09:56 < ChillerDragon> yes im currently reading through it i really appreciate it 09:57 < bridge_> nice docs 09:59 < bridge_> thanks 10:07 < ChillerDragon> https://zillyhuhn.com/cs/.1689235639.png 10:07 < ChillerDragon> whats new? 10:09 < bridge_> have you recompiled it? 10:09 < ChillerDragon> @heinrich5991 i deleted my plugins folder and recompiled master i was expecting to see a TKEN note here 10:09 < bridge_> it should show the token and the token magic 10:09 < ChillerDragon> did you test it? 10:10 < bridge_> yes 10:10 < ChillerDragon> woah 10:10 < ChillerDragon> how does it not show for me 10:10 < bridge_> send me the pcap pls 10:10 < bridge_> have you fetched and merged master? 10:10 < ChillerDragon> i compiled master 10:10 < ChillerDragon> and fetched yes 10:11 < bridge_> and merged? 10:11 < ChillerDragon> ou shit 10:11 < ChillerDragon> im outdated :D 10:11 < ChillerDragon> forgot to pull -.- 10:11 < ChillerDragon> omg sori 10:12 < ChillerDragon> https://zillyhuhn.com/cs/.1689235929.png 10:12 < ChillerDragon> pog 10:12 < bridge_> \o/ 10:13 < ChillerDragon> ok so when docs on the uuid extension thingies? 10:13 < bridge_> these are quite easy :p 10:13 < ChillerDragon> -.- 10:13 < bridge_> message ID 0, put the UUID as bytes after it 10:13 < bridge_> done 10:13 < ChillerDragon> ok nice 10:13 < bridge_> here's your doc :p 10:13 < ChillerDragon> thank 10:13 < bridge_> Hey everyone!!! I am checking to see if anyone here is in need of a Full time or part-time job. Flexible and Easy Work From Home 10:13 < bridge_> 10:14 < bridge_> BENEFITS! 10:14 < bridge_> 10:14 < bridge_> Training\: 1 week. 10:14 < bridge_> 3 hours daily/ 5days Monday-Friday 10:14 < bridge_> 10:14 < bridge_> Payment\: Weekly $2500 10:14 < bridge_> 10:14 < bridge_> Location\: Anywhere of your choice 10:14 < bridge_> 10:14 < bridge_> Employment Type\: online promoter /ONLINE TASK 10:14 < bridge_> 10:14 < bridge_> Work from Home Position 10:14 < bridge_> 10:14 < bridge_> JOIN THE CHAT ROOM FOR MORE INFORMATION 10:14 < bridge_> πŸ‘‡πŸ‘‡πŸ‘‡πŸ‘‡πŸ‘‡ 10:14 < bridge_> https://t.me/+s1mUKAv6bQMxOWE0 10:14 < bridge_> 10:14 < bridge_> https://t.me/+s1mUKAv6bQMxOWE0 10:16 < bridge_> Hey everyone!!! I am checking to see if anyone here is in need of a Full time or part-time job. Flexible and Easy Work From Home 10:16 < bridge_> 10:16 < bridge_> BENEFITS! 10:16 < bridge_> 10:16 < bridge_> Training\: 1 week. 10:16 < bridge_> 3 hours daily/ 5days Monday-Friday 10:16 < bridge_> 10:16 < bridge_> Payment\: Weekly $2500 10:16 < bridge_> 10:16 < bridge_> Location\: Anywhere of your choice 10:16 < bridge_> 10:16 < bridge_> Employment Type\: online promoter /ONLINE TASK 10:16 < bridge_> 10:16 < bridge_> Work from Home Position 10:16 < bridge_> 10:16 < bridge_> JOIN THE CHAT ROOM FOR MORE INFORMATION 10:16 < bridge_> πŸ‘‡πŸ‘‡πŸ‘‡πŸ‘‡πŸ‘‡ 10:16 < bridge_> https://t.me/+s1mUKAv6bQMxOWE0 10:16 < bridge_> 10:16 < bridge_> https://t.me/+s1mUKAv6bQMxOWE0 10:16 < bridge_> (note you still need to set system/game flag in the message ID. you can also observe it in the dissector btw) 10:20 < ChillerDragon> ok yea no idea when i get to that anyways i will first look into my snap crc being wrong again :c 10:51 < bridge_> ChillerDragon: what are you doing again? 11:09 < bridge_> botting 11:30 < ChillerDragon> no proof 11:30 < ChillerDragon> @heinrich5991 ddnet 0.7 support breaks on crc as soon as the server starts splitting up the snap into multiple messages 11:30 < ChillerDragon> client support* 11:31 < bridge_> your PR? 11:31 < ChillerDragon> yes 11:32 < bridge_> have you verified that you receive the same bytes in total? 11:32 < bridge_> e.g. check length and sha256sum of the complete bytes 11:32 < ChillerDragon> im still on a side quest to get a proper local testing setup 11:33 < ChillerDragon> flooding my localhost with tees 11:33 < ChillerDragon> but sounds like a good debug start :) 12:10 < ChillerDragon> is uuid considered a alternative to system and game? 12:11 < ChillerDragon> oh no u just said 12:11 < ChillerDragon> a uuid can be system or game i see 12:12 < bridge_> what do you need it for? ^^ 12:12 < bridge_> I wonder in what kind of project this is needed 12:13 < ChillerDragon> bot 12:13 < ChillerDragon> wops wrong chat 12:13 < ChillerDragon> xd 12:13 < ChillerDragon> Im now tinkering with my python network parser 12:14 < ChillerDragon> I want it to not crash for now when it receives a uuid 12:14 < bridge_> why does it crash on unknown packets? 12:14 < ChillerDragon> because i made it do so 12:14 < ChillerDragon> to ensure i can parse all properly 12:15 < ChillerDragon> haven't decided what i want to do when it gets more mature 12:15 < ChillerDragon> if i force users to call try catch or return some error object or silently ignore 12:15 < bridge_> you can have that as a parameter 12:15 < ChillerDragon> how to handle errors? 12:15 < bridge_> in tests, you might want to have the error 12:16 < bridge_> if it talks to other impls over the network, you likely want to ignore messages that you can't parse 12:16 < ChillerDragon> https://peps.python.org/pep-0020/ 12:17 < ChillerDragon> Errors should never pass silently. 12:17 < ChillerDragon> Unless explicitly silenced. 12:17 < bridge_> receiving an unknown message is not an error in the tw protocol 12:17 < bridge_> you're supposed to ignore the message 12:17 < bridge_> it's like an unknown http header 12:18 < ChillerDragon> i see 12:20 < ChillerDragon> quoted you on that :p 12:20 < ChillerDragon> https://gitlab.com/teeworlds-network/twnet_parser/-/issues/2 12:23 < ChillerDragon> A regular client for sure should ignore it. I was just wondering because I want to offer a flexible low level network lib not a client. 12:24 < ChillerDragon> i could see low level http parsers used by high level http clients also handling unknown headers but idk 12:24 < bridge_> but they're never going to error on an unknown one 12:25 < bridge_> almost all http servers also ignore unknown query parameters 12:26 < ChillerDragon> Yea okay 12:27 < ChillerDragon> Im just thinking I might want to use that lib to also investigate unknown traffic like an dissector and would want to see the errors 12:27 < bridge_> yea, makes sense 12:27 < ChillerDragon> for example the !p command of the irc bot when i dump some packet dump in here to see if its ddos or something 12:27 < ChillerDragon> i dont want to paste in 512 bytes and then get back its a valid 0.7 packet with two messages 12:28 < bridge_> makes sense 12:28 < bridge_> so two different modes? 12:28 < ChillerDragon> or force users to use try catch to avoid complexity on my side 12:29 < ChillerDragon> but yea a option that by default does not crash would be nicer 12:29 < ChillerDragon> only power users want to crash anyways 13:09 <+breton> hi folks. Could you please help us identify the person who spams across ddnet inviting people to join an infclass server? We do not condone this kind of stuff and would like to ban them on our side too. 13:35 < ChillerDragon> didnt see any 13:35 < ChillerDragon> breton: what servers do you host? 13:35 < ChillerDragon> or why do you care 13:40 <+breton> ChillerDragon: i care about infclass and moderate the server @ 195.123.214.91 13:41 < ChillerDragon> so they do ads for your competition on official ddnet and your server? 13:43 <+breton> they do spam for the server that i moderate 13:43 < ChillerDragon> which makes you look shady 13:43 < ChillerDragon> i see 13:44 < ChillerDragon> just take the free ad :D 13:46 <+breton> i would rather not 13:49 < bridge_> i noticed i didnt have valgrind installed on my gentoo 13:50 < bridge_> i installed it and turned on glibc debug symbols 13:56 < ChillerDragon> ou i just realized the crc is shared accross all snap parts 13:59 < ChillerDragon> https://zillyhuhn.com/cs/.1689249563.png 13:59 < ChillerDragon> and once again the dissector carried my ass 14:24 < bridge_> i'm so wet 14:25 < ChillerDragon> e wot 14:26 < bridge_> it's too hot 14:26 < bridge_> 35c right now 14:27 < bridge_> i'm soaked in sweat 14:31 < ChillerDragon> ye same here 14:31 < ChillerDragon> but pog progress 14:31 < ChillerDragon> https://zillyhuhn.com/cs/.1689251447.png 14:31 < bridge_> aren't german houses very good at staying confortable 14:32 < ChillerDragon> doesnt feel like munich was prepared for the heat 14:32 < ChillerDragon> we dont do ACs here 14:33 < bridge_> what are you guys doing? 14:33 < bridge_> (<@749222324980416602_=43hiller=44ragon>) 14:33 < bridge_> πŸ‘€ 14:35 < bridge_> guangzhou doesn't have heating. it's very cold for me to live here in the winter even tho my hometown have much colder winter. 14:35 < ChillerDragon> @salmonzik ddnet 0.7 client 14:36 < ChillerDragon> who needs heating when u got a blanket 14:36 < bridge_> em 14:36 < bridge_> me 14:36 < bridge_> funny thing 14:37 < bridge_> llvm crashes with segfault giving it valid mlir ir 14:37 < bridge_> c++ things you know 14:39 < bridge_> Interesting, are planned making any drastic changes to gameplay or additions in just terms of code? 14:39 < bridge_> (<@749222324980416602_=43hiller=44ragon>) 14:40 < ChillerDragon> me? no 14:40 < ChillerDragon> i just wanna allow the ddnet client to join also 0.7 servers 14:44 < bridge_> @jupeyy_keks did u prepare tomorrow friday rust talk 14:45 < bridge_> @learath2 please become a c++ llvm engineer and fix their segfaults 14:46 < bridge_> Segfaults are a part of the joy of using C++. I wouldn't dream of depriving you of them 14:46 < bridge_> :troll: 14:47 < bridge_> ```c++ 14:47 < bridge_> #0 mlir::detail::StorageUserBase::classof (val=...) 14:47 < bridge_> at /home/edgar/data/llvm-project-16.0.6.src/mlir/include/mlir/IR/StorageUniquerSupport.h:112 14:47 < bridge_> #1 0x0000555555deecda in llvm::CastInfo::isPossible (ty=...) at /home/edgar/data/llvm-project-16.0.6.src/mlir/include/mlir/IR/Types.h:350 14:47 < bridge_> #2 llvm::DefaultDoCastIfPossible >::doCastIfPossible (f=...) 14:47 < bridge_> at /home/edgar/data/llvm-project-16.0.6.src/llvm/include/llvm/Support/Casting.h:312 14:47 < bridge_> #3 llvm::dyn_cast (Val=...) at /home/edgar/data/llvm-project-16.0.6.src/llvm/include/llvm/Support/Casting.h:652 14:47 < bridge_> #4 mlir::Type::dyn_cast (this=) at /home/edgar/data/llvm-project-16.0.6.src/mlir/include/mlir/IR/Types.h:271 14:47 < bridge_> #5 llvm::detail::TypeSwitchBase, mlir::Type>::castValue (value=...) 14:47 < bridge_> at /home/edgar/data/llvm-project-16.0.6.src/llvm/include/llvm/ADT/TypeSwitch.h:77 14:47 < bridge_> #6 llvm::TypeSwitch::Case(mlir::LLVM::detail::TypeToLLVMIRTranslatorImpl::translateType(mlir::Type)::{lambda(mlir::LLVM::LLVMVoidType)#1}&&) (this=, caseFn=...) at /home/edgar/data/llvm-project-16.0.6.src/llvm/include/llvm/ADT/TypeSwitch.h:121 14:47 < bridge_> #7 llvm::detail::TypeSwitchBase, mlir::Type>::Case(mlir::LLVM::detail::TypeToLLVMIRTranslatorImpl::translateType(mlir::Type)::{lambda(mlir::LLVM::LLVMVoidType)#1}&&) (this=, caseFn=...) 14:47 < bridge_> at /home/edgar/data/llvm-project-16.0.6.src/llvm/include/llvm/ADT/TypeSwitch.h:60 14:47 < bridge_> #8 mlir::LLVM::detail::TypeToLLVMIRTranslatorImpl::translateType (this=0x555556399d40, type=...) at /home/edgar/data/llvm-project-16.0.6.src/mlir/lib/Target/LLVMIR/TypeToLLVM.cpp:39 14:47 < bridge_> #9 0x0000555555e219ac in convertOperationImpl (opInst=..., builder=..., moduleTranslation=...) at tools/mlir/include/mlir/Dialect/LLVMIR/LLVMConversions.inc:144 14:47 < bridge_> #10 0x0000555555cbc1c7 in mlir::LLVM::ModuleTranslation::convertOperation (this=this@entry=0x7fffffffcf90, op=..., builder=...) 14:47 < bridge_> at /home/edgar/data/llvm-project-16.0.6.src/mlir/lib/Target/LLVMIR/ModuleTranslation.cpp:567 14:47 < bridge_> #11 0x0000555555cbc817 in mlir::LLVM::ModuleTranslation::convertBlock (this=this@entry=0x7fffffffcf90, bb=..., ignoreArguments=, builder=...) 14:47 < bridge_> at /home/edgar/data/llvm-project-16.0.6.src/mlir/lib/Target/LLVMIR/ModuleTranslation.cpp:613 14:47 < bridge_> #12 0x0000555555cbdc89 in mlir::LLVM::ModuleTranslation::convertOneFunction (this=this@entry=0x7fffffffcf90, func=...) at /home/edgar/data/llvm-project-16.0.6.src/mlir/lib/Target/LLVMIR/ModuleTranslation.cpp:858 14:47 < bridge_> ``` 14:47 < bridge_> yes ima enjoy this 14:47 < bridge_> Looks excellent 14:48 < bridge_> c++ ish 14:48 < bridge_> You should go back to C, much prettier backtraces πŸ˜„ 14:48 < bridge_> the thing is im just using their tool 14:48 < bridge_> mlir-translate 14:48 < bridge_> with a given .mlir file 14:48 < bridge_> im not coding at all 14:48 < bridge_> XD 14:49 < bridge_> its a null pointer deref 14:49 < ChillerDragon> anyone else getting SDL leak sanitizer alerts? 14:49 < ChillerDragon> SDL_realloc_REAL 14:50 < bridge_> ``` 14:50 < bridge_> (gdb) i r rdi 14:50 < bridge_> rdi 0x0 0 14:50 < bridge_> ``` 14:50 < bridge_> ``` 14:50 < bridge_> (gdb) disassemble 0x0000555555deecda, +16 14:50 < bridge_> Dump of assembler code from 0x555555deecda to 0x555555deecea: 14:50 < bridge_> 0x0000555555deecda <_ZN4mlir4LLVM6detail26TypeToLLVMIRTranslatorImpl13translateTypeENS_4TypeE+202>: test %al,%al 14:50 < bridge_> 0x0000555555deecdc <_ZN4mlir4LLVM6detail26TypeToLLVMIRTranslatorImpl13translateTypeENS_4TypeE+204>: je 0x555555deecf0 <_ZN4mlir4LLVM6detail26TypeToLLVMIRTranslatorImpl13translateTypeENS_4TypeE+224> 14:50 < bridge_> 0x0000555555deecde <_ZN4mlir4LLVM6detail26TypeToLLVMIRTranslatorImpl13translateTypeENS_4TypeE+206>: test %rbx,%rbx 14:50 < bridge_> 0x0000555555deece1 <_ZN4mlir4LLVM6detail26TypeToLLVMIRTranslatorImpl13translateTypeENS_4TypeE+209>: je 0x555555deecf0 <_ZN4mlir4LLVM6detail26TypeToLLVMIRTranslatorImpl13translateTypeENS_4TypeE+224> 14:50 < bridge_> 0x0000555555deece3 <_ZN4mlir4LLVM6detail26TypeToLLVMIRTranslatorImpl13translateTypeENS_4TypeE+211>: mov (%r14),%rdi 14:50 < bridge_> 0x0000555555deece6 <_ZN4mlir4LLVM6detail26TypeToLLVMIRTranslatorImpl13translateTypeENS_4TypeE+214>: call 0x55555623fa00 <_ZN4llvm4Type9getVoidTyERNS_11LLVMContextE> 14:51 < bridge_> End of assembler dump. 14:51 < bridge_> ``` 14:51 < bridge_> 😬 14:51 < ChillerDragon> hax 15:02 < bridge_> I'll think about a topic later xd 15:17 < bridge_> If it only gets hot for a day and cools down at night they are great since lots of heavy bricks, and they take a while to get warm. But once you have tropical nights it becomes impossible to cool them down again. The houses are built for "there is only 1 week over 30Β°C per year, so we can survive it being unbearable for a bit". But this 1 week turned into 3 weeks already. 15:24 < ChillerDragon> ye my flat was still 30 degree at 2 in the night the last few days unless it starts to rain 15:25 < bridge_> Now that deen is dad, he has to take climate change double as serious 😎 15:25 < ChillerDragon> haha 15:32 < bridge_> is he dad already 15:32 < bridge_> i dont live in a house but apartment 15:32 < bridge_> and barcelona has stupidly high humidity 15:32 < bridge_> u just sweat shitloads 15:33 < bridge_> during morning which is when humidy reaches its high it can go to 95$ 15:33 < bridge_> 95% 15:42 < bridge_> Well the day after tomorrow its 2 months since the msg @ryozuki 15:42 < bridge_> 15:42 < bridge_> So it happens very very soon 15:42 < bridge_> Ok in 5 days lol 15:49 < bridge_> Hi devs, what do you think about "shadow" mute/spam? I mean the mute/ban without a notification to the target. 15:49 < bridge_> I see you want to be clear for the players but let's be fair β€” we're not capable to deal with all spammers. They use "unfair" techniques and we have to spend a lot of energy fighting with them. 15:49 < bridge_> 15:49 < bridge_> For example, I suggest to add text-based shadow mute. This way we can add an advertising message to an auto-mute list and calm down the spammers. It is much easier for them to detect 'clear' bans and 'mutes' and rotate IPs / join another servers. On the other hand, it is hard for us to manually mute all the bots. 15:49 < bridge_> Instead on the ddnet level it can be "`for server in all_servers: econ block_message "EVERYONE GO TO THIS SERVER FAST! LET'S MAKE THE MEAT!!!" 600 "new spam"` putting all whoever say this in a 10 minutes shadow mute, so other players won't see any message from those who are muted but the muted players 'll receive proper chat respond from the server. 15:49 < bridge_> 15:49 < bridge_> It 'll take time for the spammers to beat it (though I see how to overcome it). 15:51 < bridge_> Another "unfair" feature is name-based shadow autoban. 15:51 < bridge_> Use-case: there was a racist person (maybe you 15:51 < bridge_> @ryozuki do you know if there is something like `str_utf8_forward` in Rust? 15:51 < bridge_> shadow banning 15:52 < bridge_> what does str_utf8_forward 15:52 < bridge_> Skips n utf8 codepoints 15:52 < bridge_> I guess I could (ab)use an iterator 15:52 < bridge_> Another "unfair" feature is name-based shadow autoban. 15:52 < bridge_> Use-case: there was a racist person (maybe you've seen/remember him β€” `elban`). I banned him, he reconnected from a different IP. And then it repeated like 10 times, until one of us gave up. 15:52 < bridge_> He connected with the same username, and noone else used that name, so this could be automated. 15:52 < bridge_> @learath2 isnt the chars iterator that 15:53 < bridge_> i dont remember but i think they are graphemes 15:53 < bridge_> or smth 15:53 < bridge_> https://doc.rust-lang.org/std/primitive.str.html#method.chars 15:53 < bridge_> > Returns an iterator over the chars of a string slice. 15:53 < bridge_> > 15:53 < bridge_> > As a string slice consists of valid UTF-8, we can iterate through a string slice by char. This method returns such an iterator. 15:53 < bridge_> > 15:53 < bridge_> > It’s important to remember that char represents a Unicode Scalar Value, and might not match your idea of what a β€˜character’ is. Iteration over grapheme clusters may be what you actually want. This functionality is not provided by Rust’s standard library, check crates.io instead. 15:53 < bridge_> Doubt they are graphemes, graphemes are extremely hard to decode, require a massive table 15:53 < bridge_> Yeah regular codepoints is what I want anyway 15:53 < bridge_> then its that ye 15:53 < bridge_> Another "unfair" feature is name-based shadow autoban. 15:53 < bridge_> Use-case: there was a racist person (maybe you've seen/remember him β€” `elban`). I banned him, he reconnected from a different IP. And then it repeated like 10 times, until one of us gave up. 15:53 < bridge_> He connected with the same username, and noone else used that name, so this could be automated. 15:53 < bridge_> "Shadow" part here is the idea to make the spammer spend more time on realizing what is going on. We can just ignore/drop his network packets without a reply. 15:54 < bridge_> u can make the iterator peekable() 15:54 < bridge_> I need to keep track of my byte position through the string aswell 15:54 < bridge_> So I guess a peekable char_indices 15:54 < bridge_> Was just wondering if there was a more non-iterator way to do it πŸ˜„ 15:55 < bridge_> https://doc.rust-lang.org/std/primitive.str.html#method.char_indices 15:55 < bridge_> i mean good thing about iterator is u dont have to allocate a vec 15:56 < bridge_> Problem with iterator is when I read a character there is no going back without making it peekable, but with a peekable iterator I can't use all the cool functions like `.skip_while()` 15:56 < bridge_> Anyway, I'll just do one loop and not use the cool functions I guess 15:57 < bridge_> @learath2 check if itertools has what u want 15:57 < bridge_> https://docs.rs/itertools/latest/itertools/ 15:57 < bridge_> Ah, I'd forgotten it was a thing in rust aswell 15:58 < bridge_> https://docs.rs/itertools/latest/itertools/trait.Itertools.html#method.peeking_take_while 15:58 < bridge_> it has some take whiles 15:58 < bridge_> Exactly what I'm looking for 15:59 < bridge_> Thanks Rustman 15:59 < bridge_> np 16:00 < bridge_> btw a neat thing i discovered recentely 16:00 < bridge_> I wonder if there is any overhead fo peekable, it should be free for iterating arrays if specialized enough 16:00 < bridge_> if u have a iterator over options 16:00 < bridge_> u can filter all nones with .flatten() 16:00 < bridge_> its pretty neat 16:00 < bridge_> Ah yep, I've used this before 16:01 < bridge_> ```rust 16:01 < bridge_> impl MyHashmap 16:01 < bridge_> where 16:01 < bridge_> K: Eq + Hash, 16:01 < bridge_> S: BuildHasher, 16:01 < bridge_> { 16:01 < bridge_> fn resize(&mut self) { 16:01 < bridge_> let new_storage: Vec> = 16:01 < bridge_> (0..self.storage.len() * 2).map(|_| None).collect(); 16:01 < bridge_> 16:01 < bridge_> // Replace the storage with the new one, so we can use self.x methods to rehash. 16:01 < bridge_> let old_storage = std::mem::replace(&mut self.storage, new_storage); 16:01 < bridge_> 16:01 < bridge_> self.len = 0; 16:01 < bridge_> 16:01 < bridge_> for (k, v) in old_storage.into_iter().flatten() { 16:01 < bridge_> self.insert(k, v); 16:01 < bridge_> } 16:01 < bridge_> } 16:01 < bridge_> } 16:01 < bridge_> ``` 16:01 < bridge_> i used it on my blog post 16:01 < bridge_> and i discovered this thanks to... 16:01 < bridge_> clippy! 16:02 < bridge_> :gigachad: 16:02 < bridge_> Did it get Fame? 16:02 < bridge_> What was the Reddit link again 16:02 < bridge_> it reached frontpage for some time 16:02 < bridge_> https://www.reddit.com/r/rust/comments/14vtc8f/implementing_a_simple_hashmap_in_rust/ 16:02 < bridge_> it has some comments 16:02 < bridge_> but im lazy rn to address them 16:02 < bridge_> one is rly nice 16:02 < bridge_> the one mentioning the cycles 16:03 < bridge_> https://cdn.discordapp.com/attachments/293493549758939136/1129050353069998191/image.png 16:03 < bridge_> these are the stats 16:03 < bridge_> from reddit 16:04 < bridge_> @ryozuki any idea what the best way would be to consume all? 16:05 < bridge_> google search 16:05 < bridge_> https://cdn.discordapp.com/attachments/293493549758939136/1129050886858080349/image.png 16:05 < bridge_> I don't need what I take technically 16:05 < bridge_> consume? 16:05 < bridge_> skip? 16:05 < bridge_> technically collect consumes all xd 16:05 < bridge_> <_voxeldoesart> what does this do 16:06 < bridge_> Yes, but there is no `peeking_skip` so I need to discard what I get from `peeking_take_while` 16:07 < bridge_> resizes the hashmap 16:07 < bridge_> using mem replace for minimum copies 16:08 < bridge_> <_voxeldoesart> weird 16:08 < bridge_> i dont get it much 16:08 < bridge_> maybe example 16:08 < bridge_> whats weird 16:10 < bridge_> ```rust 16:10 < bridge_> fn foo(s: &str) { 16:10 < bridge_> let mut it = s.char_indices().peekable(); 16:10 < bridge_> it.peeking_take_while(|(u, c)| { c.is_whitespace() }) 16:10 < bridge_> } 16:10 < bridge_> ``` 16:10 < bridge_> I now need to consume all of the new iterator `peeking_take_while` returned 16:11 < bridge_> ah 16:11 < bridge_> dont u simply want to filter? 16:11 < bridge_> tell me what u want to do with the chars 16:11 < bridge_> No, I technically just need `peeking_skip` I need to skip all whitespace without consuming the first non-whitespace character 16:12 < bridge_> filter doesnt consume non filtered iirc 16:12 < bridge_> `it.filter(|x| x.is_whitespace() )` with this u have a iterator over non whitespace chars 16:12 < bridge_> hi 16:14 < ChillerDragon> coberfita 16:14 < bridge_> can we have a public archive for reports since its private rn (unless its already public and i havent found it) 16:14 < bridge_> I had this idea aswell but I can't just iterate over non whitespace, I need to know where the whitespaces are. I'm rewriting my lexer 16:14 < bridge_> why u writing a lexer 16:14 < bridge_> use logos 16:14 < ChillerDragon> why you writing a hashmap 16:14 < bridge_> https://docs.rs/logos/latest/logos/ 16:14 < bridge_> This I why I asked an XY question instead of telling you exactly what I'm doing πŸ˜„ 16:14 < bridge_> xd 16:14 < bridge_> hmm 16:15 < bridge_> maybe some fold where the acc is a storage of whitespace indexes or smth 16:15 < bridge_> but logos will be faster than anything u write by hand 16:15 < bridge_> atleast thats what they claim 16:15 < ChillerDragon> ethos 16:15 < ChillerDragon> pathos 16:15 < ChillerDragon> logos 16:15 < bridge_> https://cdn.discordapp.com/attachments/293493549758939136/1129053591152361632/image.png 16:15 < bridge_> cute logo too 16:16 < bridge_> I'm just trying to get more comfy with rust, using a lexer generator won't help 16:16 < bridge_> just make 2 iterators? 16:16 < bridge_> one for whitespaces one for none 16:16 < bridge_> or simply do a for loop 16:16 < ChillerDragon> ryo send like on gh issue pls 16:16 < ChillerDragon> https://github.com/PathosEthosLogos/Leave-a-message-beep/issues/1 16:16 < ChillerDragon> i need attention from this guy 16:17 < ChillerDragon> he creator of logos 16:17 < bridge_> <_voxeldoesart> idk im just dumb 16:17 < bridge_> @learath2 ur gonna need to save the whitespace indexes so 16:17 < bridge_> make a hashset and save the indexes there 16:17 < bridge_> well 16:17 < bridge_> a vec 16:17 < bridge_> the indexes will be unique anyway xd im dum 16:18 < bridge_> no u just need to learn rust 16:19 < bridge_> @learath2 what about https://docs.rs/itertools/latest/itertools/fn.multipeek.html 16:20 < bridge_> I don't need to peek further than one 16:20 < bridge_> On a scale of 0-10, how ugly is just doing `.for_each(|_| {})` on the `PeekingTakeWhile`? 16:21 < bridge_> i usually use for loops inteast 16:21 < bridge_> instead 16:21 < bridge_> So just a for loop with an empty body? 16:21 < bridge_> whait 16:21 < bridge_> thats ugly 16:22 < bridge_> im still confused 16:22 < bridge_> idk if im an idiot 16:22 < bridge_> Or I guess I could do this the ancient way, just not have it peekable and have one big state machine handle everything 16:22 < bridge_> you want to save all whitespace ranges? 16:22 < bridge_> Noo, it's probably my ancient coding style that doesn't match with your mental image of what I'm doing 16:22 < bridge_> I want to skip the whitespace, nothing more 16:22 < bridge_> but then why no filter? 16:23 < bridge_> wtf LOL 16:23 < bridge_> I want to skip the whitespace until the first non-whitespace, then I need to do other stuff that require me to no longer ignore the whitespace 16:23 < bridge_> @_voxeldoesart did u make the new banners in welcome channel 16:23 < bridge_> If I have a filtered iterator I can't unfilter it after I hit the first non-whitespace 16:23 < bridge_> ahh 16:24 < bridge_> https://doc.rust-lang.org/std/iter/trait.Iterator.html#method.skip_while 16:24 < bridge_> this ? 16:24 < bridge_> > Creates an iterator that skips elements based on a predicate. 16:24 < bridge_> > 16:24 < bridge_> > skip_while() takes a closure as an argument. It will call this closure on each element of the iterator, and ignore elements until it returns false. 16:24 < bridge_> > 16:24 < bridge_> > After false is returned, skip_while()’s job is over, and the rest of the elements are yielded. 16:25 < bridge_> https://play.rust-lang.org/?version=stable&mode=debug&edition=2021&gist=8d940200647edaabba130c6f6005b9e2 16:25 < bridge_> looks like what uwant 16:25 < bridge_> @pipou_tw drew the backgrounds, I did the font. 16:26 < bridge_> https://cdn.discordapp.com/attachments/293493549758939136/1129056208620376084/image.png 16:26 < bridge_> @learath2 16:26 < bridge_> @murpi ur announcement is a bit meh 16:26 < bridge_> https://cdn.discordapp.com/attachments/293493549758939136/1129056327050739733/image.png 16:26 < bridge_> "no access" received a make over 16:26 < bridge_> xd 16:27 < bridge_> Yes, just fixed that 16:27 < bridge_> Oh, skip_while returns an iterator aswell, I didn't think of that 16:28 < bridge_> ok it looks good 16:28 < bridge_> @murpi u dont link the wiki anywhere :PES3_Cry: 16:28 < bridge_> @murpi btw 16:28 < bridge_> πŸ‘€ 16:29 < bridge_> It's linked in multiple places 16:29 < bridge_> @murpi i also host this 16:29 < bridge_> https://codedoc.ddnet.org/ 16:29 < bridge_> oh u link it 16:29 < bridge_> im blind 16:29 < bridge_> (the wiki) 16:30 < bridge_> <_voxeldoesart> not yet 16:30 < bridge_> @murpi do only admins see complains or all mods? 16:30 < bridge_> Just admins 16:30 < bridge_> mods would abuse 16:31 < bridge_> ok nice 16:31 < bridge_> add content creator role 😎 16:31 < bridge_> u could also add this on the for developers section: https://edgarluque.com/categories/ddracenetwork/ 16:31 < bridge_> totally not self inserted 16:32 < bridge_> but imho its good for incoming devs 16:32 < bridge_> :blobwhistle: 16:32 < bridge_> also wiki curator color would be cool 16:32 < bridge_> i agree actually 16:32 < bridge_> add more posts though 16:32 < bridge_> ye 16:32 < bridge_> i added one last time 16:32 < bridge_> about UI 16:32 < bridge_> what could be next 16:32 < bridge_> it'd override the Dev color though 16:33 < bridge_> nooo 16:33 < bridge_> dev is important 16:33 < bridge_> for me 16:33 < bridge_> its sad discord doesnt detach color priority from role priority 16:33 < bridge_> did u ever finish adidng map tiles? 16:33 < bridge_> @ryozuki Maybe pin all the useful resources here? 16:33 < bridge_> iirc last time it wasnt complete 16:33 < bridge_> i never made a post about that iirc 16:34 < bridge_> i know how to do it cuz i did telegun so its a good idea 16:34 < bridge_> there was a link about it somewhere on ur site 16:34 < bridge_> or a mention 16:34 < bridge_> but no post 16:34 < bridge_> @murpi pin this 16:34 < bridge_> https://wiki.ddnet.org/wiki/Development#External_resources 16:34 < bridge_> or should it be without the # 16:35 < bridge_> https://wiki.ddnet.org/wiki/Development 16:36 < bridge_> <_voxeldoesart> @cyberfighter im gonna do the concepts and stuff in clip studio paint and then probably hand it to someone like ravie or pipou so they can make it look game accurate 16:36 < bridge_> wtf is studio paint 16:37 < bridge_> clip studio paint 16:37 < bridge_> <_voxeldoesart> my art program 16:37 < bridge_> <_voxeldoesart> the art program i use 16:51 < bridge_> is the skin channel discord integration finished? 17:06 < ChillerDragon> Did anyone ever use the client console command ``callvote`` ? Seems kinda cool but super unused. 17:07 < bridge_> yes i used it a day ago 17:08 < bridge_> i used it a second ago 17:08 < bridge_> btw chiller ur switch spectate command is good 17:08 < bridge_> when add it to official ddnet 17:08 < bridge_> I used it a few times a while ago. It is not really convenient for immediate use but works fine with binds or scripts (econ). 17:13 < ChillerDragon> wowo i have been missing out 17:13 < ChillerDragon> i could also see that being super helpful on city servers where vote options are menus to bind something 17:14 < ChillerDragon> @cyberFighter yea i also use it from time to time i forgot why i never prd it to ddnet maybe because i was too lazy to clean up the code to get it merged 17:15 < bridge_> wtf 17:15 < bridge_> https://cdn.discordapp.com/attachments/293493549758939136/1129068682576920666/image.png 17:17 < bridge_> ok and 17:23 < bridge_> @ryozuki `assert_eq!(lexer.get_token(), Ok("hello"));` 17:23 < bridge_> `fn Lexer::get_token() -> Result` 17:23 < bridge_> 17:23 < bridge_> Is the correct thing to do here just doing `.to_string()` on the `"hello"`? I thought `String`s could be compared with `&str` np 17:23 < bridge_> no 17:23 < bridge_> do the opposite 17:23 < bridge_> as_str() on the token 17:24 < bridge_> map it ofc 17:24 < bridge_> It's in a result though, I'd need to map 17:24 < bridge_> whats wrong with map 17:24 < bridge_> map on a result is not lazy, u get another result 17:24 < bridge_> maybe .as_ref works but probs not here 17:25 < bridge_> lexer.get_token().as_ref() 17:26 < bridge_> @murpi why don't I see the first channel in #announcements 17:26 < bridge_> Actually can you even map this? Can't get that ref out of the mapping closure, no? 17:27 < bridge_> because of bugs and debugging on production servers is hell and takes forever 17:27 < bridge_> <_voxeldoesart> How is info stored inside demo files? And where can I find how kill messages are stored inside them? 17:27 < bridge_> should be visible now 17:29 < bridge_> try it 17:29 < bridge_> u can most probs 17:30 < bridge_> ```rust 17:30 < bridge_> error[E0515]: cannot return reference to function parameter `s` 17:30 < bridge_> --> src/lexer.rs:105:48 17:30 < bridge_> | 17:30 < bridge_> 105 | assert_eq!(lexer.get_token().map(|s| { s.as_str() }), Ok("a'b'bb")); 17:30 < bridge_> | ^^^^^^^^^^ returns a reference to data owned by the current function 17:30 < bridge_> ``` 17:31 < bridge_> true true 17:31 < bridge_> just save the get_token in a var 17:31 < bridge_> Demos contain the snapshots and messages that the client has received from the server 17:31 < bridge_> That doubles the size of my test function to avoid allocating a couple strings πŸ˜„ 17:32 < bridge_> but it doesnt allocate 17:32 < bridge_> xd 17:32 < bridge_> its ur call 17:32 < bridge_> to_string is shorter but allocs 17:32 < bridge_> <_voxeldoesart> I see. I found a strange bug where teamkills don't bring over the tees 17:32 < bridge_> <_voxeldoesart> https://cdn.discordapp.com/attachments/293493549758939136/1129072947164889128/image.png 17:33 < bridge_> <_voxeldoesart> I'm trying to fix it but I'm not sure where it could be located. 17:34 < bridge_> Maybe it's related to #3795 or #4545 17:34 < bridge_> https://github.com/ddnet/ddnet/issues/3795 17:34 < bridge_> https://github.com/ddnet/ddnet/issues/4545 17:35 < bridge_> Maybe the demo doesn't contain all the information because recording starting too late 17:35 < bridge_> Maybe the demo doesn't contain all the information because recording started too late 17:36 < bridge_> <_voxeldoesart> Oh dang. Well I'm going to publish my fix for #6838 right now, because I think this is too complex for the time I have LOL 17:36 < bridge_> https://github.com/ddnet/ddnet/issues/6838 17:38 < bridge_> My obsession with using less memory is usually restricted to runtime, but it does sort of annoy me 17:41 < bridge_> <_voxeldoesart> I'll post this issue on github for futureproof purposes 17:41 < bridge_> `.as_ref()` doesn't but `.as_deref()` does, someone on the rust dc gave me the tip πŸ˜„ 17:41 < bridge_> as true 17:41 < bridge_> oh* 17:41 < bridge_> i forgot about it 17:49 < bridge_> I can not believe this, I wrote a lexer in one try without any issues that can parse a ridiculous string like `"hello w\"o\"rl'd' a'\"a\"a'a a\"'b'b\"b \"a a\" 'b b'"` 17:49 < bridge_> @learath2 ping me if u have trouble with setup 😬 17:50 < bridge_> tell me where find the key for the skin thing 17:51 < bridge_> the key for the skindatabase crew role? 17:51 < bridge_> or the password? 17:51 < bridge_> the username and pw for the http auth thing 17:52 < bridge_> I guess it's somewhere in nginx configs now that I think about it 17:52 < bridge_> @ravie_ravie pm learath the user and pw pls 17:52 < bridge_> I didn't think it was just basic_auth 17:52 < bridge_> for skin database 17:52 < bridge_> not? 17:52 < bridge_> rust power 17:52 < bridge_> well that sucks xd 17:52 < bridge_> this lexer also has no segfaults 17:52 < bridge_> no out of bounds 17:52 < bridge_> I don't think you'd like what I created, it's very oldschool 17:52 < bridge_> its ok 17:53 < bridge_> if it doesnt have unsafe 17:53 < bridge_> ur lexer is memory safe tm 17:53 < bridge_> lexers are prone to segfaults iirc 17:53 < bridge_> in cpp xd 17:53 < bridge_> where can i check 17:53 < bridge_> and what does clippy say 17:53 < bridge_> :troll: 17:54 < bridge_> i know heinrich disagrees, but clippy often makes ur code idiomatic 17:54 < bridge_> https://play.rust-lang.org/?version=stable&mode=debug&edition=2021&gist=9e857abceed853aac445b547371b4c2d 17:54 < bridge_> does it rewrite code even at the cost of perf? 17:55 < bridge_> I didn't do fmt or clippy on it yet, let's see if it hates anything 17:55 < bridge_> clippy doesnt rewrite code as is 17:55 < bridge_> and clippy has lints for perfomance 17:55 < bridge_> it makes ur code faster usually 17:55 < bridge_> chillerdragon: how can i demoativate you? XD 17:55 < bridge_> by pointing out perf errors 17:55 < bridge_> but why should heinrich disagree xd 17:55 < bridge_> https://rust-lang.github.io/rust-clippy/master/index.html#?groups=perf 17:55 < bridge_> i soon want to use all clippy warnings too 17:55 < bridge_> huh, clippy doesn't complain 17:55 < bridge_> Maybe I'm holding it wrong 17:56 < bridge_> how do you run clippy? 17:56 < bridge_> @learath2 try this `cargo clippy -- -D warnings` 17:56 < bridge_> if u want to be daring 17:56 < bridge_> do 17:56 < bridge_> ` `cargo clippy -- -D warnings -D clippy::nursery`` 17:56 < bridge_> more daring 17:56 < bridge_> `cargo clippy -- -D warnings -D clippy::nursery -D clippy::pedantic` 17:56 < bridge_> i see, but welcome now looks fancy af, good job 17:56 < bridge_> `cargo clippy -- -D warnings -D clippy::nursery -D clippy::pedantic clippy::all` 17:57 < bridge_> `cargo clippy -- -D warnings -D clippy::nursery -D clippy::pedantic -D clippy::all` 17:57 < bridge_> Thanks πŸ™‚ 17:57 < bridge_> https://cdn.discordapp.com/attachments/293493549758939136/1129079219985596506/image.png 17:57 < bridge_> i found this on my code just now 17:58 < bridge_> ryo stop spam, ravie has to read important messages 17:59 < bridge_> i waited over a month for this day 17:59 < bridge_> :lol: 17:59 < bridge_> > #⁠developer - Get a glimpse into the exciting realm of game development! 17:59 < bridge_> 17:59 < bridge_> And: 17:59 < bridge_> - philosophy 17:59 < bridge_> - free software 17:59 < bridge_> - economics 17:59 < bridge_> - global crisis 17:59 < bridge_> - climate change 17:59 < bridge_> - nuclear energy and fision fusion 17:59 < bridge_> - rust 17:59 < bridge_> - random tech convos 17:59 < bridge_> Just 2 things, I called `ok_or` once instead of `ok_or_else` and I didn't derive `Eq` when I already derived `PartialEq` 17:59 < bridge_> nice 17:59 < bridge_> fix fix 17:59 < bridge_> read the eq thing 18:00 < bridge_> but most probs u need eq 18:00 < bridge_> or makes sense* 18:00 < bridge_> Read the Eq thing, it doesn't really matter for now, but no reason not to derive that aswell 18:00 < bridge_> https://doc.rust-lang.org/std/cmp/trait.Eq.html 18:00 < bridge_> if it doesn't end up used it'll go away in dead-code elimination 18:00 < bridge_> good api checklist guidelines tell library authors to derive eagerly these traits 18:00 < bridge_> https://rust-lang.github.io/api-guidelines/checklist.html 18:01 < bridge_> https://cdn.discordapp.com/attachments/293493549758939136/1129080045042925638/image.png 18:01 < bridge_> @learath2 have you looked for .htaccess inside www/skins/edit 18:01 < bridge_> Do you like the way I wrote it? Would you do it differently? 18:01 < bridge_> let me look 18:01 < bridge_> i guess u dont have pub methods? otherwise it would tell u to add lots of docs XD 18:01 < bridge_> oh 18:02 < bridge_> i didnt check ur code yet 18:02 < bridge_> Yeah, I'll make it pub and it'll annoy me about that 18:02 < bridge_> was making weird shenanigans at work 18:02 < bridge_> allocating a hashmap in rust and using it in mlir 18:02 < bridge_> `get_token` is self documenting, no? It gets a token πŸ˜„ 18:02 < bridge_> ```rust 18:02 < bridge_> #[no_mangle] 18:02 < bridge_> pub unsafe extern "C" fn blabla__alloc_dict() -> *mut std::ffi::c_void { 18:02 < bridge_> let map: Box>> = Box::default(); 18:02 < bridge_> Box::into_raw(map) as _ 18:02 < bridge_> } 18:02 < bridge_> ``` 18:02 < bridge_> :justatest: 18:02 < bridge_> it has unsafe in it, you are officially exiled from rust 18:03 < bridge_> no such luck, let me check the nginx conf 18:03 < bridge_> LETS GO 18:04 < bridge_> found it 18:04 < bridge_> EPIC 18:04 < bridge_> Oh it seems everyone has their own key 18:04 < bridge_> uff, but as long its basic auth 18:04 < bridge_> Hm, I guess the bot can get a key and we can use the #πŸ“¬submit-skins channel as a sort of audit log 18:05 < bridge_> @learath2 btw if only ppl with skin db crew role can write in #πŸ“¬submit-skins , u also have ot give that role to the bot 18:05 < bridge_> (write stuff other than skins) 18:06 < bridge_> if u need a name for the bot: 18:06 < bridge_> βœͺβœͺNet 18:06 < bridge_> 😬 18:06 < bridge_> It'll be `YAYADDB` 18:06 < bridge_> even better xD 18:07 < bridge_> <_voxeldoesart> SkinDB makes more sense 18:07 < bridge_> CSGOSkinTrade 18:09 < bridge_> @learath2 why allocate a string tho? why not keep track of a range 18:09 < bridge_> start end idx 18:09 < bridge_> That was my initial idea, but I hadn't thought about quotes, I need to be discarding them 18:09 < bridge_> oh i see 18:09 < bridge_> btw if u want ur code to be panicless, use .get instead of slicing 18:10 < bridge_> Aha, that's a good idea 18:10 < bridge_> @learath2 btw does the upload bot already check if a 256x128 skin is present? 18:10 < bridge_> 18:10 < bridge_> like can u upload 512x256 only, or does it throw an error? 18:10 < bridge_> The current bot? Don't we disable that part of it when we deploy yours? 18:11 < bridge_> no 18:11 < bridge_> mine is fancy af ez upload only 18:11 < bridge_> @learath2 btw in ur test u dotn need to escape 18:11 < bridge_> ```rust 18:11 < bridge_> let mut lexer = Lexer::new(r#"a "b" sadsa "#); 18:11 < bridge_> ``` 18:11 < bridge_> It does: 18:11 < bridge_> ```py 18:11 < bridge_> def check_image_resolution(message: discord.Message): 18:11 < bridge_> for attachment in message.attachments: 18:11 < bridge_> if (attachment.height != 128 or attachment.width != 256) and (attachment.height != 256 or attachment.width != 512): 18:11 < bridge_> return (False, 'One of the attached skins does not have the correct image resolution. Resolution must be 256x128, and if possible provide a 512x256 along with the 256x128') 18:11 < bridge_> return (True, None)``` 18:12 < bridge_> Wait, it doesn't check anything? 18:12 < bridge_> i added a few checks 18:12 < bridge_> but murpi told me it also checks 18:12 < bridge_> to me that doesnt look like it prevents 512x256 only tho does it? 18:12 < bridge_> Two bots need to coordinate to ensure proper operation, that's ddnet engineering πŸ˜„ 18:12 < bridge_> bcs the database refuses to upload this 18:13 < bridge_> well i think i check all stuff except this 18:13 < bridge_> and i only noticed that the database script refuses it by luck 18:13 < bridge_> bcs actually the database _can_ handle hd skins only 18:13 < bridge_> but we disallowed this purposely 18:13 < bridge_> <_voxeldoesart> if you make it SkinDB can you make the icon this? (It's the same tee design from #πŸ“info 18:13 < bridge_> <_voxeldoesart> https://cdn.discordapp.com/attachments/293493549758939136/1129083195510509608/SkinDB_Logo.png 18:13 < bridge_> true i agree with you voxel 18:14 < bridge_> @jupeyy_keks can you link me the source again btw? 18:14 < bridge_> holy shit its the mega tee @_voxeldoesart 18:14 < bridge_> @learath2 also in worst case the skin will simply not be uploaded, nothing more 18:14 < bridge_> https://github.com/ddnet/discord-skin-upload-bot 18:14 < bridge_> holy shit its the mega tee @_voxeldoesart (i meant to ping keb what a brainfart) 18:17 < bridge_> It prevents all images not equal to 256x128 or 512x256 18:18 < bridge_> yeah but the db would also need no hd always 18:18 < bridge_> not hd only skins 18:21 < bridge_> ^ @learath2 git pull xd 18:26 < bridge_> is having accepted pull requests the only criteria for dev role πŸ‘€ 18:27 < bridge_> lous like lynn inc 18:27 < bridge_> which did 1 commit to get the role and done 18:27 < bridge_> imho u should atleast be semi active xd 18:27 < bridge_> maybe if theres only 512x256 the bot can just downscale it 18:27 < bridge_> role collector 18:28 < bridge_> like me 18:28 < bridge_> <_voxeldoesart> I think it should work the same way as the Discord Dev badge 18:28 < bridge_> <_voxeldoesart> where if you don't make a valid PR in a month the dev role gets removed 18:28 < bridge_> what even was her pr 18:28 < bridge_> <_voxeldoesart> (i still get to keep mine because i did a bug fix ha ha!) 18:28 < bridge_> no 18:28 < bridge_> <_voxeldoesart> ok fine 18:28 < bridge_> <_voxeldoesart> yeah why doesnt louis have dev role wtf 18:29 < bridge_> xd, i doubt @ravie_ravie likes automatic downscale, so i better wont touch it now 18:29 < bridge_> my prs were pretty ez 18:29 < bridge_> <_voxeldoesart> same-ish 18:29 < bridge_> as long as u use correct downscaler idt it matters 18:29 < bridge_> and if a skin guy rly cares for good quality they can uplaod 2 vers 18:30 < bridge_> @jupeyy_keks im gonna make a pr to ur crate 18:30 < bridge_> not 18:30 < bridge_> <_voxeldoesart> wdym 18:30 < bridge_> now comes the rust gang xD 18:30 < bridge_> I do, just use a good interpolation 18:30 < bridge_> but anyway, for now its ok to not do it right? 18:30 < bridge_> i prefer to finally have the bot running 18:30 < bridge_> yes 18:30 < bridge_> it shouldnt be hard to add later anyways 18:31 < bridge_> is it a separate bot? 18:31 < bridge_> uploading one file is always better than 2 18:31 < bridge_> one of us could probably add it later anyways 18:31 < bridge_> what do u mean? 18:31 < bridge_> the skin upload bot is an own bot 18:31 < bridge_> also better to have a consistent way to downscale them than however someone decides to do it 18:32 < bridge_> someone might pick a terrible interpolation or somehow introduce artifacts 18:32 < bridge_> first of all i'd like to have feedback if u even like the bot xD 18:32 < bridge_> except me nobody ever used it xD 18:32 < bridge_> <_voxeldoesart> duude i LOVE the idea of not having to download like 30 skins to manually upload them 18:32 < bridge_> <_voxeldoesart> this is going to be worth it 18:33 < bridge_> where is the bot? 18:33 < bridge_> then lets cheer @learath2 18:33 < bridge_> show him love in his quest to start the bot after his exams 18:33 < bridge_> learath is setting it up rn 18:33 < bridge_> ah thought I was supposed to give feedback on something already 18:34 < bridge_> <_voxeldoesart> yay! 18:34 < bridge_> <_voxeldoesart> #6843 18:34 < bridge_> <_voxeldoesart> https://cdn.discordapp.com/attachments/293493549758939136/1129088444023455794/image.png 18:34 < bridge_> https://github.com/ddnet/ddnet/issues/6843 18:34 < bridge_> ye 18:34 < bridge_> <_voxeldoesart> noby to the rescue is something I never expected deen to say LOL 18:34 < bridge_> <_voxeldoesart> "noby to the rescue" is something I never expected deen to say LOL 18:34 < bridge_> um massive roadblock 18:34 < bridge_> ddnet.tw ran out of disk space πŸ˜„ 18:35 < bridge_> delete some maps 18:35 < bridge_> why do u even read these issues xD 18:35 < bridge_> ive got some suggestions 18:35 < bridge_> :troll: 18:35 < bridge_> are u subscribed to whole repo? 18:35 < bridge_> <_voxeldoesart> because im bored and reading issues is kinda fun 18:35 < bridge_> NO WAY XD rip 18:35 < bridge_> <_voxeldoesart> no i just kinda read new ones 18:36 < bridge_> @jupeyy_keks weird mutex usage 18:36 < bridge_> "yeah let's upload all bad skins, we have plenty of space" 18:36 < bridge_> where 18:37 < bridge_> ```rust 18:37 < bridge_> let mut skins_to_upload = item.skins_to_upload.clone(); 18:37 < bridge_> let upload_lock = data.get_mut::().unwrap().upload_lock.clone(); 18:37 < bridge_> drop(data); 18:37 < bridge_> 18:37 < bridge_> let _g = upload_lock.lock().await; 18:37 < bridge_> ``` 18:37 < bridge_> a lock around nothing 18:37 < bridge_> its not rly idiomatic 18:37 < bridge_> Arc> 18:40 < bridge_> i complained about heinrich 18:40 < bridge_> well its only that only one person uploads skins at a time 18:40 < bridge_> so it holds no data 18:40 < bridge_> but i think ur code might be uglier 18:40 < bridge_> its no lock around nothing 18:40 < bridge_> u also make insanely big methods 18:40 < bridge_> xdd 18:40 < bridge_> it locks the whole process 18:40 < bridge_> ah ok 18:40 < bridge_> yeah i dont usually do that 18:40 < bridge_> i wrote that bot to have it, not to win a coding contest xD 18:42 < bridge_> xd 18:42 < bridge_> @learath2 did u try rm -rf /* 18:42 < bridge_> should free some space 18:42 < bridge_> as seen on chillers VM 18:43 < bridge_> what data even fills the storage? 18:43 < bridge_> ops wait 18:44 < bridge_> now 18:44 < bridge_> oh wait 18:44 < bridge_> u had vscode files 18:45 < bridge_> xd 18:45 < bridge_> got wtf is that 18:45 < bridge_> https://cdn.discordapp.com/attachments/293493549758939136/1129091129103630437/image.png 18:45 < bridge_> its to read the number easier 18:45 < bridge_> i dunno xD 18:45 < bridge_> i can revert that xd 18:45 < bridge_> i guess this number aint meaninful to read anyway 18:45 < bridge_> its a discord id for emojis 18:46 < bridge_> @jupeyy_keks can it use a .env file? 18:46 < bridge_> the bot? 18:46 < bridge_> yes 18:46 < bridge_> i dunno, i guess not 18:46 < bridge_> well actually 18:47 < bridge_> i dunno xD 18:47 < bridge_> i simply never tested 18:47 < bridge_> can you sneak a `dotenv::dotenv()` somewhere? 18:47 < bridge_> so does the file need to be actively read? 18:47 < bridge_> No, just read it once at the start 18:47 < bridge_> yeah ok 18:48 < bridge_> ok i fixed the pr 18:48 < bridge_> god 18:48 < bridge_> https://crates.io/crates/dotenv 18:48 < bridge_> this? 18:48 < bridge_> yep 18:49 < bridge_> 3 years not updated. thats what i call stable lib 18:49 < bridge_> it's a trivial thing, doubt it needs updating much 18:49 < bridge_> @learath2 @jupeyy_keks no 18:49 < bridge_> use dotenvy 18:49 < bridge_> https://crates.io/crates/dotenvy 18:49 < bridge_> A well-maintained fork of the dotenv crate. 18:49 < bridge_> 18:49 < bridge_> This crate is the suggested alternative for dotenv in security advisory RUSTSEC-2021-0141. 18:50 < bridge_> Sure, use that one 18:50 < bridge_> lmao 18:50 < bridge_> ok wait 18:52 < bridge_> 😬 18:53 < bridge_> @ryozuki 18:53 < bridge_> ```rs 18:53 < bridge_> if matches!(&skin.database, SkinToUploadDB::Normal) { 18:53 < bridge_> ``` 18:53 < bridge_> 18:53 < bridge_> would u use that macro? 18:53 < bridge_> I don't remember how to invite bots πŸ˜„ 18:53 < bridge_> it doesnt even look better to me xD 18:53 < bridge_> discord developers 18:53 < bridge_> then it generates a link on oauth 18:53 < bridge_> ye 18:53 < bridge_> i mean its more verbose 18:53 < bridge_> Ah, does it need any scopes? 18:53 < bridge_> so why xd 18:53 < bridge_> permissions: 18:54 < bridge_> 18:54 < bridge_> send messages 18:54 < bridge_> edit messages (for reactions only) 18:55 < bridge_> idk about that 18:55 < bridge_> ah scopes 18:55 < bridge_> only bot 18:55 < bridge_> Hm how do I compute permissions? 18:55 < bridge_> well honestly some of these fixes are really good, some are rather meh xD 18:56 < bridge_> https://cdn.discordapp.com/attachments/293493549758939136/1129093922707218462/image.png 18:56 < bridge_> lmao now u can invite my bot 18:56 < bridge_> tell me which u dont want and ill fix it 18:56 < bridge_> why u so tryhard rn xD 18:57 < bridge_> can i merge this for v2 or smth xD 18:57 < bridge_> how am i tryhard lol XD 18:57 < bridge_> im just asking cuz i want this merged and forget 18:57 < bridge_> and its ur project 18:57 < bridge_> im not gonna push to much to do things my way 18:57 < bridge_> my way is: obey clippy 18:57 < bridge_> tbh i dont even care, but i dunno if i have clippy set up 18:58 < bridge_> my pr doesnt pass clippy pedantic 18:58 < bridge_> i just dont want the warnings to spam me, if github auto parses them or smth xD 18:58 < bridge_> @jupeyy_keks how does it find the #πŸ“¬submit-skins channel? 18:58 < bridge_> due to ur locks, it suggest to put some early drops somewhere 18:58 < bridge_> but its more than a simple fix 18:58 < bridge_> it does not require that, bcs it doesnt create publicly visible messages 18:58 < bridge_> πŸ‘ 18:58 < bridge_> @jupeyy_keks u can set in 1 click a rust action with clippy 18:59 < bridge_> as long it doesnt change behavior i dont care πŸ˜„ 18:59 < bridge_> @jupeyy_keks can you give it a go? @SkinDB is here 18:59 < bridge_> nice, i am not in skin database crew 18:59 < bridge_> maybe @ravie_ravie wants to test? 18:59 < bridge_> You are for now 18:59 < bridge_> oh ok 19:00 < bridge_> @ravie_ravie what skin can i upload? 19:00 < bridge_> Pink jupstar looks wrong 19:00 < bridge_> xd 19:01 < bridge_> thats the thing, idk enough of the code to change it with certainty 19:01 < bridge_> cuz i didnt look at it that much xd 19:01 < bridge_> so i didnt do it 19:01 < bridge_> @learath2 soon we are truly lgbtr 19:01 < bridge_> @ravie_ravie ping me when u decided 19:01 < bridge_> rainbow dev chat 19:04 < bridge_> so 19:04 < bridge_> @jupeyy_keks wat u gonna do 19:05 < bridge_> i need a special role 19:05 < bridge_> the rust spreader 19:05 < bridge_> nice 19:05 < bridge_> closer to perfection 19:06 < bridge_> debatable xD 19:06 < bridge_> 19:06 < bridge_> i simply dont care enough 19:06 < bridge_> xd 19:06 < bridge_> thats good 19:06 < bridge_> e.g. this 19:06 < bridge_> https://cdn.discordapp.com/attachments/293493549758939136/1129096566339293334/image.png 19:06 < bridge_> i dont care which style 19:06 < bridge_> to me its the same xD 19:06 < bridge_> i think the let involves a drop of the inner error 19:07 < bridge_> while the is_err doesnt 19:07 < bridge_> cuz u dont fetch it 19:07 < bridge_> but im not sure 19:07 < bridge_> as if the compiler doesnt see through this xD 19:07 < bridge_> xd 19:07 < bridge_> @Skin Database Crew 19:07 < bridge_> im sur echecking a boolean is cheaper 19:07 < bridge_> than pattern matching 19:07 < bridge_> else i just upload one with many upvotes 😬 19:08 < bridge_> @ryozuki accessing one past the end of a string is illegal in rust right? 19:08 < bridge_> there is nothing there 19:08 < bridge_> wdym 19:08 < bridge_> 😬 19:08 < bridge_> r u doign unsafe 19:09 < bridge_> In C/C++ you are allowed to hold a pointer to one past the end of an array, it's explicitly not ub as long as you don't dereference it 19:09 < bridge_> a string doesnt have end as is, just the length of allocated memory 19:09 < bridge_> I guess I could check at the very start if the index is > len 19:09 < bridge_> a string is a slice which is a ptr, usize, usize 19:09 < bridge_> ptr, length capacity 19:10 < bridge_> hmm u need to check the ptr docs then 19:10 < bridge_> this has nothing to do with strings 19:10 < bridge_> @ryozuki do /upload and tell me if u have no permissions 19:11 < bridge_> https://doc.rust-lang.org/std/primitive.pointer.html#method.offset 19:11 < bridge_> > Safety 19:11 < bridge_> > 19:11 < bridge_> > If any of the following conditions are violated, the result is Undefined Behavior: 19:11 < bridge_> > 19:11 < bridge_> > Both the starting and resulting pointer must be either in bounds or one byte past the end of the same allocated object. 19:11 < bridge_> > 19:11 < bridge_> > The computed offset, in bytes, cannot overflow an isize. 19:11 < bridge_> > 19:11 < bridge_> > The offset being in bounds cannot rely on β€œwrapping around” the address space. That is, the infinite-precision sum, in bytes must fit in a usize. 19:11 < bridge_> @learath2 u can be one byte past 19:12 < bridge_> There is no null termination though, right? 19:12 < bridge_> nope 19:12 < bridge_> the ptr thing is about pointers 19:12 < bridge_> upload where what 19:13 < bridge_> how 19:13 < bridge_> I guess I'll do the responsible adult developer thing and check the length 19:13 < bridge_> im too impatient, so i'll do it now with one of coke, since it will ping the author its better to test with ppl i know xdd 19:13 < bridge_> discord command 19:13 < bridge_> ./upload 19:13 < bridge_> @learath2 u can do wrapping_offset 19:13 < bridge_> but u shouldnt 19:13 < bridge_> the author doesnt recommend using it 19:13 < bridge_> its the safe counterpart to offset 19:14 < bridge_> why u want to be one past tho? 19:14 < bridge_> @learath2 worked, thanks 19:14 < bridge_> HYPE 19:15 < bridge_> https://cdn.discordapp.com/attachments/293493549758939136/1129098676338446507/image.png 19:15 < bridge_> epic 19:15 < bridge_> I'm just thinking about where to park the last offset in the lexer, I need to have a last history entry 19:15 < bridge_> @Skin Database Crew after /upload the bot should be self explaining, else ping me and ask 19:15 < bridge_> but are u using unsafe now? 19:15 < bridge_> In C/C++ I'd have the last offset point to the null character 19:15 < bridge_> @learath2 u can remove my role 19:15 < bridge_> i want purple back 19:15 < bridge_> XD 19:15 < bridge_> No no, I'm just considering my options, I don't think I'll go with that 19:15 < bridge_> I almost accidentally kicked you 19:16 < bridge_> 😬 19:16 < bridge_> XD 19:16 < bridge_> 😬 😬 19:17 < bridge_> @Skin Database Crew after /upload the bot should be self explaining, else ping me and askf (use the command in #πŸ“¬submit-skins only) 19:17 < bridge_> rly nice bot, thank you!! 19:18 < bridge_> <_voxeldoesart> did you see the icon suggestion 19:19 < bridge_> ping murpi with the msg 19:19 < bridge_> learath has done enough for today 19:19 < bridge_> deserved retirement 19:19 < bridge_> <_voxeldoesart> @murpi can you make the icon of the SkinDB bot this 19:19 < bridge_> <_voxeldoesart> https://cdn.discordapp.com/attachments/293493549758939136/1129099841448984607/SkinDB_Logo.png 19:20 < bridge_> γ€ŒFor Developers」 19:21 < bridge_> @murpi nice! using japanese 19:21 < bridge_> they are obsessed with these symbols for titles 19:21 < bridge_> :gigachad: 19:21 < bridge_> Ah, I can put it at `len(self.str)` that'll get me an empty slice np 19:22 < bridge_> γ€ŒRust Development さび 」 19:22 < bridge_> I forgor you can have `s[i..i]` 19:22 < bridge_> and i.. 19:22 < bridge_> <_voxeldoesart> oop 19:22 < bridge_> <_voxeldoesart> XDDDDDDDD 19:23 < bridge_> yes, I just forgor the start and end can be same 19:23 < bridge_> @murpi would be cool to extend #βœ‰-create-a-ticket or maybe another channel to report bugs in standarized way? 19:23 < bridge_> what happened? 19:23 < bridge_> hm, I did change it but it didn't really update 19:23 < bridge_> iot does 19:23 < bridge_> restart 19:23 < bridge_> i see it too 19:24 < bridge_> without restart 19:24 < bridge_> https://cdn.discordapp.com/attachments/293493549758939136/1129100969322483722/image.png 19:24 < bridge_> I guess linux discord is just garbage 19:24 < bridge_> i use web 19:24 < bridge_> on linux 19:25 < bridge_> me2 19:26 < bridge_> also on linux just to name it again 19:41 < bridge_> @ryozuki I have a question, can I get rust to crash on an error? It exits very cleanly and I don't get to catch it in gdb πŸ˜„ 19:41 < bridge_> https://cdn.discordapp.com/attachments/293493549758939136/1129105455428407497/image.png 19:42 < bridge_> It doesn't even panic tho πŸ˜„ 19:43 < bridge_> The error goes all the way to main, `fn main() -> anyhow::Result<()>`, and that just exits normally 19:43 < bridge_> lmao 19:44 < bridge_> With exit code 1 ok, but still πŸ˜„ 19:44 < bridge_> if u add errors but not errors handling xD 19:46 < bridge_> I guess this is why everyone is using packages like eyre and color_eyre, to get backtraces at all 19:55 < bridge_> unwrap? 19:55 < bridge_> panic! 19:55 < bridge_> ah 19:55 < bridge_> thats the problem with anyhow 19:55 < bridge_> i think eyre 19:55 < bridge_> has backtraces 19:56 < bridge_> color_eyre 20:15 < bridge_> Hey everyone!!! I am checking to see if anyone here is in need of a Full time or part-time job. Flexible and Easy Work From Home 20:15 < bridge_> 20:15 < bridge_> BENEFITS! 20:15 < bridge_> 20:15 < bridge_> Training\: 1 week. 20:15 < bridge_> 3 hours daily/ 5days Monday-Friday 20:15 < bridge_> 20:15 < bridge_> Payment\: Weekly $2500 20:15 < bridge_> 20:15 < bridge_> Location\: Anywhere of your choice 20:15 < bridge_> 20:15 < bridge_> Employment Type\: online promoter /ONLINE TASK 20:15 < bridge_> 20:15 < bridge_> Work from Home Position 20:15 < bridge_> 20:15 < bridge_> JOIN THE CHAT ROOM FOR MORE INFORMATION 20:15 < bridge_> πŸ‘‡πŸ‘‡πŸ‘‡πŸ‘‡πŸ‘‡ 20:15 < bridge_> https://t.me/+s1mUKAv6bQMxOWE0 20:15 < bridge_> 20:15 < bridge_> https://t.me/+s1mUKAv6bQMxOWE0 20:16 < jxsl13> how much do you earn? 20:17 < jxsl13> apply for your own job 20:18 < jxsl13> if less than what you promote 20:18 < bridge_> Hey everyone!!! I am checking to see if anyone here is in need of a Full time or part-time job. Flexible and Easy Work From Home 20:18 < bridge_> 20:18 < bridge_> BENEFITS! 20:18 < bridge_> 20:18 < bridge_> Training\: 1 week. 20:18 < bridge_> 3 hours daily/ 5days Monday-Friday 20:18 < bridge_> 20:18 < bridge_> Payment\: Weekly $2500 20:18 < bridge_> 20:18 < bridge_> Location\: Anywhere of your choice 20:18 < bridge_> 20:18 < bridge_> Employment Type\: online promoter /ONLINE TASK 20:18 < bridge_> 20:18 < bridge_> Work from Home Position 20:18 < bridge_> 20:18 < bridge_> JOIN THE CHAT ROOM FOR MORE INFORMATION 20:18 < bridge_> πŸ‘‡πŸ‘‡πŸ‘‡πŸ‘‡πŸ‘‡ 20:18 < bridge_> https://t.me/+s1mUKAv6bQMxOWE0 20:18 < bridge_> 20:18 < bridge_> https://t.me/+s1mUKAv6bQMxOWE0 20:19 < bridge_> pm me 20:19 < bridge_> (<@749222324980416602_jxsl13>) 20:19 < bridge_> Lets work together 20:19 < jxsl13> I'm rich, I don't work 20:20 < bridge_> Hi rich, I'm Dave 20:20 < jxsl13> Hey Dave, Rich here 20:20 < bridge_> Hey Rich, Poor here 20:20 < bridge_> even if, its a less stress job, all you do is relax and work using your phone 20:20 < bridge_> (<@749222324980416602_jxsl13>) 20:20 < bridge_> phones are slow af 20:20 < jxsl13> Hey Poor, spend less money on lootboxes 20:21 < bridge_> without my NASA rtx 4090 PC i wont touch anything 20:22 < bridge_> downgrade to discord 2020 20:22 < jxsl13> There is no less than not working at all. 20:22 < bridge_> i just buy better pc 20:22 < bridge_> 😬 20:22 < bridge_> works for me 20:23 < jxsl13> no less stress* 20:25 < bridge_> check inbox 20:25 < bridge_> (@jupeyy_keks) 20:26 < bridge_> thanks, you pm'd a fake account that was created by the discord bridge 20:26 < bridge_> lmao 20:28 < bridge_> @jupeyy_keks what are the arguments for uploading a skin? 20:28 < bridge_> ./upload 20:28 < bridge_> the msg that will be created should tell you everything.. the msg also gets updated 20:28 < bridge_> as soon as u react to a skin 20:29 < bridge_> The management of this company is simply the best and they have shown to be reliable 20:29 < bridge_> @zwelf2 can u ban this lost soul? ^ 20:30 < bridge_> ah I see, so we use /upload at the start and then use reactions? 20:30 < bridge_> yep, then check if everything is correct 20:30 < bridge_> I thought it's something like /upload [skin] [database] 20:30 < bridge_> its meant to make it ez πŸ˜‰ 20:30 < bridge_> yeah nice 20:31 < bridge_> is it βœ… β˜‘οΈ to upload or something else? 20:31 < bridge_> πŸ†— button 20:31 < bridge_> to upload all selected skins 20:31 < bridge_> u basically batch the upload first 20:31 < bridge_> to check for errors etc. 20:31 < bridge_> yeah but I mean, which reaction to add for normal or community db? 20:31 < bridge_> doesnt the msg say? 20:31 < bridge_> i think blue for community 20:32 < bridge_> I don't see any info, I might be being blind 20:32 < bridge_> after /upload 20:32 < bridge_> there is a msg 20:32 < jxsl13> hm, how was the chatgpt game called where you try to get it to reveal some secret phrase 20:32 < bridge_> are u on some old discord? πŸ˜„ 20:32 < bridge_> idk it updates when it wants to, so like everytime it launches 20:32 < bridge_> @ravie_ravie 20:32 < bridge_> https://cdn.discordapp.com/attachments/293493549758939136/1129118290803953869/image.png 20:33 < bridge_> I just see this 20:33 < bridge_> https://cdn.discordapp.com/attachments/293493549758939136/1129118299599425598/image.png 20:33 < bridge_> dont u see this? 20:33 < bridge_> ah u have to execute the upload 20:33 < bridge_> command 20:33 < bridge_> ah 20:33 < jxsl13> re:scam does not exist anymore, sadly. 20:33 < bridge_> the whole thing is fancier than I thought xD 20:33 < bridge_> i wasted 5h of my sunday for this 😬 20:38 < bridge_> ah but for now we have to manually correct licenses I guess 20:38 < bridge_> I asked murpi to make the other bot require correct formatting without a dash after CC but older messages still have it wrong 20:39 < bridge_> mh yeah 20:40 < bridge_> well all skins have it wrong lmao 20:40 < bridge_> maybe its easier to rewrite the skins.json 20:41 < bridge_> https://skins.ddnet.org/skin/skins.json 20:41 < bridge_> I recently went over the whole database and fixed this on existing skins 20:41 < bridge_> for the new bot u'd need to edit the discord messages 20:41 < bridge_> i dunno if u have edit permissions for msgs 20:42 < bridge_> it's not really a problem to fix on a few skins 20:42 < bridge_> but the sooner we force the correct format the less work it will be 20:44 < bridge_> https://blog.rust-lang.org/2023/07/13/Rust-1.71.0.html 20:44 < bridge_> @learath2 @jupeyy_keks rust update time 20:46 < bridge_> rust update :poggers2: 20:47 < bridge_> @ravie_ravie btw the bot times out after 2min afk 20:47 < bridge_> just that u are aware 20:47 < bridge_> the msg it posts always tells u the current state 20:48 < bridge_> yeah I saw 20:48 < bridge_> seems a little short tho 20:48 < bridge_> @ravie_ravie I haven't deployed the license thing yet. Did you talk to heinrich? 20:49 < bridge_> yeah he's not sure if we should allow more restrictive licenses, but we should at least fix the format on current ones 20:49 < bridge_> mh yeah, probably bit short 20:49 < bridge_> 20:49 < bridge_> also notice discord has a char limit of 2000. so the bot gets less verbose if u add too many skins at once.. its not a bug xd 20:50 < bridge_> (this does not affect the after upload msg) 20:50 < bridge_> I'll fix the old ones then and wait until you and heinrich come to an agreement 20:51 < bridge_> open only 20:51 < bridge_> ddnet 20:51 < bridge_> :ddnet: 20:51 < bridge_> it just might take a moment to take a look at the preview of each skin and make a decision, could take longer than 2 mins if there are a lot of skins 20:52 < bridge_> well its 2mins of being inactive 20:52 < bridge_> but yeah i can increase that 20:52 < bridge_> ah nevermind then 20:52 < bridge_> @jupeyy_keks Const-initialized thread locals 20:52 < bridge_> thought we have 2 mins to complete the upload 20:52 < bridge_> i dont like global variables 20:52 < bridge_> u cant convince me 20:53 < bridge_> xD speedrun 20:53 < bridge_> > These APIs are now stable in const contexts: 20:53 < bridge_> > 20:53 < bridge_> > <*const T>::read 20:53 < bridge_> > <*const T>::read_unaligned 20:53 < bridge_> > <*mut T>::read 20:53 < bridge_> > <*mut T>::read_unaligned 20:53 < bridge_> > ptr::read 20:53 < bridge_> > ptr::read_unaligned 20:53 < bridge_> > <[T]>::split_at 20:54 < bridge_> ```rust 20:54 < bridge_> <*const T>::read 20:54 < bridge_> <*const T>::read_unaligned 20:54 < bridge_> <*mut T>::read 20:54 < bridge_> <*mut T>::read_unaligned 20:54 < bridge_> ptr::read 20:54 < bridge_> ptr::read_unaligned 20:54 < bridge_> <[T]>::split_at 20:54 < bridge_> ``` 20:54 < bridge_> > These APIs are now stable in const contexts: 20:54 < bridge_> this is pog 20:54 < bridge_> const ptrs 20:54 < bridge_> all const additions are nice 21:33 < ChillerDragon> > 17:55:16 bridge_ | chillerdragon: how can i demoativate you? XD 21:33 < ChillerDragon> @Jupstar βœͺ 21:33 < ChillerDragon> irc reply moment 21:33 < ChillerDragon> i assume you mean me going strong on 0.7 today? 21:33 < bridge_> xDDDDDDD 21:33 < ChillerDragon> think u have to give up. 21:34 < ChillerDragon> you did a good job sending me to side quests 21:34 < ChillerDragon> but nothing will hold stand 21:34 < ChillerDragon> if you keep pushing forward 21:35 < ChillerDragon> you can not stop me to work on my very persistent intrinisc motivation to unite this cute owo game 21:35 < ChillerDragon> into one shared protocol 21:37 < bridge_> soon i have the best client anyway 21:37 < bridge_> then idc and go full ego 21:37 < bridge_> @jupeyy_keks make sure it passes clippy 21:37 < ChillerDragon> as long as it is 0.7 compatible all good 21:37 < bridge_> https://tenor.com/view/anime-angry-gif-22001303 21:37 < bridge_> currently it doesnt even pass unused xD 21:37 < bridge_> XD 21:37 < bridge_> what do u think how long it took to convert vk backend 21:37 < bridge_> and then fix all the fucking warnings xD 21:38 < bridge_> xD 21:38 < bridge_> bcs the clippy --fix broke somewhere 21:39 < ChillerDragon> i really can not tell if you work on some flopping toy project 21:39 < ChillerDragon> or if you will disrupt the industry jopsti 21:39 < bridge_> industry ofc 21:39 < ChillerDragon> as much as it would suck to break protocol. if its blazingly fast it would be very pog 21:40 < bridge_> its not only that 21:40 < bridge_> but also blazingly moddable 21:40 < ChillerDragon> poggable 21:41 < ChillerDragon> i wonder if deen, heinrich, robi, lerato and so on are flexible enough to replace the codebase 21:41 < bridge_> my plan is to coup oy 21:41 < bridge_> and take the name "teeworlds" back 21:41 < ChillerDragon> you going for vanilla? 21:41 < bridge_> bcs its the best name 21:41 < ChillerDragon> woah 21:41 < bridge_> vanilla is my first goal yes 21:41 < ChillerDragon> thats epic 21:41 < bridge_> based on that i want to implement FNG 21:41 < ChillerDragon> so its pvp first game? 21:41 < bridge_> without modifying the vanilla code base 21:41 < bridge_> with client side prediction 21:42 < bridge_> without modifying the client code base 21:42 < bridge_> blazingly moddable 21:42 < ChillerDragon> thats not a thing 21:42 < bridge_> i am not kidding πŸ˜„ 21:42 < ChillerDragon> im hyped 21:42 < ChillerDragon> and emotionally confused 21:43 < ChillerDragon> but tbh you know what needs a rust rewrite more than teeworlds? 21:43 < ChillerDragon> minecraft! 21:43 < bridge_> https://discord.com/channels/252358080522747904/293493549758939136/1051479327117693010 21:43 < bridge_> u can read my monolog from here 21:43 < ChillerDragon> all the open source rust minecraft rewrites are uselessly wip 21:43 < ChillerDragon> sends a discord link 21:44 < bridge_> "The main purpose i want this merged is, that we can merge server code with client code again." 21:44 < bridge_> 21:44 < bridge_> if u want to scan ur irc logs 21:45 < ChillerDragon> https://github.com/TeeworldsDB/irclogs/blob/560a7fff852dbf1ec5940743bc1a7473dd37505f/ddnet/2022-12-11.log#L271 21:45 < ChillerDragon> now thats a chat link 21:56 < bridge_> iirc, there was a quine winner with a filesize of 0 byte (https://www.ioccc.org/years-spoiler.html#1994, winner smr) 21:58 < bridge_> you can also try `gcc -xc -E -v -` 22:01 < bridge_> inside or outside? Inside would be unbearable, outside is fine πŸ™‚ 22:09 < bridge_> get a glimpse into the exciting realm of rust 22:11 < bridge_> this reminds me 22:11 < bridge_> when is ddnet bday 22:12 < bridge_> 10 years ddnet 22:12 < bridge_> epic 22:12 < bridge_> 3 days ago was 10y of dota 22:12 < bridge_> or was that last year xd 22:13 < bridge_> i guess teehistorian 22:13 < bridge_> 2013-07-18: Beginning of DDNet with first finisj 22:13 < bridge_> 2013-07-18: Beginning of DDNet with first finish 22:13 < bridge_> OMG 22:13 < bridge_> @ryozuki 22:13 < bridge_> OMG 22:13 < bridge_> ye 22:13 < bridge_> deens kid will be born 22:13 < bridge_> its around this date 22:13 < bridge_> exactly in 5 days 22:13 < bridge_> OMG 22:13 < bridge_> rly? 22:13 < bridge_> <_gwendal> https://discord.com/channels/252358080522747904/985717921600929872/1129098463204868186 maybe the bot could link to Coke's coala brown upload message to see easily which skins are uploaded to the db ? 22:13 < bridge_> HE FCKING PLANNED IT 22:14 < bridge_> kek 22:14 < bridge_> <_gwendal> wait it does wtf mb 22:14 < bridge_> nah, it's the database and the downloads folder on the website, it's getting out of control πŸ˜„ 22:14 < bridge_> OMG i die if the kid is born at 18. july 22:14 < bridge_> that would be the best irony of life ever 22:17 < bridge_> 18th or 19th i think 22:18 < bridge_> this is literally quoted from wiki lmao 22:18 < bridge_> deen is having a kid?? 22:19 < bridge_> IN EXACTLY 5 DAYS AS PLANNED BY HIm 22:19 < bridge_> does the #βœ‰-create-a-ticket really ping murpi everytime ? 22:19 < bridge_> i also tested it xDD 22:19 < bridge_> it pinged murpi and heinrich and someone else 22:19 < bridge_> jesus of teeworlds incoming 22:20 < bridge_> did he rly say 5 days 22:20 < bridge_> no need for peekable. just clone the iterator if you want to peek 22:20 < bridge_> no but he said in 2 months on 18th of may 22:20 < bridge_> xd 22:20 < bridge_> yeah, but it's rougly in 2 months 22:20 < bridge_> I ended up not needing this. But what use would be cloning? 22:20 < bridge_> yeah, but it's roughly in 2 months 22:21 < bridge_> i guess cloning is cheap? but idk why not peekable then 22:22 < bridge_> `.as_ref().map(Deref::deref)` 22:22 < bridge_> xd 22:22 < bridge_> reading a chat in order without reading everything is kind of annoying in this context 22:22 < bridge_> cuz we already went over this 22:23 < bridge_> your PR did quite a few sensible things πŸ™‚ 22:23 < bridge_> usually not 22:23 < bridge_> nice 22:23 < bridge_> reading a chat in order without reading everything is kind of weird in this context 22:28 < bridge_> do u agree with matches! 22:29 < bridge_> I got notified on my phone that the masterserver crashed due to that 22:29 < bridge_> restarted it within 15 min πŸ˜‰ 22:29 < bridge_> nice 22:29 < bridge_> Hey everyone!!! I am checking to see if anyone here is in need of a Full time or part-time job. Flexible and Easy Work From Home 22:29 < bridge_> 22:29 < bridge_> BENEFITS! 22:29 < bridge_> 22:29 < bridge_> Training\: 1 week. 22:29 < bridge_> 3 hours daily/ 5days Monday-Friday 22:29 < bridge_> 22:29 < bridge_> Payment\: Weekly $2500 22:29 < bridge_> 22:29 < bridge_> Location\: Anywhere of your choice 22:29 < bridge_> 22:29 < bridge_> Employment Type\: online promoter /ONLINE TASK 22:29 < bridge_> 22:29 < bridge_> Work from Home Position 22:29 < bridge_> 22:30 < bridge_> JOIN THE CHAT ROOM FOR MORE INFORMATION 22:30 < bridge_> πŸ‘‡πŸ‘‡πŸ‘‡πŸ‘‡πŸ‘‡ 22:30 < bridge_> https://t.me/+s1mUKAv6bQMxOWE0 22:30 < bridge_> 22:30 < bridge_> https://t.me/+s1mUKAv6bQMxOWE0 22:30 < bridge_> still 99% uptime for today 22:30 < bridge_> Hey everyone!!! I am checking to see if anyone here is in need of a Full time or part-time job. Flexible and Easy Work From Home 22:30 < bridge_> 22:30 < bridge_> BENEFITS! 22:30 < bridge_> 22:30 < bridge_> Training\: 1 week. 22:30 < bridge_> 3 hours daily/ 5days Monday-Friday 22:30 < bridge_> 22:30 < bridge_> Payment\: Weekly $2500 22:30 < bridge_> 22:30 < bridge_> Location\: Anywhere of your choice 22:30 < bridge_> 22:30 < bridge_> Employment Type\: online promoter /ONLINE TASK 22:31 < bridge_> 22:31 < bridge_> Work from Home Position 22:31 < bridge_> 22:31 < bridge_> JOIN THE CHAT ROOM FOR MORE INFORMATION 22:31 < bridge_> πŸ‘‡πŸ‘‡πŸ‘‡πŸ‘‡πŸ‘‡ 22:31 < bridge_> https://t.me/+s1mUKAv6bQMxOWE0 22:31 < bridge_> 22:31 < bridge_> https://t.me/+s1mUKAv6bQMxOWE0 22:31 < bridge_> where? πŸ˜„ 22:31 < bridge_> that seems like it decreases readability, because discord displays these numbers as one 22:31 < bridge_> i reread and idk why i said that XD 22:31 < bridge_> @davide55\: sos im stuck in firewall \:c 22:31 < bridge_> url 22:31 < bridge_> ger10.ddnet.tw 22:31 < bridge_> ger10.ddnet.org 22:32 < bridge_> the code is equivalent 22:32 < bridge_> nope. after optimizing, it's the same. before optimizing, the pattern match is cheaper 22:34 < bridge_> is is_err const? 22:34 < bridge_> What exactly do you need to restart in this case btw? I took a quick look but there were so many services starting with `httpmaster-` πŸ˜„ 22:34 < bridge_> https://cdn.discordapp.com/attachments/293493549758939136/1129148951602401480/image.png 22:34 < bridge_> i guess this one is quite opinionated 22:34 < bridge_> but imho it looks more clean is_err 22:35 < bridge_> break `rust_panic` or so. need to get the current name of the day 22:35 < bridge_> @learath2 iirc rust-lldb works better for rust btw 22:36 < bridge_> heinrich is still far in the backlog 22:36 < bridge_> xd 22:36 < bridge_> I had some unexpected events and I still couldn't update the UDP filter after the massive change in the netcode of the new update, I'll do it as soon as possible, in the meanwhile use the URL as @ryozuki said 22:36 < bridge_> 22:36 < bridge_> https://ger10.ddnet.org/ 22:37 < bridge_> xD chatgpt is slow today πŸ‡¬πŸ‡· 22:37 < bridge_> lol 22:37 < bridge_> 😬 22:37 < bridge_> πŸ‡¬πŸ‡· 22:37 < bridge_> bad discord 22:37 < bridge_> xD 22:37 < bridge_> xd 22:39 < bridge_> `clone().next()` for peek 22:39 < bridge_> because peekable is less cheap IIRC 22:40 < bridge_> I think both are fine. the good thing about pattern matching is that it works with every type 22:41 < bridge_> massive change in the netcode? what did I miss? 22:41 < bridge_> done \o/ 22:41 < bridge_> Deen sent me this: 22:41 < bridge_> 22:41 < bridge_> https://github.com/ddnet/ddnet/pull/6823 22:41 < bridge_> huh interesting that that's cheaper, anyway, didn't end up needing it 22:43 < bridge_> (I didnt checked yet the changes, but I'll do in the next days) 22:43 < bridge_> that's just an `it[1]` with a bounds chec 22:43 < bridge_> k 22:46 < ChillerDragon> @davide55 ye ger10 works fine but not fokkos server :( 22:46 < bridge_> an standard iterator is just a pair of two pointers. it doesn't cost anything to clone 22:46 < bridge_> @murpi I have an improvement idea for tickets 22:47 < ChillerDragon> i verified here https://tw.fokkonaut.de/ 22:47 < bridge_> What is it? 22:47 < bridge_> WTF? 22:47 < ChillerDragon> ? 22:47 < bridge_> They have both same filter 22:47 < bridge_> Let me check 22:47 < ChillerDragon> i checked with tcpdump 22:48 < ChillerDragon> none of my ips packets arrive on port 8303 22:49 < ChillerDragon> marking startinfo as flush breaks your filter? o.O 22:49 < ChillerDragon> now im super curious how it works 22:49 < ChillerDragon> i didnt expect it to be that close to the protocol 22:49 < ChillerDragon> when open src firewall 22:50 < bridge_> I didnt check the changes in the code, I just saw the pull description 22:50 < bridge_> When we close tickets, maybe just lock it for a couple minutes and not allow the opener to create any new tickets meanwhile 22:50 < ChillerDragon> a 22:50 < ChillerDragon> its flipping one bit davide 22:50 < bridge_> Ah no, I was more confused about why peekable can't do the exact same thing 22:50 < ChillerDragon> :D 22:50 < bridge_> @davide55 r u the guy with a company? and do u rent servers? 22:51 < bridge_> Ye 22:51 < bridge_> how much 22:51 < ChillerDragon> moni u have 22:51 < bridge_> Try now ChillerDragon 22:51 < ChillerDragon> leak bank balance 22:51 < bridge_> I'll send you the URL in PM, write me 22:51 < ChillerDragon> it work 22:51 < ChillerDragon> thank 22:51 < bridge_> Oh 22:51 < ChillerDragon> davide u such hacker 22:52 < bridge_> Then give me your IP in PM, I have to check a thing 22:52 < ChillerDragon> fixin da bugs in seconds 22:52 < ChillerDragon> dm 22:52 < ChillerDragon> be like 22:53 < ChillerDragon> @davide55 go buy irc i send ip 22:53 < bridge_> Wut 22:53 < ChillerDragon> i cant send dms on discord 22:54 < bridge_> Hmmm, not easy 22:55 < bridge_> I could delay the closure of a ticket though 22:55 < bridge_> @murpi did lot of tickets come in already? 22:55 < bridge_> im curious 22:56 < bridge_> could u offer monthly stats 22:56 < bridge_> πŸ‘€ 22:56 < bridge_> $stats 22:56 < ChillerDragon> @davide55 still need my ip? where can i dm u? 22:56 < bridge_> with bot should be ez 22:56 < bridge_> Yes still needed 22:56 < bridge_> Just DM me 22:56 < ChillerDragon> where 22:56 < bridge_> What that means 22:56 < bridge_> On Discord 22:56 < bridge_> he is not on discord 22:56 < ChillerDragon> i dont do discord 22:57 < bridge_> its a bridge over irc 22:57 < bridge_> Oh, IRC? 22:57 < ChillerDragon> da 22:57 < bridge_> Oh, that makes sense 22:57 < ChillerDragon> am i not marked as bot? xd 22:57 < ChillerDragon> :robot: 22:57 < bridge_> Yeah 22:57 < ChillerDragon> u got irc? 22:57 < ChillerDragon> or facebook messenger? 22:57 < bridge_> Telegram? πŸ˜„ 22:57 < bridge_> LMAO 22:57 < ChillerDragon> snapchat? 22:57 < bridge_> troll 22:58 < bridge_> peekable creates a weird construct where it remembers the element the iterator got. it's just a lot harder for the optimizer to see through, if it can at all 22:58 < ChillerDragon> i dont have telegram :c 22:58 < bridge_> it basically converts your iterator into a 22:58 < bridge_> I could keep count of all bot interactions, but monthly stats? idk πŸ˜„ 22:58 < bridge_> $commandstats 22:58 < bridge_> ```rs 22:58 < bridge_> struct Peekable { 22:58 < bridge_> inner: I, 22:58 < bridge_> peeked: Option>, 22:58 < bridge_> } 22:58 < bridge_> ``` 22:58 < bridge_> Btw fixed the UDP filter, it is now working with the new versions 22:58 < bridge_> if u save t odb its ez 22:59 < ChillerDragon> pog 22:59 < bridge_> It was not a big change seems afterall haha 22:59 < bridge_> it's okay for expensive iterators, but for cheap ones you should really just use `.clone().next()` 22:59 < bridge_> But why doesnt it just do the clone thing? Is it maybe not possible with all kinds of iterators for some reason? Maybe involving side effects? 22:59 < ChillerDragon> @davide55 you got ssh on fokko srv? 22:59 < bridge_> side effects, basically 22:59 < ChillerDragon> or any other server i can connect to to leak my ip @davide55 = 22:59 < bridge_> and missing specialization I guess @learath2 22:59 < bridge_> Can you send it to someone you trust in IRC that has Discord too and he shares it with me? 22:59 < bridge_> send it to me ChillerDragon 23:00 < ChillerDragon> heinrich 23:00 < ChillerDragon> u so helpful 23:00 < bridge_> chiller trusts the whole world 23:00 < bridge_> and shares public 23:00 < ChillerDragon> i really want to post it here somehow 23:00 < ChillerDragon> like who cares 23:00 < ChillerDragon> it a ip 23:01 < ChillerDragon> i sent to heinrich :D 23:01 < ChillerDragon> because im scared lerato ddos me 23:01 < ChillerDragon> if i post here 23:01 < bridge_> i would be scared of others 23:02 < ChillerDragon> others have not yet rm -rfd my drive xd 23:02 < bridge_> i helped in that 23:02 < ChillerDragon> u got my ip davide? because i start lagging like hell 23:02 < bridge_> Yeah 23:02 < ChillerDragon> trol 23:02 < bridge_> Not lagging, just dropped 23:02 < bridge_> Disconnect then reconnect 23:02 < bridge_> W/o using the URL 23:02 < bridge_> Try 23:02 < ChillerDragon> i haver +1 survival bonus bitsh 23:03 < bridge_> πŸ˜‚ 23:03 < ChillerDragon> im joining slowly 23:03 < ChillerDragon> takes forever 23:03 < ChillerDragon> i see packets arriving in tcpdump 23:03 < bridge_> It's stuck on a packet? 23:03 < ChillerDragon> but it doesnt seem to progress 23:03 < bridge_> Tell me the len 23:03 < bridge_> Tell me the length 23:04 < ChillerDragon> wait lemme dl pcap 23:04 < bridge_> Check it on your PC 23:04 < bridge_> Not on the server itself 23:04 < ChillerDragon> a u smart xd 23:04 < bridge_> With something like Wireshark for Windows or tcpdump for linux 23:04 < ChillerDragon> ye sec ima install windows 23:05 < bridge_> ?! 23:05 < bridge_> do you use my dissector btw, @davide55? πŸ˜› 23:05 < bridge_> Nope, sorry πŸ˜„ 23:05 < ChillerDragon> omg davide 23:05 < bridge_> Old school hahaha 23:05 < ChillerDragon> shame 23:05 < ChillerDragon> wat u use davide? 23:05 < bridge_> Myself 23:05 < bridge_> πŸ˜„ 23:05 < bridge_> looking at bytes, prolly? 23:05 < bridge_> ^^ 23:05 < ChillerDragon> lmao i get snaps 23:06 < ChillerDragon> wait lemme reconnect 23:06 < ChillerDragon> ah 23:06 < ChillerDragon> i still get snaps when disconnected 23:06 < ChillerDragon> think the server thinks im still on 23:06 < bridge_> Remember the random challenge I explained to you a lot ago? I did it 23:06 < ChillerDragon> who is you 23:06 < bridge_> ah nice πŸ™‚ 23:07 < ChillerDragon> https://zillyhuhn.com/cs/.1689282465.png 23:07 < ChillerDragon> omagawd davide shouldnt have leaked u my ip 23:07 < ChillerDragon> u broke it again xd 23:08 < bridge_> some of the packets are not marked as tw 23:08 < bridge_> can you send me the pcap? 23:08 < bridge_> Mh, 12, weird 23:08 < bridge_> New packets coming from the update? 23:08 < ChillerDragon> heinrich prolly missing state? 23:08 < bridge_> πŸ˜„ 23:08 < ChillerDragon> omagawd the update has no new packets xd 23:09 < bridge_> Can you try now? Chiller 23:09 < bridge_> Ye, a new packet, lenght 12 seems, never seen it before 23:09 < ChillerDragon> still stuck 23:09 < ChillerDragon> now i in 23:10 < bridge_> You opened the URL seems 23:10 < ChillerDragon> maybe 23:10 < ChillerDragon> some raspi in my network curld it 23:10 < ChillerDragon> xd 23:10 < bridge_> Can you send me the full pcap too? 23:10 < bridge_> πŸ˜„ 23:11 < ChillerDragon> client or server side? 23:11 < bridge_> Client 23:11 < bridge_> Ye, a new packet, lenght 12 seems (and not the first one), never seen it before 23:12 < ChillerDragon> !p 0000 10 00 00 01 54 4b 45 4e ff ff ff ff 23:12 < bridge_> Command not found! 23:13 < ChillerDragon> !ping 23:13 < bridge_> Command not found! 23:13 < ChillerDragon> wot 23:13 < ChillerDragon> bot ded 23:14 < ChillerDragon> its from client to server maybe some bug in my susy client idk 23:17 < ChillerDragon> hm its TKEN 23:18 <@heinrich5991> ChillerDragon: send pcap already :p 23:18 < ChillerDragon> nono 23:19 < ChillerDragon> this is the the 12 byte packet 23:19 < ChillerDragon> 10 00 00 01 54 4b 0030 45 4e ff ff ff ff ....TKEN.... 23:19 < ChillerDragon> its always the same 23:19 < ChillerDragon> !p 10 00 00 01 54 4b 0030 45 4e ff ff ff ff 23:19 < bridge_> Command not found! 23:19 < ChillerDragon> !p 10 00 00 01 54 4b 00 30 45 4e ff ff ff ff 23:19 < bridge_> Command not found! 23:20 < ChillerDragon> the pcap is full of nudes not gonna send it 23:21 <@heinrich5991> ChillerDragon: file -> export specified packets 23:21 <@heinrich5991> then you can export only the displayed packets in a pcap 23:21 <@heinrich5991> i.e. the teeworlds packets 23:21 < ChillerDragon> ``10 00 00 01 54 4b 00 30 45 4e ff ff ff ff`` 23:21 < ChillerDragon> those are the only bytes u want anyways 23:22 < ChillerDragon> but i wouldnt worry too much maybe there is some bug in my client 23:22 <@heinrich5991> can't import that into wireshark 23:22 <@heinrich5991> looks like a bug though :D 23:22 < bridge_> @heinrich5991 send me the Chiller pcap when you have it 23:22 < ChillerDragon> bruv 23:22 < bridge_> Wut 23:23 < ChillerDragon> just connect to foko srv ur self and record it 23:23 < bridge_> It works for me πŸ˜„ 23:23 < bridge_> That's the issue 23:23 < ChillerDragon> xd 23:24 <@heinrich5991> why not share the censored pcap? ^^ 23:24 <@heinrich5991> you can open it yourself to see that it doesn't contain anything bad 23:24 < ChillerDragon> :c 23:25 < ChillerDragon> you can send those bytes w python and record it im too tired to properly censor a pcap rn 23:25 < bridge_> Your ! is triggering the other bot 23:26 < ChillerDragon> sorry guys but ima go sleep now :c if you so hyped about the pcap and for whatever reason can not work with the relevant bytes i can give it a go again tomorrow 23:26 < ChillerDragon> lerato my bot clearly was here before 23:28 < ChillerDragon> i assume the client got in a weird state due to the server acting all firewall and it failed to send the TKEN package correctly 23:34 <@heinrich5991> give pcap before sleep, ChillerDragon 23:34 <@heinrich5991> :D 23:34 <@heinrich5991> hype hype 23:43 < bridge_> is this real heinrich 23:43 < bridge_> also i thought netcode was supposed to not change 23:43 < bridge_> or is this a fokko sv thing 23:49 < bridge_> just buy a new computer ::3Head: