├── .eslintrc.js
├── .gitignore
├── Dockerfile
├── LICENSE
├── README.md
├── autosave_map.json
├── bridge
└── runtime
│ ├── Ben.Demystifier.dll
│ ├── Bootstrapper.dll
│ ├── Bootstrapper.xml
│ ├── Colorful.Console.dll
│ ├── NeoSmart.Hashing.dll
│ └── xxHash.dll
├── bt.dat
├── bt_old.dat
├── client
├── index.ts
├── package-lock.json
├── package.json
└── tsconfig.json
├── client_packages
├── MapEditor
│ ├── MapEditor.js
│ ├── Natives.js
│ └── object_data.js
├── client
│ ├── index.js
│ └── index.js.map
├── index.js
├── index.js.map
├── index.ts
├── noclip
│ └── index.js
├── packages
│ └── rpg
│ │ └── interfaces
│ │ ├── brazucas-eventos.js
│ │ └── brazucas-eventos.js.map
└── sistemas
│ └── taxi.js
├── common
├── brazucas-server.js
├── brazucas-server.js.map
├── brazucas-server.ts
├── database
│ ├── config
│ │ └── config.json.dist
│ ├── database.js
│ ├── database.js.map
│ ├── database.ts
│ ├── models
│ │ ├── BancoConta.js
│ │ ├── BancoConta.js.map
│ │ ├── BancoConta.ts
│ │ ├── BancoTipoTransacao.js
│ │ ├── BancoTipoTransacao.js.map
│ │ ├── BancoTipoTransacao.ts
│ │ ├── BancoTransacao.js
│ │ ├── BancoTransacao.js.map
│ │ ├── BancoTransacao.ts
│ │ ├── Jogador.js
│ │ ├── Jogador.js.map
│ │ ├── Jogador.ts
│ │ ├── Notificacao.js
│ │ ├── Notificacao.js.map
│ │ ├── Notificacao.ts
│ │ ├── Profissao.js
│ │ ├── Profissao.js.map
│ │ ├── Profissao.ts
│ │ ├── Propriedade.js
│ │ ├── Propriedade.js.map
│ │ ├── Propriedade.ts
│ │ ├── TipoPropriedade.js
│ │ ├── TipoPropriedade.js.map
│ │ ├── TipoPropriedade.ts
│ │ ├── Veiculo.js
│ │ ├── Veiculo.js.map
│ │ └── Veiculo.ts
│ └── seeders
│ │ ├── 20190127204953-TipoPropriedade.js
│ │ └── 20190128132621-BancoTipoTransacao.js
├── environment.js
├── environment.js.map
├── environment.ts
├── interfaces.js
├── interfaces.js.map
├── interfaces.ts
└── util
│ ├── skins.js
│ ├── skins.js.map
│ ├── skins.ts
│ ├── util.js
│ ├── util.js.map
│ ├── util.ts
│ ├── vehicles.js
│ ├── vehicles.js.map
│ ├── vehicles.ts
│ ├── weapons.js
│ ├── weapons.js.map
│ └── weapons.ts
├── conf.json.dist
├── demo
├── demo1.jpeg
├── demo2.jpeg
├── demo3.png
└── demo4.png
├── docker-compose.yml
├── docker
├── ragemp.yml
└── start_server.sh
├── lib
└── cli.js
├── node.dll
├── package.json
├── packages
├── MapEditor
│ ├── MapEditorServer.js
│ └── index.js
├── index.js
└── rpg
│ ├── consts
│ ├── rpg-consts.js
│ ├── rpg-consts.js.map
│ ├── rpg-consts.ts
│ ├── status.js
│ ├── status.js.map
│ └── status.ts
│ ├── handler
│ ├── playerChat.js
│ ├── playerChat.js.map
│ ├── playerChat.ts
│ ├── playerDeath.js
│ ├── playerDeath.js.map
│ ├── playerDeath.ts
│ ├── playerEnterVehicle.js
│ ├── playerEnterVehicle.js.map
│ ├── playerEnterVehicle.ts
│ ├── playerExitVehicle.js
│ ├── playerExitVehicle.js.map
│ ├── playerExitVehicle.ts
│ ├── playerJoin.js
│ ├── playerJoin.js.map
│ ├── playerJoin.ts
│ ├── playerQuit.js
│ ├── playerQuit.js.map
│ └── playerQuit.ts
│ ├── index.js
│ ├── index.js.map
│ ├── index.ts
│ ├── interfaces
│ ├── brazucas-eventos.js
│ ├── brazucas-eventos.js.map
│ ├── brazucas-eventos.ts
│ ├── death-reason.js
│ ├── death-reason.js.map
│ ├── death-reason.ts
│ ├── mp.veiculo-cor.interface.js
│ ├── mp.veiculo-cor.interface.js.map
│ ├── mp.veiculo-cor.interface.ts
│ ├── player.interface.js
│ ├── player.interface.js.map
│ ├── player.interface.ts
│ ├── veiculo.interface.js
│ ├── veiculo.interface.js.map
│ └── veiculo.interface.ts
│ ├── lib
│ ├── commands
│ │ ├── comandos-admin.js
│ │ ├── comandos-admin.js.map
│ │ ├── comandos-admin.ts
│ │ ├── commands.js
│ │ ├── commands.js.map
│ │ └── commands.ts
│ ├── events
│ │ ├── events.js
│ │ ├── events.js.map
│ │ └── events.ts
│ ├── functions
│ │ ├── bootstrap.js
│ │ ├── bootstrap.js.map
│ │ ├── bootstrap.ts
│ │ ├── player.js
│ │ ├── player.js.map
│ │ └── player.ts
│ └── timers
│ │ ├── player-timer.js
│ │ ├── player-timer.js.map
│ │ ├── player-timer.ts
│ │ ├── vehicles-timer.js
│ │ ├── vehicles-timer.js.map
│ │ └── vehicles-timer.ts
│ ├── maps
│ ├── bulldozer.json
│ ├── bulldozer.xml
│ ├── circulos.json
│ ├── circulos.xml
│ ├── naufragos.json
│ ├── naufragos.xml
│ ├── resta1.json
│ └── resta1.xml
│ ├── providers
│ ├── player.provider.js
│ ├── player.provider.js.map
│ ├── player.provider.ts
│ ├── veiculo.provider.js
│ ├── veiculo.provider.js.map
│ ├── veiculo.provider.ts
│ ├── voice-chat.provider.js
│ ├── voice-chat.provider.js.map
│ └── voice-chat.provider.ts
│ ├── rpg.js
│ ├── rpg.js.map
│ └── rpg.ts
├── server
├── tsconfig.json
├── tslint.json
└── yarn.lock
/.eslintrc.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | 'env': {
3 | 'node': true,
4 | 'es6': true
5 | },
6 | 'extends': 'eslint:recommended',
7 | 'rules': {
8 | 'indent': [2, 4],
9 | 'quotes': [2, 'single', { 'allowTemplateLiterals': true, 'avoidEscape': true } ],
10 | 'semi': [2, 'always'],
11 | 'brace-style': [2, '1tbs'],
12 | 'array-bracket-spacing': [2, 'never'],
13 | 'camelcase': [2, {'properties': 'always'}],
14 | 'keyword-spacing': [2],
15 | 'eol-last': [2],
16 | 'no-trailing-spaces': [2],
17 | 'no-unused-vars': [1]
18 | },
19 | 'globals': {
20 | 'mp': true,
21 | '$': true,
22 | 'document': true,
23 | 'window': true
24 | }
25 | };
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # Logs
2 | logs
3 | *.log
4 | npm-debug.log*
5 | yarn-debug.log*
6 | yarn-error.log*
7 |
8 | # Runtime data
9 | pids
10 | *.pid
11 | *.seed
12 | *.pid.lock
13 |
14 | # Directory for instrumented libs generated by jscoverage/JSCover
15 | lib-cov
16 |
17 | # Coverage directory used by tools like istanbul
18 | coverage
19 |
20 | # nyc test coverage
21 | .nyc_output
22 |
23 | # Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files)
24 | .grunt
25 |
26 | # Bower dependency directory (https://bower.io/)
27 | bower_components
28 |
29 | # node-waf configuration
30 | .lock-wscript
31 |
32 | # Compiled binary addons (http://nodejs.org/api/addons.html)
33 | build/Release
34 |
35 | # Dependency directories
36 | node_modules/
37 | jspm_packages/
38 |
39 | # Typescript v1 declaration files
40 | typings/
41 |
42 | # Optional npm cache directory
43 | .npm
44 |
45 | # Optional eslint cache
46 | .eslintcache
47 |
48 | # Optional REPL history
49 | .node_repl_history
50 |
51 | # Output of 'npm pack'
52 | *.tgz
53 |
54 | # Yarn Integrity file
55 | .yarn-integrity
56 |
57 | # dotenv environment variables file
58 | .env
59 |
60 | *.iml
61 | .idea
62 | .listcache
63 | serviceAccountKey.json
64 | conf.json
65 | /dist
66 |
67 | /common/database/config/config.json
68 |
--------------------------------------------------------------------------------
/Dockerfile:
--------------------------------------------------------------------------------
1 | # Base image from https://github.com/Disinterpreter/docker-ragemp/blob/master/Dockerfile
2 |
3 | FROM debian:jessie
4 |
5 | ENV RAGEMP 0.3.5
6 |
7 | MAINTAINER Disinterpreter "disinterpreter@protonmail.ch" & Pedro Papadópolis
8 |
9 | EXPOSE 20005
10 | EXPOSE 22005/udp
11 | EXPOSE 22006
12 |
13 | RUN echo 'deb http://httpredir.debian.org/debian testing main contrib non-free' > /etc/apt/sources.list && \
14 | apt-get update && \
15 | apt-get install -y -t testing gcc wget && \
16 | apt-get clean
17 |
18 | RUN apt-get update && apt-get install -y --no-install-recommends apt-utils
19 |
20 | RUN apt-get install git python-pip openssh-client -y
21 |
22 | RUN apt-get install curl software-properties-common && \
23 | curl -sL https://deb.nodesource.com/setup_10.x | bash - && \
24 | apt-get install nodejs && \
25 | curl -L https://npmjs.org/install.sh | -
26 |
27 | RUN useradd ragemp && \
28 | # Mountable volume
29 | mkdir /ragemp
30 |
31 | # Download and extract
32 | ADD server /tmp/
33 |
34 | RUN mkdir /opt/x64/ && \
35 | mv /tmp/server /opt/x64/server
36 |
37 | RUN chmod +x /opt/x64/server
38 |
39 | ADD docker/start_server.sh /opt
40 |
41 | RUN chmod +x /opt/start_server.sh
42 |
43 | ENTRYPOINT ["/opt/start_server.sh"]
44 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2017 brazucas
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # REPOSITÓRIO ARQUIVADO
2 | **O servidor agora está sendo desenvolvido com código-fonte fechado, este repositório foi arquivado e permancerá disponível apenas como histórico.**
3 |
4 |
5 |
6 | ================================================
7 |
8 |
9 |
10 |
15 |
16 | # Histórico
17 |
18 | ##### Sobre o Brazuca's
19 |
20 | O Brazuca's é um servidor de jogo de uma modificação do jogo Grand Theft Auto: San Andreas chamado SA-MP (San Andreas Multiplayer), que permite que qualquer pessoa crie seu próprio servidor do jogo e outras pessoas possam jogar nele, utilizando uma API fornecida pelos desenvolvedores do mod. Mais informações em http://sa-mp.com. O Brazuca's surgiu em 2006 e passou por altos e baixos, até que em meados de 2014 passou a ficar praticamente sem jogadores.
21 |
22 | O RageMP (Modificação do jogo GTA: V, que basicamente segue a mesma ideia do SA-MP) é a aposta do Brazuca's para continuar sendo um servidor de GTA popular, nosso objetivo é oferecer a melhor experiência de jogo possível, tanto para jogadores casuais como hardcore.
23 |
24 | ##### Porque não o GTA Network?
25 | Nós iniciamos um projeto lá, mas depois de alguns meses houve um anúncio basicamente dizendo que o GTA Network seria integrado ao RageMP.
26 |
27 | ##### Expectativas
28 |
29 | Nós não daremos dicas, anúncios ou data de lançamento enquanto o servidor não estiver completamente jogável. Tudo relacionamento ao desenvolvimento do servidor estará disponível apenas nesse repositório do GitHUB, sinta-se a vontade para fazer um fork ou "watch" no projeto.
30 |
31 | ##### Código-Aberto?
32 |
33 | Nós manteremos o código aberto até o anúncio oficial da abertura do servidor, ou até mesmo depois disso.
34 |
35 | ##### Objetivo inicial
36 |
37 | A primeira versão do servidor irá contemplar o RPG e os Minigames, nossa ideia, diferente de como era no SA-MP, é manter o servidor online 24/7 no mesmo modo de jogo.
38 |
39 | ##### Roadmap
40 |
41 | É possível acompanhar como está o desenvolvimento de todas as funcionalidades que existirão através da nossa página de [projetos](https://github.com/brazucas/ragemp/projects).
42 |
43 | ##### Posso entrar no time de testes?
44 | Atualmente nosso time de testes está cheio.
45 |
46 | ##### Posso entrar no time de desenvolvimento?
47 |
48 | Claro! o projeto é de código aberto e qualquer um pode contribuir, basta fazer um fork e pull requests.
49 |
50 | # Abrindo o servidor local
51 |
52 | 1. Faça clone do projeto.
53 | 2. Faça uma cópia do arquivo ```conf.json.dist``` para ```conf.json```.
54 | 3. Abra as portas 22005/udp e 22006 no seu firewall.
55 | 4. Baixe e instale o Docker: https://docs.docker.com/install/
56 |
57 | 6. Execute o arquivo utilizando o seguinte comando:
58 | > docker-compose -f docker/ragemp.yml up -d
59 |
60 | Aguarde alguns minutos para que o Docker baixe as imagens e suba os containers.
61 |
62 | 7. Comandos úteis
63 | - Iniciar servidor: ```docker start ragemp_server```.
64 | - Parar servidor: ```docker stop ragemp_server```.
65 | - Reiniciar servidor: ```docker restart ragemp_server```.
66 | - Logs do servidor: ```docker service logs ragemp_server -f```.
67 | - Destruir o stack: ```docker stack rm ragemp```.
68 |
69 | 8. Acesse o servidor pelo RageMP utilizando a opção "Direct Connect", com o IP do seu computador.
70 |
71 | # Contribuindo
72 |
73 | 1. Siga os passos para abrir o servidor local.
74 | 2. Instale o NodeJS, NPM, Typescript, Docker e o Angular CLI.
75 |
76 | - NodeJS: https://nodejs.org/en/download/
77 | - NPM: https://docs.npmjs.com/cli/install
78 | - Typescript: Basta executar o comando ```npm i typescript -g```.
79 | - Angular CLI: Basta executar o comando ```npm i @angular/cli -g```.
80 | - Docker: https://docs.docker.com/install/
81 | 3. Faça instalação dos pacotes:
82 | > npm install
83 |
84 | 4. Inicialize o Docker
85 |
86 | 5. Suba os containers do Docker responsáveis pelo o ambiente de desenvolvimento:
87 | > docker-compose up -d
88 |
89 | Acesse o link: http://localhost:4200/ para acessar o projeto. A página de login, por exemplo, pode ser vista em: http://localhost:4200/#/login.
90 |
91 | 6. Para fazer a build do código client-side para ser utilizado no servidor, execute o seguinte comando:
92 | > docker exec -it ragemp_ragemp_browser_server_1 bash -c "ng build --output-path=../client_packages/browser/ --prod"
93 |
94 | 6. Para parar os containers do Docker execute o seguinte comando:
95 | > docker-compose down
96 |
--------------------------------------------------------------------------------
/autosave_map.json:
--------------------------------------------------------------------------------
1 | [
2 | {
3 | "model": 3748955783,
4 | "x": -758.05517578125,
5 | "y": -2550.11083984375,
6 | "z": 29.65949249267578,
7 | "rx": 0,
8 | "ry": 0,
9 | "rz": 0,
10 | "col": true,
11 | "freeze": true
12 | },
13 | {
14 | "model": 3748955783,
15 | "x": -758.5108032226562,
16 | "y": -2551.04150390625,
17 | "z": 29.65949249267578,
18 | "rx": 0,
19 | "ry": 0,
20 | "rz": 0,
21 | "col": true,
22 | "freeze": true
23 | },
24 | {
25 | "model": 3748955783,
26 | "x": -778.3053588867188,
27 | "y": -2498.50146484375,
28 | "z": 13.029151916503906,
29 | "rx": 0,
30 | "ry": 0,
31 | "rz": 0,
32 | "col": true,
33 | "freeze": true
34 | },
35 | {
36 | "model": 4263848243,
37 | "x": -786.5042724609375,
38 | "y": -2486.66455078125,
39 | "z": 12.97791862487793,
40 | "rx": 0,
41 | "ry": 0,
42 | "rz": 0,
43 | "col": true,
44 | "freeze": true
45 | }
46 | ]
--------------------------------------------------------------------------------
/bridge/runtime/Ben.Demystifier.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brazucas/ragemp-server/9654c541f11e7a8757516eb322479083501c95f7/bridge/runtime/Ben.Demystifier.dll
--------------------------------------------------------------------------------
/bridge/runtime/Bootstrapper.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brazucas/ragemp-server/9654c541f11e7a8757516eb322479083501c95f7/bridge/runtime/Bootstrapper.dll
--------------------------------------------------------------------------------
/bridge/runtime/Colorful.Console.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brazucas/ragemp-server/9654c541f11e7a8757516eb322479083501c95f7/bridge/runtime/Colorful.Console.dll
--------------------------------------------------------------------------------
/bridge/runtime/NeoSmart.Hashing.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brazucas/ragemp-server/9654c541f11e7a8757516eb322479083501c95f7/bridge/runtime/NeoSmart.Hashing.dll
--------------------------------------------------------------------------------
/bridge/runtime/xxHash.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brazucas/ragemp-server/9654c541f11e7a8757516eb322479083501c95f7/bridge/runtime/xxHash.dll
--------------------------------------------------------------------------------
/bt.dat:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brazucas/ragemp-server/9654c541f11e7a8757516eb322479083501c95f7/bt.dat
--------------------------------------------------------------------------------
/bt_old.dat:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brazucas/ragemp-server/9654c541f11e7a8757516eb322479083501c95f7/bt_old.dat
--------------------------------------------------------------------------------
/client/package-lock.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "client",
3 | "version": "1.0.0",
4 | "lockfileVersion": 1,
5 | "requires": true,
6 | "dependencies": {
7 | "@types/ragemp-c": {
8 | "version": "git+https://github.com/CocaColaBear/types-ragemp-c.git#40266dacf5996f922801ac8ead22525a776ccf38",
9 | "from": "git+https://github.com/CocaColaBear/types-ragemp-c.git"
10 | }
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/client/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "client",
3 | "version": "1.0.0",
4 | "description": "",
5 | "main": "index.js",
6 | "scripts": {
7 | "test": "echo \"Error: no test specified\" && exit 1"
8 | },
9 | "author": "",
10 | "license": "ISC",
11 | "dependencies": {
12 | "@types/ragemp-c": "git+https://github.com/CocaColaBear/types-ragemp-c.git"
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/client/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "baseUrl": ".",
4 | "target": "es6",
5 | "module": "commonjs",
6 | "sourceMap": true,
7 | "moduleResolution": "node",
8 | "lib": [
9 | "es5", "es2015.promise", "dom", "es2015"
10 | ],
11 | "allowSyntheticDefaultImports": true,
12 | "declaration": false,
13 | "emitDecoratorMetadata": true,
14 | "experimentalDecorators": true,
15 | "skipLibCheck": true,
16 | "outDir": "../client_packages",
17 | "rootDir": "../"
18 | },
19 | "typeRoots": [
20 | "node_modules/@types"
21 | ],
22 | "include": [
23 | "./**/*.ts"
24 | ],
25 | }
26 |
27 |
--------------------------------------------------------------------------------
/client_packages/MapEditor/Natives.js:
--------------------------------------------------------------------------------
1 |
2 | /**
3 | * 2 - 1.43
4 | * 1 - 1.42
5 | * 0 - 1.41
6 | * -1 - invalid version
7 | */
8 | const __GameVersion__ = mp.game.streaming.isModelValid(0x4ABEBF23) ? 2 : mp.game.streaming.isModelValid(0x46699F47) ? 1 : mp.game.streaming.isModelValid(0xA52F6866) ? 0 : -1;
9 |
10 | const __Natives__ = {
11 | SET_ENTITY_ALPHA: ['0x6B7820A04F7672B8', '0x93271EC996EE94D2', '0xCFA0B475EBE9E2B7'],
12 | RESET_ENTITY_ALPHA: ['0x646D2E88F7E1B20A', '0x2087B43C7787E236', '0x76932C1879032DCE'],
13 | GET_ENTITY_MODEL: ['0xE9559A12052415BE', '0x4F69FBD64CDF125B', '0x82FF3DFBC3965CC0']
14 | };
15 |
16 | const proxyNatives = new Proxy(__Natives__, {
17 | get: (target, name, receiver) => __Natives__[name][__GameVersion__]
18 | });
19 |
20 | exports = proxyNatives;
21 |
--------------------------------------------------------------------------------
/client_packages/index.js:
--------------------------------------------------------------------------------
1 | require('client/index.js');
2 | require('noclip/index.js');
3 | require("MapEditor/MapEditor.js");
4 | require("MapEditor/object_data.js");
5 | require("MapEditor/Natives.js");
6 | //# sourceMappingURL=index.js.map
--------------------------------------------------------------------------------
/client_packages/index.js.map:
--------------------------------------------------------------------------------
1 | {"version":3,"file":"index.js","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":"AAAA,OAAO,CAAC,iBAAiB,CAAC,CAAC;AAC3B,OAAO,CAAC,iBAAiB,CAAC,CAAC;AAC3B,OAAO,CAAC,wBAAwB,CAAC,CAAC;AAClC,OAAO,CAAC,0BAA0B,CAAC,CAAC;AACpC,OAAO,CAAC,sBAAsB,CAAC,CAAC"}
--------------------------------------------------------------------------------
/client_packages/index.ts:
--------------------------------------------------------------------------------
1 | require('client/index.js');
2 | require('noclip/index.js');
3 | require("MapEditor/MapEditor.js");
4 | require("MapEditor/object_data.js");
5 | require("MapEditor/Natives.js");
6 |
--------------------------------------------------------------------------------
/client_packages/noclip/index.js:
--------------------------------------------------------------------------------
1 | var getNormalizedVector = function(vector) {
2 | var mag = Math.sqrt(
3 | vector.x * vector.x + vector.y * vector.y + vector.z * vector.z
4 | );
5 | vector.x = vector.x / mag;
6 | vector.y = vector.y / mag;
7 | vector.z = vector.z / mag;
8 | return vector;
9 | };
10 | var getCrossProduct = function(v1, v2) {
11 | var vector = new mp.Vector3(0, 0, 0);
12 | vector.x = v1.y * v2.z - v1.z * v2.y;
13 | vector.y = v1.z * v2.x - v1.x * v2.z;
14 | vector.z = v1.x * v2.y - v1.y * v2.x;
15 | return vector;
16 | };
17 | var bindVirtualKeys = {
18 | F2: 0x71,
19 | F7: 0x76,
20 | };
21 | var bindASCIIKeys = {
22 | Q: 69,
23 | E: 81,
24 | LCtrl: 17,
25 | Shift: 16
26 | };
27 | mp.game.graphics.notify('~r~NoClip ~w~by ~b~Morbo');
28 | var isNoClip = false;
29 | var noClipCamera;
30 | var shiftModifier = false;
31 | var controlModifier = false;
32 | var localPlayer = mp.players.local;
33 | mp.keys.bind(bindVirtualKeys.F7, true, function() {
34 | isNoClip = !isNoClip;
35 | mp.game.ui.displayRadar(!isNoClip);
36 | if (isNoClip) {
37 | startNoClip();
38 | } else {
39 | stopNoClip();
40 | }
41 | });
42 | function startNoClip() {
43 | mp.game.graphics.notify('NoClip ~g~activated');
44 | var camPos = new mp.Vector3(
45 | localPlayer.position.x,
46 | localPlayer.position.y,
47 | localPlayer.position.z
48 | );
49 | var camRot = mp.game.cam.getGameplayCamRot(2);
50 | noClipCamera = mp.cameras.new('default', camPos, camRot, 45);
51 | noClipCamera.setActive(true);
52 | mp.game.cam.renderScriptCams(true, false, 0, true, false);
53 | localPlayer.freezePosition(true);
54 | localPlayer.setInvincible(true);
55 | localPlayer.setVisible(false, false);
56 | localPlayer.setCollision(false, false);
57 | }
58 | function stopNoClip() {
59 | mp.game.graphics.notify('NoClip ~r~disabled');
60 | if (noClipCamera) {
61 | localPlayer.position = noClipCamera.getCoord();
62 | localPlayer.setHeading(noClipCamera.getRot(2).z);
63 | noClipCamera.destroy(true);
64 | noClipCamera = null;
65 | }
66 | mp.game.cam.renderScriptCams(false, false, 0, true, false);
67 | localPlayer.freezePosition(false);
68 | localPlayer.setInvincible(false);
69 | localPlayer.setVisible(true, false);
70 | localPlayer.setCollision(true, false);
71 | }
72 | mp.events.add('render', function() {
73 | if (!noClipCamera || mp.gui.cursor.visible) {
74 | return;
75 | }
76 | controlModifier = mp.keys.isDown(bindASCIIKeys.LCtrl);
77 | shiftModifier = mp.keys.isDown(bindASCIIKeys.Shift);
78 | var rot = noClipCamera.getRot(2);
79 | var fastMult = 1;
80 | var slowMult = 1;
81 | if (shiftModifier) {
82 | fastMult = 3;
83 | } else if (controlModifier) {
84 | slowMult = 0.5;
85 | }
86 | var rightAxisX = mp.game.controls.getDisabledControlNormal(0, 220);
87 | var rightAxisY = mp.game.controls.getDisabledControlNormal(0, 221);
88 | var leftAxisX = mp.game.controls.getDisabledControlNormal(0, 218);
89 | var leftAxisY = mp.game.controls.getDisabledControlNormal(0, 219);
90 | var pos = noClipCamera.getCoord();
91 | var rr = noClipCamera.getDirection();
92 | var vector = new mp.Vector3(0, 0, 0);
93 | vector.x = rr.x * leftAxisY * fastMult * slowMult;
94 | vector.y = rr.y * leftAxisY * fastMult * slowMult;
95 | vector.z = rr.z * leftAxisY * fastMult * slowMult;
96 | var upVector = new mp.Vector3(0, 0, 1);
97 | var rightVector = getCrossProduct(
98 | getNormalizedVector(rr),
99 | getNormalizedVector(upVector)
100 | );
101 | rightVector.x *= leftAxisX * 0.5;
102 | rightVector.y *= leftAxisX * 0.5;
103 | rightVector.z *= leftAxisX * 0.5;
104 | var upMovement = 0.0;
105 | if (mp.keys.isDown(bindASCIIKeys.Q)) {
106 | upMovement = 0.5;
107 | }
108 | var downMovement = 0.0;
109 | if (mp.keys.isDown(bindASCIIKeys.E)) {
110 | downMovement = 0.5;
111 | }
112 | mp.players.local.position = new mp.Vector3(
113 | pos.x + vector.x + 1,
114 | pos.y + vector.y + 1,
115 | pos.z + vector.z + 1
116 | );
117 | mp.players.local.heading = rr.z;
118 | noClipCamera.setCoord(
119 | pos.x - vector.x + rightVector.x,
120 | pos.y - vector.y + rightVector.y,
121 | pos.z - vector.z + rightVector.z + upMovement - downMovement
122 | );
123 | noClipCamera.setRot(
124 | rot.x + rightAxisY * -5.0,
125 | 0.0,
126 | rot.z + rightAxisX * -5.0,
127 | 2
128 | );
129 | });
130 |
--------------------------------------------------------------------------------
/client_packages/packages/rpg/interfaces/brazucas-eventos.js:
--------------------------------------------------------------------------------
1 | "use strict";
2 | Object.defineProperty(exports, "__esModule", { value: true });
3 | var BrazucasEventos;
4 | (function (BrazucasEventos) {
5 | BrazucasEventos["BROWSER"] = "browser";
6 | BrazucasEventos["SERVER"] = "server";
7 | BrazucasEventos["AUTENTICAR_JOGADOR"] = "AutenticarJogador";
8 | BrazucasEventos["CRIAR_VEICULO"] = "CriarVeiculo";
9 | BrazucasEventos["REGISTRAR_JOGADOR"] = "RegistrarJogador";
10 | BrazucasEventos["AUTENTICACAO_RESULTADO"] = "AutenticacaoResultado";
11 | BrazucasEventos["REGISTRO_RESULTADO"] = "RegistroResultado";
12 | BrazucasEventos["DADOS_JOGADOR"] = "DadosJogador";
13 | BrazucasEventos["ATUALIZAR_DADOS_JOGADOR"] = "AtualizarDadosJogador";
14 | BrazucasEventos["INICIAR_NAVEGADOR"] = "IniciarNavegador";
15 | BrazucasEventos["CURSOR"] = "cursor";
16 | BrazucasEventos["HABILITAR_VOICE_CHAT"] = "HabilitarVoiceChat";
17 | BrazucasEventos["DESABILITAR_VOICE_CHAT"] = "DesabilitarVoiceChat";
18 | BrazucasEventos["ANIMACAO_VOICE_CHAT"] = "AnimacaoVoiceChat";
19 | BrazucasEventos["ATUALIZAR_FOME"] = "AtualizarFome";
20 | BrazucasEventos["ATUALIZAR_SEDE"] = "AtualizarSede";
21 | BrazucasEventos["ATUALIZAR_SONO"] = "AtualizarSono";
22 | BrazucasEventos["ATUALIZAR_FORCA_FISICA"] = "AtualizarForcaFisica";
23 | BrazucasEventos["VISUALIZAR_ANIMACAO"] = "VisualizarAnimacao";
24 | })(BrazucasEventos = exports.BrazucasEventos || (exports.BrazucasEventos = {}));
25 | //# sourceMappingURL=brazucas-eventos.js.map
--------------------------------------------------------------------------------
/client_packages/packages/rpg/interfaces/brazucas-eventos.js.map:
--------------------------------------------------------------------------------
1 | {"version":3,"file":"brazucas-eventos.js","sourceRoot":"","sources":["../../../../packages/rpg/interfaces/brazucas-eventos.ts"],"names":[],"mappings":";;AAAA,IAAY,eAoBX;AApBD,WAAY,eAAe;IACzB,sCAAmB,CAAA;IACnB,oCAAiB,CAAA;IACjB,2DAAwC,CAAA;IACxC,iDAA8B,CAAA;IAC9B,yDAAsC,CAAA;IACtC,mEAAgD,CAAA;IAChD,2DAAwC,CAAA;IACxC,iDAA8B,CAAA;IAC9B,oEAAiD,CAAA;IACjD,yDAAsC,CAAA;IACtC,oCAAiB,CAAA;IACjB,8DAA2C,CAAA;IAC3C,kEAA+C,CAAA;IAC/C,4DAAyC,CAAA;IACzC,mDAAgC,CAAA;IAChC,mDAAgC,CAAA;IAChC,mDAAgC,CAAA;IAChC,kEAA+C,CAAA;IAC/C,6DAA0C,CAAA;AAC5C,CAAC,EApBW,eAAe,GAAf,uBAAe,KAAf,uBAAe,QAoB1B"}
--------------------------------------------------------------------------------
/client_packages/sistemas/taxi.js:
--------------------------------------------------------------------------------
1 | let vehicle ,vehSeat, vehMaxSpeed = null;
2 | let chat = false;
3 | let MissaoTaxi = 0;
4 | let cpEstacao = null;
5 | let cpEntrega = null;
6 | let ehUmTaxi = false;
7 |
8 | mp.keys.bind(0x54, true, (player) => { // If Chat was triggered
9 | if (!chat) {
10 | chat = true;
11 | }
12 | });
13 |
14 | mp.keys.bind(0x0D, true, (player) => { // If Chat was stopped.
15 | if (chat) {
16 | chat = false;
17 | }
18 | });
19 |
20 | mp.events.add('VehicleEnter', (seat) => {
21 | if (seat == -1) {
22 | vehSeat = seat;
23 | vehicle = mp.players.local.vehicle;
24 | let modelo = 'taxi';
25 | let modeloHash = mp.game.joaat(modelo);
26 | if (vehicle.model === modeloHash) {
27 | mp.game.graphics.notify(`Aperte 2 para iniciar as missoes de taxi.`);
28 | ehUmTaxi = true;
29 | }
30 | }
31 | });
32 |
33 | mp.events.add('VehicleExit', (seat) => { // Reseting Data when driver exits the vehicle.
34 | vehicle = null;
35 | vehSeat = -3;
36 | ehUmTaxi = false;
37 | });
38 |
39 | mp.events.add('playerEnterCheckpoint', (player, checkpoint) => {
40 | if (MissaoTaxi == 1 && ehUmTaxi) {
41 | if (cpEstacao) cpEstacao.destroy();
42 | cpEstacao = null;
43 | cpEntrega = mp.checkpoints.new(1, new mp.Vector3(237.73, -369.84, 43.5), 3.5,
44 | {
45 | direction: new mp.Vector3(237.73, -369.84, 43.5),
46 | color: [255,0,0,255],
47 | visible: true,
48 | dimension: 0
49 | });
50 | mp.game.ui.setNewWaypoint(237.73, -369.84);
51 | MissaoTaxi = 2;
52 | mp.gui.chat.push('Eu sei que odeia este trabalho... FODA-SE!! E entregue isto! O Cliente está esperando!');
53 | } else if (MissaoTaxi == 2 && cpEntrega && ehUmTaxi) {
54 | if (cpEntrega) cpEntrega.destroy();
55 | cpEntrega = null;
56 | cpEstacao = mp.checkpoints.new(1, new mp.Vector3(-110.49005, -1991.33044, 17.62281), 3.5,
57 | {
58 | direction: new mp.Vector3(-110.49005, -1991.33044, 17.62281),
59 | color: [255,0,0,255],
60 | visible: true,
61 | dimension: 0
62 | });
63 | mp.game.ui.setNewWaypoint(-110.49005, -1991.33044);
64 | mp.gui.chat.push('Entregue! Tá aí sua gorjeta, agora volte para pegar mais produtos...');
65 | MissaoTaxi = 1;
66 | }
67 | });
68 |
69 | mp.keys.bind(0x32, true, _ => { // binding 2 to the cruise speed
70 | let modelo = 'taxi';
71 | let modeloHash = mp.game.joaat(modelo);
72 | if (vehSeat == -1 && vehicle && !chat && vehicle.model == modeloHash) { // if he/she was driver and chat isn't active.
73 | if (MissaoTaxi == 0) { // if cruise was disabled
74 | MissaoTaxi = 1;
75 | cpEstacao = mp.checkpoints.new(1, new mp.Vector3(-110.49005, -1991.33044, 17.62281), 3.5,
76 | {
77 | direction: new mp.Vector3(-110.49005, -1991.33044, 17.62281),
78 | color: [255,0,0,255],
79 | visible: true,
80 | dimension: 0
81 | });
82 | mp.game.ui.setNewWaypoint(-110.49005, -1991.33044);
83 | mp.gui.chat.push('Dirija até o local indicado no mapa para iniciar as entregas!');
84 | } else {
85 | MissaoTaxi = 0;
86 | mp.gui.chat.push('Serviço de entregas cancelado!');
87 | if (cpEstacao) {
88 | cpEstacao.destroy();
89 | cpEstacao = null;
90 | } else if (cpEntrega) {
91 | cpEntrega.destroy();
92 | cpEntrega = null;
93 | }
94 | }
95 | } else {
96 | return false;
97 | }
98 | });
99 |
100 | mp.events.add('render', () => {
101 |
102 | if (vehicle)
103 | mp.game.graphics.drawText(`${(vehicle.getSpeed() * 3.6).toFixed(0)} km/h`, 7, [255, 255, 255, 185], 0.9, 0.9, true, 0.5, 0.005); // It was made to debug the script.
104 | });
105 |
106 |
107 |
108 |
109 |
110 |
--------------------------------------------------------------------------------
/common/brazucas-server.js.map:
--------------------------------------------------------------------------------
1 | {"version":3,"file":"brazucas-server.js","sourceRoot":"","sources":["brazucas-server.ts"],"names":[],"mappings":"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"}
--------------------------------------------------------------------------------
/common/brazucas-server.ts:
--------------------------------------------------------------------------------
1 | import { BehaviorSubject } from 'rxjs';
2 | import 'rxjs/add/observable/forkJoin';
3 | import 'rxjs/add/observable/of';
4 | import { forkJoin } from 'rxjs/internal/observable/forkJoin';
5 | import { Observable } from 'rxjs/Observable';
6 | import * as Sequelize from 'sequelize';
7 | import { DadosVeiculo } from '../browser/src/app/services/veiculo.service';
8 | import { DadosRegistro } from '../browser/src/interfaces/login.interface';
9 | import { Database } from './database/database';
10 | import { Jogador } from './database/models/Jogador';
11 | import { Veiculo } from './database/models/Veiculo';
12 | import { PLAYER_NAME_MAXLENGTH, PLAYER_NAME_MINLENGTH, PLAYER_NAME_REGEXP } from './interfaces';
13 | import { bcryptCompare, bcryptHash, hexToRgb, soNumeros } from './util/util';
14 | import { Veiculos } from './util/vehicles';
15 | import Bluebird = require('bluebird');
16 |
17 | export class BrazucasServer {
18 | private database: Database;
19 | public isReady: BehaviorSubject = new BehaviorSubject(false);
20 |
21 | constructor() {
22 | this.database = new Database();
23 | }
24 |
25 | public onload(): Observable {
26 | const fork = forkJoin(
27 | ...[
28 | this.database.sync(),
29 | this.database.authenticate(),
30 | ],
31 | );
32 |
33 | fork.subscribe(() => this.isReady.next(true));
34 |
35 | return fork;
36 | }
37 |
38 | public loadPlayer(playerName: string): Bluebird {
39 | return Jogador.findOne({
40 | ['where' as any]: {
41 | nome: Sequelize.where(Sequelize.fn('LOWER', Sequelize.col('nome')), '=', playerName.toLowerCase())
42 | }
43 | });
44 | }
45 |
46 | public async autenticarJogador(playerName: string, senha: string): Promise {
47 | const jogador = await this.loadPlayer(playerName);
48 |
49 | if (!jogador) {
50 | throw 'Jogador não encontrado';
51 | }
52 |
53 | const autenticado = await bcryptCompare(senha, jogador.senha);
54 |
55 | return autenticado ? jogador : null;
56 | }
57 |
58 | public async registrarJogador(player: PlayerMp, dados: DadosRegistro): Promise {
59 | console.debug(`[REGISTRO] Novo jogador ${player.name}`);
60 |
61 | if (
62 | !dados.senhaConfirma || !dados.senha || !dados.celular || !dados.email ||
63 | !dados.senhaConfirma.length || !dados.senha.length || !dados.celular.length || !dados.email.length
64 | ) {
65 | throw 'Todos os campos devem ser informados';
66 | }
67 |
68 | if (dados.senha !== dados.senhaConfirma) {
69 | throw 'As senhas informadas diferem';
70 | }
71 |
72 | const playerNameClean = PLAYER_NAME_REGEXP.exec(player.name);
73 |
74 | if (
75 | !playerNameClean ||
76 | (playerNameClean[1].length !== player.name.length) ||
77 | player.name.length < PLAYER_NAME_MINLENGTH ||
78 | player.name.length > PLAYER_NAME_MAXLENGTH
79 | ) {
80 | throw 'Nick não permitido';
81 | }
82 |
83 | const jogadorExistente = await this.loadPlayer(player.name);
84 |
85 | if (jogadorExistente) {
86 | throw 'Já existe um jogador cadastrado com esse nick';
87 | }
88 |
89 | console.debug(`[REGISTRO] Criando jogador ${player.name}`);
90 |
91 | const senhaHash = await bcryptHash(dados.senha);
92 |
93 | const jogador = new Jogador({
94 | nome: player.name,
95 | senha: (senhaHash as string),
96 | nivel: 1,
97 | email: dados.email,
98 | celular: soNumeros(dados.celular),
99 | });
100 |
101 | return jogador.save();
102 | }
103 |
104 | public async criarVeiculo(player: PlayerMp, dadosVeiculo: DadosVeiculo): Promise {
105 | console.debug(`[CRIAR VEICULO] Novo veículo criado por ${player.name}`);
106 |
107 | if (!Veiculos[dadosVeiculo.modelo]) {
108 | throw 'Modelo não encontrado';
109 | }
110 |
111 | const rgbPrimaria = hexToRgb(dadosVeiculo.corPrimaria);
112 | const rgbSecundaria = hexToRgb(dadosVeiculo.corSecundaria);
113 |
114 | const jogador = await this.loadPlayer(player.name);
115 |
116 | if (!jogador) {
117 | throw 'Jogador não encontrado';
118 | }
119 |
120 | const veiculo = new Veiculo({
121 | placaOriginal: dadosVeiculo.placa,
122 | placaExibido: dadosVeiculo.placa,
123 | modelo: dadosVeiculo.modelo,
124 | posicaoX: dadosVeiculo.posicaoX,
125 | posicaoY: dadosVeiculo.posicaoY,
126 | posicaoZ: dadosVeiculo.posicaoZ,
127 | posicaoOriginalX: dadosVeiculo.posicaoX,
128 | posicaoOriginalY: dadosVeiculo.posicaoY,
129 | posicaoOriginalZ: dadosVeiculo.posicaoZ,
130 | rotacao: 0,
131 | transparencia: dadosVeiculo.transparencia,
132 | corPrimariaR: rgbPrimaria.r,
133 | corPrimariaG: rgbPrimaria.g,
134 | corPrimariaB: rgbPrimaria.b,
135 | corSecundariaR: rgbSecundaria.r,
136 | corSecundariaG: rgbSecundaria.g,
137 | corSecundariaB: rgbSecundaria.b,
138 | trancado: dadosVeiculo.trancado,
139 | motor: dadosVeiculo.motor,
140 | mundo: 0,
141 | valorOriginal: dadosVeiculo.valorOriginal,
142 | valorVenda: dadosVeiculo.valorVenda,
143 | aVenda: dadosVeiculo.aVenda,
144 | jogadorVeiculo: jogador,
145 | });
146 |
147 | await veiculo.save();
148 |
149 | const veiculoMp = mp.vehicles.new(Veiculos[dadosVeiculo.modelo],
150 | new mp.Vector3(parseFloat(dadosVeiculo.posicaoX), parseFloat(dadosVeiculo.posicaoY), parseFloat(dadosVeiculo.posicaoZ)));
151 |
152 | veiculoMp.engine = dadosVeiculo.motor;
153 | veiculoMp.locked = dadosVeiculo.trancado;
154 | veiculoMp.setColorRGB(rgbPrimaria.r, rgbPrimaria.g, rgbPrimaria.b, rgbSecundaria.r, rgbSecundaria.g, rgbSecundaria.b);
155 | veiculoMp.numberPlate = dadosVeiculo.placa;
156 | veiculoMp.alpha = dadosVeiculo.transparencia;
157 |
158 | veiculoMp.spawn(veiculoMp.position, 0);
159 |
160 | return true;
161 | }
162 | }
163 |
--------------------------------------------------------------------------------
/common/database/config/config.json.dist:
--------------------------------------------------------------------------------
1 | {
2 | "development": {
3 | "username": "root",
4 | "password": null,
5 | "database": "database_test",
6 | "host": "localhost",
7 | "port": "3306",
8 | "dialect": "mysql"
9 | },
10 | "test": {
11 | "username": "root",
12 | "password": null,
13 | "database": "database_test",
14 | "host": "127.0.0.1",
15 | "dialect": "mysql"
16 | },
17 | "production": {
18 | "username": "root",
19 | "password": null,
20 | "database": "database_production",
21 | "host": "127.0.0.1",
22 | "dialect": "mysql"
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/common/database/database.js:
--------------------------------------------------------------------------------
1 | "use strict";
2 | Object.defineProperty(exports, "__esModule", { value: true });
3 | exports.Database = void 0;
4 | require("rxjs/add/observable/of");
5 | const from_1 = require("rxjs/internal/observable/from");
6 | const SequelizeOrigin = require("sequelize");
7 | const sequelize_typescript_1 = require("sequelize-typescript");
8 | const environment_1 = require("../environment");
9 | class Database {
10 | constructor() {
11 | const Op = SequelizeOrigin.Op;
12 | this.handler = new sequelize_typescript_1.Sequelize({
13 | host: environment_1.environment.database_host,
14 | port: environment_1.environment.database_port,
15 | database: environment_1.environment.database_name,
16 | pool: {
17 | max: 5,
18 | min: 0,
19 | idle: 10000,
20 | },
21 | operatorsAliases: Op,
22 | dialect: 'mysql',
23 | username: environment_1.environment.database_username,
24 | password: environment_1.environment.database_password,
25 | modelPaths: [__dirname + '/models'],
26 | sync: {
27 | alter: true,
28 | force: false,
29 | },
30 | });
31 | }
32 | sync() {
33 | return from_1.from(this.handler.sync());
34 | }
35 | authenticate() {
36 | return from_1.from(this.handler.authenticate());
37 | }
38 | }
39 | exports.Database = Database;
40 | //# sourceMappingURL=database.js.map
--------------------------------------------------------------------------------
/common/database/database.js.map:
--------------------------------------------------------------------------------
1 | {"version":3,"file":"database.js","sourceRoot":"","sources":["database.ts"],"names":[],"mappings":";;;AACA,kCAAgC;AAChC,wDAAqD;AACrD,6CAA6C;AAC7C,+DAAiD;AACjD,gDAA6C;AAE7C,MAAa,QAAQ;IAGnB;QACE,MAAM,EAAE,GAAQ,eAAe,CAAC,EAAE,CAAC;QAEnC,IAAI,CAAC,OAAO,GAAG,IAAI,gCAAS,CAAC;YAC3B,IAAI,EAAE,yBAAW,CAAC,aAAa;YAC/B,IAAI,EAAE,yBAAW,CAAC,aAAa;YAC/B,QAAQ,EAAE,yBAAW,CAAC,aAAa;YACnC,IAAI,EAAE;gBACJ,GAAG,EAAE,CAAC;gBACN,GAAG,EAAE,CAAC;gBACN,IAAI,EAAE,KAAK;aACZ;YACD,gBAAgB,EAAE,EAAE;YACpB,OAAO,EAAE,OAAO;YAChB,QAAQ,EAAE,yBAAW,CAAC,iBAAiB;YACvC,QAAQ,EAAE,yBAAW,CAAC,iBAAiB;YACvC,UAAU,EAAE,CAAC,SAAS,GAAG,SAAS,CAAC;YACnC,IAAI,EAAE;gBACJ,KAAK,EAAE,IAAI;gBACX,KAAK,EAAE,KAAK;aACb;SACF,CAAC,CAAC;IACL,CAAC;IAEM,IAAI;QACT,OAAO,WAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;IACnC,CAAC;IAEM,YAAY;QACjB,OAAO,WAAI,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC;IAC3C,CAAC;CACF;AAlCD,4BAkCC"}
--------------------------------------------------------------------------------
/common/database/database.ts:
--------------------------------------------------------------------------------
1 | import { Observable } from 'rxjs/Observable';
2 | import 'rxjs/add/observable/of';
3 | import { from } from 'rxjs/internal/observable/from';
4 | import * as SequelizeOrigin from 'sequelize';
5 | import { Sequelize } from 'sequelize-typescript';
6 | import { environment } from '../environment';
7 |
8 | export class Database {
9 | public handler: any;
10 |
11 | constructor() {
12 | const Op: any = SequelizeOrigin.Op;
13 |
14 | this.handler = new Sequelize({
15 | host: environment.database_host,
16 | port: environment.database_port,
17 | database: environment.database_name,
18 | pool: {
19 | max: 5,
20 | min: 0,
21 | idle: 10000,
22 | },
23 | operatorsAliases: Op,
24 | dialect: 'mysql',
25 | username: environment.database_username,
26 | password: environment.database_password,
27 | modelPaths: [__dirname + '/models'],
28 | sync: {
29 | alter: true,
30 | force: false,
31 | },
32 | });
33 | }
34 |
35 | public sync(): Observable {
36 | return from(this.handler.sync());
37 | }
38 |
39 | public authenticate(): Observable {
40 | return from(this.handler.authenticate());
41 | }
42 | }
43 |
--------------------------------------------------------------------------------
/common/database/models/BancoConta.js:
--------------------------------------------------------------------------------
1 | "use strict";
2 | var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3 | var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4 | if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5 | else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6 | return c > 3 && r && Object.defineProperty(target, key, r), r;
7 | };
8 | var __metadata = (this && this.__metadata) || function (k, v) {
9 | if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10 | };
11 | Object.defineProperty(exports, "__esModule", { value: true });
12 | exports.BancoConta = void 0;
13 | const sequelize_typescript_1 = require("sequelize-typescript");
14 | const Jogador_1 = require("./Jogador");
15 | const Propriedade_1 = require("./Propriedade");
16 | let BancoConta = class BancoConta extends sequelize_typescript_1.Model {
17 | };
18 | __decorate([
19 | sequelize_typescript_1.Column({ allowNull: false }),
20 | __metadata("design:type", String)
21 | ], BancoConta.prototype, "numero", void 0);
22 | __decorate([
23 | sequelize_typescript_1.BelongsTo(() => Propriedade_1.Propriedade, { foreignKey: { allowNull: false, name: 'propriedade' } }),
24 | __metadata("design:type", Propriedade_1.Propriedade)
25 | ], BancoConta.prototype, "bancoContaPropriedade", void 0);
26 | __decorate([
27 | sequelize_typescript_1.BelongsTo(() => Jogador_1.Jogador, { foreignKey: { allowNull: false, name: 'jogador' } }),
28 | __metadata("design:type", Jogador_1.Jogador)
29 | ], BancoConta.prototype, "bancoContaJogador", void 0);
30 | BancoConta = __decorate([
31 | sequelize_typescript_1.Table({
32 | timestamps: true,
33 | createdAt: 'dataCriado',
34 | deletedAt: 'dataExcluido',
35 | updatedAt: 'dataAtualizado',
36 | paranoid: true,
37 | })
38 | ], BancoConta);
39 | exports.BancoConta = BancoConta;
40 | //# sourceMappingURL=BancoConta.js.map
--------------------------------------------------------------------------------
/common/database/models/BancoConta.js.map:
--------------------------------------------------------------------------------
1 | {"version":3,"file":"BancoConta.js","sourceRoot":"","sources":["BancoConta.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,+DAAuE;AACvE,uCAAoC;AACpC,+CAA4C;AAS5C,IAAa,UAAU,GAAvB,MAAa,UAAW,SAAQ,4BAAiB;CAUhD,CAAA;AAPC;IADC,6BAAM,CAAC,EAAC,SAAS,EAAE,KAAK,EAAC,CAAC;;0CACZ;AAGf;IADC,gCAAS,CAAC,GAAG,EAAE,CAAC,yBAAW,EAAE,EAAC,UAAU,EAAE,EAAC,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE,aAAa,EAAC,EAAC,CAAC;8BAC7D,yBAAW;yDAAC;AAGnC;IADC,gCAAS,CAAC,GAAG,EAAE,CAAC,iBAAO,EAAE,EAAC,UAAU,EAAE,EAAC,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAC,EAAC,CAAC;8BACzD,iBAAO;qDAAC;AAThB,UAAU;IAPtB,4BAAK,CAAC;QACL,UAAU,EAAE,IAAI;QAChB,SAAS,EAAE,YAAY;QACvB,SAAS,EAAE,cAAc;QACzB,SAAS,EAAE,gBAAgB;QAC3B,QAAQ,EAAE,IAAI;KACf,CAAC;GACW,UAAU,CAUtB;AAVY,gCAAU"}
--------------------------------------------------------------------------------
/common/database/models/BancoConta.ts:
--------------------------------------------------------------------------------
1 | import { BelongsTo, Column, Model, Table } from 'sequelize-typescript';
2 | import { Jogador } from './Jogador';
3 | import { Propriedade } from './Propriedade';
4 |
5 | @Table({
6 | timestamps: true,
7 | createdAt: 'dataCriado',
8 | deletedAt: 'dataExcluido',
9 | updatedAt: 'dataAtualizado',
10 | paranoid: true,
11 | })
12 | export class BancoConta extends Model {
13 |
14 | @Column({allowNull: false})
15 | numero: string;
16 |
17 | @BelongsTo(() => Propriedade, {foreignKey: {allowNull: false, name: 'propriedade'}})
18 | bancoContaPropriedade: Propriedade;
19 |
20 | @BelongsTo(() => Jogador, {foreignKey: {allowNull: false, name: 'jogador'}})
21 | bancoContaJogador: Jogador;
22 | }
23 |
--------------------------------------------------------------------------------
/common/database/models/BancoTipoTransacao.js:
--------------------------------------------------------------------------------
1 | "use strict";
2 | var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3 | var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4 | if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5 | else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6 | return c > 3 && r && Object.defineProperty(target, key, r), r;
7 | };
8 | var __metadata = (this && this.__metadata) || function (k, v) {
9 | if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10 | };
11 | Object.defineProperty(exports, "__esModule", { value: true });
12 | exports.BancoTipoTransacao = void 0;
13 | const sequelize_typescript_1 = require("sequelize-typescript");
14 | const BancoTransacao_1 = require("./BancoTransacao");
15 | let BancoTipoTransacao = class BancoTipoTransacao extends sequelize_typescript_1.Model {
16 | };
17 | __decorate([
18 | sequelize_typescript_1.PrimaryKey,
19 | sequelize_typescript_1.Column,
20 | __metadata("design:type", Number)
21 | ], BancoTipoTransacao.prototype, "id", void 0);
22 | __decorate([
23 | sequelize_typescript_1.Column({ allowNull: false }),
24 | __metadata("design:type", String)
25 | ], BancoTipoTransacao.prototype, "nome", void 0);
26 | __decorate([
27 | sequelize_typescript_1.Column({ allowNull: false }),
28 | __metadata("design:type", String)
29 | ], BancoTipoTransacao.prototype, "identificador", void 0);
30 | __decorate([
31 | sequelize_typescript_1.HasMany(() => BancoTransacao_1.BancoTransacao, 'tipo'),
32 | __metadata("design:type", Array)
33 | ], BancoTipoTransacao.prototype, "transacoes", void 0);
34 | BancoTipoTransacao = __decorate([
35 | sequelize_typescript_1.Table({
36 | timestamps: true,
37 | createdAt: 'dataCriado',
38 | deletedAt: 'dataExcluido',
39 | updatedAt: 'dataAtualizado',
40 | paranoid: true,
41 | indexes: [
42 | {
43 | unique: true,
44 | fields: ['identificador'],
45 | }
46 | ]
47 | })
48 | ], BancoTipoTransacao);
49 | exports.BancoTipoTransacao = BancoTipoTransacao;
50 | //# sourceMappingURL=BancoTipoTransacao.js.map
--------------------------------------------------------------------------------
/common/database/models/BancoTipoTransacao.js.map:
--------------------------------------------------------------------------------
1 | {"version":3,"file":"BancoTipoTransacao.js","sourceRoot":"","sources":["BancoTipoTransacao.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,+DAAiF;AACjF,qDAAkD;AAelD,IAAa,kBAAkB,GAA/B,MAAa,kBAAmB,SAAQ,4BAAyB;CAchE,CAAA;AAVC;IAFC,iCAAU;IACV,6BAAM;;8CACI;AAGX;IADC,6BAAM,CAAC,EAAC,SAAS,EAAE,KAAK,EAAC,CAAC;;gDACd;AAGb;IADC,6BAAM,CAAC,EAAC,SAAS,EAAE,KAAK,EAAC,CAAC;;yDACL;AAGtB;IADC,8BAAO,CAAC,GAAG,EAAE,CAAC,+BAAc,EAAE,MAAM,CAAC;;sDACT;AAblB,kBAAkB;IAb9B,4BAAK,CAAC;QACL,UAAU,EAAE,IAAI;QAChB,SAAS,EAAE,YAAY;QACvB,SAAS,EAAE,cAAc;QACzB,SAAS,EAAE,gBAAgB;QAC3B,QAAQ,EAAE,IAAI;QACd,OAAO,EAAE;YACP;gBACE,MAAM,EAAE,IAAI;gBACZ,MAAM,EAAE,CAAC,eAAe,CAAC;aAC1B;SACF;KACF,CAAC;GACW,kBAAkB,CAc9B;AAdY,gDAAkB"}
--------------------------------------------------------------------------------
/common/database/models/BancoTipoTransacao.ts:
--------------------------------------------------------------------------------
1 | import { Column, HasMany, Model, PrimaryKey, Table } from 'sequelize-typescript';
2 | import { BancoTransacao } from './BancoTransacao';
3 |
4 | @Table({
5 | timestamps: true,
6 | createdAt: 'dataCriado',
7 | deletedAt: 'dataExcluido',
8 | updatedAt: 'dataAtualizado',
9 | paranoid: true,
10 | indexes: [
11 | {
12 | unique: true,
13 | fields: ['identificador'],
14 | }
15 | ]
16 | })
17 | export class BancoTipoTransacao extends Model {
18 |
19 | @PrimaryKey
20 | @Column
21 | id: number;
22 |
23 | @Column({allowNull: false})
24 | nome: string;
25 |
26 | @Column({allowNull: false})
27 | identificador: string;
28 |
29 | @HasMany(() => BancoTransacao, 'tipo')
30 | transacoes: BancoTransacao[];
31 | }
32 |
--------------------------------------------------------------------------------
/common/database/models/BancoTransacao.js:
--------------------------------------------------------------------------------
1 | "use strict";
2 | var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3 | var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4 | if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5 | else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6 | return c > 3 && r && Object.defineProperty(target, key, r), r;
7 | };
8 | var __metadata = (this && this.__metadata) || function (k, v) {
9 | if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10 | };
11 | Object.defineProperty(exports, "__esModule", { value: true });
12 | exports.BancoTransacao = void 0;
13 | const sequelize_typescript_1 = require("sequelize-typescript");
14 | const BancoConta_1 = require("./BancoConta");
15 | const BancoTipoTransacao_1 = require("./BancoTipoTransacao");
16 | let BancoTransacao = class BancoTransacao extends sequelize_typescript_1.Model {
17 | };
18 | __decorate([
19 | sequelize_typescript_1.Column,
20 | __metadata("design:type", Number)
21 | ], BancoTransacao.prototype, "valor", void 0);
22 | __decorate([
23 | sequelize_typescript_1.BelongsTo(() => BancoConta_1.BancoConta, { foreignKey: { allowNull: false, name: 'conta' } }),
24 | __metadata("design:type", BancoConta_1.BancoConta)
25 | ], BancoTransacao.prototype, "bancoTransacaoConta", void 0);
26 | __decorate([
27 | sequelize_typescript_1.BelongsTo(() => BancoTipoTransacao_1.BancoTipoTransacao, { foreignKey: { allowNull: false, name: 'tipo' } }),
28 | __metadata("design:type", BancoTipoTransacao_1.BancoTipoTransacao)
29 | ], BancoTransacao.prototype, "bancoTransacaoTipo", void 0);
30 | BancoTransacao = __decorate([
31 | sequelize_typescript_1.Table({
32 | timestamps: true,
33 | createdAt: 'dataCriado',
34 | deletedAt: 'dataExcluido',
35 | updatedAt: 'dataAtualizado',
36 | paranoid: true,
37 | })
38 | ], BancoTransacao);
39 | exports.BancoTransacao = BancoTransacao;
40 | //# sourceMappingURL=BancoTransacao.js.map
--------------------------------------------------------------------------------
/common/database/models/BancoTransacao.js.map:
--------------------------------------------------------------------------------
1 | {"version":3,"file":"BancoTransacao.js","sourceRoot":"","sources":["BancoTransacao.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,+DAAuE;AACvE,6CAA0C;AAC1C,6DAA0D;AAS1D,IAAa,cAAc,GAA3B,MAAa,cAAe,SAAQ,4BAAqB;CAUxD,CAAA;AAPC;IADC,6BAAM;;6CACO;AAGd;IADC,gCAAS,CAAC,GAAG,EAAE,CAAC,uBAAU,EAAE,EAAC,UAAU,EAAE,EAAC,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAC,EAAC,CAAC;8BACxD,uBAAU;2DAAC;AAGhC;IADC,gCAAS,CAAC,GAAG,EAAE,CAAC,uCAAkB,EAAE,EAAC,UAAU,EAAE,EAAC,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAC,EAAC,CAAC;8BAChE,uCAAkB;0DAAC;AAT5B,cAAc;IAP1B,4BAAK,CAAC;QACL,UAAU,EAAE,IAAI;QAChB,SAAS,EAAE,YAAY;QACvB,SAAS,EAAE,cAAc;QACzB,SAAS,EAAE,gBAAgB;QAC3B,QAAQ,EAAE,IAAI;KACf,CAAC;GACW,cAAc,CAU1B;AAVY,wCAAc"}
--------------------------------------------------------------------------------
/common/database/models/BancoTransacao.ts:
--------------------------------------------------------------------------------
1 | import { BelongsTo, Column, Model, Table } from 'sequelize-typescript';
2 | import { BancoConta } from './BancoConta';
3 | import { BancoTipoTransacao } from './BancoTipoTransacao';
4 |
5 | @Table({
6 | timestamps: true,
7 | createdAt: 'dataCriado',
8 | deletedAt: 'dataExcluido',
9 | updatedAt: 'dataAtualizado',
10 | paranoid: true,
11 | })
12 | export class BancoTransacao extends Model {
13 |
14 | @Column
15 | valor: number;
16 |
17 | @BelongsTo(() => BancoConta, {foreignKey: {allowNull: false, name: 'conta'}})
18 | bancoTransacaoConta: BancoConta;
19 |
20 | @BelongsTo(() => BancoTipoTransacao, {foreignKey: {allowNull: false, name: 'tipo'}})
21 | bancoTransacaoTipo: BancoTipoTransacao;
22 | }
23 |
--------------------------------------------------------------------------------
/common/database/models/Jogador.js:
--------------------------------------------------------------------------------
1 | "use strict";
2 | var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3 | var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4 | if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5 | else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6 | return c > 3 && r && Object.defineProperty(target, key, r), r;
7 | };
8 | var __metadata = (this && this.__metadata) || function (k, v) {
9 | if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10 | };
11 | Object.defineProperty(exports, "__esModule", { value: true });
12 | exports.Jogador = void 0;
13 | const sequelize_typescript_1 = require("sequelize-typescript");
14 | const Notificacao_1 = require("./Notificacao");
15 | const Profissao_1 = require("./Profissao");
16 | let Jogador = class Jogador extends sequelize_typescript_1.Model {
17 | };
18 | __decorate([
19 | sequelize_typescript_1.Column({ allowNull: false }),
20 | __metadata("design:type", String)
21 | ], Jogador.prototype, "nome", void 0);
22 | __decorate([
23 | sequelize_typescript_1.Column({ allowNull: false }),
24 | __metadata("design:type", String)
25 | ], Jogador.prototype, "senha", void 0);
26 | __decorate([
27 | sequelize_typescript_1.Column({ allowNull: false }),
28 | __metadata("design:type", String)
29 | ], Jogador.prototype, "email", void 0);
30 | __decorate([
31 | sequelize_typescript_1.Column({ allowNull: false }),
32 | __metadata("design:type", String)
33 | ], Jogador.prototype, "celular", void 0);
34 | __decorate([
35 | sequelize_typescript_1.Column({ defaultValue: 1 }),
36 | __metadata("design:type", Number)
37 | ], Jogador.prototype, "nivel", void 0);
38 | __decorate([
39 | sequelize_typescript_1.Column({ defaultValue: 0 }),
40 | __metadata("design:type", Number)
41 | ], Jogador.prototype, "dinheiro", void 0);
42 | __decorate([
43 | sequelize_typescript_1.Column({ defaultValue: 0 }),
44 | __metadata("design:type", Number)
45 | ], Jogador.prototype, "creditos", void 0);
46 | __decorate([
47 | sequelize_typescript_1.Column({ defaultValue: 100 }),
48 | __metadata("design:type", Number)
49 | ], Jogador.prototype, "fome", void 0);
50 | __decorate([
51 | sequelize_typescript_1.Column({ defaultValue: 100 }),
52 | __metadata("design:type", Number)
53 | ], Jogador.prototype, "sono", void 0);
54 | __decorate([
55 | sequelize_typescript_1.Column({ defaultValue: 100 }),
56 | __metadata("design:type", Number)
57 | ], Jogador.prototype, "forcaFisica", void 0);
58 | __decorate([
59 | sequelize_typescript_1.Column({ defaultValue: 100 }),
60 | __metadata("design:type", Number)
61 | ], Jogador.prototype, "sede", void 0);
62 | __decorate([
63 | sequelize_typescript_1.BelongsTo(() => Profissao_1.Profissao, { foreignKey: { allowNull: true, name: 'profissao' } }),
64 | __metadata("design:type", Profissao_1.Profissao)
65 | ], Jogador.prototype, "jogadorProfissao", void 0);
66 | __decorate([
67 | sequelize_typescript_1.HasMany(() => Notificacao_1.Notificacao),
68 | __metadata("design:type", Array)
69 | ], Jogador.prototype, "notificacoes", void 0);
70 | Jogador = __decorate([
71 | sequelize_typescript_1.Table({
72 | timestamps: true,
73 | createdAt: 'dataCriado',
74 | deletedAt: 'dataExcluido',
75 | updatedAt: 'dataAtualizado',
76 | paranoid: true,
77 | indexes: [
78 | {
79 | unique: true,
80 | fields: ['nome'],
81 | }
82 | ]
83 | })
84 | ], Jogador);
85 | exports.Jogador = Jogador;
86 | //# sourceMappingURL=Jogador.js.map
--------------------------------------------------------------------------------
/common/database/models/Jogador.js.map:
--------------------------------------------------------------------------------
1 | {"version":3,"file":"Jogador.js","sourceRoot":"","sources":["Jogador.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,+DAAgF;AAChF,+CAA4C;AAC5C,2CAAwC;AAexC,IAAa,OAAO,GAApB,MAAa,OAAQ,SAAQ,4BAAc;CAwC1C,CAAA;AArCC;IADC,6BAAM,CAAC,EAAC,SAAS,EAAE,KAAK,EAAC,CAAC;;qCACd;AAGb;IADC,6BAAM,CAAC,EAAC,SAAS,EAAE,KAAK,EAAC,CAAC;;sCACb;AAGd;IADC,6BAAM,CAAC,EAAC,SAAS,EAAE,KAAK,EAAC,CAAC;;sCACb;AAGd;IADC,6BAAM,CAAC,EAAC,SAAS,EAAE,KAAK,EAAC,CAAC;;wCACX;AAGhB;IADC,6BAAM,CAAC,EAAC,YAAY,EAAE,CAAC,EAAC,CAAC;;sCACZ;AAGd;IADC,6BAAM,CAAC,EAAC,YAAY,EAAE,CAAC,EAAC,CAAC;;yCACT;AAGjB;IADC,6BAAM,CAAC,EAAC,YAAY,EAAE,CAAC,EAAC,CAAC;;yCACT;AAGjB;IADC,6BAAM,CAAC,EAAC,YAAY,EAAE,GAAG,EAAC,CAAC;;qCACf;AAGb;IADC,6BAAM,CAAC,EAAC,YAAY,EAAE,GAAG,EAAC,CAAC;;qCACf;AAGb;IADC,6BAAM,CAAC,EAAC,YAAY,EAAE,GAAG,EAAC,CAAC;;4CACR;AAGpB;IADC,6BAAM,CAAC,EAAC,YAAY,EAAE,GAAG,EAAC,CAAC;;qCACf;AAGb;IADC,gCAAS,CAAC,GAAG,EAAE,CAAC,qBAAS,EAAE,EAAC,UAAU,EAAE,EAAC,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,WAAW,EAAC,EAAC,CAAC;8BAC7D,qBAAS;iDAAC;AAG5B;IADC,8BAAO,CAAC,GAAG,EAAE,CAAC,yBAAW,CAAC;;6CACC;AAvCjB,OAAO;IAbnB,4BAAK,CAAC;QACL,UAAU,EAAE,IAAI;QAChB,SAAS,EAAE,YAAY;QACvB,SAAS,EAAE,cAAc;QACzB,SAAS,EAAE,gBAAgB;QAC3B,QAAQ,EAAE,IAAI;QACd,OAAO,EAAE;YACP;gBACE,MAAM,EAAE,IAAI;gBACZ,MAAM,EAAE,CAAC,MAAM,CAAC;aACjB;SACF;KACF,CAAC;GACW,OAAO,CAwCnB;AAxCY,0BAAO"}
--------------------------------------------------------------------------------
/common/database/models/Jogador.ts:
--------------------------------------------------------------------------------
1 | import { BelongsTo, Column, HasMany, Model, Table } from 'sequelize-typescript';
2 | import { Notificacao } from './Notificacao';
3 | import { Profissao } from './Profissao';
4 |
5 | @Table({
6 | timestamps: true,
7 | createdAt: 'dataCriado',
8 | deletedAt: 'dataExcluido',
9 | updatedAt: 'dataAtualizado',
10 | paranoid: true,
11 | indexes: [
12 | {
13 | unique: true,
14 | fields: ['nome'],
15 | }
16 | ]
17 | })
18 | export class Jogador extends Model {
19 |
20 | @Column({allowNull: false})
21 | nome: string;
22 |
23 | @Column({allowNull: false})
24 | senha: string;
25 |
26 | @Column({allowNull: false})
27 | email: string;
28 |
29 | @Column({allowNull: false})
30 | celular: string;
31 |
32 | @Column({defaultValue: 1})
33 | nivel: number;
34 |
35 | @Column({defaultValue: 0})
36 | dinheiro: number;
37 |
38 | @Column({defaultValue: 0})
39 | creditos: number;
40 |
41 | @Column({defaultValue: 100})
42 | fome: number;
43 |
44 | @Column({defaultValue: 100})
45 | sono: number;
46 |
47 | @Column({defaultValue: 100})
48 | forcaFisica: number;
49 |
50 | @Column({defaultValue: 100})
51 | sede: number;
52 |
53 | @BelongsTo(() => Profissao, {foreignKey: {allowNull: true, name: 'profissao'}})
54 | jogadorProfissao: Profissao;
55 |
56 | @HasMany(() => Notificacao)
57 | notificacoes: Notificacao[];
58 | }
59 |
--------------------------------------------------------------------------------
/common/database/models/Notificacao.js:
--------------------------------------------------------------------------------
1 | "use strict";
2 | var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3 | var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4 | if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5 | else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6 | return c > 3 && r && Object.defineProperty(target, key, r), r;
7 | };
8 | var __metadata = (this && this.__metadata) || function (k, v) {
9 | if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10 | };
11 | Object.defineProperty(exports, "__esModule", { value: true });
12 | exports.Notificacao = void 0;
13 | const sequelize_typescript_1 = require("sequelize-typescript");
14 | const Jogador_1 = require("./Jogador");
15 | let Notificacao = class Notificacao extends sequelize_typescript_1.Model {
16 | };
17 | __decorate([
18 | sequelize_typescript_1.Column({ allowNull: false }),
19 | __metadata("design:type", String)
20 | ], Notificacao.prototype, "titulo", void 0);
21 | __decorate([
22 | sequelize_typescript_1.Column({ allowNull: false }),
23 | __metadata("design:type", String)
24 | ], Notificacao.prototype, "descricao", void 0);
25 | __decorate([
26 | sequelize_typescript_1.Column({ defaultValue: false }),
27 | __metadata("design:type", Boolean)
28 | ], Notificacao.prototype, "lido", void 0);
29 | __decorate([
30 | sequelize_typescript_1.Column,
31 | __metadata("design:type", String)
32 | ], Notificacao.prototype, "dataLido", void 0);
33 | __decorate([
34 | sequelize_typescript_1.ForeignKey(() => Jogador_1.Jogador),
35 | __metadata("design:type", Jogador_1.Jogador)
36 | ], Notificacao.prototype, "jogador", void 0);
37 | Notificacao = __decorate([
38 | sequelize_typescript_1.Table({
39 | timestamps: true,
40 | createdAt: 'dataCriado',
41 | deletedAt: 'dataExcluido',
42 | updatedAt: 'dataAtualizado',
43 | paranoid: true,
44 | })
45 | ], Notificacao);
46 | exports.Notificacao = Notificacao;
47 | //# sourceMappingURL=Notificacao.js.map
--------------------------------------------------------------------------------
/common/database/models/Notificacao.js.map:
--------------------------------------------------------------------------------
1 | {"version":3,"file":"Notificacao.js","sourceRoot":"","sources":["Notificacao.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,+DAAwE;AACxE,uCAAoC;AASpC,IAAa,WAAW,GAAxB,MAAa,WAAY,SAAQ,4BAAkB;CAgBlD,CAAA;AAbC;IADC,6BAAM,CAAC,EAAC,SAAS,EAAE,KAAK,EAAC,CAAC;;2CACZ;AAGf;IADC,6BAAM,CAAC,EAAC,SAAS,EAAE,KAAK,EAAC,CAAC;;8CACT;AAGlB;IADC,6BAAM,CAAC,EAAC,YAAY,EAAE,KAAK,EAAC,CAAC;;yCAChB;AAGd;IADC,6BAAM;;6CACU;AAGjB;IADC,iCAAU,CAAC,GAAG,EAAE,CAAC,iBAAO,CAAC;8BACjB,iBAAO;4CAAC;AAfN,WAAW;IAPvB,4BAAK,CAAC;QACL,UAAU,EAAE,IAAI;QAChB,SAAS,EAAE,YAAY;QACvB,SAAS,EAAE,cAAc;QACzB,SAAS,EAAE,gBAAgB;QAC3B,QAAQ,EAAE,IAAI;KACf,CAAC;GACW,WAAW,CAgBvB;AAhBY,kCAAW"}
--------------------------------------------------------------------------------
/common/database/models/Notificacao.ts:
--------------------------------------------------------------------------------
1 | import { Column, ForeignKey, Model, Table } from 'sequelize-typescript';
2 | import { Jogador } from './Jogador';
3 |
4 | @Table({
5 | timestamps: true,
6 | createdAt: 'dataCriado',
7 | deletedAt: 'dataExcluido',
8 | updatedAt: 'dataAtualizado',
9 | paranoid: true,
10 | })
11 | export class Notificacao extends Model {
12 |
13 | @Column({allowNull: false})
14 | titulo: string;
15 |
16 | @Column({allowNull: false})
17 | descricao: string;
18 |
19 | @Column({defaultValue: false})
20 | lido: boolean;
21 |
22 | @Column
23 | dataLido: string;
24 |
25 | @ForeignKey(() => Jogador)
26 | jogador: Jogador;
27 | }
28 |
--------------------------------------------------------------------------------
/common/database/models/Profissao.js:
--------------------------------------------------------------------------------
1 | "use strict";
2 | var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3 | var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4 | if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5 | else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6 | return c > 3 && r && Object.defineProperty(target, key, r), r;
7 | };
8 | var __metadata = (this && this.__metadata) || function (k, v) {
9 | if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10 | };
11 | Object.defineProperty(exports, "__esModule", { value: true });
12 | exports.Profissao = void 0;
13 | const sequelize_typescript_1 = require("sequelize-typescript");
14 | const Jogador_1 = require("./Jogador");
15 | let Profissao = class Profissao extends sequelize_typescript_1.Model {
16 | };
17 | __decorate([
18 | sequelize_typescript_1.Column({ allowNull: false }),
19 | __metadata("design:type", String)
20 | ], Profissao.prototype, "nome", void 0);
21 | __decorate([
22 | sequelize_typescript_1.Column({ allowNull: false, defaultValue: 10 }),
23 | __metadata("design:type", Number)
24 | ], Profissao.prototype, "vagas", void 0);
25 | __decorate([
26 | sequelize_typescript_1.Column({ allowNull: false, defaultValue: 1 }),
27 | __metadata("design:type", Number)
28 | ], Profissao.prototype, "nivelMinimo", void 0);
29 | __decorate([
30 | sequelize_typescript_1.Column({ allowNull: false }),
31 | __metadata("design:type", Number)
32 | ], Profissao.prototype, "salario", void 0);
33 | __decorate([
34 | sequelize_typescript_1.HasMany(() => Jogador_1.Jogador, 'profissao'),
35 | __metadata("design:type", Array)
36 | ], Profissao.prototype, "jogadores", void 0);
37 | Profissao = __decorate([
38 | sequelize_typescript_1.Table({
39 | timestamps: true,
40 | createdAt: 'dataCriado',
41 | deletedAt: 'dataExcluido',
42 | updatedAt: 'dataAtualizado',
43 | paranoid: true,
44 | indexes: [
45 | {
46 | unique: true,
47 | fields: ['nome'],
48 | }
49 | ]
50 | })
51 | ], Profissao);
52 | exports.Profissao = Profissao;
53 | //# sourceMappingURL=Profissao.js.map
--------------------------------------------------------------------------------
/common/database/models/Profissao.js.map:
--------------------------------------------------------------------------------
1 | {"version":3,"file":"Profissao.js","sourceRoot":"","sources":["Profissao.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,+DAAqE;AACrE,uCAAoC;AAepC,IAAa,SAAS,GAAtB,MAAa,SAAU,SAAQ,4BAAgB;CAgB9C,CAAA;AAbC;IADC,6BAAM,CAAC,EAAC,SAAS,EAAE,KAAK,EAAC,CAAC;;uCACd;AAGb;IADC,6BAAM,CAAC,EAAC,SAAS,EAAE,KAAK,EAAE,YAAY,EAAE,EAAE,EAAC,CAAC;;wCAC/B;AAGd;IADC,6BAAM,CAAC,EAAC,SAAS,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC,EAAC,CAAC;;8CACxB;AAGpB;IADC,6BAAM,CAAC,EAAC,SAAS,EAAE,KAAK,EAAC,CAAC;;0CACX;AAGhB;IADC,8BAAO,CAAC,GAAG,EAAE,CAAC,iBAAO,EAAE,WAAW,CAAC;;4CACf;AAfV,SAAS;IAbrB,4BAAK,CAAC;QACL,UAAU,EAAE,IAAI;QAChB,SAAS,EAAE,YAAY;QACvB,SAAS,EAAE,cAAc;QACzB,SAAS,EAAE,gBAAgB;QAC3B,QAAQ,EAAE,IAAI;QACd,OAAO,EAAE;YACP;gBACE,MAAM,EAAE,IAAI;gBACZ,MAAM,EAAE,CAAC,MAAM,CAAC;aACjB;SACF;KACF,CAAC;GACW,SAAS,CAgBrB;AAhBY,8BAAS"}
--------------------------------------------------------------------------------
/common/database/models/Profissao.ts:
--------------------------------------------------------------------------------
1 | import { Column, HasMany, Model, Table } from 'sequelize-typescript';
2 | import { Jogador } from './Jogador';
3 |
4 | @Table({
5 | timestamps: true,
6 | createdAt: 'dataCriado',
7 | deletedAt: 'dataExcluido',
8 | updatedAt: 'dataAtualizado',
9 | paranoid: true,
10 | indexes: [
11 | {
12 | unique: true,
13 | fields: ['nome'],
14 | }
15 | ]
16 | })
17 | export class Profissao extends Model {
18 |
19 | @Column({allowNull: false})
20 | nome: string;
21 |
22 | @Column({allowNull: false, defaultValue: 10})
23 | vagas: number;
24 |
25 | @Column({allowNull: false, defaultValue: 1})
26 | nivelMinimo: number;
27 |
28 | @Column({allowNull: false})
29 | salario: number;
30 |
31 | @HasMany(() => Jogador, 'profissao')
32 | jogadores: Jogador[];
33 | }
34 |
--------------------------------------------------------------------------------
/common/database/models/Propriedade.js:
--------------------------------------------------------------------------------
1 | "use strict";
2 | var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3 | var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4 | if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5 | else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6 | return c > 3 && r && Object.defineProperty(target, key, r), r;
7 | };
8 | var __metadata = (this && this.__metadata) || function (k, v) {
9 | if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10 | };
11 | Object.defineProperty(exports, "__esModule", { value: true });
12 | exports.Propriedade = void 0;
13 | const sequelize_typescript_1 = require("sequelize-typescript");
14 | const TipoPropriedade_1 = require("./TipoPropriedade");
15 | let Propriedade = class Propriedade extends sequelize_typescript_1.Model {
16 | };
17 | __decorate([
18 | sequelize_typescript_1.Column({ allowNull: false }),
19 | __metadata("design:type", String)
20 | ], Propriedade.prototype, "nomeOriginal", void 0);
21 | __decorate([
22 | sequelize_typescript_1.Column({ allowNull: false }),
23 | __metadata("design:type", String)
24 | ], Propriedade.prototype, "nomeExibido", void 0);
25 | __decorate([
26 | sequelize_typescript_1.Column({ allowNull: false }),
27 | __metadata("design:type", Number)
28 | ], Propriedade.prototype, "portaEntradaX", void 0);
29 | __decorate([
30 | sequelize_typescript_1.Column({ allowNull: false }),
31 | __metadata("design:type", Number)
32 | ], Propriedade.prototype, "portaEntradaY", void 0);
33 | __decorate([
34 | sequelize_typescript_1.Column({ allowNull: false }),
35 | __metadata("design:type", Number)
36 | ], Propriedade.prototype, "portaEntradaZ", void 0);
37 | __decorate([
38 | sequelize_typescript_1.Column({ allowNull: false }),
39 | __metadata("design:type", Number)
40 | ], Propriedade.prototype, "portaSaidaX", void 0);
41 | __decorate([
42 | sequelize_typescript_1.Column({ allowNull: false }),
43 | __metadata("design:type", Number)
44 | ], Propriedade.prototype, "portaSaidaY", void 0);
45 | __decorate([
46 | sequelize_typescript_1.Column({ allowNull: false }),
47 | __metadata("design:type", Number)
48 | ], Propriedade.prototype, "portaSaidaZ", void 0);
49 | __decorate([
50 | sequelize_typescript_1.Column({ allowNull: false }),
51 | __metadata("design:type", String)
52 | ], Propriedade.prototype, "iconePickup", void 0);
53 | __decorate([
54 | sequelize_typescript_1.BelongsTo(() => TipoPropriedade_1.TipoPropriedade, { foreignKey: { allowNull: false, name: 'tipo' } }),
55 | __metadata("design:type", TipoPropriedade_1.TipoPropriedade)
56 | ], Propriedade.prototype, "tipoPropriedade", void 0);
57 | Propriedade = __decorate([
58 | sequelize_typescript_1.Table({
59 | timestamps: true,
60 | createdAt: 'dataCriado',
61 | deletedAt: 'dataExcluido',
62 | updatedAt: 'dataAtualizado',
63 | paranoid: true,
64 | indexes: [
65 | {
66 | unique: true,
67 | fields: ['nomeOriginal', 'nomeExibido'],
68 | }
69 | ]
70 | })
71 | ], Propriedade);
72 | exports.Propriedade = Propriedade;
73 | //# sourceMappingURL=Propriedade.js.map
--------------------------------------------------------------------------------
/common/database/models/Propriedade.js.map:
--------------------------------------------------------------------------------
1 | {"version":3,"file":"Propriedade.js","sourceRoot":"","sources":["Propriedade.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,+DAAuE;AACvE,uDAAoD;AAepD,IAAa,WAAW,GAAxB,MAAa,WAAY,SAAQ,4BAAkB;CA+BlD,CAAA;AA5BC;IADC,6BAAM,CAAC,EAAC,SAAS,EAAE,KAAK,EAAC,CAAC;;iDACN;AAGrB;IADC,6BAAM,CAAC,EAAC,SAAS,EAAE,KAAK,EAAC,CAAC;;gDACP;AAGpB;IADC,6BAAM,CAAC,EAAC,SAAS,EAAE,KAAK,EAAC,CAAC;;kDACL;AAGtB;IADC,6BAAM,CAAC,EAAC,SAAS,EAAE,KAAK,EAAC,CAAC;;kDACL;AAGtB;IADC,6BAAM,CAAC,EAAC,SAAS,EAAE,KAAK,EAAC,CAAC;;kDACL;AAGtB;IADC,6BAAM,CAAC,EAAC,SAAS,EAAE,KAAK,EAAC,CAAC;;gDACP;AAGpB;IADC,6BAAM,CAAC,EAAC,SAAS,EAAE,KAAK,EAAC,CAAC;;gDACP;AAGpB;IADC,6BAAM,CAAC,EAAC,SAAS,EAAE,KAAK,EAAC,CAAC;;gDACP;AAGpB;IADC,6BAAM,CAAC,EAAC,SAAS,EAAE,KAAK,EAAC,CAAC;;gDACP;AAGpB;IADC,gCAAS,CAAC,GAAG,EAAE,CAAC,iCAAe,EAAE,EAAC,UAAU,EAAE,EAAC,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAC,EAAC,CAAC;8BAChE,iCAAe;oDAAC;AA9BtB,WAAW;IAbvB,4BAAK,CAAC;QACL,UAAU,EAAE,IAAI;QAChB,SAAS,EAAE,YAAY;QACvB,SAAS,EAAE,cAAc;QACzB,SAAS,EAAE,gBAAgB;QAC3B,QAAQ,EAAE,IAAI;QACd,OAAO,EAAE;YACP;gBACE,MAAM,EAAE,IAAI;gBACZ,MAAM,EAAE,CAAC,cAAc,EAAE,aAAa,CAAC;aACxC;SACF;KACF,CAAC;GACW,WAAW,CA+BvB;AA/BY,kCAAW"}
--------------------------------------------------------------------------------
/common/database/models/Propriedade.ts:
--------------------------------------------------------------------------------
1 | import { BelongsTo, Column, Model, Table } from 'sequelize-typescript';
2 | import { TipoPropriedade } from './TipoPropriedade';
3 |
4 | @Table({
5 | timestamps: true,
6 | createdAt: 'dataCriado',
7 | deletedAt: 'dataExcluido',
8 | updatedAt: 'dataAtualizado',
9 | paranoid: true,
10 | indexes: [
11 | {
12 | unique: true,
13 | fields: ['nomeOriginal', 'nomeExibido'],
14 | }
15 | ]
16 | })
17 | export class Propriedade extends Model {
18 |
19 | @Column({allowNull: false})
20 | nomeOriginal: string;
21 |
22 | @Column({allowNull: false})
23 | nomeExibido: string;
24 |
25 | @Column({allowNull: false})
26 | portaEntradaX: number;
27 |
28 | @Column({allowNull: false})
29 | portaEntradaY: number;
30 |
31 | @Column({allowNull: false})
32 | portaEntradaZ: number;
33 |
34 | @Column({allowNull: false})
35 | portaSaidaX: number;
36 |
37 | @Column({allowNull: false})
38 | portaSaidaY: number;
39 |
40 | @Column({allowNull: false})
41 | portaSaidaZ: number;
42 |
43 | @Column({allowNull: false})
44 | iconePickup: string;
45 |
46 | @BelongsTo(() => TipoPropriedade, {foreignKey: {allowNull: false, name: 'tipo'}})
47 | tipoPropriedade: TipoPropriedade;
48 | }
49 |
--------------------------------------------------------------------------------
/common/database/models/TipoPropriedade.js:
--------------------------------------------------------------------------------
1 | "use strict";
2 | var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3 | var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4 | if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5 | else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6 | return c > 3 && r && Object.defineProperty(target, key, r), r;
7 | };
8 | var __metadata = (this && this.__metadata) || function (k, v) {
9 | if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10 | };
11 | Object.defineProperty(exports, "__esModule", { value: true });
12 | exports.TipoPropriedade = void 0;
13 | const sequelize_typescript_1 = require("sequelize-typescript");
14 | const Propriedade_1 = require("./Propriedade");
15 | let TipoPropriedade = class TipoPropriedade extends sequelize_typescript_1.Model {
16 | };
17 | __decorate([
18 | sequelize_typescript_1.PrimaryKey,
19 | sequelize_typescript_1.Column,
20 | __metadata("design:type", Number)
21 | ], TipoPropriedade.prototype, "id", void 0);
22 | __decorate([
23 | sequelize_typescript_1.Column({ allowNull: false }),
24 | __metadata("design:type", String)
25 | ], TipoPropriedade.prototype, "nome", void 0);
26 | __decorate([
27 | sequelize_typescript_1.Column({ allowNull: false }),
28 | __metadata("design:type", String)
29 | ], TipoPropriedade.prototype, "identificador", void 0);
30 | __decorate([
31 | sequelize_typescript_1.HasMany(() => Propriedade_1.Propriedade, 'tipo'),
32 | __metadata("design:type", Array)
33 | ], TipoPropriedade.prototype, "propriedades", void 0);
34 | TipoPropriedade = __decorate([
35 | sequelize_typescript_1.Table({
36 | timestamps: true,
37 | createdAt: 'dataCriado',
38 | deletedAt: 'dataExcluido',
39 | updatedAt: 'dataAtualizado',
40 | paranoid: true,
41 | indexes: [
42 | {
43 | unique: true,
44 | fields: ['identificador'],
45 | }
46 | ]
47 | })
48 | ], TipoPropriedade);
49 | exports.TipoPropriedade = TipoPropriedade;
50 | //# sourceMappingURL=TipoPropriedade.js.map
--------------------------------------------------------------------------------
/common/database/models/TipoPropriedade.js.map:
--------------------------------------------------------------------------------
1 | {"version":3,"file":"TipoPropriedade.js","sourceRoot":"","sources":["TipoPropriedade.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,+DAAiF;AACjF,+CAA4C;AAe5C,IAAa,eAAe,GAA5B,MAAa,eAAgB,SAAQ,4BAAsB;CAc1D,CAAA;AAVC;IAFC,iCAAU;IACV,6BAAM;;2CACI;AAGX;IADC,6BAAM,CAAC,EAAC,SAAS,EAAE,KAAK,EAAC,CAAC;;6CACd;AAGb;IADC,6BAAM,CAAC,EAAC,SAAS,EAAE,KAAK,EAAC,CAAC;;sDACL;AAGtB;IADC,8BAAO,CAAC,GAAG,EAAE,CAAC,yBAAW,EAAE,MAAM,CAAC;;qDACP;AAbjB,eAAe;IAb3B,4BAAK,CAAC;QACL,UAAU,EAAE,IAAI;QAChB,SAAS,EAAE,YAAY;QACvB,SAAS,EAAE,cAAc;QACzB,SAAS,EAAE,gBAAgB;QAC3B,QAAQ,EAAE,IAAI;QACd,OAAO,EAAE;YACP;gBACE,MAAM,EAAE,IAAI;gBACZ,MAAM,EAAE,CAAC,eAAe,CAAC;aAC1B;SACF;KACF,CAAC;GACW,eAAe,CAc3B;AAdY,0CAAe"}
--------------------------------------------------------------------------------
/common/database/models/TipoPropriedade.ts:
--------------------------------------------------------------------------------
1 | import { Column, HasMany, Model, PrimaryKey, Table } from 'sequelize-typescript';
2 | import { Propriedade } from './Propriedade';
3 |
4 | @Table({
5 | timestamps: true,
6 | createdAt: 'dataCriado',
7 | deletedAt: 'dataExcluido',
8 | updatedAt: 'dataAtualizado',
9 | paranoid: true,
10 | indexes: [
11 | {
12 | unique: true,
13 | fields: ['identificador'],
14 | }
15 | ]
16 | })
17 | export class TipoPropriedade extends Model {
18 |
19 | @PrimaryKey
20 | @Column
21 | id: number;
22 |
23 | @Column({allowNull: false})
24 | nome: string;
25 |
26 | @Column({allowNull: false})
27 | identificador: string;
28 |
29 | @HasMany(() => Propriedade, 'tipo')
30 | propriedades: Propriedade[];
31 | }
32 |
--------------------------------------------------------------------------------
/common/database/models/Veiculo.js:
--------------------------------------------------------------------------------
1 | "use strict";
2 | var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3 | var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4 | if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5 | else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6 | return c > 3 && r && Object.defineProperty(target, key, r), r;
7 | };
8 | var __metadata = (this && this.__metadata) || function (k, v) {
9 | if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10 | };
11 | Object.defineProperty(exports, "__esModule", { value: true });
12 | exports.Veiculo = void 0;
13 | const sequelize_typescript_1 = require("sequelize-typescript");
14 | const Jogador_1 = require("./Jogador");
15 | let Veiculo = class Veiculo extends sequelize_typescript_1.Model {
16 | };
17 | __decorate([
18 | sequelize_typescript_1.Column({ allowNull: false }),
19 | __metadata("design:type", String)
20 | ], Veiculo.prototype, "placaOriginal", void 0);
21 | __decorate([
22 | sequelize_typescript_1.Column({ allowNull: false }),
23 | __metadata("design:type", String)
24 | ], Veiculo.prototype, "placaExibido", void 0);
25 | __decorate([
26 | sequelize_typescript_1.Column({ allowNull: false }),
27 | __metadata("design:type", String)
28 | ], Veiculo.prototype, "modelo", void 0);
29 | __decorate([
30 | sequelize_typescript_1.Column({ allowNull: false, type: sequelize_typescript_1.DataType.STRING }),
31 | __metadata("design:type", String)
32 | ], Veiculo.prototype, "posicaoX", void 0);
33 | __decorate([
34 | sequelize_typescript_1.Column({ allowNull: false, type: sequelize_typescript_1.DataType.STRING }),
35 | __metadata("design:type", String)
36 | ], Veiculo.prototype, "posicaoY", void 0);
37 | __decorate([
38 | sequelize_typescript_1.Column({ allowNull: false, type: sequelize_typescript_1.DataType.STRING }),
39 | __metadata("design:type", String)
40 | ], Veiculo.prototype, "posicaoZ", void 0);
41 | __decorate([
42 | sequelize_typescript_1.Column({ allowNull: false, type: sequelize_typescript_1.DataType.STRING }),
43 | __metadata("design:type", String)
44 | ], Veiculo.prototype, "posicaoOriginalX", void 0);
45 | __decorate([
46 | sequelize_typescript_1.Column({ allowNull: false, type: sequelize_typescript_1.DataType.STRING }),
47 | __metadata("design:type", String)
48 | ], Veiculo.prototype, "posicaoOriginalY", void 0);
49 | __decorate([
50 | sequelize_typescript_1.Column({ allowNull: false, type: sequelize_typescript_1.DataType.STRING }),
51 | __metadata("design:type", String)
52 | ], Veiculo.prototype, "posicaoOriginalZ", void 0);
53 | __decorate([
54 | sequelize_typescript_1.Column({ allowNull: false }),
55 | __metadata("design:type", Number)
56 | ], Veiculo.prototype, "rotacao", void 0);
57 | __decorate([
58 | sequelize_typescript_1.Column({ allowNull: false }),
59 | __metadata("design:type", Number)
60 | ], Veiculo.prototype, "transparencia", void 0);
61 | __decorate([
62 | sequelize_typescript_1.Column({ allowNull: false }),
63 | __metadata("design:type", Number)
64 | ], Veiculo.prototype, "corPrimariaR", void 0);
65 | __decorate([
66 | sequelize_typescript_1.Column({ allowNull: false }),
67 | __metadata("design:type", Number)
68 | ], Veiculo.prototype, "corPrimariaG", void 0);
69 | __decorate([
70 | sequelize_typescript_1.Column({ allowNull: false }),
71 | __metadata("design:type", Number)
72 | ], Veiculo.prototype, "corPrimariaB", void 0);
73 | __decorate([
74 | sequelize_typescript_1.Column({ allowNull: false }),
75 | __metadata("design:type", Number)
76 | ], Veiculo.prototype, "corSecundariaR", void 0);
77 | __decorate([
78 | sequelize_typescript_1.Column({ allowNull: false }),
79 | __metadata("design:type", Number)
80 | ], Veiculo.prototype, "corSecundariaG", void 0);
81 | __decorate([
82 | sequelize_typescript_1.Column({ allowNull: false }),
83 | __metadata("design:type", Number)
84 | ], Veiculo.prototype, "corSecundariaB", void 0);
85 | __decorate([
86 | sequelize_typescript_1.Column({ allowNull: false, defaultValue: true }),
87 | __metadata("design:type", Boolean)
88 | ], Veiculo.prototype, "trancado", void 0);
89 | __decorate([
90 | sequelize_typescript_1.Column({ allowNull: false, defaultValue: false }),
91 | __metadata("design:type", Boolean)
92 | ], Veiculo.prototype, "motor", void 0);
93 | __decorate([
94 | sequelize_typescript_1.Column({ allowNull: false, defaultValue: 1 }),
95 | __metadata("design:type", Number)
96 | ], Veiculo.prototype, "mundo", void 0);
97 | __decorate([
98 | sequelize_typescript_1.Column({ allowNull: false }),
99 | __metadata("design:type", Number)
100 | ], Veiculo.prototype, "valorOriginal", void 0);
101 | __decorate([
102 | sequelize_typescript_1.Column({ allowNull: false }),
103 | __metadata("design:type", Number)
104 | ], Veiculo.prototype, "valorVenda", void 0);
105 | __decorate([
106 | sequelize_typescript_1.Column({ allowNull: false, defaultValue: true }),
107 | __metadata("design:type", Boolean)
108 | ], Veiculo.prototype, "aVenda", void 0);
109 | __decorate([
110 | sequelize_typescript_1.BelongsTo(() => Jogador_1.Jogador, { foreignKey: { allowNull: true, name: 'jogador' } }),
111 | __metadata("design:type", Jogador_1.Jogador)
112 | ], Veiculo.prototype, "jogadorVeiculo", void 0);
113 | Veiculo = __decorate([
114 | sequelize_typescript_1.Table({
115 | timestamps: true,
116 | createdAt: 'dataCriado',
117 | deletedAt: 'dataExcluido',
118 | updatedAt: 'dataAtualizado',
119 | paranoid: true,
120 | indexes: [
121 | {
122 | unique: true,
123 | fields: ['placaOriginal', 'placaExibido'],
124 | }
125 | ]
126 | })
127 | ], Veiculo);
128 | exports.Veiculo = Veiculo;
129 | //# sourceMappingURL=Veiculo.js.map
--------------------------------------------------------------------------------
/common/database/models/Veiculo.js.map:
--------------------------------------------------------------------------------
1 | {"version":3,"file":"Veiculo.js","sourceRoot":"","sources":["Veiculo.ts"],"names":[],"mappings":"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"}
--------------------------------------------------------------------------------
/common/database/models/Veiculo.ts:
--------------------------------------------------------------------------------
1 | import { BelongsTo, Column, DataType, Model, Table } from 'sequelize-typescript';
2 | import { Jogador } from './Jogador';
3 |
4 | @Table({
5 | timestamps: true,
6 | createdAt: 'dataCriado',
7 | deletedAt: 'dataExcluido',
8 | updatedAt: 'dataAtualizado',
9 | paranoid: true,
10 | indexes: [
11 | {
12 | unique: true,
13 | fields: ['placaOriginal', 'placaExibido'],
14 | }
15 | ]
16 | })
17 | export class Veiculo extends Model {
18 |
19 | @Column({allowNull: false})
20 | placaOriginal: string;
21 |
22 | @Column({allowNull: false})
23 | placaExibido: string;
24 |
25 | @Column({allowNull: false})
26 | modelo: string;
27 |
28 | @Column({allowNull: false, type: DataType.STRING})
29 | posicaoX: string;
30 |
31 | @Column({allowNull: false, type: DataType.STRING})
32 | posicaoY: string;
33 |
34 | @Column({allowNull: false, type: DataType.STRING})
35 | posicaoZ: string;
36 |
37 | @Column({allowNull: false, type: DataType.STRING})
38 | posicaoOriginalX: string;
39 |
40 | @Column({allowNull: false, type: DataType.STRING})
41 | posicaoOriginalY: string;
42 |
43 | @Column({allowNull: false, type: DataType.STRING})
44 | posicaoOriginalZ: string;
45 |
46 | @Column({allowNull: false})
47 | rotacao: number;
48 |
49 | @Column({allowNull: false})
50 | transparencia: number;
51 |
52 | @Column({allowNull: false})
53 | corPrimariaR: number;
54 |
55 | @Column({allowNull: false})
56 | corPrimariaG: number;
57 |
58 | @Column({allowNull: false})
59 | corPrimariaB: number;
60 |
61 | @Column({allowNull: false})
62 | corSecundariaR: number;
63 |
64 | @Column({allowNull: false})
65 | corSecundariaG: number;
66 |
67 | @Column({allowNull: false})
68 | corSecundariaB: number;
69 |
70 | @Column({allowNull: false, defaultValue: true})
71 | trancado: boolean;
72 |
73 | @Column({allowNull: false, defaultValue: false})
74 | motor: boolean;
75 |
76 | @Column({allowNull: false, defaultValue: 1})
77 | mundo: number;
78 |
79 | @Column({allowNull: false})
80 | valorOriginal: number;
81 |
82 | @Column({allowNull: false})
83 | valorVenda: number;
84 |
85 | @Column({allowNull: false, defaultValue: true})
86 | aVenda: boolean;
87 |
88 | @BelongsTo(() => Jogador, {foreignKey: {allowNull: true, name: 'jogador'}})
89 | jogadorVeiculo: Jogador;
90 | }
91 |
--------------------------------------------------------------------------------
/common/database/seeders/20190127204953-TipoPropriedade.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 |
3 | module.exports = {
4 | up: (queryInterface, Sequelize) => {
5 | return queryInterface.bulkInsert('TipoPropriedade', [{
6 | id: '1',
7 | nome: 'Banco',
8 | identificador: 'banco',
9 | dataCriado: new Date(),
10 | dataAtualizado: new Date(),
11 | }, {
12 | id: '2',
13 | nome: 'Posto de Gasolina',
14 | identificador: 'posto-gasolina',
15 | dataCriado: new Date(),
16 | dataAtualizado: new Date(),
17 | }, {
18 | id: '3',
19 | nome: 'Bar',
20 | identificador: 'bar',
21 | dataCriado: new Date(),
22 | dataAtualizado: new Date(),
23 | }, {
24 | id: '4',
25 | nome: 'Lanchonete',
26 | identificador: 'lanchonete',
27 | dataCriado: new Date(),
28 | dataAtualizado: new Date(),
29 | }, {
30 | id: '5',
31 | nome: 'Restaurante',
32 | identificador: 'restaurante',
33 | dataCriado: new Date(),
34 | dataAtualizado: new Date(),
35 | }, {
36 | id: '6',
37 | nome: 'Auto Escola',
38 | identificador: 'auto-escola',
39 | dataCriado: new Date(),
40 | dataAtualizado: new Date(),
41 | }, {
42 | id: '7',
43 | nome: 'Locadora de Veículos',
44 | identificador: 'locadora-veiculos',
45 | dataCriado: new Date(),
46 | dataAtualizado: new Date(),
47 | }, {
48 | id: '8',
49 | nome: 'Loja de Armas',
50 | identificador: 'loja-armas',
51 | dataCriado: new Date(),
52 | dataAtualizado: new Date(),
53 | }, {
54 | id: '9',
55 | nome: 'Loja de Roupas',
56 | identificador: 'loja-roupas',
57 | dataCriado: new Date(),
58 | dataAtualizado: new Date(),
59 | }, {
60 | id: '10',
61 | nome: 'Loja de Utensílios',
62 | identificador: 'loja-utensilios',
63 | dataCriado: new Date(),
64 | dataAtualizado: new Date(),
65 | }, {
66 | id: '11',
67 | nome: 'Academia',
68 | identificador: 'academia',
69 | dataCriado: new Date(),
70 | dataAtualizado: new Date(),
71 | }, {
72 | id: '12',
73 | nome: 'Imobiliaria',
74 | identificador: 'imobiliaria',
75 | dataCriado: new Date(),
76 | dataAtualizado: new Date(),
77 | }], {});
78 | },
79 |
80 | down: (queryInterface, Sequelize) => {
81 | return queryInterface.bulkDelete('TipoPropriedade', null, {});
82 | }
83 | };
84 |
--------------------------------------------------------------------------------
/common/database/seeders/20190128132621-BancoTipoTransacao.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 |
3 | module.exports = {
4 | up: (queryInterface, Sequelize) => {
5 | return queryInterface.bulkInsert('BancoTipoTransacao', [{
6 | id: '1',
7 | nome: 'Crédito',
8 | identificador: 'credito',
9 | dataCriado: new Date(),
10 | dataAtualizado: new Date(),
11 | }, {
12 | id: '2',
13 | nome: 'Débito',
14 | identificador: 'debito',
15 | dataCriado: new Date(),
16 | dataAtualizado: new Date(),
17 | }], {});
18 | },
19 |
20 | down: (queryInterface, Sequelize) => {
21 | /*
22 | Add reverting commands here.
23 | Return a promise to correctly handle asynchronicity.
24 |
25 | Example:
26 | return queryInterface.bulkDelete('People', null, {});
27 | */
28 | }
29 | };
30 |
--------------------------------------------------------------------------------
/common/environment.js:
--------------------------------------------------------------------------------
1 | "use strict";
2 | Object.defineProperty(exports, "__esModule", { value: true });
3 | exports.environment = void 0;
4 | exports.environment = {
5 | database_name: 'BRAZUCAS',
6 | database_username: 'root',
7 | database_password: 'abcd1234',
8 | database_host: 'ragemp_mysql',
9 | database_port: '3306',
10 | posicaoLogin: new mp.Vector3(-1081.1380615234375, -2586.490234375, 13.800606727600098),
11 | };
12 | //# sourceMappingURL=environment.js.map
--------------------------------------------------------------------------------
/common/environment.js.map:
--------------------------------------------------------------------------------
1 | {"version":3,"file":"environment.js","sourceRoot":"","sources":["environment.ts"],"names":[],"mappings":";;;AAAa,QAAA,WAAW,GAAQ;IAC9B,aAAa,EAAE,UAAU;IACzB,iBAAiB,EAAE,MAAM;IACzB,iBAAiB,EAAE,UAAU;IAC7B,aAAa,EAAE,cAAc;IAC7B,aAAa,EAAE,MAAM;IACrB,YAAY,EAAE,IAAI,EAAE,CAAC,OAAO,CAAC,CAAC,kBAAkB,EAAE,CAAC,cAAc,EAAE,kBAAkB,CAAC;CACvF,CAAC"}
--------------------------------------------------------------------------------
/common/environment.ts:
--------------------------------------------------------------------------------
1 | export const environment: any = {
2 | database_name: 'BRAZUCAS',
3 | database_username: 'root',
4 | database_password: 'abcd1234',
5 | database_host: 'ragemp_mysql',
6 | database_port: '3306',
7 | posicaoLogin: new mp.Vector3(-1081.1380615234375, -2586.490234375, 13.800606727600098),
8 | };
9 |
--------------------------------------------------------------------------------
/common/interfaces.js:
--------------------------------------------------------------------------------
1 | "use strict";
2 | Object.defineProperty(exports, "__esModule", { value: true });
3 | exports.PLAYER_NAME_MAXLENGTH = exports.PLAYER_NAME_MINLENGTH = exports.PLAYER_NAME_REGEXP = void 0;
4 | exports.PLAYER_NAME_REGEXP = new RegExp('([a-zA-Z,0-9]+(_|)[a-zA-Z,0-9]+)');
5 | exports.PLAYER_NAME_MINLENGTH = 3;
6 | exports.PLAYER_NAME_MAXLENGTH = 22;
7 | //# sourceMappingURL=interfaces.js.map
--------------------------------------------------------------------------------
/common/interfaces.js.map:
--------------------------------------------------------------------------------
1 | {"version":3,"file":"interfaces.js","sourceRoot":"","sources":["interfaces.ts"],"names":[],"mappings":";;;AAAa,QAAA,kBAAkB,GAAG,IAAI,MAAM,CAAC,kCAAkC,CAAC,CAAC;AACpE,QAAA,qBAAqB,GAAG,CAAC,CAAC;AAC1B,QAAA,qBAAqB,GAAG,EAAE,CAAC"}
--------------------------------------------------------------------------------
/common/interfaces.ts:
--------------------------------------------------------------------------------
1 | export const PLAYER_NAME_REGEXP = new RegExp('([a-zA-Z,0-9]+(_|)[a-zA-Z,0-9]+)');
2 | export const PLAYER_NAME_MINLENGTH = 3;
3 | export const PLAYER_NAME_MAXLENGTH = 22;
4 |
--------------------------------------------------------------------------------
/common/util/util.js:
--------------------------------------------------------------------------------
1 | "use strict";
2 | Object.defineProperty(exports, "__esModule", { value: true });
3 | exports.hexToRgb = exports.bcryptCompare = exports.bcryptHash = exports.soNumeros = exports.EnumToArray = void 0;
4 | const bcrypt = require("bcrypt-nodejs");
5 | const StringIsNumber = value => isNaN(Number(value)) === false;
6 | function EnumToArray(enumme) {
7 | return Object.keys(enumme)
8 | .filter(StringIsNumber)
9 | .map(key => enumme[key]);
10 | }
11 | exports.EnumToArray = EnumToArray;
12 | function soNumeros(texto) {
13 | return texto.replace(/\D/g, '');
14 | }
15 | exports.soNumeros = soNumeros;
16 | function bcryptHash(texto) {
17 | return new Promise((resolve, reject) => {
18 | bcrypt.hash(texto, null, null, (err, resultado) => {
19 | if (err) {
20 | reject(err);
21 | }
22 | else {
23 | resolve(resultado);
24 | }
25 | });
26 | });
27 | }
28 | exports.bcryptHash = bcryptHash;
29 | function bcryptCompare(data, hash) {
30 | return new Promise((resolve, reject) => {
31 | bcrypt.compare(data, hash, (err, resultado) => {
32 | if (err) {
33 | reject(err);
34 | }
35 | else {
36 | resolve(resultado);
37 | }
38 | });
39 | });
40 | }
41 | exports.bcryptCompare = bcryptCompare;
42 | function hexToRgb(hex) {
43 | const result = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(hex);
44 | return result ? {
45 | r: parseInt(result[1], 16),
46 | g: parseInt(result[2], 16),
47 | b: parseInt(result[3], 16)
48 | } : null;
49 | }
50 | exports.hexToRgb = hexToRgb;
51 | //# sourceMappingURL=util.js.map
--------------------------------------------------------------------------------
/common/util/util.js.map:
--------------------------------------------------------------------------------
1 | {"version":3,"file":"util.js","sourceRoot":"","sources":["util.ts"],"names":[],"mappings":";;;AAAA,wCAAwC;AAExC,MAAM,cAAc,GAAG,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,KAAK,CAAC;AAE/D,SAAgB,WAAW,CAAC,MAAM;IAChC,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;SACvB,MAAM,CAAC,cAAc,CAAC;SACtB,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;AAC7B,CAAC;AAJD,kCAIC;AAED,SAAgB,SAAS,CAAC,KAAa;IACrC,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;AAClC,CAAC;AAFD,8BAEC;AAED,SAAgB,UAAU,CAAC,KAAa;IACtC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,GAAG,EAAE,SAAiB,EAAE,EAAE;YACxD,IAAI,GAAG,EAAE;gBACP,MAAM,CAAC,GAAG,CAAC,CAAC;aACb;iBAAM;gBACL,OAAO,CAAC,SAAS,CAAC,CAAC;aACpB;QACH,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAVD,gCAUC;AAED,SAAgB,aAAa,CAAC,IAAY,EAAE,IAAY;IACtD,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,GAAG,EAAE,SAAkB,EAAE,EAAE;YACrD,IAAI,GAAG,EAAE;gBACP,MAAM,CAAC,GAAG,CAAC,CAAC;aACb;iBAAM;gBACL,OAAO,CAAC,SAAS,CAAC,CAAC;aACpB;QACH,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAVD,sCAUC;AAED,SAAgB,QAAQ,CAAC,GAAG;IAK1B,MAAM,MAAM,GAAG,2CAA2C,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAErE,OAAO,MAAM,CAAC,CAAC,CAAC;QACd,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;QAC1B,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;QAC1B,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;KAC3B,CAAC,CAAC,CAAC,IAAI,CAAC;AACX,CAAC;AAZD,4BAYC"}
--------------------------------------------------------------------------------
/common/util/util.ts:
--------------------------------------------------------------------------------
1 | import * as bcrypt from 'bcrypt-nodejs';
2 |
3 | const StringIsNumber = value => isNaN(Number(value)) === false;
4 |
5 | export function EnumToArray(enumme) {
6 | return Object.keys(enumme)
7 | .filter(StringIsNumber)
8 | .map(key => enumme[key]);
9 | }
10 |
11 | export function soNumeros(texto: string) {
12 | return texto.replace(/\D/g, '');
13 | }
14 |
15 | export function bcryptHash(texto: string) {
16 | return new Promise((resolve, reject) => {
17 | bcrypt.hash(texto, null, null, (err, resultado: string) => {
18 | if (err) {
19 | reject(err);
20 | } else {
21 | resolve(resultado);
22 | }
23 | });
24 | });
25 | }
26 |
27 | export function bcryptCompare(data: string, hash: string) {
28 | return new Promise((resolve, reject) => {
29 | bcrypt.compare(data, hash, (err, resultado: boolean) => {
30 | if (err) {
31 | reject(err);
32 | } else {
33 | resolve(resultado);
34 | }
35 | });
36 | });
37 | }
38 |
39 | export function hexToRgb(hex): {
40 | r: number,
41 | g: number,
42 | b: number,
43 | } {
44 | const result = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(hex);
45 |
46 | return result ? {
47 | r: parseInt(result[1], 16),
48 | g: parseInt(result[2], 16),
49 | b: parseInt(result[3], 16)
50 | } : null;
51 | }
52 |
--------------------------------------------------------------------------------
/common/util/weapons.js:
--------------------------------------------------------------------------------
1 | "use strict";
2 | Object.defineProperty(exports, "__esModule", { value: true });
3 | exports.Weapons = void 0;
4 | exports.Weapons = '{"Melee":[{"name":"BaseballBat","hash":"WEAPON_Bat"},{"name":"Knife","hash":"WEAPON_Knife"},{"name":"Nightstick","hash":"WEAPON_Nightstick"},{"name":"Crowbar","hash":"WEAPON_Crowbar"},{"name":"GolfClub","hash":"WEAPON_Golfclub"},{"name":"Hammer","hash":"WEAPON_Hammer"},{"name":"BrokenBottle","hash":"WEAPON_Bottle"},{"name":"AntiqueCavalryDagger","hash":"WEAPON_Dagger"},{"name":"Hatchet","hash":"WEAPON_Hatchet"},{"name":"KnuckleDuster","hash":"WEAPON_Knuckle"},{"name":"Machete","hash":"WEAPON_Machete"},{"name":"Flashlight","hash":"WEAPON_Flashlight"},{"name":"Switchblade","hash":"WEAPON_SwitchBlade"},{"name":"PoolCue","hash":"WEAPON_Poolcue"},{"name":"Wrench","hash":"WEAPON_Wrench"},{"name":"BattleAxe","hash":"WEAPON_Battleaxe"}],"Handguns":[{"name":"Pistol","hash":"WEAPON_Pistol"},{"name":"CombatPistol","hash":"WEAPON_CombatPistol"},{"name":"APPistol","hash":"WEAPON_APPistol"},{"name":"APStunGun","hash":"WEAPON_StunGun"},{"name":"Pistol.50","hash":"WEAPON_Pistol50"},{"name":"SNSPistol","hash":"WEAPON_SNSPistol"},{"name":"HeavyPistol","hash":"WEAPON_HeavyPistol"},{"name":"VintagePistol","hash":"WEAPON_VintagePistol"},{"name":"FlareGun","hash":"WEAPON_FlareGun"},{"name":"MarksmanPistol","hash":"WEAPON_MarksmanPistol"},{"name":"HeavyRevolver","hash":"WEAPON_Revolver"}],"SubmachineGuns":[{"name":"MicroSMG","hash":"WEAPON_MicroSMG"},{"name":"SMG","hash":"WEAPON_SMG"},{"name":"AssaultSMG","hash":"WEAPON_AssaultSMG"},{"name":"CombatPDW","hash":"WEAPON_CombatPDW"},{"name":"MachinePistol","hash":"WEAPON_MachinePistol"},{"name":"MiniSMG","hash":"WEAPON_MiniSMG"}],"Shotguns":[{"name":"PumpShotgun","hash":"WEAPON_PumpShotgun"},{"name":"Sawed-OffShotgun","hash":"WEAPON_SawnoffShotgun"},{"name":"AssaultShotgun","hash":"WEAPON_AssaultShotgun"},{"name":"BullpupShotgun","hash":"WEAPON_BullpupShotgun"},{"name":"Musket","hash":"WEAPON_Musket"},{"name":"HeavyShotgun","hash":"WEAPON_HeavyShotgun"},{"name":"DoubleBarreledShotgun","hash":"WEAPON_Dbshotgun"},{"name":"SweeperShotgun","hash":"WEAPON_Autoshotgun"}],"AssaultRifles":[{"name":"AssaultRifle","hash":"WEAPON_AssaultRifle"},{"name":"CarbineRifle","hash":"WEAPON_CarbineRifle"},{"name":"AdvancedRifle","hash":"WEAPON_AdvancedRifle"},{"name":"SpecialCarbine","hash":"WEAPON_SpecialCarbine"},{"name":"BullpupRifle","hash":"WEAPON_BullpupRifle"},{"name":"CompactRifle","hash":"WEAPON_CompactRifle"}],"LightMachineGuns":[{"name":"MG","hash":"WEAPON_MG"},{"name":"CombatMG","hash":"WEAPON_CombatMG"},{"name":"GusenbergSweeper","hash":"WEAPON_Gusenberg"}],"SniperRifles":[{"name":"SniperRifle","hash":"WEAPON_SniperRifle"},{"name":"HeavySniper","hash":"WEAPON_HeavySniper"},{"name":"MarksmanRifle","hash":"WEAPON_MarksmanRifle"}],"HeavyWeapons":[{"name":"RPG","hash":"WEAPON_RPG"},{"name":"GrenadeLauncher","hash":"WEAPON_GrenadeLauncher"},{"name":"Minigun","hash":"WEAPON_Minigun"},{"name":"FireworkLauncher","hash":"WEAPON_Firework"},{"name":"RailGun","hash":"WEAPON_Railgun"},{"name":"HomingLauncher","hash":"WEAPON_HomingLauncher"},{"name":"CompactGrenadeLauncher","hash":"WEAPON_CompactLauncher"}],"Thrown":[{"name":"Grenade","hash":"WEAPON_Grenade"},{"name":"TearGas","hash":"WEAPON_BZGas"},{"name":"MolotovCocktail","hash":"WEAPON_Molotov"},{"name":"StickyBomb","hash":"WEAPON_StickyBomb"},{"name":"ProximityMines","hash":"WEAPON_PROXMINE"},{"name":"Snowballs","hash":"WEAPON_Snowball"},{"name":"PipeBomb","hash":"WEAPON_Pipebomb"}],"Miscellaneous":[{"name":"JerryCan","hash":"WEAPON_PetrolCan"},{"name":"Parachute","hash":"GADGET_PARACHUTE"},{"name":"FireExtinguisher","hash":"WEAPON_FIREEXTINGUISHER"}]}';
5 | //# sourceMappingURL=weapons.js.map
--------------------------------------------------------------------------------
/common/util/weapons.js.map:
--------------------------------------------------------------------------------
1 | {"version":3,"file":"weapons.js","sourceRoot":"","sources":["weapons.ts"],"names":[],"mappings":";;;AAAW,QAAA,OAAO,GAAG,y/GAAy/G,CAAC"}
--------------------------------------------------------------------------------
/common/util/weapons.ts:
--------------------------------------------------------------------------------
1 | export let Weapons = '{"Melee":[{"name":"BaseballBat","hash":"WEAPON_Bat"},{"name":"Knife","hash":"WEAPON_Knife"},{"name":"Nightstick","hash":"WEAPON_Nightstick"},{"name":"Crowbar","hash":"WEAPON_Crowbar"},{"name":"GolfClub","hash":"WEAPON_Golfclub"},{"name":"Hammer","hash":"WEAPON_Hammer"},{"name":"BrokenBottle","hash":"WEAPON_Bottle"},{"name":"AntiqueCavalryDagger","hash":"WEAPON_Dagger"},{"name":"Hatchet","hash":"WEAPON_Hatchet"},{"name":"KnuckleDuster","hash":"WEAPON_Knuckle"},{"name":"Machete","hash":"WEAPON_Machete"},{"name":"Flashlight","hash":"WEAPON_Flashlight"},{"name":"Switchblade","hash":"WEAPON_SwitchBlade"},{"name":"PoolCue","hash":"WEAPON_Poolcue"},{"name":"Wrench","hash":"WEAPON_Wrench"},{"name":"BattleAxe","hash":"WEAPON_Battleaxe"}],"Handguns":[{"name":"Pistol","hash":"WEAPON_Pistol"},{"name":"CombatPistol","hash":"WEAPON_CombatPistol"},{"name":"APPistol","hash":"WEAPON_APPistol"},{"name":"APStunGun","hash":"WEAPON_StunGun"},{"name":"Pistol.50","hash":"WEAPON_Pistol50"},{"name":"SNSPistol","hash":"WEAPON_SNSPistol"},{"name":"HeavyPistol","hash":"WEAPON_HeavyPistol"},{"name":"VintagePistol","hash":"WEAPON_VintagePistol"},{"name":"FlareGun","hash":"WEAPON_FlareGun"},{"name":"MarksmanPistol","hash":"WEAPON_MarksmanPistol"},{"name":"HeavyRevolver","hash":"WEAPON_Revolver"}],"SubmachineGuns":[{"name":"MicroSMG","hash":"WEAPON_MicroSMG"},{"name":"SMG","hash":"WEAPON_SMG"},{"name":"AssaultSMG","hash":"WEAPON_AssaultSMG"},{"name":"CombatPDW","hash":"WEAPON_CombatPDW"},{"name":"MachinePistol","hash":"WEAPON_MachinePistol"},{"name":"MiniSMG","hash":"WEAPON_MiniSMG"}],"Shotguns":[{"name":"PumpShotgun","hash":"WEAPON_PumpShotgun"},{"name":"Sawed-OffShotgun","hash":"WEAPON_SawnoffShotgun"},{"name":"AssaultShotgun","hash":"WEAPON_AssaultShotgun"},{"name":"BullpupShotgun","hash":"WEAPON_BullpupShotgun"},{"name":"Musket","hash":"WEAPON_Musket"},{"name":"HeavyShotgun","hash":"WEAPON_HeavyShotgun"},{"name":"DoubleBarreledShotgun","hash":"WEAPON_Dbshotgun"},{"name":"SweeperShotgun","hash":"WEAPON_Autoshotgun"}],"AssaultRifles":[{"name":"AssaultRifle","hash":"WEAPON_AssaultRifle"},{"name":"CarbineRifle","hash":"WEAPON_CarbineRifle"},{"name":"AdvancedRifle","hash":"WEAPON_AdvancedRifle"},{"name":"SpecialCarbine","hash":"WEAPON_SpecialCarbine"},{"name":"BullpupRifle","hash":"WEAPON_BullpupRifle"},{"name":"CompactRifle","hash":"WEAPON_CompactRifle"}],"LightMachineGuns":[{"name":"MG","hash":"WEAPON_MG"},{"name":"CombatMG","hash":"WEAPON_CombatMG"},{"name":"GusenbergSweeper","hash":"WEAPON_Gusenberg"}],"SniperRifles":[{"name":"SniperRifle","hash":"WEAPON_SniperRifle"},{"name":"HeavySniper","hash":"WEAPON_HeavySniper"},{"name":"MarksmanRifle","hash":"WEAPON_MarksmanRifle"}],"HeavyWeapons":[{"name":"RPG","hash":"WEAPON_RPG"},{"name":"GrenadeLauncher","hash":"WEAPON_GrenadeLauncher"},{"name":"Minigun","hash":"WEAPON_Minigun"},{"name":"FireworkLauncher","hash":"WEAPON_Firework"},{"name":"RailGun","hash":"WEAPON_Railgun"},{"name":"HomingLauncher","hash":"WEAPON_HomingLauncher"},{"name":"CompactGrenadeLauncher","hash":"WEAPON_CompactLauncher"}],"Thrown":[{"name":"Grenade","hash":"WEAPON_Grenade"},{"name":"TearGas","hash":"WEAPON_BZGas"},{"name":"MolotovCocktail","hash":"WEAPON_Molotov"},{"name":"StickyBomb","hash":"WEAPON_StickyBomb"},{"name":"ProximityMines","hash":"WEAPON_PROXMINE"},{"name":"Snowballs","hash":"WEAPON_Snowball"},{"name":"PipeBomb","hash":"WEAPON_Pipebomb"}],"Miscellaneous":[{"name":"JerryCan","hash":"WEAPON_PetrolCan"},{"name":"Parachute","hash":"GADGET_PARACHUTE"},{"name":"FireExtinguisher","hash":"WEAPON_FIREEXTINGUISHER"}]}';
2 |
--------------------------------------------------------------------------------
/conf.json.dist:
--------------------------------------------------------------------------------
1 | {
2 | "maxplayers" : 50,
3 | "name" : "[:.:.Brazuca's Server.:.:] Sempre um passo a frente!",
4 | "gamemode" : "rpg/minigames",
5 | "streamdistance" : 500.0,
6 | "announce" : false,
7 | "port": 22005,
8 | "language": "pt",
9 | "url": "http://brazucas-server.com",
10 | "allow-cef-debugging": true
11 | }
12 |
--------------------------------------------------------------------------------
/demo/demo1.jpeg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brazucas/ragemp-server/9654c541f11e7a8757516eb322479083501c95f7/demo/demo1.jpeg
--------------------------------------------------------------------------------
/demo/demo2.jpeg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brazucas/ragemp-server/9654c541f11e7a8757516eb322479083501c95f7/demo/demo2.jpeg
--------------------------------------------------------------------------------
/demo/demo3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brazucas/ragemp-server/9654c541f11e7a8757516eb322479083501c95f7/demo/demo3.png
--------------------------------------------------------------------------------
/demo/demo4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brazucas/ragemp-server/9654c541f11e7a8757516eb322479083501c95f7/demo/demo4.png
--------------------------------------------------------------------------------
/docker-compose.yml:
--------------------------------------------------------------------------------
1 | # docker-compose used for the dev environment
2 |
3 | version: "3.2"
4 |
5 | services:
6 | ragemp_server:
7 | image: brzserver/ragemp
8 | depends_on:
9 | - ragemp_mysql
10 | ports:
11 | - target: 22005
12 | published: 22005
13 | protocol: udp
14 | mode: host
15 | - 22006:22006
16 | volumes:
17 | - ./:/ragemp
18 | networks:
19 | - ragemp
20 |
21 | ragemp_mysql:
22 | image: mysql:5.6
23 | volumes:
24 | - ../ragemp-data/mysql:/var/lib/mysql
25 | ports:
26 | - 33010:3306
27 | environment:
28 | MYSQL_ROOT_PASSWORD: abcd1234
29 | MYSQL_DATABASE: BRAZUCAS
30 | networks:
31 | - ragemp
32 |
33 | ragemp_browser_server:
34 | ports:
35 | - 4230:4200
36 | image: node
37 | command: bash -c "npm i -g @angular/cli && ng serve --open --host 0.0.0.0 --disable-host-check"
38 | volumes:
39 | - ./:/source
40 | working_dir: /source/browser
41 | networks:
42 | - ragemp
43 |
44 | typescript_compiler:
45 | image: node
46 | command: bash -c "npm i typescript -g && tsc -w"
47 | volumes:
48 | - ./:/source
49 | working_dir: /source
50 | networks:
51 | - ragemp
52 |
53 | networks:
54 | ragemp:
55 | driver: bridge
56 |
--------------------------------------------------------------------------------
/docker/ragemp.yml:
--------------------------------------------------------------------------------
1 | # docker-compose used for the dev environment
2 |
3 | version: "3.2"
4 |
5 | services:
6 | ragemp_server:
7 | image: brzserver/ragemp
8 | depends_on:
9 | - ragemp_mysql
10 | ports:
11 | - target: 22005
12 | published: 22005
13 | protocol: udp
14 | mode: host
15 | - 22006:22006
16 | volumes:
17 | - ./:/ragemp
18 | networks:
19 | - ragemp
20 |
21 | ragemp_mysql:
22 | image: mysql:5.6
23 | volumes:
24 | - ../ragemp-data/mysql:/var/lib/mysql
25 | ports:
26 | - 33010:3306
27 | environment:
28 | MYSQL_ROOT_PASSWORD: changeme
29 | MYSQL_DATABASE: BRAZUCAS
30 | networks:
31 | - ragemp
32 |
33 | networks:
34 | ragemp:
35 | driver: bridge
36 |
--------------------------------------------------------------------------------
/docker/start_server.sh:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 | echo "Starting server"
3 | cp -r -n /opt/x64/* /ragemp
4 | cd /ragemp
5 | npm install --no-package-lock
6 | /ragemp/server
7 |
--------------------------------------------------------------------------------
/node.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brazucas/ragemp-server/9654c541f11e7a8757516eb322479083501c95f7/node.dll
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "brazucas-server-ragemp",
3 | "version": "1.0.0",
4 | "description": "Servidor do Brazucas para o RageMP",
5 | "main": "index.js",
6 | "scripts": {
7 | "test": "echo \"Error: no test specified\" && exit 1"
8 | },
9 | "repository": {
10 | "type": "git",
11 | "url": "git+https://github.com/brazucas/ragemp.git"
12 | },
13 | "author": "Pedro Papadópolis",
14 | "license": "MIT",
15 | "bugs": {
16 | "url": "https://github.com/brazucas/ragemp/issues"
17 | },
18 | "homepage": "https://github.com/brazucas/ragemp#readme",
19 | "dependencies": {
20 | "@types/bcrypt-nodejs": "0.0.30",
21 | "@types/glob": "^5.0.35",
22 | "@types/mocha": "^5.2.2",
23 | "@types/node": "^10.3.3",
24 | "@types/ragemp-s": "github:CocaColaBear/types-ragemp-s#master",
25 | "@types/rx": "^4.1.1",
26 | "@types/sequelize": "^4.27.23",
27 | "angular-cli-ghpages": "^0.6.2",
28 | "bcrypt": "^3.0.6",
29 | "bcrypt-nodejs": "0.0.3",
30 | "commitplease": "^3.2.0",
31 | "eslint": "^4.6.1",
32 | "fs": "0.0.1-security",
33 | "glob": "^7.1.2",
34 | "lodash": "^4.17.11",
35 | "mocha": "^5.2.0",
36 | "mysql": "^2.15.0",
37 | "mysql2": "^1.5.3",
38 | "reflect-metadata": "^0.1.12",
39 | "rxjs": "^6.2.1",
40 | "rxjs-compat": "^6.2.1",
41 | "sequelize": "^4.44.0",
42 | "sequelize-cli": "^5.4.0",
43 | "sequelize-typescript": "^0.6.5",
44 | "tslint-eslint-rules": "^5.4.0",
45 | "typescript": "^2.9.2",
46 | "underscore": "^1.8.3",
47 | "util": "^0.10.4"
48 | },
49 | "devDependencies": {}
50 | }
51 |
--------------------------------------------------------------------------------
/packages/MapEditor/index.js:
--------------------------------------------------------------------------------
1 | require("./MapEditorServer.js")
--------------------------------------------------------------------------------
/packages/index.js:
--------------------------------------------------------------------------------
1 | require('rpg/index.js');
2 |
--------------------------------------------------------------------------------
/packages/rpg/consts/rpg-consts.js:
--------------------------------------------------------------------------------
1 | "use strict";
2 | Object.defineProperty(exports, "__esModule", { value: true });
3 | exports.RpgConsts = void 0;
4 | var RpgConsts;
5 | (function (RpgConsts) {
6 | RpgConsts[RpgConsts["MINIMUM_PLAYERS"] = 0] = "MINIMUM_PLAYERS";
7 | })(RpgConsts = exports.RpgConsts || (exports.RpgConsts = {}));
8 | //# sourceMappingURL=rpg-consts.js.map
--------------------------------------------------------------------------------
/packages/rpg/consts/rpg-consts.js.map:
--------------------------------------------------------------------------------
1 | {"version":3,"file":"rpg-consts.js","sourceRoot":"","sources":["rpg-consts.ts"],"names":[],"mappings":";;;AAAA,IAAY,SAEX;AAFD,WAAY,SAAS;IACnB,+DAAmB,CAAA;AACrB,CAAC,EAFW,SAAS,GAAT,iBAAS,KAAT,iBAAS,QAEpB"}
--------------------------------------------------------------------------------
/packages/rpg/consts/rpg-consts.ts:
--------------------------------------------------------------------------------
1 | export enum RpgConsts {
2 | MINIMUM_PLAYERS = 0,
3 | }
4 |
--------------------------------------------------------------------------------
/packages/rpg/consts/status.js:
--------------------------------------------------------------------------------
1 | "use strict";
2 | Object.defineProperty(exports, "__esModule", { value: true });
3 | exports.StatusConsts = void 0;
4 | var StatusConsts;
5 | (function (StatusConsts) {
6 | StatusConsts[StatusConsts["WAITING_PLAYERS"] = 1] = "WAITING_PLAYERS";
7 | StatusConsts[StatusConsts["STARTING"] = 2] = "STARTING";
8 | StatusConsts[StatusConsts["IN_PROGRESS"] = 3] = "IN_PROGRESS";
9 | StatusConsts[StatusConsts["FINISHED"] = 4] = "FINISHED";
10 | })(StatusConsts = exports.StatusConsts || (exports.StatusConsts = {}));
11 | //# sourceMappingURL=status.js.map
--------------------------------------------------------------------------------
/packages/rpg/consts/status.js.map:
--------------------------------------------------------------------------------
1 | {"version":3,"file":"status.js","sourceRoot":"","sources":["status.ts"],"names":[],"mappings":";;;AAAA,IAAY,YAKX;AALD,WAAY,YAAY;IACtB,qEAAmB,CAAA;IACnB,uDAAY,CAAA;IACZ,6DAAe,CAAA;IACf,uDAAY,CAAA;AACd,CAAC,EALW,YAAY,GAAZ,oBAAY,KAAZ,oBAAY,QAKvB"}
--------------------------------------------------------------------------------
/packages/rpg/consts/status.ts:
--------------------------------------------------------------------------------
1 | export enum StatusConsts {
2 | WAITING_PLAYERS = 1,
3 | STARTING = 2,
4 | IN_PROGRESS = 3,
5 | FINISHED = 4,
6 | }
7 |
--------------------------------------------------------------------------------
/packages/rpg/handler/playerChat.js:
--------------------------------------------------------------------------------
1 | "use strict";
2 | Object.defineProperty(exports, "__esModule", { value: true });
3 | exports.PlayerChatHandler = void 0;
4 | function PlayerChatHandler(brazucasServer, player, text) {
5 | console.log(`[CHAT] (${player.id}) ${player.name}: ${text}`);
6 | mp.players.broadcast(`!{#FFFF00}(${player.id}) ${player.name}: !{#FFFFFF}${text}`);
7 | }
8 | exports.PlayerChatHandler = PlayerChatHandler;
9 | //# sourceMappingURL=playerChat.js.map
--------------------------------------------------------------------------------
/packages/rpg/handler/playerChat.js.map:
--------------------------------------------------------------------------------
1 | {"version":3,"file":"playerChat.js","sourceRoot":"","sources":["playerChat.ts"],"names":[],"mappings":";;;AAEA,SAAgB,iBAAiB,CAAC,cAA8B,EAAE,MAAgB,EAAE,IAAY;IAC9F,OAAO,CAAC,GAAG,CAAC,WAAW,MAAM,CAAC,EAAE,KAAK,MAAM,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC,CAAC;IAE7D,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,cAAc,MAAM,CAAC,EAAE,KAAK,MAAM,CAAC,IAAI,eAAe,IAAI,EAAE,CAAC,CAAC;AACrF,CAAC;AAJD,8CAIC"}
--------------------------------------------------------------------------------
/packages/rpg/handler/playerChat.ts:
--------------------------------------------------------------------------------
1 | import { BrazucasServer } from '../../../common/brazucas-server';
2 |
3 | export function PlayerChatHandler(brazucasServer: BrazucasServer, player: PlayerMp, text: string) {
4 | console.log(`[CHAT] (${player.id}) ${player.name}: ${text}`);
5 |
6 | mp.players.broadcast(`!{#FFFF00}(${player.id}) ${player.name}: !{#FFFFFF}${text}`);
7 | }
8 |
--------------------------------------------------------------------------------
/packages/rpg/handler/playerDeath.js:
--------------------------------------------------------------------------------
1 | "use strict";
2 | Object.defineProperty(exports, "__esModule", { value: true });
3 | exports.PlayerDeathHandler = void 0;
4 | const death_reason_1 = require("../interfaces/death-reason");
5 | function PlayerDeathHandler(brazucasServer, player, reason, killer) {
6 | console.debug(`!{FF0000}[MORTE]!{FFFFFF} ${killer.name} matou ${player.name} (${reason}) (${death_reason_1.razaoMorte(reason)})`);
7 | mp.players.broadcast(`[MORTE] ${killer.name} matou ${player.name} (${death_reason_1.razaoMorte(reason)})`);
8 | player.spawn(player.position);
9 | }
10 | exports.PlayerDeathHandler = PlayerDeathHandler;
11 | //# sourceMappingURL=playerDeath.js.map
--------------------------------------------------------------------------------
/packages/rpg/handler/playerDeath.js.map:
--------------------------------------------------------------------------------
1 | {"version":3,"file":"playerDeath.js","sourceRoot":"","sources":["playerDeath.ts"],"names":[],"mappings":";;;AACA,6DAAwD;AAExD,SAAgB,kBAAkB,CAAE,cAA8B,EAAE,MAAgB,EAAE,MAAc,EAAE,MAAgB;IACpH,OAAO,CAAC,KAAK,CAAC,6BAA6B,MAAM,CAAC,IAAI,UAAU,MAAM,CAAC,IAAI,KAAK,MAAM,MAAM,yBAAU,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAEnH,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,WAAW,MAAM,CAAC,IAAI,UAAU,MAAM,CAAC,IAAI,KAAK,yBAAU,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAE5F,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;AAChC,CAAC;AAND,gDAMC"}
--------------------------------------------------------------------------------
/packages/rpg/handler/playerDeath.ts:
--------------------------------------------------------------------------------
1 | import { BrazucasServer } from '../../../common/brazucas-server';
2 | import { razaoMorte } from '../interfaces/death-reason';
3 |
4 | export function PlayerDeathHandler (brazucasServer: BrazucasServer, player: PlayerMp, reason: number, killer: PlayerMp) {
5 | console.debug(`!{FF0000}[MORTE]!{FFFFFF} ${killer.name} matou ${player.name} (${reason}) (${razaoMorte(reason)})`);
6 |
7 | mp.players.broadcast(`[MORTE] ${killer.name} matou ${player.name} (${razaoMorte(reason)})`);
8 |
9 | player.spawn(player.position);
10 | }
11 |
--------------------------------------------------------------------------------
/packages/rpg/handler/playerEnterVehicle.js:
--------------------------------------------------------------------------------
1 | "use strict";
2 | Object.defineProperty(exports, "__esModule", { value: true });
3 | exports.PlayerEnterVehicle = void 0;
4 | const veiculo_provider_1 = require("../providers/veiculo.provider");
5 | function PlayerEnterVehicle(brazucasServer, vehicle, seat) {
6 | veiculo_provider_1.VeiculoProvider.estacionar(vehicle);
7 | }
8 | exports.PlayerEnterVehicle = PlayerEnterVehicle;
9 | //# sourceMappingURL=playerEnterVehicle.js.map
--------------------------------------------------------------------------------
/packages/rpg/handler/playerEnterVehicle.js.map:
--------------------------------------------------------------------------------
1 | {"version":3,"file":"playerEnterVehicle.js","sourceRoot":"","sources":["playerEnterVehicle.ts"],"names":[],"mappings":";;;AACA,oEAAgE;AAEhE,SAAgB,kBAAkB,CAAC,cAA8B,EAAE,OAAkB,EAAE,IAAY;IACjG,kCAAe,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;AACtC,CAAC;AAFD,gDAEC"}
--------------------------------------------------------------------------------
/packages/rpg/handler/playerEnterVehicle.ts:
--------------------------------------------------------------------------------
1 | import { BrazucasServer } from '../../../common/brazucas-server';
2 | import { VeiculoProvider } from '../providers/veiculo.provider';
3 |
4 | export function PlayerEnterVehicle(brazucasServer: BrazucasServer, vehicle: VehicleMp, seat: number) {
5 | VeiculoProvider.estacionar(vehicle);
6 | }
7 |
--------------------------------------------------------------------------------
/packages/rpg/handler/playerExitVehicle.js:
--------------------------------------------------------------------------------
1 | "use strict";
2 | Object.defineProperty(exports, "__esModule", { value: true });
3 | exports.PlayerExitVehicle = void 0;
4 | const veiculo_provider_1 = require("../providers/veiculo.provider");
5 | function PlayerExitVehicle(brazucasServer, vehicle) {
6 | veiculo_provider_1.VeiculoProvider.estacionar(vehicle);
7 | }
8 | exports.PlayerExitVehicle = PlayerExitVehicle;
9 | //# sourceMappingURL=playerExitVehicle.js.map
--------------------------------------------------------------------------------
/packages/rpg/handler/playerExitVehicle.js.map:
--------------------------------------------------------------------------------
1 | {"version":3,"file":"playerExitVehicle.js","sourceRoot":"","sources":["playerExitVehicle.ts"],"names":[],"mappings":";;;AAEA,oEAAgE;AAEhE,SAAgB,iBAAiB,CAAE,cAA8B,EAAE,OAAkB;IACnF,kCAAe,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;AACtC,CAAC;AAFD,8CAEC"}
--------------------------------------------------------------------------------
/packages/rpg/handler/playerExitVehicle.ts:
--------------------------------------------------------------------------------
1 | import { BrazucasServer } from '../../../common/brazucas-server';
2 | import { notificarTodos } from '../lib/functions/player';
3 | import { VeiculoProvider } from '../providers/veiculo.provider';
4 |
5 | export function PlayerExitVehicle (brazucasServer: BrazucasServer, vehicle: VehicleMp) {
6 | VeiculoProvider.estacionar(vehicle);
7 | }
8 |
--------------------------------------------------------------------------------
/packages/rpg/handler/playerJoin.js:
--------------------------------------------------------------------------------
1 | "use strict";
2 | var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3 | function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4 | return new (P || (P = Promise))(function (resolve, reject) {
5 | function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6 | function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7 | function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8 | step((generator = generator.apply(thisArg, _arguments || [])).next());
9 | });
10 | };
11 | Object.defineProperty(exports, "__esModule", { value: true });
12 | exports.PlayerJoinHandler = void 0;
13 | const brazucas_eventos_1 = require("../interfaces/brazucas-eventos");
14 | const player_1 = require("../lib/functions/player");
15 | const rpg_1 = require("../rpg");
16 | function PlayerJoinHandler(brazucasServer, player) {
17 | console.debug(`[ENTRADA] ${player.name} entrou no servidor (${player.ip})`);
18 | player_1.notificarTodos(`~y~${player.name} ~w~entrou no servidor`);
19 | const subscribe = brazucasServer.isReady.subscribe(() => __awaiter(this, void 0, void 0, function* () {
20 | const jogador = yield brazucasServer.loadPlayer(player.name);
21 | if (jogador) {
22 | console.debug(`[LOAD PLAYER] Jogador ${jogador.nome} carregado`);
23 | }
24 | else {
25 | console.debug('[LOAD PLAYER] Jogador não encontrado');
26 | }
27 | rpg_1.Rpg.playerProvider.addPlayer({
28 | mp: player,
29 | storage: jogador,
30 | });
31 | player_1.playerEvent(player, brazucas_eventos_1.BrazucasEventos.DADOS_JOGADOR, jogador.toJSON());
32 | subscribe.unsubscribe();
33 | }));
34 | }
35 | exports.PlayerJoinHandler = PlayerJoinHandler;
36 | //# sourceMappingURL=playerJoin.js.map
--------------------------------------------------------------------------------
/packages/rpg/handler/playerJoin.js.map:
--------------------------------------------------------------------------------
1 | {"version":3,"file":"playerJoin.js","sourceRoot":"","sources":["playerJoin.ts"],"names":[],"mappings":";;;;;;;;;;;;AAEA,qEAAiE;AACjE,oDAAsE;AACtE,gCAA6B;AAE7B,SAAgB,iBAAiB,CAAC,cAA8B,EAAE,MAAgB;IAChF,OAAO,CAAC,KAAK,CAAC,aAAa,MAAM,CAAC,IAAI,wBAAwB,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC;IAE5E,uBAAc,CAAC,MAAM,MAAM,CAAC,IAAI,wBAAwB,CAAC,CAAC;IAE1D,MAAM,SAAS,GAAG,cAAc,CAAC,OAAO,CAAC,SAAS,CAAC,GAAS,EAAE;QAC5D,MAAM,OAAO,GAAG,MAAM,cAAc,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAE7D,IAAI,OAAO,EAAE;YACX,OAAO,CAAC,KAAK,CAAC,yBAAyB,OAAO,CAAC,IAAI,YAAY,CAAC,CAAC;SAClE;aAAM;YACL,OAAO,CAAC,KAAK,CAAC,sCAAsC,CAAC,CAAC;SACvD;QAGD,SAAG,CAAC,cAAc,CAAC,SAAS,CAAC;YAC3B,EAAE,EAAE,MAAM;YACV,OAAO,EAAE,OAAO;SACjB,CAAC,CAAC;QAEH,oBAAW,CAAU,MAAM,EAAE,kCAAe,CAAC,aAAa,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;QAC9E,SAAS,CAAC,WAAW,EAAE,CAAC;IAC1B,CAAC,CAAA,CAAC,CAAC;AACL,CAAC;AAvBD,8CAuBC"}
--------------------------------------------------------------------------------
/packages/rpg/handler/playerJoin.ts:
--------------------------------------------------------------------------------
1 | import { BrazucasServer } from '../../../common/brazucas-server';
2 | import { Jogador } from '../../../common/database/models/Jogador';
3 | import { BrazucasEventos } from '../interfaces/brazucas-eventos';
4 | import { notificarTodos, playerEvent } from '../lib/functions/player';
5 | import { Rpg } from '../rpg';
6 |
7 | export function PlayerJoinHandler(brazucasServer: BrazucasServer, player: PlayerMp) {
8 | console.debug(`[ENTRADA] ${player.name} entrou no servidor (${player.ip})`);
9 |
10 | notificarTodos(`~y~${player.name} ~w~entrou no servidor`);
11 |
12 | const subscribe = brazucasServer.isReady.subscribe(async () => {
13 | const jogador = await brazucasServer.loadPlayer(player.name);
14 |
15 | if (jogador) {
16 | console.debug(`[LOAD PLAYER] Jogador ${jogador.nome} carregado`);
17 | } else {
18 | console.debug('[LOAD PLAYER] Jogador não encontrado');
19 | }
20 |
21 |
22 | Rpg.playerProvider.addPlayer({
23 | mp: player,
24 | storage: jogador,
25 | });
26 |
27 | playerEvent(player, BrazucasEventos.DADOS_JOGADOR, jogador.toJSON());
28 | subscribe.unsubscribe();
29 | });
30 | }
31 |
--------------------------------------------------------------------------------
/packages/rpg/handler/playerQuit.js:
--------------------------------------------------------------------------------
1 | "use strict";
2 | Object.defineProperty(exports, "__esModule", { value: true });
3 | exports.PlayerQuitHandler = void 0;
4 | const _ = require("underscore");
5 | const player_1 = require("../lib/functions/player");
6 | const rpg_1 = require("../rpg");
7 | function PlayerQuitHandler(brazucasServer, player, exitType, reason) {
8 | console.debug(`[SAÍDA] ${player.name} saiu do servidor (IP: ${player.ip}, Tipo: ${exitType}, Razão: ${reason})`);
9 | const playerToRemove = rpg_1.Rpg.playerProvider.players$.value.find(BRZPlayer => BRZPlayer.storage.nome === player.name);
10 | rpg_1.Rpg.playerProvider.players$.next(_.without(rpg_1.Rpg.playerProvider.players$.value, playerToRemove));
11 | player_1.notificarTodos(`~r~${player.name} ~w~saiu do servidor`);
12 | }
13 | exports.PlayerQuitHandler = PlayerQuitHandler;
14 | //# sourceMappingURL=playerQuit.js.map
--------------------------------------------------------------------------------
/packages/rpg/handler/playerQuit.js.map:
--------------------------------------------------------------------------------
1 | {"version":3,"file":"playerQuit.js","sourceRoot":"","sources":["playerQuit.ts"],"names":[],"mappings":";;;AAAA,gCAAgC;AAEhC,oDAAyD;AACzD,gCAA6B;AAE7B,SAAgB,iBAAiB,CAAC,cAA8B,EAAE,MAAgB,EAAE,QAAgB,EAAE,MAAc;IAClH,OAAO,CAAC,KAAK,CAAC,WAAW,MAAM,CAAC,IAAI,0BAA0B,MAAM,CAAC,EAAE,WAAW,QAAQ,YAAY,MAAM,GAAG,CAAC,CAAC;IAEjH,MAAM,cAAc,GAAG,SAAG,CAAC,cAAc,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC;IAEnH,SAAG,CAAC,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,SAAG,CAAC,cAAc,CAAC,QAAQ,CAAC,KAAK,EAAE,cAAc,CAAC,CAAC,CAAC;IAE/F,uBAAc,CAAC,MAAM,MAAM,CAAC,IAAI,sBAAsB,CAAC,CAAC;AAC1D,CAAC;AARD,8CAQC"}
--------------------------------------------------------------------------------
/packages/rpg/handler/playerQuit.ts:
--------------------------------------------------------------------------------
1 | import * as _ from 'underscore';
2 | import { BrazucasServer } from '../../../common/brazucas-server';
3 | import { notificarTodos } from '../lib/functions/player';
4 | import { Rpg } from '../rpg';
5 |
6 | export function PlayerQuitHandler(brazucasServer: BrazucasServer, player: PlayerMp, exitType: number, reason: number) {
7 | console.debug(`[SAÍDA] ${player.name} saiu do servidor (IP: ${player.ip}, Tipo: ${exitType}, Razão: ${reason})`);
8 |
9 | const playerToRemove = Rpg.playerProvider.players$.value.find(BRZPlayer => BRZPlayer.storage.nome === player.name);
10 |
11 | Rpg.playerProvider.players$.next(_.without(Rpg.playerProvider.players$.value, playerToRemove));
12 |
13 | notificarTodos(`~r~${player.name} ~w~saiu do servidor`);
14 | }
15 |
--------------------------------------------------------------------------------
/packages/rpg/index.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 | var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3 | function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4 | return new (P || (P = Promise))(function (resolve, reject) {
5 | function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6 | function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7 | function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8 | step((generator = generator.apply(thisArg, _arguments || [])).next());
9 | });
10 | };
11 | Object.defineProperty(exports, "__esModule", { value: true });
12 | const brazucas_server_1 = require("../../common/brazucas-server");
13 | const playerChat_1 = require("./handler/playerChat");
14 | const playerDeath_1 = require("./handler/playerDeath");
15 | const playerEnterVehicle_1 = require("./handler/playerEnterVehicle");
16 | const playerExitVehicle_1 = require("./handler/playerExitVehicle");
17 | const playerJoin_1 = require("./handler/playerJoin");
18 | const playerQuit_1 = require("./handler/playerQuit");
19 | const brazucas_eventos_1 = require("./interfaces/brazucas-eventos");
20 | const commands_1 = require("./lib/commands/commands");
21 | const events_1 = require("./lib/events/events");
22 | const player_1 = require("./lib/functions/player");
23 | const rpg_1 = require("./rpg");
24 | var EventKey = RageEnums.EventKey;
25 | mp.events.add(EventKey.PLAYER_COMMAND, (player, command) => {
26 | console.debug(`[COMANDO] ${player.name} enviou o comando ${command}`);
27 | const comandos = new commands_1.Commands(brazucasServer);
28 | const arr = command.split(' ');
29 | if (comandos[arr[0]]) {
30 | const comando = arr[0];
31 | arr.shift();
32 | comandos[comando](player, ...arr);
33 | }
34 | else {
35 | player.outputChatBox('!{#FF0000}Comando desconhecido');
36 | }
37 | });
38 | let brazucasServer = new brazucas_server_1.BrazucasServer();
39 | mp.events.add(EventKey.PLAYER_JOIN, playerJoin_1.PlayerJoinHandler.bind(playerJoin_1.PlayerJoinHandler, brazucasServer));
40 | mp.events.add(EventKey.PLAYER_QUIT, playerQuit_1.PlayerQuitHandler.bind(playerQuit_1.PlayerQuitHandler, brazucasServer));
41 | mp.events.add(EventKey.PLAYER_CHAT, playerChat_1.PlayerChatHandler.bind(playerChat_1.PlayerChatHandler, brazucasServer));
42 | mp.events.add(EventKey.PLAYER_DEATH, playerDeath_1.PlayerDeathHandler.bind(playerDeath_1.PlayerDeathHandler, brazucasServer));
43 | mp.events.add(EventKey.PLAYER_EXIT_VEHICLE, playerExitVehicle_1.PlayerExitVehicle.bind(playerExitVehicle_1.PlayerExitVehicle, brazucasServer));
44 | mp.events.add(EventKey.PLAYER_ENTER_VEHICLE, playerEnterVehicle_1.PlayerEnterVehicle.bind(playerEnterVehicle_1.PlayerEnterVehicle, brazucasServer));
45 | mp.events.add(brazucas_eventos_1.BrazucasEventos.BROWSER, (player, serverEventStr) => __awaiter(void 0, void 0, void 0, function* () {
46 | const serverEvent = JSON.parse(serverEventStr);
47 | console.debug(`[EVENTOS] Jogador ${player.name} ativou o evento ${serverEvent.event} (ID ${serverEvent.eventId})`
48 | + ` com os seguintes parâmetros: ${serverEvent.data}`);
49 | const data = JSON.parse(serverEvent.data);
50 | const events = new events_1.Events(brazucasServer);
51 | if (events[serverEvent.event]) {
52 | const resposta = yield events[serverEvent.event](player, data);
53 | player_1.playerEvent(player, brazucas_eventos_1.BrazucasEventos.SERVER, resposta, serverEvent.eventId);
54 | }
55 | else {
56 | console.error(`[ERROR] O evento ${event} é inexistente`);
57 | }
58 | }));
59 | brazucasServer.onload()
60 | .subscribe(() => new rpg_1.Rpg(brazucasServer), console.error);
61 | //# sourceMappingURL=index.js.map
--------------------------------------------------------------------------------
/packages/rpg/index.js.map:
--------------------------------------------------------------------------------
1 | {"version":3,"file":"index.js","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":"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"}
--------------------------------------------------------------------------------
/packages/rpg/index.ts:
--------------------------------------------------------------------------------
1 | 'use strict';
2 |
3 | import { AutenticacaoResultado } from '../../browser/src/interfaces/login.interface';
4 | import { BrazucasServer } from '../../common/brazucas-server';
5 | import { PlayerChatHandler } from './handler/playerChat';
6 | import { PlayerDeathHandler } from './handler/playerDeath';
7 | import { PlayerEnterVehicle } from './handler/playerEnterVehicle';
8 | import { PlayerExitVehicle } from './handler/playerExitVehicle';
9 | import { PlayerJoinHandler } from './handler/playerJoin';
10 | import { PlayerQuitHandler } from './handler/playerQuit';
11 | import { BrazucasEventos, ServerEvent } from './interfaces/brazucas-eventos';
12 | import { Commands } from './lib/commands/commands';
13 | import { Events } from './lib/events/events';
14 | import { playerEvent } from './lib/functions/player';
15 | import { Rpg } from './rpg';
16 | import EventKey = RageEnums.EventKey;
17 |
18 | mp.events.add(EventKey.PLAYER_COMMAND, (player: PlayerMp, command: string) => {
19 | console.debug(`[COMANDO] ${player.name} enviou o comando ${command}`);
20 |
21 | const comandos = new Commands(brazucasServer);
22 |
23 | const arr = command.split(' ');
24 |
25 | if (comandos[arr[0]]) {
26 | const comando = arr[0];
27 |
28 | arr.shift();
29 |
30 | comandos[comando](player, ...arr);
31 | } else {
32 | player.outputChatBox('!{#FF0000}Comando desconhecido');
33 | }
34 | });
35 |
36 | let brazucasServer = new BrazucasServer();
37 |
38 | mp.events.add(EventKey.PLAYER_JOIN, PlayerJoinHandler.bind(PlayerJoinHandler, brazucasServer));
39 | mp.events.add(EventKey.PLAYER_QUIT, PlayerQuitHandler.bind(PlayerQuitHandler, brazucasServer));
40 | mp.events.add(EventKey.PLAYER_CHAT, PlayerChatHandler.bind(PlayerChatHandler, brazucasServer));
41 | mp.events.add(EventKey.PLAYER_DEATH, PlayerDeathHandler.bind(PlayerDeathHandler, brazucasServer));
42 | mp.events.add(EventKey.PLAYER_EXIT_VEHICLE, PlayerExitVehicle.bind(PlayerExitVehicle, brazucasServer));
43 | mp.events.add(EventKey.PLAYER_ENTER_VEHICLE, PlayerEnterVehicle.bind(PlayerEnterVehicle, brazucasServer));
44 |
45 | mp.events.add(BrazucasEventos.BROWSER, async (player: PlayerMp, serverEventStr: string) => {
46 | const serverEvent: ServerEvent = JSON.parse(serverEventStr);
47 |
48 | console.debug(`[EVENTOS] Jogador ${player.name} ativou o evento ${serverEvent.event} (ID ${serverEvent.eventId})`
49 | + ` com os seguintes parâmetros: ${serverEvent.data}`);
50 |
51 | const data: any = JSON.parse(serverEvent.data);
52 |
53 | const events = new Events(brazucasServer);
54 |
55 | if (events[serverEvent.event]) {
56 | const resposta = await events[serverEvent.event](player, data);
57 |
58 | playerEvent(player, BrazucasEventos.SERVER, resposta, serverEvent.eventId);
59 | } else {
60 | console.error(`[ERROR] O evento ${event} é inexistente`);
61 | }
62 | });
63 |
64 | brazucasServer.onload()
65 | .subscribe(() => new Rpg(brazucasServer), console.error);
66 |
--------------------------------------------------------------------------------
/packages/rpg/interfaces/brazucas-eventos.js:
--------------------------------------------------------------------------------
1 | "use strict";
2 | Object.defineProperty(exports, "__esModule", { value: true });
3 | exports.BrazucasEventos = void 0;
4 | var BrazucasEventos;
5 | (function (BrazucasEventos) {
6 | BrazucasEventos["BROWSER"] = "browser";
7 | BrazucasEventos["SERVER"] = "server";
8 | BrazucasEventos["AUTENTICAR_JOGADOR"] = "AutenticarJogador";
9 | BrazucasEventos["CRIAR_VEICULO"] = "CriarVeiculo";
10 | BrazucasEventos["REGISTRAR_JOGADOR"] = "RegistrarJogador";
11 | BrazucasEventos["AUTENTICACAO_RESULTADO"] = "AutenticacaoResultado";
12 | BrazucasEventos["REGISTRO_RESULTADO"] = "RegistroResultado";
13 | BrazucasEventos["DADOS_JOGADOR"] = "DadosJogador";
14 | BrazucasEventos["ATUALIZAR_DADOS_JOGADOR"] = "AtualizarDadosJogador";
15 | BrazucasEventos["INICIAR_NAVEGADOR"] = "IniciarNavegador";
16 | BrazucasEventos["CURSOR"] = "cursor";
17 | BrazucasEventos["HABILITAR_VOICE_CHAT"] = "HabilitarVoiceChat";
18 | BrazucasEventos["DESABILITAR_VOICE_CHAT"] = "DesabilitarVoiceChat";
19 | BrazucasEventos["ANIMACAO_VOICE_CHAT"] = "AnimacaoVoiceChat";
20 | BrazucasEventos["ATUALIZAR_FOME"] = "AtualizarFome";
21 | BrazucasEventos["ATUALIZAR_SEDE"] = "AtualizarSede";
22 | BrazucasEventos["ATUALIZAR_SONO"] = "AtualizarSono";
23 | BrazucasEventos["ATUALIZAR_FORCA_FISICA"] = "AtualizarForcaFisica";
24 | BrazucasEventos["VISUALIZAR_ANIMACAO"] = "VisualizarAnimacao";
25 | })(BrazucasEventos = exports.BrazucasEventos || (exports.BrazucasEventos = {}));
26 | //# sourceMappingURL=brazucas-eventos.js.map
--------------------------------------------------------------------------------
/packages/rpg/interfaces/brazucas-eventos.js.map:
--------------------------------------------------------------------------------
1 | {"version":3,"file":"brazucas-eventos.js","sourceRoot":"","sources":["brazucas-eventos.ts"],"names":[],"mappings":";;;AAAA,IAAY,eAoBX;AApBD,WAAY,eAAe;IACzB,sCAAmB,CAAA;IACnB,oCAAiB,CAAA;IACjB,2DAAwC,CAAA;IACxC,iDAA8B,CAAA;IAC9B,yDAAsC,CAAA;IACtC,mEAAgD,CAAA;IAChD,2DAAwC,CAAA;IACxC,iDAA8B,CAAA;IAC9B,oEAAiD,CAAA;IACjD,yDAAsC,CAAA;IACtC,oCAAiB,CAAA;IACjB,8DAA2C,CAAA;IAC3C,kEAA+C,CAAA;IAC/C,4DAAyC,CAAA;IACzC,mDAAgC,CAAA;IAChC,mDAAgC,CAAA;IAChC,mDAAgC,CAAA;IAChC,kEAA+C,CAAA;IAC/C,6DAA0C,CAAA;AAC5C,CAAC,EApBW,eAAe,GAAf,uBAAe,KAAf,uBAAe,QAoB1B"}
--------------------------------------------------------------------------------
/packages/rpg/interfaces/brazucas-eventos.ts:
--------------------------------------------------------------------------------
1 | export enum BrazucasEventos {
2 | BROWSER = 'browser',
3 | SERVER = 'server',
4 | AUTENTICAR_JOGADOR = 'AutenticarJogador',
5 | CRIAR_VEICULO = 'CriarVeiculo',
6 | REGISTRAR_JOGADOR = 'RegistrarJogador',
7 | AUTENTICACAO_RESULTADO = 'AutenticacaoResultado',
8 | REGISTRO_RESULTADO = 'RegistroResultado',
9 | DADOS_JOGADOR = 'DadosJogador',
10 | ATUALIZAR_DADOS_JOGADOR = 'AtualizarDadosJogador',
11 | INICIAR_NAVEGADOR = 'IniciarNavegador',
12 | CURSOR = 'cursor',
13 | HABILITAR_VOICE_CHAT = 'HabilitarVoiceChat',
14 | DESABILITAR_VOICE_CHAT = 'DesabilitarVoiceChat',
15 | ANIMACAO_VOICE_CHAT = 'AnimacaoVoiceChat',
16 | ATUALIZAR_FOME = 'AtualizarFome',
17 | ATUALIZAR_SEDE = 'AtualizarSede',
18 | ATUALIZAR_SONO = 'AtualizarSono',
19 | ATUALIZAR_FORCA_FISICA = 'AtualizarForcaFisica',
20 | VISUALIZAR_ANIMACAO = 'VisualizarAnimacao',
21 | }
22 |
23 | export interface ServerEvent {
24 | eventId?: number,
25 | event: string,
26 | data: T,
27 | }
28 |
--------------------------------------------------------------------------------
/packages/rpg/interfaces/death-reason.js.map:
--------------------------------------------------------------------------------
1 | {"version":3,"file":"death-reason.js","sourceRoot":"","sources":["death-reason.ts"],"names":[],"mappings":"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"}
--------------------------------------------------------------------------------
/packages/rpg/interfaces/mp.veiculo-cor.interface.js:
--------------------------------------------------------------------------------
1 | "use strict";
2 | Object.defineProperty(exports, "__esModule", { value: true });
3 | exports.MpVeiculoCorInterface = void 0;
4 | var MpVeiculoCorInterface;
5 | (function (MpVeiculoCorInterface) {
6 | MpVeiculoCorInterface[MpVeiculoCorInterface["PRIMARIA"] = 0] = "PRIMARIA";
7 | MpVeiculoCorInterface[MpVeiculoCorInterface["SECUNDARIA"] = 1] = "SECUNDARIA";
8 | })(MpVeiculoCorInterface = exports.MpVeiculoCorInterface || (exports.MpVeiculoCorInterface = {}));
9 | //# sourceMappingURL=mp.veiculo-cor.interface.js.map
--------------------------------------------------------------------------------
/packages/rpg/interfaces/mp.veiculo-cor.interface.js.map:
--------------------------------------------------------------------------------
1 | {"version":3,"file":"mp.veiculo-cor.interface.js","sourceRoot":"","sources":["mp.veiculo-cor.interface.ts"],"names":[],"mappings":";;;AAAA,IAAY,qBAGX;AAHD,WAAY,qBAAqB;IAC/B,yEAAY,CAAA;IACZ,6EAAc,CAAA;AAChB,CAAC,EAHW,qBAAqB,GAArB,6BAAqB,KAArB,6BAAqB,QAGhC"}
--------------------------------------------------------------------------------
/packages/rpg/interfaces/mp.veiculo-cor.interface.ts:
--------------------------------------------------------------------------------
1 | export enum MpVeiculoCorInterface {
2 | PRIMARIA = 0,
3 | SECUNDARIA = 1,
4 | }
5 |
--------------------------------------------------------------------------------
/packages/rpg/interfaces/player.interface.js:
--------------------------------------------------------------------------------
1 | "use strict";
2 | Object.defineProperty(exports, "__esModule", { value: true });
3 | //# sourceMappingURL=player.interface.js.map
--------------------------------------------------------------------------------
/packages/rpg/interfaces/player.interface.js.map:
--------------------------------------------------------------------------------
1 | {"version":3,"file":"player.interface.js","sourceRoot":"","sources":["player.interface.ts"],"names":[],"mappings":""}
--------------------------------------------------------------------------------
/packages/rpg/interfaces/player.interface.ts:
--------------------------------------------------------------------------------
1 | import { Jogador } from '../../../common/database/models/Jogador';
2 |
3 | export interface BRZPlayerInterface {
4 | mp: PlayerMp;
5 | storage: Jogador;
6 | }
7 |
--------------------------------------------------------------------------------
/packages/rpg/interfaces/veiculo.interface.js:
--------------------------------------------------------------------------------
1 | "use strict";
2 | Object.defineProperty(exports, "__esModule", { value: true });
3 | //# sourceMappingURL=veiculo.interface.js.map
--------------------------------------------------------------------------------
/packages/rpg/interfaces/veiculo.interface.js.map:
--------------------------------------------------------------------------------
1 | {"version":3,"file":"veiculo.interface.js","sourceRoot":"","sources":["veiculo.interface.ts"],"names":[],"mappings":""}
--------------------------------------------------------------------------------
/packages/rpg/interfaces/veiculo.interface.ts:
--------------------------------------------------------------------------------
1 | import { Veiculo } from '../../../common/database/models/Veiculo';
2 |
3 | export interface RPGVeiculo {
4 | mp: VehicleMp;
5 | storage: Veiculo;
6 | }
7 |
--------------------------------------------------------------------------------
/packages/rpg/lib/commands/comandos-admin.js:
--------------------------------------------------------------------------------
1 | "use strict";
2 | Object.defineProperty(exports, "__esModule", { value: true });
3 | exports.ComandosAdmin = void 0;
4 | class ComandosAdmin {
5 | constructor(brazucasServer) {
6 | this.brazucasServer = brazucasServer;
7 | }
8 | static tlt(player, playerOrigemHash, playerDestinoHash) {
9 | if (!playerOrigemHash || !playerDestinoHash) {
10 | return player.outputChatBox('!{FF0000}[SINTAXE] /tlt [id/nick] [id/nick]');
11 | }
12 | let playerOrigem;
13 | let playerDestino;
14 | if (!isNaN(parseInt(playerOrigemHash))) {
15 | playerOrigem = mp.players.at(playerOrigemHash);
16 | }
17 | else {
18 | mp.players.forEach((player) => {
19 | if (player.name.toLowerCase() === playerOrigemHash.toLowerCase()) {
20 | playerOrigem = player;
21 | }
22 | });
23 | }
24 | if (!isNaN(parseInt(playerDestinoHash))) {
25 | playerDestino = mp.players.at(playerDestinoHash);
26 | }
27 | else {
28 | mp.players.forEach((player) => {
29 | if (player.name.toLowerCase() === playerDestinoHash.toLowerCase()) {
30 | playerDestino = player;
31 | }
32 | });
33 | }
34 | if (!playerOrigem) {
35 | return player.outputChatBox((!isNaN(parseInt(playerOrigemHash)))
36 | ? `Jogador com ID ${playerOrigemHash} não encontrado.` : `Jogador com nick ${playerOrigemHash} não encontrado.`);
37 | }
38 | if (!playerDestino) {
39 | return player.outputChatBox((!isNaN(parseInt(playerDestinoHash)))
40 | ? `Jogador com ID ${playerDestinoHash} não encontrado.` : `Jogador com nick ${playerDestinoHash} não encontrado.`);
41 | }
42 | if (playerOrigem === playerDestino) {
43 | return player.outputChatBox('!{FF0000} Você não pode teleportar um jogador para ele mesmo!');
44 | }
45 | console.debug(`[COMANDOS - tlt] teleportando jogador ${playerOrigem.name} para ${playerDestino.name}`);
46 | playerOrigem.outputChatBox(`!{00FF00} Você foi teleportado para o jogador ${playerDestino.name}`);
47 | playerDestino.outputChatBox(`!{00FF00} O jogador ${playerOrigem.name} foi teleportado até você`);
48 | mp.players.broadcast(`!{0000FF}[ADMIN] ${player.name} teleporta ${playerOrigem.name} para ${playerDestino.name}`);
49 | playerOrigem.position = playerDestino.position;
50 | }
51 | irparaveiculo(player, vehId) {
52 | let veh = mp.vehicles[vehId];
53 | if (veh && veh.position) {
54 | player.position = veh.position;
55 | }
56 | else {
57 | console.log('Veículo com ID ' + vehId + ' não encontrado.');
58 | }
59 | }
60 | }
61 | exports.ComandosAdmin = ComandosAdmin;
62 | //# sourceMappingURL=comandos-admin.js.map
--------------------------------------------------------------------------------
/packages/rpg/lib/commands/comandos-admin.js.map:
--------------------------------------------------------------------------------
1 | {"version":3,"file":"comandos-admin.js","sourceRoot":"","sources":["comandos-admin.ts"],"names":[],"mappings":"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"}
--------------------------------------------------------------------------------
/packages/rpg/lib/commands/comandos-admin.ts:
--------------------------------------------------------------------------------
1 | import { BrazucasServer } from '../../../../common/brazucas-server';
2 |
3 | export class ComandosAdmin {
4 | protected brazucasServer: BrazucasServer;
5 |
6 | constructor(brazucasServer: BrazucasServer) {
7 | this.brazucasServer = brazucasServer;
8 | }
9 |
10 | public static tlt(player: PlayerMp, playerOrigemHash: number | string, playerDestinoHash: number | string) {
11 | if (!playerOrigemHash || !playerDestinoHash) {
12 | return player.outputChatBox('!{FF0000}[SINTAXE] /tlt [id/nick] [id/nick]');
13 | }
14 |
15 | let playerOrigem: PlayerMp;
16 | let playerDestino: PlayerMp;
17 |
18 | if (!isNaN(parseInt((playerOrigemHash as string)))) {
19 | playerOrigem = mp.players.at((playerOrigemHash as number));
20 | } else {
21 | mp.players.forEach((player) => {
22 | if (player.name.toLowerCase() === (playerOrigemHash as string).toLowerCase()) {
23 | playerOrigem = player;
24 | }
25 | });
26 | }
27 |
28 | if (!isNaN(parseInt((playerDestinoHash as string)))) {
29 | playerDestino = mp.players.at((playerDestinoHash as number));
30 | } else {
31 | mp.players.forEach((player) => {
32 | if (player.name.toLowerCase() === (playerDestinoHash as string).toLowerCase()) {
33 | playerDestino = player;
34 | }
35 | });
36 | }
37 |
38 | if (!playerOrigem) {
39 | return player.outputChatBox(
40 | (!isNaN(parseInt((playerOrigemHash as string))))
41 | ? `Jogador com ID ${playerOrigemHash} não encontrado.` : `Jogador com nick ${playerOrigemHash} não encontrado.`);
42 | }
43 |
44 | if (!playerDestino) {
45 | return player.outputChatBox(
46 | (!isNaN(parseInt((playerDestinoHash as string))))
47 | ? `Jogador com ID ${playerDestinoHash} não encontrado.` : `Jogador com nick ${playerDestinoHash} não encontrado.`);
48 | }
49 |
50 | if (playerOrigem === playerDestino) {
51 | return player.outputChatBox('!{FF0000} Você não pode teleportar um jogador para ele mesmo!');
52 | }
53 |
54 | console.debug(`[COMANDOS - tlt] teleportando jogador ${playerOrigem.name} para ${playerDestino.name}`);
55 |
56 | playerOrigem.outputChatBox(`!{00FF00} Você foi teleportado para o jogador ${playerDestino.name}`);
57 | playerDestino.outputChatBox(`!{00FF00} O jogador ${playerOrigem.name} foi teleportado até você`);
58 |
59 | mp.players.broadcast(`!{0000FF}[ADMIN] ${player.name} teleporta ${playerOrigem.name} para ${playerDestino.name}`);
60 |
61 | playerOrigem.position = playerDestino.position;
62 | }
63 |
64 | irparaveiculo(player: PlayerMp, vehId: number) {
65 | let veh: VehicleMp = mp.vehicles[vehId];
66 |
67 | if (veh && veh.position) {
68 | player.position = veh.position;
69 | } else {
70 | console.log('Veículo com ID ' + vehId + ' não encontrado.');
71 | }
72 | }
73 | }
74 |
--------------------------------------------------------------------------------
/packages/rpg/lib/commands/commands.js:
--------------------------------------------------------------------------------
1 | "use strict";
2 | ///
3 | Object.defineProperty(exports, "__esModule", { value: true });
4 | exports.Commands = void 0;
5 | const brazucas_eventos_1 = require("../../interfaces/brazucas-eventos");
6 | const player_1 = require("../functions/player");
7 | const comandos_admin_1 = require("./comandos-admin");
8 | class Commands extends comandos_admin_1.ComandosAdmin {
9 | constructor(brazucasServer) {
10 | super(brazucasServer);
11 | }
12 | dararma(player, weaponHash) {
13 | console.debug(`[COMANDOS - dararma] Dando arma ${weaponHash} para o jogador ${player.name}`);
14 | const asset = mp.joaat(weaponHash);
15 | player.giveWeapon(asset, 1000);
16 | player.notify(`Arma ${weaponHash} recebida!`);
17 | }
18 | posicaoatual(player) {
19 | console.debug(`[COMANDOS - posicaoatual] Posição atual de ${player.name}: ${player.position.toString()}`);
20 | player.outputChatBox(`Posição atual: ${player.position.toString()}`);
21 | }
22 | browser(player) {
23 | player_1.playerEvent(player, brazucas_eventos_1.BrazucasEventos.INICIAR_NAVEGADOR);
24 | }
25 | cursor(player) {
26 | player_1.playerEvent(player, brazucas_eventos_1.BrazucasEventos.CURSOR);
27 | }
28 | }
29 | exports.Commands = Commands;
30 | //# sourceMappingURL=commands.js.map
--------------------------------------------------------------------------------
/packages/rpg/lib/commands/commands.js.map:
--------------------------------------------------------------------------------
1 | {"version":3,"file":"commands.js","sourceRoot":"","sources":["commands.ts"],"names":[],"mappings":";AAAA,2EAA2E;;;AAG3E,wEAAoE;AACpE,gDAAkD;AAClD,qDAAiD;AAEjD,MAAa,QAAS,SAAQ,8BAAa;IAEzC,YAAY,cAA8B;QACxC,KAAK,CAAC,cAAc,CAAC,CAAC;IACxB,CAAC;IAEM,OAAO,CAAC,MAAgB,EAAE,UAAkB;QACjD,OAAO,CAAC,KAAK,CAAC,mCAAmC,UAAU,mBAAmB,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;QAE7F,MAAM,KAAK,GAAG,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QAEnC,MAAM,CAAC,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QAE/B,MAAM,CAAC,MAAM,CAAC,QAAQ,UAAU,YAAY,CAAC,CAAC;IAChD,CAAC;IAEM,YAAY,CAAC,MAAgB;QAClC,OAAO,CAAC,KAAK,CAAC,8CAA8C,MAAM,CAAC,IAAI,KAAK,MAAM,CAAC,QAAQ,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;QAE1G,MAAM,CAAC,aAAa,CAAC,kBAAkB,MAAM,CAAC,QAAQ,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;IACvE,CAAC;IAEM,OAAO,CAAC,MAAgB;QAC7B,oBAAW,CAAM,MAAM,EAAE,kCAAe,CAAC,iBAAiB,CAAC,CAAC;IAC9D,CAAC;IAEM,MAAM,CAAC,MAAgB;QAC5B,oBAAW,CAAM,MAAM,EAAE,kCAAe,CAAC,MAAM,CAAC,CAAC;IACnD,CAAC;CACF;AA7BD,4BA6BC"}
--------------------------------------------------------------------------------
/packages/rpg/lib/commands/commands.ts:
--------------------------------------------------------------------------------
1 | ///
2 |
3 | import { BrazucasServer } from '../../../../common/brazucas-server';
4 | import { BrazucasEventos } from '../../interfaces/brazucas-eventos';
5 | import { playerEvent } from '../functions/player';
6 | import { ComandosAdmin } from './comandos-admin';
7 |
8 | export class Commands extends ComandosAdmin {
9 |
10 | constructor(brazucasServer: BrazucasServer) {
11 | super(brazucasServer);
12 | }
13 |
14 | public dararma(player: PlayerMp, weaponHash: string) {
15 | console.debug(`[COMANDOS - dararma] Dando arma ${weaponHash} para o jogador ${player.name}`);
16 |
17 | const asset = mp.joaat(weaponHash);
18 |
19 | player.giveWeapon(asset, 1000);
20 |
21 | player.notify(`Arma ${weaponHash} recebida!`);
22 | }
23 |
24 | public posicaoatual(player: PlayerMp) {
25 | console.debug(`[COMANDOS - posicaoatual] Posição atual de ${player.name}: ${player.position.toString()}`);
26 |
27 | player.outputChatBox(`Posição atual: ${player.position.toString()}`);
28 | }
29 |
30 | public browser(player: PlayerMp) {
31 | playerEvent(player, BrazucasEventos.INICIAR_NAVEGADOR);
32 | }
33 |
34 | public cursor(player: PlayerMp) {
35 | playerEvent(player, BrazucasEventos.CURSOR);
36 | }
37 | }
38 |
--------------------------------------------------------------------------------
/packages/rpg/lib/events/events.js.map:
--------------------------------------------------------------------------------
1 | {"version":3,"file":"events.js","sourceRoot":"","sources":["events.ts"],"names":[],"mappings":"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"}
--------------------------------------------------------------------------------
/packages/rpg/lib/events/events.ts:
--------------------------------------------------------------------------------
1 | import { DadosVeiculo } from '../../../../browser/src/app/services/veiculo.service';
2 | import { DadosLogin, DadosRegistro, RegistroResultado } from '../../../../browser/src/interfaces/login.interface';
3 | import { BrazucasServer } from '../../../../common/brazucas-server';
4 | import { Jogador } from '../../../../common/database/models/Jogador';
5 | import { environment } from '../../../../common/environment';
6 | import { BrazucasEventos } from '../../interfaces/brazucas-eventos';
7 | import { VoiceChatProvider } from '../../providers/voice-chat.provider';
8 | import { Rpg } from '../../rpg';
9 | import { playerEvent } from '../functions/player';
10 |
11 | export class Events {
12 | protected brazucasServer: BrazucasServer;
13 |
14 | constructor(brazucasServer: BrazucasServer) {
15 | this.brazucasServer = brazucasServer;
16 | }
17 |
18 | public async [BrazucasEventos.AUTENTICAR_JOGADOR](player: PlayerMp, dados: DadosLogin) {
19 | try {
20 | const jogador: Jogador = await this.brazucasServer.autenticarJogador(player.name, dados.senha);
21 |
22 | if (jogador) {
23 | player.spawn(environment.posicaoLogin);
24 |
25 | await Rpg.playerProvider.update(player, jogador.toJSON());
26 |
27 | return {
28 | eventoResposta: 'AutenticacaoResultado',
29 | credenciaisInvalidas: false,
30 | autenticado: true,
31 | };
32 | } else {
33 | return {
34 | eventoResposta: 'AutenticacaoResultado',
35 | credenciaisInvalidas: true,
36 | autenticado: false,
37 | };
38 | }
39 | } catch (err) {
40 | console.error(err.toString());
41 |
42 | return {
43 | eventoResposta: 'AutenticacaoResultado',
44 | credenciaisInvalidas: false,
45 | autenticado: false,
46 | };
47 | }
48 | }
49 |
50 | public async [BrazucasEventos.REGISTRAR_JOGADOR](player: PlayerMp, dados: DadosRegistro) {
51 | try {
52 | const jogador: Jogador = await this.brazucasServer.registrarJogador(player, dados);
53 |
54 | if (jogador) {
55 | player.spawn(environment.posicaoLogin);
56 |
57 | playerEvent(player, BrazucasEventos.REGISTRO_RESULTADO, {
58 | erro: false,
59 | jogador: jogador,
60 | registrado: true,
61 | });
62 | } else {
63 | playerEvent(player, BrazucasEventos.REGISTRO_RESULTADO, {
64 | registrado: false,
65 | erro: true,
66 | });
67 | }
68 | } catch (err) {
69 | console.debug(`[REGISTRO] Um erro ocorreu ao criar o jogador ${player.name}`);
70 | console.error(err.toString());
71 |
72 | playerEvent(player, BrazucasEventos.REGISTRO_RESULTADO, {
73 | registrado: false,
74 | erro: true,
75 | mensagem: err.toString() || 'Erro interno ao cadastrar',
76 | });
77 | }
78 | }
79 |
80 | public async [BrazucasEventos.CRIAR_VEICULO](player: PlayerMp, dados: DadosVeiculo) {
81 | try {
82 | await this.brazucasServer.criarVeiculo(player, dados);
83 | } catch (err) {
84 | console.debug(`[VEÍCULOS] Um erro ocorreu ao criar o veículo`);
85 | console.error(err.toString());
86 |
87 | return false;
88 | }
89 | }
90 |
91 | public async [BrazucasEventos.HABILITAR_VOICE_CHAT](player: PlayerMp, dados: any) {
92 | console.log(`[VOICE CHAT] Ativando voice chat para ${player.name} com os dados: ${JSON.stringify(dados)}`);
93 |
94 | const target = mp.players.at(dados.targetId);
95 |
96 | if (!target) {
97 | return {
98 | erro: true,
99 | mensagem: 'Jogador não encontrado',
100 | };
101 | }
102 |
103 | VoiceChatProvider.habilitar(player, target);
104 | }
105 |
106 | public async [BrazucasEventos.DESABILITAR_VOICE_CHAT](player: PlayerMp, dados: any) {
107 | console.log(`[VOICE CHAT] Desativando voice chat para ${player.name} com os dados: ${JSON.stringify(dados)}`);
108 |
109 | const target = mp.players.at(dados.targetId);
110 |
111 | if (!target) {
112 | return {
113 | erro: true,
114 | mensagem: 'Jogador não encontrado',
115 | };
116 | }
117 |
118 | VoiceChatProvider.desabilitar(player, target);
119 | }
120 |
121 | public async [BrazucasEventos.ANIMACAO_VOICE_CHAT](player: PlayerMp) {
122 | console.log(`[VOICE CHAT] Aplicando animação para ${player.name}`);
123 |
124 | player.playAnimation('special_ped@baygor@monologue_3@monologue_3e', 'trees_can_talk_4', 1, 0);
125 | }
126 |
127 | public async [BrazucasEventos.VISUALIZAR_ANIMACAO](player: PlayerMp, dados: {
128 | pacote: string,
129 | nome: string;
130 | }) {
131 | player.stopAnimation();
132 | player.playAnimation(dados.pacote, dados.nome, 1, 0);
133 | }
134 | }
135 |
--------------------------------------------------------------------------------
/packages/rpg/lib/functions/bootstrap.js:
--------------------------------------------------------------------------------
1 | "use strict";
2 | ///
3 | var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
4 | function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
5 | return new (P || (P = Promise))(function (resolve, reject) {
6 | function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
7 | function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
8 | function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
9 | step((generator = generator.apply(thisArg, _arguments || [])).next());
10 | });
11 | };
12 | Object.defineProperty(exports, "__esModule", { value: true });
13 | exports.carregarTimers = exports.carregarVeiculos = void 0;
14 | const Veiculo_1 = require("../../../../common/database/models/Veiculo");
15 | const vehicles_1 = require("../../../../common/util/vehicles");
16 | const veiculo_provider_1 = require("../../providers/veiculo.provider");
17 | const player_timer_1 = require("../timers/player-timer");
18 | const vehicles_timer_1 = require("../timers/vehicles-timer");
19 | function carregarVeiculos() {
20 | return __awaiter(this, void 0, void 0, function* () {
21 | let veiculos = yield Veiculo_1.Veiculo.findAll();
22 | veiculos.forEach((veiculo) => {
23 | const veiculoMp = mp.vehicles.new(vehicles_1.Veiculos[veiculo.modelo], new mp.Vector3(parseFloat(veiculo.posicaoX), parseFloat(veiculo.posicaoY), parseFloat(veiculo.posicaoZ)));
24 | veiculoMp.setColorRGB(veiculo.corPrimariaR, veiculo.corPrimariaG, veiculo.corPrimariaB, veiculo.corSecundariaR, veiculo.corSecundariaG, veiculo.corSecundariaB);
25 | veiculoMp.locked = veiculo.trancado;
26 | veiculoMp.engine = veiculo.motor;
27 | // veiculoMp.dimension = veiculo.mundo;
28 | veiculoMp.numberPlate = veiculo.placaExibido;
29 | veiculoMp.spawn(veiculoMp.position, 0);
30 | veiculo_provider_1.VeiculoProvider.veiculos.next({
31 | mp: veiculoMp,
32 | storage: veiculo,
33 | });
34 | });
35 | });
36 | }
37 | exports.carregarVeiculos = carregarVeiculos;
38 | function carregarTimers(brazucasServer) {
39 | return __awaiter(this, void 0, void 0, function* () {
40 | new vehicles_timer_1.VehiclesTimer(brazucasServer);
41 | new player_timer_1.PlayerTimer(brazucasServer);
42 | });
43 | }
44 | exports.carregarTimers = carregarTimers;
45 | //# sourceMappingURL=bootstrap.js.map
--------------------------------------------------------------------------------
/packages/rpg/lib/functions/bootstrap.js.map:
--------------------------------------------------------------------------------
1 | {"version":3,"file":"bootstrap.js","sourceRoot":"","sources":["bootstrap.ts"],"names":[],"mappings":";AAAA,2EAA2E;;;;;;;;;;;;AAG3E,wEAAqE;AACrE,+DAA4D;AAC5D,uEAAmE;AACnE,yDAAqD;AACrD,6DAAyD;AAIzD,SAAsB,gBAAgB;;QACpC,IAAI,QAAQ,GAAG,MAAM,iBAAO,CAAC,OAAO,EAAE,CAAC;QAEvC,QAAQ,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;YAC3B,MAAM,SAAS,GAAG,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,mBAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,OAAO,CACxE,UAAU,CAAC,OAAO,CAAC,QAAQ,CAAC,EAC5B,UAAU,CAAC,OAAO,CAAC,QAAQ,CAAC,EAC5B,UAAU,CAAC,OAAO,CAAC,QAAQ,CAAC,CAC7B,CAAC,CAAC;YAEH,SAAS,CAAC,WAAW,CAAC,OAAO,CAAC,YAAY,EAAE,OAAO,CAAC,YAAY,EAAE,OAAO,CAAC,YAAY,EAAE,OAAO,CAAC,cAAc,EAC5G,OAAO,CAAC,cAAc,EAAE,OAAO,CAAC,cAAc,CAAC,CAAC;YAElD,SAAS,CAAC,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;YACpC,SAAS,CAAC,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC;YACjC,uCAAuC;YACvC,SAAS,CAAC,WAAW,GAAG,OAAO,CAAC,YAAY,CAAC;YAE7C,SAAS,CAAC,KAAK,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;YAEvC,kCAAe,CAAC,QAAQ,CAAC,IAAI,CAAC;gBAC5B,EAAE,EAAE,SAAS;gBACb,OAAO,EAAE,OAAO;aACjB,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;CAAA;AAzBD,4CAyBC;AAED,SAAsB,cAAc,CAAC,cAA8B;;QACjE,IAAI,8BAAa,CAAC,cAAc,CAAC,CAAC;QAClC,IAAI,0BAAW,CAAC,cAAc,CAAC,CAAC;IAClC,CAAC;CAAA;AAHD,wCAGC"}
--------------------------------------------------------------------------------
/packages/rpg/lib/functions/bootstrap.ts:
--------------------------------------------------------------------------------
1 | ///
2 |
3 | import { BrazucasServer } from '../../../../common/brazucas-server';
4 | import { Veiculo } from '../../../../common/database/models/Veiculo';
5 | import { Veiculos } from '../../../../common/util/vehicles';
6 | import { VeiculoProvider } from '../../providers/veiculo.provider';
7 | import { PlayerTimer } from '../timers/player-timer';
8 | import { VehiclesTimer } from '../timers/vehicles-timer';
9 |
10 | declare const mp: Mp;
11 |
12 | export async function carregarVeiculos() {
13 | let veiculos = await Veiculo.findAll();
14 |
15 | veiculos.forEach((veiculo) => {
16 | const veiculoMp = mp.vehicles.new(Veiculos[veiculo.modelo], new mp.Vector3(
17 | parseFloat(veiculo.posicaoX),
18 | parseFloat(veiculo.posicaoY),
19 | parseFloat(veiculo.posicaoZ)
20 | ));
21 |
22 | veiculoMp.setColorRGB(veiculo.corPrimariaR, veiculo.corPrimariaG, veiculo.corPrimariaB, veiculo.corSecundariaR,
23 | veiculo.corSecundariaG, veiculo.corSecundariaB);
24 |
25 | veiculoMp.locked = veiculo.trancado;
26 | veiculoMp.engine = veiculo.motor;
27 | // veiculoMp.dimension = veiculo.mundo;
28 | veiculoMp.numberPlate = veiculo.placaExibido;
29 |
30 | veiculoMp.spawn(veiculoMp.position, 0);
31 |
32 | VeiculoProvider.veiculos.next({
33 | mp: veiculoMp,
34 | storage: veiculo,
35 | });
36 | });
37 | }
38 |
39 | export async function carregarTimers(brazucasServer: BrazucasServer) {
40 | new VehiclesTimer(brazucasServer);
41 | new PlayerTimer(brazucasServer);
42 | }
43 |
--------------------------------------------------------------------------------
/packages/rpg/lib/functions/player.js:
--------------------------------------------------------------------------------
1 | "use strict";
2 | Object.defineProperty(exports, "__esModule", { value: true });
3 | exports.playersEvent = exports.playerEvent = exports.notificarTodos = void 0;
4 | const brazucas_eventos_1 = require("../../interfaces/brazucas-eventos");
5 | function notificarTodos(text) {
6 | mp.players.forEach(player => player.notify(text));
7 | }
8 | exports.notificarTodos = notificarTodos;
9 | function playerEvent(player, event, data, eventId) {
10 | console.debug(`[PLAYER EVENT] ${player.name} chamou o evento ${event} (ID ${eventId}) com os seguintes dados: ${JSON.stringify(data)}`);
11 | player.call(brazucas_eventos_1.BrazucasEventos.SERVER, [{
12 | eventId: eventId,
13 | event: event,
14 | data: data,
15 | }]);
16 | }
17 | exports.playerEvent = playerEvent;
18 | function playersEvent(event, data, eventId) {
19 | console.debug(`[ALL PLAYER EVENT] Evento ${event} (ID ${eventId}) com os seguintes dados: ${JSON.stringify(data)} disparado para ${mp.players.length} jogadores.`);
20 | mp.players.call(brazucas_eventos_1.BrazucasEventos.SERVER, [{
21 | eventId: eventId,
22 | event: event,
23 | data: data,
24 | }]);
25 | }
26 | exports.playersEvent = playersEvent;
27 | //# sourceMappingURL=player.js.map
--------------------------------------------------------------------------------
/packages/rpg/lib/functions/player.js.map:
--------------------------------------------------------------------------------
1 | {"version":3,"file":"player.js","sourceRoot":"","sources":["player.ts"],"names":[],"mappings":";;;AAAA,wEAAiF;AAEjF,SAAgB,cAAc,CAAC,IAAY;IACzC,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;AACpD,CAAC;AAFD,wCAEC;AAED,SAAgB,WAAW,CAAI,MAAgB,EAAE,KAAa,EAAE,IAAQ,EAAE,OAAgB;IACxF,OAAO,CAAC,KAAK,CAAC,kBAAkB,MAAM,CAAC,IAAI,oBAAoB,KAAK,QAAQ,OAAO,6BAA6B,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAExI,MAAM,CAAC,IAAI,CAAC,kCAAe,CAAC,MAAM,EAAE,CAAkB;YACpD,OAAO,EAAE,OAAO;YAChB,KAAK,EAAE,KAAK;YACZ,IAAI,EAAE,IAAI;SACX,CAAC,CAAC,CAAC;AACN,CAAC;AARD,kCAQC;AAED,SAAgB,YAAY,CAAI,KAAa,EAAE,IAAQ,EAAE,OAAgB;IACvE,OAAO,CAAC,KAAK,CAAC,6BAA6B,KAAK,QAAQ,OAAO,6BAA6B,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,mBAAmB,EAAE,CAAC,OAAO,CAAC,MAAM,aAAa,CAAC,CAAC;IAEnK,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,kCAAe,CAAC,MAAM,EAAE,CAAkB;YACxD,OAAO,EAAE,OAAO;YAChB,KAAK,EAAE,KAAK;YACZ,IAAI,EAAE,IAAI;SACX,CAAC,CAAC,CAAC;AACN,CAAC;AARD,oCAQC"}
--------------------------------------------------------------------------------
/packages/rpg/lib/functions/player.ts:
--------------------------------------------------------------------------------
1 | import { BrazucasEventos, ServerEvent } from '../../interfaces/brazucas-eventos';
2 |
3 | export function notificarTodos(text: string) {
4 | mp.players.forEach(player => player.notify(text));
5 | }
6 |
7 | export function playerEvent(player: PlayerMp, event: string, data?: T, eventId?: number) {
8 | console.debug(`[PLAYER EVENT] ${player.name} chamou o evento ${event} (ID ${eventId}) com os seguintes dados: ${JSON.stringify(data)}`);
9 |
10 | player.call(BrazucasEventos.SERVER, [> {
11 | eventId: eventId,
12 | event: event,
13 | data: data,
14 | }]);
15 | }
16 |
17 | export function playersEvent(event: string, data?: T, eventId?: number) {
18 | console.debug(`[ALL PLAYER EVENT] Evento ${event} (ID ${eventId}) com os seguintes dados: ${JSON.stringify(data)} disparado para ${mp.players.length} jogadores.`);
19 |
20 | mp.players.call(BrazucasEventos.SERVER, [> {
21 | eventId: eventId,
22 | event: event,
23 | data: data,
24 | }]);
25 | }
26 |
--------------------------------------------------------------------------------
/packages/rpg/lib/timers/player-timer.js:
--------------------------------------------------------------------------------
1 | "use strict";
2 | Object.defineProperty(exports, "__esModule", { value: true });
3 | exports.PlayerTimer = void 0;
4 | const rpg_1 = require("../../rpg");
5 | const FOME_DEFAULT_DECREASE = 1;
6 | const SEDE_DEFAULT_DECREASE = 1;
7 | const SONO_DEFAULT_DECREASE = 1;
8 | const FORCA_FISICA_DEFAULT_DECREASE = 1;
9 | class PlayerTimer {
10 | constructor(brazucasServer) {
11 | this.brazucasServer = brazucasServer;
12 | setInterval(() => this.atualizarFome(), 60000);
13 | setInterval(() => this.atualizarSede(), 45000);
14 | setInterval(() => this.atualizarSono(), 180000);
15 | setInterval(() => this.atualizarForcaFisica(), 200000);
16 | }
17 | atualizarFome() {
18 | mp.players.forEach(playerMp => {
19 | const brzPlayer = rpg_1.Rpg.playerProvider.findFromMp(playerMp);
20 | const updatedValue = Math.max(brzPlayer.storage.fome - FOME_DEFAULT_DECREASE, 0);
21 | if (updatedValue === 0) {
22 | playerMp.health -= 1;
23 | }
24 | rpg_1.Rpg.playerProvider.update(playerMp, {
25 | fome: updatedValue,
26 | });
27 | });
28 | }
29 | atualizarSede() {
30 | mp.players.forEach(playerMp => {
31 | const brzPlayer = rpg_1.Rpg.playerProvider.findFromMp(playerMp);
32 | const updatedValue = Math.max(brzPlayer.storage.sede - SEDE_DEFAULT_DECREASE, 0);
33 | if (updatedValue === 0) {
34 | brzPlayer.storage.fome -= 1;
35 | }
36 | rpg_1.Rpg.playerProvider.update(playerMp, {
37 | sede: updatedValue,
38 | });
39 | });
40 | }
41 | atualizarSono() {
42 | mp.players.forEach(playerMp => {
43 | const brzPlayer = rpg_1.Rpg.playerProvider.findFromMp(playerMp);
44 | const updatedValue = Math.max(brzPlayer.storage.sono - SONO_DEFAULT_DECREASE, 0);
45 | if (updatedValue === 0) {
46 | // @TODO fazer o jogador dormir
47 | }
48 | rpg_1.Rpg.playerProvider.update(playerMp, {
49 | sono: updatedValue,
50 | });
51 | });
52 | }
53 | atualizarForcaFisica() {
54 | mp.players.forEach(playerMp => {
55 | const brzPlayer = rpg_1.Rpg.playerProvider.findFromMp(playerMp);
56 | const updatedValue = Math.max(brzPlayer.storage.forcaFisica - FORCA_FISICA_DEFAULT_DECREASE, 0);
57 | if (updatedValue === 0) {
58 | // @TODO O que fazer quando chegar a zero?
59 | }
60 | rpg_1.Rpg.playerProvider.update(playerMp, {
61 | forcaFisica: updatedValue,
62 | });
63 | });
64 | }
65 | }
66 | exports.PlayerTimer = PlayerTimer;
67 | //# sourceMappingURL=player-timer.js.map
--------------------------------------------------------------------------------
/packages/rpg/lib/timers/player-timer.js.map:
--------------------------------------------------------------------------------
1 | {"version":3,"file":"player-timer.js","sourceRoot":"","sources":["player-timer.ts"],"names":[],"mappings":"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"}
--------------------------------------------------------------------------------
/packages/rpg/lib/timers/player-timer.ts:
--------------------------------------------------------------------------------
1 | import { BrazucasServer } from '../../../../common/brazucas-server';
2 | import { Rpg } from '../../rpg';
3 |
4 | const FOME_DEFAULT_DECREASE = 1;
5 | const SEDE_DEFAULT_DECREASE = 1;
6 | const SONO_DEFAULT_DECREASE = 1;
7 | const FORCA_FISICA_DEFAULT_DECREASE = 1;
8 |
9 | export class PlayerTimer {
10 | protected brazucasServer: BrazucasServer;
11 |
12 | constructor(brazucasServer: BrazucasServer) {
13 | this.brazucasServer = brazucasServer;
14 |
15 | setInterval(() => this.atualizarFome(), 60000);
16 | setInterval(() => this.atualizarSede(), 45000);
17 | setInterval(() => this.atualizarSono(), 180000);
18 | setInterval(() => this.atualizarForcaFisica(), 200000);
19 | }
20 |
21 | private atualizarFome() {
22 | mp.players.forEach(playerMp => {
23 | const brzPlayer = Rpg.playerProvider.findFromMp(playerMp);
24 |
25 | const updatedValue = Math.max(brzPlayer.storage.fome - FOME_DEFAULT_DECREASE, 0);
26 |
27 | if (updatedValue === 0) {
28 | playerMp.health -= 1;
29 | }
30 |
31 | Rpg.playerProvider.update(playerMp, {
32 | fome: updatedValue,
33 | });
34 | });
35 | }
36 |
37 | private atualizarSede() {
38 | mp.players.forEach(playerMp => {
39 | const brzPlayer = Rpg.playerProvider.findFromMp(playerMp);
40 |
41 | const updatedValue = Math.max(brzPlayer.storage.sede - SEDE_DEFAULT_DECREASE, 0);
42 |
43 | if (updatedValue === 0) {
44 | brzPlayer.storage.fome -= 1;
45 | }
46 |
47 | Rpg.playerProvider.update(playerMp, {
48 | sede: updatedValue,
49 | });
50 | });
51 | }
52 |
53 | private atualizarSono() {
54 | mp.players.forEach(playerMp => {
55 | const brzPlayer = Rpg.playerProvider.findFromMp(playerMp);
56 |
57 | const updatedValue = Math.max(brzPlayer.storage.sono - SONO_DEFAULT_DECREASE, 0);
58 |
59 | if (updatedValue === 0) {
60 | // @TODO fazer o jogador dormir
61 | }
62 |
63 | Rpg.playerProvider.update(playerMp, {
64 | sono: updatedValue,
65 | });
66 | });
67 | }
68 |
69 | private atualizarForcaFisica() {
70 | mp.players.forEach(playerMp => {
71 | const brzPlayer = Rpg.playerProvider.findFromMp(playerMp);
72 |
73 | const updatedValue = Math.max(brzPlayer.storage.forcaFisica - FORCA_FISICA_DEFAULT_DECREASE, 0);
74 |
75 | if (updatedValue === 0) {
76 | // @TODO O que fazer quando chegar a zero?
77 | }
78 |
79 | Rpg.playerProvider.update(playerMp, {
80 | forcaFisica: updatedValue,
81 | });
82 | });
83 | }
84 | }
85 |
--------------------------------------------------------------------------------
/packages/rpg/lib/timers/vehicles-timer.js:
--------------------------------------------------------------------------------
1 | "use strict";
2 | Object.defineProperty(exports, "__esModule", { value: true });
3 | exports.VehiclesTimer = void 0;
4 | const veiculo_provider_1 = require("../../providers/veiculo.provider");
5 | class VehiclesTimer {
6 | constructor(brazucasServer) {
7 | this.brazucasServer = brazucasServer;
8 | setInterval(() => {
9 | this.atualizarPosicoes();
10 | }, 5000);
11 | }
12 | atualizarPosicoes() {
13 | mp.vehicles.forEach((vehicle) => {
14 | veiculo_provider_1.VeiculoProvider.estacionar(vehicle);
15 | });
16 | }
17 | }
18 | exports.VehiclesTimer = VehiclesTimer;
19 | //# sourceMappingURL=vehicles-timer.js.map
--------------------------------------------------------------------------------
/packages/rpg/lib/timers/vehicles-timer.js.map:
--------------------------------------------------------------------------------
1 | {"version":3,"file":"vehicles-timer.js","sourceRoot":"","sources":["vehicles-timer.ts"],"names":[],"mappings":";;;AACA,uEAAmE;AAEnE,MAAa,aAAa;IAGxB,YAAY,cAA8B;QACxC,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC;QAErC,WAAW,CAAC,GAAG,EAAE;YACf,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAC3B,CAAC,EAAE,IAAI,CAAC,CAAC;IACX,CAAC;IAEO,iBAAiB;QACvB,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;YAC9B,kCAAe,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QACtC,CAAC,CAAC,CAAC;IACL,CAAC;CACF;AAhBD,sCAgBC"}
--------------------------------------------------------------------------------
/packages/rpg/lib/timers/vehicles-timer.ts:
--------------------------------------------------------------------------------
1 | import { BrazucasServer } from '../../../../common/brazucas-server';
2 | import { VeiculoProvider } from '../../providers/veiculo.provider';
3 |
4 | export class VehiclesTimer {
5 | protected brazucasServer: BrazucasServer;
6 |
7 | constructor(brazucasServer: BrazucasServer) {
8 | this.brazucasServer = brazucasServer;
9 |
10 | setInterval(() => {
11 | this.atualizarPosicoes();
12 | }, 5000);
13 | }
14 |
15 | private atualizarPosicoes() {
16 | mp.vehicles.forEach((vehicle) => {
17 | VeiculoProvider.estacionar(vehicle);
18 | });
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/packages/rpg/providers/player.provider.js:
--------------------------------------------------------------------------------
1 | "use strict";
2 | var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3 | function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4 | return new (P || (P = Promise))(function (resolve, reject) {
5 | function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6 | function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7 | function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8 | step((generator = generator.apply(thisArg, _arguments || [])).next());
9 | });
10 | };
11 | Object.defineProperty(exports, "__esModule", { value: true });
12 | exports.PlayerProvider = void 0;
13 | const BehaviorSubject_1 = require("rxjs/BehaviorSubject");
14 | const brazucas_eventos_1 = require("../interfaces/brazucas-eventos");
15 | class PlayerProvider {
16 | constructor(brazucasServer) {
17 | this.players$ = new BehaviorSubject_1.BehaviorSubject([]);
18 | PlayerProvider.brazucasServer = brazucasServer;
19 | }
20 | findFromMp(player) {
21 | return this.players$.value.find((storedPlayer) => (storedPlayer.mp && storedPlayer.mp.id === player.id));
22 | }
23 | update(player, data, autoSave = true) {
24 | return __awaiter(this, void 0, void 0, function* () {
25 | try {
26 | const brzPlayer = this.findFromMp(player);
27 | if (brzPlayer) {
28 | Object.keys(data).forEach((key) => brzPlayer.storage[key] = data[key]);
29 | if (autoSave) {
30 | yield brzPlayer.storage.save();
31 | }
32 | console.log(`Atualizando jogador ${player.name} ${JSON.stringify(brzPlayer.storage.toJSON())}`);
33 | player.call(brazucas_eventos_1.BrazucasEventos.ATUALIZAR_DADOS_JOGADOR, [brzPlayer.storage.toJSON()]);
34 | }
35 | else {
36 | console.warn('[WARNING] Jogador não encontrado para atualizar');
37 | }
38 | return true;
39 | }
40 | catch (err) {
41 | console.error(`[ERROR] Um erro ocorreu ao atualizar o jogador.`);
42 | console.error(err);
43 | throw err;
44 | }
45 | });
46 | }
47 | savePlayer(player) {
48 | const brzPlayer = this.findFromMp(player);
49 | if (brzPlayer) {
50 | return brzPlayer.storage.save();
51 | }
52 | }
53 | addPlayer(brzPlayer) {
54 | const players = this.players$.value;
55 | players.push(brzPlayer);
56 | this.players$.next(players);
57 | }
58 | }
59 | exports.PlayerProvider = PlayerProvider;
60 | //# sourceMappingURL=player.provider.js.map
--------------------------------------------------------------------------------
/packages/rpg/providers/player.provider.js.map:
--------------------------------------------------------------------------------
1 | {"version":3,"file":"player.provider.js","sourceRoot":"","sources":["player.provider.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,0DAAuD;AAGvD,qEAAiE;AAGjE,MAAa,cAAc;IAGzB,YAAY,cAA8B;QAInC,aAAQ,GAA+C,IAAI,iCAAe,CAAC,EAAE,CAAC,CAAC;QAHpF,cAAc,CAAC,cAAc,GAAG,cAAc,CAAC;IACjD,CAAC;IAIM,UAAU,CAAC,MAAgB;QAChC,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC,YAAY,CAAC,EAAE,IAAI,YAAY,CAAC,EAAE,CAAC,EAAE,KAAK,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;IAC3G,CAAC;IAEY,MAAM,CAAC,MAAgB,EAAE,IAAmB,EAAE,QAAQ,GAAG,IAAI;;YACxE,IAAI;gBACF,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;gBAE1C,IAAI,SAAS,EAAE;oBACb,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,GAAW,EAAE,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;oBAE/E,IAAI,QAAQ,EAAE;wBACZ,MAAM,SAAS,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;qBAChC;oBAED,OAAO,CAAC,GAAG,CAAC,uBAAuB,MAAM,CAAC,IAAI,IAAI,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC;oBAEhG,MAAM,CAAC,IAAI,CAAC,kCAAe,CAAC,uBAAuB,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;iBACpF;qBAAM;oBACL,OAAO,CAAC,IAAI,CAAC,iDAAiD,CAAC,CAAC;iBACjE;gBAED,OAAO,IAAI,CAAC;aACb;YAAC,OAAO,GAAG,EAAE;gBACZ,OAAO,CAAC,KAAK,CAAC,iDAAiD,CAAC,CAAC;gBACjE,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBAEnB,MAAM,GAAG,CAAC;aACX;QACH,CAAC;KAAA;IAED,UAAU,CAAC,MAAgB;QACzB,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QAE1C,IAAI,SAAS,EAAE;YACb,OAAO,SAAS,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;SACjC;IACH,CAAC;IAEM,SAAS,CAAC,SAA6B;QAC5C,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;QAEpC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAExB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC9B,CAAC;CAEF;AAxDD,wCAwDC"}
--------------------------------------------------------------------------------
/packages/rpg/providers/player.provider.ts:
--------------------------------------------------------------------------------
1 | import { BehaviorSubject } from 'rxjs/BehaviorSubject';
2 | import { BrazucasServer } from '../../../common/brazucas-server';
3 | import { Jogador } from '../../../common/database/models/Jogador';
4 | import { BrazucasEventos } from '../interfaces/brazucas-eventos';
5 | import { BRZPlayerInterface } from '../interfaces/player.interface';
6 |
7 | export class PlayerProvider {
8 | private static brazucasServer: BrazucasServer;
9 |
10 | constructor(brazucasServer: BrazucasServer) {
11 | PlayerProvider.brazucasServer = brazucasServer;
12 | }
13 |
14 | public players$: BehaviorSubject> = new BehaviorSubject([]);
15 |
16 | public findFromMp(player: PlayerMp) {
17 | return this.players$.value.find((storedPlayer) => (storedPlayer.mp && storedPlayer.mp.id === player.id));
18 | }
19 |
20 | public async update(player: PlayerMp, data: Jogador | any, autoSave = true) {
21 | try {
22 | const brzPlayer = this.findFromMp(player);
23 |
24 | if (brzPlayer) {
25 | Object.keys(data).forEach((key: string) => brzPlayer.storage[key] = data[key]);
26 |
27 | if (autoSave) {
28 | await brzPlayer.storage.save();
29 | }
30 |
31 | console.log(`Atualizando jogador ${player.name} ${JSON.stringify(brzPlayer.storage.toJSON())}`);
32 |
33 | player.call(BrazucasEventos.ATUALIZAR_DADOS_JOGADOR, [brzPlayer.storage.toJSON()]);
34 | } else {
35 | console.warn('[WARNING] Jogador não encontrado para atualizar');
36 | }
37 |
38 | return true;
39 | } catch (err) {
40 | console.error(`[ERROR] Um erro ocorreu ao atualizar o jogador.`);
41 | console.error(err);
42 |
43 | throw err;
44 | }
45 | }
46 |
47 | savePlayer(player: PlayerMp) {
48 | const brzPlayer = this.findFromMp(player);
49 |
50 | if (brzPlayer) {
51 | return brzPlayer.storage.save();
52 | }
53 | }
54 |
55 | public addPlayer(brzPlayer: BRZPlayerInterface) {
56 | const players = this.players$.value;
57 |
58 | players.push(brzPlayer);
59 |
60 | this.players$.next(players);
61 | }
62 |
63 | }
64 |
--------------------------------------------------------------------------------
/packages/rpg/providers/veiculo.provider.js:
--------------------------------------------------------------------------------
1 | "use strict";
2 | Object.defineProperty(exports, "__esModule", { value: true });
3 | exports.VeiculoProvider = void 0;
4 | const BehaviorSubject_1 = require("rxjs/BehaviorSubject");
5 | const Observable_1 = require("rxjs/Observable");
6 | const mp_veiculo_cor_interface_1 = require("../interfaces/mp.veiculo-cor.interface");
7 | class VeiculoProvider {
8 | static findFromMp(vehicle) {
9 | return VeiculoProvider.veiculosArmazenados.find((rpgVeiculo) => rpgVeiculo.mp === vehicle);
10 | }
11 | static salvar(vehicle) {
12 | return new Observable_1.Observable((resolver) => {
13 | let rpgVeiculo = VeiculoProvider.findFromMp(vehicle);
14 | if (rpgVeiculo) {
15 | rpgVeiculo.storage.placaExibido = vehicle.numberPlate;
16 | rpgVeiculo.storage.trancado = vehicle.locked;
17 | [rpgVeiculo.storage.corPrimariaR, rpgVeiculo.storage.corPrimariaG, rpgVeiculo.storage.corPrimariaB] = vehicle.getColorRGB(mp_veiculo_cor_interface_1.MpVeiculoCorInterface.PRIMARIA);
18 | [rpgVeiculo.storage.corSecundariaR, rpgVeiculo.storage.corSecundariaG, rpgVeiculo.storage.corSecundariaB] = vehicle.getColorRGB(mp_veiculo_cor_interface_1.MpVeiculoCorInterface.SECUNDARIA);
19 | rpgVeiculo.storage.modelo = vehicle.model.toString();
20 | rpgVeiculo.storage.motor = vehicle.engine;
21 | rpgVeiculo.storage.mundo = vehicle.dimension;
22 | rpgVeiculo.storage.rotacao = vehicle.heading;
23 | rpgVeiculo.storage.transparencia = vehicle.alpha;
24 | resolver.next(rpgVeiculo.storage.save());
25 | resolver.complete();
26 | }
27 | else {
28 | resolver.error(`[VeiculoProvider - salvar] Veículo ID ${vehicle.id} não encontrado nos veículos armazenados.`);
29 | }
30 | });
31 | }
32 | static estacionar(vehicle) {
33 | return new Observable_1.Observable((resolver) => {
34 | let rpgVeiculo = VeiculoProvider.findFromMp(vehicle);
35 | if (rpgVeiculo) {
36 | rpgVeiculo.storage.posicaoX = vehicle.position.x.toString();
37 | rpgVeiculo.storage.posicaoY = vehicle.position.y.toString();
38 | rpgVeiculo.storage.posicaoZ = vehicle.position.z.toString();
39 | rpgVeiculo.storage.rotacao = vehicle.heading;
40 | resolver.next(rpgVeiculo.storage.save());
41 | resolver.complete();
42 | }
43 | else {
44 | resolver.error(`[VeiculoProvider - estacionar] Veículo ID ${vehicle.id} não encontrado nos veículos armazenados.`);
45 | }
46 | });
47 | }
48 | init() {
49 | VeiculoProvider.veiculos.subscribe((rpgVeiculo) => {
50 | VeiculoProvider.veiculosArmazenados.push(rpgVeiculo);
51 | });
52 | }
53 | }
54 | exports.VeiculoProvider = VeiculoProvider;
55 | VeiculoProvider.veiculosArmazenados = [];
56 | VeiculoProvider.veiculos = new BehaviorSubject_1.BehaviorSubject(null);
57 | //# sourceMappingURL=veiculo.provider.js.map
--------------------------------------------------------------------------------
/packages/rpg/providers/veiculo.provider.js.map:
--------------------------------------------------------------------------------
1 | {"version":3,"file":"veiculo.provider.js","sourceRoot":"","sources":["veiculo.provider.ts"],"names":[],"mappings":";;;AAAA,0DAAuD;AACvD,gDAA6C;AAC7C,qFAA+E;AAG/E,MAAa,eAAe;IAInB,MAAM,CAAC,UAAU,CAAC,OAAkB;QACzC,OAAO,eAAe,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC,EAAE,KAAK,OAAO,CAAC,CAAC;IAC7F,CAAC;IAEM,MAAM,CAAC,MAAM,CAAC,OAAkB;QACrC,OAAO,IAAI,uBAAU,CAAC,CAAC,QAAQ,EAAE,EAAE;YACjC,IAAI,UAAU,GAAG,eAAe,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;YAErD,IAAI,UAAU,EAAE;gBACd,UAAU,CAAC,OAAO,CAAC,YAAY,GAAG,OAAO,CAAC,WAAW,CAAC;gBACtD,UAAU,CAAC,OAAO,CAAC,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC;gBAC7C,CAAC,UAAU,CAAC,OAAO,CAAC,YAAY,EAAE,UAAU,CAAC,OAAO,CAAC,YAAY,EAAE,UAAU,CAAC,OAAO,CAAC,YAAY,CAAC,GAAG,OAAO,CAAC,WAAW,CAAC,gDAAqB,CAAC,QAAQ,CAAC,CAAC;gBAC1J,CAAC,UAAU,CAAC,OAAO,CAAC,cAAc,EAAE,UAAU,CAAC,OAAO,CAAC,cAAc,EAAE,UAAU,CAAC,OAAO,CAAC,cAAc,CAAC,GAAG,OAAO,CAAC,WAAW,CAAC,gDAAqB,CAAC,UAAU,CAAC,CAAC;gBAClK,UAAU,CAAC,OAAO,CAAC,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;gBACrD,UAAU,CAAC,OAAO,CAAC,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC;gBAC1C,UAAU,CAAC,OAAO,CAAC,KAAK,GAAG,OAAO,CAAC,SAAS,CAAC;gBAC7C,UAAU,CAAC,OAAO,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;gBAC7C,UAAU,CAAC,OAAO,CAAC,aAAa,GAAG,OAAO,CAAC,KAAK,CAAC;gBAEjD,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;gBACzC,QAAQ,CAAC,QAAQ,EAAE,CAAC;aACrB;iBAAM;gBACL,QAAQ,CAAC,KAAK,CAAC,yCAAyC,OAAO,CAAC,EAAE,2CAA2C,CAAC,CAAC;aAChH;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAEM,MAAM,CAAC,UAAU,CAAC,OAAkB;QACzC,OAAO,IAAI,uBAAU,CAAC,CAAC,QAAQ,EAAE,EAAE;YACjC,IAAI,UAAU,GAAG,eAAe,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;YAErD,IAAI,UAAU,EAAE;gBACd,UAAU,CAAC,OAAO,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;gBAC5D,UAAU,CAAC,OAAO,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;gBAC5D,UAAU,CAAC,OAAO,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;gBAC5D,UAAU,CAAC,OAAO,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;gBAE7C,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;gBACzC,QAAQ,CAAC,QAAQ,EAAE,CAAC;aACrB;iBAAM;gBACL,QAAQ,CAAC,KAAK,CAAC,6CAA6C,OAAO,CAAC,EAAE,2CAA2C,CAAC,CAAC;aACpH;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAEM,IAAI;QACT,eAAe,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,UAAU,EAAE,EAAE;YAChD,eAAe,CAAC,mBAAmB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACvD,CAAC,CAAC,CAAC;IACL,CAAC;;AArDH,0CAsDC;AArDgB,mCAAmB,GAAsB,EAAE,CAAC;AAC7C,wBAAQ,GAAgC,IAAI,iCAAe,CAAC,IAAI,CAAC,CAAC"}
--------------------------------------------------------------------------------
/packages/rpg/providers/veiculo.provider.ts:
--------------------------------------------------------------------------------
1 | import { BehaviorSubject } from 'rxjs/BehaviorSubject';
2 | import { Observable } from 'rxjs/Observable';
3 | import { MpVeiculoCorInterface } from '../interfaces/mp.veiculo-cor.interface';
4 | import { RPGVeiculo } from '../interfaces/veiculo.interface';
5 |
6 | export class VeiculoProvider {
7 | private static veiculosArmazenados: Array = [];
8 | public static veiculos: BehaviorSubject = new BehaviorSubject(null);
9 |
10 | public static findFromMp(vehicle: VehicleMp) {
11 | return VeiculoProvider.veiculosArmazenados.find((rpgVeiculo) => rpgVeiculo.mp === vehicle);
12 | }
13 |
14 | public static salvar(vehicle: VehicleMp) {
15 | return new Observable((resolver) => {
16 | let rpgVeiculo = VeiculoProvider.findFromMp(vehicle);
17 |
18 | if (rpgVeiculo) {
19 | rpgVeiculo.storage.placaExibido = vehicle.numberPlate;
20 | rpgVeiculo.storage.trancado = vehicle.locked;
21 | [rpgVeiculo.storage.corPrimariaR, rpgVeiculo.storage.corPrimariaG, rpgVeiculo.storage.corPrimariaB] = vehicle.getColorRGB(MpVeiculoCorInterface.PRIMARIA);
22 | [rpgVeiculo.storage.corSecundariaR, rpgVeiculo.storage.corSecundariaG, rpgVeiculo.storage.corSecundariaB] = vehicle.getColorRGB(MpVeiculoCorInterface.SECUNDARIA);
23 | rpgVeiculo.storage.modelo = vehicle.model.toString();
24 | rpgVeiculo.storage.motor = vehicle.engine;
25 | rpgVeiculo.storage.mundo = vehicle.dimension;
26 | rpgVeiculo.storage.rotacao = vehicle.heading;
27 | rpgVeiculo.storage.transparencia = vehicle.alpha;
28 |
29 | resolver.next(rpgVeiculo.storage.save());
30 | resolver.complete();
31 | } else {
32 | resolver.error(`[VeiculoProvider - salvar] Veículo ID ${vehicle.id} não encontrado nos veículos armazenados.`);
33 | }
34 | });
35 | }
36 |
37 | public static estacionar(vehicle: VehicleMp) {
38 | return new Observable((resolver) => {
39 | let rpgVeiculo = VeiculoProvider.findFromMp(vehicle);
40 |
41 | if (rpgVeiculo) {
42 | rpgVeiculo.storage.posicaoX = vehicle.position.x.toString();
43 | rpgVeiculo.storage.posicaoY = vehicle.position.y.toString();
44 | rpgVeiculo.storage.posicaoZ = vehicle.position.z.toString();
45 | rpgVeiculo.storage.rotacao = vehicle.heading;
46 |
47 | resolver.next(rpgVeiculo.storage.save());
48 | resolver.complete();
49 | } else {
50 | resolver.error(`[VeiculoProvider - estacionar] Veículo ID ${vehicle.id} não encontrado nos veículos armazenados.`);
51 | }
52 | });
53 | }
54 |
55 | public init() {
56 | VeiculoProvider.veiculos.subscribe((rpgVeiculo) => {
57 | VeiculoProvider.veiculosArmazenados.push(rpgVeiculo);
58 | });
59 | }
60 | }
61 |
--------------------------------------------------------------------------------
/packages/rpg/providers/voice-chat.provider.js:
--------------------------------------------------------------------------------
1 | "use strict";
2 | Object.defineProperty(exports, "__esModule", { value: true });
3 | exports.VoiceChatProvider = void 0;
4 | class VoiceChatProvider {
5 | static habilitar(player, target) {
6 | console.debug(`[VOICE CHAT] Habilitando voice chat de ${player.name} para ${target.name}`);
7 | player.enableVoiceTo(target);
8 | }
9 | static desabilitar(player, target) {
10 | console.debug(`[VOICE CHAT] Desabilitando voice chat de ${player.name} para ${target.name}`);
11 | player.disableVoiceTo(target);
12 | }
13 | }
14 | exports.VoiceChatProvider = VoiceChatProvider;
15 | //# sourceMappingURL=voice-chat.provider.js.map
--------------------------------------------------------------------------------
/packages/rpg/providers/voice-chat.provider.js.map:
--------------------------------------------------------------------------------
1 | {"version":3,"file":"voice-chat.provider.js","sourceRoot":"","sources":["voice-chat.provider.ts"],"names":[],"mappings":";;;AAAA,MAAa,iBAAiB;IACrB,MAAM,CAAC,SAAS,CAAC,MAAgB,EAAE,MAAgB;QACxD,OAAO,CAAC,KAAK,CAAC,0CAA0C,MAAM,CAAC,IAAI,SAAS,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;QAC3F,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;IAC/B,CAAC;IAEM,MAAM,CAAC,WAAW,CAAC,MAAgB,EAAE,MAAgB;QAC1D,OAAO,CAAC,KAAK,CAAC,4CAA4C,MAAM,CAAC,IAAI,SAAS,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;QAC7F,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;IAChC,CAAC;CACF;AAVD,8CAUC"}
--------------------------------------------------------------------------------
/packages/rpg/providers/voice-chat.provider.ts:
--------------------------------------------------------------------------------
1 | export class VoiceChatProvider {
2 | public static habilitar(player: PlayerMp, target: PlayerMp) {
3 | console.debug(`[VOICE CHAT] Habilitando voice chat de ${player.name} para ${target.name}`);
4 | player.enableVoiceTo(target);
5 | }
6 |
7 | public static desabilitar(player: PlayerMp, target: PlayerMp) {
8 | console.debug(`[VOICE CHAT] Desabilitando voice chat de ${player.name} para ${target.name}`);
9 | player.disableVoiceTo(target);
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/packages/rpg/rpg.js:
--------------------------------------------------------------------------------
1 | "use strict";
2 | var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3 | function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4 | return new (P || (P = Promise))(function (resolve, reject) {
5 | function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6 | function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7 | function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8 | step((generator = generator.apply(thisArg, _arguments || [])).next());
9 | });
10 | };
11 | Object.defineProperty(exports, "__esModule", { value: true });
12 | exports.Rpg = void 0;
13 | const fs = require("fs");
14 | const glob = require("glob");
15 | require("rxjs/add/observable/of");
16 | const _ = require("underscore");
17 | const bootstrap_1 = require("./lib/functions/bootstrap");
18 | const player_provider_1 = require("./providers/player.provider");
19 | class Rpg {
20 | constructor(brazucasServer) {
21 | this.maps = [];
22 | this.mapSelected = null;
23 | this.status = null;
24 | this.brazucasServer = brazucasServer;
25 | Rpg.playerProvider = new player_provider_1.PlayerProvider(brazucasServer);
26 | this.init();
27 | }
28 | init() {
29 | return __awaiter(this, void 0, void 0, function* () {
30 | this.carregarMapas();
31 | console.log(`${this.maps.length} mapa(s) carregado(s).`);
32 | yield bootstrap_1.carregarVeiculos();
33 | console.log(`${mp.vehicles.length} veículos carregados.`);
34 | yield bootstrap_1.carregarTimers(this.brazucasServer);
35 | this.mainLoop();
36 | });
37 | }
38 | carregarArquivosMapas() {
39 | let maps = glob.sync('packages/rpg/maps/*.json');
40 | let self = this;
41 | _.forEach(maps, function (map) {
42 | self.maps.push(JSON.parse(fs.readFileSync(map, 'utf8')));
43 | });
44 | return this.maps;
45 | }
46 | carregarMapas() {
47 | let mapas = this.carregarArquivosMapas();
48 | mapas.forEach((mapa) => {
49 | // this.carregarMapa(mapa);
50 | });
51 | }
52 | carregarMapa(mapData) {
53 | console.log(`Carregando mapa ${mapData.Map.Metadata.Name}.`);
54 | if (mapData) {
55 | if (mapData.Map && mapData.Map.Objects && mapData.Map.Objects.MapObject) {
56 | let loadedVehicles = 0, loadedProps = 0;
57 | _.forEach(mapData.Map.Objects.MapObject, function (object) {
58 | switch (object.Type) {
59 | case 'Prop':
60 | mp.objects.new(parseInt(object.Hash, 10), new mp.Vector3(parseFloat(object.Position.X), parseFloat(object.Position.Y), parseFloat(object.Position.Z)));
61 | ++loadedProps;
62 | break;
63 | case 'Vehicle':
64 | mp.vehicles.new(parseInt(object.Hash, 10), new mp.Vector3(parseFloat(object.Position.X), parseFloat(object.Position.Y), parseFloat(object.Position.Z)));
65 | ++loadedVehicles;
66 | break;
67 | default:
68 | console.log(`Objeto do tipo ${object.Type} não pôde ser carregado.`);
69 | }
70 | });
71 | console.log(`${mapData.Map.Objects.MapObject.length} objetos carregados (${loadedVehicles} veículos, ${loadedProps}
72 | objetos)`);
73 | }
74 | else {
75 | console.log(`O mapa ${mapData.Map.Metadata.id} não implementa um ou várias propriedades como Map, Map.Objects ou
76 | Map.Objects.MapObject.`);
77 | }
78 | }
79 | else {
80 | console.log(`Mapa ${mapData.Map.Metadata.id} não encontrado.`);
81 | }
82 | }
83 | unloadCurrentMap() {
84 | console.log('Descarregando mapa atual.');
85 | let objectsLength = mp.objects.toArray().length;
86 | let vehiclesLength = mp.vehicles.toArray().length;
87 | mp.objects.forEach(function (object) {
88 | object.destroy();
89 | });
90 | mp.vehicles.forEach(function (vehicle) {
91 | vehicle.destroy();
92 | });
93 | console.log(objectsLength + ' objetos descarregados.');
94 | console.log(vehiclesLength + ' veículos descarregados.');
95 | }
96 | mainLoop() {
97 | return __awaiter(this, void 0, void 0, function* () {
98 | // console.log('[MAINLOOP] Executando mainloop');
99 | switch (this.status) {
100 | }
101 | let self = this;
102 | setTimeout(function () {
103 | self.mainLoop();
104 | }, 1000);
105 | });
106 | }
107 | getMapMetadata(property) {
108 | return this.mapSelected['Map']['Metadata'][property];
109 | }
110 | }
111 | exports.Rpg = Rpg;
112 | //# sourceMappingURL=rpg.js.map
--------------------------------------------------------------------------------
/packages/rpg/rpg.js.map:
--------------------------------------------------------------------------------
1 | {"version":3,"file":"rpg.js","sourceRoot":"","sources":["rpg.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,yBAAyB;AACzB,6BAA6B;AAC7B,kCAAgC;AAChC,gCAAgC;AAEhC,yDAA6E;AAC7E,iEAA6D;AAE7D,MAAa,GAAG;IAQd,YAAY,cAA8B;QAPlC,SAAI,GAAe,EAAE,CAAC;QACvB,gBAAW,GAAQ,IAAI,CAAC;QACxB,WAAM,GAAQ,IAAI,CAAC;QAMxB,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC;QAErC,GAAG,CAAC,cAAc,GAAG,IAAI,gCAAc,CAAC,cAAc,CAAC,CAAC;QAExD,IAAI,CAAC,IAAI,EAAE,CAAC;IACd,CAAC;IAEa,IAAI;;YAChB,IAAI,CAAC,aAAa,EAAE,CAAC;YAErB,OAAO,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,wBAAwB,CAAC,CAAC;YAEzD,MAAM,4BAAgB,EAAE,CAAC;YAEzB,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,MAAM,uBAAuB,CAAC,CAAC;YAE1D,MAAM,0BAAc,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;YAE1C,IAAI,CAAC,QAAQ,EAAE,CAAC;QAClB,CAAC;KAAA;IAEO,qBAAqB;QAC3B,IAAI,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;QAEjD,IAAI,IAAI,GAAG,IAAI,CAAC;QAChB,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,UAAS,GAAW;YAClC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;QAC3D,CAAC,CAAC,CAAC;QAEH,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;IAEO,aAAa;QACnB,IAAI,KAAK,GAAG,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAEzC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;YACrB,2BAA2B;QAC7B,CAAC,CAAC,CAAC;IACL,CAAC;IAEM,YAAY,CAAC,OAAO;QACzB,OAAO,CAAC,GAAG,CAAC,mBAAmB,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,GAAG,CAAC,CAAC;QAE7D,IAAI,OAAO,EAAE;YACX,IAAI,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,CAAC,OAAO,IAAI,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,EAAE;gBACvE,IAAI,cAAc,GAAG,CAAC,EAAE,WAAW,GAAG,CAAC,CAAC;gBAExC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,EAAE,UAAS,MAAW;oBAC3D,QAAQ,MAAM,CAAC,IAAI,EAAE;wBACnB,KAAK,MAAM;4BACT,EAAE,CAAC,OAAO,CAAC,GAAG,CACZ,QAAQ,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,EACzB,IAAI,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;4BAC/G,EAAE,WAAW,CAAC;4BACd,MAAM;wBACR,KAAK,SAAS;4BACZ,EAAE,CAAC,QAAQ,CAAC,GAAG,CACb,QAAQ,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,EACzB,IAAI,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAC5G,CAAC;4BACF,EAAE,cAAc,CAAC;4BACjB,MAAM;wBACR;4BACE,OAAO,CAAC,GAAG,CAAC,kBAAkB,MAAM,CAAC,IAAI,0BAA0B,CAAC,CAAC;qBACxE;gBACH,CAAC,CAAC,CAAC;gBAEH,OAAO,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,wBAAwB,cAAc,cAAc,WAAW;mBACvG,CAAC,CAAC;aACd;iBAAM;gBACL,OAAO,CAAC,GAAG,CAAC,UAAU,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE;iCACpB,CAAC,CAAC;aAC5B;SACF;aAAM;YACL,OAAO,CAAC,GAAG,CAAC,QAAQ,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,kBAAkB,CAAC,CAAC;SAChE;IACH,CAAC;IAEM,gBAAgB;QACrB,OAAO,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAC;QAEzC,IAAI,aAAa,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,MAAM,CAAC;QAChD,IAAI,cAAc,GAAG,EAAE,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,MAAM,CAAC;QAElD,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,UAAS,MAAM;YAChC,MAAM,CAAC,OAAO,EAAE,CAAC;QACnB,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAS,OAAO;YAClC,OAAO,CAAC,OAAO,EAAE,CAAC;QACpB,CAAC,CAAC,CAAC;QAEH,OAAO,CAAC,GAAG,CAAC,aAAa,GAAG,yBAAyB,CAAC,CAAC;QACvD,OAAO,CAAC,GAAG,CAAC,cAAc,GAAG,0BAA0B,CAAC,CAAC;IAC3D,CAAC;IAEa,QAAQ;;YACpB,iDAAiD;YAEjD,QAAQ,IAAI,CAAC,MAAM,EAAE;aAEpB;YAED,IAAI,IAAI,GAAG,IAAI,CAAC;YAChB,UAAU,CAAC;gBACT,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClB,CAAC,EAAE,IAAI,CAAC,CAAC;QACX,CAAC;KAAA;IAEM,cAAc,CAAC,QAAQ;QAC5B,OAAO,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,UAAU,CAAC,CAAC,QAAQ,CAAC,CAAC;IACvD,CAAC;CACF;AAzHD,kBAyHC"}
--------------------------------------------------------------------------------
/packages/rpg/rpg.ts:
--------------------------------------------------------------------------------
1 | import * as fs from 'fs';
2 | import * as glob from 'glob';
3 | import 'rxjs/add/observable/of';
4 | import * as _ from 'underscore';
5 | import { BrazucasServer } from '../../common/brazucas-server';
6 | import { carregarTimers, carregarVeiculos } from './lib/functions/bootstrap';
7 | import { PlayerProvider } from './providers/player.provider';
8 |
9 | export class Rpg {
10 | private maps: Array = [];
11 | public mapSelected: any = null;
12 | public status: any = null;
13 | public brazucasServer: BrazucasServer;
14 |
15 | public static playerProvider: PlayerProvider;
16 |
17 | constructor(brazucasServer: BrazucasServer) {
18 | this.brazucasServer = brazucasServer;
19 |
20 | Rpg.playerProvider = new PlayerProvider(brazucasServer);
21 |
22 | this.init();
23 | }
24 |
25 | private async init() {
26 | this.carregarMapas();
27 |
28 | console.log(`${this.maps.length} mapa(s) carregado(s).`);
29 |
30 | await carregarVeiculos();
31 |
32 | console.log(`${mp.vehicles.length} veículos carregados.`);
33 |
34 | await carregarTimers(this.brazucasServer);
35 |
36 | this.mainLoop();
37 | }
38 |
39 | private carregarArquivosMapas() {
40 | let maps = glob.sync('packages/rpg/maps/*.json');
41 |
42 | let self = this;
43 | _.forEach(maps, function(map: Buffer) {
44 | self.maps.push(JSON.parse(fs.readFileSync(map, 'utf8')));
45 | });
46 |
47 | return this.maps;
48 | }
49 |
50 | private carregarMapas() {
51 | let mapas = this.carregarArquivosMapas();
52 |
53 | mapas.forEach((mapa) => {
54 | // this.carregarMapa(mapa);
55 | });
56 | }
57 |
58 | public carregarMapa(mapData) {
59 | console.log(`Carregando mapa ${mapData.Map.Metadata.Name}.`);
60 |
61 | if (mapData) {
62 | if (mapData.Map && mapData.Map.Objects && mapData.Map.Objects.MapObject) {
63 | let loadedVehicles = 0, loadedProps = 0;
64 |
65 | _.forEach(mapData.Map.Objects.MapObject, function(object: any) {
66 | switch (object.Type) {
67 | case 'Prop':
68 | mp.objects.new(
69 | parseInt(object.Hash, 10),
70 | new mp.Vector3(parseFloat(object.Position.X), parseFloat(object.Position.Y), parseFloat(object.Position.Z)));
71 | ++loadedProps;
72 | break;
73 | case 'Vehicle':
74 | mp.vehicles.new(
75 | parseInt(object.Hash, 10),
76 | new mp.Vector3(parseFloat(object.Position.X), parseFloat(object.Position.Y), parseFloat(object.Position.Z)),
77 | );
78 | ++loadedVehicles;
79 | break;
80 | default:
81 | console.log(`Objeto do tipo ${object.Type} não pôde ser carregado.`);
82 | }
83 | });
84 |
85 | console.log(`${mapData.Map.Objects.MapObject.length} objetos carregados (${loadedVehicles} veículos, ${loadedProps}
86 | objetos)`);
87 | } else {
88 | console.log(`O mapa ${mapData.Map.Metadata.id} não implementa um ou várias propriedades como Map, Map.Objects ou
89 | Map.Objects.MapObject.`);
90 | }
91 | } else {
92 | console.log(`Mapa ${mapData.Map.Metadata.id} não encontrado.`);
93 | }
94 | }
95 |
96 | public unloadCurrentMap() {
97 | console.log('Descarregando mapa atual.');
98 |
99 | let objectsLength = mp.objects.toArray().length;
100 | let vehiclesLength = mp.vehicles.toArray().length;
101 |
102 | mp.objects.forEach(function(object) {
103 | object.destroy();
104 | });
105 |
106 | mp.vehicles.forEach(function(vehicle) {
107 | vehicle.destroy();
108 | });
109 |
110 | console.log(objectsLength + ' objetos descarregados.');
111 | console.log(vehiclesLength + ' veículos descarregados.');
112 | }
113 |
114 | private async mainLoop() {
115 | // console.log('[MAINLOOP] Executando mainloop');
116 |
117 | switch (this.status) {
118 |
119 | }
120 |
121 | let self = this;
122 | setTimeout(function() {
123 | self.mainLoop();
124 | }, 1000);
125 | }
126 |
127 | public getMapMetadata(property) {
128 | return this.mapSelected['Map']['Metadata'][property];
129 | }
130 | }
131 |
--------------------------------------------------------------------------------
/server:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brazucas/ragemp-server/9654c541f11e7a8757516eb322479083501c95f7/server
--------------------------------------------------------------------------------
/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "baseUrl": ".",
4 | "target": "es6",
5 | "module": "commonjs",
6 | "sourceMap": true,
7 | "moduleResolution": "node",
8 | "lib": [
9 | "dom",
10 | "es2015"
11 | ],
12 | "allowSyntheticDefaultImports": true,
13 | "declaration": false,
14 | "emitDecoratorMetadata": true,
15 | "experimentalDecorators": true,
16 | "skipLibCheck": true
17 | },
18 | "files": [
19 | "./node_modules/@types/mocha/index.d.ts",
20 | "./node_modules/@types/node/index.d.ts"
21 | ],
22 | "include": [
23 | "./**/*.ts"
24 | ],
25 | "exclude": [
26 | "node_modules",
27 | "browser",
28 | "docker",
29 | "client"
30 | ]
31 | }
32 |
--------------------------------------------------------------------------------
/tslint.json:
--------------------------------------------------------------------------------
1 | {
2 | "rules": {
3 | "arrow-return-shorthand": true,
4 | "callable-types": true,
5 | "class-name": true,
6 | "comment-format": [
7 | true,
8 | "check-space"
9 | ],
10 | "curly": true,
11 | "eofline": true,
12 | "forin": true,
13 | "import-blacklist": [
14 | true,
15 | "lodash",
16 | "rxjs",
17 | "rxjs/Rx"
18 | ],
19 | "import-spacing": true,
20 | "indent": [
21 | true,
22 | "spaces",
23 | 2
24 | ],
25 | "interface-over-type-literal": true,
26 | "label-position": true,
27 | "max-line-length": [
28 | true,
29 | 140
30 | ],
31 | "member-access": false,
32 | "member-ordering": [
33 | true,
34 | {
35 | "order": [
36 | "static-field",
37 | "instance-field",
38 | "static-method",
39 | "instance-method"
40 | ]
41 | }
42 | ],
43 | "no-arg": true,
44 | "no-bitwise": true,
45 | "no-console": [
46 | true,
47 | "debug",
48 | "info",
49 | "time",
50 | "timeEnd",
51 | "trace"
52 | ],
53 | "no-consecutive-blank-lines": [
54 | true,
55 | 2
56 | ],
57 | "no-construct": true,
58 | "no-debugger": true,
59 | "no-duplicate-variable": true,
60 | "no-duplicate-super": true,
61 | "no-empty": false,
62 | "no-empty-interface": true,
63 | "no-eval": true,
64 | "no-inferrable-types": [
65 | true,
66 | "ignore-params"
67 | ],
68 | "no-misused-new": true,
69 | "no-non-null-assertion": false,
70 | "no-shadowed-variable": false,
71 | "no-string-literal": false,
72 | "no-string-throw": true,
73 | "no-switch-case-fall-through": true,
74 | "no-trailing-whitespace": true,
75 | "no-unnecessary-initializer": true,
76 | "no-unused-expression": true,
77 | "no-unused-variable": [
78 | true,
79 | {
80 | "ignore-pattern": "^_"
81 | }
82 | ],
83 | "no-var-keyword": true,
84 | "object-literal-sort-keys": false,
85 | "one-line": [
86 | true,
87 | "check-open-brace",
88 | "check-catch",
89 | "check-else",
90 | "check-whitespace"
91 | ],
92 | "ordered-imports": [
93 | true,
94 | {
95 | "import-sources-order": "lowercase-last",
96 | "named-imports-order": "case-insensitive"
97 | }
98 | ],
99 | "prefer-const": false,
100 | "quotemark": [
101 | true,
102 | "single",
103 | "avoid-escape"
104 | ],
105 | "radix": true,
106 | "semicolon": [
107 | true,
108 | "always",
109 | "strict-bound-class-methods"
110 | ],
111 | "trailing-comma": [
112 | true,
113 | {
114 | "multiline": "always",
115 | "singleline": "never"
116 | }
117 | ],
118 | "triple-equals": [
119 | true,
120 | "allow-null-check"
121 | ],
122 | "typedef-whitespace": [
123 | true,
124 | {
125 | "call-signature": "nospace",
126 | "index-signature": "nospace",
127 | "parameter": "nospace",
128 | "property-declaration": "nospace",
129 | "variable-declaration": "nospace"
130 | }
131 | ],
132 | "unified-signatures": true,
133 | "variable-name": false,
134 | "whitespace": [
135 | true,
136 | "check-branch",
137 | "check-decl",
138 | "check-module",
139 | "check-operator",
140 | "check-preblock",
141 | "check-separator",
142 | "check-type"
143 | ]
144 | },
145 | "rulesDirectory": [
146 | "node_modules/tslint-eslint-rules/dist/rules"
147 | ]
148 | }
149 |
--------------------------------------------------------------------------------