vehicle sync OHNE FEHLER

This commit is contained in:
hydrant
2020-05-09 01:41:39 +02:00
parent 93540e721b
commit 2e91fe76ee
12 changed files with 163 additions and 429 deletions

View File

@@ -38,6 +38,8 @@ export default function speedometer(globalData: IGlobalData) {
var lockG = 255;
var lockB = 255;
lockStatus = player.vehicle.getDoorLockStatus() != 1;
if (lockStatus) {
lockR = 104;
lockG = 212;

View File

@@ -91,6 +91,14 @@ class RageVehicle extends RageEntity implements IVehicle {
setDoorsLocked(state: boolean) {
this.vehicle.setDoorsLocked(state ? 2 : 1);
}
setDoorOpen(door: number, loose: boolean, instantly: boolean) {
this.vehicle.setDoorOpen(door, loose, instantly);
}
setDoorShut(door: number, instantly: boolean) {
this.vehicle.setDoorShut(door, instantly);
}
}
class RageVehiclePool implements IVehiclePool {

View File

@@ -56,6 +56,8 @@ interface IVehicle extends IEntity {
setEngineStatus(status: boolean, instantly: boolean, otherwise: boolean);
setUndriveable(status: boolean);
setDoorsLocked(state: boolean);
setDoorShut(door: number, instantly: boolean);
setDoorOpen(door: number, loose: boolean, instantly: boolean);
}
interface IEntityPool<TEntity> {
@@ -88,6 +90,14 @@ interface AccountData {
interface VehicleData {
EngineState: boolean;
Locked: boolean;
Doors: { [door: number]: number };
}
enum DoorState {
DoorClosed,
DoorOpen,
DoorBroken,
}
enum EventName {
@@ -133,5 +143,6 @@ export {
VehicleSeat,
EntityType,
AccountData,
VehicleData
VehicleData,
DoorState
}

View File

@@ -1,6 +1,7 @@
import game, { VehicleData } from '../index';
import { IVehicle, EntityType, IEntity, VehicleSeat } from '../game';
import game from '../index';
import { IVehicle, EntityType, IEntity, VehicleSeat, DoorState } from '../game';
import { parseJson } from '../util';
import { VehicleData } from '../game';
game.events.add('SERVER:Vehicle:UpdateData', (vehId, dataStr) => {
var data: VehicleData = parseJson(dataStr);
@@ -48,10 +49,11 @@ function setVehicleData(veh: IVehicle, data: VehicleData): void {
return;
}
if (data === null) {
if (!data) {
data = {
EngineState: false,
Locked: false
Locked: false,
Doors: {}
};
}
@@ -64,6 +66,19 @@ function setVehicleData(veh: IVehicle, data: VehicleData): void {
veh.setUndriveable(!engineState);
}
var doors = Object.keys(data.Doors);
doors.forEach(door => {
var doorNumber = parseInt(door);
var doorState = <number>data.Doors[doorNumber];
if (doorState === DoorState.DoorOpen.valueOf()) {
veh.setDoorOpen(doorNumber, false, false);
} else if (doorState === DoorState.DoorClosed.valueOf()) {
veh.setDoorShut(doorNumber, false);
}
});
var locked: boolean = data.Locked;
veh.setDoorsLocked(locked);
}