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;
}


Dodatki SourceMod












