[Ajuda] ativar pickup ao apertar tecla "N"
#1

bom pessoal eu fiz uma pickup pra entrar dentro do banco soq quando o player entra ai ele fka saindo rapido e entrando , eu queria por pra quando o player apertasse "N" na pickup ele fosse parar dentro do banco ou sair tenderam ?

PHP код:
public OnPlayerPickUpPickup(playeridpickupid) {
    if(
pickupid == enterbank)
    {
    
SetPlayerInterior(playerid3);
      
SetPlayerPos(playerid834.0320,7.3758,1004.1797);
    }
    if(
pickupid == leavebank)
    {
        
SetPlayerInterior(playerid0);
        
SetPlayerPos(playerid1631.8922,-1172.2235,24.0781);
    }
    return 
1;

GameModeInit
PHP код:
    enterbank CreatePickup(1318,1,1631.8922,-1172.2235,24.0781,0);
    
leavebank CreatePickup(1318,1,834.0320,7.3758,1004.1797,0); 
Reply
#2

й sу vocк setar um lugar um pouco a frente do pickup de entrada/saida, assim quando ele entrar/sair nгo vai aparecer em cima do pickup, resolvendo o problema de ficar saindo e entrando
Reply
#3

Quote:
Originally Posted by SepZ
Посмотреть сообщение
й sу vocк setar um lugar um pouco a frente do pickup de entrada/saida, assim quando ele entrar/sair nгo vai aparecer em cima do pickup, resolvendo o problema de ficar saindo e entrando
mas tipo n da pra fazer de apertar a tecla с ?
Reply
#4

Assim que se faz:
Coloca isso no comeзo da gm
PHP код:
new inbancopickup[MAX_PLAYERS];
new 
playericonbanco[MAX_PLAYERS]; 
Isso no OnPlayerPickUpPickup
PHP код:
GetPickupBanco(playeridpickupid); 
Isso no final da sua gm
PHP код:
GetPickupBanco(playeridpickupid)
{
if(
pickupid==enterbank || pickupid==leavebank)
{
SendClientMessage(playeridLaranja"[!] Aperte a tecla 'f' ou 'enter' para entrar na agencia bancaria.");
inbancopickup[playerid] = GetTickCount();
}
if(
pickupid==enterbank)playericonbanco[playerid] = 0;
if(
pickupid==leavebank)playericonbanco[playerid] = 1;

Isso daqui no OnPlayerKeyStateChange
PHP код:
    if(oldkeys KEY_SECONDARY_ATTACK)
    {
        new 
timestamp GetTickCount();
        if(
timestamp inbancopickup[playerid] > 2000)
        {
            return 
1;
        }
        if(
playericonbanco[playerid] == 0)
        {
            
SetPlayerInterior(playerid3);
              
SetPlayerPos(playerid834.0320,7.3758,1004.1797);
            return 
1;
        }
        if(
playericonbanco[playerid] == 1)
        {
            
SetPlayerInterior(playerid0);
            
SetPlayerPos(playerid1631.8922,-1172.2235,24.0781);
        }
    } 
Qualquer erro me avisa
Reply
#5

Use o callback OnPlayerKeyStateChange pra verificar se o jogador apertou tal tecla, e faзa um if com a funзгo IsPlayerInRangeOfPoint verificando se o jogador estб na coordenada da entrada do banco, e se tiver, usar o SetPlayerPos para mandar ele pra dentro do banco (que no caso seria prуximo a porta [saнda]), e o interior (caso for dentro de algum). Faзa a mesma coisa pra posiзгo de saнda, verifique se apertou a tecla, use o IsPlayerInRangeOfPoint, e sete o jogador pra posiзгo de entrada do banco.

Olha um exemplo: http://pastebin.com/q3bg40qy

Feito isso, vocк sу precisa criar a pickup no mesmo local da entrada do banco, e deixar ela sem efeito nenhum, no mбximo algum aviso pro jogador que se ele quiser entrar, pra apertar a tecla 'N'.
Reply
#6

Nгo й preciso usar OnPlayerPickUpPickup para isso.

PHP код:
public OnPlayerKeyStateChange(playeridnewkeysoldkeys) {
    if(
newkeys KEY_NO) {
        if(
GetPlayerInterior(playerid)) {
            if(
IsPlayerInRangeOfPoint(playerid1.0834.0320,7.3758,1004.1797)) {
                
// leave bank
                
SetPlayerInterior(playerid0); 
                
SetPlayerPos(playerid1631.8922,-1172.2235,24.0781); 
            }
            
// outras saнdas
        
}
        else {
            if(
IsPlayerInRangeOfPoint(playerid1.01631.8922,-1172.2235,24.0781)) {
                
// enter bank
                
SetPlayerInterior(playerid3); 
                
SetPlayerPos(playerid834.0320,7.3758,1004.1797); 
            }
            
// outras entradas
        
}
    }
    return 
1;

Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)