Jump to content

KC Grimes

  • Content count

  • Joined

  • Last visited

  • Medals

Community Reputation

32 Excellent


About KC Grimes

  • Rank
    Master Gunnery Sergeant


  • Occupation
  1. Grimes Simple Revive Script

    This is indeed a result of the use of setUnconscious, and it is actually one that I do not really mind as it is somewhat realistic. You won't be giving orders if you are incapacitated. That said, for those who utilize the squad member UI indicators, this may pose an issue. I do plan on at some point using a 3D object to indicate an incapacitated unit, similar to what you see in BIS revive.
  2. Grimes Simple Revive Script

    In V0.9 I will be addressing numerous changes and improvements to the BIS Revive system from 1.82 (remember, my goal is to be as stock as possible while meeting common mission needs). These commits are already in github. Grimes Simple Revive has long had the ability to both Load and Unload incapacitated units into vehicles. The issue that BIS had with setUnconscious was something I worked around while still being able to use the ragdoll. Now that they have greatly improved upon setUnconscious and the associated "Unconscious" animation, I have simplified my Load/Unload process. To the front-end user, my version of Unload looks no different than the BIS version of Unload. What sets this script apart is that you can also Load. The reason that I play with Grimes Simple Revive instead of BIS Revive, even now, is because of a few things: 1. Greater flexibility, while remaining simple 2. Completely documented! 3. Use of Load/Unload 4. Use of Drag (Carry will always be "meh") 5. Most importantly... Implementation of AI.
  3. I am trying to convert some old missions away from using the description.ext for various "presentation" definitions, and instead use the Eden editor. For instance, in an old description.ext I would have: author = "Apple Pie"; onLoadName = "Death to Pumpkin Pie"; onLoadMission = "Need I say more?"; At least to me, it seems like the Eden settings should cover this, and also an image, AND do all of the above and multiple points (scenario screen, briefing screen, mission load). So I deleted these 3 lines, and instead filled them out in Eden to be saved into mission.sqm. Well, they saved, but don't quite seem to do the trick. I still require briefingName in description.ext to be defined, which I think I saw elsewhere as a bug. Next to Description: in the role selection/briefing screen, it is just blank. Anyone have any ideas on how to get these issues taken care of in Eden? Or should I still be focused on description.ext?
  4. Grimes Simple Revive Script

    Take a look at G_Revive_init.sqf. You'll notice a setting "G_Revive_DownsPerLife". This limits the number of incapacitation events per life, at which point the unit will be forced to respawn. Another setting that may be involved is "G_Num_Respawns", which will not respawn the unit if limited. Thanks for playing, glad you like it. More to come.
  5. Grimes Simple Revive Script

    Goooood question. I will address this more easily in V0.9. For now, as long as the client that the spawned AI are local to has the system running (they probably do), you should just have to execute the following line: [_unit] spawn G_fnc_EH; For right now (this will change), it may be best to ensure that line is executed on all clients via remoteExec. [_unit] remoteExec ["G_fnc_EH", 0, true]; If you do not remoteExec it to everyone, there may be some locality issues, specifically if the AI becomes local to a different client (such as a change in squad leader, owner disconnect, etc.) Take a look at G_Revive_Init_Vars.sqf, specifically searching for G_fnc_EH and how it is defined and used. Let me know how it goes!
  6. Perhaps it is for the best then...
  7. Because you were inaccurate or irate? Because now I am just sad I missed it.
  8. Grimes Simple Revive Script

    Speaking of AI doing cool things, I have made a commit to the master branch on github that adds the ability for AI to revive each other and players. Upon incapacitation of a friendly unit, one nearby AI, who is able to revive, will be assigned to revive the downed unit while a second nearby AI will be assigned to guard the "reviver". All involved AI will then resume normal play once the downed unit is revived. Currently this does not include incapacitated units while they are inside vehicles, and the AI will not respect any FAK or Medikit requirements that may be set for players. Both of these are future features. Feel free to give it a download on github and test it out. Hopefully I will make another release here soon with even more features and optimizations.
  9. Grimes Simple Revive Script

    @avibird 1 I took a look at the script and understand now what you mean by removing medikits and first aid kits. For the sake of realism, I actually encourage the idea of using the incapacitated unit's medical supplies to "patch them up". Although I understand you are trying to reduce the revive capability, this can be done outside of Grimes Simple Revive yet in parallel. That said, this script includes pre-placed "custom executions" that allow the mission maker to execute a certain script upon certain events, such as incapacitation. The unit's status could also be tracked with the variable "G_Unconscious" and, hopefully soon, the engine command "lifeState". When G_Unconscious toggles true you could remove the FAKs, then when it toggles back to false you could add them back in, and just have that cycle for each unit.
  10. I used SVN for only a few years, so switching to git (and using github) was not too bad. The only reason I switched was because of the popularity of git and my liking of github (and of course its popularity and free-ness too), and the easier (once understood) collaboration. When I was using SVN, I was using TortoiseSVN as a GUI and loved it. I did not spend much time with the command line. When I switched to git, I found TortoiseGit, which was made with TortoiseSVN users in mind. I spent some time learning the git command line, but only to understand the possibilities and get an idea of the workflow. Nearly all of my workflow is accomplished via TortoiseGit (which has a great tutorial/manual), and it works seamlessly with github. I have not tried the github desktop application only because I have not found a need for it. When I switched a CMS from SVN to github, I was able to use the TortoiseGit GUI to convert from SVN to git while maintaining integrity of the repository and commit history. This creates the working (not bare) repository locally. To get it to github, all I did was create an empty repository on github (bare) and followed the instructions, which just say push your local working repository to github. From there, do work! I don't know exactly what you are working on, but I am a proponent of giving git and github a little more time, and looking into TortoiseGit if you have not already done so.
  11. Escape APEX revive state

    Check out BIS_fnc_reviveOnState. Particularly, the STATE_REVIVED case which may help fill in the gaps. case STATE_REVIVED: { if (_statePrev != STATE_INCAPACITATED) exitWith {}; bis_revive_incapacitatedUnits = bis_revive_incapacitatedUnits - [_unitVar]; //flag unit as being NOT incapacitated _unit setVariable ["BIS_revive_incapacitated", false]; //display 'revived' message in kill-feed; only if revived unit is friendly if (bis_revive_killfeedShow && {side group player getFriend side group _unit >= 0.6}) then { if (isNull _source) then { systemChat format [MSG_REVIVED,name _unit]; } else { systemChat format [MSG_REVIVED_BY,name _unit,name _source]; }; }; if (local _unit) then { //reset death reason bis_revive_deathReason = DEATH_REASON_UNKNOWN; //not bleeding bis_revive_bleeding = false; //remove unconscious state _unit setUnconscious false; //hotfix: revived while performing an action & playing animation _unit playAction "Stop"; //hotfix: revived while having no weapon or binocular if ({currentWeapon player == _x} count ["",binocular player] > 0) then { [] spawn { sleep 0.1; if (({currentWeapon player == _x} count ["",binocular player] > 0) && {IS_ACTIVE(player)}) then {player playAction "Civil";}; }; }; //reset blood level and stored bleed damage _unit setVariable [VAR_DAMAGE_BLEED, 0]; _unit setVariable [VAR_DAMAGE, 0]; //reset 'being revived' and 'forcing respawn' flags if (IS_BEING_REVIVED(_unit)) then {SET_BEING_REVIVED(_unit, false);}; if (IS_FORCING_RESPAWN(_unit)) then {SET_FORCING_RESPAWN(_unit, false);}; //enable player's action menu {inGameUISetEventHandler [_x, ""]} forEach ["PrevAction", "NextAction"]; //restore player's camera if (cameraView != (player getVariable [VAR_CAMERA_VIEW, "internal"])) then { [] spawn { titleCut ["","BLACK OUT",0.5]; sleep 0.5; player switchCamera (player getVariable [VAR_CAMERA_VIEW, "internal"]); titleCut ["","BLACK IN",0.5]; }; }; //remove user action private _actionID = _unit getVariable [VAR_ACTION_ID_RESPAWN,-1]; if (_actionID != -1) then {[_unit,_actionID] call bis_fnc_holdActionRemove;}; //ALWAYS heal to full [] call bis_fnc_reviveDamageReset; } else { //reset 'being revived' and 'forcing respawn' flags locally SET_BEING_REVIVED_LOCAL(_unit, false); SET_FORCING_RESPAWN_LOCAL(_unit, false); //remove revive and secure user actions {if (_x != -1) then {[_unit,_x] call bis_fnc_holdActionRemove}} forEach [_unit getVariable [VAR_ACTION_ID_REVIVE,-1],_unit getVariable [VAR_ACTION_ID_SECURE,-1]]; //remove incap/dead icon [ICON_STATE_REMOVE,_unitVar] call bis_fnc_reviveIconControl; }; };
  12. Grimes Simple Revive Script

    #1 and #2 already exist in this script for incapacitated units, including friendly AND enemy players and AI (if desired) For #3 - Can you elaborate?
  13. I agree that "selecting" via [] would be great, just for standardization sake. Thanks for sharing, makes sense since they are both engine-based operators that (should?) do the same thing. I will say it may be growing on me a bit, particularly for multidimensional arrays, as opposed to select select select...
  14. Grimes Simple Revive Script

    Very close to completion of AI integration into revive (AI reviving players and eachother, in a realistic manner). I will post about a pre-release with that in a few days. Additionally, game update 1.82 has given this script some additional opportunities for improvement, so stay tuned for an exciting V0.9.
  15. New to 1.82 is the alternative syntax of "select", being "#". Ex. testArray = ["A","B","C"]; _var = testArray select 1; //B _var = testArray # 1; //B _var = testArray #1; //B _var = testArray#1; //B All of the above statements have the same return. Is the "#" operator used in any programming languages in this way? I can't say I have seen it on the web development side, at least. Just wondering where this came from. Not to ask "What's the point?", but, what was accomplished here other than a slight decrease in file size (with bulk use)? Is there a performance difference? I am a fan of plain english, which is why SQF is awesome to me. I will probably continue to use "select" unless there is a solid reason to switch. Anyone know anything further on this?