Search the Community
Showing results for tags 'spawned troops'.
Found 1 result
-
ticket deduction Killed Spawn AI subtract Sector Control Tickets
LcplDad posted a topic in ARMA 3 - MISSION EDITING & SCRIPTING
Hey guys. I have been pulling my hair out trying to get this to work for the last 2 days and decided I really need help here. I have a mission using JEBUS spawn scripts that spawn infantry to certain sectors depending on if the enemy is present in those sectors. I play as Zeus and have a set amount of resources to try and bleed the enemy out of tickets before they defeat me. In init.sqf I have this in the code: [east, 600] call BIS_fnc_respawnTickets; [independent, 300] call BIS_fnc_respawnTickets; EAST_KILLED = {private []; if (isServer) then {[east, -1] call BIS_fnc_respawnTickets;};}; {if (side _x == east) then {_x addEventHandler ["Killed", EAST_KILLED];};} forEach AllUnits; INDEP_KILLED = {private []; if (isServer) then {[independent, -1] call BIS_fnc_respawnTickets;};}; {if (side _x == independent) then {_x addEventHandler ["Killed", INDEP_KILLED];};} forEach AllUnits; while {true} do { { deleteVehicle _x; sleep 0.01; } forEach allDeadMen; sleep 600; }; In order to give 600 tickets to OpFor, 300 to Independent, subtract a ticket for each killed, and cycle to clean up the dead bodies after a set time to reduce lag. The ticket deduction works fantastic if units are not spawned in and are placed on the map prior. I finally got it to work with spawned units by placing an opfor soldier named en1 that spawns in with the rest of the guys, placed him on a far off island away from everything, and put this in his init field 0 = [this, "LIVES=", [100,101]] spawn jebus_fnc_main; 0 = [this, "INIT=", "[en1, 'agia'] execVM 'subtractTicket.sqf'"] spawn jebus_fnc_main; So I removed the code to subtract the tickets from those killed in the init.sqf and added it in subtractTicket.sqf I have: EAST_KILLED = {private []; if (hasInterface) then {[east, -1] call BIS_fnc_respawnTickets;};}; {if (side _x == east) then {_x addEventHandler ["Killed", EAST_KILLED];};} forEach allUnits; INDEP_KILLED = {private []; if (isServer) then {[independent, -1] call BIS_fnc_respawnTickets;};}; {if (side _x == independent) then {_x addEventHandler ["Killed", INDEP_KILLED];};} forEach AllUnits; This works great for the first units spawned, however if I kill them, then upon respawning they no longer deduct tickets. Only the first wave spawned actually deduct tickets. Lastly, I tried to loop the code via a script like this in subtractTicket.sqf: while {true} do { EAST_KILLED = {private []; if (hasInterface) then {[east, -1] call BIS_fnc_respawnTickets;};}; {if (side _x == east) then {_x addEventHandler ["Killed", EAST_KILLED];};} forEach allUnits; INDEP_KILLED = {private []; if (isServer) then {[independent, -1] call BIS_fnc_respawnTickets;};}; {if (side _x == independent) then {_x addEventHandler ["Killed", INDEP_KILLED];};} forEach AllUnits; sleep 5; }; The issue is that it compounds each time it's looped, so every 5 seconds the amount of tickets deducted increases and suddenly one person killed subtracts dozens of tickets after a short time. I went through every forum I could about spawned units deducting tickets and the closest I found to a solution was here: https://forums.bohemia.net/forums/topic/191209-problem-with-getting-ai-to-reduce-tickets-on-death-in-sector-control/ But got lost since I'm very new to scripting and I'm not using the spawn module, so I have no expression field like it does and don't know the equivalent of an expression field for what I'm trying to do with JEBUS. If anyone can point me in the right direction that would be greatly appreciated. I tried to use all the resources I could before having someone check this out for me that knows what they're doing. I'm sorry if the answer is pretty obvious, I'm sure there's something I'm overlooking and there's also probably redundancy in the code I have gathered and compiled off the internet, lol. Thanks!- 5 replies
-
- sector control
- spawned troops
-
(and 2 more)
Tagged with: