altmp / altv-issues

Issues and roadmap for alt:V project
93 stars 16 forks source link

Serverside neon set bug #2315

Closed RickTran closed 2 months ago

RickTran commented 2 months ago

Description of the problem

Serverside vehicle neon / neonColor can't set, work fine if using natives in client-side

Reproduction steps

helper.onClient('S:Tunning:ActiveNeon', (player: alt.Player, index:number, toggle:boolean) => {
    if(!player.hasMeta("_id") || !player.hasMeta("TunningVehicle")) return;
    const vehicle = alt.Vehicle.all.find(v => v.id == player.getMeta("TunningVehicle"));
    if(!vehicle) return;

    console.log("Before", vehicle.neon);
    console.log(`index: ${index}, toggle: ${toggle}`);
    console.log(typeof index, typeof toggle);
    if(index == 0) vehicle.neon.left = toggle;
    else if(index == 1) vehicle.neon.right = toggle;
    else if(index == 2) vehicle.neon.front = toggle;
    else if(index == 3) vehicle.neon.back = toggle;
    console.log("After", vehicle.neon);
})

Result:

[20:56:15] [C->S] [Player:288236741] S:Tunning:ActiveNeon 3 true
Before { left: false, right: false, front: false, back: false }
index: 3, toggle: true
number boolean
After { left: false, right: false, front: false, back: false }

Also can't set neonColor too

helper.onClient('S:Tunning:NeonColor', (player: alt.Player, r:number, g:number, b:number) => {
    if(!player.hasMeta("_id") || !player.hasMeta("TunningVehicle")) return;
    const vehicle = alt.Vehicle.all.find(v => v.id == player.getMeta("TunningVehicle"));
    if(!vehicle) return;

    console.log('Before', vehicle.neonColor);
    vehicle.neonColor = new alt.RGBA(r, g, b, 255);
    console.log('After', vehicle.neonColor);
})

Result:

[20:56:18] [C->S] [Player:288236741] S:Tunning:NeonColor 255 0 255
Before RGBA { r: 0, g: 0, b: 0, a: 0 }
After RGBA { r: 0, g: 0, b: 0, a: 0 }

Expected behaviour

Should work as expected

Additional context

No response

Operating system

Windows 11

Version

16.1.4 (release)

Crashdump ID

No response

Confirmation of issue's presence

BluePeer commented 2 months ago

.neon is set in total not in specific set .neon not neon.front, the specific is only for read and if all neon false the color alltime output 0,0,0,0 until you set one to true, then the setted value is shown

RickTran commented 2 months ago

Ok, this work, thanks you

vehicle.neon = {
        left:  index == 0 ? toggle : vehicle.neon.left,
        right: index == 1 ? toggle : vehicle.neon.right,
        front: index == 2 ? toggle : vehicle.neon.front,
        back: index == 3 ? toggle : vehicle.neon.back
    }