[Ajuda]Comando sincronizar
#1

Olб pessoal hoje eu venho pedir a ajuda de como criar um sistema de sincronizaзгo entre veiculos, tipo sincroniza dois veiculos o de traz segue o da frente. Isso seria bom em operaзхes para que tipo os veiculos pudessem seguir um a outro. E isso й possivel. Se poderem me ajudar agradeзo.
Reply
#2

Se quiser uma coisa precisa e difнcil de se fazer utilize esse plugin, jб se quer uma coisa simples sem precisгo, й sу obter a posiзгo de um veнculo e setar em outro.
Reply
#3

poderia me explicar o codigo, pois sou novato na бrea pawno, tipo й dificil setar um carro ao outro,
Reply
#4

Nunca fiz isso na minha vida, nгo sei fazer muito bem, fiz um sistema aqui, que pode ser que dк certo:
Topo do GM:
pawn Код:
new playerseguido;
new vID;
new vIDplayer;
new Float: ChrisBrowns2X, Float: ChrisBrowns2Y, Float: ChrisBrowns2Z;
new timerperseguicao;
new bool: emperseguicao[MAX_PLAYERS];
forward AtualizarPerseguicao(playerid);
Em OnPlayerCommandText:
pawn Код:
if(strcmp(cmd, "/seguir", true) == 0)
    {
        tmp = strtok(cmdtext, idx);
        playerseguido = ReturnUser(tmp);
        if(!strlen(tmp)) return SendClientMessage(playerid,-1,"Use /seguir [ID]");
        if(emperseguicao[playerid] == true) return SendClientMessage(playerid,-1,"Vocк jб esta em uma perseguiзao");
        if(!IsPlayerConnected(playerseguido)) return SendClientMessage(playerid,-1,"Esse player nгo estб online.");
        if(!IsPlayerInAnyVehicle(playerseguido)) return SendClientMessage(playerid,-1,"Esse player nгo estб em um veiculo.");
        if(!IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid,-1,"Vocк nгo estб em um veiculo.");
        vID = GetPlayerVehicleID(playerseguido);
        vIDplayer = GetPlayerVehicleID(playerid);
        GetVehiclePos(vID, Float: ChrisBrowns2X, ChrisBrowns2Y, ChrisBrowns2Z);
        SetVehiclePos(vIDplayer, ChrisBrowns2X-5, ChrisBrowns2Y-2, ChrisBrowns2Z);
        timerperseguicao = SetTimerEx("AtualizarPerseguicao",1000, true, "i", playerid);
        SendClientMessage(playerid,-1,"Perseguiзao iniciada");
        emperseguicao[playerid] = true;
        return 1;
    }
    if(strcmp(cmd, "/pararperseguicao", true) == 0)
    {
        SendClientMessage(playerid,-1,"Perseguiзao finalizada.");
        KillTimer(timerperseguicao);
        emperseguicao[playerid] = false;
        return 1;
    }
Poe logo abaixo da public onplayercommandtext:
pawn Код:
public AtualizarPerseguicao(playerid)
{
    GetVehiclePos(vID, Float: ChrisBrowns2X, ChrisBrowns2Y, ChrisBrowns2Z);
    SetVehiclePos(vIDplayer, ChrisBrowns2X-5, ChrisBrowns2Y-2, ChrisBrowns2Z);
    return 1;
}
/seguir inicia a perseguiзao
/pararperseguicao finaliza a perseguiзao

@EDIT: ATUALIZADO, agora verifica se jб tб em perseguiзao ao digitar /seguir

Ajudei ? Dб um rep pf?
Reply
#5

vlw +rep para vocк.
Reply
#6

Cara eu a concelho diminuir o tempo do Timer para ficar uma coisa mais Suave e Colocar para Setar o Angulo de acordo com o Carro seguido

Pegando o exemplo do Humilde:
Topo do GM:
pawn Код:
new playerseguido;
new vID;
new vIDplayer;
new Float: ChrisBrowns2X, Float: ChrisBrowns2Y, Float: ChrisBrowns2Z;
new timerperseguicao;
new bool: emperseguicao[MAX_PLAYERS];
forward AtualizarPerseguicao(playerid);
Em OnPlayerCommandText:
pawn Код:
if(strcmp(cmd, "/seguir", true) == 0)
    {
        tmp = strtok(cmdtext, idx);
        playerseguido = ReturnUser(tmp);
        if(!strlen(tmp)) return SendClientMessage(playerid,-1,"Use /seguir [ID]");
        if(emperseguicao[playerid] == true) return SendClientMessage(playerid,-1,"Vocк jб esta em uma perseguiзao");
        if(!IsPlayerConnected(playerseguido)) return SendClientMessage(playerid,-1,"Esse player nгo estб online.");
        if(!IsPlayerInAnyVehicle(playerseguido)) return SendClientMessage(playerid,-1,"Esse player nгo estб em um veiculo.");
        if(!IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid,-1,"Vocк nгo estб em um veiculo.");
        vID = GetPlayerVehicleID(playerseguido);
        vIDplayer = GetPlayerVehicleID(playerid);
        GetVehiclePos(vID, Float: ChrisBrowns2X, ChrisBrowns2Y, ChrisBrowns2Z);
        SetVehiclePos(vIDplayer, ChrisBrowns2X-5, ChrisBrowns2Y-2, ChrisBrowns2Z);
        timerperseguicao = SetTimerEx("AtualizarPerseguicao",250, true, "i", playerid);
        SendClientMessage(playerid,-1,"Perseguiзao iniciada");
        emperseguicao[playerid] = true;
        return 1;
    }
    if(strcmp(cmd, "/pararperseguicao", true) == 0)
    {
        SendClientMessage(playerid,-1,"Perseguiзao finalizada.");
        KillTimer(timerperseguicao);
        emperseguicao[playerid] = false;
        return 1;
    }
Poe logo abaixo da public onplayercommandtext:
pawn Код:
public AtualizarPerseguicao(playerid)
{
    new Float:c_rot;
    GetVehicleZAngle(vID, c_rot);
    SetVehicleZAngle(vIDplayer, c_rot);
    GetVehiclePos(vID, Float: ChrisBrowns2X, ChrisBrowns2Y, ChrisBrowns2Z);
    SetVehiclePos(vIDplayer, ChrisBrowns2X-5, ChrisBrowns2Y-2, ChrisBrowns2Z);
    return 1;
}
Reply


Forum Jump:


Users browsing this thread: 3 Guest(s)