A więc napisałem sobie plugin do mojego biohazardu jest to item ktory zwieksza amunicje w broniach o 50% na localu wszystko pieknie dziala jak nalezy wrzucam uradowany na serwer wybieram bron z menu jeb serwer pada wchodze ponownie robie to samo serwer znow pada w konsoli "segmentation fault" dodatkowo dzieja sie inne dziwne rzeczy tzn. brak wiadomosci o zmienie z bursta na pol automatyczny w glocku i brak mozliwosci przeladowania broni po nacisnieciu "r" jak i wystrzeleniu wszystkich pociskow uzywam Ham_Weapon_Reload ale nie zwracam w nim ani HAM_SUPERCEDE ani HAM_OVERRIDE jedynie co to HAM_IGNORED po wylaczeniu pluginu serwer chodzi normalnie bez zajakniecia. na serwerze amxx 1.8.2 na localu 1.8.1.3
#include <amxmodx> #include <fakemeta> #include <hamsandwich> #include <biohazard> #include <cstrike> new ma_item[33],OldWeapon[33],bool:IsInReload[33],max_players new weapon_clip[]={0,13,0,10,0,7,0,30,30,0,30,20,25,30,35,25,12,20,10,30,100,8,30,30,20,0,7,30,30,0,50} new weapon_name[][]={"none","weapon_p228","weapon_shield","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"} public plugin_init() { register_plugin("powiekszone magazynki", "1.0", "fresh") register_item("Powiekszone Magazynki",16000,0,1) for(new i=1;i<=30;i++) RegisterHam(Ham_Weapon_Reload,weapon_name[i],"fwd_StartReloading") register_message(get_user_msgid("CurWeapon"),"Message_CurWeapon") register_event("HLTV", "Event_HLTV", "a", "1=0", "2=0"); max_players = get_maxplayers() } public client_connect(id) ma_item[id] = false public biohazard_item_buy(id) ma_item[id] = true public fwd_StartReloading(ent) { if(!pev_valid(ent)) return HAM_IGNORED static id,clip,ammo,weapon id=pev(ent,pev_owner) if(!is_user_alive(id)) return HAM_IGNORED; weapon=get_user_weapon(id,clip,ammo) if(clip==weapon_clip[weapon] || weapon == CSW_M3 || weapon == CSW_XM1014 || !ma_item[id]) return HAM_IGNORED; IsInReload[id]=true return HAM_IGNORED } public Message_CurWeapon(msgId, msgDest, id) { if(!get_msg_arg_int(1) || !is_user_alive(id)) return ; static weapon,ammo weapon = get_msg_arg_int(2) ammo = get_msg_arg_int(3) if(weapon==OldWeapon[id] && IsInReload[id] && ma_item[id]) { static ent,name[32] get_weaponname(weapon,name,31) if((ent = fm_find_ent_by_owner(-1,name,id,0))) { cs_set_weapon_ammo(ent,ammo+ammo/2) set_msg_arg_int(3,get_msg_argtype(3),ammo+ammo/2) } } IsInReload[id] = false OldWeapon[id] = weapon } public Event_HLTV() { for(new i = 1; i <= max_players ; i++) ma_item[i] = false } stock fm_find_ent_by_owner(index, const classname[], owner, jghgtype = 0) { new strtype[11] = "classname", ent = index; switch (jghgtype) { case 1: strtype = "target"; case 2: strtype = "targetname"; } while ((ent = engfunc(EngFunc_FindEntityByString, ent, strtype, classname)) && pev(ent, pev_owner) != owner) {} return ent; }