odd function behavor
#1

pawn Код:
public OnPlayerStateChange(playerid, newstate, oldstate)
{
    new vehicleid = GetPlayerVehicleID(playerid);
    if(newstate == PLAYER_STATE_DRIVER && oldstate == PLAYER_STATE_ONFOOT)
    {
        if(!IsVehicleOwner(plyerid, vehicleid))
        {
            SendClientMessage(playerid, 0xFF0000FF, "this is not your vehicle");
            print("not yours");
            //eject
        }
        printf("Name lenght: %i | Awesome ID: %i | Owner: %s", strlen(GetVehicleOwner(vehicleid)), AwesomeVehicleID(vehicleid), GetVehicleOwner(vehicleid));
    }
    return 1;
}

stock IsVehicleOwner(playerid, vehicleid)
{
    new awesomeid = AwesomeVehicleID(vehicleid);
    if((awesomeid != 0)
    && (strmatch(PlayerName(playerid), VehicleData[awesomeid][VehicleOwner]))) return 1; // if "awesomeid is not 0 && player name match with vehicle name then return true (yes)
    return 0; // else return false (no)
}
Код:
not yours
Name lenght: 0 | Awesome ID: 0 | Owner:
i get ejected when the "Awesome ID" is 0, but im not supposed to do that (read the function)
Reply
#2

Quote:
Originally Posted by Unknown123
Посмотреть сообщение
pawn Код:
public OnPlayerStateChange(playerid, newstate, oldstate)
{
    new vehicleid = GetPlayerVehicleID(playerid);
    if(newstate == PLAYER_STATE_DRIVER && oldstate == PLAYER_STATE_ONFOOT)
    {
        if(!IsVehicleOwner(plyerid, vehicleid))
        {
            SendClientMessage(playerid, 0xFF0000FF, "this is not your vehicle");
            print("not yours");
            //eject
        }
        printf("Name lenght: %i | Awesome ID: %i | Owner: %s", strlen(GetVehicleOwner(vehicleid)), AwesomeVehicleID(vehicleid), GetVehicleOwner(vehicleid));
    }
    return 1;
}

stock IsVehicleOwner(playerid, vehicleid)
{
    new awesomeid = AwesomeVehicleID(vehicleid);
    if((awesomeid != 0)
    && (strmatch(PlayerName(playerid), VehicleData[awesomeid][VehicleOwner]))) return 1; // if "awesomeid is not 0 && player name match with vehicle name then return true (yes)
    return 0; // else return false (no)
}
Код:
not yours
Name lenght: 0 | Awesome ID: 0 | Owner:
i get ejected when the "Awesome ID" is 0, but im not supposed to do that (read the function)
Dont you mean:
pawn Код:
public OnPlayerStateChange(playerid, newstate, oldstate)
{
    new vehicleid = GetPlayerVehicleID(playerid);
    if(newstate == PLAYER_STATE_DRIVER && oldstate == PLAYER_STATE_ONFOOT)
    {
        if(!IsVehicleOwner(playerid, vehicleid))//<- You had plyerid
        {
            SendClientMessage(playerid, 0xFF0000FF, "this is not your vehicle");
            print("not yours");
            //eject
        }
        printf("Name lenght: %i | Awesome ID: %i | Owner: %s", strlen(GetVehicleOwner(vehicleid)), AwesomeVehicleID(vehicleid), GetVehicleOwner(vehicleid));
    }
    return 1;
}
And I would do it like this:
pawn Код:
stock IsVehicleOwner(playerid, vehicleid)
{
    if(AwesomeVehicleID(vehicleid) != 0 && strmatch(PlayerName(playerid), VehicleData[awesomeid][VehicleOwner])) return 1;
    return 0;
}
Reply
#3

I don't understand this line
pawn Код:
new awesomeid = AwesomeVehicleID(vehicleid)
What does it do exactly? I'm sure something is wrong here.

EDIT:SLOOOOOW xD
Reply
#4

dont work, same problem

i enter a taxi (it have AwesomeID = 0, and i get ejected, but since the awesome id = 0 i shouldent be ejected
Reply
#5

I had a similar problem like this once too.

Try this
pawn Код:
public OnPlayerStateChange(playerid, newstate, oldstate)
{
    new vehicleid = GetPlayerVehicleID(playerid);
    if(newstate == PLAYER_STATE_DRIVER && oldstate == PLAYER_STATE_ONFOOT)
    {
        if(!IsVehicleOwner(plyerid, vehicleid) && AwesomeVehicleID(vehicleid) != 0)
        {
            SendClientMessage(playerid, 0xFF0000FF, "this is not your vehicle");
            print("not yours");
            //eject
        }
        printf("Name lenght: %i | Awesome ID: %i | Owner: %s", strlen(GetVehicleOwner(vehicleid)), AwesomeVehicleID(vehicleid), GetVehicleOwner(vehicleid));
    }
    return 1;
}

stock IsVehicleOwner(playerid, vehicleid)
{
    if(strmatch(PlayerName(playerid), VehicleData[awesomeid][VehicleOwner])) return true:
    return false;
}
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)