Eu escrevi um tutorial básico sobre a linguagem pawn, abordando no total 11 pontos básicos que um programador iniciante deve saber antes de começar a escrever um script por conta própria.
Citar:Esse sumário abrange os principais tópicos relacionados à linguagem Pawn, fornecendo uma visão geral dos conceitos fundamentais, estruturas de controle, funções, manipulação de strings e arrays, uso de arquivos, callbacks, bibliotecas, depuração e exemplos práticos.
Além disso, ele oferece recursos adicionais para expandir o conhecimento e encontrar suporte adicional na comunidade de desenvolvedores.
Olá pessoal,
ás vezes o servidor crasha quando eu tento remover uma simples árvore, algumas não crasha.
O que faz o servidor crashar usando removebuildingforplayer?
Quais objetos eu posso e não posso remover? Ou como remover? posso remover literalmente tudo?
tem locais que eu fiz uma limpa grande de objetos originais e não deu problemas, outros locais eu tiro meia dúzia de coqueiros e o server crasha na hora do login.
Por favor gostaria de entender como eu posso remover objetos ou essa é uma limitação/bug do jogo?
olá, irei falar sobre o Saturno RPG, ele é um servidor focado em RPG e temos orgs e vagas para staff e helper quem quiser acesssar nosso discord é só ir no nosso canal chamado Saturno RPG ou no nosso ip 51.81.57.217:10868. Sempre trabalhando pra sua diversão!
galera como eu faco para ajeitar esses nomes dentro de uma gm ? porq peguei uma gamemode russa e ela ao invez de vir escrita na linguagem russa dentro da gm para mim editar ta cheio de Âû íå óïîëíîìî÷åí ao invez de letras russas me impossibilitando de traduzir alguem com mais experiencia sabe como resolvo esse problema
ela fica com esses Âû íå óïîëíîìî÷åíû èñïîëüçîâàòü ýòó êîìàíä nao tem como traduzir assim
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.