Jump to content

engima

Member
  • Content Count

    548
  • Joined

  • Last visited

  • Medals

Posts posted by engima


  1. Hi

     

    Thanks, I'm glad to hear that you like the mission and my style. That's correct, I always try to fokus on immersion, optimization and keeping things clean.

     

    I notice though that you play the mission alone, and without human enemies, and the mission (or campaign) is not intended so. I can see that I will need to clarify that a bit. All missions assume that there is at least one human taking initiative on each side, and the AI bots that can be used is more for when you play with like one other human friend. And some of your thoughts on improvements are also due to this fact I think. The AI bots alone on one side only "inserts" into the action area, but then they just stand there, let's say for development and testing purposes.

     

    That said, i will also comment some of your feedback a little further:

     

    8 hours ago, LSValmont said:

    Ok I was doing the "Capture the Airbase" mission and when we won the script failed to teleport my two ai team mates back to the base with me.

     

    This has happened to us to sometimes, but not often enough so that I have been able to track it. It might even be so that it only happens when one of the sides are missing human units, but I'm not quite sure about this. I will look into it. It kills the immersion a bit, but as you said, the start and insertion in the next mission usually fixes the problem.

     

    8 hours ago, LSValmont said:

    On the next mission "Cannonball Run" it destroyed the EAST Truck with the heli yet it did not end the mission. All the other vehicles on the map where AAF and the mission description said I shouldn't destroy those. So I waited at the truck destination point but it never arrived there so I lost that mission after the timeout. Not biggie and the mission was very cool still!

     

    You say you destroyed the east truck with the heli, and if that is true, you have found a bug. I will check it. I assume the east truck was on its starting position, since it will not move without humans? If you destroyed a running truck, that was not the objective.

     

    8 hours ago, LSValmont said:

    Perhaps both teams competing for the points could get some shared objectives so there could be some forced encounters between the two player factions at some point, specially if the scores are tied... (Or maybe all objectives are shared among factions but since I was playing vs Ai only if couldn't tell).

     

    This is the whole point of the project. All of the missions have common contact points of some sort. In Cannonball Run one side is driving the truck and the other is searching for them in a helicopter. In Air Station Assault one side is defending the station and the other is attacking. In Capture the Airbase both sides tries to take the airbase from two different directions, one inserting with helis at south and one inserting with armor at north. And so on...

     

    8 hours ago, LSValmont said:

    Also, when you die and you have alive Ai team mates perhaps it is better to teamswitch to them rather than just spectate them maybe?

     

    Great suggestion!

     

    8 hours ago, LSValmont said:

    Is there a way to set the campaign length? Like XX amount of missions and it is over?

     

    Not without edit. But I'll read that as a suggestion for a mission parameter maybe.

     

    • Thanks 1

  2. 24 minutes ago, Robustcolor said:

    @Enigma This is what i found about RemoteExec https://community.bistudio.com/wiki/Arma_3_Remote_Execution

    And this about RemoteExecCall

     

    Ok, this is what I read (on the link I posted above):

    • Scripted function - scheduled environment (suspension is allowed, i.e. spawn, execVM).
    • Script command - unscheduled environment (suspension is NOT allowed).

    It seems a bit contradictory, but if it works without the spawn, then good!


  3. y4mcaI9MKOJdK2O3m0Ohzk9Isa-PV5eelD_PV6ap

     

    Operation Shoe Lace v1.05

    by Engima

     

    Description

    Tensions arise, and two special teams on two different sides fight for victory in this operation about navigating through many of the challenges in modern warfare. This is a Team vs Team campaign divided into seven short missions, playable for 2-10 players.

     

    I’m really proud to present my third large project after Escape and Intrusion. I realized that Bohemia do not support MP custom campaigns, so I created a solution for it. I hope you will like it!

     

    Features

    • Multiplayer 2-10 players.
    • Team vs Team. Two teams fighting against each other.
    • Campaign divided into seven missions, each with a maximum length of 30 minutes.
    • Storyline adapting to the teams’ achievements.
    • No revive! Dead is dead until next mission starts.
    • Score. Successful objectives and players kept alive earns score for their team. The team with the highest total score when the campaign ends wins.
    • AI bots can be used on both sides (useful when playing e.g. one vs one).
    • Easy to get grip of. Full documentation about mission mechanics in dialogs and briefing.

     

    Campaign assumes players on both sides

    Note that this campaign/mission assumes that there are human players on both sides. It is not intended to play COOP vs AI. All humans on one side and AI on the other may result in strange behavior like skipped missions and prefulfilled objectives etc. That said, you can start it alone with AI enemies if your goal is just to test the concept to see if it is something for you and your friends.

     

    Download

     

    Licence

    MIT plus the following addition: The text "Built upon Engima's TvT Campaign Framework (TvTCF)." shall be visible to all participants in a multiplayer game, either during mission load time, or when the mission/campaign is starting.".

     

    Dependencies

    Arma 3.

     

    Compatibility

    Works on hosted and dedicated server, and is JIP compatible.

     

    Version History

    Version 1.05
    -Made insertion areas black instead of blue.
    -Further improved the insertion behavior.
    -Increased base size from 100 to 300 meters.
    -Minor fixes and improvements.
     

    Version 1.02

    -Improved insertion handling by making it simpler and more intuitive.

    -Added parameter to randomize missions.

    -Fixed: spectate camera did not work well in all situations.

    -Fixed: Performing insertion with more than one vehicle could explode the vehicles.

    -General fixes and improvements.

     

    Version 1.01

    -General fixes and improvements.
    -Added parameter to control the campaign's maximum time.

     

    Version 1.00

    -First version.

     

    Some Of My Other Missions

    Escape Tanoa by Engima (built on the original Escape Chernarus branch from Arma 2)

    Intrusion Malden

    Operation Broken Arrow

    Night in July

    • Like 3
    • Thanks 1

  4. No, I don’t think so. The function will be executed in unscheduled environment, so sleep and waitUntil will not work. Try and see what happens. Try also without sleep and waituntil and you should see the helicopter get deleted immediately.

     

    Unscheduled execution is quicker, but cannot be halted (using sleep and waituntil). Triggers, eventhandlers and remoteExec executes unscheduled. You can always use spawn to move into scheduled execution.

     

    At least this is what I can read out of the wiki:

    https://community.bistudio.com/wiki/remoteExec


  5. The script is running on the machine of the player who selected the action. So if that player leaves, the deleteVehicle command is never executed.

     

    You solve it by adding the waitUntil and deleteVehicle to a function on the server and then remoteExec that function right after the moveInDriver command.

     

    I think you will have to ”spawn” the function, since remoteExec is executing unscheduled and you use sleep. Like this:

     

    Function in server_functions.sqf:

     

    fnc_deleteChopperAfterAWhile = {

      [] spawn {

        waitUntil ...

        deleteVehicle ...

      };

    };


  6. 7 hours ago, Robustcolor said:

    Thanks for the help!

    Is it good to use [] spawn {_this call compileFinal vs [] spawn compile when not using a variable from initServer.sqf. I have a loop in one of my functions so i can't just execute it with a regular call compile.

    
    [] spawn {_this call compileFinal preprocessFile "shared_functions.sqf"};
    
    [] spawn compile preprocessFileLineNumbers "shared_functions.sqf";

     

     

    No, it is not good. It is too complicated. You should ”call compile” to create the functions (what you actually do is assigning code to variables). You can do that even if they contain sleep commands. However, *later*, you execute the actual function, simply by using call (or spawn). You can use call even if your function contains sleep. At least from unscheduled environment. call simply means that you wait for a return value.

    • Like 1

  7. Why do you want everything in one single sqf? There are many good reasons to divide your code into several files. However, rule number one is: KISS = Keep It Stupid Simple.

     

    In a SP mission you can most often use init.sqf and one other file (to achieve having one file containing all your functions). And what about one file (start_mission.sqf) that actually does something exiting:

     

    init.sqf:

    call compile preprocessFileLineNumbers "functions.sqf";
    execVM "start_mission.sqf";

     

    And functions.sqf:

    myFirstFunction = {
        hint "this is my first function.";
    };
    
    mySecondFunction = {
        params ["_name"];
        hint "hello " + _name;
    };

     

    And to complete the example, here is and example of start_mission.sqf:

    sleep 60;
    call myFirstFunction;
    sleep 40;
    ["Rambo"] call mySecondFunction;

     

    In a MP mission I always use the following pattern for init.sqf:

    // All functions that are to be present and callable on both clients and server
    call compile preprocessFileLineNumbers "shared_functions.sqf";
    
    if (isServer) then { // Server functions - executed on hosted and dedicated server
        call compile preprocessFileLineNumbers "server_functions.sqf";
    };
    
    if (!isDedicated) then { // Client functions - executed on hosted server and all clients
        call compile preprocessFileLineNumbers "client_functions.sqf";
    };
    
    if (isServer) then {
        execVM "start_mission.sqf";
    };

     

    The "xxx_functions.sqf" files do nothing but declare functions, which makes them present on the machines where they need to be after being called once like in these examples. The "start_mission.sqf" file may contain all mission service logic that makes things happen in the mission. I'd say that this pattern can be used in huge projects. There are good alternatives that makes the code more optimized and such, but if you are struggling with how to structure code in SQF then I'd recommend sticking to this pattern for a while.

     

    EDIT: With this pattern, your fnc_AddAction goes into client_functions.sqf and is called from start_mission.sqf (if you don't write it in the init field in the editor, which is also fine). And your fnc_CreateAndMoveInHelicopter goes into client_functions.sqf, and will be reachable from the addAction since it will now exist on the client and addAction is executed on the client.

    • Like 1

  8. 29 minutes ago, RCA3 said:

    It's the syntax i'm afraid (parenthesis instead of brackets):

    
    _envsound = createSoundSource ["hissing", getMarkerPos (selectRandom ["hissmarker","hissmarker_1","hissmarker_2","hissmarker_3","hissmarker_4","hissmarker_5","hissmarker_6","hissmarker_7","hissmarker_8"]), [], 0];

     

     

    Have you tested it? He’s using the alternative syntax that captures the marker’s z level, so the syntax he’s using should work.


  9. My first answer was a real longshot. But easy to try, so...

     

    I have used the command quite recently, and had no problem with it. I’m quite sure the effect was global as wiki says.

     

    Have you tried with one of the default sounds? Otherwise do that. Like ”Sound_Alarm”.

     

    I have never used the last two arguments myself. I would rather first selectRandom a marker, and then create sound source with last args as default args ([], 0).


  10. I use "disabledAI = 1" in my description.ext, but AI takes control over player units when players leave the server anyway. They should not. Why does that happen? In the lobby I can see clearly that the command is in action, since no AI can be selected or deselected.

     

    I'm creating a new mission, so first I thought it was a bug in Arma. But earlier missions work just as before. Anyone?

     

    EDIT:

    I found it. I had an empty mission event handler "HandleDisconnect" that did not return any value. By default it returns true, meaning that the player unit dies when player disconnects.

    • Like 3

  11. Is there some way to find all weapons that any player has picked up from an ammo box and left somewhere on the map and remove them?

     

    I'm working on a mission with different "sub missions", and I want to control the weapons that will be used in each sub mission. So I remove the ammo and weapon boxes and reset player's loadout after each such sub mission. However, it is still possible for players to "cheat", by picking up everyting from the crates and leave them on the ground for use in the next sub mission. I would like to remove all weapons and items between these episodes, even those that has been left on the ground. How can I do that?


  12. New version.

     

    Version 1.04

    -Added menu item "Rebuild project" to perform a full reset, reanalyze and build of the project.

    -Added support for all script commands up until Arma 3 version 1.98 (into ScriptCommands.xml).

    -Made the project root node expanded from start when opening a project.

    -General improvements.

    -SQF: Now possible to use "#" instead of "select" when selecting from a list (allowed in Arma 3 since version 1.82).

    -SQF: Now possible to have empty string literals in params.

    -SQX: Refactor of SQF/SQX analyzer and compiler (speeded up the build times a lot).

    -SQX: Now possible to declare typed variables on a single assignement line (private Scalar _number = 0).

    -SQX: Now possible to declare typed variables using new SQX keyword 'var' (var _number = 0).

    • Thanks 1

  13. I think that the different end types can be used when you create a campaign (with several missions in it). You then have a campaign file in wich you can specify the ”mission path” - i.e. the order the missions are played, depending on what happens in the missions.

     

    E.g. if the first mission ends with END1, then you play mission 2. But if the first mission ends with END2, then the campaign skips mission 2 and goes directly to mission 3.

    • Like 1
    • Thanks 1
×