[HELP] Loop problem (Weapon Drop)
#1

Problem: After creating the second weapon the first one don't work anymore

On top
pawn Код:
#define MAX_DROPS 100
How i create the weapon pickup
pawn Код:
new Float:X, Float:Y, Float:Z;

for(new wID = 0; wID < MAX_DROPS; wID ++)
{
WeaponInfo[wID][wData][0] = GetPlayerWeapon(playerid);
WeaponInfo[wID][wData][1] = GetPlayerAmmo(playerid);

GetPlayerPos(playerid, X, Y, Z);
pikW[wID] = CreatePickup(GetWeaponModelByID(GetPlayerWeapon(playerid)), 1, X, Y, Z, GetPlayerVirtualWorld(playerid));
OnPlayerPickUpPickup
pawn Код:
public OnPlayerPickUpPickup(playerid, pickupid)
{
for(new wID = 0; wID < MAX_DROPS; wID ++)
{
if(pickupid == pikW[wID])
{
new pString[100], wName[50];

GetWeaponName(WeaponInfo[wID][wData][0], wName, sizeof(wName));
format(pString, sizeof(pString), "~b~%s ~n~~y~Bullets: ~w~%d", wName, WeaponInfo[wID][wData][1]);
GameTextForPlayer(playerid, pString, 2500, 4);
}
}
return 1;
}
GetWeaponModelByID
pawn Код:
stock GetWeaponModelByID(WeaponID)
{
if(WeaponID == 1) return 331;
if(WeaponID == 2) return 333;
if(WeaponID == 3) return 334;
if(WeaponID == 4) return 335;
if(WeaponID == 5) return 336;
if(WeaponID == 6) return 337;
if(WeaponID == 7) return 338;
if(WeaponID == 8) return 339;
if(WeaponID == 9) return 341;
if(WeaponID == 10) return 321;
if(WeaponID == 11) return 322;
if(WeaponID == 12) return 323;
if(WeaponID == 13) return 324;
if(WeaponID == 14) return 325;
if(WeaponID == 15) return 326;
if(WeaponID == 16) return 342;
if(WeaponID == 17) return 343;
if(WeaponID == 18) return 344;
if(WeaponID == 22) return 346;
if(WeaponID == 23) return 347;
if(WeaponID == 24) return 348;
if(WeaponID == 25) return 349;
if(WeaponID == 26) return 350;
if(WeaponID == 27) return 351;
if(WeaponID == 28) return 352;
if(WeaponID == 29) return 353;
if(WeaponID == 30) return 355;
if(WeaponID == 31) return 356;
if(WeaponID == 32) return 372;
if(WeaponID == 33) return 357;
if(WeaponID == 34) return 358;
if(WeaponID == 35) return 359;
if(WeaponID == 36) return 360;
if(WeaponID == 37) return 361;
if(WeaponID == 38) return 362;
if(WeaponID == 39) return 363;
if(WeaponID == 41) return 365;
if(WeaponID == 42) return 366;
if(WeaponID == 43) return 367;
if(WeaponID == 46) return 371;
else return -1;
}
Advise thanks
Reply
#2

Quote:
Originally Posted by eDz0r
Посмотреть сообщение
Problem: After creating the second weapon the first one don't work anymore

How i create the weapon pickup
pawn Код:
new Float:X, Float:Y, Float:Z;

for(new wID = 0; wID < MAX_DROPS; wID ++)
{
WeaponInfo[wID][wData][0] = GetPlayerWeapon(playerid);
WeaponInfo[wID][wData][1] = GetPlayerAmmo(playerid);

GetPlayerPos(playerid, X, Y, Z);
pikW[wID] = CreatePickup(GetWeaponModelByID(GetPlayerWeapon(playerid)), 1, X, Y, Z, GetPlayerVirtualWorld(playerid));
OnPlayerPickUpPickup
pawn Код:
public OnPlayerPickUpPickup(playerid, pickupid)
{
for(new wID = 0; wID < MAX_DROPS; wID ++)
{
if(pickupid == pikW[wID])
{
new pString[100], wName[50];

GetWeaponName(WeaponInfo[wID][wData][0], wName, sizeof(wName));
format(pString, sizeof(pString), "~b~%s ~n~~y~Bullets: ~w~%d", wName, WeaponInfo[wID][wData][1]);
GameTextForPlayer(playerid, pString, 2500, 4);
}
}
return 1;
}
GetWeaponModelByID
pawn Код:
stock GetWeaponModelByID(WeaponID)
{
if(WeaponID == 1) return 331;
if(WeaponID == 2) return 333;
if(WeaponID == 3) return 334;
if(WeaponID == 4) return 335;
if(WeaponID == 5) return 336;
if(WeaponID == 6) return 337;
if(WeaponID == 7) return 338;
if(WeaponID == 8) return 339;
if(WeaponID == 9) return 341;
if(WeaponID == 10) return 321;
if(WeaponID == 11) return 322;
if(WeaponID == 12) return 323;
if(WeaponID == 13) return 324;
if(WeaponID == 14) return 325;
if(WeaponID == 15) return 326;
if(WeaponID == 16) return 342;
if(WeaponID == 17) return 343;
if(WeaponID == 18) return 344;
if(WeaponID == 22) return 346;
if(WeaponID == 23) return 347;
if(WeaponID == 24) return 348;
if(WeaponID == 25) return 349;
if(WeaponID == 26) return 350;
if(WeaponID == 27) return 351;
if(WeaponID == 28) return 352;
if(WeaponID == 29) return 353;
if(WeaponID == 30) return 355;
if(WeaponID == 31) return 356;
if(WeaponID == 32) return 372;
if(WeaponID == 33) return 357;
if(WeaponID == 34) return 358;
if(WeaponID == 35) return 359;
if(WeaponID == 36) return 360;
if(WeaponID == 37) return 361;
if(WeaponID == 38) return 362;
if(WeaponID == 39) return 363;
if(WeaponID == 41) return 365;
if(WeaponID == 42) return 366;
if(WeaponID == 43) return 367;
if(WeaponID == 46) return 371;
else return -1;
}
Advise thanks
I dont see where u used giveplayerweapon...
Reply
#3

Quote:
Originally Posted by Elka_Blazer
Посмотреть сообщение
I dont see where u used giveplayerweapon...
that "thing" don't matter now...
Reply
#4

Anyways, you need to use sizeof() ....
Reply
#5

Quote:
Originally Posted by Elka_Blazer
Посмотреть сообщение
Anyways, you need to use sizeof() ....
sizeof(); what?
MAX_DROPS = sizeof(WeaponInfo)
Reply
#6

Show me the enum
Reply
#7

Quote:
Originally Posted by Elka_Blazer
Посмотреть сообщение
Show me the enum
pawn Код:
enum wInfo
{
wData[2],
};
new WeaponInfo[MAX_DROPS][wInfo];
new pikW[MAX_DROPS];//The pickup
Reply
#8

Ya I'm also confused...
At no point do you actually GIVE the player the gun they picked up.
Reply
#9

Quote:
Originally Posted by Rob_Maate
Посмотреть сообщение
Ya I'm also confused...
At no point do you actually GIVE the player the gun they picked up.
why to give someone something that not exist?
Reply
#10

pawn Код:
for(new wID = 0; wID < MAX_DROPS; wID ++)
{
WeaponInfo[wID][wData][0] = GetPlayerWeapon(playerid);
WeaponInfo[wID][wData][1] = GetPlayerAmmo(playerid);
This is looping through ALL the weapon drops and setting their values, so every time you drop a weapon, then drop another one, the second weapon dropped will overwrite the first weapon, therefore it's gone.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)