00:01 <+bridge> [ddnet] Hello. Can someone please help me with pos calculations? 00:01 <+bridge> [ddnet] I can't calc even the simple Y distance. 00:01 <+bridge> [ddnet] I use this input: 00:01 <+bridge> [ddnet] V = 13.2 (default GroundJumpImpulse, assigned once (`m_Vel.y = -pTuningParams->m_GroundJumpImpulse;`)) 00:01 <+bridge> [ddnet] A = 0.5 * 50 (default Gravity multiplied by ticks per second). `CCharacterCore::Tick() { m_Vel.y += pTuningParams->m_Gravity; }` 00:01 <+bridge> [ddnet] T = V / A = 0.528 sec until the highest point. This is similar to what is observed. 00:01 <+bridge> [ddnet] S = V * T + A * T * T /2 = 13.2 * 0.528 + 25 * 0.528 * 0.528 / 2 = 3.4848. 00:03 <+bridge> [ddnet] Visually the ground jump is about 5.5 tiles / 180 units in height. 00:03 <+bridge> [ddnet] `S = 3.4848`; something like S * 50 = 174.24 would be approximately equal to the observed jump height. Is this correct? If yet then why we need the final `*50`? 00:03 <+bridge> [ddnet] Visually the ground jump is about 5.5 tiles / 180 units in height. 00:03 <+bridge> [ddnet] `S = 3.4848`; something like S * 50 = 174.24 would be approximately equal to the observed jump height. Is this correct? If yes then why we need the final `*50`? 00:05 <+bridge> [ddnet] Hello. Can someone please help me with pos calculations? 00:05 <+bridge> [ddnet] I can't calc even the simple Y distance. 00:05 <+bridge> [ddnet] I use this input: 00:05 <+bridge> [ddnet] V = 13.2 (the default GroundJumpImpulse, assigned once (`m_Vel.y = -pTuningParams->m_GroundJumpImpulse;`)) 00:05 <+bridge> [ddnet] A = 0.5 * 50 (the default Gravity multiplied by ticks per second). `CCharacterCore::Tick() { m_Vel.y += pTuningParams->m_Gravity; }` 00:05 <+bridge> [ddnet] T = V / A = 0.528 sec until the highest point. This is similar to what is observed. 00:05 <+bridge> [ddnet] S = V * T + A * T * T /2 = 13.2 * 0.528 + 25 * 0.528 * 0.528 / 2 = 3.4848. 00:06 <+bridge> [ddnet] Hello. Can someone please help me with pos calculations? 00:06 <+bridge> [ddnet] I can't calc even the simple Y distance. 00:06 <+bridge> [ddnet] I use this input: 00:06 <+bridge> [ddnet] V = 13.2 (the default GroundJumpImpulse, assigned once (`m_Vel.y = -pTuningParams->m_GroundJumpImpulse;`)) 00:06 <+bridge> [ddnet] A = 0.5 * 50 (the default Gravity multiplied by ticks per second). `CCharacterCore::Tick() { m_Vel.y += pTuningParams->m_Gravity; }` 00:06 <+bridge> [ddnet] T = V / A = 0.528 sec until the highest point. This is similar to what is observed. 00:06 <+bridge> [ddnet] S = V * T + A * T * T /2 = 13.2 * 0.528 + -25 * 0.528 * 0.528 / 2 = 3.4848. 00:06 <+bridge> [ddnet] Hello. Can someone please help me with pos calculations? 00:06 <+bridge> [ddnet] I can't calc even the simple Y distance. 00:06 <+bridge> [ddnet] I use this input: 00:06 <+bridge> [ddnet] V = 13.2 (the default GroundJumpImpulse, assigned once (`m_Vel.y = -pTuningParams->m_GroundJumpImpulse;`)) 00:06 <+bridge> [ddnet] A = 0.5 * 50 (the default Gravity multiplied by ticks per second). `CCharacterCore::Tick() { m_Vel.y += pTuningParams->m_Gravity; }` 00:06 <+bridge> [ddnet] T = V / A = 0.528 sec until the highest point. This is similar to what is observed. 00:06 <+bridge> [ddnet] S = V * T + A * T * T /2 = 13.2 * 0.528 + (-25 * 0.528 * 0.528 / 2) = 3.4848. 00:10 <+bridge> [ddnet] Hello. Can someone please help me with pos calculations? 00:10 <+bridge> [ddnet] I can't calc even the trivial Y distance. 00:10 <+bridge> [ddnet] I use this input: 00:10 <+bridge> [ddnet] V = 13.2 (the default GroundJumpImpulse, assigned once (`m_Vel.y = -pTuningParams->m_GroundJumpImpulse;`)) 00:10 <+bridge> [ddnet] A = 0.5 * 50 (the default Gravity multiplied by ticks per second). `CCharacterCore::Tick() { m_Vel.y += pTuningParams->m_Gravity; }` 00:10 <+bridge> [ddnet] T = V / A = 0.528 sec until the highest point. This is similar to what is observed. 00:10 <+bridge> [ddnet] S = V * T + A * T * T /2 = 13.2 * 0.528 + (-25 * 0.528 * 0.528 / 2) = 3.4848. 00:10 <+bridge> [ddnet] Hello. Can someone please help me with pos calculations? 00:10 <+bridge> [ddnet] I can't calc even the trivial Y distance at time. 00:10 <+bridge> [ddnet] I use this input: 00:10 <+bridge> [ddnet] V = 13.2 (the default GroundJumpImpulse, assigned once (`m_Vel.y = -pTuningParams->m_GroundJumpImpulse;`)) 00:10 <+bridge> [ddnet] A = 0.5 * 50 (the default Gravity multiplied by ticks per second). `CCharacterCore::Tick() { m_Vel.y += pTuningParams->m_Gravity; }` 00:10 <+bridge> [ddnet] T = V / A = 0.528 sec until the highest point. This is similar to what is observed. 00:10 <+bridge> [ddnet] S = V * T + A * T * T /2 = 13.2 * 0.528 + (-25 * 0.528 * 0.528 / 2) = 3.4848. 00:18 <+bridge> [ddnet] I've measured a ground jump. Seems to be `5.69 tiles = 182.08 units`. 00:28 <+bridge> [ddnet] I could tell by all the snow πŸ˜‰ 00:58 <+bridge> [ddnet] 50 ticks per second? 00:58 <+bridge> [ddnet] your unit for time seems to be seconds, the game uses ticks? 00:58 <+bridge> [ddnet] sounds about right 01:04 <+bridge> [ddnet] You think it changes something? 01:04 <+bridge> [ddnet] 01:04 <+bridge> [ddnet] V = 13.2 (the default GroundJumpImpulse, assigned once (m_Vel.y = -pTuningParams->m_GroundJumpImpulse;)) 01:04 <+bridge> [ddnet] A = 0.5 (the default Gravity ) 01:04 <+bridge> [ddnet] T = V / A = 26.4 ticks 01:04 <+bridge> [ddnet] S = V * T + A * T * T /2 = 13.2 * 26.4 + (-0.5 * 26.4 * 26.4) = 174.24 units 01:04 <+bridge> [ddnet] You think it changes something? 01:04 <+bridge> [ddnet] 01:04 <+bridge> [ddnet] V = 13.2 (the default GroundJumpImpulse) 01:04 <+bridge> [ddnet] A = 0.5 (the default Gravity ) 01:04 <+bridge> [ddnet] T = V / A = 26.4 ticks 01:04 <+bridge> [ddnet] S = V * T + A * T * T /2 = 13.2 * 26.4 + (-0.5 * 26.4 * 26.4) = 174.24 units 01:04 <+bridge> [ddnet] You think it changes something? 01:04 <+bridge> [ddnet] 01:04 <+bridge> [ddnet] V = 13.2 (the default GroundJumpImpulse) 01:04 <+bridge> [ddnet] A = 0.5 (the default Gravity) 01:04 <+bridge> [ddnet] T = V / A = 26.4 ticks 01:05 <+bridge> [ddnet] S = V * T + A * T * T /2 = 13.2 * 26.4 + (-0.5 * 26.4 * 26.4) = 174.24 units 01:05 <+bridge> [ddnet] Oh. Hm. You mean that this is the right result. πŸ€” 01:05 <+bridge> [ddnet] note that your calculation assumes continuous time 01:05 <+bridge> [ddnet] but ddnet uses discrete ticks 01:06 <+bridge> [ddnet] It is slightly different from what is registered in game but hmm. 01:06 <+bridge> [ddnet] so you'll be slightly off 01:06 <+bridge> [ddnet] Thanks, it seems to be the case. 01:06 <+bridge> [ddnet] β™₯️ 01:40 <+bridge> [ddnet] sounds really cool πŸ™‚ 01:40 <+bridge> [ddnet] you should do that πŸ˜„ 01:40 <+bridge> [ddnet] im trying to LOL 01:40 <+bridge> [ddnet] https://cdn.discordapp.com/attachments/293493549758939136/1044774438454960178/image.png 01:40 <+bridge> [ddnet] im trying to LOL 01:40 <+bridge> [ddnet] (currently all the builds im programming) 01:41 <+bridge> [ddnet] https://cdn.discordapp.com/attachments/293493549758939136/1044774438454960178/image.png 01:42 <+bridge> [ddnet] have you heard about branches? πŸ˜› 01:42 <+bridge> [ddnet] https://xkcd.com/1597/ 01:43 <+bridge> [ddnet] each folder has its updates linked to each branch in my fork 01:43 <+bridge> [ddnet] at least i think thats how you do it 01:44 <+bridge> [ddnet] each folder has its updates linked to each branch in my fork (minus mat_slime_ 01:44 <+bridge> [ddnet] each folder has its updates linked to each branch in my fork (minus mat_slime) 01:44 <+bridge> [ddnet] it's probably fine πŸ™‚ 01:45 <+bridge> [ddnet] I only have one ddnet repository on my computer 01:46 <+bridge> [ddnet] Wait, so how do you manage multiple PRs at once? 01:47 <+bridge> [ddnet] :justatest: 01:47 <+bridge> [ddnet] Multiple branches? 01:48 <+bridge> [ddnet] ui-sounds is mostly just an experimental one 01:48 <+bridge> [ddnet] https://cdn.discordapp.com/attachments/293493549758939136/1044776468816859186/image.png 01:50 <+bridge> [ddnet] you can switch between branches in your local repository 01:50 <+bridge> [ddnet] `git switch ` 01:51 <+bridge> [ddnet] Ohhh... Wouldn't you need to push your updates before switching? 01:52 <+bridge> [ddnet] if you want to push them, yes 01:54 <+bridge> [ddnet] git push origin branch 01:54 <+bridge> [ddnet] visual studio has it all in gui form which is nice imo 01:55 <+bridge> [ddnet] iirc you have to push your changes and then you can checkout to another branch 01:55 <+bridge> [ddnet] you don't have to push your changes 01:55 <+bridge> [ddnet] only if you want them pushed ^^ 01:56 <+bridge> [ddnet] you can also push them after switching branches 01:56 <+bridge> [ddnet] it tells me that i will lose my changes if i dont push and checkout 01:56 <+bridge> [ddnet] I'm so glad I have people who actually know how to use Git LOL 01:56 <+bridge> [ddnet] I'm so glad I have people in contact who actually know how to use Git LOL 01:56 <+bridge> [ddnet] hmm? are you talking about git commits? 02:02 <+bridge> [ddnet] You can use stashes 02:03 <+bridge> [ddnet] Changes will be stored locally and could be restored later 02:04 <+bridge> [ddnet] yeah i think 02:05 <+bridge> [ddnet] Also i find github desktop quite good git client, it gives all basic functional with gui 02:06 <+bridge> [ddnet] git is also very confusing to work with 02:06 <+bridge> [ddnet] for example if i want to work on two projects 02:06 <+bridge> [ddnet] one on github and one gitlab 02:06 <+bridge> [ddnet] i have to change my user settings 02:07 <+bridge> [ddnet] I think you can store creds for each repo 02:07 <+bridge> [ddnet] Or use git clients who does it πŸ₯Έ 02:07 <+bridge> [ddnet] I don't think you have to do that. can you give an example? 02:08 <+bridge> [ddnet] i really cant because half the time i dont know what im doing 02:10 <+bridge> [ddnet] https://git-scm.com/docs/gitcredentials 02:11 <+bridge> [ddnet] thanks 04:08 <+bridge> [ddnet] Quick question: How do you test other's pull requests? 04:14 <+bridge> [ddnet] Do I Click this checkout button 04:14 <+bridge> [ddnet] https://cdn.discordapp.com/attachments/293493549758939136/1044813119366647878/image.png 04:15 <+bridge> [ddnet] Maybe, in theory you just clone their branch 07:29 <+bridge> [ddnet] Ye checkout 07:29 <+bridge> [ddnet] And u dont need multiple folders 07:29 <+bridge> [ddnet] Branches are ur friend 07:29 <+bridge> [ddnet] It will also dramatically reduce ur disk space 07:30 <+bridge> [ddnet] I suggest u learn proper git xd 07:46 <+bridge> [ddnet] but thats hard :( 07:47 <+bridge> [ddnet] ddnet-9999 is now on gentoo guru https://gitweb.gentoo.org/repo/proj/guru.git/tree/games-action/ddnet 07:47 <+bridge> [ddnet] and im a maintainer 07:47 <+bridge> [ddnet] not rly 09:41 <+bridge> [ddnet] Yay, thanks! 09:43 <+bridge> [ddnet] Also, about using Rust for website. I also had the plan to switch the website from python to a compiled language a long time ago, but mostly to save RAM back then. My quick poc showed that ram usage was about the same, so I stopped 09:44 <+bridge> [ddnet] you have to git add remote the remote, git fetch it and then check out their branch. 09:54 <+bridge> [ddnet] you can also add a special remote to get access to all PRs directly 09:54 <+bridge> [ddnet] however, i don't remember the remote from GitHub 09:56 <+bridge> [ddnet] It's `pull//head` 09:57 <+bridge> [ddnet] So you add sth like `fetch = +refs/pull/*/head:refs/remotes/upstream/pr/*` 09:57 <+bridge> [ddnet] Oh thats pog 09:58 <+bridge> [ddnet] I just use the gh cli tool 09:58 <+Ryozuki> h pr checkout 123 09:58 <+Ryozuki> gh pr checkout 123 09:58 <+bridge> [ddnet] Ah there is one nowadays isn't there 09:58 <+Ryozuki> yeah 09:58 <+Ryozuki> you can also comment on and see issues irc 10:13 <+ChillerDragon> yea you can i used that to spam ddnet repo with my bot axaxax 10:13 <+ChillerDragon> oh wait no i was creating issues but commenty prolly too 10:14 <+ChillerDragon> https://zillyhuhn.com/cs/.1669194845.png 10:14 <+ChillerDragon> seems pretty complete to me! 10:16 <+ChillerDragon> is there some docs on ddnet snapshot extensions? 10:24 <+bridge> [ddnet] yeah, you spammed my git with a fucking huge PR that was a missclick from you πŸ˜„ 10:26 <+ChillerDragon> hehe 10:35 <+bridge> [ddnet] `git fetch upstream pull/6060/head:demo-skipping` then `git switch demo-skipping`. You only need to add the remote `upstream` then. You can choose whatever (unused) name you want for the local branch. 10:36 <+ChillerDragon> do the ddnet ext snap items send their size or is it pre-agreed? 10:38 <+Ryozuki> real 0m19.561s 10:38 <+Ryozuki> user 4m5.067s 10:38 <+Ryozuki> sys 0m14.590s 10:39 <+Ryozuki> i can compile ddnet in under 20s 10:39 <+Ryozuki> with rust included 10:39 <+bridge> [ddnet] It uses gcc,clang should be even faster 10:46 <+bridge> [ddnet] (release) 10:58 <+ChillerDragon> ok the way i understood ddnet snap items is: it sends type 0 with a high id and a 4 byte payload (maybe its uuid?) then the client is supposed to register those ids as types. Then the server sends those types followed by the id and then the length and then the payload. 10:58 <+ChillerDragon> does this make sense? 10:58 <+ChillerDragon> 4 int payload* so 16 byte 10:59 <+ChillerDragon> @wiki_maintainer add this quote ^ to dev wiki and give me nobel price thanks 11:00 <+bridge> [ddnet] spec? 11:01 <+bridge> [ddnet] even on a 20 cores machine, took me around a minute i think 11:02 <+bridge> [ddnet] 1 minute sounds like lto or the initial cargo update 11:05 <+ChillerDragon> omg poggers i managed to parse ddnet snap without any errors?! 11:06 <+ChillerDragon> time to put protocol reverse engineering on my CV xd 11:13 <+bridge> [ddnet] https://github.com/libsdl-org/SDL/commit/2c4159b99adf72c428347a7dea6e704314b5b6f1 11:14 <+bridge> [ddnet] sdl3 underway now 11:19 <+bridge> [ddnet] 5800x 4.85ghz 8 (16) cores and 32gb 3200mhz ram 11:19 <+bridge> [ddnet] Lol sdl 3 exists 11:20 <+bridge> [ddnet] Flex 11:20 <+bridge> [ddnet] with wayland and pipewire default :greenthing: 11:20 <+bridge> [ddnet] And a m2 pcie nvme 11:20 <+bridge> [ddnet] Also my mobo uses pcie4 11:21 <+bridge> [ddnet] But for the gpu slot iirc 11:21 <+bridge> [ddnet] Idk about the m2 12:18 <+bridge> [ddnet] yay, more units multiplier πŸ˜„ 12:18 <+bridge> [ddnet] https://www.bipm.org/en/cgpm-2022/resolution-3 14:02 <+bridge> [ddnet] ah, i relate to this one 14:02 <+bridge> [ddnet] https://www.reddit.com/r/ProgrammerHumor/comments/z2h00p/what_do_you_mean_im_not_allowed_on_github_anymore/ 14:11 <+bridge> [ddnet] <- Mahdiyar> ChillerDragon : How To use bam in ubuntu 14:11 <+bridge> [ddnet] <- Mahdiyar> for old source 15:13 <+Ryozuki> if you needed some kind of content delivery network, e.g your users upload files and allow them to be downloaded by others, do you know a good service thats not too costly? 15:14 <+Ryozuki> tldr a storage hosting or smth 15:14 <+bridge> [ddnet] Discord, it’s against TOS, but all the cool scammers do it 15:15 <+Ryozuki> oh true 15:15 <+Ryozuki> and something more legal? 15:15 <+Ryozuki> imagine i want to make some profit, i cant use discord 15:15 <+Ryozuki> xD 15:15 <+bridge> [ddnet] Do you want to host it yourself? -> ownCloud 15:15 <+Ryozuki> not rly 15:15 <+Ryozuki> i want a file storage service that e.g a web app can use to deliver files to users 15:16 <+Ryozuki> hetzner storage is quite costly 15:16 <+Ryozuki> xd 15:16 <+bridge> [ddnet] I used bunny cdn for a small thing once, they have pay as you go 15:17 <+Ryozuki> google has smth called cloud storage 15:23 <+Ryozuki> 23€/month for 1TB on google cloud on frankfurt 15:23 <+Ryozuki> according to calculator 15:24 <+Ryozuki> doesnt sound too bad 15:27 <+bridge> [ddnet] Is traffic free? Also technically a cdn will multihome your data so it can be accessed at similar speeds everywhere. Why bother hosting the data separately otherwise? 15:27 <+Ryozuki> yeah 15:27 <+Ryozuki> idk im rly ootl hee 15:27 <+Ryozuki> here 15:27 <+Ryozuki> thats why im asking 15:27 <+Ryozuki> bunny cdn or bunny storage? 15:28 <+Ryozuki> note that the things i want to store range on the 20mb to 100mb side maybe 15:31 <+Ryozuki> the bunny web looks nice 15:32 <+Ryozuki> https://bunny.net/solutions/software-distribution/ 15:32 <+Ryozuki> this looks the closest to my needs 17:24 <+bridge> [ddnet] Finally found what is causing my desktop to freeze up while building stuff. It's disk encryption. I for some reason seem to have used aes-cbc instead of aes-xts for my /home 17:24 <+bridge> [ddnet] My cpu can do 2 gig/s of aes-xts but only 700 mb/s of cbc 17:32 <+bridge> [ddnet] Hm, I've also did something like that for Infclass mod. It would be amazing to have something for improved killfeed in DDNet (I thought you're not interested in violence game types). 17:32 <+bridge> [ddnet] 17:32 <+bridge> [ddnet] The new mod-specific icons barely could interest you, but maybe you'll consider killer assistant? That one is easy to do, and it would greatly improve the players UX. 17:32 <+bridge> [ddnet] 17:32 <+bridge> [ddnet] Killer assistant is the player who somehow helped to kill the target. E.g. on FNG the killer can be the one who lasered the target, and the assistant is the one who throwed it to the spikes. Or vice versa. 17:32 <+bridge> [ddnet] The "assistant" support code is trivial (though we obviously need a new net msg for that). 17:32 <+bridge> [ddnet] https://cdn.discordapp.com/attachments/293493549758939136/1045013868486873088/image.png 17:35 <+bridge> [ddnet] Hm, I've also did something like that for Infclass mod. It would be amazing to have something for improved killfeed in DDNet (I thought you're not interested in violence game types). 17:35 <+bridge> [ddnet] 17:35 <+bridge> [ddnet] The new mod-specific icons barely could interest you, but maybe you'll consider killer assistant? That one is easy to do, and it would greatly improve the players UX. 17:35 <+bridge> [ddnet] 17:35 <+bridge> [ddnet] Killer assistant is the player who somehow helped to kill the target. E.g. on FNG the killer can be the one who lasered the target, and the assistant is the one who throwed it to the spikes. Or vice versa. 17:35 <+bridge> [ddnet] The "assistant" support code is trivial (though we obviously need a new net msg for that). 17:35 <+bridge> [ddnet] https://cdn.discordapp.com/attachments/293493549758939136/1045014701425311916/image.png 17:39 <+bridge> [ddnet] This is some good stuff 17:55 <+bridge> [ddnet] Here is the code for that (killer assistant): https://github.com/infclass/infclass-client/commit/a844c27b13c34625b88720b0f9a30166557f6b9f 17:55 <+bridge> [ddnet] It is added after the mod-specific damage icons so it won't apply clearly to the current DDNet but I would be glad to add the assistant support to DDNet and then rebase my code. 17:55 <+bridge> [ddnet] 17:55 <+bridge> [ddnet] I think I can add some `NetMessageEx("kill@netmsg.ddnet.tw")` in this weekend but it won't make much sense without a discussion on what is wanted by mods and what is acceptable for DDNet. 19:02 <+bridge> [ddnet] What error message do you get? 19:02 <+bridge> [ddnet] (@- Mahdiyar) 19:02 <+bridge> [ddnet] Which source 19:03 <+bridge> [ddnet] bam4 or bam5? 19:14 <+bridge> [ddnet] <- Mahdiyar> blocker-mod-src-master 19:14 <+bridge> [ddnet] <- Mahdiyar> There is a source that does not have CMake 19:16 <+bridge> [ddnet] <- Mahdiyar> I haven't started working with it yet chiller 19:45 <+bridge> [ddnet] hi, im modding vanilla teeworlds 0.6 and am wondering the best way to modify / access the team score from character.cpp 19:45 <+bridge> [ddnet] m_aTeamscore is defined in gamecontroller 19:59 <+bridge> [ddnet] what problem do you need to solve that the character needs to know the score 20:00 <+bridge> [ddnet] well the chars have access to GameServer(), so u probably can ask the gamecontroller too 20:00 <+bridge> [ddnet] add a virtual getter in IGameController and override it where u need it 20:09 <+bridge> [ddnet] yea i think the way i was doing it was kinda messy 20:09 <+bridge> [ddnet] i think i need to loop over all the players and call a function from their character to do what i want 20:38 <+bridge> [ddnet] GameController is the place for the mod-specific stuff. 20:38 <+bridge> [ddnet] You still need to do what was said but I'd suggest to see it from a different point of view: add an *event* handler to the game controller and then in the character *inform* the controller about the event. 20:38 <+bridge> [ddnet] 20:39 <+bridge> [ddnet] E.g. if you want to increase the team score on a character hit another character with a hammer while in the air, I'd suggest to add `IGameController::onCharacterHitCharacter(CCharacter *pCharacter, CCharacter *pTarget, WEAPON Weapon)` and call it from `CCharacter::TakeDamage()`. 20:39 <+bridge> [ddnet] Then in the game controller you can do something like `if((Weapon == WEAPON_HAMMER) && !pCharacter->IsGrounded()) { m_aTeamscore[pCharacter->GetPlayer()->GetTeam()] += 5; }` 20:39 <+bridge> [ddnet] 20:39 <+bridge> [ddnet] This way your gameplay logic 'll be incapsulated in the Mod Controller and you won't have to break into the Controller (which should define the mod rules) from a character (which should just follow the world physics). 20:42 <+bridge> [ddnet] Also, you'd better base on DDNet than on anything else. I'd say that even a DM server should just base on DDNet nowadays (although you'll have to re-add some code for that). 20:42 <+bridge> [ddnet] ah alright, thank you πŸ‘ 20:43 <+bridge> [ddnet] GameController is the place for the mod-specific stuff. 20:43 <+bridge> [ddnet] You still need to do what was said but I'd suggest to see it from a different point of view: add an *event handler* to the game controller and then in the character code *inform* the controller about the event. 20:43 <+bridge> [ddnet] 20:43 <+bridge> [ddnet] E.g. if you want to increase the team score on a character hit another character with a hammer while in the air, I'd suggest to add `IGameController::onCharacterHitCharacter(CCharacter *pCharacter, CCharacter *pTarget, WEAPON Weapon)` and call it from `CCharacter::TakeDamage()`. 20:43 <+bridge> [ddnet] Then in the game controller you can do something like `if((Weapon == WEAPON_HAMMER) && !pCharacter->IsGrounded()) { m_aTeamscore[pCharacter->GetPlayer()->GetTeam()] += 5; }` 20:43 <+bridge> [ddnet] 20:43 <+bridge> [ddnet] This way your gameplay logic 'll be incapsulated in the Mod Controller and you won't have to break into the Controller (which should define the mod rules) from a character (which should just follow the world physics). 20:44 <+bridge> [ddnet] GameController is the place for the mod-specific stuff. 20:44 <+bridge> [ddnet] You still need to do what was said but I'd suggest to see it from a different point of view: add an *event handler* to the game controller and then in the character code *inform* the controller about the event. 20:44 <+bridge> [ddnet] 20:44 <+bridge> [ddnet] E.g. if you want to increase the team score on a character hit another character with a hammer while in the air, I'd suggest to add `IGameController::onCharacterHitCharacter(CCharacter *pCharacter, CCharacter *pTarget, WEAPON Weapon)` and call it from `CCharacter::TakeDamage()`. 20:44 <+bridge> [ddnet] Then in the game controller you can do something like `if((Weapon == WEAPON_HAMMER) && !pCharacter->IsGrounded()) { m_aTeamscore[pCharacter->GetPlayer()->GetTeam()] += 5; }` 20:44 <+bridge> [ddnet] 20:44 <+bridge> [ddnet] This way your gameplay logic 'll be incapsulated into the Mod Controller and you won't have to break into the Controller (which should define the mod rules) from a character (which should just follow the world physics). 20:44 <+bridge> [ddnet] GameController is the place for the mod-specific stuff. 20:44 <+bridge> [ddnet] You still need to do what was said but I'd suggest to see it from a different point of view: add an *event handler* to the game controller and then in the character code *inform* the controller about the event. 20:44 <+bridge> [ddnet] 20:44 <+bridge> [ddnet] E.g. if you want to increase the team score on a character hit another character with a hammer while in the air, I'd suggest to add `IGameController::onCharacterHitCharacter(CCharacter *pCharacter, CCharacter *pTarget, WEAPON Weapon)` and call it from `CCharacter::TakeDamage()`. 20:44 <+bridge> [ddnet] Then in the game controller you can do something like `if((Weapon == WEAPON_HAMMER) && !pCharacter->IsGrounded()) { m_aTeamscore[pCharacter->GetPlayer()->GetTeam()] += 5; }` 20:44 <+bridge> [ddnet] 20:44 <+bridge> [ddnet] This way your gameplay logic 'll be encapsulated into the Mod Controller and you won't have to break into the Controller (which should define the mod rules) from a character (which should just follow the world physics). 20:46 <+bridge> [ddnet] GameController is the place for the mod-specific stuff. 20:46 <+bridge> [ddnet] You still need to do what was said but I'd suggest to look at it from a different point of view: add an *event handler* to the game controller and then in the character code *inform* the controller about the event. 20:46 <+bridge> [ddnet] 20:46 <+bridge> [ddnet] E.g. if you want to increase the team score on a character hit another character with a hammer while in the air, I'd suggest to add `IGameController::onCharacterHitCharacter(CCharacter *pCharacter, CCharacter *pTarget, WEAPON Weapon)` and call it from `CCharacter::TakeDamage()`. 20:46 <+bridge> [ddnet] Then in the game controller you can do something like `if((Weapon == WEAPON_HAMMER) && !pCharacter->IsGrounded()) { m_aTeamscore[pCharacter->GetPlayer()->GetTeam()] += 5; }` 20:46 <+bridge> [ddnet] 20:46 <+bridge> [ddnet] This way your gameplay logic 'll be encapsulated into the Mod Controller and you won't have to break into the Controller (which should define the mod rules) from a character (which should just follow the world physics). 20:55 <+bridge> [ddnet] Sadly ddnet ripped quite a lot of vanilla out over the years, I'm not sure if it's an easy exercise to add things back in 20:57 <+bridge> [ddnet] use tee skeleton 20:58 <+bridge> [ddnet] https://github.com/teeframe/ddnet-skeleton-readme 20:58 <+bridge> [ddnet] 20:58 <+bridge> [ddnet] use ddnet skeleton 20:58 <+bridge> [ddnet] > This repository aims to be the skeleton for creating modifications on top of the latest DDNet version. It currently modify the DDNet code so it can support teams, damage, ammo and pickup respawn features. 21:42 <+bridge> [ddnet] Consultations with all those who benefited from the platform that I shared yesterday. Believe it or leave it! 21:42 <+bridge> [ddnet] 21:42 <+bridge> [ddnet] Registration Fee\: $0.00 21:42 <+bridge> [ddnet] 21:42 <+bridge> [ddnet] Daily Win\: $2,000 21:42 <+bridge> [ddnet] 21:42 <+bridge> [ddnet] Weekly Earning\: $20,000 21:42 <+bridge> [ddnet] 21:42 <+bridge> [ddnet] Monthly profit\: $80,000. 21:42 <+bridge> [ddnet] 21:42 <+bridge> [ddnet] unrecycled money 21:42 <+bridge> [ddnet] 21:42 <+bridge> [ddnet] ask me how πŸ‘‡πŸ‘‡ 21:42 <+bridge> [ddnet] 21:42 <+bridge> [ddnet] http://t.me/Stevecoldham001 21:49 <+bridge> [ddnet] Then download bam and run it and see what happens 21:49 <+bridge> [ddnet] (@- Mahdiyar) 21:50 <+bridge> [ddnet] apt install bam 21:50 <+bridge> [ddnet] 21:50 <+bridge> [ddnet] cd mod 21:50 <+bridge> [ddnet] 21:50 <+bridge> [ddnet] bam 21:54 <+bridge> [ddnet] yo guys 21:54 <+bridge> [ddnet] imagine, ddnet exists from 2013, AND 21:54 <+bridge> [ddnet] we have 999 languages in client 21:55 <+bridge> [ddnet] but we recieve server messages(yellow) only in english 21:55 <+bridge> [ddnet] isnt that funny? 21:55 <+bridge> [ddnet] just random kid downloads game, goes ddrace, and doesnt understand shit lmao 21:55 <+bridge> [ddnet] may be we should make autotranslate server msg? 22:00 <+bridge> [ddnet] Oh, that is awesome. This is what I would do if I had the time. 22:00 <+bridge> [ddnet] In a better world we could have DDNet being a mod based on such skeleton. Of course I see how this idea is a "waste of time" for ddnet devs, so I won't even try to reason you. 22:00 <+bridge> [ddnet] 22:00 <+bridge> [ddnet] Thanks for the link, maybe we'll have such a 'base for all mods' in 2035 or 2045. 22:04 <+bridge> [ddnet] ddnet made me learn better english 22:04 <+bridge> [ddnet] which helped a lot ngl 22:06 <+bridge> [ddnet] Hm, closer to the topic: various mods have server-side translations. Would DDNet accept a NetMessageEx with various client preferences for the sake of better UX? 22:06 <+bridge> [ddnet] It won't immediately benefit to DDNet though. 22:06 <+bridge> [ddnet] 22:06 <+bridge> [ddnet] As a mod dev I'd love to get the client preferred language and the enabled skin options (whether 'vanilla only skins' checked, etc). Probably this would be useful for other mods too, and the preferred language 'll be needed for DDNet servers as well, eventually. 22:07 <+bridge> [ddnet] > maybe we'll have such a 'base for all mods' in 2035 or 2045. 22:07 <+bridge> [ddnet] 22:07 <+bridge> [ddnet] :monkalaugh: 22:07 <+bridge> [ddnet] bro predicts the future 22:13 <+bridge> [ddnet] wtf 22:21 <+bridge> [ddnet] In 2035 or 2045 will be smth like DDProRaceMaxUltimateAdvancedReloadedFinal 5 22:22 <+bridge> [ddnet] Still no accounts and all maps moved to legacy, old legacy, very old legacy categories :greenthing: 22:23 <+bridge> [ddnet] All new maps will be genrated with RyoAI written in rust 22:24 <+bridge> [ddnet] And someone would still play ddmax 23:20 <+bridge> [ddnet] I don't like sending preferred language to the server, I think we should have better localization options instead. vanilla skins only. hmm, what would you like to do with that? 23:21 <+bridge> [ddnet] I like that. I think we should add kill assists, and maybe we can also add some infclass weapons πŸ™‚ 23:22 <+bridge> [ddnet] > E.g. on FNG the killer can be the one who lasered the target, and the assistant is the one who throwed it to the spikes. Or vice versa. 23:22 <+bridge> [ddnet] i wonder which way would make more sense 23:22 <+bridge> [ddnet] nobybot 23:23 <+bridge> [ddnet] second guy the killer 23:23 <+bridge> [ddnet] u 23:23 <+bridge> [ddnet] like csgo 23:23 <+bridge> [ddnet] yeah thats what i thought 23:24 <+bridge> [ddnet] first giy killer 23:24 <+bridge> [ddnet] cuz he shot him 23:24 <+bridge> [ddnet] ajd shooting is harder 23:24 <+bridge> [ddnet] no it isnt 23:25 <+bridge> [ddnet] killing takes longer and requires u to be closer 23:26 <+bridge> [ddnet] like 23:27 <+bridge> [ddnet] shooter + killer (gun) target 23:27 <+bridge> [ddnet] yea but killing is rly easy 23:28 <+bridge> [ddnet] i thought it was more like 23:28 <+bridge> [ddnet] which behavior do u less want to reward 23:28 <+bridge> [ddnet] ppl who steal kills on purpose, or ppl who shoot and dont kill on purpose 23:28 <+bridge> [ddnet] the guy who shot should get the assist 23:28 <+bridge> [ddnet] sicne they already got an entry in the kill board for the shot 23:28 <+bridge> [ddnet] true 23:29 <+bridge> [ddnet] also wonder how this would affect the client side statboard since afaik it calculates its stats from the killfeed 23:29 <+bridge> [ddnet] shooting is point n click 23:29 <+bridge> [ddnet] killing is more risky 23:29 <+bridge> [ddnet] i found a funny image on a wiki link 23:29 <+bridge> [ddnet] https://en.wikipedia.org/wiki/Electrostatics