Запускаю сервер урон идет как задано в плагине, перезагружаю или перезапускаю сервер опять урон становиться как у стандартного оружия.
Вот сам плагин:
- Код: Выделить всё
#include <amxmodx>
#include <amxmisc>
#include <fakemeta>
#include <fun>
#include <cstrike>
#include <hamsandwich>
#include <war3ft_natives>
new const g_item_name[] = {"Золотой AK-47 ZOOM"}
#define is_valid_player(%1) (1 <= %1 <= 32)
new AK_V_MODEL[] = "models/wl/v_gold_ak47.mdl"
new AK_P_MODEL[] = "models/wl/p_gold_ak47.mdl"
new AK_W_MODEL[] = "models/wl/w_gold_ak47.mdl"
#define XO_WEAPON 4
#define XO_PLAYER 5
#define m_rgpPlayerItems_CWeaponBox 34
#define m_pNext 42
#define m_iId 43
#define m_rgpPlayerItems_CBasePlayer 367
new cvar_dmgmultiplier
new bool:g_HasAk[33], bool:g_bHasGA[33]
new g_hasZoom[33]
new cvar_cost
new g_itemid_ak47;
//Переменные
new iCvarItemCost,iCvarOnOffItem;
#define WK 1111
public plugin_precache()
{
precache_model(AK_V_MODEL);
precache_model(AK_P_MODEL);
precache_model(AK_W_MODEL);
precache_sound("weapons/zoom.wav");
}
public plugin_init()
{
cvar_dmgmultiplier = register_cvar("goldenak_dmg_multiplier", "5")
iCvarItemCost = register_cvar("wc3_ak47_cost", "4000");
iCvarOnOffItem = register_cvar("wc3_ak47_on_off", "1");
g_itemid_ak47 = wc3_register_extra_item(g_item_name,
get_pcvar_num(iCvarItemCost),iCvarOnOffItem,1);
register_plugin("Golden AK-47", "1.5", "AlejandroSk_Mod")
register_event("DeathMsg", "Death", "a")
register_event("WeapPickup","checkModel","b","1=19")
register_event("CurWeapon","checkWeapon","be","1=1")
RegisterHam(Ham_TakeDamage, "player", "fw_TakeDamage")
register_forward(FM_SetModel, "fw_SetModel")
RegisterHam ( Ham_Item_AttachToPlayer, "weapon_ak47", "fw_Item_AttachToPlayer" )
register_event ( "HLTV", "ev_RoundStart", "a", "1=0", "2=0" )
register_clcmd("say /goldenak", "CmdBuyAk")
register_forward(FM_CmdStart, "fw_CmdStart")
}
[color=#FF0000]/* ========= START OF REGISTER HAM TO SUPPORT BOTS FUNC ========= */
new g_register
public client_putinserver(id)
{
if(is_user_bot(id) && !g_register)
{
g_register = 1
set_task(0.1, "ham_register", id)
}
}
public ham_register(id)
{
RegisterHamFromEntity(Ham_TakeDamage, id, "fw_TakeDamage")
RegisterHamFromEntity(Ham_TraceAttack, id, "fw_TraceAttack", 1)
}
/* ======== END OF REGISTER HAM TO SUPPORT BOTS FUNC ============= */[/color]
public ev_RoundStart ()
{
new iPlayers[32], iNum
get_players ( iPlayers, iNum )
for ( --iNum; iNum >= 0; --iNum )
g_bHasGA[iPlayers[iNum]] = false
}
public client_connect(id)
{
g_HasAk[id] = false
g_bHasGA[id] = false
}
public client_disconnect(id)
{
g_HasAk[id] = false
g_bHasGA[id] = false
}
public Death()
{
g_HasAk[read_data(2)] = false
g_bHasGA[read_data(2)] = false
}
public fw_SetModel ( ent, model[] )
{
if ( pev_valid ( ent ) != 2 )
return FMRES_IGNORED
if ( strlen ( model ) < 8 )
return FMRES_IGNORED
if ( model[7] != 'w' || model[8] != '_' )
return FMRES_IGNORED
static sClassName[32]
pev ( ent, pev_classname, sClassName, charsmax ( sClassName ) )
if ( !equal ( sClassName, "weaponbox" ) )
return FMRES_IGNORED
new id = pev ( ent, pev_owner )
if ( pev_valid ( id ) != 2 )
return FMRES_IGNORED
#define MAX_ITEM_TYPES 6
for (new i, iItem; i < MAX_ITEM_TYPES; i++)
{
iItem = get_pdata_cbase ( ent, m_rgpPlayerItems_CWeaponBox + i, XO_WEAPON )
if ( pev_valid ( iItem ) == 2 && pev(iItem, pev_impulse) == WK )
{
g_HasAk[id] = false
engfunc ( EngFunc_SetModel, ent, AK_W_MODEL )
return FMRES_SUPERCEDE
}
}
return FMRES_IGNORED
}
public fw_Item_AttachToPlayer ( ent, id )
{
if ( pev_valid ( ent ) !=2 || !is_user_alive ( id ) )
return HAM_IGNORED
if ( pev ( ent, pev_impulse ) == WK )
g_HasAk[id] = true
return HAM_IGNORED
}
public checkModel(id)
{
if ( !g_HasAk[id] )
return PLUGIN_HANDLED
new szWeapID = read_data(2)
if ( szWeapID == CSW_AK47 && g_HasAk[id] == true )
{
set_pev(id, pev_viewmodel2, AK_V_MODEL)
set_pev(id, pev_weaponmodel2, AK_P_MODEL)
}
return PLUGIN_HANDLED
}
public CmdBuyAk(id)
{
if ( !is_user_alive(id))
{
//client_print(id,print_chat, "Что бы взять Golden AK-47 вы должны быть живы!")
return PLUGIN_HANDLED
}
new money = cs_get_user_money(id)
if (money >= get_pcvar_num(cvar_cost))
{
cs_set_user_money(id, money - get_pcvar_num(cvar_cost))
Player_DropWeapons ( id, 1 )
new iWeapon = give_item(id, "weapon_ak47")
set_pev(iWeapon, pev_impulse, WK)
give_item(id, "weapon_ak47")
cs_set_user_bpammo(id, CSW_AK47, 90)
g_HasAk[id] = true
}
else
{
client_print(id, print_chat, "Недостаточно денег. Цена $%d ", get_pcvar_num(cvar_cost))
}
return PLUGIN_HANDLED
}
public wc3_extra_item_selected(id, itemid)
{
if (itemid == g_itemid_ak47)
{
giveak47(id);
}
}
public giveak47(id)
{
Player_DropWeapons ( id, 1 )
new iWeapon = give_item(id, "weapon_ak47")
set_pev(iWeapon, pev_impulse, WK)
give_item(id, "weapon_ak47")
cs_set_user_bpammo(id, CSW_AK47, 90)
g_HasAk[id] = true
}
public give_ak47(id, level, cid)
{
if(!cmd_access(id, level, cid, 2))
return PLUGIN_HANDLED
new arg[32]; read_argv(1, arg, 31)
new player = cmd_target(id, arg, 7)
if(!player)
{
console_print(id, "Give Golden AK-47 Failed")
return PLUGIN_HANDLED
}
giveak47(player)
return PLUGIN_CONTINUE
}
public checkWeapon(id)
{
new plrClip, plrAmmo
new plrWeapId
plrWeapId = get_user_weapon(id, plrClip , plrAmmo)
if (plrWeapId == CSW_AK47 && g_HasAk[id])
checkModel(id)
else
return PLUGIN_CONTINUE
return PLUGIN_HANDLED
}
public fw_TakeDamage(victim, inflictor, attacker, Float:damage)
{
if (victim != attacker && is_user_connected(attacker))
{
if(get_user_weapon(attacker) == CSW_AK47)
{
if(g_HasAk[attacker])
SetHamParamFloat(4, damage * get_pcvar_float(cvar_dmgmultiplier))
}
}
}
public fw_TraceAttack(iEnt, iAttacker, Float:flDamage, Float:fDir[3], ptr, iDamageType)
{
if(!is_user_alive(iAttacker))
return
new g_currentweapon = get_user_weapon(iAttacker)
if(g_currentweapon != CSW_AK47) return
if(!g_HasAk[iAttacker]) return
static Float:flEnd[3]
get_tr2(ptr, TR_vecEndPos, flEnd)
}
public fw_CmdStart( id, uc_handle, seed )
{
if( !is_user_alive( id ) )
return PLUGIN_HANDLED
if( ( get_uc( uc_handle, UC_Buttons ) & IN_ATTACK2 ) && !( pev( id, pev_oldbuttons ) & IN_ATTACK2 ) )
{
new szClip, szAmmo
new szWeapID = get_user_weapon( id, szClip, szAmmo )
if( szWeapID == CSW_AK47 && g_HasAk[id] == true && !g_hasZoom[id] == true)
{
g_hasZoom[id] = true
cs_set_user_zoom( id, CS_SET_AUGSG552_ZOOM, 1 )
emit_sound( id, CHAN_ITEM, "weapons/zoom.wav", 0.40, 2.40, 0, 100 )
}
else if ( szWeapID == CSW_AK47 && g_HasAk[id] == true && g_hasZoom[id])
{
g_hasZoom[ id ] = false
cs_set_user_zoom( id, CS_RESET_ZOOM, 0 )
}
}
return PLUGIN_HANDLED
}
Player_DropWeapons(const iPlayer, const iSlot)
{
new szWeaponName[32], iItem = get_pdata_cbase(iPlayer, m_rgpPlayerItems_CBasePlayer + iSlot, XO_PLAYER);
while (pev_valid(iItem) == 2)
{
pev(iItem, pev_classname, szWeaponName, charsmax(szWeaponName));
engclient_cmd(iPlayer, "drop", szWeaponName);
iItem = get_pdata_cbase(iItem, m_pNext, XO_WEAPON);
}
}
Красным пометил где задается ботам урон.
Все перепробовал, отключал все плагины, все равно так же.
Помогите разобраться, заранее большое спасибо!
Название темы скорректировано // Subb98