Você já imaginou viver uma vida virtual repleta de emoções, desafios e oportunidades? No nosso servidor de GTA SA-MP Roleplay, a aventura da vida real está ao seu alcance!
Por que escolher o nosso servidor VSRP?
Experiência Realista: Entre em um mundo virtual onde você pode ser quem quiser. Desde um policial corajoso até um empresário astuto, as possibilidades são infinitas e a escolha é sua.
Interatividade Profunda: Interaja com outros jogadores em uma comunidade ativa e dinâmica. Trabalhe em equipe, forme alianças e mergulhe em histórias cativantes que você mesmo ajuda a criar.
Economia Dinâmica: Ganhe dinheiro, compre propriedades, invista em negócios e construa seu império no mundo virtual. Gerencie suas finanças com inteligência e veja seu sucesso crescer.
Eventos Exclusivos: Participe de eventos especiais, missões emocionantes e desafios únicos que testarão suas habilidades de interpretação e estratégia. Ganhe prêmios e reconhecimento na comunidade.
Oferta Especial!Para novos jogadores, estamos oferecendo bônus exclusivos para ajudá-lo a começar sua jornada no mundo do Roleplay. Junte-se a nós agora e descubra o que é viver uma vida virtual cheia de emoção e possibilidades.
Conecte-se ao nosso servidor de GTA SA-MP Roleplay hoje mesmo e comece a sua aventura!
RECENTEMENTE EU COLOQUEI OBJECTS NO MEU VEICULO E FIZ SEGUINTE SISTEMA: CRIEI UMA PASTA COM NOME "VEHICLES" DENTRO DELA UM ARQUIVO "VEHICLE.INC", COM O SEGUINTE CODIGO:
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 e agora com suporte para SA:MP, 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 mais de 50 de detecções e atualmente está sendo utilizado firmemente em servidores tendo ótimo feedback por parte da gestão dos projetos que o utilizam.
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
Validador de morte:
Com o Evo Anti-Cheat, é possível mitigar falsas mortes enviadas ao servidor. Fake kill/death agora podem ser facilmente ignorados.
Mesmo com esta proteção ativa, é importante manter a detecção de anti fake kill/death por flood para combater versões mais avançadas deste cheat.
Esta proteção não possui callback, pois ao identificar uma morte falsa/inválida, apenas a bloqueia.
// Autentica o Token para ativar a proteção stock EVO_Auth(const token[])
// Inicializa a proteção para o jogador (iniciado automaticamente ao conectar) stock EVO_InitPlayerAC(playerid)
// Para a proteção para o jogador stock EVO_StopPlayerAC(playerid)
// Retorna se o EVO está ativo para o jogador stock EVO_IsActivePlayerAC(playerid)
// Pausa um cheat específico ou todos para determinado jogador stock EVO_PausePlayerAC(playerid, bool:pause, cheatid = -1)
// Retorna se um cheat específico está pausado para o jogador stock EVO_IsPausedPlayerAC(playerid, cheatid)
// Retorna o nome do cheat stock EVO_GetCheatNameAC(cheatid)
// Recarrega o arquivo de configuração do anti-cheat stock EVO_ReloadSettings(const file[])
Controle de dano:
Código PHP:
// Define o alcance de determinada arma para o jogador stock EWD_SetPlayerWeaponRange(playerid, weaponid, Float:range)
// Retorna o alcance de determinada arma do jogador stock Float:EWD_GetPlayerWeaponRange(playerid, weaponid)
// Define o dano de determinada arma para o jogador stock EWD_SetPlayerWeaponDmg(playerid, weaponid, Float:amount)
// Retorna o dano de determinada arma do jogador stock Float:EWD_GetPlayerWeaponDmg(playerid, weaponid)
// Define o dano de uma arma em uma região específica do corpo do jogador stock EWD_SetPlayerBodyDmg(playerid, weaponid, bodypart, Float:amount)
// Retorna o dano de uma arma em uma região específica do corpo do jogador stock Float:EWD_GetPlayerBodyDmg(playerid, weaponid, bodypart)
// Bloqueia uma quantidade de dano recebido em uma parte do corpo do jogador stock EWD_BlockPlayerBodyDmg(playerid, weaponid, bodypart, Float:amount)
// Retorna a quantidade bloqueada de dano recebido em uma parte do corpo do jogador stock Float:EWD_GetPlayerBlockedBodyDmg(playerid, weaponid, bodypart)
// Bloqueia uma quantidade de dano recebido em uma parte do corpo do jogador (APENAS QUANDO IDENTIFICADO COLETE) stock EWD_BlockPlayerArmourDmg(playerid, weaponid, bodypart, Float:amount)
// Retorna a quantidade bloqueada de dano recebido em uma parte do corpo do jogador (APENAS QUANDO IDENTIFICADO COLETE) stock Float:EWD_GetPlayerBlockedArmourDmg(playerid, weaponid, bodypart)
// Alterna se o jogador pode DAR dano a outro jogador (Habilitado automaticamente ao conectar) stock EWD_TogglePlayerGiveBulletDmg(playerid, bool:toggle)
// Retorna se o jogador pode DAR dano a outro jogador stock EWD_IsPlayerGivingBulletDmg(playerid)
// Alterna se o jogador pode RECEBER dano de outro jogador (Habilitado automaticamente ao conectar) stock EWD_TogglePlayerTakeBulletDmg(playerid, bool:toggle)
// Retorna se o jogador pode RECEBER dano de outro jogador stock EWD_IsPlayerTakingBulletDmg(playerid)
// Alterna o fogo amigo para o jogador stock EWD_EnablePlayerFriendlyFire(playerid, bool:enable)
Funções adicionais/extendidas:
Código PHP:
// Expulsão com delay e com possibilidade de bloquear um IP temporariamente (ambos parâmetros em ms) stock EVO_Kick(playerid, delay = 0, block_ip_time = 0)
// Define a vida do jogador, podendo definir quem o matou e com qual arma (caso a vida seja definida 0) stock EWD_SetPlayerHealth(playerid, Float:health, killerid = INVALID_PLAYER_ID, WEAPON:reason = WEAPON_UNKNOWN)
// Retorna diretamente a quantidade de vida do jogador stock Float:EWD_GetPlayerHealth(playerid)
// Retorna diretamente a quantidade de colete do jogador stock Float:EWD_GetPlayerArmour(playerid)
// Retorna se o jogador está sincronizado stock EVO_IsPlayerSynced(playerid)
// Personaliza o delay de disparo de uma arma (disponível apenas para ID: 24, 25) - Padrão: 450ms stock EVO_SetPlayerCBugDelay(playerid, weaponid, delay)
// Retorna a velocidade 2D do jogador stock Float:EVO_GetPlayerSpeed2D(playerid)
// Retorna a velocidade 3D do jogador stock Float:EVO_GetPlayerSpeed3D(playerid)
// Prevenção (não detecção) de dialog spoof // Neste caso a detecção ocorre sempre, mas HABILITANDO esta funcionalidade a caixa de diálogo não terá resposta dos botões stock EVO_PreventPlayerDialogSpoof(playerid, bool:enable)
// Alterna o modo Deus (anti-cheat) stock EVO_SetPlayerGodMode(playerid, bool:active)
// Retorna se o jogador está em modo Deus (anti-cheat) stock EVO_IsPlayerInGodMode(playerid)
// Define o dinheiro do jogador stock EVO_SetPlayerMoney(playerid, money)
// Atualiza o HUD de dinheiro com base na memória do anti-cheat stock EVO_UpdatePlayerMoney(playerid)
// Retorna o primeiro slot livre de objetos atacados no corpo do jogador com base na memória do anti-cheat stock EVO_GetFreeAttachedObjectSlot(playerid)
// Retorna o index do objeto atacado com base no modelo e memória do anti-cheat (-1 se o modelo não for encontrado) stock EVO_GetAttachedObjectModelIndex(playerid, modelid)
// Retorna o modelo do objeto atacado com base no index com base na memória do anti-cheat stock EVO_GetAttachedObjectModel(playerid, index)
// Ataca todos os objetos no corpo do jogador com base na memória do anti-cheat stock EVO_ApplyPlayerAttachedObjects(playerid)
// Retorna diretamente a vida do veículo com base na memória do anti-cheat stock Float:EVO_GetVehicleHealth(vehicleid)
// Remove uma arma específica da mão do jogador stock EVO_RemovePlayerWeapon(playerid, weaponid)
// Concede todas as armas do jogador com base na memória do anti-cheat, podendo aplicar delay stock EVO_GiveAllPlayerWeapons(playerid, delay = 0)
// Define uma arma específica para o jogador stock EVO_SetPlayerWeapon(playerid, weaponid, ammo)
// Retorna se a arma do jogador é válida com base na memória do anti-cheat stock EVO_IsValidPlayerWeapon(playerid, weaponid)
EVO grátis:
A versão free do EVO, ou seja, sem Token, garante uma proteção superficial contra crashers (básicos) e cheats de disparo como manipulação de dano e manipulação de distância de disparo.
Apesar das proteções de dano, não é possível personalizar a distância ou dano recebido com o EVO Weapon Config.
Nesta versão não se deve utilizar funções 'EVO_Get...', pois o valor retornado não será necessariamente da memória do anti-cheat, uma vez que ele não está 100% operante.
Instalação:
Tudo o que você precisa está no arquivo baixado (acesse o canal do Discord), onde terá a pasta da versão SA:MP e Open.MP.
Lembrando que a versão de SA:MP e Open.MP são distintas, portanto, não coloque a compilação errada do EVO no servidor para evitar problemas.
No download vocês terão tudo devidamente configurado e a partir do script exemplo, poderão trabalhar com o anti-cheat sem dificuldades.
Manutenção do projeto:
Projeto lançado oficialmente em sua primeira versão no início de Abril e sendo atualizado rigorosamente.
Servidor(es) que já estão utilizando:
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!