Vice City Multiplayer
VC:MP 0.3 => mIRC/pawn Scripting => Topic started by: saberman on May 26, 2011, 03:25:24 pm
-
else if(strcmp(cmd, "wepequip", true) == 0)
{
new tmp2[126], tmp3[126], wep[126]; tmp = strtok(cmdtext, idx), tmp2 = strtok(cmdtext, idx), tmp3 = strtok(cmdtext, idx); new targetname[32]; targetname[0] = FindPlayerIDFromString(tmp);
wep[0] = FindWepIDFromString(tmp2); new fbil[126];
fbil = dini_Get(file, "FBI");
if(strval(fbil) > 2) SendClientMessage(playerid, RED, "You have to be Agent+ to use this command!");
else if(!strlen(tmp3)) SendClientMessage(playerid, RED, "USAGE: /c wepequip [id] [weapon] [ammo]");
else
{
printf("%s(%d) has given %s(%d) weapon %s ammo %d - /c wepequip", gPlayers[playerid], playerid, gPlayers[strval(targetname)], strval(targetname), wep, tmp3);
format(szMsg, 256, "You have been issued %s with %d ammo", wep, tmp3);
SendClientMessage(strval(targetname), GREEN, szMsg);
format(szMsg, 256, "You issued %s with %d ammo to %s(%d)", wep, tmp3, gPlayers[strval(targetname)], strval(targetname));
SendClientMessage(playerid, GREEN, szMsg);
SetPlayerWeapon(strval(targetname), strval(wep), strval(tmp3));
}
return 1;
}
format(szMsg, 256, "You have been issued %s with %d ammo", wep, tmp3, gPlayers[strval(targetname)], strval(targetname));
It says: "You have been issued with 40-50(like that) ammo"
Also, it deletes all my weapons and ammo. I don't see whats bugged. Help me!
-
[pawn]
new wep[126]; new targetname[32]; targetname[0] = FindPlayerIDFromString(tmp);
wep[0] = FindWepIDFromString(tmp2);
[/pawn]
There's no need to use arrays for these. This is sufficient:
[pawn]
new wep; new targetname;
targetname = FindPlayerIDFromString(tmp);
wep = FindWepIDFromString(tmp2);
[/pawn]
[pawn]
printf("%s(%d) has given %s(%d) weapon %s ammo %d - /c wepequip", gPlayers[playerid], playerid, gPlayers[strval(targetname)], strval(targetname), wep, tmp3);
format(szMsg, 256, "You have been issued %s with %d ammo", wep, tmp3);
[/pawn]
Replace with:
[pawn]
printf("%s(%d) has given %s(%d) weapon %s ammo %d - /c wepequip", gPlayers[playerid], playerid, gPlayers[targetname], targetname, gWeapons[wep], strval(tmp3));
format(szMsg, 256, "You have been issued %s with %d ammo", gWeapons[wep], strval(tmp3));
[/pawn]
[pawn]
format(szMsg, 256, "You issued %s with %d ammo to %s(%d)", wep, tmp3, gPlayers[strval(targetname)], strval(targetname));
SendClientMessage(playerid, GREEN, szMsg);
[/pawn]
This isn't necessary since everyone is going to see the "ADMIN (0) has given PLAYER( 1) weapon GUN ammo 9999." including the admin.
[pawn]
SetPlayerWeapon(strval(targetname), strval(wep), strval(tmp3));
[/pawn]
Replace with:
[pawn]
SetPlayerWeapon(targetname, wep, strval(tmp3));
[/pawn]
The main problem was that you were trying to set the weapon and player in an array. However, numbers in an array can also be parsed as a string, so strval might's seen it as "Q." This isn't an integer, and can lead to some odd results. See if the suggestions I posted above work.
-
Its fixed, thank you for your help.