[AJUDA] Funзгo para criaзгo de trens.
#1

Galera, й seguinte. Estou fazendo um sistema, no qual o player digita um comando, й criado um trem (id 537) nas coordenadas X,Y,Z (sempre nos trilhos, claro). Eu tentei algumas funзхes como CreateVehicle, mas nunca da certo. O que faзo?
Desde jб agradeзo.
Abraзos!
Reply
#2

Mostra o cmd q Vc Fez !!!
Reply
#3

Nгo й possнvel criar trens com a funзгo CreateVehicle .



Crie um FS com o seguinte conteъdo :


pawn Код:
#include <a_samp>


public OnFilterScriptInit()
{
    new STR[85], File:Trem;
    Trem = fopen("Trem.txt", io_read);
    fread(Trem, STR);
    fclose(Trem);
    new Coord[4][20], Delimitadores[3], y;
    for(new x = 0; STR[x] != EOS; x++)
    {
        if(STR[x] != '|')   continue;
        Delimitadores[y] = x;
        y++;
    }
    strmid(Coord[0], STR, 0, Delimitadores[0]);
    strmid(Coord[1], STR, Delimitadores[0] + 1, Delimitadores[1]);
    strmid(Coord[2], STR, Delimitadores[1] + 1, Delimitadores[2]);
    strmid(Coord[3], STR, Delimitadores[2] + 1, strlen(STR));
    AddStaticVehicle(537, floatstr(Coord[0]), floatstr(Coord[1]), floatstr(Coord[2]), floatstr(Coord[3]), 1, 1);
    fremove("Trem.txt");
    return 1;
}

Em seguida compile o mesmo, renomeie o arquivo .amx resultante para Trem.amx e coloque-o na sua pasta filterscripts.



Depois disso passe a usar a funзгo abaixo no GM para criar trens durante o jogo :


pawn Код:
stock CriarTrem(Float:X, Float:Y, Float:Z, Float:Rotacao)
{
    new STR[85], File:Trem;
    format(STR, 85, "%f|%f|%f|%f", X, Y, Z, Rotacao);
    Trem = fopen("Trem.txt", io_write);
    fwrite(Trem, STR);
    fclose(Trem);
    SendRconCommand("reloadfs Trem");
    return 1;
}


Espero ter ajudado .
Reply
#4

Amigo, muito obrigado pela dedicaзгo, mas isso nгo estб pegando. Na verdade eu queria fazer o seguinte:
Haverб apenas 1 trem na estaзгo. Quando o player entrar, ele cria outro no lugar daquele, e quando o player sair do trem, ele exclui. Assim nгo precisarб ter muitos trens na estaзгo, e evitarб muitos trens espalhados pelo mapa.
Pode me ajudar? Abraзos!
Reply
#5

Quote:
Originally Posted by Mutuka_XTreme
Посмотреть сообщение
Amigo, muito obrigado pela dedicaзгo, mas isso nгo estб pegando. Na verdade eu queria fazer o seguinte:
Haverб apenas 1 trem na estaзгo. Quando o player entrar, ele cria outro no lugar daquele, e quando o player sair do trem, ele exclui. Assim nгo precisarб ter muitos trens na estaзгo, e evitarб muitos trens espalhados pelo mapa.
Pode me ajudar? Abraзos!
Adicione isto ao seu OnGameModeInit :


pawn Код:
TremID = AddStaticVehicle(537, TremX, TremY, TremZ, TremRotacao, 1, 1);

E mude esta linha dele:


pawn Код:
public OnGameModeInit()

Para:


pawn Код:
public OnGameModeInit() <Trem:nao>

Por fim, coloque :


pawn Код:
//No Topo do GM:

new TremJogador[MAX_PLAYERS];
new Float:NovoTrem[4];
stock TremID;
#define TremX 2777.5945 //Troque 2777.5945 pela coordenada X da posiзгo do trem.
#define TremY 1642.2833 //Troque 1642.2833 pela coordenada Y da posiзгo do trem.
#define TremZ 10.8203 //Troque 10.8203 pela coordenada Z da posiзгo do trem.
#define TremRotacao 280.0056 //Troque 280.0056 pela coordenada de rotaзгo do trem.



//No main:

state Trem:nao;
    OnGameModeInit();


//No OnPlayerStateChange:

if(newstate == PLAYER_STATE_DRIVER && GetPlayerVehicleID(playerid) == TremID)
    {
        TremJogador[playerid] = TremID;
        TremID = CriarTrem(TremX, TremY, TremZ, TremRotacao);
    }
    if(oldstate == PLAYER_STATE_DRIVER)
    {
        DestroyVehicle(TremJogador[playerid]);
        TremJogador[playerid] = 0;
    }



//E, no Final do GM:


public OnGameModeInit() <Trem:sim>
{
    return AddStaticVehicle(537, NovoTrem[0], NovoTrem[1], NovoTrem[2], NovoTrem[3], 1, 1);
}


stock CriarTrem(Float:X, Float:Y, Float:Z, Float:Rotacao)
{
    NovoTrem[0] = X;
    NovoTrem[1] = Y;
    NovoTrem[2] = Z;
    NovoTrem[3] = Rotacao;
    state Trem:sim;
    return OnGameModeInit();
}


Espero ter ajudado .
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)