SA-MP Forums Archive
SSCANF Errors - 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: SSCANF Errors (/showthread.php?tid=636764)



SSCANF Errors - aoky - 03.07.2017

PHP код:
CMD:unpackageweapon(playeridparams[])
{
    new 
playerpackagetypestr[128];
    if(
sscanf(params"su"packagetypeplayerid)) return SendClientMessage(playeridCOLOR_GRAY"/unpackage [playerid] [packagetype]");
    {
        if(
IsInRangeOfPlayer(playeridplayer5))
        {
            if(!
strcmp(packagetype"pistol"true))
            {
                if(
Inventory[playerid][PistolPackage] > 0)
                {
                    
TakeInventoryItem(playeridPISTOLPACKAGE1);
                    
GivePlayerGun(player24100);
                }
                else 
SendErrorMessage(playerid"You don't have this item.");
                return 
1;
            }
            else if(!
strcmp(packagetype"shotgun"true))
            {
                if(
Inventory[playerid][ShotgunPackage] > 0)
                {
                    
TakeInventoryItem(playeridSHOTGUNPACKAGE1);
                    
GivePlayerGun(player25125);
                }
                else 
SendErrorMessage(playerid"You don't have this item.");
                }
                else if(!
strcmp(packagetype"automatic"true))
            {
                if(
Inventory[playerid][AutomaticRiflePackage] > 0)
                {
                    
TakeInventoryItem(playeridAUTOMATICRIFLEPACKAGE1);
                    
format(strsizeof(str), "%s hands an M4 to %s. "GetRoleplayName(playerid), GetRoleplayName(player));
                    
SetPlayerChatBubble(playeridstrCOLOR_RPRange_Short7000);
                    
GivePlayerGun(player31250);
                }
                    else if(!
strcmp(packagetype"molotov"true))
            {
                if(
Inventory[playerid][ExplosivePackage] > 0)
                {
                    
TakeInventoryItem(playeridEXPLOSIVEPACKAGE1);
                    
format(strsizeof(str), "%s hands a Molotov %s. "GetRoleplayName(playerid), GetRoleplayName(player));
                    
SetPlayerChatBubble(playeridstrCOLOR_RPRange_Short7000);
                    
GivePlayerGun(player181);
                }
                else 
SendErrorMessage(playerid"You don't have this item.");
                return 
1;
                }
            }
        }
        else 
SendErrorMessage(playerid"You are too far away from this player.");
    }
    return 
1;

PHP код:
C:\Users\Austin\Desktop\Stuff\United Roleplay\gamemodes\U:RP-R39.pwn(17007) : error 035argument type mismatch (argument 1)
C:\Users\Austin\Desktop\Stuff\United Roleplay\gamemodes\U:RP-R39.pwn(17018) : error 035argument type mismatch (argument 1)
C:\Users\Austin\Desktop\Stuff\United Roleplay\gamemodes\U:RP-R39.pwn(17028) : error 035argument type mismatch (argument 1)
C:\Users\Austin\Desktop\Stuff\United Roleplay\gamemodes\U:RP-R39.pwn(17037) : error 035argument type mismatch (argument 1 
These are the lines, where it has "packagetype". Why is this?

PHP код:
else if(!strcmp(packagetype"pistol"true)) 



Re: SSCANF Errors - Kane - 03.07.2017

Packagetype isn't a string. Make it a string.


Re: SSCANF Errors - Freedom. - 03.07.2017

Код:
CMD:unpackageweapon(playerid, params[])
{
   	new packagetype[12], player, str[128];

	if(sscanf(params, "D(-1)s[12]", player, packagetype))
		return SendClientMessage(playerid, COLOR_GRAY, "/unpackage [playerid] [packagetype]");

    if(!IsInRangeOfPlayer(playerid, player, 5))
       return SendClientMessage(playerid, COLOR_GRAY, "You are too far away from this player.");

    if(!strcmp(packagetype, "pistol", true))
    {
        if(Inventory[playerid][PistolPackage] > 0)
        {
            TakeInventoryItem(playerid, PISTOLPACKAGE, 1);
            GivePlayerGun(player, 24, 100);
        }
        else SendErrorMessage(playerid, "You don't have this item.");
    }
    else if(!strcmp(packagetype, "shotgun", true))
    {
	    if(Inventory[playerid][ShotgunPackage] > 0)
	    {
	        TakeInventoryItem(playerid, SHOTGUNPACKAGE, 1);
	        GivePlayerGun(player, 25, 125);
	    }
	    else SendErrorMessage(playerid, "You don't have this item.");
   	}
	else if(!strcmp(packagetype, "automatic", true))
    {
        if(Inventory[playerid][AutomaticRiflePackage] > 0)
        {
            TakeInventoryItem(playerid, AUTOMATICRIFLEPACKAGE, 1);
            format(str, sizeof(str), "%s hands an M4 to %s. ", GetRoleplayName(playerid), GetRoleplayName(player));
            SetPlayerChatBubble(playerid, str, COLOR_RP, Range_Short, 7000);
            GivePlayerGun(player, 31, 250);
        }
        else SendErrorMessage(playerid, "You don't have this item.");
   	}
    else if(!strcmp(packagetype, "molotov", true))
    {
        if(Inventory[playerid][ExplosivePackage] > 0)
        {
            TakeInventoryItem(playerid, EXPLOSIVEPACKAGE, 1);
            format(str, sizeof(str), "%s hands a Molotov %s. ", GetRoleplayName(playerid), GetRoleplayName(player));
            SetPlayerChatBubble(playerid, str, COLOR_RP, Range_Short, 7000);
            GivePlayerGun(player, 18, 1);
        }
        else SendErrorMessage(playerid, "You don't have this item.");
    }
    return 1;
}



Re: SSCANF Errors - Kane - 03.07.2017

Why would you use D(-1) for playerid Freedom?


Re: SSCANF Errors - Freedom. - 03.07.2017

Check for is player id entered:

Код:
else if(!strcmp(packagetype, "select", true))
{
	if(player == -1)
		return SendClientMessage(playerid, COLOR_GRAY, "/unpackage select <player ID>");

	if(!IsPlayerConnected(player))
		return SendClientMessage(playerid, COLOR_GRAY, "id not found");

	// ...
	
	return 1;
}



Re: SSCANF Errors - Kane - 03.07.2017

But why would you do that when you could just use the user specifier for playerid OR name?


Re: SSCANF Errors - aoky - 03.07.2017

It works and that's all that matters, everyone has their own style of coding. Thank you.