Jump to content

Cookieeater

Member
  • Content Count

    178
  • Joined

  • Last visited

  • Medals

Posts posted by Cookieeater


  1. gPfmarm.jpg

    DpXLYAV.jpg

    You can skip this explanation if you are familiar with Counter-Strike.:)

    Summary:

    ArmA-Strike is a tactical TvT objective-oriented mission where each team attempts to complete their mission objective and/or neutralize the opposing team. There are two teams inside ArmA-Strike, the Terrorists and Counter-Terrorists. The Terrorist's objective is to plant and defend the bomb until it explodes at either Bombsite A and Bombsite B and/or neutralize all the Counter-Terrorists. The Counter-Terrorists objective is to defend Bombsites A and B until time runs out and/or neutralize all the Terrorists.

    z3nQHvx.jpg

    Terrorists:

    • Plant and protect the bomb from any defuse operation
    • Defend the bomb until it blows up
    • Eliminate all of the Counter-Terrorists

    ERBN82F.jpg

    Counter-Terrorists:

    • Defend Bombsites A and B until time runs out
    • Eliminate all of the Terrorists before the bomb is planted
    • Defuse the bomb if it is planted.

    Highlights:

    • 5v5
    • Asymmetrical gameplay
    • No Respawns
    • Spectator Mode upon death
    • Time Limit(4 minutes for the Terrorists to plant the bomb, 2 minutes for the Counter-Terrorists to defuse the bomb)
    • Music and Sound effects from Counter-Strike: Global Offensive
    • Two spectator slots for people who only want to watch the match

    Instructions:

    Drop the ArmA-Strike.Stratis.pbo file into your MPMissions folder.

    I HIGHLY recommended disabling third-person mode if you are hosting this mission.

    In order to plant the bomb, a Terrorist has to be the explosive specialist. If the Terrorist holding the explosive charge dies, another teammate can pick up the explosive charge from the body and continue on with the mission.

    Download Links:

    http://filesmelt.com/dl/ArmA-Strike.zip

    https://mega.co.nz/#!0M4iRIzL!bqIccGXuuMrRQCkpNhDFZX-FdqMzCAx6lVPgOwjCaS4

    https://www.dropbox.com/s/w1wsukh4xpqfeib/ArmA-Strike.zip


  2. I'm trying to get a visible timer working in ArmA III. This script, made by [FRL]Myke, was originally designed for ArmA II yet works exactly the same in ArmA III. The problem is that this script, like in ArmA II, doesn't work on a dedicated server. The script works on single player and hosted multiplayer games, but only displays the 2nd argument("Reinforcments arriving...") when used on a dedicated server. How could I get this working on a dedicated server?

    //nul = [951, "Reinforcements arrive:", "Reinforcements arriving..."] execVM "timer.sqf"
    
    private ["_remaining", "_ref", "_timer", "_msg1", "_msg2"];
    _timer = _this select 0;
    _msg1 = _this select 1;
    _msg2 = _this select 2;
    _ref = time;
    "glt_timerMsg" addPublicVariableEventHandler {[] call glt_showCountdown};
    if (isnil "glt_timeFormat") then {
    glt_timeFormat = {
    	private ["_hours", "_minutes", "_seconds"];
    	_hours = 0;
    	_minutes = 0;
    	_seconds = 0;
    	_seconds = _this;
    	if (_seconds > 59) then {
    		_minutes = floor (_seconds / 60);
    		_seconds = _seconds - (_minutes * 60);
    	};
    	if (_minutes > 59) then {
    		_hours = floor (_minutes / 60);
    		_minutes = _minutes - (_hours * 60);
    	};
    	if (_seconds < 10) then {
    		_seconds = format ["0%1", _seconds];
    	};
    	if (_minutes < 10) then {
    		_minutes = format ["0%1", _minutes];
    	};
    	[_hours, _minutes, _seconds]
    };
    };
    
    if (isnil "glt_showCountdown") then {
    glt_showCountdown = {
    	hintsilent glt_TimerMsg;
    };
    };
    
    if (isServer) then {
    while {_timer > 0} do {
    	_remaining = _timer call glt_timeFormat;
    	glt_timerMsg = format ["%1\n\n%2:%3:%4",_msg1, (_remaining select 0), (_remaining select 1), (_remaining select 2)];
    	publicVariable "glt_timerMsg";
    	if (local player) then {[] call glt_showCountdown};
    	_timer = _timer - 1;
    	sleep 1;
    };
    };
    glt_timerMsg = _msg2;
    publicVariable "glt_timerMsg";
    if (local player) then {[] call glt_showCountdown};

    EDIT:

    I fixed it by myself, but if anyone wants to know how to get it to work on a dedicated server, you need to replace "_timer = _timer - 1;" to "_timer = _initial - time;" so it'll look like this

    //nul = [951, "Reinforcements arrive:", "Reinforcements arriving..."] execVM "timer.sqf"
    
    private ["_remaining", "_ref", "_timer", "_initial", "_msg1", "_msg2"];
    _initial = _this select 0;
    _msg1 = _this select 1;
    _msg2 = _this select 2;
    _ref = time;
    "glt_timerMsg" addPublicVariableEventHandler {[] call glt_showCountdown};
    if (isnil "glt_timeFormat") then {
    glt_timeFormat = {
    	private ["_hours", "_minutes", "_seconds"];
    	_hours = 0;
    	_minutes = 0;
    	_seconds = 0;
    	_seconds = _this;
    	if (_seconds > 59) then {
    		_minutes = floor (_seconds / 60);
    		_seconds = _seconds - (_minutes * 60);
    	};
    	if (_minutes > 59) then {
    		_hours = floor (_minutes / 60);
    		_minutes = _minutes - (_hours * 60);
    	};
    	if (_seconds < 10) then {
    		_seconds = format ["0%1", _seconds];
    	};
    	if (_minutes < 10) then {
    		_minutes = format ["0%1", _minutes];
    	};
    	[_hours, _minutes, _seconds]
    };
    };
    
    if (isnil "glt_showCountdown") then {
    glt_showCountdown = {
    	hintsilent glt_TimerMsg;
    };
    };
    
    if (isServer) then {
    while {true} do {
    	_remaining = _timer call glt_timeFormat;
    	glt_timerMsg = format ["%1\n\n%2:%3:%4",_msg1, (_remaining select 0), (_remaining select 1), (_remaining select 2)];
    	publicVariable "glt_timerMsg";
    	if (local player) then {[] call glt_showCountdown};
    	_timer = _initial - (time);
    	sleep 1;
    };
    };
    glt_timerMsg = _msg2;
    publicVariable "glt_timerMsg";
    if (local player) then {[] call glt_showCountdown};


  3. I have used publicVariable, maybe I'm doing something wrong...

    init.sqf:

    publicVariable "scriptisactive";
    scriptisactive = false;
    
    waitUntil { scriptisactive};
    PlaySound "blah"
    titleText ["blah"}
    etc...
    
    
    

    playeraction.sqf:

    
    scriptisactive = true;
    
    

    When the player activates playeraction.sqf, the code underneath "waitUntil {scriptisactive};" only runs for him, and not for the rest of the players in the game.


  4. I have a script that a player can run that changes a public boolean. Let's refer to this as "scriptisrun". If scriptisrun is true, then I want to execute some code. The problem is that inside multiplayer, the code only runs on the client and not the server. How can I get a client running the script to message the server to change a public boolean?

    For clarification:

    I have used publicVariable, maybe I'm doing something wrong...

    init.sqf:

    publicVariable "scriptisactive";
    scriptisactive = false;
    
    waitUntil { scriptisactive};
    PlaySound "blah"
    titleText ["blah"}
    etc...
    
    
    

    playeraction.sqf:

    
    scriptisactive = true;
    
    

    When the player activates playeraction.sqf, the code underneath "waitUntil {scriptisactive};" only runs for him, and not for the rest of the players in the game.


  5. Hi, I am working on a scenario very similar to Counter-Strike where one team plants a time bomb and the other team defuses it. Right now in Vanilla ArmA III, explosive charges can be placed down and set for 40 seconds. How could I script an action so that an explosive charge is placed down and set for two minutes, and be defusable by the enemy team within those two minutes?


  6. Yes, I agree with Psychomorph about mouse controls. Counter Strike and Quake have excellent mouse controls that should be transferred to Arma. Even though a soldier can't turn his weapon as fast as a person moving his mouse, they have a much easier time acquiring and aiming at their targets. Precise mouse controls are required for CQC. Limited turning speed has a very little impact in normal engagement distances other else than creating delay and lag. Limited turning speed in CQC hurts the players reaction times and gets them killed in Arma. In real life, twitch shooting is essential in CQC. The mouse controls are why CQC is so bad in Arma.


  7. It doesn't seem that hard, a lot of games involving ragdolled characters have two animations for getting up. One of them is when the back is facing the floor, and when the front is facing the floor. BIS can just mocap two animations, front and back, and then check which one to activate by determining the angle the torso is at when the body is at rest. Afterwards the ragdoll can interpolate it's bones to the animation.


  8. The cons outweigh the benefits of keeping negative acceleration. I'd sacrifice a bit of "realism" for a lot more smoother controls. Keeping negative acceleration on makes a very little impact in normal Arma engagement distances other else than adding in a lot of clumsiness. High mouse sensitivity will mess up a player in Arma. People turning up mouse sensitivity will actually impair themselves in a normal Arma firefight due to the long engagement distances, which require low sensitivity and pixel precision aiming. Even professional Counter-Strike players keep mouse sensitivity very low in order to be more accurate.

    Disabling mouse deacceleration and turning rate cap = win-win situation


  9. The turn speed and weapon collision are given a lot of flak for why ArmA controls are clunky and break down in CQC. Instead of removing them completely, they could be streamlined quite a bit to make the game feel much more responsive. The limited turn speed makes the game feel laggy and awkward. In real life, your head isn't bolted to your gun. A way to make the game feel more responsive is to sync the mouse 100% to the players head, but still have the gun turn speed. This would make it that head movement is instantaneous, but the weapon would "lag" behind until it caught up with the head. I feel this would make ArmA III feel much more responsive and unobtrusive to the player. Weapon collision is the bane of all CQC in ArmA, getting people stuck in doors and preventing them from shooting over a table. Guns should be lowered automatically in a position where it'd block player movement. If a player is walking through a door sideways, the gun should automatically be lowered to prevent getting stuck in the doorway.


  10. Is it a good idea to allow ragdolling to simulate other events happening to the player other else than death? There are many other non-lethal ways that ragdoll can be implemented in to improve the immersion. After the ragdoll simulation is over, the player can either transition into the prone position, or the incapacitated position if wounded enough.

    Situations that ragdoll could be used for other else than dying:

    Being struck by a vehicle

    Crippled by a nearby explosion

    Shot in the leg or shot in the body with a high caliber round

    Shot with a beanbag, or a grenade from a grenade launcher

    Ejecting from vehicles while moving

    Feigning death


  11. AbDEXtl51bc


    Deferred shading would be amazing for a game such as ArmA as well. Right now, ArmA uses forward shading, which is fast for smallish lit scenes, but when lights stack up, the performance dramatically drops as the objects are rerendered multiple times. Deferred shading naturally runs slower than forward shading, but the massive benefit is that performance doesn't decrease with lights.

    Forward lighting
    Pros:
    • Fast
    • Anti Aliasing on DX9


    Cons:

    • Performance exponentionally decreases with more lights



    Deferred lighting
    Pros:

    • Lights do not decrease FPS


    Cons:

    • Conventional Anti Aliasing does not work on DX9
    • Slightly slower than forward lighting in scenes with few lights



    For a setting like ArmA though, the pros for deferred lighting massively outweigh the cons. In a situation with multiple vehicles on fire, the FPS drops down massively, while with deferred lighting, the FPS would remain stable. It'd also allow lights inside buildings.

×