[SM Plugin] Surrender

Discussion in 'Coding' started by Neoony, Aug 8, 2017.

  1. Neoony

    Neoony Member

    Messages:
    1,367
    Likes Received:
    106
    Trophy Points:
    0
    Update
    v0.2
    - Added admin command "sm_srs / sm_surrenderstop" to stop surrender at any point
    - Few bugfixes and tweaks
    - Disable !sr if a vote is already in progress
    - Disable !sr after end game
    - Ported to SourcePawn Transitional Syntax
    - Added version command "sr_version"
    - Added vote results
    - Added new messages and improved old messages
    - Many small fixes and improvements
    - sr_timer now gets reset/extended when somebody else enters surrender queue
    - Added admin command "sm_srd / sm_surrenderdisable" and "sm_sre / sm_surrenderenable" to dis/enable surrender until end of the map
    - Added surrender for infantry maps
    - Solved some team conflicts
    - Added time restriction after changing team, "sr_teamtimer"
    - Divide by zero bugfix :D
    - Added HudText when successful surrender
    - Proper end game if team wins before surrender finishes


    Link to the latest version v0.2: https://git.empiresmod.com/sourcemo...acfb56a1516f6cbfbadfc06fc8/Surrender_v0.2.zip

    v0.2 Release notes:
    No commander or vote weight features yet.
    Tons of bugfixes and polishing.
    Added many requested features.

    ----------------------------
    New Admin Commands:
    Code:
    "sm_srs"
    "Stop the surrender at any time, also adds time restriction of failed vote. In chat: !srs"
    
    "sm_surrenderstop"
    "Stop the surrender at any time, also adds time restriction of failed vote. In chat: !surrenderstop"
    
    
    "sm_srd"
    "Disable the surrender at any time. In chat: !srd"
    
    "sm_surrenderdisable"
    "Disable the surrender at any time. In chat: !surrenderdisable"
    
    
    "sm_sre"
    "Enable the surrender at any time. In chat: !sre"
    
    "sm_surrenderenable"
    "Enable the surrender at any time. In chat: !surrenderenable"
    
    New Cvar: (add/set this to your Surrender.cfg, if you are updating from older version and got your own settings...or overwrite Surrender.cfg)
    Code:
    "sr_teamtimer" "def. 60"
    "How long to restrict entering surrender after team change (Seconds)"
    
    Main post updated
     
    Last edited: Sep 6, 2017
    D.D.D. Destroyer and Xyaminou like this.
  2. Neoony

    Neoony Member

    Messages:
    1,367
    Likes Received:
    106
    Trophy Points:
    0
    Update
    v0.2.1
    - Hotfix for vote results. Also from now, if you dont vote at all, you will not be counted in the required vote threshold.
    - Many small bugfixes

    - Added updater support https://forums.alliedmods.net/showthread.php?t=169095

    Link to the latest version v0.2.1: https://git.empiresmod.com/sourcemo...33224dfa09de32dae55ecc7f/Surrender_v0.2.1.zip

    v0.2.1 Release notes:
    You can now use Updater plugin to keep Surrender plugin automatically updated.
    Get updater.smx from here: https://sourcemod.docs.empiresmod.com/Updater/addons/sourcemod/plugins/updater.smx
    And required SteamWorks extension from here: http://users.alliedmods.net/~kyles/builds/SteamWorks/
    "Install" both on your server and Surrender will update whenever there is update for it.
    New version of the plugin will be loaded on map change.


    Main post updated
     
    Last edited: Sep 23, 2017
  3. D.D.D. Destroyer

    D.D.D. Destroyer Member Staff Member Moderator

    Messages:
    9,509
    Likes Received:
    111
    Trophy Points:
    0
    I can't say I'm a fan of this, I fear that there will be a lot of people surpriseed by their team's sudden loss, just because they didn't notice the vote was happening.
     
  4. Neoony

    Neoony Member

    Messages:
    1,367
    Likes Received:
    106
    Trophy Points:
    0
    Menu will anyways be there until you press any of the 2 options.

    Exit button is not allowed.
    Also, I might wanna put in some warning that the vote is gonna start, so that there wont be something completely random blocking your weapons. (less random votes)

    Anyways, it kinda sucks to have it affected by people who are afk at the end of the round, because they gave up already.
    I also originally intended to have people choices silent, but I guess thats a sourcemod server config thing. (to have it less affected by other choices)

    Dont feel like counting inaction as "No" is a good idea.
    But thats also because the votemenu should stay for the whole time of sr_votetimer. So the only way to not vote, is to have the menu whole time on the screen. (AFAIK)

    You can always !revote too. If you have maybe chosen random choice accidentally or only to get rid of it xD

    But thats also open for ideas :P
     
  5. Sgt.Security

    Sgt.Security Member

    Messages:
    3,137
    Likes Received:
    140
    Trophy Points:
    0
    I believe "not voting = no" is the behavior of most surrender systems I know.
    That is, you MUST have xx% of your team agree, to surrender.

    If you can work out a way to confirm that a player has done no action for the past few minutes(AFKer), then sure, you can exclude them.

    For players that are not voting, but are also not AFK, they really shouldn't be excluded.

    I have all my rights to stay focused for 20 seconds until I want to vote but then oh wait the vote has ended. (This has actually happened for quite a few times)

    If you feel that the surrender vote is not useful enough, use a lower threshold. (75% and below)
     
    Last edited: Sep 10, 2017
    D.D.D. Destroyer likes this.
  6. Neoony

    Neoony Member

    Messages:
    1,367
    Likes Received:
    106
    Trophy Points:
    0
    Well.
    Default is 30 seconds for the vote menu to stay on.
    Mr. X. set it to 60 seconds as I noticed.

    Lets say you would also get 5-10 seconds of warning that the vote will start.
    (could be a hudmessage warning too if anyone thinks thats a good idea)

    Iam sure you are also gonna want to change weapons sometime in that time xD
    So you dont wanna keep the menu on.

    There should also be plenty of time to notice upcoming surrender vote as there is a queue system where you need X people to enter the !surrender, for the vote to start. (to reduce useless annoying vote started by single person) [maybe this should be a percentage of people in the team, instead of a static number of people you set in config]

    Would say, that should be enough time to make up your mind :P
    ...or to detect afk

    The main thing for me is to reduce any fakes or useless votes before it starts and make the actual vote effective....which is unlike other surrender plugins..
     
    Last edited: Sep 10, 2017
  7. Sgt.Security

    Sgt.Security Member

    Messages:
    3,137
    Likes Received:
    140
    Trophy Points:
    0
    The core concept of "not voting = no" is as my 2nd line, you MUST have xx% of your team agree, to surrender.
    I can understand why this is the most popular behavior out there.

    If you can catch actual AFKers out of people who didn't vote, I 150% agree to exclude them.

    But if people hesitate to surrender (press "yes" specifically), it's probably better that we throw them into the "no" party.

    EDIT: As a side note, I did actually pay attention to some vote results, I think it's pretty regular that 10~20% non-AFK-players, for some reasons, did not participate in the surrender vote.
    I mean, I looked at minimap and pretty much all arrows are moving, but the system still received just 80%~90% vote.

    That is, I don't think "didn't vote = AFK" is an accurate equation.
     
    Last edited: Sep 10, 2017
  8. Neoony

    Neoony Member

    Messages:
    1,367
    Likes Received:
    106
    Trophy Points:
    0
    Ok.

    Maybe an idea.
    How about "Dont vote" as an option. Maybe even as option 1. (To once again reduce random Yes, and also to easily get rid of the menu)

    And that gives me another idea of a reminder, maybe 10 seconds before the vote ends, to enter !revote into the chat if you changed your mind.
    But I think I would have to make the time for the vote menu "static"...meaning that it will wait for those who selected "Dont vote" for the whole time of sr_votetimer. So the vote result will not show unless the timer goes off or the undecided decide to !revote. But I guess that shouldnt be problem. (or thats how it probably was in older surrender anyways if everyone didnt vote)

    We can work something out xD

    EDIT: "dont vote" wouldnt count as No.
    EDIT2: If somebody doesnt select it and keeps the menu up blocking his weapons, he must be afk xD

    Thats probably because they could exit it with 0.
    But I guess that means they were not counted?
    You dont mean my plugin though?

    EDIT3: Another idea is to force the vote again on them 10 seconds before it ends. So they wouldnt just miss the reminder. Might be tiny annoying I guess.
    And if they select "dont vote" they surely dont want to participate xD
     
    Last edited: Sep 10, 2017
  9. Sgt.Security

    Sgt.Security Member

    Messages:
    3,137
    Likes Received:
    140
    Trophy Points:
    0
    What about adding a "confirmation stage"?
    If a surrender vote has passed, we allow people to override it within a short period of time.

    Say, people can override it within the next 1 or 2 minutes.

    A really, really obvious message would pop up, like : "SURRENDER VOTE HAS PASSED AND YOU WILL LOSE..etc"

    Say, the surrender threshold is 75%, then during the confirmation stage, if more than 25% players do *insert anything you like here*, then they will NOT surrender.

    If the surrender vote is not being overrided then CV goes boom.

    I think if we do this, we can pretty much guarantee that if a team surrendered, more than 75% of the team agreed to.

    I mean, I have my reasons to NOT participate in a surrender vote, because I can actually be pretty goddamn focused during the vote time and my CV goes boom without my approval.

    But it's totally different if there's a confirmation stage.
    If I don't want to surrender, I would definitely give up my current behavior and override the surrender vote.
    In fact, I would AGREE that if anyone can't be arsed to give up his current behavior and override the surrender vote, then he probably doesn't care (to win).


    The difference is that "not participating in surrender vote" does not have a definite outcome, and it can be really frustrating for people who didn't vote.
    But if people don't override the surrender vote, then they WILL lose, this is definite.

    EDIT: I still think "not voting = no" is good enough.
     
    Last edited: Sep 10, 2017
  10. D.D.D. Destroyer

    D.D.D. Destroyer Member Staff Member Moderator

    Messages:
    9,509
    Likes Received:
    111
    Trophy Points:
    0
    Adding a third option complicates the system for everyone in order to benefit a small portion of people, all that just to answer the simple question of "Do you want to keep playing?". AFK detection should be handled by something else, probably a separate plugin that removes an AFK player from a team (since they inhibit a lot more things than just a surrender vote).

    And while it's not exactly feasible with the available tools, the vote shouldn't interfere with gameplay in any way - so weapon changing keys should be unaffected by it, otherwise you affect the situation at hand of everyone on the team, even the people that don't care for the vote (which this entire discussion is revolving around). There are times where a plugin's vote menu blocks a weapon change which results in death. Those are my personal favorites.

    And judging from my experience with games that do have surrender options built into them, 60 seconds can easily go past without people casting votes. There's other things to take care of during a game, like actually playing it and not internally debating the value of the struggle.
     
  11. Neoony

    Neoony Member

    Messages:
    1,367
    Likes Received:
    106
    Trophy Points:
    0
    Would be nice.
    But thats exactly why I want to add the warning about incoming vote and why I made the "surrender queue".
    The main idea of the "Dont vote" option is to be able to get rid of it if you are undecided. So that would help with this greatly.
    "Dont vote" option would actually be for the non afk ones, thats why the reminder. This is more like "I dont want to participate in the vote, close the damn menu."
    Pretty definitely AFK ones would be those who just keep the vote menu on.
    Both would not count. Just one of them gets rid of the menu and maybe get them another chance later.

    I quite like the confirmation thing. Will put that up.
    Will probably make it 30 sec default and minimum, between the results and the end of round, but server owner can customize the time.

    Doesnt have to be only confirmation, could add both things, also the "Dont vote" option which would close the menu and remind you, or force the vote on you again before it ends ( Could be a "vote later" option actually, which would then force it back to you )
    Also much better than reaching for 0 for the exit button, if I was to add it.

    But if you forget, you are out.

    Cant exactly make the menu not appear, while you are in your focus mode :D so this is one option to make it better.
     
  12. Sgt.Security

    Sgt.Security Member

    Messages:
    3,137
    Likes Received:
    140
    Trophy Points:
    0
    Well, I still think that people have valid reasons to not participate in the first stage surrender vote.
    Because you can actually be occupied during that time.
    More importantly, because the outcome of the surrender vote IS NOT certain.

    But if there's a confimation stage, I do think that people have no reason to NOT override a passed surrender vote, if they don't want to surrender.
    When players are being clearly told that they WILL lose if they don't override the surrender vote (the outcome IS certain), and they still don't do it, then I'd agree that the passed surrender vote is legit.
    Just make sure the information is loud and clear, and the command/action to override is easy.


    With all that being said, I still don't understand why we have to go through this, "not voting = no" is clean and simple, and it is the behavior of the previous surrender system as well. We are making this a lot more complicated than it should be.

    The way I view it, this is the frustration of "I didn't get to vote but we surrendered" v.s. "I voted surrender but the vote failed".
    To me, left side is absolutely stronger than right side and we need to prevent the left side from happening.
     
    Last edited: Sep 10, 2017
    D.D.D. Destroyer likes this.

Share This Page