Jump to content

DNL291

Retired Staff
  • Posts

    3,875
  • Joined

  • Days Won

    67

Everything posted by DNL291

  1. Use o Map editor, nele tem a opção de remover objetos do jogo.
  2. dxDrawText ( ID ), px, py, px, py, tocolor(255, 255, 255, 195), 1.00, "default-bold", "left", "top", false, false, false, true, false) Remova o parentese depois de "ID".
  3. rz Último valor na sua tabela 'spawnpatriot'. @P43tous
  4. O DX você faz com cálculos e usa as funções DX para o front, basicamente isso. Veja algum resource como exemplo pra você estudá-lo: https://community.multitheftauto.com/index.php?p=resources&s=details&id=7668 Mas claro que o principal é já ter um conhecimento intermediário já que você quer fazer o seu próprio. Depois de feito, você cria o evento para possibilitar o trigger através do lado server.
  5. Acho que você não leu a primeira resposta. removeWorldModel(762, 10.3581, 680.95, -1496.10, 15.7422)
  6. "getLocalPlayer()" Retorna o jogador do cliente, não tem nenhum uso pra obter o local. Movido para Portuguese / Português > Programação em Lua. @GM_Goulart
  7. Não, deve ser client-side. Ele usa funções que só estão disponíveis no cliente. @MrDragon
  8. Tente: local screenW,screenH = guiGetScreenSize() local resW, resH = 1366,768 local x, y = (screenW/resW), (screenH/resH) local render = false local Porte = createMarker(296.087, -38.088, 1001.516-1.1, "cylinder", 1.2, 20, 70, 230, 95) setElementInterior(Porte, 1) function botoes() botonfechar = guiCreateButton(875, 152, 42, 37,"",false) guiSetAlpha(botonfechar,255) porte = guiCreateButton(418, 467, 240, 103,"",false) guiSetAlpha(porte,255) glock = guiCreateButton(668, 467, 240, 103,"",false) guiSetAlpha(glock,255) guiSetVisible(glock, false) guiSetVisible(porte, false) guiSetVisible(botonfechar, false) addEventHandler("onClientGUIClick", porte, function() triggerServerEvent ("porte",getLocalPlayer(), comprar) end) addEventHandler("onClientGUIClick", glock, function() triggerServerEvent ("comprarglock",getLocalPlayer(),comprarglock) end) addEventHandler ("onClientGUIClick", botonfechar, function() removeEventHandler ("onClientRender", root, panel) destroyElement (botonfechar) destroyElement (porte) destroyElement (glock) botonfechar = nil porte = nil glock = nil showCursor (false) end) end function panel() dxDrawRectangle(395, 155, 523, 436, tocolor(0, 0, 0, 126), false) dxDrawLine(395 - 1, 152 - 1, 395 - 1, 189, tocolor(79, 0, 0, 208), 1, false) dxDrawLine(395 - 1, 189, 918, 189, tocolor(79, 0, 0, 208), 1, false) dxDrawLine(918, 189, 918, 152 - 1, tocolor(79, 0, 0, 208), 1, false) dxDrawRectangle(395, 152, 523, 37, tocolor(0, 0, 0, 208), false) dxDrawText("PORTE DE ARMAS", 393, 148, 918, 189, tocolor(255, 255, 255, 255), 1.20, "sans", "center", "center", false, false, false, false, false) dxDrawRectangle(413, 199, 489, 245, tocolor(0, 0, 0, 69), false) dxDrawText("LEMBRANDO, O PORTE DE ARMAS APENAS COBRE A GLOCK, E PARA ADQUIRIR A MESMA, TÉRA QUE A COMPRAR, A GLOCK CUSTA 100K POR SER LEGAL.", 416, 197, 902, 444, tocolor(255, 255, 255, 255), 1.50, "default", "center", "center", false, true, false, false, false) dxDrawRectangle(875, 152, 42, 37, tocolor(0, 0, 0, 186), false) dxDrawText("ADQUIRIR PORTE", 418, 463, 658, 570, tocolor(255, 255, 255, 255), 2.00, "default", "center", "center", false, false, false, false, false) dxDrawText("ADQUIRIR GLOCK", 669, 465, 908, 570, tocolor(255, 255, 255, 255), 2.00, "default", "center", "center", false, false, false, false, false) dxDrawText("X", 876, 148, 916, 188, tocolor(255, 255, 255, 255), 1.30, "default", "center", "center", false, false, false, false, false) end function markerPanel (hitPlayer, matchingDimension) if (hitPlayer == localPlayer) then addEventHandler("onClientRender", root, panel) render = true showCursor(true) guiSetVisible(glock, true) guiSetVisible(porte, true) guiSetVisible(botonfechar, true) end end addEventHandler ("onClientMarkerHit", Porte, markerPanel) server local Entrar = createMarker (1310.129, -1368.674, 13.552-1, "cylinder", 1.2, 20, 70, 230, 95 ) local EntradaBlip = createBlipAttachedTo ( Entrar, 23 ) setBlipVisibleDistance ( EntradaBlip, 150 ) local Sair = createMarker(285.418, -40.954, 1001.516-1.1, "cylinder", 1.2, 20, 70, 230, 95) setElementInterior ( Sair, 1 ) local Porte2 = createMarker(296.087, -38.088, 1001.516-1.1, "cylinder", 1.2, 20, 70, 230, 95) setElementInterior(Porte2, 1) thePed = createPed(120, 296.103, -40.216, 1001.516) setElementInterior ( thePed, 1 )-- Creates a ped function cancelPedDamage() cancelEvent() -- Cancels the onClientPedDamage event end addEventHandler("onClientPedDamage", thePed, cancelPedDamage) function onmarker(marker,md) if (md) then if marker == Entrar then setTimer ( setElementInterior, 400, 1, source, 1 ) setTimer ( setElementPosition, 400, 1, source, 286.067, -39.416, 1001.516 ) setTimer ( setElementRotation, 900, 1, source, 0, 0, 358 ) fadeCamera ( source, false, 0.1, 0, 0, 0 ) setTimer ( fadeCamera, 900, 1, source , true, 0.5 ) end if marker == Sair then setTimer ( setElementInterior, 400, 1, source, 0 ) setTimer ( setElementDimension, 400, 1, source, 0 ) setTimer ( setElementPosition, 400, 1, source, 1310.116, -1371.456, 13.589 ) setTimer ( setElementRotation, 900, 1, source, 0, 0, 177 ) fadeCamera ( source, false, 0.1, 0, 0, 0 ) setTimer ( fadeCamera, 900, 1, source , true, 0.5 ) end end end addEventHandler("onPlayerMarkerHit",getRootElement(),onmarker) --------------------------- CODE ------------------------------------ addEvent("porte", true) addEventHandler("porte", root, function() if getElementData(client, "Porte") == false then setElementData(client, "Porte", true) outputChatBox("#727272[Porte]#ff0000Voce adquiriu o porte de arma", client, 255, 255, 255, true) else outputChatBox("#727272[Porte]#ff0000Voce já tem um porte de arma", client, 255, 255, 255, true) end end )
  9. A verificação do grupo "Everyone" é desnecessária. Lembre-se de usar element-data para o salvamento dentro do jogo, account-data você armazena quando o jogador sai do jogo ou caso pare o resource, e também em sistemas de salvamento automático em um intervalo de tempo. Também troque getRootElement() por resourceRoot no evento "onResourceStart".
  10. Onde está definida as funções showCustomHud e isShowCustomHud? Mostre o código completo da hud.
  11. @SherlocK Use a função https://wiki.multitheftauto.com/wiki/IsPlayerInACL (inclua no seu código a função). Tópico movido para Portuguese / Português > Programação em Lua.
  12. Os botões estão sendo criados depois, então vai retornar um valor nulo. Coloque os eventos junto com a função que está criando os botões.
  13. onClientVehicleDamage Cancela esse evento verificando se a vida do carro é menor ou igual a 250.
  14. Tirar do carro = desgrudar do carro Se sim > detachElements Adicionar comando > addCommandHandler
  15. Tente: local Marker_Start = createMarker (-111.1279296875, -4.025390625, 3.1171875 -1, "cylinder", 1.5, 20, 70, 230, 80) local Blip_Start = createBlipAttachedTo(Marker_Start, 42) local Plantas = { [1] = {-129.10345458984,44.776748657227,3.1171875}, [2] = {-140.21569824219,35.499088287354,3.1171875}, [3] = {-138.20004272461,22.663047790527,3.1171875}, [4] = {-148.60707092285,14.514667510986,3.1171875}, [5] = {-145.90365600586,3.4965758323669,3.1171875}, [6] = {-156.54542541504,-6.012909412384,3.1171875}, [7] = {-154.13597106934,-17.593681335449,3.1171875}, [8] = {-164.40188598633,-27.394626617432,3.1171875}, [9] = {-162.29643249512,-39.118156433105,3.1171875}, [10] = {-171.7504119873,-45.86404800415,3.1171875}, } local Coronas_Plantas local Obj_Plantas local Letra = "K" function onClientMarkerHitFunc(hitPlayer, md) if localPlayer ~= hitPlayer or not (md) then return end if Coronas_Plantas and source == Coronas_Plantas and getElementData(hitPlayer, "Emprego") == "Fazendeiro" then if not getPedOccupiedVehicle(hitPlayer) then return end local _plantas = getElementData (source, "Plantas") or 1 if _plantas and (_plantas < #Plantas) then _plantas = _plantas + 1 exports.Scripts_Dxmessages:outputDx( "Você colheu a Planta. Siga para a próxima.("..tostring(_plantas).."/"..#Plantas..")", "success") setElementData (source, "Plantas", _plantas) local x, y, z = unpack(Plantas[_plantas]) setElementPosition(source, x, y, z -1) setElementPosition(Obj_Plantas, x, y, z) else jobStop() exports.Scripts_Dxmessages:outputDx ("Você terminou de Colher Todas as Plantas bom Trabalho!!", "success") triggerServerEvent( "Fazendeiro:onRequestRemovePlayerVehicle", localPlayer ) end return end if source == Marker_Start and not getPedOccupiedVehicle(hitPlayer) then if getElementData ( hitPlayer, "Emprego" ) == "Fazendeiro" then exports.Scripts_OnMarkerMsgs_:create("Aperte 'K' Para se Demitir do Emprego de Fazendeiro") bindKey ( Letra, "down", jobStop, true ) else exports.Scripts_OnMarkerMsgs_:create("Aperte 'K' Para Aceitar o Emprego de Fazendeiro") bindKey ( Letra, "down", jobStart ) end end end addEventHandler("onClientMarkerHit",resourceRoot,onClientMarkerHitFunc) function emarker2(p,md) if localPlayer ~= p or not (md) then return end if not getPedOccupiedVehicle(p) then exports.Scripts_OnMarkerMsgs_:delete(source) unbindKey ( Letra, "down", jobStart ) unbindKey ( Letra, "down", jobStop ) end end addEventHandler("onClientMarkerLeave",Marker_Start,emarker2) function jobStart() if not getPedOccupiedVehicle(localPlayer) then exports.Scripts_OnMarkerMsgs_:delete(localPlayer) jobStop() local x, y, z = unpack (Plantas[1]) Coronas_Plantas = createMarker (x, y, z -1, "corona", 2, 0, 255, 0, 80) setElementData (Coronas_Plantas, "Plantas", 1) Obj_Plantas = createObject(804, x, y, z) setElementData(Obj_Plantas, "DnO_Obj", localPlayer) setObjectScale(Obj_Plantas, 1.0) setElementCollisionsEnabled (Obj_Plantas, false) triggerServerEvent( "Fazendeiro:onRequestGivePlayerVehicle", localPlayer ) unbindKey ( Letra, "down", jobStart ) unbindKey ( Letra, "down", jobStop ) end end addEventHandler( "onClientPlayerWasted", localPlayer, function() if getElementData(source, "Emprego") == "Fazendeiro" then if Coronas_Plantas then jobStop( ) end end end ) function jobStop( removeFromJob ) if Obj_Plantas then if isElement(Obj_Plantas) then destroyElement(Obj_Plantas) end Obj_Plantas = nil end if Coronas_Plantas then if isElement(Coronas_Plantas) then destroyElement(Coronas_Plantas) end Coronas_Plantas = nil end if removeFromJob then setElementData ( localPlayer, "Emprego", "N/A" ) end end addEvent( "Fazendeiro:jobStop", true ) addEventHandler( "Fazendeiro:jobStop", root, jobStop ) server local Veh_Trator = {} addEvent( "Fazendeiro:onRequestGivePlayerVehicle", true ) addEventHandler( "Fazendeiro:onRequestGivePlayerVehicle", root, function() if source ~= client then return end if Veh_Trator[client] then if isElement(Veh_Trator[client]) then destroyElement(Veh_Trator[client]) end Veh_Trator[client] = nil end setElementModel(client, 158) Veh_Trator[client] = createVehicle(531, -123.7235625, 64.36328125, 3.3815598964391, 0, 0, 156) warpPedIntoVehicle( client, Veh_Trator[client]) setElementData(Veh_Trator[client], "DnO_Trator", client) setElementData ( client, "Emprego", "Fazendeiro" ) local thePlayer = source addEventHandler( "onVehicleExplode", Veh_Trator[source], function() exports.Scripts_Dxmessages:outputDx (thePlayer, "Seu veículo do trabalho explodiu!", "info") triggerClientEvent( thePlayer, "Fazendeiro:jobStop", thePlayer ) destroyElement(source) Veh_Trator[thePlayer] = nil end ) exports.Scripts_Dxmessages:outputDx (client, "Colher todas as Plantas!!", "info") end ) addEvent( "Fazendeiro:onRequestRemovePlayerVehicle", true ) addEventHandler( "Fazendeiro:onRequestRemovePlayerVehicle", root, function() if Veh_Trator[client] then if isElement(Veh_Trator[client]) then destroyElement(Veh_Trator[client]) end Veh_Trator[client] = nil end end ) addEventHandler( "onPlayerQuit", root, function() if Veh_Trator[source] then if isElement(Veh_Trator[source]) then destroyElement(Veh_Trator[source]) end Veh_Trator[source] = nil end end )
  16. Pode ser um problema com scripts, senão, um mal desligamento do server.
  17. getElementsByType isPlayerInACL - função útil, inclua o código no script Próxima vez lembre-se de postar na seção Portuguese / Português. @Tricky_
  18. Então o resource não tem erros, se tivesse do lado cliente a função nunca seria chamada. O código do Jonas^ deve funcionar. Se não funcionar é só olhar os avisos do debug.
  19. Client local Marker_Start = createMarker (-111.1279296875, -4.025390625, 3.1171875 -1, "cylinder", 1.5, 20, 70, 230, 80) local Blip_Start = createBlipAttachedTo(Marker_Start, 42) local Plantas = { [1] = {-129.10345458984,44.776748657227,3.1171875}, [2] = {-140.21569824219,35.499088287354,3.1171875}, [3] = {-138.20004272461,22.663047790527,3.1171875}, [4] = {-148.60707092285,14.514667510986,3.1171875}, [5] = {-145.90365600586,3.4965758323669,3.1171875}, [6] = {-156.54542541504,-6.012909412384,3.1171875}, [7] = {-154.13597106934,-17.593681335449,3.1171875}, [8] = {-164.40188598633,-27.394626617432,3.1171875}, [9] = {-162.29643249512,-39.118156433105,3.1171875}, [10] = {-171.7504119873,-45.86404800415,3.1171875}, } local Coronas_Plantas local Obj_Plantas local Letra = "K" function onClientMarkerHitFunc(hitPlayer, md) if localPlayer ~= hitPlayer or not (md) then return end if not getPedOccupiedVehicle(hitPlayer) then if getElementData ( hitPlayer, "Emprego" ) == "Fazendeiro" then exports.Scripts_OnMarkerMsgs_:create("Aperte 'K' Para se Demitir do Emprego de Fazendeiro") bindKey ( Letra, "down", jobStop, true ) else exports.Scripts_OnMarkerMsgs_:create("Aperte 'K' Para Aceitar o Emprego de Fazendeiro") bindKey ( Letra, "down", jobStart ) end end end addEventHandler("onClientMarkerHit",Marker_Start,onClientMarkerHitFunc) function emarker2(p,md) if localPlayer ~= p or not (md) then return end if not getPedOccupiedVehicle(p) then exports.Scripts_OnMarkerMsgs_:delete(source) unbindKey ( Letra, "down", jobStart ) unbindKey ( Letra, "down", jobStop ) end end addEventHandler("onClientMarkerLeave",Marker_Start,emarker2) function jobStart() if not getPedOccupiedVehicle(localPlayer) then exports.Scripts_OnMarkerMsgs_:delete(localPlayer) jobStop() local x, y, z = unpack (Plantas[1]) Coronas_Plantas = createMarker (x, y, z -1, "corona", 2, 0, 255, 0, 80) setElementData (Coronas_Plantas, "Plantas", 1) addEventHandler ("onClientMarkerHit", Coronas_Plantas, Hit_Coronas) Obj_Plantas = createObject(804, x, y, z) setElementData(Obj_Plantas, "DnO_Obj", localPlayer) setObjectScale(Obj_Plantas, 1.0) setElementCollisionsEnabled (Obj_Plantas, false) triggerServerEvent( "Fazendeiro:onRequestGivePlayerVehicle", localPlayer ) unbindKey ( Letra, "down", jobStart ) unbindKey ( Letra, "down", jobStop ) end end function Hit_Coronas(hitPlayer, md) if getPedOccupiedVehicle(hitPlayer) then local plantas = getElementData (source, "Plantas") if plantas and (plantas < #Plantas) then exports.Scripts_Dxmessages:outputDx( "Você colheu a Planta. Siga para a próxima.("..tostring(plantas).."/"..#Plantas..")", "success") setElementData (source, "Plantas", plantas + 1) local x, y, z = unpack(Plantas[plantas]) setElementPosition(source, x, y, z -1) setElementPosition(Obj_Plantas, x, y, z) else removeEventHandler ("onClientMarkerHit", Coronas_Plantas, Hit_Coronas) exports.Scripts_Dxmessages:outputDx ("Você terminou de Colher Todas as Plantas bom Trabalho!!", "success") end end end function jobStop( removeFromJob ) if Obj_Plantas then if isElement(Obj_Plantas) then destroyElement(Obj_Plantas) end Obj_Plantas = nil end if Coronas_Plantas then if isElement(Coronas_Plantas) then destroyElement(Coronas_Plantas) end Coronas_Plantas = nil end if removeFromJob then setElementData ( localPlayer, "Emprego", "N/A" ) end end Server local Veh_Trator = {} addEvent( "Fazendeiro:onRequestGivePlayerVehicle", true ) addEventHandler( "Fazendeiro:onRequestGivePlayerVehicle", root, function() if source ~= client then return end if Veh_Trator[client] then if isElement(Veh_Trator[client]) then destroyElement(Veh_Trator[client]) end Veh_Trator[client] = nil end setElementModel(client, 158) Veh_Trator[client] = createVehicle(531, -123.7235625, 64.36328125, 3.3815598964391, 0, 0, 156) warpPedIntoVehicle( client, Veh_Trator[client]) setElementData(Veh_Trator[client], "DnO_Trator", client) setElementData ( client, "Emprego", "Fazendeiro" ) exports.Scripts_Dxmessages:outputDx (client, "Colher todas as Plantas!!", "info") end ) addEventHandler( "onPlayerQuit", root, function() if Veh_Trator[source] then if isElement(Veh_Trator[source]) then destroyElement(Veh_Trator[source]) end Veh_Trator[source] = nil end end ) Não testado. Obs: revise as funções exportadas, eu removi o player do argumento e deve existir uma versão client side exportada.
  20. Mostre o seu arquivo meta.
×
×
  • Create New...