LPM//Bruno Posted June 15, 2017 Share Posted June 15, 2017 (edited) 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 June 15, 2017 by LPM//Bruno Agregado mi código por separado para que se entienda mejor Link to comment
alex17" Posted June 16, 2017 Share Posted June 16, 2017 (edited) 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 June 16, 2017 by alex17" Link to comment
LPM//Bruno Posted June 16, 2017 Author Share Posted June 16, 2017 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
alex17" Posted June 16, 2017 Share Posted June 16, 2017 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
LPM//Bruno Posted June 16, 2017 Author Share Posted June 16, 2017 15 minutes ago, alex17" said: no, solo baneara al que salio estando en la killcam Me mostró este error https://prnt.sc/fkc5uo 11 minutes ago, LPM//Bruno said: Me mostró este error https://prnt.sc/fkc5uo 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
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now