1º // enum criada com a string chamada "infoJogador". Então toda vez que nos referimos à enum devemos usar o nome da enum que nese caso é chamada de "infoJogador". Essa string chamada "infoJogador" é uma espécie de ID da enum, especificamente a identificação da enum. Dentro dela colocamos todas as informações que acharmos necessário para o desenvolvimento do personagem.
2° //essa variável chamada "PlayerInfo" foi criada para as informações dentro da enum ser usada por todos os jogadores. Um detalhe muito importante está no final dessa variável. Onde é obrigatório o uso do nome da enum para ser aplicada essas informações da enum na variável "PlayerInfo". Sendo assim, automaticamente a enum "infoJogador" e váriável "PlayerInfo" estão inteiramente conectadas agora. Facilitando seu controle.
Código:
new PlayerInfo[MAX_PLAYERS][InfoJogador];
3º //Aqui estão alguns exemplos de manipulação dessas informações, de forma rápida. Sem a necessidade de criar muitas variáveis. Nesse exemplo é possível notar que os códigos usam a variável "PlayerInfo" e aplicam nela as informações da enum. É importante lembrar, que quando vamos mencionar algum item da enum em nossa variável devemos colocá-los dentro dos colchetes [] como nos exemplos abaixo.
Não existe maneira correta de programar. Cada programador usa sua criatividade como melhor entender. Porém, é obrigatório usar os códigos corretamente pra acertar na lógica do que está sendo programado.
Olá, estou com um problema com o pawnbots, preparei todos os arquivos e quando inicio o bot do servidor ele não conecta, como vocês podem ver abaixo diz 'error busy nick', funcionou para mim alguns meses atrás, mas agora não funciona mais
Trata-se de um novo anti-cheat server-side desenvolvido para OpenMP, cujo objetivo é ter segurança e controle absoluto sobre a data (info) do jogador. Atualmente está em constante desenvolvimento, tendo ainda algumas incoerências em certas situações, porém já possui dezenas de detecções e atualmente está sendo utilizado para testes em um servidor PvP tendo ótimo feedback por parte da gestão do projeto.
Configuração de detecção:
Por se tratar de um anti-cheat de codigo fonte fechado, possui um arquivo de configuração externo que pode ser recarregado a qualquer momento.
O arquivo de configuração possui atualmente pouco mais de 200 entradas de configuração, onde é possível parametrizar exatamente como deve ser feito a detecção de cada cheat que permita uma configuração externa.
Abaixo consta algumas das entradas de configuração para melhor entendimento:
Qualquer informação no SA:MP pode ser facilmente manipulada, o que bagunça toda uma economia e a gameplay dos demais.
Atualmente, com o uso deste anti-cheat, é possível resgatar informações corretas da data de jogadores que utilizam cheat para manipulá-las como vida, colete, armas, munição, objetos atacados etc, de forma que mesmo manipulando
as informações, não seja possível mantê-las durante o salvamento dos dados, criando assim uma camada extra de validação nas informações e garantindo a proteção dos dados de cada jogador contra qualquer tipo de alteração externa.
Controle de configuração:
Defina em que momento o anti-cheat deve iniciar para determinado jogador
Defina em que momento o anti-cheat deve parar para determinado jogador
Defina em que momento o anti-cheat deve pausar ou retomar a verificação de um cheat específico para determinado jogador
Altere e recarregue as configurações do anti-cheat a qualquer momento sem necessidade de reiniciar o servidor ou recarregar o filterscript
Compatibilidade de SO:
Todas as dependências do anti-cheat podem ser obtidas tanto para Linux quanto para Windows.
O anti-cheat é um filterscript, então pode ser facilmente implementado como qualquer outro script externo.
Compatibilidade de modo de jogo:
Por se tratar de um anti-cheat robusto e com dezenas de detecções, foi criado uma configuração externa para ajustar as detecções conforme o modo de jogo ou gosto.
Em um servidor roleplay, por exemplo, as detecções podem ser mais sensíveis, enquanto para um PvP é necessário tornar menos sensível detecções relacionadas à armas ou race menos sensível detecções para veículos.
Você configura completamente cada detecção como preferir.
Abordagem de detecção:
O servidor é totalmente independente para decidir o que fazer sobre a detecção.
Para isto, é fornecido uma biblioteca (evo_ac.inc) contendo todas as informações necessárias para aplicar as punições e configurações.
Diferente da maioria dos anti-cheats, este gera uma chamada individual na respectiva callback informando maiores detalhes sobre a detecção.
Com o controle de dano do Evo Anti-Cheat, mesmo usando cheat, a vida do jogador diminui e caso não diminua (através de bloqueios de RPC) não há problema, pois a vida e colete do jogador é trabalhada de forma unilateral, ou seja, a vida e colete do cliente (jogador) é só mais uma informação visual assim como o dinheiro. Então, por exemplo, se o jogador estiver com vida zerada no servidor, porém na tela dele a vida estiver cheia em decorrência do bloqueio de RPC, será considerado cheat e chamará as funções respectivas ao cheat.
Também é possível configurar o dano em diferentes situações:
Partes do corpo
- Para danos personalizados em 7 regiões do corpo
Alcance
- Bloqueia automaticamente disparos realizados fora do alcance definido
Bloqueio de dano em partes do corpo
- Para bloqueios de dano personalizados em 7 regiões do corpo
Permissão/bloqueio para dar/receber dano
- Para permitir e/ou bloquear dano dado ou recebido para jogadores
stock EAC_InitPlayerAC(playerid) // Inicia o anti-cheat para o jogador
stock EAC_StopPlayerAC(playerid) // Para o anti-cheat para o jogador
stock EAC_IsActivePlayerAC(playerid) // Verifica se o anti-cheat está ativo (iniciado) para o jogador
stock EAC_PausePlayerAC(playerid, bool:pause, cheatid = -1) // Pausa determinada proteção para o jogador
stock EAC_IsPausedPlayerAC(playerid, cheatid) // Retorna se determinada proteção está pausada para o jogador
stock EAC_GetCheatNameAC(cheatid) // Retorna o nome do cheat com base no index
stock EAC_ReloadSettings(const file[]) // Caso altere o arquivo de configuração, é possível recarregar a configuração em tempo real sem reiniciar ou recarregar o filterscript
stock EAC_Auth(const token[]) // Autentica o token do anti-cheat para habilitá-lo
Controle de dano:
Código:
stock EWD_SetPlayerWeaponRange(playerid, weaponid, Float:range) // Altera o alcance de determinada arma para o jogador
stock Float:EWD_GetPlayerWeaponRange(playerid, weaponid) // Retorna o alcance de determinada arma do jogador
stock EWD_SetPlayerWeaponDamage(playerid, weaponid, Float:amount) // Altera o dano de determinada arma para o jogador
stock Float:EWD_GetPlayerWeaponDamage(playerid, weaponid) // Retorna o dano de determinada arma do jogador
stock EWD_SetPlayerBodyHitDamage(playerid, weaponid, bodypart, Float:amount) // Altera o dano de determinada arma e região do corpo para o jogador
stock Float:EWD_GetPlayerBodyHitDamage(playerid, weaponid, bodypart) // Retorna o dano de determinada arma e região do corpo do jogador
stock EWD_BlockPlayerBodyHitDamage(playerid, weaponid, bodypart, Float:amount) // Altera o bloqueio de dano de determinada arma e região do corpo para o jogador
stock Float:EWD_GetPlayerBlockedBodyHitDamage(playerid, weaponid, bodypart) // Retorna o bloqueio de dano de determinada arma e região do corpo do jogador
stock EWD_BlockPlayerArmourHitDamage(playerid, weaponid, bodypart, Float:amount) // Altera o bloqueio de dano de determinada arma, exclusivamente caso utilize colete, para o jogador
stock Float:EWD_GetPlayerBlockedArmourHitDamage(playerid, weaponid, bodypart) // Retorna o bloqueio de dano de determinada arma, exclusivamente caso utilize colete, do jogador
stock EWD_TogglePlayerGiveBulletDamage(playerid, bool:toggle) // Habilita/Desabilita o dano enviado do jogador
stock EWD_IsPlayerGivingBulletDamage(playerid) // Retorna se o dano enviado do jogador está habilitado ou não
stock EWD_TogglePlayerTakeBulletDamage(playerid, bool:toggle) // Habilita/Desabilita o dano recebido do jogador
stock EWD_IsPlayerTakingBulletDamage(playerid) // Retorna se o dano recebido do jogador está habilitado ou não
stock EWD_EnablePlayerFriendlyFire(playerid, bool:enable) // Habilita/Desabilita o dano enviado a jogadores do mesmo time
Funções adicionais:
Código:
stock EAC_SetPlayerGodMode(playerid, bool:active) // Ativa/Desativa modo Deus do jogador
stock EAC_IsPlayerInGodMode(playerid) // Retorna se o jogador está ou não em modo Deus
stock EAC_SetPlayerMoney(playerid, money) // Define o dinheiro do jogador
stock EAC_UpdatePlayerMoney(playerid) // Apenas atualiza na tela o dinheiro do jogador com base na memória do anti-cheat
stock EAC_GetPlayerFreeAttachedObjectSlot(playerid) // Retorna o primeiro slot livre para objetos atacados no corpo do jogador
stock EAC_GetPlayerAttachedObjectModelIndex(playerid, modelid) // Retorna o index do objeto atacado no corpo do jogador com base no modelo do objeto
stock EAC_GetPlayerAttachedObjectModel(playerid, index) // Retorna o modelo do objeto atacado no corpo do jogador com base no index e memória do anti-cheat (e não na data do cliente)
stock EAC_ApplyPlayerAttachedObjects(playerid) // Aplica os objetos atacados no corpo do jogador com base na memória do anti-cheat
stock EAC_GiveAllPlayerWeapons(playerid, delay = 0) // Reseta as armas do jogador e fornece as que estão na memória do anti-cheat, podendo aplicar com delay
stock EAC_GetPlayerWeaponData(playerid, slot, &weapons, &ammo) // Retorna as armas do jogador, com base na memória do anti-cheat (e não na data do cliente)
stock EAC_SetPlayerWeapon(playerid, weaponid, ammo) // Define uma arma especifica para o jogador
stock EAC_IsValidPlayerWeapon(playerid, weaponid) // Retorna se determinada arma do jogador foi concebida com base no servidor (e não data do cliente)
Manutenção do projeto:
Apesar de recente, é um projeto sólido, estável e extremamente otimizado.
Com foco sempre em melhorias e novas implementações
Servidor em que está sendo testado:
Caso tenham interesse em conferir o anti-cheat e sua efetividade, basta acessar o servidor abaixo:
Inserido por: TeaganQasiv - 25/04/2025 22:54 - Fórum: Includes
- Sem Respostas
Cria uma progress bar de uma maneira fácil, você pode adicionar titulo e mensagem, essa foi minha primeira include feita, aceito críticas levarei como uma crítica construtiva, também se poderem me dar dicas agradeço. Vou melhorar a textdraw para um mais bonito!
// Define um comando chamado "carro" que pode ser usado pelo jogador no chat (ex: /carro)
CMD:carro(playerid, params[])
{ // Declara quatro variáveis do tipo float para armazenar a posição e a rotação do jogador
new Float:x, Float:y, Float:z, Float:a;
// Obtém a posição atual do jogador (coordenadas X, Y, Z)
GetPlayerPos(playerid, x, y, z);
// Obtém o ângulo de rotação que o jogador está olhando (em graus)
GetPlayerFacingAngle(playerid, a);
// Cria um veículo do modelo 411 (Turismo) a 3 metros na frente do jogador
// Usa a posição x + 3.0 para spawnar o carro ligeiramente à frente do jogador
// "a" é a rotação do veículo, e 1, 1 são as cores (primária e secundária)
// -1 significa que o veículo nunca será destruído automaticamente
// Cria o veículo Turismo (ID 411) um pouco à frente do jogador
new NomeDaVariavel = CreateVehicle(411, x + 3.0, y, z, a, 1, 1, -1); // NomeDaVariavel é o ID personalizado criado pra se referir ao carro
// Coloca o jogador no banco do motorista do veículo criado, ou seja o parâmetro 0 zero.
PutPlayerInVehicle(playerid, NomeDaVariavel, 0);
// Retorna 1 para indicar que o comando foi executado com sucesso
return 1;
}
parâmetros do carro:
Código:
CreateVehicle(modelid, x, y, z, rotation, color1, color2, respawn_delay);
411
– ID do modelo do veículo
Neste caso,
411
é o ID do carro Turismo.
Você pode trocar esse número por outro ID para criar diferentes veículos (ex:
522
é NRG-500).
x + 3.0
– Posição X onde o veículo será criado
Aqui o veículo é criado 3 unidades à frente da posição atual do jogador no eixo X.
Isso evita que o veículo apareça colado no jogador.
y
– Posição Y
A coordenada Y do veículo será a mesma do jogador.
z
– Posição Z (altura)
Mesma altura em que o jogador está no mundo.
a
– Rotação do veículo
Define a direção que o veículo estará voltado ao ser criado.
Usa o mesmo ângulo que o jogador está olhando (
GetPlayerFacingAngle
).
1
– Cor primária do veículo
Define a primeira cor do veículo.
1
representa uma cor do conjunto padrão do GTA:SA.
1
– Cor secundária do veículo
Define a segunda cor. Também é
1
, então o carro vai ter cores iguais.
-1
– Tempo de respawn automático em segundos
-1
significa que o veículo nunca será respawnado automaticamente.
Se colocasse
60
, por exemplo, ele seria destruído e recriado 60 segundos depois de ser abandonado.
Bom dia,
Recentemente, meu servidor vem sofrendo ataques de um grupo que está usando um mod de crash para SA:MP Mobile, especificamente voltado para o Jetmank (aquele client laranjinha que a maioria dos jogadores de mobile utiliza).
Esse mod é um script Lua , o que impossibilita que o servidor identifique ou bloqueie a ação pelos métodos tradicionais.
Pelo que pude observar, em servidores grandes como Horizonte RP e Play Shox, o jogador que tenta usar esse mod é automaticamente kickado, o que indica que existe alguma forma de detecção e bloqueio eficaz contra esse MOD.
Não irei enviar o arquivo descompilado nem o mod aqui, pois, caso caia em mãos erradas, pode causar problemas em outros servidores.
Estou disposto a enviar por privado, para quem realmente puder ajudar na proteção contra esse mod.
parece que o perfil do zeex não está mais disponivel e meio que estou precisando demais do plugin profiler dele kk.. se alguém tiver ai, por favor me mande
Eu e Meus Amigos Estamos Construindo um servidor RPG
Estamos Trabalhando Juntos no Servidor Para Fazê-lo ser um bom Servidor
A Ideia não é ser o Melhor Servidor com Sistemas Únicos e Mapas Incríveis, é só ter um Servidor que a Galera Possa Entrar, Jogar, Curtir se Divertir e Descontrair, mas Claro, se o Servidor Crecer Mais do que Imaginamos, Levaremos as Coisas bem Mais a Sério
Já Temos Tudo que Precisamos Para Lançar o Sevidor, e em Breve, Vamos Lançar uma Beta Para Todos Poderem Jogar
Logo Abaixo vou Deixar umas Prints do Servidor Para
Vocês Verem Como ele Está Ficando :D
# TELA DE LOGIN // by: Tvzinho
# SPAWN VEICULO NOVATO // Tvzinho & Hazard
# MENU NASCIMENTO // By: Hazard
# RODAPÉ // By: Tvzinho
# PROTEÇÃO DE CONTA // By: Tvzinho
# ROLETA PREMIADA // By: Tvzinho
# INVENTARIO // By: Tvzinho
Em Brave Vamos Soltar Mais Spoiler, Beleza Galera, Entrem no Discord pra Ficarem Atualizados :)