[FilterScript] Handcuff System
#1

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 = true
Quando um alvo algemado desconectar serб desalgemado e o responsбvel por algemar terб as algemas devolvidas.
RESET_TO_DISCONNECT = false
Quando 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.
Segunda:
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:
/algemas - Pegar/guardar algemas.

/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.
Administrador RCON:
/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.
Imagens

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:
GitHub
Filterscript
Include
Pastebin
OBS: 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".


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.
Reply
#2

Nice ^^
Reply
#3

Muito bom, como vocк disse, tem muitos pelo forum mas nгo completo que nem o seu!

@topic
Muito Bom, irei usa-lo concerteza!
Reply
#4

Cуdigo bonito, organizado... Nгo olhei todo o cуdigo, mas as partes que vi me agradaram. Bom trabalho e vlw pela colaboraзгo! xD
Reply
#5

Gostei do include. Tive uma grande ideia agora vendo seu script =)
Reply
#6

Nгo analisei o cуdigo para uma melhor avaliaзгo do seu trabalho..
Mas falando da parte do funcionamento vocк estб de parabйns, as animaзхes escolhidas sгo уtimas e tambйm й agradбvel para os jogadores do modo RP/G.. Parabйns.
Reply
#7

Уtimo cуdigo, уtimo desempenho, уtimas animaзхes. Parabйns.
10/10
Reply
#8

Cуdigo realmente muito bem organizado!
Nгo testei e nгo vou testar, nгo jogo mais samp, mas com certeza й um script bem eficiente.
Quote:

You must spread some Reputation around before giving it to Bruno13 again.

Reply
#9

Obrigado a todos pelo feedback, fico bem contente
Reply
#10

Bom trabalho
Reply


Forum Jump:


Users browsing this thread: 2 Guest(s)