[Pedido] Verificar se o pneu estб furado.
#1

@Resolvido
Reply
#2

UP ?
Reply
#3

Para checar se um pneu estiver furado:

pawn Код:
public OnVehicleDamageStatusUpdate(vehicleid, playerid)
{
    new panels, doors, lights, tires;
    GetVehicleDamageStatus(vehicleid, panels, doors, lights, tires);
    if(tires > 0)
    {
        SendClientMessage(playerid, 0xFFFFFFFF, "Seu pneu estб furado.");
    }
    return 1;
}
Para informar qual pneu estб furado, veja os estados de pneus.

Para avisar quando um pneu for furado, vocк precisa armazenar o estado atual dos pneus de cada veнculo em uma variбvel e checar no OnVehicleDamageStatusUpdate quando o estado do pneu mudar para enviar a mensagem.

Exemplo:

pawn Код:
new gVehicleTireState[MAX_VEHICLES];

public OnVehicleDamageStatusUpdate(vehicleid, playerid)
{
    new panels, doors, lights, tires;
    GetVehicleDamageStatus(vehicleid, panels, doors, lights, tires);
    if(gVehicleTireState[vehicleid] == 0 && tires != 0)
    {
        SendClientMessage(playerid, 0xFFFFFFFF, "Seu pneu furou!");
        gVehicleTireState[vehicleid] = 1;
    }
    return 1;
}

public OnVehicleSpawn(vehicleid)
{
    gVehicleTireState[vehicleid] = 0;
    return 1;
}
Reply
#4

Quote:
Originally Posted by Larceny
Посмотреть сообщение
Para checar se um pneu estiver furado:

pawn Код:
public OnVehicleDamageStatusUpdate(vehicleid, playerid)
{
    new panels, doors, lights, tires;
    GetVehicleDamageStatus(vehicleid, panels, doors, lights, tires);
    if(tires > 0)
    {
        SendClientMessage(playerid, 0xFFFFFFFF, "Seu pneu estб furado.");
    }
    return 1;
}
Para informar qual pneu estб furado, veja os estados de pneus.

Para avisar quando um pneu for furado, vocк precisa armazenar o estado atual dos pneus de cada veнculo em uma variбvel e checar no OnVehicleDamageStatusUpdate quando o estado do pneu mudar para enviar a mensagem.

Exemplo:

pawn Код:
new gVehicleTireState[MAX_VEHICLES];

public OnVehicleDamageStatusUpdate(vehicleid, playerid)
{
    new panels, doors, lights, tires;
    GetVehicleDamageStatus(vehicleid, panels, doors, lights, tires);
    if(gVehicleTireState[vehicleid] == 0 && tires != 0)
    {
        SendClientMessage(playerid, 0xFFFFFFFF, "Seu pneu furou!");
        gVehicleTireState[vehicleid] = 1;
    }
    return 1;
}

public OnVehicleSpawn(vehicleid)
{
    gVehicleTireState[vehicleid] = 0;
    return 1;
}
Tenho 2 duvidas
1Є Interessante, e tipo.. com esse cуdigo ele jб identifica qualquer pneu que fura ?.
2Є Tem algum cуdigo que se encaixe para fazer com que ele mande uma Mensagem quando furar ? Ex:
Код:
SendClientMessage( playerid, 0xFF0000AA, "O pneu dianteiro direito furou");
Код:
SendClientMessage( playerid, 0xFF0000AA, "O pneu dianteiro esquerdo furou");
Reply
#5

Use a funзгo GetVehicleDamageStatus, ela retorna tambйm o estado dos pneus.

pawn Код:
stock HasPoppedTire(vehicleid)
{
    new panel, doors, lights, tires; // Criando variбveis para armazernar o dano do veнculo;
    GetVehicleDamageStatus(vehicleid,panel,doors,lights,tires); // Armazenamos o dano nas variбveis;

    if(tires == 0b0000) // Os valores retornados pela funзгo sгo dados em binбrios.
        return 0;
    else
        return 1;
}
Sendo assim, agora use sua criatividade para saber se algum pneu foi furado atravйs da callback OnVehicleDamageStatusUpdate

Essa pбgina da wiki contйm o estados dos pneus detalhadamente: https://sampwiki.blast.hk/wiki/TireStates

@edit

Demorei pra postar, nгo vi que jб responderam em cima ;x

@topic

Vocк pode checar mudanзa de estados nos pneus usando uma variбvel global que contйm o estado dos pneus de um veнculo x. Se quando o veнculo sofrer algum dano, verifica se o estado dos pneus й diferente do que estб na variбvel. Aн й por que os pneus furaram ou estгo normais.
Reply
#6

Код:
if(tires > 0)
Zero й o estado do pneu..
https://sampwiki.blast.hk/wiki/TireStates

pawn Код:
if(tires == 1)
    {
        SendClientMessage(playerid, 0xFFFFFFFF, "Seu pneu traseiro direito furou.");
    }
E assim por diante.
Reply
#7

Quote:
Originally Posted by Alwe
Посмотреть сообщение
Tenho 2 duvidas
1Є Interessante, e tipo.. com esse cуdigo ele jб identifica qualquer pneu que fura ?.
Sim, os estados vгo de 0 a 15. Sendo 0 todos os pneus em bom estado e de 1 a 15 sгo todos os outros estados possнveis com algum pneu furado.

Quote:
Originally Posted by Alwe
Посмотреть сообщение
2Є Tem algum cуdigo que se encaixe para fazer com que ele mande uma Mensagem quando furar ? Ex:
Код:
SendClientMessage( playerid, 0xFF0000AA, "O pneu dianteiro furou");
Vocк precisa criar uma condiзгo para cada pneu, exemplo:

pawn Код:
new gVehicleTireState[MAX_VEHICLES];

public OnVehicleDamageStatusUpdate(vehicleid, playerid)
{
    new panels, doors, lights, tires;
    GetVehicleDamageStatus(vehicleid, panels, doors, lights, tires);
    if(gVehicleTireState[vehicleid] != tires && tires == 1)
    {
        SendClientMessage(playerid, 0xFFFFFFFF, "Seu pneu traseiro direito furou!");
        gVehicleTireState[vehicleid] = 1;
    }
    else if(gVehicleTireState[vehicleid] != tires && tires == 2)
    {
        SendClientMessage(playerid, 0xFFFFFFFF, "Seu pneu dianteiro direito furou!");
        gVehicleTireState[vehicleid] = 2;
    }
    else if(gVehicleTireState[vehicleid] != tires && tires == 4)
    {
        SendClientMessage(playerid, 0xFFFFFFFF, "Seu pneu traseiro esquerdo furou!");
        gVehicleTireState[vehicleid] = 4;
    }
    //etc...
    return 1;
}

public OnVehicleSpawn(vehicleid)
{
    gVehicleTireState[vehicleid] = 0;
    return 1;
}
Para todos os estados veja: https://sampwiki.blast.hk/wiki/TireStates
Reply
#8

Huum, gostei.. Daria um bom FS para o forum ! Vou estudar mais essa parte, e vк se consigo fazer algo para postar aqui, caso jб nгo tenha ou alguem mais ligeiro monte primeiro que eu! kkk
Se eu tiver alguma duvida, posso retirar com vocк(s) ?
Reply
#9

Putz, o pior que eu consegui fazer agora, terminei agora... porйm vocкs jб tinham feito o dobro do que eu tava pensando em fazer...
De qualquer forma, muito obrigado *-*
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)