00:00 < Oy> during a match a player can press the unready button to pause the game 00:00 < Oy> useful in clan wars etc 00:00 < bridge> [teeworlds] pause the game? 00:01 < Oy> game is paused 00:01 < bridge> [teeworlds] cant that be abused 00:01 < Oy> well, in public probably 00:02 < bridge> [teeworlds] So what is it for 00:02 < Oy> but in clan matches, players don'T 00:02 < bridge> [teeworlds] is this activated in public? 00:02 < Oy> don' 00:02 < Oy> t think so 00:02 < bridge> [teeworlds] weird feature 00:04 < Oy> really useful for non-public games 00:04 < Oy> to have timeouts 00:04 < bridge> [teeworlds] ? 00:04 < Oy> players simulated it in the past 00:04 < bridge> [teeworlds] How would that work for timeouts 00:05 < Oy> that's the timeout, game is paused 00:05 < bridge> [teeworlds] Also, in mods this can be used for a custom input I think? 00:05 < bridge> [teeworlds] So this can toggle something for example? 00:06 < Oy> possible yeah 00:07 < bridge> [teeworlds] If I create a fork of teeworlds, and make a mod out of it, and later I want to merge some new commits, lets say 1 month, 30 commits later; How do i merge them in? 00:07 <@Dune> many ways 00:07 <@Dune> `git pull origin master` does it directly 00:07 <@Dune> if you have an up to date master branch you can also do `git merge master` 00:08 <@Dune> if you only want to merge one commit you can `git cherry-pick` 00:08 < bridge> [teeworlds] up to date master? 00:08 < Oy> then you have to work on the mod not on master 00:08 < Oy> in a seperate branch 00:09 <@Dune> mod should not be your master branch 00:09 < bridge> [teeworlds] Why? 00:09 <@Dune> plenty of reasons, merging patches from parent fork as master is one 00:10 < Oy> flagball is a good example :) 00:10 < bridge> [teeworlds] So I create a new branch, work in it, and later merge the master? 00:10 < bridge> [teeworlds] But how to update the mod branch then? 00:11 <@Dune> see above 00:11 < bridge> [teeworlds] Can I also use the compare button on github? 00:12 < bridge> [teeworlds] If I work in master 00:12 <@Dune> for what purpose? 00:12 < bridge> [teeworlds] Wait, if I work on master I cant do pull requests right? 00:12 < bridge> [teeworlds] So another reason for a branch? 00:12 <@Dune> you can 00:13 <@Dune> pull requests should be on a different branch than the active one anyway 00:13 <@Dune> because if you work on it the pull request changes :) 00:13 < bridge> [teeworlds] yea 00:13 < bridge> [teeworlds] So, okay. I will make a new branch for the mod. 00:13 < bridge> [teeworlds] How do I update the mod branch with current master commits? 00:13 < bridge> [teeworlds] (im not a git wizard, sorry) 00:14 < bridge> [teeworlds] Just wanna make sure I do it clean before I start 00:14 <@Dune> I gave you three ways just above 00:14 < bridge> [teeworlds] I did not understand 00:14 <@Dune> before being able to join his own server :/ 00:14 <@Dune> oops 00:15 < bridge> [teeworlds] I can 00:15 < bridge> [teeworlds] just its not modified yet 00:15 < bridge> [teeworlds] Only the vanilla master, nothing more. 00:15 <@Dune> 1. git pull origin master does it directly 00:15 <@Dune> 2. if you have an up to date master branch you can also do git merge master 00:15 <@Dune> 3. if you only want to merge one commit you can git cherry-pick 00:15 < bridge> [teeworlds] (forked) 00:15 <@Dune> what did you not understand? 00:15 < bridge> [teeworlds] if I use git pull origin master, then I update the master branch, dont I? 00:15 <@Dune> you should maintain a local master branch that is up to date with upstream (vanilla teeworlds) 00:16 <@Dune> you update the current branch 00:16 <@Dune> so if you do it on another branch than master, it will merge somewhat 00:16 < bridge> [teeworlds] What?! xd 00:16 < bridge> [teeworlds] I am confused 00:16 <@Dune> usually, you always do git checkout master git pull origin master 00:17 <@Dune> or it will pull commits on other branches 00:17 < bridge> [teeworlds] yea 00:17 < bridge> [teeworlds] So thats how I update master branch with teeworlds master? 00:17 <@Dune> yes 00:17 < bridge> [teeworlds] and how do I update a mod branch after that 00:17 <@Dune> going in two steps is probably the cleanest way :) 00:18 <@Dune> git merge master 00:18 <@Dune> git is so nice when you can use it, and so horrible when you can4t 00:18 < bridge> [teeworlds] so its just that? 00:18 < bridge> [teeworlds] `git checkout master` 00:18 < bridge> [teeworlds] `git pull origin master` 00:18 < bridge> [teeworlds] `git checkout branch` 00:18 < bridge> [teeworlds] `git merge master` 00:18 < bridge> [teeworlds] ? 00:19 <@Dune> that works yes 00:19 < bridge> [teeworlds] And if conflicts appear? 00:19 <@Dune> good luck :D 00:19 < Oy> solve them :) 00:19 <@Dune> use gloves 00:20 <@Dune> git glove 00:21 < bridge> [teeworlds] But I could do: 00:21 < bridge> [teeworlds] `git checkout master` 00:21 < bridge> [teeworlds] `git pull origin master` 00:21 < bridge> [teeworlds] go to github, compare between master branch and modbranch and then create a pull request, 00:21 < bridge> [teeworlds] `git checkout pullrequest-branch` 00:21 < bridge> [teeworlds] `git pull` 00:21 < bridge> [teeworlds] merge conflicts I saw on the pull request changes tab, merge pull request? 00:22 < bridge> [teeworlds] fix conflicts* 00:22 < Oy> why don't you do it locally? 00:22 <@Dune> sounds like it works, it's quite convoluted though... 00:22 <@Dune> +1 doing it locally is easier 00:23 < bridge> [teeworlds] Im not a git wizard, I dont know how to use it for such things 00:23 < Oy> you could use some visual git program if command line is too heavy 00:23 < Oy> like sourcetree 00:23 <@Dune> I recommend sublime merge :) 00:24 <@Dune> @fokkonaut: well when you git merge and conflicts appear git basically stops there 00:24 <@Dune> you have to edit the files to resolve the conflicts 00:24 <@Dune> and then git commit 00:25 < bridge> [teeworlds] But if I use the pull request method, I can see if git automatically does sonething I dont want, change it before the merge and the go on? 00:25 <@Dune> git probably won't automatically do something you don't want 00:26 < bridge> [teeworlds] So they wont just overwrite a line? But anyways, I can check if with new commits applied it still is in order and like it should be 00:26 <@Dune> yeah never had problems with git auto stuff 00:27 < bridge> [teeworlds] Okay, I will trust you :D 00:27 < bridge> [teeworlds] For doing it locally its just this, correct? 00:27 < bridge> [teeworlds] git checkout master 00:27 < bridge> [teeworlds] git pull origin master 00:27 < bridge> [teeworlds] git checkout branch 00:28 < bridge> [teeworlds] git merge master 00:28 < bridge> [teeworlds] (if more branches, then the last two for every branch?) 00:28 <@Dune> yes 00:29 < bridge> [teeworlds] Thanks alot 00:29 <@Dune> np. that is if origin is teeworlds/teeworlds, otherwise you have to add the remote with `git remote add` 00:30 < bridge> [teeworlds] Jup 00:31 < bridge> [teeworlds] And Dune, Oy, I wanted to apologize for my first appearance, I was not really kind towards you... 00:32 <@Dune> Don't worry, @fokkonaut. Oy just left though 01:29 < bridge> [teeworlds] fokko nobo appologizing lol 01:29 < bridge> [teeworlds] didnt see that yet 01:30 < bridge> [teeworlds] whats next? Ryo apologizing? xd 01:30 <@Dune> maybe a teeworlds release without last minute emergency bug fixes :') 01:31 < bridge> [teeworlds] that would be fun too 01:46 < bridge> [teeworlds] How does the bot system work in 0.7? 01:46 <@Dune> There is a flag for NPCs 01:46 < bridge> [teeworlds] Can I mark a player as a bot? 01:46 <@Dune> the server can say "this dude is a bot" 01:46 <@Dune> yes 01:46 < bridge> [teeworlds] Huh, how 01:46 < bridge> [teeworlds] so i dont have to hide them from master? 01:46 <@Dune> yes, not anymore 01:46 <@Dune> in the server browser, there is a "hide bots" option 01:46 <@Dune> if disabled, it will show NPCs 01:47 < bridge> [teeworlds] And can these guys move? 01:47 <@Dune> yes 01:47 < bridge> [teeworlds] Where is the code for that 01:47 <@Dune> you can even falsely tag real players as bots, no restriction 01:47 < bridge> [teeworlds] lol 01:47 <@Dune> hmm 01:48 <@Dune> should be something in network.py 01:48 < bridge> [teeworlds] I mean the code for the movement 01:48 <@Dune> yeah playerflags 01:48 <@Dune> `PlayerFlags = Flags("PLAYERFLAG", ["ADMIN", "CHATTING", "SCOREBOARD", "READY", "DEAD", "WATCHING", "BOT"])` 01:48 <@Dune> huh, there is no such code 01:49 <@Dune> bot just means server controlled 01:49 <@Dune> it's an ongoing issue though :) 01:49 < bridge> [teeworlds] Oh, I thought there is movement ready 01:49 < bridge> [teeworlds] How to add such a bot? Are they still the good old not working but server crashing debug bots? :p 01:50 <@Dune> you can have dummies with dbg_dummies [nb] if that's what you mean 01:50 < bridge> [teeworlds] Yes, thats what I mea 01:50 < bridge> [teeworlds] n 01:50 <@Dune> that needs a reload 01:50 < bridge> [teeworlds] Ik 01:51 < bridge> [teeworlds] One thing I saw, that made me sad, was that gun and hammer are no longer pickups :( not possible to make gun and hammer pickups anymore 01:51 <@Dune> really? didn't see that change 01:51 < bridge> [teeworlds] Yep 01:51 < bridge> [teeworlds] I tried but did not work 01:51 <@Dune> You can make laser ammo pickups though somehow 01:52 <@Dune> @Slayer *gV* did that for his vampire mod 01:52 < bridge> [teeworlds] I know, I have them 01:52 < bridge> [teeworlds] Uh nice 01:53 < bridge> [teeworlds] @Dune the change was that pickups now have their own array and we dont send a WEAPON_ anymore 01:53 < bridge> [teeworlds] they have PICKUP_ now, without hammer and gun 01:53 <@Dune> oh, okay 01:53 < bridge> [teeworlds] enum* not array 01:55 < bridge> [teeworlds] Can I remove folders like Travis, or will it break auto merge compatibility? 01:56 <@Dune> Travis? ah the CI stuff 01:56 < bridge> [teeworlds] or removing vanilla functions? 01:56 <@Dune> that is fine 01:56 <@Dune> if a change occurs on Travis or those functions, you'll probably have git ask you what to do 01:56 < bridge> [teeworlds] But then I need to resolve conflicts i guess 01:56 <@Dune> probably not even, if you delete the whole file 01:56 < bridge> [teeworlds] Ah nice 01:56 <@Dune> just ignore the changes anyway 01:57 < bridge> [teeworlds] and also if I delete like ctf.cpp? 01:57 <@Dune> yeah, it'll be fine 01:57 < bridge> [teeworlds] good 01:58 < bridge> [teeworlds] 64p are now supported, right? Also visually 02:00 <@Dune> yeah but the scoreboard won't go very far 02:00 < bridge> [teeworlds] Sadly 02:00 < bridge> [teeworlds] We need a new scoreboard 02:01 <@Dune> Yeah 02:01 <@Dune> We could suggest a double-column display that would support 32p for non-team gamemodes 02:01 <@Dune> That wouldn't be too much effort 02:01 <@Dune> Still won't cover 64p 02:01 < bridge> [teeworlds] We could make 2 boards 02:01 < bridge> [teeworlds] 2 sites 02:02 < bridge> [teeworlds] 32 per site, 16 per column 02:02 <@Dune> holding tab + using pageup/pagedown you mean? 02:02 <@Dune> that would need to be binds though, some people use those keys :/ 02:03 < bridge> [teeworlds] Then we would need 1. two binds for scoreboard, which would not be good i guess 2. a composed bind with TAB or 3. with mouse, which would impact the gameplay, which is not good. I think 2 is the best 02:03 <@Dune> yeah 02:03 < bridge> [teeworlds] We dont use the keys, if its composed 02:03 < bridge> [teeworlds] or like TAB + 1 or 2 02:04 <@Dune> TAB+1/2/3/4 is probably a bad default, since people want to use weapon keys while looking at the scoreboard 02:04 < bridge> [teeworlds] Yea 02:04 <@Dune> composed binds work with modifiers 02:04 < bridge> [teeworlds] I have no idea about that 02:04 <@Dune> I suggest something that needs two hands, like TAB+pageup 02:04 < bridge> [teeworlds] Yea, Id like to have it editable tho 02:04 <@Dune> rand, maybe you already thought of that and saw an issue with it? I remember you did some scoreboard stuff 02:05 < bridge> [teeworlds] Because I think I would set it to TAB+kp_minus and plus 02:05 <@Dune> there are already +prev and +next commands for prev/next spectator 02:05 <@Dune> so it wouldn't be new to make bindable commands for that 02:05 < bridge> [teeworlds] Yep 02:06 < bridge> [teeworlds] I suggest making it all customizable; if someone edits scoreboard bind to e.g. h, then it would be h+scoreboardbind down or up 02:06 <@Dune> https://github.com/teeworlds/teeworlds/issues/1828 is still open 02:06 <@Dune> yeah of course it should be bindable, not a problem 02:07 <@Dune> you don't want to ever use the mouse though, that will fuck up gameplay 02:08 <@Dune> being able to scroll the chat when holding down show_chat would be nice tho 02:10 < bridge> [teeworlds] Yea 02:22 < bridge> [teeworlds] Dune, if I remove client folders and files from my mod branch (bcs its only a servermod), that will not affect anything right 02:23 <@Dune> huuh, not so sure about that 02:23 <@Dune> if you don't touch them, leave them 02:23 <@Dune> you'll get a lot of undefined stuff errors afaik 02:23 < bridge> [teeworlds] ok, but i can remove the gamemodes? 02:24 < bridge> [teeworlds] and travis circleci appveyor? 02:25 <@Dune> that's not too hard I think 02:26 <@Dune> yeah travis is only used by github 02:26 < bridge> [teeworlds] ok 08:14 < rand> DuneĀ : nothing done about the scoreboard 19:44 < TeeSlayer> I think my server is getting ddosed, lol, I cannot even connect via ssh 19:46 < TeeSlayer> or my provider is just bad 19:58 < TeeSlayer> if this keeps up, I'll just take it down completely. it looks like a 1:1 clone for my server setup suddenly appeared anyway 19:59 <@Dune> TeeSlayer, you think it's related to the possible ddos? 19:59 <@Dune> honeypot or something? 20:00 < TeeSlayer> honeypot? 20:01 <@Dune> people connecting to those servers thinking it's yours 20:02 < TeeSlayer> well it's not that kind of "1:1 copy" :D 20:02 < TeeSlayer> if you mean B* 20:03 <@Dune> ah, okay :) 20:03 < TeeSlayer> he only stole my naming scheme, but I'm okay with it :D 21:10 < bridge> [teeworlds] 21:10 < bridge> [teeworlds] https://cdn.discordapp.com/attachments/490150878934990850/611275438874165299/unknown.png 21:10 < bridge> [teeworlds] does anyone have an idea? 21:11 <@Dune> If I lived 200km more east, I would 21:19 < bridge> [teeworlds] it only happens on windows... not on inux 21:19 < bridge> [teeworlds] linux* 21:33 <@Dune> translate? 21:36 < bridge> [teeworlds] ```/home/teeworlds/git/teeworlds/src/game/server/score/file_score.cpp:200:19: required from here 21:36 < bridge> [teeworlds] /usr/include/c++/6/bits/predefined_ops.h:72:22: error: no match for 'operator<' (operand types are 'const CFileScore::CPlayerScore' and 'CFileScore::CPlayerScore') 21:36 < bridge> [teeworlds] { return __val < *__it; }``` 21:36 < bridge> [teeworlds] line 200: 21:36 < bridge> [teeworlds] `sort(m_Top.all());` 21:36 < bridge> [teeworlds] 21:36 < bridge> [teeworlds] function around it: 21:36 < bridge> [teeworlds] ```void CFileScore::UpdatePlayer(int ID, float Score, 21:36 < bridge> [teeworlds] float aCpTime[NUM_CHECKPOINTS]) 21:36 < bridge> [teeworlds] { 21:36 < bridge> [teeworlds] const char *pName = Server()->ClientName(ID); 21:36 < bridge> [teeworlds] 21:36 <@Dune> don't do that, @fokkonaut 21:36 < bridge> [teeworlds] lock_wait(gs_ScoreLock); 21:36 < bridge> [teeworlds] CPlayerScore *pPlayer = SearchScore(ID, 0); 21:36 < bridge> [teeworlds] 21:36 <@Dune> one message = one line, it's incredibly floody 21:36 < bridge> [teeworlds] if (pPlayer) 21:36 < bridge> [teeworlds] { 21:36 < bridge> [teeworlds] for (int c = 0; c < NUM_CHECKPOINTS; c++) 21:36 < bridge> [teeworlds] pPlayer->m_aCpTime[c] = aCpTime[c]; 21:36 < bridge> [teeworlds] 21:36 < bridge> [teeworlds] pPlayer->m_Score = Score; 21:36 < bridge> [teeworlds] str_copy(pPlayer->m_aName, pName, sizeof(pPlayer->m_aName)); 21:36 < bridge> [teeworlds] 21:36 < bridge> [teeworlds] sort(m_Top.all()); 21:36 < bridge> [teeworlds] } 21:36 < bridge> [teeworlds] else 21:36 < bridge> [teeworlds] m_Top.add(*new CPlayerScore(pName, Score, aCpTime)); 21:37 < bridge> [teeworlds] 21:37 < bridge> [teeworlds] lock_unlock(gs_ScoreLock); 21:37 < bridge> [teeworlds] Save(); 21:37 < bridge> [teeworlds] } 21:37 < bridge> [teeworlds] On 0.6 this exact same file is working, I have no idea whats wrong 21:37 < bridge> [teeworlds] oh, sorry 21:41 < bridge> [teeworlds] Do you have any idea? 21:50 <@Dune> you can't compare two `CPlayerScore` because they don't have an operator< defined 21:50 < bridge> [teeworlds] So how do I fix that? 21:51 <@Dune> declare an operator< 21:51 < bridge> [teeworlds] How? 21:51 <@Dune> https://www.google.com/search?q=declare+an+operator+c%2B%2B 21:54 < bridge> [teeworlds] This is in the file already 21:54 < bridge> [teeworlds] ```bool operator<(const CPlayerScore& other) { return (this->m_Score < other.m_Score); }``` 21:57 <@Dune> somehow the compiler isn't aware of this, so you probably need to include this file or something 21:57 <@Dune> I don't have that in my teeworlds, so I assume it's part of a modification 21:58 < bridge> [teeworlds] Yes, it is, and yes, this is also included 21:59 <@Dune> ah, the issue is maybe the const then 21:59 <@Dune> edit it to bool operator<(const CPlayerScore& other) const 21:59 < bridge> [teeworlds] without const it also doesnt work 21:59 < bridge> [teeworlds] ok, sec 21:59 < bridge> [teeworlds] same problem 22:00 < bridge> [teeworlds] OH NO 22:00 < bridge> [teeworlds] wait, it works 22:00 < bridge> [teeworlds] Thanks very much! 22:00 <@Dune> this is because without const, the method can not be applied to const objects :) 23:15 < bridge> [teeworlds] Did anybody take a look at github actions? 23:17 <@Dune> probably not 23:18 < bridge> [teeworlds] could be a future way to get rid of the build server 23:18 <@Dune> there is a build server? 23:18 < bridge> [teeworlds] how do you do your releases? 23:19 <@Dune> I build shit by hand, like in the old days 23:20 <@Dune> (heinrich5991 put everything in a script so I don't do anything really) 23:20 < bridge> [teeworlds] Is this by design so you are another level of QoS? Or would you like it to be automated? 23:20 < bridge> [teeworlds] (heinrich did multiple scripts for different CI/CD services) 23:21 <@Dune> It's not too much of a hassle to do that every 3 months really 23:21 < bridge> [teeworlds] you could make current master builds as test/trunk package ^^ 23:22 < bridge> [teeworlds] but okay, if you prefer doing it by hand 23:23 <@Dune> a daily build would be nice 23:24 <@Dune> not so much for the release as for having an up-to-date test version 23:24 < bridge> [teeworlds] exactly 23:24 < bridge> [teeworlds] and Github Actions wants to be an inbuild CI/CD for free from github for github 23:25 <@Dune> well that's cool 23:25 < bridge> [teeworlds] we are currently using only CI (because money) 23:25 < bridge> [teeworlds] *you 23:35 <@heinrich5991> what is continous delivery? 23:35 <@heinrich5991> is it producing binary artifacts for people to download? 23:36 <@heinrich5991> that can be done with our current services already. that doesn't mean we can't use github actions