-
Posts
3,992 -
Joined
-
Last visited
-
Days Won
183
Everything posted by Lord Henry
-
Você quer que a mensagem O NOME Setou o Player NOME de DM apareça somente pros jogadores que estiverem nos grupos Admin, SuperModerador, Moderador, DM?
-
Da pra fazer com isso: function isResourceRunning (resourceName) local res = getResourceFromName (resourceName) if (res) then if (getResourceState (res) == "running") then return true else return false end end end Adicione essa função acima no seu script. Depois quando quiser verificar se o resource Freeroam está ligado ou não, basta verificar com: if (isResourceRunning ("freeroam")) then -- Se o resource freeroam está ativo, então: -- Faz alguma coisa end Sua função vai ficar assim: function assignNewTeam (source, commandName) if (isResourceRunning ("freeroam")) then local theTeam -- Cria a variável do time mas não atribui valor nenhum a ela de propósito. if (getTeamFromName ("R7")) then -- Se já existe um time com o nome "R7", então: theTeam = getTeamFromName ("R7") -- A variável recebe o time que já existe. else -- Se não existe nenhum time com esse nome criado, então: theTeam = createTeam ("R7", 0, 255, 0) -- Cria o time e coloca ele nessa variável. end setPlayerTeam (source, theTeam) -- Coloca o player que digitou o comando nesse time. end end addCommandHandler ("navio", assignNewTeam)
-
A sua função do /navio e do /navio2 ficam tentando criar o time cada vez que alguém usa o comando. Na segunda vez ele dará erro, pois o time já existe. function assignNewTeam (source, commandName) local theTeam -- Cria a variável do time mas não atribui valor nenhum a ela de propósito. if (getTeamFromName ("R7")) then -- Se já existe um time com o nome "R7", então: theTeam = getTeamFromName ("R7") -- A variável recebe o time que já existe. else -- Se não existe nenhum time com esse nome criado, então: theTeam = createTeam ("R7", 0, 255, 0) -- Cria o time e coloca ele nessa variável. end setPlayerTeam (source, theTeam) -- Coloca o player que digitou o comando nesse time. end addCommandHandler ("navio", assignNewTeam)
-
Eu disse parâmetro de função e não parâmetro de evento. function unassignTeam () local theTeam = getPlayerTeam (source) if theTeam then setPlayerTeam (source, nil) end end addEventHandler ("onPlayerWasted", root, unassignTeam)
-
OnPlayerWasted não usa aqueles parâmetros de função. No seu caso, daria pra deixar sem parâmetro nenhum.
-
Por favor não reviva tópicos antigos. Crie um tópico na seção de Programação em Lua com sua dúvida. Regras do fórum:
-
Função executar apenas perto do Carro !
Lord Henry replied to FeniXMTA's topic in Programação em Lua
Obter a posição do capô em relação ao mundo: local hoodX, hoodY, hoodZ = getVehicleComponentPosition (theVehicle, "bonnet_dummy", "world") E dai pra saber a distância do capô e o jogador, usa um getDistanceBetweenPoints3D. -
Ele está dizendo que tentou chamar uma função de um resource que não está ativo no servidor (scr-Lib). Para corrigir esse problema, baixe, instale e ative o resource scr-Lib. Mesmo problema que o anterior, mas este está pedindo o resource msgdx. Sobre o seu terceiro problema, o resource funciona, mas não de maneira fixa. Você pode facilmente construir um resource com ID fixo usando a função getAccountID. Este ID é fixo na conta do jogador, mesmo que ele relogue, a conta vai permanecer com este mesmo ID.
-
Exemplo maroto pra vc: server-side: function loadCarMod (prevAcc, currAcc) if (getAccountData (currAcc, "vehMod.490")) then -- Exemplo de nome de data, no caso se o veículo 490 estiver salvo como modificado na conta, então: triggerClientEvent (source, "enableVehMod.490", source, true) -- Ativa o evento no cliente do jogador que logou. (não afeta outros jogadores) e também envia o valor true como primeiro parâmetro de função. end end addEventHandler ("onPlayerLogin", root, loadCarMod) function saveCarMod (status) -- Parâmetro de função que foi passado pelo triggerServerEvent lá no client-side. local acc = getPlayerAccount (client) -- client = Variável nativa que significa: localPlayer do client-side que ativou este evento. if (not isGuestAccount (acc)) then -- Se o jogador está logado, então: (a conta não é guest) setAccountData (acc, "vehMod.490", status) -- Salva a data do veículo como true ou como false na conta do jogador. end end addEvent ("saveVehMod.490", true) addEventHandler ("saveVehMod.490", root, saveCarMod) client-side: local txd = engineLoadTXD ("fbiranch.txd") local dff = engineLoadDFF ("fbiranch.dff", 490) -- 490 é o ID do veículo a ser modificado, no caso o FBI Rancher. function startVehMod (state) -- state é o primeiro parâmetro de função, seu valor foi enviado pelo server-side no triggerClientEvent. if (state) then -- Se state for igual a true (ou qualquer valor que não seja false nem nil), então: engineImportTXD (txd, 490) engineReplaceModel (dff, 490) -- Em vez de colocar isso em uma função com evento "onClientResourceStart" pra ativar pra todo mundo, ativa somente pelo trigger do server-side no cliente específico. else -- Se state não for true, então: engineRestoreModel (490) -- Desativa a modificação no veículo, voltando para o modelo original. end end addEvent ("enableVehMod.490", true) addEventHandler ("enableVehMod.490", root, startVehMod) function vehManagement (cmd, parameter) -- Aqui eu vou fazer por comando no exemplo, mas vc pode fazer por painel. if (parameter) then -- Se parameter == true ou qualquer coisa que não seja false nem nil, então: outputChatBox ("Modificação do veículo 490 ativada.") startVehMod (parameter) -- Ativa o mod do veículo. triggerServerEvent ("saveVehMod.490", localPlayer, true) -- Manda o true para o server-side, que irá salvar o novo status do veículo na conta do jogador como ativado. else outputChatBox ("Modificação do veículo 490 desativada.") startVehMod (parameter) -- Desativa o mod do veículo. triggerServerEvent ("saveVehMod.490", localPlayer, false) -- Manda o false para o server-side, que irá salvar o status do veículo na conta do jogador como desativado. end end addCommandHandler ("veh490", vehManagement) -- Como funciona: /veh490 true ou então /veh490 false Obs: Não testado, fiz de cabeça e serve apenas como exemplo. Edit: Obrigado.
-
tonumber é uma função que precisa de argumentos pra funcionar. Não tem como usá-la sozinha sem nada.
-
Está com erro no resto do seu script. Na parte que vc está dando algum valor pra variável weapon.
-
weapon está com valor nil (nulo)
-
É mais fácil vc simplesmente fazer a imagem com dxDrawImage. Assim, ela só aparece nos frames que o jogador estiver com mais de 180 de ping. local x, y = guiGetScreenSize() function teste () if (getPlayerPing (localPlayer) > 180) then dxDrawImage (x*0.85, y*0.85, x*0.03, y*0.05, "net.png") end end addEventHandler ("onClientRender", root, teste)
-
Vc colocou thePed no lugar de testPed
-
GivePedWeapon
-
Por isso vc faz com accountData em vez de elementData. Pois dai vc salva os dados entre as sessões de jogo.
-
No notepad++ também dá pra configurar o TAB pra ser espaços em vez de tabulação. Se não me engano, fica em Preferences >> Language.
-
Sim, use o Resource:Bone_attach
-
Não entendi direito o que vc quer fazer. É pra destruir o guiCreateStaticImage?
-
Só dá pra fazer com animações específicas. Não são todas.
-
Sendo mais claro, por ser uma função client-side, você pode simplesmente determinar qual client vai executar ela em vez de anexar a função no onClientResourceStart. Daria pra você fazer server-side uma função com onPlayerLogin, se a conta do jogador que logou tiver tal data, faz um triggerClientEvent pra ativar o veículo pra ele. Isso iria ativar somente no cliente desse determinado jogador que logou. Os demais jogadores continuariam vendo o veículo original.
-
Indentação faz parte da programação. Se você já passou pelo trabalho de programar (o que já deveria ter feito indentando em vez de fazer depois), a parte de indentar é tranquila. Tenho uma pergunta pra vc: Indentação com espaços ou com tabulações? Qual deles vc usa?
-
Indentação manual no notepad++. Seleciona as linhas e aperta TAB pra adicionar 1 nível de indentação. Pra recuar um nível de indentação, usa Shift+TAB.