06:28 < bridge> ChillerDragon which block is used for spawn in the pvp arena 06:38 < ws-client> @woidless 132 07:01 < bridge> After which packet a player is technically connected to a server? 07:04 < ws-client> @milkeeycat i would say enter game https://chillerdragon.github.io/teeworlds-protocol/07/system_messages.html#NETMSG_ENTERGAME 07:06 < ws-client> thats the last one the client has to send before the server starts sending snapshots 07:07 < bridge> Ok, thanks 07:59 < bridge> ChillerDragon do you know how to detect krxclient in general? Like some kind of anti-cheat 08:30 < ws-client> yes i know some things but nothing i can discuss in a public channel because its a cat and mouse game 08:31 < ws-client> for the same reason i will also not include it in the public modification ddnet++ 09:04 < bridge> ChillerDragon 09:04 < bridge> How to get a weapon license 09:04 < bridge> I want to use taser 09:05 < bridge> I want to use taser 09:11 < bridge> @learath2 read this for a laugh https://wiki.gentoo.org/wiki/WD-40 09:46 < ws-client> @woidless you need a high enough police rank to use the taser 09:56 < bridge> This is super annoying. I have to always change 2x teleports every time I wanna place another cp now.. The new "View" is really nice, but please put all teleports in 1 like it used to.. 10:08 < bridge> This is super annoying. Now I have to change 2x numbers every time I wanna place another teleport.. The new "View" is really nice, but please merged all the teleports into one like it used to.. 10:13 < ws-client> Thanks aoe c: 11:23 < bridge> language barriers boutta be so fun 11:24 < bridge> Heh, cute name 11:28 < bridge> <♂S1mple♂> okay? 11:34 < bridge> ChillerDragon make it impossible to enter the tournament block in the team 11:50 < ws-client> @woidless done 11:53 < bridge> And is it possible to implement an anti-cheat, from cheat clints? I even know how to implement it 12:03 < ws-client> i thought about building some open source anti cheat but heinrich advised against it and then i also was a bit lazy i dont think it will happen 12:04 < bridge> Why not? 12:04 < ws-client> what why not 12:04 < bridge> I just know how it can be implemented, can you execute commands in the game console for the player? 12:04 < ws-client> not sure what you mean @woidless 12:05 < bridge> Why heinrich advised against it 12:05 < bridge> For example, a player wants to write in the say 105 console can the server do it on behalf of the player 12:06 < bridge> So that , for example , this message 105 was sent from the player himself , but it was executed by the server in the console 12:06 < ws-client> @milkeeycat i lost the log but i assume it was because anti cheat should be developed in private to not give botters a chance to bypass it 12:07 < bridge> ? 12:07 < ws-client> ? 12:07 < bridge> Is it possible? 12:07 < ws-client> i did not understand your message 12:08 < ws-client> you mean chat on behalf of others? 12:10 < bridge> See 12:10 < bridge> The player of my server, for example, wants to write in the game console that opens on f1, he wants to write "say im cheater", can the server write it for him in the console so that it is executed and the command in the console was executed, that is, the message was sent 12:11 < bridge> This can help Create an anti-cheat 12:12 < bridge> If in 2 words I want to know if the server can execute a console command on behalf of the player? 12:12 < ws-client> ah no the server has no access to the clients console 12:14 < bridge> I just know how the cheat works, for example, a player wants to use balance bot, he clicks on the button on which he linked this function, and the following is performed in the game console "namecheat_balancebot" If we could keep track of this 12:15 < bridge> Then I think it would be easy to create an anti-cheat 12:16 < ws-client> yes but you can not access that 12:18 < bridge> RusskyBlock was able to somehow implement the anti-cheat 12:19 < ws-client> yes but not by accessing the clients console 12:19 < bridge> But here's how 12:20 < ws-client> you can try asking them for their antibot module they also use a ddnet based mod with an antibot api maybe they use that and are willing to share it 12:30 < bridge> They demand money for the way it works 12:53 < bridge> I have some time and motivation, is there a way to add some debug lines in ddnet? I mean something like hitbox, tick-trial, slow-tick options? 12:55 < bridge> I have some time and motivation, is there a way to add some debug lines in ddnet? I mean something like hitbox, tick-trial, slow-trails (line from one tick to another) options? 12:55 < bridge> I have some time and motivation, is there a way to add some debug lines in ddnet? I mean something like hitbox, tick-trails (line from one tick to another), slow-tickrate options? 13:56 < bridge> When your vanilla+ server starts recording demo, does it automatically stop recording when match is finished? I just wanted to double check because I know some mods didn't do this 13:57 < bridge> Also, can it record/save the statboard `.csv` file at the end of the match also, like when the server command `record` is given at the beginning of the match (possibly by a vote)? 13:59 < bridge> i only got it after reading half of the page then i snorted like a gremlin 14:04 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1304793726878617621/image.png?ex=6730af5a&is=672f5dda&hm=b325e76cb642895555f75dc85068fea889f9b37823a3a1dd038c513141923eda& 14:05 < bridge> change this constant to a server config and hope everything just works? lmao 14:05 < bridge> line from one tick to another? 14:05 < bridge> ctrl-shift-d sorta thing? 14:05 < bridge> you are too naive :justatest: 14:05 < bridge> i know it wotn just work 14:06 < bridge> but i can dream harold 14:06 < bridge> i mean ill see what happens 14:06 < bridge> since tickrate should be synchronized between both client and server sounds kinda unrealistic to make it work that way honestly 14:07 < bridge> thats why it should be a config 14:07 < bridge> by whom 14:07 < bridge> the server 14:07 < bridge> it doesnt make sense for the client to have it since.. ther can be multiple clients 14:07 < bridge> having non matching tickrates will screw everything 14:08 < bridge> or cause some funny rubberbanding 14:08 < bridge> or cause some funny rubberbanding more likely 14:17 < bridge> ah demos would be screwed over by variable tick speeds 14:17 < bridge> oh not really you can just always play back at default 14:19 < bridge> ```c 14:19 < bridge> MACRO_TUNING_PARAM(GroundControlAccel, ground_control_accel, 100.0f / SERVER_TICK_SPEED, "Acceleration speed on the ground") 14:19 < bridge> MACRO_TUNING_PARAM(GroundFriction, ground_friction, 0.5f, "Friction on the ground") 14:19 < bridge> MACRO_TUNING_PARAM(GroundJumpImpulse, ground_jump_impulse, 13.2f, "Impulse when jumping on ground") 14:19 < bridge> MACRO_TUNING_PARAM(AirJumpImpulse, air_jump_impulse, 12.0f, "Impulse when jumping in air") 14:19 < bridge> MACRO_TUNING_PARAM(AirControlSpeed, air_control_speed, 250.0f / SERVER_TICK_SPEED, "Max speed the tee can get in the air") 14:19 < bridge> ``` 14:19 < bridge> why are these in terms of server tick speed? 14:22 < bridge> because if you will really change tick speed, constant physics tunings will screw it up immediately 14:23 < bridge> like setting higher tickspeed will give you resulting very fast physics 14:23 < bridge> and so on 14:23 < bridge> thats the idea 14:25 < bridge> so when these are later divided or multiplied (my head hurts) by tick speed it should be the default tick speed 14:25 < bridge> uhoh 14:26 < bridge> i assume tick slowdown wants slow physics as well 14:27 < bridge> but someone could theoretically want different tickrate with same physics (even though any more just takes up more resources, and any change breaks existing physics) 14:27 < bridge> you can still change the default tickrate just not at runtime 14:27 < bridge> you can still change the tickrate (with constnat physics) just not at runtime 14:28 < bridge> thats why they're divided 14:28 < bridge> having less or more ticks still breaks physics 14:28 < bridge> cuz floating pt error and all that 14:28 < bridge> there's another reason for this, code inconsistency 14:28 < bridge> wdym 14:29 < bridge> i think its fine if accel is in terms of tickspeed 14:29 < bridge> just makes changing it at runtime leave out 1 usecase whichever way you do it 14:29 < bridge> ^ adding the ability to 14:30 < bridge> i think the slow down (and / speed up) case is more warranted for tas 14:30 < bridge> youll just end up moving it from macro to actual usage function 14:31 < bridge> alot of the times the tickrate is used it comes from a function labeled TickSpeed or GameTickSpeed 14:31 < bridge> something like Tune(...) wrapped with TickSpeed() called inside on every query 14:31 < bridge> u think it should be a tune? 14:32 < bridge> wdym 14:32 < bridge> it shouldnt be able to be changed in tuning sections and also doesnt have to be float 14:33 < bridge> what exactly shouldn't be able to be changed in tuning sections? 14:33 < bridge> tickrate 14:33 < bridge> why? 14:33 < bridge> tickrate (or speed as its called) 14:33 < bridge> because you then have different parts of the map running at different tickspeeds 14:33 < bridge> and things like the chat are run of the ticks aswell 14:34 < bridge> that's why i proposed to use something that wraps tunings and returns it tickrate-agnostic value 14:34 < bridge> so you just call Tune(Name) and it returns you something like ActualTuning / Server()->TickSpeed() 14:34 < bridge> you could seperate ticks into physics ticks and everything ticks for that to work 14:35 < bridge> wait wait what 14:35 < bridge> Name being any current tuning which is then modified by a global speed? 14:35 < bridge> ye 14:36 < bridge> well that can already be done manually, and sure might be useful 14:36 < bridge> i meant actually changing the tick speed 14:36 < bridge> for tas sing 14:36 < bridge> or debug 14:36 < bridge> yeah, what's wrong with runtime calculating? 14:36 < bridge> if you modify tunings you arent actually modfying the tick rate 14:37 < bridge> you jump from one to another, i can't really undertand you xd 14:37 < bridge> I only want a slower timerate for debugging, thinking about it you could do it with a server and client with cheat engine 14:37 < bridge> initial problem was: physics tunings are compile time defined in terms of tickspeed 14:38 < bridge> this 14:38 < bridge> I only want a slower timerate for debugging, thinking about it you could do it with a server and client with cheat engine by slowing the process 14:38 < bridge> if you need tunings to be tickspeed agnostic, you should calculate it in runtime, rather in compile time 14:38 < bridge> you can already cheatengine both the client and server that should work 14:38 < bridge> we want to change the tickrate 14:38 < bridge> and have physics slow down and speed up 14:39 < bridge> we want to change the tickrate (or are suggesting anyway) 14:39 < bridge> ah, my god 14:39 < bridge> oke i got you 14:39 < bridge> hehe oke xd 14:39 < bridge> i was talking in terms of introducing high-tickrate servers 14:39 < bridge> i.e for racing 14:39 < bridge> or vani 14:39 < bridge> i dont see the point in that, are people limited by the tickrate now? 14:39 < bridge> physics are limited to it 14:40 < bridge> well yeah but are people experiencing problems in what they want to do 14:40 < bridge> this would actually change physics, at least it would require a patch, I can already find setups which work/don't work depending on position, ticks and subticks 14:40 < bridge> " I can already find setups which work/don't work depending on position, ticks and subticks" then yeah 14:40 < bridge> well the position one is obvious 14:40 < bridge> can the client send input in subticks? 14:41 < bridge> no 14:41 < bridge> if all input is shoved into the next tick then if youre 20% into a tick 14:41 < bridge> then it shouldnt affect anything 14:41 < bridge> oh i guess if the sequence is not aligned to ticks 14:42 < bridge> yes, gravity is not applied in a subtick* meaning you mostly move in straight lines between ticks 14:42 < bridge> if you higher the tickrate, your falling curve will get smoothed out changing the movement behaviour 14:42 < bridge> well thats tickrate 14:43 < bridge> im talking about setups failing due to somehow starting on subticks 14:43 < bridge> or just on a certain tick 14:43 < bridge> physics shouldnt be dependent on the tick 14:43 < bridge> apart from moving stuff 14:43 < bridge> you con only do inputs on tick, however start and finish times are calculated in subticks 14:43 < bridge> you can only do inputs on tick, however start and finish times are calculated in subticks 14:44 < bridge> map start and finish times? 14:44 < bridge> yes 14:44 < bridge> that seems excessive 14:44 < bridge> but fine 14:44 < bridge> doesnt effect setups 14:44 < bridge> there are servers tracking the milliseconds, this is calulated, otherwise a 50Hz game couldn't do that, since all times would apply in 0.002 ms 14:45 < bridge> 0.02s*? 14:45 < bridge> there are servers tracking the milliseconds, this is calulated, otherwise a 50Hz game couldn't do that, since all times would apply in 0.02 ms 14:45 < bridge> yes 🙈 14:45 < bridge> i think thats fine 14:45 < bridge> specially when you cant control the subtick your on 14:45 < bridge> specially when you cant control the subtick youre on 14:46 < bridge> and also if you even do subtick precision thats fine it should still be determanistic 14:46 < bridge> should still be okay to do it in subticks, it should still be determanistic 14:47 < bridge> the felt "randomness" comes from minor changes in positioning and chaos, I made a map recently exploiting this 14:47 < bridge> eg: 14:47 < bridge> 3 blocks from the map start 14:47 < bridge> start holding right 14:47 < bridge> no matter what tick your on the subtick when you cross will be the same 14:48 < bridge> here, if you can finish this map without bruteforcing you understand the teeworlds engine. 14:48 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1304804815796174858/CosmicTerrorstaircase.map?ex=6730b9ae&is=672f682e&hm=9ffa0ecaaee81857ed6c407bcbd5a47e46bda1fc553e7033d6d87096e8a9842d& 14:49 < bridge> you do the same trick over and over, notice you sometimes make it, sometimes clip, sometimes just die, due to positioning 14:50 < bridge> if it requires extreme precision, the lack of my bodies precision will come into play 14:50 < bridge> exactly 14:50 < bridge> that isnt ... the engines fault 14:51 < bridge> i mean if the physics engine could ensure i dont have skill issue. id be delighted 14:51 < bridge> no, you can lineupt for each part and make it, you don't have control otherwise over where your ticks are 14:51 < bridge> the physics shouldnt be dependent on what tick you start a map or setup on 14:52 < bridge> it's not the tick (in a sense of which number the tick is), it's the position where you start your input on, since the input is only calulated in ticks, the rest of this parts can lineup 14:53 < bridge> well yeah... thats not the fault of the game engine 14:53 < bridge> well yeah ofc it's the fault of the engine xD but nothing I would fix (or we should fix) 14:53 < bridge> if you make sure your position is correct, (where an imprecise human would struggle given theyu didnt have a debug ui) then sure a setup will fail 14:54 < bridge> a perfect human would have no trouble 14:54 < bridge> you don't need a debug ui, there are normal client commands to show your position 14:54 < bridge> a perfect human could also predict the inconsistent tick dependent physics of such a hypotheitcal server 14:54 < bridge> yeah what i meant by debug ui 14:54 < bridge> i only ever use it to see if the x position is 53 or 47 14:55 < bridge> ie lined up to a wall 14:56 < bridge> also this ui is kinda* inaccurate, since the comma position only has a rounded multiple of 1/32, but that's yet another topic 14:56 < bridge> if you use commas for fractioanl parts do u also call the bit which is fractional comma part? 14:56 < bridge> that makes sense 14:57 < bridge> o wait is that why its 53? 14:57 < bridge> and 47 14:57 < bridge> yes 😄 14:57 < bridge> cuz floor(1/32) = 0.03 14:57 < bridge> what is the actual position? 14:57 < bridge> cuz floor(1/32 * 100) / 100 = 0.03 14:58 < bridge> and why can i always stack ontop of someone if that innacurate position matches 14:58 < bridge> (tested with hf and dummy, as soon as both numbers match i can drop and always lands) 14:58 < bridge> and why can i always stack ontop of someone if that innacurate position matches 14:58 < bridge> (tested with hf and dummy, as soon as both numbers match i can drop and always stacks) 14:59 < bridge> i guess if im aligned to 0.03 through whatever means i did so, then it also aligns perfectly 14:59 < bridge> it's just rounded down, you have per tile 32 positions, (or 33 depending how you count) 15:01 < bridge> the actual position for 47 is then 15/32 and for 53 17/32 15:02 < bridge> I guess this is just truncated, because there is little of no value to show more precision 15:10 < bridge> also this map can reliably reproduce the _corner_case_ if anybody ever needs a map for testing 😉 15:13 < ws-client> @pathos3005 i do not see replies i just assume you are talking to me. I think demo recording stops correctly with round end but i would also have to test it. 15:14 < ws-client> do you need the csv file on the server or client side? For what? The server can already post round end stats to discord or as json to a custom http endpoint. csv and to file is planned but nobody had a real usecase for it yet. 15:23 < bridge> it appears to have well.. broken 15:23 < bridge> when i tried to change the tickspeed lmao 15:26 < bridge> i cant turn antiping off? 15:28 < bridge> apart from prediction going AAAAAAA, different tickrates are fine 15:28 < bridge> and when you change the tickrate prediction goes mad for a bit 15:30 < bridge> from my understanding, changing for example from 50Hz to 100Hz will apply gravity twice (for example), so what do you mean by "fine" or do you mean just slowing time with cheat engine? 15:30 < bridge> by fine i mean feels as if you cheat engined it 15:31 < bridge> but tis really not 15:31 < bridge> oh really 🤔 15:31 < bridge> what i have done just replaces every occorunce of trying to get the tickrate 15:31 < bridge> with a server settings 15:31 < bridge> with a server setting 15:31 < bridge> minus some bits in demos cuz it does that seperatley 15:31 < bridge> but connection problems, and other players and prediction in general is just borked 15:32 < bridge> oh yes, with double the tickrate you send twice as much packages 15:32 < bridge> well, at least part of the netcode scales like this 15:32 < bridge> shoiuldnt be a problem on loopbake 15:32 < bridge> shoiuldnt be a problem on loopback 15:32 < bridge> shoiuldnt be a problem on localhost 15:33 < bridge> i probably shouldve tried changing the constnat first 15:35 < bridge> changing the constnat works fine 15:47 < bridge> hi 15:47 < bridge> @heinrich5991 I am working on #4523, should I add a MapBug (similar to the double grenade bug) or just fix the bouncing-case? 15:47 < bridge> https://github.com/ddnet/ddnet/issues/4523 15:47 < bridge> i dont think the client is getting the updated setting and idk y 15:47 < bridge> bad bot 15:47 < bridge> i dont think the client is getting the updated setting and idk y 15:47 < bridge> `MACRO_CONFIG_INT(SvTickRate, sv_tick_rate, SERVER_DEFAULT_TICK_RATE, 0, 100, CFGFLAG_SERVER | CFGFLAG_GAME, "Number of ticks per second")` 15:48 < bridge> is balance bot allowed 15:48 < bridge> in most places no 15:48 < bridge> is balance bot allowed in kog 15:48 < bridge> probably not 15:49 < bridge> "Don't use any tool (client, bot) allowing you to cheat" 15:49 < bridge> bit of a circular definition there 15:49 < bridge> o 15:49 < bridge> but i wouldnt risk it 15:49 < bridge> u think i will be banned i already use it 15:49 < bridge> just dont tell them 15:49 < bridge> just git good 15:49 < bridge> :) 15:50 < bridge> im top 170! 15:50 < bridge> git... better? at balancing? 15:50 < bridge> (also wow) 15:51 < bridge> thx for advice ill be sure to think about it 15:51 < bridge> is a client which makes my aim better allowed? 15:51 < bridge> precision yes, accuracy no 15:51 < bridge> yes @milkeeycat 15:52 < bridge> wait really 15:52 < bridge> lol, time to make my precision worse and only be able to hook in 8 directions 15:52 < bridge> that would be making your aim worse 15:52 < bridge> aimbot client is allowed i think 15:52 < bridge> i meant if you use the thing i use which multiplies ur mouse position by an amount to fix low precision with low max distance 15:52 < bridge> "Don't use any tool (client, bot) allowing you to cheat" 15:53 < bridge> for kog atleast 15:53 < bridge> and for any competative mode defaintley not 15:54 < bridge> oh 15:54 < bridge> i would call aimbot a cheat 16:06 < bridge> absolutely not - any client modification giving you an advantage is prohibited and will lead to a punishment 16:25 < bridge> Why would you think its allowed 16:30 < bridge> i was bored 16:45 < bridge> Go read a book next time 16:56 < bridge> im actually ok 16:56 < bridge> thx for suggestion 17:15 < bridge> @robyt3 can you also take a look at my PR? I don't understand what the linter problem there is. This is formatted like anything else in this file 17:16 < bridge> ah nevermind it's one line and therefore it doesn't want braces, okay .... 17:26 < bridge> why do we need the line 17:26 < bridge> ```arm 17:26 < bridge> static const vec2 StackedLaserShotgunBugSpeed ​​= vec2(-2147483648.0f, -2147483648.0f); 17:26 < bridge> ``` 17:26 < bridge> in the `laser.cpp` file? 17:28 < bridge> ```c 17:28 < bridge> // The method is needed only to reproduce 'shotgun bug' ddnet#5258 17:28 < bridge> // Use SetVelocity() instead. 17:28 < bridge> void CCharacter::SetRawVelocity(vec2 NewVelocity) 17:28 < bridge> { 17:28 < bridge> m_Core.m_Vel = NewVelocity; 17:28 < bridge> } 17:28 < bridge> ``` 17:28 < bridge> gets used here 17:36 < bridge> Hey why are speeders not rendered whe you have too many 17:36 < bridge> Hey why are speeders not rendered when you have too many 17:36 < bridge> Hey why are speeders not rendered when you have too many 17:37 < bridge> very not cool 17:37 < bridge> they are shy and dont want to be rendered 17:37 < bridge> to reproduce a "bug" that was actually used in some maps, so we had to add some code to mimic the bugged behaviour 17:40 < bridge> ok it seems to be caused by `m_GLTileBufferingEnabled` when disabled it renders the arrows 17:43 < bridge> doey anybody know a map with a huge automatic movement part? I need it for testing 17:43 < bridge> does anybody know a map with a huge automatic movement part? I need it for testing 17:43 < bridge> lmao 17:44 < bridge> that is exactly what i was building rn @essigautomat xddd 17:59 < bridge> ```c 17:59 < bridge> m_pEngine = Kernel()->RequestInterface(); 17:59 < bridge> m_pEditor = Kernel()->RequestInterface(); 17:59 < bridge> m_pFavorites = Kernel()->RequestInterface(); 17:59 < bridge> m_pSound = Kernel()->RequestInterface(); 18:00 < bridge> m_pGameClient = Kernel()->RequestInterface(); 18:00 < bridge> m_pInput = Kernel()->RequestInterface(); 18:00 < bridge> m_pMap = Kernel()->RequestInterface(); 18:00 < bridge> ``` 18:00 < bridge> why ? 18:00 < bridge> (cant they just be globals) 18:02 < bridge> polluting global space is ":troll:" 18:03 < bridge> yeah but polluting every class with.. this nonsense 18:03 < bridge> is stupid 18:03 < bridge> and makes my brain strain trying to get something from something else 18:04 < bridge> its like alchemy 18:04 < bridge> sprinkle some of that file into this interface which is ontop of this thing 18:04 < bridge> etc etc 18:04 < bridge> it makes all classes reusable in any other context 18:05 < bridge> they don't depend on globals 18:05 < bridge> yeah they depend on Kernal() 18:05 < bridge> and the interface 18:05 < bridge> s which it gets from it 18:06 < bridge> actually it just shadows definition of classes and (probably) makes compiling faster 18:06 < bridge> second part maybe not true though 18:06 < bridge> yeah but cant you just... not do that 18:06 < bridge> is there any problem with kernel? 18:07 < bridge> you can for example make N implementations of interfaces 18:07 < bridge> yeah my brain hurts im trying to get CGameClient.m_aClients 18:07 < bridge> and use one you need to 18:07 < bridge> also using virtual means more runtime code 18:07 < bridge> like mocking some parts 18:07 < bridge> and testing others 18:07 < bridge> etc etc 18:08 < bridge> and also seperating items in classes into more than 1 file kinda defeats seperation of concerns (and kiss) 18:08 < bridge> its good design wise, but not used properly since ddnet and tw went open source too early (imo) 18:08 < bridge> its literally example of kiss :/ 18:08 < bridge> everything makes exactly 1 thing, at least was supposed to 18:09 < bridge> Kernal() acts like a global namespace 18:09 < bridge> but it isnt 18:09 < bridge> and interfaces just add another layer to add a definiton 18:09 < bridge> it adds a huge amount of flexability 18:09 < bridge> its just not used in tw 18:10 < bridge> and nailing everything to classes that can be reconsidered is bad imho 18:10 < bridge> i dont particularly understand. sure you can make another sound interface, then pass it into ?? what 18:10 < bridge> and if you need to do something more, nothing sstopping you from changing the code 18:10 < bridge> and depending on runtime use one you need to 18:11 < bridge> ah yeah, good ol switch or if else if else if 18:11 < bridge> everything is in clases? 18:11 < bridge> theres alot of that here 18:11 < bridge> but no 18:11 < bridge> using inheritence where its needed is fine 18:12 < bridge> if you want to refactor it the way you need to, go on 18:12 < bridge> way too big for me even to try 18:12 < bridge> i just can't get problem you are describing 18:12 < bridge> also cpp beginner lmao 18:12 < bridge> im trying to get CGameClients.m_aClients 18:12 < bridge> im trying to get CGameClients().m_aClients 18:12 < bridge> from 18:12 < bridge> then get it :Clueless: 18:12 < bridge> code link? 18:13 < bridge> src/engine/client/client.cpp 18:13 < bridge> use github links next time :troll: 18:13 < bridge> i dont remember the prefix for showing files 18:14 < bridge> https://github.com/ddnet/ddnet/master/blob/src/engine/client/client.cpp 18:14 < bridge> something like that 18:14 < bridge> https://github.com/ddnet/ddnet/tree/master/src/engine/client/client.cpp 18:14 < bridge> https://github.com/ddnet/ddnet/tree/master/src/engine/client/client.cpp 18:14 < bridge> i mean github link can bring you to exact lines, etc 18:14 < bridge> nvm 18:14 < bridge> that is true 18:15 < bridge> but this file is just CClient method implementations 18:15 < bridge> so should apply for anywhere inside one of the functions] 18:15 < bridge> but this file is mostly CClient method implementations 18:15 < bridge> so should apply for mostly anywhere inside one of the functions] 18:15 < bridge> well, lets say, you want to code client component 18:16 < bridge> since you are using global space for everything, you can use literally everything, even server side globals 18:16 < bridge> im trying my best 18:16 < bridge> you are not limited to do what you want, you can even call sound driver from server part 18:16 < bridge> you just dont include the server globals 18:17 < bridge> you have client/shared/server like it is rn 18:17 < bridge> making it wrapped like this limits you and abstracts you from everything else 18:17 < bridge> yeah but do you know how to get CGameClients().m_aClients 18:17 < bridge> you dont need to include and reinclude every part from definition to get this code running, only to request interface implementation pointer 18:17 < bridge> i didn't see it in client.cpp, can you say what lines these are? 18:18 < bridge> its in gameclient.h 18:18 < bridge> its in src/game/gameclient.h 18:18 < bridge> so whats wrong? its data of all playing players on the server 18:19 < bridge> how do i get it 18:19 < bridge> somewhere theres a CGameClients object with the data i want 18:19 < bridge> ??, why kernel is problem there then? 18:19 < bridge> i dont know how to egt it 18:19 < bridge> its just undocumented, say tit straight 18:19 < bridge> it* 18:19 < bridge> good code doesnt need documentation 18:19 < bridge> (most) 18:19 < bridge> good code != readable code 18:20 < bridge> gerdoes code is good 18:20 < bridge> eee yeah 18:20 < bridge> its just horribly unreadable 18:20 < bridge> good readable code doesnt need docuemtnation 18:20 < bridge> :troll_handsome: 18:20 < bridge> good readable code doesnt need docuemtnation* 18:20 < bridge> teeworlds is not the best example of code in first 18:20 < bridge> im aware 18:20 < bridge> i dont really care about whether how tw does what it does is the best way to do what tw does 18:20 < bridge> however 18:20 < bridge> how do i get the thing i want ): 18:20 < bridge> and at second, it is a naming problem, what's problem with kernel? 18:20 < bridge> just ask it there 18:20 < bridge> because its non obvious how i get the thing i want 18:21 < bridge> i have been 18:21 < bridge> . 18:21 < bridge> my brain hurts more 18:21 < bridge> from which context? where do you want it to get? 18:21 < bridge> from a method in CGameClient 18:21 < bridge> from a method in Client 18:22 < bridge> from a method in CClient 18:22 < bridge> from CClient? 18:22 < bridge> why do you need it there in first 18:22 < bridge> i want to reset prediction 18:22 < bridge> on a message 18:22 < bridge> specifically to change the tick rate 18:22 < bridge> to change the tick rate 18:22 < bridge> otherwise it bugs out 18:22 < bridge> :think_bot: 18:23 < bridge> (or atleast im guessing prediction is messing it up) 18:23 < bridge> (i was just gonna do it and see) 18:23 < bridge> so, whats bad in OnMessage from CGameClient? 18:23 < bridge> you can get it there 18:23 < bridge> its bad that i cant figure it out 18:23 < bridge> pretend im a python soy boy, and you have to tell me exactly what i write to get the thing i want 18:23 < bridge> pretend im a python soy boy, and you have to tell me exactly what i write to get the thing i want (and youre chatgpt) 18:23 < bridge> cclient is net/protocol wise, you don't really need if you are coding underneath game 18:24 < bridge> pretend im a python soy boy, and you have to tell me exactly what i write to get the thing i want (and youre chatgpt with a working knoledge of ddnet codebase) 18:24 < bridge> its like patching engine to change flag color for example 18:24 < bridge> well i want to reset prediction when i get the NETMSG_TICK_RATE msg 18:25 < bridge> did you code it manually? 18:25 < bridge> netmsg i mean 18:25 < bridge> well i added NETMSG_TICK_RATE yeah 18:25 < bridge> you need to change it protocol.py 18:25 < bridge> or something like that, in datasrc 18:25 < bridge> but it works 18:25 < bridge> but sure 18:26 < bridge> ``` 18:26 < bridge> else if(Conn == CONN_MAIN && (pPacket->m_Flags & NET_CHUNKFLAG_VITAL) != 0 && Msg == NETMSG_TICK_RATE) 18:26 < bridge> { 18:26 < bridge> int TickRate = Unpacker.GetInt(); 18:26 < bridge> m_pConsole->Print(IConsole::OUTPUT_LEVEL_STANDARD, "YIPEE", "got tickrate"); 18:26 < bridge> if(Unpacker.Error()) 18:26 < bridge> { 18:26 < bridge> return; 18:26 < bridge> } 18:26 < bridge> // this->GameClient().m_aClients 18:26 < bridge> // m_PredictedChar.Reset(); 18:26 < bridge> m_Predicted.Reset(); 18:26 < bridge> m_PrevPredicted.Reset(); 18:26 < bridge> g_Config.m_SvTickRate = TickRate; 18:26 < bridge> } 18:26 < bridge> ``` 18:26 < bridge> it does indeed say yipee when i change it on server thru rcon 18:27 < bridge> anyway what should i do then if i shouldnt do it here 18:27 < bridge> you're recalculating prediction every time ? 18:27 < bridge> prediction depends on the tickrate, when the tick rate changes the current prediction is invalid 18:27 < bridge> move it cgameclient's onmessage, i suppose 18:27 < bridge> and it bugs out for a time proportional to the change in tickrate 18:28 < bridge> thus why i thought it was prediction 18:28 < bridge> i might be completley wrong but this was supposed to just be a see if it works xd 18:28 < bridge> why are you changing tickrate 18:28 < bridge> cuz i wana 18:28 < bridge> :kekw: fair enough 18:29 < bridge> you made me think of that russian game show player who is trapped in said gameshow 18:29 < bridge> you better ask @nuborn about prediction part (sry for ping xd) 18:29 < bridge> but still somehow doesnt hit anvil good enough to win picture of red car 18:29 < bridge> due to budget cuts or something 18:29 < bridge> well theres reset methods 18:29 < bridge> so im gonna try those 18:33 < bridge> whttps://www.independent.co.uk/news/world/americas/us-politics/jd-vance-elon-musk-x-twitter-donald-trump-b2614525.html 18:33 < bridge> https://www.independent.co.uk/news/world/americas/us-politics/jd-vance-elon-musk-x-twitter-donald-trump-b2614525.html 18:33 < bridge> :justatest: 18:35 < bridge> whos this chap 18:45 < bridge> I'd guess it detects duplicate code 18:58 < bridge> future vice president of america 18:58 < bridge> he has 0 charisma tho 18:58 < bridge> and looks like a dork xd 18:58 < bridge> he looks like not jewish ben shapiro 19:15 < bridge> i love docuemtnation 19:15 < bridge> it twas not prediction 19:26 < bridge> u should learn the basics of c++ if you haven't already 19:29 < bridge> also why the hate for python 19:32 < bridge> python is a great language as long as i dont have to use it 19:32 < bridge> :cat_cracked_hehe: 19:33 < bridge> ah, so the issue is you're skillchecked 😏 19:44 < bridge> he has a very American face 19:44 < bridge> he is the VP elect under Trump 20:02 < bridge> How to build Ddnet server.exe using sources from github:justatest: 20:02 < bridge> read readme 20:07 < bridge> i didnt fully rewrite the tutorial on how to build DDNet from source on windows for nothing montik!!!! 20:07 < bridge> how to download bot? 20:08 < bridge> can i have your ingame name really quick please? 20:08 < bridge> for academic purposes. 20:08 < bridge> ur gonna ban me? 20:08 < bridge> its tallyboy06 20:09 < bridge> nah it's just when you get caught using a bot client now 20:09 < bridge> i see this as a way to refer to your public messages 20:09 < bridge> and shame you publicly 20:09 < bridge> :poggers2: 20:09 < bridge> so u marked my name or something? 20:09 < bridge> u'r always watched now 20:09 < bridge> nice 20:09 < bridge> i dont play ddr anyway 20:10 < bridge> either way the bot clients can have viruses/miners and more while you think they are safe after they say "nah we dont have viruses" 20:11 < bridge> basics is just knowing how to program in any language with classes 20:11 < bridge> yea i wouldnt bot lol 20:11 < bridge> thats for losers 20:12 < bridge> knowing how to navigate a compleltey foreign codebase where everything is a class and if you drew a class diagram you would summon the spaghetti god... not really 20:12 < bridge> incredibly based 20:12 < bridge> thx 🤫 20:13 < bridge> Linux pros, is there a simple way to link a static library with kernel module 😬 20:13 < bridge> Linux pros, is there a simple way to link a static library with a kernel module 😬 20:14 < bridge> i only hate python as much as the next guy. basically the only reason i dont like it right now is because how cython is implemented rather than the language itself 20:14 < bridge> also alot of people learn to code on python. and with the advent of ai which can breeze past any test ever written its fair to understand that ai soy boys and python have become linked 20:14 < bridge> static link library inside a kernal module 20:14 < bridge> or other way around? 20:15 < bridge> is that what you want to do?: 20:15 < bridge> 20:15 < bridge> https://stackoverflow.com/questions/22150812/linking-kernel-module-with-a-static-lib 20:15 < bridge> ^ 20:28 < bridge> ?xd 20:28 < bridge> navigating a foreign codebase is a challenge whether it's in python or cpp 20:28 < bridge> you just gotta start small and piece it together 20:29 < bridge> ive been rumaging around lkike a gremlin for a while 20:29 < bridge> and i still cant find things without a hunt 20:29 < bridge> but then again thats alot of things 21:07 < bridge> Yeah the server side -- wow I had no idea about Discord part -- how can I learn about the details? 21:10 < bridge> Yes sorry, Chiller I was messaging you -- unsure how I can tag you 21:12 < bridge> But essentially, I imagine some server vote command to look like `vote restart official match; restart 15; record; record_statboard_csv;` or something like that 21:15 < bridge> But essentially, I imagine some server vote command to look like `vote Start official match; restrict_clan_names; restart 15; record; record_statboard_csv;` or something like that, so clan names are checked, and when disconnect happens, only clan member can substitute (not perfect solution, but still) but the clan part could be future scope 21:16 < bridge> Then the Linux server uploads the demo somewhere (or even convert to video, as the DDNet client has it, to YouTube API), and the `.csv` file available (I don't think it marks who wins though, especially when disconnected during a match -- can't count all the scores), then some R/Python/etc. script can calculate MMR/ELO using the `.csv` file, then display on the website. All triggered by `inotifywait` Linux package, which just detects new files o 21:19 < bridge> But essentially, I imagine some server vote command to look like `vote Start official match; restrict_clan_names; restart 15; record; record_statboard_csv;` or something like that. Clan names are checked, so when disconnect happens, only clan member can substitute (not perfect solution, but still) but the clan part could be future scope 21:52 < bridge> Even if I try to add to compile just one file from library, it yeps about missing `MODULE_LICENSE`, I guess I will have to make a separate version of a library which will contain license in each file :pepeW: 22:24 < bridge> You can run `scripts/fix_style.py` or use Ctrl+K+D in Visual Studio to run clang format and fix this automatically. In this case, you have some spaces in addition to tabs on the lines after those that are referenced in the error messages. 23:25 < bridge> that was a badly hidden space 🙈 thank you