00:00 <+bridge> wtf 00:00 <+bridge> im nub 00:00 <+bridge> very nub 00:00 <+bridge> stop programming 00:00 <+bridge> lets learn latin 00:01 <+bridge> You either pass it from parameters or you keep your own, that's how it works 00:02 <+bridge> client components e.g. each keep their own `m_pClient` 00:02 <+bridge> @Learath2 so, if im in my sweety class and i wanna use m_pClient->m_Chat.AddLine(int ClientID, int Team, const char *pLine) without pass m_pClient by params of my function how can i do that 00:03 <+bridge> what u mean "keep your own" 00:04 <+bridge> Your class should be initialized by another class that already has a pointer to CGameClient, which it can pass to you in the constructor of your class, which you can store in your class 00:05 <+bridge> ok this was my idea, but I wanted to put as many things as possible in the constructor, so where do you recommend me to instantiate my class? 00:05 <+bridge> gamecore, client or where 00:05 <+bridge> What is your class even? 00:06 <+bridge> game>client>kehub/ 00:06 <+bridge> It all depends on context. When should your class be created? 00:06 <+bridge> God object :troll: 00:07 <+bridge> and if then after instantiating it where I want and passing it what I want I want to call a method of my class from CChat::OnMessage or idk and then I still want to use the reference to my original object, how does it get to the CChat class? IT'S ALL SO CONFUSED HELP 00:08 <+bridge> Then CChat needs a reference to your object through some means 00:08 <+bridge> Look there is no hidden magic or anything, if you want a pointer you need to get it there somehow, usually during initialization or for one offs usually in function parameters 00:08 <+bridge> right now I use it as a util that I create whenever I need it and call the method, but now I want to do it better to implement functions that remain in the background called in a loop to check something I don't know yet, for example if a player he is so close to you he writes him to leave in chat 00:10 <+bridge> Normally I would do this in the constructor of the class, but I never see anywhere an object created by passing it parameters, although I see Inits wrapped with parameters never passed... 00:10 <+bridge> I think what you are looking for is kinda like a component, components already have hooks everywhere so you don't have to think so much about where to initialize/call stuff 00:10 <+bridge> I know how things work, I've been programming for a long time, but CPP always manages to confuse me 😢 00:11 <+bridge> i saw this too but what should i do? 00:11 <+bridge> Then do it in Init? It's heritage from the porting of teeworlds from C to C++. 00:12 <+bridge> Make a class that inherits from `CComponent`, override one of the many fine hooks you can find in `src/game/client.component.h` to do your things, register your component with all the other components 00:13 <+bridge> gg 00:13 <+bridge> hm wrong chat 00:14 <+bridge> lo avevo fatto inizialmente, ma essendo che ereditava tutti i metodi tipo onRender e altri mi sembrava brutto 00:14 <+bridge> I had done it initially, but since it inherits all methods like onRender and others, it seemed ugly to me 00:14 <+bridge> xd 00:14 <+bridge> They are empty by default, you only have to override the ones you want to change 00:14 <+bridge> sexy 00:15 <+bridge> I'll go practice alcoholism, have fun making what I suspect is a bot that we'll have to ban you for 👋 00:15 <+bridge> so my class can be considered a component? 00:15 <+bridge> ahahaha no no my man 00:16 <+bridge> It can be one, I don't see why not. Even if it's not you don't seem to know how best to hook into our code so it's best you stick to a component where all that stuff is already thought about for you 00:16 <+bridge> I want to make a serious client with nice graphics and some interesting features, but I want to fully understand the code 00:17 <+bridge> "components" are loosely defined anyway, most anything can be a component 00:17 <+bridge> they usually are rendered, but that's not strictly necessary I guess 00:17 <+bridge> today i managed to apply the ddrace function when you finished a map without going into it for kog servers 00:19 <+bridge> question, is it legit for you to convert bees that are not mine made with post to bees of mine with get because they are more convenient? haha 00:19 <+bridge> you look like a studied mind, don't drink, it hurts 00:22 <+bridge> The aim is to unstudy the mind :Prayge: 00:22 <+bridge> happy you haha 00:22 <+bridge> if you're happy... haha 00:23 <+bridge> 'Member access into incomplete type' beautiful 00:32 <+bridge> @Learath2 why the fuck does everyone access m_pClient which is protected as they want while it tells me that I don't have permission to access the variable? >: 00:33 <+bridge> They either access their own copy, (a lot of classes have m_pClient pointers of their own) or they are friends with the class they access it thru 00:35 <+bridge> but what role do you have on this customer? how do you know all these things haha 00:36 <+bridge> by "their copy" what do you mean? shouldn't they be pointing the variable at something? 00:36 <+bridge> https://cdn.discordapp.com/attachments/293493549758939136/1106711422739681361/image.png 00:36 <+bridge> I only spent a decade of my youth learning C++ and contributing to this codebase 00:37 <+bridge> oh 00:37 <+bridge> very nice 00:37 <+bridge> a chad 00:37 <+bridge> Those are the classes that have a pointer to m_pClient, thus they can all access m_pClient as every class can access all their members 00:38 <+bridge> so do you recommend me to make my own copy of m_pClient? 00:38 <+bridge> No, no, no, very not recommended 00:39 <+bridge> what? you are a giga chad man the most powerful man in the world 00:39 <+bridge> I recommend you just make a component, you are clearly lost, it's much easier with all the boilerplate 00:39 <+bridge> :gigachad: 00:39 <+bridge> eh eh the problem is that im retarded 00:40 <+bridge> Doubtful, you did manage to get it compiling 00:40 <+bridge> class KeHub : public CComponent{ 00:40 <+bridge> public: 00:40 <+bridge> 00:40 <+bridge> 00:40 <+bridge> m_pClient-> //error there 00:40 <+bridge> 00:40 <+bridge> 00:40 <+bridge> (obv in 2 different files) 00:41 <+bridge> I saw I don't remember where a very long list of components, do you intend to register it there? 00:41 <+bridge> i might be stupid but are you adding #include ? 00:41 <+bridge> If you took a closer look at CComponent, you'll notice that while m_pClient is protected GameServer() isn't 00:42 <+bridge> its different 00:42 <+bridge> o 00:43 <+bridge> GameClient() sorry, brain slow 00:43 <+bridge> the problem I think is that the variable is protected 00:43 <+bridge> https://cdn.discordapp.com/attachments/293493549758939136/1106713162746712146/image.png 00:43 <+bridge> Oh, that's not the issue at all 00:43 <+bridge> in fact, I randomly tried to put GameClient as a friend of my class but it didn't work (I didn't quite understand how or when to use friend xd) 00:43 <+bridge> sad 00:45 <+bridge> Inside your component you need to be including `game/client/gameclient.h` as the compiler says it doesn't know what a `CGameClient` is so it can't dereference it 00:46 <+bridge> AAAAAAAAAAAAAAAAAAAAA I THOUGHT IT WAS RECURCIVE 00:46 <+bridge> the include 00:46 <+bridge> lmao 00:47 <+bridge> component.h doesn't include it either 00:47 <+bridge> but actually it would be a disaster to inherit the imports hahaha 00:47 <+bridge> right, but there was an init, doesn't matter im stupid 00:47 <+bridge> i love u 00:47 <+bridge> ❤️ 00:48 <+bridge> i'm actually learning c++ haha 00:49 <+bridge> same 00:49 <+bridge> im rly bad at it but ive made a few good changes to this gamr 00:49 <+bridge> im rly bad at it but ive made a few good changes to this game 00:49 <+bridge> me too xd 00:49 <+bridge> I still suggest you grab a book rather than mess around with the game, but y'all do y'all 00:50 <+bridge> what is a book? 00:50 <+bridge> It's like a collection of written tutorials from a bygone era 00:50 <+bridge> ohhh 00:50 <+bridge> if they are not made by an Indian I don't care 00:51 <+bridge> They even used to print them onto thin sheets of bleached carbon using "ink" and bound them together. Truly fascinating stuff 00:52 <+bridge> sexy 00:52 <+bridge> can i zoom on it? 00:53 <+bridge> No, but they used to have this ancient invention called a "magnifying glass", it used a specially cut piece of glass to optically enlarge things 00:53 <+bridge> why not fuck! little accessibility for the most needy, what a monstrosity this is 00:54 <+bridge> why not fuck! no accessibility for the most needy, what a monstrosity this is 00:54 <+bridge> wtf dark magik 00:55 <+bridge> its actually more fun to mess with something already made than it is to start from scratch 00:55 <+bridge> my studing style 00:56 <+bridge> my study style 00:56 <+bridge> It's much more fun to mess with it when your tools aren't working against you and the very language you try to express your ideas in isn't alien 00:56 <+bridge> But that's just me, as I said, you do you 😛 00:56 <+bridge> :trollet: 00:56 <+bridge> :f3: 00:56 <+bridge> exactly 00:57 <+bridge> who is a kog player there? 00:57 <+bridge> i grew up using scratch lolol 00:58 <+bridge> Visual programming languages are I guess good places to mess around with stuff 00:58 <+bridge> :cammostripes: 00:58 <+bridge> teaching basic programming i make students use flowgorithm, really easy 00:59 <+bridge> You teach programming?? 00:59 <+bridge> base 00:59 <+bridge> im 18 01:00 <+bridge> basic 01:00 <+bridge> it really is fun 01:01 <+bridge> m_aInputData 😠 01:01 <+bridge> Idk if microsoft still offers it but Kodu Game Lab was so much fun 01:01 <+bridge> where does this bastard come from how do i import it to my class >:(>:(>:(>:(>:( 01:01 <+bridge> OHHHHH 01:02 <+bridge> crazy 01:02 <+bridge> I'm all out of spoilers for tonight. You'll have to figure that one out for yourself 😛 01:02 <+bridge> ❤️ 01:02 <+bridge> how old are u? 01:03 <+bridge> 25 01:03 <+bridge> if in two days I don't understand it I'll come back and ask you haha 01:03 <+bridge> ok then getting married is legit 01:03 <+bridge> You can ask tomorrow too. Spoilers ought to be refilled by then 01:04 <+bridge> did you go or are you going to university? 01:04 <+bridge> But pro-tip. Now that you are in a component. Look at other components, if they do something similar to you, maybe you can steal some code 01:04 <+bridge> im only 20 wtf 01:04 <+bridge> I gotta try to figure it out, let's see how fast I give up 01:05 <+bridge> Going to uni rn. I'll finish my bachelors hopefully this september. I'm just an awful student, way too lazy 01:05 <+bridge> pro-tips are always still something xd 01:05 <+bridge> I'm an old man now 01:05 <+bridge> granny 01:05 <+bridge> i guess but at the same time, scratch is like, half programming, half animation software 01:06 <+bridge> I don't know what to do with my life 01:06 <+bridge> Kodu is like 30% programming 79% game 01:07 <+bridge> Don't ask me. I'm sitting alone in the dark having a drink while talking C++ for the maybe 100th weekend in a row. I clearly did something wrong 01:07 <+bridge> AHAHAHAHAH 01:07 <+bridge> If that's what you like, that's fine 01:08 <+bridge> No, that is most definitely not what I like 01:08 <+bridge> I'm really stupid, I've seen now that certain types of variables are structs, so CNetObj_PlayerInput rappresents the input 01:09 <+bridge> shit 01:09 <+bridge> I'M PAYING OFF DEBTS AND BILLS OF THE FIRST FIVE PEOPLE TO MESSAGE ME "ALIVE" 01:09 <+bridge> 01:09 <+bridge> 🌏💵💴💯💰https://t.me/VincentKadar 01:09 <+bridge> I'M PAYING OFF DEBTS AND BILLS OF THE FIRST FIVE PEOPLE TO MESSAGE ME "ALIVE" 01:09 <+bridge> 01:09 <+bridge> 🌏💵💴💯💰https://t.me/VincentKadar 01:10 <+bridge> Lol, spam gets deleted so fast 01:10 <+bridge> i saw that xd 01:10 <+bridge> anyways when i grow up and still have the will to, i want to program useless and niche interactive art ptojects 01:12 <+bridge> like? 01:13 <+bridge> Conventional wisdom suggests that this is a good idea. Apparently chasing your dreams brings with it much satisfaction 01:14 <+bridge> https://discord.com/channels/252358080522747904/252358080522747904/1102119337923461191 03:20 <+bridge> what was the link of ddnet source code wiki? 03:45 <+bridge> @Learath2 Can u fix xpanic, and add NX|city and NX|Lvl ? 04:12 <+bridge> !!! Enjoy the most profitable financial market (crypto market ) as you get 100% profit...and you can also make up to $100k or more in 3days send me a private message and ask me HOW on TG 04:12 <+bridge> 04:13 <+bridge> https://t.me/VincentKadar 07:58 <+bridge> mood 07:58 <+bridge> (@Learath2) 08:00 <+bridge> @kio\: you are not the Russian sedonya Ki-o guy right? 08:15 <+bridge> Xd 08:15 <+bridge> I'm beautiful italian 09:38 <+bridge> !!! Enjoy the most profitable financial market (crypto market ) as you get 100% profit...and you can also make up to $100k or more in 3days send me a private message and ask me HOW on TGhttps://t.me/VincentKadar 10:51 <+bridge> https://cdn.discordapp.com/attachments/293493549758939136/1106866389836365905/Fv8Oj2UWwAA2dm6.png 10:57 <+bridge> !!! Enjoy the most profitable financial market (crypto market ) as you get 100% profit...and you can also make up to $100k or more in 3days send me a private message and ask me HOW on TGhttps://t.me/VincentKadar 11:10 <+bridge> @Ryozuki help rustfmt dont work, even tho it builds fine, it happened out of nowhere, i changed completely unrelated code wtf 11:10 <+bridge> https://cdn.discordapp.com/attachments/293493549758939136/1106871024617795644/image.png 11:10 <+bridge> it builds fin? 11:10 <+bridge> mm are u on nightly 11:10 <+bridge> i blame it on a nightly bug then 11:10 <+bridge> ok 11:11 <+bridge> funny and weird xd 11:13 <+bridge> rustfmt 1.5.2-stable (84c898d 2023-04-16) 11:13 <+bridge> 11:13 <+bridge> even broken with stable 11:14 <+bridge> lmao 11:27 <+bridge> lol xd 11:27 <+bridge> report it 11:27 <+bridge> yeah i guess i have to 11:29 <+bridge> wtf is this just chatgpt but for github 12:33 <+bridge> @Jupeyy_Keks when https://github.com/ddnet/ddnet/issues/6552 12:34 <+bridge> i tried to replace the lock with new stuff, but i see its interwined with clang thread safety stuff so i got lazy 12:34 <+bridge> if we just used rust we would have that already 12:34 <+bridge> :AngryGrr: 12:38 <+bridge> june 12:39 <+bridge> then ubuntu 18 end of support 12:39 <+bridge> lets do a hackathon 12:39 <+bridge> c++20 hackathon ddnet 12:39 <+bridge> xdxd 12:40 <+bridge> i wouldn't even know what to replace tbh xd 12:41 <+bridge> except counting semaphore 12:41 <+bridge> too bad and sad that modules arent a thing 12:43 <+bridge> all issues are boring 12:45 <+bridge> #3411 12:45 <+bridge> https://cdn.discordapp.com/attachments/293493549758939136/1106895091521568868/overwatch_mercy_e3GywTY.webp 12:45 <+bridge> https://github.com/ddnet/ddnet/issues/3411 12:47 <+bridge> it's THE issue 12:49 <+bridge> https://tenor.com/view/the-meme-when-the-gif-21470450 12:51 <+bridge> @heinrich5991 pls look at https://github.com/ddnet/ddnet/pull/6560 sometime 12:52 <+bridge> @Jupeyy_Keks i should just bors r+ it :gigachad: 12:52 <+bridge> @Jupeyy_Keks since only u, me and robyt are active lately 12:52 <+bridge> we can taker over control of ddnet 12:52 <+bridge> 🙊 12:52 <+bridge> :evilpatrick: 12:52 <+bridge> no point in upgrading to cpp 20 until all the code is even cpp at all LOL 12:53 <+bridge> xd 12:53 <+bridge> lets convert ddnet to 3d game quick 12:53 <+bridge> 12:54 <+bridge> When deen isn't home 13:35 <+bridge> I mean you are allowed to, I intended to take a look at it this evening 13:38 <+bridge> insecurity hits hard 13:39 <+bridge> yes, that's basically how it works (this and the previous line) 13:40 <+bridge> rly? xD 13:40 <+bridge> yes 13:41 <+bridge> hm. maybe not completely? I can see myself getting out of my sleep if you do something very not aligned with my values ^^ 13:41 <+bridge> haha xd 13:42 <+bridge> i dont bors many stuff in fear a heinrich comes at night and haunts me 13:42 <+bridge> btw we should remove bors 13:42 <+bridge> @Ryozuki go #6558 13:42 <+bridge> https://github.com/ddnet/ddnet/issues/6558 13:42 <+bridge> We have an issue for it. I think we wanted to wait until github merge queue gets out of beta 13:42 <+bridge> @heinrich5991 just to know, does the svs still run on latest master? 13:42 <+bridge> try out how well it works 13:43 <+bridge> servers 13:43 <+bridge> Latest deployed master. It's not auto 13:43 <+bridge> explain pls 13:43 <+bridge> what does that mean xd 13:43 <+bridge> They don't run a tag 13:43 <+bridge> sometimes deen or someone else deploys a newer version 13:43 <+bridge> many ppl auto deploy 13:43 <+bridge> ah ok 13:43 <+bridge> so no need to worry if smth breaks 13:44 <+bridge> well, at some point it's going to be updated 13:44 <+bridge> if it's still broken then, it's bad 13:44 <+bridge> Wait, I think I see a bug 13:45 <+bridge> Nvm it's sane 😄 13:46 <+bridge> sane bug xd 13:46 <+bridge> i mean yeah 13:46 <+bridge> i meant more as in we have time to fix 13:46 <+bridge> yep 13:56 <+bridge> how can i use a cfg in a subfolder relative to the game or appdata location 13:56 <+bridge> binds/x.cfg 13:56 <+bridge> exec didn't seem to like that format 13:56 <+bridge> nvm 13:58 <+bridge> can i use relative paths in my cfgs 13:59 <+bridge> @Learath2 u won little human 14:02 <+bridge> can cfgs have arguments 14:06 <+bridge> Nope, but that sounds like a cute idea 14:06 <+bridge> m_aInputData 😠 here we go again 14:07 <+bridge> can we set/get variables 14:12 <+bridge> @Learath2 tell me 😢 14:13 <+bridge> changing map bg entities doesn't seem to work 14:13 <+bridge> what are u doing? 14:13 <+bridge> changing the entities map backgrounfd 14:14 <+bridge> there isn't a setting? 14:14 <+bridge> the setting doesn't update 14:14 <+bridge> someone chained lazy 14:15 <+bridge> not really good 14:49 <+bridge> @Learath2 however i tried last night's thing and anything i do calling m_pClient usually crashes the game 14:50 <+bridge> You should be doing things inside hooks usually 14:51 <+bridge> You are probably using something before your component is registered 14:51 <+bridge> maybe 14:51 <+bridge> how i must register it 14:52 <+bridge> it extend ccomponent already, where i must tell to the client my juicy class is a component? 14:53 <+bridge> a simple line 😦 14:53 <+bridge> https://cdn.discordapp.com/attachments/293493549758939136/1106927267214532758/image.png 14:55 <+bridge> Where do you call this function? 14:55 <+bridge> from my class 14:55 <+bridge> https://cdn.discordapp.com/attachments/293493549758939136/1106927733130416158/image.png 14:56 <+bridge> That's not a call, that's a declaration 14:56 <+bridge> i know xd 14:57 <+bridge> inside test i call it 14:57 <+bridge> You call test inside test? 14:57 <+bridge> You don't, I can see it's definition above 14:57 <+bridge> https://cdn.discordapp.com/attachments/293493549758939136/1106928309197082624/image.png 14:58 <+bridge> old include 14:58 <+bridge> Where is this function you've showed the declaration and definition of called? 14:58 <+bridge> Where do you do test() 14:59 <+bridge> oh the call 14:59 <+bridge> inside controls because i was trying other function before 15:00 <+bridge> Show me 15:00 <+bridge> https://cdn.discordapp.com/attachments/293493549758939136/1106928912983937024/image.png 15:00 <+bridge> Ok, this isn't how this works. You need to create your component where all the others are created and registered 15:03 <+bridge> 😠 15:03 <+bridge> https://cdn.discordapp.com/attachments/293493549758939136/1106929694324051968/image.png 15:03 <+bridge> here there is a giant list xd 15:03 <+bridge> but id think that is what i need 15:04 <+bridge> but i don't think that is what i need 15:06 <+bridge> class CGameClient : public IGameClient 15:06 <+bridge> { 15:06 <+bridge> public: 15:06 <+bridge> // all components 15:06 <+bridge> CKillMessages m_KillMessages; 15:06 <+bridge> CCamera m_Camera; 15:06 <+bridge> CChat m_Chat; 15:06 <+bridge> CMotd m_Motd; 15:06 <+bridge> CBroadcast m_Broadcast; 15:06 <+bridge> CGameConsole m_GameConsole; 15:06 <+bridge> CBinds m_Binds; 15:06 <+bridge> CParticles m_Particles; 15:06 <+bridge> CMenus m_Menus; 15:06 <+bridge> CSkins m_Skins; 15:06 <+bridge> CCountryFlags m_CountryFlags; 15:06 <+bridge> CFlow m_Flow; 15:06 <+bridge> CHud m_Hud; 15:06 <+bridge> CDebugHud m_DebugHud; 15:06 <+bridge> CControls m_Controls; 15:06 <+bridge> CEffects m_Effects; 15:06 <+bridge> CScoreboard m_Scoreboard; 15:06 <+bridge> CStatboard m_Statboard; 15:06 <+bridge> CSounds m_Sounds; 15:06 <+bridge> CEmoticon m_Emoticon; 15:06 <+bridge> CDamageInd m_DamageInd; 15:06 <+bridge> CVoting m_Voting; 15:07 <+bridge> CSpectator m_Spectator; 15:07 <+bridge> 15:07 <+bridge> CPlayers m_Players; 15:07 <+bridge> CNamePlates m_NamePlates; 15:07 <+bridge> CFreezeBars m_FreezeBars; 15:07 <+bridge> jesus christ 15:07 <+bridge> there u mean 15:07 <+bridge> yes add it there 15:07 <+bridge> errors letsgo 15:07 <+bridge> class CGameClient : public IGameClient 15:07 <+bridge> { 15:07 <+bridge> public: 15:07 <+bridge> // all components 15:08 <+bridge> https://cdn.discordapp.com/attachments/293493549758939136/1106931043942006834/image.png 15:12 <+bridge> i removed the includes from some old components that used my class 15:13 <+bridge> if i remove the include from game client header it gimme that m 15:13 <+bridge> https://cdn.discordapp.com/attachments/293493549758939136/1106932258931228772/image.png 15:13 <+bridge> wtf 15:14 <+bridge> wtf i added something sus in gamecore 15:15 <+bridge> ok seems to have fixed something now i see, last night was tarti i did something weird 15:16 <+bridge> prank 15:16 <+bridge> https://cdn.discordapp.com/attachments/293493549758939136/1106932920884670497/image.png 15:16 <+bridge> I was just wondering if it was possible to change the background color of a map to cycle night/day throughout the day? of course with a reload of the map at a fixed time every day. I could've put this in the mapping channel but I don't know if it's currently possible in ddnet 15:17 <+ChillerDragon> syncing animations is kinda broken atm 15:17 <+ChillerDragon> but having a 12h long animation that loops and changes background color is very easy to do 15:17 <+ChillerDragon> sync it to a time or have it work the same for all clients etc is tricky 15:18 <+bridge> oh yeah I see 15:18 <+bridge> would be cool tho 15:18 <+ChillerDragon> to have it synced to real life day time? 15:19 <+bridge> yes 15:19 <+ChillerDragon> also comes with timezone issues but yes would be cool 15:19 <+ChillerDragon> and would also allow to map clocks 15:19 <+ChillerDragon> but the whole sync think is totally messed up right now 15:20 <+ChillerDragon> #1318 #1610 #1214 #755 #879 15:20 < chillerbot> https://github.com/ddnet/ddnet/issues/1318 15:21 <+ChillerDragon> some of the issues tracking how bugged it is xd 15:21 <+ChillerDragon> ah shit the bot can only do one issue 15:22 <+bridge> çljaşljgsljdflhflkgherlskfjgşeldjzflkdjxlgdfhcblfjkbvkvjkbjagfdhbvıbhfzudhlbh 15:23 <+ChillerDragon> drunks 15:23 <+bridge> @Learath2 ok done but error for recursive include, how can i use CGameClient elements without import his class, something to do in gameclient.cpp because we declared my class there but what mhhh 15:24 <+bridge> Sorry, you'll have to wait for someone else. I'm busy 15:24 <+ChillerDragon> @kio send code repo 15:24 <+bridge> I once again beg of you to learn some C++ first 15:24 <+ChillerDragon> u can do a fake class definition like ``class MyClass;`` in the beggining or include guards etc 15:24 <+ChillerDragon> i need to see some of you code 15:25 <+ChillerDragon> is it pushed somewhere @kio to like github? 15:25 <+bridge> there's no need to forward declare 15:26 <+bridge> just use components as normal 15:27 <+ChillerDragon> what is the exact error message? 15:27 <+ChillerDragon> @Ewan do you know what he is doing? xd 15:27 <+bridge> he's just making a component 15:27 <+bridge> that's the thing he's struggling with 15:27 <+ChillerDragon> that much i also figured 15:27 <+ChillerDragon> but how can it trigger recursive includes 15:31 <+bridge> nooo my love 15:33 <+bridge> nop 15:34 <+bridge> second tee has no idea that the tema is in practice, it cant change teams anymore even if startline hasn't been crossed (or any tee teleported) 15:34 <+bridge> @kio 15:34 <+bridge> - in gameclient.h, add an #include do your kehub component and add an instance of your component to the public member defines in CGameClient. should look like this 15:34 <+bridge> ```cpp 15:34 <+bridge> class CGameClient : public IGameClient 15:34 <+bridge> { 15:34 <+bridge> public: 15:34 <+bridge> // all components 15:34 <+bridge> CKillMessages m_KillMessages; 15:34 <+bridge> CCamera m_Camera; 15:34 <+bridge> ... 15:34 <+bridge> KeHub m_KeHub; 15:34 <+bridge> ... 15:34 <+bridge> } 15:35 <+bridge> ``` 15:35 <+bridge> - in gameclient.cpp, find the `m_vpAll.insert` call in `CGameClient::OnConsoleInit()` and add your kehub instance in the same manner 15:35 <+bridge> ```cpp 15:35 <+bridge> m_vpAll.insert(m_vpAll.end(), {&m_Skins, 15:35 <+bridge> &m_CountryFlags, 15:35 <+bridge> &m_MapImages, 15:35 <+bridge> ... 15:35 <+bridge> &m_KeHub, 15:35 <+bridge> ... 15:35 <+bridge> 15:35 <+bridge> &m_GameConsole, 15:35 <+bridge> &m_MenuBackground}); 15:35 <+bridge> ``` 15:35 <+bridge> your component will now be initialized at the appropriate time, automatically 15:35 <+bridge> inherit CComponent methods to add functionality 15:35 <+bridge> the problem is that chillernigerian 15:35 <+bridge> https://cdn.discordapp.com/attachments/293493549758939136/1106937640206487672/image.png 15:35 <+bridge> https://cdn.discordapp.com/attachments/293493549758939136/1106937640445546618/image.png 15:35 <+bridge> maybe top left of tune zone or screen, whichever is on screen 15:35 <+bridge> @kio 15:35 <+bridge> - in gameclient.h, add an #include do your kehub component and add an instance of your component to the public member defines in CGameClient. should look like this 15:35 <+bridge> ```cpp 15:35 <+bridge> class CGameClient : public IGameClient 15:35 <+bridge> { 15:35 <+bridge> public: 15:35 <+bridge> // all components 15:35 <+bridge> CKillMessages m_KillMessages; 15:36 <+bridge> CCamera m_Camera; 15:36 <+ChillerDragon> bra ewan u kicked the bridge 15:36 < bridge> sorry 15:36 < bridge> academic often forms engineers, so we gotta teach them private stuff used by companies 15:36 < bridge> okk 15:37 < bridge> different error niow xd 15:37 <+ChillerDragon> what happens if you uncomment line 5? 15:37 < bridge> stupid discord messes up tabs vs. spaces while editing so when i send the message it expands the tabs too much and totally fucks the indentation 15:37 < bridge> so i had to edit to fix it 15:37 < bridge> or maybe the same 15:37 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1106938261965914172/image.png 15:37 < bridge> cursive include 15:37 <+ChillerDragon> this is super annoying w screenshots for me 15:38 < bridge> xd 15:38 <+ChillerDragon> if you send me the repo in current state i send u a pr with the fix 15:38 < bridge> you nick on github> 15:38 < bridge> yeah control theory really relies on matlab and simulink because it works and is efficient. Moreover, the control toolbox furnishes a lot of functions that people can use out of the box quite easily 15:38 < bridge> is this an intellisense error or a compile error @kio 15:38 < bridge> ? 15:38 <+ChillerDragon> my gh name is ChillerDragon 15:38 < bridge> compiler 15:38 < bridge> you are including CClient yes? 15:38 < bridge> ```C++ 15:38 < bridge> [build] In file included from D:/Projects/KeHub/src/game/client/components/kehub/test.cpp:7: 15:38 < bridge> [build] D:/Projects/KeHub/src/game/client/components/kehub/test.h:4:7: error: redefinition of 'class KeHub' 15:38 < bridge> [build] 4 | class KeHub : public CComponent{ 15:38 < bridge> [build] | ^~~~~ 15:38 < bridge> [build] In file included from D:/Projects/KeHub/src/game/client/gameclient.h:56, 15:38 < bridge> [build] from D:/Projects/KeHub/src/game/client/components/kehub/test.cpp:5: 15:38 < bridge> [build] D:/Projects/KeHub/src/game/client/components/kehub/test.h:4:7: note: previous definition of 'class KeHub' 15:38 < bridge> [build] 4 | class KeHub : public CComponent{ 15:38 < bridge> [build] | ^~~~~ 15:38 < bridge> [build] cc1plus.exe: note: unrecognized command-line option '-Wno-nullability-completeness' may have been intended to silence earlier diagnostics 15:38 < bridge> ``` 15:39 < bridge> yes 15:39 <+ChillerDragon> u missing a include guard 15:39 < bridge> now 15:39 <+ChillerDragon> in test.h 15:39 <+ChillerDragon> line 4 15:39 < bridge> please don't practice alone, it's dangerous 15:39 <+ChillerDragon> say ``#pragma once`` 15:39 < bridge> `#pragma once` should work 15:39 < bridge> jinx soda etc 15:39 <+ChillerDragon> xd 15:39 <+ChillerDragon> i ow u soda 15:39 <+ChillerDragon> how to type "ow" ? 15:39 < bridge> ow 15:39 <+ChillerDragon> no way 15:39 < bridge> they offer a quick way to have something updated every game frame or every game tick, so quite convenient even for non rendered stuff 15:40 < bridge> where? 15:40 <+ChillerDragon> line 4 15:40 <+ChillerDragon> test.h 15:40 <+ChillerDragon> line3 15:40 < bridge> but including the gameclient inside the cpp? 15:40 <+ChillerDragon> yes 15:41 <+ChillerDragon> after include 15:41 <+ChillerDragon> or before include 15:41 < bridge> mhhh 15:41 <+ChillerDragon> doesnt really matter 15:41 < bridge> yes yes 15:41 <+ChillerDragon> did it work? 15:42 < bridge> one sec i must remove some shitty line of code inside some classes xd 15:42 < bridge> chillerdragbot 15:42 < bridge> im practicing pumping iron 15:43 < bridge> compiled chillerdad 15:43 <+ChillerDragon> pog piog 15:43 <+ChillerDragon> very nice beautiful italian 15:44 < bridge> sorry, i don't use vscode 😦 15:44 < bridge> but now when I want to call a method of my component from another class how do I do it? I don't have to reinstantiate it right? 15:44 <+ChillerDragon> nah 15:44 <+ChillerDragon> its registered in the gameclient 15:44 <+ChillerDragon> u say m_pClient->m_KeHub.YourMethod() 15:44 <+ChillerDragon> or something like that 15:44 < bridge> oh 15:44 < bridge> sexy 15:44 < bridge> fuck 15:44 <+ChillerDragon> yes yey very 15:44 < bridge> really sexy 15:44 < bridge> mlmllm 15:44 < bridge> thx chiller daddy 15:45 <+ChillerDragon> UwU 15:45 < bridge> thx chillerdaddy 15:45 < bridge> uwu 15:45 < bridge> aw 15:45 < bridge> ChillerDragon: the folk questions your chillerbot 15:45 <+ChillerDragon> wot? 15:45 < bridge> come discord 15:45 <+ChillerDragon> xd 15:46 <+ChillerDragon> wha is "the folk" 15:46 <+ChillerDragon> and what does questions mean 15:46 <+ChillerDragon> and how to come discord 15:46 < bridge> the tw folk 15:46 < bridge> xd 15:46 <+ChillerDragon> send this "the folk" guy here 15:46 <+ChillerDragon> to irc side 15:46 <+ChillerDragon> unless its 0.6 related 15:46 <+ChillerDragon> then tell him to update client 15:47 < bridge> its about the ingame bot xd 15:48 <+ChillerDragon> multimap? 15:48 <+ChillerDragon> should i open tw? 15:48 < bridge> multeasymap* 15:48 < bridge> yeah, he wants to understand why the bot is even allowed 15:48 <+ChillerDragon> oh i cant answer that 15:48 < bridge> lmao 15:48 <+ChillerDragon> i have no legal permission 15:48 <+ChillerDragon> you as my lawyer should handle that 15:48 < bridge> i'd ban u ofc 15:48 <+ChillerDragon> u cant as my lawyer 15:49 < bridge> xD 15:49 <+ChillerDragon> make sure i do not get incriminated 15:55 < bridge> "the folk" guy is here. 15:55 < bridge> What's chillerbot-zx purpose? 15:55 < bridge> to exist? to pass butter? is he a test for a TAS? 15:55 <+ChillerDragon> chillerbot-zx on Multeasymap is there to track stats 15:55 <+ChillerDragon> to give the block community there a ranking 15:56 <+ChillerDragon> you can try !top3 and !stats and !rank etc 15:56 <+ChillerDragon> it counts kills based on last toucher when a tee dies in freeze but only in the block area 15:56 < bridge> why not do it server side? 15:57 <+ChillerDragon> i do not have ssh access to ddnet servers 15:57 <+ChillerDragon> yet 15:57 <+ChillerDragon> axaxax 15:57 <+ChillerDragon> but you can checkout my servers where it is done serer side 15:57 < bridge> imagine supporting blocking on multeasy 15:57 < bridge> why chillerbot isn't a spectator 15:57 <+ChillerDragon> i do not like spec idk 15:58 <+ChillerDragon> imo spec should be removed from ddnet 15:58 < bridge> wut? why? 15:58 <+ChillerDragon> i do not like it 15:59 <+ChillerDragon> its almost as bad as solo tiles or /team 16:00 < bridge> just say you dont like playing ddnet 16:00 <+ChillerDragon> i like ddnet 16:00 < bridge> but those are like, integral parts to gameplay LOL 16:00 <+ChillerDragon> no 16:00 < bridge> like wtf did solo tiles do wrong 16:00 <+ChillerDragon> they hide tees 16:00 <+ChillerDragon> i dislike things that hide tees 16:00 < bridge> krill issue 16:00 <+ChillerDragon> i like tees 16:01 < bridge> /showothers 16:01 <+ChillerDragon> its also about them being untouchable 16:01 <+ChillerDragon> gotta touch those tees 16:02 <+ChillerDragon> @SSD pls do not report me to ddnet admins thanks. i think they havent figured out im doing it yet 16:03 < bridge> If chillerbot will be a spectator, he won't take up space in a 63 player server 16:03 < bridge> and will still be able to send messages. 16:03 < bridge> ok 16:03 <+ChillerDragon> he will 16:03 <+ChillerDragon> specs also take slots 16:04 <+ChillerDragon> sadly from the client side i can not avoid taking a slot and also i feel a bit bad since the server is full most of the time 16:04 <+ChillerDragon> the block community should really move on a dedicated server instead of mixing in with racers but i can not influence that 16:06 < bridge> maybe i am stupid but here. 16:06 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1106945468136706108/image.png 16:06 <+ChillerDragon> still taking a slot 16:06 <+ChillerDragon> not in the scoreboard list 16:06 <+ChillerDragon> but the server is still filling up 16:06 <+ChillerDragon> he has a full CPlayer instance and if you check the master server you can see a slot is used 16:07 < bridge> 😦 16:07 <+ChillerDragon> yes thats sad 16:07 <+ChillerDragon> in vanilla it kinda works tho 16:07 <+ChillerDragon> there are 64 slots 16:07 <+ChillerDragon> and 16 in game slots 16:07 <+ChillerDragon> so there you can use spec slots for free 16:24 < bridge> I was trying to feed what I got from `tfdata` to residue. I could avoid the cell array by using the 'v' flag, but then I need to do it 4 times for each member in this matrix 16:24 < bridge> `cellfun` with two arguments worked very well 16:33 < bridge> russian? 16:34 <+ChillerDragon> da 16:42 < bridge> @Learath2 16:42 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1106954711405432943/RDT_20230513_1642126149009377324088923.jpg 16:44 < bridge> You know what? I'll allow it. Fizzbuzz is a good way to eliminate a lot of useless people 16:50 < bridge> wtf is fizzbuzz 16:56 <+ChillerDragon> fizzbuzz is a trap 16:56 <+ChillerDragon> it gets me at least once a month xd 16:56 <+ChillerDragon> its a question that kinda traps you into ordering your if statements in the wrong order as not not the most specific one first and then it breaks your brain 16:59 < bridge> Print numbers from 1 to 100, except; for numbers divisible by 3 print fizz, for numbers divisible by 5 print buzz, for numbers divisible by both print fizzbuzz 16:59 < bridge> lemme try 17:00 < bridge> Put your answer in a spoiler tag incase someone else wants to try 17:01 < bridge> ;) 17:01 < bridge> is that a legit application question? 17:01 < bridge> sounds bit too easy xD 17:02 < bridge> I've heard it being asked, from atleast a couple people. But no way to know if they actually do ask it 17:02 < bridge> It is just a tad trickier than it sounds, just enough to confuse someone new 17:02 < bridge> the problem is, the question is ambigious 17:03 < bridge> u could say if its divisible by 3 and 5 it should only print fizzbuzz 17:03 < bridge> but maybe it should print all 3 stuff 17:04 < bridge> jupstar failed 17:04 < bridge> It's probably just the way I quickly wrote it on phone. I specifically want the output `1 2 fizz 4 buzz 6 7 8 fizz buzz 11 fizz 13 14 fizzbuzz...` 17:04 < bridge> :troll: 17:04 < bridge> It's probably just the way I quickly wrote it on phone. I specifically want the output `1 2 fizz 4 buzz fizz 7 8 fizz buzz 11 fizz 13 14 fizzbuzz...` 17:05 < bridge> but in fact often i school i had the feeling that math questions were not correctly understanable 17:05 < bridge> || test || 17:05 < bridge> but the teachers were either too stupid or hated me xd 17:05 < bridge> Definitely. I argued with my math teacher all the time about her ambiguous questions 17:05 < bridge> ||```#include 17:05 < bridge> 17:05 < bridge> int 17:05 < bridge> main(int argc, char *argv[]) 17:05 < bridge> { 17:05 < bridge> int i, p; 17:05 < bridge> 17:05 < bridge> for (i = 1; i <= 100; i++) { 17:05 < bridge> // printf("(i:%d) ", i); 17:05 < bridge> p = 0; 17:05 < bridge> if (i % 3 == 0) 17:05 < bridge> p = 1, printf("fizz"); 17:05 < bridge> if (i % 5 == 0) 17:05 < bridge> p = 1, printf("buzz"); 17:06 < bridge> if (!p) 17:06 < bridge> printf("%d", i); 17:06 < bridge> printf("\n"); 17:06 < bridge> } 17:06 < bridge> } 17:06 < bridge> ```|| i hope this gets spoiler proofed 17:06 < bridge> :YEP: How convenient, my system is basically those if statements, but in Python steroid 17:06 < bridge> c99? 17:07 < bridge> if you're asking about me yes, it's c89 also 17:07 < bridge> im not home or i would show u the rusty way, using iterators ofc 17:07 < bridge> rust teacher 17:08 < bridge> when rust interviews at Google? :kek: 17:08 < bridge> Forgot to return int from main, unhired 17:08 < bridge> its ub? 17:08 < bridge> i think it works 17:08 < bridge> you didn't specified exit value 17:09 < bridge> it does print what you asked for 😉 17:09 < bridge> :justatest: no end for the loop 17:09 < bridge> well the convention is 0 for success 17:09 < bridge> if the program didnt fail 17:09 < bridge> 🤓 17:09 < bridge> You should have written `void main(int argc, char **argv)` then 17:09 < bridge> Unhirable 17:09 < bridge> the actual problem is that I said it was c89 17:09 < bridge> fired 17:10 < bridge> using c is a rise to fire in my book too 17:10 < bridge> :gigachad: 17:10 < bridge> using c is a reasone to fire in my book too 17:10 < bridge> shit mobile 17:10 < bridge> yay no returns :gigachad: 17:10 < bridge> what would that return btw? 17:10 < bridge> it's voided 17:10 < bridge> it won't 17:10 < bridge> what would that return btw? i mean as an exit status 17:10 < bridge> @Learath2 c89 doesnt have a noreturn hint/marker right? 17:11 < bridge> || 17:11 < bridge> ```c 17:11 < bridge> int test 17:11 < bridge> ``` 17:11 < bridge> || 17:11 < bridge> in rust its ! 17:11 < bridge> Up to the implementation at that point 17:11 < bridge> Mfw spoiler broken on mobile 17:11 < bridge> weird spoiler magic 17:12 < bridge> You have to tap on the left side to reveal 🙃 17:12 < bridge> Couldn't I just sell it for c99 and we're good? 17:13 < bridge> man, at least post the r/programmerhumor link... 17:13 < bridge> @Learath2 https://www.reddit.com/r/mathmemes/comments/13geq98/engineers_really_be_like_that/ 17:14 < bridge> LOL 17:14 < bridge> why 17:14 < bridge> even chairn's calling you out 17:14 < bridge> ye my memes are from leddit 17:14 < bridge> some from twitter 17:14 < bridge> :justatest: reddit 17:14 < bridge> :greenthing: 17:14 < bridge> i should get into 4chan 17:14 < bridge> my memes are just from whatever i find the funniest 17:14 < bridge> twitter, source of evil 17:14 < bridge> :justatest: 17:15 < bridge> Oh so nobody gets those memes in Discord? cuz I do from you all 17:15 < bridge> because that's what people do to not get credit of something they didn't do. Moreover, people might be interesting in knowing the original author or to read more comment on that 17:16 < bridge> Ye, like we all need to credit the creator of the memes, but due to **the fact, that we don't know where it came from in the first place, it's not relevant to bother** 17:17 < bridge> Twitter stole from Reddit, Reddit stole for 4chan, 4chan stole from Facebook, Facebook stole from Google, etc 17:17 < bridge> i dont think anyone ever thought i did a meme here 17:17 < bridge> also reddit isnt the original either 17:17 < bridge> ill keep putting the images 17:17 < bridge> im a madman 17:18 < bridge> Who's insane enough to put a license to a meme? :kekW: 17:18 < bridge> || ```c 17:18 < bridge> #include 17:18 < bridge> 17:18 < bridge> int 17:18 < bridge> main() 17:18 < bridge> { 17:18 < bridge> int n, i; 17:18 < bridge> for (n = 1; n < 101; n++) { 17:18 < bridge> if (n % 3 == 0) { 17:18 < bridge> i = 1; 17:18 < bridge> printf("fizz"); 17:18 < bridge> } 17:18 < bridge> if (n % 5 == 0) { 17:18 < bridge> i = 1; 17:18 < bridge> printf("buzz"); 17:18 < bridge> } 17:18 < bridge> if (i == 1) 17:18 < bridge> printf("\n"); 17:18 < bridge> else 17:18 < bridge> printf("%d\n", n); 17:18 < bridge> i = 0; 17:18 < bridge> } 17:18 < bridge> } 17:18 < bridge> ```|| 17:19 < bridge> and discord people stole from all those. Isn't that hard to paste a link 17:19 < bridge> Yeah, it's an endless cycle of identification 17:20 < bridge> It's like an open library, but even the library stole stuff 17:21 < bridge> open library as in an actual book library 17:21 < bridge> then just break the cycle 17:21 < bridge> :YEP: 17:24 < bridge> mfw this guy did the same thing :] 17:24 < bridge> || 17:24 < bridge> ```c 17:24 < bridge> #include 17:24 < bridge> 17:24 < bridge> int main(void) 17:24 < bridge> { 17:24 < bridge> for(int i = 1; i <= 100; i++) { 17:24 < bridge> if(i % 3 && i % 5) 17:24 < bridge> printf("%d", i); 17:24 < bridge> else 17:24 < bridge> printf("%s%s", i % 3 ? "" : "fizz", i % 5 ? "" : "buzz"); 17:24 < bridge> putchar('\n'); 17:24 < bridge> } 17:24 < bridge> 17:24 < bridge> return 0; 17:24 < bridge> } 17:24 < bridge> ``` 17:24 < bridge> || 17:24 < bridge> Here is my wasteful one, but it's so pretty 😛 17:25 < bridge> i love fizzbuzz 17:26 < bridge> In C an empty argument list actually means any amount of arguments, while your declaration of main maaaybe allowed under some implementations I'm not sure if it's allowed under standard C 😄 17:27 < bridge> Oh, none asked for the program to be standards compliant! ("a program that outputs...") (Rust implementations would be impossible in that case) 17:28 < bridge> never say impossible with Rust, when Ryo is around 17:28 < bridge> :justatest: 17:29 < bridge> he'll get mad or sad 17:30 < bridge> i remember watching a coding video about how to avoid too much nesting into your code, and one of them was to rearrange your if statements in your functions so that it returns the output you want after a long filter system 17:30 < bridge> like have all the falses come first before the true 17:31 < bridge> Ye, any code line which triggers with "else" can go first, but also the if statements can also return, so you don't have to use "else" if the if statement shouldn't continue 17:32 < bridge> Ye, any code line which triggers with "else" can go first, but also the **if statements** can also return, so you don't have to use "else" if the **if statement** shouldn't continue 17:36 < bridge> ```#include 17:36 < bridge> 17:36 < bridge> int main(void) 17:36 < bridge> { 17:36 < bridge> for(int i = 1; i <= 100; i++) { 17:36 < bridge> if !(i % 3 && i % 5) 17:36 < bridge> printf("%s%s", i % 3 ? "" : "fizz", i % 5 ? "" : "buzz"); 17:36 < bridge> return 17:36 < bridge> printf("%d", i); 17:36 < bridge> putchar('\n'); 17:37 < bridge> } 17:37 < bridge> return 0; 17:37 < bridge> }``` 17:37 < bridge> idk if it's correct or not 17:37 < bridge> I just assume it is 17:37 < bridge> || 17:37 < bridge> ```c 17:37 < bridge> #include 17:37 < bridge> int main(void){for(int i=1;i<101;puts(i++%5?"":"buzz"))printf(i%3?i%5?"%d":"":"fizz",i);} 17:37 < bridge> ``` 17:37 < bridge> || 17:37 < bridge> :justatest: 17:37 < bridge> L6 that ! can't be outside the (, this isn't python or rust 😛 17:37 < bridge> ||```#include 17:37 < bridge> 17:37 < bridge> int main(void) { 17:37 < bridge> int i, d3, d5; 17:37 < bridge> 17:37 < bridge> for (i = 1; i <= 100; i++) { 17:37 < bridge> if ((d3 = i % 3) && (d5 = i % 5)) 17:38 < bridge> printf("%d", i); 17:38 < bridge> else 17:38 < bridge> printf("%s%s", 17:38 < bridge> d3 ? "" : "fizz", 17:38 < bridge> d5 ? "" : "buzz"); 17:38 < bridge> putchar('\n'); 17:38 < bridge> } 17:38 < bridge> 17:38 < bridge> return 0; 17:38 < bridge> } 17:38 < bridge> ```|| 17:38 < bridge> xd 17:38 < bridge> you also forgot a bracket so it will always return 17:38 < bridge> ah shit 17:38 < bridge> I'm fired I guess :gigachad: 17:39 < bridge> I checked btw, it seems gcc and clang are smart enough to optimize mine to this too 17:39 < bridge> Only hired ppl get fired 17:39 < bridge> I can be hired as a Python dev 17:40 < bridge> but only for Python xd 17:40 < bridge> ```python 17:40 < bridge> import fizzbuzz 17:40 < bridge> 17:40 < bridge> fizzbuzz.fizzbuzz()``` 17:40 < bridge> || 17:40 < bridge> ```c 17:40 < bridge> #include 17:40 < bridge> 17:40 < bridge> int main(void) 17:40 < bridge> { 17:40 < bridge> for(int i = 1; i <= 100; i++) { 17:40 < bridge> if(i % 3 && i % 5) 17:40 < bridge> printf("%d", i); 17:40 < bridge> else 17:40 < bridge> printf("%s%s", i % 3 ? "" : "fizz", i % 5 ? "" : "buzz"); 17:40 < bridge> putchar('\n'); 17:40 < bridge> makeMeABurger(); 17:40 < bridge> } 17:40 < bridge> 17:40 < bridge> return 0; 17:40 < bridge> } 17:40 < bridge> ``` 17:40 < bridge> || 17:40 < bridge> heres my edit 17:41 < bridge> makeMeABurger() function, insane performance increase :Pog: 17:42 < bridge> it prevents a rare bug called hunger 17:42 < bridge> oh shit, lemme recreate the fizz fuzz in godot 4 :kek: 17:42 < bridge> `warning: implicit declaration of function 'makeMeABurger'` 17:42 < bridge> `undefined reference to 'makeMeABurger` 17:42 < bridge> `collect: error: ld returned 1 exit status` 17:42 < bridge> anyone in here done much ipc? 17:43 < bridge> i want that fucking burger omg 17:43 < bridge> i'm trying to figure out the most efficient way to send a framebuffer between processes in a portable way 17:43 < bridge> e.g. no pointers 17:43 < bridge> 'makeMeABurger' reference cannot be found at 17:43 < bridge> how portable? 17:43 < bridge> i don't wanna send huge uchar arrays back and forth but at the same time any kind of optimization would be really expensive 17:44 < bridge> can't use pointers or handles to particular graphics library framebuffer types 17:45 < bridge> Could you use a pipe and send all that through that? 17:45 < bridge> good 17:45 < bridge> now make ddnet single line 17:45 < bridge> :giga_chad: 17:45 < bridge> that might be a good idea yeah 17:45 < bridge> i wonder if com has a pipe mechanism or if it deems itself too abstract for that lol 17:46 < bridge> cuz that's what im using atm 17:46 < bridge> what's com? 17:46 < bridge> Shm would pretty much be your fastest option 17:46 < bridge> component object model 17:46 < bridge> wait how does it return, when it's voided? 17:47 < bridge> it's a microsoft binary standard that defines a way for processes to communicate using interfaces & instances 17:47 < bridge> what im using atm 17:47 < bridge> `int main` 17:47 < bridge> it makes me a burger 17:47 < bridge> how hard is it to grasp 17:47 < bridge> oh it's inside the variable 17:47 < bridge> gotcha 17:47 < bridge> i wouldn't call that pretty, it's less readable and you test some conditions twice 17:47 < bridge> You simply have wrong opinions, it's ok 17:49 < bridge> adding void in the parameter list just tells that there's no parameters 17:49 < bridge> ah yes, the classical opinions can be wrong 😄 17:50 < bridge> that also might be a good idea but i'd need a file surrogate 17:50 < bridge> || 17:50 < bridge> ```c 17:50 < bridge> main(){for(;i<101;puts(i++%5?"":"buzz"))printf(i%3?i%5?"%d":"":"fizz",i);} 17:50 < bridge> ``` 17:50 < bridge> || 17:50 < bridge> In Ansi C it can get shorter I guess 17:50 < bridge> my opinions are always wrong but i stand by them anyways 17:51 < bridge> that does not sound right 17:51 < bridge> @Ryozuki write one in rust so i know how painful itd look 17:52 < bridge> this won't work 17:52 < bridge> It'd look about the same as zogtib's first attempt in C 17:52 < bridge> i is not declared 17:52 < bridge> Ansi c implicit declarations 17:52 < bridge> tfd 17:52 < bridge> tf 17:53 < bridge> what about return type on main 17:53 < bridge> implicit int 17:53 < bridge> never works when i do it 17:53 < bridge> bleh 17:54 < bridge> oh, I forgot a character there sorry 17:54 < bridge> yeh, forgot , 17:55 < bridge> No forgot to add i to the arguments of main 😄 17:55 < bridge> `main(i){for(;i<101;puts(i++%5?"":"buzz"))printf(i%3?i%5?"%d":"":"fizz",i);}` 17:55 < bridge> best solution i've found yet: https://codegolf.stackexchange.com/a/75284 17:55 < bridge> ||`main(i){for(;i<101;puts(i++%5?"":"buzz"))printf(i%3?i%5?"%d":"":"fizz",i);}`|| 17:55 < bridge> code style is in depression wtf is that XD 17:55 < bridge> you need a comma between puts and printf 17:55 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1106973110948872222/image.png 17:56 < bridge> fizzfuzz in godot :gigachad: 17:56 < bridge> iii don't think I do 17:56 < bridge> and im not even sure your code doesn't involve UB due to i++ being in the same statement as printf 17:56 < bridge> oh 17:56 < bridge> || 17:56 < bridge> 17:56 < bridge> ```rs 17:56 < bridge> 17:56 < bridge> fn main() 17:56 < bridge> { 17:56 < bridge> (1..=100).for_each(|this_is_the_current_number| { 17:56 < bridge> let mut is_divisible_by_3 = false; 17:56 < bridge> let mut this_number_will_decrease_to_check_if_the_current_number_is_in_the_zero_modulo_class_of_3 = this_is_the_current_number; 17:56 < bridge> while this_number_will_decrease_to_check_if_the_current_number_is_in_the_zero_modulo_class_of_3 > 0 { 17:56 < bridge> this_number_will_decrease_to_check_if_the_current_number_is_in_the_zero_modulo_class_of_3 -= 3; 17:56 < bridge> } 17:56 < bridge> if this_number_will_decrease_to_check_if_the_current_number_is_in_the_zero_modulo_class_of_3 == 0 { 17:56 < bridge> is_divisible_by_3 = true; 17:56 < bridge> } 17:57 < bridge> 17:57 < bridge> let mut is_divisible_by_5 = false; 17:57 < bridge> let mut this_number_will_decrease_to_check_if_the_current_number_is_in_the_zero_modulo_class_of_5 = this_is_the_current_number; 17:57 < bridge> while this_number_will_decrease_to_check_if_the_current_number_is_in_the_zero_modulo_class_of_5 > 0 { 17:57 < bridge> this_number_will_decrease_to_check_if_the_current_number_is_in_the_zero_modulo_class_of_5 -= 5; 17:57 < bridge> } 17:57 < bridge> if this_number_will_decrease_to_check_if_the_current_number_is_in_the_zero_modulo_class_of_5 == 0 { 17:57 < bridge> is_divisible_by_5 = true; 17:57 < bridge> } 17:57 < bridge> 17:57 < bridge> if is_divisible_by_3 || is_divisible_by_5 { 17:57 < bridge> if is_divisible_by_3 { 17:57 < bridge> print!("Fizz") 17:57 < bridge> } 17:57 < bridge> if is_divisible_by_5 { 17:57 < bridge> print!("Buzz") 17:57 < bridge> ok, i get it now 17:57 < bridge> fuck xd 17:57 < bridge> parenthesis messed me 17:57 < bridge> 17:57 < bridge> spoiled 17:57 < bridge> || 17:57 < bridge> 17:57 < bridge> ```rs 17:57 < bridge> 17:57 < bridge> fn main() 17:58 < bridge> if x.is_odd_or_even() { 17:58 < bridge> print!("\n"); 17:58 < bridge> } 17:59 < bridge> lynn is the one who stole it if anything, that's an ancient answer from like back when ansi c was actually a thing 😄 18:01 < bridge> you have won codegolf 18:04 < bridge> i made it in rust 18:04 < bridge> but in this problems i like to go the most rusty over implemented way 18:04 < bridge> is there a maximum variable name length 😄 ? 18:04 < bridge> thats what i thought :justatest: 18:05 < bridge> || 18:05 < bridge> ```rust 18:05 < bridge> #![forbid(unsafe_code)] 18:05 < bridge> #![deny(warnings)] 18:05 < bridge> #![deny(clippy::nursery)] 18:05 < bridge> #![deny(clippy::pedantic)] 18:05 < bridge> #![deny(clippy::all)] 18:05 < bridge> 18:05 < bridge> use std::{fmt::Display, println, write}; 18:05 < bridge> 18:05 < bridge> #[derive(Debug, Clone, PartialEq, Eq, Default, Hash)] 18:05 < bridge> struct FizzBuzzGenerator(usize); 18:05 < bridge> 18:05 < bridge> #[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)] 18:05 < bridge> enum FizzBuzzPutput { 18:05 < bridge> Fizz, 18:05 < bridge> Buzz, 18:05 < bridge> FizzBuzz, 18:05 < bridge> Number(usize), 18:06 < bridge> } 18:06 < bridge> 18:06 < bridge> impl Display for FizzBuzzPutput { 18:06 < bridge> fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { 18:06 < bridge> match self { 18:06 < bridge> Self::Fizz => write!(f, "Fizz"), 18:06 < bridge> Self::Buzz => write!(f, "Buzz"), 18:06 < bridge> Self::FizzBuzz => write!(f, "FizzBuzz"), 18:06 < bridge> Self::Number(x) => write!(f, "{x}"), 18:06 < bridge> } 18:06 < bridge> } 18:06 < bridge> } 18:06 < bridge> dont @ me thanks 18:06 < bridge> ok @ry 18:06 < bridge> @Jupeyy_Keks my code better :gigachad: 18:06 < bridge> @Ryozuki you got a typo in "Output", your code is unsafe 18:06 < bridge> thats what i thought too 18:07 < bridge> lol true 18:07 < bridge> xd 18:07 < bridge> its safe tho 18:07 < bridge> jup's rust code is ironically hard to read 18:07 < bridge> ryoz's is unironically hard to read 18:07 < bridge> lol no 18:07 < bridge> :cammostripes: 18:07 < bridge> for a rust programmer 18:07 < bridge> my way is the most readable 18:07 < bridge> but why? 😄 18:07 < bridge> and since the fizzbuzz is a iterator u can do neat things with it 18:08 < bridge> cuz i love implementing problems like this this way xd 18:08 < bridge> instead of the shorted, i go for the most beautiful (according to my judgement) 18:08 < bridge> instead of the shortes, i go for the most beautiful (according to my judgement) 18:08 < bridge> i cant type 18:08 < bridge> wtf is Some 18:09 < bridge> a variant of the option enum 18:09 < bridge> https://doc.rust-lang.org/std/option/enum.Option.html 18:10 < bridge> https://doc.rust-lang.org/std/option/index.html 18:10 < bridge> i tried reading that and my brain shut off 18:10 < bridge> it indicates whether there is a value or not 18:10 < bridge> in a safe way 18:10 < bridge> in cpp u cant totally emulate this 18:10 < bridge> can 18:11 < bridge> https://en.cppreference.com/w/cpp/utility/optional 🤓 18:11 < bridge> because u dont have ADTs in the way rust does 18:11 < bridge> ryo teach me rust 18:11 < bridge> yeah, and u can hack ur way into the inner value without checking 18:11 < bridge> my animal brain gets angry whenever i try it myself 18:11 < bridge> rust = pay raise 18:11 < bridge> i dont WANT to try it because every time i do i get useless results 18:11 < bridge> the only successful thing i did was make a hello world 18:12 < bridge> Well C++ has no "safe" vs "unsafe". If I'm allowed to use all features of Rust I can also get to the inner value without checking using unsafe 18:12 < bridge> i guess 18:12 < bridge> but the thing is, in rust u are kinda forced to pattern match 18:12 < bridge> it feels natural 18:12 < bridge> this is just std::optionalk 18:12 < bridge> this is just std::optional 18:12 < bridge> in cpp it doesnt 18:12 < bridge> i havent seen that in c++ either 18:12 < bridge> pattern matching is truly wonderful 18:12 < bridge> Rust matches are hot 18:12 < bridge> a good advancement in programming langs 18:12 < bridge> it's just a nullable type 18:13 < bridge> Only like 10 people use it 18:13 < bridge> u take the good thing about functional languages 18:13 < bridge> xd 18:13 < bridge> We are too used to just using null/0 and calling it a day 18:13 < bridge> or -1 18:13 < bridge> real gangsters optimize the code 18:13 < bridge> [[unlikely]] 18:13 < bridge> if(x % 15 == 0) { 18:13 < bridge> }[[unlikely]] 18:13 < bridge> else if(x % 3 == 0) { 18:13 < bridge> } 18:13 < bridge> 18:13 < bridge> etc. 18:13 < bridge> xd 18:13 < bridge> wdym xd it's really common in modern cpp 18:14 < bridge> they were looking for it in a few technical interviews i did 18:14 < bridge> bussin api 18:14 < bridge> it is well known that anything after C++03 doesn't exist in production codebases 18:14 < bridge> bad reason, bad for my values, but good for society 18:14 < bridge> i will never learn a lang for a payraise 18:14 < bridge> Cutting edge is C++11 18:14 < bridge> i am interested in it for what it is 18:14 < bridge> good 18:14 < bridge> i jest 18:15 < bridge> but also pay raise 18:15 < bridge> u just have to put ur mentality in that u cant learn rust like u learn the other langs, as in, oh i can look 5 mins and ill understand how lifetimes work! 18:15 < bridge> depends on the raise, would you really not learn php for 2k extra a month? 18:15 < bridge> it wont work cuz its a new concept 18:15 < bridge> u need to spend more time 18:15 < bridge> yea 18:15 < bridge> no 18:15 < bridge> it fucks my current understanding of almost 18:15 < bridge> it fucks my current understanding of almost everything 18:16 < bridge> but thats good 18:16 < bridge> 4k extra? 18:16 < bridge> learning rust is rly good for cpp devs 18:16 < bridge> even fundamental stuff like syntax 18:16 < bridge> is like 18:16 < bridge> it will teach u many mistakes u do 18:16 < bridge> yea 18:16 < bridge> specially good in threading 18:17 < bridge> can you use rust to make components in ddnet as it is rn 18:17 < bridge> > Safe Rust guarantees an absence of data races, which are defined as: 18:17 < bridge> > 18:17 < bridge> > two or more threads concurrently accessing a location of memory 18:17 < bridge> > one or more of them is a write 18:17 < bridge> > one or more of them is unsynchronized 18:17 < bridge> > 18:17 < bridge> > A data race has Undefined Behavior, and is therefore impossible to perform in Safe Rust. Data races are mostly prevented through Rust's ownership system: it's impossible to alias a mutable reference, so it's impossible to perform a data race. Interior mutability makes this more complicated, which is largely why we have the Send and Sync traits (see below). 18:17 < bridge> > 18:17 < bridge> > However Rust does not prevent general race conditions. 18:17 < bridge> mh, I'm not sure, you can try, you might need to add some extra hooks 18:17 < bridge> boost is cutting edge. C++11 is jsut copy pasta of boost 18:17 < bridge> who uses boost in current year 18:17 < bridge> True, everyone and their mothers use boost for everything 18:17 < bridge> qbittorrent does 18:17 < bridge> i am a result driven dev and rust is like the complete opposite of that 18:18 < bridge> `boost::make_game` 18:18 < bridge> can't imagine what they would need it for 18:18 < bridge> ~~Qt does everything already xd~~ 18:18 < bridge> opposite, rust is good cuz ur software quality will usually be better, more resiliant to bugs, etc, which is where most ppl spend time 18:18 < bridge> I love `Boost.Intrusive` 18:18 < bridge> One of the few things I like about boost 18:18 < bridge> what happens on integer overflow in rust? 18:18 < bridge> im not familiar 18:18 < bridge> ive never touched boost 18:18 < bridge> @Voxel it puts the tax of the work more upfront, instead of paying it later 18:18 < bridge> but rust community is made for u 18:19 < bridge> trust me 18:19 < bridge> depends on debug or release build, but rust has checkend and saturating int ops 18:19 < bridge> u fit perfect 18:19 < bridge> nuh uh 18:19 < bridge> the only result i'll get is staring at the rust docs for a week wondering why this one little thing wont compile even though it follows all the rules of the rust docs anyways 18:19 < bridge> well, that sounds quite unsafe to have different behavior based on debug or release 18:19 < bridge> @Chairn 18:19 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1106979070069194885/image.png 18:20 < bridge> its safe* 18:20 < bridge> how about zero division error and floating NaN ? 18:20 < bridge> i guess he means unintuitive 18:20 < bridge> it sounds like rust isnt really built for graphical/ui stuff anywaus 18:20 < bridge> it sounds like rust isnt really built for graphical/ui stuff anyways 18:21 < bridge> how so 18:21 < bridge> just cuz it lacks the infrastructure atm doesn’t mean it’s a bad fit 18:21 < bridge> no lang is built for that 18:21 < bridge> that sentence makes no sense 18:21 < bridge> i need to check, most likely a panic on zero div 18:22 < bridge> Pleasing the borrow checker takes some time to learn, but when you do it is much easier make things from scratch in rust thanks to the very rich standard library and cargo ecosystem 18:22 < bridge> me using godbolt 18:22 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1106979716226879548/image.png 18:22 < bridge> i only ever do like, graphical edits for ddnet since thats what im more comfortable with 18:22 < bridge> i press ctrl +s way too often xD 18:22 < bridge> same (is an adobe user) 18:22 < bridge> error: this operation will panic at runtime 18:22 < bridge> --> src/main.rs:47:13 18:22 < bridge> | 18:22 < bridge> 47 | let y = 5 / 0; 18:22 < bridge> | ^^^^^ attempt to divide `5_i32` by zero 18:22 < bridge> | 18:22 < bridge> = note: `#[deny(unconditional_panic)]` on by default 18:22 < bridge> what is a “panic” 18:23 < bridge> I think there is a non-panicking way to do it aswell 18:23 < bridge> its well defined 18:23 < bridge> same as you uncaught exception ? 18:23 < bridge> yeah 18:23 < bridge> idk whst it is 18:23 < bridge> O 18:23 < bridge> Xpanic reference @cyberfighter 18:23 < bridge> https://doc.rust-lang.org/std/macro.panic.html 18:23 < bridge> > If the main thread panics it will terminate all your threads and end your program with code 101. 18:23 < bridge> goals 18:23 < bridge> > Rust has a tiered error-handling scheme: 18:23 < bridge> > 18:23 < bridge> > If something might reasonably be absent, Option is used. 18:24 < bridge> > If something goes wrong and can reasonably be handled, Result is used. 18:24 < bridge> > If something goes wrong and cannot reasonably be handled, the thread panics. 18:24 < bridge> > If something catastrophic happens, the program aborts. 18:24 < bridge> awesome 18:24 < bridge> rust isnt perfect, but there is more stuff making sense than in most languages 18:24 < bridge> I would add that for libraries you should keep your "what can be reasonably handled" bar very high, just let your user decide 18:25 < bridge> most do that 18:25 < bridge> in fact 18:25 < bridge> there is a rust guidelines for good quality libraries 18:25 < bridge> very low, would be more correct there maybe, idk the sentence confuses me now that I've written it out 18:25 < bridge> https://rust-lang.github.io/api-guidelines/checklist.html 18:26 < bridge> i try to follow this always 18:26 < bridge> its my religion 18:26 < bridge> i hate making things from scratch 18:26 < bridge> but if i were to do ANYTHING id want to make an easy rendering engine thats as intuitive as scratch's canvas but as blazingly fast as a normal coding language 18:26 < bridge> so that when i have stupid ideas in my head i can just, jump in and start making them without having to build up everything just to get a picture on the canvas 18:26 < bridge> I was supposed to study control theory, instead I wasted an hour talking about fizzbuzz :pepeW: 18:27 < bridge> :NekoDrink: 18:27 < bridge> and you learned absolutely nothing 18:27 < bridge> grahh‼️ 18:27 < bridge> he learnt rust 18:27 < bridge> have you tried p5.js? It's quite fun to mess around with 18:27 < bridge> there is one in rust 18:27 < bridge> https://macroquad.rs/ 18:28 < bridge> ```rust 18:28 < bridge> use macroquad::prelude::*; 18:28 < bridge> 18:28 < bridge> #[macroquad::main("BasicShapes")] 18:28 < bridge> async fn main() { 18:28 < bridge> loop { 18:28 < bridge> clear_background(RED); 18:28 < bridge> 18:28 < bridge> draw_line(40.0, 40.0, 100.0, 200.0, 15.0, BLUE); 18:28 < bridge> draw_rectangle(screen_width() / 2.0 - 60.0, 100.0, 120.0, 60.0, GREEN); 18:28 < bridge> draw_circle(screen_width() - 30.0, screen_height() - 30.0, 15.0, YELLOW); 18:28 < bridge> draw_text("HELLO", 20.0, 20.0, 20.0, DARKGRAY); 18:28 < bridge> 18:28 < bridge> next_frame().await 18:28 < bridge> } 18:28 < bridge> } 18:28 < bridge> ``` 18:28 < bridge> awesome bro 18:28 < bridge> reminds me of win2d 18:28 < bridge> the most basic bitch stuff 18:28 < bridge> its made after the C library 18:28 < bridge> i forgot the name 18:28 < bridge> its the name of the guy 18:29 < bridge> imagine being named C 18:29 < bridge> which guy 18:29 < bridge> raylib 18:29 < bridge> oh yeah 18:29 < bridge> love that guy 18:29 < bridge> https://www.raylib.com/ 18:29 < bridge> its inspired by this 18:29 < bridge> he makes great stuff 18:29 < bridge> im a fan of his resource system 18:29 < bridge> though never had to use it 18:30 < bridge> i used raylib in the past 18:30 < bridge> i was a big C fan 18:30 < bridge> but then he took a rusty arrow in the knee 18:30 < bridge> xd 18:30 < bridge> i always just used sdl and worked with images 18:30 < bridge> i didnt have a need to draw abstract stuff like that 18:31 < bridge> 18:31 < bridge> 18:31 < bridge> 18:31 < bridge> my c, c++ repos 18:31 < bridge> xd 18:31 < bridge> they rly old 18:32 < bridge> i preferred cpp pretty much the moment i realized how they were different in the grand scheme of things 18:32 < bridge> :tee_thinking: 18:32 < bridge> i preferred cpp pretty much the moment i realized it was different from C in the grand scheme of things 18:32 < bridge> the first code i'd been exposed to never really made a distinction or tried hard to adhere to particular philosophies of one language or the other 18:32 < bridge> it just did shit 18:33 < bridge> and shit was done 18:33 < bridge> i like how this is made to be for game dev but considering i grew up on a "game creation kids website" and how its capable of fluid animation 18:33 < bridge> this is gonna be fun when i find out how to compile it 18:33 < bridge> i would not expect that to be too performant 18:33 < bridge> to me top1 about rust is macros 18:33 < bridge> 18:33 < bridge> they can hide so much logic and make everything easier 18:33 < bridge> eh 18:33 < bridge> its rust so 18:33 < bridge> its perfomant already 18:33 < bridge> vs making a python game 18:34 < bridge> it doesn't matter if you're re-generating everything every frame like a madman 18:34 < bridge> i mean it does definitely but 18:34 < bridge> Learn vulkan from @Jupeyy_Keks 18:34 < bridge> there are optimizations to be made beyond the language level 18:34 < bridge> actually in macroquad the perfomance hit will be from ur code and how u design stuff 18:34 < bridge> since it doesnt do much itself 18:34 < bridge> I'll go do some chores around the house so I can feel like I've at least done something today 18:34 < bridge> ok lets start by writing 1000 lines of code you absolutely don't understand 18:34 < bridge> in bevy u get lot of perfomance thanks to the already massively paralelized ECS 18:34 < bridge> nice 18:34 < bridge> i like bevy 18:34 < bridge> Is 1k lines enough to render a triangle? :Prayge: 18:35 < bridge> 18:35 < bridge> this is what i needed to draw a triangle 18:35 < bridge> IIRC 18:35 < bridge> if u use smth like SDL then yes 18:35 < bridge> if u do native x11 implementation probs not xd 18:35 < bridge> what i used to do to optimize rendering is keep many different layers of framebuffer & draw to them as necessary and then compile them at draw time 18:35 < bridge> the cost of alpha blending these at draw time was big, but not bigger than re-generating them would be every frame in a situation where the contents did not change on that layer 18:35 < bridge> i have no idea what this strategy is called 18:36 < bridge> or if it's any good 18:36 < bridge> what i used to do to optimize rendering is keep many different layers of framebuffer & draw to them as necessary and then combine them at draw time 18:36 < bridge> the cost of alpha blending these at draw time was big, but not bigger than re-generating them would be every frame in a situation where the contents did not change on that layer 18:36 < bridge> but i also worked with sdl so it was pretty high level lol 18:36 < bridge> never done too much with gl or the like 18:36 < bridge> i used opengl 18:36 < bridge> its quite ez 18:37 < bridge> but i never rly looked much into ddnet renderer code tbh 18:37 < bridge> im 2 lazy 18:37 < bridge> cuz jupstar is there 18:37 < bridge> xd 18:39 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1106983954126487703/image.png 18:39 < bridge> xd 18:39 < bridge> unrelated but unique usa servers are now up 18:39 < bridge> depends on the complexity of the task ^^ 18:39 < bridge> 18:39 < bridge> with a stencil buffer u could maybe reduce alpha blending tests or even fragment calculations at all 18:39 < bridge> race db is not hooked up, instagib and freeze are not working 18:39 < bridge> but others are good 18:39 < bridge> transparency is hardest thing to optimize well xd 18:39 < bridge> raytracing best 18:40 < bridge> no more struggle 18:40 < bridge> only need to be math genius 18:40 < bridge> and 4090 18:40 < bridge> too low level do be of assistance in what i was doing, im afraid 18:40 < bridge> sdl texture is like the most rudimentary hardware accelerated graphics api you can use in C 18:41 < bridge> as far as i know 18:41 < bridge> i can tell you a funny story 18:41 < bridge> when ur GPU is not at 100% it's faster to render a big fat black square, than letting the driver clear the memory 18:41 < bridge> damn 18:42 < bridge> i tested this like 2 years ago on android and my desktop pc, bcs i used blitting and it was so slow, so i also tried it for clearing framebuffers 18:42 < bridge> so if in these 2 years the drivers didnt change, gg xd 18:43 < bridge> mh but on vulkan you can move the clear to the renderpass 18:43 < bridge> 18:43 < bridge> that's defs smth that doesnt exists in opengl 18:43 < bridge> should test some day in 5000 years 18:44 < bridge> lol 18:44 < bridge> wait so if you render a black square does everything get overwritten or is it still "there" 18:45 < bridge> its overwritten 18:47 < bridge> @Ryozuki no one can top my simple and small codes 18:48 < bridge> ngl I just joinked part of the code from chatgpt xd 18:48 < bridge> ew 18:48 < bridge> "my" simple and small code 18:55 < bridge> stable diffusion is amazing 18:58 < bridge> dumbs admire complexity, geniuses admire simplicity, I admire my own code 18:58 < bridge> :gigachad: 19:00 < bridge> no it fucking isnt :( 19:01 < bridge> i mean its pretty fun for personal use xd 19:01 < bridge> i think the future of ai is pretty inevitable 19:02 < bridge> thats the thing 19:02 < bridge> i dont want it to because i can just tell its going to be doing all the fun work for us 19:03 < bridge> like theres a certain charm in putting effort into something, and having that stripped away feels like the entire thing is worthless 19:03 < bridge> because anyone else could do the exact same thing in the same amount of short time 19:03 < bridge> if everyone's special, no one is 19:06 < bridge> it is 19:06 < bridge> look at my waifus 19:06 < bridge> @Ryozuki i think i ahve better waifus 19:06 < bridge> yeah thats pretty true 19:06 < bridge> impossible 19:06 < bridge> esp for digital art, it will change the landscape for the worse for artists 19:07 < bridge> @Ryozuki im dling like 20 gb of checkpoint models rn xd 19:07 < bridge> cheap 19:09 < bridge> i doubt it 19:28 < bridge> ```python 19:28 < bridge> for i in range(1, 101): print(i if (i % 3 and i % 5) else ("Fizz" if not i % 3 else "") + ("Buzz" if not i % 5 else ""))``` :gigachad: 19:29 < bridge> oh yes 19:37 < bridge> can a newbie read it? 19:37 < bridge> I guess it can good :YEP: 19:37 < bridge> I guess it can, good :YEP: 19:45 < bridge> @heinrich5991 i can't do that right? 19:45 < bridge> 19:45 < bridge> ```C++ 19:45 < bridge> void KeHub::getJoke(int team, char *msg){ 19:45 < bridge> 19:45 < bridge> if(!strcmp(msg, "kio joke")) 19:45 < bridge> { 19:45 < bridge> if (g_Config.m_ClCanGiveJoke){ 19:46 < bridge> 19:46 < bridge> char aUrlJoke[256]; 19:46 < bridge> str_copy(aUrlJoke, "https://official-joke-api.appspot.com/random_joke"); 19:46 < bridge> 19:46 < bridge> m_pJokeDataTask = HttpGet(aUrlJoke); 19:46 < bridge> m_pJokeDataTask->Timeout(CTimeout{10000, 0, 500, 10}); 19:46 < bridge> m_pJokeDataTask->IpResolve(IPRESOLVE::V4); 19:46 < bridge> Engine()->AddJob(m_pJokeDataTask); 19:46 < bridge> 19:46 < bridge> if(m_pJokeDataTask) 19:46 < bridge> { 19:46 < bridge> if(m_pJokeDataTask->State() == HTTP_DONE){ 19:46 < bridge> const json_value *pJokeSetup = json_object_get(m_pJokeData, "setup"); 19:46 < bridge> const json_value *pJokePunchline = json_object_get(m_pJokeData, "punchline"); 19:46 < bridge> 19:46 < bridge> if(pJokeSetup && pJokePunchline){ 19:46 < bridge> char *aBuff = new char[256]; 19:46 < bridge> str_format(aBuff, sizeof(aBuff), "%s %s", json_string_get(pJokeSetup), json_string_get(pJokePunchline)); 19:46 < bridge> m_pClient->m_Chat.Say(team, aBuff); 19:46 < bridge> } 19:46 < bridge> }else 19:46 < bridge> { 19:46 < bridge> m_pClient->m_Chat.Say(team, "Error getting joke"); 19:46 < bridge> with this http 19:52 < bridge> i mean thats no sync how can i do the request and wait the response mhhh 20:07 < bridge> ofc you can't, that api is asynchronous, you need to make your request and every tick check if it succeeded 21:15 < bridge> Trying to play the map Cerberus. says uploading to gpu, then, Too weak connection (not acked for 5 seconds), tried to join on different servers, same message, pls help 21:41 < bridge> unclear why you use an architecture-specific integer length. should probably use `i32` instead 21:45 < bridge> doesn't matter here 22:34 < bridge> Bro made 2 classes and enum for a fizzbuzz :kek: 22:52 < bridge> xd 22:52 < bridge> (@uwu) 23:12 < bridge> https://thephd.dev/c23-is-coming-here-is-what-is-on-the-menu#n2897---memset_explicit 23:12 < bridge> ah finally 23:36 < bridge> Turk servers have no default location in server browser 23:36 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1107058893944795158/image.png 23:36 < bridge> looks weird 23:45 < bridge> exactly, boring *crying* 23:58 < bridge> @heinrich5991 I keep forgetting how to override that 😄