Jump to content

DNL291

Retired Staff
  • Posts

    3,875
  • Joined

  • Days Won

    67

Everything posted by DNL291

  1. Tente isto: local spawnpoint addEventHandler("onResourceStart", resourceRoot, function() spawnpoint = getRandomSpawnPoint() resetMapInfo() for i,player in ipairs(getElementsByType("player")) do spawn(player, true) end end ) function spawn(player, setRnd) if not isElement(player) then return end if get("spawnreset") == "onSpawn" then spawnpoint = getRandomSpawnPoint() end local skinID = setRnd and math.random(312) or (getElementData( player, "playerTempSkinID" ) or 0) exports.spawnmanager:spawnPlayerAtSpawnpoint(player,spawnpoint,false) setElementModel(player, skinID) fadeCamera(player, true) setCameraTarget(player, player) showChat(player, true) end function getRandomSpawnPoint () local spawnpoints = getElementsByType("spawnpoint") return spawnpoints[math.random(1,#spawnpoints)] end addEventHandler("onPlayerJoin", root, function() spawn(source, true) end ) addEventHandler("onPlayerQuit",root, function () if getPlayerCount() == 1 and get("spawnreset") == "onServerEmpty" then spawnpoint = getRandomSpawnPoint() end end ) addEventHandler("onPlayerWasted", root, function() setElementData( source, "playerTempSkinID", getElementModel(source), false ) setTimer(spawn, 1800, 1, source) end )
  2. Onde o jogador vai comprar a skin? Se você já tiver uma loja de skins, só modificar o código e adicionar um setAccountData para armazenar a skin quando o jogador comprá-la e armazenar temporariamente com setElementData. Feito isso, no evento onPlayerLogin você pode usar getAccountData + setElementData pra setar o id da skin no element-data, e no evento onPlayerSpawn setar a skin com getElementData + setElementModel.
  3. No seu GTA normal você já viu se as markers mostram? Tá usando a versão atual do MTA? Quando foi que esse problema começou? Pode ser alguma configuração mexida, GTA:SA modificado ou algum problema no seu MTA.
  4. Primeiro faça o painel dx, depois programe para detectar o clique em certa área da tela e chame a função que irá mostrar o outro DX. Uma função útil pra isso: https://wiki.multitheftauto.com/wiki/IsMouseInPosition Também, onClientRender dxDrawRectangle dxDrawText Isso é o que você vai precisar pra dar inicio em tudo, se tiver dificuldade poste seu código aqui.
  5. Mostre o seu código completo. Pode ser que tenha algo errado com essas tabelas.
  6. Esse código é do lado cliente e o que vai precisar é fazer toda a parte do banco de dados e carregamento no lado server. A consulta na base de dados não precisa ser a todo momento que verificar o que o jogador possui, pra isso tem as tabelas ou element-data que você pode armazenar temporariamente no jogador, e para fazer uma verificação entre UI/jogador local (client) e os dados do jogador (server) você vai precisar da função triggerServerEvent client > server e triggerClientEvent server > client.
  7. Como esta seção funciona também inclui showcase e pedidos de resources (como se fosse a categoria global Scripting + a Resources juntas) então também é utilizada para essa finalidade. Nesse caso, nem se trata de um resource, então seria desnecessário upar como um resource na community.multitheftauto.com. Seria melhor adicionar a função aqui: https://wiki.multitheftauto.com/wiki/Useful_Functions Mas quanto à sua função @zMpyster tá meio que feita na base da gambiarra e precisa de um código mais "limpo" sem esses loops aí. A propósito, já tem essa função útil na Wiki: https://wiki.multitheftauto.com/wiki/SecondsToTimeDesc
  8. Deve funcionar assim. Mas lembre-se de usar o comando /debugscript 3 sempre que testar o código. A propósito, eu corrigi um erro que havia no meu código, na função onPlayerLogin (linha 12) substitua : loadPlayerData( p ) Com loadPlayerData( player ) Indexe as tabelas corretamente, com um elemento do jogador válido para evitar erros no salvamento. Te recomendo usar outputs com os valores existentes no código ao testar o script no server.
  9. Tenta assim: local level = getElementData(localPlayer,"Level") or 0 level = ( level == "false" ) and 0 or level local exp = getElementData(localPlayer,"LSys:EXP") or 0 exp = ( exp == "false" ) and 0 or exp local largura_barra = 250 local level_max = 100 local recWidth = math.min( (level * largura_barra) /level_max, largura_barra ) dxDrawRectangle(screenW * 0.7853, screenH * 0.0625, recWidth, screenH * 0.0250, tocolor(154, 205, 50, 200), false) O segundo problema, sinceramente não consegui entender, eu acho. Talvez você queria remover as casas decimais? Se sim, use math.floor ou math.ceil.
  10. Se você não sabe nem o que é uma string, boolean ou table então é uma má ideia tentar fazer algo difícil sem nem saber o básico. Comece por coisas mais simples e avance de acordo com seu conhecimento. Inventário você pode baixar algum na internet, ou também pode pagar alguém para fazê-lo.
  11. Tente: function onPlayerQuitOrResStop ( ) if eventName == "onResourceStop" then for _, player in ipairs(getElementsByType("player")) do savePlayerData( player ) end return end savePlayerData( source ) end function onPlayerLogin (_, playeraccount ) if eventName == "onResourceStart" then for _, player in ipairs(getElementsByType("player")) do loadPlayerData( p ) end return end loadPlayerData( source ) end function savePlayerData( p ) local playeraccount = getPlayerAccount ( p ) if ( playeraccount ) and not isGuestAccount ( playeraccount ) then local trabalhotr = playerTraficante[p] or "n/a" local ax = playerAx[p] or false local coca = playerCoca[p] or false local bagulho = playerBagulho[p] or false local IngAx1 = playerIngAx1[p] or false local IngAx2 = playerIngAx2 [p] or false local IngCoca1 = playerIngCoca1 [p] or false local IngCoca2 = playerIngCoca2 [p] or false local IngCoca3 = playerIngCoca3 [p] or false local sementes = playerSementes [p] or false setAccountData ( playeraccount, "trabalhotr", trabalhotr ) setAccountData ( playeraccount, "droga.ax", ax ) setAccountData ( playeraccount, "droga.coca", coca ) setAccountData ( playeraccount, "droga.maconha", bagulho ) setAccountData ( playeraccount, "droga.ingax1", IngAx1 ) setAccountData ( playeraccount, "droga.ingax2", IngAx2 ) setAccountData ( playeraccount, "droga.ingcoca1", IngCoca1 ) setAccountData ( playeraccount, "droga.ingcoca2", IngCoca2 ) setAccountData ( playeraccount, "droga.ingcoca3", IngCoca3 ) setAccountData ( playeraccount, "droga.sementes", sementes ) end end function loadPlayerData( p ) local playeraccount = getPlayerAccount ( p ) if ( playeraccount ) and not isGuestAccount ( playeraccount ) then local trabalhotr = getAccountData ( playeraccount, "trabalhotr" ) or false local ax = getAccountData ( playeraccount, "droga.ax" ) or false local coca = getAccountData ( playeraccount, "droga.coca" ) or false local bagulho = getAccountData ( playeraccount, "droga.maconha" ) or false local IngAx1 = getAccountData ( playeraccount, "droga.ingax1" ) or false local IngAx2 = getAccountData ( playeraccount, "droga.ingax2" ) or false local IngCoca1 = getAccountData ( playeraccount, "droga.ingcoca1" ) or false local IngCoca2 = getAccountData ( playeraccount, "droga.ingcoca2" ) or false local IngCoca3 = getAccountData ( playeraccount, "droga.ingcoca3" ) or false local sementes = getAccountData ( playeraccount, "droga.sementes" ) or false if ( trabalhotr ) then setElementData( p, "trabalhotr", trabalhotr ) end if ( ax ) then setElementData ( p, "droga.ax", ax ) end if ( coca ) then setElementData ( p, "droga.coca", coca ) end if ( bagulho ) then setElementData ( p, "droga.maconha", bagulho ) end if ( IngAx1 ) then setElementData ( p, "droga.ingax1", IngAx1 ) end if ( IngAx2 ) then setElementData ( p, "droga.ingax2", IngAx2 ) end if ( IngCoca1 ) then setElementData ( p, "droga.ingcoca1", IngCoca1 ) end if ( IngCoca2 ) then setElementData ( p, "droga.ingcoca2", IngCoca2 ) end if ( IngCoca3 ) then setElementData ( p, "droga.ingcoca3", IngCoca3 ) end if ( sementes ) then setElementData ( p, "droga.sementes", sementes ) end end end addEventHandler ( "onResourceStop", resourceRoot, onPlayerQuitOrResStop ) addEventHandler ( "onResourceStart", resourceRoot, onPlayerLogin ) addEventHandler ( "onPlayerQuit", getRootElement ( ), onPlayerQuitOrResStop ) addEventHandler ( "onPlayerLogin", getRootElement ( ), onPlayerLogin )
  12. Sim, se tiver utilizando o resource bone attach, aqui tem a lista de todas funções exportadas: https://wiki.multitheftauto.com/wiki/Resource:Bone_attach setElementBonePositionOffset - setar a posição offset setElementBoneRotationOffset - setar a rotação offset Se você anexou com attachElements, use a função setElementAttachedOffsets
  13. Você pode usar esta função útil para gerar a key: https://wiki.multitheftauto.com/wiki/GenerateString
  14. Acho que este tópico já responde a sua dúvida:
  15. Resource está como cliente no meta.xml.
  16. Você deve ter o resource "[SCR]LIB" ligado no servidor.
  17. function outputMessage (text, player, r, g, b) return call( getResourceFromName( "[SCR]LIB" ), "outputMessage", player, text, r, g, b ) end Tenta isso.
  18. Ainda sobre a sua primeira pergunta, você pode organizar seu código e também encurtar com tabela, assim: local buttonColor = { { default = tocolor(154,205,50, 220), mouseOver = tocolor(255,255,255, 20) } -- botão 1 { default = tocolor(154,205,50, 220), mouseOver = tocolor(255,255,255, 20) } -- botão 2 { default = tocolor(154,205,50, 220), mouseOver = tocolor(255,255,255, 20) } -- botão 3 } function renderButton() local b1col = isCursorOnElement(screenW * 0.6020, screenH * 0.1550, screenW * 0.0600, screenH * 0.0300) and buttonColor[1].mouseOver or buttonColor[1].default local b2col = isCursorOnElement(screenW * 0.6020, screenH * 0.1550, screenW * 0.0600, screenH * 0.0300) and buttonColor[2].mouseOver or buttonColor[2].default local b3col = isCursorOnElement(screenW * 0.6020, screenH * 0.1550, screenW * 0.0600, screenH * 0.0300) and buttonColor[3].mouseOver or buttonColor[3].default dxDrawRectangle( x,y,w,h,b1col ) dxDrawRectangle( x,y,w,h,b2col ) dxDrawRectangle( x,y,w,h,b3col ) end Sobre o blip, comece primeiro fazendo o correto no lado cliente, defina uma variável pra saber se foi o primeiro clique ou segundo, e adicione corretamente o evento no cliente com addEvent + addEventHandler assim como está no lado server; quando receber a chamada do server, desative a interface e/ou faça o que mais for necessário.
  19. Tente com setElementAttachedOffsets ou setElementRotation + findRotation
  20. Tente: setPedAnimation( thePed, block, anim, 0, true, true, true ) setPedAnimation( thePed, block, anim, 0, true, true, false )
  21. Recomendo fazer esse código no lado server.
  22. == Igual >= Maior ou igual <= Menor ou igual > Maior < Menor Acho que você quis verificar se é maior ou igual, e ali no código tá menor ou igual.
  23. Na verdade não precisa de localPlayer no cliente pra essa função. Isto já basta: if getPlayerMoney() <= 750 then Na própria wiki tem essa informação.
  24. Se for no lado cliente getPlayerMoney não recebe nenhum argumento, só lado server.
×
×
  • Create New...