00:13 <+bridge> [ddnet] the bug has been found? 00:13 <+bridge> [ddnet] :poggers: 00:14 <+bridge> [ddnet] yes 03:40 <+bridge> [ddnet] has anyone seen this woman in their dreams?????????? 03:40 <+bridge> [ddnet] https://cdn.discordapp.com/attachments/293493549758939136/904560534588911696/unknown.png 06:23 <+bridge> [ddnet] I can try later 09:03 <+bridge> [ddnet] hi how can i add Particles or effects to myserver? in my codes? 10:53 <+bridge> [ddnet] @KoroshKv\: you can call the cgamecontext\:\:playerdeath method on the server side to get the particles of a tee for example https://github.com/ddnet/ddnet/blob/2b1ff1c823337fa3febb0a782334df05b9870c3b/src/game/server/gamecontext.cpp#L282-L292 10:53 <+bridge> [ddnet] Look around in gamecontext there is also the spawn animation and explosions and so on 11:05 <+bridge> [ddnet] thanks 12:19 <+bridge> [ddnet] guys i have proplem i don't use vpn but i have proplem with my pc my ip address changed to french and iam from egypt so when i join anyserver in ddnet i get ban cuz it's says i useing vpn so what i have to do 13:02 <+bridge> [ddnet] Restart router 13:05 <+bridge> [ddnet] @nuborn the EntityEx fills up the snap pretty fast on maps with a lot of draggers/doors/whatever 13:07 <+bridge> [ddnet] I will need to send the EntityEx only for entities that are ACTUALLY close to you, like a few blocks, or within the Length of a door 13:07 <+bridge> [ddnet] my server especially has a lot of these laser doors/draggers 13:18 <+bridge> [ddnet] I'll only send EntityEx for the real network clipping range, not for the zoomed one with show distance, that should help already probably, still it wastes good and needed objects for the snap 13:49 <+bridge> [ddnet] In the worst case a doubling? But yes, you will begin to notice at maybe 50-75% of the zoom level compared with before if entities are evenly distributed in the map 13:50 <+bridge> [ddnet] For pickups not in switch you can also skip it if you have many of those 13:50 <+bridge> [ddnet] its more about the other entities tbh :D 13:51 <+bridge> [ddnet] but thanks for the tip, u should do that for ddnet too 13:53 <+bridge> [ddnet] But yes, it could be improved for didn't too (maybe even dynamically if the map is large), but at the end I think this is equally a problem with the snap limit (+ large zoom) 13:53 <+bridge> [ddnet] for ddnet* 13:58 <+bridge> [ddnet] Yes, thats true 14:08 <+bridge> [ddnet] Next patch we can try to move the entityex stuff to a snap wrapped in a netmsg 14:10 <+bridge> [ddnet] lol 14:11 <+bridge> [ddnet] Well it is optional stuff 14:42 <+bridge> [ddnet] I tried to extent CConsole\:\:Print() with some own loggerish code and then i get crashes in sqlite. I assume this is a multi threading issue isnt it? So Print() is called from some sqlite thread but my code is not thread safe? Or am i on a wrong path here? 14:43 <+bridge> [ddnet] print is not thread safe 14:43 <+bridge> [ddnet] weird 14:50 <+bridge> [ddnet] oh right okay im not allowed to write to global non static variables in there 16:10 <+bridge> [ddnet] @deen do you really understand what happens with #4240? RemoveEntity seems to take care of the case where the next traversal entity is already deleted 16:10 <+bridge> [ddnet] https://github.com/ddnet/ddnet/issues/4240 16:11 <+bridge> [ddnet] I don't think it's about RemoveEntity, it could also be about still being in the same CCharacter's tick handling after it got deleted 16:11 <+bridge> [ddnet] I think 16:13 <+bridge> [ddnet] Ah, that return in `HandleSkippableTiles` doesn't return quite far out enough 😄 16:15 <+bridge> [ddnet] yes 16:15 <+bridge> [ddnet] and we were trying to protect it with if(!m_alive) but that can be overwritten already 16:16 <+bridge> [ddnet] Hm, properly fixing this would probably involve actually defering the deletion until the end of the tick 16:16 <+bridge> [ddnet] Yes, that would be cleaner, but might be risky 16:16 <+bridge> [ddnet] I guess your fix is okay for now, I actually don't want to risk it either 😄 16:18 <+bridge> [ddnet] I guess it is sane to end the tick if the tee dies, just need to be careful not to access any member variables 16:18 <+bridge> [ddnet] I guess we should run asan on ger1 a bit longer to see if it catches more issues 16:18 <+bridge> [ddnet] once the fix is merged 16:19 <+bridge> [ddnet] Yeah, having all the pooled objects out on the heap can bring out more issues 16:19 <+bridge> [ddnet] I'm not sure what the performance impact is, especially with malloc potentially taking quite long during normal gameplay 16:20 <+bridge> [ddnet] I doubt it's unacceptable, but it is indeed a waste. I would 100% keep the pools normally 16:52 <+bridge> [ddnet] @Learath2 have u seen the news 16:52 <+bridge> [ddnet] today they made public a flaw in unicode 16:52 <+bridge> [ddnet] "bidirectional override" Unicode codepoints 16:53 <+bridge> [ddnet] 16:53 <+bridge> [ddnet] 16:53 <+bridge> [ddnet] 16:53 <+bridge> [ddnet] 16:53 <+bridge> [ddnet] xd 16:53 <+bridge> [ddnet] (the rust blog explains it the best imho) 16:55 <+bridge> [ddnet] > An issue was discovered in the Bidirectional Algorithm in the Unicode Specification through 14.0. It permits the visual reordering of characters via control sequences, which can be used to craft source code that renders different logic than the logical ordering of tokens ingested by compilers and interpreters. Adversaries can leverage this to encode source code for compilers accepting Unicode such that targeted vulnerabilities are introdu 16:55 <+bridge> [ddnet] :monkaS: 16:56 <+bridge> [ddnet] I feel like variations of this attack were kind of known before 16:56 <+bridge> [ddnet] > As part of their research, Nicholas Boucher and Ross Anderson also uncovered a similar security issue identified as CVE-2021-42694 involving homoglyphs inside identifiers. Rust already includes mitigations for that attack since Rust 1.53.0. Rust 1.0.0 through Rust 1.52.1 is not affected due to the lack of support for non-ASCII identifiers in those releases. 16:56 <+bridge> [ddnet] e.g. hоmоglyph attacks 16:56 <+bridge> [ddnet] probs this 16:57 <+bridge> [ddnet] this isn't limited to identifiers, string literals can also be "attacked" with this 16:57 <+bridge> [ddnet] :monkaS: 16:57 <+bridge> [ddnet] e.g. `role == "usеr"` 17:05 <+bridge> [ddnet] has anyone ever tried to put the function signature in a different header file? \:D 17:06 <+bridge> [ddnet] what? 17:08 <+bridge> [ddnet] Id like to overwrite a function 17:08 <+bridge> [ddnet] overload a method or what? 17:08 <+bridge> [ddnet] ```C 17:08 <+bridge> [ddnet] void curses_logf(const char *sys, const char *fmt, ...); 17:08 <+bridge> [ddnet] #define dbg_msg(sys, fmt, ...) curses_logf(sys, fmt, ##__VA_ARGS__) 17:08 <+bridge> [ddnet] ```i put this boi at the end of system.h 17:09 <+bridge> [ddnet] not rly overload 17:09 <+bridge> [ddnet] I just want my own implementation of dbg\_msg being used 17:09 <+bridge> [ddnet] you can't just redefine a function 17:09 <+bridge> [ddnet] without touching dbg\_msg 17:09 <+bridge> [ddnet] but dbg_msg is not a function, it's a macro 17:10 <+bridge> [ddnet] i overwrite the function with a macro 17:10 <+bridge> [ddnet] that works 17:10 <+bridge> [ddnet] you can do an #ifdef/endif around and define dbg_msg differently for your ncurses build 17:10 <+bridge> [ddnet] i dont want to do that 17:10 <+bridge> [ddnet] that will get me merge conflicts 17:11 <+bridge> [ddnet] I have heard of test-driven development 17:11 <+bridge> [ddnet] but you're the first person doing merge-conflict-avoidance-driven development 😄 17:11 <+bridge> [ddnet] xd 17:11 <+bridge> [ddnet] xd 17:11 <+bridge> [ddnet] Should work at the bottom 17:11 <+bridge> [ddnet] maybe #undef dbg_msg before 17:12 <+bridge> [ddnet] the issue is my own func 17:12 <+bridge> [ddnet] i can not define it in sys.h 17:12 <+bridge> [ddnet] the overwrite works just fine 17:12 <+bridge> [ddnet] but if i put my signature in system.h it wont work with the implementation in my own cpp file 17:12 <+bridge> [ddnet] ``` 17:12 <+bridge> [ddnet] /home/chiller/Desktop/git/chillerbot-ux/src/base/terminalui.cpp:136: multiple definition of `curses_logf'; CMakeFiles/engine-shared.dir/src/base/system.cpp.o:/home/chiller/Desktop/git/chillerbot-ux/src/base/system.cpp:131: first defined here 17:12 <+bridge> [ddnet] ``` 17:12 <+bridge> [ddnet] put the implementation in system.cpp 17:13 <+bridge> [ddnet] omagawd 17:13 <+bridge> [ddnet] thats merge conflict 17:13 <+bridge> [ddnet] ah, you have it in system.cpp and terminalui.cpp already 17:13 <+bridge> [ddnet] remove the one from system.cpp:131 17:13 <+bridge> [ddnet] image.png 17:13 <+bridge> [ddnet] https://cdn.discordapp.com/attachments/293493549758939136/904765206629056522/image.png 17:14 <+bridge> [ddnet] that doesn't look consistent with your error message 17:14 <+bridge> [ddnet] ikr 17:14 <+bridge> [ddnet] build from scratch? 17:14 <+bridge> [ddnet] yas 17:14 <+bridge> [ddnet] saved 17:15 <+bridge> [ddnet] it probably interprets dbg\_msg as the macro 17:15 <+bridge> [ddnet] Wait 17:15 <+bridge> [ddnet] and then puts my func there 17:15 <+bridge> [ddnet] yes 17:15 <+bridge> [ddnet] omg 17:15 <+bridge> [ddnet] I assumed dbg_msg was a macro before 17:15 <+bridge> [ddnet] you can't just overwrite a function with a macro 17:15 <+bridge> [ddnet] ye 17:15 <+bridge> [ddnet] because i do my macro in the header 17:15 <+bridge> [ddnet] i can 17:15 <+bridge> [ddnet] but it has to be timed correctly 17:16 <+bridge> [ddnet] It is horrible, don't do this 17:16 <+bridge> [ddnet] i can define the macro after the function signature and after the function implementation 17:16 <+bridge> [ddnet] but there is no such single place 17:16 <+bridge> [ddnet] haha 17:16 <+bridge> [ddnet] in system.cpp in line 129 you'll have to #undef dbg_msg first 17:16 <+bridge> [ddnet] what a mess 17:17 <+bridge> [ddnet] okay that builds 17:17 <+bridge> [ddnet] but thats merge conflicty 17:17 <+bridge> [ddnet] How often did we change dbg_msg in the last years? Are you afraid of merge conflicts in 10 years? 17:17 <+bridge> [ddnet] it changes weekly 17:17 <+bridge> [ddnet] Why not submit your code upstream? 17:17 <+bridge> [ddnet] i submit all i can ofc 17:17 <+bridge> [ddnet] do u want a linux only curses client? 17:18 <+bridge> [ddnet] haha curses messes with my terminal so i can not read the gdb crash report lmao 17:19 <+bridge> [ddnet] 3 changes since 2018 17:20 <+bridge> [ddnet] yea omagwd now system.cpp uses the wrong dbg\_msg 17:20 <+bridge> [ddnet] only system.cpp after line 130 17:21 <+bridge> [ddnet] conflicts also get caused when surrounding methods get touched 17:21 <+bridge> [ddnet] also with the mindset of "just a change here and just a smol change here" u get conflicts without end 17:21 <+bridge> [ddnet] i barley get any conflicts with upstream currently 17:26 <+bridge> [ddnet] chillerdragon: you could `#define dbg_msg blergh` in system.cpp 17:26 <+bridge> [ddnet] then you can define your own dbg_msg somewhere else 17:26 <+bridge> [ddnet] right 17:26 <+bridge> [ddnet] wait lemme try 17:26 <+bridge> [ddnet] ah wait, maybe not 😦 17:27 <+bridge> [ddnet] yea sounds a bit too good to be true 17:27 <+bridge> [ddnet] system.cpp also calls dbg_msg 17:27 <+bridge> [ddnet] then system.cpp also uses blergh 😄 17:27 <+bridge> [ddnet] blergh is probably undefuined 17:27 <+bridge> [ddnet] you have to #undef dbg_msg after dbg_msg in system.cpp as well 17:27 <+bridge> [ddnet] i have undef 17:27 <+bridge> [ddnet] and then your defines are around the function again 17:27 <+bridge> [ddnet] then def again 17:27 <+bridge> [ddnet] it all works 17:27 <+bridge> [ddnet] so not better than just using an #ifdef 17:27 <+bridge> [ddnet] but big conflict material 17:27 <+bridge> [ddnet] ye 17:27 <+bridge> [ddnet] its flop 17:28 <+bridge> [ddnet] hell of a diff 17:28 <+bridge> [ddnet] image.png 17:28 <+bridge> [ddnet] https://cdn.discordapp.com/attachments/293493549758939136/904768819585753219/image.png 17:28 <+bridge> [ddnet] Having the same define in 2 different places is not clean 17:29 <+bridge> [ddnet] ikr 17:29 <+bridge> [ddnet] but i need it in system.h i think 17:29 <+bridge> [ddnet] yes 17:29 <+bridge> [ddnet] anyways i want it out of the cpp 17:29 <+bridge> [ddnet] hmmm. how about just doing `#if 0` above dbg_msg and `#endif` below? 17:29 <+bridge> [ddnet] the definition 17:29 <+bridge> [ddnet] ah 17:29 <+bridge> [ddnet] cpp? 17:29 <+bridge> [ddnet] confict 17:30 <+bridge> [ddnet] it seems to me that anything you do to `dbg_msg` will also affect the definition of `dbg_msg` 17:30 <+bridge> [ddnet] so it *seems* impossible to me, without changing the system.cpp 17:31 <+bridge> [ddnet] image.png 17:31 <+bridge> [ddnet] https://cdn.discordapp.com/attachments/293493549758939136/904769515525640222/image.png 17:31 <+bridge> [ddnet] thats how it looks like btw 17:31 <+bridge> [ddnet] u have a input field at the bottom with local console remote console and chat 17:31 <+bridge> [ddnet] u can press t f1 f2 etc 17:31 <+bridge> [ddnet] is that something that could end up in ddnet? 17:31 <+bridge> [ddnet] well, you could rename dbg_msg function to dbg_msg_impl and also get that in upstream, then you only need the define in system.h. But I don't think we would merge that in DDNet 17:32 <+bridge> [ddnet] are you not drawing tees as circles in ncurses? I'm disappointed 17:32 <+bridge> [ddnet] not yet 17:32 <+bridge> [ddnet] first focus is chat 17:32 <+bridge> [ddnet] i did maps once 17:33 <+bridge> [ddnet] the ratio is a bit messed up because console rows are higher than columns wide 17:33 <+bridge> [ddnet] https://www.youtube.com/watch?v=LMTg2sL5pD4 17:33 <+bridge> [ddnet] thats my old messy map drawing 17:33 <+bridge> [ddnet] it also had keyboard inputs for moving 17:34 <+bridge> [ddnet] yea i guess there is no merge safe solution 17:34 <+bridge> [ddnet] not bad 17:34 <+bridge> [ddnet] ill go with the mess for now and maybe next merge i will just delete my code 17:37 <+bridge> [ddnet] chillerdragon\: what function does curses\_logf call? or is that already the library function? 17:38 <+bridge> [ddnet] its mine 17:38 <+bridge> [ddnet] is there no function that takes vargs directly? 17:38 <+bridge> [ddnet] wdym? 17:38 <+bridge> [ddnet] ```C 17:38 <+bridge> [ddnet] void curses_logf(const char *sys, const char *fmt, ...) 17:38 <+bridge> [ddnet] { 17:39 <+bridge> [ddnet] va_list args; 17:39 <+bridge> [ddnet] char str[1024*4]; 17:39 <+bridge> [ddnet] char *msg; 17:39 <+bridge> [ddnet] int len; 17:39 <+bridge> [ddnet] 17:39 <+bridge> [ddnet] char timestr[80]; 17:39 <+bridge> [ddnet] str_timestamp_format(timestr, sizeof(timestr), FORMAT_SPACE); 17:39 <+bridge> [ddnet] 17:39 <+bridge> [ddnet] str_format(str, sizeof(str), "[%s][%s]: ", timestr, sys); 17:39 <+bridge> [ddnet] 17:39 <+bridge> [ddnet] len = strlen(str); 17:39 <+bridge> [ddnet] msg = (char *)str + len; 17:39 <+bridge> [ddnet] 17:39 <+bridge> [ddnet] va_start(args, fmt); 17:39 <+bridge> [ddnet] #if defined(CONF_FAMILY_WINDOWS) && !defined(__GNUC__) 17:39 <+bridge> [ddnet] _vsprintf_p(msg, sizeof(str)-len, fmt, args); 17:39 <+bridge> [ddnet] #else 17:39 <+bridge> [ddnet] vsnprintf(msg, sizeof(str)-len, fmt, args); 17:39 <+bridge> [ddnet] #endif 17:39 <+bridge> [ddnet] va_end(args); 17:39 <+bridge> [ddnet] 17:39 <+bridge> [ddnet] // printf("%s\n", str); 17:39 <+bridge> [ddnet] curses_log_push(str); 17:39 <+bridge> [ddnet] } 17:39 <+bridge> [ddnet] ``` 17:39 <+bridge> [ddnet] you can just call curses\_logf in dbg\_msg with vargs 17:39 <+bridge> [ddnet] that would cause merge conflicts 17:39 <+bridge> [ddnet] since i would edit system.cpp 17:39 <+bridge> [ddnet] bad 17:39 <+bridge> [ddnet] xd 17:43 <+bridge> [ddnet] so any chance it can get in ddnet? \:D 17:45 <+bridge> [ddnet] i don't think so at the moment 17:45 <+bridge> [ddnet] oky sad