andreisrww

Members
  • Content Count

    177
  • Joined

  • Last visited

  • Days Won

    1

andreisrww last won the day on February 22 2019

andreisrww had the most liked content!

Community Reputation

87 Popular

About andreisrww

  • Rank
    Mark
  • Birthday 23/12/1999

Details

  • Location
    São Paulo
  • Occupation
    Developer

Recent Profile Visitors

1,727 profile views
  1. Isso não seria object preview, esse nome é de um resource e você pode encontrar como usá-lo acessando este link.
  2. Rapaz, é mais fácil você enviar o código para mostrar-nos esses tais elementos.
  3. Nenhuma função deve ser evitada de usar, muito pelo contrário - use-as. Todas as funções irão depender da sua lógica de programação, você não pode realizar uma tarefa, na maioria das vezes, sem uma condição. Realizar verificações antes de uma execução de código pode evitar vários bugs e falhas de segurança. Um código limpo e legível, com funções e variáveis nomeadas corretamente, estruturação, organização de pastas e nomeação de arquivos, tudo isso deve conter dentro de um projeto. Não é simplesmente sair colocando qualquer nome que venha à cabeça. Pensar e raciocinar antes de escrever um código é extremamente importante na área da programação. Também, para não ocorrer bugs ou falha de segurança, tente criar possibilidades de "como isso poderia bugar?" ou "como alguém poderia burlar o sistema?". Seja criativo e veja o funcionamento do seu sistema de diferentes perspectivas, isso é muito importante. Sobre desempenho, evite ao máximo repetir linhas de código para executar uma tarefa. Crie funções para isso! Dessa forma, o seu código terá rotinas que, sempre que quiser uma parte do código, ela estará dentro de uma função, sendo assim você irá criar um ciclo e não uma bagunça. Por exemplo, ao invés de criar vários comandos para executar a mesma tarefa (exemplo abaixo): Por que não criar apenas um comando para executar a função? (exemplo abaixo) Tudo irá depender da sua criatividade, perspectiva, manutenção do código, organização e condições. Recomendo você assistir esta playlist para clarear mais as idéias e escrever um código bom e legível.
  4. Você mesmo pode criar uma função sleep(). Basta usar coroutines.
  5. Nesse caso, usando o evento onVehicleEnter, cancelEvent NÃO irá funcionar, pois o evento é ativado apenas quando o jogador entra no veículo. Seguindo a lógica, o que deve ser feito, nesse caso, é usar removePedFromVehicle. Caso você queira fazer cancelando o evento, troque o evento por onVehicleStartEnter. Observação: não recomendo usar o evento onVehicleStartEnter nessa situação, pois o trigger irá ativar e o jogador pode simplesmente cancelar a entrada, causando bugs no sistema.
  6. Я верю, что ты не можешь сделать это так просто. Попробуйте пройти по ссылке ниже. Создание внешнего веб-сервера для загрузки файлов может быть решением. Ссылка: Щелкните здесь
  7. Você pode fazer isso. Crie uma tabela com o ID do veículo como index e os valores da handling como value. A principal função e o principal evento que você deve usar: setVehicleHandling onVehicleEnter
  8. Apenas uma correção no título: [título] e obter a mensagem. Desculpe-me pelo erro, mas para concluir, é necessário ter a mensagem/feedback do resource. O puzzle é simples, não quis fazer algo complexo (ainda).
  9. Olá. Como este subfórum está um pouco parado, resolvi criar um mini-puzzle para que possamos, ao menos, movimentar um pouquinho. O desafio é o seguinte: Há um resource para você baixar e tentar iniciá-lo em seu servidor de testes (não faça isso em servidor com jogadores, pois mostrará mensagens). Dentro desse resource, há 3 arquivos, sendo eles: meta.xml __checker.luac puzzle.Lua O __checker.luac está compilado para manter o puzzle em segredo, não se preocupe. Enfim, o que você deve fazer é tentar iniciar o resource. Quando você finalmente conseguir, aparecerá um feedback com algumas mensagens e um código. Siga estritamente o que é para ser feito. Todos que completarem e seguirem as mensagens do feedback, receberá um Thanks. Link do resource: https://drive.google.com/open?id=14m2Kdfxz8YTCs2THxoh4aTJtb-vK7JQW Obs.: só será validado se o conteúdo da mensagem for exatamente o mesmo do feedback.
  10. Do que você tá falando, @#RooTs? Olha bem o código desse resource que foi postado. Acha mesmo que os três programadores experientes que você citou, iriam fazer algo daquele jeito? 😂
  11. local screenW, screenH = guiGetScreenSize() function draw() dxDrawImage((screenW - 400) / 2, (screenH - 200) / 2, 100, 100, "img/arrow.png", 0, 0, 0, tocolor(255, 255, 255, 255), false) dxDrawImage((screenW + 200) / 2, (screenH - 200) / 2, 100, 100, "img/arrow.png", 180, 0, 0, tocolor(255, 255, 255, 255), false) dxDrawImage((screenW - 100) / 2, (screenH + 200) / 2, 100, 100, "img/scissors.png", 0, 0, 0, tocolor(255, 255, 255, 255), false) end function barbershop(status) if not type(status) == "boolean" then return false end if status == true then addEventHandler("onClientRender", root, draw) elseif status == false then removeEventHandler("onClientRender", root, draw) end end addEvent( "showPanel", true ) addEventHandler( "showPanel", localPlayer, barbershop) Não crie variáveis para funções de renderização (dxDrawImage, dxDrawRectangle, dxDrawText etc). Elas devem ficar dentro de um bloco de função, sendo assim, basta, depois, adicionar ou remover o evento onClientRender nesta função, que no caso acima é a draw.
  12. Tente isso: -- client-side local controlTable = {"fire", "next_weapon", "previous_weapon", "forwards", "backwards", "left", "right", "zoom_in", "zoom_out", "change_camera", "jump", "sprint", "look_behind", "crouch", "action", "walk", "aim_weapon", "conversation_yes", "conversation_no", "group_control_forwards", "group_control_back", "enter_exit", "vehicle_fire", "vehicle_secondary_fire", "vehicle_left", "vehicle_right", "steer_forward", "steer_back", "accelerate", "brake_reverse", "radio_next", "radio_previous", "radio_user_track_skip", "horn", "sub_mission", "handbrake", "vehicle_look_left", "vehicle_look_right", "vehicle_look_behind", "vehicle_mouse_look", "special_control_left", "special_control_right", "special_control_down", "special_control_up"} function getBoundControls(key) -- Função útil da Wiki (https://wiki.multitheftauto.com/wiki/GetBoundControls) local controls = {} for _, control in ipairs(controlTable) do for k in pairs(getBoundKeys(control)) do if (k == key) then controls[control] = true end end end return controls end function kick() triggerServerEvent("anticheat->kick", resourceRoot) end addEventHandler("onClientResourceStart", resourceRoot, function() if getBoundControls("space")["crouch"] and getBoundControls("space")["fire"] then kick() end end ) addEventHandler("onClientPlayerWeaponFire", root, function() if source == localPlayer then if getBoundControls("space")["crouch"] and getBoundControls("space")["fire"] then kick() end end end ) -- server-side addEvent("anticheat->kick", true) addEventHandler("anticheat->kick", resourceRoot, function() kickPlayer(client, "Console", "Retire suas binds.") end )