Jump to content

DNL291

Retired Staff
  • Posts

    3,875
  • Joined

  • Days Won

    67

Everything posted by DNL291

  1. Como você mesmo disse, basta trocar createColCuboid por createMarker, na linha 45 é onde você pode fazer isso. E editar a tabela turfPos pra deixar apenas as coordenadas da marca. Fora isso, você vai precisar editar algumas coisas como "onMarkerHit" no lugar do evento de colisão do colshape.
  2. Tópico movido. Mostre seu código por favor.
  3. Try using isPedDead inside the onTimer function or use onPlayerWasted and search for the player being arrested and release him.
  4. Basta colocar uma condição verificando a arma antes de executar killPed: if bodypart == 9 and weapon == 34 then if triggerEvent("onPlayerHeadshot", source, attacker, weapon, loss) then killPed(source, attacker, weapon, bodypart) end end Na verdade isso também é aceito em Lua. Seria o mesmo que print "Hello". Claro que usando isso, não vai ser possível colocar os outros argumentos.
  5. Nenhum 'programa' faz isso, na verdade é resource. Este aqui se não me engano funciona com o freeroam: https://community.multitheftauto.com/index.php?p=resources&s=details&id=488 Se você quiser fazer funcionar com o painel Admin, vai precisar editar ele como disse Lord Henry.
  6. I don't know if I understood you well, anyway: Firstly, try using this function to create the marker at a specific position of the object: function getPositionFromElementOffset(element,offX,offY,offZ) local m = getElementMatrix ( element ) -- Get the matrix local x = offX * m[1][1] + offY * m[2][1] + offZ * m[3][1] + m[4][1] -- Apply transform local y = offX * m[1][2] + offY * m[2][2] + offZ * m[3][2] + m[4][2] local z = offX * m[1][3] + offY * m[2][3] + offZ * m[3][3] + m[4][3] return x, y, z -- Return the transformed point end Done that, you can set the player in front the mark that way: local playerRot = 0 -- you'll need to adjust player rotation local playerX = markerX + math.sin( math.rad( playerRot ) ) * .6 local playerY = markerY + math.cos( math.rad( playerRot ) ) * .6 setElementPosition( player, playerX, playerY, markerZ+1 ) setElementRotation( player, 0, 0, ( 360-playerRot ) ) If you change the object rotation, you'll also need to calculate the corresponding player's rotation in the pirate ship.
  7. O script de chat do freeroam fica no fr_server.lua em "onPlayerChat".
  8. Você tá criando o objeto e chamando a função do outro resource dentro do "onClientRender". Digite /debugscript 3 e veja o que o debug mostra.
  9. Esqueceram o x da questão O problema é que você usa uma variável pra criar todos retângulos de colisão num loop, mas oque fica, é a última col da tabela. Apenas coloque resourceRoot, no lugar de 'zona' em onColShapeHit/Leave. E sobre a váriável zona, você pode tirar ela. E pRadarArea deixe local.
  10. Coloque dentro da função skins: index = tonumber(index)
  11. addEventHandler( "onMarkerHit", resourceRoot, function( hitPlayer ) if getElementType(hitPlayer) == "player" then local g_team = getPlayerTeam(hitPlayer) local marker_id = getElementID(source) outputChatBox("@marker_id: "..tostring(marker_id)) if g_team and getTeamName(g_team) == marker_id:sub( 1, #marker_id-2 ) then outputChatBox("@teamName: "..tostring(getTeamName(g_team))) skins( hitPlayer, marker_id:sub( #marker_id ) ) end end end ) function skins(thePlayer, index) local team = getPlayerTeam( thePlayer ) if not team or not index then return end outputChatBox("@index: "..tostring(index)) outputChatBox("@thePlayer: "..tostring(thePlayer)) local table_data = pos[getTeamName(team)] or false outputChatBox("@table_data: "..tostring(table_data)) if table_data and table_data[index] then outputChatBox("@table_data[index]: "..tostring(table_data[index])) local skinID = table_data[index][4] -- skins 276, 234 outputChatBox("@skinID: "..tostring(skinID)) setElementModel(thePlayer, skinID) outputChatBox (getPlayerName(thePlayer).." você trocou sua skin",thePlayer, 0, 255, 0,true) end end Faça um teste usando essas duas funções e mostre aqui todas saídas no chat, por favor.
  12. function Nightmare() setTimer(sound, 900,0) end addEventHandler("onClientResourceStart",getResourceRootElement(getThisResource()),Nightmare) function sound() local hour,minutes = getTime() if hour == 06 and minutes == 0 then playSound("day.mp3") elseif hour == 12 and minutes == 0 then playSound("day.mp3") elseif hour == 15 and minutes == 0 then playSound("night.mp3") elseif hour == 20 and minutes == 0 then playSound("night.mp3") --setSoundVolume(sound,50.0) end end Try it.
  13. Substitua id com marker_id (na condição e na função skins).
  14. Tente isto: -- criando as marcas function createMarkersSkins () for k, v in pairs(pos) do for i=1, #v do local x, y, z = unpack(pos[k][i]) setElementID( createMarker(x, y, z, "cylinder", 1.5, 200 ,200, 0, 155), k.."-"..tostring(i) ) end end end addEventHandler("onResourceStart", resourceRoot, createMarkersSkins) addEventHandler( "onMarkerHit", resourceRoot, function( hitPlayer ) if getElementType(hitPlayer) == "player" then local g_team = getPlayerTeam(hitPlayer) local marker_id = getElementID(source) if g_team and getTeamName(g_team) == marker_id:sub( 1, #id-2 ) then skins( hitPlayer, marker_id:sub( #id ) ) end end end ) function skins(thePlayer, index) local team = getPlayerTeam( thePlayer ) if not team or not index then return end local table_data = pos[getTeamName(team)] or false if table_data and table_data[index] then local skinID = table_data[index][4] -- skins 276, 234 setElementModel(thePlayer, skinID) outputChatBox (getPlayerName(thePlayer).." você trocou sua skin",thePlayer, 0, 255, 0,true) end end Se não funcionar, digite /debugscript 3 e veja se o debug mostra algum erro.
  15. Só colocar dentro da própria tabela das coordenadas: {2346.400390625,-1272.5,26.89999961853, 101}, -- sobre {2339.8999023438,-1272.5,26.89999961853, 102}, {2333.5000000000,-1272.5,26.89999961853, 103}, {2325.400390625,-1272.5,26.89999961853, 104}, -- function skins(thePlayer) local team = getPlayerTeam( thePlayer ) if not team then return outputChatBox( "Você não está em nenhuma equipe", thePlayer ) end local table_data = pos[getTeamName(team)] or false if table_data then local skinID = table_data[1][4] -- skin 101 setElementModel(thePlayer, skinID) outputChatBox (getPlayerName(thePlayer).." você trocou sua skin",thePlayer, 0, 255, 0,true) end end
  16. DNL291

    Error

    Show us what error you got from debug.
  17. Esses grupos de coordenadas seriam para respectivos times ? Se eu entendi bem, você pode fazer assim: local pos = { ["SOBREVIVENTE"]= { {2346.400390625,-1272.5,26.89999961853}, -- sobre {2339.8999023438,-1272.5,26.89999961853}, {2333.5000000000,-1272.5,26.89999961853}, {2325.400390625,-1272.5,26.89999961853}, teamSkin = 71 }, ["ASSASSINO"]= { {2346.400390625,-1272.5,26.89999961853}, -- assssino {2339.8999023438,-1272.5,26.89999961853}, {2333.5000000000,-1272.5,26.89999961853}, {2325.400390625,-1272.5,26.89999961853}, teamSkin = 73 }, } -- criando as marcas function createMarkersSkins () for k, v in pairs(pos) do for i=1, #v do local x, y, z = unpack(pos[k][i]) setElementID( createMarker(x, y, z, "cylinder", 1.5, 200 ,200, 0, 155), k ) end end end addEventHandler("onResourceStart", resourceRoot, createMarkersSkins) addEventHandler( "onMarkerHit", resourceRoot, function( hitPlayer ) if getElementType(hitPlayer) == "player" then local g_team = getPlayerTeam(hitPlayer) if g_team and getTeamName(g_team) == getElementID(source) then end end end ) function skins(thePlayer) local team = getPlayerTeam( thePlayer ) if not team then return outputChatBox( "Você não está em nenhuma equipe", thePlayer ) end local table_data = pos[getTeamName(team)] or false if table_data then setElementModel(thePlayer, table_data.teamSkin) outputChatBox (getPlayerName(thePlayer).." você trocou sua skin",thePlayer, 0, 255, 0,true) end end Coloquei identificação para as marcas, caso seja necessário obter qual o time que ela pertence.
  18. DNL291

    Error

    Could you describe better how your script should work? I have no idea how it supposed to work by looking at the code.
  19. If the "Player" parameter is returning the command name then I assume your script is client-side. Change it to server and it should work.
  20. Sobre as kills/deaths você pode salvar os dados na conta do jogador quando: sair do servidor/deslogar da conta/o resource for parado. Para salvar os veículos, você pode usar um banco de dados; também é possível salvar na conta, mas usando a 1º opção acredito ser mais fácil.
  21. Try using onPlayerCommand and getCommandHandlers.
  22. Try setting 'false' to the player's element-data: function updatePlayersInArena() arenaPlayers = {} setElementData( source, "arenaTag", false ) local players = getElementsByType("player") for i,player in ipairs(players) do if getElementData(player,"arenaTag") then table.insert(arenaPlayers,player) end end if #arenaPlayers <= 0 then outputChatBox("Arena is empty, setting default state") setRaceState("none") end end addEventHandler( "onPlayerQuit", getRootElement(), updatePlayersInArena)
  23. From what I understood, if a player is on the arena and he quits the server, his element-data "arenaTag" will still be active until the whole function is executed, and in this case, arenaPlayers wouldn't return 0 players. Although, I'm not sure if getElementsByType function inside "onPlayerQuit" event includes the player who left the server.
×
×
  • Create New...