[ALPHA] Cooperative Exits Alpha RC1

Maps, modifications, add-ons, projects, and other releases for Zandronum. Also includes announcers.
Post Reply
User avatar
Polygon
 
Posts: 61
Joined: Tue Apr 26, 2016 11:12 pm
Clan: Nuclear Empire
Clan Tag: [NE]

[ALPHA] Cooperative Exits Alpha RC1

#1

Post by Polygon » Fri Nov 24, 2017 10:46 pm

Cooperative Exits
An addon used to extend functionality of exit triggers in a more fair and balanced way with a time system.
WARNING THIS ADDON IS CURRENTLY IN ALPHA AND NOT EVERYTHING IS EXPECTED TO WORK AS INTENDED
If you've found a bug please reply to this thread with the steps to reproduce and we will get working on it asap.


Lead Developer: Polygon
Co-Developer: Michaelis
Special Thanks: TB-303 for providing us with a testing mapset.
Designed for: Zandronum

What is Cooperative Exits?

Simply put it's a server addon that is designed to dynamically handle the exit triggers in multiplayer sessions.
It also comes with some custom cvars to allow server administrators further customize how they want the addon to work.
This addon may come in handy for you if you do not want speed runners coming into your multiplayer session and completing each map in 30 seconds or less
or maybe you want to use it for a mod that rewards you with completion bonuses such as Death and Decay or D4T and you want to encourage players to spend more time on maps.
Maybe you just like exploring maps but you cant because people rush to the exit too quickly. Or maybe you just want to wipe all those demons off the face of the map before you are satisfied.

This addon replaces exit triggers to instead trigger a timer to start counting down which is defined at start by "ce_timelimit" in the form of seconds.
The addon will also divide the timer up fairly according to how many players are in the server. By the time there is only a set amount of people left
Which is defined by "ce_playerfinalnum" the timer will change to whatever ce_finalcountdown is in seconds but only if that amount of time has not been reach yet.

You can also change how many players are required to activate the exit button before the timer is initiated.

Other things we've kept track of is making sure that when players leave and they've activated the exit. The time that was taken from that exit activated by a player is added
back onto the timer as if they never activated the exit. When all players have activated the exit, The map is considered "Over" and the map successfully exits.
If the timer reaches "0:00" The map is also considered "Over" and the map changes as well.

TL; DR

The addon adds a timer instead of exiting you off the map and dynamically lowers to how many players have activated the exit, When the timer reaches 0 or when all players activate the exit the map ends.

List of CVAR's and their defaults.

Code: Select all

ce_timelimit -- Sets what time the timer should start at (In seconds). -- (Default: 600)
ce_playertimernum -- This is for how many players are required to activate the exit before the timer appears. -- (Default: 1)
ce_debug -- Debugging information (All players will see this) -- (Default: 0)
ce_playerfinalnum -- How many players before it starts the final countdown? -- (Default: 1)
ce_finalcountdown -- How many seconds will the timer countdown from when there is only <ce_playerfinalnum> left? (You define how many left with ce_playerfinalnum) -- (Default: 30) 
Things to Note:
  • This addon only works with BOOM and Vanilla maps. This is due to limitations with xlat, a map translator built into zdoom originally designed for compatibility purposes. It will not work for UDMF.
    There is already a case for this issue on the bug tracker if you would like to see UDMF support for xlat and in turn, support for the addon please show your support and voice your opinion here https://zandronum.com/tracker/view.php?id=1594
  • If you decide to change the CVARS please note they do not save if you shutdown your server. Make an additional .cfg file and have that .cfg file ran at the end of your main .cfg eg. "exec cfg/coopexit.cfg" with the custom cvars and your changes placed inside.
  • I would recommend not changing any of the cvars while a map is in session, This addon is not currently equipped to handle changes while a game is in progress. Most cvars are loaded when the map starts and some when a player triggers an exit.
  • This addon is 100% open-source, You may use this directly for any mod you may be working on or even improve on it as long as you credit us, Polygon and Michaelis.
Download Latest: coopexit_alpha_rc1_hotfix1.pk3

Mirrors:
allfearthesentinel.net

Known Bugs:

Code: Select all

(Rare) Map exits randomly when the exit has not even been activated.
Timer sometimes does not get set to how many seconds ce_finalcountdown is when there is only one person left to activate the exit.
Players can activate the exit and the map will just exit sometimes without initiating the script (Possibly a survial issue and players joining or disconnecting while a game is in session)
In survival, Dead players do not decrease Required Presses (Fixed)
In survival, smashedExits does not decrease when a player dies after pressing the exit.
Changelog:

Code: Select all

11/26/2017 -- RC1 Hotfix
Fixed:
* Losing all your lives after activating the exit with multiple people can cause the required amount of exits to go into the negatives.
* Map has a possibility to advance several times over with multiple players.
* Timer resets when an exit was never activated and a player disconnects.
* Hud hints do not display sometimes when a player activates the exit.

Added:
* Improved Functionality in Survival

11/25/2017 -- RC1
Initial Release
Last edited by Polygon on Wed Dec 13, 2017 9:44 pm, edited 16 times in total.

User avatar
Empyre
Zandrone
Posts: 1090
Joined: Sun Jul 08, 2012 6:41 am
Location: Garland, TX, USA

[ALPHA] Re: Cooperative Exits Alpha RC1

#2

Post by Empyre » Sun Nov 26, 2017 1:35 am

I like this idea. I might implement something similar in my UDMF maps. How are you handling multiple exit lines, like an exit teleport pad? What about a secret exit?
"For the world is hollow, and I have touched the sky."

User avatar
Polygon
 
Posts: 61
Joined: Tue Apr 26, 2016 11:12 pm
Clan: Nuclear Empire
Clan Tag: [NE]

[ALPHA] Re: Cooperative Exits Alpha RC1

#3

Post by Polygon » Sun Nov 26, 2017 3:12 am

Empyre wrote:
Sun Nov 26, 2017 1:35 am
I like this idea. I might implement something similar in my UDMF maps. How are you handling multiple exit lines, like an exit teleport pad? What about a secret exit?
I'm using something called xlat which is a map translator. It was originally made for compatibility purposes but I'm using it to modify existing action numbers within a map.
Keep in mind however xlat is not compatible with UDMF formats. If you wanted to do this you'll need to put it in your map directly.

Secret Exits are not entirely handled 100% with this version as of yet considering this is just an Alpha Release Candidate.

It's all open source so you can also look in the acs source itself.


The xlat code in the xlat folder and for your convinence I'll post it here.

Code: Select all

#include "xlat/doom.txt"
//Unavailable because xlat does not work with UDMF These can be uncommented if UDMF support is ever available for xlat.
//243 = USE|REP, ACS_ExecuteAlways(17293 , 0, 0, 0, 0) //Exit_Normal (0), Exit Level switch (UDMF)
//244 = USE|REP, ACS_ExecuteAlways(17293 , 0, 1, 0, 0) //Exit_Secret (0), Exit Level switch secret (UDMF)
//75 = USE|REP, ACS_ExecuteAlways(17293 , 0, 0, 0, 0) //Exit_EndGame (0), Exit Level Endgame (UDMF)
//75 = WALK|REP, ACS_ExecuteAlways(17293 , 0, 0, 0, 0) //Exit_EndGame (0), Exit Level walk Endgame (UDMF)
11 = USE|REP, ACS_ExecuteAlways(17293 , 0, 0, 0, 0) //Exit_Normal (0), Exit Level switch (Boom)
51 = USE|REP, ACS_ExecuteAlways(17293 , 0, 1, 0, 0) //Exit_Secret (0), Exit Level switch secret (Boom)
52 = WALK|REP, ACS_ExecuteAlways(17293 , 0, 0, 0, 0) //Exit_Normal (0) Exit Level walk (Boom)
124 = WALK|REP, ACS_ExecuteAlways(17293 , 0, 1, 0, 0) //Exit_Secret (0) Exit Level walk secret (Boom)
197 = SHOOT|REP, ACS_ExecuteAlways(17293 , 0, 1, 0, 0) //Exit_Normal (0), Exit Level Shoot (Boom)
198 = SHOOT|REP, ACS_ExecuteAlways(17293 , 0, 1, 0, 0) //Exit_Secret (0), Exit Level Shoot Secret (Boom)
The syntax is as follows:

<action number> = <USE|REP|WALK|SHOOT|MONST|MONWALK|FIRSTSIDE>, ACS_ExecuteAlways(<Script Number> , 0, 0, 0, 0)

Action number corresponds to the map formats action number so when this action number is activated it executes a script instead essentially overriding it.

The second are flags

Code: Select all

WALK -- When a player walks into the exit
USE -- When a player uses the exit
SHOOT -- When a player shoots the exit
MONST -- Not entirely sure but I think it's when you kill a monster that triggers an exit.
MONWALK -- When a monster walks into the exit
REP -- Is this action repeatable or not?
FIRSTSIDE -- Have no clue. 

Code: Select all

ACS_ExecuteAlways(<Script Number> , 0, 0, 0, 0)
I have no clue what the numbers at the end do to be completely honest with you. Sorry.

Also you need to include in a file called MAPINFO with something like this in it

Code: Select all

GameInfo
{
translator = "xlat/<translatorname>.txt"
}
Not sure if this is what you were asking but here you go anyway!

User avatar
Polygon
 
Posts: 61
Joined: Tue Apr 26, 2016 11:12 pm
Clan: Nuclear Empire
Clan Tag: [NE]

[ALPHA] Re: Cooperative Exits Alpha RC1

#4

Post by Polygon » Sun Nov 26, 2017 6:24 am

I've released a hotfixed version of Cooperative Exits mainly regarding survival functionality, Download and Mirrors have been updated! Check the changelogs to see a list of fixes and additions!

User avatar
Ivan
Addicted to Zandronum
Posts: 2135
Joined: Mon Jun 04, 2012 5:38 pm
Location: Omnipresent

[ALPHA] Re: Cooperative Exits Alpha RC1

#5

Post by Ivan » Sun Nov 26, 2017 10:07 am

What happens with death exits?
=== RAGNAROK DM ON ... uh... dead forever? ===
=== ALWAYS BET ON ... uh... dead forever? ===
=== Who wanta sum wang? ===
=== Death and Decay - A new Monster/Weapon replacer ===

User avatar
Polygon
 
Posts: 61
Joined: Tue Apr 26, 2016 11:12 pm
Clan: Nuclear Empire
Clan Tag: [NE]

[ALPHA] Re: Cooperative Exits Alpha RC1

#6

Post by Polygon » Sun Nov 26, 2017 10:16 am

Ivan wrote:
Sun Nov 26, 2017 10:07 am
What happens with death exits?
Nothing, The map just exits.

Same with killing monsters to trigger an exit, Killing Romero head, Monsters that walk on the exit, Etc. Anything that the player doesn't Directly interact with eg. Shooting, using, or walking. Reason behind this is because It's a bit hard to make the above repeatable and handle it properly.

Do you suggest I see if I can add a way to handle death exits? If so could you explain to me the benefits of adding that in? I guess I haven't seen enough maps with death exits to warrant any sort of intercept from this addon, But I'm not close-minded to the idea!

(Absolutely love your mod Death and Decay by the way, big fan <3)

User avatar
mifu
Lead Administrator
Posts: 1025
Joined: Tue May 29, 2012 10:34 am
Location: Aussie Land
Clan: Demon RiderZ

[ALPHA] Re: Cooperative Exits Alpha RC1

#7

Post by mifu » Sun Nov 26, 2017 10:42 am

Scythe 2 has a few of them. So does a few other mapsets.

User avatar
Ivan
Addicted to Zandronum
Posts: 2135
Joined: Mon Jun 04, 2012 5:38 pm
Location: Omnipresent

[ALPHA] Re: Cooperative Exits Alpha RC1

#8

Post by Ivan » Sun Nov 26, 2017 11:28 am

Polygon wrote:
Sun Nov 26, 2017 10:16 am
Ivan wrote:
Sun Nov 26, 2017 10:07 am
What happens with death exits?
Nothing, The map just exits.
There are quite a few map packs that utilize a death exit to enforce player to start with a pistol. In such cases the guy could still rush in and exploit, at the expense of his weapons of course. I'm also curious to see if they can be detected at all, I tried doing so sometime ago for DnD with no success. Maybe you can find something :P
=== RAGNAROK DM ON ... uh... dead forever? ===
=== ALWAYS BET ON ... uh... dead forever? ===
=== Who wanta sum wang? ===
=== Death and Decay - A new Monster/Weapon replacer ===

User avatar
Polygon
 
Posts: 61
Joined: Tue Apr 26, 2016 11:12 pm
Clan: Nuclear Empire
Clan Tag: [NE]

[ALPHA] Re: Cooperative Exits Alpha RC1

#9

Post by Polygon » Sun Nov 26, 2017 11:48 am

Ivan wrote:
Sun Nov 26, 2017 11:28 am
Polygon wrote:
Sun Nov 26, 2017 10:16 am
Ivan wrote:
Sun Nov 26, 2017 10:07 am
What happens with death exits?
Nothing, The map just exits.
There are quite a few map packs that utilize a death exit to enforce player to start with a pistol. In such cases the guy could still rush in and exploit, at the expense of his weapons of course. I'm also curious to see if they can be detected at all, I tried doing so sometime ago for DnD with no success. Maybe you can find something :P
Thank you for your input, I can see now that death exits are important!
I will most certainly see what I can do and update if I am successful :o!

User avatar
Empyre
Zandrone
Posts: 1090
Joined: Sun Jul 08, 2012 6:41 am
Location: Garland, TX, USA

[ALPHA] Re: Cooperative Exits Alpha RC1

#10

Post by Empyre » Sun Nov 26, 2017 7:14 pm

I was talking about including some acs in my UDMF maps. I'll look at your acs to see if I can figure it out.

This explains what those numbers do: https://zdoom.org/wiki/ACS_ExecuteAlways
"For the world is hollow, and I have touched the sky."

User avatar
Polygon
 
Posts: 61
Joined: Tue Apr 26, 2016 11:12 pm
Clan: Nuclear Empire
Clan Tag: [NE]

[ALPHA] Re: Cooperative Exits Alpha RC1

#11

Post by Polygon » Sun Nov 26, 2017 10:25 pm

Ivan wrote:
Sun Nov 26, 2017 11:28 am
Polygon wrote:
Sun Nov 26, 2017 10:16 am
Ivan wrote:
Sun Nov 26, 2017 10:07 am
What happens with death exits?
Nothing, The map just exits.
There are quite a few map packs that utilize a death exit to enforce player to start with a pistol. In such cases the guy could still rush in and exploit, at the expense of his weapons of course. I'm also curious to see if they can be detected at all, I tried doing so sometime ago for DnD with no success. Maybe you can find something :P
It would be much easier to do if there was some sort of "DEATH" flag for xlat. However I am not finding any. I'm looking in here for available flags https://github.com/rheit/zdoom/blob/mas ... /defines.i However all I'm seeing is the ones I mentioned earlier...

If I were to pull this off to detect death exits it would look something like this

Code: Select all

11 = DEATH|REP, ACS_ExecuteAlways(17293 , 0, 0, 0, 0) //Exit_Normal (0), Exit Level switch (Boom/Vanilla)
Unfortunately... I don't believe this is possible :(... At least to my knowledge.

User avatar
Ivan
Addicted to Zandronum
Posts: 2135
Joined: Mon Jun 04, 2012 5:38 pm
Location: Omnipresent

[ALPHA] Re: Cooperative Exits Alpha RC1

#12

Post by Ivan » Sun Nov 26, 2017 11:25 pm

I really wish there was a "EXIT" event that triggered before a map was about to exit. That'd really help make things a lot easier for us. The script type would also put on hold the map transition until it was done so you could do fancy things like a custom intermission and such...
=== RAGNAROK DM ON ... uh... dead forever? ===
=== ALWAYS BET ON ... uh... dead forever? ===
=== Who wanta sum wang? ===
=== Death and Decay - A new Monster/Weapon replacer ===

User avatar
Polygon
 
Posts: 61
Joined: Tue Apr 26, 2016 11:12 pm
Clan: Nuclear Empire
Clan Tag: [NE]

[ALPHA] Re: Cooperative Exits Alpha RC1

#13

Post by Polygon » Tue Nov 28, 2017 9:47 pm

Ivan wrote:
Sun Nov 26, 2017 11:25 pm
I really wish there was a "EXIT" event that triggered before a map was about to exit. That'd really help make things a lot easier for us. The script type would also put on hold the map transition until it was done so you could do fancy things like a custom intermission and such...
You mean like an EXIT script type for ACS? Yeah that would be nice. I wonder if theres a tracker case for it :D?

Post Reply