Jump to content

DNL291

Retired Staff
  • Posts

    3,875
  • Joined

  • Days Won

    67

Everything posted by DNL291

  1. Esse é o código do mecânico, não vejo nada relacionada à agência. Use o botão <> para postar o código da próxima vez:
  2. Coloque isto no seu código: local frozenPlayers = {} addEventHandler( "onResourceStop", resourceRoot, function() for thePlayer in pairs(frozenPlayers) do setElementFrozen( thePlayer, false ) end end ) local SetElementFrozen = setElementFrozen function setElementFrozen( elem, bool ) if not isElement(elem) then return false end if getElementType(elem) == "player" then bool = bool and true or nil frozenPlayers[ elem ] = bool end return SetElementFrozen( elem, bool ) end addEventHandler( "onPlayerQuit", root, function() if frozenPlayers[ source ] then frozenPlayers[ source ] = nil end end ) (não-testado)
  3. Verifique as permissões do resource na ACL e se o admin não está com erros por conta de alguma modificação. Quando postar no fórum lembre-se de postar no subfórum Other languages > Portuguese / Português Posts em português devem estar nessa seção. @NeoGM
  4. Obviamente vai ter que refazer tudo pra funcionar como uma arma. Com createWeapon acho que dá pra fazer. Ou se não quiser ter todo esse trabalho, apenas oculte a arma do jogador e anexe no player o object.
  5. Sim, getElementsByType("vehicle") vai funcionar da mesma forma, basta iterar a tabela de todos veículos retornada e o valor será o elemento-veículo assim como está no loop dos players. O evento "onResourceStart" não têm nada a ver com isso, ele só está sendo chamado internamente quando o resource é ligado e não fornece nenhum parâmetro ou "elementos" para isso.
  6. Se você pesquisar pelo fórum vai encontrar alguns códigos parecidos. Funções/evento que você vai precisar: createMarker onMarkerHit isPlayerInACL - função útil createVehicle setElementModel
  7. Movido para Portuguese / Português > Programação em Lua @+MarceloM.
  8. Não reviva tópicos por favor, crie um novo com a sua dúvida.
  9. local damagePlayers = {} function onDamage( ) if damagePlayers[source] and isTimer(damagePlayers[source]) then killTimer(damagePlayers[source]) end damagePlayers[source] = setTimer( function(p) if isElement(p) then damagePlayers[p] = nil end end, 10000, 1, source ) end addEventHandler( "onPlayerDamage", root, onDamage ) Nesse código eu fiz um timer quando o jogador leva hit e reseta depois de 10 segundos. No comando do teleporte você só irá fazer uma verificação na tabela damagePlayers: if damagePlayers[thePlayer] then return outputChatBox("Você não pode usar esse comando agora!", thePlayer) end Coloque isso no inicio do comando do teleporte.
  10. Põe uma verificação com getElementDimension e getElementInterior
  11. Assim: function Vehicle2 (hitPlayer) if getElementType(hitPlayer) == "player" then if isObjectInACLGroup("user."..getAccountName(getPlayerAccount(hitPlayer)), aclGetGroup("Mecanico")) then local vehicle = getPedOccupiedVehicle(hitPlayer) if vehicle and veh[hitPlayer] and vehicle == veh[hitPlayer] then destroyElement(veh[hitPlayer]) veh[hitPlayer] = nil else outputChatBox("Você não esta em um veículo", hitPlayer, 0, 0, 0) end end end end addEventHandler("onMarkerHit", Marker2, Vehicle2) Na função Vehicle1 você deve trocar Veh1 por veh[hitPlayer].
  12. Troque isPedInVehicle por getPedOccupiedVehicle(hitPlayer) e verifique se é o mesmo element que veh[hitPlayer].
  13. Faça no lado server: createMarker, onMarkerHit, isPlayerInACL (função útil), triggerClientEvent. No client faça um evento para a função markerPanel para ser chamado pelo lado server.
  14. if getElementType(hitPlayer) == "player" then
  15. Você não vai precisar de isElementWithinMarker no evento "onMarkerHit". Use hitPlayer em vez de player e veh[hitPlayer] em vez de vehicle, também verifique se o hitPlayer é um elemento player com getElementType. Além disso, o vehicle não está sendo adicionado na table 'veh' na função Vehicle1.
  16. Não seria mais fácil adicionar a coluna usando a função exportada? https://wiki.multitheftauto.com/wiki/Resource:Dxscoreboard
  17. Não vai deixar lento. Tente: function getPlayer(player, cmd, id) if tonumber(id) then local mx, my, mz = getElementPosition(player) local player2 = getPlayerFromID ( tonumber(id) ) if not player2 or not isElement(player2) then return outputChatBox( "Player Offline", player ) end local trplayername = getPlayerName(player):gsub("#%x%x%x%x%x%x","") setElementPosition(player2, mx+rand, my+rand, mz + 1) for i, p in ipairs(getElementsByType("player")) do local xp, yp, zp = getElementPosition ( p ) if getDistanceBetweenPoints3D ( mx, my, mz, xp, yp, zp ) <= 50 then outputChatBox ( "#c9c9c9[#1a6cefFW-COMANDO#c9c9c9]O #1a6cef".. trplayername .."#c9c9c9 Puxou o #1a6cef".. tostring(id), p, 255, 0, 0, true ); end end end end addCommandHandler("tr", getPlayer)
  18. Você só pode estar usando o comando kick como eu falei, por isso tá sempre kickando mesmo com a função banPlayer. Teste o meu código e use /kickar que vai funcionar.
  19. kick é um comando do resource admin, vai executar ele quando usar o comando. Mude para outro nome ou remova o kick do admin. Tente isto: function kikarplayer ( source, commandName, kickedName, ... ) if isPlayerInACL(source, "Admin") or isPlayerInACL(source, "SuperModerator") or isPlayerInACL(source, "Console") then local r = {...} if not kickedName or #r == 0 then return outputChatBox ("#bf2e2e* Erro: /kick [nick] [motivo]", source, 255, 255, 255, true) end local kickerName = getPlayerName(source):gsub("#%x%x%x%x%x%x","") local kickedPlayer = getPlayerFromPartialName(kickedName) if not isElement(kickedPlayer) then return outputChatBox ("#bf2e2e* Erro: Player Invalido!", source, 255, 255, 255, true) end local reason = table.concat(r," ") outputChatBox ( "#c9c9c9[#1a6cefFW-INFORMA#c9c9c9]O #1a6cef"..kickerName.." #c9c9c9Kickou o Player #1a6cef" ..getPlayerName(kickedPlayer):gsub("#%x%x%x%x%x%x","").. "#c9c9c9 | Motivo #1a6cef" ..reason.. "#c9c9c9", getRootElement(), 255, 0, 0, true ) kickPlayer ( kickedPlayer, source, reason ) else outputChatBox ("#bf2e2e* Erro: Você Não tem Permissão!", source, 255, 255, 255, true) end end addCommandHandler("kickar", kikarplayer) function isPlayerInACL(player, acl) local accountName = getAccountName( getPlayerAccount(player) ) if accountName ~= "guest" and type( aclGetGroup(acl) ) == "userdata" then return isObjectInACLGroup( "user."..accountName, aclGetGroup(acl) ) end return false end function getPlayerFromPartialName(name) local name = name and name:gsub("#%x%x%x%x%x%x", ""):lower() or nil if name then for _, player in ipairs(getElementsByType("player")) do local name_ = getPlayerName(player):gsub("#%x%x%x%x%x%x", ""):lower() if name_:find(name, 1, true) then return player end end end end
  20. A linha 29 deve ficar assim: if ( isObjectInACLGroup ("user."..accName, aclGetGroup( GroupName ) ) ) then Sempre que for testar um script, deixei seu debug ativado com o comando /debugscript 3
  21. Mude source para player e para mostrar para quem foi puxado use player2. Se você quer que mostre essa mensagem para jogadores a uma determinada distância do player use: getDistanceBetweenPoints3D e faça um loop nos jogadores do server verificando a distância.
  22. O mapmanager está requisitando permissões Digite isto no console aclrequest allow mapmanager all E verifique se o mapmanager consta no grupo Moderator na acl.xml. @V1RU5
  23. Provavelmente é porque no freeroam a anim está sendo setada no lado server.
  24. Eu testei a função com várias formas de códigos hexadecimal e funcionou sem retornar nil; Talvez foi um erro causado no seu teste?
  25. Atualize o server para uma versão mais atual. @EduardoMega
×
×
  • Create New...