Jump to content
🛡️FORUMS ARE IN READ-ONLY MODE Read more... ×

opusfmspol

Member
  • Content Count

    720
  • Joined

  • Last visited

  • Medals

Everything posted by opusfmspol

  1. For those who still enjoy playing original BIS Warfare missions in Arma 2 and OA, I've begun putting some tutorial videos together on how to set up Warfare missions of your own in editor, and then customize them to your own liking. They pertain to editing missions using the Warfare and Warfare (OA) modules in editor, not modded editions such as Warfare BE. The playlist thus far includes: - Creating Basic Warfare Missions in Arma 2 & Operation Arrowhead - Adding Respawn and Parameters to Warfare Missions - Setting Up Base and Capture Sites in Warfare Missions As I can get more videos created to share, the list here will be kept updated. My set goal (the Lord allowing, each video takes time) is to eventually share six videos minimum, with no max limit, covering basic setup, adding SecOps, and scripting to customize Warfare missions. Then hopefully after that, some targeted scripting tutorials on how to customize various things in WF missions, like swapping out factions in the factories, adding Air teams, and what not. I began creating these videos after finding that many of the community resources that were relied on most for editing and customizing Warfare, which did exist for quite some time, have gone away. I'm hoping these videos will carry on as a useful available resource for those "Warfare Warriors" out there who still continue to play. Note: The resource websites in each description are unfortunately cut short by YT and not clickable (I am aware), but at the end of each video the web links can be viewed in full.
  2. What I can provide: BI Public Data BI Game Content Usage Rules BI Licenses Overview BI Licensed Data Packs BIKI ALDP (includes links identifying contents of each BI licensed data pack) BankRev (PBO extractor, part of Arma 3 tools) Mondkalb's Basic Addon Tutorial (old, many links are now dead) These videos are old and might be outdated as well: Installing Arma 2 Editing Tools with Gnat666x on YouTube (but maybe Arma 3 Tools Addon Builder, Object Builder, Terrain Builder could work ??? (not known)) Oxygen2 Tutorial #1 with Gnat666x on YouTube Oxygen2 Tutorial #2 with Gnat666x on YouTube Oxygen2 Tutorial #3 with Gnat666x on YouTube Oxygen2 Tutorial#4 with Gnat666x on YouTube Oxygen2 Tutorial #5 with Gnat666x on YouTube Oxygen2 Tutorial #6 with Gnat666x on YouTube Oxygen2 Tutorial #7 with Gnat666x on YouTube
  3. In A2 Warfare, fixed wing aircraft are available from capturable airports, which are not factories a Commander builds but fixed structures to capture, like towns and camps. They're empty objects added into a mission. The multiplayer mission "Superpowers" and single-player scenario "Bear Rising" both provide good examples how to set them up. Place an Empty -> Warfare Buildings -> Airport object alongside where you want planes to spawn (like an airport taxiway, or end of a runway). In the Name field, give the airport a name, i.e. Airport1. (This is important to prevent a script error from occurring.) Have it run the update script for Warfare airports. Put this code in the init field: nul = [this,Localize "str_wf2_gl_airport"] ExecVM "ca\Warfare2\Scripts\Server\Server_UpdateAirport.sqf"; this SetVariable ["markerName","Airport1"]; When facing the object's direction, the hangar doors are at the bottom of the object, so face it away from the taxiway/runway spawn point. Create the marker for the Airport. Name: Airport1, type: Icon, color: default, icon: Circle, text: @str_wf2_gl_airport Then move the marker right on top of the airport object. Save mission and preview. When your unit runs into the hangar, the airport captured message should show, marker should change color, and planes should be available to purchase. Some extra notes: The Airport object is part of A2 content, it's not part of standalone OA. That's likely why the "Mountain Warfare" missions in OA don't include capturable airports, the hangar is only available in Arma 2 and Combined Ops. Standalone Arrowhead doesn't have it; but a Combined Ops player can create capturable airports on OA maps because they do have the object. If anyone plays Resistance side, there won't be any aircraft to purchase. Default Resistance side has no fixed-wing aircraft. In multiplayer, JIP players won't see the updated marker color for friendly captured airports. To have their markers update when joining, add this code to an "initJIPcompatible.sqf" file in the mission folder:
  4. Warfare factories produce units from the default factions until customized by scripts. The A2 default West faction is USMC. In multiplayer, the mission team leaders also receive a default weapons loadout unless customized by script. The default A2 West loadout is M-16 with grenades. But in singleplayer, the mission team leaders receive whatever weapons their units have from the editor. The multiplayer mission "04: Civil War" has CDF fighting against Insurgent forces. It provides a good example how West factories and such can be switched to CDF, but doesn't switch the team leader loadout from default, they still have M-16. So to customize your mission, set a custom init script. In editor, put this in the Warfare init field: this SetVariable ["customInitMissionScript","InitMission.sqf"]; Then create a custom init script. Go into you mission folder and create a file "InitMission.sqf". In the file, put this: BIS_WF_Common SetVariable ["customInitCommonScript","Common\Init\Init_Common.sqf"]; // Using a custom common script. BIS_WF_Common SetVariable ["customInitServerScript",""]; // Using core server script (Must always be included even when no custom server script is used.) Two custom common init scripts are needed. One to switch general things (faction, AI units, support vehicles, loadout), and the other to switch the factories and defenses. In your mission folder, create a folder "Common". In the Common folder, create a subfolder "Init". In the Init subfolder, create a file "Init_Common.sqf". In the file, put all of this: In the Common folder, create a subfolder "Config". In the Config subfolder, create a file "Config_Structures.sqf". In the file, put all of this: Save file, save mission, and preview. If done correctly, West should be CDF factories producing CDF units, weapons and vehicles. Mission team leaders should have CDF weapons instead of M-16. My A2 Warfare mission editing videos thus far: Creating Basic Warfare Missions in Editor Adding Respawn and Parameters to Warfare Missions Hope this helps.
  5. Terrain locations (those in the map config) can only be modified by creating a scripted terrain location, as in createLocation example syntax 3. Or you can create a custom map location of your own, called a scripted location. Scripted locations can be fully modified or deleted in a mission using Location commands. To create a custom map location, place a game logic where you want the icon or the name to be located on the map, and in the logic init field put: myLocation = createLocation ["NameCity",this,100,100]; myLocation setText "My Location"; deleteVehicle this; myLocation is the variable used to modify or delete the location created in game. "NameCity" is the class name (type of location, which controls the font color, type of text, and icon that appears if it has one). this represents the location position (the location will be created at position of "this" logic). 100,100 represents the location's range, E-W and N-S. In scripts, you can check to see if an object's position is IN a location's range. Setting 0,0, the location has no range. setText "My Location" sets the name label that appears on the map. Default text is an empty string "" which is nothing, there is no name, only an icon shows if the location has an icon. deleteVehicle this removes the logic from the map (if no longer needed). You only need a variable if you intend to modify or delete the location during the mission. If you don't need the variable and just want the location created, that's it, use this: createLocation ["NameCity",this,100,100] setText "My Location"; deleteVehicle this;
  6. Try to avoid using player command in conditions on a dedicated server when possible, since player is objNull there. Making the condition: this && local sq ought to work fine. When sq is not played (unit belongs to server), the server won't be calling on the radio trigger. Trigger would only be called by sq as a player.
  7. opusfmspol

    BW Cti with Ace

    Found Warfare BE ACE Edition (v 2.067[1.2]) and Warfare BE - ACE (v 2.059) at Armed Assault Info.
  8. opusfmspol

    How to find/use Warfare maps

    You might be using groups or vehicles, which causes issues in game. This video on YouTube can help you with properly setting up a basic Warfare mission in the editor. And this video on YouTube can help you with adding a description.ext file that includes the unique parameters Warfare uses, plus how to add a few custom parameters of your own for extra options. I'm just starting to put together a third video on Warfare editing now, but don't know how long that one will take. The videos are set unpublished on YouTube for now, meaning a search won't find them. You have to click the link above to view them, but that could change later. (I still have things to figure out about properly setting up my YT account, so that hyperlinks in video descriptions work, and what not. I'm old, it's confusing). I started putting these videos together a little while back, after finding out that Darren Brant's blog (which was the go-to site for Warfare how-to stuff) had gone away, as did Armaholic. As for finding maps, all those I have were obtained from Armaholic before it went away, so don't really know where one would go now.
  9. It is possible. Commander clicking on map to tell the driver where to go is default engine behavior. onMapSingleClick uses a true/false flag at the end of the code to tell the engine whether the map click code completes the click sequence or not. By default it passes false, indicating not complete, so default engine behavior will follow. You pass true, and it prevents the engine from carrying out default map click behavior. See example 4 on the page.
  10. Verify the command is being run on the machine where the aircraft is local.
  11. opusfmspol

    Condition OR

    {triggerActivated _x} count [tg1,tg2,tg3,tg4,tg5] >= 3
  12. opusfmspol

    Repeated checks

    Due to Array Reference you would not want to simply cross-reference the array with "=" alone, since any changes to unused_markers would then also change all_Markers. You would instead want to copy the array with "= +" so that all_Markers and unused_Markers become separate arrays of their own: all_markers = ["rm01","rm02","rm03","rm04"]; unused_markers = +all_markers; if(unused_markers isEqualTo [])then{ unused_markers = +all_markers//if list is empty, repopulate it for next time };
  13. Hi QuiGon, Not known when I made that post (2017), is that a waypoint's condition only gets checked by the Group Owner machine. The waypoint's OnAct code will get run on all machines, but only the group owner machine will check whether a waypoint's condition is completed: (Waypoints wiki page) And I believe that's what leads to the locality issue, in that my testing back then showed the synced LOAD and GETIN waypoints seem to rely on unitReady commands in their handlers to detect when the units to board have all mounted. But unitReady only gives an accurate return when the unit being checked is local. A machine that checks unitReady on a remote unit will always receive a return true (unit is ready) even when the unit is not ready. The waypoints work in SP and for MP Host-Only because the transport group and the boarding group are all local to the server, the waypoint unitReady checks give them an accurate return. But In multiplayer client and dedicated server it fails, because the transport and boarding groups are each local to different machines. The transport hits the LOAD waypoint, and checks status of the remote group boarding. Being remote, it receives unitready true from all the units to board (even though they haven't yet boarded), so it continues on to next waypoint. That's what I believe occurs. The post from 2017 was an attempt at working around the locality issue, while not understanding that only group owner would check on waypoint condition. It worked, but is a burdensome work-around. Instead, try using waypoint conditions to check that the units have actually boarded before the waypoints can complete. Keep in mind that for your mission, server checks waypoint condition for the transport, client checks waypoint condition for the boarding team.
  14. The .rpt log is spamming because you have no sleep in the waitUntil. Undefined variable gets logged for each cycle while it remains undefined. Seems your camp script is running before the common init completes, and commonInitComplete was not predefined. You could predefine it, which is often the best way: commonInitComplete = false; // stuff happens // camp script runs // common init finishes commonInitComplete = true; Or you could handle it as a flag variable which could be nil, true or false: waitUntil {sleep 0.1; [false,commonInitComplete] select !(isNil "commonInitComplete")}; Return is false when commonInitComplete is not yet defined; or, Return is commonInitComplete value when it is defined.
  15. showCommandingMenu "";
  16. opusfmspol

    Creating a Campaign Variable

    SaveVar command BIS_evidenceGathered = 0; saveVar "BIS_evidenceGathered"; //GLOBAL: VALUE OF EVIDENCE GATHERED SO FAR IN THE CAMPAIGN
  17. For unlimited ammo, @avibird 1 posted this release at the beginning of January. And it can still work in A2 if the private variables, params and remote execution get reverted back to the A2 old school methods. For instance, where A3 uses remoteExec, A2 uses the RE function, as in "Call RE" or "Spawn RE", with its associated rCommands.
  18. Maybe this post from 2016 could be relevant. isTouchingGround also has a note from Gippo dated April 2017 saying: Which in my mind would conflict with its Global Argument indicator; usually a command that needs to be run on the machine where object is local would have a Local Argument indicator. I concur with the @Larrow and @pierremgi, if the command is being problematic, rely on the object's z-coordinate instead.
  19. @Gunter Severloh, I suppose it's not the word "time" that's the issue, it's the word "waste". What is waste? In refining, it's the slag. Raw ore goes in and the product is run off; but whatever's left over is the slag, cast off and disregarded. The product is the tin, the iron, the copper, the silver, the gold. All things precious. ("Precious": because of Tolkein and the brainwashing black boxes we live with, it invokes the word "Gollum" to mind, but is that what I'm speaking of here? I mean what's actually near and dear in each of our hearts. The things we treasure in our hearts and our minds, the things we appreciate. Should a parent look at their child and go, "Gollum"; or should we break the brainwashing and cast that aside?) We're all individuals. We all have things precious to us. All things precious to me may not be precious to you, and all things precious to you may not be precious to me. Those things precious to you clearly are not all precious to whoever criticized. But it seems they have their things precious too, which it seems you don't appreciate as they do. They look upon your time in Arma as a heap of slag, and they seek gold. Yet in your own eyes, what they see as slag is golden. Is that a paradox? No. It's human, it's humanity, it's who we are. We all have different values, and we all value the same things differently. I'm in the U.S., and here in the early 1800's there was a card game called Faro that was more popular than poker or blackjack and played in all the saloons whether for money or for fun. How do you suppose the people in the saloons would have reacted had someone come in and told the Faro players, "You're wasting time, those cards aren't real; the real world lies outside those cards!" I figure first you'd hear, "These cards are real", and they'd be right. Then you'd hear, "If I'm wasting time, whose time is it I'm wasting?" Anyone who might say it's a waste of your time would be more truthful to say "It's a waste of time to me." They're projecting if saying it's a waste of your time. We all live from point A to point B (whether we go on to point C, you decide). Simple fact is, from the moment we're conceived, we're doomed to die and we get a dash between two numbers. So what do we do with that time that we have? We live, we work, we rest. Some have more and harder work than others, some have more and greater rest than others. Some have more and better life than others. Make the best with what time we've got. Family; don't neglect family. But sing it brother, there's a song in there. And if a preacher can't preach about that, he's got no Spirit in him. Reality is that Arma, for most of us (because for some it is a job, putting bread and butter on the table), it's entertainment, it's amusement. We all seek entertainment, we crave it, because in life we have stresses and distresses all around us; and like a field laborer longing for the shade, we seek relief. And when we get it, relief itself is short-lived, it's not enough, we want amusement. I've heard it said that "amusement" comes from the Greek word "muse", which means to have in mind, to think. To a-muse is the antithesis, the opposite, to put out of mind, not to think. Think of what? The labor, the stresses and distresses we have to deal with. If we rest without entertainment, we think about those things. We don't want to muse on them, we want to be amused. And some people take their amusement seriously, like you do, and admittedly, so do I. What you're doing is taking your bit of shade that you found seriously; constructing a lean-to, making a mattress, adding a pillow. And others who share the shade with you appreciate that, because you share your stuff with them. The laborer expects his wage; to you and those around you, it's silver and gold. Those looking on from afar say, a trash heap; what a bunch of waste. It's not a waste. It's what you choose to do with your time in the shade. All I would suggest is, don't ever let the time resting in the shade detract from the work, or the life (i.e., family as well as friend time).
  20. If a script is run repetitively, over and over again, you want to compile and run it as a function. Whether done using CfgFunctions in a Description.ext, or by using: THY_fnc_mainBasesProtection = Compile PreprocessFileLineNumbers "FolderName\mainBasesProtection.sqf"; . . . the file will only be compiled once, and the function can be called or spawned over and over again without it being recompiled. execVM compiles the script every time it gets used, and that takes away processer time that could be used elsewhere. So you would use ExecVM for scripts that are only run once, or remain persistent (like looping updates, which the base protection script sounds like), or scripts that are needed, but rarely get run. This is good strong advice (IMHO), because your mission might not use a CfgRemoteExec in the Description.ext, but you won't always know whether an addon that will be used has within its config a RemoteExec restriction against clients running the ExecVM command. On dedicated server, Player is objNull. If it has to be run by server, you may need to cycle through allPlayers array and determine who is inside the base limits. But on client, Player command will always return the object which is the client player's unit. It's different on every machine. So if the script is only applying immortality to a player, and nothing else, it should likely be run from initPlayerLocal.sqf
  21. opusfmspol

    Tasks testing

    With that many tasks I would resort to a mission flow FSM to handle them the way BIS tends to do, but you may be unfamiliar with FSM's so.... - You spawn or execvm a loop that handles setting the task states. This way you have a single go-to script for testing whenever tasks get added in or modified. - At the start, before the loop begins, you declare flag variables. These flags prevent their specific task blocks from running more than once. - Inside the loop, each task gets checked to see if its condition is met. If so, the task state gets handled and the flag gets set. - Each task has its own condition to satisfy, but it also checks the flag variable, in order to disregard after the task has already been handled. Very basic and simplified: And if one task is dependent on another being completed, that too can be added into the condition using its flag variable: if (<task04 condition is true> && _task_02 && !_task_04) then {_task_04 = true; <set task state completed>};
  22. opusfmspol

    Multiplayer While Loop on Players

    That would be correct, player object changes to a different object on respawn. No need to copy it over, the loop continues until player disconnects. Just use Player command (or update the player object "_rc" each loop), and use condition that player is Alive for the info to update. While {true} do { if (Alive Player) then { hint . . . . }; Sleep 1; };
  23. opusfmspol

    Multiplayer While Loop on Players

    Why not have initPlayerLocal execVM the script? The remotExec and BIS_fnc_ExecVM seem unnecessary, and the remotExec 0 seems like it would be the issue.
×