Jump to content

VictorFarbau

Member
  • Content Count

    557
  • Joined

  • Last visited

  • Medals

Posts posted by VictorFarbau


  1. @Defunkt, so far I looked at the Mig15 and the SU25. Which were the ones most present in my missions so that was a priority. But I agree pretty much all of the jets could use an overhaul of their engine sounds. Well, now that I understood the required config values it's merely a matter of finding good and unique samples for more to come.

    BTW - this very speech synthesizer was one of the options I considered :) Turned out that it just sounds really sad in a cockpit environment due to the tone and emphasis used. But we have a voice actor thread somewhere so that can be an option, too. No idea though whether we have some russian ladies around there.

    Cheers,

    VictorFarbau

    ---------- Post added at 12:26 PM ---------- Previous post was at 11:09 AM ----------

    I removed the dependency to the BIS_fnc module by using a more light-weight method to determine the pitch. That should avoid problems when using non-OA or older ARMA 2 versions. New addon link added.

    Cheers,

    VictorFarbau


  2. Updated to CAWS build 016 (Dec 22nd)

    Hello folks,

    my recent objective was to improve the jet engine sound of the stock SU25 jet. And while I was at it, I also added a CAWS (aural warning system) as it can be admired on some Youtube videos. Which is where I found the used sounds btw.

    As ARMA II provides some nice sound possibilities why not use them. The battlefield atmosphere benefits from scratchy and distinguishable jet sounds in my mind. Have a look at the videos and if you like it go ahead and use it.

    Here's the beef:

    New engine sounds video:

    CAWS video:

    Addon download:

    http://www.mediafire.com/?u8hwf7q7bqlin8o

    The CAWS is the very same system I added to the Mig15BIS addon that just got an update.

    Cheers,

    VictorFarbau


  3. Spawn the Functions Module [...]

    @Sickboy - now I am angry that I didn't think of this myself so I won't thank you :D I do hold scripts until <bis_fnc_init> already; I just noticed recently that they sometimes never started due to the missing functions module. I'll go for that approach, thanks!

    @Myke - I see where you're coming from. But I have learned to let go and use existing pieces of code :) Who knows, maybe stuff gets updated or extended in the future. I am fine with just referencing it.

    Cheers guys,

    VictorFarbau


  4. I am struggling a bit with that BIS_fnc concept. Until some patch level there was a core set of BIS_fnc tagged functions that worked just fine.

    Now the user has to place a "Functions" module onto the map - otherwise functions won't work.

    I find this extension of functionality ambiguous - now we have regular scripting commands but also another set of commands through functions dependant on a module. Not sure what the purpose of this split is.

    Nonetheless some of these functions are incredibly useful. But does it make sense to use them in any addon? In terms of concept - aren't they bound to fail unless used on user maps that happen use the functions module?

    Cheers,

    VictorFarbau


  5. anyway putting a man facing trees on Chernarus is not exactly an interesting "repro step".

    If you are referring to my video - purpose was just to illustrate the behaviour on my machine in detail, no more no less.

    Purpose of this dynamic LOD switching seems clear - increase performance. This has been introduced in Arma 1 already. It's only now that apparently something was changed in the code which causes this violent switching no matter whether the game observes FPS degradation or not.

    And my humble request would be to offer the user an option to determine the amount of LOD switching activity himself.

    Or embed it into the Texture Quality control (Highest - minimum LOD switching activity, Lowest - switch as of 1/10 distance in FOV) or whatever.

    I just don't like this crappy picture being rendered all around me @55fps; this doesn't make sense to me.

    Cheers,

    VictorFarbau


  6. I have observed heavy LOD switching all along the recent beta patches (at least two betas) and now in patch 1.55 as well. I just put myself next to a forest on Chernarus, set the game speed to 0.1 and zoomed in.

    To be admired here (Youtube), please make sure to view in full HD. At the end of the video I am showing my video settings. I usually get about 55fps, the low FPS are due to Fraps. So there's no performance issue that would cause this I'd say. It seems more inherent to the rendering techniques used to squeeze out more FPS. Works counterproductive on my system.

    Cheers,

    VictorFarbau


  7. @mrcash2009 - I did and still see this tree behaviour since some recent patches already. It seems that with each patch the LOD switching gets more intense. And I am wondering why I would need that while my config can easily handle high details in FullHD. Would be nice to have a switch or slider to allow/deny dynamic LOD switching in a given vicinity from the player. A 360 degree spin accounts for a near-LSD experience at present.

    VictorFarbau


  8. LOD - is there a way to influence the amount of dynamic switching? I have sufficient FPS (~50-60) to spare to allow higher quality if only that constant flickering and object transformation would stop.

    "Good" to see that I am not the only one being kicked from our server all the time as I can read in post #23.

    VictorFarbau

    PS: and to contribute to the P1 question for BIS: haven't observed CTD since a long time now, neither server nor client side. And it is safe to say that my usual MP mission stresses the server considerably with many objects and scripts.


  9. As of patch 75445 I am having an issue with our MP server. This is a dedicated server in my local LAN. Never had issues so far including all recent betas.

    Each time I run a mission now server and client load fine until the mission is about to begin (map mode). As soon as I click "Continue" I am being kicked from the server.

    I started a clean beta server like this:

    "C:\ArmA 2\Expansion\beta\arma2oaserver.exe" -config=sample.cfg -mod=Expansion\beta;Expansion\beta\Expansion

    This is the error log from arma2oaserver.RPT when I run "01: War Welcome"

    =====================================================================

    == C:\ArmA 2\Expansion\beta\arma2oaserver.exe

    == "C:\ArmA 2\Expansion\beta\arma2oaserver.exe" -config=sample.cfg -mod=Expansion\beta;Expansion\beta\Expansion

    =====================================================================

    Exe timestamp: 2010/11/09 23:12:09

    Current time: 2010/11/10 00:07:48

    Version 1.55.75446

    Item str_disp_server_control listed twice

    Updating base class ->ReammoBox, by ca\weapons\config.bin/CfgVehicles/WeaponHolder/

    String STR_BAF_CFGMAGAZINES_BAF_PUTIED_V10 not found

    String STR_BAF_CFGMAGAZINES_BAF_PUTIED_V20 not found

    String STR_BAF_CFGMAGAZINES_BAF_PUTIED_V30 not found

    String STR_BAF_CFGMAGAZINES_BAF_PUTIED_V40 not found

    ca\missions\MPScenarios\MP_Deathmatch.chernarus: string @str_mpdeathmatch_subname cannot be localized client-side - move to global stringtable

    ca\missions\MPScenarios\MP_Deathmatch.chernarus: string @str_mpdeathmatch_subname cannot be localized client-side - move to global stringtable

    Warning: looped for animation: ca\wheeled\data\anim\uaz_cargo01_v0.rtm differs (looped now 0)! MoveName: kia_uaz_cargo02

    Warning: looped for animation: ca\wheeled\data\anim\uaz_cargo01_v0.rtm differs (looped now 1)! MoveName: uaz_cargo02

    Unit not created: Subgroup 0:0 not found

    Cannot create object 3:1

    Received 82, expected bool

    Unexpected message data (message struct NetworkMessageWaypoint, item visible)

    Before (0x0000003e): 75 65 00 00 00 00 00 74 72 75 65 00 24 4e 4f 4e 45 24 00 00 00 00 24 4e 4f 4e 45 24 00 00 00 00

    Current (0x0000005e): 52

    Received 48, expected bool

    Unexpected message data (message struct NetworkMessageWaypoint, item visible)

    Before (0x0000007c): 75 65 00 00 00 00 00 74 72 75 65 00 24 4e 4f 4e 45 24 00 00 00 00 24 4e 4f 4e 45 24 00 00 00 00

    Current (0x0000009c): 30

    Received 58, expected bool

    Unexpected message data (message struct NetworkMessageWaypoint, item visible)

    Before (0x0000003e): 75 65 00 00 00 00 00 74 72 75 65 00 24 4e 4f 4e 45 24 00 00 00 00 24 4e 4f 4e 45 24 00 00 00 00

    Current (0x0000005e): 3a

    Creation of object L 1-1-G:32 failed, state LOGGED IN

    Ref to nonnetwork object L 1-1-G:32

    Creation of object L 1-1-G:33 failed, state LOGGED IN

    Ref to nonnetwork object L 1-1-G:32

    Ref to nonnetwork object L 1-1-G:33

    Ref to nonnetwork object L 1-1-G:32

    Ref to nonnetwork object L 1-1-G:32

    Ref to nonnetwork object L 1-1-G:32

    Ref to nonnetwork object L 1-1-G:33

    Ref to nonnetwork object L 1-1-G:32

    Ref to nonnetwork object L 1-1-G:32

    Creation of object L 1-1-G:34 failed, state LOGGED IN

    Ref to nonnetwork object L 1-1-G:32

    Ref to nonnetwork object L 1-1-G:33

    Ref to nonnetwork object L 1-1-G:34

    Ref to nonnetwork object L 1-1-G:34

    Ref to nonnetwork object L 1-1-G:32

    Ref to nonnetwork object L 1-1-G:34

    Ref to nonnetwork object L 1-1-G:34

    Ref to nonnetwork object L 1-1-G:32

    Ref to nonnetwork object L 1-1-G:32

    Ref to nonnetwork object L 1-1-G:32

    Ref to nonnetwork object L 1-1-G:32

    Ref to nonnetwork object L 1-1-G:32

    Ref to nonnetwork object L 1-1-G:32

    Ref to nonnetwork object L 1-1-G:32

    Ref to nonnetwork object L 1-1-G:32

    Ref to nonnetwork object L 1-1-G:32

    Ref to nonnetwork object L 1-1-G:32

    Ref to nonnetwork object L 1-1-G:32

    Creation of object L 1-1-K failed, state LOGGED IN

    Creation of object L 1-1-K:<Empty main subgroup> failed, state LOGGED IN

    Client: Nonnetwork object f960090.

    Client: Nonnetwork object 11485100.

    Ref to nonnetwork object <No group>:0

    Creation of object L 1-1-K:1 failed, state LOGGED IN

    Client: Nonnetwork object 11485100.

    Creation of object L 1-1-L failed, state LOGGED IN

    Creation of object L 1-1-L:<Empty main subgroup> failed, state LOGGED IN

    Client: Nonnetwork object fec60c0.

    Client: Nonnetwork object 11485700.

    Ref to nonnetwork object <No group>:0

    Creation of object L 1-1-L:1 failed, state LOGGED IN

    Client: Nonnetwork object 11485700.

    Ref to nonnetwork object L 1-1-G:32

    Ref to nonnetwork object L 1-1-G:32

    Ref to nonnetwork object L 1-1-G:32

    Ref to nonnetwork object L 1-1-G:32

    Ref to nonnetwork object L 1-1-G:32

    Ref to nonnetwork object L 1-1-G:32

    There's a second file in that folder called "mpStatistics.log". I am just adding this here, no idea if this is a cumulative log of all games or just the recent one:

    AddInitAndRemoveOverridden statistics ... total messages = 2640

    243 ... Type_10

    573 ... Type_46

    130 ... Type_142

    110 ... Type_213

    129 ... Type_214

    1413 ... Type_231

    33 ... Type_233

    9 ... Type_234

    AddInitAndRemoveOverridden statistics ... total messages = 147

    42 ... Type_10

    2 ... Type_46

    95 ... Type_142

    2 ... Type_213

    2 ... Type_214

    4 ... Type_231

    AddInitAndRemoveOverridden statistics ... total messages = 3227

    242 ... Type_10

    2 ... Type_40

    2 ... Type_41

    7 ... Type_42

    15 ... Type_45

    689 ... Type_46

    211 ... Type_142

    5 ... Type_204

    140 ... Type_213

    167 ... Type_214

    1686 ... Type_231

    52 ... Type_233

    9 ... Type_234

    AddInitAndRemoveOverridden statistics ... total messages = 3157

    250 ... Type_10

    665 ... Type_46

    274 ... Type_142

    3 ... Type_204

    123 ... Type_213

    146 ... Type_214

    1595 ... Type_231

    71 ... Type_233

    30 ... Type_234

    AddInitAndRemoveOverridden statistics ... total messages = 1309

    228 ... Type_10

    104 ... Type_46

    105 ... Type_142

    870 ... Type_231

    2 ... Type_233

    AddInitAndRemoveOverridden statistics ... total messages = 1

    1 ... Type_10

    AddInitAndRemoveOverridden statistics ... total messages = 2641

    244 ... Type_10

    8 ... Type_40

    16 ... Type_42

    401 ... Type_46

    165 ... Type_142

    2 ... Type_204

    62 ... Type_213

    72 ... Type_214

    1645 ... Type_231

    21 ... Type_233

    5 ... Type_234

    AddInitAndRemoveOverridden statistics ... total messages = 60

    42 ... Type_10

    12 ... Type_46

    6 ... Type_231

    AddInitAndRemoveOverridden statistics ... total messages = 1

    1 ... Type_231

    AddInitAndRemoveOverridden statistics ... total messages = 3382

    239 ... Type_10

    294 ... Type_46

    137 ... Type_142

    1 ... Type_204

    1 ... Type_213

    1 ... Type_214

    2702 ... Type_231

    7 ... Type_233

    AddInitAndRemoveOverridden statistics ... total messages = 2206

    240 ... Type_10

    214 ... Type_46

    162 ... Type_142

    1 ... Type_213

    1 ... Type_214

    1573 ... Type_231

    11 ... Type_233

    4 ... Type_234

    AddInitAndRemoveOverridden statistics ... total messages = 3516

    242 ... Type_10

    1 ... Type_40

    476 ... Type_46

    332 ... Type_142

    2 ... Type_204

    53 ... Type_213

    63 ... Type_214

    2294 ... Type_231

    47 ... Type_233

    6 ... Type_234

    AddInitAndRemoveOverridden statistics ... total messages = 3271

    239 ... Type_10

    3 ... Type_40

    1 ... Type_41

    9 ... Type_42

    11 ... Type_45

    463 ... Type_46

    203 ... Type_142

    3 ... Type_204

    97 ... Type_213

    115 ... Type_214

    2095 ... Type_231

    24 ... Type_233

    8 ... Type_234

    AddInitAndRemoveOverridden statistics ... total messages = 84

    40 ... Type_10

    40 ... Type_142

    4 ... Type_231

    AddInitAndRemoveOverridden statistics ... total messages = 3020

    244 ... Type_10

    1 ... Type_40

    484 ... Type_46

    257 ... Type_142

    2 ... Type_204

    79 ... Type_213

    95 ... Type_214

    1792 ... Type_231

    45 ... Type_233

    21 ... Type_234

    AddInitAndRemoveOverridden statistics ... total messages = 819

    56 ... Type_10

    21 ... Type_46

    742 ... Type_231

    AddInitAndRemoveOverridden statistics ... total messages = 3781

    246 ... Type_10

    1 ... Type_40

    681 ... Type_46

    268 ... Type_142

    1 ... Type_204

    161 ... Type_213

    193 ... Type_214

    2183 ... Type_231

    38 ... Type_233

    9 ... Type_234

    AddInitAndRemoveOverridden statistics ... total messages = 52

    42 ... Type_10

    1 ... Type_46

    9 ... Type_231

    AddInitAndRemoveOverridden statistics ... total messages = 2672

    240 ... Type_10

    2 ... Type_40

    1 ... Type_41

    7 ... Type_42

    7 ... Type_45

    453 ... Type_46

    240 ... Type_142

    1 ... Type_204

    78 ... Type_213

    90 ... Type_214

    1512 ... Type_231

    29 ... Type_233

    12 ... Type_234

    AddInitAndRemoveOverridden statistics ... total messages = 2373

    247 ... Type_10

    4 ... Type_40

    1 ... Type_41

    13 ... Type_42

    7 ... Type_45

    467 ... Type_46

    223 ... Type_142

    43 ... Type_213

    51 ... Type_214

    1279 ... Type_231

    29 ... Type_233

    9 ... Type_234

    AddInitAndRemoveOverridden statistics ... total messages = 43

    40 ... Type_10

    3 ... Type_231

    AddInitAndRemoveOverridden statistics ... total messages = 4

    4 ... Type_10

    AddInitAndRemoveOverridden statistics ... total messages = 3211

    238 ... Type_10

    8 ... Type_40

    4 ... Type_41

    34 ... Type_42

    28 ... Type_45

    512 ... Type_46

    274 ... Type_142

    43 ... Type_213

    50 ... Type_214

    1976 ... Type_231

    29 ... Type_233

    15 ... Type_234

    AddInitAndRemoveOverridden statistics ... total messages = 819

    56 ... Type_10

    21 ... Type_46

    742 ... Type_231

    AddInitAndRemoveOverridden statistics ... total messages = 85

    10 ... Type_10

    21 ... Type_46

    54 ... Type_231

    AddInitAndRemoveOverridden statistics ... total messages = 96

    10 ... Type_10

    21 ... Type_46

    65 ... Type_231

    AddInitAndRemoveOverridden statistics ... total messages = 716

    86 ... Type_10

    18 ... Type_46

    1 ... Type_215

    529 ... Type_231

    82 ... Type_235

    AddInitAndRemoveOverridden statistics ... total messages = 819

    56 ... Type_10

    21 ... Type_46

    742 ... Type_231

    I have tried with and without my addons galore; logged in as user or admin; tried different missions - always being kicked back to the MP server screen right after mission start. Hmm...

    Cheers,

    VictorFarbau


  10. Good point indeed AZcoder. Eventually the quality of the config file is not checked and garantueed. The config creator determines into which category he puts his stuff. And why would a weapons-mod use CfGVehicles if there is a CfGWeapons class? So you need to be very clear upfront what you're looking for. Methods to check for addon presence need to consider this.

    I used the method in the first post (just count CfgPatches) to determine the presence of the ACE for my late VFAI mod. Depending on that I would add certain weapons etc. I guess for this purpose counting the patches was an ok method. Deadfast's code using "isClass" is in general a better method for sure. I will correct that.

    So I took the MiG15 config, it reads:

    class CfgPatches {
       class mig15bis {
           units[] = {"mig15bis"};
           weapons[] = {};
       };
    };

    Consequently, a

    count (configFile >> "CfgPatches" >> "mig15bis")

    returns "2" (= units[], weapons[]).

    EDIT:

    If I'd like to query the details of subclasses such as "units" then I need to use:

    getArray (configFile >> "CfgPatches" >> "mig15bis" >> "units")

    which returns ["mig15bis"]. But as mentioned before, the addon maker is free to use / mess up the config as he likes so it is not a reliable method to query certain subclasses in order to achieve certain tasks.

    Bottom line for me: whenever I'd like to check for addon presence I basically have to have a look into its config file to be sure what I can check for.

    I can still imagine that the method I coughed up in post #10 could work to ensure addon presence on both servers and clients. I'll try that in an MP mission soon.

    VictorFarbau


  11. @AZCoder - you are correct, if you want to know whether a specific class "mig15bis_camo1" exists then a boolean test as Deadfast suggested is required. For my purposes checking the parent class is usually enough so excuse my relaxed approach here :)

    The question how to catch different addon revisions on client and server, really interesting. In order to avoid undefined states on clients probably a protocol would be required. I could imagine this:

    The server defines an array of addon classnames that will be used though a global variable (e.g. "serveraddons"). Clients check local availability and update a second global array (e.g. "badaddons") with class names which are missing on 1 or more clients. After a timeout period the server compares both arrays and limits the "serveraddons" array to the smallest common denominator. Clients get a message asking them to look for updated addons that provide the missing classes.

    Could be a start...

    Cheers,

    VictorFarbau


  12. @Deadfast, IMO this not necessarily a better solution, it's just a different approach. Using the Mig15 example you're specifically testing for the presence of one inheriting class. The code above is counting the subclasses per parent. Both approaches lead to the same conclusion: a parent class or a specific class is present so I can use the addon (and all inherting classes).

    @All, yes I need to add the MP note, something so obvious that it didn't appear to me.


  13. Note: this mainly applies to SP missions. To start using addons on MP servers makes no sense if you cannot verify that all clients have the required addons installed. In an MP environment you have to let users run into the "You cannot play/edit this mission; it is dependent on downloadable content [...]" message - unfortunately.

    I am just posting this so people can easily find a reference to this if needed. Unlike this poor feller who never got a response back then.

    If you want to check whether a certain addon is present and certain class names have been defined you might consider this method.

    In the given example I want to use 2 planes, an AV8B and a MiG15. The MiG15 is an addon and I won't know whether the machine my mission runs on has this addon available. Solution ("isClass" statement suggested by Deadfast):

    _myplanes = ["AV8B"];
    IF (isClass(configFile >> "CfgPatches" >> "mig15bis")) THEN
    {
        _myplanes = _myplanes + ["Mig15bis2"];
        player sidechat "Found addon Mig15!";
    };

    How do you know the name of the CfGPatches entry such as "mig15bis"? The way I do it is to create a new mission, place the addon in question and save the mission. After that I open the mission.sqm file and look for the related entry in the "addons[] = " section of the file. This should be the CfGPatches name you can check for later. "MiG15bis2" is a vehicle class name and those names that you will typically use in "createVehicle" statements are to be found in the "class ItemX" statements further down in the mission file.

    So if the Mig addon is present, both planes can be spawned. If not only the AV8B will be used. Painless procedure. No more "Warning Message: You cannot play/edit this mission; it is dependent on downloadable content [...]".

    If you're really smart you won't place any 3rd party object on your mission map by default. Also, remove all references to 3rd party stuff from your mission.sqm before publishing. Everything gets spawned based on availability. That way your mission runs in every configuration. In addition to the Arma stock addons the user determines the flavor by adding / removing addons himself now. He will love your mission/campaign for this.

    Cheers,

    VictorFarbau


  14. I played the very first release in 2001 and I remember how annoyed I was with the clumsy graphics and the boring sound. And then I discovered the editor and that there was a scripting language... :)

    Since then I moved countries twice, changed jobs, marriage, kid, house, now living in Germany and who knows what's next. My wife agrees with this hobby as she appreciates the highly creative side and the social aspect (coop) of it.

    You could say that OFP,A1,A2 have been part of my life since almost 10 years. Good times, it certainly added to the quality of my life to have such a fantastic sandbox for ideas available. Thank you BIS!

    VictorFarbau


  15. The good news is - it can be done (I believe). But you'd have to dive into some more scripting.

    1. Why not use the Fuel Can object for fuel? Editor -> Empty -> Objects -> Fuel Can. Create that object class out of your hemp booze :)

    2. Employ drag&drop scripts (like used in my VFladder addon) using sin&cos (_obj setposASL sinx, cosx, 1 or the like) to simulate carrying objects.

    3. Try the command cursorTarget to link the can to the car.

    Make cans appear and disappear as required and set up a score system of global vars or object variables (example: setVariable to manage inventory.

    It's a challenge for sure; but that's the deal with this hobby :)

    My 2 cents,

    VictorFarbau


  16. The trick is to a) determine a suitable position on the vehicle and b) set the animationstate of a unit accordingly.

    BIS provides some animations for units sitting on vehicles.

    Example (_unit = soldier, _vehicle = HMMWV):

    --------------------------------------------

    _unit attachTo [_vehicle,[-0.8,-1.5,-0.7]];

    _unit switchMove "aav_cargo01";

    _unit setDir _0;

    Voila, the unit sits on the HMMWV. The exact positions are relative to the defined vehicle center - you need some trial and error to find the one you want. Then you need to try which animation fits each position. I usually only use 2 animations:

    "aav_cargo01" and "miles_c0briefing_odpovedel_loop".

    Hope that gets you going,

    VictorFarbau

×