Jump to content

Me ajudem a encontrar o erro nesse script PF


Recommended Posts

Olá pessoal, eu queria criar um server de MTA com um sistema de prisão, ai eu baixei este resource da comunidade https://community.multitheftauto.com/index.php?p=resources&s=details&id=5110, mais quando eu tento bater em um player com o cassetete, ele ñ vai preso, simplesmente era para quando eu batesse nele com o cassetete erá para ele ir teleportado para a prisão, e eu gostaria muito que vocês me ajudasse eu a resolver este problema

createBlip ( 1552.4996337891, -1677.3264160156, 15.1953125, 30 ) 
createBlip ( -1604.5458984375, 712.25848388672, 12.8671875, 30 ) 
createBlip ( 2340.9245605469, 2456.0463867188, 13.96875, 30 ) 
  
function createSAPDTeam () 
    SAPDteam = createTeam ("police", 100, 149, 237) 
end 
addEventHandler ("onResourceStart", resourceRoot, createSAPDTeam) 
  
function joinSAPD() 
     setPlayerTeam(source,SAPDteam) 
     setElementModel(source, 280) 
      giveWeapon ( source, 3 ) 
      playeraccount = getPlayerAccount( source ) 
     setAccountData( playeraccount, "team", "police", true ) 
     outputChatBox("You are now SAPD agent.",source,0,255,0) 
end 
addEvent("setSAPD", true) 
addEventHandler("setSAPD",root,joinSAPD) 
  
 function removeSAPD() 
    setPlayerTeam(source, 0) 
    takeWeapon(source, 3) 
    playeraccount = getPlayerAccount(source) 
    if getAccountData(playeraccount, "standardskin") == 0 then 
    setElementModel(source, 0) 
    else 
    setElementModel(source,getAccountData(playeraccount,"standardskin")) 
     end 
     outputChatBox("You are now an unemployed.",source,255,0,0) 
    end 
    addEvent("removeSAPD", true) 
    addEventHandler("removeSAPD",root,removeSAPD) 
  
function policeJob ( attacker, attackerweapon, bodypart, loss ) 
 if attacker and getElementType(attacker) == "player" then 
        theTeam = getPlayerTeam ( attacker ) 
        theWL = getPlayerWantedLevel ( source ) 
        theSkin = getElementModel ( attacker ) 
        if (attackerweapon == 3) and (loss > 2 ) and (theWL > 0) then 
            if  getTeamName( theTeam ) == "police" or getTeamName( theTeam ) == "SWAT" or getTeamName( theTeam ) == "FBI" then 
                setElementPosition (source, 4076.3999023438, -1788.5, 3.511967, true) 
                theName = getPlayerName ( source ) 
                theCop = getPlayerName ( attacker )   
                outputChatBox ( "You have been jailed by "..theCop.. " for 10 seconds.", source ) 
                local playeraccount = getPlayerAccount ( attacker ) 
                givePlayerMoney (attacker, 100) 
                setTimer ( setElementPosition, 10000, 1, source, 1544.4332275391, -1674.7698974609, 13.688399200439)       
                setPlayerWantedLevel (source, 0) 
                end 
            end 
        end 
    end 
    addEventHandler ("onPlayerDamage", getRootElement(), policeJob) 

Link to comment
  • Moderators

O jogador só seria teleportado se tivesse com 1 nível de procurado para cima. Agora que você removeu isso, vai funcionar, porem vai ficar com bug.

Pois se qualquer um que não esteja com nenhum nível de procurado vai ir preso.

Link to comment
O jogador só seria teleportado se tivesse com 1 nível de procurado para cima. Agora que você removeu isso, vai funcionar, porem vai ficar com bug.

Pois se qualquer um que não esteja com nenhum nível de procurado vai ir preso.

É quando eu percebi isso, já tinha feito a postagem aqui no forum, mais mesmo assim obg

Link to comment
TENTE USA debugscript 3

Manawydan a algum tempo eu já percebo que vc mexe bastante com bot, e eu tenho uma dúvida q eu ñ encontro resposta em lugar algum, eu sei q para vc teve ser simples, mais eu sou novato nisso, e minha dúvida e de como deixar um bot com vida infinita ?

function skins () 
   ped = createPed ( 7, 1265.9000244141, -2025.0999755859, 59.200000762939 ) 
   setPedRotation ( ped, 23.7500610 ) 
   setPedFrozen ( ped, true) 
end 
addEventHandler ( "onResourceStart", getRootElement(), skins) 

Link to comment

voce pode usar cancelEvent

por exemplo:

function cancelPedDamage ( ) 
    cancelEvent()  
end 
addEventHandler ( "onClientPedDamage", getRootElement(), cancelPedDamage ) 

ou

function cancelPedDamage2 ( ) 
    cancelEvent()  
end 
addEventHandler ( "onPedDamage", getRootElement(), cancelPedDamage2 ) 

para especificar o ped voce pode usar setElementData e getElementData ou outras formas.

se voce quer criar bot use o script slothbot( criado por slothman)

Link to comment
  • Moderators

Use sempre resourceRoot no evento onResourceStart/onClientResourceStart invés de getRootElement()/root. A menos que você queira que o evento seja chamado sempre que algum resource for iniciado.

Você pode fazer isso da seguinte forma:

function skins () 
   ped = createPed ( 7, 1265.9000244141, -2025.0999755859, 59.200000762939 ) 
   setPedRotation ( ped, 23.7500610 ) 
   setPedFrozen ( ped, true) 
   triggerClientEvent( root, "cancelPedDamage", root, ped ) 
end 
addEventHandler ( "onResourceStart", resourceRoot, skins) 

Você deve criar uma função do lado client para ser chamada. Não existe o evento onPedDamage.

Se você criar o ped no lado server precisa fazer isso:

Client:

addEvent("cancelPedDamage", true) 
addEventHandler("cancelPedDamage", root,  
    function(thePed) 
        if getElementType(thePed) == "ped" then 
            addEventHandler( "onClientPedDamage", thePed, cancelEvent ) 
        end 
    end 
) 

Se você quer fazer um Bot com o resource Slothbot, leia isso para ver como usá-lo: https://wiki.multitheftauto.com/wiki/Slothman/Slothbot

Link to comment
  • Moderators

MaligNos Você não deve ter entendido o que eu quis dizer. Se você usar getRootElement(), o evento será chamado para todos elementos. No caso do evento onResourceStart, todos resources. Ou seja, use resourceRoot.

Não existe o evento onPedDamage
então me desculpe pensei que existisse.

Muitos pensam que tem no lado server também. Nas próximas versões talvez será adicionado.

Link to comment

server

function skins () 
   ped = createPed ( 7, 1265.9000244141, -2025.0999755859, 59.200000762939 ) 
   setPedRotation ( ped, 23.7500610 ) 
   setPedFrozen ( ped, true) 
   setElementData(ped, "imune", true)  
end 
addEventHandler ( "onResourceStart", getRootElement(), skins) 

client

function cancelPedDamage () 
if (getElementData(source, "imune") == true ) then  
    cancelEvent() 
end 
end 
addEventHandler ( "onClientPedDamage", getRootElement(), cancelPedDamage ) 

tente eu não testei

Link to comment
  • Moderators

O código de Manawydan é melhor porque não tem uso de largura de banda.

Mas o uso de getRootElement() no evento onResourceStart irá criar esse ped sempre que você iniciar um resource.

Use resourceRoot ou o parâmetro do evento startedResource em uma condição de igualdade com getThisResource()

if startedResource == getThisResource() then 

Ou você poderia apenas criar o ped do lado client.

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