Trancando veнculos. -
Bryaan_Smith - 10.04.2013
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!
Respuesta: Trancando veнculos. -
Pedro Pawno - 10.04.2013
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;
}
Re: Respuesta: Trancando veнculos. -
Axl. - 10.04.2013
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?
Respuesta: Trancando veнculos. -
Pedro Pawno - 10.04.2013
Pelos meus cбlculos sim. Acho que sу apos o respawn.
Re: Trancando veнculos. -
GTO.DoDo - 10.04.2013
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? '-'
Re: Trancando veнculos. -
Lуs - 10.04.2013
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;
}
Respuesta: Re: Trancando veнculos. -
Pedro Pawno - 10.04.2013
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?
Re: Respuesta: Re: Trancando veнculos. -
Lуs - 10.04.2013
Quote:
Originally Posted by Pedro Pawno
No caso a booleana serve pra identificar se estб trancado?
|
Sim.
Respuesta: Re: Respuesta: Re: Trancando veнculos. -
Pedro Pawno - 10.04.2013
Quote:
Originally Posted by Lуs
Sim.
|
A sim mestre Los obrigado.
Re: Trancando veнculos. -
Lуs - 10.04.2013
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...