Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Epoch 1.0.7.1 Bugs #2187

Open
AirwavesMan opened this issue Jul 13, 2022 · 18 comments
Open

Epoch 1.0.7.1 Bugs #2187

AirwavesMan opened this issue Jul 13, 2022 · 18 comments

Comments

@AirwavesMan
Copy link
Contributor

AirwavesMan commented Jul 13, 2022

Currently reported bugs:

  • Maintain the Virtual Garage with Coins does not work properly, this affects also the GUI. Players should just relog to get their coins back.
  • A wooden base with wood walls and floors does not get properly recognized as shelter so it will rain through and the EVR-Storm can hit players inside.
  • The Boggle is missing in the Safe Objects array so it will not stay after a restart.
  • verifySender does not work sometimes with bases on water

We will prepare a hotfix file soon for the missionfiles.

@ZzBombardierzZ
Copy link
Contributor

The default Battleye files also seem to kick players for placing the Server_Rack object.

@ZzBombardierzZ
Copy link
Contributor

ZzBombardierzZ commented Jul 13, 2022

Also it seems #2162 didn't fix building over water in my testing. It seems like the distance calculation when placing an object over the water is still funky.

11:46:45 "Server_PublishObj error: Verification failed, player is too far from object. Distance: 46m/40m limit PV ARRAY: ["0",50c90f00# 1086282: sign_one_leg_h.p3d REMOTE,[193.144,[1032.23,447.776,55.2396],"76561198068668XXX",[[-0.2274,-0.973801,0],[0,0,1]]],[["76561198068668XXX",[66,111,109,98]]],B 1-1-B:1 (Bomb) REMOTE,"ıēŏĹĺĕŁłħŭŔńĈ"]" <- when placing a plot right next to myself over the water.
Images: https://imgur.com/a/4gDmehv

@Victor-the-Cleaner
Copy link

Hi @ZzBombardierzZ, this is definitely a weird one. When I click through to your image, it looks like you are standing in the sea (maybe from a teleport?) but not swimming. The modular_build script prevents building while swimming anyway. One thing you could try is using the editor, place a few large metal floors at that location, allowing for about +1.8m at high tide, then add that to your custom map file. Fly out there, then start building, and eventually remove the original floors from the map file?
Then you can go crazy and build the ultimate Bond villain seabase and take over the world.

All the testing for building on/over water was done the way a regular player would have to do it, so first building a pier out over the water and going from there. Also bear in mind that certain objects that are flagged as not allowed below ground mean they are not allowed below the water, including the plot pole. But it will tell you when the time comes.
Are you able to try this and let us know if that works? Thanks.

@ZzBombardierzZ
Copy link
Contributor

@Victor-the-Cleaner I didn’t swim or teleport out there. I spawned a bridge out there and flew out there. The other way (the classic way) people build in the middle of the ocean is by having two boats next to each other and getting out of one to be placed on top of the other. I tested it a couple times after a player told me their base decayed after a restart, so I checked the logs and it never published their base to the database, so I simply made the bridge out there so you guys could see an example. If you did the editor example you gave, you would have the same results as soon as you place the plot pole, as it wouldn’t save to the database.

the issue is simply the distance calculation. In verifySender, the position for the base part is using getPosATL while the position for the player is either using getPos or getPosASL. So when the distance calculation is done, the player is basically at the bottom of the ocean 120ish below the sea level

@AirwavesMan
Copy link
Contributor Author

@ZzBombardierzZ The problem is not that simple. I am able to build a base in the ocean which stays without any problems. Im not able to reproduce your problem. Also please checke the code. We are getting the ATL position or the ASL position if it is on water not only the position. The new problem could be that we save the ASL to ATL @Victor-the-Cleaner ? But just switching to ATL makes also problems in verifySender. Ive tested that before. Basically all functions which use verifySender have to use the same calculation of the positions. Im also not sure if the calculation is different from map to map.

@Victor-the-Cleaner
Copy link

This line is where the error message originates:
https://github.com/EpochModTeam/DayZ-Epoch/blob/9c116dd72f0bbfbeee5e9faae95f05ca7a63d3d4/SQF/dayz_server/compile/server_verifySender.sqf#L22
The _objPos variable is in ATL format because that's the format the database needs to recreate objects after a restart. But where it calculates _playerPos using fnc_getPos, it will be in ASL format at sea. So there's one potential problem. But also, the distance command when using positions requires AGL format, so weirdly it looks like it would never work properly.
I've never had this problem though, and never seen that error until now, so I can't explain why it's happening now.

@AirwavesMan
Copy link
Contributor Author

The other problem is that we only get in this specific example the ATL position from the object but not from all the other server_verifySender calls. Some of them can use ASL too.

@Victor-the-Cleaner
Copy link

It may be the sea depth that's causing it. If that location is 50m or so, it might have gone over a threshold.

@ZzBombardierzZ
Copy link
Contributor

Yeah I noticed that as well. When I changed the verifySender player fnc_getPos to use ATL it lets you place the object fine but then removing using ASL and you can dupe parts. My current solution is to up the distance check to 150 if you are over the ocean.

@Victor-the-Cleaner
Copy link

It's odd that it even uses that global variable here.
if (_objPos distance _playerPos > (Z_VehicleDistance + 10)) exitwith {

Z_VehicleDistance = 40; // Max distance a vehicle can be sold or accessed from at a trader.

@TheFirstNoob
Copy link

EVR hit player in SafeZones.
AdminTools didnt affected for this. With SafeZone from AT/AH. W/O AT/AH player loss blood and knocked out in SafeZone.

@ZzBombardierzZ
Copy link
Contributor

EVR hit player in SafeZones. AdminTools didnt affected for this. With SafeZone from AT/AH. W/O AT/AH player loss blood and knocked out in SafeZone.

Safezones don't give godmode so I think this would be more of an issue for admin tools or whichever safezone script you are using.

@TheFirstNoob
Copy link

I think it will be easier to add a DZE_SafeZonePosArray check inside EVR files. Or we have Set/GetVariable for check EVR?

@ZzBombardierzZ
Copy link
Contributor

ZzBombardierzZ commented Aug 21, 2022

I think it will be easier to add a DZE_SafeZonePosArray check inside EVR files. Or we have Set/GetVariable for check EVR?

For the time being, whether AirwavesMan decides to add a fix later or BigEgg builds it into his Epoch Antihack/Admin Tools, here is the easiest solution for you or anyone who may want it.

In your custom compiles.sqf file, add this in the if (!isDedicated) then .... section:
fnc_evr1 = fnc_evr; fnc_evr = { if (({player distance (_x select 0) < _x select 1} count DZE_SafeZonePosArray) > 0) exitWith {}; _this call fnc_evr1; };
It should work, but I haven't fully tested it.

This is will skip the entire script, including the ASPI warnings you see on the screen. If you wish to still have the warnings and flashes but not the damage, you can do this instead:
fnc_evr1 = fnc_evr; fnc_evr = { if (({player distance (_x select 0) < _x select 1} count DZE_SafeZonePosArray) > 0 && _this == "Stage7") exitWith {}; _this call fnc_evr1; };

@TheFirstNoob
Copy link

image
land_mbg_ger_rhus_1 have wrong coordinates for spawn loot

@TheFirstNoob
Copy link

@ZzBombardierzZ well script work but not correctly. If use second code players inside SZ after EVR always on have "state 7" or nothing happen. I try use other DZE_SafeZonePosArray check inside Client_EVR.sqf. After test answer.

@ZzBombardierzZ
Copy link
Contributor

@TheFirstNoob Like I said, I didn't test it much. I'm not sure if I fully understand what the issue is that you're saying but if I understand correctly, something like this may be better:
fnc_evr1 = fnc_evr; fnc_evr = { if (({player distance (_x select 0) < _x select 1} count DZE_SafeZonePosArray) > 0 && _this == "Stage7") exitWith {DZE_EVRStormRunning = false; player setVariable["combatNoTimeout", 0];}; _this call fnc_evr1; };

I try use other DZE_SafeZonePosArray check inside Client_EVR.sqf.

You could also do this, but just adds more mission space where I don't see it necessary.

@TheFirstNoob
Copy link

Not CombatTime. Think combatNoTimeout need change APSIState variable. Players cant exit cause Cannot Exit in EVR (But EVR is finish).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants