00:04 < bridge> ```cpp 00:04 < bridge> const char *pText; 00:04 < bridge> switch(FriendType) 00:04 < bridge> { 00:04 < bridge> case FRIEND_PLAYER_ON: 00:04 < bridge> pText = Localize("Add friends by clicking on their name in the player list or at the bottom"); 00:04 < bridge> break; 00:04 < bridge> case FRIEND_CLAN_ON: 00:04 < bridge> pText = Localize("To show your clanmates here, add a friend with only the clan name set"); 00:04 < bridge> break; 00:04 < bridge> case FRIEND_OFF: 00:04 < bridge> pText = Localize("Offline friends and clanmates will appear here"); 00:04 < bridge> break; 00:04 < bridge> default: 00:04 < bridge> pText = Localize("None"); 00:04 < bridge> break; 00:04 < bridge> } 00:04 < bridge> GameClient()->m_Tooltips.DoToolTip((char*)this + FriendType, &Header, pText, Header.w); 00:04 < bridge> ``` 00:04 < bridge> y no work x-x 00:05 < bridge> what doesnt work 00:06 < bridge> tooltip doesnt show 00:06 < bridge> send the parts that dont work if i have to debug entire code block i might aswell implement the entire thing myself :kek: 00:07 < bridge> i mean thats it really 00:07 < bridge> given a crect and some text show a tooltip 00:07 < bridge> given a cuirect and some text show a tooltip 00:08 < bridge> ```cpp 00:08 < bridge> for(size_t FriendType = 0; FriendType < NUM_FRIEND_TYPES; ++FriendType) { 00:08 < bridge> CUIRect Header, DeleteIcon, QuestionIcon, Label; 00:08 < bridge> List.HSplitTop(ms_ListheaderHeight, &Header, &List); 00:08 < bridge> m_ScrollRegion.AddRect(Header); 00:08 < bridge> GameClient()->m_Tooltips.DoToolTip((char*)this + FriendType, &Header, "HELLOOO", Header.w); 00:08 < bridge> } 00:08 < bridge> ``` 00:08 < bridge> ```cpp 00:08 < bridge> for(size_t FriendType = 0; FriendType < NUM_FRIEND_TYPES; ++FriendType) { 00:08 < bridge> CUIRect Header, DeleteIcon, QuestionIcon, Label; 00:08 < bridge> List.HSplitTop(ms_ListheaderHeight, &Header, &List); 00:08 < bridge> m_ScrollRegion.AddRect(Header); 00:08 < bridge> GameClient()->m_Tooltips.DoToolTip((char*)this + FriendType, &Header, "HELLOOO", Header.w); 00:08 < bridge> } 00:08 < bridge> ``` 00:08 < bridge> have the whole file if you want it 00:08 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1306757754597412926/message.txt?ex=6737d47f&is=673682ff&hm=a529afb693b762973f0cbe7d910915a911aeb6101d9aaed4ff54ae6b211accf0& 00:09 < bridge> src/game/client/components/menus_browser.cpp 00:16 < bridge> :) 00:17 < bridge> wrong id 00:17 < bridge> this works `GameClient()->m_Tooltips.DoToolTip(&s_aListExtended[FriendType], &Header, "HELLOOO");` 00:17 < bridge> what magic do I need to do to get debug logs 😦 00:17 < bridge> i thought the id had to be unique and thats it? 00:18 < bridge> compile target debug? 00:18 < bridge> yes thats why everything there uses &s_aListExtended[FriendType] as id 00:18 < bridge> not sure what `(char*)this + FriendType` even does 00:19 < bridge> (char*)this casts the this pointer to a char 00:19 < bridge> then adds FriendType so its unique per iteration 00:19 < bridge> I am sure my IDE shows me wrong build targets 00:19 < bridge> mmm 00:19 < bridge> have uconsidered learning how to use the terminal 00:19 < bridge> are u on loinux? 00:20 < bridge> sudo apt-remove -f tell-me-how-to-use-terminal && apt clean 00:20 < bridge> sudo apt-remove -f tell-me-how-to-use-terminal && sudo apt clean 00:20 < bridge> ``` 00:20 < bridge> cd build 00:20 < bridge> cmake .. -DCMAKE_BUILD_TYPE=DEBUG 00:20 < bridge> make -j`nproc` 00:20 < bridge> ``` 00:20 < bridge> sudo apt-get a better distro /j 00:21 < bridge> yea but why convert address to char* 00:21 < bridge> and then add number to it 00:21 < bridge> because the value of the address is some random big number 00:21 < bridge> and then the number makes it unique per iteration 00:21 < bridge> thank you ❤️ 00:21 < bridge> cuz the id has to be different 00:22 < bridge> `&s_aListExtended[FriendType]` 00:22 < bridge> is the same but the difference is more like 14 than 1 00:22 < bridge> `&s_aListExtended[FriendType]` 00:22 < bridge> is the same 00:22 < bridge> `&s_aListExtended[FriendType]` 00:22 < bridge> is the same (if the bools are sized as 1 byte) 00:23 < bridge> `&s_aListExtended[FriendType]` 00:23 < bridge> is the same (if the bools are sized as 1 byte, they might be bigger idk) 00:23 < bridge> `&s_aListExtended[FriendType]` 00:23 < bridge> is the same (if the bools are sized as 1 byte, they might be bigger idk, amnt compiler) 00:23 < bridge> but why make undefined behavior instead of just using smth thats already there 00:23 < bridge> it isnt undefined behaviour 00:24 < bridge> youre casting class object to char array 00:24 < bridge> even tho the type is void* the value is being used as a number 00:24 < bridge> thats safe unless you it 00:24 < bridge> thats safe unless you derefence it 00:25 < bridge> ill use `&s_aListExtended[FriendType]` cuz it works but idk why equally big random numbers dont work 02:28 < bridge> Heinrich rejected the proposal of auto upgrade. But it would technically be possible. 03:07 < bridge> ChillerDragon and you have a so-called "egg" for ddnetpp. Which is for a dedicated Pterodactyl server 04:13 < bridge> ?xd wat 04:38 < bridge> no idea 04:38 < bridge> hru chiller 04:42 < bridge> It sounds like you're referring to Pterodactyl, which is indeed a popular open-source game server management panel. This software is widely used for hosting and managing game servers and applications. With Pterodactyl, you can control game servers across multiple machines and manage them through a web-based interface. It runs on Docker, which means each game server is isolated in its own container, helping with resource management and security. 04:42 < bridge> 04:42 < bridge> "Pterodactyl eggs" specifically refer to environment images or pre-configured setups for various games and services within the Pterodactyl panel. These "eggs" act as templates, containing scripts and settings that configure specific games or services so they can run smoothly on Pterodactyl. This makes deploying new servers for different games or applications much simpler. 04:42 < bridge> 04:42 < bridge> If you're setting up a server or need specific eggs, there are many available in the community, or you can create custom ones based on your needs. 04:45 < bridge> https://github.com/engels74/pterodactyl-eggs 04:50 < bridge> are you chat gpt 04:51 < bridge> fork w 2 commits and 0 engagement 04:51 < bridge> seems the upstream project doesn't even use the term pterodactyl 04:52 < bridge> strange 04:52 < bridge> https://pterodactyl.io/ 04:52 < bridge> this is the thing 04:53 < bridge> neat 06:14 < bridge> Which file contains the Server Tick speed value? 08:01 < bridge> lmfao 08:01 < bridge> this guy does not read messages that are not from chillerdragon i see 08:35 < bridge> Who! 08:35 < bridge> Who? 08:38 < bridge> that guy 08:44 < bridge> who always talks to chiller 08:44 < bridge> And who? 08:46 < bridge> that guy 08:52 < bridge> I'm afraid of the whipping, so I cannot tell you the name. 09:02 < bridge> Is that me? 09:41 < bridge> yes 09:41 < bridge> :justatest: 09:41 < bridge> That right 09:44 < bridge> ChillerDragon: check my last message about your protocol documentation pwease 10:47 < bridge> So I asked @heinrich5991 for **a branch** in order to implement the [material layer]() without getting an answer (maybe I am too fast). 10:47 < bridge> The idea is, to add a layer which is painted over the gamelayer (similar to TPs or tune) which change tile behaviour according to a material. For example make a tile slippy, make it accellerate faster (booster tile, by running over it), add penalty tiles (slow down to low speeds), etc, a lot of well defined combinations of existing tunes. 10:47 < bridge> 10:47 < bridge> I already implemented it in a testbranch, but this feature went a bit over it's head and went huge. It has a lot of construction parts: 10:47 < bridge> - Handling new tune parameters for the materials 10:47 < bridge> - Each material cold be it's own PR 10:47 < bridge> - Client needs a new layer in the editor, similar to tune 10:47 < bridge> - This comes with a physics update, how to handle standing on two different materials for example? I already put a lot of thought into this (this is implemented) 10:47 < bridge> - Prediction, old clients: Technically this all could be emulated similar to the tune layer, but I think this is a major break 10:47 < bridge> - Client animations: This one could also be done outside of it's own branch, for example use different ice sliding animations and particles on low friction ground, similar to [here]() 10:47 < bridge> 10:47 < bridge> For a lot of these things I already have an implementation, and I would like to break it into small suggestable reviewable chunks on it's own branch, but I am not allowed to create one, what's your opinion? 10:59 < bridge> > which change tile behaviour according to a material. For example make a tile slippy, make it accellerate faster (booster tile, by running over it), add penalty tiles (slow down to low speeds), etc, a lot of well defined combinations of existing tunes. 10:59 < bridge> 10:59 < bridge> i mean.. as you mentioned these are just "combinations of existing tunes" and is already possible with a few edgecases where it might not be. 10:59 < bridge> 10:59 < bridge> this sounds like a rather heavy change for small gain 10:59 < bridge> > which change tile behaviour according to a material. For example make a tile slippy, make it accellerate faster (booster tile, by running over it), add penalty tiles (slow down to low speeds), etc, a lot of well defined combinations of existing tunes. 10:59 < bridge> 10:59 < bridge> i mean.. as you mentioned these are just "combinations of existing tunes" and is already possible with a few edgecases where it might not be. 10:59 < bridge> 10:59 < bridge> this sounds like a rather heavy change for small gain, espacially towards backwards compat 11:01 < bridge> but wouldnt this make mapping a lot more stream line and simple especially for people who dont understand all the ins and outs of it? 11:02 < bridge> honestly i couldnt know cuz i dont know the bare minimum when it comes to mapping :-] 11:03 < bridge> you are still right, painting "ice" over wall would be more intuitive, then having to add 5 tunings to tune_zones in the map settings 11:04 < bridge> you are still right, painting "ice" over wall would be more intuitive, than having to add 5 tunings to tune_zones in the map settings 11:05 < bridge> Can I request kernel interfaces from antibot module? I want to hook up to server's IStorage 11:20 < bridge> I think @blaiszephyr has a point, the benefit would come from the cleaner material interactions, like you are standing on ice and normal ground, and have the maximum of both friction (minimum of the values), the minimum ground control speed, maximum ground acceleration, average ground impule jump (imagine one is sticky material, one is normal, now you jump half as high), etc. This is also the part that breaks the prediction. 11:20 < bridge> 11:20 < bridge> But is it worth it? Maybe just implementing the client animations would be sufficient, since everything else can be emulated with tune layers (but not to such a detailed degree) 11:27 < bridge> you know what i'd want? 11:27 < bridge> 11:27 < bridge> templates in the editor with these settings, a "community db" basically 11:27 < bridge> with common settings, envelopes etc ready to use without having to create them from scratch 11:29 < bridge> paid ddnet assets when 11:29 < bridge> :nouis: 11:29 < bridge> uh, that is also an idea, because I was thinking about adding a tuning parameter import as well, maybe we can put well defined materials into loadable configs 11:30 < bridge> doesnt a new layer mean there will have to be implemented another map format version 11:30 < bridge> which wont be compatible with teeworlds client and servers 11:30 < bridge> you mean like the current one, which already isn't? 11:31 < bridge> oh 11:31 < bridge> didnt know that 11:31 < bridge> default teeworlds doesn't support teleports 11:31 < bridge> **default**!!! teeworlds doesn't support teleports 11:31 < bridge> depends on what kind of compatibility you mean, blockworlds is based on teeworlds, and the freeze is displayed as laser blockers in the DDNet editor :kek: 11:31 < bridge> yeah xd i dont know much about teeworlds 11:31 < bridge> depends on what kind of compatibility you mean, blockworlds is based on teeworlds, and the freeze is displayed as laser blockers in the DDNet editor for example :kek: 11:37 < bridge> This is always safe, even if you dereference. Char pointers are allowed to alias any object type 11:37 < bridge> @essigautomat Not sure if you're aware, I'm OP of #9250 11:37 < bridge> https://github.com/ddnet/ddnet/issues/9250 11:38 < bridge> Can someone help me find the values for deceleration and acceleration? 11:38 < bridge> hi @murpi sorry if I sound harsh, I am just brutally honest 11:39 < bridge> Then you don't seem to know what name_bans are for 😄 11:39 < bridge> TBH there is no point in name bans, isn't it banning by name? 11:39 < bridge> At least on DDNet 11:40 < bridge> You'll have to change the ABI yourself. We intentionally don't really use anything from the server because it can break on accident, like the CPacker issue we had this week 11:41 < bridge> why are name bans implemented, wtf, who thought of this, now implement skin bans 11:41 < bridge> (╯°□°)╯︵ ┻━┻ 11:41 < bridge> They effectively take your points away without deleting ranks which we don't do 11:42 < bridge> (Unless the ranks are replaybotted or use bugs we removed) 11:42 < bridge> I'll responded to your comment, to give some examples 11:42 < bridge> I responded to your comment, to give some examples 11:43 < bridge> okay disallowing some names entirely makes sense 11:43 < bridge> ┬─┬ノ( º _ ºノ) 11:44 < bridge> thought the idea was to get rid of the player, not to remove his records or prevent certain nicknames 11:46 < bridge> Well, I think (thought), all game-server classes I use are compiled into .so and even if server will mess something up my AB will work fine. And because of this I compile my AB from ddnet sources, and not as a completely external project, should I worry about it? 11:47 < bridge> it's also used for certain.. other names 11:47 < bridge> 11:47 < bridge> it's useful given we dont have an account system and this is a proper way of stopping people to use certain names 11:47 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1306933476456661042/image.png?ex=67387826&is=673726a6&hm=e2a5aa37ce47c3bfad861616ea8852f734b237f868c17b83cee8c7ceb57287ad& 11:47 < bridge> Also main goal is to keep ABI compatible with stock ddnet 11:48 < bridge> > okay disallowing some names entirely makes sense 11:48 < bridge> Yes I understood, now honestly `skin_ban` would make sense 11:49 < bridge> hm, why? the community and skin db's are controlled, if you use other proxies or download that skin yourself, your fault. 11:49 < bridge> also people using disgusting skins can just.. not name them inappropriately 11:49 < bridge> Well we compile the antibot with only a couple things from the ddnet server. That's system.h and antibot.h, nothing more iirc. Idk how you are compiling yours 11:50 < bridge> is P2P skin sending a thing? When they change the skin name, others can't see them anymore or am I wrong? 11:51 < bridge> No it's not. Yes they can't unless they have download skins enabled and you are using a skin that is part of their skin db provider 11:52 < bridge> I include everything I need to antibot xd. base/system.h hash.h engine/storage.h message.h config.h, and much more, but only from engine and base 11:53 < bridge> Base is mostly fine. Engine we sort of designed the antibot around not having to have the antibot touch the memory of the server at all 11:54 < bridge> The ABI structs are all distinct from the ones the server uses internally e.g. 11:55 < bridge> You could add a hook to the skins provider for banning a skin, supporting the community, but I think the benefit would be minimal as you'd need a skin that has slipped through (people do make mistakes) and been missed 11:56 < bridge> Well, creating (mostly copying) all needed functionality to antibot sounds like a lot of pain and wasted time. So what was the CUnpacker issue? Also do you have own realization of it in AB? 11:57 < bridge> Well, creating (mostly copying) all needed functionality to antibot sounds like a lot of pain and wasted time. So what was the CPacker issue? Also do you have own realization of it in AB? 11:58 < bridge> We got lazy and used CPacker on the antibot, for like the first time in a decade someone made an ABI breaking change in CPacker. It started crashing because old antibot module new server 12:01 < bridge> That's weird, even if CPacker changed in server binary, shouldn't old version of it be compiled into AB? ABI gives only m_pfnSend that accepts raw data, all packing is made purely on AB side(at least in my AB) 12:02 < bridge> That's not how it's linked up 12:03 < bridge> So it's really *linked* to server, I though it was simply copied to AB binary 12:03 < bridge> Idk which message you mean o.0 could you resend it? 12:04 < bridge> It's really hard to know if we are both talking about the same thing, but yes it is truly actually linked if you make calls into the server 12:05 < bridge> How do I specify the number of percentages of people from the total number of online users on the server who must press f3 in order for the vote to be completed 12:06 < bridge> I'm talking about classes like CPacker, I thought they are compiled into AB so it uses own standalone version of it, but looks like it's referencing server's CPacker instead and is dependent of it 12:08 < bridge> This makes everything much more complicated. I guess I will migrate my AB to very standalone project that will use own classes instead of referencing, I hope this will make it independent of server realization. But I'm scared to think how much it will weight 12:08 < bridge> Imagine 5mb libantibot.so 12:08 < bridge> :monkaStop: 12:09 < bridge> how can i import dm to my server 12:09 < bridge> how can i import deathmatch mode to my server 12:09 < bridge> how can i import the deathmatch mode to my server 12:13 < bridge> ChillerDragon: so basically, in the 0.7 protocol documentation, in one place, it's written there are 501 null bytes added to the end of the hello control packet and in another 508 null bytes. (I tested both cases and 508 is the correct one). 12:13 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1306940245266141204/image0.png?ex=67387e74&is=67372cf4&hm=5708a263d90104b51f0bc718ae0bfda68f5a393c9e0c826f4775955525506fd0& 12:13 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1306940245752942612/image1.png?ex=67387e74&is=67372cf4&hm=4e0a5332f149fb0d5689ac6615e8e48d2543af786d83f5bb0e2d767a28fa6dd3& 12:15 < bridge> ChillerDragon: so basically, in the 0.7 protocol documentation, in one place, it's written there are 501 null bytes added to the end of the token control packet and in another 508 null bytes. (I tested both cases and 508 is the correct one). 12:15 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1306940245266141204/image0.png?ex=67387e74&is=67372cf4&hm=5708a263d90104b51f0bc718ae0bfda68f5a393c9e0c826f4775955525506fd0& 12:15 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1306940245752942612/image1.png?ex=67387e74&is=67372cf4&hm=4e0a5332f149fb0d5689ac6615e8e48d2543af786d83f5bb0e2d767a28fa6dd3& 12:51 < ws-client> Oh yea ofc 508 is the correct one. Thanks @kollpotato i recently re counted it and only updated it in one place. Thanks for reporting @kollpotato 12:56 < bridge> np :D 13:22 < ws-client> @hakanulgen download this unzip it and double click on DDNet-Server.exe then login as admin in f2 (rcon console) and type in ``sv_gametype dm`` and then ``reload`` https://zillyhuhn.com/tmp/ddnet-windows-latest.zip 13:46 < bridge> thanks for that, but i have linux server 13:46 < bridge> does it have a linux version? 13:51 < bridge> if anyone have windows installed, can you check what's the typedef for `size_t` in MSVC? 13:57 < bridge> Yes it does :nouis: 14:09 < bridge> How do I specify the number of percentages of people from the total number of online users on the server who must press f3 in order for the vote to be completed 14:16 < bridge> can i have a link 14:20 < bridge> https://ddnet.org/downloads/ 14:38 < ws-client> @kollpotato he wants death match 14:38 < ws-client> @hakanulgen do you know how to build from source? 14:38 < ws-client> https://github.com/ddnet-insta/ddnet-insta/ 14:39 < bridge> umm 14:39 < bridge> i imported it 14:39 < bridge> this 14:39 < bridge> but 14:39 < bridge> the sv_gametype command didnt worked 14:39 < ws-client> how so? 14:39 < ws-client> did you ``reload`` 14:40 < bridge> ye 14:40 < ws-client> what happend? 14:40 < bridge> can you come to my server? 14:40 < ws-client> yes 14:40 < bridge> wait 14:40 < bridge> 77.90.53.24 14:40 < bridge> the password is 31 14:42 < ws-client> can't reach it 14:43 < ws-client> ah nvm im in xd 14:45 < ws-client> @hakanulgen ``sudo apt install build-essential cargo cmake git glslang-tools google-mock libavcodec-extra libavdevice-dev libavfilter-dev libavformat-dev libavutil-dev libcurl4-openssl-dev libfreetype6-dev libglew-dev libnotify-dev libogg-dev libopus-dev libopusfile-dev libpng-dev libsdl2-dev libsqlite3-dev libssl-dev libvulkan-dev libwavpack-dev libx264-dev python3 rustc spirv-tools`` 14:46 < bridge> thx 14:46 < ws-client> ``git clone --recursive https://github.com/ddnet-insta/ddnet-insta.git && mkdir ddnet-insta/build && cd ddnet-insta/build && cmake .. && make`` 14:47 < bridge> ChillerDragon 14:47 < ws-client> @woidless 14:47 < bridge> I'm currently helping a friend Clone ddnetpp 14:47 < ws-client> pro 14:48 < bridge> What kind of team is there , something is wrong in the github 14:48 < bridge> There is no cmake fall 14:48 < ws-client> ? 14:49 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1306979455868342343/IMG_20241115_184917_254.jpg?ex=6738a2f8&is=67375178&hm=2a0d63dc6f2933fb1cda15b4d3e776ce4a6897f9af841a97532b07ae7eb2f4bb& 14:50 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1306979543378296935/IMG_20241115_184953_834.jpg?ex=6738a30d&is=6737518d&hm=f43f96f24fa60b6dceb6eca7487ebb7767a100c8253d52c7143ea8f9f88a18bb& 14:50 < bridge> Weird 14:50 < ws-client> @woidless ``sudo apt install build-essential cargo cmake git glslang-tools google-mock libavcodec-extra libavdevice-dev libavfilter-dev libavformat-dev libavutil-dev libcurl4-openssl-dev libfreetype6-dev libglew-dev libnotify-dev libogg-dev libopus-dev libopusfile-dev libpng-dev libsdl2-dev libsqlite3-dev libssl-dev libvulkan-dev libwavpack-dev libx264-dev python3 rustc spirv-tools`` 14:50 < bridge> hehe copy paste 14:50 < bridge> And then what 14:51 < ws-client> @woidless https://zillyhuhn.com/cs/.1731678647.png here it tells you you don't have a c compiler installed 14:51 < ws-client> a new system ships without the needed depdencies to build ddnet so you got to install them once using apt 14:51 < ws-client> https://github.com/ddnet/ddnet?tab=readme-ov-file#dependencies-on-linux--macos 14:53 < bridge> After he downloads it all:cd DDNetPP/build and is needed 14:53 < bridge> cmake .. 14:53 < bridge> make 14:54 < ws-client> if he is still in the build folder he does not need the cd 14:54 < ws-client> but yes running ``cmake ..`` and ``make`` again in the build directory 14:54 < bridge> @learath2 why most tools default to at&t syntax? 14:54 < bridge> intel looks way easier and sane 14:56 < ws-client> @hakanulgen are you german? o.O 14:59 < bridge> nah 14:59 < bridge> turkish 15:00 < bridge> can you come again 15:00 < ws-client> omw 15:02 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1306982567882260601/IMG_20241115_190156_254.jpg?ex=6738a5de&is=6737545e&hm=f3071d449a19b3a9d8c572245c03a9404b46c125f6328acc9d206ccdd1850408& 15:04 < bridge> what to do 15:06 < ws-client> can you show more of the error message? 15:07 < ws-client> what kind of system is that? 15:07 < ws-client> what does ``cat /etc/os-release`` show 15:07 < ws-client> and ``g++ --version`` 15:08 < bridge> I honestly don't know this one. I also don't know anyone who uses att syntax 15:08 < bridge> linux 15:08 < ws-client> yea that much i assumed xd 15:08 < ws-client> but which distro which version 15:09 < bridge> Wait 15:10 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1306984798505664593/IMG_20241115_191036_307.jpg?ex=6738a7f2&is=67375672&hm=d401af446a3fa168a6c95c53cf31d0611a8ec5a0061905b9e5325dd55bdead90& 15:11 < ws-client> ok debian 10 not good 15:11 < ws-client> too old 15:11 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1306985026814087219/IMG_20241115_191129_954.jpg?ex=6738a829&is=673756a9&hm=719f70a37a513661cc55273b20539fa8eb9a301439f9f182a8998f19821ec7d4& 15:12 < ws-client> get debian 12 15:12 < ws-client> where did your friend get a server? is it new? can he select debian 12 instead of debian 10? 15:13 < ws-client> if there is no option to run a newer debian you have to update your self for example following this https://linuxize.com/post/how-to-upgrade-debian-10-to-debian-11/ 15:15 < bridge> He asked to install Debian 12 15:15 < bridge> Just in case, ChillerDragon, write what to do next, I remember that you will go to bed soon 15:16 < ws-client> if you have debian 12 it will be as easy as on your machine 15:17 < ws-client> just clone and build like you already tried 15:22 < bridge> ChillerDragon I actually got the same error about CMAKE_CXX_COMPILER as well, but that was right after installing both the compiler and cmake, on a system with like a year of uptime, but it compiled just fine when I manually specified the env var as g++ 15:22 < bridge> oof that was an ugly sentence... 15:23 < bridge> main point: it's possible for that to show up even if you have a compiler 15:25 < bridge> main point: you can starve even if you have food in the fridge 15:26 < ws-client> @inv41idu53rn4m3 that sounds cursed if you have a healthy up to date system and a compiler installed with apt then cmake should find it 15:26 < bridge> idk if it's very healthy, I haven't really done any active maintenance on it 15:27 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1306988901084434452/image.png?ex=6738abc4&is=67375a44&hm=0d2186a5f956135aedd60211983df219c382f191e69aba01e49a364cf69ad850& 15:27 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1306988901809918022/image.png?ex=6738abc4&is=67375a44&hm=4e2d7f425af163a189bfe37ef550fff9e44c09467c238c5a5e34f48a967474f5& 15:27 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1306988902485327894/image.png?ex=6738abc5&is=67375a45&hm=50fed31c5e1f5d43039d885921a3b4ea3742b8b1cb2bd5482766c3b6faf0137f& 15:27 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1306988903038718022/image.png?ex=6738abc5&is=67375a45&hm=daa6192645d1fc7b4295159e394a35fe2a93891a6dd63f2fcd576ce62854ebca& 15:27 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1306988903512670238/image.png?ex=6738abc5&is=67375a45&hm=9d81a02a203e8ad0a7b8e62bd6f554ea5f4586a0718646672753d67afcab472c& 15:27 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1306988904054001675/image.png?ex=6738abc5&is=67375a45&hm=9a60ef65b45bb091d1cae8599fab8e32f085e50abb72049098f4c84750a33363& 15:27 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1306988904389414924/image.png?ex=6738abc5&is=67375a45&hm=3f54ee0a068ee044662055ef1593afdc48ba46bb79b54f9502f8732debfad57c& 15:27 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1306988904729280512/image.png?ex=6738abc5&is=67375a45&hm=7441541ded3ee1c5206ae6a0f4ac29f8981c525b3c8bf44be2ba71e9dc33e4da& 15:27 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1306988905094057984/image.png?ex=6738abc5&is=67375a45&hm=53893c4aaf6b25ba015022445f19065989827363a95ae3d920cf715b3ece8b7a& 15:27 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1306988905618473001/image.png?ex=6738abc5&is=67375a45&hm=522fe136379a540c308d471c507987d47cba664e29dc230603c29c6b66b5b888& 15:27 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1306988944902066246/image.png?ex=6738abcf&is=67375a4f&hm=39bfccf097b93a327a22041a70ca8e68fc7beb735fe5131ac4b161e53ac2ee4d& 15:27 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1306988945627938826/image.png?ex=6738abcf&is=67375a4f&hm=840e701dbf202bb27d14a0dd49fc253532688381b6724d3dc3d506695fb3f6db& 15:27 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1306988946001104986/image.png?ex=6738abcf&is=67375a4f&hm=d70b2c0ffeb76574c2623c80f3215f173ef9d1ac6a0da40039e3d1ddd51aa94f& 15:27 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1306988946395234374/image.png?ex=6738abcf&is=67375a4f&hm=1574ef68cd6b89247acff1a611d11e2c5ceb2a680e25e6c0ab4c5bbcddc9c161& 15:27 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1306988946798149632/image.png?ex=6738abcf&is=67375a4f&hm=cb8188fbfa06e1cd92ca0fa0871c58876735c1ded5fcc01766831ada27277eeb& 15:27 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1306988947326374020/image.png?ex=6738abcf&is=67375a4f&hm=c7bf7a188e74968a6275aea9d420989bc093de091961c97317d2d68fa582013a& 15:28 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1306988947880018021/image.png?ex=6738abcf&is=67375a4f&hm=58876884bbe643a731933048157d40bf3e37d5c3d250e6a2a8712a08d8653a82& 15:28 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1306988948307837018/image.png?ex=6738abcf&is=67375a4f&hm=bd98b1650ca17d17ef17d4ef7ac9ca385a938682ab368b7e4382987b64628016& 15:28 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1306988948777603082/image.png?ex=6738abd0&is=67375a50&hm=e7f2299447bd7839afc77a3a48023590e83bc6cb79bf7d4db6f1bf67887e549f& 15:28 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1306988949243301949/image.png?ex=6738abd0&is=67375a50&hm=ff4205347bad0940d6e2948997fb8df9dd6bef425594e5a33deac1dfc2d7586c& 15:28 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1306988968562397234/image.png?ex=6738abd4&is=67375a54&hm=3bc02fcee247924c25e6df347ca36af20cfcbf8357a32950cafe5fb4773467df& 15:28 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1306988978884579399/image.png?ex=6738abd7&is=67375a57&hm=4a3871f452cf0e91bce85e70e8a8bfe52ed21a47523db34cb7dbd608c1c37344& 15:28 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1306988982508453929/image.png?ex=6738abd8&is=67375a58&hm=f92c7705fd4ebd6918533955de05d387fd137f8e07de4a2054e9598e916796ce& 15:28 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1306988985318506558/image.png?ex=6738abd8&is=67375a58&hm=7de24f0e702919f560f3bf1e2ba8d33eda90d0b3cbcf7450e124f78d26d2915a& 15:28 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1306988987122057226/image.png?ex=6738abd9&is=67375a59&hm=440213a80edbd64fb142b8efbbde6256d2f750676bdfe6baaccaa7e5f0652c7e& 15:28 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1306988990641078272/image.png?ex=6738abda&is=67375a5a&hm=ebb98b862e77d31629fd1f4640a926ef1d7179af7ffe958088d2f5aeeaff04ab& 15:28 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1306988992956203038/image.png?ex=6738abda&is=67375a5a&hm=f23b9f1512a1d267922f35bec297abd29b9242cb171dd00751259cba02212ece& 15:28 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1306988995347222650/image.png?ex=6738abdb&is=67375a5b&hm=88c9f9f553cb67529e53ec88e996e21d1d97ba2896fc1c230af41faf5fba43b4& 15:28 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1306988999294062683/image.png?ex=6738abdc&is=67375a5c&hm=de0ffded80cc4f97c2ee49cb5db0c36511df6f37a26e4fe8589eee87fc750018& 15:28 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1306989001407987752/image.png?ex=6738abdc&is=67375a5c&hm=83c871cea1890d7ee83c7004264c117c3080ac9f013029dd53c442ef26cdc5ac& 15:28 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1306989006571176057/image.png?ex=6738abdd&is=67375a5d&hm=0156db479351e9ec1da26fb41311970170b7406c01d7dc04ad2b6e73f29eeb41& 15:28 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1306989008714203167/image.png?ex=6738abde&is=67375a5e&hm=b22f1b0d76ce3a970b126c6e1463a6cbf8fc88ad0dd688358ad8e42c357684f9& 15:28 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1306989011679707247/image.png?ex=6738abdf&is=67375a5f&hm=020c159e52c179600e1f2f60a7bc4a38e5cbc6c3d3b498907d2a20e04f38256f& 15:28 < bridge> м 15:28 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1306989015077097596/image.png?ex=6738abdf&is=67375a5f&hm=472261ff5144b3d4645ffc9c6a5bd0f9b7d33eb452a84869b11399bd20a1c8a0& 15:28 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1306989017174114314/image.png?ex=6738abe0&is=67375a60&hm=b9585b8cbd6ab8fe5965e60e9057308b968df1f3abacd1ec6895bc0b4e2408fc& 15:29 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1306989021133668362/image.png?ex=6738abe1&is=67375a61&hm=ce9da7069fbb556f81321be8039d5b418a2232c47cc01f178893486cee315e33& 15:29 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1306989021897162884/image.png?ex=6738abe1&is=67375a61&hm=52ff130b25c7b63d83c26663b86e960012bf38a6cc3aa4a1f2d1bc42bd064071& 15:29 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1306989024648499250/image.png?ex=6738abe2&is=67375a62&hm=605f68dbb6548bf0288b1052db8e32e66fad72b8de55aa498d99227e38b7fef3& 15:29 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1306989029883121776/image.png?ex=6738abe3&is=67375a63&hm=b38afe025cc92f304bfba0fdc5be80ba6633ea9479412b0d591e1956a522a6c0& 15:29 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1306989030856196127/image.png?ex=6738abe3&is=67375a63&hm=6bf103df84d9f82143542b769c20eabb4434db21525b0be79e806c6a071282fe& 15:29 < bridge> bruh wtf 15:29 < bridge> https://0ver.org/ 15:29 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1306989121088258169/image.png?ex=6738abf9&is=67375a79&hm=75a614b64bc2caf51c1a8b97c9fa0d9fe18d9cd0521ec9cfa442c3ff26ce7a81& 15:29 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1306989128742866964/image.png?ex=6738abfa&is=67375a7a&hm=a72f4d850e053d14c1592b2432010ed9e0d738fccc7d44965e0e55311a1a83eb& 15:29 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1306989131913629716/image.png?ex=6738abfb&is=67375a7b&hm=9febbf38ac91ae7860cdf5f60b7f9230cc37cc95e0ab232cd3184f254e6fd4c1& 15:29 < bridge> i was away only for 1 second 15:29 < bridge> @murpi @nikosaccount spam 15:29 < bridge> @Discord Mod 15:29 < bridge> @murpi spam 15:29 < bridge> 🤣 15:29 < bridge> Discord takes a bit to delete all his messages 15:29 < bridge> I feel like the compiler not being detected would've probably been fixed simply by opening a new shell 15:29 < bridge> yes 15:29 < bridge> env is not updated sometimes 15:30 < bridge> ChillerDragon they can't install debian 12, will they have to upgrade from under the system? 15:30 < bridge> the issue I'm more familiar with is having to open a new shell when my groups change 15:30 < bridge> i have debian 12 btw 15:30 < bridge> u can dual boot 15:30 < bridge> with both windows and linux 15:30 < ws-client> @ryozuki common teeworlds W 15:31 < bridge> I feel like this is probably not a home computer if they can't just upgrade it like that... 15:31 < bridge> and if it's not a home computer I would absolutely not recommend trying anything Windows related 15:31 < bridge> running a vm is another option 15:31 < bridge> slow but works 15:32 < ws-client> @woidless then you gotta do this https://linuxize.com/post/how-to-upgrade-debian-10-to-debian-11/ hf gl 15:33 < bridge> CMAKE_CXX_COMPILER is left empty in favor of CMAKE_CXX_COMPILER_INIT which gets its value from the env var, iirc 15:33 < bridge> or maybe that’s only flags & stuff 15:34 < bridge> you still want the variable set but ya it will often work 16:24 < bridge> How to make more slots on the server than 64 16:36 < bridge> `unsigned __int64` according to https://godbolt.org/z/KE9se6E48 16:37 < bridge> I didn't know printing out type's name is possible :0 16:38 < bridge> and thanks 16:38 < bridge> does this work for structs/classes? 16:39 < bridge> Yes, prints `class CMyClass` for example 16:39 < bridge> ah nice 16:40 < bridge> *((char*)this + 5) = -1 16:40 < bridge> Jokes on you you just overwrote the first byte of a uint32 as 0b11111111. This happened to be a size of an array. The array is then iterated over and causes a segfaults, but not before writing to a bunch of things out of bounds causing an accidental zero day which deletes the French language pack from your system, bricking it. 16:40 < bridge> Reading from it if you stay inside the object should be safe (or if you're in an array even further). But writing can cause unsafe stuff 16:41 < bridge> It's not the writing that causes ub as long as that pointer is still within the object 16:43 < bridge> The dereferencing, reading, writing, all are fine. It's the rest of your program that causes ub by respecting that new length and writing beyond the object 17:00 < bridge> mmm 17:00 < bridge> oke 17:02 < bridge> (You are right that it's usually not a great idea and will cause unexpected stuff, but "undefined behaviour" is a very specific thing and you need to be exact about what is UB and what isn't because C/C++ is just very strict about it) 17:02 < bridge> (You are right that it's usually not a great idea and might cause unexpected stuff, but "undefined behaviour" is a very specific thing and you need to be exact about what is UB and what isn't because C/C++ is just very strict about it) 17:03 < bridge> There's UB you need to be scared of and UB that just gets regularly abused for convenience 17:04 < bridge> because it isn't all *that* undefined 17:05 < bridge> I do need to teach myself to stop writing code that assumes x86... I like low power systems so I really should make my code work on ARM and the like 17:05 < bridge> How to make more slots on the server than 64 17:08 < bridge> Write C code until you introduce UB 17:08 < bridge> Challenge (IMPOSSIBLE DIFFICULTY): Survive for 5 minutes 17:08 < bridge> You have 3 options: 17:08 < bridge> - Learn to code, figure it out yourself 17:08 < bridge> - Learn to code, start from fokkonaut's ddnet PR and fix that up 17:08 < bridge> - Beg one of the 2 people that have decently well working implementations of it to implement it for you 17:08 < bridge> 17:09 < bridge> I remember watching this :P 17:09 < bridge> do older clients accept more than 64 clients, but just cant show them? 17:09 < bridge> fokkonauts playground laready has 128 slots and i can join fine 17:09 < bridge> Some "engineer" at youtube decided to remove the confirmation before changing the video that is currently being cast to tv. So clicking that link made me lose my place in a 1h video essay 17:10 < bridge> No they don't. All implementations of 128p use an id mapping, they map the 128 players to 64 closest/most likely to interact with players 17:11 < bridge> No they don't. All implementations of 128p use an id mapping, they map the 128 players to 64, using heuristic measures like closest/most likely to interact with players 17:11 < bridge> bw historically goes up to 256p and works the same, tho I never use it lmao 17:11 < bridge> Any MSVC enjoyers? I gen an error when I try make a typedef for `size_t`: `'size_t': redefinition; different basic types`(C btw). For some reason in MSVC `size_t` can be used without including a header file, is there a compiler flag which can change this behavior or maybe a macro which indicates that the type is defined :\ 17:11 < bridge> (multiple maps, single server instance) 17:12 < bridge> Why are you typedefing size_t? 17:12 < bridge> oh no 17:12 < bridge> it's dirty hacks all the way down 17:13 < bridge> can clients support 128 clients and not do this jank? 17:13 < bridge> It's somewhere in the roadmap for ddnet to get native 128p support or n player support 17:13 < bridge> ddnet client already does this I think? 17:13 < bridge> Soon(tm) as in hopefully within the next 6 months 😄 17:13 < bridge> wait no I'm dum 17:13 < bridge> but like, doesn't the player list support that? 17:13 < ws-client> isnt that just setting MAX_CLIENTS to 128 and call it done? 17:14 < bridge> ok but then won't it break for older clients? 17:14 < bridge> I think we had snap size issues :/ 17:14 < bridge> when /show-everyone-which-i-can-seee-when-zoomed-out-instead-of-actually-everyone-cuz-thats-dumb 17:14 < ws-client> oh yea that makes sense but whats the solution for that? increase snap size? 17:14 < bridge> If you want to up it to 128 and test it out it would be appreciated 17:15 < bridge> Also there are 64 wide masks that need to be widened to `std::bitset` 17:15 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1307016198264717373/Screenshot_2024-11-15-21-15-30-776_com.cxinventor.file.explorer.png?ex=6738c530&is=673773b0&hm=7f9969afaf7404db3928f2157f97766ddccb238b4981980214528b2b0e1b3775& 17:15 < bridge> This change to 128! 17:16 < ws-client> I am too tired now. But I have the feeling there has to be some low hangung fruit that could already be released now on the client side to later not have to use player mappings anymore 17:16 < bridge> This change to 128? 17:16 < bridge> gcc long long long anyone? 17:16 < bridge> gcc __int128 anyone? 17:17 < ws-client> @woidless not it requires quite a bit of writing actual code to get 128 players to work. Remind me tomorrow and I can have a look. 17:17 < bridge> But then we'll talk about this again in 2034 when upping it to 256p 17:17 < bridge> yep 17:17 < bridge> Ok 17:17 < bridge> at that point __int256 will be a thing xd 17:17 < bridge> supported by only 128 bit architectures 17:18 < bridge> this is al a /j btw 17:18 < bridge> ChillerDragon maybe I'll remind you about slow motion tomorrow? It's not like making it. And choose the actions that need to be done in tune to slow down or accelerate 17:18 < bridge> I wonder if we'll ever get 128b architectures. The size of the address/data bus seems to be enough for pretty much everything we can imagine for now 😄 17:18 < bridge> I think that was fixed or are there some remaining? We have a `typedef std::bitset CClientMask;` 17:19 < bridge> Oh, cool 17:19 < bridge> ugh yeah but what if im in the year 292,277,026,596.927,714,913,658??? 17:19 < ws-client> @learath2 client side masks? For predictions? 17:22 < bridge> Well we *do* already have 512 bit registers on some CPUs... 17:22 < bridge> avx registers for storing bitsets? 17:22 < bridge> hehe 17:23 < bridge> I mean, pretty sure you can do bitwise operations on them, wouldn't make sense to not have the basics in there 17:23 < bridge> probably slower than just doing it 64 bits at a time lol 17:24 < bridge> yeap 17:25 < bridge> As for performance, how many tees can we handle before it becomes an issue? 17:25 < bridge> I guess network would be the biggest bottleneck 17:25 < bridge> bros are running ddnet at 1000s of frames per second 17:25 < bridge> so yes network 17:26 < bridge> since actually processing a few thousand tees would be nothing 17:26 < bridge> also alot of people play with /showall which is a huuuuuge waste 17:27 < bridge> /showall needs to be nukes 17:27 < bridge> /showall needs to be nuked 17:28 < bridge> I think 512 was breaking down with the current code 17:29 < bridge> :poggers2: 17:29 < bridge> We need a distributed Teeworlds server, make an MMO, call it World of Tees 17:40 < bridge> jupstar can handle more i thik 17:40 < bridge> jupstar can handle more i think 17:40 < bridge> That's why I said current code, without touching much. His rewrite in rust can indeed do much more 17:43 < bridge> because there's no existing typedef for it 17:47 < bridge> what rewrite in rust o-o? 17:51 < bridge> i assume they are talking about this https://github.com/Jupeyy/dd-pg 17:51 < bridge> Jupsti rewrote DDnet in rust 17:52 < bridge> Hey respect him saying to not read it 17:52 < bridge> Smh 17:52 < bridge> i didnt 17:52 < bridge> 😶 17:52 < bridge> and i definitely havent cloned the repo 17:52 < bridge> and didnt run it 17:53 < bridge> for now I just check for `_MSC_VER` and if it's set don't make the typedef 17:59 < bridge> ``` 17:59 < bridge> error: failed to get `hashlink` as a dependency of package `base v0.1.0 (/home/solly/Code/dd-pg/lib/base)` 17:59 < bridge> 17:59 < bridge> Caused by: 17:59 < bridge> failed to load source for dependency `hashlink` 17:59 < bridge> ``` 17:59 < bridge> hmm 18:00 < bridge> you need nightly 18:00 < bridge> you need nightly toolchain 18:00 < bridge> nightly rust? 18:01 < bridge> ``` 18:01 < bridge> failed to authenticate when downloading repository: git@github.com:Jupeyy/hashlink/ 18:01 < bridge> 18:01 < bridge> * attempted ssh-agent authentication, but no usernames succeeded: `git` 18:01 < bridge> ``` 18:02 < bridge> You are supposed to include `stddef.h` for it. Why don't you just do that? Then on every compiler a typedef will exist 18:03 < bridge> ye 18:04 < bridge> because `stddef.h` doesn't work for kernel module :p 18:05 < bridge> ? Why are you compiling a linux kernel module with msvc or a windows kernel driver with gcc? 18:06 < bridge> Also `stddef.h` is part of the compiler, I see no reason why you shouldn't be allowed to use it 18:06 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1307028932779839549/image.png?ex=6738d10c&is=67377f8c&hm=0648ca02a9909131a8ebdcbb90429840a75f4c9c02b67f8e4248aa1511f2c1c0& 18:06 < bridge> `configure: nasm/yasm not found or too old. Use --disable-x86asm for a crippled build.` 18:06 < bridge> hehe crippled 18:06 < bridge> WHY IS IT CLONING FFMPEG?? 18:07 < bridge> why not 18:07 < bridge> sudo apt install nasm 18:07 < bridge> for rendering ig 18:07 < bridge> theres a reason i dont like rust 18:07 < bridge> huh 18:07 < bridge> rust hater?? 18:07 < bridge> :cammo: 18:07 < bridge> i dont mind the language, the ecosystem sucks tho 18:07 < bridge> huh 18:07 < bridge> its not the reason, you will have plenty others when you will code rust for real 18:07 < bridge> imo its the best one there is 18:07 < bridge> lmfao 18:07 < bridge> `_kernel_size_t` perhaps? 18:07 < bridge> im coming from javascript sooo 18:07 < bridge> its better 18:07 < bridge> ffmpeg doesnt do rendering 18:07 < bridge> and i already have ffmpeg installed 18:08 < bridge> for rendering videos i mean 18:08 < bridge> like demo to mp4 encoding 18:08 < bridge> There is plenty of uses of `size_t` in the kernel, idk what your issue is tbh 18:08 < bridge> o i guess that is fair, but you can hook ffmpeg to your window 18:08 < bridge> it doesnt need to be a compile time dependency 18:08 < bridge> languages that ship with package managers are dangerous because they end up with stupid dependency trees for basic apps 18:08 < bridge> ask @jupeyy_keks 18:09 < bridge> and if anything should be installed for it, it should be a c -> rust compat layer 18:09 < bridge> but it is? 18:09 < bridge> its probably a dependency of a dependency cuz rust 18:09 < bridge> the difficulty of handling dependencies for C makes the software better lol 18:09 < bridge> https://www.npmjs.com/package/is-even 18:09 < bridge> I'm making a linux kernel module and I can use `size_t` and everything works, but I'm also making a library which can be used by the kernel module 18:09 < bridge> yeah, cpp ends up with manual bootstrapping of such xddd 18:09 < bridge> also takes many years 18:10 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1307029851156385822/image.png?ex=6738d1e7&is=67378067&hm=909a52dab806e87ea047708db74993603e4f10a6426417fa2031b24022fae7ca& 18:10 < bridge> omg ai 18:10 < bridge> and a good internet connection 18:10 < bridge> you can download it once and work as you wish 18:10 < bridge> I don't want to include any kernel related headers so I did this https://github.com/MilkeeyCat/ddnet_protocol/blob/master/src/common.h 18:10 < bridge> offline i mean 18:10 < bridge> how else do you expect audio to work 18:11 < bridge> audio?? xd 18:11 < bridge> ffmpeg shouldnt handle audio playing 18:11 < bridge> and that would be ffplay anyway 18:11 < bridge> ofc audio, noone would be crazy enough to use it for videos! 18:11 < bridge> xddd 18:11 < bridge> xd 18:11 < bridge> stop troll 18:11 < bridge> ddnet doesn't just shell out to ffmpeg, it uses libavcodec/libavformat (the libraries making up ffmpeg) to encode directly, which is much more robust 18:11 < bridge> :kekw: 18:11 < bridge> Why can't your library not include stddef? I don't get that part. Is your compiler misconfigured or sth? 18:12 < bridge> Why can't your library include stddef? I don't get that part. Is your compiler misconfigured or sth? 18:13 < bridge> just grep ffmpeg in sources and look what it is used for 18:13 < bridge> ♿ 18:13 < bridge> you'd need to grep for av or avcodec 18:13 < bridge> I can include it in normal projects but it doesn't work with kernel module :\ 18:13 < bridge> this is not about ddnet 18:14 < bridge> but we are talking about ddnet-pg, not ddnet 18:14 < bridge> ddnet ofc doesn't use full ffmpeg bundle, but seems ddnet-pg does 18:15 < bridge> no more issues allowed 18:15 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1307031146688938044/image.png?ex=6738d31c&is=6737819c&hm=3e04121bb39ffacdfec833335c9fcfd6c3633f54bbb317414f2e6f1cc68939e1& 18:15 < bridge> oh god... 18:15 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1307031217702437015/image.png?ex=6738d32d&is=673781ad&hm=b1ab07c613331744b98fd1b01afd19d677fda0820dd01603026033853d022c13& 18:15 < bridge> ah I didn't read enough backlog it seems 18:15 < bridge> The kernel itself includes stddef all over the place, so it's not like a rule or sth. Anyway, idk 18:16 < bridge> yeah but it means it wouldnt be a compiletime dependency but runtime optional dependency 18:16 < bridge> which is yipee 18:16 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1307031419058651177/image.png?ex=6738d35d&is=673781dd&hm=13ad63c6ba2f5a83f7a434cc5afa57bbc55360da1ba570a7dd46cc8ee656a7a2& 18:16 < bridge> also it feels like teeworlds 18:16 < bridge> very ... rough in every way but it works :D 18:16 < bridge> reminder that ddnet is just a teeworlds mod, so it makes sense :kek: 18:16 < bridge> crashed after a minute of gameplay for me 18:16 < bridge> but it worked 18:16 < bridge> so epic 18:17 < bridge> i had to host a local server 18:17 < bridge> skill issue, i played hours of gores on it 18:17 < bridge> can it join normal servers nowadays? 18:17 < bridge> skill issue, i played hours of gores on it, and i also beat @gerdoe in a few rounds of ctf 18:17 < bridge> in (old) ddrace servers 18:17 < bridge> ? 18:17 < bridge> skill issue, played insta for hours on it 18:17 < bridge> iirc jupsti doesnt intend it 18:17 < bridge> this is still true though 18:17 < bridge> iirc jupsti doesnt intend for it to be compatible 18:17 < bridge> I thought Jupstar was intentionally never going to support normal ddnet/teeworlds protocol 18:17 < bridge> yeah, mister 20 ping 18:17 < bridge> ye 18:17 < bridge> skill issue 18:17 < bridge> skill issue, i touched grass for hours 18:17 < bridge> :troll: 18:18 < bridge> yeah, it doesn't :justatest: 18:18 < bridge> dd-pg feels like ddnet with antiping on by default, it felt like cheating 18:18 < bridge> i had 60-9999 ping, still playable enough 18:18 < bridge> dd-pg is better in most ways imo 18:19 < bridge> It's such a shame that's the direction he took with it 18:19 < bridge> is he going to make a brand new protocol or what? 18:19 < bridge> he mentioned he will allow modifications when he releases it 18:19 < bridge> so we might see that at some point 18:19 < bridge> It'll cause unimaginable amounts of migration pain and community splitting for absolutely 0 reason 18:19 < bridge> my insta is ready for tweaking :brownbear: 18:19 < bridge> my zombies can't wait to be implemented 💥 18:20 < bridge> for 0 reason? 18:20 < bridge> Ok -1 reason 18:20 < bridge> it is a different game 18:20 < bridge> he'll sell dd-pg, "for only 29,99$" 18:20 < bridge> he literally remade teeworlds in rust with accounts in mind 18:20 < bridge> A different game that looks and behaves almost exactly the same way as another 18:21 < bridge> i wouldn't say he had 0 reasons to do it 18:21 < bridge> Many reasons to give ddnet/teeworlds a proper rewrite. 0 reasons not to properly support the current set of mods 18:21 < bridge> he was tired of needing to do backwards compatible things and getting nowhere 18:21 < bridge> we can do that together when he releases it 18:21 < bridge> wasm ftw 18:22 < bridge> ok i stop trolling 18:22 < bridge> remaking the mods is easier than maintaining backwards compatibility for the next 10 years 18:22 < bridge> also mods in dd-pg are much more powerful 18:22 < bridge> When he releases it properly one project is definitely going to die off. We barely have the people to maintain this project let alone give it a complete rewrite in wasm to support dd-pg 18:23 < bridge> since ddnet 2.0 was a thing as an idea of throwing out old ddnet/teeworlds i wouldn't say it either 18:23 < bridge> twgame exists already with most stuff implemented 18:23 < bridge> dd-pg uses that currently as a physics module and it works quite well 18:23 < bridge> didn't heinrich make his own proper protocol based on quic? 18:23 < bridge> even tho many things are not done yet 18:23 < bridge> Just remember me when the game dies, that's all I ask 18:24 < bridge> You can tell people there was this old 80 year old dude that warned us that breaking 10 years worth of mods wasn't the best idea 18:24 < bridge> bruh, i heard that almost on every major release 18:24 < bridge> better thing will live, thats all 18:24 < bridge> quic is just wrapping the already existing protocol 1 to 1, it's a different transport, not a different protocol 18:24 < bridge> 0.5 died, 0.6 lived 18:25 < bridge> 0.7 bappened, 0.7 died 18:25 < bridge> We had the time, the people and the talent to port ddnet to 0.6. We have none of the above nowadays 18:25 < bridge> wait so there was no work done on making a better protocol? 18:26 < bridge> because 0.5 and 0.6 were pretty similar, aren't they 18:26 < bridge> There is no need for a "better" protocol as was mentioned to you many times now. The protocol is just fine except for the fact that it contains some crud 18:26 < bridge> code wise, protocol wise 18:27 < bridge> Almost exactly the same, the bulk of the work was that a lot of code was moved around by ddrace and by teeworlds, so when 0.6 came out merging the two was almost impossible 18:27 < bridge> Hours and hours of resolving merge conflicts and testing, but as I said back then we had much more time on hand with more people 18:28 < bridge> btd was still around, greyfox was here 18:28 < bridge> so still we will have no server side assets, no dynamic map chunk patching, etc 18:28 < bridge> Those have nothing to do with quic, correct 18:28 < bridge> and it doesn't solely depend on protocol, map format should be reconsidered too as it was discussed many times before 18:29 < bridge> i don't argue about quic being a new protocol, i was thinking that heinrich tries to improve existing one *and* implement quic base for it 18:29 < bridge> nothing else 18:29 < bridge> "the protocol" isn't stopping you from implementing these, it's perfectly capable of expressing these things 18:29 < bridge> yeah, tell me 18:29 < bridge> quic is mostly just replacing udp 1 to 1, and giving us transport security, the second one is needed for accounts to be secure 18:29 < bridge> backcompat is part of ddnet and it was the only reason why jupstar did it 18:30 < bridge> holdon i got an xkcd for that 18:30 < bridge> if ddnet eould not support older clients we would not have to see this reimplementation 18:30 < bridge> jupstar would just work on that in current codebase 18:31 < bridge> And when he does finish up and release his work you can all have fun with your shiny new clients playing vanilla 18:31 < bridge> yeah, i will praise it, because its better and more flexible 18:32 < bridge> https://en.wikipedia.org/wiki/Greenspun%27s_tenth_rule 18:32 < bridge> certainly, at the cost of throwing away a decade of modding 18:32 < bridge> thousands and thousands of human hours spent on developing all the mods that have to be completely re-done 18:32 < bridge> we will be able to make more stuff with it anyway 18:33 < bridge> i think u want roblox (that is a game engine which has inherit multiplayer functionality which can do anything) 18:33 < bridge> and since wasm modules are reusable, these will be easily transferred 18:33 < bridge> a framework for ddnet servers 18:33 < bridge> its called game engine smh 18:33 < bridge> can you.. read the thing in brackets 18:33 < bridge> and yes modders always considered teeworlds as game engine with its own constraints 18:34 < bridge> you'll slowly recreate the mods we currently have, while slowly leeching off players and devs, which will kill both because both will end up too small to be sustainable 18:34 < bridge> not all game engines have inherit multiplayer functionality, and those which do often require a lot of code to do so or are easy to cheat on 18:34 < bridge> although oy would always say opposite 18:34 < bridge> many an open source project died this exact death, fork -> dev split -> not enough dev time for either -> dead project 18:35 < bridge> does anyone force all the devs to move to dd pg? 18:35 < bridge> i don't see it 18:35 < bridge> also we don't have so much active developers to be actually split 18:35 < bridge> No, but dd-pg needs dev time and there is a finite amount of it unless you think new developers are going to show up to help recreate the library of mods 18:38 < bridge> Anyway, think whatever you like. I'm just making a prediction based on what I've seen happen to other projects and what I've seen happen within this project. You obviously disagree, that's fine 18:38 < bridge> if this is an election im siding with the "dont fork or split anything, jupeey can do whatever they want, if it attracts people then let it" 18:38 < bridge> Well the rust cult is pretty good at doing just that... 18:38 < bridge> They love rewriting things :) 18:39 < bridge> wd40 keep me safe 👻 18:39 < bridge> Hopefully someone will implement a compatibility layer to solve it, but given the amount of activity we have nowadays that's even doubtful 18:39 < bridge> the only developers we actually have to contribute to ddnet upstream are... robyt3, because no one else wants to waste their time on thing they implemented in their own fork to be closed just like any other major prs we had. i don't say that there's no reason to close them but that's the thing 18:39 < bridge> the only great thing that was added from another fork is fokkos 128 id mapping, thats all i can recall for now 18:39 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1307037397921300541/image.png?ex=6738d8ef&is=6737876f&hm=76ce0ae70608fa8ca0e1168536fcbdfeddd374315e89201d094c870140a4eabc& 18:40 < bridge> You and I obviously have very different ideas on how this project is supposed to run, so it's quite normal we disagree 18:40 < bridge> so what? 18:40 < bridge> das alot of people 18:41 < bridge> ye, but i still don't see any reason for cpp developers to split over rust project 18:42 < bridge> There is a limited amount of developers in general, most of us know both C++ and Rust. There won't be random Rustaceans showing up to write mods 18:42 < bridge> There is a limited amount of developers in general that are interested in teeworlds/ddnet, most of us know both C++ and Rust. There won't be random Rustaceans showing up to write mods 18:42 < bridge> It's understandable people are annoyed that not everything is getting merged and getting things merged is the only way to mod this game properly 18:43 < bridge> i was about to say that we have less rustaceans than cpp enjoyers there 18:43 < bridge> at least most active ones, i.e chiller and robyt3 18:43 < bridge> u can do alot of server side only. the problem is alot of mods are unmaintaed, not open source and hard to find 18:43 < bridge> This is also exactly why ddrace moved away from teeworlds client, providing a smooth experience requires client support 18:44 < bridge> history repeats itself, eh 18:45 < bridge> Not really, we were all extremely careful not to break backwards compatibility so as to ensure a unified playerbase and not splitting the community 18:45 < bridge> i just played on vanilla 0.6, still works fine 18:45 < bridge> :D 18:45 < bridge> all other clients died just because they needed to handle with ddrace support, didn't they? 18:46 < bridge> All other clients died just because the ddrace client was just technically superior and a superset to all of them 18:46 < bridge> and all major cool stuff just was merged in ddrace client, just to not waste time duplicating it 18:46 < bridge> not vanilla ones 18:46 < bridge> ddnet is just a continuation of ddrace, so now that's the most useful client 18:46 < bridge> gamer and tdtw are still better in ui ux way for vanilla 18:47 < bridge> Vanilla died in general, how many people play it now, 20-30? 18:47 < bridge> If there were more players there would be popular maintained vanilla clients 18:47 < bridge> we have at least 30 russian vanilla player rn, i don't know numbers from eu and us 18:48 < bridge> i wana play some ctf ): 18:48 < bridge> the non i/g kind 18:48 < bridge> newbies enter vanilla mods and ask us "new mod?" 18:48 < bridge> the kind where its 8 per side on ctf5 and its 100 100 (both sides captured the flag 100 times) 18:48 < bridge> theh also tend to play on ddnet vanilla servers, they just don't see any other 18:49 < bridge> Anyway, the lack of actively maintained vanilla clients is not because vanilla clients didn't handle ddrace well. It's because there are no active developers in the vanilla sphere 18:49 < bridge> ddrace based clients are just easier to maintain because you can piggyback off of our maintainance of it 18:50 < bridge> imagine trying to handle ddrace updates with client you code solely 18:50 < bridge> ofc they dropped it 18:51 < bridge> They dropped it because these developers aren't involved much at all with the game anymore. Gamer client is by Dune, he had 6 contributions in the last 5 years 18:52 < bridge> it's one of the reasons, not the only one 18:53 < bridge> psychogod was active enoug but still dropped tdtw 18:53 < bridge> psychogod was active enough but still dropped tdtw 18:53 < bridge> What does ddpg offer to players over ddnet? I find hard to envision it replacing ddnet unless it's an official switch 18:53 < bridge> If there was a demand for a vanilla client, there would be a maintained vanilla client based on ddnet at the very least, if you think ddrace support is so important that it'd kill the client 18:54 < bridge> every good vanilla player has their own tweaked ddnet client with few adjustments :) 18:54 < bridge> and that's thr way how small things like clan in spectators come into ddnet 18:55 < bridge> proper modding api, an actual modding 18:55 < bridge> It can only be an official switch if we somehow find hundreds and hundreds of hours to reimplement ddrace as a wasm module with the 3 Rust developers we have around that are all so busy that they either don't contribute nowadays or only do maintainance 18:56 < bridge> Also all the old ranks need to play back perfectly on the newly reimplemented ddrace, and we have to support both dd-pg based clients and old clients at least for a while because we can't just drop support for it completely overnight 18:56 < bridge> This isn't a direct offer to players, it's indirect 18:57 < bridge> client mods xd 18:57 < bridge> Way more fps, probably more stable once it's released because Rust, and in the future when there are people around to make mods for it it's more flexible so stuff like the old nodes mod 18:58 < bridge> Way more? 18:58 < bridge> didn't you test it? 18:58 < bridge> Surely 5000 -> 20000 is not important? 18:59 < bridge> we have players that owe computers handling ddnet at less thab 100 fps 18:59 < bridge> It's not imo but I've given up on that discussion long ago. I now pretend it matters 19:00 < bridge> It's always better to have more frametime available anyway, you can do more 19:01 < bridge> I guess but you need to do physics which is kinda fundamental limited 19:01 < bridge> Surely these ancient machines can't run dd-pg anyway, it needs vulkan 19:02 < bridge> Our physics are tied to ticks, not fps, so I guess frametime doesn't have much to do with it 19:02 < bridge> i mean the ones with vulkan, even 19:03 < bridge> What toaster that is new enough to support vulkan properly runs ddnet at less than 100 fps? My intel atom netbook with igpu still ran it at like 150 last year when I checked 19:05 < bridge> Anyway, all of this is beyond the point. I've delivered my grand prediction. I'll go make some food 19:06 < bridge> can we remove rust from ddnet, its just annoying x-x 19:06 < bridge> It's about to get an actual use soon(tm) 19:07 < bridge> (removing all the stubs from client removes 1mb of the executable and) 19:07 < bridge> (removing all the stubs from client removes 1mb of the executable and probably speeds up compile time) 19:07 < bridge> https://github.com/ddnet/ddnet/pull/6961 19:08 < bridge> couldnt be done in cpp? 19:08 < bridge> too late now not telling heinrich to redo their work xd 19:08 < bridge> could be, but it isn't 19:08 < bridge> *sigh* 19:11 < bridge> My point was vague sorry, I meant if you need to spend 1/1000th of a second to do physics the extra frames don't increase smoothness. 19:11 < bridge> Unless you have a separate thread 19:11 < bridge> Hm, it is technically quantized but we interpolate, so it might look smoother 19:12 < bridge> well i'd guess the indirect benefits would be the reason people switch if they do 19:12 < bridge> but my point with frametime was that you can do other stuff, you just need to update physics at the correct times 19:15 < bridge> is there any way to fix this? the half of mine server is this "bots" 19:15 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1307046342631100436/image.png?ex=6738e143&is=67378fc3&hm=8f724ba1eaac317126011b78ae5d8642364276b904b452d9dce2809ef0465ce6& 19:15 < bridge> uncheck show connecting players 19:16 < bridge> if htis is ur server then uhhhh idk 19:16 < bridge> how 19:16 < bridge> in the filter settings 19:16 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1307046621703438417/image.png?ex=6738e186&is=67379006&hm=cecfff81805b716a49cf5052c8aeb0617e258572d78e0859605d8ee81575d1e2& 19:16 < bridge> turn on "filter connecting players" 19:18 < bridge> bon appetite, big boy 19:18 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1307046983038402580/image.png?ex=6738e1dc&is=6737905c&hm=1c0689a55334aebb1354b54a2e98088fb38490449e8b6b59f204f7e200cd5681& 19:18 < bridge> huh 19:18 < bridge> idk ¯\_(ツ)_/¯ 19:18 < bridge> this "players" is not letting other join game 19:19 < bridge> this is called a slow loris attack 19:19 < bridge> theres probably some setting somewhere to turn timeout to really low 19:19 < bridge> where? 19:19 < bridge> *finding* 19:20 < bridge> `conn_timeout` 19:20 < bridge> but youre probably better off banning the ips 19:20 < bridge> because they can just reconnect after 19:20 < bridge> because they can just reconnect afterwards 19:20 < bridge> this in f2? 19:20 < bridge> yeah 19:20 < bridge> set it to like 10 or something 19:20 < bridge> idk if its in ticks or seconds 19:21 < bridge> i put 5 19:21 < bridge> ty, this worked 19:22 < bridge> cool 19:22 < bridge> if its automated the bots r probably still connecting over an over again 19:22 < bridge> so u should probably ban by ip 19:22 < bridge> seconds 19:23 < bridge> why is it 100 by default then 19:23 < bridge> thats maaaasive 19:23 < bridge> is it for map download? 19:23 < bridge> i was connecting to one brazil server for almost 2 minutes, so its gut xd 19:23 < bridge> .-. 20:13 < bridge> How do I iterate over the game layer using twmap and place a specific tile from a layer based on the game tile? 20:15 < bridge> you mean copy game layout into tiles layout? 20:15 < bridge> design layer i mean 20:16 < bridge> @fokkonaut 20:16 < bridge> yes 20:17 < bridge> look up imilsch's exporter from gores generator 20:17 < bridge> lemme send link 20:18 < bridge> https://github.com/iMilchshake/gores-mapgen/blob/main/src/twmap_export.rs 20:19 < bridge> Thanks 20:20 < bridge> How does it work for bash? 20:20 < bridge> chillerdragon: maybe 20:20 < bridge> `m.groups[16].layers[0].color = (234, 234, 234, 255)` 20:20 < bridge> This is how to modify color of a tile layer 20:21 < bridge> cant find a doc about twmap to get and set a tile from that layer 20:28 < bridge> are u using the python version? 20:28 < bridge> yes 20:30 < bridge> i think u have to use help(twmap.Map) and find the layers attribute 20:31 < bridge> Oh, okay lemme see 20:31 < bridge> if you want to modify a design layer then u need to find the index of the layer it corresponds to 20:31 < bridge> if u want to extract game tile layers: 20:31 < bridge> ```py 20:31 < bridge> with open(map_path, 'r') as file: 20:31 < bridge> map_data = twmap.Map(map_path) 20:31 < bridge> game_layer = map_data.game_layer().tiles 20:31 < bridge> front_layer = map_data.front_layer().tiles 20:31 < bridge> ... 20:31 < bridge> ``` 20:35 < bridge> people will have 5000 instead of 4000 fps at the small cost of full rewrite and no new updates 20:35 < bridge> 🤝 20:42 < bridge> worth it 20:43 < bridge> i agree 20:43 < bridge> totally worth it 20:43 < bridge> 🥔 🤝 🥔 20:43 < bridge> 🥔 20:43 < bridge> I'm the right potato 20:59 < bridge> for some reason it doesnt seem to load the map into python 21:02 < bridge> m = twmap.Map(sys.argv[1]) 21:02 < bridge> this does crash silently 21:03 < bridge> map is in the same path + admin cmd 21:11 < bridge> huh 21:18 < bridge> hi again, how to get position and timer value by player id? 21:21 < bridge> :nouis: 21:25 < bridge> in server side 21:33 < bridge> pls help 😩 21:36 < bridge> CGameTeams::OnFinish has finish time, can probably find timer same way 21:37 < bridge> position is in CCharacterCore 21:39 < bridge> int CurrTime = (pSelf->Server()->Tick() - pChr->m_StartTime) / pSelf->Server()->TickSpeed(); 21:41 < bridge> thank you 21:47 < bridge> i write in server.cpp. how to get pChr by id?(for(int i = 0; i < MAX_CLIENTS; i++)) 21:51 < bridge> You can't use the character data in the engine (`server.cpp`), check `gamecontext.cpp` and `gamecontroller.cpp` for other loops with `i < MAX_CLIENTS` condition 22:14 < bridge> @essigautomat https://github.com/ddnet/ddnet-discordbot/issues/87 Could you clarify what the command is supposed to do? You mentioned twmap-check, but I assume you meant twmap-check-ddnet? 22:17 < bridge> just have the ddnet bot check it the same way it checks skins etc - (e.g in dms) ? 22:18 < bridge> or is that to heavy on the bot 22:40 < bridge> yes exactly, I know that you can Download compile and run this tool, but thats not really accessible for the majority 22:41 < bridge> also I did a PR for patiga in order to check tunings 😁 22:45 < bridge> fixed the description 22:45 < bridge> fixed the description for discordbot issue 22:59 < bridge> is there any kind of rule when to use references vs pointers? :p 23:00 < bridge> except when pointer should be possible to be null 23:00 < bridge> except when pointer can be null 23:01 < bridge> except when null pointer can be passed 23:04 < bridge> rly 23:04 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1307104002558791720/image.png?ex=673916f7&is=6737c577&hm=beb94aebcbef1f3b9544839923e25e5db576c3409ba803652eb568187f363ae6& 23:04 < bridge> do reports even do anything 23:04 < bridge> same msg as yday 23:07 < bridge> https://factorio.com/blog/post/fff-437 23:28 < bridge> almost as if something you can't see must be going on with those "same" messages 23:36 < bridge> if "client.com" in message: retujrn 23:36 < bridge> if "client.com" in message: return 23:36 < bridge> :leTroll: