| Nagyon nehéz lenne bővebben kifejteni, hogy mi nem jó? Gondolok itt arra, hogy továbbra is mindenkinek a hátán van fegyver, vagy kifagy tőle a szerver, stb. Elsősorban logot kérnénk szerver leállás esetén.
 
 Éledéskor lekérdezi, hogy a játékos csapata CT-e, ha nem, akkor megállítja az "eseményeket". :)
 
 Kód:     #include <amxmodx>
  
     #include <fakemeta>
  
     #include <hamsandwich>
  
     #include <cstrike>
  
      
  
     #define PLUGIN  "Back Weapons"
  
     #define AUTHOR  "hoboman313/cheap_suit"
  
     #define VERSION "1.87"
  
      
  
     #define MAX_PLAYERS             32
  
     #define OFFSET_PRIMARYWEAPON    116
  
     #define OFFSET_WEAPONTYPE       43
  
     #define EXTRAOFFSET_WEAPONS     4
  
     #define OFFSET_AUTOSWITCH       509
  
     #define OFFSET_SHIELD           510
  
     #define HAS_SHIELD              (1<<24)
  
      
  
     #define PRIMARY_WEAPONS (1<<CSW_SCOUT | 1<<CSW_XM1014 | 1<<CSW_MAC10 | 1<<CSW_AUG | 1<<CSW_UMP45 | 1<<CSW_SG550 | 1<<CSW_GALIL | 1<<CSW_FAMAS | 1<<CSW_AWP | 1<<CSW_MP5NAVY | 1<<CSW_M249 | 1<<CSW_M3 | 1<<CSW_M4A1 | 1<<CSW_TMP | 1<<CSW_G3SG1 | 1<<CSW_SG552 | 1<<CSW_AK47 | 1<<CSW_P90)
  
      
  
     #define is_weapon_primary(%1)      (PRIMARY_WEAPONS & (1<<%1))
  
     #define cs_get_weapon_type(%1)     get_pdata_int(%1, OFFSET_WEAPONTYPE, EXTRAOFFSET_WEAPONS)
  
     #define cs_get_user_hasprim(%1)    get_pdata_int(%1, OFFSET_PRIMARYWEAPON)
  
     #define cs_get_user_autoswitch(%1) get_pdata_int(%1, OFFSET_AUTOSWITCH)
  
     #define cs_get_user_shield(%1)     (get_pdata_int(%1, OFFSET_SHIELD) & HAS_SHIELD) ? 1 : 0
  
      
  
     enum
  
     {
  
             MODEL_NULL    = 0,
  
             MODEL_AUG     = 1,
  
             MODEL_AK47    = 2,
  
             MODEL_AWP     = 3,
  
             MODEL_MP5NAVY = 4,
  
             MODEL_P90     = 5,
  
             MODEL_GALIL   = 6,
  
             MODEL_M4A1    = 7,
  
             MODEL_SG550   = 8,
  
             MODEL_SG552   = 9,
  
             MODEL_SCOUT   = 10,
  
             MODEL_XM1014  = 11,
  
             MODEL_M3      = 12,
  
             MODEL_G3SG1   = 13,
  
             MODEL_M249    = 14,
  
             MODEL_FAMAS   = 15,
  
             MODEL_UMP45   = 16
  
     }
  
      
  
     new g_weapons[][] =
  
     {      
  
             "weapon_p228",
  
             "weapon_scout",
  
             "weapon_hegrenade",
  
             "weapon_xm1014",
  
             "weapon_c4",
  
             "weapon_mac10",
  
             "weapon_aug",
  
             "weapon_smokegrenade",
  
             "weapon_elite",
  
             "weapon_fiveseven",
  
             "weapon_ump45",
  
             "weapon_sg550",
  
             "weapon_galil",
  
             "weapon_famas",
  
             "weapon_usp",
  
             "weapon_glock18",
  
             "weapon_awp",
  
             "weapon_mp5navy",
  
             "weapon_m249",
  
             "weapon_m3",
  
             "weapon_m4a1",
  
             "weapon_tmp",
  
             "weapon_g3sg1",
  
             "weapon_flashbang",
  
             "weapon_deagle",
  
             "weapon_sg552",
  
             "weapon_ak47",
  
             "weapon_knife",
  
             "weapon_p90"
  
     }
  
      
  
     new g_weaponclass[] = "backweapon"
  
     new g_weaponmodel[] = "models/backweapons.mdl"
  
      
  
     new g_weaponent[MAX_PLAYERS+1]
  
      
  
     public plugin_init()
  
     {
  
             register_plugin(PLUGIN, VERSION, AUTHOR)
  
             register_cvar(PLUGIN, VERSION, FCVAR_SPONLY|FCVAR_SERVER)
  
      
  
             RegisterHam(Ham_Killed,           "player", "bacon_killed")
  
             RegisterHam(Ham_Spawn,            "player", "bacon_spawn_post", 1)
  
             RegisterHam(Ham_AddPlayerItem,    "player", "bacon_addplayeritem")
  
             RegisterHam(Ham_RemovePlayerItem, "player", "bacon_removeplayeritem")
  
      
  
             for(new i = 0; i < sizeof g_weapons; i++)
  
             {
  
                     RegisterHam(Ham_Item_AttachToPlayer, g_weapons[i], "bacon_item_attachtoplayer_post", 1)
  
                     RegisterHam(Ham_Item_Deploy,         g_weapons[i], "bacon_item_deploy_post",         1)
  
             }
  
     }
  
      
  
     public plugin_precache()
  
             precache_model(g_weaponmodel)
  
      
  
     public client_putinserver(id)
  
     {
  
         new CsTeams:userTeam = cs_get_user_team(id)
  
         if (userTeam == CS_TEAM_CT) {
  
             static infotarget
  
             if(!infotarget) infotarget = engfunc(EngFunc_AllocString, "info_target")
  
      
  
             g_weaponent[id] = engfunc(EngFunc_CreateNamedEntity, infotarget)
  
             if(pev_valid(g_weaponent[id]))
  
             {
  
                     engfunc(EngFunc_SetModel, g_weaponent[id], g_weaponmodel)
  
                     set_pev(g_weaponent[id], pev_classname, g_weaponclass)
  
                     set_pev(g_weaponent[id], pev_movetype, MOVETYPE_FOLLOW)
  
                     set_pev(g_weaponent[id], pev_effects, EF_NODRAW)
  
                     set_pev(g_weaponent[id], pev_aiment, id)
  
             }
  
          }
  
     }
  
     public client_disconnect(id)
  
     {
  
             if(g_weaponent[id] > 0 && pev_valid(g_weaponent[id]))
  
                     engfunc(EngFunc_RemoveEntity, g_weaponent[id])
  
      
  
             g_weaponent[id] = 0
  
     }
  
      
  
     public bacon_killed(id, idattacker, shouldgib)
  
             fm_set_entity_visibility(g_weaponent[id], 0)
  
      
  
     public bacon_addplayeritem(id, ent)
  
     {
  
             static weaponid; weaponid = cs_get_weapon_type(ent)
  
             if(is_weapon_primary(weaponid) && pev_valid(g_weaponent[id]))
  
             {
  
                     fm_set_entity_visibility(g_weaponent[id], 0)
  
                     set_pev(g_weaponent[id], pev_body, get_weapon_model(weaponid))
  
             }
  
     }
  
      
  
     public bacon_removeplayeritem(id, ent)
  
     {
  
             if(is_weapon_primary(cs_get_weapon_type(ent)) && pev_valid(g_weaponent[id]))
  
                     fm_set_entity_visibility(g_weaponent[id], 0)
  
     }
  
      
  
     public bacon_spawn_post(id) 
     {
         if((cs_get_user_team(id) != CS_TEAM_CT) && !is_user_alive(id))
                 return PLUGIN_CONTINUE
                 if(!cs_get_user_hasprim(id))
                 {
                         fm_set_entity_visibility(g_weaponent[id], 0)
                 }           
         return PLUGIN_CONTINUE
  
     }
  
     public bacon_item_attachtoplayer_post(ent, id) if(is_user_alive(id) && !cs_get_user_autoswitch(id))
  
     {
  
             if(is_weapon_primary(cs_get_weapon_type(ent)) && pev_valid(g_weaponent[id]))
  
                     fm_set_entity_visibility(g_weaponent[id], 1)
  
     }
  
      
  
     public bacon_item_deploy_post(ent)
  
     {
  
             static id; id = pev(ent, pev_owner)
  
             if(is_user_alive(id))
  
             {
  
                     static weapon; weapon = cs_get_weapon_type(ent)
  
                     if(is_weapon_primary(weapon) || cs_get_user_shield(id))
  
                             fm_set_entity_visibility(g_weaponent[id], 0)
  
      
  
                     else if(cs_get_user_hasprim(id))
  
                             fm_set_entity_visibility(g_weaponent[id], 1)
  
             }
  
     }
  
      
  
     stock get_weapon_model(weapon)
  
     {
  
             switch(weapon)
  
             {
  
                     case CSW_SCOUT:   return MODEL_SCOUT
  
                     case CSW_XM1014:  return MODEL_XM1014
  
                     case CSW_AUG:     return MODEL_AUG
  
                     case CSW_UMP45:   return MODEL_UMP45
  
                     case CSW_SG550:   return MODEL_SG550
  
                     case CSW_GALIL:   return MODEL_GALIL
  
                     case CSW_FAMAS:   return MODEL_FAMAS
  
                     case CSW_AWP:     return MODEL_AWP
  
                     case CSW_MP5NAVY: return MODEL_MP5NAVY
  
                     case CSW_M249:    return MODEL_M249
  
                     case CSW_M3:      return MODEL_M3
  
                     case CSW_M4A1:    return MODEL_M4A1
  
                     case CSW_G3SG1:   return MODEL_G3SG1
  
                     case CSW_SG552:   return MODEL_SG552
  
                     case CSW_AK47:    return MODEL_AK47
  
                     case CSW_P90:     return MODEL_P90
  
             }
  
             return 0
  
     }
  
      
  
     stock fm_set_entity_visibility(index, visible = 1)
  
             set_pev(index, pev_effects, visible == 1 ? pev(index, pev_effects) & ~EF_NODRAW : pev(index, pev_effects) | EF_NODRAW)
 |