SA-MP Forums Archive
Strings without a length are deprecated, please add a destination size. - Printable Version

+- SA-MP Forums Archive (https://sampforum.blast.hk)
+-- Forum: SA-MP Scripting and Plugins (https://sampforum.blast.hk/forumdisplay.php?fid=8)
+--- Forum: Scripting Help (https://sampforum.blast.hk/forumdisplay.php?fid=12)
+--- Thread: Strings without a length are deprecated, please add a destination size. (/showthread.php?tid=369331)



Strings without a length are deprecated, please add a destination size. - HydraX - 16.08.2012

Time doesn't require a destination size since an integer is required. How can I fix this?
pawn Код:
YCMD:cage(playerid, params[], help)
{
    if( PlayerInfo[playerid][pAdmin] > 2 )
    {
        new
            TargetID,
            time,
            tReason[50];
        if( !sscanf(params, "uiS(No reason specified)[50]", TargetID, time, tReason) )
        {
            if( strlen( tReason ) > 50 )        return SendClientMessage( playerid, -1, "SERVER: Maximum reason size: 50" );
            if( !IsPlayerConnected(TargetID) ) return SendClientMessage( playerid, -1, "SERVER: Invalid playerid! Please try again" );
            if( time  < 10 )        return SendClientMessage( playerid, -1, "SERVER: Minimum time required: 10" );
            if( PlayerInfo[TargetID][pCaged] == 1 )         return SendClientMessage( playerid, -1, "SERVER: Player is already in the cage!" );
            new MyString[128],
                TargetString[128],
                Float:Pos[3];
            format( MyString, sizeof MyString, "SERVER: Caged %s (ID: %i) with the reason: %s (Caged: %d seconds)", GetName(TargetID), TargetID, tReason, time );
            format( TargetString, sizeof TargetString, "SERVER: %s (ID: %i) has been Caged by %s (ID: %i) with the reason: %s (Caged: %d seconds)", GetName(TargetID), TargetID, GetName(playerid), playerid, tReason, time );
            SendClientMessageToAll( -1, TargetString );
            SendClientMessage( playerid, -1, MyString );
            TogglePlayerControllable(TargetID, 0);
            PlayerInfo[TargetID][pCageTime] = time;
            PlayerInfo[TargetID][pCaged] = 1;
            GetPlayerPos(TargetID, Pos[0], Pos[1], Pos[2]);
            SetTimerEx("CagePlayer", 1000, 0, "i", TargetID);
            SetTimerEx("UnCagePlayer", PlayerInfo[TargetID][pCageTime]*1000, 0, "i", TargetID);
        }
        else
            return SendClientMessage(playerid, -1, "SERVER: /cage [targetid] [time] [reason]");
    }
    else
        return SendClientMessage( playerid, -1, "SERVER: You have to be an admin to perform this command!" );
    return 1;
}
EDIT: I'm also getting this...
Код:
sscanf warning: Unknown format specifier '[', skipping
sscanf warning: Unknown format specifier '3', skipping
sscanf warning: Unknown format specifier ']', skipping
sscanf warning: Unknown format specifier '[', skipping
sscanf warning: Unknown format specifier '3', skipping
sscanf warning: Unknown format specifier ']', skipping
sscanf warning: Unknown format specifier '[', skipping
sscanf warning: Unknown format specifier '3', skipping
sscanf warning: Unknown format specifier ']', skipping
sscanf warning: Unknown format specifier '[', skipping
sscanf warning: Unknown format specifier '3', skipping
sscanf warning: Unknown format specifier ']', skipping



Re: Strings without a length are deprecated, please add a destination size. - Kindred - 16.08.2012

pawn Код:
format(str, sizeof(str), "%d", time);
if(strlen(str) != 7)
Is this what you wanted?

This simply formats it into a string, and then checks the length of the string

If not, what did you want again? I'm tired, so don't blame me. It looks like you already made it so if time is less than 10 it returns a message, shouldn't that work?


Respuesta: Re: Strings without a length are deprecated, please add a destination size. - HydraX - 16.08.2012

Quote:
Originally Posted by Kindred
Посмотреть сообщение
pawn Код:
format(str, sizeof(str), "%d", time);
if(strlen(str) != 7)
Is this what you wanted?

This simply formats it into a string, and then checks the length of the string

If not, what did you want again? I'm tired, so don't blame me. It looks like you already made it so if time is less than 10 it returns a message, shouldn't that work?
Thanks for the quick reply, but I realized sscanf was warning me about a missing string. Thanks anyway!!