Jump to content

DNL291

Retired Staff
  • Posts

    3,875
  • Joined

  • Days Won

    67

Everything posted by DNL291

  1. Quanto ao que o Lord Henry mencionou, as tabela playerOrDist também é desnecessária no topo do código (assim como a accountName). Eu aconselho a largar esse costume, você vai alocar desnecessariamente na memória com aquela tabela global, e ela estará acessível em todo o resource podendo também dar algum conflito, e quando isso ocorre você fica perdido com a depuração, sem saber o que há de errado. EDIT: Se armazenar numa variável o primeiro jogador que chamou o Uber, e, fazer sempre uma verificação antes de chamar, não vai ter como 2 players chamarem ao mesmo tempo, vai dizer que alguém já chamou antes. @zMpyster
  2. Confuso o código, me parece um algoritmo não está eficiente e pode ser mais simplificado para o que você precisa. Aqui está as funções que você vai precisar para obter o jogador mais próximo: function obterUberMaisProximoDoCliente( thePlayer ) local tableUber = getPlayersInGroup( "UBER" ) if not tableUber then return end local px,py,pz = getElementPosition(thePlayer) local lastMinDis = 999999 local nearest = false local dist for i, uber in ipairs(tableUber) do local x,y,z = getElementPosition( uber ) local distance = getDistanceBetweenPoints3D( px,py,pz, x,y,z ) if distance < lastMinDis then lastMinDis = distance nearest = uber dist = distance end end return nearest, dist end -- https://wiki.multitheftauto.com/wiki/GetPlayersInGroup function getPlayersInGroup ( GroupName ) local aTable = {} assert ( tostring ( GroupName ) , "Bad Argument At Argument #1 Group Moust String" ) assert ( aclGetGroup ( tostring ( GroupName ) ) , "Bad Argument At Argument #1 Group not Found " ) for i , player_ in ipairs ( getElementsByType ( "player" ) ) do local TheAcc = getPlayerAccount ( player_ ) if not isGuestAccount ( TheAcc ) then if isObjectInACLGroup ( "user." ..getAccountName ( TheAcc ) , aclGetGroup ( tostring ( GroupName ) ) ) then table.insert ( aTable , player_ ) end end end return aTable end > local uberProximo, distancia = obterUberMaisProximoDoCliente( cliente )
  3. Funciona só para algumas. Acho que para animações com movimentos não funciona, mas para as que não fazem movimento deve funcionar, exemplo: setPedAnimation( localPlayer, "CARRY", "crry_prtial", 0, true, true, true ) setPedAnimation( localPlayer, "CARRY", "crry_prtial", 0, true, true, true )
  4. Se colocar sem definir a tabela obviamente buga. Trocou 'locais' por 'interiors' ? Segue o meu teste: local interiors = { [1] = { 3, 975.26, -8.64, 1001.14, 90 , "Business_StripClub1"}, } print( unpack(interiors[1]) ) -- resultado: 3 975.26 -8.64 1001.14 90 Business_StripClub1 Como você pode ver, mostra todos valores definidos na tabela. Lembre-se de usar o comando /debugscript 3 quando testar.
  5. Se é um problema no seu servidor (como você disse) então só pode ser com algum script. Segue a imagem (o link válido você pega clicando com o botão direito > Copiar endereço da imagem) :
  6. Eu faria sem obrigar o staff de colocar o motivo. De qualquer forma, Tente: function kikarplayer ( source, commandName, kickedName, ... ) if isPlayerInACL(source, "Admin") or isPlayerInACL(source, "SuperModerator") or isPlayerInACL(source, "Console") then local r = {...} if not kickedName or not r or #r == 0 then return outputChatBox ("#bf2e2e* Erro: /kick [nick] [motivo]", source, 255, 255, 255, true) end local reason = table.concat(r," ") local kickerName = getPlayerName(source):gsub("#%x%x%x%x%x%x","") local kickedPlayer = getPlayerFromPartialName(kickedName) if not isElement(kickedPlayer) then outputChatBox ("#bf2e2e* Erro: Player Invalido!", source, 255, 255, 255, true) end 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 ) banPlayer ( kickedPlayer, source, reason ) else outputChatBox ("#bf2e2e* Erro: Você Não tem Permissão!", source, 255, 255, 255, true) end end addCommandHandler("kick", 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 EDIT: deve ser a função kickPlayer; banPlayer vai banir o jogador.
  7. local locais = { { 3, 1430.2734375, 1503.0810546875, 10.878900527954, 851, "Test" }, } local interior, posX, posY, posZ, Dimension, string = unpack( locais[1] )
  8. E também este: Que um usuário havia criado pouco tempo antes do seu tópico.
  9. @DeanSouza Aqui está o próprio código-fonte: https://github.com/multitheftauto/mtasa-blue/blob/e11685cab4beb7958ab202261f9c9d9b4ce71e58/Server/mods/deathmatch/logic/CAccountPassword.cpp
  10. Limpe a pasta de cache dos resources em: MTA San Andreas 1.5\mods\deathmatch\resources Baixe o MTA em mtasa.com e reinstale. Certifique-se que o firewall ou nenhum programa como antivírus não esteja interferindo em nada. Execute o MTA como administrador.
  11. Configurando a conexão database. Caso não tenha a mínima ideia do que é database, recomendo pesquisar pelo fórum por tutoriais. Também, saiba que se o seu inventário for vazado nós não daremos suporte.
  12. You can't force the client settings, there's no function that does this. You'll need to edit it so it looks like the old chatbox or recreate the whole chat. getChatboxLayout returns the client chatbox settings but I believe this isn't what you want. - Topic moved to the Scripting section. @Kutlu35
  13. It was in Scripting, now it's here because I moved.
  14. Em vez do setElementInterior + setElementPosition, você poder definir o teleporte e interior já na sintaxe: setElementInterior( theElement, interior, x, y, z ) Quando à marker, use o evento onMarkerHit (clientside onClientMarkerHit). Edit: Se for por comando: addCommandHandler; isElementWithinMarker
  15. https://community.multitheftauto.com/index.php?p=resources&s=details&id=4149
  16. É recomendada a reinstalação do SO numa arquitetura 64 bits, referência: @lipeal O mesmo vale para o seu caso, se o sistema não for 64 bits.
  17. Testei esse código aqui e o bug mencionado não ocorre. Tentou testar com esse resource desligado?
  18. Baixe o MTA em mtasa.com e faça uma reinstalação, também de preferência instale o GTA:SA no diretório padrão: C:\Program Files (x86)
  19. Não tem como desativar isso, a única forma de tirar isso é criando um downloader próprio.
  20. Try: for i=1, #quests do if not isThisQuestSelected(client, quests[i]) then table.insert(selectedQuests[client], quests[i]) end end
  21. Baixe e execute o MTA Diag. Após o final da verificação cole aqui o link Pastebin do log gerado.
  22. Provavelmente esse é um erro com o servidor. Tente remover o arquivo a ser baixado da sua pasta MTA San Andreas 1.5\mods\deathmatch\resources e veja se funciona.
  23. De nada. Se precisar de ajuda com o dx-text só postar aqui.
  24. Baixe a versão estável do MTA em https://mtasa.com/ caso não esteja usando ela. Se nada mudar, atualize seus drivers e certifique-se que suas configurações estão corretas.
  25. O código tá certo, testei aqui e funcionou. Pode ser que você colocou no lado cliente ou esse erro é com outro código. Aqui está meu código testado: -------------------------------------------------------------------------------------------- Comando_Revistar = "vendar" Comando_Revistar2 = "comprar" local venda = {} function quitPlayer( ) if venda[source] then venda[source] = nil end end addEventHandler ( "onPlayerQuit", root, quitPlayer ) function comprarv (source, cmd) if venda[source] then outputChatBox ( "* Erro: So Pode Comprar Uma Venda!", source, 230, 30, 30 ) else if getPlayerMoney(source) >= 1000 then -- verifique o dinheiro já que se trata de uma compra outputChatBox ( "* Venda Comprada /vendar [Jogador]", source, 0, 230, 0 ) venda[source] = true takePlayerMoney( source, 1000 ) else outputChatBox( "["..cmd.."] Dinheiro insuficiente!", source, 230, 30, 30 ) end end end addCommandHandler ( Comando_Revistar2, comprarv ) function cmdvendar ( source, cmd, player ) if venda[source] then if not player then return outputChatBox( "Sintaxe: /"..cmd.." <jogador>", source,230, 30, 30 ) end local Jogador = getPlayerFromPartialName ( player ) if isElement(Jogador) then local cx,cy,cz = getElementPosition(Jogador) local x,y,z = getElementPosition(source) local dist = getDistanceBetweenPoints3D(x,y,z,cx,cy,cz) if dist <= 5 then outputChatBox ( "Você Vendou Um Jogador [-1 Venda]", source, 0, 230, 0 ) outputChatBox ( "Você Foi Vendado", Jogador, 230, 230, 230 ) fadeCamera( Jogador, false, 1 ) venda[source] = nil else outputChatBox("#bebebeChegue mais perto do jogador!", source, 255, 255, 255, true) end else outputChatBox( "["..cmd.."] Jogador não encontrado!", source, 230, 30, 30 ) end else outputChatBox( "["..cmd.."] Você não possui venda!", source, 230, 30, 30 ) end end addCommandHandler ( Comando_Revistar, cmdvendar ) 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
×
×
  • Create New...