Apagar o Nick do arquivo de texto - MarginaL - 24/03/2023
Queria um comando que apagasse o nome de um player que está no arquivo de texto. Pois ele está na lista de nicks que possivelmente está com banimento.
Eu queria saber um cmd para pagar esse nick de lá.
Fulano
Ciclano
Betano
RE: Apagar o Nick do arquivo de texto - White_Blue - 24/03/2023
Use DOF2.
Exemplo:
Código PHP: #define Banidos "/Banidos/%s.txt"
CMD:removerban(playerid, const params[]) { new str[32]; if(sscanf(params, "s[32]", str)) return SendClientMessage(playerid, -1, "Use: /removerban [nick]"); if(strlen(str) > 32 || strlen(str) < 0) return SendClientMessage(playerid, -1, "O nick deve conter entre 0 e 32 caracteres."); RemoveBan(playerid, str); return 1; }
stock RemoveBan(playerid, const nick[]) { new string[128]; format(string, MAX_PLAYER_NAME, Banidos, nick); if(DOF2_FileExists(string)) { SendClientMessage(playerid, -1, "Ban inexistente"); return 1; } else { DOF2_RemoveFile(string); } return 1; }
RE: Apagar o Nick do arquivo de texto - pushline - 24/03/2023
(24/03/2023 12:43)White_Blue Escreveu: Use DOF2.
Exemplo:
Código PHP: #define Banidos "/Banidos/%s.txt"
CMD:removerban(playerid, const params[]) { new str[32]; if(sscanf(params, "s[32]", str)) return SendClientMessage(playerid, -1, "Use: /removerban [nick]"); if(strlen(str) > 32 || strlen(str) < 0) return SendClientMessage(playerid, -1, "O nick deve conter entre 0 e 32 caracteres."); RemoveBan(playerid, str); return 1; }
stock RemoveBan(playerid, const nick[]) { new string[128]; format(string, MAX_PLAYER_NAME, Banidos, nick); if(DOF2_FileExists(string)) { SendClientMessage(playerid, -1, "Ban inexistente"); return 1; } else { DOF2_RemoveFile(string); } return 1; }
Use str[MAX_PLAYER_NAME + 1] (1 = caracter nulo "\0".));
No sscanf use s[25];
no if ele fez um if redundante, o correto:
Código PHP: stock RemoveBan(playerid, const nick[]) { new string[128]; format(string, MAX_PLAYER_NAME + 1, Banidos, nick);
if(!DOF2_FileExists(string)) { SendClientMessage(playerid, -1, "Banimento inexistente."); return 1; }
DOF2_RemoveFile(string); SendClientMessage(playerid, -1, "Ban removido."); return 1; }
RE: Apagar o Nick do arquivo de texto - MarginaL - 25/03/2023
Mas não era bem apagar um arquivo, e sim apagar um Nick existente no txt ou ini tanto faz.
Esse comando aqui até ta pegando, porém ele só funciona pro ultimo Nick da lista e depois se for usar de novo ele não pega, só reiniciando o samp-server.
Código PHP: CMD:removernick(playerid, params[]) { if(PlayerInfo[playerid][pAdmin] < 6) return SendClientMessage(playerid, Vermelho, "| ERRO | Comando Inválido!"); if(sscanf(params, "s", Textos)) return SendClientMessage(playerid, Vermelho, "| ERRO | Digite: /Removernick [nick]");
format(LerContas, sizeof(LerContas), "Banidos.txt", Textos); DOF2::Unset("Banidos.txt", Textos); DOF2::SaveFile(); SendClientMessage(playerid, ocd, sprintf("| ADMIN | Você removeu o nick %s", Textos)) return 1; }
RE: Apagar o Nick do arquivo de texto - Klyn144 - 25/03/2023
Código PHP: // Comando para remover um jogador banido da lista de nicks CMD:unban(playerid, params[]) { // Verifica se o jogador tem permissão para usar o comando if(!IsPlayerAdmin(playerid)) { SendClientMessage(playerid, -1, "Você não tem permissão para usar este comando."); return 0; }
// Verifica se o comando foi usado corretamente if(!strlen(params)) { SendClientMessage(playerid, -1, "Use: /unban <nick>"); return 0; }
// Abre o arquivo de nicks banidos new file = fopen("nicks_banidos.txt", "r");
// Verifica se o arquivo foi aberto com sucesso if(file == INVALID_FILE) { SendClientMessage(playerid, -1, "Erro ao abrir o arquivo de nicks banidos."); return 0; }
// Lê o arquivo linha por linha e armazena os nicks em um array new bannedNicks[50][MAX_PLAYER_NAME]; new numBannedNicks = 0; new line[MAX_PLAYER_NAME + 1]; while(fgets(file, line, sizeof(line))) { strtok(line, "\n"); format(line, sizeof(line), "%s", line); format(bannedNicks[numBannedNicks], sizeof(bannedNicks[numBannedNicks]), "%s", line); numBannedNicks++; }
// Fecha o arquivo fclose(file);
// Verifica se o nick está na lista de nicks banidos new nick[MAX_PLAYER_NAME]; format(nick, sizeof(nick), "%s", params); new isBanned = false; for(new i = 0; i < numBannedNicks; i++) { if(!strcmp(bannedNicks[i], nick)) { isBanned = true; break; } }
// Se o nick não estiver na lista de nicks banidos, envia uma mensagem de erro if(!isBanned) { SendClientMessage(playerid, -1, "Este nick não está na lista de nicks banidos."); return 0; }
// Abre o arquivo novamente, desta vez para escrever file = fopen("nicks_banidos.txt", "w");
// Verifica se o arquivo foi aberto com sucesso if(file == INVALID_FILE) { SendClientMessage(playerid, -1, "Erro ao abrir o arquivo de nicks banidos."); return 0; }
// Escreve os nicks que não são o nick banido no arquivo for(new i = 0; i < numBannedNicks; i++) { if(strcmp(bannedNicks[i], nick)) { fprintf(file, "%s\n", bannedNicks[i]); } }
// Fecha o arquivo fclose(file);
// Envia uma mensagem de confirmação para o jogador SendClientMessage(playerid, -1, "O nick %s foi removido da lista de nicks banidos.", nick);
return 1; }
RE: Apagar o Nick do arquivo de texto - MarginaL - 25/03/2023
Código PHP: D:\Arquivos e Programas\A\Nova pasta\Server\gamemodes\GM.pwn(22145) : error 035: argument type mismatch (argument 2) D:\Arquivos e Programas\A\Nova pasta\Server\gamemodes\GM.pwn(22145) : warning 213: tag mismatch D:\Arquivos e Programas\A\Nova pasta\Server\gamemodes\GM.pwn(22146) : error 017: undefined symbol "INVALID_FILE" D:\Arquivos e Programas\A\Nova pasta\Server\gamemodes\GM.pwn(22150) : error 017: undefined symbol "fgets" D:\Arquivos e Programas\A\Nova pasta\Server\gamemodes\GM.pwn(22150) : warning 202: number of arguments does not match definition D:\Arquivos e Programas\A\Nova pasta\Server\gamemodes\GM.pwn(22151) : error 035: argument type mismatch (argument 2) D:\Arquivos e Programas\A\Nova pasta\Server\gamemodes\GM.pwn(22153) : error 001: expected token: "]", but found "-identifier-" D:\Arquivos e Programas\A\Nova pasta\Server\gamemodes\GM.pwn(22153) : warning 215: expression has no effect D:\Arquivos e Programas\A\Nova pasta\Server\gamemodes\GM.pwn(22153) : error 001: expected token: ";", but found "]" D:\Arquivos e Programas\A\Nova pasta\Server\gamemodes\GM.pwn(22153) : error 029: invalid expression, assumed zero D:\Arquivos e Programas\A\Nova pasta\Server\gamemodes\GM.pwn(22153) : fatal error 107: too many error messages on one line
Compilation aborted.Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase
8 Errors.
Vários erro men
RE: Apagar o Nick do arquivo de texto - MarginaL - 26/03/2023
Alguem pra me ajudar ai ?
RE: Apagar o Nick do arquivo de texto - pushline - 27/03/2023
A função "fgets" só existe em C / C++, não tem no Pawn por padrão, use fread().
https://www.open.mp/pt-BR/docs/scripting/functions/fread
|