Bom rapaziada, eu to com um problema sérissimo no contador das kills do meu serve, eu já chequei os pKills, Killerid, e por ai vai, q são as váriaveis q armazena as kill do serve, qnd mata, aparece no chat kill normal, tem uma txtdraw que quado vc mata, aparece o nick de quem matou, mas no RG, não sobe as kills q você fez. Alguém sabe onde eu posso fuçar pra solucionar esse erro?
Olá, quando eu crio uma textdraw tipo text eu não posso ativar a user box, se eu ativar ele simplesmente o click não funciona, resumindo eu não consigo usar mais a função de clicar na textdraw texto, então fica impossível de eu criar uma textdraw.
Estou com um sistema que, quando eu entro no checkpoint, ele seta um objeto dentro do carro.
Mas aí, quando é para "descarregar" esse objeto utilizando o DestroyDynamicObject ele não funciona, o objeto permanece, porém, quando eu crio outro veículo com mesmo id, esse objeto some.
Código:
public OnPlayerEnterCheckpoint(playerid)
{
new caixao = CreateDynamicObject(19339, 0.0, 0.0, 0.0, 0.0, 0.0, 96.0);
new vehicleid = GetPlayerVehicleID(playerid);
if(GetVehicleModel(GetPlayerVehicleID(playerid)) == 442)
{
if(JobStatus[playerid] == 1)
{
if(IsPlayerInLosSantos(playerid))
{
JobStatus[playerid] = 2;
AttachDynamicObjectToVehicle(caixao, vehicleid, 0.0000, -1.7299, 0.2700, 360.0000, 0.0000, 270.2000);
CheckPoinTS[0] = SetPlayerCheckpoint(playerid, 920.3161, -1103.0944, 24.2883, 5.0);
ShowLegendaForPlayer(playerid, "~w~Leve o Caixao ate o ~r~CEMITERIO", 5000);
}
else if (IsPlayerInSanFierro(playerid))
{
JobStatus[playerid] = 2;
AttachDynamicObjectToVehicle(caixao, vehicleid, 0.0000, -1.7299, 0.2700, 360.0000, 0.0000, 270.2000);
CheckPoinTS[4] = SetPlayerCheckpoint(playerid, -2532.3445,-19.1102,16.4219, 5.0);
ShowLegendaForPlayer(playerid, "~w~Leve o Caixao ate o ~r~CEMITERIO", 5000);
}
else if (IsPlayerInLasVenturas(playerid))
{
JobStatus[playerid] = 2;
AttachDynamicObjectToVehicle(caixao, vehicleid, 0.0000, -1.7299, 0.2700, 360.0000, 0.0000, 270.2000);
CheckPoinTS[5] = SetPlayerCheckpoint(playerid, 1544.0962,750.8088,10.8279, 5.0);
ShowLegendaForPlayer(playerid, "~w~Leve o Caixao ate o ~r~'CREMATORIO'", 5000);
}
}
else
{
new Rotas = random(sizeof(RandomLocateLS));
new Rotas2 = random(sizeof(RandomLocateSF));
new Rotas3 = random(sizeof(RandomLocateLV));
Estou lidando com um problema de hack no servidor. O hack está forçando todos os jogadores a retornarem ao ponto inicial (spawn) e alterando o estado de alguns deles. Alguém conhece o nome ou sabe algo sobre isso? Preciso dessa informação para encontrar uma solução.
Boa Tarde, Bom Meu sistema está QUASE Primeiramente, Eu Spawno um carro(411) usando o cmd /veh que spawna um carro 411, aí okay, se eu entrar nele, Clicar Y, Ele seta o Carro Ligado e Timer de gasolina, Se eu aperto Y Novamente, O veiculo é desligado, E o Timer é parado, Mas se eu spawnar outro carro, /veh, Eu terei 2 infernus, Se eu desligar o primeiro que criei, E deixar Ligado o que criei por último ligado, E voltar por qual criei primeiro, E desligar, Ele continua sentando o timer, Em vez de quebrar, Algum Programador mas esperiente poderia me ajudar?
Código PHP:
stock motorcarro(playerid)
{ if (GetPlayerState(playerid) == PLAYER_STATE_DRIVER)
Boa tarde a todos presentes!.. Ja tem alguns dias que eu ando tentando refazer um comando bem util para meu servidor, porem estou com dificuldades para adaptar o seguinte IF de tempo no Comando.. vou deixar o codigo do meu comando a baixo, eu gostaria de adicionar um temporizador cada vez que o player usar o comando /entregarprods ou /entregarprodutos ambos sao os mesmos.. mas ate o momento estou sem sucesso Qnd o player usa o comando citado ele fara a entrega para o local e recebera um valor aleatorio e eu gostaria de deixar o cmd com temporizador podendo usar de tempos em tempos e nao toda hora.. agradeço desde ja
Descrição Geral: Vamos desenvolver um sistema de missões dinâmicas onde os jogadores podem aceitar missões variadas, completá-las e receber recompensas. As missões serão geradas aleatoriamente e terão diferentes objetivos, como entregar itens, competir em corridas, ou combater NPCs.
Passo 1:Configurando a Estrutura Básica domission_system.pwn
Primeiro, criaremos a estrutura básica do arquivo mission_system.pwn. Este arquivo será o núcleo do nosso sistema de missões, onde inicializaremos e gerenciaremos as diferentes missões.
Código PHP:
// mission_system.pwn #include <a_samp>
// Constantes e variáveis globais #define MAX_MISSIONS 10 new MissionData[MAX_MISSIONS][3]; // Array para armazenar dados das missões new bool:IsMissionActive[MAX_MISSIONS] = {false, ...};
public OnGameModeInit() { InitializeMissions(); return 1; }
public OnPlayerConnect(playerid) { // Código para inicializar dados do jogador return 1; }
// Função para inicializar missões InitializeMissions() { // Inicialização das missões }
// Função para ativar uma missão ActivateMission(playerid, missionid) { // Código para ativar a missão para o jogador }
// Função para completar uma missão CompleteMission(playerid, missionid) { // Código para marcar a missão como completada }
Esse é apenas o começo da estrutura do script. Aqui, definimos algumas constantes, variáveis globais para gerenciar as missões, e protótipos de funções importantes como InitializeMissions, ActivateMission e CompleteMission.
No próximo passo, detalharemos a lógica de inicialização e gerenciamento das missões.
Passo 2:Implementando a Função de Inicialização das Missões
Agora, vamos detalhar a função InitializeMissions, que será responsável por configurar as missões iniciais no jogo. Vamos supor que cada missão tenha um tipo (por exemplo, entrega, corrida, combate), uma descrição e um status de ativação.
Código PHP:
// Função para inicializar missões InitializeMissions() { // Exemplo de inicialização de missões // MissionData[missionid][0] = tipo da missão // MissionData[missionid][1] = descrição da missão // MissionData[missionid][2] = recompensa da missão
// Missão 1: Entrega MissionData[0][0] = 1; // Tipo 1 para entrega MissionData[0][1] = "Entregue pacotes em Los Santos"; // Descrição MissionData[0][2] = 1000; // Recompensa
// Missão 2: Corrida MissionData[1][0] = 2; // Tipo 2 para corrida MissionData[1][1] = "Vença a corrida em San Fierro"; // Descrição MissionData[1][2] = 1500; // Recompensa
// Adicione mais missões conforme necessário // ... }
Essa função define os tipos, descrições e recompensas de várias missões. Estamos utilizando um array multidimensional MissionData para armazenar essas informações. Claro, isso é apenas um exemplo; você pode expandir e personalizar conforme a necessidade do seu servidor.
Passo 3: Implementando as Funções para Ativar e Completar Missões
Agora, vamos desenvolver as funções ActivateMission e CompleteMission. A função ActivateMission será usada para ativar uma missão para um jogador específico, e CompleteMission para marcar uma missão como completada.
// Função para completar uma missão CompleteMission(playerid, missionid) { if(missionid < 0 || missionid >= MAX_MISSIONS || !IsMissionActive[missionid]) { SendClientMessage(playerid, -1, "Missão inválida ou não ativa."); return 0; }
// Marcar a missão como completada IsMissionActive[missionid] = false; // Código para finalizar a missão (ex: dar recompensa, limpar objetos, etc.) // ...
Essas funções gerenciam o estado das missões para os jogadores. ActivateMission verifica se a missão é válida e se não está ativa antes de ativá-la. CompleteMission também verifica a validade e o estado da missão antes de marcá-la como completada e executar a lógica de conclusão.
Passo 4: Adicionando Lógica Específica para Diferentes Tipos de Missões
Agora, vamos expandir a funcionalidade do nosso sistema adicionando lógica específica para diferentes tipos de missões. Vamos usar a função ActivateMission como exemplo para implementar a lógica de uma missão de entrega.
Código PHP:
// Função para ativar uma missão ActivateMission(playerid, missionid) { // ... código anterior ...
switch(MissionData[missionid][0]) { case 1: // Missão de entrega // Código para configurar a missão de entrega // Exemplo: criar um veículo de entrega, definir localização de entrega, etc. CreateDeliveryMission(playerid, missionid); break; case 2: // Missão de corrida // Código para configurar a missão de corrida // Exemplo: definir ponto de partida e chegada, criar checkpoints, etc. CreateRaceMission(playerid, missionid); break; // Adicionar mais tipos de missão conforme necessário }
// ... restante do código ... }
// Função para criar uma missão de entrega CreateDeliveryMission(playerid, missionid) { // Implementar a lógica de criação da missão de entrega // Exemplo: definir local de coleta e entrega, criar itens para entregar, etc. // ... }
// Função para criar uma missão de corrida CreateRaceMission(playerid, missionid) { // Implementar a lógica de criação da missão de corrida // Exemplo: definir percurso da corrida, criar veículo, etc. // ... }
Neste passo, usamos a estrutura switch para tratar diferentes tipos de missões. Cada caso no switch corresponde a um tipo de missão, e cada um desses casos chama uma função específica que configura a missão. Isso permite uma expansão fácil e organizada do sistema de missões.
Passo 5: Adicionando Interações com Jogadores
Vamos implementar a interação com os jogadores para que eles possam aceitar e acompanhar o progresso das missões. Para isso, adicionaremos comandos e funções relacionadas à interação do jogador com o sistema de missões.
Código PHP:
// Comando para listar missões disponíveis CMD:missões(playerid, params[]) { new string[128]; format(string, sizeof(string), "Missões disponíveis:\n"); for(new i = 0; i < MAX_MISSIONS; i++) { if(!IsMissionActive[i]) { strcat(string, MissionData[i][1]); // Adiciona descrição da missão strcat(string, "\n"); } } SendClientMessage(playerid, -1, string); return 1; }
// Comando para aceitar uma missão CMD:aceitarmissao(playerid, params[]) { new missionid; if(sscanf(params, "d", &missionid) || missionid < 0 || missionid >= MAX_MISSIONS) { SendClientMessage(playerid, -1, "ID de missão inválido."); return 0; }
ActivateMission(playerid, missionid); return 1; }
// Comando para verificar o progresso da missão CMD:progressomissao(playerid, params[]) { new missionid; if(sscanf(params, "d", &missionid) || missionid < 0 || missionid >= MAX_MISSIONS) { SendClientMessage(playerid, -1, "ID de missão inválido."); return 0; }
// Código para mostrar o progresso da missão // Exemplo: "Missão 1: Entrega - Progresso: 50%" // ...
return 1; }
Esses comandos permitem que os jogadores vejam as missões disponíveis, aceitem uma missão e verifiquem o progresso de uma missão ativa. Isso cria uma interação direta entre o jogador e o sistema de missões, aumentando a imersão e a jogabilidade.
Passo 6: Implementando a Lógica de Progresso e Conclusão das Missões
Agora, vamos adicionar a lógica para o progresso e a conclusão das missões. Isso inclui atualizar o status da missão para o jogador e conceder recompensas após a conclusão.
Código PHP:
// Suponha que temos uma variável global ou um array para rastrear o progresso da missão // Exemplo: new MissionProgress[MAX_PLAYERS][MAX_MISSIONS];
// Função para atualizar o progresso da missão UpdateMissionProgress(playerid, missionid, progress) { if(missionid < 0 || missionid >= MAX_MISSIONS) { return 0; }
MissionProgress[playerid][missionid] = progress;
// Código para informar ao jogador sobre o progresso atualizado // Exemplo: "Missão 1: Entrega - Progresso: 80%" // ... }
// Completar a missão e conceder recompensa CompleteMission(playerid, missionid) { // ... código anterior ...
// Conceder recompensa ao jogador new reward = MissionData[missionid][2]; GivePlayerMoney(playerid, reward); SendClientMessage(playerid, -1, "Missão completada! Recompensa recebida.");
// Resetar o progresso da missão para o jogador MissionProgress[playerid][missionid] = 0;
return 1; }
Neste passo, implementamos funções para atualizar o progresso das missões e para completá-las, incluindo a lógica de recompensa. A função UpdateMissionProgress atualiza o progresso da missão para um jogador específico, enquanto CompleteMission agora também concede a recompensa ao jogador.
Passo 7: Revisão e Teste do Sistema de Missões
Para finalizar, vamos revisar e testar nosso sistema de missões para garantir que tudo está funcionando corretamente. Aqui estão algumas etapas para testar e validar o sistema:
1. Testar Comandos Individuais:
Verificar se o comando /missões lista as missões disponíveis corretamente.
Testar o comando /aceitarmissao para diferentes missões e garantir que elas são ativadas.
Usar o comando /progressomissao para verificar o progresso das missões ativas.
2. Simular Cenários de Missão:
Simular a execução de diferentes tipos de missões (entrega, corrida, etc.) e verificar se o progresso e a conclusão estão funcionando como esperado.
Testar a lógica de recompensa ao completar missões.
3. Verificar Robustez do Sistema:
Testar situações de erro, como tentar ativar uma missão já ativa ou completar uma missão não iniciada.
Verificar o comportamento do sistema com múltiplos jogadores.
4. Revisão do Código:
Revisar o código para garantir que não há erros de lógica ou de sintaxe.
Otimizar o código, se necessário, para melhorar a performance.
5. Feedback dos Jogadores:
Após implementar o sistema no servidor, coletar feedback dos jogadores para futuras melhorias.
Você agora tem um sistema de missões dinâmicas, que inclui:
Estrutura básica do sistema de missões.
Funções para inicializar, ativar e completar missões.
Lógica específica para diferentes tipos de missões.
Comandos para interação do jogador com o sistema de missões.
Olá, estou com problema fiz um npc de carro forte para andar de ls até sf porém quando eu início ele manualmente ou até msm sozinho o npc não dirige o carro e player que está logado no servidor é jogado pra dentro dele, como se player fosse o npc alguém pode ajudar!
Estou querendo fazer um sistema na minha GM,
gta 5 style location no samp a tela vai de cima pra baixo até chegar no player igual GTA 5
Quando entrar no jogoS eria mais omenos assim
ttps://youtu.be/L9-InQfAMSM?si=F5JoE2K10YvovRyG
Gostaria de saber como faz isso, e se vocês podem mandar o código pra eu refazer aqui, ou me ajudarem a fazer ele.
queria adicionar o mapicon R ao criar o radar e que ficasse salvo quando carregar os radares so isso nao tenho experiencia suficiente de fazer isso nao quero que modifique o codigo simplesmente so adicionar o mapicon R ao criar o rAadar que fique salvo na posicao criada , desculpem nao sei colocar em pasterbin sou leigo ainda em pc
Código PHP:
#define PastaRadares "Radares/Radar%d.ini"
static lString[256], radarid[MAX_PLAYERS], vel, Text3D:TRadar[MAX_RADAR], ObjetoRadar[2][MAX_RADAR], CriandoRadar, Float:PosXX, Float:PosYY, Float:PosZZ, Float:Angulo; enum radar { Float:lPosXX, Float:lPosYY, Float:lPosZZ, Float:lAngulo, lVelocidade, }; enum pInfo { PPassouRadar } new InfoRadar[MAX_RADAR][radar]; new Text:Flash; new gstring[256]; new Bit1: aradar <MAX_PLAYERS>; new PlayerInfo[MAX_PLAYERS][pInfo];
forward RezetarRadar(playerid); public RezetarRadar(playerid) { PlayerInfo[playerid][PPassouRadar] = 0; } forward Flex(playerid); public Flex(playerid) { if (IsPlayerConnected(playerid)) { TextDrawHideForPlayer(playerid, Flash); } }
//////////////////////////////////////////////////////////////////////////////// forward SalvarRadares(); public SalvarRadares() { new strpasta[200];
for (new rad = 0; rad < MAX_RADAR; rad++) { format(strpasta, sizeof(strpasta), PastaRadares, rad); if (dini_Exists(strpasta)) { dini_IntSet(strpasta, "Velocidade", InfoRadar[rad][lVelocidade]); dini_FloatSet(strpasta, "PosXX", InfoRadar[rad][lPosXX]); dini_FloatSet(strpasta, "PosYY", InfoRadar[rad][lPosYY]); dini_FloatSet(strpasta, "PosZZ", InfoRadar[rad][lPosZZ]); dini_FloatSet(strpasta, "Angulo", InfoRadar[rad][lAngulo]); dini_IntSet(strpasta, "MapIcon", radarid[rad]); dini_IntSet(strpasta, "MapIconColor", COLOR_LIGHTRED); MapIconSet(radarid[rad], InfoRadar[rad][lPosXX], InfoRadar[rad][lPosYY], InfoRadar[rad][lPosZZ], MAPICON_LOCAL, COLOR_LIGHTRED); } } return 1; }
//////////////////////////////////////////////////////////////////////////////// forward CarregarRadares(); public CarregarRadares() { new strradar[100], strpasta[200];