Jump to content

Lord Henry

Other Languages Moderators
  • Posts

    3,991
  • Joined

  • Last visited

  • Days Won

    183

Everything posted by Lord Henry

  1. Linhas 9 e 10 estão erradas. Vc está pulando os parâmetros do setTimer. Você fez certo nas linhas 6, 7 e 8. Faça como fez nelas.
  2. Não nesse caso, pois o onClientRender já é chamado a cada frame, e portanto se atualiza sozinho. Não precisa de outro evento para chamá-lo.
  3. Verifica o level do jogador com getElementData.
  4. addCommandHandler - Ativa uma função por comando. setPedArmor - Seta um colete no jogador. Coloque isso dentro da função que será ativada pelo comando acima.
  5. Obs: Ative as legendas em português.
  6. Você precisará substituir um objeto original do jogo pelo objeto editado. use engineLoadTXD, engineImportTXD, engineLoadDFF e engineReplaceModel.
  7. Comece fazendo testes com dxDrawText e getPedWeapon. Veja os exemplos da Wiki.
  8. N. Vou dar um exemplo: function pegarGrana (thePlayer, cmd) if isGuestAccount (getPlayerAccount (thePlayer)) then return end -- Se o jogador está deslogado, então cancela essa função e nada acontece. local account = getPlayerAccount (thePlayer) -- 'account' recebe a conta que o jogador que executou o comando está logado. local agora = getRealTime().timestamp -- 'agora' recebe um número bem grande, que é a quantidade de segundos que se passaram desde 01/01/1970 local antes = getAccountData (account, "ultimaGrana") -- 'antes' recebe o que estava salvo na conta do jogador, se não existir essa data, recebe false. (sempre será uma string caso exista, mesmo se você salvar um número) if (antes) then -- Se existe uma data na conta, então: if ((agora - tonumber(antes)) > 86400) then -- Se a diferença de 'agora' e de 'antes' for maior que 86400 segundos (1 dia), então: setAccountData (account, "ultimaGrana", agora) -- Salva o 'agora' na conta do jogador. outputChatBox ("Você pegou o dinheiro. Poderá pegar novamente daqui a 24 horas.", thePlayer) givePlayerMoney (thePlayer, 10000) -- Dá o dinheiro pro jogador. else -- Se a diferença de 'agora' e de 'antes' não for maior que 86400 segundos, significa que não faz 24 horas que o dinheiro foi pego. Então: outputChatBox ("Você precisa esperar mais tempo para poder pegar o dinheiro.", thePlayer) end else -- Se não existe essa data na conta do jogador (ele nunca pegou a grana antes), então: setAccountData (account, "ultimaGrana", agora) -- Salva o 'agora' na conta do jogador. outputChatBox ("Você pegou o dinheiro. Poderá pegar novamente daqui a 24 horas.", thePlayer) givePlayerMoney (thePlayer, 10000) -- Dá o dinheiro pro jogador. end end addCommandHandler ("pegar", pegarGrana) -- Comando pra ativar essa função: /pegar
  9. Não se usa source como parâmetro de função. function SalvarDadosLogout () local ObterGalao = getElementData (source, "galao") local conta = getPlayerAccount (source) setAccountData (conta, "galao", ObterGalao) end addEventHandler ("onPlayerQuit", root, SalvarDadosLogout) function DarDadosLogin (prevAcc, currAcc) local TemGalao = getAccountData (currAcc, "galao") setElementData (source, "galao", TemGalao) end addEventHandler ("onPlayerLogin", root, DarDadosLogin)
  10. Não use setTimers para isso. Se o jogador reconectar no servidor, ele será outro elemento, logo o timer dele será perdido. Não é recomendável usar setTimer para grandes períodos de tempo, eles consomem muito processamento do servidor para se manterem ativos. Use o timestamp do getRealTime. Assim você será capaz de salvar o instante que o jogador pegou a grana pela última vez na conta dele, e quando ele tentar novamente, verificar se o momento salvo já faz mais do que 24 horas passadas.
  11. Os parâmetros de função do evento onPlayerJoin não são esses. Preste atenção na wiki.
  12. Assim nunca vai dar certo. Você está usando funções client-side e server-side no mesmo script.
  13. Edita o modelo em um programa de modelagem 3D.
  14. setElementInterior - Coloca um elemento (no caso jogador) em um interior. Funciona tanto server-side quanto client-side. onMarkerHit - Evento que ativa uma função quando alguém colide num marker. Somente server-side. onClientMarkerHit - Mesmo que o evento de cima, mas funciona somente client-side.
  15. Ative o resource AirNew_MensagemDX
  16. getPlayerMoney recebe um argumento do tipo player, e não uma string.
  17. function darVIPOuro (theStaff, cmd, nick) if (nick) then -- Se foi informado o nick após o comando, então: local thePlayer = getPlayerFromName (nick) -- Recebe o jogador que possui esse nick. if (thePlayer) then -- Se existe um jogador com esse nick, então: local accName = getAccountName (getPlayerAccount (thePlayer)) -- Recebe o login da conta desse jogador. if isObjectInACLGroup ("user."..getAccountName (getPlayerAccount (theStaff)), aclGetGroup ("Admin")) then -- Se o jogador que executou o comando estiver na ACL Group 'Admin', então: if (aclGroupAddObject (aclGetGroup ("Ouro"), "user."..accName)) then -- Se o login do jogador foi adicionado corretamente na ACL Group 'Ouro', então: outputChatBox ("O cidadão '"..nick.."' foi adicionado no grupo VIP Ouro com sucesso!", theStaff) -- Manda isso pro jogador que executou o comando. else -- Se não foi possível adicionar o login do jogador ao grupo, então: outputChatBox ("Erro ao adicionar o cidadão '"..nick.."' ao grupo VIP Ouro. Verifique se o grupo 'Ouro' existe e se este resource tem permissão Admin.", theStaff, 255, 150, 0) -- Manda isso pro jogador que executou o comando. end else -- Se o jogador que executou o comando não estiver na ACL Group 'Admin', então: outputChatBox ("Acesso negado a este comando.", theStaff, 255, 150, 0) -- Manda isso pro jogador que executou o comando. end else -- Se não existe nenhum jogador com o nick exatamente igual ao informado no comando, então: outputChatBox ("Nenhum jogador com esse nick foi encontrado.", theStaff) -- Manda isso pro jogador que executou o comando. end else -- Se não foi declarado nada após o comando, então: outputChatBox ("Erro de sintaxe, use: /addVIPOuro <Nick>", theStaff) -- Manda isso pro jogador que executou o comando. end end addCommandHandler ("addVIPOuro", darVIPOuro) -- Troquei o comando pra facilitar.
  18. Não. Você não pode declarar o marker na própria animação.
  19. Esse seu código não faz sentido. Vai entrar em loop infinito. Uma vez que o evento "onTrailerAttach" será chamado sempre que attachTrailerToVehicle funcionar. Eu faria com onTrailerDetach, que reconectaria a carga ao caminhão sempre que ela desconectar. Impedindo que ela saia do caminhão. Mas não sei se resolveria o bug, pois o problema não é da carga desconectar no jogador, é apenas um bug de sincronização. O jogo está considerando a carga anexada, mas no cliente dos outros jogadores não está.
  20. Errou na linha 19. Pra começar vc colocou 2 parâmetros, sendo que a função só usa 1. Além disso, os dois parâmetros estão errados. local dinheiro_do_jogador = getPlayerMoney (player_a_ser_revistado)
  21. Mais fácil ele simplesmente criar um client.Lua, declarar no meta.xml do gamemode play e fazer o que tem que ser feito somente nesse client.Lua.
  22. Tem sim. setAccountData para salvar na conta e depois getAccountData para carregar os dados da conta ao logar novamente.
×
×
  • Create New...