Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- ******************** [DESENVOLVIDO POR FLENEX] ********************
- * Comandos:
- /CriarCaixa - Cria um caixa eletronico
- /DeletarCaixa - Deleta um caixa eletronico (Perto dele)
- /Caixas - Ve quantos caixas voce tem criado e suas posições.
- * Funcionamento:
- Ao dar /CriarCaixa deverá posicionar o mesmo aonde deseja, ao apertar a tecla "Y", alguem abrirá o menu do caixa eletronico,
- sendo ele "Sacar, Depositar, Transferir".
- Para deletar um caixa, chegue perto dele e de /DeletarCaixa.
- Caso deseja que o sistema não salve o dinheiro que está nas mãos do player, mude a variavel "SALVAR_DINHEIRO_MAO" para "0"
- Caso queira criar mais de 100 Caixas Eletronicos mude a variavel "MAX_CAIXAS" para o numero desejado.
- *********** OBS:
- DEVERÁ CRIAR UMA PASTA CHAMADA "Caixas Eletronicos" EM "SCRIPTFILES" E OUTRA PASTA DENTRO COM O NOME "Contas".
- CASO NÃO CRIE O SERVIDOR IRÁ CRASHAR!
- Includes:
- - a_samp
- - DOF2
- - zcmd
- - streamer
- */
- #define FILTERSCRIPT
- #include <a_samp>
- #include <DOF2>
- #include <zcmd>
- #include <streamer>
- #define Loop(%0,%1) for(new %0 = 0; %0 < %1; ++%0)
- //////////////////////////////////////// [CORES] ////////////////////////////////////////
- #define Verde 0x00FF00FF
- #define Vermelho 0xff0000FF
- #define Verde2 0x19B519FF
- #define Branco 0xf0f0f0FF
- #define Amarelo 0xffff00FF
- //////////////////////////////////////// [DEFINIÇÕES] ////////////////////////////////////////
- #define MAX_CAIXAS 100 // Máximo de caixas eletrônicos
- #define DIALOG_CAIXA_ELETRONICO 5555 // Mude caso esteja dando conflito
- #define DIALOG_CAIXA_SACAR 5556 // Mude caso esteja dando conflito
- #define DIALOG_CAIXA_DEPOSITAR 5557 // Mude caso esteja dando conflito
- #define DIALOG_CAIXA_TRANSFERIR_NICK 5558 // Mude caso esteja dando conflito
- #define DIALOG_CAIXA_TRANSFERIR_VALOR 5559 // Mude caso esteja dando conflito
- //////////////////////////////////////// [VARIAVEIS] ////////////////////////////////////////
- new SALVAR_DINHEIRO_MAO = 1; // 1 = Sim, 0 = Não.
- new IDTransferindo[MAX_PLAYERS] = -1;
- new CaixaEditando[MAX_PLAYERS];
- new bool:Spawnado[MAX_PLAYERS] = false;
- enum CaixaInfos {
- Text3D:Text,
- Icon,
- VW,
- Interior,
- Obj,
- Float:Cx,
- Float:Cy,
- Float:Cz,
- Float:Crx,
- Float:Cry,
- Float:Crz,
- };
- enum PlayerCaixaInfos {
- DinheiroBanco,
- Dinheiro
- };
- new CaixaEletronico[MAX_CAIXAS][CaixaInfos];
- new PlayerCaixaInfo[MAX_PLAYERS][PlayerCaixaInfos];
- //////////////////////////////////////// [PUBLICS] ////////////////////////////////////////
- public OnFilterScriptInit()
- {
- print("\n-------------------------------------------------");
- print(" [FS] Caixas eletronicos by Flenex carregado!");
- print("-------------------------------------------------\n");
- Loop(i, MAX_CAIXAS) AtualizarCaixa(i);
- return 1;
- }
- public OnFilterScriptExit()
- {
- DOF2_Exit();
- return 1;
- }
- public OnPlayerSpawn(playerid)
- {
- CarregarPlayerCaixaInfo(playerid);
- Spawnado[playerid] = true;
- if(SALVAR_DINHEIRO_MAO == 1) {
- ResetPlayerMoney(playerid);
- GivePlayerMoney(playerid, PlayerCaixaInfo[playerid][Dinheiro]);
- }
- return 1;
- }
- public OnPlayerDisconnect(playerid, reason) {
- if(Spawnado[playerid] == true) SalvarPlayerCaixaInfo(playerid);
- Spawnado[playerid] = false;
- }
- public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
- {
- if(newkeys == KEY_YES) {
- new titulo[64];
- Loop(i, MAX_CAIXAS) {
- if(IsPlayerInRangeOfPoint(playerid, 2, CaixaEletronico[i][Cx],CaixaEletronico[i][Cy],CaixaEletronico[i][Cz]) &&
- DOF2_FileExists(CaixaFile(i)) && GetPlayerVirtualWorld(playerid) == CaixaEletronico[i][VW]) {
- IDTransferindo[playerid] = -1;
- CarregarPlayerCaixaInfo(playerid);
- format(titulo, sizeof(titulo), "{19B519}Caixa Eletrônico - Saldo: {f0f0f0}$%s", Convert(PlayerCaixaInfo[playerid][DinheiroBanco]));
- if(IsPlayerInAnyVehicle(playerid)) return SCM(playerid, Vermelho, "Você não pode estar em um veículo!");
- ShowPlayerDialog(playerid, DIALOG_CAIXA_ELETRONICO, DIALOG_STYLE_LIST, titulo,
- "Sacar\nDepositar\nTransferir", "Selecionar", "Cancelar");
- }
- }
- }
- return 1;
- }
- public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
- {
- new titulo[64];
- format(titulo, sizeof(titulo), "{19B519}Caixa Eletrônico");
- if(response) {
- if(dialogid == DIALOG_CAIXA_ELETRONICO) {
- switch(listitem) {
- case 0: {
- new dg[500];
- format(dg, sizeof(dg),"{f0f0f0}Dinheiro em conta: {19B519}$%s\n\
- {f0f0f0}Dinheiro em mãos: {19B519}$%s\n\n\
- {f0f0f0}Insira abaixo um valor para sacar:", Convert(GetPlayerMoney(playerid)),Convert(PlayerCaixaInfo[playerid][DinheiroBanco]));
- ShowPlayerDialog(playerid, DIALOG_CAIXA_SACAR, DIALOG_STYLE_INPUT, titulo,
- dg, "Sacar", "Cancelar");
- }
- case 1: {
- new dg[500];
- format(dg, sizeof(dg),"{f0f0f0}Dinheiro em conta: {19B519}$%s\n\
- {f0f0f0}Dinheiro em mãos: {19B519}$%s\n\n\
- {f0f0f0}Insira abaixo um valor para depositar:", Convert(GetPlayerMoney(playerid)),Convert(PlayerCaixaInfo[playerid][DinheiroBanco]));
- ShowPlayerDialog(playerid, DIALOG_CAIXA_DEPOSITAR, DIALOG_STYLE_INPUT, titulo,
- dg, "Depositar", "Cancelar");
- }
- case 2: {
- new dg[500];
- format(dg, sizeof(dg),"{f0f0f0}Insira abaixo o {1abd59}ID {f0f0f0}do beneficiado");
- ShowPlayerDialog(playerid, DIALOG_CAIXA_TRANSFERIR_NICK, DIALOG_STYLE_INPUT, titulo,
- dg, "Inserir", "Cancelar");
- }
- }
- }
- if(dialogid == DIALOG_CAIXA_SACAR) {
- new valor = strval(inputtext), msg[128];
- if(!strlen(inputtext) || valor > PlayerCaixaInfo[playerid][DinheiroBanco] || valor <= 0) return SCM(playerid, Vermelho, "| CAIXA ELETRÔNICO | Valor inválido! Insira outro.");
- PlayerCaixaInfo[playerid][DinheiroBanco] -= valor;
- GivePlayerMoney(playerid, valor);
- SalvarPlayerCaixaInfo(playerid);
- format(msg, sizeof(msg), "| CAIXA ELETRÔNICO | Você sacou {f0f0f0}$%s {19B519}de sua conta bancária!", Convert(valor));
- SCM(playerid, 0x19B519FF, msg);
- }
- if(dialogid == DIALOG_CAIXA_DEPOSITAR) {
- new valor = strval(inputtext), msg[128];
- if(!strlen(inputtext) || valor > GetPlayerMoney(playerid) || valor <= 0) return SCM(playerid, Vermelho, "| CAIXA ELETRÔNICO | Valor inválido! Insira outro.");
- PlayerCaixaInfo[playerid][DinheiroBanco] += valor;
- GivePlayerMoney(playerid, -valor);
- SalvarPlayerCaixaInfo(playerid);
- format(msg, sizeof(msg), "| CAIXA ELETRÔNICO | Você depositou {f0f0f0}$%s {19B519}em sua conta bancária!", Convert(valor));
- SCM(playerid, 0x19B519FF, msg);
- }
- if(dialogid == DIALOG_CAIXA_TRANSFERIR_NICK) {
- new id = strval(inputtext);
- if(!IsPlayerConnected(id) || IsPlayerNPC(id) || id == INVALID_PLAYER_ID || !strlen(inputtext)) return SCM(playerid, Vermelho, "| CAIXA ELETRÔNICO | O id inserido não está conectado! Insira outro.");
- if(id == playerid) return SCM(playerid, Vermelho, "| CAIXA ELETRÔNICO | Você não pode transferir dinheiro para você mesmo!");
- IDTransferindo[playerid] = id;
- new dg[500];
- format(dg, sizeof(dg),"{f0f0f0}Dinheiro em conta: {19B519}$%s\n\
- {f0f0f0}Dinheiro em mãos: {19B519}$%s\n\n\
- {f0f0f0}Insira abaixo um {1abd59}valor {f0f0f0}para Transferir:", Convert(GetPlayerMoney(playerid)),Convert(PlayerCaixaInfo[playerid][DinheiroBanco]));
- ShowPlayerDialog(playerid, DIALOG_CAIXA_TRANSFERIR_VALOR, DIALOG_STYLE_INPUT, titulo,dg, "Depositar", "Cancelar");
- }
- if(dialogid == DIALOG_CAIXA_TRANSFERIR_VALOR) {
- new valor = strval(inputtext);
- new id = IDTransferindo[playerid];
- if(!strlen(inputtext) || valor > GetPlayerMoney(playerid) || valor <= 0) return SCM(playerid, Vermelho, "| CAIXA ELETRÔNICO | Valor inválido! Insira outro.");
- PlayerCaixaInfo[id][DinheiroBanco] += valor;
- PlayerCaixaInfo[playerid][DinheiroBanco] -= valor;
- SalvarPlayerCaixaInfo(id);
- SalvarPlayerCaixaInfo(playerid);
- new msg[128];
- format(msg, sizeof(msg), "| INFO | %s transferiu $%s para sua conta bancária!", Nome(playerid), Convert(valor));
- SCM(id, Amarelo, msg);
- format(msg, sizeof(msg), "| INFO | Você transferiu $%s para a conta bancária de %s!", Convert(valor), Nome(playerid));
- SCM(playerid, Amarelo, msg);
- }
- }
- return 1;
- }
- public OnPlayerEditDynamicObject(playerid, objectid, response, Float:x, Float:y, Float:z, Float:rx, Float:ry, Float:rz)
- {
- if (!IsValidDynamicObject(objectid))
- {
- return 1;
- }
- switch (response)
- {
- case EDIT_RESPONSE_FINAL:
- {
- if(objectid == CaixaEditando[playerid]) {
- new caixa, msg[128];
- DestroyDynamicObject(CaixaEditando[playerid]);
- caixa = GetCaixaWI();
- if(caixa == -1) return SCM(playerid, Vermelho, "| INFO | Limite de caixas eletronicos atingido!");
- //if(IsPlayerInRangeOfPoint(playerid, 4, 0,0,0)) return SCM(playerid, Vermelho, "| INFO | Você não pode criar caixas eletronicos nessa coordenada! Se distancie um pouco!");
- DOF2_CreateFile(CaixaFile(caixa));
- DOF2_SetFloat(CaixaFile(caixa), "Cx", x);
- DOF2_SetFloat(CaixaFile(caixa), "Cy", y);
- DOF2_SetFloat(CaixaFile(caixa), "Cz", z);
- DOF2_SetFloat(CaixaFile(caixa), "Crx", rx);
- DOF2_SetFloat(CaixaFile(caixa), "Cry", ry);
- DOF2_SetFloat(CaixaFile(caixa), "Crz", rz);
- DOF2_SetInt(CaixaFile(caixa), "VW", GetPlayerVirtualWorld(playerid));
- DOF2_SetInt(CaixaFile(caixa), "Interior", GetPlayerInterior(playerid));
- DOF2_SaveFile();
- format(msg, sizeof(msg), "| CAIXA ELETRÔNICO | Caixa eletronico id {00ffff}%d{f0f0f0} criado!", caixa);
- SCM(playerid, Branco, msg);
- CaixaEditando[playerid] = INVALID_OBJECT_ID;
- AtualizarCaixa(caixa);
- }
- }
- case EDIT_RESPONSE_CANCEL:
- {
- if(objectid == CaixaEditando[playerid]) {
- DestroyDynamicObject(CaixaEditando[playerid]);
- }
- SCM(playerid, Vermelho, "| INFO | Edição cancelada!");
- }
- }
- return 1;
- }
- //////////////////////////////////////// [COMANDOS] ////////////////////////////////////////
- CMD:criarcaixa(playerid) {
- if(!IsPlayerAdmin(playerid)) return SCM(playerid, Vermelho, "| CAIXA ELETRÔNICO | Você precisa estar logado na RCON!");
- DestroyDynamicObject(CaixaEditando[playerid]);
- new Float:pos[3];
- GetPlayerPos(playerid, pos[0], pos[1], pos[2]);
- SetPlayerPos(playerid, pos[0], pos[1]+1, pos[2]);
- CaixaEditando[playerid] = CreateDynamicObject(19324, pos[0], pos[1], pos[2], 0,0,0, GetPlayerVirtualWorld(playerid), GetPlayerInterior(playerid));
- EditDynamicObject(playerid, CaixaEditando[playerid]); // 19324
- SCM(playerid, Amarelo, "| CAIXA ELETRÔNICO | Edite o caixa e clique em salvar!");
- return 1;
- }
- CMD:deletarcaixa(playerid) {
- new caixa, msg[128], Float:pos[3], perto = 0;
- if(!IsPlayerAdmin(playerid)) return SCM(playerid, Vermelho, "| CAIXA ELETRÔNICO | Você precisa estar logado na RCON!");
- GetPlayerPos(playerid, pos[0], pos[1], pos[2]);
- Loop(i, MAX_CAIXAS) {
- if(IsPlayerInRangeOfPoint(playerid, 2, CaixaEletronico[i][Cx],CaixaEletronico[i][Cy],CaixaEletronico[i][Cz]) &&
- DOF2_FileExists(CaixaFile(i))) { //!IsPlayerInRangeOfPoint(playerid, 4, 0,0,0)
- caixa = i;
- DOF2_RemoveFile(CaixaFile(caixa));
- SalvarCaixa(caixa);
- AtualizarCaixa(caixa);
- format(msg, sizeof(msg), "| CAIXA ELETRÔNICO | Caixa eletronico id {00ffff}%d{f0f0f0} deletado!", caixa);
- SCM(playerid, Branco, msg);
- perto = 1;
- }
- }
- if(perto == 0) SCM(playerid, Vermelho, "| CAIXA ELETRÔNICO | Você não está perto de nenhum caixa eletrônico!");
- return 1;
- }
- CMD:caixas(playerid) {
- if(!IsPlayerAdmin(playerid)) return SCM(playerid, Vermelho, "| CAIXA ELETRÔNICO | Você precisa estar logado na RCON!");
- new msg[256], caixas;
- Loop(i, MAX_CAIXAS) {
- if(DOF2_FileExists(CaixaFile(i))) {
- format(msg, sizeof(msg), "| CAIXA ELETRÔNICO | Caixa id {00ffff}%d{f0f0f0}. X[{00ffff}%0.4f{f0f0f0}], Y[{00ffff}%0.4f{f0f0f0}], Z[{00ffff}%0.4f{f0f0f0}]", i,CaixaEletronico[i][Cx],
- CaixaEletronico[i][Cy],CaixaEletronico[i][Cz]);
- SCM(playerid, Branco, msg);
- caixas++;
- }
- }
- if(caixas == 0) return SCM(playerid, Vermelho, "| CAIXA ELETRÔNICO | Não há nenhum caixa eletronico criado!");
- else {
- format(msg, sizeof(msg), "| CAIXA ELETRÔNICO | Total de caixas: {00ffff}%d", caixas);
- SCM(playerid, Branco, msg);
- }
- return 1;
- }
- //////////////////////////////////////// [FUNÇÕES] ////////////////////////////////////////
- CaixaFile(CaixaId) {
- new file[90];
- format(file, sizeof(file), "Caixas Eletronicos/Caixa_%d.ini", CaixaId);
- return file;
- }
- GetCaixaWI() {
- Loop(i, MAX_CAIXAS) {
- if(i>0) if(!DOF2_FileExists(CaixaFile(i))) return i;
- }
- return -1;
- }
- stock SCM(id, cor, msg[]) {
- SendClientMessage(id, cor, msg);
- return 1;
- }
- forward AtualizarCaixa(caixa);
- public AtualizarCaixa(caixa) {
- CarregarCaixa(caixa);
- DestroyDynamic3DTextLabel(CaixaEletronico[caixa][Text]);
- DestroyDynamicMapIcon(CaixaEletronico[caixa][Icon]);
- DestroyDynamicObject(CaixaEletronico[caixa][Obj]);
- new txt[128];
- if(DOF2_FileExists(CaixaFile(caixa))) {
- format(txt, sizeof(txt), "Caixa Eletronico\n\
- {f0f0f0}Aperte '{9e9e9e}Y{f0f0f0}' para utilizar");
- CaixaEletronico[caixa][Text] = CreateDynamic3DTextLabel(txt, Verde2,CaixaEletronico[caixa][Cx],CaixaEletronico[caixa][Cy],CaixaEletronico[caixa][Cz], 10, INVALID_PLAYER_ID, INVALID_VEHICLE_ID, 0, CaixaEletronico[caixa][VW], CaixaEletronico[caixa][Interior]);
- CaixaEletronico[caixa][Icon] = CreateDynamicMapIcon(CaixaEletronico[caixa][Cx],CaixaEletronico[caixa][Cy],CaixaEletronico[caixa][Cz], 56, -1, CaixaEletronico[caixa][VW], CaixaEletronico[caixa][Interior], -1, 90);
- CaixaEletronico[caixa][Obj] = CreateDynamicObject(19324, CaixaEletronico[caixa][Cx],CaixaEletronico[caixa][Cy],CaixaEletronico[caixa][Cz], CaixaEletronico[caixa][Crx],CaixaEletronico[caixa][Cry],CaixaEletronico[caixa][Crz],CaixaEletronico[caixa][VW], CaixaEletronico[caixa][Interior]);
- }
- }
- CarregarCaixa(CaixaId) {
- CaixaEletronico[CaixaId][Cx] = DOF2_GetFloat(CaixaFile(CaixaId), "Cx");
- CaixaEletronico[CaixaId][Cy] = DOF2_GetFloat(CaixaFile(CaixaId), "Cy");
- CaixaEletronico[CaixaId][Cz] = DOF2_GetFloat(CaixaFile(CaixaId), "Cz");
- CaixaEletronico[CaixaId][Crx] = DOF2_GetFloat(CaixaFile(CaixaId), "Crx");
- CaixaEletronico[CaixaId][Cry] = DOF2_GetFloat(CaixaFile(CaixaId), "Cry");
- CaixaEletronico[CaixaId][Crz] = DOF2_GetFloat(CaixaFile(CaixaId), "Crz");
- CaixaEletronico[CaixaId][VW] = DOF2_GetInt(CaixaFile(CaixaId), "VW");
- CaixaEletronico[CaixaId][Interior] = DOF2_GetInt(CaixaFile(CaixaId), "Interior");
- }
- SalvarCaixa(CaixaId) {
- DOF2_SetFloat(CaixaFile(CaixaId), "Cx", CaixaEletronico[CaixaId][Cx]);
- DOF2_SetFloat(CaixaFile(CaixaId), "Cy", CaixaEletronico[CaixaId][Cy]);
- DOF2_SetFloat(CaixaFile(CaixaId), "Cz", CaixaEletronico[CaixaId][Cz]);
- DOF2_SetFloat(CaixaFile(CaixaId), "Crx", CaixaEletronico[CaixaId][Crx]);
- DOF2_SetFloat(CaixaFile(CaixaId), "Cry", CaixaEletronico[CaixaId][Cry]);
- DOF2_SetFloat(CaixaFile(CaixaId), "Crz", CaixaEletronico[CaixaId][Crz]);
- DOF2_SetInt(CaixaFile(CaixaId), "VW", CaixaEletronico[CaixaId][VW]);
- DOF2_SetInt(CaixaFile(CaixaId), "Interior", CaixaEletronico[CaixaId][Interior]);
- DOF2_SaveFile();
- }
- Nome(playerid) {
- new file[90];
- GetPlayerName(playerid, file, sizeof(file));
- return file;
- }
- pCaixaFile(playerid) {
- new file[90];
- format(file, sizeof(file), "Caixas Eletronicos/Contas/Conta_%s.ini", Nome(playerid));
- return file;
- }
- CarregarPlayerCaixaInfo(playerid) {
- if(!DOF2_FileExists(pCaixaFile(playerid))) DOF2_CreateFile(pCaixaFile(playerid));
- PlayerCaixaInfo[playerid][DinheiroBanco] = DOF2_GetInt(pCaixaFile(playerid), "DinheiroBanco");
- if(SALVAR_DINHEIRO_MAO == 1) PlayerCaixaInfo[playerid][Dinheiro] = DOF2_GetInt(pCaixaFile(playerid), "Dinheiro");
- }
- SalvarPlayerCaixaInfo(playerid) {
- if(!DOF2_FileExists(pCaixaFile(playerid))) DOF2_CreateFile(pCaixaFile(playerid));
- DOF2_SetInt(pCaixaFile(playerid), "DinheiroBanco", PlayerCaixaInfo[playerid][DinheiroBanco]);
- if(SALVAR_DINHEIRO_MAO == 1) DOF2_SetInt(pCaixaFile(playerid), "Dinheiro", GetPlayerMoney(playerid));
- DOF2_SaveFile();
- }
- stock Convert(value, const text[] = ".")
- {
- new Var[20];
- format(Var, sizeof(Var), "%d", value);
- for(new X = strlen(Var) - 3; X > 0; X -= 3)
- strins(Var, text, X);
- return Var;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement