Jump to content

androksi

Other Languages Moderators
  • Posts

    515
  • Joined

  • Last visited

  • Days Won

    32

androksi last won the day on December 20 2021

androksi had the most liked content!

About androksi

  • Birthday 23/12/1999

Member Title

  • Portuguese Section Moderator

Details

  • Gang
    CHASING STAR
  • Location
    Brasil
  • Occupation
    Scripter
  • Interests
    Programming, art, nature & music

Recent Profile Visitors

5,534 profile views

androksi's Achievements

Playa Partner

Playa Partner (27/54)

279

Reputation

1

Community Answers

  1. E aí, @SciptNovato! Sim, tem como você gerar uma lista pronta com o nome de todos os recursos do seu servidor. Mas, para uma melhor organização, considere usar um nome ou sigla antes, fica muito mais fácil e você tem um controle maior. Daí basta criar um recurso para ligar todos de uma só vez. Com considere usar um nome ou sigla antes eu quis dizer isto, por exemplo: sn_vehicles. Sempre separando por underline, aquele traço inferior.
  2. E aí, @XablauzinFT. Tudo beleza? Você pode usar a função setWeaponProperty para obter esse resultado. Há algumas propriedades, você irá utilizar as seguintes: anim_loop_start anim_loop_stop ...para diminuir o tempo entre um tiro e outro. Se não me engano, essas são as únicas propriedades que você necessita. P.S: irá mudar globalmente, ou seja, para todo o servidor, todos os players. Há uma forma de realizar isso individualmente, mas você teria de fazer bastante modificações.
  3. Sobre o código acima, prefira verificar se o elemento que acertou o marcador foi realmente um player, caso contrário irá dar um aviso no debug. Para isso, use a função getElementType. Para fins de boas práticas de programação, tente sempre colocar bons nomes em variáveis, parâmetros de funções e outros — thePlayer não faz sentido ali, pois o que irá tocar será um elemento, seja ele um player, veículo, objeto, tanto faz. Altere para hitElement.
  4. E aí, @SciptNovato. Belezinha? Quando o código é server-side, o elemento do player precisa estar vindo de algum lugar para o servidor reconhecer. Aquele todo seu primeiro código (para referência, veja abaixo) não faz sentido nesse caso — playerSource, targetPlayer e thePlayer não existem ali. Eles precisam estar dentro de alguma função que o player faça sentido. Além disso, prefira usar variáveis locais em vez de globais, irá poupar recursos do seu servidor e irá manter o escopo global do seu servidor limpo. Jogador1 = getPlayerName(playerSource) Jogador2 = getPlayerName(targetPlayer) Jogador3 = getPlayerName(thePlayer) IP1 = getPlayerIP(playerSource) IP2 = getPlayerIP(targetPlayer) IP3 = getPlayerIP(thePlayer) Serial1 = getPlayerSerial(playerSource) Serial2 = getPlayerSerial(targetPlayer) Serial3 = getPlayerSerial(thePlayer) ID1 = getElementData(playerSource, "ID") ID2 = getElementData(targetPlayer, "ID") ID3 = getElementData(playerSource, "ID") players = getElementsByType("player")
  5. E aí, @Guilherme Mendes! Primeiramente, remova aquele else e return false. Segundamente, o i é referência de cada entrada da tabela de veículos, enquanto o v é o elemento do veículo. Um exemplo mais prático: -- A função getElementsByType retorna uma tabela ordenada de elementos. Ela é semelhante a esta: local vehicles = { [1] = vehicle, [2] = vehicle, [3] = vehicle } -- E assim por diante, dependendo de quantos veículos há no servidor. -- Então, quando fazemos um for loop, a primeira coisa que ele irá pegar é o índice (index), enquanto a segunda é o seu valor. for index, value in pairs(vehicles) do -- Index: 1, 2, 3... -- Value: cada elemento 'vehicle' mostrado naquela tabela de exemplo. -- Como boas práticas de programação, é bom deixar claro o que cada coisa recebe. Então em vez de 'value', eu colocaria 'vehicle'. -- Já que é um carro. end
  6. @carlinloko — para cada dano que o player tomar, você pode enviar para o servidor, sem problemas algum. Isso não irá acarretar problemas de desempenho ou qualquer coisa relacionada. Poderia ter 10 players atirando em outro, mas aquele que atirar por último pra matar mesmo, e quando processar essas informações, é que vai de fato contar quem o matou. Pode não ter sido essa sua dúvida. Me diga se eu estiver errado.
  7. E aí, @Muskzeera, de boa? Você precisa obter as informações sobre o dano dado de acordo com quem tá atirando, e não recebendo os tiros. Para isso, você deve usar o evento onClientPlayerDamage, obter os dados que vêm dos parâmetros da função e enviá-los para o servidor, através da função triggerServerEvent.
  8. E aí, @L0KZERATV! O seu tópico está agora trancado para futuras respostas, pois ele contém poucas informações sobre o que o comando citado irá fazer e causar no PC do usuário que usá-lo. Por favor, numa próxima vez, adicione detalhes sobre a execução de um comando.
  9. E aí, @dextzone! Para fazer isso, você precisa levar em consideração o que a pessoa que atira está vendo. Neste caso, é feito o uso do evento onClientPlayerDamage. Pegando as informações que vêm desse evento, basta mandá-las para o servidor, através de um triggerServerEvent. Só tome cuidado pois você terá de cancelar esse evento, usando cancelEvent. Isso significa que todos os jogadores ficarão invencíveis, mas ainda ocorrerá o tratamento dos dados lá no servidor. Sendo assim, haverá uma perfeita sincronia. Qualquer dúvida, basta deixá-la aqui!
  10. E aí, @Kelvenbrryan! Corrigi o código pra você. local alpha = 255 bindKey ( "aim_weapon", "both", function ( _, state ) if getPedWeaponSlot ( localPlayer ) == 6 then if ( state == "down" ) then alpha = 0 elseif ( state == "up" ) then alpha = 255 end for _, v in ipairs ( getElementsByType ( "object", root, true ) ) do if isElementAttachedToBone ( v ) then local id = getElementModel ( v ) if ( id == 2584 ) then setElementAlpha ( v, alpha ) setElementDimension(v, alpha == 0 and 9999 or getElementDimension(localPlayer)) end end end end end Peço que por favor, nas próximas vezes que postar algo, use a ferramenta Code (<>) e indente o seu código.
  11. E aí, @ajobr! Não funciona pois a função que você usou para criar o veículo (createVehicle) não retorna uma instância. Você precisa usar desta forma: local vehicle = Vehicle(411, Vector3(0, 0, 3)) vehicle:setColor(255, 0, 0) Agora, usando a classe Vehicle, você está apto a usar todos métodos disponíveis. Test: cat.zip
  12. E aí, @BruXo! Antes tarde do que nunca, você pode realizar essa checagem usando a função engineGetVisibleTextureNames. Ela retornará uma tabela. Sendo assim, se o tamanho dela for igual a zero, quer dizer que o player usou aquela opção. Exemplo: local screenWidth, screenHeight = guiGetScreenSize() addEventHandler("onClientRender", root, function() if #engineGetVisibleTextureNames() == 0 then dxDrawRectangle(0, 0, screenWidth, screenHeight, tocolor(0, 0, 0, 255)) dxDrawText("Desabilite a função de remover os gráficos.", 0, 0, screenWidth, screenHeight, tocolor(255, 255, 255, 240), 1.5, "unifont", "center", "center") end end) Assim que ele ativar aquela opção, a tela ficará preta e mostrando aquela mensagem encontrada no código acima.
  13. E aí, @koshe! No terceiro parâmetro da função guiGridListAddColumn você define a largura da coluna. Pode ser um valor real de 0 a 1. Tente diminuir o do ID para 0.15, o nome do item para 0.48, preço e quantidade para 0.4. Foi apenas um chute. Vá configurando e testando novos valores.
  14. E aí, @KiritoAguiar! Fiz um algoritmo pra você, e também já deixarei a lista, em formato de tabela, com todas as localizações. Basicamente, o que o meu algoritmo vai fazer, é passar por cada parte do mapa e, conforme o nome da zona muda, ele salva na tabela. No final, ele gera um arquivo. Se quiser ter ainda mais precisão nos nomes, diminua a velocidade. Você pode fazer isso alterando o valor da variável speed. Quanto menor o valor, demorará mais. Só um aviso: durante o processo, ele requer um alto uso de processamento. Algoritmo: Tabela gerada:
  15. O tutorial de hoje é sobre tabelas! Tabelas irão facilitar a sua vida na hora de programar. Além de economizar dezenas de linhas de código, ele ficará muito mais fácil de ser lido por outras pessoas, e também por você mesmo, depois de um certo tempo sem ter contato com o código. Não só essas coisas, como irá te abrir um mar de possibilidades. Clique no texto abaixo para ir diretamente ao site onde o tutorial está. Optei por escrevê-lo no Gist (do GitHub), como uma forma de organizar um pouco melhor. Ir para o tutorial
×
×
  • Create New...