Jump to content

GaryTheNoTrashCougar

Member
  • Content Count

    7
  • Joined

  • Last visited

  • Medals

Community Reputation

0 Neutral

About GaryTheNoTrashCougar

  • Rank
    Rookie
  1. GaryTheNoTrashCougar

    Help - getVariable (ACE)

    Had to define a default value in case the variable returned nil value. player getVariable ["ace_medical_bloodVolume", 6.0]; Can't really see why that matters but works this way.
  2. GaryTheNoTrashCougar

    Help - getVariable (ACE)

    Trying to make a displayCtrl for blood loss when using ace. Problem I'm having is trying to get blood level value: player getVariable "ace_medical_bloodVolume"; This works in debug console but is not recognised in my script. I'm not familiar with returning variables from mods, do I have to define something in order to pass the variable through to my script?
  3. GaryTheNoTrashCougar

    Help - Detecting Kill Assist

    That's awesome, thank you again.
  4. GaryTheNoTrashCougar

    Help - Detecting Kill Assist

    Thank you for replying. If I understand correctly, this should index (using pushBackUnique) the units that damage another unit into an array so I can check that array to see if a unit is in it? e.g. if (player in killerFeed). For some reason I'm getting an error "Invalid number in expression" which points to '_source'. I have tried '_instigator' as you suggested but as they are the same thing, no joy. Am I right to be running this inside my HitPart EH? Trying to pass '_target' variable through scripts as a global variable is proving difficult, assuming because there is no value until the HitPart EH has fired.
  5. Is it possible to detect if a player has damaged a unit but another unit has killed that unit (kill assist)? I am using a Killed event handler for the unit that is killed & trying to combine that with a HitPart event handler but I can't get my head around the logic. in HitPart EH: playerShooting = (player isEqualTo _shooter); unitShot = _target; in Killed EH: if (playerShooting) //Obviously player is not the shooter when the unit is killed then { if ((_killed isEqualTo unitShot) && !(vehicle player isEqualTo _killer)) then {....blah blah Kill Assist}; }; also tried to use ((damage _target) < 1), but this is not true when _target is killed. Is there a way to check if the player dealt the damage?
  6. I have a kill notification script that displays kill type HUD messages (Enemy Killed, Headshot, Long Range Kill, Point Blank Kill, Explosive Kill, Friendly Kill & Suicide), score values & adjusts player rating based on the kill types. The script works but is showing the messages to all players when someone gets a kill. Obviously I want it to just show the message to the player that gets the kill. If anyone could please help me fix this, I will gladly send you a Dora the Explorer sticker book. Thanks init.sqf [] execVM "Kill_Reward\Kill_Reward.sqf"; Kill_Reward.sqf player addEventHandler ["Handlescore", {false}]; sleep 0.5; KillMsg = { _messages = _this; _ratingScore = 0; _messageContent = "<t align='right' size='1.25'>"; { _scoreName = _x select 0; _ratingScore = _ratingScore + 200; _messageContent = _messageContent + format ["<t font='PuristaSemibold'>%1</t>%2<br/>", _scoreName]; } forEach _messages; _messageContent = _messageContent + "</t>"; if (_ratingScore >= 0) then { _messageContent = _messageContent + (format ["<t align='right' color='#ffff00' font='PuristaBold' size='1.4'>+%1</t>", _ratingScore]); }; [ parseText _messageContent, [safezoneX, safezoneY + safeZoneH * 0.55, safezoneW * 0.62, safeZoneH * 0.57], nil, 1, 0.7, 0 ] spawn BIS_fnc_textTiles;}; HSKill = { _messages = _this; _ratingScore = 0; _messageContent = "<t align='right' size='1.25'>"; { _scoreName = _x select 0; _ratingScore = _ratingScore + 250; _messageContent = _messageContent + format ["<t font='PuristaSemibold'>%1</t>%2<br/>", _scoreName]; } forEach _messages; _messageContent = _messageContent + "</t>"; if (_ratingScore >= 0) then { _messageContent = _messageContent + (format ["<t align='right' color='#ffff00' font='PuristaBold' size='1.4'>+%1</t>", _ratingScore]); }; [ parseText _messageContent, [safezoneX, safezoneY + safeZoneH * 0.55, safezoneW * 0.62, safeZoneH * 0.57], nil, 1, 0.7, 0 ] spawn BIS_fnc_textTiles;}; LRHSKill = { _messages = _this; _ratingScore = 0; _messageContent = "<t align='right' size='1.25'>"; { _scoreName = _x select 0; _ratingScore = _ratingScore + 300; _messageContent = _messageContent + format ["<t font='PuristaSemibold'>%1</t>%2<br/>", _scoreName]; } forEach _messages; _messageContent = _messageContent + "</t>"; if (_ratingScore >= 0) then { _messageContent = _messageContent + (format ["<t align='right' color='#ffff00' font='PuristaBold' size='1.4'>+%1</t>", _ratingScore]); }; [ parseText _messageContent, [safezoneX, safezoneY + safeZoneH * 0.55, safezoneW * 0.62, safeZoneH * 0.57], nil, 1, 0.7, 0 ] spawn BIS_fnc_textTiles;}; CQBHSKill = { _messages = _this; _ratingScore = 0; _messageContent = "<t align='right' size='1.25'>"; { _scoreName = _x select 0; _ratingScore = _ratingScore + 275; _messageContent = _messageContent + format ["<t font='PuristaSemibold'>%1</t>%2<br/>", _scoreName]; } forEach _messages; _messageContent = _messageContent + "</t>"; if (_ratingScore >= 0) then { _messageContent = _messageContent + (format ["<t align='right' color='#ffff00' font='PuristaBold' size='1.4'>+%1</t>", _ratingScore]); }; [ parseText _messageContent, [safezoneX, safezoneY + safeZoneH * 0.55, safezoneW * 0.62, safeZoneH * 0.57], nil, 1, 0.7, 0 ] spawn BIS_fnc_textTiles;}; LRKill = { _messages = _this; _ratingScore = 0; _messageContent = "<t align='right' size='1.25'>"; { _scoreName = _x select 0; _ratingScore = _ratingScore + 250; _messageContent = _messageContent + format ["<t font='PuristaSemibold'>%1</t>%2<br/>", _scoreName]; } forEach _messages; _messageContent = _messageContent + "</t>"; if (_ratingScore >= 0) then { _messageContent = _messageContent + (format ["<t align='right' color='#ffff00' font='PuristaBold' size='1.4'>+%1</t>", _ratingScore]); }; [ parseText _messageContent, [safezoneX, safezoneY + safeZoneH * 0.55, safezoneW * 0.62, safeZoneH * 0.57], nil, 1, 0.7, 0 ] spawn BIS_fnc_textTiles;}; CQBKill = { _messages = _this; _ratingScore = 0; _messageContent = "<t align='right' size='1.25'>"; { _scoreName = _x select 0; _ratingScore = _ratingScore + 225; _messageContent = _messageContent + format ["<t font='PuristaSemibold'>%1</t>%2<br/>", _scoreName]; } forEach _messages; _messageContent = _messageContent + "</t>"; if (_ratingScore >= 0) then { _messageContent = _messageContent + (format ["<t align='right' color='#ffff00' font='PuristaBold' size='1.4'>+%1</t>", _ratingScore]); }; [ parseText _messageContent, [safezoneX, safezoneY + safeZoneH * 0.55, safezoneW * 0.62, safeZoneH * 0.57], nil, 1, 0.7, 0 ] spawn BIS_fnc_textTiles;}; FriendlyKill = { _messages = _this; _ratingScore = 0; _messageContent = "<t align='right' size='1.25'>"; { _scoreName = _x select 0; _ratingScore = _ratingScore + 1000; _messageContent = _messageContent + format ["<t font='PuristaSemibold'>%1</t>%2<br/>", toUpper _scoreName]; } forEach _messages; _messageContent = _messageContent + "</t>"; if (_ratingScore >= 0) then { _messageContent = _messageContent + (format ["<t align='right' color='#ea0000' font='PuristaBold' size='1.4'>-%1</t>", _ratingScore]); }; [ parseText _messageContent, [safezoneX, safezoneY + safeZoneH * 0.55, safezoneW * 0.62, safeZoneH * 0.57], nil, 1, 0.7, 0 ] spawn BIS_fnc_textTiles;}; Suicide = { _messages = _this; _ratingScore = 0; _messageContent = "<t align='right' size='1.25'>"; { _scoreName = _x select 0; _ratingScore = _ratingScore - 200; _messageContent = _messageContent + format ["<t font='PuristaSemibold'>%1</t>%2<br/>", toUpper _scoreName]; } forEach _messages; _messageContent = _messageContent + "</t>"; if (_ratingScore >= 0) then { _messageContent = _messageContent + (format ["<t align='right' color='#ffff00' font='PuristaBold' size='1.4'>+%1</t>", _ratingScore]); }; [ parseText _messageContent, [safezoneX, safezoneY + safeZoneH * 0.55, safezoneW * 0.62, safeZoneH * 0.57], nil, 1, 0.7, 0 ] spawn BIS_fnc_textTiles;}; if (hasInterface) then { execVM "Kill_Reward\Kill_Type.sqf"; addMissionEventHandler ["EntityKilled", { params ["_killed", "_killer"]; _headDamage = _killed getHitPointDamage "HitHead"; _distance = _killer distance _killed; _minDistance = 100; _cqbDistance = 2; if (isNull _instigator) then { _instigator = _killer }; if (isPlayer _killer) then { if (_killed isKindOf "CAManBase" && {((side group _killed) != playerSide)}) then { if (_distance >= _minDistance && ({_headDamage >= 1;})) then { player addPlayerScores [1, 0, 0, 0, 0]; player addRating 100; [[killType, _ratingScore]] call LRHSKill; } else { if (_distance <= _cqbDistance && ({_headDamage >= 1;})) then { player addPlayerScores [1, 0, 0, 0, 0]; player addRating 75; [[killType, _ratingScore]] call CQBHSKill; } else { if (_distance > _cqbDistance && ({_headDamage >= 1;})) then { player addPlayerScores [1, 0, 0, 0, 0]; player addRating 50; [[killType, _ratingScore]] call HSKill; }; }; if (_distance >= _minDistance && ({_headDamage < 1;})) then { player addPlayerScores [1, 0, 0, 0, 0]; player addRating 50; [["LONG RANGE KILL ", _ratingScore]] call LRKill; } else { if (_distance <= _cqbDistance && ({_headDamage < 1;})) then { player addPlayerScores [1, 0, 0, 0, 0]; player addRating 25; [["POINT BLANK KILL ", _ratingScore]] call CQBKill; } else { if ((_distance > _cqbDistance && {_distance < _minDistance}) && ({_headDamage < 1;})) then { player addPlayerScores [1, 0, 0, 0, 0]; [["ENEMY KILLED ", _ratingScore]] call KillMsg; }; }; }; }; }; if (_killed isKindOf "CAManBase" && {((side group _killed) == playerSide)}) then { if (_killer != _killed) then { player addPlayerScores [0, 0, 0, 0, 0]; [["FRIENDLY KILLED ", _ratingScore]] call FriendlyKill; }; if (_killed == _killer) then { player addPlayerScores [0, 0, 0, 0, 0]; [["SUICIDE ", _ratingScore]] call Suicide; }; }; }; }]; }; Kill_Type.sqf 0 = [] spawn { while {true} do { { _x addEventHandler ["HitPart", { (_this select 0) params ["_target", "_shooter", "_projectile", "_position", "_velocity", "_selection", "_ammo", "_vector", "_radius", "_surfaceType", "_isDirect"]; if (_target isKindOf "CAManBase") then { if (!isPlayer _target) then { if (isPlayer _shooter) then { if (_isDirect == true) then { killType = "HEADSHOT "; } else { if (_isDirect == false) then { killType = "EXPLOSIVE KILL "; }; }; }; }; }; }]; _x setVariable ["passedThathitPart",TRUE]; } forEach (allUnits select {isNil {_x getVariable "passedThatHitPart"}}); sleep 2; }; };
  7. I have a kill notification script that displays kill type HUD messages (Enemy Killed, Headshot, Long Range Kill, Point Blank Kill, Explosive Kill, Friendly Kill & Suicide), score values & adjusts player rating based on the kill types. The script works with units placed in the editor but I'm struggling to make it work with AI units spawned & respawned using JEBUS, which I think recreates the units placed in the editor. The part which doesn't work is the HitPart Event Handler I'm using to detect explosive kills. I'm guessing 'allUnits' doesn't apply to the units created by JEBUS. Kill_Type.sqf {_x addEventHandler ["HitPart", { (_this select 0) params ["_target", "_shooter", "_projectile", "_position", "_velocity", "_selection", "_ammo", "_vector", "_radius", "_surfaceType", "_isDirect"]; if (_target isKindOf "CAManBase") then { if (!isPlayer _target) then { if (isPlayer _shooter) then { if (_isDirect == true) then { killType = "HEADSHOT "; } else { if (_isDirect == false) then { killType = "EXPLOSIVE KILL "; }; }; }; }; }; }];} forEach allUnits; Other script that calls this script: Kill_Reward.sqf player addEventHandler ["Handlescore", {false}]; execVM "Kill_Reward\Kill_Type.sqf"; killMessage = { _messages = _this; _ratingScore = 0; _messageContent = "<t align='right' size='1.25'>"; { _scoreName = _x select 0; _ratingScore = _ratingScore + 200; _messageContent = _messageContent + format ["<t font='PuristaSemibold'>%1</t>%2<br/>", _scoreName]; } forEach _messages; _messageContent = _messageContent + "</t>"; if (_ratingScore >= 0) then { _messageContent = _messageContent + (format ["<t align='right' color='#ffff00' font='PuristaBold' size='1.4'>+%1</t>", _ratingScore]); }; [ parseText _messageContent, [safezoneX, safezoneY + safeZoneH * 0.55, safezoneW * 0.62, safeZoneH * 0.57], nil, 1, 0.7, 0 ] spawn BIS_fnc_textTiles;}; headshotKillMessage = { _messages = _this; _ratingScore = 0; _messageContent = "<t align='right' size='1.25'>"; { _scoreName = _x select 0; _ratingScore = _ratingScore + 250; _messageContent = _messageContent + format ["<t font='PuristaSemibold'>%1</t>%2<br/>", _scoreName]; } forEach _messages; _messageContent = _messageContent + "</t>"; if (_ratingScore >= 0) then { _messageContent = _messageContent + (format ["<t align='right' color='#ffff00' font='PuristaBold' size='1.4'>+%1</t>", _ratingScore]); }; [ parseText _messageContent, [safezoneX, safezoneY + safeZoneH * 0.55, safezoneW * 0.62, safeZoneH * 0.57], nil, 1, 0.7, 0 ] spawn BIS_fnc_textTiles;}; LRheadshotKillMessage = { _messages = _this; _ratingScore = 0; _messageContent = "<t align='right' size='1.25'>"; { _scoreName = _x select 0; _ratingScore = _ratingScore + 300; _messageContent = _messageContent + format ["<t font='PuristaSemibold'>%1</t>%2<br/>", _scoreName]; } forEach _messages; _messageContent = _messageContent + "</t>"; if (_ratingScore >= 0) then { _messageContent = _messageContent + (format ["<t align='right' color='#ffff00' font='PuristaBold' size='1.4'>+%1</t>", _ratingScore]); }; [ parseText _messageContent, [safezoneX, safezoneY + safeZoneH * 0.55, safezoneW * 0.62, safeZoneH * 0.57], nil, 1, 0.7, 0 ] spawn BIS_fnc_textTiles;}; CQBheadshotKillMessage = { _messages = _this; _ratingScore = 0; _messageContent = "<t align='right' size='1.25'>"; { _scoreName = _x select 0; _ratingScore = _ratingScore + 275; _messageContent = _messageContent + format ["<t font='PuristaSemibold'>%1</t>%2<br/>", _scoreName]; } forEach _messages; _messageContent = _messageContent + "</t>"; if (_ratingScore >= 0) then { _messageContent = _messageContent + (format ["<t align='right' color='#ffff00' font='PuristaBold' size='1.4'>+%1</t>", _ratingScore]); }; [ parseText _messageContent, [safezoneX, safezoneY + safeZoneH * 0.55, safezoneW * 0.62, safeZoneH * 0.57], nil, 1, 0.7, 0 ] spawn BIS_fnc_textTiles;}; longRangeMessage = { _messages = _this; _ratingScore = 0; _messageContent = "<t align='right' size='1.25'>"; { _scoreName = _x select 0; _ratingScore = _ratingScore + 250; _messageContent = _messageContent + format ["<t font='PuristaSemibold'>%1</t>%2<br/>", _scoreName]; } forEach _messages; _messageContent = _messageContent + "</t>"; if (_ratingScore >= 0) then { _messageContent = _messageContent + (format ["<t align='right' color='#ffff00' font='PuristaBold' size='1.4'>+%1</t>", _ratingScore]); }; [ parseText _messageContent, [safezoneX, safezoneY + safeZoneH * 0.55, safezoneW * 0.62, safeZoneH * 0.57], nil, 1, 0.7, 0 ] spawn BIS_fnc_textTiles;}; CQBMessage = { _messages = _this; _ratingScore = 0; _messageContent = "<t align='right' size='1.25'>"; { _scoreName = _x select 0; _ratingScore = _ratingScore + 225; _messageContent = _messageContent + format ["<t font='PuristaSemibold'>%1</t>%2<br/>", _scoreName]; } forEach _messages; _messageContent = _messageContent + "</t>"; if (_ratingScore >= 0) then { _messageContent = _messageContent + (format ["<t align='right' color='#ffff00' font='PuristaBold' size='1.4'>+%1</t>", _ratingScore]); }; [ parseText _messageContent, [safezoneX, safezoneY + safeZoneH * 0.55, safezoneW * 0.62, safeZoneH * 0.57], nil, 1, 0.7, 0 ] spawn BIS_fnc_textTiles;}; addMissionEventHandler ["EntityKilled", { params ["_killed", "_killer"]; _headDamage = _killed getHitPointDamage "HitHead"; _distance = _killer distance _killed; _minDistance = 100; _cqbDistance = 2; if (isNull _instigator) then { _instigator = _killer }; if (_killed isKindOf "CAManBase" && {((side group _killed) == east)}) then { if (isPlayer _killer) then { if (_distance >= _minDistance && ({_headDamage >= 1;})) then { player addPlayerScores [1, 0, 0, 0, 0]; player addRating 100; [[killType, _ratingScore]] call LRheadshotKillMessage; } else { if (_distance <= _cqbDistance && ({_headDamage >= 1;})) then { player addPlayerScores [1, 0, 0, 0, 0]; player addRating 75; [[killType, _ratingScore]] call CQBheadshotKillMessage; } else { player addPlayerScores [1, 0, 0, 0, 0]; player addRating 50; [[killType, _ratingScore]] call headshotKillMessage; }; if (isPlayer _killer && ({_headDamage < 1;})) then { if (_distance >= _minDistance) then { player addPlayerScores [1, 0, 0, 0, 0]; player addRating 50; [["LONG RANGE KILL ", _ratingScore]] call longRangeMessage; } else { if (_distance <= _cqbDistance) then { player addPlayerScores [1, 0, 0, 0, 0]; player addRating 25; [["POINT BLANK KILL ", _ratingScore]] call CQBMessage; } else { player addPlayerScores [1, 0, 0, 0, 0]; [["ENEMY KILLED ", _ratingScore]] call killMessage; }; }; }; }; }; }; }]; friendlyKillMessage = { _messages = _this; _ratingScore = 0; _messageContent = "<t align='right' size='1.25'>"; { _scoreName = _x select 0; _ratingScore = _ratingScore + 1000; _messageContent = _messageContent + format ["<t font='PuristaSemibold'>%1</t>%2<br/>", toUpper _scoreName]; } forEach _messages; _messageContent = _messageContent + "</t>"; if (_ratingScore >= 0) then { _messageContent = _messageContent + (format ["<t align='right' color='#ea0000' font='PuristaBold' size='1.4'>-%1</t>", _ratingScore]); }; [ parseText _messageContent, [safezoneX, safezoneY + safeZoneH * 0.55, safezoneW * 0.62, safeZoneH * 0.57], nil, 1, 0.7, 0 ] spawn BIS_fnc_textTiles;}; addMissionEventHandler ["EntityKilled", { params ["_killed", "_killer"]; if (isNull _instigator) then {_instigator = _killer}; // player driven vehicle road kill if (_killed isKindOf "CAManBase" && {((side group _killed) == west)}) then { if (!isPlayer _killed) then { if (isPlayer _killer) then { player addPlayerScores [0, 0, 0, 0, 0]; [["FRIENDLY KILLED ", _ratingScore]] call friendlyKillMessage; }; }; }; }]; suicideMessage = { _messages = _this; _ratingScore = 0; _messageContent = "<t align='right' size='1.25'>"; { _scoreName = _x select 0; _ratingScore = _ratingScore - 200; _messageContent = _messageContent + format ["<t font='PuristaSemibold'>%1</t>%2<br/>", toUpper _scoreName]; } forEach _messages; _messageContent = _messageContent + "</t>"; if (_ratingScore >= 0) then { _messageContent = _messageContent + (format ["<t align='right' color='#ffff00' font='PuristaBold' size='1.4'>+%1</t>", _ratingScore]); }; [ parseText _messageContent, [safezoneX, safezoneY + safeZoneH * 0.55, safezoneW * 0.62, safeZoneH * 0.57], nil, 1, 0.7, 0 ] spawn BIS_fnc_textTiles;}; sleep 0.5; addMissionEventHandler ["EntityKilled", { params ["_killed", "_killer"]; if (isNull _instigator) then {_instigator = _killer}; // player driven vehicle road kill if (_killed isKindOf "CAManBase" && {(isPlayer _killed)} && {(isPlayer _killer)}) then { player addPlayerScores [0, 0, 0, 0, 0]; [["SUICIDE ", _ratingScore]] call suicideMessage; }; }]; If anyone can help me with this probably very simple issue, I'll send you a cookie.
×