Olá pessoal, tudo bem com vocês? Espero que todos estejam bem!
Venho vos apresentar o mais novo servidor do GTA SAMP. O Novo Mundo Virtual RPG, ele se encontra em sua fase BETA ( v1.0.0 ). Estamos lançando novas atualizações diariamente
No NMV você terá uma segunda vida virtual, onde você poderá ter um emprego, cidadania, casas, empresas, veículos, entre muitas outras coisas. Venha viver essas experiência inesquecível conosco!
O servidor foi totalmente criado do zero. Possuímos profissões, sistemas em geral muito bem desenvolvidos e inovadores, alguns nunca vistos antes ( Ainda serão criados muitos outros ). A nossa equipe de administração é formada por membros competentes, que sempre estarão prontos para te ajudar ou proteger o servidor de pessoas mal intencionadas, para garantir uma boa jogatina de todos.
Estamos com as vagas abertas na Administração, pois prezamos pela segurança de todos(as) os(as) nossos(as) jogadores(as), dentro e fora do game.
IP DO SERVIDOR: 149.56.41.48:7784 Adicione aos favoritos o nosso IP no SAMP.
ASSISTA O NOSSO TEASER OFICIAL DO NMV
VÍDEO: https://youtu.be/IUJdK1JIWMA Não esqueça de deixar o seu like para nos fortalecer e compartilhe com os seus amigos e amigas, contamos com o apoio de todos!
GRUPO NO DISCORD: https://discord.gg/pKUyeSpehk
Fique por dentro de tudo o que acontece em nosso servidor, como por exemplo: Avisos, Atualizações, Eventos, Regras e muito mais.
Vamos estar esperando muito ansiosos e de portas abertas todos vocês! Lembrando que o servidor está em fase BETA, mas suas contas não serão perdidas quando lançarmos a versão final.
1. Introdução ao plugin e ao tutorial
Tenho notado em uma pesquisa rápida aqui no fórum que não há um tutorial definitivo sobre Pawn.CMD. Se você está procurando por um tutorial que mostre tudo, desde como começar, como fazer comandos básicos e mostre todas as callbacks e recursos importantes do Pawn.CMD, veio ao local certo.
Falando um pouco sobre o plugin, não quero me aprofundar muito nisso pois não é tão importante para o tutorial, mas o Pawn.CMD é o plugin de processamento de comandos mais simples e rápido do SA-MP. Que é mantido e desenvolvido por um conhecido contribuidor da comunidade de SA-MP conhecido pelo nome katursis.
Gráfico de comparação com outros plugins
2. Instalação e primeiro comando
Vamos começar instalando o plugin, para isso vá até a página do Github oficial do autor(Clique aqui para ir para a página) e baixe a versão mais recente(No momento que escrevo esse tutorial, a versão mais recente é a 3.4.0, lembre-se de baixar a versão 3.4.0, não a versão 3.4.0 omp, pois vejo muita gente confundindo a versão para o omp(Open Multiplayer) com a versão para o SA-MP e acaba por gerar erros) após isso abra o arquivo .rar(Ou .tar se você usa linux como SO) e arraste o plugin .dll(Ou .so caso você use linux) para a pasta de plugins do seu servidor e arraste a include .inc para a pasta de includes do seu editor de código.
Após a instalação, vamos podemos criar o nosso primeiro comando usando Pawn.CMD:
A sintaxe é simples: CMD:comando(playerid, ¶ms[]) // O E comercial(&) representa que o parâmetro é opcional, ou seja, apenas adicione o parâmetro params quando for usá-lo.
Exemplo:
Código PHP:
#include <a_samp> // Incluímos a include principal do SA-MP #include <Pawn.CMD> // Agora incluímos a include do Pawn.CMD
CMD:helloworld(playerid) /* Podemos começar com o clássico hello world! */ { SendClientMessage(playerid, 0xFFFFFFAA, "Hello world!"); // Manda uma mensagem para o jogador(playerid) com a cor branca e com o conteúdo "Hello World". return 1; // E pronto, simples assim você fez o seu primeiro comando! }
3. Callbacks
Pode não parecer, mas o Pawn.CMD tem várias funções, vou me aprofundar nas mais importantes aqui(Caso você queira saber mais, leia o readme.md do repositório oficial do Pawn.CMD).
Vamos começar com as callbacks:
Código PHP:
// Essas são as callbacks que o Pawn.CMD tem: forward PC_OnInit(); forward OnPlayerCommandReceived(playerid, cmd[], params[], flags); forward OnPlayerCommandPerformed(playerid, cmd[], params[], result, flags);
1ª - OnPlayerCommandPerformed:
Essa registra o evento de quando o comando é executado pelo servidor.
Essa que talvez seja a que você mais irá usar na sua gamemode, por ela passam todos os comandos que são digitados pelos jogadores, sendo possível realizar verificações, como se o comando que foi digitado é existente ou não.
Exemplo:
Código PHP:
public OnPlayerCommandPerformed(playerid, cmd[], params[], result, flags) { if(result == -1) /* Se o result for negativo, significa que o comando não existe */ { SendClientMessage(playerid, 0xFF0000AA, "Comando inexistente."); // Retorna uma mensagem de erro para o jogador, já que o comando não existe. } return 1; }
Parâmetros:
playerid - Representa o ID do jogador que executou o comando;
cmd[] - Representa o comando executado(Podendo retornar o nome do comando em forma de string ou fazer verificações mais específicas);
params[] - Representa os parâmetros passados pelo jogador no comando;
result - Representa o resultado do comando como o nome sugere(Retorna -1 caso o comando for inválido e retorna 0 caso o comando for válido);
flags - Representa os sinalizadores do comando, nunca vi ninguém usar esse parâmetro, mas é bem útil, pois pode ser usado para passar parâmetros adicionais(Como /ban -all por exemplo, isso faria com que o comando pudesse banir à todos online como um parâmetro opcional).
2ª OnPlayerCommandReceived
Como o nome sugere, essa callback registra evento de quando o comando é recebido pelo servidor.
Pode ser usada para fazer verificações de flood e registrar comandos por exemplo.
Exemplo:
Código PHP:
public OnPlayerCommandReceived(playerid, cmd[], params[], flags) { static command[256]; // Declara a string 'command'
for(new i = 0; i < MAX_PLAYERS; i++) /* Faz um loop para percorrer todos os jogadores */ { if(!IsPlayerConnected(i) || !IsPlayerAdmin(i)) continue; // Caso o jogador não estiver conectado ou não estiver logado na RCON, o loop pula esses jogadores e continua a percorrer format(command, sizeof(command), "Comando recebido: %s - Comando performado por: %s[%d]", cmd, GetPlayerNameEx(playerid), playerid); // Formata a string 'command' com o comando recebido e o nome e ID do jogador SendClientMessage(i, 0xFFFFFFAA, command); // Envia a mensagem contendo a string 'command' com o comando recebido para todos os logados na RCON } return 1; }
GetPlayerNameEx(playerid) /* Função para retornar o nome do jogador de forma mais prática */ { static Name[MAX_PLAYER_NAME] GetPlayerName(playerid, Name, MAX_PLAYER_NAME); return Name; }
Parâmetros:
playerid - Representa o ID do jogador à executar o comando;
cmd[] - Representa o comando à ser executado em forma de string;
flags - Representa os parâmetros opcionais do comando recebido(Caso houver).
3ª PC_OnInit
Como o nome sugere, essa callback é executada assim que o plugin Pawn.CMD é carregado.
Exemplo:
Código PHP:
public PC_OnInit() { printf("Pawn.CMD carregado!"); return 1; }
Parâmetros:
- Essa callback não possui nenhum parâmetro.
4. Funções Nota: Como foi dito, eu não irei me aprofundar tanto nas funções(Até por que tem bastante delas), caso queira saber mais, você pode acessar o readme.md do Pawn.CMD que contém todas as funções clicando aqui.
1: callcmd
Essa função executa um comando em outro lugar do código(Eu acho ela bem útil e poupa bastante tempo).
Exemplo:
Código PHP:
// Em algum lugar do código... CMD:meunome(playerid) { new Nome[128]; // Declarando a variável nome format(Nome, sizeof(Nome), "Meu nome é: %s", GetPlayerNameEx(playerid)); // Formata a variável nome contendo o nome do jogador. SendClientMessage(playerid, 0xFFFFFFAA, Nome); // Retorna a string 'Nome' para o playerid com a cor branca. return 1; }
GetPlayerNameEx(playerid) /* Função para retornar o nome do jogador de forma prática */ { static Name[MAX_PLAYER_NAME]; GetPlayerName(playerid, Name, MAX_PLAYER_NAME); return Name; }
public OnPlayerConnect(playerid) /* Quando o jogador se conectar: */ { callcmd::meunome(playerid); // Executa o comando meunome na callback OnPlayerConnect. return 1; }
Sintaxe:
Código PHP:
callcmd::comando(playerid, ¶ms[])
2: PC_EmulateCommand
Emula um comando que não necessariamente foi digitado por aquele jogador.
CMD:emularcomando(playerid) { PC_EmulateCommand(playerid, "/kickarme"); // Emula o comando para o jogador 'playerid'. return 1; }
Sintaxe:
Código PHP:
PC_EmulateCommand(playerid, command[])
5. Observações finais e fontes Espero que esse tutorial tenha te ensinado de vez a como dominar o Pawn.CMD que é um plugin bem poderoso. Lembrando que eu não citei todas as funções que o Pawn.CMD tem, citei apenas as mais importantes para esse tutorial não ficar mais extenso do que já está.
Caso tenha qualquer sugestão para a melhoria desse tópico, sinta-se livre para sugerir.
Olá, boa tarde! eu gostaria de pedir ajuda no código de coordenadas para interiores, eu já tentei de tudo, para tentar ajustar as coordenadas dos interiores do jeito certo, porém sempre aparece algumas warnings e ao entrar em um interior com o GM ligado os jogadores são spawnados para um local invisivel caindo do alto, alguém poderia me ajudar pfv??
Código:
else if(IsPlayerInRangeOfPoint(playerid, 5.0,1315.4862,-897.6825,39.5781)) // Entrada da 24-7 Vinewood
{
SCM(playerid,-1,"Você entrou em um supermercado {DBED15}24/7{FFFFFF}, para comprar produtos usa {DBED15}/comprar produtos{FFFFFF}.");
SetPosEx(playerid,6.2245,-31.7592,1003.5494,2.1310,0); // Interior da 24-7 Vinewood - Linha do warning
CongelarEx(playerid);
return 1;
}
if(IsPlayerInRangeOfPoint(playerid, 3.0,6.2245,-31.7592,1003.5494,2.1310)) // Saida da 24-7 Vinewood - Linha do warning
{
SetPosEx(playerid,1315.4862,-897.6825,39.5781,359.3213,0,0); // Porta da 24-7 Vinewood
CongelarEx(playerid);
return 1;
}
Estes são os warnigs que aparecem quando eu tento compilar
Citar:warning: 202: number of arguments does not match definition
warning: 202: number of arguments does not match definition
OBS: Eu utilizei os comandos /SAVE & /RS para pegar as coordenadas, mas acho que não sei utiliza-los da maneira correta
Oi gente, boa noite! Tudo bem?
Alguém poderia me informar como posso estar criando uma TextDraw com imagem de um objeto do jogo?
Por exemplo uma weapon (358), que é uma sniper. Como conseguiria por para aparecer em uma textdraw?
Obrigado!
O SA-MP Roleplay Mobile é um launcher para o SAMP Android. Este launcher é um esforço da rede de servidores Eagle Vision, que inclui diversos servidores no SA-MP e concentra mais de três mil jogadores simultâneos.
Esse launcher unifica todos os servidores em um único client para a plataforma android e proporcionará uma experiência imersiva sem precedentes até então.
Com uma gama de variedades de funções exclusivas, o SA-MP Roleplay Launcher redefine a forma como você experimentará o GTA Roleplay. Prepare-se para mergulhar em uma aventura que vai além de suas expectativas, graças a recursos especialmente projetados para aprimorar sua imersão e envolvimento.
O lançamento está se aproximando rapidamente, e mal podemos esperar para compartilhar o SA-MP Roleplay Launcher com a comunidade. Continuem nos acompanhando aqui e nas redes sociais para receber atualizações regulares sobre o lançamento oficial e informações exclusivas sobre recursos adicionais.
Prepare-se para elevar o nível do seu GTA Roleplay! Fique atento para mais novidades e junte-se a nós nessa nova era de imersão e diversão ao lado dos servidores da rede Eagle Vision.
algum poderia me ajudar recentemente fiz uma profissao de caminhoneiro onde eu queria que quando o player chegasse no checkpoin final de receber a grana o trailer do caminhao sumise dando a impresao que o trailer foi entregue meu codigo ficou assim sei que esta errado por isso peco a ajuda de vcs scripters com experincia
CMD:carregar(playerid, params[])
{
if(IsPlayerInRangeOfPoint(playerid, 6.0, 2458.5613,-2105.2146,13.5469))
{
Profissao[playerid] = 1; SetPlayerSkin(playerid, 168);
new caminhao = CreateVehicle(515, 2492.7219,-2089.7593,14.1539,87.3403, -1, -1, 60);
CreateVehicle(450, 2501.6836,-2090.1748,14.5732,87.3414, -1, -1, 10);
PutPlayerInVehicle(playerid, caminhao, 0);
}
else
{
SendClientMessage(playerid,vermelho,"|ERRO|: voce nao esta no local exato");
}
if(Profissao[playerid] == 1)
if(CaminhaoJob[playerid] == 0)
{
CheckCaminhao[playerid] = true;
CaminhaoJob[playerid] = 1;
}
if(IsTrailerAttachedToVehicle(GetPlayerVehicleID(playerid)))
{
SetPlayerCheckpoint(playerid, 894.8574,-1218.0912,17.5828, 4.0);
CheckCaminhao[playerid] = true;
SendClientMessage(playerid,0x03FF35FF,"|INFO|:Voce carregou seu caminhao, siga o checkpoint para descarregar!");
}
else
{
SendClientMessage(playerid,0x03FF35FF,"anexe um trailer ao seu veiculo e use novamente /carregar");
}
return 1;
}
na public enterplayercheckpoin coloquei assim eu coloquei o codigo so pra vcs entender pois meu codigo compila sem erros coloquei assim so pra entender as principais parte
if(CheckCaminhao[playerid] == true)//aq da o dinheiro chegando no ultimo checkpoint
{
CheckCaminhao[playerid] = false;
SendClientMessage(playerid, 0x33AA33AA,"Voce descarregou o caminhao e recebeu $1000");
GivePlayerMoney(playerid, 1000);
new vehicleid;
new trailerid = GetVehicleTrailer(vehicleid);
DetachTrailerFromVehicle(trailerid); //coloquei isso mas nao sei como fazer ele sumir
DisablePlayerCheckpoint(playerid);
SendClientMessage(playerid,amarelo,"|INFO|:para fazer a missao novamente use /missaocaminhao!");
}
Somos um servidor de RolePlay com RP do FiveM mas em um servidor de samp, ammu igual do FiveM com cofre roubavel, lojas com portas e cofre roubavel e muito mais, favelas com orgs e etc..., todos os assaltos têm de ser negociáveis pela vida de reféns, bem penso que não tenho muito a dizer, espero que gostem e que entrem no discord e no servidor, o que eu realmente queria era um scripter que manche no pawn pois eu não mancho muito em pawn, para organizar o servidor e etc...
salve, fiz um sistema de whitelist e está funcionando tudo corretamente, eu queria sempre que o player logar no servidor verificar se ele está no meu servidor do discord.
Situação: o player pode fazer a whitelist e sair do meu discord e continuar jogando, não quero q isso ocorra.
Estou meio perdido e nao sei oq fazer, queria fazer que quando ele logasse no sv verificasse se ele ta no discord e se nao tiver ele vai ter q fazer a whitelist novamente.