19.07.2016, 03:12
(
Last edited by Bruno13; 18/01/2017 at 08:49 PM.
)
Handcuff System
Log
Code:
19/07/2016 0.1.0 - Lanзado Handcuff System beta
Introduзгo
Na falta de um sistema completo de algemas, que contasse com a aplicaзгo de animaзхes com aquele toque boiola de realidade e controle sobre as imobilizaзхes, decidi desenvolver um.
Dei uma pesquisada pra ver se havia algum semelhante jб feito e atй encontrei alguns, mas ainda muito incompletos. Setei a posiзгo correta do attachment das algemas para cada skin, algumas ficaram inviбveis de deixar melhor posicionado por causa da skin ser realmente uma merda, fora isso nada a se preocupar.
O posicionamento correto do attachment das algemas para cada skin tambйm foi um dos fatores que levei em consideraзгo ao desenvolver esse sistema. Dificilmente se vк tamanho trabalho sendo disponibilizado, eu sou a prova disso, ainda fazendo o uso de um attachment editor(que desenvolvi para esse intuito) passei um trabalho da porra.
Tambйm documentei todo o cуdigo, podem me agradecer depois, ou nгo.
Funcionalidade
Antes de mais nada vamos falar sobre 3 definiзхes que vocк precisa configurar.
Primeira:
RESET_TO_DISCONNECT = trueSegunda:Quando um alvo algemado desconectar serб desalgemado e o responsбvel por algemar terб as algemas devolvidas.RESET_TO_DISCONNECT = falseQuando um alvo algemado desconectar, apуs conectar novamente serб algemado e o responsбvel por algemar continuarб com o par de algemas em uso, porйm este tem a opзгo de descartar as chaves das algemas do alvo enquanto o mesmo estiver desconectado, assim ele perderб o par de algemas utilizado e o alvo nгo serб mais algemado quando conectar novamente.
OBS: Nгo й possнvel descartar as chaves das algemas de um alvo conectado.
MAX_HANDCUFFS definirб o mбximo de algemas possнveis de se portar, e isso terб um desempenho muito importante no cуdigo(cбlculos, definiзхes de matrizes e etc). Por padrгo vem definido como 5, pois de maneira realista e programmer sense imaginei que uma pessoa carregar 5 algemas seria aceitбvel...seria interessante se vocк tambйm seguisse esse padrгo de realidade e programmer sense, e nгo abusasse com um valor absurdo, seu porra .Terceira:
Por tudo que й menos sagrado(sim sou ateu) defina o nъmero certo de MAX_PLAYERS que seu servidor usa...cells estгo correndo perigo, e o aborto de cells ainda nгo foi legalizado, entгo seja consciente.OBS: Todas essas definiзхes vocк encontra na parte comentada com "CODE DEFINITIONS" no cуdigo. Basta usar seu ctrl+f e pesquisar por "CODE DEFINITIONS", nem preciso dizer que й sem as aspas nй?
Ah, e falando em definiзгo, tambйm seria interessante ressaltar que no cуdigo faзo referencias ao jogador algemado(alvo) como "suspeito", por sempre assimilar uma pessoa algemada como um suspeito na visгo policial.
A funcionalidade й simples, nada complicado. Vocк deve possuir pelo menos um par de algemas para conseguir imobilizar um alvo. Para algemar o alvo selecionado, antes de tudo deve estar com as algemas em mгos(usando /algemas), e entгo vocк deve se posicionar com sua skin de frente para as costas desse alvo, no caso estar de frente para as suas costas(uma TextDraw indicarб se vocк estб posicionado corretamente e qual aзгo que irб ser tomada ao teclar KEY_NO: algemar ou desalgemar). Apуs estar posicionado, deve teclar KEY_NO e serб dado inicio ao algemamento.
Quando vocк algemar um alvo, o par de algemas logicamente ficarб nas mгos do mesmo, e o que ficarб com vocк serгo as chaves dessas algemas, e vocк pode ver as chaves de todos alvos que algemou utilizando /chaves. Uma lista em dialog serб exibida com os nomes, selecionado algum deles, vocк pode ver a quanto tempo o alvo em questгo estб algemado e quando ocorreu a imobilizaзгo. Se 'RESET_TO_DISCONNECT = false' vocк tambйm tem a opзгo de descartar as chaves de qualquer alvo que estiver OFFLINE.
Para desalgemar basta se aproximar, e no mesmo posicionamento sobre seu alvo teclar KEY_NO.
MEGA OBS: Quando um jogador que algemou algum alvo desconectar, todos que este algemou serгo desalgemados, tanto estando online ou offline.
Eu teria mais para falar, mas evitando tуpico muito extenso e usuбrios reclamando que escrevo muito, fiz um vнdeo para mostrar o uso das algemas e o que acontece em alguns casos...veja no prуximo tуpico abaixo.
Comandos:
Jogador:Imagens/algemas - Pegar/guardar algemas.Administrador RCON:
/chaves - Lista em um dialog todos suspeitos que o jogador algemou, fornecendo informaзхes sobre a imobilizaзгo, e se 'RESET_TO_DISCONNECT = false' tambйm oferece a opзгo para descartar as chaves de um jogador offline./dar_algemas - Da a um jogador especнfico a quantia especificada de algemas. O valor nгo pode ser maior que MAX_HANDCUFFS.
/remover_algemas - Remove de um jogador especнfico todas suas algemas e desalgema todos os suspeitos que este algemou.
/painel_algemas - Controle sobre todas as algemas do servidor (ver informaзхes sobre suspeitos algemados e todos os suspeitos que um jogador especнfico algemou).
/desalgemar <id do jogador> - Desalgemar um jogador especнfico. As algemas sгo devolvidas ao responsбvel.
/desalgemar_off <nome do jogador> - (RESET_TO_DISCONNECT = false) Desalgemar um jogador especнfico desconectado. As algemas sгo devolvidas ao responsбvel.
Segue vнdeo de funcionamento do sistema:
https://www.youtube.com/watch?v=eKKUUYswwBE
Imagens:
http://imgur.com/a/XGyE8
Download
Finalmente chegamos...й aqui que se separa os homens dos moleques, utilizar include ou adicionar mais um FS a sua pasta sobrecarregada.
Por favor ignore o dito acima, na verdade ninguйm estб nem ai para qual maneira vocк irб utilizar um sistema, ainda mais meu.
Bom vamos as opзхes:
GitHubOBS: Se vocк optar por utilizar a include, deverбs criar os comandos descritos acima em seu GM, pois os mesmos sу estгo no FS. Todas as funзхes disponibilizadas pela include estгo expostas no comentбrio inicial do cуdigo em "INCLUDE FUNCTIONS".
Filterscript
Include
Pastebin
Conclusгo
Bom, chegou a parte em que peзo a todos que relatem quaisquer tipos de bug que encontrarem, й um sistema cheio de gatilhos entгo qualquer parte que nгo testei pode ser um grande problema. Se puderem mandem o bug por PM, ou se for muito escrotesco podem enviar aqui no tуpico mesmo...mentira, sem spam, PM!
Pretendo seguir com alguns adicionais a mais nesse sistema, nгo me recordo agora(ontem eu lembrava) mas tenho tudo anotado. Se o mundo quiser prossigo com o restante, espero que aquele chatlog nгo fique vazio :/
Estou tambйm aberto a ideias, criticas construtivas e destrutivas.
Crйditos
Todas funзхes que usei adicionais(que estгo descritas no esqueleto do cуdigo como "COMPLEMENTS") deixei os crйditos dos autores, os que encontrei pelo menos.
Agradecimento aos criadores de zcmd, sscanf e a_samp.inc().
Crйditos e ideia do sistema pertencem a Bruno13.