Problem with a command for giving guns -
K9IsGodly - 11.07.2014
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 035: argument type mismatch (argument 2)
C:\Users\Nolan\Desktop\Pawn Scripting\gamemodes\Roleplayscript.pwn(1961) : error 035: argument type mismatch (argument 2)
C:\Users\Nolan\Desktop\Pawn Scripting\gamemodes\Roleplayscript.pwn(2698) : warning 203: symbol is never used: "GunName"
Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase
2 Errors.
Re: Problem with a command for giving guns -
Konstantinos - 11.07.2014
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);
}
}
Re: Problem with a command for giving guns -
cnoopers - 11.07.2014
infinite ammo is for 20000
Re: Problem with a command for giving guns -
K9IsGodly - 11.07.2014
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.