Jump to content

DNL291

Retired Staff
  • Posts

    3,875
  • Joined

  • Days Won

    67

Everything posted by DNL291

  1. Adiciona o timer numa tabela com o jogador no índice/chave e verifica no inicio do comando se ele já existe. Já existem vários tópicos pelo fórum com esse mesmo tipo de assunto, só dar uma garimpada pelo fórum.
  2. Sim. Revistar as armas de que forma? Pra verficiar as armas use a função getPedWeapon, no 2º argumento você especifica o slot que é 0-12.
  3. Aqui, no comando /uber: local solicitantes = {} function pedir (splayer) local money = getPlayerMoney (splayer) if (money >= 30) and solicitantes[splayer] ~= true then local players = getElementsByType ("player") blip[splayer] = createBlipAttachedTo (splayer, 62) solicitantes[splayer] = true setElementVisibleTo (blip[splayer], root, false) for _, driver in ipairs (players) do local account = getAccountName (getPlayerAccount(driver)) if isObjectInACLGroup ("user."..account, aclGetGroup ("UBER")) then local passageiro = getPlayerName (splayer) local lugar = getElementZoneName (splayer) setElementVisibleTo (blip[splayer], driver, true) outputChatBox (" ", driver, 255, 255, 255, true) outputChatBox ("#838B83===============================================", driver, 255, 255, 255, true) outputChatBox (" ", driver, 255, 255, 255, true) outputChatBox ("✘ #838B83Uber Brasil #FFFFFF✘ - O cidadão "..passageiro.." #FFFFFFestá solicitando um Uber em "..lugar.."", driver, 255, 255, 255, true) outputChatBox (" ", driver, 255, 255, 255, true) outputChatBox ("#838B83===============================================", driver, 255, 255, 255, true) outputChatBox (" ", driver, 255, 255, 255, true) end end outputChatBox (" ", splayer, 255, 255, 255, true) outputChatBox ("✘ #838B83Uber Brasil #FFFFFF✘ - Você solicitou um Uber, aguarde até alguém chegar", splayer, 255, 255, 255, true) outputChatBox (" ", splayer, 255, 255, 255, true) elseif solicitantes[splayer] then outputChatBox( "Erro: Você já solicitou o Uber", splayer ) else outputChatBox ("✘ #838B83Uber Brasil #FFFFFF✘ - #ff0000Você não tem dinheiro suficiente para pedir um Uber #000000(#00FF00 R$30 #000000)", splayer, 255, 255, 255, true) end end addCommandHandler ("uber", pedir) No /aceitar: function aceitar (thePlayer, commandName, playerName) local account = getAccountName (getPlayerAccount(thePlayer)) if isObjectInACLGroup ("user."..account, aclGetGroup ("UBER")) then if not playerName then return outputChatBox( "Erro: digite o nome do passageiro!", thePlayer, 230, 0, 0 ) end local theClient = getPlayerFromPartialName (playerName) if theClient then local money = getPlayerMoney (theClient) if (money < 30) then return outputChatBox( "Erro: esse passageiro não tem a quantia necessária!", thePlayer, 230, 0, 0 ) end if blip[theClient] and isElement (blip[theClient]) then destroyElement (blip[theClient]) blip[theClient] = nil end if solicitantes[theClient] then solicitantes[theClient] = nil end takePlayerMoney (theClient, 30) givePlayerMoney (thePlayer, 30) else outputChatBox( "Erro: jogador não encontrado!", thePlayer, 230, 0, 0 ) end end end addCommandHandler ("aceitar", aceitar) Para remover é fácil: if solicitantes[player] then solicitantes[player] = nil end Faça isso no onPlayerQuit também, só substituir 'player' com 'source'.
  4. Comigo não apareceu nenhum símbolo quando copiei. Então o problema deve ser outro. Como está o script no meta.xml? Deve estar no lado server, se tiver no lado client não será executado. Teste este código aqui e diga quais mensagens são mostradas no chat: local maleSkins = { [0] = true, [1] = true, [2] = true, [7] = true, [14] = true, [15] = true, [16] = true }; local femaleSkins = { [9] = true, [10] = true, [11] = true, [12] = true, [13] = true, [31] = true, [38] = true }; addEventHandler ( "onPlayerLogin", root, function ( _, account ) outputChatBox("'onPlayerLogin' chamado!") local id = getElementModel ( source ); outputChatBox("Seu Skin é: "..tostring(id)) if ( maleSkins[id] ) then outputChatBox("Skin masculino") setPedWalkingStyle ( source, 10 ); -- aqui o estilo de andar se for skin masculina. else outputChatBox("Outro") setPedWalkingStyle ( source, 11 ); -- aqui o estilo de andar se for skin feminina. end end ) Edit: @dromer2k
  5. Funciona do mesmo jeito que a tabela blip do seu script. Armazena no player e no valor coloca true, quando o jogador não tiver mais como solicitante, remove da tabela.
  6. Sim, posições relativas, tinha até esquecido de mencionar elas. E as labels vai dar trabalho mesmo, a alternativa seria utilizar guiCreateFont e calcular o tamanho certo para a resolução, mas com GUI pra ser sincero nunca testei.
  7. @OverKILL Nesse caso teria que ajustar o painel proporcionalmente com a resolução, ou seja, ajustar as 4 posições: X, Y, Largura e Altura. Edit: E pra fazer isso pode ser muito trabalhoso, especialmente se for em um painel com vários childs, você terá que fazer de modo que os 'childs' fiquem com a mesma proporção em relação à janela principal.
  8. Quando ele pedir adiciona ele numa tabela, uma tabela global com todos os solicitantes. E no começo do comando /uber você faz a verificação pra saber se o jogador já está na tabela. Você também pode usar setElementData no lugar de tabela.
  9. Cole aqui o seu código. Sei que é o mesmo código que o que foi postado mas precisamos saber se não tem nenhum símbolo extra ou faltando. Comigo o Ctrl + C e Ctrl + V com Lua costuma acontecer isso aqui no fórum. Acontece usando o Chrome, testei no IE e não deu esse problema.
  10. local steeringHelpEnabled = true steerhelp = guiCreateCheckBox(145,470,100,15,"Steering Assist",true,false,window) function deneme(button) if button == "left" then if source == bOpenHood then local door = 0 local move_door = 1 triggerServerEvent("moveDoorVeh", getLocalPlayer(), door, move_door) steeringHelpEnabled = not steeringHelpEnabled guiCheckBoxSetSelected(steerhelp, steeringHelpEnabled) end end end addEventHandler("onClientGUIClick", guiRoot, deneme) About the rest of code I didn't understand how should work, but the variable changing it's value when clicking the check box should work. Edit: If 'source' is the checkbox your code should look like this: local steeringHelpEnabled = true steerhelp = guiCreateCheckBox(145,470,100,15,"Steering Assist",true,false,window) function deneme(button) if button == "left" then if source == steerhelp then local door = 0 local move_door = 1 triggerServerEvent("moveDoorVeh", getLocalPlayer(), door, move_door) steeringHelpEnabled = guiCheckBoxGetSelected(source) end end end addEventHandler("onClientGUIClick", guiRoot, deneme)
  11. Eu diria que setElementData deve ser usado quando realmente tiver necessidade. Você pode muito bem substituir o uso com tabelas, que seria até o caminho correto do seu projeto em vários casos. Acontece que muitos não sabem as consequências e acaba usando em tudo é conveniente. Não conheço muito tudo que está por trás dessa função internamente no MTA (até porque não programo C++), mas parece ter uma performance muito pior se comparado ao uso de uma tabela em seu lugar. Fora outra coisa que sempre requer uma atenção do programador (do Scripter no caso) que é o uso de banda. Então caso você decida usá-la, preste atenção no último argumento para não utilizar desnecessariamente a sincronização com o outro lado. Último argumento destacado em vermelho.
  12. Tutorial em vídeo é outra coisa, e ainda bem editado e explicado. Ficou show, continue com os tutoriais.
  13. Pode ser algum script causando isso. Você pode dar stop em todos resources e confirmar isso (tem o comando stopall).
  14. Que bom saber disso rsrs, na verdade pessoas novas por aqui também me deixa muito feliz, pois significa que a comunidade está crescendo e na ativa. Agora, percebi que você já tem mais de 100 posts, muito bom, mas já deveria ter aprendido que o local destinado a esses posts é a seção Programação em Lua.
  15. elseif player and getPlayerWantedLevel(player) == 0 then exports.Messages:sendClientMessage("0 WL", player, 255, 0, 0) end
  16. local player = getElementType(player) == "player" and player or false if player and getPlayerWantedLevel(player) >= 1 and getPlayerMoney(player) >= 1000 then takePlayerMoney(player, 1000) if setPlayerWantedLevel(player, 0) then exports.Messages:sendClientMessage("You lost your stars", player, 255,255,0) end elseif player and getPlayerMoney(player) < 1000 then exports.Messages:sendClientMessage("You dont have enought money", player, 255, 0, 0) end I think you mean something like that.
  17. Leia: meta.xml Formule sua pergunta corretamente e não use o título para escrever todo o post Use o campo de pesquisa do fórum para encontrar a resposta antes de fazer o tópico Crie seu post relacionado a Lua na seção Programação em Lua @biscoitoimproprio
  18. Quando o player pedir o Uber, adiciona o timer para o solicitante com os 5 minutos; caso o Uber chegue antes desses 5 minutos, você dá killTimer. Dentro da função, você faz como no seu código acima passando o elemento do jogador para a função. Sinceramente eu continuo achando que você não tá olhando os erros no debug.
  19. Probably these scripts are showing the default GTA HUD. Take a look at the code and search for the setPlayerHudComponentVisible function and disable it.
  20. Use o segundo argumento da função pra especificar o slot. Aqui já tem e o outro post com o mesmo assunto: Responder lá por favor.
  21. O problema é que você vai perder tempo tendo que ocultar com a função setElementVisibleTo e se você fizer completo assim, para depois refazer para o client vai ser mais trabalho ainda e desnecessário kk. Na função VerificarEmprego2 você vai precisar usar setElementVisibleTo em vez de destroyElement. Edit: ou recria os elementos dentro da função VerificarEmprego Passei despercebido e olhei só pras funções ?
  22. Então getPlayerFromPartialName não encontrou o jogador com esse nome ou não está executando.
  23. Esqueceu de adicionar o timer do começo dentro da tabela timerVeh6. De qualquer forma eu editei o código server-side aqui que tinha alguns erros, tente: local veh6 = {} local timerVeh6 = {} function inicio6 ( vx, vy, vz, vrot ) if client ~= source or not (vrot) then return end -- cheater detected! if isElement (veh6[client]) then destroyElement (veh6[client]) end setElementData( client, "Trabalho", true, false ) -- seta o jogador no element-data "Trabalho"; sinc com o client desativada veh6[client] = createVehicle ( 401, vx, vy, vz, 0, 0, vrot ) outputChatBox ("#ffff00Drive the vehicle to the checkpoint. Note: You cannot leave the car during the mission.", client, 0, 0, 0, true) timerVeh6[client] = setTimer( addEndMissionTimer, 5000, 1, client ) local player = client addEventHandler ( "onVehicleExplode", veh6[player], function () destroyElement (source) veh6[player] = nil takePlayerMoney ( player, 5000 ) setElementData( player, "Trabalho", nil, false ) outputChatBox("Mission failed, your veh6icle blew up.", player , 255, 0, 0) end) function entrar6 (thePlayer) if isTimer (timerVeh6[thePlayer]) then killTimer (timerVeh6[thePlayer]) end end addEventHandler ("onVehicleEnter", veh6[client], entrar6) end addEvent ("iniciaJob6", true) addEventHandler ("iniciaJob6", getRootElement(), inicio6) addEvent( "completedMisionVeh6", true ) addEventHandler( "completedMisionVeh6", getRootElement(), function() if client and isElement(veh6[client]) then destroyElement (veh6[client]) veh6[client] = nil setElementData( client, "Trabalho", nil, false ) end end ) function playerDead6() if veh6[source] then outputChatBox ( "Missão falhou: Você morreu!", source, 255, 255, 255, true ) destroyElement (veh6[source]) veh6[source] = nil setElementData( source, "Trabalho", nil, false ) end end addEventHandler ( "onPlayerWasted", getRootElement(), playerDead6) function sair6 (thePlayer) --If you leave the vehicle for more than 1 min and do not return then the vehicle will disappear and the mission will failled-- if source == veh6[thePlayer] then if isTimer (timerVeh6[thePlayer]) then resetTimer (timerVeh6[thePlayer]) else timerVeh6[thePlayer] = setTimer( addEndMissionTimer, 5000, 1, thePlayer ) end end end addEventHandler ("onVehicleExit", getRootElement(), sair6) function addEndMissionTimer( player ) if player then if not ( isElement( veh6[player] ) ) then return end if getVehicleController( veh6[player] ) ~= player then outputChatBox ( "Voçê Nao entrou no veiculo a tempo mission failed", player, 255, 255, 255, true ) destroyElement ( veh6[player] ) veh6[player] = nil setElementData( player, "Trabalho", nil, false ) triggerClientEvent (player, "failPlayerLeave5", player) end end end
  24. Isso é um trabalho de motorista de ônibus? Faça as coordenadas, markes, blip, etc no lado client e para criar o ônibus envia um trigger para o lado server, o veículo ficará lá. Cadê os eventos que você adicionou na função VerificarEmprego e VerificarEmprego2? O erro na print é simples, você tá tentando passar um elemento que foi removido e não existe mais. Uma checagem deste tipo resolveria a mensagem: if isElement(Rota1_Vermelha) then destroyElement(Rota1_Vermelha) end
×
×
  • Create New...