[Duda] PutPlayerInVehicle
#1

Buenas, tengo un problema en mi GameMode, tengo un sistema de /cinturon, estoy haciendo que si tienes el cinturуn colocado, no deje bajarte del vehнculo, en todos los asientos funciona perfectamente, exeptuando el del conductor, que me deja bajar sin problema, їalguien sabe porque?

pawn Код:
public OnPlayerExitVehicle(playerid, vehicleid)
{
    if(UsingBelt[playerid] == 1)
    {
        PutPlayerInVehicle(playerid, vehicleid, GetPlayerVehicleSeat(playerid));
            SendClientMessage(playerid, ROJO_OSCURO, "* Debes quitarte el cinturon (/cinturon) para poder bajarte.");
        return 1;
    }
    return 1;
}
Reply
#2

pawn Код:
public OnPlayerExitVehicle(playerid, vehicleid)
{
    if(UsingBelt[playerid] == 1)
    {
        if(PutPlayerInVehicle(playerid, vehicleid, 1) || PutPlayerInVehicle(playerid, vehicleid, 2) || PutPlayerInVehicle(playerid, vehicleid, 3))
        SendClientMessage(playerid, ROJO_OSCURO, "* Debes quitarte el cinturon (/cinturon) para poder bajarte.");
        return 1;
    }
    return 1;
}
---> https://sampwiki.blast.hk/wiki/Function:PutPlayerInVehicle
Reply
#3

Quote:
Originally Posted by bytytus
Посмотреть сообщение
pawn Код:
public OnPlayerExitVehicle(playerid, vehicleid)
{
    if(UsingBelt[playerid] == 1)
    {
        if(PutPlayerInVehicle(playerid, vehicleid, 1) || PutPlayerInVehicle(playerid, vehicleid, 2) || PutPlayerInVehicle(playerid, vehicleid, 3))
        SendClientMessage(playerid, ROJO_OSCURO, "* Debes quitarte el cinturon (/cinturon) para poder bajarte.");
        return 1;
    }
    return 1;
}
---> https://sampwiki.blast.hk/wiki/Function:PutPlayerInVehicle
eso no funciona, no puedes usar if con putplayerinvehicle ya que no retorna nada.

ruben mostranos en comando donde el jugador se pone el cinturon
Reply
#4

pawn Код:
if(strcmp(cmd, "/cinturon", true) == 0)
    {
        if(IsPlayerConnected(playerid))
        {
            if(IsPlayerInAnyVehicle(playerid))
            {
                GetPlayerName(playerid, sendername, sizeof(sendername));
                if(!BikeModel(playerid))
                {
                    if(UsingBelt[playerid] == 0)
                    {
                        format(string, sizeof(string), "* %s se abrocha el cinturуn.", sendername);
                        MandarMensajeCercano(30.0, playerid, string, ROSA,ROSA,ROSA,ROSA,ROSA);
                        UsingBelt[playerid] = 1;
                    }
                    else
                    {
                        format(string, sizeof(string), "* %s se desabrocha el cinturуn.", sendername);
                        MandarMensajeCercano(30.0, playerid, string, ROSA,ROSA,ROSA,ROSA,ROSA);
                        UsingBelt[playerid] = 0;
                    }
                }
            }
        }
        return 1;
    }
Lo que yo quiero, es que el conductor no se pueda bajar tampoco...
Reply
#5

el code estб bien no le veo ningun error es raro que no te funcione.
Reply
#6

Es que cuando soy conductor, se me baja aunque lo tenga, en cambio, si soy pasajero, no se baja...
Reply
#7

Lo dudo, pero creo que asн servira:

pawn Код:
public OnPlayerExitVehicle(playerid, vehicleid)
{
    if(UsingBelt[playerid] == 1)
    {
        if(GetPlayerVehicleSeat(playerid) == 0)
        {
            PutPlayerInVehicle(playerid, vehicleid, 0);
            SendClientMessage(playerid, ROJO_OSCURO, "* Debes quitarte el cinturon (/cinturon) para poder bajarte.");
            return 1;
        }
        PutPlayerInVehicle(playerid, vehicleid, GetPlayerVehicleSeat(playerid));
        SendClientMessage(playerid, ROJO_OSCURO, "* Debes quitarte el cinturon (/cinturon) para poder bajarte.");
        return 1;
    }
    return 1;
}
Reply
#8

Cuando suben hace que se guarde el asiento en una variable, cuando bajan usa esa variable para setear el lugar.
Reply
#9

Quote:
Originally Posted by rubensm
Посмотреть сообщение
pawn Код:
if(strcmp(cmd, "/cinturon", true) == 0)
    {
        if(IsPlayerConnected(playerid))
        {
            if(IsPlayerInAnyVehicle(playerid))
            {
                GetPlayerName(playerid, sendername, sizeof(sendername));
                if(!BikeModel(playerid))
                {
                    if(UsingBelt[playerid] == 0)
                    {
                        format(string, sizeof(string), "* %s se abrocha el cinturуn.", sendername);
                        MandarMensajeCercano(30.0, playerid, string, ROSA,ROSA,ROSA,ROSA,ROSA);
                        UsingBelt[playerid] = 1;
                    }
                    else
                    {
                        format(string, sizeof(string), "* %s se desabrocha el cinturуn.", sendername);
                        MandarMensajeCercano(30.0, playerid, string, ROSA,ROSA,ROSA,ROSA,ROSA);
                        UsingBelt[playerid] = 0;
                    }
                }
            }
        }
        return 1;
    }
Lo que yo quiero, es que el conductor no se pueda bajar tampoco...
Fijate la pagina ke te pase , para ke el conductor tambien , agrega un PutPlayerInVehicle mas con el numero 0 ke es el asiento del conductor.

y el code anda perfecto .

0 - Conductor
1 - acompaсante del conductor
2 - Pasajero de atras izquierdo
3 - pasajero de atras derecho
4+ - Asientos para pasajeros (autobъs, etc)
Reply
#10

Nada sigue sin funcionarme tras seguir investigando varios dнas, Julian, їpodrнas decirme mas o menos algo de como hacerlo?

Gracias de antemano.
Reply
#11

pawn Code:
public OnPlayerExitVehicle(playerid, vehicleid)
{
    if(UsingBelt[playerid] == 1)
    {
       if(GetPlayerState(playerid) == 2) PutPlayerInVehicle(playerid, vehicleid, 0);
        PutPlayerInVehicle(playerid, vehicleid, GetPlayerVehicleSeat(playerid));
            SendClientMessage(playerid, ROJO_OSCURO, "* Debes quitarte el cinturon (/cinturon) para poder bajarte.");
        return 1;
    }
    return 1;
}
A ver si te pones un poco menos pesado y saludes por MSN sin pedirme favores xD
Reply
#12

Queria que alguem me ensina como fazer texdraw que mostra fps,ping,score,spree, Se alguem pode me ensina agradeзo desde de ja
Reply
#13

Quote:
Originally Posted by iDarkRain
View Post
pawn Code:
public OnPlayerExitVehicle(playerid, vehicleid)
{
    if(UsingBelt[playerid] == 1)
    {
       if(GetPlayerState(playerid) == 2) PutPlayerInVehicle(playerid, vehicleid, 0);
        PutPlayerInVehicle(playerid, vehicleid, GetPlayerVehicleSeat(playerid));
            SendClientMessage(playerid, ROJO_OSCURO, "* Debes quitarte el cinturon (/cinturon) para poder bajarte.");
        return 1;
    }
    return 1;
}
A ver si te pones un poco menos pesado y saludes por MSN sin pedirme favores xD
No funciona tampoco, їPodrнa ser que el PutPlayerInVehicle(playerid, vehicleid, 0); estй mal?, es que todos funcionan exeptuando el 0.
Reply
#14

El problema es que al usar GetPlayerVehicleSeat retorna -1 si el player no esta en un vehiculo, y probablemente el onplayerexitvehicle es llamado cuando el player ya esta afuera del auto, por lo que mejor almacenamos el seatid al entrar al vehiculo
pawn Code:
new PlayerSeat[MAX_PLAYERS];
public OnPlayerConnect(playerid)
{
    PlayerSeat[playerid] = -1;
}
public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
{
    PlayerSeat[playerid] = GetPlayerVehicleSeat(playerid);
    return 1;
}

public OnPlayerExitVehicle(playerid, vehicleid)
{
    if(UsingBelt[playerid] && PlayerSeat[playerid] != -1)
    {
        PutPlayerInVehicle(playerid, vehicleid, PlayerSeat[playerid]);
        SendClientMessage(playerid, ROJO_OSCURO, "* Debes quitarte el cinturon (/cinturon) para poder bajarte.");
    }
    else PlayerSeat[playerid] = -1;
    return 1;
}
public OnPlayerStateChange(playerid, newstate, oldstate)
{
    if(oldstate == PLAYER_STATE_DRIVER && UsingBelt[playerid] && PlayerSeat[playerid] != -1)
    {
        PutPlayerInVehicle(playerid, vehicleid, PlayerSeat[playerid]);
        SendClientMessage(playerid, ROJO_OSCURO, "* Debes quitarte el cinturon (/cinturon) para poder bajarte.");
    }
    else if(!UsingBelt[playerid] && oldstate == PLAYER_STATE_DRIVER) PlayerSeat[playerid] = -1;
    return 1;
}
Reply
#15

OnPlayerExitVehicle es llamado desde que presionas la tecla F y cuando se hace la anim del PJ saliendo del auto y termina de salir entonces se llama OnPlayerStateChange.

Si sales de otra forma que no sea por la tecla de salir (Ej: setplayerpos, putplayerinvehicle) no se llama OnPlayerExitVehicle.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)