vehicle sync OHNE FEHLER
This commit is contained in:
@@ -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;
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
Reference in New Issue
Block a user