engima
-
Content Count
548 -
Joined
-
Last visited
-
Medals
Posts posted by engima
-
-
New version.
Version 1.05
-Fixed: Analyzer does not forget about file content in files that are being removed.
-
New Version.
Version 1.05
-Improved the syntax highlighting.
-Fixed: Editor crasching when analyzing files that do not belong to current project.
-Fixed: Intellisense sometimes contained multiple identical private variables.
-SQX: Fixed: Analyzer does not forget about file content in files that are being removed.
-
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!
-
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
- Direct download at OneDrive:
- At Steam Workshop
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)
- 3
- 1
-
14 hours ago, Alleged Accomplice said:What am I doing wrong? It crashes as soon as I open an sqf file
It sounds like a bug. Try to start by ”Open mission”, to have TypeSqf create a project file.
I realize now that I did not test managing single files after last update, which was quite a big one. I’ll test it as soon as I can, but have no chance of doing it today.
-
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:
-
You also need to send _veh as a parameter to spawn:
[_veh] spawn {
params [”_veh”];
....
};
-
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 ...
};
};
-
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.
- 1
-
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.
- 1
-
Is the Helicopter script present on the client machine?
It will be the client creating the vehicle. Then if the control goes to the server I don’t know. However, as soon as the player enters it, its control will be transferred to the player anyway.
-
Because _caller is not local.
No need to remoteExec. The action is executed on player’s machine already, but the Helicopter script is executed on server. And moving a player must be done by the player’s machine.
-
-
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.
-
Spelling errors? And the markers exist on the machine creating the sound source?
-
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).
-
That
2 hours ago, pierremgi said:That's not exactly what is mentioned in BIKI. The formerly played unit continues to live.
That’s correct @pierremgi. I got the details wrong in my post above. Anyway, what I did was to remove the eventhandler completely and got it working with its default behavior.
- 1
-
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.
- 3
-
Try ”_envsound” instead of ”envsound”. Maybe the sound source gets garbage collected when referens is lost. Just speculation though.
But if it results in no sound at all you’re closing in. Then you must keep the reference.
-
Thanks gc8!
Works perfectly for both weapons and items! 👍
-
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?
-
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).
- 1
-
New version. Thanks Josef for good teamwork!
Version 1.03
-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).
-
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.
- 1
- 1
[RELEASE] Operation Shoe Lace - A TvT Campaign
in ARMA 3 - USER MISSIONS
Posted
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:
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.
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.
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...
Great suggestion!
Not without edit. But I'll read that as a suggestion for a mission parameter maybe.