Jump to content

engima

Member
  • Content Count

    548
  • Joined

  • Last visited

  • Medals

Everything posted by engima

  1. New version. 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.
  2. I agree about Stratis. But I thought it was fun as a variaty. And it doesn’t really matter for this game mode. I think I found at least one interesting enough local area per mission. I’ve heard you about playing randomized missions. It will be in the next release.
  3. Hi @Rosetux The step would not be huge. The TypeSqf project is already divided into two, where the editor is one part and the SQF and the SQX analyzer/compiler is the other. The interface between them is C# classes inside a DLL. And the TypeSqf editor is already using intellisense for SQX, so that is possible too.
  4. Thanks @LSValmont for letting med know about your experience playing! I love that you like the mission. It gives me inspiration to continue on with the project. It's been a bit intense last weeks, you know polishing before a release and so. All that RL stuff that always is getting in the way.... 🙂
  5. Put the code in a file called "mission_counter.sqf" in the Arma 3 mission root folder. (In this case you can skip the first and the last line - the spawn command). Then in the trigger activation field, write: _nil = execVM "mission_counter.sqf"; This means that when the trigger fires, the execVM command is executed. This command starts the file mission_counter.sqf that starts to run in the background. Once in a second, this script displays seconds left as a hint.
  6. New version. Version 1.01 -General fixes and improvements. -Added parameter to control the campaign's maximum time.
  7. [] spawn { private _timeLeft = 60; // Mission time in seconds. while {_timeLeft >= 0} do { hint str _timeLeft; sleep 1; _timeLeft = _timeLeft - 1; }; };
  8. Hi @LSValmont Thanks for all of your feedback! I look forward to hear what you think about it after the weekend, when you said you were about to play it with friends. The truck you saw in Cannonball Run was not the target truck. It was an AAF Truck. A challenge in Cannonball Run is to identify the target, and hitting independent or civilian will cost you "guerilla alliance", which you will otherwise gain out of the mission. The AI enemy units do not do anything other than inserting and waiting for human initiative. The missions in this particular campaign is always in the same order. However, you will play different roles depending on how you progress. The most obvious is that if you win Capture The Airbase you will always play the "airbase owner" role in the rest of the missions. 30 min for seven missions is 3.5 hours. That is a "worst case" scenario though. If objectives for both sides are fulfilled earlier, or e.g. if all players die, then the current mission will end. More likely you play it somewhere in between 1.5 to 2.5 hours. A parameter for the maximum time is still a great idea, and is now written as a TODO. I have done some fixes, let's see if I manage to release version 1.01 for you in time for the weekend.
  9. 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.
  10. New version. Version 1.05 -Fixed: Analyzer does not forget about file content in files that are being removed.
  11. 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.
  12. 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!
  13. 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.
  14. 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
  15. You also need to send _veh as a parameter to spawn: [_veh] spawn { params [”_veh”]; .... };
  16. 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 ... }; };
  17. 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.
  18. 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.
  19. 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.
  20. 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.
  21. 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.
  22. Spelling errors? And the markers exist on the machine creating the sound source?
  23. 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).
  24. 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.
×