Jump to content

Lord Henry

Other Languages Moderators
  • Posts

    4,005
  • Joined

  • Last visited

  • Days Won

    184

Everything posted by Lord Henry

  1. Depois de concluir seu mapa. Acesse o arquivo.map e coloque o parâmetro de dimensão de cada objeto em 1. Por padrão estarão todos no 0.
  2. De nada. Nos ajude deixando um Thanks na resposta.
  3. A variável text não existe. Use message em vez disso.
  4. O evento "onResourceStart" geralmente não deve ser anexado ao root, pois fazendo isso, executará a função Criarblip quando qualquer resource for iniciado. Se você quer que execute somente quando este resource for iniciado use getResourceRootElement(getThisResource()). Seria mais fácil vc criar o blip anexado ao marker em vez de ficar criando na mesma posição. Dessa forma, se você trocar a posição do marker, o blip trocará de posição junto com ele. Para isso, sugiro que use CreateBlipAttachedTo em vez de CreateBlip. Para executar uma função ao colidir no marker, use o evento onMarkerHit. Exemplo: function Criarblip () bar = createMarker (2309.62, -1643.63, 13.8385, "cylinder") -- Marker para entrar no Bar. createBlipAttachedTo (bar, 49) -- Blip anexado ao marker bar. backBar = createMarker (501.98, -67.75, 997.84, "cylinder") -- Marker para sair do Bar. setElementDimension (backBar, 1) -- Coloca o backBar na dimensão 1. setElementInterior (backBar, 11) -- Coloca o backBar no interior do Bar. end addEventHandler ("onResourceStart", getResourceRootElement(getThisResource()), Criarblip) function teleBar (hitElement, matchingDimension) if hitElement and getElementType (hitElement) == "player" and matchingDimension then -- Se o elemento que colidiu no marker for um jogador e a colisão for na mesma dimensão que o marker está, então: if source == bar then -- Se o marker que foi colidido for o bar, então: setElementInterior (hitElement, 11) -- Coloca o jogador no interior 11. setElementDimension (hitElement, 1) -- Coloca o jogador na dimensão 1. setElementPosition (hitElement, 501.98, -69.75, 997.84, true) -- Coloca o jogador na posição que fica no interior do Bar. elseif source == backBar then -- Senão, se o marker que foi colidido for o backBar, então: setElementInterior (hitElement, 0) -- Coloca o jogador no interior 0. (exterior) setElementDimension (hitElement, 0) -- Coloca o jogador na dimensão 0. setElementPosition (hitElement, 2307.62, -1643.63, 13.8385, true) -- Coloca o jogador fora do Bar, perto do marker de entrada. end end end addEventHandler ("onMarkerHit", getRootElement(), teleBar) -- Ativa essa função quando qualquer marker for colidido. Sempre leia a Wiki para aprender sobre determinados eventos.
  5. AddEventHandler é uma função que será chamada quando o evento anexado a ela for ativado. Existem vários eventos diferentes que são ativados em diferentes circunstâncias, é impossível citar todos. Mas darei alguns exemplos pra facilitar. Usando o evento onPlayerWasted anexado ao addEventHandler, fará com que a função anexada a ele seja executada quando um jogador morre. function faleceu (totalAmmo, killer, weapon, bodypart, stealth) -- variáveis pré-definidas, se não for usar nenhuma delas, não precisa declará-las. -- No evento "onPlayerWasted" temos pré-definidas estas variáveis: -- source = jogador que morreu (elemento) -- totalAmmo = munição que o jogador que morreu tinha (número inteiro) -- killer = jogador ou veículo que matou ele (elemento) -- weapon = ID da arma do killer (número inteiro) -- bodypart = parte do corpo que foi atacada (número inteiro) -- stealth = se morreu direto por um golpe fatal ou se morreu por dano normal. (true ou false) local nome = getPlayerName (source) -- nome = nick do jogador que morreu. outputChatBox (nome.."#FFFFFF morreu.", root, 255, 255, 255, true) -- Envia no chat para todos, o nome do jogador que morreu. (root = todo mundo.) end addEventHandler ("onPlayerWasted", getRootElement(), faleceu) -- Executa a função "faleceu", quando qualquer jogador morrer. Usando este outro evento onVehicleEnter, fará com que a função anexada a ele seja executada quando um jogador entrar em um veículo. function entrouVeiculo (thePlayer, seat, jacked) -- source = o veículo que o jogador entrou. (elemento) -- thePlayer = o jogador que entrou no veículo. (elemento) -- seat = o ID do assento em que o jogador sentou no veículo (número inteiro) -- jacked = se o jogador entrou no veículo roubando de outro player ou não. (true ou false) local nomeVeiculo = getVehicleName (source) -- nomeVeiculo = nome do veiculo que o jogador entrou. if jacked and seat == 0 then -- Se foi roubado e o assento for do motorista, então: outputChatBox ("Você roubou um "..nomeVeiculo, thePlayer, 255, 255, 0, false) else -- Se entrou no veículo sem roubar, então: outputChatBox ("Você entrou em um #00FF00"..nomeVeiculo, thePlayer, 255, 255, 255, true) end end addEventHandler ("onVehicleEnter", getRootElement(), entrouVeiculo) -- Chama essa função quando qualquer jogador entrar em um veículo. Esses eventos acima só funcionam server-side, assim como está dito na Wiki. Já esta outra função aqui, só funciona client-side. É um evento que executa a função anexada a cada frame que passou. function textoNaTela () -- Não existem parâmetros para o onClientRender. dxDrawText ("TEXTO RENDERIZADO.", 5, 5) -- Mostra este texto durante 1 frame na sua tela. end addEventHandler ("onClientRender", getRootElement(), textoNaTela) -- Executa isso em cada frame. Fazendo com que o texto permaneça na tela. Para remover um evento ativador, use removeEventHandler. Assim como o removeCommandHandler faz com que um comando pare de ativar determinada função. Usando o removeEventHandler, fará o onClientRender parar de ativar a cada frame. Assim como diz o exemplo da Wiki.
  6. Sim, pois foi removida a cor do nome na linha 2. local nomeSemCor = string.gsub (nome, "#%x%x%x%x%x%x", "")
  7. Cara, sinceramente vc está inventando dificuldade onde não existe. Já falei que a cor do nome vc define nos parâmetros 255, 255, 255 (branco). A cor da mensagem é só vc colocar o código #HEX depois do nome. local nome = "Lord#00BFFFHenry" -- LordHenry colorido. local nomeSemCor = string.gsub (nome, "#%x%x%x%x%x%x", "") -- LordHenry sem cor. outputChatBox (nomeSemCor..": #FFFF00Texto na cor amarela.", root, 255, 255, 255, true) -- O nome será sempre branco. outputChatBox (nomeSemCor..": #FF0000Texto na cor vermelha.", root, 255, 255, 255, true) outputChatBox (nomeSemCor..": #0000FFTexto na cor azul.", root, 255, 255, 255, true) outputChatBox (nomeSemCor..": #FF00FFTexto na cor rosa.", root, 255, 255, 255, true) outputChatBox (nomeSemCor..": #00FFFFTexto na cor ciano.", root, 255, 255, 255, true) Vai enviar isso: LordHenry: Texto na cor amarela. LordHenry: Texto na cor vermelha. LordHenry: Texto na cor azul. LordHenry: Texto na cor rosa. LordHenry: Texto na cor ciano.
  8. Uma dica: Evite fazer ele depender de outros scripts. Vc está usando a função call (exports), que irá receber de outro script esses dados. Se o outro script não existir ou estiver com problemas, este script também terá problemas. Prefira fazer cada resource independente.
  9. Só tem que arrumar essa indentação ae.
  10. Tente usando esta função útil: IsPedAiming (client-side) Que verifica se o jogador está mirando com uma arma ou não.
  11. Então é falha da função math.round. Pois no script ele sempre aplica o math.round após o cálculo da ratio. Se não for possível calcular, ele coloca 0 ou "?"
  12. Você que não entendeu. Esse exemplo faz exatamente isso. Deixa tudo em branco, independente do nome ter cor ou não. local nome = "Lord#00BFFFHenry" -- LordHenry colorido. local nomeSemCor = string.gsub (nome, "#%x%x%x%x%x%x", "") -- LordHenry sem cor. outputChatBox (nomeSemCor..": Texto na cor branca.", root, 255, 255, 255, true) -- Inicia o output na cor branca. Vai mandar isso: LordHenry: Texto na cor branca.
  13. Já tentou onClientPlayerTarget?
  14. table.insert (killDeath, math.round (ratio, 3, "floor")) Pq vc se deu o trabalho de printar o script em vez de postar usando a ferramenta <> ?
  15. Vc pode usar a cor do nome do jogador e antes da mensagem, colocar novamente a cor que você deseja. Por exemplo: local nome = "Lord#00BFFFHenry" -- Lord sem cor e Henry na cor azul-céu. outputChatBox (nome.."#FFFFFF: Texto na cor branca.", root, 0, 255, 0, true) -- Inicia o output na cor verde. Isso vai enviar o seguinte: LordHenry: Texto na cor branca. O começo em verde é porque coloquei 0, 255, 0 como cor de início do outputChatBox. A parte azul é por causa do código de cor azul no nome. O resto do texto volta a ser "branco" pois usei o código branco logo após o nome. Ou seja: Independente do nome, o texto sempre será branco. Se o nome não possuir nenhum código de cor, neste caso, o nome inteiro ficará verde e o resto do texto branco. local nome = "Lord#00BFFFHenry" -- Lord sem cor e Henry na cor azul-céu. local nomeSemCor = string.gsub (nome, "#%x%x%x%x%x%x", "") -- LordHenry outputChatBox (nomeSemCor..": Texto na cor branca.", root, 255, 255, 255, true) -- Inicia o output na cor branca. Isso vai mostrar: LordHenry: Texto na cor branca.
  16. Hum, belo enigma. Mas não existe essa função para NPCs, pois quando o NPC mira em algo, ele já está sendo controlado por algum script usando setPedAimTarget, e para obter a posição de tiro da mira, usa-se getPedTargetStart e getPedTargetEnd. Para fazer um NPC atirar, usa-se setPedControlState. (funciona com localPlayer tbm)
  17. Solicite suporte para a equipe do servidor. Já que o erro está no servidor e não no seu PC.
  18. Isso mesmo. Para não usar as cores no outputChatBox, é só não colocar o último parâmetro, ou então colocar como false. Dessa forma, isso: outputChatBox ("Mensagem #0000FFcolorida." , root, 255, 255, 255, false) Vai enviar isso: Mensagem #0000FFcolorida. Em vez disso: Mensagem colorida. ----------------------------------------- Se você quer colocar uma cor na mensagem, mas não quer que os códigos no texto funcionem, dai você usa os parâmetros de 255 ali para colocar a cor. O primeiro valor, que vai de 0 até 255 é a quantidade de vermelho que terá o texto inteiro. O segundo valor, que vai de 0 até 255 é a quantidade de verde que terá o texto inteiro. O terceiro valor, que vai de 0 até 255 é a quantidade de azul que terá o texto inteiro. Os 3 valores, formam a cor RGB do seu texto e possuem relação direta com os códigos #HEX que você está querendo evitar. Assim sendo, vc pode usar assim: outputChatBox ("Mensagem colorida." , root, 255, 0, 255, false) Vai enviar isso: Mensagem colorida. E isso: outputChatBox ("Mensagem colorida." , root, 255, 150, 0, false) Vai enviar isso: Mensagem colorida. E assim por diante. -------------------------------------- Você pode ainda, não colocar nenhuma cor. Dai o texto irá aparecer com a cor nativa do chat (que não é branco). outputChatBox ("Mensagem colorida." , root) Obs: Se vc estiver usando o outputChatBox no lado client, não coloque o parâmetro do root, pois o texto é sempre enviado para o localPlayer.
  19. function speedometrs () local veh = getPedOccupiedVehicle(getLocalPlayer()) if veh then local Speed = getVehicleSpeed() ... ...
  20. Foi ele mesmo que criou o outro tópico. Não sei pq ele insiste em criar outros tópicos semelhantes em vez de continuar naquele. Já falei que não vou doar meu script pra ele, já que ele não se esforça pra fazer o próprio e só quer as coisas prontas.
  21. Só funciona se vc estiver em um team. Geralmente o MTA já deixa isso funcionando nativamente.
  22. Você quer que o jogador perca uma quantidade predeterminada quando usar o comando? Ou vc quer que ele informe junto com o comando a quantidade a ser retirada?
  23. Então o script está todo errado. Os outputChatBox vão aparecer pra todo mundo do servidor, até quem não está fazendo a missão. givePlayerMoney no server-side exige que vc especifique o jogador para qual está dando dinheiro. onClientPedWasted é uma função que só funciona client-side. (como no próprio nome já está escrito) Em nenhum lugar tem uma função createPed, para criar os zumbis.
  24. Esse script aí é client-side ou server-side? Pois vc está usando funções que só funcionam client-side e outras que funcionam em ambos mas que se for feito client-side dai não adianta. Por exemplo givePlayerMoney não adianta nada se for feito client-side, pois vai mudar apenas o dinheiro na tela do jogador mas não será contado no servidor, será um "dinheiro falso". Creio que houve erro de digitação na linha 11, onde vc botou sorcer. zombiesKilled é o número de zumbis restantes ou o número de zumbis que foram mortos? Pois você está usando para contar os zumbis mortos mas na mensagem da linha 14 está usando como zumbis restantes e isso não faz sentido. A variável zed será sempre uma table, vazia ou não. Então sua verificação será sempre verdadeira quando o jogador matar qualquer NPC. Você deve usar /debugscript 3 para verificar erros no script.
×
×
  • Create New...