Well, that works, but only sometimes...

I mean, it seems like it's not the best way to do the job, since sometimes it doesn't give anything, sometimes it gives only primaries, etc.
Here is my code for now, with the mentioned bugs:
PHP Code:
/* Plugin generated by AMXX-Studio */
#include <amxmodx>
#include <hamsandwich>
#include <fakemeta>
#include <cstrike>
#include <fun>
const PH = PLUGIN_HANDLED
const PC = PLUGIN_CONTINUE
const TimeToRespawnAfterChoose = 5
new player_lives[33]
new player_weapons[33][32]
new player_bpammo[33][32]
new g_flDeadOrigin[33][3]
new g_iMaxPlayers
public plugin_init() {
RegisterHam(Ham_Killed, "player", "onPlayerKilled")
g_iMaxPlayers = get_maxplayers()
}
public onPlayerKilled(victim, killer, shouldgib)
{
pev(victim, pev_origin, g_flDeadOrigin[victim])
set_task(1.0, "taskAskForRespawn", victim)
new num
get_user_weapons(killer, player_weapons[killer], num)
for(new i; i < num; i++)
cs_get_user_bpammo(killer, player_bpammo[killer][player_weapons[killer][i]])
}
public taskAskForRespawn(id)
{
if(is_user_alive(id))
return PH
new szTitle[64]
formatex(szTitle, charsmax(szTitle), "You have\r %i\y extra lives^nDo you want to use one?", player_lives[id])
new menu = menu_create(szTitle, "handleRespawnMenu")
menu_additem(menu, "Yes", "", 0)
menu_additem(menu, "No", "", 0)
menu_display(id, menu, 0)
return PC
}
public handleRespawnMenu(id, menu, item)
{
if(item == MENU_EXIT)
{
menu_destroy(menu)
return PH
}
if(is_user_alive(id))
{
client_print(id, print_chat, "You are already alive!")
return PH
}
switch(item)
{
case 0:
{
client_print(id, print_chat, "You will be respawned in %d seconds!", TimeToRespawnAfterChoose)
set_task(float(TimeToRespawnAfterChoose), "respawnPlayer", id)
}
default: return PH
}
return PH
}
public respawnPlayer(id)
{
if(is_user_alive(id))
return PH
ExecuteHamB(Ham_CS_RoundRespawn, id)
set_pev(id, pev_origin, g_flDeadOrigin[id])
new szWeaponName[32]
for(new i = 1; i <= g_iMaxPlayers; i++)
{
if(is_user_connected(id) && player_weapons[id][i])
{
get_weaponname(player_weapons[id][i], szWeaponName, charsmax(szWeaponName))
strip_user_weapons(id)
give_item(id, "weapon_knife")
give_item(id, szWeaponName)
cs_set_user_bpammo(id, player_weapons[id][i], player_bpammo[id][i])
}
}
return PC
}
I guess this is not the right way to set the BPAmmo, too, but it's the same with or without it. I'm currently waiting for better and improved suggestions.
Thanks!
__________________