STRTOK to SSCANF (optional params)
#1

I tryed to convert it 5 times each time when i use cmd i just crash....
Here is original working code with STRTOK
pawn Код:
CMD:goto(playerid, params[])
{
    new idx, iString[256];
    iString = strtok(params, idx);

    if (!strlen(iString))
    {
        SendClientMessage(playerid, red, "[USAGE]: /goto PLAYERID (X_OFFSET Y_OFFSET Z_OFFSET)");
        return true;
    }

    new ID = strval(iString);

    if (!IsPlayerConnected(ID)) return SendClientMessage(playerid, red, "[ERROR]:That player is not connected.");

    new Float:X, Float:Y, Float:Z;
    new Interior = GetPlayerInterior(ID);

    GetPlayerPos(ID, X, Y, Z);

    iString = strtok(params, idx);

    if (!strlen(iString))
    {
        GetXYInFrontOfPlayer(ID, X, Y, 1.5);
        SetPlayerInterior(playerid, Interior);
        SetPlayerPos(playerid, X, Y, Z);

        GetPlayerName(ID, iString, 128);
        format(iString, 128, "[SUCCESS]: You have warped to %s (ID: %d).", iString, ID);
        SendClientMessage(playerid, green, iString);

        return true;
    }

    X += floatstr(iString);
    iString = strtok(params, idx);

    if (!strlen(iString))
    {
        goto fwarpto;
    }

    Y += floatstr(iString);
    iString = strtok(params, idx);

    if (!strlen(iString)) {
        goto fwarpto;
    }

    Z += floatstr(iString);

    fwarpto:

    new pVID = GetPlayerVehicleID( playerid );

    if ( pVID )
    {
        SetVehiclePos( pVID, X, Y, Z );
        LinkVehicleToInterior( pVID, Interior );
    }
    else
    {
        SetPlayerPos( playerid, X, Y, Z);
    }

    SetPlayerInterior( playerid, Interior);

    GetPlayerName(ID, iString, 128);
    format(iString, 128, "[SUCCESS]: You have warped to %s (ID: %d).", iString, ID);
    SendClientMessage(playerid, green, iString);

    return true;
}
Reply


Forum Jump:


Users browsing this thread: 2 Guest(s)