Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- hwWeapons 1.1 (02/07/2017) feito por HardWar
- ATENÇÃO: Este filterscript cria um banco de dados (caso não exista) na pasta scriptfiles com nome "hw_weapons.db"
- Comandos:
- - /armas - Comprar uma arma ou munição
- - /iarmas - Inventário de armas
- Créditos:
- - Zeex (zcmd)
- - Y_Less, Emmet_, maddinat0r (sscanf)
- - SA-MP Team
- */
- #include <a_samp>
- #include <zcmd>
- #include <sscanf2>
- // DIALOGS
- #define D_ARMAS (478)
- #define D_ARMAS_BRANCAS (479)
- #define D_PISTOLAS (480)
- #define D_ESCOPETAS (481)
- #define D_SMGS (482)
- #define D_RIFLES_ASSALTO (483)
- #define D_RIFLES_PRECISAO (484)
- #define D_ARMAS_PESADAS (485)
- #define D_EXPLOSIVOS (486)
- #define D_INVENTARIO (487)
- /*
- PREÇO DAS ARMAS
- ------------------------------------------------------
- Você pode configurar o preço de cada arma aqui.
- Mude os números de acordo com sua preferência, exemplo:
- #define P_SOCO_INGLES (400) - Agora o soco inglês custa $400
- */
- #define P_SOCO_INGLES (50)
- #define P_TACO_GOLFE (100)
- #define P_CASSETETE (100)
- #define P_FACA (100)
- #define P_TACO_BASEBALL (150)
- #define P_PA (100)
- #define P_TACO_SINUCA (100)
- #define P_KATANA (100)
- #define P_MOTOSSERRA (200)
- #define P_9MM (700)
- #define P_9MM_SILENCIADA (900)
- #define P_DESERT_EAGLE (1200)
- #define P_ESCOPETA (1200)
- #define P_ESCOPETA_SERRADO (1200)
- #define P_ESCOPETA_COMBATE (1700)
- #define P_UZI (500)
- #define P_MP5 (1500)
- #define P_TEC9 (800)
- #define P_M4 (4000)
- #define P_AK47 (4000)
- #define P_ESPINGARDA (2000)
- #define P_SNIPER (2500)
- #define P_LANCA_CHAMAS (6000)
- #define P_RPG (10000)
- #define P_GRANADA (1000)
- #define P_COQUETEL_MOLOTOV (1000)
- #define P_C4 (1500)
- /*
- QUANTIDADE DE MUNIÇÃO POR COMPRA
- ------------------------------------------------------
- Você pode configurar a quantidade de munição por compra aqui.
- Mude os números de acordo com sua preferência, exemplo:
- #define M_9MM (100) - Agora a pistola 9mm recebe 100 de munição por compra.
- */
- #define M_9MM (100)
- #define M_9MM_SILENCIADA (100)
- #define M_DESERT_EAGLE (70)
- #define M_ESCOPETA (20)
- #define M_ESCOPETA_SERRADO (40)
- #define M_ESCOPETA_COMBATE (50)
- #define M_UZI (200)
- #define M_MP5 (200)
- #define M_TEC9 (200)
- #define M_M4 (200)
- #define M_AK47 (200)
- #define M_ESPINGARDA (20)
- #define M_SNIPER (30)
- #define M_LANCA_CHAMAS (100)
- #define M_RPG (5)
- #define M_GRANADA (10)
- #define M_COQUETEL_MOLOTOV (10)
- #define M_C4 (5)
- #undef MAX_PLAYERS
- #define MAX_PLAYERS (50) // Troque 50 pelo número de slots do seu servidor
- #define MAX_WEAPONS (27)
- enum E_DADOS_ARMAS {
- ARMA,
- MUNICAO,
- ORDEM_INVENTARIO
- }
- new Jogador[MAX_PLAYERS][E_DADOS_ARMAS][MAX_WEAPONS];
- new DB:BD;
- new nArmas[][] = {
- "Soco inglês",
- "Taco de golfe",
- "Cassetete",
- "Faca",
- "Taco de Baseball",
- "Pá",
- "Taco de sinuca",
- "Katana",
- "Motosserra",
- "Pistola 9mm",
- "Pistola 9mm com silenciador",
- "Desert Eagle",
- "Escopeta",
- "Escopeta de cano serrado",
- "Escopeta de combate",
- "Uzi",
- "MP5",
- "Tec-9",
- "M4",
- "AK-47",
- "Espingarda",
- "Sniper",
- "Lança-chamas",
- "RPG",
- "Granada",
- "Coquetel Molotov",
- "C4"
- };
- public OnFilterScriptInit()
- {
- BD = db_open("hw_weapons.db");
- new consulta[314];
- format(consulta, 314, "CREATE TABLE IF NOT EXISTS jogadores (`id` INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, `nome` TEXT NOT NULL, `armas` TEXT NOT NULL DEFAULT '-1;-1;-1;-1;-1;-1;-1;-1;-1;-1;-1;-1;-1;-1;-1;-1;-1;-1;-1;-1;-1;-1;-1;-1;-1;-1;-1;', `municao` TEXT NOT NULL DEFAULT '0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;')");
- db_free_result(db_query(BD, consulta));
- print("\n----------------------------------");
- print(" hwWeapons por HardWar ");
- print("----------------------------------\n");
- return 1;
- }
- public OnFilterScriptExit()
- {
- db_close(BD);
- return 1;
- }
- public OnPlayerConnect(playerid)
- {
- new consulta[83], DBResult:result, nome[MAX_PLAYER_NAME+1];
- GetPlayerName(playerid, nome, MAX_PLAYER_NAME+1);
- format(consulta, 82, "SELECT `armas`, `municao` FROM `jogadores` WHERE `nome`='%s'", nome);
- result = db_query(BD, consulta);
- if(!db_num_rows(result)) {
- format(consulta, 82, "INSERT INTO `jogadores` (`nome`) VALUES ('%q')", nome);
- db_query(BD, consulta);
- }
- format(consulta, 82, "SELECT `armas`, `municao` FROM `jogadores` WHERE `nome`='%s'", nome);
- result = db_query(BD, consulta);
- new armas[82], hArmas[MAX_WEAPONS];
- db_get_field_assoc(result, "armas", armas, 82);
- if(sscanf(armas, "p<;>a<i>[27]", hArmas)) return 1;
- for(new i, j = sizeof hArmas; i < j; ++i) Jogador[playerid][ARMA][i] = hArmas[i];
- new municao[109], hMunicao[MAX_WEAPONS];
- db_get_field_assoc(result, "municao", municao, 109);
- if(sscanf(municao, "p<;>a<i>[27]", hMunicao)) return 1;
- for(new i, j = sizeof hMunicao; i < j; ++i) Jogador[playerid][MUNICAO][i] = hMunicao[i];
- db_free_result(result);
- return 1;
- }
- public OnPlayerDisconnect(playerid, reason)
- {
- new arma[4], armas[82];
- for(new i; i < MAX_WEAPONS; ++i) {
- format(arma, 4, "%i;", Jogador[playerid][ARMA][i]);
- strcat(armas, arma);
- }
- new mun[6], municao[109];
- for(new i; i < MAX_WEAPONS; ++i) {
- format(mun, 6, "%i;", Jogador[playerid][MUNICAO][i]);
- strcat(municao, mun);
- }
- new consulta[256], nome[MAX_PLAYER_NAME+1];
- GetPlayerName(playerid, nome, sizeof nome);
- format(consulta, 256, "UPDATE `jogadores` SET `armas`='%s',`municao`='%s' WHERE `nome`='%q'", armas, municao, nome);
- db_free_result(db_query(BD, consulta));
- return 1;
- }
- public OnPlayerUpdate(playerid)
- {
- new arma, municao;
- for(new i; i <= 12; ++i) {
- GetPlayerWeaponData(playerid, i, arma, municao);
- for(new j; j < MAX_WEAPONS; ++j) {
- if(Jogador[playerid][ARMA][j] == arma) {
- Jogador[playerid][MUNICAO][j] = municao;
- }
- }
- }
- return 1;
- }
- public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
- {
- switch(dialogid) {
- case D_ARMAS: {
- if(response) {
- new texto[256];
- switch(listitem) {
- case 0: {
- format(texto, 256, "Arma\tPreço\tMunição\nSoco inglês\t$%i\t1\nTaco de golfe\t$%i\t1\nCassetete\t$%i\t1\nFaca\t$%i\t1\nTaco de Baseball\t$%i\t1\nPá\t$%i\t1\nTaco de sinuca\t$%i\t1\nKatana\t$%i\t1\nMotosserra\t$%i\t1", P_SOCO_INGLES, P_TACO_GOLFE, P_CASSETETE, P_FACA, P_TACO_BASEBALL, P_PA, P_TACO_SINUCA, P_KATANA, P_MOTOSSERRA);
- ShowPlayerDialog(playerid, D_ARMAS_BRANCAS, DIALOG_STYLE_TABLIST_HEADERS, "Armas brancas", texto, "Comprar", "Voltar");
- }
- case 1: {
- format(texto, 256, "Arma\tPreço\tMunição\n9mm\t$%i\t%i\n9mm com silenciador\t$%i\t%i\nDesert Eagle\t$%i\t%i", P_9MM, M_9MM, P_9MM_SILENCIADA, M_9MM_SILENCIADA, P_DESERT_EAGLE, M_DESERT_EAGLE);
- ShowPlayerDialog(playerid, D_PISTOLAS, DIALOG_STYLE_TABLIST_HEADERS, "Pistolas", texto, "Comprar", "Voltar");
- }
- case 2: {
- format(texto, 256, "Arma\tPreço\tMunição\nEscopeta\t$%i\t%i\nEscopeta de cano serrado\t$%i\t%i\nEscopeta de combate\t$%i\t%i", P_ESCOPETA, M_ESCOPETA, P_ESCOPETA_SERRADO, M_ESCOPETA_SERRADO, P_ESCOPETA_COMBATE, M_ESCOPETA_COMBATE);
- ShowPlayerDialog(playerid, D_ESCOPETAS, DIALOG_STYLE_TABLIST_HEADERS, "Escopetas", texto, "Comprar", "Voltar");
- }
- case 3: {
- format(texto, 256, "Arma\tPreço\tMunição\nUzi\t$%i\t%i\nMP5\t$%i\t%i\nTec-9\t$%i\t%i", P_UZI, M_UZI, P_MP5, M_MP5, P_TEC9, M_TEC9);
- ShowPlayerDialog(playerid, D_SMGS, DIALOG_STYLE_TABLIST_HEADERS, "Sub-metralhadoras", texto, "Comprar", "Voltar");
- }
- case 4: {
- format(texto, 256, "Arma\tPreço\tMunição\nM4\t$%i\t%i\nAK-47\t$%i\t%i", P_M4, M_M4, P_AK47, M_AK47);
- ShowPlayerDialog(playerid, D_RIFLES_ASSALTO, DIALOG_STYLE_TABLIST_HEADERS, "Rifles de assalto", texto, "Comprar", "Voltar");
- }
- case 5: {
- format(texto, 256, "Arma\tPreço\tMunição\nEspingarda\t$%i\t%i\nSniper\t$%i\t%i", P_ESPINGARDA, M_ESPINGARDA, P_SNIPER, M_SNIPER);
- ShowPlayerDialog(playerid, D_RIFLES_PRECISAO, DIALOG_STYLE_TABLIST_HEADERS, "Rifles de alta precisão", texto, "Comprar", "Voltar");
- }
- case 6: {
- format(texto, 256, "Arma\tPreço\tMunição\nLança-chamas\t$%i\t%i\nRPG\t$%i\t%i", P_LANCA_CHAMAS, M_LANCA_CHAMAS, P_RPG, M_RPG);
- ShowPlayerDialog(playerid, D_ARMAS_PESADAS, DIALOG_STYLE_TABLIST_HEADERS, "Armas pesadas", texto, "Comprar", "Voltar");
- }
- case 7: {
- format(texto, 256, "Arma\tPreço\tMunição\nGranada\t$%i\t%i\nCoquetel Molotov\t$%i\t%i\nC4\t$%i\t%i", P_GRANADA, M_GRANADA, P_COQUETEL_MOLOTOV, M_COQUETEL_MOLOTOV, P_C4, M_C4);
- ShowPlayerDialog(playerid, D_EXPLOSIVOS, DIALOG_STYLE_TABLIST_HEADERS, "Explosivos", texto, "Comprar", "Voltar");
- }
- }
- }
- }
- case D_ARMAS_BRANCAS: {
- if(response) {
- switch(listitem) {
- case 0: ComprarArma(playerid, 0, WEAPON_BRASSKNUCKLE, P_SOCO_INGLES, 1);
- case 1: ComprarArma(playerid, 1, WEAPON_GOLFCLUB, P_TACO_GOLFE, 1);
- case 2: ComprarArma(playerid, 2, WEAPON_NITESTICK, P_CASSETETE, 1);
- case 3: ComprarArma(playerid, 3, WEAPON_KNIFE, P_FACA, 1);
- case 4: ComprarArma(playerid, 4, WEAPON_BAT, P_TACO_BASEBALL, 1);
- case 5: ComprarArma(playerid, 5, WEAPON_SHOVEL, P_PA, 1);
- case 6: ComprarArma(playerid, 6, WEAPON_POOLSTICK, P_TACO_SINUCA, 1);
- case 7: ComprarArma(playerid, 7, WEAPON_KATANA, P_KATANA, 1);
- case 8: ComprarArma(playerid, 8, WEAPON_CHAINSAW, P_MOTOSSERRA, 1);
- }
- }
- else ShowPlayerDialog(playerid, D_ARMAS, DIALOG_STYLE_LIST, "Armas", "Armas brancas\nPistolas\nEscopetas\nSub-metralhadoras\nRifles de assalto\nRifles de alta-precisão\nArmas pesadas\nExplosivos", "Selecionar", "Fechar");
- }
- case D_PISTOLAS: {
- if(response) {
- switch(listitem) {
- case 0: ComprarArma(playerid, 9, WEAPON_COLT45, P_9MM, M_9MM);
- case 1: ComprarArma(playerid, 10, WEAPON_SILENCED, P_9MM_SILENCIADA, M_9MM_SILENCIADA);
- case 2: ComprarArma(playerid, 11, WEAPON_DEAGLE, P_DESERT_EAGLE, M_DESERT_EAGLE);
- }
- }
- else ShowPlayerDialog(playerid, D_ARMAS, DIALOG_STYLE_LIST, "Armas", "Armas brancas\nPistolas\nEscopetas\nSub-metralhadoras\nRifles de assalto\nRifles de alta-precisão\nArmas pesadas\nExplosivos", "Selecionar", "Fechar");
- }
- case D_ESCOPETAS: {
- if(response) {
- switch(listitem) {
- case 0: ComprarArma(playerid, 12, WEAPON_SHOTGUN, P_ESCOPETA, M_ESCOPETA);
- case 1: ComprarArma(playerid, 13, WEAPON_SAWEDOFF, P_ESCOPETA_SERRADO, M_ESCOPETA_SERRADO);
- case 2: ComprarArma(playerid, 14, WEAPON_SHOTGSPA, P_ESCOPETA_COMBATE, M_ESCOPETA_COMBATE);
- }
- }
- else ShowPlayerDialog(playerid, D_ARMAS, DIALOG_STYLE_LIST, "Armas", "Armas brancas\nPistolas\nEscopetas\nSub-metralhadoras\nRifles de assalto\nRifles de alta-precisão\nArmas pesadas\nExplosivos", "Selecionar", "Fechar");
- }
- case D_SMGS: {
- if(response) {
- switch(listitem) {
- case 0: ComprarArma(playerid, 15, WEAPON_UZI, P_UZI, M_UZI);
- case 1: ComprarArma(playerid, 16, WEAPON_MP5, P_MP5, M_MP5);
- case 2: ComprarArma(playerid, 17, WEAPON_TEC9, P_TEC9, M_TEC9);
- }
- }
- else ShowPlayerDialog(playerid, D_ARMAS, DIALOG_STYLE_LIST, "Armas", "Armas brancas\nPistolas\nEscopetas\nSub-metralhadoras\nRifles de assalto\nRifles de alta-precisão\nArmas pesadas\nExplosivos", "Selecionar", "Fechar");
- }
- case D_RIFLES_ASSALTO: {
- if(response) {
- switch(listitem) {
- case 0: ComprarArma(playerid, 18, WEAPON_M4, P_M4, M_M4);
- case 1: ComprarArma(playerid, 19, WEAPON_AK47, P_AK47, M_AK47);
- }
- }
- else ShowPlayerDialog(playerid, D_ARMAS, DIALOG_STYLE_LIST, "Armas", "Armas brancas\nPistolas\nEscopetas\nSub-metralhadoras\nRifles de assalto\nRifles de alta-precisão\nArmas pesadas\nExplosivos", "Selecionar", "Fechar");
- }
- case D_RIFLES_PRECISAO: {
- if(response) {
- switch(listitem) {
- case 0: ComprarArma(playerid, 20, WEAPON_RIFLE, P_ESPINGARDA, M_ESPINGARDA);
- case 1: ComprarArma(playerid, 21, WEAPON_SNIPER, P_SNIPER, M_SNIPER);
- }
- }
- else ShowPlayerDialog(playerid, D_ARMAS, DIALOG_STYLE_LIST, "Armas", "Armas brancas\nPistolas\nEscopetas\nSub-metralhadoras\nRifles de assalto\nRifles de alta-precisão\nArmas pesadas\nExplosivos", "Selecionar", "Fechar");
- }
- case D_ARMAS_PESADAS: {
- if(response) {
- switch(listitem) {
- case 0: ComprarArma(playerid, 22, WEAPON_FLAMETHROWER, P_LANCA_CHAMAS, M_LANCA_CHAMAS);
- case 1: ComprarArma(playerid, 23, WEAPON_ROCKETLAUNCHER, P_RPG, M_RPG);
- }
- }
- else ShowPlayerDialog(playerid, D_ARMAS, DIALOG_STYLE_LIST, "Armas", "Armas brancas\nPistolas\nEscopetas\nSub-metralhadoras\nRifles de assalto\nRifles de alta-precisão\nArmas pesadas\nExplosivos", "Selecionar", "Fechar");
- }
- case D_EXPLOSIVOS: {
- if(response) {
- switch(listitem) {
- case 0: ComprarArma(playerid, 24, WEAPON_GRENADE, P_GRANADA, M_GRANADA);
- case 1: ComprarArma(playerid, 25, WEAPON_MOLTOV, P_COQUETEL_MOLOTOV, M_COQUETEL_MOLOTOV);
- case 2: ComprarArma(playerid, 26, WEAPON_SATCHEL, P_C4, M_C4);
- }
- }
- else ShowPlayerDialog(playerid, D_ARMAS, DIALOG_STYLE_LIST, "Armas", "Armas brancas\nPistolas\nEscopetas\nSub-metralhadoras\nRifles de assalto\nRifles de alta-precisão\nArmas pesadas\nExplosivos", "Selecionar", "Fechar");
- }
- case D_INVENTARIO: {
- if(response) EquiparArma(playerid, Jogador[playerid][ORDEM_INVENTARIO][listitem]);
- }
- }
- return 1;
- }
- //FUNÇOES
- ComprarArma(playerid, index, armaid, preco, municao) {
- if(GetPlayerMoney(playerid) < preco) return SendClientMessage(playerid, 0xFF0000AA, "Você não tem dinheiro suficiente!");
- if(Jogador[playerid][ARMA][index] != -1) {
- GivePlayerWeapon(playerid, Jogador[playerid][ARMA][index], Jogador[playerid][MUNICAO][index]+municao);
- SetPlayerAmmo(playerid, Jogador[playerid][ARMA][index], Jogador[playerid][MUNICAO][index]+municao);
- GivePlayerMoney(playerid, -preco);
- return 1;
- }
- Jogador[playerid][ARMA][index] = armaid;
- Jogador[playerid][MUNICAO][index] = municao;
- GivePlayerWeapon(playerid, armaid, municao);
- SetPlayerAmmo(playerid, armaid, municao);
- GivePlayerMoney(playerid, -preco);
- return 1;
- }
- EquiparArma(playerid, index) {
- if(Jogador[playerid][ARMA][index] == -1) return SendClientMessage(playerid, 0xFF0000AA, "Você não tem essa arma!");
- if(Jogador[playerid][MUNICAO][index] == 0) return SendClientMessage(playerid, 0xFF0000AA, "Você não tem munição para essa arma!");
- new arma, municao;
- for(new i; i <= 12; ++i) {
- GetPlayerWeaponData(playerid, i, arma, municao);
- if(Jogador[playerid][ARMA][index] == arma && municao != 0)
- return SendClientMessage(playerid, 0xFF0000AA, "Você já está com essa arma equipada!");
- }
- GivePlayerWeapon(playerid, Jogador[playerid][ARMA][index], Jogador[playerid][MUNICAO][index]);
- SetPlayerAmmo(playerid, Jogador[playerid][ARMA][index], Jogador[playerid][MUNICAO][index]);
- SendClientMessage(playerid, 0x00FF00AA, "Arma equipada!");
- return 1;
- }
- // COMANDOS
- CMD:armas(playerid) {
- ShowPlayerDialog(playerid, D_ARMAS, DIALOG_STYLE_LIST, "Armas", "Armas brancas\nPistolas\nEscopetas\nSub-metralhadoras\nRifles de assalto\nRifles de alta-precisão\nArmas pesadas\nExplosivos", "Selecionar", "Fechar");
- return 1;
- }
- CMD:iarmas(playerid) {
- new arma_atual[53], dialog_texto[744];
- for(new i, j; i < MAX_WEAPONS; ++i) {
- if(Jogador[playerid][ARMA][i] != -1) {
- if (Jogador[playerid][MUNICAO][i] == 0) format(arma_atual, 53, "{FF0000}%s\t\t{FF0000}%i\n", nArmas[i][0], Jogador[playerid][MUNICAO][i]);
- else format(arma_atual, 53, "%s\t\t%i\n", nArmas[i][0], Jogador[playerid][MUNICAO][i]);
- strcat(dialog_texto, arma_atual);
- Jogador[playerid][ORDEM_INVENTARIO][j] = i;
- j++;
- }
- }
- if (strlen(dialog_texto) != 0) {
- strins(dialog_texto, "Arma\t\tMunição\n", 0);
- ShowPlayerDialog(playerid, D_INVENTARIO, DIALOG_STYLE_TABLIST_HEADERS, "Inventário de armas", dialog_texto, "Equipar", "Fechar");
- }
- else ShowPlayerDialog(playerid, D_INVENTARIO, DIALOG_STYLE_MSGBOX, "Inventário de armas", "Você ainda não tem nenhuma arma.", "Fechar", "");
- return 1;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement