ZaaKScripter Posted October 31, 2020 Share Posted October 31, 2020 Pessoal, estou editando um script de agência de emprego onde tem um trabalho de eletricista, porém ele só cria um marker em baixo do poste e eu queria deixar mais RP, queria que criasse uma escada subindo no poste e o marker fosse criado lá em cima e logo em seguida após terminar o conserto e o trabalhador descer da escada ele pisar novamente no marker para destruir a escada. Desde já agradeço quem puder me ajudar. Link to comment
DNL291 Posted November 1, 2020 Share Posted November 1, 2020 Mostre o código que você tentou se tiver. Link to comment
ZaaKScripter Posted November 2, 2020 Author Share Posted November 2, 2020 (edited) Segue o codigo do trabalho abaixo @DNL291: Client Side local entradaB = createMarker(-2663.881, 239.237, 4.336, "cylinder", 1, 255, 255, 255, 0) addEventHandler( "onClientRender", root, function ( ) local x, y, z = getElementPosition( entradaB ) local Mx, My, Mz = getCameraMatrix( ) if ( getDistanceBetweenPoints3D( x, y, z, Mx, My, Mz ) <= 20 ) then local WorldPositionX, WorldPositionY = getScreenFromWorldPosition( x, y, z +1, 0.07 ) if ( WorldPositionX and WorldPositionY ) then dxDrawText("Eletricista", WorldPositionX - 1, WorldPositionY + 1, WorldPositionX - 1, WorldPositionY + 1, tocolor(0, 0, 0, 255), 1.52, "default-bold", "center", "center", false, false, false, false, false) dxDrawText("Eletricista", WorldPositionX - 1, WorldPositionY + 1, WorldPositionX - 1, WorldPositionY + 1, tocolor(255, 255, 255, 255), 1.50, "default-bold", "center", "center", false, false, false, false, false) end end end ) local money = math.random(450, 1050); local pacienty = { -- Coordenadas dos postes + Dinheiro {1845.9543457031, 1138.2568359375, 11.62566280365,money}, {2017.7882080078, 1088.1586914063, 10.8203125,money}, {2022.1553955078, 1255.1987304688, 10.8203125,money}, {2224.9050292969, 2016.9425048828, 10.836261749268,money}, {2537.3610839844, 2119.03515625, 10.8203125,money}, {1932.7332763672, 2201.7548828125, 10.812517166138,money}, {1524.2006835938, 2208.3811035156, 11.239343643188,money}, {2143.5793457031, 1675.9582519531, 10.8203125,money}, {2143.1501464844, 1689.9729003906, 10.8203125,money}, {2598.1975097656, 1831.4290771484, 10.9765625,money}, {2598.1733398438, 1785.2888183594, 10.9765625,money}, {2605.8676757813, 1671.9998779297, 10.9765625,money}, } local pickupMed = { -- Local pra começar o trabalho {1706.3438720703, 998.7783203125, 10.8203125}, } electricianMessages = -- Lista de problemas { "Mal funcionamento no gerador.", "Afrouxamento da polia.", "Mal contato com o solo.", "Esgotamento de um filamento.", "Circuito aberto.", "Fio quebrado.", } for a=1,#pickupMed do local x,y,z = pickupMed[a][1],pickupMed[a][2],pickupMed[a][3] local marker = createMarker( x, y, z-0.85, "cylinder", 1, 255, 50, 50, 100) setElementData(marker,"Электрик_маркер_устроиться",a) end local sw,sh = guiGetScreenSize() local window={} local label={} local button={} window[1] = guiCreateWindow((sw-550)/2,(sh-200)/2,500,120,"Trabalho eletricista",false) label[1] = guiCreateLabel(0,25,490,30,"Bem-vindo ao trabalho de eletricista. \nVocê encontra e repara várias falhas em coisas de energia.",false,window[1]) guiSetFont(label[1], "default-bold-small") guiLabelSetHorizontalAlign(label[1], "center", false) button[1] = guiCreateButton(10,70,200,30,"...",false,window[1]) button[2] = guiCreateButton(290,70,200,30,"Fechar",false,window[1]) guiSetVisible(window[1],false) function createMarkerElectrician(player) if player == getLocalPlayer() then local d = math.random(1,#pacienty) local x,y,z = pacienty[d][1],pacienty[d][2],pacienty[d][3] local marker = createMarker( x, y, z-0.85, "cylinder", 1, 255, 0, 0, 20) setElementData(marker,"Электрик_маркер_пациент",true) setElementData(player,"Электрик_маркер_пациент",marker) local blip = createBlip(x,y,z,41,3) setElementData(player,"Электрик_пациент_блип",blip) setElementData(player,"Пациент_Кэш",pacienty[d][4]) end end function deleteMarkerElectrician(player) if player == getLocalPlayer() then local ped = getElementData(player,"Электрик_пациент") local blip = getElementData(player,"Электрик_пациент_блип") local marker = getElementData(player,"Электрик_маркер_пациент") if marker then if isElement(marker) then destroyElement(marker) end end if blip then if isElement(blip) then destroyElement(blip) end end if ped then if isElement(ped) then destroyElement(ped) end end end end addEvent("deleteMarkerElectrician", true) addEventHandler("deleteMarkerElectrician", getRootElement(), deleteMarkerElectrician) function startClick() local player = getLocalPlayer() if (source == button[1]) then guiSetVisible(window[1],false) showCursor(false) local state = getElementData(player,"Электрик_работает") local a1 = getElementData(player,"Электрик_маркер_устроиться") if not state then local level = tonumber(getElementData(player, "Level")) or 0 if level <= 12 then exports._infobox:addNotification(source, "Voce nao tem level suficiente para "..Trab.."", "info") else triggerServerEvent("start_Electrician",player,player) setElementData(player,"Электрик_работает",0) setElementData(player,"Электрик_машина_пациент",0) setElementData(player,"Электрик_работает_номер",a1) createMarkerElectrician(player) exports._infobox:addNotification(source, "Voce Começou a trabalhar "..Trab..", Siga o blip do mapa", "info") end else local hodok = tonumber(state) local profit = getElementData(player,"Электрик_Прибавление") if not profit then profit = 0 end setElementData(player,"Электрик_Прибавление",nil) setElementData(player,"Пациент_Кэш",nil) triggerServerEvent("stop_Electrician",player,player) triggerServerEvent("giveMoneyElectrician",player,player,profit) setElementData(player,"Электрик_работает",nil) setElementData(player,"Электрик_работает_номер",nil) end elseif (source == button[2]) then guiSetVisible(window[1],false) showCursor(false) end end addEventHandler("onClientGUIClick", getRootElement(), startClick) function onClientMarkerHit(player, mdim ) if player == getLocalPlayer() then if mdim then local marker = source local veh = getPedOccupiedVehicle(player) local state = getElementData(player,"Электрик_работает") local a1 = getElementData(marker,"Электрик_маркер_устроиться") if a1 then if not veh then guiSetVisible(window[1],true) showCursor(true) setElementData(player,"Электрик_маркер_устроиться",a1) if not state then guiSetText(button[1],"Começar") else guiSetText(button[1],"Receber") end end elseif getElementData(marker,"Электрик_маркер_пациент") then if not veh then setElementFrozen(player,true) setPedAnimation(player,"BOMBER","BOM_Plant",15000,false,true,true,false) setElementData(player,"Электрик_машина_пациент",tonumber(getElementData(player,"Электрик_машина_пациент")) + 1) exports._infobox:addNotification(source, "Aguarde voce esta arrumando a energia do poste", "info") setTimer(function() if isElement(player) and getElementData(player,"Электрик_работает") then local pacienty = tonumber(getElementData(player,"Электрик_машина_пациент")) if pacienty > 0 then setElementData(player,"Электрик_работает",tonumber(state) + pacienty) setElementData(player,"Электрик_машина_пациент",0) if not getElementData(player,"Электрик_Прибавление") then setElementData(player,"Электрик_Прибавление",0) end if not getElementData(player,"Пациент_Кэш") then setElementData(player,"Пациент_Кэш",0) end setElementData(player,"Электрик_Прибавление",getElementData(player,"Электрик_Прибавление") + getElementData(player,"Пациент_Кэш")) deleteMarkerElectrician(player) setElementFrozen(player,false) setPedAnimation(player,false) createMarkerElectrician(player) exports._infobox:addNotification(source, "A rede elétrica está configurada", "info") end end end,15000,1) end end end end end addEventHandler("onClientMarkerHit", getRootElement(), onClientMarkerHit ) function job_quit_Medik() local player = source if player == getLocalPlayer() then local state = getElementData(player,"Электрик_работает") if state then local profit = getElementData(player,"Электрик_Прибавление") if not profit then profit = 0 end setElementData(player,"Электрик_Прибавление",nil) setElementData(player,"Пациент_Кэш",nil) triggerServerEvent("stop_Electrician",player,player) triggerServerEvent("giveMoneyElectrician",player,player,profit) exports._infobox:addNotification(source, "Trabalho concluído com sucesso. Esse e seu salário: R$"..profit..".", "info") end end end addEventHandler("onClientPlayerWasted", root, job_quit_Medik) Edited November 2, 2020 by ZaaKScripter Link to comment
ber Posted November 3, 2020 Share Posted November 3, 2020 Não vou conseguir passar o código, mas vou explicar como fazer esse tipo de trabalho. Primeiro, ao spawnar o veículo do emprego, crie junto um colshape e use attachelement para grudá-lo no veículo na parte traseira. Depois, crie um evento para quando passar encima desse colshape criar uma escada e use novamente o attachelements para grudar a escada no player, configure a rotação da escada de maneira que ela fica um pouco na diagonal para o player conseguir subir. Depois, crie um bindKey para que quando o player apertar dar um detachElements na escada, aí ela irá ficar no chão na posição em que o player quiser, crie também um marker no local que o player apertou o E para que quando ele apertar novamente a escada seja guardada. Basicamente é assim que é feito um script de eletricista, infelizmente estou sem tempo para fazer o código, mas não é nada muito complicado não. 1 Link to comment
Boechat Posted November 3, 2020 Share Posted November 3, 2020 O comando é createObject ( int modelid, float x, float y, float z, [ float rx, float ry, float rz, bool isLowLOD = false ] ) sendo como argumentos obrigatórios: ID do objeto (pode achar todos os objetos em sites também que são melhores organizados), posição x, posição y, posição z argumentos opcionais: rotação x, rotação y, rotação z e se é LowLOD pode ver mais informações na página da função: createObject 1 Link to comment
ZaaKScripter Posted November 4, 2020 Author Share Posted November 4, 2020 @BoechatComo eu faria para que esse objeto fosse destruido apos o reparo do poste? Link to comment
Boechat Posted November 9, 2020 Share Posted November 9, 2020 (edited) On 04/11/2020 at 10:56, ZaaKScripter said: @BoechatComo eu faria para que esse objeto fosse destruido apos o reparo do poste? Você usa o destroyElement. Pode destruir assim que a tarefa foi concluída, ou criar um market junto ao objeto e destruir o market + o objeto assim que ele sair do market Algo mais ou menos assim: local objetoExemplo = createObject ( 1945, 1530, -1090, 21, 0, 0, 90 ) local markerExemplo = createMarker ( 1945, 1530, 21, "cylinder", 3, 255, 255, 0, 0 ) --Recomendo deixar o Alpha em 0 para que o marker fique invisível, pro player será como se ele simplesmente se afastasse do objeto e o objeto sumisse function markerLeave ( leavingPlayer, matchingDimension ) if leavingPlayer == localPlayer and source == marketExemplo then destroyElement(objetoExemplo) --Recomendo que chame essa função de destruir o objeto assim que terminar o uso do objeto também, mas como não tenho seu script vou dar o exemplo de saindo do market destroyElement(markerExemplo) end end addEventHandler ( "onClientMarkerLeave", getRootElement(), markerLeave ) Edited November 9, 2020 by Boechat 1 Link to comment
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now