sizeof error
#1

Hello im getting a strange error that I've never gotten before hoping someone can help me out.
ERROR:
Код:
error 072: "sizeof" operator is invalid on "function" symbols
LINE:
Код:
format(szString, sizeof(szString), "AdmSys-: %s (ID:%d) has been jailed for %d minutes; Reason: %s", PlayerName, id, time, reason);
Thanks in advance.
Reply
#2

I'll just post the whole command
Код:
CMD:jail(playerid,params[])
{
    if(pInfo[playerid][pAdminLevel] >= 1)
    {
        new id,time,reason[100],szString[150];
        if(sscanf(params,"dds",id,time,reason)) return SendClientMessage(playerid, -1, "*"COL_WHITE" /jail [playerid] [time] [reason]");
        if(!IsPlayerConnected(id)) return SendClientMessage(playerid, -1,"*"COL_RED" Player is not connected.");
        if(Jailed[id] == 1) return SendClientMessage(playerid, -1, "*"COL_RED" Player is already jailed.");
		format(szString, sizeof(szString), "AdmSys-: %s (ID:%d) has been jailed for %d minutes; Reason: %s", PlayerName, id, time, reason);
		SendClientMessageToAll(-1, szString);
        GetPlayerName(id, PlayerName, sizeof(PlayerName));
	 	GetPlayerName(playerid, GetPlayerName, sizeof(GetPlayerName));
        SetPlayerInterior(id, 3);
		SetPlayerVirtualWorld(id, 10);
		SetPlayerFacingAngle(id, 360.0);
		SetPlayerPos(id, 197.5662, 175.4800, 1004.0);
		SetPlayerHealth(id, 9999999999.0);
		ResetPlayerWeapons(id);
		JailTimer[id] = SetTimerEx("Unjail",time*60000, false, "i", id);
	}
	else{
		return 0;
		}
	return 1;
}
Reply
#3

pawn Код:
GetPlayerName(id, PlayerName, sizeof(PlayerName));
Why are you doing this AFTER using the variable in the string?

Also:
pawn Код:
if(sscanf(params,"dds",id,time,reason))
is deprecated. Use s[size] instead of just "s". For example:
pawn Код:
if(sscanf(params,"dds[100]",id,time,reason))
Reply
#4

Too much errors, the player name should be fetched before the string formatting. Plus you need to specify sscanf's string specifier's length or your server might crash.

Код:
CMD:jail(playerid,params[])
{
    if(pInfo[playerid][pAdminLevel] >= 1)
    {
        new
			id,
			time,
			reason[100],
			szString[150],
			PlayerName[MAX_PLAYER_NAME+1]
		;
        
        if (sscanf(params, "iis[100]", id, time, reason)) return SendClientMessage(playerid, -1, "*"COL_WHITE" /jail [playerid] [time] [reason]");
        if (!IsPlayerConnected(id)) return SendClientMessage(playerid, -1,"*"COL_RED" Player is not connected.");
        if (Jailed[id] == 1) return SendClientMessage(playerid, -1, "*"COL_RED" Player is already jailed.");
        
        GetPlayerName(id, PlayerName, sizeof(PlayerName));
		format(szString, sizeof(szString), "AdmSys-: %s (ID:%d) has been jailed for %d minutes; Reason: %s", PlayerName, id, time, reason);
		SendClientMessageToAll(-1, szString);

        SetPlayerInterior(id, 3);
		SetPlayerVirtualWorld(id, 10);
		SetPlayerFacingAngle(id, 360.0);
		SetPlayerPos(id, 197.5662, 175.4800, 1004.0);
		SetPlayerHealth(id, 9999999999.0);
		ResetPlayerWeapons(id);
		JailTimer[id] = SetTimerEx("Unjail",time*60000, false, "i", id);
	}
	else return 0;
	return 1;
}
Reply
#5

PHP код:
CMD:jail(playerid,params[])
{
    if(
pInfo[playerid][pAdminLevel] >= 1)
    {
        new 
id,time,reason[100],szString[150];
        if(
sscanf(params,"dds",id,time,reason)) return SendClientMessage(playerid, -1"*"COL_WHITE" /jail [playerid] [time] [reason]");
        if(!
IsPlayerConnected(id)) return SendClientMessage(playerid, -1,"*"COL_RED" Player is not connected.");
        if(
Jailed[id] == 1) return SendClientMessage(playerid, -1"*"COL_RED" Player is already jailed.");
        {
                
GetPlayerName(idPlayerNamesizeof(PlayerName));
         
GetPlayerName(playeridGetPlayerNamesizeof(GetPlayerName));
        
format(szStringsizeof(szString), "AdmSys-: %s (ID:%d) has been jailed for %d minutes; Reason: %s"PlayerNameidtimereason);
        
SendClientMessageToAll(-1szString);
        }
        {
                
SetPlayerInterior(id3);
        
SetPlayerVirtualWorld(id10);
        
SetPlayerFacingAngle(id360.0);
        
SetPlayerPos(id197.5662175.48001004.0);
        
SetPlayerHealth(id9999999999.0);
        
ResetPlayerWeapons(id);
        
JailTimer[id] = SetTimerEx("Unjail",time*60000false"i"id);
    }
    else{
        return 
0;
        }
    return 
1;

Hey... Try this just fix this identitations it is very hard to edit over here "intext"
Reply
#6

this is better.

Use the slots to sscanf, so it will be faster and do not need to create so many variables.

PHP код:
CMD:jail(playerid,params[])
{
    if(
pInfo[playerid][pAdminLevel] >= 1)
    {
        new 
reason[100];
        if(
sscanf(params"uis[100]"params[0], params[1], reason))
            return 
SendClientMessage(playerid, -1"*"COL_WHITE" /jail [playerid] [time] [reason]");
            
        if(!
IsPlayerConnected(params[0]) && params[0] == INVALID_PLAYER_ID)
            return 
SendClientMessage(playerid, -1,"*"COL_RED" Player is not connected.");
            
        if(
Jailed[params[0]] == 1)
            return 
SendClientMessage(playerid, -1"*"COL_RED" Player is already jailed.");
        new 
name1[24], name2[24];
        
GetPlayerName(params[0], name1sizeof(name1));
        
GetPlayerName(playeridname2sizeof(name2));
        
        
format(szStringsizeof(szString), "AdmSys-: %s (ID:%d) has been jailed for %d minutes; Reason: %s"name1params[0], params[1], reason);
        
SendClientMessageToAll(-1szString);
        
        
SetPlayerInterior(params[0], 3);
        
SetPlayerVirtualWorld(params[0], 10);
        
SetPlayerFacingAngle(params[0], 360.0);
        
SetPlayerPos(params[0], 197.5662175.48001004.0);
        
SetPlayerHealth(params[0], 9999999999.0);
        
ResetPlayerWeapons(params[0]);
        
JailTimer[params[0]] = SetTimerEx("Unjail"params[1]*60000false"i"params[0]);
    }
    return 
true;

Reply
#7

Quote:
Originally Posted by JuanStone
Посмотреть сообщение
this is better.

Use the slots to sscanf, so it will be faster and do not need to create so many variables.

PHP код:
CMD:jail(playerid,params[])
{
    if(
pInfo[playerid][pAdminLevel] >= 1)
    {
        new 
reason[100];
        if(
sscanf(params"uis[100]"params[0], params[1], reason))
            return 
SendClientMessage(playerid, -1"*"COL_WHITE" /jail [playerid] [time] [reason]");
            
        if(!
IsPlayerConnected(params[0]) && params[0] == INVALID_PLAYER_ID)
            return 
SendClientMessage(playerid, -1,"*"COL_RED" Player is not connected.");
            
        if(
Jailed[params[0]] == 1)
            return 
SendClientMessage(playerid, -1"*"COL_RED" Player is already jailed.");
        new 
name1[24], name2[24];
        
GetPlayerName(params[0], name1sizeof(name1));
        
GetPlayerName(playeridname2sizeof(name2));
        
        
format(szStringsizeof(szString), "AdmSys-: %s (ID:%d) has been jailed for %d minutes; Reason: %s"name1params[0], params[1], reason);
        
SendClientMessageToAll(-1szString);
        
        
SetPlayerInterior(params[0], 3);
        
SetPlayerVirtualWorld(params[0], 10);
        
SetPlayerFacingAngle(params[0], 360.0);
        
SetPlayerPos(params[0], 197.5662175.48001004.0);
        
SetPlayerHealth(params[0], 9999999999.0);
        
ResetPlayerWeapons(params[0]);
        
JailTimer[params[0]] = SetTimerEx("Unjail"params[1]*60000false"i"params[0]);
    }
    return 
true;

That worked but whenever I try to do /unjail now it wont take me out of jail
Код:
CMD:unjail(playerid,params[])
{
	new id;
 	if(pInfo[playerid][pAdminLevel] >= 1)
	 {
		if(sscanf(params,"u",id)) return SendClientMessage(playerid, -1, "*"COL_WHITE" /unjail [playerid]");
		if(!IsPlayerConnected(id)) return SendClientMessage(playerid, -1, "*"COL_RED" Player is not connected.");
		if(Jailed[id] == 0) return SendClientMessage(playerid, -1, "*"COL_RED" Player is not jailed.");
  		Jailed[id] = 0;
		SetPlayerInterior(id, 0);
		SetPlayerVirtualWorld(id, 0);
		SpawnPlayer(id);
		SetPlayerHealth(id, 100);
		KillTimer(JailTimer[id]);
	}
	else
	{
		SendClientMessage(playerid, -1, "*"COL_RED" You do not have the right admin permissions for this command!");
	}
	return 1;
}
It just says player is not jailed also if I wait the specified time like 1 minute it doesnt unjail me.
Reply
#8

Try this:

PHP код:
CMD:unjail(playeridparams[])
{
    if(
pInfo[playerid][pAdminLevel] >= 1)
    {
        if(
sscanf(params"u"params[0]))
            return 
SendClientMessage(playerid, -1"*"COL_WHITE" /unjail [playerid]");

        if(!
IsPlayerConnected(params[0]) && params[0] == INVALID_PLAYER_ID)
            return 
SendClientMessage(playerid, -1"*"COL_RED" Player is not connected.");
            
        if(
Jailed[params[0]] == 0)
            return 
SendClientMessage(playerid, -1"*"COL_RED" Player is not jailed.");

          
SetPlayerInterior(params[0], 0);
          
SetPlayerVirtualWorld(params[0], 0);
          
        
SpawnPlayer(params[0]);
        
SetPlayerHealth(params[0], 100);
        
KillTimer(JailTimer[params[0]]);
        
        
Jailed[params[0]] = 0;
    }
    return 
true;

If it doesn't work show function "UnJail".
Reply
#9

I don't have the function unjail I only have the command.
Reply
#10

Try this:

PHP код:
CMD:jail(playerid,params[])
{
    if(
pInfo[playerid][pAdminLevel] >= 1)
    {
        new 
reason[100];
        if(
sscanf(params"uis[100]"params[0], params[1], reason))
            return 
SendClientMessage(playerid, -1"*"COL_WHITE" /jail [playerid] [time] [reason]");

        if(!
IsPlayerConnected(params[0]) && params[0] == INVALID_PLAYER_ID)
            return 
SendClientMessage(playerid, -1,"*"COL_RED" Player is not connected.");

        if(
Jailed[params[0]] == 1)
            return 
SendClientMessage(playerid, -1"*"COL_RED" Player is already jailed.");

        new 
name1[24], name2[24];
        
GetPlayerName(params[0], name1sizeof(name1));
        
GetPlayerName(playeridname2sizeof(name2));

        
format(szStringsizeof(szString), "AdmSys-: %s (ID:%d) has been jailed for %d minutes; Reason: %s"name1params[0], params[1], reason);
        
SendClientMessageToAll(-1szString);

        
Jailed[params[0]] = 1;
        
ResetPlayerWeapons(params[0]);
        
SetPlayerInterior(params[0], 3);
        
SetPlayerVirtualWorld(params[0], 10);
        
SetPlayerFacingAngle(params[0], 360.0);
        
SetPlayerPos(params[0], 197.5662175.48001004.0);
        
SetPlayerHealth(params[0], 9999999999.00);
        
        
JailTimer[params[0]] = SetTimerEx("Unjail"params[1]*60*1000false"i"params[0]);
    }
    return 
true;
}

CMD:unjail(playeridparams[])
{
    if(
pInfo[playerid][pAdminLevel] >= 1)
    {
        if(
sscanf(params"u"params[0]))
            return 
SendClientMessage(playerid, -1"*"COL_WHITE" /unjail [playerid]");

        if(!
IsPlayerConnected(params[0]) && params[0] == INVALID_PLAYER_ID)
            return 
SendClientMessage(playerid, -1"*"COL_RED" Player is not connected.");

        if(
Jailed[params[0]] == 0)
            return 
SendClientMessage(playerid, -1"*"COL_RED" Player is not jailed.");

        
SetPlayerInterior(params[0], 0);
        
SetPlayerVirtualWorld(params[0], 0);

        
SpawnPlayer(params[0]);
        
SetPlayerHealth(params[0], 100);
        
KillTimer(JailTimer[params[0]]);
        
Jailed[params[0]] = 0;
    }
    return 
true;
}

forward Unjail(playerid);

public 
Unjail(playerid)
{
    
SetPlayerInterior(playerid0);
    
SetPlayerVirtualWorld(playerid0);

    
SpawnPlayer(playerid);
    
SetPlayerHealth(playerid100);
     
Jailed[playerid] = 0;
    return 
true;

Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)