Jump to content

caddrel

Member
  • Content Count

    25
  • Joined

  • Last visited

  • Medals

Everything posted by caddrel

  1. Hello there, Am trying to put together missions where a player group can only be incapacitated, never killed. The mission is only ever failed when all players are incapacitated; so there's always a chance of recovery and "no man is left behind." Have been able to handle most situations using a modified version of the script from this thread: https://forums.bistudio.com/forums/topic/199665-damage-handling-scripts-broken-since-166-update/?do=findComment&comment=3191125 However, when players are shot/injured/exploded while inhabiting a vehicle they're dead dead, they never even enter the incapacitated state. This even applies to relatively innocuous "vehicles" like M2 tripods. Is there a workaround for this that could be used? Am very happy putting together something that ejects players from the vehicle on receiving otherwise lethal damage and incapping them, or having a script monitor vehicles and making sure this happens as well. Just don't know enough about all the event handlers / triggers / functions to make that happen. Looking into it now! Anyone know of a potential solution/workaround? Even if it is just pointing in the right direction to look.
  2. Originally I was under the impression the damage handler applied additional damage to the unit. However, from what I can tell it only applies total damage. So if the unit is already injured in the hand (0.15) and the hand is hit for an extra (0.5) the amount of damage the handler will apply will be 0.65. This makes everything significantly easier; there's no need to check the health of the unit; the damage in the damage handler will only ever be total amount. We can use the same safe damage value used by BIS Revive (0.95). Have done some testing; the script below should work. Used with the BIS Revive basic damage system, a player can only ever be incapacitated. If they take enough damage in a vehicle to be incapacitated, they are ejected from the vehicle and lay incapacitated on the ground. //initPlayerLocal.sqf params[ "_unit" ]; //Waituntil REVIVE handleDamage EH has been applied waitUntil{ !isNil { _unit getVariable "bis_revive_ehHandleDamage" } }; //Remove REVIVE HandleDamage EH _unit removeEventHandler[ "HandleDamage", _unit getVariable "bis_revive_ehHandleDamage" ]; //Only damage from last applied handleDamage EH is taken into consideration by the engine //Apply a new EH so as we can override the damage applied _unit addEventHandler [ "HandleDamage", { private[ "_damage","_newDamage" ]; params [ "_unit" ]; //If we are not incapacitated if ( lifeState _unit != "INCAPACITATED" ) then { //Get revives handle damage _newDamage = _this call bis_fnc_reviveEhHandleDamage; } else { //if we are incapacitated _newDamage = 0; }; //if damage is enough to kill the player and they're in a vehicle, force them out of the vehicle. if ((_newDamage > 0.95) && (vehicle player != player)) then { moveOut _unit; //Call the BIS revive function again; if the player is in a vehicle it sometimes returns 100 damage. _newDamage = _this call bis_fnc_reviveEhHandleDamage; }; _newDamage }]; Another interesting discovery is the damage handler is now called fifteen times for every bullet or source of damage; once for each hitpoint area of the unit. This is the log for a single bullet hitting the test unit. 0:19:38 "Damage applied to HitHead of testguy is 0" 0:19:38 "Damage applied to of testguy is 0.0865005" 0:19:38 "Damage applied to of testguy is 0.0865005" 0:19:38 "Damage applied to HitFace of testguy is 0" 0:19:38 "Damage applied to HitNeck of testguy is 0" 0:19:38 "Damage applied to HitHead of testguy is 0" 0:19:38 "Damage applied to HitPelvis of testguy is 100" 0:19:38 "Moving testguy out of B Alpha 1-1:1 (Caddrel) (testguy)" 0:19:38 "RECALCULATED damage applied to HitPelvis of testguy is 0.95" 0:19:38 "Damage applied to HitAbdomen of testguy is 0.95" 0:19:38 "Damage applied to HitDiaphragm of testguy is 0" 0:19:38 "Damage applied to HitChest of testguy is 0" 0:19:38 "Damage applied to HitBody of testguy is 0" 0:19:38 "Damage applied to HitArms of testguy is 0" 0:19:38 "Damage applied to HitHands of testguy is 0" 0:19:38 "Damage applied to HitLegs of testguy is 0" 0:19:38 "Damage applied to Incapacitated of testguy is 7.83344e-005"
  3. So the above script appears to work, however on testing it runs into issues when "reduced damage" is enabled in the difficulty options. The reduced damage seems to make it eject the player from the vehicle before they take lethal damage (in some fringe cases.) If I can find some way to replicate MAX_SAFE_DAMAGE from the BIS Revive functions this can be fixed. Or I can write the code manually, but I'd need to find out how much the game is reducing the damage to the players by. Anyone know the answer to either of these?
  4. After further tinkering, have found a solution. Not sure how elegant it is, but it works. If a player is in a vehicle and receives lethal damage (>1), they are forced out of the vehicle. This has been combined with the previous script, that reduces all damage to 0 if a player is incapped. So far in the test environment, dropping a bomb on a vehicle with a player in it leaves the player incapacitated next to the burning wreck. Will do further testing to see if there are unintended consequences. Thanks to r3vo for the potential other answer; unfortunately I'm completely unfamiliar with the animation system/states in Arma 3! //initPlayerLocal.sqf params[ "_unit" ]; //Waituntil REVIVE handleDamage EH has been applied waitUntil{ !isNil { _unit getVariable "bis_revive_ehHandleDamage" } }; //Remove REVIVE HandleDamage EH _unit removeEventHandler[ "HandleDamage", _unit getVariable "bis_revive_ehHandleDamage" ]; //Only damage from last applied handleDamage EH is taken into consideration by the engine //Apply a new EH so as we can override the damage applied _unit addEventHandler [ "HandleDamage", { private[ "_damage","_newDamage" ]; params [ "_unit" ]; //If we are not incapacitated if ( lifeState _unit != "INCAPACITATED" ) then { //Get revives handle damage _newDamage = _this call bis_fnc_reviveEhHandleDamage; } else { //if we are incapacitated _newDamage = 0; }; //if damage is enough to kill the player and they're in a vehicle, force them out of the vehicle. if (((_newDamage + (getDammage _unit)) >= 1) && (vehicle player != player)) then { moveOut _unit; //Recalculate damage now player is out of the vehicle. _newDamage = _this call bis_fnc_reviveEhHandleDamage; }; _newDamage }];
  5. So have done some looking into this. Was trying to alter the default function BIS_fnc_reviveEhDammaged: #include "defines.inc" /* unit: Object - Object the event handler is assigned to hitSelection: String - Name of the selection where the unit was damaged damage: Number - Resulting level of damage hitPartIndex: Number - hit index of the hit selection hitPoint: String - hit point Cfg name shooter: Object - shooter reference (to get instigator use getShotParents on projectile) projectile: Object - the projectile that caused damage */ params ["_unit", "", "_damage","","_hitPoint","_source"]; if (alive _unit && {_damage >= 1 && {REVIVE_ENABLED(_unit) && {_hitPoint == "Incapacitated" && {IS_ACTIVE(_unit)}}}}) then { //["[i] Incapacitated by dependence: %1",_this] call bis_fnc_logFormat; //award attacker with +1 'infantry kill' point [_source] spawn bis_fnc_reviveAwardKill; //incapacitate unit outside of vehicle if (!IN_VEHICLE(_unit)) then { if (isNull _source || {!bis_revive_killfeedShow}) then { SET_STATE(_unit,STATE_INCAPACITATED); } else { SET_STATE_XTRA(_unit,STATE_INCAPACITATED,_source); }; } //kill unit in vehicle else { _unit setDamage 1; }; }; Removed it from the unit via initPlayerLocal.sqf, and replaced it with this: params ["_unit", "", "_damage","","_hitPoint","_source"]; if ((alive _unit) && ((_damage >= 1) && (_hitPoint == "Incapacitated"))) then { //If unit is inside vehicle, move them out and set unconscious. Otherwise proceed as normal. if (vehicle player != player) then { [_source] spawn bis_fnc_reviveAwardKill; moveOut _unit; _unit setUnconscious true; } else { _this call bis_fnc_reviveEhDammaged; }; } else { diag_log format ["LOG:Conditions not met: Alive is %1, damage is %2, hitpoint is %3",alive _unit,_damage,_hitPoint]; }; This seems to preserve previous behaviour when a player is out of a vehicle; they become incapacitated and (because of my other script) are impossible to damage in that state. However when a player is inside the vehicle, the dammaged handler is only called once for the unit, and by that time "alive == false"; "13:19:31 "CADLOG:Conditions not met: Alive is false, damage is 1, hitpoint is Incapacitated"" I've been testing the different interactions by dropping explosives on units and vehicles. Even if you remove the alive condition from the if statement, but the time the event handler is even called the unit is not alive, and so can't be set to incapacitated/unconscious/etc.
  6. OK, have just done some tests and this new script appears to work as intended. Big thanks to Larrow for creating it in the first place, and Bohemia for their fantastic new functions library in the Eden Editor. Turns out it was just some changed function names. //initPlayerServer.sqf params[ "_unit" ]; //Waituntil REVIVE handleDamage EH has been applied waitUntil{ !isNil { _unit getVariable "bis_revive_ehHandleDamage" } }; //Remove REVIVE HandleDamage EH _unit removeEventHandler[ "HandleDamage", _unit getVariable "bis_revive_ehHandleDamage" ]; //Only damage from last applied handleDamage EH is taken into consideration by the engine //Apply a new EH so as we can override the damage applied _unit addEventHandler [ "HandleDamage", { private[ "_damage" ]; params [ "_unit" ]; //If we are not incapacitated if ( lifeState _unit != "INCAPACITATED" ) then { //Get revives handle damage _damage = _this call bis_fnc_reviveEhHandleDamage; } else { //if we are incapacitated _damage = 0; }; _damage }];
  7. Having looked into this a bit further it seems the script above is stalling at: waitUntil{ !isNil { _unit getVariable "bis_revive_ehDamage" } }; Has the name of "bis_revive_ehDamage" changed?
  8. Am trying to create a mission where it's not possible to kill the players, only incapacitate them. The mission is only failed if the entire team is incapacitated. Have tried using the script from this and another thread (placed in initPlayerLocal.sqf.) //initPlayerLocal.sqf params[ "_unit" ]; //Waituntil REVIVE handleDamage EH has been applied waitUntil{ !isNil { _unit getVariable "bis_revive_ehDamage" } }; //Remove REVIVE HandleDamage EH _unit removeEventHandler[ "HandleDamage", _unit getVariable "bis_revive_ehDamage" ]; //Only damage from last applied handleDamage EH is taken into consideration by the engine //Apply a new EH so as we can override the damage applied _unit addEventHandler [ "HandleDamage", { private[ "_damage" ]; params [ "_unit" ]; //If we are not incapacitated if ( lifeState _unit != "INCAPACITATED" ) then { //Get revives handle damage _damage = _this call BIS_fnc_reviveOnPlayerHandleDamage; }else{ //if we are incapacitated _damage = 0; }; _damage }]; However on testing it on a multiplayer server, a friend was able to incapacitate me (fine) and then able to kill me while incapacitated (not so fine.) Is there something in the setup that I may have done wrong, or something further that should be added? Link to another relevant thread: https://forums.bistudio.com/forums/topic/200447-how-to-disable-damage-when-unconscious/
  9. caddrel

    Connecting Failed

    Just as a follow-up this problem appears to be resolved for our group (no setup changes were needed). We can now join the previously affected servers via the server browser again. Does appear to have been a problem on Gamespy's end.
  10. No, you need to actually read up on the problem before throwing around false information. One of the problems being reported was apparently an issue with Gamespy which has now been resolved. There are numerous threads and posts on this across this forum and the Day Z forum: http://forums.bistudio.com/showthread.php?137619-Connecting-Failed&p=2193229&viewfull=1#post2193229 Read up on the issue before misleading people. Maybe some people are experiencing setup issues, but a lot of people were hit by an outage or other problem that seemed to be on Gamespy's end.
  11. caddrel

    NAT Negotiation failed

    A temporary solution which works for clients. Quoting my friend again: You CAN join servers that you get Connecting Failed to by using the Six Updater. The Six Updater adds the command line parameters " -connect=<the Server IP here> -port=2302".
  12. caddrel

    Connecting Failed

    There's a thread on the multiplayer forum here with server owners reporting this same issue. A lot of server owners began reporting this problem Sunday at 8:30pm to 9:30pm GMT: http://forums.bistudio.com/showthread.php?135123-Dedicated-Server-NAT-Negotiation-Failed&p=2192882&viewfull=1#post2192882 A lot of Day Z users having the same issue (a few unrelated posts, but mostly all reporting exactly the same symptoms): http://dayzmod.com/forum/index.php?/topic/36686-connecting-failed/page__st__20 Here's the thread with Day Z server owners where you can see the time scale clearly. Contrary to what one person says, this problem hasn't been resolved: http://dayzmod.com/forum/index.php?/topic/41828-server-suddenly-stopped-working/ ---------- Post added at 04:06 PM ---------- Previous post was at 03:45 PM ---------- A friend did some research: "On the servers where I can connect, Arma immediately tries to connect to port 2302 Whereas the games where it doesn't work, ArmA tries to negotiate the UDP using 69.10.30.x IPs - I'm guessing those are the negotiation servers. (And they answer with ICMP Destination unreachable) IGN owns Gamespy, right? The 69.10.30.x IPs resolve through IGN's dns servers. It could be that in case where the server is behind a NAT it'll do the negotiation." ---------- Post added at 04:25 PM ---------- Previous post was at 04:06 PM ---------- A temporary solution which works. Quoting my friend again: You CAN join servers that you get Connecting Failed to by using the Six Updater. You can use the Six Updater's built in server browser. The Six Updater adds the command line parameters " -connect=<the Server IP here> -port=2302". We still can't join using the in-game browser. But we can get a game going by all joining the server via the Six Updater.
  13. A lot of people are now reporting this problem: http://dayzmod.com/forum/index.php?/topic/36686-connecting-failed/page__st__20 Have tried reinstalling Battleye, running game without any mods, running game without beta, downgrading beta, and all the usual things with routing/network (though my server was working fine up until the same point when a lot of server owners started reporting issues with new players being unable to connect). Can connect to several servers just fine, but some show up Connecting Failed with the NNThink error in the .rpt log. Am also no longer able to host. Our group of players had four of us each try hosting and no-one could connect to anyone else. Others show these same error codes I'm describing earlier in this thread. The main error on clients connecting is, "NAT Negotiation failed (NNThink - result 2)" The server error being shown is, "NAT Negotiation failed - unable to communicate with the server" ---------- Post added at 03:54 PM ---------- Previous post was at 03:31 PM ---------- Another thread on this forum which appears to be the same issue: http://forums.bistudio.com/showthread.php?136844-Can-no-longer-host-multiplayer-games-with-a-friend
  14. Hey there, you seem to be having the same issue as the people in these threads (for some reason there's no solution/official response yet): http://forums.bistudio.com/showthread.php?137619-Connecting-Failed http://forums.bistudio.com/showthread.php?135123-Dedicated-Server-NAT-Negotiation-Failed http://dayzmod.com/forum/index.php?/topic/41828-server-suddenly-stopped-working/page__st__20 http://dayzmod.com/forum/index.php?/topic/36686-connecting-failed/page__st__40
  15. We had multiple people, who had previously been able to host without problems, try to rehost for our group. No-one was able to connect to anyone else. Occasionally we'd be able to get one other person onto a server consistently, but he would only be able to get onto that server and not one hosted by someone else. There's also a Day Z thread here with people who began experiencing similar issues as of an hour or two ago: http://dayzmod.com/forum/index.php?/topic/41845-95208-connecting-failed/
  16. I've just had exactly the same problem while running ARMA 2 with ACE, everything updated to the latest versions via Six Updater. Been running this server for a few weeks without issues. Hosting off my local machine (non-dedicated server) on Windows 7 64-bit. Then, in the middle of a playing session this evening (we were playing an Isla Duala map with 5 people) a new person tried to join us, He got "Connecting failed" after entering the password correctly. One existing player disconnected to help him, and then was also unable to rejoin the server (same error message). I shut down the server and restarted it without closing the client, and then no-one could connect at all. Since then, everything has been tried with no success; suddenly no-one can connect to anyone else. People who were previously able to host fine can get some people connecting, but not others. On my server I can get one guy to connect who's within the UK, but no-one else. My .rpt fail reads "NAT Negotiation failed - unable to communicate with the server". Edit: I can connect fine to any of my various regular Day Z servers. However I get the error "NAT Negotiation failed (NNThink - result 2)" when trying to connect to another non-dedicated server that was previously working fine. People are also reporting similar issues with various Day Z servers: http://dayzmod.com/forum/index.php?/topic/41828-server-suddenly-stopped-working/ NNThink is a Gamespy API apparently. http://docs.poweredbygamespy.com/wiki/NNThink Anyone having any idea what's going on?
  17. Hey there, I was hoping to pick up ArmA 2 Operation Arrowhead at some point today, having picked up the original ArmA 2 during the Steam summer sale. Very impressive game, a real gem! However, reading the complete mess the Combined Operations package appears to be in at the moment, I'm going to hold off buying Operation Arrowhead until the reported problems are solved. Is there an ETA for when the Steam Combined Operations install will be available? It's very difficult to tell what's going on when valuable information is spread between two developers across 100+ pages of discussion threads. Obviously, part of my frustration comes from the fact that Operation Arrowhead seems like such an excellent upgrade/expansion. Thanks in advance.
  18. I'm aware there's a way of turning it off for individual missions (via adding a module, as you've mentioned), but ideally I'd want to be able to turn it off for all missions running on the server without editing each mission individually. Is it possible to create a mod that disables it in some way?
  19. Have a question regarding stamina in ACE 2 v1.3. Am running ACE 2 on a Linux (private) dedicated server, and all is well. However, the stamina feature is not popular with my group of players. We're wondering if there's a way of either disabling the feature entirely or tweaking it via configuration files. I'm aware there's a way of turning it off for individual missions (via adding a module or script), but ideally I'd want to be able to turn it off for all missions running on the server. Is it possible to create a mod that disables it in some way? Thanks in advance.
  20. caddrel

    Arma 2 Linux Server 1.07 BETA

    Updated: Solved this problem by running the ./install script again. Somehow sorted it out, though have no idea how. --- Finally managed to get the files uploaded and the server is now up and running. Used the excellent Kelly's Heroes dedicated server guide to sort out the various config files. However, am now having a trouble installing missions. The missions seem to be in the right folder (/arma2/MPMissions/) and have appropriate permissions, but are not showing up in the map voting screen when I connect to the server. I'm fairly sure the server is doing something with them, as if the folder name is changed to "mpmissions" (lower-case) it starts spitting out errors: Changing the folder name back to MPMissions solves that problem, but the missions still don't show up. Scratching my head a bit on this one.
  21. caddrel

    Linux server error

    For future reference, just encountered the same problem: Deleting arma2.cfg seems to have done the trick.
  22. Go to Steam, Library, and check under "Tools". The ArmA 2 Dedicated Server should be in the list there to install.
  23. caddrel

    Razor 2 Walkthrough

    Updated: It seems what I was might not actually be a bug. The task shows as completed even when you haven't captured Bardak; it's just to indicate you've "found" the car he's driving, from what I can tell. To complete the mission you need to physically stop the vehicle he's in and capture him. --- I'm using the Steam (1.07) version of ArmA II, and encountered a bug towards the end of this mission. Having explored several of the possible locations by following the trail of clues, I received the "20 minute message" about the red hatchback trying to escape north. However, a minute after I began driving towards the location, I got the message that the task for capturing Bardak had been completed. However; the mission didn't end. I'm guessing I need to restart the mission from scratch. At that point I hadn't collected any of the evidence pieces (though I had found a very golden AK47).
  24. caddrel

    Arma 2 Linux Server 1.07 BETA

    Ah, thanks. It's been so long since I've dealt with scarce computing resources that this completely escaped my mind! Compressing the large resource files has already shaved 1.5GB off the upload. Originally I was hoping that it would be possible to FTP/HTTP the largest resource files across from another dedicated server, as they make up the bulk of the upload.
  25. caddrel

    Arma 2 Linux Server 1.07 BETA

    Hey there, Picked up ArmA 2 on Steam a few days ago. Very impressed so far, though am still getting gunned down repeatedly in single player. Tried some co-op with a friend, but haven't done any serious multiplayer yet. Am currently trying to set up an ArmA 2 dedicated server on my Linux server. Managed to get all the server files set-up properly, but need to get the game resources onto the server somehow. Is there any other source for the ArmA 2 resource files other than simply uploading them from my local machine (if that is even the right approach)? Steam sometimes supplies third-party server software using its "hlds" software, but that doesn't seem to be the case with ArmA 2. Any news if that is planned by the developers at all? Any suggestions would be much appreciated; due to my upload-throttled home connection any transfer to the server using that would take about 36 hours. Thanks in advance.
×