-
Posts
31 -
Joined
-
Last visited
Everything posted by SidneiJR
-
Com uma gridList é possível obter todos os jogadores online do servidor. Qual função posso utilizar para obter jogadores que estão perto?
-
Tentei as 2 maneiras, o @DNL291 me ajudou na segunda forma, mas não obtive sucesso. Decidi por deixar essa ideia de lado, obrigado @Lord Henry pela ajuda.
-
Tentei da primeira forma, mas não obtive exito. O texto é independente do marker: function texto() if ( getDistanceBetweenPoints3D ( 2454.69, -913.07, 115.17, getElementPosition ( localPlayer ) ) ) < 20 then local coords = { getScreenFromWorldPosition ( 2454.69, -913.07, 115.17 ) } if coords[1] and coords[2] then dxDrawText("Area dominada por: N/A", coords[1], coords[2], coords[1], coords[2], tocolor(255, 255, 255, 255), x*1.20, "default-bold", "center", "center", false, false, false, true, false) end end end addEventHandler("onClientRender", root, texto)
-
O marker se encontra do lado Server, qual a melhor forma de fazer essa verificação? Ou seria melhor passar o script para o lado Client?
-
Estou desenvolvendo um script de dominação de territórios, nele gostaria de adicionar um texto contendo quem dominou aquele território. Exemplo: Imagem Sei que tenho que utilizar (setElementData, getElementData e setTimer), porém não achei uma forma de encaixar o getElementData no dxDrawText para mostrar o nick do jogador.
-
Tente: --Server function solicitaPay (thePlayer, cmd, user) local accName = getAccountName(getPlayerAccount(thePlayer)) if isObjectInACLGroup ("user."..accName, aclGetGroup ("MEC") ) then if cmd == "consertar" then if not user then outputChatBox ("Erro de sintaxe, use /consertar <nick>", thePlayer, 255, 255, 0) elseif not getPlayerFromPartialName (user) then outputChatBox ("Jogador não encontrado.", thePlayer, 255, 255, 0) else local theUser = getPlayerFromPartialName (user) if getElementData (theUser, "mecanico.solicitation") then outputChatBox ("Alguém já está solicitando pagamento mecânico a este jogador.", thePlayer, 255, 255, 0) else setElementData (theUser, "mecanico.solicitation", thePlayer) outputChatBox ("Você solicitou pagamento para consertar o veículo de "..user, thePlayer, 0, 255, 0, true) outputChatBox (getPlayerName (thePlayer).."#FFFF00 está pedindo $800 para consertar seu veículo. Use /aceitar ou /recusar", theUser, 255, 255, 255, true) setTimer (function () if getElementData (theUser, "mecanico.solicitation") then setElementData (theUser, "mecanico.solicitation", false) outputChatBox ("O pedido de pagamento de "..getPlayerName (thePlayer).."#FFFF00 expirou.", theUser, 255, 255, 0, true) end end, 10000, 1) end end end else outputChatBox("#FF0000Você não tem permissão para executar este comando!", thePlayer, 255, 255, 255, true ) end end addCommandHandler ("consertar", solicitaPay)
-
Nós testes que eu fiz GiveWeapon funcionou no server-side, mas eu tive que utilizar o timer, ficando assim: --Server setTimer(function() giveWeapon(thePed, 9, 500, true) end, 1000, 1)
-
Tente: --Client setTimer(function() givePedWeapon(thePed, 9, 500, true) end, 1000, 1) ou --Client function Armar_ped() givePedWeapon(thePed, 9, 500, true) end addEventHandler ("onClientResourceStart", getResourceRootElement(getThisResource()), Armar_ped) Em thePed, substitua pelo nome que você deu ao criar o ped. Lembrando que GivePedWeapon é do lado client-side, caso esteja utilizando no lado server-side, utilize GiveWeapon.
-
O evento a ser utilizado nesse caso é onMarkerHit (Server-side) ou onClientMarkerHit (Client-Side). Em CreateMarker está faltando alguns argumentos. Retirei de um script de roubo a lojas, onde é necessário o player entrar no marker. Sempre busque informações na wiki, ou se caso tente reproduzir algo que já tenha sido feito, procure scripts similares que será de grande ajuda. --Server local Entrar_Loja = createMarker(1315.5, -897.8, 40.5, "arrow", 1.5, 255, 255, 0, 255) --Marker createBlipAttachedTo(Entrar_Loja, 17, 2, 0, 255, 0, 0, 0, 350) --Cria um icone no marker que será visto no radar function Entrar (player) if source == Entrar_Loja and getElementType(player) == "player" then setElementInterior(player, 6, -27.32, -56.87, 1003.7) --Interior e posição para onde o jogador será teleportado (Caso deseje apenas a posição, utilize setElementPosition ) setElementDimension(player, 1) --Dimensão para onde o jogador será teleportado end end addEventHandler("onMarkerHit", getRootElement(), Entrar)
-
Como esse script será de assalto a lojas, irei utilizar bastante, alguma dica de como melhorar?
-
--Client addEventHandler( "onClientPlayerTarget", root, function (targetElem) if ( targetElem and getElementType(targetElem) == ("ped") )then local px, py, pz = getElementPosition(targetElem) local bx, by, bz = getElementPosition(localPlayer) local d = getDistanceBetweenPoints3D(px, py, pz, bx, by, bz) local task = getPedTask ( localPlayer, "secondary", 3 ) if task then if (d > 2) then return exports["notices"]:addNotification("Chegue mais perto",'info') end return exports["notices"]:addNotification("Sucess",'info') end end end ) Ficou assim. Obrigado @Lord Henry
-
--Client addEventHandler( "onClientPlayerTarget", root, function (targetElem) if (targetElem and getElementType(targetElem) == ("ped") ) then local px, py, pz = getElementPosition(targetElem) local bx, by, bz = getElementPosition(localPlayer) local d = getDistanceBetweenPoints3D(px, py, pz, bx, by, bz) if (d > 2) then return exports["notices"]:addNotification("Chegue mais perto",'info') end return exports["notices"]:addNotification("Sucess",'info') end end ) Tentei dessa forma e deu certo. Agora preciso verificar se o player está mirando corretamente. Alguma dica de como posso fazer isso? Forma correta: print Forma incorreta: print A forma incorreta seria apenas apontar a arma sem algum tipo de mira e executar a função.
-
Não quero que o ped mire ou faça algo do tipo, o que eu quero é que quando um jogador mirar no ped execute uma função.
-
Jogador X mira com uma M4 em jogador Y e executa C função, para isso seria utilizado o onPlayerTarget. Quais argumentos devo utilizar para fazer o mesmo com ped? (Seria o jogador X mirando em ped Y)
-
Não sei o que seria esse loop. Devo retirar de qual lado? @Resolvido --Server function AddStar() local wanted = getPlayerWantedLevel(source) if wanted < 6 then setPlayerWantedLevel(source, wanted +1) end end addEvent("AddStar", true) addEventHandler("AddStar", root, AddStar) Retirei o loop e funcionou. Irei organizar o dinheiro.
-
--Server function AddStar(Jogador) for _, Jogador in pairs(getElementsByType("player")) do local wanted = getPlayerWantedLevel(Jogador) if wanted < 6 then setPlayerWantedLevel(Jogador, wanted +1) end end end addEvent("AddStar", true) addEventHandler("AddStar", root, AddStar) --Client function Loja(localplayer, matchingDimension) if assalta == true and ativo == true and passivo == false then setTimer( MensagemCorre, 10000, 1) setTimer( DxAssaltar, 120000, 1) mny = getPlayerMoney() randomMoney = Money[math.random(#Money)] if isElementWithinMarker (localPlayer, Marker_Loja1) then triggerServerEvent("AddStar", localPlayer) exports["notices"]:addNotification("Você está assaltando a loja, aguarde alguns segundos para sair",'info') setElementFrozen ( localPlayer, true ) setTimer(setElementFrozen,10000, 1,localPlayer, false) setElementPosition ( localPlayer, 369.29598999023,-6.4505863189697,1001.8515625 ) setElementRotation( localPlayer,-0, 0, 0.57838475704193) setPedAnimation ( Ped_Loja1, "shop", "SHP_Rob_HandsUp", -1, true, false, false ) setPedAnimation ( localPlayer, "ped", "gang_gunstand", -1, true, false, false ) setTimer(setPedAnimation, 30000, 1, Ped_Loja1 ) setTimer(setPedAnimation, 10000, 1, localPlayer ) setTimer(setPlayerMoney,10000,1, mny +randomMoney ) assalta = false end else end end addCommandHandler("roubar", Loja) Estou querendo adicionar 1 estrela cada vez que o jogador digita /roubar dentro do marker, porém todos os jogadores online recebem, em qual parte eu errei? Nenhum erro é gerado no debug.
-
--Client function speedometrs () local veh = getPedOccupiedVehicle(getLocalPlayer()) if not veh or getVehicleOccupant ( veh , 0 ) ~= localPlayer then return true end local Speed = getVehicleSpeed() local car = getPedOccupiedVehicle(localPlayer) local vehs = getElementSpeed(getPedOccupiedVehicle(getLocalPlayer()), "kmh") local nitro = getVehicleNitroLevel(car) or 0 local Count = getVehicleNitroCount(car) or 0 local fuel = getElementData(getPedOccupiedVehicle ( localPlayer ), "fuel" ) or 0 if Speed > 243 then Speed = 243 end if Speed < -243 then Speed = -243 end if Count >= 1 then nos = (math.floor(nitro/1*10)) else nos = 0 end dxDrawImage(SizeX - 250,SizeY - 250, 230, 230, "img/panel.png", 0,0,0 ) dxDrawImage(SizeX - 390,SizeY - 250, 230, 230, "img/benz.png", 0,0,0 ) dxDrawImage(SizeX - 447,SizeY - 220, 170, 170, "img/nospan.png", 0,0,0 ) dxDrawImage(SizeX - 250,SizeY - 250, 230, 230, "img/arrow.png", Speed,0,0 ) dxDrawImage(SizeX - 370,SizeY - 250, 230, 230, "img/arrow_nitro_benz.png", fuel * 3.12,0,0 ) dxDrawImage(SizeX - 430,SizeY - 220, 170, 170, "img/arrow_nitro_benz.png", nitro/1*155,0,0 ) dxDrawImage(SizeX - 143,SizeY - 57, 20, 19, lignths, 0,0,0 ) dxDrawImage(SizeX - 198,SizeY - 73, 20, 19, l_p, 0,0,0 ) dxDrawImage(SizeX - 90,SizeY - 73, 20, 19, p_p, 0,0,0 ) dxDrawText(""..nos.." Nit. ".. Count .." Nos.",SizeX,SizeY - 130, SizeX - 315,SizeY, tocolor(255,255,255,255), 0.4,0.4, font,"right","center") dxDrawText(tostring ( getFormatSpeed ( vehs )),SizeX,SizeY - 265, SizeX - 110,SizeY, tocolor(255,255,255,255), 0.8,0.8, font,"right","center") dxDrawText(tostring (math.round (fuel)).." Gas.",SizeX,SizeY - 145, SizeX - 240,SizeY, tocolor(255,255,255,255), 0.4,0.4, font,"right","center") end addEventHandler("onClientRender", root, speedometrs) O velocímetro só aparece para quem está no assento do motorista, caso eu altere para 1, somente quem estiver no assento 1 conseguirá ver. O que eu posso utilizar para que todos dentro do veiculo possam ver o velocímetro?
-
O script precisa ser do lado client por conta de algumas informações, no caso eu posso utilizar triggerServerEvent somente para setar a dimensão/interior? @Resolvido, Server: function coordenada1() setElementPosition(source, 364.90844726563,-11.365772247314+2,1001.8515625 ) setElementInterior(source, 9, 364.90844726563,-11.365772247314+2,1001.8515625) setElementDimension(source, 4) end addEvent("coordenada1", true) addEventHandler("coordenada1", root, coordenada1) function coordenada2() setElementPosition (source, 2420.4567871094,-1508.8905029297+3,24) setElementInterior (source, 0, 2420.4567871094,-1508.8905029297+3,24) setElementDimension(source, 0) end addEvent("coordenada2", true) addEventHandler("coordenada2", root, coordenada2) Client: local Ped_Loja1 = createPed( 120, 369.34680175781,-4.4927525520325,1001.8515625 ) setElementInterior(Ped_Loja1, 9 ) setElementDimension(Ped_Loja1, 4) setElementRotation(Ped_Loja1,-0, 0, 178.03739929199) local Entrar_Loja1 = createMarker(2420.4567871094,-1508.8905029297,24+1, "arrow", 1.5, 255, 255, 0, 255) createBlipAttachedTo(Entrar_Loja1, 17 ) local Sair_Loja1 = createMarker(364.90844726563,-11.365772247314,1001.8515625+1, "arrow", 1.5, 255, 255, 0, 255) setElementInterior(Sair_Loja1, 9) setElementDimension(Sair_Loja1, 4) local Marker_Loja1 = createMarker(369.40029907227,-6.3861293792725,1001.8515625-1, "cylinder", 1.5, 255, 0, 0, 255) setElementInterior(Marker_Loja1, 9) setElementDimension(Marker_Loja1, 4) addEventHandler( "onClientMarkerHit", root, function ( Marker1 ) if Marker1 == localPlayer then if source == Entrar_Loja1 and assalta == true and ativo == true and passivo == false then triggerServerEvent ("coordenada1", localPlayer) exports["notices"]:addNotification("Digite /roubar dentro do marker para assaltar a loja",'info') elseif source == Sair_Loja1 then triggerServerEvent ("coordenada2", localPlayer) end end end )
-
Client: local Ped_Loja1 = createPed( 120, 369.34680175781,-4.4927525520325,1001.8515625 ) setElementInterior(Ped_Loja1, 9 ) setElementDimension(Ped_Loja1, 4) setElementRotation(Ped_Loja1,-0, 0, 178.03739929199) local Entrar_Loja1 = createMarker(2420.4567871094,-1508.8905029297,24+1, "arrow", 1.5, 255, 255, 0, 255) createBlipAttachedTo(Entrar_Loja1, 17 ) local Sair_Loja1 = createMarker(364.90844726563,-11.365772247314,1001.8515625+1, "arrow", 1.5, 255, 255, 0, 255) setElementInterior(Sair_Loja1, 9) setElementDimension(Sair_Loja1, 4) local Marker_Loja1 = createMarker(369.40029907227,-6.3861293792725,1001.8515625-1, "cylinder", 1.5, 255, 0, 0, 255) setElementInterior(Marker_Loja1, 9) setElementDimension(Marker_Loja1, 4) addEventHandler( "onClientMarkerHit", root, function ( Marker1 ) if Marker1 == localPlayer then if source == Entrar_Loja1 and assalta == true and ativo == true and passivo == false then setElementPosition(localPlayer, 364.90844726563,-11.365772247314+2,1001.8515625 ) setElementInterior(localPlayer, 9, 364.90844726563,-11.365772247314+2,1001.8515625) setElementDimension(localPlayer, 4) exports["notices"]:addNotification("Digite /roubar dentro do marker para assaltar a loja",'info') elseif source == Sair_Loja1 then setElementPosition (localPlayer, 2420.4567871094,-1508.8905029297+3,24) setElementInterior (localPlayer, 0, 2420.4567871094,-1508.8905029297+3,24) setElementDimension(localPlayer, 0) end end end ) Em um servidor local com 2 computadores, o computador principal entra no marker Entrar_Loja1 e é movido com sucesso para dimensão 4 interior 9. Já o computador secundário ao entrar no marker Entrar_Loja1 é movido, porém sua dimensão e interior continuam 0. Em um servidor publico com 3 jogadores, o computador principal continua se movendo com sucesso para dimensão e interior. Já os demais jogadores continuam com o problema do computador secundário. O computador principal a que me refiro é o meu. Nenhum erro é gerado no debugscript.
-
concecissonaria ajuda com salvar sistema
SidneiJR replied to tcharles2019's topic in Programação em Lua
Testei o mod e funcionou normalmente, porém, é possível comprar veículos sem estar logado. Como pode ver nesta print ficou salvo o veículo que eu comprei como guest. -
Acabei vendo que é possível. Ele salva no server.log o JOIN(IP) e CONNECT(IP - SERIAL). O objetivo é punir jogadores que atrapalham o andamento do servidor e acabam mudando o nick porém o serial e ip são os mesmos.
-
Sabemos que toda vez que um player da /login no servidor automaticamente é salvo no server_auth.log e server.log o login, serial e ip do mesmo. É possível salvar o serial e o ip a parti do momento que ele se conecta no servidor?
-
Eu queria saber se nessa print se trata de um objeto. Ele faz parte de um script de casas, pretendo adicionar acima dele informações da casa, porém como não sei como é criado não consigo identificar no script.
-
Sem erros agora. Obrigado mais uma vez.
-
Não consegui identificar o problema, mas por algum motivo no debug aparece erro no setElementFrozen. O teste que eu tinha feito foi em servidor local, já no servidor com players apresentou esse problema, que aparece de forma aleatória. Fora isso sem problemas no script.