Jump to content
Sign in to follow this  
R0t0rh34d

More Respawn Questions...

Recommended Posts

I have searched for over a week for the answer to this, and haven't been able to find anything that works, so I thought I'd take a stab, so here goes.

I'm working on a mission based on the "Where's the Agent?" mission by XiViD, but in mine I use a BLUFOR F/A-18F with a pilot and WSO (each named pilot and WSO respectively). In the beginning of the mission they start in the aircraft, heavily damaged and on fire, they are forced to eject and now are on the run. Kind of a "Behind Enemy Lines" movie take.

One or both must evade for one hour to win, and after 45 minutes have the option of calling in a helicopter to take them back to the aircraft carrier. They also have marker beacons, much like the agent mission, which update randomly on their positions as they flee.

The opposing force is Independent's who start on the airbase with helicopters and vehicles to chase down the newly shot down crew.

All my triggers and markers are working fine, the endings work fine, my only problem seems to be the respawn, here's whats going on:

If both the pilot and WSO die at the same time, the ending trigger (!alive pilot && !alive WSO) ends properly, but if either one dies and the other still lives, the one who dies respawns on the marker in the Independent base named "respawn_guerilla". I've also spelled it "guerilla" and "guerrilla". Independent respawn normally.

My main question is how can I get BLUFOR to die and not respawn or as a fixed spectator, so when both finally die the trigger ends in victory for Independent?

I have tried all of the suggestions on here http://community.bistudio.com/wiki/Arma_3_Respawn and every resource I could google. I've used just respawn = "base", respawn = 3; I've used respawn templates to no avail.

Any help would be greatly appreciated, somehow I think it's going to be something simple.

Share this post


Link to post
Share on other sites

Having to read all of that text to get to the point, will deter alot of potential help. We don't need to know the backstory of your mission, but only the problem. At that, when you finally did get to the actual problem, not enough info is provided for 100% clarity on the issue.

Is this a coop or TvT? Are the independent guys (players/AI???) respawning? What exactly is the need for the independent (guerrila) respawn marker? If you're using respawn "base", if only one respawn marker is defined (placed in the editor) then any unit no matter the side will re-spawn there. They have to respawn somewhere since you've "base" respawn type defined in your description.ext. Now... after sitting here, I've finally (maybe) pinpointed what you're getting at.

-This is a TvT with independent players whom respawn at their base.

-There are 2 blufor players whom are to stay dead when they die.

-You want the mission to end once both blufor units are dead.

If this is the case, then there are some possible options to look into.

#1 - BIS_FNC_RespawnTickets

#2 - setPlayerRespawnTime - set the blufor units respawn time to be the duration of the mission. Your trigger should fire correctly when the units are both dead.

init.sqf

[] spawn {
waitUntil {((!isNull player) && (time > 1))};
switch (player) do {
  case pilot1:{setPlayerRespawnTime 3600;};
  case pilot2:{setPlayerRespawnTime 3600;};
 };
};

or

[] spawn {
waitUntil {((!isNull player) && (time > 1))};
   if (side player == west) then {setPlayerRespawnTime 3600;}; //3600 seconds aka 1hr
};

#3 - Define a respawn_west marker in the editor. Upon blufor respawn you could render a black screen and enableSimulation false the respawned player. Aswell as making a pseudo killed counter via killed Eventhandler.

Something like this maybe (#3):

Each pilots init line

this addEventHandler ["Killed", {call Tag_Fnc_killed}];

init.sqf

if (isNil "deadCount") then {deadCount = 0;};

Tag_Fnc_killed = {
 deadCount = deadCount + 1
 publicVariable "deadCount";
 titleText ["", "BLACK FADED", 5];
 (_this select 0) enableSimulation false;
}; 

[] spawn {
if (isServer) then {
  waitUntil { deadCount == 2 };
    [["end1",true,true],"BIS_fnc_endMission", resistance, false] call BIS_fnc_MP;
    [["end2",false,true],"BIS_fnc_endMission", west, false] call BIS_fnc_MP;
   };
};

description.ext

class CfgDebriefing
{  
   class End1
   {
       title = "Mission Completed";
       subtitle = "";
       description = "The pilots are dead!!!";
       pictureBackground = "";
       picture = "";
       pictureColor[] = {0.0,0.3,0.6,1};
   };

       class End2
   {
       title = "Mission Failed";
       subtitle = "";
       description = "Both pilots died!!";
       pictureBackground = "";
       picture = "";
       pictureColor[] = {0.0,0.3,0.6,1};
   };
};

Note: Don't take anything I've said personally. I've been there and done that. After awhile I found that getting right to the point of the problem quickly, results in quicker and more help. If it infact takes a wall of text to explain your problem then there's nothing you can do about that. However, very rarely does anyone need to write a wall of text to request help for any given problem. IE; Your entire post could have been summerized as something like:

-This is a TvT with independent players whom respawn at their base.

-There are 2 blufor players whom are to stay dead when they die.

-I want the mission to end once both blufor units are dead.

Edited by Iceman77

Share this post


Link to post
Share on other sites

Description.ext

respawn = 3;  //BASE
respawnDelay = 5;
respawnTemplatesWest[] = {"Tickets"};

init.sqf

[west,-1] call BIS_fnc_respawnTickets;

This will make independents use BASE respawn but Blufor will use tickets but as tickets are set to -1 they will not respawn. (You can not use 0 in the call to respawnTickets as a value of zero is ignored, anything below zero will get interpreted as zero)

Share this post


Link to post
Share on other sites

Thanks for the quick replies Iceman and Larrow. I will try them out as soon as I can and see how they work, will let you know.

Iceman, sorry for the narrative before the actual point, I've read so much on these forums trying to find the answer and have seen so many people say "tell me more of what you are trying to do, not just the specific thing that's wrong", so I tried to explain more to get to the point. No offense taken at all, I just appreciate the feedback as I'm not a scripter at all. And yes, you got it right, it's a TvT where one team is the chaser and the other are the aircrew trying to evade.

Larrow, I did not try that combination, but if I did, I think I set it to zero and that might have been why it didn't work, I'll give that one a shot again, as it seems the quicker fix.

Thanks again for both the replies.

Share this post


Link to post
Share on other sites

Larrow, that worked perfectly, thanks for the input.

Iceman, I feel bad because you spent the time to make that long reply, I am going to try it to see if it works for me as well. But I do appreciate both replies, without them I would probably still be trying to figure it out!!!!

Thanks again to you both.

Share this post


Link to post
Share on other sites
Iceman, I feel bad because you spent the time to make that long reply, I am going to try it to see if it works for me as well. But I do appreciate both replies, without them I would probably still be trying to figure it out!!!!

Thanks again to you both.

Yeah no worries. Figured I'd offer you multiple solutions to your problem. Nothing wrong with too many solutions... even if it was a wall of text. :) Though the respawn tickets was #1 in any case. I figured it'd be the easiest.

Share this post


Link to post
Share on other sites

Maybe a bit ambitious, but is there a way to give an individual spawn protection for say the first 30 seconds he's alive?

The guys who spawn in the jet are sometimes killed before they can eject, I would like to make sure they get out and down so they can evade.

Much appreciated.

Share this post


Link to post
Share on other sites

Use a MP respawn eventhandler. Maybe something like this.

players Init Line

this addMPEventHandler ["MPRespawn", {_this spawn TAG_fnc_DmgCtrl}];

init.sqf

TAG_fnc_DmgCtrl = {
     _unit = _this select 0; 
     _unit allowDamage false;
     sleep 30;
     _unit allowDamage true;
};

Note: I've no experience with allowDamage in MP.

Share this post


Link to post
Share on other sites

Hi All.

New to forum and am struggling with a 6 vs 6 TvT Attack and Defend mission I am making.

I have most of the details in place but I cant seem to limit the lives of human player to max of 5 only.

I need to have both sides have max lives of 6 and when they go to zero of last player, defending or attacking, the mission ends.

My mission entails a group of 6 hostile OPFOR attacking a BLUFOR base defended friendly group of 6.....human players can select either side to play before insertion.

Does anyone know how I can limit the respawns per player in the description.ext by any chance or is there a small script in existence that will do this as I cant seem to find one ?

I do not want to use the "ticket" thing as this is a cooperative Team versus Team mission, really a cross between TDM and COOP mission scenario.

It cant be that hard surely ?

Any ideas good people of the ARMA world ?

Thanks for any help you can give.

Sorry for diversifying a bit but forum would not let me post a fresh post.

Edited by cjo1964
Update

Share this post


Link to post
Share on other sites

You may want to look into BIS_FNC_RespawnTickets. Apparently you could pass a specific unit (object) to the function as the 'target'. I'm not very familiar with it though, as I've no need thus far for the function.

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  

×