Jump to content

[Help] object


The Killer

Recommended Posts

hello

i have a problem in this code:

function moveObjectUpOrDown ( ) 
    local x, y, z = getElementPosition ( getElementData(localPlayer, "crea", object) ) 
    if ( getKeyState ( "pgup" ) )  then 
        setElementPosition ( getElementData(localPlayer, "crea", object), x, y, z + 1 ) 
    elseif ( getKeyState ( "pgdn" ) )  then 
        setElementPosition ( getElementData(localPlayer, "crea", object), x, y, z - 1 ) 
    elseif ( getKeyState ( "arrow_r" ) ) then 
        setElementPosition ( getElementData(localPlayer, "crea", object), x + 1, y, z  ) 
    elseif ( getKeyState ( "arrow_l" ) ) then 
        setElementPosition ( getElementData(localPlayer, "crea", object), x - 1, y, z  ) 
    elseif  ( getKeyState ( "arrow_d" ) ) then 
        setElementPosition ( getElementData(localPlayer, "crea", object), x, y - 1, z ) 
    elseif ( getKeyState ( "arrow_u" ) ) then 
        setElementPosition ( getElementData(localPlayer, "crea", object), x, y + 1, z  ) 
    end 
end 
  
addCommandHandler("create", 
function () 
triggerServerEvent("create", getLocalPlayer()) 
addEventHandler ( "onClientRender", root, moveObjectUpOrDown ) 
end 
) 

server side:

addEvent("create") 
addEventHandler("create", root, 
function (player) 
local xx,yy,zz = getElementPosition(player) 
object = createObject(3095, xx,yy,zz - 1) 
setElementData(player, "crea", object) 
end 
) 

that when i wrote the command ' create '

nothing happend

i want to create object in server side

cause in the client side no one can see it

so i want everybody can see it

so i did this

but not working.

little help please !!

Link to comment

Try this.

Serverside:

addCommandHandler("create", 
function (player) 
local xx,yy,zz = getElementPosition(player) 
object = createObject(3095, xx,yy,zz - 1) 
setElementData(player, "crea", object) 
end 
) 
  
  
function lol (player) 
local x, y, z = getElementPosition ( getElementData(player, "crea", object) ) 
setElementPosition ( getElementData(player, "crea", object), x, y, z + 1 ) 
end 
bindKey( "pgup", "down", lol ) 
  
function lol2 (player) 
local x, y, z = getElementPosition ( getElementData(player, "crea", object) ) 
setElementPosition ( getElementData(player, "crea", object), x, y, z - 1 ) 
end 
bindKey( "pgdn", "down", lol2 ) 
  
function lol3 (player) 
local x, y, z = getElementPosition ( getElementData(player, "crea", object) ) 
setElementPosition ( getElementData(player, "crea", object), x + 1, y, z  ) 
end 
bindKey( "arrow_r", "down", lol3 ) 
  
function lol4 (player) 
local x, y, z = getElementPosition ( getElementData(player, "crea", object) ) 
setElementPosition ( getElementData(player, "crea", object), x - 1, y, z  ) 
end 
bindKey( "arrow_l", "down", lol4 ) 
  
function lol5 (player) 
local x, y, z = getElementPosition ( getElementData(player, "crea", object) ) 
setElementPosition ( getElementData(player, "crea", object), x, y - 1, z ) 
end 
bindKey( "arrow_d", "down", lol5 ) 
  
function lol6(player) 
local x, y, z = getElementPosition ( getElementData(player, "crea", object) ) 
setElementPosition ( getElementData(player, "crea", object), x, y + 1, z  ) 
end 
bindKey( "arrow_u", "down", lol6 ) 

Link to comment
addCommandHandler("create", 
function (player) 
local xx,yy,zz = getElementPosition(player) 
object = createObject(3095, xx,yy,zz - 1) 
setElementData(player, "crea", object) 
end 
) 
  
  
function lol (player) 
local x, y, z = getElementPosition ( getElementData(player, "crea", object) ) 
setElementPosition ( getElementData(player, "crea", object), x, y, z + 1 ) 
end 
  
function lol2 (player) 
local x, y, z = getElementPosition ( getElementData(player, "crea", object) ) 
setElementPosition ( getElementData(player, "crea", object), x, y, z - 1 ) 
end 
  
function lol3 (player) 
local x, y, z = getElementPosition ( getElementData(player, "crea", object) ) 
setElementPosition ( getElementData(player, "crea", object), x + 1, y, z  ) 
end 
  
function lol4 (player) 
local x, y, z = getElementPosition ( getElementData(player, "crea", object) ) 
setElementPosition ( getElementData(player, "crea", object), x - 1, y, z  ) 
end 
  
function lol5 (player) 
local x, y, z = getElementPosition ( getElementData(player, "crea", object) ) 
setElementPosition ( getElementData(player, "crea", object), x, y - 1, z ) 
end 
  
function lol6(player) 
local x, y, z = getElementPosition ( getElementData(player, "crea", object) ) 
setElementPosition ( getElementData(player, "crea", object), x, y + 1, z  ) 
end 
  
function binds() 
bindKey( "pgup", "down", lol ) 
bindKey( "pgdn", "down", lol2 ) 
bindKey( "arrow_r", "down", lol3 ) 
bindKey( "arrow_l", "down", lol4 ) 
bindKey( "arrow_d", "down", lol5 ) 
bindKey( "arrow_u", "down", lol6 ) 
end 
addEventHandler ( "onResourceStart", getRootElement(), binds ) 

Link to comment

Client:

local object = false 
  
function moveObjectUpOrDown ( ) 
    local x, y, z = getElementPosition ( object ) 
    if ( getKeyState ( "pgup" ) )  then 
        setElementPosition ( object, x, y, z + 1 ) 
    elseif ( getKeyState ( "pgdn" ) )  then 
        setElementPosition ( object, x, y, z - 1 ) 
    elseif ( getKeyState ( "arrow_r" ) ) then 
        setElementPosition ( object, x + 1, y, z  ) 
    elseif ( getKeyState ( "arrow_l" ) ) then 
        setElementPosition ( object, x - 1, y, z  ) 
    elseif  ( getKeyState ( "arrow_d" ) ) then 
        setElementPosition ( object, x, y - 1, z ) 
    elseif ( getKeyState ( "arrow_u" ) ) then 
        setElementPosition ( object, x, y + 1, z  ) 
    end 
end 
  
addCommandHandler("create", 
function () 
    triggerServerEvent("create", getLocalPlayer()) 
end 
) 
  
addEvent("onObjectCreated", true) 
addEventHandler("onObjectCreated", root, 
function(value) 
    object = value 
    addEventHandler ( "onClientRender", root, moveObjectUpOrDown ) 
end) 

Server:

addEvent("create", true) 
addEventHandler("create", root, 
function () 
    local xx,yy,zz = getElementPosition(source) 
    object = createObject(3095, xx,yy,zz - 1) 
    triggerClientEvent(source, "onObjectCreated", source, object) 
end 
)    

Edited by Guest
Link to comment

That's because you're calling setElementPosition clientside.

If you want the objects to be synced, you'll have to tell the other clients the current position of the object you're moving (--> triggerServerEvent).

But it's not recommendable to do this every frame since that would lead to a huge amount of network traffic. Instead you can sync the position every 2 seconds for example.

addEvent("onObjectCreated", true) 
addEventHandler("onObjectCreated", root, 
function(value) 
    object = value 
    addEventHandler ( "onClientRender", root, moveObjectUpOrDown ) 
  
    setTimer( 
        function() 
            local x, y, z = getElementPosition(object) 
            triggerServerEvent("positionSync", object, x, y, z) 
         end, 2000, 0 
    ) 
end) 

Server:

addEvent("positionSync", true) 
addEventHandler("positionSync", root, 
    function(x, y, z) 
        setElementPosition(source, x, y, z) 
     end 
) 

Attention: Due to security issues, you should check whether the player is allowed to set the position. Otherwise this event could be abused to teleport all elements.

Link to comment

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...