[M]ister Posted March 24, 2013 Share Posted March 24, 2013 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
[M]ister Posted March 24, 2013 Author Share Posted March 24, 2013 Depois que eu removi as linhas 38, 49 e na linha 40 o and (theWL >0) o resource pegou Link to comment
DNL291 Posted March 24, 2013 Share Posted March 24, 2013 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
[M]ister Posted March 24, 2013 Author Share Posted March 24, 2013 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
[M]ister Posted March 24, 2013 Author Share Posted March 24, 2013 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
manawydan Posted March 24, 2013 Share Posted March 24, 2013 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
DNL291 Posted March 25, 2013 Share Posted March 25, 2013 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
[M]ister Posted March 25, 2013 Author Share Posted March 25, 2013 (edited) ... Edited March 30, 2013 by Guest Link to comment
ixjf Posted March 25, 2013 Share Posted March 25, 2013 A função getRootElement não é chamada sempre que um recurso é iniciado, não tem nada haver. Quando você atribui um evento a uma função, você pode escolher a que elemento o evento será chamado. Como getRootElement retorna o elemento mais alto da árvore (https://wiki.multitheftauto.com/wiki/Element_tree), o evento é atribuído a todos os elementos "filhos" deste. Link to comment
manawydan Posted March 25, 2013 Share Posted March 25, 2013 Não existe o evento onPedDamage então me desculpe pensei que existisse. Link to comment
DNL291 Posted March 25, 2013 Share Posted March 25, 2013 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
[M]ister Posted March 30, 2013 Author Share Posted March 30, 2013 Pessoal, não pegou aqui o skin com vida infinita, eu fiz como vcs falaram, mais mesmo assim ele morre Link to comment
manawydan Posted March 30, 2013 Share Posted March 30, 2013 o que voce quer exatamente fazer? criar um ped e deixar ele imune a morte? Link to comment
manawydan Posted March 30, 2013 Share Posted March 30, 2013 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
RaceXtreme Posted March 30, 2013 Share Posted March 30, 2013 O script feito pelo manawydan dá certo sim. [Testado] A imagem abaixo dá uma ideia dos testes que eu fiz Abra a imagem em outra guia para melhor visualização! Link to comment
[M]ister Posted March 31, 2013 Author Share Posted March 31, 2013 Manawydan muito obg, como o RaceXtreme mostrou pegou mesmo, eu tbm fiz o teste e comprovei, cara vc me ajudo muito, tava quebrando a cabeça para tentar fazer isto rsrsrsrsrs Link to comment
DNL291 Posted March 31, 2013 Share Posted March 31, 2013 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
manawydan Posted March 31, 2013 Share Posted March 31, 2013 de nada e desculpe pelo uso do getRootElement() (eu sempre esqueço isso) 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