weapon saving help please
#1

This is my code

Код:
//---(>Includes<)---
#include <a_samp>

//---(>Dcmd<)---
#define dcmd(%1,%2,%3) if ((strcmp((%3)[1], #%1, true, (%2)) == 0) && ((((%3)[(%2) + 1] == 0) && (dcmd_%1(playerid, "")))||(((%3)[(%2) + 1] == 32) && (dcmd_%1(playerid, (%3)[(%2) + 2]))))) return 1

//---(>Colors<)---
#define COLOR_GREEN 0x00FF00AA
#define COLOR_YELLOW 0xFFFF00FF
#define COLOR_WHITE 0xFFFFFFAA
#define COLOR_SKYBLUE 0x99FFFFAA
#define COLOR_RED 0xAA3333AA
#define COLOR_ORANGE 0xFF9900AA
#define COLOR_PURPLE 0xB360FDFF
#define COLOR_BLUE 0x1229FAFF
#define COLOR_PINK 0xE100E1FF
#define COLOR_SYSTEM 0xEFEFF7AA
#define COLOR_GRAY 0xCECECEFF

enum wData
{
	Slot1,
	Slot2,
	Slot3,
	Slot4,
	Slot5,
	Slot6,
	Slot7,
	Slot8,
	Slot9,
	Slot10,
	Slot11,
	Slot12
};

enum sAmmo
{
	aSlot1,
	aSlot2,
	aSlot3,
	aSlot4,
	aSlot5,
	aSlot6,
	aSlot7,
	aSlot8,
	aSlot9,
	aSlot10,
	aSlot11,
	aSlot12
};

new pWeaponData[MAX_PLAYERS][wData];
new pAmmoData[MAX_PLAYERS][sAmmo];


public OnPlayerSpawn(playerid)
{
	GivePlayerWeapon(playerid, 24, 1337);
	GivePlayerWeapon(playerid, 29, 666);
	GivePlayerWeapon(playerid, 31, 101);
	return 1;
}

public OnPlayerCommandText(playerid, cmdtext[])
{
	if(strcmp(cmdtext, "/test", true)==0)
	{
	  new weaponid;
		pWeaponData[playerid][Slot1] = GetPlayerWeaponData(playerid, 1, weaponid, pAmmoData[playerid][aSlot1]);
		pWeaponData[playerid][Slot2] = GetPlayerWeaponData(playerid, 2, weaponid, pAmmoData[playerid][aSlot2]);
		pWeaponData[playerid][Slot3] = GetPlayerWeaponData(playerid, 3, weaponid, pAmmoData[playerid][aSlot3]);
		pWeaponData[playerid][Slot4] = GetPlayerWeaponData(playerid, 4, weaponid, pAmmoData[playerid][aSlot4]);
		pWeaponData[playerid][Slot5] = GetPlayerWeaponData(playerid, 5, weaponid, pAmmoData[playerid][aSlot5]);
		pWeaponData[playerid][Slot6] = GetPlayerWeaponData(playerid, 6, weaponid, pAmmoData[playerid][aSlot6]);
		pWeaponData[playerid][Slot7] = GetPlayerWeaponData(playerid, 7, weaponid, pAmmoData[playerid][aSlot7]);
		pWeaponData[playerid][Slot8] = GetPlayerWeaponData(playerid, 8, weaponid, pAmmoData[playerid][aSlot8]);
		pWeaponData[playerid][Slot9] = GetPlayerWeaponData(playerid, 9, weaponid, pAmmoData[playerid][aSlot9]);
		pWeaponData[playerid][Slot10] = GetPlayerWeaponData(playerid, 10, weaponid, pAmmoData[playerid][aSlot10]);
		pWeaponData[playerid][Slot11] = GetPlayerWeaponData(playerid, 11, weaponid, pAmmoData[playerid][aSlot11]);
		pWeaponData[playerid][Slot12] = GetPlayerWeaponData(playerid, 12, weaponid, pAmmoData[playerid][aSlot12]);
		ResetPlayerWeapons(playerid);
	  SetTimerEx("RestoreWeapons", 5000, 0, "i", playerid);
	  SendClientMessage(playerid, COLOR_GREEN, "- Your weapons will be restored in 5 seconds!");
	  return 1;
	}
	return 0;
}

forward RestoreWeapons(playerid);
public RestoreWeapons(playerid)
{
	GivePlayerWeapon(playerid, pWeaponData[playerid][Slot1], pAmmoData[playerid][aSlot1]);
	GivePlayerWeapon(playerid, pWeaponData[playerid][Slot2], pAmmoData[playerid][aSlot2]);
	GivePlayerWeapon(playerid, pWeaponData[playerid][Slot3], pAmmoData[playerid][aSlot3]);
	GivePlayerWeapon(playerid, pWeaponData[playerid][Slot4], pAmmoData[playerid][aSlot4]);
	GivePlayerWeapon(playerid, pWeaponData[playerid][Slot5], pAmmoData[playerid][aSlot5]);
	GivePlayerWeapon(playerid, pWeaponData[playerid][Slot6], pAmmoData[playerid][aSlot6]);
	GivePlayerWeapon(playerid, pWeaponData[playerid][Slot7], pAmmoData[playerid][aSlot7]);
	GivePlayerWeapon(playerid, pWeaponData[playerid][Slot8], pAmmoData[playerid][aSlot8]);
	GivePlayerWeapon(playerid, pWeaponData[playerid][Slot9], pAmmoData[playerid][aSlot9]);
	GivePlayerWeapon(playerid, pWeaponData[playerid][Slot10], pAmmoData[playerid][aSlot10]);
	GivePlayerWeapon(playerid, pWeaponData[playerid][Slot11], pAmmoData[playerid][aSlot11]);
	GivePlayerWeapon(playerid, pWeaponData[playerid][Slot12], pAmmoData[playerid][aSlot12]);
	SendClientMessage(playerid, COLOR_GREEN, "- Your weapons have been restored!");
}

//---(>Sscanf - End of Script<)---
stock sscanf(string[], format[], {Float,_}:...)
{
	new
	formatPos = 0,
	stringPos = 0,
	paramPos = 2,
	paramCount = numargs();
	while (paramPos < paramCount && string[stringPos])
	{
		switch (format[formatPos++])
		{
			case '\0':
			{
				return 0;
			}
			case 'i', 'd':
			{
				new
				neg = 1,
				num = 0,
				ch = string[stringPos];
				if (ch == '-')
				{
					neg = -1;
					ch = string[++stringPos];
				}
				do
				{
					stringPos++;
					if (ch >= '0' && ch <= '9')
					{
						num = (num * 10) + (ch - '0');
					}
					else
					{
						return 1;
					}
				}
				while ((ch = string[stringPos]) && ch != ' ');
				setarg(paramPos, 0, num * neg);
			}
			case 'h', 'x':
			{
				new
				ch,
				num = 0;
				while ((ch = string[stringPos++]))
				{
					switch (ch)
					{
						case 'x', 'X':
						{
							num = 0;
							continue;
						}
						case '0' .. '9':
						{
							num = (num << 4) | (ch - '0');
						}
						case 'a' .. 'f':
						{
							num = (num << 4) | (ch - ('a' - 10));
						}
						case 'A' .. 'F':
						{
							num = (num << 4) | (ch - ('A' - 10));
						}
						case ' ':
						{
							break;
						}
						default:
						{
							return 1;
						}
					}
				}
				setarg(paramPos, 0, num);
			}
			case 'c':
			{
				setarg(paramPos, 0, string[stringPos++]);
			}
			case 'f':
			{
				new tmp[25];
				strmid(tmp, string, stringPos, stringPos+sizeof(tmp)-2);
				setarg(paramPos, 0, _:floatstr(tmp));
			}
			case 's', 'z':
			{
				new
				i = 0,
				ch;
				if (format[formatPos])
				{
					while ((ch = string[stringPos++]) && ch != ' ')
					{
						setarg(paramPos, i++, ch);
					}
					if (!i) return 1;
				}
				else
				{
					while ((ch = string[stringPos++]))
					{
						setarg(paramPos, i++, ch);
					}
				}
				stringPos--;
				setarg(paramPos, i, '\0');
			}
			default:
			{
				continue;
			}
		}
		while (string[stringPos] && string[stringPos] != ' ')
		{
			stringPos++;
		}
		while (string[stringPos] == ' ')
		{
			stringPos++;
		}
		paramPos++;
	}
	while (format[formatPos] == 'z') formatPos++;
	return format[formatPos];
}
it looks like it would work right?

well when i go in the game and i get brass knuckles, ak47, uzi, etc i type /test for the command to test this idea before i put it in my administration system and it removes the weapons and it only gives me my first weapon back thats in slot 1, (brass knuckles)
if you know why this is happening please help i really appreciate it as i am stumped, and turned to you guys for help .

thank you to anyone that can solve/help my problem


*Fixed*
Reply
#2

Use like
pawn Код:
GetPlayerWeaponData(playerid, 1, pWeaponData[playerid][Slot1], pAmmoData[playerid][aSlot1]);
Reply
#3

lol what a quick fix :P, thanks.

works xD!
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)