Jump to content

Envio datos desde client a server y queda boolean


Recommended Posts

Hola ando necesitando ayuda con un script, el mismo es el de la clasica Killcam (https://community.multitheftauto.com/index.php?p=resources&s=details&id=5362) pero le quise agregar una seguridad para cuando el jugador que recibe el disparo (Reciever) se desconecte, el mismo sea baneado. Pero no logro hacerlo, he hecho esto:

Client (completo con mi codigo):

function movecamera()
  x, y, z = getElementPosition(camobj)
  th, tj, tk = getElementPosition(tarobj)
  setCameraMatrix(x, y, z, th, tj, tk)
end
function shotfunc()
  if alpha <= 255 and alpha > 0 then
    alpha = alpha - 1
    dxDrawText(text, 576, 544, 778, 601, tocolor(255, 200, 0, alpha), 2, "sans", "center", "top", false, false, false)
  end
end
addEventHandler("onClientRender", root, shotfunc)
text = " "
alpha = 0
function goodguy1()
  dxDrawLine3D(th, tj, tk, th + (hx - th - (hx - th + 0.2)), tj + (hy - tj - (hy - tj + 0.2)), tk + (hz - tk - (hz - tk + 0.2)), tocolor(64, 64, 64, 255))
end
function goodguy2()
  dxDrawLine3D(tv, tb, tn, tv + (hx - tv - (hx - tv + 0.2)), tb + (hy - tb - (hy - tb + 0.2)), tn + (hz - tn - (hz - tn + 0.2)), tocolor(64, 64, 64, 255))
end
function movereciever()
  tv, tb, tn = getElementPosition(target)
  h, j, k = getElementPosition(localPlayer)
  setCameraMatrix(h + 5, j + 5, k + 5, tv, tb, tn)

end

function killcam(tz, tx, tc, hjx, hjy, hjz, bodypart, moving, reciever, weapon) 
  addEventHandler ( "OnClientChatMessage", getRootElement(), function() cancelEvent() end )
  addEventHandler ( "OnClientConsole", getRootElement(), function() cancelEvent() end )
  setGameSpeed(0.05)
  camobj = createObject(327, tz + 2.5, tx + 2.5, tc + 2.5)
  tarobj = createObject(327, tz, tx, tc)
  setElementData(localPlayer,"killca",true)
  setElementAlpha(camobj, 0)
  setElementAlpha(tarobj, 0)
  moveObject(camobj, 4000, hjx + 5, hjy + 5, hjz + 5)
  if bodypart == 9 then
    moveObject(tarobj, 5000, hjx, hjy, hjz + 1)
  else
    moveObject(tarobj, 5000, hjx, hjy, hjz)
  end
  hx = hjx
  hy = hjy
  hz = hjz
  addEventHandler("onClientRender", root, movecamera)
  addEventHandler("onClientRender", root, goodguy1)
  addEventHandler("onClientPlayerQuit", reciever, function ()
if getElementData(reciever,"killca") == true then
playerToBan = getPlayerName(reciever)
triggerServerEvent("banPlayer", getLocalPlayer(), playerToBan)
end
end)
  
  function killz()
    triggerServerEvent("onKillCamFinish", root, localPlayer, reciever, weapon)
    fxAddBlood(hjx, hjy, hjz, 0, 0, 0, 5, 1)
	setElementData(localPlayer,"killca",true)
    removeEventHandler("onClientRender", root, goodguy1)
    setGameSpeed(0.2)
  end
  setTimer(killz, 5000, 1)
  if bodypart == 3 then
    if moving then
      text = "KILL EN MOVIMIENTO"
    else
      text = "KILL"
    end
  elseif bodypart == 4 then
    if moving then
      text = "Kill en movimiento! ¡Le diste en los testiculos a "..getPlayerName(reciever):gsub("#%x%x%x%x%x%x", "")..""
    else
      text = "¡Le diste en los testiculos a "..getPlayerName(reciever):gsub("#%x%x%x%x%x%x", "").."!"
    end
  elseif bodypart == 9 then
    if moving then
      text = "HEADSHOT en movimiento a "..getPlayerName(reciever):gsub("#%x%x%x%x%x%x", "")
    else
      text = "HEADSHOT a "..getPlayerName(reciever):gsub("#%x%x%x%x%x%x", "")
    end
  end
  function setnormalcam()
    removeEventHandler("onClientRender", root, movecamera)
    setCameraTarget(localPlayer)
    destroyElement(camobj)
    setGameSpeed(1.2)
	setElementData(localPlayer,"killca",false)
    alpha = 255
  end
  setTimer(setnormalcam, 6000, 1)
end
addEvent("onSniperHeadshot", true)
addEventHandler("onSniperHeadshot", root, killcam)
function recievehs(shx, shy, shz, hitx, hity, hitz)
  setGameSpeed(0.05)
  setElementData(localPlayer,"killca",true)
  target = createObject(327, shx, shy, shz)
  setElementAlpha(target, 0)
  moveObject(target, 5000, hitx, hity, hitz)
  hx = hitx
  hy = hity
  hz = hitz
  addEventHandler("onClientRender", root, movereciever)
  addEventHandler("onClientRender", root, goodguy2)
  function gods()
    removeEventHandler("onClientRender", root, goodguy2)
    setGameSpeed(0.2)
	setElementData(localPlayer,"killca",true)
  end
  setTimer(gods, 5000, 1)
  function endcam()
    removeEventHandler("onClientRender", root, movereciever)
    destroyElement(target)
    setCameraTarget(localPlayer)
    setGameSpeed(1.2)
	setElementData(localPlayer,"killca",false)
  end
  setTimer(endcam, 6000, 1)
end
addEvent("onRecieveSniperHeadshot", true)
addEventHandler("onRecieveSniperHeadshot", root, recievehs)
function bloodhead(weapon, ammo, ammoclip, hx, hy, hz, hitelement, sx, sy, sz)
  if weapon == 34 then
    a = hx
    s = hy
    d = hz
    function bloods()
      fxAddBlood(a, s, d, 0, 0, 0, 5, 1)
    end
    setTimer(fxAddBlood, 3500, 1)
  end
end
addEventHandler("onClientWeaponFire", root, bloodhead) 

function godci ()
if getElementData(localPlayer,"killca") == true then
cancelEvent()
end
end
addEventHandler("onClientPlayerDamage",root,godci)

Aqui solo el codigo que agregue yo para que entiendan mejor y no tengan que buscar:

  addEventHandler("onClientPlayerQuit", reciever, function ()
if getElementData(reciever,"killca") == true then
playerToBan = getPlayerName(reciever)
triggerServerEvent("banPlayer", getLocalPlayer(), playerToBan)
end
end)

 

Server:


function banPlr(who) 
		local targetPlayer = getPlayerFromName ( who )
        banPlayer(targetPlayer,false,false,true,root,"Salir de Killcam",14400) 
	    outputChatBox ( "#FE2E2E[LPM.KCProtection] "..who.."#FE2E2E ha sido baneado por salir de Killcam (4 horas).", root, 255, 0, 0, true ) 
   	    outputDebugString ("Jugador "..who.." baneado correctamente por salir de Killcam.")
	end
addEvent("banPlayer", true) 
addEventHandler("banPlayer", getRootElement(), banPlr)

El otro server esta compilado por eso no lo agrego, pero la killcam funciona.

 

El problema esta en el getPlayerFromName, cuando quiero banear al jugador dice que espera recibir el Player, pero recibe un boolean y no se por que, si yo le estoy pasando el string correctamente (ya que en el ChatBox y el DebugString se imprimen correctamente).

 

Espero puedan ayudarme, muchas gracias

Edited by LPM//Bruno
Agregado mi código por separado para que se entienda mejor
Link to comment
function ban_palyer()
  local killcam = source:getData("killca")
  if not killcam then return end
  local name = source:getName()
  source:ban(false,false,true,root,"Salir de Killcam",14400) 
  outputChatBox ( "#FE2E2E[LPM.KCProtection] "..name.."#FE2E2E ha sido baneado por salir de Killcam (4 horas).", root, 255, 0, 0, true ) 
  outputDebugString ("Jugador "..name.." baneado correctamente por salir de Killcam.")
end
addEvenHandler("onPlayerQuit", root, ban_palyer)

prueba con esto ya que veo innecesario usar un trigger

Edited by alex17"
Link to comment
1 hour ago, alex17" said:

function ban_palyer()
  local killcam = source:getData("killca")
  if not killcam then return end
  local name = source:getName()
  source:ban(false,false,true,root,"Salir de Killcam",14400) 
  outputChatBox ( "#FE2E2E[LPM.KCProtection] "..name.."#FE2E2E ha sido baneado por salir de Killcam (4 horas).", root, 255, 0, 0, true ) 
  outputDebugString ("Jugador "..name.." baneado correctamente por salir de Killcam.")
end
addEvenHandler("onPlayerQuit", root, ban_palyer)

prueba con esto ya que veo innecesario usar un trigger

Creo que con eso kickearia a las 2 personas que están en la Killcam, no solo al reciever que es lo que necesito, de todos modos ahora lo pruebo y te comento como me fué, muchas gracias!

Link to comment
9 minutes ago, LPM//Bruno said:

Creo que con eso kickearia a las 2 personas que están en la Killcam, no solo al reciever que es lo que necesito, de todos modos ahora lo pruebo y te comento como me fué, muchas gracias!

no, solo baneara al que salio estando en la killcam

Link to comment
15 minutes ago, alex17" said:

no, solo baneara al que salio estando en la killcam

Me mostró este error https://prnt.sc/fkc5uo

ZR2KbuLtQ9mGDmy80YX9EQ.jpeg

11 minutes ago, LPM//Bruno said:

Me mostró este error https://prnt.sc/fkc5uo

ZR2KbuLtQ9mGDmy80YX9EQ.jpeg

Lo solucioné cambiando la sintaxis OOP por las tradicionales pero ahora al salirme de killcam se produce un loop y me banea infinitas veces hasta que me desconecto (agrega muchas veces el ban y los chatBox)

Ya lo solucioné, muchas gracias!

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...