Jump to content

Paraquedismo


Recommended Posts

bom, estou criando um sistema de paraquedismo, onde depois de digitar o /pular no marker, o jogador é teleportado para o topo do mapa com um parachute, onde tem que cair dentro do marker1, alguém pode me ajudar a corrigir e melhorar esse script.

gostaria que se o jogador sair dentro do marker 1, ele ganha 5000$ e depois de cair dentro e receber o dinheiro o marker1 é destruído, o mesmo acontece quando o jogador cai fora do marker1, mais se cair fora do marker1 ele não ganha o dinheiro e o marker1 é destuído, não estou conseguindo fazer.

está apresentando o seguinte erro WARNING: paraquedismo\server.lua:34: Bad argument @ 'addEventHandler' [Expected element at argument 2, got nil]

local Marker = createMarker ( -2235.21, -1736.60, 479.80, "cylinder", 2.5, 0, 0, 255, 170 ) 
  
function paraquedismo ( thePlayer, matchingDimension ) 
    if isElementWithinMarker( thePlayer, Marker) then 
    outputChatBox("Para pular de paraquedas digite /pular!", thePlayer, 255, 0, 0) 
    end 
end 
addEventHandler ("onMarkerHit", Marker, paraquedismo) 
  
  
function pular ( playerSource, matchingDimension ) 
    if isElementWithinMarker( playerSource, Marker) then 
    setElementPosition( playerSource, -2235.21, -1736.60, 1300.80 ) 
    giveWeapon ( playerSource, 46 ) 
    setPedWeaponSlot(playerSource, getSlotFromWeapon(46)) 
    outputChatBox("Caia no Alvo para ganhar 5000$!", thePlayer, 255, 0, 0) 
    local Marker1 = createMarker ( -2407.97, -596.58, 131.80, "cylinder", 7.0, 0, 0, 255, 170 ) 
    local blip1 = createBlip( -2407.97, -596.58, 132.64, 0, 0, 0, 255, 255 ) 
    setBlipSize ( blip1, 5 ) 
    else 
    outputChatBox("Você não está na área de Paraquedismo!", thePlayer, 255, 0, 0) 
    end 
end 
addCommandHandler ( "pular", pular ) 
  
function cairmarker ( playerSource, matchingDimension ) 
    if isElementWithinMarker( playerSource, Marker1) then 
    givePlayerMoney(playerSource, 5000) 
    outputChatBox("Você ganhou 5000$ por cair no alvo!", playerSource, 255, 0, 0) 
    else 
    outputChatBox("Você não conseguiu cair no Alvo!", playerSource, 255, 0, 0) 
    end 
end 
addEventHandler ("onMarkerHit", Marker1, cairmarker) 

Link to comment

tente isso

local Marker = createMarker ( -2235.21, -1736.60, 479.80, "cylinder", 2.5, 0, 0, 255, 170 ) 
local Marker1=nil 
local blip1=nil 
  
function paraquedismo ( thePlayer, matchingDimension ) 
    if isElementWithinMarker( thePlayer, Marker) then 
    outputChatBox("Para pular de paraquedas digite /pular!", thePlayer, 255, 0, 0) 
    end 
end 
addEventHandler ("onMarkerHit", Marker, paraquedismo) 
  
  
function pular ( playerSource, matchingDimension ) 
    if isElementWithinMarker( playerSource, Marker) then 
    setElementPosition( playerSource, -2235.21, -1736.60, 1300.80 ) 
    giveWeapon ( playerSource, 46 ) 
    setPedWeaponSlot(playerSource, getSlotFromWeapon(46)) 
    outputChatBox("Caia no Alvo para ganhar 5000$!", thePlayer, 255, 0, 0) 
     Marker1 = createMarker ( -2407.97, -596.58, 131.80, "cylinder", 7.0, 0, 0, 255, 170 ) 
     blip1 = createBlip( -2407.97, -596.58, 132.64, 0, 0, 0, 255, 255 ) 
    setBlipSize ( blip1, 5 ) 
    else 
    outputChatBox("Você não está na área de Paraquedismo!", thePlayer, 255, 0, 0) 
    end 
end 
addCommandHandler ( "pular", pular ) 
  
function cairmarker ( playerSource, matchingDimension ) 
    if isElementWithinMarker( playerSource, Marker1) then 
    givePlayerMoney(playerSource, 5000) 
    outputChatBox("Você ganhou 5000$ por cair no alvo!", playerSource, 255, 0, 0) 
    else 
    outputChatBox("Você não conseguiu cair no Alvo!", playerSource, 255, 0, 0) 
    end 
end 
addEventHandler ("onMarkerHit", Marker1, cairmarker) 

Link to comment

manawydan, addEventHandler na linha 36 vai dar erro porquê Marker1 vai retornar nil. A marca só está sendo criada quando digita o comando pular.

mais se cair fora do marker1 ele não ganha o dinheiro e o marker1 é destuído, não estou conseguindo fazer.

Essa parte eu acredito que não será tão fácil. As formas que me vem a mente são:

Verificar com o evento "onClientRender" se o jogador continua com o paraquedas ou não (se não estiver, significa que ele já usou o paraquedas e está no chão) e chamar a função de quando ele cair fora da marca.

Ou, usar a função isPedOnGround novamente no evento "onClientRender", e o evento só deverá ser chamado quando ele sair do chão com o paraquedas.

Pode ter outras maneiras melhores de fazer isso, no entanto.

Talvez o recurso padrão do MTA chamado parachute possa te ajudar nisso, não tenho certeza já que nunca usei ele.

Link to comment

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...