menuid: Identificador único do menu (similar ao easydialog)
caption: Título principal do menu
type: Subtítulo (máx. 30 caracteres)
captionTextColor: Cor do texto em formato ARGB
captionBoxColor: Cor do fundo do título
captionSprite: Sprite de fundo (formato texture:name)
AddPlayerMenuItem
Código:
AddPlayerMenuItem(playerid, text[], info[] = "");
text: Texto principal do item
info: Descrição adicional (opcional)
Suporte a adição dinâmica durante exibição
HidePlayerMenu
Código:
HidePlayerMenu(playerid);
Fecha o menu ativo do jogador
Remove todos os items da memória
Macros Customizáveis
Código:
#define MENU_SOUND_UPDOWN 1054 // Som ao navegar
#define MENU_SOUND_CLOSE 1084 // Som ao fechar
#define MENU_SOUND_SELECT 1083 // Som ao selecionar
#define MENU_MAX_LISTITEMS 24 // Máximo de items
#define MENU_MAX_LISTITEM_SIZE 128 // Tamanho do texto
#define MENU_MAX_LISTITEMS_PERPAGE 8 // Items por página
- Função de gancho das keys pressionadas KeyMenu:...(playerid, index)
- Função OnMenuResponse foi substituida pelo macro Menu:...(playerid, response, listitem)
- O Sistema agora é em base de strings não em menuid
- Adicionado a possibilidade de colocar sub-item (do lado direito do menu)
- Adicionado suporte a plataforma Android
- Melhor organização da Include
- Adicionado a Documentação total da include
- Foi adicionado textdraw-streamer para o melhor manuseio da include
Olá! Espero que tenham sentido saudade da minha presença aqui no fórum, estou aqui desde do meu inicio no samp em meados de 2016 até o presente momento, amo essa comunidade e o gta em si, não poderia ficar sem tentar ajudar-los de alguma forma ainda mais nesse ano de escassez da própia comunidade. Mais uma vez troquei de discord e de quase todas as redes sociais, caso vocês precisem entrar em contato comigo, vá no meu novo discord: tommy0stardust
OBS: sou moderador da Vision Team, caso estejam lá só me marcarem no chat que eu irei responder-lo o quanto antes!
SDK Completo para Extensão de Servidores SA-MP/OPEN.MP
Introdução
Kit de desenvolvimento profissional para criação de plugins SA-MP (San Andreas Multiplayer) em C/C++. Oferece controle total sobre a máquina virtual AMX, permitindo implementação de funcionalidades nativas de alto desempenho. Compatível com OPEN.MP e todas versões modernas do SA-MP.
Visão Geral do SDK
Coleção de 15+ headers especializados e bibliotecas otimizadas
Suporte completo à arquitetura 32/64-bit
Integração multiplataforma (Windows/Linux/macOS)
Sistema de debug integrado com 25+ códigos de erro
Componentes Principais
1 - Sistema AMX Avançado
Máquina virtual para execução de scripts Pawn
Gerenciamento de memória com 3 modelos de alocação
Registro de 200+ funções nativas pré-implementadas
Suporte a Unicode e codificação UTF-8
2 - Arquitetura Multiplataforma
Headers específicos para Windows (MSVC), Linux (GCC), FreeBSD
Tratamento automático de endianness e alinhamento
Macros para caminhos (DIRSEP_CHAR) e compilação condicional
3 - Sistema de Plugins Profissional
Interface de inicialização/descarregamento de plugins
Registro automático de funções nativas via AMX_NATIVE_INFO
Acesso direto à memória do servidor
Handlers para eventos críticos
Detalhes Técnicos
Estruturas Principais
AMX_HEADER (amx_structures.h)
Código:
typedef struct tagAMX_HEADER {
int32_t size; // Tamanho total
uint16_t magic; // Assinatura (0xF1E0)
char file_version; // Versão do formato
char amx_version; // Versão AMX requerida
int16_t flags; // Flags de operação
// ... (+15 campos)
} AMX_HEADER;
AMX_NATIVE_INFO (amx.h)
Código:
typedef struct tagAMX_NATIVE_INFO {
const char* name; // Nome da função
AMX_NATIVE func; // Ponteiro para implementação
} AMX_NATIVE_INFO;
Sistema de Erros
28 códigos de erro detalhados (amx_constants.h):
AMX_ERR_MEMORY (16): Falha crítica de alocação
AMX_ERR_NATIVE (10): Erro em função nativa
AMX_ERR_JIT (22): Falha na compilação JIT
Gerenciamento de Memória
Alocação dinâmica via amx_Allot()
Compactação automática (AMX_COMPACTMARGIN=64)
Verificação de limites de acesso
Sistema de tags de usuário (AMX_USERNUM)
Recursos Avançados
1 - Compilação JIT
Código:
#if defined JIT
int AMXAPI amx_InitJIT(AMX *amx, void *reloc_table, void *native_code);
#define AMX_FLAG_JITC 0x2000
#endif
Aceleração em tempo de execução
Suporte a otimizações específicas de CPU
2 - Interface de Depuração
Código:
typedef int (AMXAPI *AMX_DEBUG)(AMX *amx);
int AMXAPI amx_SetDebugHook(AMX *amx, AMX_DEBUG debug);
Galera eu coloquei um sistema de armas no meu script com a include mSelection onde quando o player digita o comando armas aparece a seleção de armas para ele escolher , até então eu não sabia colocar as armas para outras direções dentro do quadro onde e mostrada o id do objeto que representa a arma , para ser mais claro dentro do arquivo armas.txt onde quando a Gamemode inicia os arquivos onde estão os id e o objeto que e o id da arma estão , minha dúvida e da para mudar o tamanho da imagen de cada armas ? Porq sei que elas pode girar tipo em círculo mas não se se e possível diminuir o tamanho dela para o player visualizar melhor , pois elas por padrão vem muito próximo e muitas só aparecem pela metade , vocês estão me entendendo ou expliquei muito ruim?!
Exemplo de dentro da pasta armas.txt coloquei assim
346, 0 onde o 346 e o id do objeto que representa a arma e o 0 e o primeiro quadro que o player clica e por aí vai então aprendi a modificar a direção da arma por exemplo 346, 0 ,-100 só queria saber se e possível diminuir o tamanho da imagem que seria o objeto que representa a arma no caso queria saber qual e a rotação que afasta o objeto para ele ficar menor pois algumas armas são muito perto e fica aparecendo a metade dela , se for possível eu colocando a rotação para ela ficar mais pra trás ela possa diminuir o tamanho e ficar melhor para o player ver
⚡ [BRASIL] WAR EM SAN ANDREAS | EVENTOS / DM | ® ⚡
Olá pessoal, tudo bem com vocês? Espero que todos estejam bem!
Venho vos apresentar o mais novo servidor do GTA SAMP. O Novo War em San andreas DM ele se encontra em sua fase ( v1.8 ). Estamos lançando novas atualizações diariamente
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.
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.52:7772
Adicione aos favoritos o nosso IP no SAMP.
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!
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.
galera estou com um probleminha que pode ate parecer ser besta mas e nao sei como resolver na hora que compilo da isso
esse erro e falta de alguma include ?
C:\Users\Asus\Desktop\dede\gamemodes\DraCkers.pwn(130) : error 017: undefined symbol "INI_String"
C:\Users\Asus\Desktop\dede\gamemodes\DraCkers.pwn(131) : error 017: undefined symbol "INI_String"
C:\Users\Asus\Desktop\dede\gamemodes\DraCkers.pwn(2432) : loose indentation
C:\Users\Asus\Desktop\dede\gamemodes\DraCkers.pwn(2701) : warning 202: number of arguments does not match definition
C:\Users\Asus\Desktop\dede\gamemodes\DraCkers.pwn(2750) : error 017: undefined symbol "INI_Open"
C:\Users\Asus\Desktop\dede\gamemodes\DraCkers.pwn(2750) : warning 213: tag mismatch
C:\Users\Asus\Desktop\dede\gamemodes\DraCkers.pwn(2751) : error 017: undefined symbol "INI_SetTag"
C:\Users\Asus\Desktop\dede\gamemodes\DraCkers.pwn(2752) : error 017: undefined symbol "INI_WriteString"
C:\Users\Asus\Desktop\dede\gamemodes\DraCkers.pwn(2753) : error 017: undefined symbol "INI_WriteString"
C:\Users\Asus\Desktop\dede\gamemodes\DraCkers.pwn(2754) : error 017: undefined symbol "INI_Close"
C:\Users\Asus\Desktop\dede\gamemodes\DraCkers.pwn(2756) : error 017: undefined symbol "INI_ParseFile"
C:\Users\Asus\Desktop\dede\gamemodes\DraCkers.pwn(2756) : warning 215: expression has no effect
C:\Users\Asus\Desktop\dede\gamemodes\DraCkers.pwn(2756) : error 001: expected token: ";", but found ")"
C:\Users\Asus\Desktop\dede\gamemodes\DraCkers.pwn(2756) : error 029: invalid expression, assumed zero
C:\Users\Asus\Desktop\dede\gamemodes\DraCkers.pwn(2756) : fatal error 107: too many error messages on one line
bem encontrei esse sistema derby por ai acho que e a do delete do ppc truck entao ueria dar uma modificado para colocar no meu servidor o problema e que os usar /derby de pois de um tempinho o player q entrou ganha o derby queria que se iniciasse com pelo menos 2 ou mais player pois como ta definido se tiver 1 player no derby ele mesmo ganha queria a ajuda de algm com experiencia nessa linguagem para dizer como posso fazer essa verificacao no minimo se dois players tiver no derby caso so tenha 1 o derby nao se inicia
DeletePVar(i, "InDerby");
SpawnPlayer(i);
CheckDestructionDerby();
}
}
return 1;
}
new playerInDerby[MAX_PLAYERS]; // 0 = Não está no derby, 1 = Está no derby
CMD:derby(playerid)
{
if(playerInDerby[playerid] == 1)return SendClientMessage(playerid, 0xFF6666FF, "Você já está participando do derby! Aguarde até sair para tentar novamente.");
if(DerbyAdatok[IsDerbyStarted] == 1)return SendClientMessage(playerid, 0xFF6666FF, "O derby já começou, você não pode mais participar.");
if(DerbyAdatok[ddplayers] >= PLAYERLIMIT)return SendClientMessage(playerid, 0xFF6666FF, "Limite de players no derby foi atingido!");
if(!DerbyAdatok[IsDerby])
{
string[0] = EOS;
for(new i; i < sizeof(Maps); i++)
{
strcat(string, "{e0e0e0}");
format(str, sizeof(str), "%s \n", Maps[i][mapname], Maps[i][mapauthor]);
strcat(string, str);
}
ShowPlayerDialog(playerid, DIALOG_MAPS, 2, "{ff6666}Mapa opcional:", string, "OK", "Cancelar");
return 1;
}
return 1;
}
CMD:sairderby(playerid) {
if(!InDerby(playerid)) return SendClientMessage(playerid, 0xff6666FF, "Você não está em um derby!");
if(DerbyAdatok[IsDerby] == 0) return SendClientMessage(playerid, 0xff6666FF, "Não tem nenhum derby para você sair!");
OnPlayerLeaveDD(playerid);
SpawnPlayer(playerid);
return 1;
}
format(string, sizeof(string), "[DERBY] %s {ff6666}caiu na água no Derby {ffffff} [%i/"#PLAYERLIMIT"]", Name(i), DerbyAdatok[ddplayers]);
SendClientMessageToAll(-1, string);
DeletePVar(i, "InDerby");
SpawnPlayer(i);
}
if(DerbyAdatok[ddplayers] < 2) {
new playerid = IsDerbyWinner();
format(string, sizeof(string), "[DERBY] %s {33aa33}ganhou o Derby e recebeu $1000 !", Name(playerid));
SendClientMessageToAll(-1, string);
DestroyVehicle(GetPVarInt(playerid, "ddVeh"));
DeletePVar(playerid, "InDerby");
GivePlayerMoney(playerid, 1000);
SpawnPlayer(playerid);
DerbyAdatok[ddplayers] = 0;
KillTimer(timer2);
DerbyAdatok[IsDerbyStarted] = 0;
DerbyAdatok[IsDerby] = 0;
}
}
}
}
return 1;
}*/
function CheckDestructionDerby() {
if(DerbyAdatok[IsDerby] == 1) {
// Conta o número de jogadores conectados no derby
new playersInDerby = 0;
for(new i; i < MAX_PLAYERS; i++) {
if(IsPlayerConnected(i) && InDerby(i)) {
playersInDerby++;
}
}
// Se houver pelo menos 2 jogadores, começa o derby
if(playersInDerby >= 2 && DerbyAdatok[IsDerbyStarted] == 0) {
// Inicia o jogo
StartDD();
}
// Se a quantidade de jogadores cair abaixo de 2, encerre o derby
if(playersInDerby < 2) {
if(DerbyAdatok[IsDerbyStarted] == 1) {
new playerid = IsDerbyWinner();
format(string, sizeof(string), "[DERBY] %s {33aa33}ganhou o Derby e recebeu $1000!", Name(playerid));
SendClientMessageToAll(-1, string);
DestroyVehicle(GetPVarInt(playerid, "ddVeh"));
DeletePVar(playerid, "InDerby");
GivePlayerMoney(playerid, 1000);
SpawnPlayer(playerid);
Olá amigos gostaria de saber como eu faço uma verificação para quando o player cair na água com o veículo ele spawnar pois estou querendo criar um sistema simples de Derby mas não sei como faço isso até porq ainda sou iniciante nessa linguagem , preciso de alguma include ou basta sova verificação ?! Por favor algum pode me mostra uma pequena exemplo de código agradeço a todos que se dispoe a ajudar