Jump to content

DNL291

Retired Staff
  • Posts

    3,875
  • Joined

  • Days Won

    67

Everything posted by DNL291

  1. Achei bem otimizado pra ser sincero. Como um scripter Lua há alguns anos, eu consigo às vezes julgar o quanto de conhecimento a pessoa tem em Lua olhando para um código dela, e se eu fizesse esse script seu, faria praticamente da mesma forma. Sobre o "Edit", foi uma edição que fiz no meu comentário depois. Uma pequena correção no seu código: nos setTimer's você passa o player como argumento, mas esqueceu de usá-lo na função.
  2. Você podia ter explicado o que exatamente precisa de otimização, pelo que eu vi, não tem nada que você deva se preocupar em relação à performance. Talvez você esteja falando sobre a idéia do seu código? Eu achei meio que sem necessidade o comando /re pra responder sendo que poderia ser usado /pm independente de ser uma resposta de uma mp. Mas talvez seja por não precisar do jogador e menssagem que é do /pm. Eu pessoalmente faria um painel pra isso, embora o que possa ter te motivado seja ter uma experiência nova criando um código seu. Sobre o timer eu também achei um pouco mais longo. Digamos que o jogador responda apenas com 'ok', então certamente ele teria que esperar um pouco pra responder. Acho até que o código tá bem otimizado dentro do possível, tirando que você podia ter usado uma só tabela pros timers que o Lord Henry já mencionou. Edit: percebi que você usou resourceRoot pra passar no triggerClientEvent, o que mostra que você se preocupou em não definir sourceElement como root. E também as variáveis locais.
  3. You could try something like this: local playerMessages = {} addEventHandler( "onClientResourceStart", resourceRoot, function() addEventHandler( "onClientRender",root, Message ) end ) addEventHandler( "onClientElementDataChange", root, function (dataName) if (dataName == "sendPlayerMessage") then if localPlayer == source then table.insert( playerMessages, getElementData( source, "sendPlayerMessage" ) ) end end end ) function sendMessageToPlayer( p, msg ) if isElement(p) and type(msg) == "string" then return setElementData( p, "sendPlayerMessage", tostring(msg), false ) end end And on the "Message" function you'll handle the table playerMessages to display the message on the screen. According to my code, you can use sendMessageToPlayer( target, msg ) to send the message.
  4. DNL291

    Help with loop

    You must know why a number is being passed to it. Search for all setElementData's with the key "faction" to try find the problem.
  5. DNL291

    Help with loop

    getElementData isn't returning a table, but a number instead.
  6. DNL291

    geoip

    Show the code you're using.
  7. Use: onClientMinimize getRealTime
  8. Sobre o botão em DX que você comentou, te recomendo ler estes 2 tópicos e tentar entender as explicações e o código: https://forum.multitheftauto.com/topic/79017-resolvidoajuda-com-dx/ - Tem uma explicação bem simples de entender sobre botão-DX https://forum.multitheftauto.com/topic/92734-abrir-outro-painel-com-o-botão-dx/ - Um código mais aprofundado que você usa a tecla F2 pra abrir um DX e se um certo local desse DX for clicado, vai abrir outro DX
  9. Sobre a pasta [ModsEmDesenvolvimento] que você nomeou para o resource, talvez você já tenha entendido como funciona, mas explicando o uso dos colchetes: Isso serve como uma pasta para deixar tudo melhor organizado, por exemplo, você quer separar scripts em desenvolvimento no seu servidor, então você cria uma pasta [desenvolvimento] na pasta de resources, e dentro dela, todos seus resources ao qual se aplica a essa pasta. Assim como já vem as pastas padrão do MTA gamemodes, managers, gameplay, etc. Então no comando resource src dentro do mtaserver.conf, você carrega resource por resource. Parâmetros: startup - 1 : ligado; 0 : desligado protected - 1 : não será possível parar o resource; 0 : padrão Com relação ao código Lua, você está separando a parte do comando e da função em lados diferentes, te aconselho a ir se aprofundando em tutoriais sobre server e client, não sei se você já tem um conceito básico sobre client em multiplayer (isso facilitaria mais pra você aprender mais rapidamente), mas enfim, qualquer dúvida é só perguntar aqui. Sendo assim, o seu código que é do lado server, deve ser colocado todo junto assim como o Lord já explicou.
  10. Nome da função createMarker tá errado. Você não está criando a tabela 'veh' antes de indexá-la. E em algumas linhas do código, você escreveu 'sorce' em vez de source. Lembre-se sempre de usar /debugscript 3 quando for testar um script para depurar o código.
  11. F1 é o painel do freeroam, certo? Basta desativar o recurso freeroam do server.
  12. Esse é o terceiro tópico com o mesmo assunto que você já fez. Sempre que criar algum post em português, crie no sub-fórum de outras linguagens Portuguese / Português. E assuntos relacionados a scripting em Programação em Lua. Além disso, por favor use a formatação para código Lua clicando em < >
  13. Você já criou outro tópico igual. Evite criar tópicos semelhantes, por favor. Em vez disso, faça o post no seu outro tópico.
  14. Você já tem algum script de dominar territórios? Caso não tenha, você pode baixar em community.multitheftauto.com. Aí é só editar o script da forma que for necessário, e você pode pedir ajuda aqui no que precisar. Edit: Tem esse resource aqui por exemplo.
  15. Baixei um mod do CJ branco pra testar com o shader, e fiz o código em Lua que está funcionando, aqui está: local tTextures = {} local pShaders = {} addEventHandler( "onClientResourceStart", resourceRoot, function() tTextures["cj_ped_torso"] = dxCreateTexture('cj_textures/torso.png') tTextures["cj_ped_legs"] = dxCreateTexture('cj_textures/legs.png') tTextures["cj_ped_head"] = dxCreateTexture('cj_textures/face.png') tTextures["cj_ped_feet"] = dxCreateTexture('cj_textures/foot.png') end ) addCommandHandler( "branco", function() applyShader( tTextures, localPlayer ) end ) addCommandHandler( "normal", function() for _, t in pairs(pShaders) do engineRemoveShaderFromWorldTexture( t[1], t[2], localPlayer ) end end ) function applyShader( t, player ) if type(t) == "table" and isElement(player) then for tex_name, tex_element in pairs(t) do local s = dxCreateShader('tex_replace.fx', 0, 0, true, 'ped') table.insert( pShaders, {s, tex_name} ) dxSetShaderValue(s, 'gTexture', tex_element) engineApplyShaderToWorldTexture(s, tex_name, player) end -- addPedClothes(player, "player_face", "head", 1) addPedClothes(player, "player_torso", "torso", 0) addPedClothes(player, "player_legs", "legs", 2) addPedClothes(player, "foot", "feet", 3) end end As texturas que usei foram do CJ sem roupa. Pra adicionar roupas vai precisar de um trabalho extra, como de modificar o painel do freeroam por exemplo pra carregar a textura correspondente à roupa selecionada. Eu deixei esses 2 comandos que é o de ativar o shader do CJ branco e o de voltar ao normal. Sobre a modificação de uma roupa/accessório, é só fazer da mesma forma que fiz acima, este exemplo substitui uma roupa especifica do CJ: addCommandHandler( "roupa", function() local s = dxCreateShader('tex_replace.fx', 0, 0, true, 'ped') ttt = dxCreateTexture('cj_textures/suit2grn.png') dxSetShaderValue(s, 'gTexture', ttt) engineApplyShaderToWorldTexture(s, "cj_ped_torso", localPlayer) addPedClothes(localPlayer, "suit2grn", "suit2", 0) end ) Pelo que percebi testando, o CJ tem 4 partes diferentes que são representadas por estas texturas: 'cj_ped_torso'; 'cj_ped_legs'; 'cj_ped_head'; 'cj_ped_feet' Significa que independente da textura, você sempre aplica o shader numa dessas regiões que será o local do ped necessário para o shader funcionar.
  16. No tópico que você citou você vai precisar ter um entendimento básico pra conseguir fazer o resource. O arquivo de shader precisa estar funcionando e ligado tanto ao meta.xml quanto ao seu script. Sobre o primeiro código do tópico mencionado, tem a tabela com as texturas que serão adicionadas com dxCreateTexture e o nome das texturas nas chaves. O shader é aplicado usando a função addClothes. Você chegou a tentar fazer o resource? Sobre mudar a cor do CJ, você tem os arquivos das texturas?
  17. De onde você pegou? Você vai precisar do código .fx do shader pra funcionar. Se você quer apenas substituir as texturas do cj, você pode usar as funções do exemplo nesta página da Wiki: https://wiki.multitheftauto.com/wiki/Clothing_Component_IDs
  18. Você pode deletar esses arquivos com a função fileDelete. Mas sempre que entrarem no servidor, esse arquivo será baixado. A menos que você faça isso pra poucos arquivos, isso não é muito recomendável.
  19. No Console você não vai receber erros do client, ative o debug (/debugscript 3). Na verdade tem erros nas funções Veiculo e Jogador.
  20. Esse "funcionar" significa mostrar a mensagem no chat, certo? Porque essa é a única coisa que vai acontecer quando clicar. Seu código tem alguns problemas: 'source' em outputChatBox será nulo, e você está usando no argumento que é a cor Use os parâmetros button e state em "onClientClick"; e a variável pvip e a função isMainMenuActive pro painel-dx funcionar corretamente e de uma forma mais otimizada. Você está usando else na linha 43, que poderia ser elseif pvip == true then Use as variáveis de guiGetScreenSize fora do "onClientRender"; Você também colocou a variável screenH e screenW invertidas (linha 17)
  21. Você pode aumentar pelas configurações no Menu do MTA.
  22. O comando de convidar talvez não funcione porque você não tá usando o script de ID (game_id2). A tag eu não sei o por que não funciona. Use /debugscript 3 e veja se mostra algum erro no código.
  23. addEventHandler("onPlayerChat", root, function(msg, msgType) msg = msg:lower() if msg:find( "raidcall" ) then exports["notices"]:addNotification(source,"[BOT]Igor diz : Você Pode Entrar Para Alguma Gang/Corp Em Nosso Raidcall",'info'); -- Ignorem isso é de um sistema de notificação outputChatBox("#ff0000[BOT]#bebebeIgor "..getPlayerName(source).." #bebebeNosso Raidcall é #ff0000 ", root,255,255,255,true) end end)
×
×
  • Create New...