Criei um comando (/handsup) onde o player iria levantar as mãos, e através disso poderia ser feito um assalto ou sequestro por exemplo (apenas se o player tivesse com a determinada ação ativa. Tudo está funcionando ok para jogadores de PC, porém, quando jogadores mobile a utilizam, nada acontece. Tem alguma forma de corrigir isso?
Código PHP:
CMD:handsup(playerid) { if (GetPlayerSpecialAction(playerid) == SPECIAL_ACTION_HANDSUP) return ClearAnimations(playerid);
criei esse sistem pra minha gm o problema e que nao sei como deixo o nome dos lideres funcional teho uma enum chamada pLider
tenho isso aq rInfo[playerid][pLider] bem nao sei oq fazer poi coloqui assim meu codigo e aparece meu nome m todas as orgs obs sou novato em pawno
Olá, boa noite a todos. Notei que sempre ao adentrar em algum veículo, seja entrando em um que já está criado pelo mapa, ou então usando algum criado pelo próprio jogador (/cv, /veh), aparece a seguinte mensagem no terminal: [Error] Array index out of bounds. Até o momento não consegui encontrar o que esteja causando o erro em destaque. Deixarei abaixo o código responsável por verificar se o player entrou em algum veículo, onde para isso estou usando o OnPlayerStateChange, e não o OnPlayerEnterVehicle. Desde já, agradeço a todos os que contribuírem com suas respostas, muito obrigado!
Código PHP:
public OnPlayerStateChange(playerid, PLAYER_STATE:newstate, PLAYER_STATE:oldstate) { static vehicleid;
if(newstate == PLAYER_STATE_DRIVER && IsABike(vehicleid) && !PlayerInfo[playerid][CNHA] && !AcInfo[playerid][ANaAuto]) { GivePlayerWanted(playerid, 1); SendClientMessage(playerid, Laranja, "| INFO | Você não tem habilitação para dirigir este veículo, portanto está sendo %s pela polícia", PlayerInfo[playerid][pSexo] ? "procurado" : "procurada"); } else if(newstate == PLAYER_STATE_DRIVER && IsACar(vehicleid) && !PlayerInfo[playerid][CNHB] && !AcInfo[playerid][ANaAuto]) { GivePlayerWanted(playerid, 1); SendClientMessage(playerid, Laranja, "| INFO | Você não tem habilitação para dirigir este veículo, portanto está sendo %s pela polícia", PlayerInfo[playerid][pSexo] ? "procurado" : "procurada"); } else if(newstate == PLAYER_STATE_DRIVER && IsATruck(vehicleid) && !PlayerInfo[playerid][CNHC] && !AcInfo[playerid][ANaAuto]) { GivePlayerWanted(playerid, 1); SendClientMessage(playerid, Laranja, "| INFO | Você não tem habilitação para dirigir este veículo, portanto está sendo %s pela polícia", PlayerInfo[playerid][pSexo] ? "procurado" : "procurada"); }
if(newstate == PLAYER_STATE_ONFOOT) { if (GetPVarInt(playerid, "InVehicleTrabalho")) { SendClientMessage(playerid, Vermelho, "Você tem 1 minuto para retornar ao seu veículo de trabalho, ou sua tarefa será cancelada!"); TimerOutTrabalho[playerid] = SetTimerEx("OutTrabalho", 60000, false, "i", playerid); DeletePVar(playerid, "InVehicleTrabalho"); }
if (newstate == PLAYER_STATE_DRIVER) { if (vehicleid >= KyoseiCar[0] && vehicleid <= KyoseiCar[7] && GetPlayerClan(playerid) != 0) { RemovePlayerFromVehicle(playerid); SendClientMessage(playerid, KYOSEI_COR, "Você não faz parte do clan Kyosei-Kai!");
return 1; }
else if (vehicleid >= MedellinCar[0] && vehicleid <= MedellinCar[7] && GetPlayerClan(playerid) != 1) { RemovePlayerFromVehicle(playerid); SendClientMessage(playerid, MEDELLIN_COR, "Você não faz parte do clan Cartel Medellín!");
return 1; }
else if (vehicleid >= YamaguchiCar[0] && vehicleid <= YamaguchiCar[7] && GetPlayerClan(playerid) != 2) { RemovePlayerFromVehicle(playerid); SendClientMessage(playerid, YAMAGUCHI_COR, "Você não faz parte do clan Yamaguchi Gumi!");
return 1; }
else if (vehicleid >= SinaloaCar[0] && vehicleid <= SinaloaCar[7] && GetPlayerClan(playerid) != 3) { RemovePlayerFromVehicle(playerid); SendClientMessage(playerid, SINALOA_COR, "Você não faz parte do clan Cartel de Sinaloa!");
return 1; }
else if (vehicleid >= ZetasCar[0] && vehicleid <= ZetasCar[7] && GetPlayerClan(playerid) != 4) { RemovePlayerFromVehicle(playerid); SendClientMessage(playerid, ZETAS_COR, "Você não faz parte do clan Los Zetas!");
return 1; }
else if (vehicleid >= BOPECar[0] && vehicleid <= BOPECar[9] && GetPlayerClan(playerid) != 5) { RemovePlayerFromVehicle(playerid); SendClientMessage(playerid, BOPE_COR, "Você não faz parte do clan BOPE!");
return 1; }
else if (vehicleid >= PMCar[0] && vehicleid <= PMCar[9] && GetPlayerClan(playerid) != 6) { RemovePlayerFromVehicle(playerid); SendClientMessage(playerid, PM_COR, "Você não faz parte do clan Polícia Militar!");
return 1; }
else if (vehicleid >= ExercitoCar[0] && vehicleid <= ExercitoCar[9] && GetPlayerClan(playerid) != 7) { RemovePlayerFromVehicle(playerid); SendClientMessage(playerid, EXERCITO_COR, "Você não faz parte do clan Exército!");
return 1; }
// else if (GetVehicleModel(vehicleid) == 510 && GetPVarInt(playerid, "JornalEntregando")) { // SetPVarInt(playerid, "InVehicleTrabalho", 1); // SendClientMessage(playerid, Verde, "Você voltou para o seu veículo de trabalho. Continua seu trajeto!"); // KillTimer(TimerOutTrabalho[playerid]);
// return 1; // }
for (new i = 0; i < sizeof(CaminhoneiroCar); i++) { if (vehicleid == CaminhoneiroCar[i] && GetPlayerJob(playerid) != PROF_CAMINHONEIRO) { RemovePlayerFromVehicle(playerid); SendClientMessage(playerid, Vermelho, "Você não é um caminhoneiro(a)!");
return 1; } else if (vehicleid == CaminhoneiroCar[i] && CaminhoneiroEntregando[playerid]) { SetPVarInt(playerid, "InVehicleTrabalho", 1); SendClientMessage(playerid, Verde, "Você voltou para o seu veículo de trabalho. Continue seu trajeto!"); KillTimer(TimerOutTrabalho[playerid]);
if(newstate == PLAYER_STATE_ONFOOT && oldstate == PLAYER_STATE_DRIVER && AcInfo[playerid][ANaAuto]) { SendClientMessage(playerid, Vermelho, "| INFO | Você saiu do seu veículo, portanto o teste foi cancelado"); EndAC(playerid); }
Bom dia pessoal, não sei se só acontece comigo, mas quando crio algum actor, ele simplesmente as vezes spawna em outra posição(não naquela aonde foi criado), existe alguma correção para isso?
Olá pessoal, boa noite a todos. Estou com um problema, onde sempre que o player mobile (apenas mobile) utiliza o comando /profissao, simplesmente somem os botões da tela dele, e o mesmo precisa reiniciar seu jogo para voltar. O que poderia estar causando isso? Segue abaixo o código do comando em específico. Outra coisa que gostaria de saber também relacionado aos jogadores mobile, é que o checkpoint para eles sempre ficam brancos, enquanto os do PC continuam vermelhos. Existe alguma forma de mudar isso? Desde já, agreço a todos por toda e qualquer ajuda, muito obrigado!
Código PHP:
CMD:profissao(playerid) { new cmd_profissao[500];
switch(GetPlayerJob(playerid)) { case PROF_DESEMPREGADO: SendClientMessage(playerid, Vermelho, "| INFO | Você não possui um emprego. Vá até a agência de empregos para adquirir o seu."); case PROF_GARI: format(cmd_profissao, sizeof(cmd_profissao), "{00FF00}x Recolher o lixo da cidade e a transformar em um local mais limpo\n\n\ {FFFF00}/cp {FFFFFF}- Chat Profissão\n"); case PROF_MECANICO: format(cmd_profissao, sizeof(cmd_profissao), "{00FF00}x Consertar veículos pela cidade sempre que for solicitado\n\n\ {FFFF00}/cp {FFFFFF}- Chat Profissão\n\ {FFFF00}/repararmec {FFFFFF}- Repara veículo quebrado próximo\n"); case PROF_CAMINHONEIRO: format(cmd_profissao, sizeof(cmd_profissao), "{00FF00}x Realizar entrega de mercadorias pela cidade, o mais rapidamente possível\n\n\ {FFFF00}/cp {FFFFFF}- Chat Profissão\n\ {FFFF00}/carregarcaminhao {FFFFFF}- Indica o checkpoint para carregar o caminhão\n\ {FFFF00}/descarregarcaminhao {FFFFFF}- Realiza a entrega no local indicado\n\ {FFFF00}/cancelarentrega {FFFFFF}- Cancela a entrega atual\n"); case PROF_ENTREGADOR_DE_JORNAL: format(cmd_profissao, sizeof(cmd_profissao), "{00FF00}x Levar os jornais até as residências, permitindo que cada morador veja as notícias atuais\n\n\ {FFFF00}/cp {FFFFFF}- Chat Profissão\n\ {FFFF00}/entregarjornais {FFFFFF}- Inicia a rota para entrega de jornais\n\ {FFFF00}/finalizarjornais {FFFFFF}- Finaliza a rota de entrega dos jornais"); default: SendClientMessage(playerid, Laranja, "| ERRO | Essa profissão ainda não foi documentada"); }
ShowPlayerDialog(playerid, 32, DIALOG_STYLE_MSGBOX, "Comandos de sua profissão", cmd_profissao, "Fechar", "");
return 1; }
Eu também não tenho tanta experiência quanto a otimização de strings. Creio que exista uma forma melhor de construir algo com muito texto, ficarei feliz se também conseguirem me ajudar quanto a isso.
oi galera criei um sistema de entregador de jornal ainda ta bem basico pois estou estudando para criar coisas mais avançadas em pawno samp , bem minha duvida e porq nao esta indo para os proximos checkpoints ? pois quando uso o comando /ej o primeiro checkpoint aparece chegando la nao acontece mais nada que eu programei no codigo queria saber onde errei
Código:
//criado por andré santos
#include <a_samp>
#include <zcmd>
new empregojornal[MAX_PLAYERS];
new JornalCar[6]; // sempre +1
new pegouemprego[MAX_PLAYERS];
public OnPlayerStateChange(playerid, newstate, oldstate)
{
if (!IsPlayerConnected(playerid)) return 0;
if (newstate == PLAYER_STATE_DRIVER)
{
new veiculo = GetPlayerVehicleID(playerid);
if (veiculo >= JornalCar[0] && veiculo <= JornalCar[5])
{
if(!pegouemprego[playerid])
{
SendClientMessage(playerid, -1, "voce nao e um entregador de jornal por isso nao pode usar esse veiculo!");
RemovePlayerFromVehicle(playerid);
return 1;
}
}
}
return 1;
}
//comandos do emprego
CMD:ajudaemp(playerid, params[])
{
new string[250];
if(!pegouemprego[playerid])return SendClientMessage(playerid, -1, "ERRO: voce nao e um entregador de jornal por isso nao pode usar esse comando!");
if(pegouemprego[playerid])
{
strcat(string, "voce agora e um entregador de jornal use /ej\n");
strcat(string, "para iniciar seu trabalho! para voce parar seu trabalho\n");
strcat(string, "use /pjornal para parar seu trabalho\n");
strcat(string, "voce ganhar dinheiro a cada entrega realizada\n");
strcat(string, "voce tambem pode usar /hq para ir ao local do seu trabalho\n");
strcat(string, "boa sorte e divirta se\n");
}
ShowPlayerDialog(playerid, 1000, DIALOG_STYLE_LIST, "ajuda entregador de jornal", string, "OK","OK");
return 1;
}
CMD:serentregador(playerid)
{
pegouemprego[playerid] = true;
SendClientMessage(playerid, -1, "voce agora e um entregador de jornal use /ej!");
return 1;
}
CMD:ej(playerid)
{
if (!IsPlayerConnected(playerid)) return 0;
new vehicleid = GetPlayerVehicleID(playerid);
if(!pegouemprego[playerid])return SendClientMessage(playerid, -1, "ERRO: voce nao e um entregador de jornal /serentregador!");
if (vehicleid < JornalCar[0] || vehicleid > JornalCar[5]) return SendClientMessage(playerid, -1, "ERRO: Você não está no veículo de entrega!");
if (empregojornal[playerid] > 1 && empregojornal[playerid] < 5) return SendClientMessage(playerid, -1, "ERRO: Termine de Entregar Seus Jornais Antes de Pegar Outros!");
//if (!IsPlayerInRangeOfPoint(playerid, 2.0, 734.6573, -1341.5311, 13.5249)) return SendClientMessage(playerid, -1, "ERRO: Você não está no local de pegar jornal!");
empregojornal[playerid] = 1;
SetPlayerCheckpoint(playerid, 787.6259,-1543.4647,13.0615, 1.0);
SendClientMessage(playerid, -1, "*Entregue Jornal, e você receberá dinheiro!");
return 1;
}
CMD:pjornal(playerid)
{
if (!IsPlayerConnected(playerid)) return 0;
if (!pegouemprego[playerid]) return SendClientMessage(playerid, -1, "ERRO: Você não é Entregador De Jornal!");
if (empregojornal[playerid] < 2) return SendClientMessage(playerid, -1, "ERRO: Termine Pelo Menos 2 Jornais Para Cancelar O Servico!!");
if (empregojornal[playerid] < 1) return SendClientMessage(playerid, -1, "ERRO: Você não está trabalhando, use /entregarj para trabalhar");
empregojornal[playerid] = 0;
DisablePlayerCheckpoint(playerid);
SendClientMessage(playerid, -1, "INFO: Entrega Cancelada!");
return 1;
}
public OnPlayerEnterCheckpoint(playerid)
{
if (!IsPlayerConnected(playerid)) return 0;
new vehicleid = GetPlayerVehicleID(playerid);
Boa noite, queria saber se a nova versão do pawno tenha como compilar gm de servidores, a nova versão é a 4.1.7152 (2024-03-24) lançada pela compuphase.
fala rapaziada, blz?!... entao, eu tenho um comando de dar cadeia no player, ai eu queria que verificasse se estiver online ou offline so pelo id fixo que o mysql possibilita q é´o auto increment, que é o 1 em diante, so que quando vou fazer um teste, na parte do id, ele tbm usa o id tab, nao quero isso, quero q so verifique se online ou nao, e de cadeia somente pelo id fixo, e nao pelo id tab que é 0 ou um outro aleatorio.... COMO POSSO RESOLVER ISSO? nao verificar pelo ID do tab, e sim do id fixo?!! desde ja agradeço.