Jump to content


  • Content Count

  • Joined

  • Last visited

  • Medals

  • Medals

Everything posted by ianbanks

  1. Santa's Combat Sleigh By Jeck and ianbanks Download Link: http://foxhound.international/arma-3-sleigh.html A magical flying Christmas Sleigh for all deployments into and out of the North Pole. Sling loading and fire-from-vehicle enabled. Merry Christmas to all, and a happy New "Tanoa" Year!
  2. Try comparing histograms too; this histogram of one of the A3 buildings for example shows they aren't using any RGB colour values above around 200:
  3. "Cannot generate ST coordinates" errors occur when your UV map has a triangles or quads with co-linear or coincident points in the UV or 3D (it might only be UV, but your model shouldn't have colinear/coincident points in either 3D or UV because if nothing else it's a waste of polygons that will never display). Arma needs to be able to convert from any point on your UV map to a unique point on your 3D faces and vice versa. If all your UV points for a particular face are on the exact same point, or all 3-4 points fall on a straight line, then it's ambiguous which 3D coordinates correspond to the UV point.
  4. I often find myself going back to the same biki pages on SQF to check basic syntax or look for commands for the basic types (especially after coming back to SQF scripting after a break). To save a bit of time I've done up a cheat sheet for all of the core language elements in SQF: ARMA 3 SQF Cheat Sheet It also includes a copy of the operator precedence table I've previously posted. I'm keen to get any feedback, especially any suggestions or corrections. The sheet doesn't include game related commands (since there are over a thousand if my memory serves me correctly) but I'm also considering doing a second page with some of the most frequently used game related operators.
  5. Altis and Stratis have fairly strong "middle distance" textures that roughen up the areas that are too far out to have clutter or parallax applied (which means the blending between clutter and distant terrain is much smoother). You can only have one middle distance texture though, so a rough one that looks good on grass and rocks probably doesn't look any good on snow. It might just be that you're noticing the jump to mid/far textures more, rather than the distance of the clutter itself.
  6. ianbanks

    Santa's Combat Sleigh

    Heh, that mission looks pretty entertaining. Hmm. Raptors are based on CAMan, I think, which means it should actually be possible to make a Santa uniform for them. Pity there wasn't more time before Christmas!
  7. To sum it up, you want your SMDI maps to use the full range of each channel. The channels should be used to modulate the values (specular and specular power) that are in the RVMAT, not to try to "turn them down" everywhere. Also, have you tried adding small amounts of noise to the normal map? I see DXT1/DXT5/related artefacts in game all the time (even in satmaps), but I think I'm a bit special that way.
  8. ianbanks

    How to store a code.

    Unlike call and execVM, spawn doesn't have a unary (right hand side argument only) version. You need to pass something (usually an empty array, which can later be extended to include arguments). Also you don't need to put code blocks into arrays. The execution of code in blocks is always delayed until some command (like call, spawn, waitUntil, etc) executes it.
  9. DXT1 is used on SMDI which gives you 4 colours, which are equidistant linear mixes of the two colours you mentioned. DXT1 picks those two "endpoint" colours and then the extra two colours are 1/3rd and 2/3rds between them. One issue might be is that the two "endpoint" colours are only encoded with 6 bits (for specular) and 5 bits (for specular power). If your maps have a low dynamic range (for example, a channel only uses values 0-20 instead of 0-255) you could try scaling the channels up and then reducing the specular or specular power in the RVMAT. The specular power (B channel) in an SMDI file simply multiplies the specular power and the specular (G channel) (almost) simply multiplies the specular value. Also, TexView2 can show you the compression error while you are trying to tune things. You change the pulldowns that are under the menu to (for example): RGBA RGB Difference DXT1 ARGB8888
  10. I've done a fair bit of digging into the oddities of nil and have written them up in an article: The Dark Side of nil Seems like a pretty unexciting topic but I've found knowing the details very helpful in troubleshooting SQF problems! The lack of distinction between a private variable containing a nil and an undefined private variable also crops up in code (even BIS functions) at times: http://feedback.arma3.com/view.php?id=20643"BIS_fnc_getFromPairs is unable to return nil when key cannot be found" http://feedback.arma3.com/view.php?id=15259"BIS_fnc_areEqual returns true if both param's are nil" (And many more!)
  11. Private variables in SQF can be pretty confusing, especially with misleading statements like this in the Biki: "Local variables are only visible in a specific script. The whole code in this script has access to the variable, that includes also functions called within the script." Once you try adding an event handler that has references to private variables, as one example, you'll discover it isn't quite as the above suggests. I'm hoping with this article that a mental model–that matches more closely how the SQF engine actually works with private variables–will help people out: The Article
  12. ianbanks

    SQF Cheat Sheet

    Hi whiztler, I've done a small update to correct some typo's and also made the gray text slightly darker. How is it now? Too little a change?
  13. If you use spawn, none of your private variables are available to the spawned function. The two sets of scopes (the spawning and spawned) are unrelated. Anything you need to pass in privately needs to be passed in as an argument: [_a, _bunch, _of, _privates] spawn { params ["_a", "_bunch", "_of", "_privates"]; ... } Also, if you fail to use "private" in any "call"ed functions, they will overwrite privates.
  14. Worse still is links from places like Armaholic to mod discussions are all broken now too.
  15. Yeap, you can replace: class ThrowMuzzle: GrenadeLauncher { ... } With just: class ThrowMuzzle; You want to avoid including any settings from the A3 configs (e.g. "aidispersioncoefx = 6") because like I said before if they change your addon will take them back to the old values and might cause issues. Also it looks like you removed your own muzzle from "class Throw": class MGI_LacrymoMuzzle : ThrowMuzzle { magazines[] = {"MGI_Lacrymo_mag"}; }; If you add that back you should fix the error you're getting. You can remove: class HandGrenadeMuzzle ... Too, as it is part of A3 as well.
  16. Yeap, that's it. It either needs to be excluded from all randomisation with: identityTypes[] = {}; Or they could make up their own tags to allow custom units to have random balaclava's: class IRA_Balaclava_Brown: None { ... identityTypes[] = {"G_IRA_Balaclava", 20}; } class IRA_Balaclava_Green: None { ... identityTypes[] = {"G_IRA_Balaclava", 30}; } etc.
  17. Sounds like one of your third party addons has an incorrect identityTypes[] in one of the CfgGlasses classes, then; in vanilla ARMA 3 NoGlasses is empty and is used to assign a probability to a unit having no glasses at all (in the "None" CfgGlasses class). You can test that by spawning in Nikos (from the "Civilian, Story" faction and grouping); if he ever has a balaclava then some addon is definitely messing things up. Also "LanguageENG_F" isn't likely to be responsible for the balaclava's; if having it in there gave you balaclava's then the addon responsible has really stuffed up. ;)
  18. Hey Mustangdelta, the important line is: identityTypes[] = {"NoGlasses",0,"LanguageENG_F","Head_Asian","G_HAF_default"}; identityTypes tags only add options for the randomiser, which means "NoGlasses" won't force no glasses/head gear if any of your other tags include head gear. In your case, "G_HAF_default" is actually a glasses tag (the G_ prefix indicates this) that probably includes the balaclavas. Also the "0" shouldn't be there, that only applies to "identityTypes" arrays within a CfgGlasses glasses class. Try: identityTypes[] = {"NoGlasses","LanguageENG_F","Head_Asian"}; Also I mentioned a bit more about identityTypes in this recent post.
  19. So you need to add both "inUse" and the class name to the list box?
  20. Hi Ranwer, Why are you storing "isUse" in the list box? You could put each of the class names into the list box data instead: lbSetData [1500, _selName, _item];
  21. I've been digging a bit into the SQF grammar lately and came up with: A Complete Guide to SQF Operator Precedence Hopefully if I've explained it all well enough you should be able to figure out where parenthesis are needed in every situation, without the usual trial and error and long learning process. ;)
  22. They would be short for: _value = _value + _right and: _value = _value + 1 The += and -= version would be fairly easy to implement (they'd be a trivial change to the assignment part of the SQF grammar), but would still require changing the core language which BIS seems very reluctant to do (and for consistency you would want to introduce over a dozen other versions; *=, /=, &&=, etc). The ++ and -- operators would probably need a language and parser rewrite, since SQF does not have the concept of an "assignable" expression (an assignable expression such as lvalues in C/C++ , which is where most people know ++ and -- from). Assignment in SQF isn't an operator, it's a special part of the language grammar. So special that you can do this: 8ball = "black"; hint (currentNamespace getVariable "8ball"); // Hints "black" (When normally, "8ball" would be the number of "8" token followed by a variable or operator "ball").
  23. You shouldn't be replacing the list of muzzles[] in your own addon. Even if you make sure the list is exactly the same as the original ARMA list (with your extra item) any future change to the ARMA 3 configs or loading any other mod with grenades will end up breaking things. Instead just add an entry to it with: muzzles[] += {"MGI_LacrymoMuzzle"}; Also, you shouldn't be including the other muzzle classes (base A3 ones) in your own addon; e.g.: class HandGrenadeMuzzle: ThrowMuzzle { magazines[]= {"HandGrenade"}; }; They will be added back in by A3 when it merges your "Throw" class with the base class, and having them in your config will just cause problems down the road. Once you've cleaned that up they may start working.
  24. Sure that works? BIS_fnc_getRespawnPositions returns a position rather than an id for each point.
  25. Is it an option to release a single archive file containing all the individual modules on platforms where that makes sense? (e.g. Armaholics). If someone had a particular kink for single @folders then they can take that archive and organise it themselves with a bit of dragging and dropping. Part of the push for an "all-in" approach is the tendency for many co-op groups with large custom mod sets is to have fewer overall @folders to make command lines (particularly with coordinating them between players and servers) more manageable.