Jump to content


  • Content Count

  • Joined

  • Last visited

  • Medals

Community Reputation

10 Good

About publicfunction

  • Rank
    Private First Class


  • Occupation
    Senior Developer

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

  1. publicfunction

    Reach Elite Forces MRAP Cougar 4x4 WIP

    As I am not moddelling it in Oxygen/Object Builder, as is a very poor system to do it in. It will stay as it is, meaning it will be RHD. Really in a war zone does it really mattter what side the steering wheel is on? As long as it fill its pupose I say.
  2. publicfunction

    Reach Elite Forces MRAP Cougar 4x4 WIP

    No mate. I exported the model from Maya 2013, which was the right way round and then in Oxygen/Object builder it decided to fip it around... So I have just left it as it is.
  3. publicfunction

    Reach Elite Forces MRAP Cougar 4x4 WIP

    Hey All, Thanks for the feedback and advice. I have managed to soldier through and get the animations working and got the suspension almost where I want it. Feedback within the REF community has been great and it seems to drive like something weighing just over 17 tons. The only thing I have left to do to get it where I really want it, is to tweak the wheel bounds to stop the grinding animations on the floor. Only thing I am confused about now is that the drivers hands do to touch the steering wheel. The docs state to use: driverRightHandAnimName = "drivewheel"; driverLeftHandAnimName = "drivewheel"; This doesnt appear to do anything and the hands are stuck in their default positions. Any advice as to where im going wrong would be good... I post a wee video of the drive in a few minutes... ---------- Post added at 13:49 ---------- Previous post was at 13:26 ---------- OK here is the video as promised... As you will see I am still having collision issues with things... And I like to drive off of things... Its what I do...
  4. publicfunction

    Reach Elite Forces MRAP Cougar 4x4 WIP

    Sorry buddy, I have to disagree. Being a modeller ONLY I have no clue what all the references for the bones for animation relate to on the model in any of the LODs or points in the memory lod. All I am looking for is how these link together and I can go from there. Just a simple example of what wheel_1_1 in the 1.000 LOD relates to the Memoery LOD and how all that relates to the model.cfg and the config.app.
  5. publicfunction

    Reach Elite Forces MRAP Cougar 4x4 WIP

    I did still no good. Im getting really frustrated with the docs and there so little information about how the memory LOD and the selections link to the cpp ad cfg files.
  6. publicfunction

    Reach Elite Forces MRAP Cougar 4x4 WIP

    Will do. The thing is theres no real good tutorial I can find to allow this to setup or even reference. The model.cfg file is as follows: class Rotation { type = "rotation"; memory = 1; minValue = 0; maxValue = 1; angle0 = 0; angle1 = 1; }; class CfgSkeletons { class Default { isDiscrete = 1; skeletonInherit = ""; skeletonBones[] = {}; }; class Vehicle : Default {}; class Car : Vehicle {}; class MRAPCougar4Skel : Car { skeletonBones[]= { "drivewheel", "drivewheel", "wheel_1_1" , "wheel_1_1", "wheel_2_1" , "wheel_2_1", "wheel_1_2" , "wheel_1_2", "wheel_2_2" , "wheel_2_2", }; }; }; class CfgModels { class Vehicle; class Car: Vehicle { sectionsInherit="Vehicle"; sections[]= { }; skeletonName="MRAPCougar4Skel"; class Animations { class DrivingWheel { type="rotation"; source="drivingWheel"; selection="drivewheel"; axis="drivewheel_axis"; memory=1; animPeriod=0; minValue=-1; maxValue=1; angle0=-8; angle1=8; }; class TurnFrontWheelR { type="rotationY"; source="drivingWheel"; selection="wheel_2_1"; axis="wheel_2_1_steering_axis"; memory=1; animPeriod=0; sourceAddress="loop"; minValue="rad -180"; maxValue="rad +180"; angle0="rad +90"; angle1="rad -90"; }; class TurnFrontWheelL: TurnFrontWheelR { selection="wheel_1_1"; axis="wheel_1_1_steering_axis"; }; class FrontWheelR { type="rotationX"; source="wheel"; selection="wheel_2_1"; axis="wheel_2_1_axis"; memory=1; animPeriod=0; sourceAddress="loop"; minValue=0; maxValue=1; angle0=0; angle1="rad -360"; }; class FrontWheelL : FrontWheelR { selection="wheel_1_1"; axis="wheel_1_1_axis"; }; class BackWheelL: FrontWheelR { selection="wheel_1_2"; axis="wheel_1_2_axis"; }; class BackWheelR: FrontWheelR { selection="wheel_2_2"; axis="wheel_2_2_axis"; }; }; }; }; I have each wheel selection setup as per above and I have the required points in the memory LOD setup.
  7. publicfunction

    Reach Elite Forces MRAP Cougar 4x4 WIP

    It wont animate. No rotation in X or Y for motion or steering.
  8. Hey all, I am creating the MRAP Cougar 4x4 for ARMA 3 for our community (Reach Elite Forces (REF) http://forums.bistudio.com/showthread.php?159014-Reach-Elite-Forces) . It is 100% in alpha and theres still some way to go before I am prepared to release a Beta to our own community never mind the ARMA3 Community. This is the latest test of the MRAP from the You Tubes: The big issues I am having at the moment is the wheel animations, once thats is place I can move onto more model details and then Reach will get this bad boy textured. Comments are welcome, but keep them civil ;)
  9. publicfunction

    MRAP WIP problem

    Claw, I think its purely down to the mass and the dampers not being right.
  10. publicfunction

    Passing a Task to addAction

    I have updated it since the last posting. so being so nit picky
  11. publicfunction

    Passing a Task to addAction

    @larrow You are a star, that is the explanation I was looking for. This must be down to the way ARMAs engine compiles its files, with the briefing.sqf file being one of the last and therefore as you said objTaskOne is not initialised when the addAction is compiled. This is the whole set of scripts I use now. The objects initialization field: i = this spawn { waitUntil {!(isNil "objTaskOne")}; _this addAction ["Pickup Intel", "objectiveGather.sqf", [objTaskOne, 1, 158], 1, false, false, "", ""]; }; objectiveGather.sqf _object = _this select 0; _soldier = _this select 1; _action_id = _this select 2; _task = _this select 3 select 0; _status = _this select 3 select 1; _rotation = _this select 3 select 2; _object attachTo [_soldier, [-0.18, -0.03, 0.03], "Pelvis"]; _object setdir _rotation; [_task, _status, "You have the Objecive, Now get out off there!", objTaskTwo, player] call updateTask; updateTask.sqf _task = _this select 0; _status = _this select 1; _hint = _this select 2; _next_task = if (count _this > 3 ) then { _this select 3 } else { false }; _player = if (count _this > 3 ) then { _this select 4 } else { false }; switch (_status) do { case 0: { _task setTaskState "Failed" }; case 1: { _task setTaskState "Succeeded" }; case 2: { _task setTaskState "Canceled" }; case 3: { _task setTaskState "Created" }; case 4: { _task setTaskState "Assigned" }; }; hint _hint; if (typeName _next_task == "TASK") then { diag_log format["PARAM 3: %1", typeName _next_task]; if (typeName _player == "OBJECT") then { _player setCurrentTask _next_task; } } I might just swap the _status to be the String variable needed and that would get rid of the switch statement. This means that I can use updateTask independently of all other scripts or as I have in objectiveGather.sqf, call if from any other script that requires a task update.
  12. publicfunction

    Passing a Task to addAction

    @larrow The addAction is on the objects Initialization field, I know using this is good enough, but I used the objects name directly.
  13. publicfunction

    Passing a Task to addAction

    @Shuko Yeah I tried that by passing currentTasks player, but this would still mean that I would still need to know in the code before hand what task I want to update. The only viable solution that would work seamlessly is to pass the Task object in directly. So you guys are aware I have tried multiple permutations of getting this to work, the big issue is that _thetask states it is "any", and not the actual Task object. It may be as simple as I need to use an alternative addAction function as I know this ability is only available with ARMA 3 and the older version only accept limited paramaters.
  14. publicfunction

    Passing a Task to addAction

    @kylania _the_task is commented out, so ignore that. The point of the script is to allow you to pass any task into it to update it, that means this single script is not locked to a single task, but can be reused by any object that needs to have an addAction and have a Task assigned to it for completion, allowing you to be able to add it to anything at any time, making it reusable and an elegant solution. The script is designed to be able to pass these additional parameters for that reason, hard coding them into the script is not really a great idea as that means you would need to create a single script for every time you wanted to achieve this, but under the solution you provide this means more sqf files and a multitude of triggers and other elements needing to be created to handle each one, this inflates your code and makes it bulky and full of unnecessary files, when a single solution should suffice. As developer I want to write a single solution to be able to handle its given parameters so that I do not have to repeat code again and again to be able to use it. The problem I am trying to solve is: Why cant I pass this Task object into the script like the ARMA3 Documentation says I can! The args parameter of addAction states that Anything can be passed to it in ARMA 3, clearly that is not the case.
  15. Hi all, I am trying to get a task to update when passed through addAction as an argument, but the argument being passed is not behaving as I expect. Accoriding to the docs I should be able to post a Task object as an argument in the addAction function. here is the code: briefing.sqf player createDiaryRecord ["Diary", ["Mission: Recover the Intel", "Your mission is to recover an important piece of intel from OPFOR hands. You must try remain undetected during the mission, it will make for you easier."]]; objTaskOne = player createSimpleTask ["Recover the Intel."]; objTaskOne setSimpleTaskDescription ["In Camp Rogain, the OPFOR have valuable intel we need, go recover it.", "Get the Intel", "Pickup the Intel"]; objTaskOne setSimpleTaskDestination (getMarkerPos "objTask1"); objTaskTwo = player createSimpleTask ["Kill the Bad Guy", objTaskOne]; objTaskTwo setSimpleTaskDescription ["Kill the Bad Guy", "Kill the Bad Guy", "Kill the Bad Guy"]; objTaskTwo setSimpleTaskDestination (getMarkerPos "objTask2"); player setCurrentTask objTaskOne; player setCurrentTask objTaskTwo; addAction on the object in question Adding the addAction and 2 arguments one being the task and the other an integer for the _rotation for setdir. player_objective addAction ["Pickup Intel", "objectiveGather.sqf", [objTaskOne, 158], 1, false, false, "", ""]; objectiveGather.sqf This is the sqf file is supposed to deal with knowing the task object to update its state and assign the _object to the player by attachTo. _object = (_this select 0); _soldier = (_this select 1); _actionid = (_this select 2); _thetask = (_this select 3) select 0; _rotation = (_this select 3) select 1; diag_log format["Task: %1", _thetask]; diag_log format["Rotation: %1 for %2", _rotation, _object]; _object attachTo [_soldier, [-0.18, -0.03, 0.03], "Pelvis"]; _object setdir _rotation; //_the_task setTaskState "Succeeded"; The issue I see in the dial_log command is it reports _thetask as being "any" and not the Task object itself. I have tried initialising _thetask as objNull, but that didnt help. Anyone got an ideas, is this a bug or do I need to call BIS_fnc_addAction, I am at a loss. I got around the problem by adding a trigger on the map and getting it to listen for an variable change and trigger the task update from that, but I wanted a more elegant solution.