mirror of
https://github.com/Dingo-Shenanigans/ReSkate.git
synced 2026-10-22 08:08:08 +02:00
Drone: other players' drones are markers only, without a model
A model made for another player's drone crashed the game a few seconds later in the per-frame update of its shader sections (Skate.exe+0x505b04b, 2.1.0): 28 of 29 reports there came right after one was made. Real players' drones show as markers and are heard as before until that is found; the pretend one from dronemodeltest remote still gets its model.
This commit is contained in:
1 parent
2b5772bdf5
commit
a64cd93d82
1 file changed
+12
-2
@@ -253,6 +253,8 @@ void test_move(std::uintptr_t base) {
|
||||
// a received one would, so the models (tick_drone_models) and the markers show it with no second
|
||||
// player. It goes round a 4 m circle every 8 s, in front of where the skater was.
|
||||
constexpr std::uint64_t fake_remote_id = 1;
|
||||
// Whether real players' drones get a model (tick_drone_models): off until their crash is found.
|
||||
constexpr bool players_drone_models = false;
|
||||
void fake_remote_start(std::uintptr_t base, std::uintptr_t client) {
|
||||
auto &t = test();
|
||||
const auto local = capture_local(base, client, false);
|
||||
@@ -294,10 +296,18 @@ void tick_drone_models(std::uintptr_t base, std::uintptr_t client, bool show) no
|
||||
std::lock_guard lock(registry().mutex);
|
||||
// The engine took some away (a map change takes them all).
|
||||
std::erase_if(m.list, [](const DroneModel &model) { return !tracked(model.prop.entity); });
|
||||
const auto drones = show ? drone::beacon::snapshot() : std::vector<drone::beacon::Remote>{};
|
||||
auto drones = show ? drone::beacon::snapshot() : std::vector<drone::beacon::Remote>{};
|
||||
// Real players' drones are markers only for now: a model made for one crashed the game a
|
||||
// few seconds later in the per-frame update of its shader sections (Skate.exe+0x505b04b,
|
||||
// 2.1.0, 2026-10-18). The pretend one (dronemodeltest remote) still gets its model, to find why.
|
||||
const auto players = drones.size();
|
||||
if (!players_drone_models)
|
||||
std::erase_if(drones, [](const drone::beacon::Remote &d) { return d.id != fake_remote_id; });
|
||||
if (drones.empty() && m.list.empty()) {
|
||||
m.waiting_since = 0;
|
||||
set_models_status(show ? "No other player is flying a drone." : "Other players' drones are hidden.", false);
|
||||
set_models_status(!show ? "Other players' drones are hidden."
|
||||
: players ? std::format("{} other player(s) flying; shown as markers only.", players)
|
||||
: std::string("No other player is flying a drone."), false);
|
||||
return;
|
||||
}
|
||||
const auto now = GetTickCount64();
|
||||
|
||||
Reference in new issue
Block a user