Jump to content

Sync of custom weapons and objects


-Blaze-

Recommended Posts

Posted

Hello ,

I am working on a mounted machine gun script , that places big guns on cars and a player is able to go on top and use it.

I am using

createObject 

for making a base_minigun and then using

createWeapon 

to make a custom weapon and attaching them both with

attachElements 

However these are all made clientside (since createWeapon is a clientside function) and are not visible and synced with all the players. when a player uses the mounted gun , he is able to rotate it and direct the line of fire, but the rotation of the weapon cannot be seen by all the players.

Is there a way i can sync the client side created object and custom weapon so it is visible to all the players?

My code so far :

Server :

addEventHandler("onResourceStart", getResourceRootElement(getThisResource()), 
function() 
truck1 = createVehicle ( 470, 201.33500671387, 1908.2733154297, 17.640625 ,0,0,0, "Hex" ) 
setElementData( truck1, "mgtruck1", true) 
createBlipAttachedTo ( truck1, 0, 1) 
setTimer(triggerClientEvent, 500, 1, getRootElement(), "one", resourceRoot) 
end) 
  

i created the vehicle serverside because clientside vehicles aren't enterable.

Client:

function attachmgtotruckone() 
alltruck1 = getElementsByType ( "vehicle" ) 
for key, thetruck1 in ipairs ( alltruck1 ) do 
if getElementModel( thetruck1 ) == 470 then 
if getElementData(thetruck1, "mgtruck1" ) then 
local x, y, z = getElementPosition( thetruck1 ) 
local rx, ry, rz = getElementRotation( thetruck1 ) 
stand1 = createObject( 2985, x+2, y, z-1 ,rx,ry,rz+90) 
mountgun1 = createWeapon ( "minigun", 0, 0, 0 ) 
setElementAlpha( mountgun1, 50) 
attachElements( mountgun1, stand1, -0.2, 0 , 0.-- s8) -->
attachElements( stand1, thetruck1, 0, 0, 0.6, 0, 0, 90) 
setElementCollisionsEnabled ( mountgun1, false ) 
setElementCollisionsEnabled ( stand1, false ) 
end 
end 
end 
end 
addEvent("one", true) 
addEventHandler("one", root, attachmgtotruckone) 
  
function moveup1() 
if isElement( stand1) then 
local thetruck1 = getElementAttachedTo ( stand1 ) 
if getElementData( localPlayer, "mg1controller") then 
if roty1 == 30 then return end 
attachElements( stand1, thetruck1, 0, 0, 0.6, 0, roty1+5, rotz1) 
roty1 = roty1+ 5 
end 
end 
end 
  
function movedown1() 
if isElement( stand1) then 
local thetruck1 = getElementAttachedTo ( stand1 ) 
if getElementData( localPlayer, "mg1controller") then 
if roty1 == -30 then return end 
attachElements( stand1, thetruck1, 0, 0, 0.6, 0, roty1-5, rotz1) 
roty1 = roty1 - 5 
end 
end 
end 
  
function moveleft1() 
if isElement( stand1) then 
local thetruck1 = getElementAttachedTo ( stand1 ) 
if getElementData( localPlayer, "mg1controller") then 
attachElements( stand1, thetruck1, 0, 0, 0.6, 0, roty1, rotz1+5) 
rotz1 = rotz1 + 5 
end 
end 
end 
  
function moveright1() 
if isElement( stand1) then 
local thetruck1 = getElementAttachedTo ( stand1 ) 
if getElementData( localPlayer, "mg1controller") then 
attachElements( stand1, thetruck1, 0, 0, 0.6, 0, roty1, rotz1-5) 
rotz1 = rotz1 - 5 
end 
end 
end 
  
bindKey("a", "down",  moveleft1) 
bindKey("d", "down", moveright1) 
bindKey("s", "down",  moveup1) 
bindKey("w", "down", movedown1) 
  

  • MTA Team
Posted

You need to send the rotation from your client to server and from your server to other clients.

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...