tenho esse sistema de gang porém tá dando 2 warnings que diz que o argumento não bate com a definição que se localiza na linha 60 só aí não sei resolver
a linha q tá dando o erro e exatamente isso
dini_Get(file, key, memberName, sizeof(memberName));
Código:
#include <a_samp>
#include <zcmd>
#include <dini>
#define COLOR_RED 0xAA3333AA
#define COLOR_GREEN 0x33AA33AA
#define MAX_BANDS 100 // Max Groups 100. You can change to max up to 500!
public OnPlayerConnect(playerid) {
// Resetar informações de gangue do jogador
BAND[playerid][gid] = -1;
BAND[playerid][invited] = -1;
BAND[playerid][attemptjoin] = -1;
new pname[24];
GetPlayerName(playerid, pname, sizeof(pname));
// Procurar se o jogador está em alguma gangue salva
for(new i = 0; i < MAX_BANDS; i++) {
if(BANDinfo[i][active]) {
new file[128], memberName[24], key[16];
format(file, sizeof(file), "gangs/%s.ini", BANDinfo[i][grname]);
if(!fexist(file)) continue;
new total = dini_Int(file, "TotalMembers");
for(new x = 0; x < total; x++) {
format(key, sizeof(key), "Member%d", x);
// Ler o membro do arquivo INI com a sintaxe correta para Dini
dini_Get(file, key, memberName, sizeof(memberName));
if(!strcmp(memberName, pname, true)) {
BAND[playerid][gid] = i;
BAND[playerid][order] = BANDMembers(i); // define a ordem do membro
// Spawnar o jogador na posição da gangue
SetPlayerPos(playerid, BANDinfo[i][gX], BANDinfo[i][gY], BANDinfo[i][gZ]);
break;
}
}
if(BAND[playerid][gid] != -1) break; // já encontrou a gangue
}
}
COMMAND:criargang(playerid, params[]) {
if(BAND[playerid][gid] != -1) return SendClientMessage(playerid, 0xFF0000, "Deixe sua gangue com {FFFFFF}/deixargang{FF0000} antes de criar outra!");
if(strlen(params) > 49 || strlen(params) < 3) return SendClientMessage(playerid, 0xFF0000, "Uso: {FFFFFF}/criargang{FF0000} (nome 3-50 chars)!");
if(IsBANDTaken(params)) return SendClientMessage(playerid, 0xFF0000, "Esse nome já está em uso!");
CreateBAND(params, playerid);
return 1;
}
COMMAND:deixargang(playerid, params[]) {
if(BAND[playerid][gid] == -1) return SendClientMessage(playerid, 0xFF0000, "Você não está em uma gangue!");
LeaveBAND(playerid, 0);
return 1;
}
COMMAND:aceitargang(playerid, params[]){
if(BAND[playerid][order] != 1) return SendClientMessage(playerid, 0xFF0000, "você não é líder de uma gangue para convidar pessoas!");
new cid;
if(isnull(params)) return SendClientMessage(playerid, 0xFF0000, "Usage: {FFFFFF}/aceitargang{FF0000} [id]");
cid = strval(params);
if(!IsPlayerConnected(cid)) return SendClientMessage(playerid, 0xFF0000, "Player nãoe stá conectado!");
if(BAND[cid][gid] == BAND[playerid][gid]) return SendClientMessage(playerid, 0xFF0000, "esse jogador já está em sua gangue!");
if(BAND[cid][invited] == BAND[playerid][gid]) return SendClientMessage(playerid, 0xFF0000, "este jogador foi convidado para sua gangue!");
if(BAND[cid][attemptjoin] == BAND[playerid][gid]) return BANDJoin(cid, BAND[playerid][gid]);
BAND[cid][invited] = BAND[playerid][gid];
new string[125], pname[24];
GetPlayerName(playerid, pname, 24);
format(string, sizeof(string), "você foi convidada a se juntar uma gangue {FFFFFF}%s(ID.%d){FFCC66} por {FFFFFF}%s(ID.%d). /juntarseagang %d", BANDinfo[BAND[playerid][gid]][grname], BAND[playerid][gid], pname, playerid, BAND[playerid][gid]);
SendClientMessage(cid, 0xFFCC66, string);
GetPlayerName(cid, pname, 24);
format(string, sizeof(string), "você não foi convidado {FFFFFF}%s(ID.%d){FFCC66} para se juntar essa gangue!", pname, cid);
SendClientMessage(playerid, 0xFFCC66, string);
return 1;
}
COMMAND:gangowner(playerid, params[]){
if(BAND[playerid][order] != 1) return SendClientMessage(playerid, 0xFF0000, "You are not the leader of the Gang, you cannot change the leader!");
new cid;
if(isnull(params)) return SendClientMessage(playerid, 0xFF0000, "Usage: {FFFFFF}/Gangowner{FF0000} [id]");
cid = strval(params);
if(!IsPlayerConnected(cid)) return SendClientMessage(playerid, 0xFF0000, "Player Is not connected!");
if(cid == playerid) return SendClientMessage(playerid, 0xFF0000, "ERROR: You are now Gang Leader :D!");
if(BAND[playerid][gid] != BAND[cid][gid]) return SendClientMessage(playerid, 0xFF0000, "Player Is not in your Gang!");
ChangeMemberOrder(BAND[playerid][gid], 1);
BAND[playerid][order] = BANDMembers(BAND[playerid][gid]);
return 1;
}
COMMAND:gangjoin(playerid, params[]){
if(BAND[playerid][gid] != -1) return SendClientMessage(playerid, 0xFF0000, "You are already in a Gang! Leave your current one before joining another one!");
new grid;
if( (isnull(params) && BAND[playerid][invited] != -1 ) || ( strval(params) == BAND[playerid][invited] && BAND[playerid][invited] != -1) ) return BANDJoin(playerid, BAND[playerid][invited]);
if(isnull(params)) return SendClientMessage(playerid, 0xFF0000, "Usage: {FFFFFF}/Gangjoin{FF0000} [id]");
grid = strval(params);
if(!BANDinfo[grid][active]) return SendClientMessage(playerid, COLOR_RED, "ERROR: You wanted to join band which doesnt Exsist!!");
BAND[playerid][attemptjoin] = grid;
new string[125], pname[24];
GetPlayerName(playerid, pname, 24);
format(string, sizeof(string), "You have requested to join band %s(ID:%d)", BANDinfo[grid][grname], grid);
SendClientMessage(playerid, 0xFFCC66, string);
format(string, sizeof(string), "{FFFFFF}%s(ID.%d) {FFCC66}has requested to join your Gang. Type /Gangaccept %d to accept him!", pname, playerid, playerid);
SendMessageToLeader(grid, string);
return 1;
}
COMMAND:gangkick(playerid, params[]){
if(BAND[playerid][order] != 1) return SendClientMessage(playerid, COLOR_RED, "ERROR:You are not the leader of a Gang, you cannot kick!");
new cid;
if(isnull(params)) return SendClientMessage(playerid, 0xFF0000, "Usage: {FFFFFF}/Gangkick{FF0000} [id]");
cid = strval(params);
if(!IsPlayerConnected(cid)) return SendClientMessage(playerid, 0xFF0000, "Player Is not connected!");
if(cid == playerid) return SendClientMessage(playerid, 0xFF0000, "You cannot kick yourself, silly.");
if(BAND[playerid][gid] != BAND[cid][gid]) return SendClientMessage(playerid, 0xFF0000, "Player Is not in your Gang!");
LeaveBAND(cid, 1);
return 1;
}
COMMAND:bm(playerid, params[]){
if(BAND[playerid][gid] == -1) return SendClientMessage(playerid, 0xFF0000, "ERROR: You are not in Band. You cannot Talk over Radio!");
if(isnull(params)) return SendClientMessage(playerid, COLOR_RED, "USAGE: ! [message]. WARNING! Its ICly!");
new pname[24], string[140+24];
GetPlayerName(playerid, pname, 24);
format(string, sizeof(string), "%s(ID.%d): %s", pname, playerid, params);
SendMessageToAllBANDMembers(BAND[playerid][gid], string);
return 1;
}
COMMAND:gangsinfo(playerid, params[]){
if(BAND[playerid][gid] == -1) return SendClientMessage(playerid, COLOR_GREEN, "ERROR: You are not in Gang. To check Gang Stats, go in your Gang!");
SendClientMessage(playerid, COLOR_GREEN ,"Warning: Gang Stats are Currently Under Construction! Need ideas for it. ");
return 1;
}
COMMAND:ganglist(playerid, params[]){
if(isnull(params) && BAND[playerid][gid] == -1) return SendClientMessage(playerid, 0xFF0000, "Usage: {FFFFFF}/Ganglist{FF0000} [id]");
if(isnull(params)){
DisplayBANDMembers(BAND[playerid][gid], playerid);
return 1;
}
new grid = strval(params);
if(!BANDinfo[grid][active]) return SendClientMessage(playerid, 0xFF0000, "The band ID you have entered is not active!");
DisplayBANDMembers(grid, playerid);
return 1;
}
COMMAND:gangs(playerid, params[]){
ListBANDs(playerid);
return 1;
}
Olá eu estou fazendo uma arena porem quando o player morre dentro desta arena ele vai para Grove Street e aparece aquela barra de spawn, aqui esta o código que eu fiz da arena
Olá! Minha dúvida é referente ao VOIP no mobile, pois nele basta apertar no ícone do microfone para falar, porém eu não sei qual tecla corresponde no GM.
Mas no mobile, como saber qual tecla aciona?
Porque se eu tiver um chat local e outro global, cada um com uma tecla diferente, como isso funciona no mobile?
Alguém com experiência pra tirar essa dúvida?
Obrigado!
EDIT: Não pensei que o ChatGPT fosse capaz de me tirar esta dúvida, mas foi! Basicamente no mobile não tem correspondência de tecla, então ao apertar no microfone o player irá falar no chat que lhe foi atribuido préviamente. Então, para que o usuário de mobile possa falar em diferentes chats é necessário acionar via comandos em vez de teclas!
da pra compilar usando linux mint?
Se sim tem que baixar oque?
Estou usando o vscode como editor da .pwn, mas não consigo compilar a gm. Alguém poderia me ajudar?
Tô fazendo um sistema em que o player puxa o veículo de inventario venha cores aleatórias e quando player selecionar uma cor o veiculo vim so dá cor selecionada, a unicá coisa q não está fucionado e as cores aletorias fica vindo só carro preto q e a cor padrão do inventario
Tava fazendo um sistema de quando o player abrir o inventário aparecer um objeto e uma animação, fuciona tudo direito quando abrir aparecer e fechar da um clear, mais quando puxo um veículo de invetário acaba bugando o player, mesmo eu já fazendo a verificação
DevPrism: Um Pacote Simples e Otimizado para SA-MP
Olá, pessoal!
Gostaria de apresentar a vocês o DevPrism, um pacote que estou desenvolvendo. Meu objetivo é criar uma base limpa, simples e otimizada, perfeita para quem quer começar um servidor de SA-MP sem se preocupar com código pesado ou desorganizado.
Atualização em 03/09/2025: prism_textdraw.inc
Tivemos uma grande atualização na biblioteca prism_textdraw.inc. Otimizamos o código para melhor desempenho e adicionamos novas funcionalidades para facilitar a sua vida:
Velocidade de Carregamento: Otimização para um carregamento mais rápido, garantindo que suas textdraws apareçam sem atrasos.
Multi-lançamento: Agora é possível criar múltiplas textdraws de uma vez, tornando a gestão da interface muito mais eficiente.
Compatibilidade: Suporte total para arquivos .tde, .tex, .ini e .text, oferecendo flexibilidade na forma como você salva e carrega suas textdraws.
Gabarito de Interface: Adição de um gabarito para facilitar a criação e edição das textdraws nos arquivos.
Além disso, foram feitas algumas mudanças na estrutura de download para garantir que você tenha a versão mais recente e estável dos arquivos. O código continua disponível no GitHub para quem quiser conferir, testar ou contribuir. Sinta-se à vontade para fazer um fork e adaptar para suas necessidades!
Link do Repositório: https://github.com/ProdgyScrypting/DevPrism-SAMP.git
Transforme seu servidor em algo único com sistemas profissionais e otimizados, tenho muitos sistemas já desenvolvidos pra você só colar e executar no seu servidor, ou se preferir, me diga um sistema que deseja fazer e eu faço sua ideia ser executada.
Sou especialista em gamemodes SA-MP, focado em realismo, otimização e estabilidade, desde o básico ao avançado: casas, empresas, veículos, bancos, hospitais e muito mais.
Serviços com entrega garantida, e com testes reais online, para você acompanhar o desenvolvimento.
Acompanhe alguns sistemas neste servidor, caso queira entrar : 149.56.41.55:7786 Contado DC: .ytzdiablo_