Jump to content
Sign in to follow this  
columdrum

Revive script for ACE2 Wounding system [V1.5]

Recommended Posts

Here you have a Release candidate for the 2.0, i am only missing the documentation. I had this finished like a month ago and i never get the time to finish the documentation, so i am going to make a release so you guys can test it while i finish the documentation. Please use the advanced modules addon( only required to load it for editing the mission) for now, as it includes ingame documentation that can help you. The only module that needs syncronization its the medevac one, sincronice with it any IA medic or heli that you want. Apart from that the addon version its pretty much undocumented :( till i have some free time to finish it.

I have also done some additions and improvements on the script version.

Download (includes addon and script version):

http://www.mediafire.com/?3188njseu589vrn

2.0 rc1 changelog:

* Optimized all the login sequence, by the use of the new publicVariableServer/client

* Fixed respawn buttons, should work on any ACE version.

+ New option that enables saving each X time.

+ New option that allows to save backpack data.

@Columdrum

I just started using this script. So far I really like, nice work btw. I know it has already been mentioned but I was wondering if there was a work around for the respawn buttons appearing. The respawn buttons will appear the first time you are killed ,but after that they no longer use the time set in ace_sys_spectator_RevShowButtonTime = xx.

EDIT: Think I may have figured out one of the problems. I was not sure what to do with Colum_revive_WaveTime_Respawn=[100,375]; So I put it as Colum_revive_WaveTime_Respawn=[0,0]; This seems to have helped the respawn buttons appearing correctly now.

I have another question. I made a mobile respawn. It works fine, but how do I use the offset? Colum_revive_RespawnOffset= [0,0,0,0]; [x,y,z,?] or [?,x,y,z]. Is there a way to use the offset and actually respawn in the cargo position of a vehicle?

thanks,

Nomad

I forgot to document the waverespawn but yes, the [0,0] disables it.

Colum_revive_RespawnOffset all those are Z coordinates corresponding to each spawn point. For example if you have 2 respawn defined:

Colum_revive_RespawnOffset= [Z1,Z2];

Z1 its the height of the first spawn point and Z2 the height of the second spawn point. The x, y are already defined by the markers.

Nice script!

Noticed one typo in the English revive folder you have written "configuracion", it's supposed to be "Configuration" (for the config).

Just a head's up!

Or maybe thats just Spanish word for it idk... D:

Its just spanish, same as other variable names :P. I tried to keep most of comments in english, but i left some variable/function names in spanish ^^.

Question

I can;t seem to get a mobile respawn working.

Do you have a sample mission with it in and working I could review to see what I am doing wrong?

Thanks

I am thinking back to the days or ARMA and Norin and the mobile respawn Medical vehicle that you could deploy a CamoTent type thing.

Is it even possible.

Again, This has been a real boon for myself and all my gaming buddies.

Cheers

Mobile respawn aren't on the TODO of this revive script. You can already achieve it by creating a script that just moves a marker attached to a vehicle. Also on this last release you can add unitnames instead of markernames as respawn locations, e.g.:

Colum_revive_RespawnMarkers= ["respawn1_marker", "respawn2_marker", YOUR_MOVILE_RESPAWN, "respawn4_marker", "respawn5_marker"];

And call your movile respawn unit YOUR_MOVILE_RESPAWN. Note that marker names are quoted and object respawns aren't. Its a bit late for sugestions since 2.0 this it's going to be the last release, so i hope thats enough for you. Obviously that line its just and example you can define any number of respawn points and mix as many objects and markers as you want ;). e.g.:

Colum_revive_RespawnMarkers= [YOUR_MOVILE_RESPAWN];

Edited by columdrum

Share this post


Link to post
Share on other sites

Thanks for the update gonna check it out. We are using v1.98 with MSO (with all the persistent stuff turned off in revive config) and loving it so far!!

Share this post


Link to post
Share on other sites

Oh Can't wait to work with this.

Documentation or not.

THANKS A TON Big C.....

You ROCK.

Will report back if my Clan Battleboys(yes we were boys when OFP came out) experience anything earth shattering.

Oh man you even gave me the mobile.

AGAIN Going to try that out.

THANKS.

Edited by Styxx42
Read the rest of the post above

Share this post


Link to post
Share on other sites

One bug to report. Well kinda bug.

While I was testing this I noticed that if you ALT+TAB your game at the moment or while spectator mode is initialized, you will be stuck at spectator mode and you will not be able to contol you player. I think only way to go around this is to reconnect but I haven't tried yet, cause I tested it in MP editor.

More of a bug with spectator script than with yours revive script, but you should judge what is bug or isnt.

1_tmb_71492605_arma2oa_2013_01_16_18_58_08_690.png

Screen when I returned back to the game. I was moved to respawn_east marker, and I had in group chat message.

Another issue is that if there is no spectator active, and you have defined respawn buttons to showup, they will never show. At the time they are supposed to showup screen will flash briefly and you will only see large grey cursor on screen but buttons will not kick in.

Also I had this rpt entry while I tested it with spectator and buttons were available.

["revive, respawn buttons wherent detected"]

Also this has something to do with error I reported above

Warning Message: Variable '_disp' does not support serialization. Call 'disableSerialization' in the current script (maybe 'cba\events\globalEvent') if you need to use it.

["colum_revive spectator close timeout"]

Warning Message: Variable '_disp' does not support serialization. Call 'disableSerialization' in the current script (maybe 'cba\events\globalEvent') if you need to use it.

Edited by _MaSSive

Share this post


Link to post
Share on other sites
One bug to report. Well kinda bug.

While I was testing this I noticed that if you ALT+TAB your game at the moment or while spectator mode is initialized, you will be stuck at spectator mode and you will not be able to contol you player. I think only way to go around this is to reconnect but I haven't tried yet, cause I tested it in MP editor.

I've had this happen on occasion and usually ESC will fix it or ESC > ACE Settings > Fix Headbug

Share this post


Link to post
Share on other sites

Tried that too nothing helps. Only way to fix it is to reconnect. Fix headbug will get you up on your feet but you will still remain stuck on spectator mode. ESC will make your screen flash briefly but will not exit spectator. ESC twice will get you into options though, but its still not a solution.

Note that this only happens if your game is alt+tabbed while you are in respawn process.

Edit: Still haven't tried the shortcut from inside spectator to try to exit it. Ill try to repro it again and see if that will work.

Edited by _MaSSive

Share this post


Link to post
Share on other sites
One bug to report. Well kinda bug.

While I was testing this I noticed that if you ALT+TAB your game at the moment or while spectator mode is initialized, you will be stuck at spectator mode and you will not be able to contol you player. I think only way to go around this is to reconnect but I haven't tried yet, cause I tested it in MP editor.

Alt+tab shouldn't afect the script at all, still dunno why that could have happened.

About the other errors, even with spectator disabled its working perfectly for me, both with spectator disabled or enabled. Y can't repro the issue. I would need more info like what addons are you loading including wich ACE version are you using(only 1.13 stable and dev one, the one on six updater, are supported), and maybe also the mission you reproed it.

I have been checking everything and even found some minor unrelated bugs, so i am going to release a hotfix soon(1-4 days), and i will try to add some basic documentation and an example mission for the addon version.

Share this post


Link to post
Share on other sites

Sorry for the delayed response.

I was able to reproduce it every single time, and its not one of my scripts or mission scripting at all.

You will find example mission below.

Steps to reproduce it:

1) Start a mission, move to red arrow position and wait approx 10 seconds

2) Die

3) Wait for spectator to kick in

4) Check to see if there is a CAMP respawn button available ( should be )

5) ALT+TAB your game and do something in the next 150 seconds

6) When you return and get focus back, you should be still in spectator mode without possibility to exit it

- >> DOWNLOAD << -

Edit: Once again here you go - >> Error I mentioned above

1_tmb_97029822_arma2oa_2013_01_17_11_11_08_128.png

Besides this little bugger this is a great script.

Edit1: Forgot to add what addons I use, so here it is, I hope its not too late.

Combined Ops + RFT

ACE, ACEX_RU, ACEX_USnavy and CBA, CBA_A2, CBA_OA, ACRE, Jayarma2lib_new, Advanced Editor Modules, Murrays Compositions fo A2 and OA, Latest beta

ACE is dev version ( from Six )

Thats whats used in this mission.

PM sent.

Here is a working version of Russian translation for stringtables

- >> http://pastie.org/5712387 << -

This is mine translation and Im a bit rusty with Russian, but Ive asked my friend ( real Russian ) to translate it. It should be done tomorrow.

Edit3:

I was thinging about something that could be useful.

Is it possible to add parameters for certain features, so they could be easily selectable from the MP lobby?

For example I want to set ace_wounds_prevtime=%param% from the lobby, or I want to set certain features of ACE wounds module from lobby? Event a whole section for it to be able to activate ACE Wounds ( + this revive script ) or not use ACE Wounds at all neither this script, and use lets say different revive script which does not rely on Wounds module.

Why all this? I want to create a functional template for missions, where all features will be easily selectable. I dont want to make two different templates just because I use two different scripts in two different scenarios.

This is possibly slightly off topic here.

I guess that can be done, but a working example would be of much of help. In fact if you include it in your script, Ill put your picture in my bedroom :)

Edited by _MaSSive

Share this post


Link to post
Share on other sites

@_Massive

edit: here is an example for the way I handle what you are wanting to do. This is from a mission I made using Unsung mod, base defense type mission

the param array in description.ext

class Params
{
class f_param_timeOfday
{		
//paramsArray[0]
       title = "$STR_f_param_timeOfDay";
       values[] = {0,1,2,3,4,5,6,7};
       texts[] = {$STR_f_param_timeOfDay_Option0,$STR_f_param_timeOfDay_Option1,$STR_f_param_timeOfDay_Option2,$STR_f_param_timeOfDay_Option3,$STR_f_param_timeOfDay_Option4,$STR_f_param_timeOfDay_Option5,$STR_f_param_timeOfDay_Option6,$STR_f_param_timeOfDay_Option7};
       default = 7;
       code = "f_param_timeOfDay = %1";
   };   
   class f_param_weather
{
//paramsArray[1]
	title = "$STR_f_param_weather";
	values[] = {-1,0,1,2,3,4};
	texts[] = {"Random",$STR_f_param_weather_Option0,$STR_f_param_weather_Option1,$STR_f_param_weather_Option2,$STR_f_param_weather_Option3,$STR_f_param_weather_Option4};
	default = -1;
	code = "f_param_weather = %1";
         };
class assaultSpeed 
{
//paramsArray[2]
	title = "Assault Speed:";
	values[] = {10,20,30};
	texts[] = {"Fast","Normal","Slow"};
	default = 10;
};
class numofassualts 
{
//paramsArray[3]
	title = "Number of Assault Groups:";
	values[] = {60,50,40,30,20};
	texts[] = { "60 Groups", "50 Groups", "40 Groups","30 Groups", "20 Groups"};
	default = 30;
};
class size
{
//paramsArray[4]
	title = "Number of Units per Assault Group:";
	values[] = {12,8,4};
	texts[] = {"High","Normal","Low"};
	default = 8;
};
class assaultfaction 
{
//paramsArray[5]
	title = "Assault Faction:";
	values[] = {0,1};
	texts[] = {"VC","NVA"};
	default = 0;
};
class Revive
   {
// paramsArray[6]
       title = "Number of Revives:";
       values[] = {11,6,4};
       texts[] = {"10 - Easy","5  - Hard","3  - Extreme"};
       default = 6;
   };
class Revivetime
   {
// paramsArray[7]
       title = "Revivetimelimit:";
       values[] = {300, 600, 900};
       texts[] = {"300 seconds", "600 seconds", "900 seconds"};
       default = 600;
   };
class medics
   {
// paramsArray[8]
       title = "All units can be medics";
       values[] = {0,1};
       texts[] = {"Disabled","Enabled"};
       default = 0;
   };								
class Respawn
   {
// paramsArray[9]
       title = "Allow Respawn:";
       values[] = {0,1};
       texts[] = {"NO: Revive Only","YES: Respawn and Revive"};
       default = 1;
   };
class Respawnbuttontimer
   {
// paramsArray[10]
       title = "(If Respawn is Yes) Respawnbutton appears after:";
       values[] = {1, 30, 45, 60, 75};
       texts[] = {"1 second", "30 seconds", "45 seconds", "60 seconds", "75 seconds"};
       default = 30;
   };
class 3rdpersonView
   {
// paramsArray[11]
       title = "3rd Person View";
       values[] = {0, 1};
       texts[] = {"Enabled", "Disabled"};
       default = 1;
   };
class debug
   {
// paramsArray[12]
       title = "Debug (testing purposes only)";
       values[] = {0,1};
       texts[] = {"Disabled","Enabled"};
       default = 0;
   };										

};

Now the way I have configuracion.sqf in columdrum's revive set up

/***********************************************************************************************************************************/
/*************************************************Seccion de configuracion***********************************************************/
/***********************************************************************************************************************************/
//Nº of lifes. Minimum number is 1( doesn't make much sense tought since you will directly die when killed), use 1000 for unlimited
//NOTE: this value will be OVERWRITED if you pass parameters to the execVM on the mision init.sqf. So use: execVM "revive\ReviveAceWounds.sqf"; 
Colum_revive_Conf_Lifes= (paramsarray select 6);

//Disable IA wounding system for IA, seems to cause more desync.
ace_sys_wounds_noai= true;

//Total time that units remains uncon before die, in seconds
ace_wounds_prevtime = (paramsarray select 7);

//shows Revive time counter . If false it will be replaced by visual feedback about your time left.(needs @ACE Build 584+)
ace_wounds_prevtimeshow = true;

//If true, spectator will be activated wile uncons, if false you will see a black screen while uncons.
ace_sys_wounds_withSpect  = true;

//Show team kill mesages
Colum_revive_TKcheck= true;

//Show enemy units when you are totally death, true= show all, false = only your side.
Colum_revive_VerEnemigos= true;

//Pvp enabled, markers and uncons mesages only will be seen by your teammates
Colum_revive_PvP=true;

//Heaiyly wound and enemy player would give the attacker +1 score, and -1 if he wound and ally. This is intented to be used on PvP games to have a better stat tracking, because without this feature enabled, you will only be credited when you kill a player that had no lifes left.
Colum_revive_WoundScoring=true;

//Medic rucksack. "" for disabled any other rucksack classname to enable
Colum_revive_MochilaMedico="";

//Contents for the rucksack
// the contents are: [nº compress, nº morphine, nº ephinifrine, nº green smoke grenades]
Colum_revive_MochilaMedico_Contenido=[10,20,15,2,12];

//Uncoment(remove the // afther the line) any line bellow to enable specific side backpack or contents.
//Colum_revive_MochilaMedico_WEST = "ACE_VTAC_RUSH72_TT_MEDIC";
//Colum_revive_MochilaMedico_EAST = "ACE_VTAC_RUSH72_TT_MEDIC";
//Colum_revive_MochilaMedico_GUER = "ACE_VTAC_RUSH72_TT_MEDIC";
//Colum_revive_MochilaMedico_CIV = "ACE_VTAC_RUSH72_TT_MEDIC";


//Colum_revive_MochilaMedico_Contenido_WEST =[10,20,15,2,10];
//Colum_revive_MochilaMedico_Contenido_EAST = [10,20,15,2,10];
//Colum_revive_MochilaMedico_Contenido_GUER = [10,20,15,2,10];
//Colum_revive_MochilaMedico_Contenido_CIV =[10,20,15,2,10];

//Jip players wil have an option to teleport to his squadmates when conected. True = allow, False = not allow
Colum_revive_JIPTelep=true;

//The gear, heal status and position are stored on player disconnect and restored on conect. =true Enabled = false disabled. KNOWN ISUE: backpack contents and weapon on back are not saved because are local to the client :(.( that excludes the medical gear of the backpack that its added again for medics).
//NOTE: this feature is stil experimental, but should work
Colum_revive_DisconectSave=true;

//Each X seconds player data. May generate extra traffic if combined with the next one, so use it wisely. -1 == disabled
Colum_revive_DisconectSave_Time=-1;

//Save backpack contents.
Colum_revive_Save_Ruck=false;


//allow respawn . false= if uncons time runs out you will DIE PERMANENTLY, EVEN IF YOU HAD LIFES LEFT. true= if you get out of time you will respawn on the designated respawn if you had lives left
if (paramsarray select 9 == 1) then {Colum_revive_Respawn=true;"respawn" setmarkeralpha 1;} else {Colum_revive_Respawn=false};

//If enabled, allows respawn in waves instead of based on the time from your last death
//params: [ first wave delay  ,  time between waves] . all in seconds.
//IMPORTANT this overrides  ace_sys_spectator_RevShowButtonTime
Colum_revive_WaveTime_Respawn=[-1,-1];


//Side respawns . false= everybody has the same respawn. true= each side has his own respawn points
Colum_revive_Respawn_Side=false;

//Side lifes . false=everybody has the same number of lifes. true= each side has his own number of lifes
Colum_revive_Vidas_Side= false;

//Death map Markers, false= no markers, true= wounded units would be shown on the map.
Colum_revive_Death_Markers= true;

//Death Messages . false=no mesages. true= a mesage will be shown when someone falls uncons.
Colum_revive_Death_Messages= true;

//death people leave group . Recomended true, only false if you use a stupid script that uses the leader unit to get the group in the middle of the game.
Colum_revive_Death_LeaveGroup= true;

//Minimun damage left after been healed with the medkit.  0 disabled. Values recomended 0.01-0.08
ace_sys_wounds_leftdam=0;

//On medic revive make full heal( so you don't need to use medkit after revive, only for normal healing). True enabled, false (Default) disabled
Colum_revive_Levanta_Heal=false;

//Penalice Respawn button with Death. If true, if you press the respawn button you are out of the game, if false, you will only lose a life
Colum_revive_RespawnButtonPunish=false;

//If server fails to send the number of lifes,  set it to 0. If set to false, if fails, you will get all the lifes
Colum_revive_KillOnConnectFail=true;

//If the player disconects while unconscious or heavy wounded, he will lose one life. This may avoid some posible exploits.= true enabled, =false disabled.
Colum_revive_DisconectPunish=false;

//This parameter determines wath to do if someone dies in the water, the posible options are:
//0 : Do nothing . if deep water, it will be no chance to save him, escept if there is respawn :P, if not, you may be able to drag out of the water
//1 : Direct death ( lifes=0 if respawn not enabled, and -1 life if respawn enabled) if the player dies and sinks in deep water
//2 : The dead player floats over the water, there is 2 ways to save him. Go with a vehicle really close to him and he will get onboard automaticaly, also you can swing to him to grab him and carry him to the coast.
//3 : The player is moved to the nearest coast, using norrin script.
Colum_revive_WaterAction=3;

//life persistance:
//-1 : always persistent. Lifes will only be reseted on mision restart or using Colum_Revive_Funcion_Reset_Data function(default)
//0 : non persistan lifes, players that JIP will have the max number of lifes
//>1 :The lifes of the players will be reseted after some amount of time(seconds). For example if you set it to (30*60) a player that runs out of lifes when 30 mins have passed after his death, if he reconnects he will have max lifes
Colum_revive_LifesPersist=-1;

//Been inside or near medical vehicles/structures grants extra time to the revive counter
colum_revive_medicalExtraTime=true;

// Fixes some errors that may end you stuck on spectator. Added as an option because its hardcoded nature can cause troubles in future  ACE spectator script changes
Colum_spect_workaround=true;

//Mission ends if all the players on one of the indicated sides die(no lives left or all uncons). Be aware that even if its disabled( [] ) you can use the variables : Colum_revive_AlivePlayers == 0 (all players dead) or
//Colum_revive_AlivePlayers_WEST ==0(all bluefor players dead),  Colum_revive_AlivePlayers_EAST,Colum_revive_AlivePlayers_GUER, Colum_revive_AlivePlayers_CIV
// Its also available: Colum_revive_AliveMedics y Colum_revive_AliveMedics_SIDE with the number of alive medics/people able to revive
if (paramsarray select 9 == 1) then {Colum_revive_EndGameIfAllDie=[]} else {Colum_revive_EndGameIfAllDie=[west]}; //example value: [west,east]

//If there is no alive persons able to revive you( including AI medic from this script) players will die/respawn(if enabled) directly ( their countdown timer would be switch to 10 secs :) )
Colum_Revive_KillIfNoMedic=false;


if (Colum_revive_Respawn) then {
//Text of the respawn buttons, a text must be defined for each respawn point. There is no limit for the number of respawn points.
Colum_revive_RespawnButton_text = ["Respawn"];
//other example : Colum_revive_RespawnButton_text = ["respawn1", "respawn2"]; 
//Name of the markers for the respawn( could be diferent from the button text, used the same just for this example)
//NOTE: you can easy create a movile respawn by creating a marker and updating its position
Colum_revive_RespawnMarkers= ["base"];
//offset for the respawn point. Usefull for example to define respawn inside buildings or in the carrier.
Colum_revive_RespawnOffset= [0,0,0,0];

//Time to appear the respawn buttons when you are wounded, in seconds
ace_sys_spectator_RevShowButtonTime = (paramsarray select 10);

if (Colum_revive_Respawn_Side) then {
	// Side respawns if you use Colum_revive_Respawn_Side and you comment the respawn buttons markers and offsets( by placing // before them) of a side, that side will have respawn disabled. 
	//So that way you can enable respawn only to one side
	//Bluefor
	Colum_revive_RevButtons_WEST = ["respawn1_WEST", "respawn2_WEST", "respawn3_WEST", "respawn4_WEST"];
	Colum_revive_RespawnMarkers_WEST= ["respawn1_WEST", "respawn2_WEST", "respawn3_WEST", "respawn4_WEST"];
	Colum_revive_RespawnOffset_WEST=[0,0,0,0];

	//oppfor
	Colum_revive_RevButtons_EAST = ["respawn1_EAST", "respawn2_EAST", "respawn3_EAST", "respawn4_EAST"];
	Colum_revive_RespawnMarkers_EAST= ["respawn1_EAST", "respawn2_EAST", "respawn3_EAST", "respawn4_EAST"];
	Colum_revive_RespawnOffset_EAST=[0,0,0,0];

	//Independ
	Colum_revive_RevButtons_GUER = ["respawn1_GUER", "respawn2_GUER", "respawn3_GUER", "respawn4_GUER"];
	Colum_revive_RespawnMarkers_GUER= ["respawn1_GUER", "respawn2_GUER", "respawn3_GUER", "respawn4_GUER"];
	Colum_revive_RespawnOffset_GUER=[0,0,0,0];

	//Civil
	Colum_revive_RevButtons_CIV = ["respawn1_CIV", "respawn2_CIV", "respawn3_CIV", "respawn4_CIV"];
	Colum_revive_RespawnMarkers_CIV= ["respawn1_CIV", "respawn2_CIV", "respawn3_CIV", "respawn4_CIV"];
	Colum_revive_RespawnOffset_CIV=[0,0,0,0];

};
};

if (Colum_revive_Vidas_Side) then {
// life number if Colum_revive_Vidas_Side= true;
//lifes for bluefor team / west side
Colum_revive_VidasMax_WEST=2;

//lifes for opfor team / east side
Colum_revive_VidasMax_EAST=3;

//lifes for indepen team / guer side
Colum_revive_VidasMax_GUER=4;

//lifes for civilian team / CIV side
Colum_revive_VidasMax_CIV=10;
};

hope this helps

Nomad

Edited by Nomadd

Share this post


Link to post
Share on other sites

Thanks a lot Nomadd. I made it to fit my settings quickly like this

description.ext

class Params
{
class params_dummy_line_1
{
// paramsArray[0]
	title = "------------------------------------------------------------- ACE Wounds Settings -------------------------------------------------------------";
	values[] = {-99999};
	default = -99999;
	texts[] = {""};
};
class Wounds
{
// paramsArray[1]
	title = "With ACE Wounds:";
	values[] = {0,1};
	texts[] = {"No", "Yes"};
	default = 1;
};
class Revive
   {
// paramsArray[2]
       title = "Number of Revives:";
       values[] = {11,6,4,1};
       texts[] = {"10 - Easy","5  - Medium","3  - Hard","1 - Extreme"};
       default = 6;
   };
class Revivetime
   {
// paramsArray[3]
       title = "Revive Time Limit:";
       values[] = {120, 300, 600, 900, 1200};
       texts[] = {"2 minutes","5 minutes", "10 minutes", "15 minnutes", "20 minutes"};
       default = 600;
   };
class medics
   {
// paramsArray[4]
       title = "Everybody is Medic:";
       values[] = {0,1};
       texts[] = {"Disabled","Enabled"};
       default = 0;
   };								
class Respawn
   {
// paramsArray[5]
       title = "Allow Respawn:";
       values[] = {0,1};
       texts[] = {"No Respawn - End Game if all players die","With Respawn and Revive"};
       default = 1;
   };
class Respawnbuttontimer
   {
// paramsArray[6]
       title = "(If Respawn is Yes) Respawn Button Appears After:";
       values[] = {10, 30, 45, 60, 75};
       texts[] = {"10 seconds", "30 seconds", "45 seconds", "60 seconds", "75 seconds"};
       default = 45;
   };
};

Configuacion.sqf

/***********************************************************************************************************************************/
/*************************************************Seccion de configuracion***********************************************************/
/***********************************************************************************************************************************/
//No of lifes. Minimum number is 1( doesn't make much sense tought since you will directly die when killed), use 1000 for unlimited
//NOTE: this value will be OVERWRITED if you pass parameters to the execVM on the mision init.sqf. So use: execVM "revive\ReviveAceWounds.sqf"; 
Colum_revive_Conf_Lifes= (paramsarray select 2);

//Disable IA wounding system for IA, seems to cause more desync.
ace_sys_wounds_noai= true;

//Total time that units remains uncon before die, in seconds
ace_wounds_prevtime = (paramsarray select 3);

//shows Revive time counter . If false it will be replaced by visual feedback about your time left.(needs @ACE Build 584+)
ace_wounds_prevtimeshow = true;

//If true, spectator will be activated wile uncons, if false you will see a black screen while uncons.
ace_sys_wounds_withSpect  = true;

//Show team kill mesages
Colum_revive_TKcheck= true;

//Show enemy units when you are totally death, true= show all, false = only your side.
Colum_revive_VerEnemigos= false;

//Pvp enabled, markers and uncons mesages only will be seen by your teammates
Colum_revive_PvP=true;

//Heaiyly wound and enemy player would give the attacker +1 score, and -1 if he wound and ally. This is intented to be used on PvP games to have a better stat tracking, because without this feature enabled, you will only be credited when you kill a player that had no lifes left.
Colum_revive_WoundScoring=true;

//Medic rucksack. "" for disabled any other rucksack classname to enable
Colum_revive_MochilaMedico="ACE_VTAC_RUSH72_TT_MEDIC";

//Contents for the rucksack
// the contents are: [no compress, no morphine, no ephinifrine, no green smoke grenades]
Colum_revive_MochilaMedico_Contenido=[10,20,15,2,12];

//Uncoment(remove the // afther the line) any line bellow to enable specific side backpack or contents.
//Colum_revive_MochilaMedico_WEST = "ACE_VTAC_RUSH72_TT_MEDIC";
//Colum_revive_MochilaMedico_EAST = "ACE_VTAC_RUSH72_TT_MEDIC";
//Colum_revive_MochilaMedico_GUER = "ACE_VTAC_RUSH72_TT_MEDIC";
//Colum_revive_MochilaMedico_CIV = "ACE_VTAC_RUSH72_TT_MEDIC";


//Colum_revive_MochilaMedico_Contenido_WEST =[10,20,15,2,10];
//Colum_revive_MochilaMedico_Contenido_EAST = [10,20,15,2,10];
//Colum_revive_MochilaMedico_Contenido_GUER = [10,20,15,2,10];
//Colum_revive_MochilaMedico_Contenido_CIV =[10,20,15,2,10];

//Jip players wil have an option to teleport to his squadmates when conected. True = allow, False = not allow
Colum_revive_JIPTelep=false;

//The gear, heal status and position are stored on player disconnect and restored on conect. =true Enabled = false disabled. KNOWN ISUE: backpack contents and weapon on back are not saved because are local to the client :(.( that excludes the medical gear of the backpack that its added again for medics).
//NOTE: this feature is stil experimental, but should work
Colum_revive_DisconectSave=true;

//Each X seconds player data. May generate extra traffic if combined with the next one, so use it wisely. -1 == disabled
Colum_revive_DisconectSave_Time=-1;

//Save backpack contents.
Colum_revive_Save_Ruck=true;


//allow respawn . false= if uncons time runs out you will DIE PERMANENTLY, EVEN IF YOU HAD LIFES LEFT. true= if you get out of time you will respawn on the designated respawn if you had lives left
if (paramsarray select 5 == 1) then {Colum_revive_Respawn=true;"respawn" setmarkeralpha 1;} else {Colum_revive_Respawn=false};

//If enabled, allows respawn in waves instead of based on the time from your last death
//params: [ first wave delay  ,  time between waves] . all in seconds.
//IMPORTANT this overrides  ace_sys_spectator_RevShowButtonTime
Colum_revive_WaveTime_Respawn=[-1,-1];


//Side respawns . false= everybody has the same respawn. true= each side has his own respawn points
Colum_revive_Respawn_Side=false;

//Side lifes . false=everybody has the same number of lifes. true= each side has his own number of lifes
Colum_revive_Vidas_Side= false;

//Death map Markers, false= no markers, true= wounded units would be shown on the map.
Colum_revive_Death_Markers= true;

//Death Messages . false=no mesages. true= a mesage will be shown when someone falls uncons.
Colum_revive_Death_Messages= true;

//death people leave group . Recomended true, only false if you use a stupid script that uses the leader unit to get the group in the middle of the game.
Colum_revive_Death_LeaveGroup= true;

//Minimun damage left after been healed with the medkit.  0 disabled. Values recomended 0.01-0.08
ace_sys_wounds_leftdam=0;

//On medic revive make full heal( so you don't need to use medkit after revive, only for normal healing). True enabled, false (Default) disabled
Colum_revive_Levanta_Heal=false;

//Penalice Respawn button with Death. If true, if you press the respawn button you are out of the game, if false, you will only lose a life
Colum_revive_RespawnButtonPunish=false;

//If server fails to send the number of lifes,  set it to 0. If set to false, if fails, you will get all the lifes
Colum_revive_KillOnConnectFail=true;

//If the player disconects while unconscious or heavy wounded, he will lose one life. This may avoid some posible exploits.= true enabled, =false disabled.
Colum_revive_DisconectPunish=false;

//This parameter determines wath to do if someone dies in the water, the posible options are:
//0 : Do nothing . if deep water, it will be no chance to save him, escept if there is respawn :P, if not, you may be able to drag out of the water
//1 : Direct death ( lifes=0 if respawn not enabled, and -1 life if respawn enabled) if the player dies and sinks in deep water
//2 : The dead player floats over the water, there is 2 ways to save him. Go with a vehicle really close to him and he will get onboard automaticaly, also you can swing to him to grab him and carry him to the coast.
//3 : The player is moved to the nearest coast, using norrin script.
Colum_revive_WaterAction=3;

//life persistance:
//-1 : always persistent. Lifes will only be reseted on mision restart or using Colum_Revive_Funcion_Reset_Data function(default)
//0 : non persistan lifes, players that JIP will have the max number of lifes
//>1 :The lifes of the players will be reseted after some amount of time(seconds). For example if you set it to (30*60) a player that runs out of lifes when 30 mins have passed after his death, if he reconnects he will have max lifes
Colum_revive_LifesPersist=-1;

//Been inside or near medical vehicles/structures grants extra time to the revive counter
colum_revive_medicalExtraTime=true;

// Fixes some errors that may end you stuck on spectator. Added as an option because its hardcoded nature can cause troubles in future  ACE spectator script changes
Colum_spect_workaround=true;

//Mission ends if all the players on one of the indicated sides die(no lives left or all uncons). Be aware that even if its disabled( [] ) you can use the variables : Colum_revive_AlivePlayers == 0 (all players dead) or
//Colum_revive_AlivePlayers_WEST ==0(all bluefor players dead),  Colum_revive_AlivePlayers_EAST,Colum_revive_AlivePlayers_GUER, Colum_revive_AlivePlayers_CIV
// Its also available: Colum_revive_AliveMedics y Colum_revive_AliveMedics_SIDE with the number of alive medics/people able to revive
if (paramsarray select 5 == 1) then {Colum_revive_EndGameIfAllDie=[]} else {Colum_revive_EndGameIfAllDie=[west]}; //example value: [west,east]

//If there is no alive persons able to revive you( including AI medic from this script) players will die/respawn(if enabled) directly ( their countdown timer would be switch to 10 secs :) )
Colum_Revive_KillIfNoMedic=false;


if (Colum_revive_Respawn) then {
//Text of the respawn buttons, a text must be defined for each respawn point. There is no limit for the number of respawn points.
Colum_revive_RespawnButton_text = ["Respawn"];
//other example : Colum_revive_RespawnButton_text = ["respawn1", "respawn2"]; 
//Name of the markers for the respawn( could be diferent from the button text, used the same just for this example)
//NOTE: you can easy create a movile respawn by creating a marker and updating its position
Colum_revive_RespawnMarkers= ["respawn_west"];
//offset for the respawn point. Usefull for example to define respawn inside buildings or in the carrier.
Colum_revive_RespawnOffset= [0,0,0,0];

//Time to appear the respawn buttons when you are wounded, in seconds
ace_sys_spectator_RevShowButtonTime = (paramsarray select 6);

if (Colum_revive_Respawn_Side) then {
	// Side respawns if you use Colum_revive_Respawn_Side and you comment the respawn buttons markers and offsets( by placing // before them) of a side, that side will have respawn disabled. 
	//So that way you can enable respawn only to one side
	//Bluefor
	Colum_revive_RevButtons_WEST = ["respawn1_WEST", "respawn2_WEST", "respawn3_WEST", "respawn4_WEST"];
	Colum_revive_RespawnMarkers_WEST= ["respawn1_WEST", "respawn2_WEST", "respawn3_WEST", "respawn4_WEST"];
	Colum_revive_RespawnOffset_WEST=[0,0,0,0];

	//oppfor
	Colum_revive_RevButtons_EAST = ["respawn1_EAST", "respawn2_EAST", "respawn3_EAST", "respawn4_EAST"];
	Colum_revive_RespawnMarkers_EAST= ["respawn1_EAST", "respawn2_EAST", "respawn3_EAST", "respawn4_EAST"];
	Colum_revive_RespawnOffset_EAST=[0,0,0,0];

	//Independ
	Colum_revive_RevButtons_GUER = ["respawn1_GUER", "respawn2_GUER", "respawn3_GUER", "respawn4_GUER"];
	Colum_revive_RespawnMarkers_GUER= ["respawn1_GUER", "respawn2_GUER", "respawn3_GUER", "respawn4_GUER"];
	Colum_revive_RespawnOffset_GUER=[0,0,0,0];

	//Civil
	Colum_revive_RevButtons_CIV = ["respawn1_CIV", "respawn2_CIV", "respawn3_CIV", "respawn4_CIV"];
	Colum_revive_RespawnMarkers_CIV= ["respawn1_CIV", "respawn2_CIV", "respawn3_CIV", "respawn4_CIV"];
	Colum_revive_RespawnOffset_CIV=[0,0,0,0];

};
};

if (Colum_revive_Vidas_Side) then {
// life number if Colum_revive_Vidas_Side= true;
//lifes for bluefor team / west side
Colum_revive_VidasMax_WEST=2;

//lifes for opfor team / east side
Colum_revive_VidasMax_EAST=3;

//lifes for indepen team / guer side
Colum_revive_VidasMax_GUER=4;

//lifes for civilian team / CIV side
Colum_revive_VidasMax_CIV=10;
};

and ProcessParamsArray.sqf called from init.sqf with _nul = [] execVM "processparamsarray.sqf";

if (paramsarray select 1 == 1) then 
{
ace_sys_wounds_enabled = true;
publicVariable 'ace_sys_wounds_enabled';
_nul = [] execVM "revive\ReviveAceWounds.sqf";
}
else
{
	ace_sys_wounds_enabled = false;
	publicVariable 'ace_sys_wounds_enabled';
	_nul = [] execVM "R3F_revive\revive_init.sqf";
};


if (paramsarray select 4 == 1) then 
{
player setVariable ["ace_w_ismedic", true];
ace_w_ismedic = true;
player addmagazine "ace_medkit";

}
else
{
	// nothing
};

Now just one thing Im not sure about is the marker part

//allow respawn . false= if uncons time runs out you will DIE PERMANENTLY, EVEN IF YOU HAD LIFES LEFT. true= if you get out of time you will respawn on the designated respawn if you had lives left
if (paramsarray select 5 == 1) then {Colum_revive_Respawn=true;"respawn" setmarkeralpha 1;} else {Colum_revive_Respawn=false};

Would this mean that I need to have a marker named "respawn" which will be used for respawn purpose and it will be visible on the map? If I want to use marker "respawn_west" and set to be invisible would that be:

if (paramsarray select 5 == 1) then {Colum_revive_Respawn=true;"respawn_west" setmarkeralpha 0;} else {Colum_revive_Respawn=false};

Ive tried with these settings, and I cant see the marker, but I do have invisible marker already on map named "respawn_west". What does that part exactly do?

Edited by _MaSSive

Share this post


Link to post
Share on other sites

@_Massive

You can just remove the "respawn" setmarker 1. It will have has no function for what you are doing. I just pulled that out of a pre-made mission.

So you know what it is for. I used a pre-placed marker in the editor to show respawn spot on map. If respawn is enabled then the marker is visible. If the mission is played revive only then the marker is hidden. That is all it is for.

Nomad

Share this post


Link to post
Share on other sites
@_Massive

You can just remove the "respawn" setmarker 1. It will have has no function for what you are doing. I just pulled that out of a pre-made mission.

So you know what it is for. I used a pre-placed marker in the editor to show respawn spot on map. If respawn is enabled then the marker is visible. If the mission is played revive only then the marker is hidden. That is all it is for.

Nomad

Thanks. I got it working as I wanted to.

@ columdrum

I got Russian translation completed, thanks to my friend =A2SM= Vladd. He is the one to be credited for if needed.

http://pastebin.com/mbYAMYMi

If you need any help let me know.

Share this post


Link to post
Share on other sites

This one, i hope, will be the final release.

2.0rc2 changelog:

*Small spectator related bugfixes.

*Some parameters wheren't correctly read from the init field on the addon version.

+Added addon version documentation

+Added rusian translation to the addon version ( thx to =A2SM= Vladd)

Download link: http://www.mediafire.com/?9fya3n0x0094105

If you find any other issue please report it. I also accept translations for the addon version to any of the languages supported by arma. The script version its also easily translatable if you edit the "revive\Data\language.sqf" file, but would be a bit messy to include them on the release so you can also share your own translated version of this file and i will include then on the first post.

Share this post


Link to post
Share on other sites

Revive\Configuracion.sqf

//Side respawns . false= everybody has the same respawn. true= each side has his own respawn points
Colum_revive_Respawn_Side=false;

//Side lifes . false=everybody has the same number of lifes. true= each side has his own number of lifes
Colum_revive_Vidas_Side= true;

Now youve configured script for each side to have different number of lifes. After that same file but

if (Colum_revive_Vidas_Side) then {
// life number if Colum_revive_Vidas_Side= true;
//lifes for bluefor team / west side
Colum_revive_VidasMax_WEST=11;

//lifes for opfor team / east side
Colum_revive_VidasMax_EAST=1;

//lifes for indepen team / guer side
Colum_revive_VidasMax_GUER=1;

//lifes for civilian team / CIV side
Colum_revive_VidasMax_CIV=1;

With this youve configured WEST to have 10 lifes, and all others to have only one, and if they die they will be out of the game. Does not sound fair if used in TVT missions, COOP only.

Im still using previous version so this config is from version pre 2.0. I think it shouldn't have changed, but I dont have much time to test it now.

Some day soon Ill give new version a test, and well see if there are any remaining bugs to kill. ;)

Share this post


Link to post
Share on other sites

Hello, very good respawn script you've created!

I have a few questions regarding how to use it, I was trying to get an easier approach on respawn. My unit uses casevac to take casualties out and I've yet found a way to set a timer on such, and that's how I found your script.

What I'm asking is if it's possible to have the timer limit of this script and then when clicked on respawn they just respawn normally without any special spawning points and those things. What I really want is a clean respawn, so when hit in action you have a timer that's not shown when it runs out you die, when revived you become conscious and up and running say after a full heal with morphine and epi.

I require it to be more simple as we try to remain slightly realistic and having spectator scripts and warnings and hints kind of ruins the immersion, is it possible achieve that with this script?

If not, could anyone send me in the right direction?

Regards OksmanTV

Share this post


Link to post
Share on other sites

As it seems like the last ACE stable version its taking its time, i am gonna release the final version this weekend. It will just include some minor fixes and a new option to fully disable the spectator after totally death, if you disable it, the player without lives will be kick to the loby.

Im still using previous version so this config is from version pre 2.0. I think it shouldn't have changed, but I dont have much time to test it now.

As always any old config file are compatible with new revive versions. It's done that way so its easier to update old missions( if you use the addon version, you will never need to update your missions for this, just the addon :P)

Hello, very good respawn script you've created!

I have a few questions regarding how to use it, I was trying to get an easier approach on respawn. My unit uses casevac to take casualties out and I've yet found a way to set a timer on such, and that's how I found your script.

What I'm asking is if it's possible to have the timer limit of this script and then when clicked on respawn they just respawn normally without any special spawning points and those things. What I really want is a clean respawn, so when hit in action you have a timer that's not shown when it runs out you die, when revived you become conscious and up and running say after a full heal with morphine and epi.

I require it to be more simple as we try to remain slightly realistic and having spectator scripts and warnings and hints kind of ruins the immersion, is it possible achieve that with this script?

If not, could anyone send me in the right direction?

Regards OksmanTV

I don't fully understand what you are asking, but you can remove all the spectator and messages if you config it properly. I don't fully understand what you mean with "respawn normally" :P. If you only want the countdown, look at ACE PMR ( http://wiki.ace-mod.net/Wounding_System+notes , ace_wounds_prevtime = XXX)

Sorry i took so long to answer but i haven't been arround for a while :(

Edited by columdrum

Share this post


Link to post
Share on other sites

Final release(unless last ACE version breaks something):

2.0 final changelog:

*Small general corrections(mostly messages not properly displaying).

+Added a option to kick to the lobby to the players that run out of lifes.

Download link: http://188.165.197.222/colum_revive_20f.rar

Thx everyone for the support and feedback, hopefully soon i will get on an A3 port :P.

Share this post


Link to post
Share on other sites
Final release(unless last ACE version breaks something):

2.0 final changelog:

*Small general corrections(mostly messages not properly displaying).

+Added a option to kick to the lobby to the players that run out of lifes.

Download link: http://188.165.197.222/colum_revive_20f.rar

Thx everyone for the support and feedback, hopefully soon i will get on an A3 port :P.

A Big Thank you for all your work on this.

It is beautiful.

Thanks so much.

It extends the gameplay HUGES.

Share this post


Link to post
Share on other sites
A Big Thank you for all your work on this.

It is beautiful.

Thanks so much.

It extends the gameplay HUGES.

+1 here

Share this post


Link to post
Share on other sites

Hi columdrum

Just a question. In the Configuracion.sqf there is a line that reads:

"If the life timer runs out with respawn active you will auto respawn on the first available respawn point."

What does "first available" mean exactly? I have four respawn points but I do not automatically respawn at the first one (which is something I would like to achieve) but at the second. Is it randomized or what's the reason?

Thanks for the help

Share this post


Link to post
Share on other sites

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now
Sign in to follow this  

×