-LeoN- Posted December 28, 2012 Share Posted December 28, 2012 Ola galera estou com um pequeno problema, e que eu quero criar um modo de prisão mais a um pequeno problema meu servidor e Modo freeroam e toda vez quando eu for prender alguem ele pode usar o mapa do freeroam para sair da prisão então eu queria bloquiar algums botoes durante a prisão do player alguem pode me mostrar o codigo para min fazer isso Obrigado. Link to comment
Anderl Posted December 28, 2012 Share Posted December 28, 2012 Ninguém irá criar nada para você de graça. unbindKey toggleControl Link to comment
yMassai Posted December 28, 2012 Share Posted December 28, 2012 Mantenha a utilização do f1 bloqueada para os jogadores que estiverem presos. Link to comment
-LeoN- Posted December 29, 2012 Author Share Posted December 29, 2012 Não estou pedindo para ninguem criar um script para min estou pendido uma ajuda com o unbinKey pq ja tentei bloquiar o F1 e outro botões e não consegui só queria uma pequena ajuda para resouver esse problema Link to comment
Anderl Posted December 29, 2012 Share Posted December 29, 2012 unbindKey só funciona com ações de botões que foram adicionadas com bindKey, que eu saiba. Use onClientKey. Link to comment
-LeoN- Posted December 29, 2012 Author Share Posted December 29, 2012 Muito bem acho que intendi, Mais eu posso criar o script separado com a função unbindKey ou vou ter que adicionar no Freeroam ? Link to comment
Anderl Posted December 29, 2012 Share Posted December 29, 2012 Você pode fazer separado, mas se mudar a tecla no Freeroam tem que mudar no script ( a menos que você faça algo para só ter que mudar uma vez, mas isso já é relacionado com organização de recursos ). Link to comment
-LeoN- Posted December 30, 2012 Author Share Posted December 30, 2012 Parece que vou ter muito trabalho com isso eu sei 4% de linguagem Lua mais vo tentar. Obrigado por me ajudar. Link to comment
yMassai Posted December 31, 2012 Share Posted December 31, 2012 Você deve adicionar esta função junto com o sistema de prisão, seria ilógico retirar o freeroam todo o tempo sendo que você quer apenas tirar quando o jogador esta preso, não é isto? Link to comment
-LeoN- Posted January 1, 2013 Author Share Posted January 1, 2013 Sim e isso msm Ninguem quero bloquiar o F1 quando o individuo for preso e desbloquiar quando ele for solto Link to comment
yMassai Posted January 2, 2013 Share Posted January 2, 2013 então va na função que move o jogador para a prisão e adicione um triggerEvent da função que irá verificar se o jogador está na prisão e irá bloquear o f1, esse é um dos métodos que você pode utilizar, utilize oque você achar melhor. você pode bloquear o f1 quando ele for pra prisão e desbloquear quando sair. Link to comment
-LeoN- Posted January 2, 2013 Author Share Posted January 2, 2013 Ninguem eu adicione o triggerEvent na função que faz o jogador se preso mais o F1 não foi bloquiado sera que eu fiz algo de errado ? Link to comment
DNL291 Posted January 3, 2013 Share Posted January 3, 2013 Use a função unbindKey como já citado acima, ou exporte uma função para verificar se o jogador está preso retornando um valor booleano, Isso caso o script não esteja dentro do recurso Freeroam. Link to comment
yMassai Posted January 3, 2013 Share Posted January 3, 2013 leon, se puder mostrar o script ficaria melhor de nós darmos uma olhada e ver oque você fez errado. Link to comment
-LeoN- Posted January 3, 2013 Author Share Posted January 3, 2013 Command = get("command") rRoot = getResourceRootElement(getThisResource()) function getData(to) local file = xmlLoadFile("data.xml") jTable = {} tTable = {} if file then for k,v in ipairs (xmlNodeGetChildren(xmlFindChild(file,"Jails",0)))do local name = xmlNodeGetAttribute(v,"name") local posX,posY,posZ = xmlNodeGetAttribute(v,"posX"),xmlNodeGetAttribute(v,"posY"),xmlNodeGetAttribute(v,"posZ") local int = xmlNodeGetAttribute(v,"int") local dim = xmlNodeGetAttribute(v,"dim") table.insert(jTable, {name,posX,posY,posZ,int,dim}) end for k,v in ipairs (xmlNodeGetChildren(xmlFindChild(file,"time",0)))do local times = xmlNodeGetAttribute(v,"times") for i =1,50 do local iTime = gettok ( times, i, string.byte(',') ) if iTime then -- if tonumber(iTime) > 59.5 then iTime = math.floor(iTime / 60) iTimeDes = "Minutes" if iTime > 59.5 then iTime = math.floor(iTime / 60) iTimeDes = "Hours" end else iTimeDes = "Seconds" end table.insert(tTable,{iTime,iTimeDes}) end end end end triggerClientEvent(to,"sendDataz",to,jTable,tTable) end addEvent("getDataz",true) addEventHandler("getDataz",root,getData) addCommandHandler ( Command, function ( player, cmd ) if hasObjectPermissionTo ( player, "function.banPlayer" ) then triggerClientEvent(player,"jailShow",player) else outputChatBox(" Access Denied ",player,255,0,0) end end ) anims = { "F_smklean_loop", "M_smklean_loop", "M_smkstnd_loop", "M_smk_drag", "M_smk_in", "M_smk_loop", "M_smk_out", "M_smk_tap" , } function removeVehicle(thePlayer) if isPedInVehicle(thePlayer) then destroyElement(getPedOccupiedVehicle(thePlayer)) end end function JailHim(jailed,theJails,time,timeDes,showWho,timeReady) thePlayer = getPlayerFromName(jailed) if not thePlayer then outputChatBox("** #0088FFPor favor selecione um jogador !",source,255,0,0,true) return end removePedFromVehicle(thePlayer) for k,v in ipairs ( jTable ) do if theJails == v[1] then theJail = v end end if theJail then if tostring(time) then if timeReady == true then theTimex = tonumber(time) else theTimex = gettok ( time, 1, string.byte(timeDes) ) end if timeDes == "Hours" then theTimex = math.floor(theTimex*60*60*1000) elseif timeDes == "Minutes" then theTimex = math.floor(theTimex*60*1000) elseif timeDes == "Seconds" then theTimex = math.floor(theTimex*1000) end startJailTimer ( thePlayer , theTimex ) local x,y,z = theJail[2],theJail[3],theJail[4] local int = theJail[5] local dim = theJail[6] setElementInterior ( thePlayer, int ) setElementDimension ( thePlayer, dim ) setElementPosition (thePlayer,x,y,z ) setElementData(thePlayer,"jailed",true) setElementData(rRoot,""..getPlayerSerial(thePlayer).."-j",true) toggleControl(thePlayer,"fire",false) toggleControl(thePlayer,"aim_weapon",false) toggleControl(thePlayer,"jump",false) unbindKey( thePlayer, "F3" ) if showWho ~= true then outputChatBox("** #0088FF00Você foi preso por [ "..getPlayerName(thePlayer).." #0088FF] na "..theJail[1].." por "..time,source,255,255,255,true) outputChatBox("** #0088FFVocê foi preso por [ "..getPlayerName(source).." #0088FF] na "..theJail[1].." por "..time,thePlayer,255,255,255,true) end outputChatBox("** #0088FF[ "..getPlayerName(thePlayer).." #0088FF] Foi preso por "..time,root,255,255,255,true) local randomAnim setPedAnimation(thePlayer,"",anims[math.random(#anims)],theTimex/1) else outputChatBox("** #0088FFPor favor selecione o tempo !",source,255,0,0,true) end else outputChatBox("** #0088FFPor favor selecione a cadeia !",source,255,0,0,true) end end addEvent("JailHimx",true) addEventHandler("JailHimx",root,JailHim) function unJailHim(jailed,showWho) thePlayer = getPlayerFromName(jailed) if not thePlayer then outputChatBox("** #0088FFPor favor selecione o jagador !",source,255,0,0,true) return end setElementInterior ( thePlayer, 0) setElementDimension ( thePlayer, 0 ) setElementPosition ( thePlayer, 1552.9108886719, -1675.5844726563, 16.1953125) setElementData(thePlayer,"jailed",false) setElementData(rRoot,""..getPlayerSerial(thePlayer).."-j",false) if showWho ~= true then outputChatBox("** #0088FFVocê foi liberado [ "..getPlayerName(thePlayer).." #FFFF00]",source,255,0,0,true) outputChatBox("** #0088FFVocê foi liberado por [ "..getPlayerName(source).." #FFFF00]",thePlayer,255,0,0,true) end outputChatBox("** #0088FF[ "..getPlayerName(thePlayer).." #0088FF] Foi liberado da cadeia ",root,255,0,0,true) setPedAnimation(thePlayer) stopJailTimer(Player) toggleControl(thePlayer,"fire",true) toggleControl(thePlayer,"aim_weapon",true) toggleControl(thePlayer,"jump",true) end addEvent("unJailHim",true) addEventHandler("unJailHim",root,unJailHim) addEvent("onJailEnd",true) addEventHandler("onJailEnd",root,function(player) unJailHim(getPlayerName(player),true) end ) addEventHandler("onPlayerSpawn",root, function() if getElementData(source,"jailed") == true then randomJail = jTable[math.random(#jTable)] if randomJail then x,y,z = randomJail[2],randomJail[3],randomJail[4] int = randomJail[5] dim = randomJail[6] setElementInterior ( source, int ) setElementDimension(source,dim) setElementPosition (source,x,y,z ) end end end) addEventHandler("onPlayerJoin",root, function() if getElementData(rRoot,""..getPlayerSerial(source).."-j") == true then randomJail = jTable[math.random(#jTable)] if randomJail then x,y,z = randomJail[2],randomJail[3],randomJail[4] int = randomJail[5] dim = randomJail[6] setElementInterior ( source, int ) setElementDimension(source,dim) setElementPosition (source,x,y,z ) -- time = getElementData(rRoot,""..getPlayerSerial(source).."-t",time) or 5 * 1000 startJailTimer(source,time) setElementData(source,"jailed",true) end end end ) ---- function startJailTimer(Player,theTime) if Player then TimerDisplay = textCreateDisplay() m,s,cs = msToTimeStr(theTime) fullTime = m..":"..s TimerText = textCreateTextItem ( "Tempo para Sair : "..tostring(fullTime).."", 0.39, 0.7 ,"medium",0,188,255,255,2.0,"left","center",255) textDisplayAddText ( TimerDisplay, TimerText ) textDisplayAddObserver ( TimerDisplay, Player ) sortTimerShit(Player,TimerText,theTime) end end -- function msToTimeStr(ms) if not ms then return '' end if ms < 0 then return "0","00","00" end local centiseconds = tostring(math.floor(math.fmod(ms, 1000)/10)) if #centiseconds == 1 then centiseconds = '0' .. centiseconds end local s = math.floor(ms / 1000) local seconds = tostring(math.fmod(s, 60)) if #seconds == 1 then seconds = '0' .. seconds end local minutes = tostring(math.floor(s / 60)) return minutes, seconds, centiseconds end function sortTimerShit(plr,timer,time) if timer and time then if isTimer(timerShitTimer) then killTimer(timerShitTimer) end timerShitTimer = setTimer(function(plr) time = time - 70 m,s,cs = msToTimeStr(time) fullTime = m..":"..s textItemSetText(timer,"Tempo para Sair : "..tostring(fullTime).."") if plr then setElementData(rRoot,""..getPlayerSerial(plr).."-t",time) end if ( tonumber(m) <= 0 and tonumber(s) <= 0 and tonumber(cs) <= 0 ) then onTimerFinish(plr,timer) end end , 50 , 0 ,plr ) end end function stopJailTimer(Player) textDestroyDisplay(TimerDisplay) if TimerText then textDestroyTextItem(TimerText) end if isTimer(timerShitTimer) then killTimer(timerShitTimer) end Link to comment
RaceXtreme Posted January 6, 2013 Share Posted January 6, 2013 Eu tenho certeza que não foi você quem programou isso tudo! É uma extensão baixada no MTA Community, mas eu não sei qual. Se você pudesse me informar o nome, eu poderia dar uma olhada em todos os arquivos e ver se eu consigo integrar este com o modo de jogo Play -- Eu dei uma olhada no server-script que você enviou e percebi que você nem sequer adicionou a função unbindKey para a tecla F3. E mesmo se adicionar, eu acho que não vai desabilitar o F3 para as funções do freeroam, mas e se desabilitar, não teremos como habilitar de novo, pois a função está no recurso freeroam. O "Ninguem" deu uma boa idea. Podemos usar adicionar um evento customizado dentro do recurso freeroam chamado onJail que vai desabilitar os comandos F1, F3 e etc. E por fim, chamar este "onJail" nos eventos "onPlayerJoin" e "onPlayerSpawn" e nas funções "unJailHim" e "JailHim" deste script. Link to comment
-LeoN- Posted January 20, 2013 Author Share Posted January 20, 2013 O script não e meu eu simples mente queria Usalo no modo play. o script original https://community.multitheftauto.com/index.php?p= ... ls&id=3251 Link to comment
Recommended Posts