Jetzt war ja die Rede davon die Index ID abzufragen - wenn dem so ist, dann ist "pickupid" doch der falsche Vergleichsparameter, oder?
Ich habe es dir jetzt mal umgebastelt und versucht, deinen Style so weit wie möglich beizubehalten, damit du es auch noch verstehst und nachvollziehen kannst.
Testen kann ich es leider nicht, da ich es ja nicht kompilieren kann, den Part musst du übernehmen.
Falls es nicht klappt, beschreibe bitte was nicht klappt. Bei so langen Codes ist es immer schwer es auf Anhieb ohne es zu kompilieren und testen hinzubekommen.
public OnGameModeInit()
{
BF_WEAPON[0] = CreateDynamicPickup(342, 1, 120.5242, 1934.8777, 22.7578, 7, -1, -1, 100.0); //Grenade
BF_WEAPON[1] = CreateDynamicPickup(342, 1, 279.4142, 1829.5718, 21.4766, 7, -1, -1, 100.0); //Grenade
BF_WEAPON[2] = CreateDynamicPickup(342, 1, 116.2530, 1875.0065, 22.4375, 7, -1, -1, 100.0); //Grenade
BF_WEAPON[3] = CreateDynamicPickup(342, 1, 136.4600, 1874.9723, 22.4375, 7, -1, -1, 100.0); //Grenade
BF_WEAPON[4] = CreateDynamicPickup(360, 1, 189.9938, 1940.4785, 17.6406, 7, -1, -1, 100.0); //Heat Seeker
BF_WEAPON[5] = CreateDynamicPickup(360, 1, 206.2279, 1932.8312, 23.2422, 7, -1, -1, 100.0); //Heat Seeker
BF_WEAPON[6] = CreateDynamicPickup(360, 1, 144.0044, 1850.1791, 25.2610, 7, -1, -1, 100.0); //Heat Seeker
BF_WEAPON[7] = CreateDynamicPickup(360, 1, 211.4619, 1809.8109, 25.1172, 7, -1, -1, 100.0); //Heat Seeker
BF_WEAPON[8] = CreateDynamicPickup(360, 1, 146.3869, 1907.3638, 26.3924, 7, -1, -1, 100.0); //Heat Seeker
BF_WEAPON[9] = CreateDynamicPickup(360, 1, 197.3199, 1835.0059, 23.2422, 7, -1, -1, 100.0); //Heat Seeker
new Random = random(sizeof(RandomSpawnsBF_Minigun));
BF_WEAPON[10] = CreateDynamicPickup(362, 1, RandomSpawnsBF_Minigun[Random][0], RandomSpawnsBF_Minigun[Random][1], RandomSpawnsBF_Minigun[Random][2], 7, -1, -1, 100.0);
MapIcon_Minigun = CreateDynamicMapIcon(RandomSpawnsBF_Minigun[Random][0], RandomSpawnsBF_Minigun[Random][1], RandomSpawnsBF_Minigun[Random][2], 23, C_TURQUOISE, 7, -1, -1, 250.0);
return DM_OnGameModeInit();
}
forward DM_OnGameModeInit();
#if defined _ALS_OnGameModeInit
#undef OnGameModeInit
#else
#define _ALS_OnGameModeInit
#endif
#define OnGameModeInit DM_OnGameModeInit
public OnPlayerPickUpDynamicPickup(playerid, pickupid)
{
if(pickupid == BF_WEAPON[0] || pickupid == BF_WEAPON[1] || pickupid == BF_WEAPON[2] || pickupid == BF_WEAPON[3])
{
GivePlayerWeapon(playerid, GRENADE, 3);
DestroyDynamicPickup(pickupid);
printf("%i aufgenommen.", pickupid);
}
else if(pickupid == BF_WEAPON[4] || pickupid == BF_WEAPON[5] || pickupid == BF_WEAPON[6] || pickupid == BF_WEAPON[7] || pickupid == BF_WEAPON[8] || pickupid == BF_WEAPON[9])
{
GivePlayerWeapon(playerid, HEAT_SEEKER, 1);
DestroyDynamicPickup(pickupid);
printf("%i aufgenommen.", pickupid);
}
else if(pickupid == BF_WEAPON[10]) //Minigun Event
{
new stringDE[128],
stringEN[128],
MinigunWielder[MAX_PLAYER_NAME];
GetPlayerName(playerid, MinigunWielder, sizeof(MinigunWielder));
format(stringDE, sizeof(stringDE), "»DEATHMATCH« {%06x}%s "#C_DM_E"hat die Minigun aufgenommen! Nehmt euch in Acht!", GetPlayerColor(playerid) >>> 8, MinigunWielder);
format(stringEN, sizeof(stringEN), "»DEATHMATCH« {%06x}%s "#C_DM_E"has picked up the minigun! Watch out!", GetPlayerColor(playerid) >>> 8, MinigunWielder);
SendLanguageMessage(playerid, C_DM, stringDE, stringEN);
GivePlayerWeapon(playerid, MINIGUN, 250);
DestroyDynamicPickup(pickupid);
DestroyDynamicMapIcon(MapIcon_Minigun);
printf("%i aufgenommen.", pickupid);
}
for(new i = 0; i < 11; i++)
{
switch (i)
{
case 0..9:
{
if(pickupid == BF_WEAPON[i])
{
SetTimerEx("PickupRespawn", 60*1000, false, "i", i);
BF_WEAPON[i] = -1;
}
}
case 10:
{
if(pickupid == BF_WEAPON[i])
{
SetTimer("MinigunRespawn", 3*60*1000, false);
BF_WEAPON[i] = -1;
}
}
}
}
return _OnPlayerPickUpDynamicPickup(playerid, pickupid);
}
forward _OnPlayerPickUpDynamicPickup(playerid, pickupid);
#if defined ALS_OnPlayerPickUpDynamicPickup
#undef OnPlayerPickUpDynamicPickup
#else
#define ALS_OnPlayerPickUpDynamicPickup
#endif
#define OnPlayerPickUpDynamicPickup _OnPlayerPickUpDynamicPickup
forward PickupRespawn(index);
public PickupRespawn(index)
{
switch(index)
{
case 0: BF_WEAPON[0] = CreateDynamicPickup(342, 1, 120.5242, 1934.8777, 22.7578, 7, -1, -1, 100.0); //Grenade
case 1: BF_WEAPON[1] = CreateDynamicPickup(342, 1, 279.4142, 1829.5718, 21.4766, 7, -1, -1, 100.0); //Grenade
case 2: BF_WEAPON[2] = CreateDynamicPickup(342, 1, 116.2530, 1875.0065, 22.4375, 7, -1, -1, 100.0); //Grenade
case 3: BF_WEAPON[3] = CreateDynamicPickup(342, 1, 136.4600, 1874.9723, 22.4375, 7, -1, -1, 100.0); //Grenade
case 4: BF_WEAPON[4] = CreateDynamicPickup(360, 1, 189.9938, 1940.4785, 17.6406, 7, -1, -1, 100.0); //Heat Seeker
case 5: BF_WEAPON[5] = CreateDynamicPickup(360, 1, 206.2279, 1932.8312, 23.2422, 7, -1, -1, 100.0); //Heat Seeker
case 6: BF_WEAPON[6] = CreateDynamicPickup(360, 1, 144.0044, 1850.1791, 25.2610, 7, -1, -1, 100.0); //Heat Seeker
case 7: BF_WEAPON[7] = CreateDynamicPickup(360, 1, 211.4619, 1809.8109, 25.1172, 7, -1, -1, 100.0); //Heat Seeker
case 8: BF_WEAPON[8] = CreateDynamicPickup(360, 1, 146.3869, 1907.3638, 26.3924, 7, -1, -1, 100.0); //Heat Seeker
case 9: BF_WEAPON[9] = CreateDynamicPickup(360, 1, 197.3199, 1835.0059, 23.2422, 7, -1, -1, 100.0); //Heat Seeker
}
printf("Index %d respawnt", index);
return 1;
}
forward MinigunRespawn();
public MinigunRespawn()
{
new Random = random(sizeof(RandomSpawnsBF_Minigun));
BF_WEAPON[10] = CreateDynamicPickup(362, 1, RandomSpawnsBF_Minigun[Random][0], RandomSpawnsBF_Minigun[Random][1], RandomSpawnsBF_Minigun[Random][2], 7, -1, -1, 100.0);
MapIcon_Minigun = CreateDynamicMapIcon(RandomSpawnsBF_Minigun[Random][0], RandomSpawnsBF_Minigun[Random][1], RandomSpawnsBF_Minigun[Random][2], 23, C_TURQUOISE, 7, -1, -1, 250.0);
for(new i = 0; i < MAX_PLAYERS; i++)
{
if(GetPlayerVirtualWorld(i) == 7)
{
GameTextForPlayer(i, "~r~Minigun Event!", 3000, 4);
SendLanguageMessage(i, C_DM, "»DEATHMATCH« Die Minigun wurde gespawnt! Schnapp sie dir!", "»DEATHMATCH« The minigun has been spawned! Go get it!");
}
}
printf("Minigun respawnt.");
return 1;
}