Problem with a command for giving guns
#1

I encountered an issue while making this /givegun command where it will not tell you the name of the weapon, or actually any string information in game (in terms of the message that's sent where Admin %s has given %s a %s with %s, would just appear as "Admin has given a with" and would have some very odd characters. To combat this I tried to use the stock GetWeaponName. Now I'm receiving two errors and I still don't really know if the command will work. Here's all the code if someone could help me out with what's wrong here.

Код:
CMD:givegun(playerid, params[])
{
	if(PlayerInfo[playerid][pAdmin] >= 6)
	{
	    new targetid, gun, ammo, string[128], string2[128], wname;
	    if(sscanf(params, "uii", targetid, gun, ammo)) return SendClientMessage(playerid, -1, "/givegun [targetid] [gun] [ammo]");
		if(gun > 47 || gun < 1) return SendClientMessage(playerid, -1, "The selected weapon ID is invalid - please select one between 1 and 47");
		if(ammo > 99999 || ammo < 1) return SendClientMessage(playerid, -1, "The amount of ammo you chose is invalid - please select an amount between 1 and 99999(infinite)");
		GivePlayerWeapon(targetid, gun, ammo);
		GetWeaponName(gun,wname,sizeof(wname));
		format(string,sizeof(string),"Admin %s has given you a %s with %s ammo in it!",playerid,wname,ammo);
		SendClientMessage(targetid, -1, string);
		format(string2,sizeof(string2),"You have given %s a %s with %s ammo in it!",targetid,wname,ammo);
		SendClientMessage(playerid, -1, string2);
	}
	else
	{
		SendClientMessage(playerid, -1, "You are not a high enough leveled administrator to use this command!");
	}
	return 1;
}
Код:
stock GetGunName(gunid)
{
    new res[24];
    switch(gunid) {
        case 0: format(res,sizeof(res),"Fist");
        case 1: format(res,sizeof(res),"Brass Knuckles");
        case 2: format(res,sizeof(res),"Golf Club");
        case 3: format(res,sizeof(res),"Nightstick");
        case 4: format(res,sizeof(res),"Knife");
        case 5: format(res,sizeof(res),"Baseball Bat");
        case 6: format(res,sizeof(res),"Shovel");
        case 7: format(res,sizeof(res),"Pool Cue");
        case 8: format(res,sizeof(res),"Katana");
        case 9: format(res,sizeof(res),"Chainsaw");
        case 10: format(res,sizeof(res),"Double-ended Dildo");
        case 11: format(res,sizeof(res),"Dildo");
        case 12: format(res,sizeof(res),"Vibrator");
        case 13: format(res,sizeof(res),"Silver Vibrator");
        case 14: format(res,sizeof(res),"Flowers");
        case 15: format(res,sizeof(res),"Cane");
        case 16: format(res,sizeof(res),"Grenade");
        case 17: format(res,sizeof(res),"Tear Gas");
        case 18:
        {
            return weapon[0] = 0, strcat(weapon, "Molotov Cocktail", len), true;
        }
        case 22: format(res,sizeof(res),"9mm Pistol");
        case 23: format(res,sizeof(res),"Silenced 9mm Pistol");
        case 24: format(res,sizeof(res),"Desert Eagle");
        case 25: format(res,sizeof(res),"Pump Shotgun");
        case 26: format(res,sizeof(res),"Sawnoff Shotgun");
        case 27: format(res,sizeof(res),"Combat Shotgun");
        case 28: format(res,sizeof(res),"Uzi");
        case 29: format(res,sizeof(res),"MP5");
        case 30: format(res,sizeof(res),"AK-47");
        case 31: format(res,sizeof(res),"M4");
        case 32: format(res,sizeof(res),"Tec-9");
        case 33: format(res,sizeof(res),"Country Rifle");
        case 34: format(res,sizeof(res),"Sniper Rifle");
        case 35: format(res,sizeof(res),"RPG");
        case 36: format(res,sizeof(res),"Heat Seeker");
        case 37: format(res,sizeof(res),"Flamethrower");
        case 38: format(res,sizeof(res),"Minigun");
        case 39: format(res,sizeof(res),"Satchel Charge");
        case 40: format(res,sizeof(res),"Detonator");
        case 41: format(res,sizeof(res),"Pepper Spray");
        case 42: format(res,sizeof(res),"Fire Extinguisher");
        case 43: format(res,sizeof(res),"Camera");
        case 44:
        {
            return weapon[0] = 0, strcat(weapon, "Night Vision Goggles", len), true;
        }
        case 45:
        {
            return weapon[0] = 0, strcat(weapon, "Thermal Goggles", len), true;
        }
        case 46: format(res,sizeof(res),"Parachute");
        default: format(res,sizeof(res),"Unknown");
    }
    return res;
}
Edit: forgot to include the errors, sorry guys.

PHP код:
C:\Users\Nolan\Desktop\Pawn Scripting\gamemodes\Roleplayscript.pwn(1961) : error 035argument type mismatch (argument 2)
C:\Users\Nolan\Desktop\Pawn Scripting\gamemodes\Roleplayscript.pwn(1961) : error 035argument type mismatch (argument 2)
C:\Users\Nolan\Desktop\Pawn Scripting\gamemodes\Roleplayscript.pwn(2698) : warning 203symbol is never used"GunName"
Pawn compiler 3.2.3664              Copyright (c1997-2006ITB CompuPhase
2 Errors

Reply
#2

pawn Код:
CMD:givegun(playerid, params[])
{
    if (PlayerInfo[playerid][pAdmin] < 6) return SendClientMessage(playerid, -1, "You are not a high enough leveled administrator to use this command!");
    new targetid, gun, ammo;
    if (sscanf(params, "uii", targetid, gun, ammo)) return SendClientMessage(playerid, -1, "/givegun [targetid] [gun] [ammo]");
    if (!(1 <= gun <= 46)) return SendClientMessage(playerid, -1, "The selected weapon ID is invalid - please select one between 1 and 46");
    if (!(1 <= ammo <= 99999)) return SendClientMessage(playerid, -1, "The amount of ammo you chose is invalid - please select an amount between 1 and 99999(infinite)");
    new string[92], wname[20], p_name[MAX_PLAYER_NAME];
    GivePlayerWeapon(targetid, gun, ammo);
    GetWeaponNameEx(gun, wname, sizeof (wname));
    GetPlayerName(playerid, p_name, MAX_PLAYER_NAME);
    format(string, sizeof (string), "Admin %s has given you a %s with %s ammo in it!", p_name, wname, ammo);
    SendClientMessage(targetid, -1, string);
    GetPlayerName(targetid, p_name, MAX_PLAYER_NAME);
    format(string, sizeof (string), "You have given %s a %s with %s ammo in it!", p_name, wname, ammo);
    SendClientMessage(playerid, -1, string);
    return 1;
}

stock GetWeaponNameEx(weaponid, weapon[], len = sizeof (weapon))
{
    switch (weaponid)
    {
        case 0: strcat((weapon[0] = '\0', weapon), "Fist", len);
        case 18: strcat((weapon[0] = '\0', weapon), "Molotov Cocktail", len);
        case 44: strcat((weapon[0] = '\0', weapon), "Thermal Goggles", len);
        case 45: strcat((weapon[0] = '\0', weapon), "Night Vision Goggles", len);
        default: GetWeaponName(weaponid, weapon, len);
    }
}
Reply
#3

infinite ammo is for 20000
Reply
#4

Quote:
Originally Posted by cnoopers
Посмотреть сообщение
infinite ammo is for 20000
I'm pretty sure infinite ammo is anything over 10,000. I read that somewhere, but I wasn't sure. I knew 99999 was definitely infinite so I chose that.

Thanks Konstantinos for that, it solved the problem.
Reply


Forum Jump:


Users browsing this thread: 2 Guest(s)