Jump to content

repair clicked vehicle parts


Artisz

Recommended Posts

Hi!

I want to create a mechanic system. When I clicked the vehicle, it is show me a panel, with the door/panel states, and if it isn't 0, then it is red. When I click the red dxdraw, he repair the element(this part is the problem).

I have two problems. The first, if I do this, that the repair is on client side, all players see the repaired element, or they still see broken?

The second problem is that I can't retrieves the clicked vehicle at the part, when I repair. I can do it when I check the broken elements, It is correct, but another function I can't do it. I try to save elementdata, but it's save this: userdata: 0000277

And don't repair the clicked element.

Here is the code:

First, the clicking on vehicle, client side:

function jarmuKlikk ( button, state, absoluteX, absoluteY, worldX, worldY, worldZ, clickedElement ) 
    if (getElementType( clickedElement ) == "vehicle") and (button == "right" and state == "up") then 
        triggerServerEvent("SzereloPanel",root,localPlayer,clickedElement) 
    end 
end 
addEventHandler ( "onClientClick", root, jarmuKlikk) 

Then the triggered event on server side:

addEvent("SzereloPanel",true) 
addEventHandler("SzereloPanel",root,function(jatekos, clickedElement) 
     
    if(getPlayerFaction(jatekos) == 2) then 
        local posX, posY, posZ = getElementPosition( clickedElement ) 
        local jarmuSphere = createColSphere( posX, posY, posZ, 5) 
        if(isElementWithinColShape ( jatekos, jarmuSphere )) then 
            triggerClientEvent("szereloPanelMegjelenit",getRootElement(), clickedElement) 
        end 
    end 
end) 

Again client side, this is the last. And here is the problem too, I think

addEvent("szereloPanelMegjelenit",true) 
addEventHandler("szereloPanelMegjelenit",root, 
function(clickedElement) 
    nev =   getVehicleName ( clickedElement ) 
    setElementData(localPlayer, "jarmureklikkelt", clickedElement) 
    panel0 = getVehiclePanelState(clickedElement, 0) or 0 
    panel1 = getVehiclePanelState(clickedElement, 1) or 0 
    panel2 = getVehiclePanelState(clickedElement, 2) or 0 
    panel3 = getVehiclePanelState(clickedElement, 3) or 0 
    panel4 = getVehiclePanelState(clickedElement, 4) or 0 
    panel5 = getVehiclePanelState(clickedElement, 5) or 0 
    panel6 = getVehiclePanelState(clickedElement, 6) or 0 
                 
    door0 = getVehicleDoorState(clickedElement, 0) 
    door1 = getVehicleDoorState(clickedElement, 1) 
    door2 = getVehicleDoorState(clickedElement, 2) 
    door3 = getVehicleDoorState(clickedElement, 3) 
    door4 = getVehicleDoorState(clickedElement, 4) 
    door5 = getVehicleDoorState(clickedElement, 5) 
    --outputChatBox(tostring(door3)) 
    triggerEvent("PanelRender",localPlayer,clickedElement) 
    addEventHandler("onClientRender", getRootElement(), PanelRender) 
end) 
  
  
  
  
function PanelRender(clickedElement) 
         
    dxDrawRectangle(screenW * 0.2760, screenH * 0.2253, screenW * 0.4480, screenH * 0.4427, tocolor(0, 0, 0, 200), false) 
    dxDrawRectangle(screenW * 0.2760, screenH * 0.6927, screenW * 0.4480, screenH * 0.0638, tocolor(0, 0, 0, 200), false) 
    dxDrawRectangle(screenW * 0.2760, screenH * 0.2201, screenW * 0.4480, screenH * 0.0052, tocolor(219, 102, 7, 200), false) 
    dxDrawImage(screenW * 0.4898, screenH * 0.1758, screenW * 0.0271, screenH * 0.0482, "kepek/haromszog.png", 0, 0, 0, tocolor(219, 102, 7, 200), false) 
    dxDrawText(tostring(nev), screenW * 0.2760, screenH * 0.1081, screenW * 0.7240, screenH * 0.1693, tocolor(255, 255, 255, 255), 2.10, "default", "center", "center", false, false, false, false, false) 
    dxDrawRectangle(screenW * 0.2796, screenH * 0.6979, screenW * 0.1384, screenH * 0.0534, tocolor(0, 0, 0, 190), false) 
    dxDrawRectangle(screenW * 0.4305, screenH * 0.6979, screenW * 0.1384, screenH * 0.0534, tocolor(0, 0, 0, 190), false) 
    dxDrawRectangle(screenW * 0.5820, screenH * 0.6979, screenW * 0.1384, screenH * 0.0534, tocolor(0, 0, 0, 190), false) 
    dxDrawText("Ajtók", screenW * 0.2796, screenH * 0.6979, screenW * 0.4180, screenH * 0.7513, tocolor(255, 255, 255, 255), 1.70, "default", "center", "center", false, false, false, false, false) 
    dxDrawText("Panelek", screenW * 0.4305, screenH * 0.6979, screenW * 0.5688, screenH * 0.7513, tocolor(255, 255, 255, 255), 1.70, "default", "center", "center", false, false, false, false, false) 
    dxDrawText("Kerekek", screenW * 0.5820, screenH * 0.6979, screenW * 0.7204, screenH * 0.7513, tocolor(255, 255, 255, 255), 1.70, "default", "center", "center", false, false, false, false, false) 
     
    if(door0 == 0) then 
        dxDrawRectangle(screenW * 0.3023, screenH * 0.2682, screenW * 0.1633, screenH * 0.0638, tocolor(0, 189, 0, 170) ) 
    else 
        dxDrawRectangle(screenW * 0.3023, screenH * 0.2682, screenW * 0.1633, screenH * 0.0638, tocolor(189, 0, 0, 170) ) 
    end 
    if(door1 == 0) then 
        dxDrawRectangle(screenW * 0.3023, screenH * 0.3932, screenW * 0.1633, screenH * 0.0638, tocolor(0, 189, 0, 170) ) 
    else 
        dxDrawRectangle(screenW * 0.3023, screenH * 0.3932, screenW * 0.1633, screenH * 0.0638, tocolor( 189, 0, 0, 170) ) 
    end 
    if(door2 == 0) then 
        dxDrawRectangle(screenW * 0.3023, screenH * 0.5208, screenW * 0.1633, screenH * 0.0638, tocolor(0, 189, 0, 170) ) 
    else 
        dxDrawRectangle(screenW * 0.3023, screenH * 0.5208, screenW * 0.1633, screenH * 0.0638, tocolor(189, 0, 0, 170) ) 
    end 
    if(door3 == 0) then 
        dxDrawRectangle(screenW * 0.5344, screenH * 0.2695, screenW * 0.1633, screenH * 0.0638, tocolor(0, 189, 0, 170) ) 
    else 
        dxDrawRectangle(screenW * 0.5344, screenH * 0.2695, screenW * 0.1633, screenH * 0.0638, tocolor(189, 0, 0, 170) ) 
    end 
    if(door4 == 0) then 
        dxDrawRectangle(screenW * 0.5344, screenH * 0.3932, screenW * 0.1633, screenH * 0.0638, tocolor(0, 189, 0, 170) ) 
    else 
        dxDrawRectangle(screenW * 0.5344, screenH * 0.3932, screenW * 0.1633, screenH * 0.0638, tocolor(189, 0, 0, 170) ) 
    end 
    if(door5 == 0) then 
        dxDrawRectangle(screenW * 0.5344, screenH * 0.5208, screenW * 0.1633, screenH * 0.0638, tocolor(0, 189, 0, 170) ) 
    else 
        dxDrawRectangle(screenW * 0.5344, screenH * 0.5208, screenW * 0.1633, screenH * 0.0638, tocolor(189, 0, 0, 170) ) 
    end 
         
        dxDrawText("Motorháztető", screenW * 0.3016, screenH * 0.2669, screenW * 0.4656, screenH * 0.3320, tocolor(255, 255, 255, 255), 1.50, "default", "center", "center", false, false, false, false, false) 
        dxDrawText("Csomagtartó", screenW * 0.3016, screenH * 0.3919, screenW * 0.4656, screenH * 0.4570, tocolor(255, 255, 255, 255), 1.50, "default", "center", "center", false, false, false, false, false) 
        dxDrawText("Bal első", screenW * 0.3016, screenH * 0.5195, screenW * 0.4656, screenH * 0.5846, tocolor(255, 255, 255, 255), 1.50, "default", "center", "center", false, false, false, false, false) 
        dxDrawText("Jobb hátsó", screenW * 0.5337, screenH * 0.5195, screenW * 0.6977, screenH * 0.5846, tocolor(255, 255, 255, 255), 1.50, "default", "center", "center", false, false, false, false, false) 
        dxDrawText("Bal hátsó", screenW * 0.5337, screenH * 0.3932, screenW * 0.6977, screenH * 0.4583, tocolor(255, 255, 255, 255), 1.50, "default", "center", "center", false, false, false, false, false) 
        dxDrawText("Jobb első", screenW * 0.5337, screenH * 0.2682, screenW * 0.6977, screenH * 0.3333, tocolor(255, 255, 255, 255), 1.50, "default", "center", "center", false, false, false, false, false) 
  
  
  
     
    --if(menu == 1) then 
        if getKeyState("mouse1") == true then 
            outputChatBox("Leütötte a bal klikket!") 
            local cx,cy = getCursorPos() 
            local jarmu = getElementData(localPlayer, "jarmureklikkelt") 
            outputChatBox("Lekérte a járművet, ami:"..tostring(jarmu)) 
            if isInBox( cx, cy, screenW * 0.3016,  screenW * 0.4656, screenH * 0.2669, screenH * 0.3320 ) then 
                setVehicleDoorState( jarmu, 0, 0 ) 
            elseif isInBox( cx, cy, screenW * 0.3016, screenW * 0.4656, screenH * 0.3919, screenH * 0.4570   ) then 
                setVehicleDoorState( jarmu, 1, 0 )       
            elseif isInBox( cx, cy, screenW * 0.3016, screenW * 0.4656,screenH * 0.5195, screenH * 0.5846 ) then 
                setVehicleDoorState( jarmu, 2, 0 ) 
            elseif isInBox( cx, cy, screenW * 0.5337, screenW * 0.6977, screenH * 0.5195, screenH * 0.5846 ) then  
                setVehicleDoorState( jarmu, 3, 0 ) 
            elseif isInBox( cx, cy, screenW * 0.5337, screenW * 0.6977, screenH * 0.3932, screenH * 0.4583 ) then 
                setVehicleDoorState( jarmu, 4, 0 ) 
            elseif isInBox( cx, cy, screenW * 0.5337, screenW * 0.6977, screenH * 0.2682, screenH * 0.3333 ) then 
                setVehicleDoorState( jarmu, 5, 0 ) 
            else 
                outputChatBox("Egyikre se ment rá!") 
            end 
        end 
    --end 
     
        --dxDrawText(tostring(door3), screenW * 0.4078, screenH * 0.3177, screenW * 0.5908, screenH * 0.3828,tocolor ( 255, 255, 255, 255 ), 1.7,"default","center","center",false,false,false,true) 
end 

If I change here: "setVehicleDoorState( jarmu, 0, 0 )" the "jarmu" to "clickedElement", I got a warning, that in argument 1, got nil.

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