Bem eu estava querendo criar um sistema de gang zones similar ao GTA single player, porem e muito demorado ficar criando dentro do jogo, e recriar os territórios praticamente iguais do GTA single player são praticamente impossíveis olhando no minimapa já que o ícone onde mostra o player parece que não e centralizado, então queria saber se existe alguma forma de criar vários territórios de alguma forma que seja rápida, ou pegar as cordenadas dos territórios assim como da para pegar as cordenadas dos pick-ups e converter para o samp
Galera, estou desde ontem monitorando meu servidor e otimizando várias coisas, porém, eu uso uma include: EVF, e tem uma callback OnVehicleTimeUpdate que está sendo chamada muitas vezes e lotando o server.log.
Código:
[08:46:38] [debug] #0 00034e28 in public OnVehicleTimeUpdate () at C:\Users\Administrator\Downloads\GM New Generation RP 1.0\pawno\include\EVF.inc:2480
[08:46:38] [debug] Long callback execution detected (hang or performance issue)
[08:46:38] [debug] AMX backtrace:
[08:46:38] [debug] #0 00034ecc in public OnVehicleTimeUpdate () at C:\Users\Administrator\Downloads\GM New Generation RP 1.0\pawno\include\EVF.inc:2482
[08:46:39] [debug] Long callback execution detected (hang or performance issue)
[08:46:39] [debug] AMX backtrace:
[08:46:39] [debug] #0 00035434 in public OnVehicleTimeUpdate () at C:\Users\Administrator\Downloads\GM New Generation RP 1.0\pawno\include\EVF.inc:2501
[08:46:40] [debug] Long callback execution detected (hang or performance issue)
[08:46:40] [debug] AMX backtrace:
[08:46:40] [debug] #0 00034d54 in public OnVehicleTimeUpdate () at C:\Users\Administrator\Downloads\GM New Generation RP 1.0\pawno\include\EVF.inc:2478
[08:46:41] [debug] Long callback execution detected (hang or performance issue)
[08:46:41] [debug] AMX backtrace:
[08:46:41] [debug] #0 00034df0 in public OnVehicleTimeUpdate () at C:\Users\Administrator\Downloads\GM New Generation RP 1.0\pawno\include\EVF.inc:2480
[08:46:41] [debug] Long callback execution detected (hang or performance issue)
[08:46:41] [debug] AMX backtrace:
[08:46:41] [debug] #0 00034e74 in public OnVehicleTimeUpdate () at C:\Users\Administrator\Downloads\GM New Generation RP 1.0\pawno\include\EVF.inc:2481
[08:46:42] [debug] Long callback execution detected (hang or performance issue)
[08:46:42] [debug] AMX backtrace:
[08:46:42] [debug] #0 00034ea8 in public OnVehicleTimeUpdate () at C:\Users\Administrator\Downloads\GM New Generation RP 1.0\pawno\include\EVF.inc:2482
[08:46:43] [debug] Long callback execution detected (hang or performance issue)
[08:46:43] [debug] AMX backtrace:
[08:46:43] [debug] #0 0003542c in public OnVehicleTimeUpdate () at C:\Users\Administrator\Downloads\GM New Generation RP 1.0\pawno\include\EVF.inc:2500
[08:46:44] [debug] Long callback execution detected (hang or performance issue)
[08:46:44] [debug] AMX backtrace:
[08:46:44] [debug] #0 00034da0 in public OnVehicleTimeUpdate () at C:\Users\Administrator\Downloads\GM New Generation RP 1.0\pawno\include\EVF.inc:2479
[08:46:45] [debug] Long callback execution detected (hang or performance issue)
[08:46:45] [debug] AMX backtrace:
[08:46:45] [debug] #0 00034ebc in public OnVehicleTimeUpdate () at C:\Users\Administrator\Downloads\GM New Generation RP 1.0\pawno\include\EVF.inc:2482
[08:46:46] [debug] Long callback execution detected (hang or performance issue)
[08:46:46] [debug] AMX backtrace:
[08:46:46] [debug] #0 00035b30 in public OnVehicleTimeUpdate () at C:\Users\Administrator\Downloads\GM New Generation RP 1.0\pawno\include\EVF.inc:2550
[08:46:47] [debug] Long callback execution detected (hang or performance issue)
[08:46:47] [debug] AMX backtrace:
[08:46:47] [debug] #0 00034d84 in public OnVehicleTimeUpdate () at C:\Users\Administrator\Downloads\GM New Generation RP 1.0\pawno\include\EVF.inc:2478
[08:46:47] [debug] Long callback execution detected (hang or performance issue)
[08:46:47] [debug] AMX backtrace:
[08:46:47] [debug] #0 00034d28 in public OnVehicleTimeUpdate () at C:\Users\Administrator\Downloads\GM New Generation RP 1.0\pawno\include\EVF.inc:2478
[08:46:48] [debug] Long callback execution detected (hang or performance issue)
[08:46:48] [debug] AMX backtrace:
[08:46:48] [debug] #0 00034e5c in public OnVehicleTimeUpdate () at C:\Users\Administrator\Downloads\GM New Generation RP 1.0\pawno\include\EVF.inc:2481
[08:46:49] [debug] Long callback execution detected (hang or performance issue)
[08:46:49] [debug] AMX backtrace:
[08:46:49] [debug] #0 00034e48 in public OnVehicleTimeUpdate () at C:\Users\Administrator\Downloads\GM New Generation RP 1.0\pawno\include\EVF.inc:2480
[08:46:50] [debug] Long callback execution detected (hang or performance issue)
[08:46:50] [debug] AMX backtrace:
[08:46:50] [debug] #0 000353ec in public OnVehicleTimeUpdate () at C:\Users\Administrator\Downloads\GM New Generation RP 1.0\pawno\include\EVF.inc:2500
[08:46:51] [debug] Long callback execution detected (hang or performance issue)
[08:46:51] [debug] AMX backtrace:
[08:46:51] [debug] #0 00035b18 in public OnVehicleTimeUpdate () at C:\Users\Administrator\Downloads\GM New Generation RP 1.0\pawno\include\EVF.inc:2550
[08:46:51] [debug] Long callback execution detected (hang or performance issue)
[08:46:51] [debug] AMX backtrace:
[08:46:51] [debug] #0 00034dc0 in public OnVehicleTimeUpdate () at C:\Users\Administrator\Downloads\GM New Generation RP 1.0\pawno\include\EVF.inc:2479
galera estou com um problema no forward e public, tipo quero que cada 40 40 minutos o preço de algum produto muda, mas não para um player, para todos da mesma profissão mas está dando errado!
Gente, o meu servidor está estranho, quando começa entrar jogadores ele simplesmente começa a dar rts, teria algum plugin que eu poderia usar para saber o que está causando isso?
ola amigos gostaria de saber como posso criar algo para aparecer os nomes dos locais onde se passa por exemplo se eu estou em los santos aparecera uma gametxtforplayer dizendo onde estou , nao sei como cria isso ,pelo mapa todo ppois sei que tem os nomes de cada ocal do mapa no samp so nao sei como faco isso , ja testei alma include a_zone mas nao funciona pois foi removido do samp essa funcao
Galera, to usando a versão 3.0 do sampvoice, porém ele depois de alguns gmx ao apertar a tecla para falar, o servidor crasha
SERVERLOG
Código:
[19:41:49] [debug] Server crashed due to an unknown error
[19:41:49] [debug] Native backtrace:
[19:41:49] [debug] #0 00401c84 in ?? () in samp-server.exe
[19:41:49] [debug] #1 73dc1ec1 in ?? () in plugins\sampvoice.DLL
[19:41:49] [debug] #2 00469a66 in ?? () in samp-server.exe
[19:41:49] [debug] #3 0048d4db in ?? () in samp-server.exe
[19:41:49] [debug] #4 0049b4a1 in ?? () in samp-server.exe
[19:41:49] [debug] #5 0049b4b1 in ?? () in samp-server.exe
[19:41:49] [debug] Registers:
Inserido por: BitSain - 06/05/2024 14:55 - Fórum: Includes
- Sem Respostas
Include ShotDetect
Essa é uma include que tem de objetivo detectar se o jogador está ou não atirando com uma arma pois o SAMP (San Andreas Multiplayer) não tem uma função nativa que faz isso.
Obs.: sofrerá alterações.
Código PHP:
#include <ShotDetect>
public OnPlayerUpdate(playerid){ if(IsPlayerShooting(playerid)) //Se o valor de retorno for verdadeiro, o jogador está atirando { SendClientMessage(playerid, -1, "Você está Atirando"); } else if(!IsPlayerShooting(playerid)) //Se o valor de retorno for falso, o jogador não está atirando (pode ser somente else) { SendClientMessage(playerid, -1, "Você não esta Atirando"); } return true; }
Versão: v1.0 Última atualização: 02/02/2024 Link do Projeto: SAMP-ShotDetect
OBS.: Qualquer problema, crie uma issue no repositório da include.
Guia elaborado por: BitSain Última atualização: 13/10/2024, às 22:34 Créditos ao criador ao final do guia.
INÍCIO DO GUIA
Neste guia, explicarei o que é o SAMPVOICE e como instalá-lo corretamente em seu servidor de GTA SAMP, evitando quaisquer problemas. Cabe destacar que as informações que estou fornecendo são provenientes do documento oficial do SAMPVOICE (sampvoice.chm -> arquivo HTML compilado). Para acessar todas as informações relevantes, abra o documento .chm do SAMPVOICE (observação: o documento está em Russo, sendo necessária a tradução).
Observação: Este "guia" não está finalizado; irei complementá-lo gradualmente, pois as informações são extensas e muitas alterações, adições e remoções foram feitas no plugin.
• O que é SAMPVOICE?
SAMPVOICE é um kit de desenvolvimento de software (SDK) para a implementação de sistemas de comunicação de voz em servidores SA-MP 0.3.7. Não se trata apenas de um chat de voz, mas sim de uma ferramenta para criá-lo.
• Funcionalidades do SAMPVOICE
- Verifica a versão do plugin do jogador.
- Verifica se um jogador possui microfone.
- Ativa/desativa a capacidade do jogador de ouvir outros jogadores.
- Ativa/desativa a capacidade do jogador de ser ouvido por outros jogadores.
- Define chaves de ativação de canal para o jogador.
- Inicia/parar a reprodução do canal com um comando do servidor.
- Cria streams globais (som 2D).
- Cria streams locais (áudio 3D).
- Vincula threads locais a objetos do jogo.
- Define vários parâmetros de fluxo (panorâmica, distância de audibilidade, posição, etc.).
- Cria efeitos sonoros (walkie-talkie, eco, etc.).
• Como funciona o SAMPVOICE?
O plugin consiste em três módulos: cliente, servidor de controle e servidor de voz. Cliente - este é um jogador com o plugin, consumindo e produzindo tráfego de áudio. Servidor de controle - este é um servidor que recebe comandos do mod do jogo e os transmite ao servidor de voz (via serviço de comando) e aos clientes relevantes. Servidor de voz - este é um servidor que distribui o tráfego de áudio recebido de acordo com as instruções fornecidas pelo servidor de controle (enviando dados de um jogador para um stream específico, etc.).
[!] -> As informações a seguir podem ser consideradas como a funcionalidade "por trás das cortinas"; Configuração entre duas máquinas para aliviar o servidor SAMP.<- [!]
O servidor de voz foi implementado para aliviar a carga no servidor SAMP, que já possui bastante trabalho. Antes de considerar a configuração a seguir, vale ressaltar que, por padrão, as configurações do gerenciador e dos servidores de voz são configuradas para serem executadas na mesma máquina. Portanto, se o gerenciador e os servidores de voz estiverem rodando na mesma máquina, você não precisa criar uma configuração separada; basta pular essa explicação e se dirigir ao capítulo "Inserindo o SAMPVOICE no seu código".
Os endereços (uma combinação das opções '_host' e '_port') são divididos em dois tipos: interno e externo.
Endereço interno - é o endereço dentro da máquina; para o valor '_host', estão disponíveis as interfaces de rede da máquina (valores de exemplo: 0.0.0.0 (funciona em todas as interfaces disponíveis), 127.0.0.1 (também conhecido como localhost), 192.168.0.2 (pode ter um endereço diferente) (interface direcionada para sua rede local), 234.13.24.1 (você pode ter um endereço diferente) (interface direcionada para a Internet global)). O valor '_port' varia de 0 a 65535 (aqueles que não estão ocupados). Um valor 0 significa selecionar uma porta dinâmica aleatória (normalmente entre 49152 e 65535).
Endereço externo - é o endereço a partir do qual a máquina está acessível a um cliente que esteja prestes a contatá-la. Este endereço varia de acordo com o cliente. Se o cliente estiver dentro da rede local, você estará disponível em 192.168.0.2 (este é apenas um exemplo), e se estiver acessando a rede global, então você estará disponível no seu endereço IP global 241.34.24.1 (também condicional, seu endereço de Internet corresponde ao endereço do roteador final do seu provedor de Internet, que pode ser encontrado através de serviços como 2ip).
Agora que você conhece a teoria, vamos dar uma olhada nas opções de configuração do servidor de controle e do servidor de voz.
Citar:Servidor de controle
[Endereço interno] control_host - o host ao qual o serviço de controle está vinculado antes de se conectar ao serviço de comando.
[Endereço interno] control_port - porta à qual o serviço de controle está vinculado antes de se conectar ao serviço de comando.
[Endereço externo] command_host - o host do serviço de comando sob o qual está disponível para o serviço de controle.
[Endereço externo] command_port - porta do serviço de comando sob a qual é acessível ao serviço de controle.
[Endereço externo] voice_host - o host do serviço de voz sob o qual está disponível para os clientes (jogadores).
[Endereço externo] voice_port - porta do serviço de voz na qual está disponível para os clientes (jogadores).
Servidor de voz
[Endereço externo] control_host - host do serviço de controle sob o qual é acessível ao serviço de comando.
[Endereço externo] control_port - porta do serviço de controle sob a qual é acessível ao serviço de comando.
[Endereço interno] command_host - o host ao qual o serviço de comando está vinculado.
[Endereço interno] command_port - a porta à qual o serviço de comando está vinculado.
[Endereço interno] voice_host - o host ao qual o serviço de voz está vinculado.
[Endereço interno] voice_port - a porta à qual o serviço de voz está vinculado.
Vamos considerar o caso em que você possui várias máquinas. Digamos que você tenha 2 máquinas acessíveis pela Internet: A (234.13.24.1) e B (234.13.24.2). Você deseja executar um servidor SAMP na primeira máquina com o plugin SAMPVOICE (que atuará como um servidor de controle). Na segunda máquina, inicie o servidor de voz para aliviar o servidor SAMP. Então, as configurações do servidor devem ficar assim:
Citar:Servidor de controle
control_host = 0.0.0.0 (ligar a todas as interfaces de rede).
control_port = 2020.
command_host = 234.13.24.2 (especifique o endereço IP global do serviço de comando).
command_port = 2020.
voice_host = 234.13.24.2 (especifique o endereço IP global do serviço de voz para que os jogadores possam enviar pacotes para ele).
voice_port = 2020.
Servidor de voz
control_host = 234.13.24.1 (especifique o endereço IP global do serviço de controle).
control_port = 2020.
command_host = 0.0.0.0 (ligamos a todas as interfaces de rede, pois este é um serviço público).
command_port = 2020.
voice_host = 0.0.0.0 (ligamos a todas as interfaces de rede, pois este é um serviço público).
voice_port = 2020.
Agora vejamos outro caso em que você tem várias máquinas e uma rede local. Digamos que você tenha 2 máquinas acessíveis pela Internet: A (234.13.24.1) e B (234.13.24.2). Neste caso, A e B estão conectados por cabo a uma rede local, onde A (192.168.0.1) e B (192.168.0.2). Qual é a vantagem desta abordagem? A comunicação entre os servidores de controle e de voz é realizada através de um canal físico fechado, ou seja, ninguém poderá se conectar ao servidor de voz, exceto o único participante de uma rede local fechada - um servidor de controle. Mas isso é um exagero na maioria dos casos.
Você deseja executar um servidor SAMP com o plugin SAMPVOICE na primeira máquina (que atuará como servidor de gerenciamento). E na segunda máquina, inicie um servidor de voz para descarregar o servidor SAMP. Então, as configurações do servidor devem ficar assim:
Citar:Servidor de controle
control_host = 192.168.0.1 (ligamos à interface de rede de uma rede local fechada).
control_port = 2020.
command_host = 192.168.0.2 (especifique o endereço do serviço de comando dentro de uma rede local fechada).
command_port = 2020.
voice_host = 234.13.24.2 (especifique o endereço IP global do serviço de voz para que os jogadores possam enviar pacotes para ele).
voice_port = 2020.
Servidor de voz
control_host = 192.168.0.1 (especifique o endereço do serviço de controle dentro de uma rede local fechada).
control_port = 2020.
command_host = 192.168.0.2 (ligamos à interface de rede de uma rede local fechada).
command_port = 2020.
voice_host = 0.0.0.0 (ligamos a todas as interfaces de rede, pois este é um serviço público).
voice_port = 2020.
• Inserindo o SAMPVOICE no seu Código:
Referência Rápida: Para redirecionar o tráfego de áudio do jogador A para o jogador B, você precisa criar um stream de áudio (usando SvCreateStream), anexá-lo ao canal de alto-falante do jogador A (usando SvAttachStream) e, em seguida, anexar o jogador B ao stream de áudio (usando SvAttachListener). Pronto, agora, quando o microfone do jogador A estiver ativado (por exemplo, com a função SvPlay), seu tráfego de áudio será transmitido e, em seguida, ouvido pelo jogador B.
Agora vamos analisar alguns recursos do plugin através de um exemplo prático. Abaixo, criaremos um servidor que vinculará todos os jogadores conectados ao stream global e também estabeleceremos um stream local para cada jogador. Dessa forma, os jogadores poderão se comunicar por meio de chats globais (que podem ser ouvidos em qualquer ponto do mapa) e chats locais (que são ouvidos apenas quando próximos ao jogador).
Código:
#include <sampvoice>
#define GLOBAL_CHANNEL 0
#define LOCAL_CHANNEL 1
new SV_UINT:gstream = SV_NONE;
new SV_UINT:lstream[MAX_PLAYERS] = { SV_NONE, ... };
public OnPlayerConnect(playerid) {
if (SvGetVersion(playerid) == 0) { // Verificando a disponibilidade do plugin
SendClientMessage(playerid, -1, "Falha ao encontrar o plugin.");
}
else if (SvHasMicro(playerid) == SV_FALSE) { // Verificando a disponibilidade do microfone
SendClientMessage(playerid, -1, "Falha ao encontrar o microfone.");
}
else {
if(gstream != SV_NONE) {
SvSetKey(playerid, 0x5A, GLOBAL_CHANNEL); // Z key
SvAttachStream(playerid, gstream, GLOBAL_CHANNEL);
SvAttachListener(gstream, playerid);
SvSetIcon(gstream, "speaker");
SendClientMessage(playerid, -1, "Pressione Z para falar no chat global.");
}
if((lstream[playerid] = SvCreateStream(40.0)) != SV_NONE) {
SvSetKey(playerid, 0x42, LOCAL_CHANNEL); // B key
SvAttachStream(playerid, lstream[playerid], LOCAL_CHANNEL);
SvSetTarget(lstream[playerid], SvMakePlayer(playerid));
SvSetIcon(lstream[playerid], "speaker");
SendClientMessage(playerid, -1, "Pressione B para falar no chat local.");
}
}
}
public OnPlayerDisconnect(playerid, reason) {
// Removendo o stream local do player após desconectar
if(lstream[playerid] != SV_NONE) {
SvDeleteStream(lstream[playerid]);
lstream[playerid] = SV_NONE;
}
}
public OnGameModeInit() {
// Remova o comentário da linha para ativar o modo de depuração
// SvEnableDebug();
gstream = SvCreateStream();
}
public OnGameModeExit() {
if(gstream != SV_NONE){
SvDeleteStream(gstream);
gstream = SV_NONE;
}
}
Já foi observado que duas funções estão ausentes: 'OnPlayerActivationKeyPress' e 'OnPlayerActivationKeyRelease'. Sim, elas foram removidas.
Abaixo, estão todas as funções nativas do SAMPVOICE na versão 4.2: