[Ajuda] Trancando veнculos.
#1

Boa noite pessoal, primeiramente, eu gostaria de pedir para os que forem mandar eu procurar no Search, que nem responda esse tуpico. Feche agora mesmo, muito obrigado pois jб usei o search.

Em relaзгo ao tуpico, tive um problema numa lуgica que й a seguinte:

- Quando o jogador trancar o veнculo, o gamemode irб travar o veнculo totalmente. Atualmente no meu gamemode vocк entra no veнculo e й removido caso ele esteja trancado, mas eu gostaria de colocar para que quando desse enter nгo houvesse funзгo nenhuma, digo o jogador simplesmente ficar parado. Isso existe sim, jб vi em um servidor e tambйm tem no GTA Offline, quando vocк tenta roubar a viatura dos policiais que estгo em trabalho.

https://sampwiki.blast.hk/wiki/SetVehicleParamsForPlayer

Essa й a funзгo, уtimo, mas onde eu vou adicionar para isso funcionar da maneira que quero, jб que:

public OnPlayerEnterVehicle

Eu notei que essa public, o jogador jб estб dentro do veнculo. E aн, alguйm tem alguma noзгo disso? Valeuzгo galera!
Reply
#2

Tente:

pawn Код:
if(!strcmp(cmdtext, "/trancar", true))
    {
        //Checa se estб no veiculo.
        if(!IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid, -1,"Voce nгo estб em um veнculo!");
       
        if(GetPlayerState(playerid) != PLAYER_STATE_DRIVER) return SendClientMessage(playerid,-1,"Vocк nгo pode trancar esse veнculo!");
        //laзo
        for(new i;i<MAX_PLAYERS;i++) if(i != playerid)
        //demonio
        SetVehicleParamsForPlayer(GetPlayerVehicleID(playerid),i, 0, 1);
        //mensagem
        SendClientMessage(playerid, -1, "Veiculo foi trancado.");
        return true;
    }
Reply
#3

Quote:
Originally Posted by Pedro Pawno
Посмотреть сообщение
Tente:

pawn Код:
if(!strcmp(cmdtext, "/trancar", true))
    {
        //Checa se estб no veiculo.
        if(!IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid, -1,"Voce nгo estб em um veнculo!");
       
        if(GetPlayerState(playerid) != PLAYER_STATE_DRIVER) return SendClientMessage(playerid,-1,"Vocк nгo pode trancar esse veнculo!");
        //laзo
        for(new i;i<MAX_PLAYERS;i++) if(i != playerid)
        //demonio
        SetVehicleParamsForPlayer(GetPlayerVehicleID(playerid),i, 0, 1);
        //mensagem
        SendClientMessage(playerid, -1, "Veiculo foi trancado.");
        return true;
    }
Iria funcionar para um player que nгo estava logado no servidor na hora que o comando /trancar fosse dado?
Por exemplo vocк tranca seu veнculo, e eu estou deslogado. Quando eu logo seu veнculo estarб trancado para mim ou nгo?
Reply
#4

Pelos meus cбlculos sim. Acho que sу apos o respawn.
Reply
#5

pawn Код:
//Inicio do GM ou FS..
new bool:Trancado[MAX_VEHICLES];

//Ongame ou onfilter...
    for(new i = 0; i < MAX_VEHICLES; i ++)
    {
        Trancado[i] = false;
        }
//OnPlayerEnterVehicle
        if(Trancado[vehicleid] == true)
        {
                new Float:x,Float:y,Float:z;
        GetPlayerPos(playerid, x, y, z);
        SetPlayerPos(playerid, x, y, z+0.5);
            }

//Comando para trancar...
    if(!strcmp(cmdtext, "/trancar", true)) //vlw por adiantar Pedro Pawno :)
    {
        //Checa se estб no veiculo.
        if(!IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid, -1,"Voce nгo estб em um veнculo!");
       
        if(GetPlayerState(playerid) != PLAYER_STATE_DRIVER) return SendClientMessage(playerid,-1,"Vocк nгo pode trancar esse veнculo!");
        Trancado[GetPlayerVehicleID(playerid)] = true;
        //mensagem
        SendClientMessage(playerid, -1, "Veiculo foi trancado.");
        return true;
    } //o de destrancar vc faz ne? '-'
Reply
#6

Essa nгo й a funзгo. Tenha em mente que essa funзгo que vocк passou (SetVehicleParamsForPlayer) irб alterar os parвmetros somente para 1 jogador, jб a funзгo SetVehicleParamsEx vai alterar para todos os jogadores.

pawn Код:
new
    bool: boo_veh_locked [ MAX_VEHICLES ];

YCMD:trancar ( playerid, params [ ], help )
{
    if ( !IsPlayerInAnyVehicle ( playerid ) )
        return SendClientMessage ( playerid, -1, "Vocк nгo estб em um veнculo." );

    new
        vehicleid = GetPlayerVehicleID ( playerid );

    if ( boo_veh_locked [ vehicleid ] )
        return SendClientMessage ( playerid, -1, "Esse veнculo jб estб trancado!" );

    new
        params [ 7 ];

    GetVehicleParamsEx ( vehicleid, params [ 0 ], params [ 1 ], params [ 2 ], params [ 3 ], params [ 4 ], params [ 5 ], params [ 6 ]    );
    SetVehicleParamsEx ( vehicleid, params [ 0 ], params [ 1 ], params [ 2 ], true,         params [ 4 ], params [ 5 ], params [ 6 ]    );

    boo_veh_locked [ vehicleid ] = true;

    return 1;
}

YCMD:destrancar ( playerid, params [ ], help )
{
    if ( !IsPlayerInAnyVehicle ( playerid ) )
        return SendClientMessage ( playerid, -1, "Vocк nгo estб em um veнculo." );

    new
        vehicleid = GetPlayerVehicleID ( playerid );

    if ( !boo_veh_locked [ vehicleid ] )
        return SendClientMessage ( playerid, -1, "Esse veнculo jб estб destrancado!" );

    new
        params [ 7 ];

    GetVehicleParamsEx ( vehicleid, params [ 0 ], params [ 1 ], params [ 2 ], params [ 3 ], params [ 4 ], params [ 5 ], params [ 6 ]    );
    SetVehicleParamsEx ( vehicleid, params [ 0 ], params [ 1 ], params [ 2 ], false,        params [ 4 ], params [ 5 ], params [ 6 ]    );

    boo_veh_locked [ vehicleid ] = false;

    return 1;
}
Reply
#7

Quote:
Originally Posted by Lуs
Посмотреть сообщение
Essa nгo й a funзгo. Tenha em mente que essa funзгo que vocк passou (SetVehicleParamsForPlayer) irб alterar os parвmetros somente para 1 jogador, jб a funзгo SetVehicleParamsEx vai alterar para todos os jogadores.

pawn Код:
new
    bool: boo_veh_locked [ MAX_VEHICLES ];

YCMD:trancar ( playerid, params [ ], help )
{
    if ( !IsPlayerInAnyVehicle ( playerid ) )
        return SendClientMessage ( playerid, -1, "Vocк nгo estб em um veнculo." );

    new
        vehicleid = GetPlayerVehicleID ( playerid );

    if ( boo_veh_locked [ vehicleid ] )
        return SendClientMessage ( playerid, -1, "Esse veнculo jб estб trancado!" );

    new
        params [ 7 ];

    GetVehicleParamsEx ( vehicleid, params [ 0 ], params [ 1 ], params [ 2 ], params [ 3 ], params [ 4 ], params [ 5 ], params [ 6 ]    );
    SetVehicleParamsEx ( vehicleid, params [ 0 ], params [ 1 ], params [ 2 ], true,         params [ 4 ], params [ 5 ], params [ 6 ]    );

    boo_veh_locked [ vehicleid ] = true;

    return 1;
}

YCMD:destrancar ( playerid, params [ ], help )
{
    if ( !IsPlayerInAnyVehicle ( playerid ) )
        return SendClientMessage ( playerid, -1, "Vocк nгo estб em um veнculo." );

    new
        vehicleid = GetPlayerVehicleID ( playerid );

    if ( !boo_veh_locked [ vehicleid ] )
        return SendClientMessage ( playerid, -1, "Esse veнculo jб estб destrancado!" );

    new
        params [ 7 ];

    GetVehicleParamsEx ( vehicleid, params [ 0 ], params [ 1 ], params [ 2 ], params [ 3 ], params [ 4 ], params [ 5 ], params [ 6 ]    );
    SetVehicleParamsEx ( vehicleid, params [ 0 ], params [ 1 ], params [ 2 ], false,        params [ 4 ], params [ 5 ], params [ 6 ]    );

    boo_veh_locked [ vehicleid ] = false;

    return 1;
}
No caso a booleana serve pra identificar se estб trancado?
Reply
#8

Quote:
Originally Posted by Pedro Pawno
Посмотреть сообщение
No caso a booleana serve pra identificar se estб trancado?
Sim.
Reply
#9

Quote:
Originally Posted by Lуs
Посмотреть сообщение
Sim.
A sim mestre Los obrigado.
Reply
#10

Dб pra fazer por uma funзгo tambйm, para nгo ficar obtendo e alterando valores tantas vezes e diminuir o cуdigo tambйm.

pawn Код:
LockVehicle ( vehicleid, bool: set )
{
    new
        params [ 7 ];

    GetVehicleParamsEx ( vehicleid, params [ 0 ], params [ 1 ], params [ 2 ], params [ 3 ], params [ 4 ], params [ 5 ], params [ 6 ] );
    SetVehicleParamsEx ( vehicleid, params [ 0 ], params [ 1 ], params [ 2 ], set,          params [ 4 ], params [ 5 ], params [ 6 ] );

    /*variбvel booleana global*/ [ vehicleid ] = set;

    return 1;
}
Uso:

pawn Код:
YCMD:destrancar ( playerid, params [ ], help )
{
    if ( !IsPlayerInAnyVehicle ( playerid ) )
        return SendClientMessage ( playerid, -1, "Vocк nгo estб em um veнculo." );

    new
        vehicleid = GetPlayerVehicleID ( playerid );

    if ( !/*variбvel booleana global*/[ vehicleid ] )
        return SendClientMessage ( playerid, -1, "Esse veнculo jб estб destrancado!" );

    LockVehicle ( vehicleid, false );

    return 1;
}
Sу um exemplo...
Reply


Forum Jump:


Users browsing this thread: 2 Guest(s)