00:55 < bridge> ```c 00:55 < bridge> // handle key presses 00:55 < bridge> Input()->ConsumeEvents([&](const IInput::CEvent &Event) { 00:55 < bridge> for(auto &pComponent : m_vpInput) 00:55 < bridge> { 00:55 < bridge> // Events with flag `FLAG_RELEASE` must always be forwarded to all components so keys being 00:55 < bridge> // released can be handled in all components also after some components have been disabled. 00:55 < bridge> if(pComponent->OnInput(Event) && (Event.m_Flags & ~IInput::FLAG_RELEASE) != 0) 00:55 < bridge> break; 00:55 < bridge> } 00:55 < bridge> }); 00:55 < bridge> ``` 00:55 < bridge> apparently pComponenet is null? 00:55 < bridge> ```c 00:55 < bridge> 0 0x5918ce7c1ed8 in CBinds::CBindsSpecial::OnInput(IInput::CEvent const&) /home/solly/Games/ddnet/src/game/client/components/binds.cpp:24:20 00:55 < bridge> #1 0x5918cf03f115 in CGameClient::OnUpdate()::$_0::operator()(IInput::CEvent const&) const /home/solly/Games/ddnet/src/game/client/gameclient.cpp:456:19 00:55 < bridge> ``` 00:55 < bridge> ``` 00:56 < bridge> ==179819==ERROR: AddressSanitizer: SEGV on unknown address 0x000000000000 (pc 0x5918ce7c1ed8 bp 0x7ffd2cbbe5d0 sp 0x7ffd2cbbe4d0 T0) 00:56 < bridge> ==179819==The signal is caused by a READ memory access. 00:56 < bridge> ``` 00:57 < bridge> ah yes 00:57 < bridge> i deleted some code that i didnt mean 2 01:01 < bridge> ```c 01:01 < bridge> MASK2GOT: 0 01:01 < bridge> MASK: 0 01:01 < bridge> MASK: 0 01:01 < bridge> PROCESING: 0 0 0 01:01 < bridge> MASK: 0 01:01 < bridge> MASK2GOT: 0 01:01 < bridge> MASK: 0 01:01 < bridge> MASK: 0 01:01 < bridge> PROCESING: 0 0 0 01:01 < bridge> MASK: 0 01:01 < bridge> MASK2GOT: 0 01:01 < bridge> MASK: 0 01:01 < bridge> MASK: 0 01:01 < bridge> PROCESING: 0 0 0 01:01 < bridge> MASK: 0 01:01 < bridge> ``` 01:01 < bridge> debugging b like 01:14 < bridge> would it be an idea to change it so it does? 01:15 < bridge> ```c 01:15 < bridge> static char* useafterfree = (char *)malloc(1); 01:15 < bridge> free(useafterfree); 01:15 < bridge> *useafterfree = 0; 01:15 < bridge> ``` 01:15 < bridge> idk what the best way to do it is x-x 01:24 < bridge> abort() just sends sigill or sigbreak to itself 01:24 < bridge> for post mortem debug 01:25 < bridge> idk if asan still allows post mortem debug in the same way 01:25 < bridge> if it catches something 01:34 < bridge> https://youtu.be/WaM8_Bllaf0 01:59 < bridge> It does, the default options really hinder it though 02:02 < bridge> ``` 02:02 < bridge> export ASAN_OPTIONS=abort_on_error=1:halt_on_error=1 02:02 < bridge> export UBSAN_OPTIONS=abort_on_error=1:halt_on_error=1 02:02 < bridge> ``` 02:02 < bridge> This gives you the sensible behavior rather than existing in a rather useless way 02:02 < bridge> This gives you the sensible behavior rather than exiting in a rather useless way 02:05 < bridge> There is also -fsanitize-trap which works without any runtime libs at all 02:26 < bridge> y r u here 02:43 < ws-client> @peter0x44 do you play ddnet? 03:33 < bridge> ChillerDragon and how do you feel about the fact that I, according to Kisao, "fake" your mod. Like, I have a type of "SlowNet" on the server that corresponds to the theme of the server. And Kisao says that I should use the most diffolt type 03:48 < bridge> ^ wtf does this mean? 03:56 < bridge> It's just that the owner of TeeSports thinks that I'm kind of hiding the fact that I use DDnetPP. Like I have a SlowNet type on my server , and he thinks that I'm just using another type of server , hiding the fact that I use DDNetPP 03:57 < bridge> ^ this doesnt make it any clearer ng; 03:57 < bridge> ^ this doesnt make it any clearer ngl 03:58 < bridge> owner of TeeSports = Kisao 03:58 < bridge> you set the type to SlowNet, but the mod is just a ddrace with tunings on server settings 03:58 < bridge> kisao thinks youre hiding that youre using ddnetpp? 03:59 < bridge> cant u do slownet with just default ddnet server 04:05 < ws-client> @woidless I created and published ddnet++ for it to be used. I appreciate credits a lot but I do not require them. Also setting the gametype is a ddnet++ feature that was also added to be used. 04:07 < ws-client> But yes I agree with Kisao to some degree that it is a bit weird. Historically gametypes convey the meaning of which gamemode and usually also which code base is running on the server. So changing the gametype without changing anything else has a bit of a master server click bait vibe to it because it looks like it is a brand new modification when in reality it is not. 04:09 < ws-client> It is a bit sketchy to me but I am also just conservative. Because one could also argue that the gametype is about informing the users about their gameplay experience and then SlowNet is quite descriptive even if there is no custom code. Anyways I added that feature for you and from my side feel free to set whatever gametype. 04:11 < ws-client> It is not like you went into the code and removed my name from the credits. Which by the way is something Kisao did. He modified DDNet++ and removed me from /credits and /info and the ddnet++ welcome version message. 04:13 < ws-client> I never complained about that because he also extended ddnet++ and added some russian translations and a few more commands so it now became his modification. That is what ddnet++ is for as a starting point for your mod so that people do not have to reinvent the wheel all the time. Still it makes me a bit sad to be wiped entirely from the credits since clout is the only payment i receive for this work. 04:24 < bridge> Great, I hope at least now Kisao will leave me alone about the type of server. 04:25 < bridge> ChillerDragon, how do you feel about the fact that I can tell you every day I ask you to do something 04:34 < bridge> we all knew it chiller, rip 04:35 < bridge> and since when kisao is owner of teesports xd 04:40 < bridge> And who is he? 05:06 < ws-client> @woidless dont worry ask away i will tell you when i dont want to do something 05:19 < bridge> Thanks 05:49 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1307568170344644669/Image_236172927976469.jpg?ex=673ac741&is=673975c1&hm=179e7dedf01ca97df064d471330f005466c38442a9721b808c0d8cf07c1cb9cf& 06:24 < Voxel_> Ohhh this is getting annoying now 06:25 < Voxel_> Sprites are so dependant in DDNet that trying to remove even a little of them breaks everything 06:25 < Voxel_> Like, what do you mean `weapon = WeaponSpec(container, "hammer")` completely relies on the original sprite? 07:36 < bridge> how else would you define the weaponspec? 07:37 < bridge> you could probably create a fallback texture in case the original sprite isn't found 07:38 < bridge> seems annoying to work w the python generated code in general though 08:51 < ws-client> @Sedonya u here? 09:01 < bridge> @sedonya ^ 09:01 < ws-client> ty 09:04 < bridge> good morning 09:04 < ws-client> ok nice 09:04 < ws-client> go check wire 09:05 < bridge> I saw your msg a long time ago, but it seems like I haven't worked with git enough and don't understand how to move commit history over 10:19 < bridge> When people vote on a server with 128 slots, the wrong person kicks at all. 11:26 < bridge> They would still have to be defined in code. We also want to ensure that users' assets have the correct aspect ratio. 11:27 < bridge> I'd vote for moving the sprite code away from being generated with python if that makes it easier 11:43 < bridge> ChillerDragon: I have found another typo in the 0.7 documentation, NETMSG_MAP_CHANGE is sent by the server xd 11:43 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1307657246708203550/image.png?ex=673b1a36&is=6739c8b6&hm=def160b26d4ce061180381d6e7e9da9c7e91b8944fd8f494edb09b4e807f6da0& 12:01 < ws-client> @kollpotato go send pr and earn a contributor badge for html programming skills https://github.com/ChillerDragon/teeworlds-protocol/blob/d3a985e21f9903c421bf106fde812c23f0f6daa0/07/system_messages.html#L202-L205 13:11 < ws-client> omg 13:28 < bridge> done :D 13:54 < bridge> I have seen a video about `zlib` and `zstd` might be an endevour to check if this could improve data bandwidth since ddnet and teeworlds is using `zlib` for network compression 13:56 < bridge> but I guess I would just break the netcode or backwards compatibility, however newer clients could switch to low bandwidth communication 13:56 < bridge> ChillerDragon When people vote on a server with 128 slots, the wrong person kicks at all. 14:00 < bridge> can you make a server where bots are allowed? 14:01 < bridge> no 14:14 < bridge> you can host your own server where bots are allowed 15:02 < ws-client> @borsmatyas02 what kind of bots? The block servers I host tolarate a few bots 88.198.96.203:8303 and 88.198.96.203:8306 15:05 < ws-client> @woidless If i were to allocate time for 128 stuff I would start by adding client support but I don't have the energy for that in the forseeable future 15:05 < ws-client> so you can keep the 128 player server bugs for now. It is an experimental feature branch with no support. 15:08 < ws-client> @Assa zlib for network compression? You mean in maps? Idk the map format much but i assume it could affect the map download process. But either way map or network protocol changes break backwards compatibility. Then old clients can't load the map anymore. 15:09 < ws-client> I think it would be nice if the client and server could negotiate compression algorithms like browsers do it. So a client could say it supports no compression and the server is forced to not use huffman at all. And the client could also ask the server for brotli and if the server supports that it will be used. 15:10 < ws-client> It is backwards compatible but it adds complexity. Probably the wrong time for such proposal with quic and ddpg in the pipeline. 15:16 < bridge> this is what I meant 15:17 < bridge> Yeah, I just wanted to throw that into the room 15:20 < ws-client> i guess since http map downloads are already a thing and its using libcurl we are probably optimizing the download speed quite well already given that the server support map downloads 16:46 < bridge> do we use zlib only for map downloads and not for regular networking? 16:57 < bridge> No, zlib compression isn't fast enough I assume 16:57 < bridge> okay, then throw this idea in the trashbin ^^ 18:32 < bridge> Hi all, can you tell me how to create a server binary for windows with sql support? 18:32 < bridge> 18:32 < bridge> 112 error.. 18:37 < bridge> There is a lot of white in the screenshot 18:37 < bridge> 18:37 < bridge> I'm sorry I can't text 18:37 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1307761589986005032/SPOILER_image-1.png?ex=673b7b64&is=673a29e4&hm=3832fd1df22be1592b95b45f016b6785d0b0940394843ac47c5916b845b1c6c9& 18:44 < bridge> hi, if I cut out the check on sv_test_cmds so that the commands always work, is this against the rules? 18:56 < bridge> nope it's fine you can do it on your own private servers 19:00 < bridge> and if I give in to the community, will it already be prohibited? 20:03 < bridge> no 20:03 < bridge> since it's your own server 20:08 < bridge> Mh, this one might actually be completely broken, or at the very least the knowledge of it is lost to time. Idk anyone who builds with mysql on windows 20:09 < bridge> It's not against the rules, but I would suggest you rename the mod so people don't come to expect ddnet to have test commands enabled 20:22 < bridge> used to work for me when i did `cmake .. -DMYSQL=ON -DMYSQL_CONFIG:FILEPATH="C:\Program Files\MariaDB 11.3\bin\mysql_config.pl" -DMYSQL_INCLUDEDIR:PATH="C:\Program Files\MariaDB 11.3\include\mysql" -DMYSQL_LIBRARY:FILEPATH="C:\Program Files\MariaDB 11.3\lib\libmariadb.lib"` 20:24 < bridge> tho idk, the codebase i did that on is also a year old now 20:25 < bridge> tho idk, the codebase i needed mysql for is also a year old now. i just had that command written down 22:16 < bridge> <0xdeen> @.paisho. @chillbreaker95 Thanks for the large donation! 22:16 < bridge> ``` 22:16 < bridge> gf�?ff�?��Cz D���C�GDI��C�*Dbind a "+left" 22:16 < bridge> gf�?ff�?��Cz D���C�GDI��C�*Dbind a "+left"bind b "say /spec" 22:16 < bridge> gf�?ff�?��Cz D���C�GDI��C�*Dbind a "+left"bind b "say /spec"bind c "exec scripts/dummy_deep_off.cfg" 22:16 < bridge> gf�?ff�?��Cz D���C�GDI��C�*Dbind a "+left"bind b "say /spec"bind c "exec scripts/dummy_deep_off.cfg"bind d "+right" 22:16 < bridge> gf�?ff�?��Cz D���C�GDI��C�*Dbind a "+left"bind b "say /spec"bind c "exec scripts/dummy_deep_off.cfg"bind d "+right"bind e "exec scripts/location_team.cfg" 22:17 < bridge> gf�?ff�?��Cz D���C�GDI��C�*Dbind a "+left"bind b "say /spec"bind c "exec scripts/dummy_deep_off.cfg"bind d "+right"bind e "exec scripts/location_team.cfg"bind f "toggle cl_dyncam 1 0" 22:17 < bridge> gf�?ff�?��Cz D���C�GDI��C�*Dbind a "+left"bind b "say /spec"bind c "exec scripts/dummy_deep_off.cfg"bind d "+right"bind e "exec scripts/location_team.cfg"bind f "toggle cl_dyncam 1 0"bind g "say gg" 22:17 < bridge> gf�?ff�?��Cz D���C�GDI��C�*Dbind a "+left"bin 22:17 < bridge> ``` 22:17 < bridge> why is this happening x-x 22:17 < bridge> ```c 22:17 < bridge> void CBinds::ConfigSaveCallback(IConfigManager *pConfigManager, void *pUserData) 22:17 < bridge> { 22:17 < bridge> CBinds *pSelf = (CBinds *)pUserData; 22:17 < bridge> 22:17 < bridge> pConfigManager->WriteLine("unbindall"); 22:17 < bridge> for(auto &it : pSelf->m_Binds) 22:17 < bridge> { 22:17 < bridge> const CBindSlot BindSlot = it.first; 22:17 < bridge> const char *pBind = it.second; 22:17 < bridge> char pBuf[1024]; 22:17 < bridge> const char *pBufEnd = pBuf + sizeof(pBuf); 22:17 < bridge> str_copy(pBuf, "bind "); 22:17 < bridge> pSelf->GetName(BindSlot.m_Key, BindSlot.m_ModifierMask, pBuf + str_length(pBuf), sizeof(pBuf) - str_length(pBuf)); 22:17 < bridge> str_append(pBuf, " \"", sizeof(pBuf)); 22:17 < bridge> // process the string. we need to escape some characters 22:17 < bridge> char *pDst = pBuf + str_length(pBuf); 22:17 < bridge> str_escape(&pDst, pBind, pBufEnd); 22:17 < bridge> str_append(pBuf, "\"", sizeof(pBuf)); 22:17 < bridge> printf("%s\n", pBuf); 22:17 < bridge> pConfigManager->WriteLine(pBuf); 22:17 < bridge> } 22:17 < bridge> } 22:17 < bridge> ``` 22:17 < bridge> that is why is there a bunch of garbage before the first bind, why is the stuff before not being reset? 22:23 < bridge> ``` 22:23 < bridge> bind period "exec scripts/kill_bind_off.cfg" 22:23 < bridge> bind f1 "toggle_local_console" 22:23 < bridge> bind f2 "toggle_remote_console" 22:23 < bridge> bind f3 "vote yes" 22:23 < bridge> bind f4 "vote no" 22:23 < bridge> bind f5 "+showhookcoll" 22:23 < bridge> bind lshift "+emote;+spectate" 22:23 < bridge> bind rctrl "exec scripts/location_team_bindwheel.cfg;+bindwheel" 22:23 < bridge> bind rshift "+emote;+spectate" 22:23 < bridge> bind mouse1 "+fire; +toggle cl_dummy_hammer 1 0" 22:23 < bridge> bind mouse2 "+hook" 22:23 < bridge> bind mousewheelup "+fire" 22:23 < bridge> bind mousewheeldown "+fire" 22:23 < bridge> ``` 22:23 < bridge> i printf it? 22:23 < bridge> and its fine 22:29 < bridge> oh 22:29 < bridge> micro is buuggy mess and is doing this not me xdddd 22:29 < bridge> lmao