Jump to content

Rommel

Member
  • Content Count

    1225
  • Joined

  • Last visited

  • Medals

Everything posted by Rommel

  1. If your too lazy to search (as many are...), and you want some of the mainly posted subjects in one place? Here they are, hope this helps improve the re-posting around here. If you can't find the answer to your question, but can find the topic, post in a PREVIOUS thread, no need to make a new one. Command Help: If your looking for help on a particular command, read the BIKI first, I reckon 99% of all threads posted on certain commands can be answered by the BIKI. http://community.bistudio.com/wiki/ New Mission Makers: For new mission makers, I highly suggest the F2 MP Mission Framework, its a great start, saves a lot of placement and has some nifty features that you could spend hours learning to implement, but you can just do so with a small edit (good internal documentation makes it very easy!). http://forums.bistudio.com/showthread.php?t=81694 Multiplayer Basics: A common question that comes up is understanding multi-player locality, I found when I started out, this BIKI page really helped out. It also covers order of initialization and a few other things to help you understand how ArmA works in the scripting environment. http://community.bistudio.com/wiki/6thSense.eu:EG Whispers BIKI Command Locality Post: http://forums.bistudio.com/showpost.php?p=1474511&postcount=8 A great WIKI article on how to make your coding better, optimized and cleaner. It also shows deprecated BIS commands where possible; and which are really slow. http://community.bistudio.com/wiki/Code_Optimisation Frequently Asked Questions/Requests: Now how this works, look for what you want, if the primary thread does not answer your question, move down the list below it, relevance goes down as you progress. Hopefully it will save you a lot of time (and others time!). If anything is inappropriate, let me know, if anything should be added, post it here. Artillery & CAS: http://forums.bistudio.com/showthread.php?t=79020 AttachTo How-to and Examples: http://forums.bistudio.com/showthread.php?t=73630 BIS Ambient Animals: http://forums.bistudio.com/showthread.php?t=79180 BIS Ambient Civilians/Vehicles: http://forums.bistudio.com/showthread.php?t=73497 BIS Ambient Combat Module: http://forums.bistudio.com/showthread.php?t=73393 BIS Artillery Module: http://forums.bistudio.com/showthread.php?t=73272 BIS Conversation Module: http://forums.bistudio.com/showthread.php?t=91875&highlight=conversations BIS Garbage Collector Module: http://forums.bistudio.com/showthread.php?t=73453BIS SecOps Module Discussion: http://forums.bistudio.com/showthread.php?t=73329 Basic Briefing-How-To:http://forums.bistudio.com/showthread.php?p=1710084#post171008 Dynamic Object Compositions How-To and Info: http://forums.bistudio.com/showthread.php?t=74476 First Aid-Module: http://forums.bistudio.com/showthread.php?t=73406HALO: http://forums.bistudio.com/showthread.php?t=73401 Helicopter Insertion/Extraction:http://forums.bistudio.com/showthread.php?t=78066 How-to Place units on Carrier: http://forums.bistudio.com/showthread.php?t=93554 High Command Module: http://forums.bistudio.com/showthread.php?t=73408Multiplayer Locality: http://community.bistudio.com/wiki/6thSense.eu:EG#Determining_if_machine_is_Ingame_Server.2C_Ded_Server.2C_Player_or_JIP_Player Multiplayer Parameters: http://forums.bistudio.com/showthread.php?t=86432 Parachuting / Parajumping / Eject Units : How-To: http://forums.bistudio.com/showthread.php?t=76848 Post Processing Effects: http://forums.bistudio.com/showthread.php?t=75528&Revive Script: http://forums.bistudio.com/showthread.php?t=74396 Spawning Groups: http://forums.bistudio.com/showthread.php?t=74006 Trip / Triggered Flares: http://forums.bistudio.com/showthread.php?t=79378Vehicle-Respawn: http://forums.bistudio.com/showthread.php?t=76445 Weapons Respawn: http://forums.bistudio.com/showthread.php?t=76731 If nothing here answered your questions, you can try searching the forums, if you have no luck, then make your question thread.[OA] How to operate the Scud in scripts/triggers: http://forums.bistudio.com/showthread.php?p=1666847 How to close all doors within a radius: http://forums.bistudio.com/showthread.php?101935-OA-Closing-all-The-doors-within-radius
  2. There have been a tonne of threads, which seem to keep getting posted over and over and over in regards to this issue. So how about we put all the questions in one thread and maybe sticky it so we have a more dynamic range of issues in this forum. The <GROUP> and <VEHICLE> must be defined prior for them to be correctly parsed to the function; if your unsure how to do this, either read up or check the BIKI or UTSE. Relevant BIKI's: http://community.bistudio.com/wiki/group http://community.bistudio.com/wiki/vehicle http://community.bistudio.com/wiki/Variables http://community.bistudio.com/wiki/action http://community.bistudio.com/wiki/moveInCargo http://community.bistudio.com/wiki/assignAsCargo Note: Excluded any mention of HALO until some issues are resolved into how it works with AI. Theres enough examples around already for simple player HALO jumps, so just UTSE.
  3. It appears the latest dev build has removed setVehicleInit... thereby completely breaking CBA for now.
  4. Description: Kills about 67% of AI related lag issues for the server. Eliminates up to 95% of AI related lag issues for the player (on a dedicated server). How? It removes all AI outside of specified ranges, and dependant on the players position, will spawn / de-spawn the AI groups when the player enters their radius. For example; The mission editor has defined the Reducer to have a range of 800m to spawn, and 1000m to de-spawn. If the player enters within 800m of any AI groups position, it will 'fill' the group with its original number of AI, re-filling vehicle crew positions. If the player then moves away and the distance between player and AI groups position is above 1000m, it will remove the AI again, leaving them with only drivers for their vehicles and their group leader. This does not work perfectly for AI placed in specific positions (ie within buildings), it is designed for mission editors who want to put well over 500 enemy on the map, anywhere, without worrying about potential lag issues. So it is perfect for roaming patrols, convoys, AI defending towns (but not static) etc. Example mission provided. Contents (mission folder): init.sqf mission.sqm scripts\init_Reducer.sqf fsm\Reducer.fsm RMM_Core Usage: To use the reducer, simply place down an object (I've used a Game Logic - Location, which is best due to its server locality and synchronisations) and put the following in the initialisation line: _h = [this, <Spawn range>, <De-spawn range>, <Debug mode>] execVM "scripts\init_Reducer.sqf" Optimum values lie in between 700-900 for the spawn range, and 800-1000 for the de-spawn range. If the de-spawn range is lower than the spawn range, it will reverse the values. The debug mode will enable the mission editor to see when groups are filled or reduced. Then synchronise any groups you wish to enable for the reducer to handle, with the game logic. (Shown in example mission) To use default values, simply use the following code in the game logic: _h = this execVM "scripts\init_Reducer.sqf" To add groups to the reducer during the mission, simply add the group to the RMM_Reducer_Groups array. Ie [RMM_Reducer_Groups, <GROUP>] call BIS_fnc_arrayPush; Dependencies: RMM_Core Functions BIS Functions Module Installation: Simple installation; copy and paste the fsm and scripts folder (and its contents) into your mission directory. Ensure the BIS Functions module is placed in your mission. Ensure RMM_Core is loaded correctly. Compatibility Issues: If any groups are killed whilst not spawned, they will remain with a count of 0 and are viable for deletion, therefore a group cleaner may kill groups that are simply waiting to be spawned. To get around this simply use the following code in your cleaner: if (!isnil "RMM_Reducer_Groups") then { _groupsToCheck = allGroups - (RMM_Reducer_Groups + RMM_Reducer_ReducedGroups); } else { This is only important for mission makers whom are using a group cleaner (uncommon amongst low level missions). Bug Report: If you find anything, just post here or send me an email: admin@australianarmedforces.org ... or forever hold your peace. Author: Rommel Date: 02/12/2009 (thats 12/02/2009 for the yanks) Revision: 1 ------------- DOWNLOAD ------------- Size: 7KB Type: 7zip | .7z Unpacker: www.7-zip.org Mirrors: http://www.4shared.com/file/163887890/aa3cbcad/RMM_ReducerChernarus.html
  5. Rommel

    Nogova Virus

    Hey all, I've been playing CWA a few times lately with some mates for nostalgic purposes; but for the life of us we could not find a download for the classic mission "Nogova Virus". This was pretty popular with the community, and if anyone has it, an upload to any file sharing site would be welcomed. edit: thanks to the community, here is an upload I found of all 4 missions: http://www.megafileupload.com/en/file/380560/coop-nogova-virus--all-4-missions--noe-zip.html edit2: they were found at this link to start with: http://www.usasquad.com/downloads/servermissions/
  6. So just finished Eagle Wing, other than having to edit the mission to get past a bug (wouldn't let me in the V3S, it was locked and I was assigned to a static machine gun near the South of the island). Anyway, that aside, it was excellent, really well done BIS! The first campaign I've completed and really enjoyed since the Cold War Crisis. 5/5 for Visuals 4/5 for Design (bugged! :( ) 5/5 for Gameplay 3/5 for Difficulty (5/5 with ACE AI) :rolleyes:
  7. 0 = [getpos this,300] spawn { sleep 1; { private "_b"; _b = _x; for "_i" from 0 to 7 do { _b animate ["dvere" + str _i,1] }; } foreach ((_this select 0) nearobjects (_this select 1)) } I thought this code to be so bloody useful in the now prominent and constant CQB setting we find ourselves within OA, how can I close all the doors. :p That others may want it also; enjoy. EDIT: We need a code snippets thread for things like this.
  8. *Argh my face* As I've been obligated to respond by a squad member; I must point you to sxp2high's response, which sums it up perfectly. As sxp2high also mentioned, this is very simple to do with a few if statements and a tracked variable. What is a little more complex is doing this in an extensible, non-limiting way. Perhaps as inspiration, I'll give some insight on how nomad worked: if (isdedicated) exitwith {}; waituntil {not isnull player}; waituntil {!isMultiplayer || getplayeruid player != ""}; [ [ /*{deaths player} // handled by nomad */ {typeof player;}, {magazines player;}, {weapons player;}, {typeof (unitbackpack player);}, {getmagazinecargo (unitbackpack player);}, {getweaponcargo (unitbackpack player);}, {getposATL player;}, {damage player;}, {rating player;}, {score player;}, {viewdistance;}, {if(isnil "terraindetail")then{1;}else{terraindetail;};}, {getDir player;}, {rank player;} ], [ { _dayspassed = 1 + time / 86400; _maxLives = nomadRespawns * (nomadReinforcements * _dayspassed); if (_this > _maxLives) then {_disconnect = true;}; }, { if (typeof player != _this) then {_disconnect = true;}; }, { {player removemagazine _x;} foreach (magazines player); {player addmagazine _x;} foreach _this; }, { {player removeweapon _x;} foreach ((weapons player) + (items player)); {player addweapon _x;} foreach _this; player selectweapon (primaryweapon player); }, { if (_this != "") then { player addbackpack _this; clearweaponcargo (unitbackpack player); clearmagazinecargo (unitbackpack player); }; }, { for "_i" from 0 to ((count (_this select 0))-1) do { (unitbackpack player) addmagazinecargo [(_this select 0) select _i,(_this select 1) select _i]; }; }, { for "_i" from 0 to ((count (_this select 0))-1) do { (unitbackpack player) addweaponcargo [(_this select 0) select _i,(_this select 1) select _i]; }; }, {player setposATL _this;}, {player setdamage _this;}, {player addrating (-(rating player) + _this);}, {player addscore (-(score player) + _this);}, {setviewdistance _this;}, { setterraingrid ((-10 * _this + 50) max 1); terraindetail = _this; }, {player setdir _this;}, {player setunitrank _this;} ] ] call rmm_nomad_start; Now, what should be apparent, is that this massive parameter list, is actually making use of the fact code can be data in SQF (a very powerful feature indeed!); and I have essentially passed in several lambdas which act as 'getters' and 'setters'. The 'getters' are the first array of functions, which must return some value. The return value from these functions are then stored in the player state. Upon re-connect, the second array (the `setters`) of first class functions are then called using those saved values as parameter `_this`, and the state restored based on the heuristics in those functions. Example? [ [ /*{deaths player} // handled by nomad */ {getposATL player;}, ], [ {}, // do nothing {player setposATL _this;} ] ] call rmm_nomad_start; This does the simplest functionality possible, it 'gets' the players position every update, then sets it upon re-connection. This design works great for mission makers who want full control over what happens where; and don't want to worry about the funky ArmA 2 network issues. I agree it is a code smell that nomad handles the special case for player respawn/deaths, and if you noticed it, there was also variable `_disconnect` injected into the major example above which can be used to force the player to be disconnected. Hope that helps. PS. As for the player not wanting their old data? Simple solution: Escape -> Respawn.
  9. I wrote a variant on this for my old 'MSO' several years ago, as 'Nomad', despite claims (like the above), the script itself is lightweight and uses as much traffic (if not less) as any network synchronous script in ACE or any other mod which does anything complicated. The traffic itself is controlled by how often the loop is run (1 second is perfectly fine, but if your really worried, >10). If you want to make it a bit more fancy, use a random sleep so that all players aren't synchronously all broadcasting their updates. However, this has been tested with upwards of 30 players on a low end connection and is not a real concern. The functionality as it was originally implemented is simple. A player maintains the following in a loop: _saveStatus = [_name, _position, _direction, _animationChecked, _damage]; _saveGear = [_magazines, _items, _weapons, _backpack, _backpackWeapons, _backpackMagazines, _weaponOnBack, _currentMuzzle]; _string1 = format ["%1_status", getPlayerUID player]; _string2 = format ["%1_gear", getPlayerUID player]; missionNamespace setVariable [_string1, _saveStatus]; missionNamespace setVariable [_string2, _saveGear]; publicVariable _string1; publicVariable _string2; Add a script which when the players starts playing (throw it in init.sqf) that checks for this variable, and if it exists, it runs a set of code which restores the players state from the above variables. Such as: _status = missionNamespace getVariable _string1; if (!isnil "_status") then { player setpos (_status select 1); player setdir (_status select 2); // etc }; Simple. Not scary. Super easy. Not really necessary as an addon.
  10. Unedited, playing around with friends, see http://minus.com/mhbUqdTAF/7f
  11. This is something I use occasionally, its not perfect, but should give you an idea on how you could do it. rmm_action = player addaction ["Get weapon from back", CBA_fnc_actionArgument_path, [0, {_wob = secondaryWeapon player; if (_wob == "") then { _wob = player getvariable "RMM_WeaponOnBack"; player setvariable ["RMM_WeaponOnBack", ""]; player addweapon _wob; }; if (_wob == "") exitwith {}; player selectweapon _wob; }, false]];
  12. Assuming you have done *everything* you have said you have done; and correctly. My guess its the missing semi-colon after _d = getDir HQhawk Script errors enabled?
  13. It would seem that a lot of people make briefings, but it just seems so tedious to watch them write out 10 lines with paragraphs fully integrated and it just seems silly. :eek: I've used this solution for a while now, gives full functionality so I don't see why you wouldn't. If your not sure from the layout how it works, I'll expand on it more, but it should be pretty simple. EXAMPLE MISSION - LINK One thing to note, is that it comes out in order, you don't have to reverse your briefing so it comes out properly, thats already done, so just put as you would 'want it to look like'. ;) Briefing.sqf [ [ "Situation", [ "Following the collapse of the Takistan Goverment, NATO forces are now conducting security and stability operations in Takistan. The Takiban maintain highly operational terrorist cells in the regional and mountainous areas; conducting small scale attacks on local populations in an attempt to overthrow the fledgling NATO backed goverment.", "C/S 13D will be assisting in this operation" ] ], [ "Administration and Log", [ "The order of seniority, signals and any other necessary cmd. information will always be given out to you prior to action. If you join in progress, you must wait until you are assigned a unit. Combat after-action reports, are to be posted after the disconnected unit has returned to a transmittable location (field camp or safe location)." ] ], [ "Credits", [ "Mission by Author" ] ] ] // do not edit below this call { if (not isdedicated) then { private "_briefing"; _briefing = _this; waituntil {not isnull player}; for "_i" from ((count _briefing) - 1) to 0 step -1 do { for [{_k = (count (_briefing select _i select 1)) - 1},{_k >= 0},{_k = _k - 1}] do { player createDiaryRecord ["Diary", [_briefing select _i select 0,_briefing select _i select 1 select _k]]; }; }; }; }; tasks.sqf [ [ "task1", //Task Name (GLOBALVAR) [ "Seize the town of Garmarud for FF to advance.", // Task Description Paragraph "Seize Garmarud", // Task Title "Seize Garmarud" // Waypoint Title ], getmarkerpos "mkr_task1_garmarud" // Task Destination ], [ "task2", //Task Name (GLOBALVAR) [ "Return to Base", // Task Description Paragraph "RTB", // Task Title "RTB" // Waypoint Title ], getmarkerpos "headquarters" // Task Destination ] ] // do not edit below this call { if (not isdedicated) then { waituntil {not isnull player}; { private "_task"; _task = player createsimpletask [_x select 0]; _task setsimpletaskdescription (_x select 1); _task setsimpletaskdestination (_x select 2); _task settaskstate "created"; missionnamespace setvariable [(_x select 0),_task]; } foreach _this; }; } For tasks, use the taskname to update the task, ie from the example task1 above, I would use: task1 setTaskState "FAILED"; EDIT1: Added link to example mission. EDIT2: Added secondary task for extended example.
  14. Java doesn't allow functions like that. At all. It is purely objects. (although not strictly pure OOP) No static functions, only static methods. So maybe, as it were, it could be: sqf.setdamage(object, value); Maybe allowing easier porting of code.
  15. Rommel

    Server.rpt

    <table border="0" align="center" width="95%" cellpadding="0" cellspacing="0"><tr><td>Code Sample </td></tr><tr><td id="CODE">Client: Object 5:26 (type UpdatePositionMan) not found. Client: Object 5:26 (type UpdateMan) not found. Client: Object 5:26 (type UpdateDamageVehicleAI) not found. Client: Object 5:26 (type UpdatePositionMan) not found. Client: Object 5:26 (type UpdatePositionMan) not found. Client: Object 5:26 (type UpdateMan) not found. Client: Object 5:26 (type UpdateDamageVehicleAI) not found. Client: Object 5:26 (type UpdatePositionMan) not found. Client: Object 5:26 (type UpdatePositionMan) not found. Client: Object 5:26 (type UpdateMan) not found. Client: Object 5:26 (type UpdatePositionMan) not found. Client: Object 5:26 (type UpdateDamageVehicleAI) not found. Client: Object 5:26 (type UpdatePositionMan) not found. Client: Object 5:26 (type UpdatePositionMan) not found. Client: Object 5:26 (type UpdateMan) not found. Client: Object 5:26 (type UpdateDamageVehicleAI) not found. Client: Object 5:26 (type UpdatePositionMan) not found. Client: Object 5:26 (type UpdatePositionMan) not found. Client: Object 5:26 (type UpdatePositionMan) not found. Client: Object 5:26 (type UpdateMan) not found. Client: Object 5:26 (type UpdateDamageVehicleAI) not found. Client: Object 5:26 (type UpdatePositionMan) not found. Client: Object 5:26 (type UpdatePositionMan) not found. Client: Object 5:26 (type UpdateMan) not found. Client: Object 5:26 (type UpdateDamageVehicleAI) not found. Client: Object 5:26 (type UpdatePositionMan) not found. Client: Object 5:26 (type UpdatePositionMan) not found. Client: Object 5:26 (type UpdateMan) not found. Client: Object 5:26 (type UpdatePositionMan) not found. Client: Object 5:26 (type UpdateDamageVehicleAI) not found. Client: Object 5:26 (type UpdatePositionMan) not found. Client: Object 5:26 (type UpdatePositionMan) not found. Client: Object 5:26 (type UpdateMan) not found. Client: Object 5:26 (type UpdateDamageVehicleAI) not found. Client: Object 5:26 (type UpdatePositionMan) not found. Client: Object 5:26 (type UpdatePositionMan) not found. Client: Object 5:26 (type UpdateMan) not found. Client: Object 5:26 (type UpdateDamageVehicleAI) not found. Client: Object 5:26 (type UpdatePositionMan) not found. Client: Object 5:26 (type UpdatePositionMan) not found. Client: Object 5:26 (type UpdatePositionMan) not found. Client: Object 5:26 (type UpdateMan) not found. Client: Object 5:26 (type UpdateDamageVehicleAI) not found. Client: Object 5:26 (type UpdatePositionMan) not found. I have hundreds of these for 400kb until server crashed. Whats the go there? Also: <table border="0" align="center" width="95%" cellpadding="0" cellspacing="0"><tr><td>Code Sample </td></tr><tr><td id="CODE">WARNING: Function 'name' - s6 has no unit - network id 10:51 - person Nobody Appear when someone disconnects, but a disabled Ai is left in there place, and it has that error for hundreds of lines until one of us shot it, in which the server returned from 1FPS. Also: <table border="0" align="center" width="95%" cellpadding="0" cellspacing="0"><tr><td>Code Sample </td></tr><tr><td id="CODE"> Server: Network message b1b6 is pending Server: Network message b1b7 is pending Server: Network message b1b7 is pending Server: Network message b1b8 is pending Server: Network message b1ba is pending Server: Network message b1bb is pending Server: Network message b1bb is pending Server: Network message b1bb is pending Server: Network message b1bc is pending Server: Network message b1bc is pending Server: Network message b1bd is pending Server: Network message b1bd is pending Server: Network message b1c0 is pending Server: Network message b1c0 is pending Server: Network message b1c1 is pending Server: Network message b1c1 is pending Server: Network message b1c1 is pending Server: Network message b1c2 is pending Is this caused by anything in the server config or?
  16. Rommel

    20km VD..sweet

    Depends on the Object LOD at that view distance. ;)
  17. I think in overall usage by the community and mission makers at large, improvement of HOLD or a new DEFEND waypoint would be the most used.
  18. This isn't by far finished, and I don't really intend to, but I'm sure someone will love it as is, if not improve on it. ;) Linky I give full permission for someone to rip this apart and release it properly. All I ask is my name somewhere in the credits... even if its subliminal. :p It was put together for fun, and is by no means a great example of coding, but it does the job well enough.
  19. Server: Object 5:0 not found (message 121) Cause: ? Solution: ? When this occurs it can be duplicated anything from a small number of entries to hundreds of times The object reference number and message number often changes The cause for this was quite commonly from throwing grenades, rockets, or anything that appears to be created on a fired event then deleted shortly after. Occurs also with createVehicleLocal objects that are forced global IIRC; maybe inter-related incidents. Solution? Don't play? :P; none known.
  20. Rommel

    Japan hit by 9.0-magnitude earthquake and tsunami

    You make it sound as if the whole thing is one big conspiracy, and the media is all lying to us.
  21. As far as I know, this is not possible, except that you would have to do as you have mentioned, split the left and right channels and play them as two different sounds.
  22. You are missing the MP rights file on the server, I'll advise Wolffy of a fail safe so if the server doesn't find it it continues initialization, at this moment the mission asserts that the file is there or it doesn't continue.
×