Русское сообщество по скриптингу

Furien Mod не выдаётся оружие в начале раунда

Все вопросы по работе и настройке AMXX и его плагинов.

Модератор: liFe iS GoOD

Правила форума
1. Запрещено материться и оскорблять других участников форума.
2. Запрещен флуд, оффтоп, дабл постинг во всех разделах форума, кроме раздела "Болтовня".
3. Запрещено взламывать сайт/форум или наносить любой вред проекту.
4. Запрещено рекламировать другие ресурсы.
5. Запрещено создавать темы без информативного названия. Название темы должно отображать ее смысл.

В данном разделе форума разрешено создавать темы, касающие только вопросов по AMX Mod X и его плагинам.

Furien Mod не выдаётся оружие в начале раунда

Сообщение Anderykys » 18 июн 2017, 17:59

Я скачал плагин лука на сервер установил его..

Код: Выделить всё
// "weapon_name" "mode" "furien ammo" "anti ammo" "furien max ammo" "anti max ammo" "furien name" "anti name" "furien cost" "anti cost"

в Фуриен веапонс поставил такое значение но почему то не появляется что мне нужно сделать что бы он появился

Код: Выделить всё
"weapon_bow" "1" "90" "3"

но ничего не появилось!!! Помогите пожалуйста прошу, умоляю. нужно что бы появлялся в начале раунда лук.

вот исходник furien_weapons.sma

Код: Выделить всё
#include <amxmodx>
#include <cstrike>
#include <fun>
#include <hamsandwich>

#include "furien.inc"
#include "furien_shop.inc"

#define VERSION "0.2.1"

#define MAX_WEAPONS    CSW_P90

enum _:mDatas {
    
mFurienCost,
    
mFurienBpAmmo,
    
mFurienBpAmmoMax,
    
mAntiCost,
    
mAntiBpAmmo,
    
mAntiBpAmmoMax
}

enum _:mAutoDatas {
    
miId,
    
miBpAmmo,
    
miBpAmmoMax
}

new 
g_iWeaponsBuyDatas[MAX_WEAPONS+1][mDatas]

new Array:
g_aFurienAutoWeapons, Array:g_aAntiAutoWeapons

public plugin_init()
{
    
register_plugin("Furien Weapons"VERSION"ConnorMcLeod")

    
g_aFurienAutoWeapons ArrayCreate(mAutoDatas)
    
g_aAntiAutoWeapons ArrayCreate(mAutoDatas)

    new 
szConfigFile[128]
    
get_localinfo("amxx_configsdir"szConfigFilecharsmax(szConfigFile))
    
format(szConfigFilecharsmax(szConfigFile), "%s/furien/items/weapons.ini"szConfigFile);

    new 
fp fopen(szConfigFile"rt")
    if( !
fp )
    {
        return
    }

    new 
szDatas[256], szWeaponName[20], szMode[2], szFurienBpAmmo[4], szAntiBpAmmo[4], szFurienBpAmmoMax[4], szAntiBpAmmoMax[4], 
        
szFurienName[32], szAntiName[32], szFurienCost[6], szAntiCost[6]

    while( !
feof(fp) )
    {
        
fgets(fpszDatascharsmax(szDatas))
        
trim(szDatas)
        if(!
szDatas[0] || szDatas[0] == ';' || szDatas[0] == '#' || (szDatas[0] == '/' && szDatas[1] == '/'))
        {
            continue
        }

//        server_print("Weapons Entry")
//        server_print(szDatas)

        
parse
        
(
            
szDatas
            
szWeaponNamecharsmax(szWeaponName),
            
szModecharsmax(szMode),
            
szFurienBpAmmocharsmax(szFurienBpAmmo),
            
szAntiBpAmmocharsmax(szAntiBpAmmo),
            
szFurienBpAmmoMaxcharsmax(szFurienBpAmmoMax),
            
szAntiBpAmmoMaxcharsmax(szAntiBpAmmoMax),
            
szFurienNamecharsmax(szFurienName),
            
szAntiNamecharsmax(szAntiName),
            
szFurienCostcharsmax(szFurienCost),
            
szAntiCostcharsmax(szAntiCost)
        )
/*
        server_print("%s %s | BpAmmo %s %s | Max %s %s | %s %s %s %s",
            szWeaponName, szMode, szFurienBpAmmo, szAntiBpAmmo, szFurienBpAmmoMax, szAntiBpAmmoMax,
            szFurienName, szAntiName, szFurienCost, szAntiCost)
*/
        
new iId get_weaponidszWeaponName )
        if( 
iId <= )
        {
            continue
        }

        switch( 
szMode[0] )
        {
            case 
'0':
            {
                if( (
g_iWeaponsBuyDatas[iId][mFurienCost] = str_to_num(szFurienCost)) )
                {
                    
g_iWeaponsBuyDatas[iId][mFurienBpAmmo] = str_to_num(szFurienBpAmmo)
                    
g_iWeaponsBuyDatas[iId][mFurienBpAmmoMax] = maxstr_to_num(szFurienBpAmmoMax) , g_iWeaponsBuyDatas[iId][mFurienBpAmmo] )
                }

                if( (
g_iWeaponsBuyDatas[iId][mAntiCost] = str_to_num(szAntiCost)) )
                {    
                    
g_iWeaponsBuyDatas[iId][mAntiBpAmmo] = str_to_num(szAntiBpAmmo)
                    
g_iWeaponsBuyDatas[iId][mAntiBpAmmoMax] = maxstr_to_num(szAntiBpAmmoMax) , g_iWeaponsBuyDatas[iId][mAntiBpAmmo] )
                }

                
furien_register_item
                
(
                    
szFurienName,
                    
g_iWeaponsBuyDatas[iId][mFurienCost],
                    
szAntiName,
                    
g_iWeaponsBuyDatas[iId][mAntiCost],
                    
"furien_buy_weapon",
                    
iId
                
)    
            }
            case 
'1':
            {
                new 
Datas[mAutoDatas]

                
Datas[miId] = iId
                Datas
[miBpAmmo] = str_to_num(szFurienBpAmmo)
                
Datas[miBpAmmoMax] = maxstr_to_num(szFurienBpAmmoMax), Datas[miBpAmmo] )

                
ArrayPushArray(g_aFurienAutoWeaponsDatas)
            }
            case 
'2':
            {
                new 
Datas[mAutoDatas]

                
Datas[miId] = iId
                Datas
[miBpAmmo] = str_to_num(szAntiBpAmmo)
                
Datas[miBpAmmoMax] = maxstr_to_num(szAntiBpAmmoMax), Datas[miBpAmmo] )

                
ArrayPushArray(g_aAntiAutoWeaponsDatas)
            }
            case 
'3':
            {
                new 
Datas[mAutoDatas]

                
Datas[miId] = iId
                Datas
[miBpAmmo] = str_to_num(szAntiBpAmmo)
                
Datas[miBpAmmoMax] = maxstr_to_num(szAntiBpAmmoMax), Datas[miBpAmmo] )

                
ArrayPushArray(g_aFurienAutoWeaponsDatas)
                
ArrayPushArray(g_aAntiAutoWeaponsDatas)
            }
        }
    }
    
fclose(fp)

    if( 
ArraySize(g_aFurienAutoWeapons) || ArraySize(g_aAntiAutoWeapons) )
    {
        
RegisterHam(Ham_Spawn"player""Ham_CBasePlayer_Spawn_Post"1)
    }
}

public 
plugin_end()
{
    
ArrayDestroyg_aFurienAutoWeapons )
    
ArrayDestroyg_aAntiAutoWeapons )
}

public 
Ham_CBasePlayer_Spawn_Postid )
{
    if( 
is_user_alive(id) )
    {
        switch( 
furien_get_user_team(id) )
        {
            case 
Furien :
            {
                
GiveAutoWeapons(idg_aFurienAutoWeapons)
            }
            case 
AntiFurien :
            {
                
GiveAutoWeapons(idg_aAntiAutoWeapons)
            }
        }
    }
}

public 
furien_buy_weaponidiId )
{
    new 
iTeam furien_get_user_team(id)
    if( 
iTeam == -)
    {
        return 
ShopCloseMenu
    
}

    new 
iItemCost g_iWeaponsBuyDatas[iId][ iTeam == Furien mFurienCost mAntiCost ]

    if( 
iItemCost <= )
    {
        return 
ShopTeamNotAvail
    
}

    if( 
user_has_weapon(idiId) )
    {
        return 
ShopAlreadyHaveOne
    
}

    if( 
furien_try_buy(idiItemCost) )
    {
        new 
szWeaponName[20]
        
get_weaponname(iIdszWeaponNamecharsmax(szWeaponName))
        
give_item(idszWeaponName)
        new 
iBpAmmo g_iWeaponsBuyDatas[iId][ iTeam == Furien mFurienBpAmmo mAntiBpAmmo ]
        if( 
iBpAmmo )
        {
            new 
iBpAmmoMax g_iWeaponsBuyDatas[iId][ iTeam == Furien mFurienBpAmmoMax mAntiBpAmmoMax ]
            new 
iCurrentBpAmmo cs_get_user_bpammo(idiId)
            if( 
iCurrentBpAmmo iBpAmmoMax )
            {
                
cs_set_user_bpammo(idiIdmin(iCurrentBpAmmo iBpAmmoiBpAmmoMax))
            }
        }
        return 
ShopBought
    
}
    return 
ShopNotEnoughMoney
}

GiveAutoWeapons(id, Array:aWeapons)
{
    new 
iItemsNum ArraySize(aWeapons)

    new 
Datas[mAutoDatas], iIdszWeaponName[20], iBpAmmoiBpAmmoMaxiCurrentBpAmmo

    
for(new ii<iItemsNumi++)
    {
        
ArrayGetArray(aWeaponsiDatas)
        
iId Datas[miId]
        if( !
user_has_weapon(idiId) )
        {
            
get_weaponname(iIdszWeaponNamecharsmax(szWeaponName))
            
give_item(idszWeaponName)
        }

        
iBpAmmo Datas[miBpAmmo]
        if( 
iBpAmmo )
        {
            
iBpAmmoMax Datas[miBpAmmoMax]
            
iCurrentBpAmmo cs_get_user_bpammo(idiId)
            if( 
iCurrentBpAmmo iBpAmmoMax )
            {
                
cs_set_user_bpammo(idiIdmin(iCurrentBpAmmo iBpAmmoiBpAmmoMax))
            }
        }
    }
}


а вот сма лука 


#include <amxmodx>
#include <engine>
#include <fakemeta>
#include <fakemeta_util>
#include <hamsandwich>
#include <cstrike>

#define PLUGIN "[CSO] Weapon: Compound Bow"
#define VERSION "1.0"
#define AUTHOR "Dias Leon"

// =========== Resources Config
#define V_MODEL "models/v_bow.mdl"
#define P_MODEL "models/p_bow.mdl"
#define P_MODEL_EMPTY "models/p_bow_empty.mdl"
#define W_MODEL "models/w_bow.mdl"

#define ARROW_MODEl "models/arrow.mdl"

new const WeaponSounds[7][] =
{
    
"weapons/bow_shoot1.wav",
    
"weapons/bow_charge_shoot1_empty.wav",
    
"weapons/bow_charge_shoot2.wav",
    
"weapons/bow_draw.wav",
    
"weapons/bow_charge_start1.wav",
    
"weapons/bow_charge_start2.wav",
    
"weapons/bow_charge_finish1.wav"
}

new const 
WeaponResources[3][] =
{
    
"sprites/weapon_bow.txt",
    
"sprites/640hud12_2.spr",
    
"sprites/640hud98_2.spr"
}

enum
{
    
BOW_ANIM_IDLE 0,
    
BOW_ANIM_IDLE_EMPTY,
    
BOW_ANIM_SHOOT1// 0.45
    
BOW_ANIM_SHOOT1_EMPTY,
    
BOW_ANIM_DRAW,
    
BOW_ANIM_DRAW_EMPTY,
    
BOW_ANIM_CHARGE_START// 0.5
    
BOW_ANIM_CHARGE_FINISH// 0.35
    
BOW_ANIM_CHARGE_IDLE1// 0.35
    
BOW_ANIM_CHARGE_IDLE2// 0.35
    
BOW_ANIM_CHARGE_SHOOT1// 1.3
    
BOW_ANIM_CHARGE_SHOOT1_EMPTY// 0.6
    
BOW_ANIM_CHARGE_SHOOT2// 1.3
    
BOW_ANIM_CHARGE_SHOOT2_EMPTY // 0.6
}

// =========== Main Config
#define CSW_BOW CSW_M4A1
#define weapon_bow "weapon_m4a1"
#define BOW_AMMOID 4

#define ARROW_DEFAULT 60
#define ARROW_CLASSNAME "arrow"
#define ARROW_SPEED 2000.0

#define TIME_DRAW 0.75
#define TIME_RELOADA 0.45
#define TIME_RELOADB 1.25
#define TIME_CHARGE 0.5

#define DAMAGE_A 70
#define DAMAGE_B 140

#define WEAPON_SECRETCODE 3102013 // Create Date
#define WEAPON_ANIMEXT "carbine"
#define WEAPON_OLDWMODEL "models/w_m4a1.mdl"

// =========== WeaponList Config
#define WL_NAME "weapon_bow"
#define WL_PRIAMMOID 4
#define WL_PRIAMMOMAX 60 // 30
#define WL_SECAMMOID -1
#define WL_SECAMMOIDMAX -1
#define WL_SLOTID 0
#define WL_NUMINSLOT 6
#define WL_FLAG 0

// MACROS
#define Get_BitVar(%1,%2) (%1 & (1 << (%2 & 31)))
#define Set_BitVar(%1,%2) %1 |= (1 << (%2 & 31))
#define UnSet_BitVar(%1,%2) %1 &= ~(1 << (%2 & 31))

enum
{
    
TEAM_T 1,
    
TEAM_CT
}

enum
{
    
WEAPON_NONE 0,
    
WEAPON_STARTCHARGING,
    
WEAPON_WAITCHARGING,
    
WEAPON_CHARGING,
    
WEAPON_FINISHCHARGING
}

// Vars
new g_Had_CompoundBowg_InTempingAttackg_BowArrow[33], g_WeaponState[33], Float:g_TimeCharge[33]
new 
g_MsgCurWeapong_MsgAmmoXg_MsgWeaponList
new g_SprId_LaserBeam

public plugin_init()
{
    
register_plugin(PLUGINVERSIONAUTHOR)
    
    
register_event("CurWeapon""Event_CurWeapon""be""1=1")
    
    
register_think(ARROW_CLASSNAME"fw_Think_Arrow")
    
register_touch(ARROW_CLASSNAME"*""fw_Touch_Arrow")
    
    
register_forward(FM_UpdateClientData"fw_UpdateClientData_Post"1)
    
register_forward(FM_CmdStart"fw_CmdStart")
    
register_forward(FM_SetModel"fw_SetModel")    
    
register_forward(FM_EmitSound"fw_EmitSound")
    
register_forward(FM_TraceLine"fw_TraceLine")
    
register_forward(FM_TraceHull"fw_TraceHull")        
    
    
RegisterHam(Ham_Item_AddToPlayerweapon_bow"fw_Item_AddToPlayer_Post"1)
    
RegisterHam(Ham_Item_Deployweapon_bow"fw_Item_Deploy_Post"1)
    
RegisterHam(Ham_Weapon_WeaponIdleweapon_bow"fw_Weapon_WeaponIdle_Post"1)
    
    
g_MsgCurWeapon get_user_msgid("CurWeapon")
    
g_MsgAmmoX get_user_msgid("AmmoX")
    
g_MsgWeaponList get_user_msgid("WeaponList")
    
    
register_clcmd("admin_get_bow""Get_CompoundBow")
    
register_clcmd(WL_NAME"WeaponList_Hook")
}

public 
plugin_precache()
{
    
engfunc(EngFunc_PrecacheModelV_MODEL)
    
engfunc(EngFunc_PrecacheModelP_MODEL)
    
engfunc(EngFunc_PrecacheModelP_MODEL_EMPTY)
    
engfunc(EngFunc_PrecacheModelW_MODEL)
    
engfunc(EngFunc_PrecacheModelARROW_MODEl)
    
    new 
i
    
for(0sizeof(WeaponSounds); i++)
        
engfunc(EngFunc_PrecacheSoundWeaponSounds[i])
    for(
0sizeof(WeaponResources); i++)
    {
        if(
== 0engfunc(EngFunc_PrecacheGenericWeaponResources[i])
        else 
engfunc(EngFunc_PrecacheModelWeaponResources[i])
    }
    
    
g_SprId_LaserBeam engfunc(EngFunc_PrecacheModel"sprites/laserbeam.spr")
}

public 
Get_CompoundBow(id)
{
    if(!
is_user_alive(id))
        return
        
    
Set_BitVar(g_Had_CompoundBowid)
    
g_BowArrow[id] = ARROW_DEFAULT
    g_WeaponState
[id] = WEAPON_NONE
    
    fm_give_item
(idweapon_bow)
    
UpdateAmmo(idCSW_BOWBOW_AMMOID, -1g_BowArrow[id])
}

public 
Remove_CompoundBow(id)
{
    
UnSet_BitVar(g_Had_CompoundBowid)
    
g_BowArrow[id] = 0
}

public 
WeaponList_Hook(id)
{
    
engclient_cmd(idweapon_bow)
    return 
PLUGIN_HANDLED
}

public 
UpdateAmmo(idCSWIDAmmoIDAmmoBpAmmo)
{
    
message_begin(MSG_ONE_UNRELIABLEg_MsgCurWeapon_id)
    
write_byte(1)
    
write_byte(CSWID)
    
write_byte(Ammo)
    
message_end()
    
    
message_begin(MSG_ONE_UNRELIABLEg_MsgAmmoX_id)
    
write_byte(AmmoID)
    
write_byte(BpAmmo)
    
message_end()
    
    
cs_set_user_bpammo(idCSWIDBpAmmo)
}

public 
Event_CurWeapon(id)
{
    static 
CSWIDCSWID read_data(2)
    if(
CSWID != CSW_BOW) return
    if(!
Get_BitVar(g_Had_CompoundBowid)) return
    
    
UpdateAmmo(idCSW_BOWBOW_AMMOID, -1g_BowArrow[id])
}

public 
fw_Think_Arrow(Ent)
{
    if(!
pev_valid(Ent))
        return
    if(
pev(Entpev_iuser4))
    {
        
engfunc(EngFunc_RemoveEntityEnt)
        return
    }
    static 
IdId pev(Entpev_iuser1)
    if(!
is_user_connected(Id))    
        return

    if(!
pev(Entpev_iuser3))
    {
        if(
entity_range(EntId) < 250.0)
        {
            
set_pev(Entpev_nextthinkget_gametime() + 0.1)
            return
        }

        
message_begin(MSG_BROADCASTSVC_TEMPENTITY)
        
write_byte(TE_BEAMFOLLOW)
        
write_short(Ent)
        
write_short(g_SprId_LaserBeam)
        
write_byte(10)
        
write_byte(2)
        
write_byte(255)
        
write_byte(127)
        
write_byte(127)
        
write_byte(127)
        
message_end()
        
        
message_begin(MSG_BROADCASTSVC_TEMPENTITY)
        
write_byte(TE_BEAMFOLLOW)
        
write_short(Ent)
        
write_short(g_SprId_LaserBeam)
        
write_byte(10)
        
write_byte(2)
        
write_byte(255)
        
write_byte(255)
        
write_byte(255)
        
write_byte(127)
        
message_end()
        
        
set_pev(Entpev_iuser31)
    }
        
    
set_pev(Entpev_nextthinkget_gametime() + 0.1)
}

public 
fw_Touch_Arrow(EntId)
{
    if(!
pev_valid(Ent))
        return
    if(
pev(Entpev_movetype) == MOVETYPE_NONE)
        return
        
    
// Remove Ent
    
set_pev(Entpev_movetypeMOVETYPE_NONE)
    
set_pev(Entpev_solidSOLID_NOT)
        
    if(!
is_user_alive(Id)) // Wall
    
{
        
set_pev(Entpev_iuser41)
        
set_pev(Entpev_nextthinkget_gametime() + 3.0)
        
        static 
Float:Origin[3]; pev(Entpev_originOrigin)
        
MakeBulletDecal(Origin)
    } else { 
// Player
        
static AttackerAttacker pev(Entpev_iuser1)
        if(!
is_user_connected(Attacker) || Attacker == Id)
        {
            
engfunc(EngFunc_RemoveEntityEnt)
            return
        }
            
        
do_attack(AttackerId0float(DAMAGE_A) * 1.5)
        
engfunc(EngFunc_RemoveEntityEnt)
    }
}

public 
fw_UpdateClientData_Post(idsendweaponscd_handle)
{
    if(
get_user_weapon(id) != CSW_BOW || !Get_BitVar(g_Had_CompoundBowid))
        return 
FMRES_IGNORED
    
    set_cd
(cd_handleCD_flNextAttackget_gametime() + 0.001
    
    return 
FMRES_HANDLED
}

public 
fw_CmdStart(iduc_handleseed)
{
    if(
get_user_weapon(id) != CSW_BOW || !Get_BitVar(g_Had_CompoundBowid))
        return
    
    static 
CurButtonCurButton get_uc(uc_handleUC_Buttons)
    if(
CurButton IN_ATTACK)
    {
        
CurButton &= ~IN_ATTACK
        set_uc
(uc_handleUC_ButtonsCurButton)
        
        
Bow_NormalAttackHandle(id0)
    }
    
    static 
EntEnt fm_get_user_weapon_entity(idCSW_BOW)
    if(!
pev_valid(Ent)) return
    
    if(
CurButton IN_ATTACK2
    {
        
CurButton &= ~IN_ATTACK2
        set_uc
(uc_handleUC_ButtonsCurButton)
        
        if(
get_pdata_float(Ent464) > 0.0 || get_pdata_float(Ent474) > 0.0
            return
        if(!
g_BowArrow[id])
            return
            
        switch(
g_WeaponState[id])
        {
            case 
WEAPON_NONE
            {
                
Set_Weapon_Anim(idBOW_ANIM_CHARGE_START)
                
Set_Weapon_TimeIdle(idCSW_BOW0.5)
                
Set_Player_NextAttack(id0.5)
                
                
g_WeaponState[id] = WEAPON_STARTCHARGING
            
}
            case 
WEAPON_STARTCHARGING:
            {
                
Set_Weapon_Anim(idBOW_ANIM_CHARGE_IDLE1)
                
Set_Weapon_TimeIdle(idCSW_BOW0.35)
                
Set_Player_NextAttack(id0.35)
                
                
g_TimeCharge[id] = get_gametime()
                
g_WeaponState[id] = WEAPON_WAITCHARGING
            
}
            case 
WEAPON_WAITCHARGING:
            {
                
Set_Weapon_Anim(idBOW_ANIM_CHARGE_IDLE1)
                
Set_Weapon_TimeIdle(idCSW_BOW0.35)
                
Set_Player_NextAttack(id0.35)
                
                
g_WeaponState[id] = WEAPON_WAITCHARGING
                
                
if(get_gametime() >= (g_TimeCharge[id] + TIME_CHARGE))
                {
                    
Set_Weapon_Anim(idBOW_ANIM_CHARGE_FINISH)
                    
Set_Weapon_TimeIdle(idCSW_BOW0.35)
                    
Set_Player_NextAttack(id0.35)
                    
                    
g_WeaponState[id] = WEAPON_FINISHCHARGING
                
}
            }
            case 
WEAPON_FINISHCHARGING:
            {
                
Set_Weapon_Anim(idBOW_ANIM_CHARGE_IDLE2)
                
Set_Weapon_TimeIdle(idCSW_BOW0.35)
                
Set_Player_NextAttack(id0.35)
                
                
g_WeaponState[id] = WEAPON_FINISHCHARGING
            
}
        }
    } else {
        static 
OldButtonOldButton pev(idpev_oldbuttons)
        if(
OldButton IN_ATTACK2)
        {
            if(
g_WeaponState[id] == WEAPON_WAITCHARGING)
            {
                
set_pdata_float(id830.05)
                
Bow_NormalAttackHandle(id1)
            } else if(
g_WeaponState[id] == WEAPON_FINISHCHARGING) {
                
Bow_ChargeAttackHandle(id)
            }
        } else {
            if(
get_pdata_float(Ent464) > 0.0 || get_pdata_float(Ent474) > 0.0
                return
            
            if(
g_WeaponState[id] == WEAPON_STARTCHARGING)
            {
                
set_pdata_float(id830.05)
                
Bow_NormalAttackHandle(id1)
            }
            
            
g_WeaponState[id] = WEAPON_NONE
        
}
    }
    
    return 
}

public 
fw_SetModel(entitymodel[])
{
    if(!
pev_valid(entity))
        return 
FMRES_IGNORED
    
    
static szClassName[33]
    
pev(entitypev_classnameszClassNamecharsmax(szClassName))
    
    if(!
equal(szClassName"weaponbox"))
        return 
FMRES_IGNORED
    
    
static idid pev(entitypev_owner)
    
    if(
equal(modelWEAPON_OLDWMODEL))
    {
        static 
weapon
        weapon 
fm_find_ent_by_owner(-1weapon_bowentity)
        
        if(!
pev_valid(weapon))
            return 
FMRES_IGNORED
        
        
if(Get_BitVar(g_Had_CompoundBowid))
        {
            
set_pev(weaponpev_impulseWEAPON_SECRETCODE)
            
set_pev(weaponpev_iuser1g_BowArrow[id])
            
            
engfunc(EngFunc_SetModelentityW_MODEL)
            
Remove_CompoundBow(id)
            
            return 
FMRES_SUPERCEDE
        
}
    }

    return 
FMRES_IGNORED
}


public 
fw_EmitSound(idchannel, const sample[], Float:volumeFloat:attnflagspitch)
{
    if(!
is_user_connected(id))
        return 
FMRES_IGNORED
    
if(!Get_BitVar(g_InTempingAttackid))
        return 
FMRES_IGNORED
        
    
if(sample[8] == 'k' && sample[9] == 'n' && sample[10] == 'i')
    {
        if(
sample[14] == 's' && sample[15] == 'l' && sample[16] == 'a')
            return 
FMRES_SUPERCEDE
        
if (sample[14] == 'h' && sample[15] == 'i' && sample[16] == 't')
        {
            if (
sample[17] == 'w')  return FMRES_SUPERCEDE
            
else  return FMRES_SUPERCEDE
        
}
        if (
sample[14] == 's' && sample[15] == 't' && sample[16] == 'a')
            return 
FMRES_SUPERCEDE;
    }
    
    return 
FMRES_IGNORED
}

public 
fw_TraceLine(Float:vector_start[3], Float:vector_end[3], ignored_monsteridhandle)
{
    if(!
is_user_alive(id))
        return 
FMRES_IGNORED    
    
if(!Get_BitVar(g_InTempingAttackid))
        return 
FMRES_IGNORED
    
    
static Float:vecStart[3], Float:vecEnd[3], Float:v_angle[3], Float:v_forward[3], Float:view_ofs[3], Float:fOrigin[3]
    
    
pev(idpev_originfOrigin)
    
pev(idpev_view_ofsview_ofs)
    
xs_vec_add(fOriginview_ofsvecStart)
    
pev(idpev_v_anglev_angle)
    
    
engfunc(EngFunc_MakeVectorsv_angle)
    
get_global_vector(GL_v_forwardv_forward)

    
xs_vec_mul_scalar(v_forward0.0v_forward)
    
xs_vec_add(vecStartv_forwardvecEnd)
    
    
engfunc(EngFunc_TraceLinevecStartvecEndignored_monsteridhandle)
    
    return 
FMRES_SUPERCEDE
}

public 
fw_TraceHull(Float:vector_start[3], Float:vector_end[3], ignored_monsterhullidhandle)
{
    if(!
is_user_alive(id))
        return 
FMRES_IGNORED    
    
if(!Get_BitVar(g_InTempingAttackid))
        return 
FMRES_IGNORED
    
    
static Float:vecStart[3], Float:vecEnd[3], Float:v_angle[3], Float:v_forward[3], Float:view_ofs[3], Float:fOrigin[3]
    
    
pev(idpev_originfOrigin)
    
pev(idpev_view_ofsview_ofs)
    
xs_vec_add(fOriginview_ofsvecStart)
    
pev(idpev_v_anglev_angle)
    
    
engfunc(EngFunc_MakeVectorsv_angle)
    
get_global_vector(GL_v_forwardv_forward)
    
    
xs_vec_mul_scalar(v_forward0.0v_forward)
    
xs_vec_add(vecStartv_forwardvecEnd)
    
    
engfunc(EngFunc_TraceHullvecStartvecEndignored_monsterhullidhandle)
    
    return 
FMRES_SUPERCEDE
}

public 
Bow_NormalAttackHandle(idUnCharge)
{
    if(
get_pdata_float(id835) > 0.0)
        return
    if(!
g_BowArrow[id])
    {
        
set_pdata_float(id831.05)
        
Set_Weapon_Anim(idBOW_ANIM_IDLE_EMPTY)
        
        return
    }
        
    
g_BowArrow[id]--
    
UpdateAmmo(idCSW_BOWBOW_AMMOID, -1g_BowArrow[id])

    
Create_FakeAttack(id)
    
    
Set_Weapon_Anim(idUnCharge BOW_ANIM_CHARGE_SHOOT1 BOW_ANIM_SHOOT1)
    
emit_sound(idCHAN_WEAPONWeaponSounds[UnCharge 0], VOL_NORMATTN_NORM0PITCH_NORM)
    
    
Create_ArrowA(id)
    
Make_Push(id)
    
    
Set_Player_NextAttack(idUnCharge TIME_RELOADB TIME_RELOADA)
    
Set_Weapon_TimeIdle(idCSW_BOWUnCharge TIME_RELOADB TIME_RELOADA)
    
    
g_WeaponState[id] = WEAPON_NONE
}

public 
Bow_ChargeAttackHandle(id)
{
    if(!
g_BowArrow[id])
    {
        
set_pdata_float(id831.05)
        
Set_Weapon_Anim(idBOW_ANIM_IDLE_EMPTY)
        
        return
    }
        
    
g_BowArrow[id]--
    
UpdateAmmo(idCSW_BOWBOW_AMMOID, -1g_BowArrow[id])

    
Create_FakeAttack(id)
    
    
Set_Weapon_Anim(idBOW_ANIM_CHARGE_SHOOT2)
    
emit_sound(idCHAN_WEAPONWeaponSounds[2], VOL_NORMATTN_NORM0PITCH_NORM)
    
    
ChargedShoot(id)
    
Make_Push(id)
    
    
Set_Player_NextAttack(idTIME_RELOADB)
    
Set_Weapon_TimeIdle(idCSW_BOWTIME_RELOADB)    
    
    
g_WeaponState[id] = WEAPON_NONE
}

public 
ChargedShoot(id)
{
    static 
Float:StartOrigin[3], Float:EndOrigin[3], Float:EndOrigin2[3]
    
    
Get_Position(id40.00.00.0StartOrigin)
    
Get_Position(id4096.00.00.0EndOrigin)
    
    static 
TrResultTrResult create_tr2()
    
engfunc(EngFunc_TraceLineStartOriginEndOriginIGNORE_MONSTERSidTrResult
    
get_tr2(TrResultTR_vecEndPosEndOrigin2)
    
free_tr2(TrResult)
    
    
message_begin(MSG_BROADCAST ,SVC_TEMPENTITY)
    
write_byte(TE_BEAMPOINTS)
    
engfunc(EngFunc_WriteCoordStartOrigin[0])
    
engfunc(EngFunc_WriteCoordStartOrigin[1])
    
engfunc(EngFunc_WriteCoordStartOrigin[2])
    
engfunc(EngFunc_WriteCoordEndOrigin2[0])
    
engfunc(EngFunc_WriteCoordEndOrigin2[1])
    
engfunc(EngFunc_WriteCoordEndOrigin2[2])
    
write_short(g_SprId_LaserBeam)    // sprite index
    
write_byte(0)    // starting frame
    
write_byte(0)    // frame rate in 0.1's
    
write_byte(20)    // life in 0.1's
    
write_byte(10)    // line width in 0.1's
    
write_byte(0)    // noise amplitude in 0.01's
    
write_byte(255)    // Red
    
write_byte(127)    // Green
    
write_byte(127)    // Blue
    
write_byte(127)    // brightness
    
write_byte(0)    // scroll speed in 0.1's
    
message_end()
    
    
message_begin(MSG_BROADCAST ,SVC_TEMPENTITY)
    
write_byte(TE_BEAMPOINTS)
    
engfunc(EngFunc_WriteCoordStartOrigin[0])
    
engfunc(EngFunc_WriteCoordStartOrigin[1])
    
engfunc(EngFunc_WriteCoordStartOrigin[2])
    
engfunc(EngFunc_WriteCoordEndOrigin2[0])
    
engfunc(EngFunc_WriteCoordEndOrigin2[1])
    
engfunc(EngFunc_WriteCoordEndOrigin2[2])
    
write_short(g_SprId_LaserBeam)    // sprite index
    
write_byte(0)    // starting frame
    
write_byte(0)    // frame rate in 0.1's
    
write_byte(20)    // life in 0.1's
    
write_byte(10)    // line width in 0.1's
    
write_byte(0)    // noise amplitude in 0.01's
    
write_byte(255)    // Red
    
write_byte(255)    // Green
    
write_byte(255)    // Blue
    
write_byte(127)    // brightness
    
write_byte(0)    // scroll speed in 0.1's
    
message_end()
    
    
ChargedDamage(idStartOriginEndOrigin2)
}

public 
ChargedDamage(idFloat:Start[3], Float:End[3])
{
    static 
TrResultTrResult create_tr2()
    
    
// Trace First Time
    
engfunc(EngFunc_TraceLineStartEndDONT_IGNORE_MONSTERSidTrResult
    static 
pHit1pHit1 get_tr2(TrResultTR_pHit)
    static 
Float:End1[3]; get_tr2(TrResultTR_vecEndPosEnd1)
    
    if(
is_user_alive(pHit1)) 
    {
        
do_attack(idpHit10float(DAMAGE_B) * 1.5)
        
engfunc(EngFunc_TraceLineEnd1EndDONT_IGNORE_MONSTERSpHit1TrResult
    } else 
engfunc(EngFunc_TraceLineEnd1EndDONT_IGNORE_MONSTERS, -1TrResult
    
    
// Trace Second Time
    
static pHit2pHit2 get_tr2(TrResultTR_pHit)
    static 
Float:End2[3]; get_tr2(TrResultTR_vecEndPosEnd2)
    
    if(
is_user_alive(pHit2)) 
    {
        
do_attack(idpHit20float(DAMAGE_B) * 1.5)
        
engfunc(EngFunc_TraceLineEnd2EndDONT_IGNORE_MONSTERSpHit2TrResult
    } else 
engfunc(EngFunc_TraceLineEnd2EndDONT_IGNORE_MONSTERS, -1TrResult
    
    
// Trace Third Time
    
static pHit3pHit3 get_tr2(TrResultTR_pHit)
    static 
Float:End3[3]; get_tr2(TrResultTR_vecEndPosEnd3)
    
    if(
is_user_alive(pHit3)) 
    {
        
do_attack(idpHit30float(DAMAGE_B) * 1.5)
        
engfunc(EngFunc_TraceLineEnd3EndDONT_IGNORE_MONSTERSpHit3TrResult
    } else 
engfunc(EngFunc_TraceLineEnd3EndDONT_IGNORE_MONSTERS, -1TrResult
    
    
// Trace Fourth Time
    
static pHit4pHit4 get_tr2(TrResultTR_pHit)
    if(
is_user_alive(pHit4)) do_attack(idpHit40float(DAMAGE_B) * 1.5)

    
free_tr2(TrResult)
}

public 
Create_ArrowA(id)
{
    static 
Float:StartOrigin[3], Float:EndOrigin[3], Float:Angles[3]
    
    
Get_Position(id40.00.00.0StartOrigin)
    
Get_Position(id4096.00.00.0EndOrigin)
    
pev(idpev_v_angleAngles)
    
    
Angles[0] *= -1
    
    
static ArrowArrow engfunc(EngFunc_CreateNamedEntityengfunc(EngFunc_AllocString"env_sprite"))
    if(!
pev_valid(Arrow)) return
    
    
set_pev(Arrowpev_movetypeMOVETYPE_FLY)
    
set_pev(Arrowpev_iuser1id// Better than pev_owner
    
set_pev(Arrowpev_iuser2Get_SpecialTeam(idcs_get_user_team(id)))
    
set_pev(Arrowpev_iuser30)
    
set_pev(Arrowpev_iuser40)
    
    
entity_set_string(ArrowEV_SZ_classnameARROW_CLASSNAME)
    
engfunc(EngFunc_SetModelArrowARROW_MODEl)
    
set_pev(Arrowpev_minsFloat:{-1.0, -1.0, -1.0})
    
set_pev(Arrowpev_maxsFloat:{1.01.01.0})
    
set_pev(Arrowpev_originStartOrigin)
    
set_pev(Arrowpev_anglesAngles)
    
set_pev(Arrowpev_gravity0.01)
    
set_pev(Arrowpev_solidSOLID_BBOX)
    
    
set_pev(Arrowpev_nextthinkget_gametime() + 0.1)
    
    static 
Float:Velocity[3]
    
get_speed_vector(StartOriginEndOriginARROW_SPEEDVelocity)
    
set_pev(Arrowpev_velocityVelocity)
}

public 
Create_FakeAttack(id)
{
    static 
EntEnt fm_get_user_weapon_entity(idCSW_KNIFE)
    if(!
pev_valid(Ent)) return
    
    
Set_BitVar(g_InTempingAttackid)
    
ExecuteHamB(Ham_Weapon_PrimaryAttackEnt)
    
    
// Set Real Attack Anim
    
static iAnimDesired,  szAnimation[64]

    
formatex(szAnimationcharsmax(szAnimation), (pev(idpev_flags) & FL_DUCKING) ? "crouch_shoot_%s" "ref_shoot_%s"WEAPON_ANIMEXT)
    if((
iAnimDesired lookup_sequence(idszAnimation)) == -1)
        
iAnimDesired 0
    
    set_pev
(idpev_sequenceiAnimDesired)
    
UnSet_BitVar(g_InTempingAttackid)
}

public 
Make_Push(id)
{
    static 
Float:VirtualVec[3]
    
VirtualVec[0] = random_float(-1.0, -2.0)
    
VirtualVec[1] = random_float(1.0, -1.0)
    
VirtualVec[2] = 0.0    
    
    set_pev
(idpev_punchangleVirtualVec)        
}

public 
fw_Item_AddToPlayer_Post(EntId)
{
    if(
pev(Entpev_impulse) == WEAPON_SECRETCODE)
    {
        
Set_BitVar(g_Had_CompoundBowId)
        
        
g_BowArrow[Id] = pev(Entpev_iuser1)
        
UpdateAmmo(IdCSW_BOWBOW_AMMOID, -1g_BowArrow[Id])
        
        
set_pev(Entpev_impulse0)
    }            
    
    
g_WeaponState[Id] = WEAPON_NONE
    
    message_begin
(MSG_ONE_UNRELIABLEg_MsgWeaponList_Id)
    
write_string((Get_BitVar(g_Had_CompoundBowId) ? WL_NAME weapon_bow))
    
write_byte(WL_PRIAMMOID)
    
write_byte(WL_PRIAMMOMAX)
    
write_byte(WL_SECAMMOID)
    
write_byte(WL_SECAMMOIDMAX)
    
write_byte(WL_SLOTID)
    
write_byte(WL_NUMINSLOT)
    
write_byte(CSW_BOW)
    
write_byte(WL_FLAG)
    
message_end()
}

public 
fw_Item_Deploy_Post(Ent)
{
    if(!
pev_valid(Ent))
        return
        
    static 
IdId get_pdata_cbase(Ent414)
    if(!
Get_BitVar(g_Had_CompoundBowId))
        return
        
    
set_pev(Idpev_viewmodel2V_MODEL)
    
set_pev(Idpev_weaponmodel2g_BowArrow[Id] ? P_MODEL P_MODEL_EMPTY)
    
    
set_pdata_string(Id, (492) * 4WEAPON_ANIMEXT, -20)
    
    
Set_Weapon_TimeIdle(IdCSW_BOWTIME_DRAW)
    
Set_Player_NextAttack(IdTIME_DRAW)
    
    
Set_Weapon_Anim(Idg_BowArrow[Id] ? BOW_ANIM_DRAW BOW_ANIM_DRAW_EMPTY)
}

public 
fw_Weapon_WeaponIdle_Post(Ent)
{
    if(!
pev_valid(Ent))
        return
        
    static 
IdId get_pdata_cbase(Ent414)
    if(!
Get_BitVar(g_Had_CompoundBowId))
        return
        
    if(
get_pdata_float(Ent484) <= 0.1
    {
        
Set_Weapon_Anim(Idg_BowArrow[Id] ? BOW_ANIM_IDLE BOW_ANIM_IDLE_EMPTY)
        
set_pdata_float(Ent4820.04)
    }
    
    return
}

public 
Get_SpecialTeam(EntCsTeams:Team)
{
    if(
Team == CS_TEAM_T) return TEAM_T
    
else if(Team == CS_TEAM_CT) return TEAM_CT
    
    
return 0
}

public 
CsTeams:Get_ArrowTeam(Ent)
{
    if(
pev(Entpev_iuser2) == TEAM_T) return CS_TEAM_T
    
else if(pev(Entpev_iuser2) == TEAM_CT) return CS_TEAM_CT
    
    
return CS_TEAM_UNASSIGNED
}

stock MakeBulletDecal(Float:Origin[3])
{
    
// Find target
    
static decaldecal random_num(4145)
    
    
// Put decal on "world" (a wall)
    
message_begin(MSG_BROADCASTSVC_TEMPENTITY)
    
write_byte(TE_WORLDDECAL)
    
engfunc(EngFunc_WriteCoordOrigin[0])
    
engfunc(EngFunc_WriteCoordOrigin[1])
    
engfunc(EngFunc_WriteCoordOrigin[2])
    
write_byte(decal)
    
message_end()
}

stock Set_Weapon_Anim(idWeaponAnim)
{
    
set_pev(idpev_weaponanimWeaponAnim)
    
    
message_begin(MSG_ONE_UNRELIABLESVC_WEAPONANIM, {000}, id)
    
write_byte(WeaponAnim)
    
write_byte(pev(idpev_body))
    
message_end()
}

stock Set_Weapon_TimeIdle(idWeaponId ,Float:TimeIdle)
{
    static 
entwpnentwpn fm_get_user_weapon_entity(idWeaponId)
    if(!
pev_valid(entwpn)) 
        return
        
    
set_pdata_float(entwpn46TimeIdle4)
    
set_pdata_float(entwpn47TimeIdle4)
    
set_pdata_float(entwpn48TimeIdle 0.54)
}

stock Set_Player_NextAttack(idFloat:nexttime)
{
    
set_pdata_float(id83nexttime5)
}

stock Get_Position(id,Float:forwFloat:rightFloat:upFloat:vStart[])
{
    static 
Float:vOrigin[3], Float:vAngle[3], Float:vForward[3], Float:vRight[3], Float:vUp[3]
    
    
pev(idpev_originvOrigin)
    
pev(idpev_view_ofs,vUp//for player
    
xs_vec_add(vOrigin,vUp,vOrigin)
    
pev(idpev_v_anglevAngle// if normal entity ,use pev_angles
    
    
angle_vector(vAngle,ANGLEVECTOR_FORWARD,vForward//or use EngFunc_AngleVectors
    
angle_vector(vAngle,ANGLEVECTOR_RIGHT,vRight)
    
angle_vector(vAngle,ANGLEVECTOR_UP,vUp)
    
    
vStart[0] = vOrigin[0] + vForward[0] * forw vRight[0] * right vUp[0] * up
    vStart
[1] = vOrigin[1] + vForward[1] * forw vRight[1] * right vUp[1] * up
    vStart
[2] = vOrigin[2] + vForward[2] * forw vRight[2] * right vUp[2] * up
}

stock get_speed_vector(const Float:origin1[3],const Float:origin2[3],Float:speedFloat:new_velocity[3])
{
    
new_velocity[0] = origin2[0] - origin1[0]
    
new_velocity[1] = origin2[1] - origin1[1]
    
new_velocity[2] = origin2[2] - origin1[2]
    static 
Float:numnum floatsqroot(speed*speed / (new_velocity[0]*new_velocity[0] + new_velocity[1]*new_velocity[1] + new_velocity[2]*new_velocity[2]))
    
new_velocity[0] *= num
    new_velocity
[1] *= num
    new_velocity
[2] *= num
    
    
return 1;
}

do_attack(AttackerVictimInflictorFloat:fDamage)
{
    
fake_player_trace_attack(AttackerVictimfDamage)
    
fake_take_damage(AttackerVictimfDamageInflictor)
}

fake_player_trace_attack(iAttackeriVictim, &Float:fDamage)
{
    
// get fDirection
    
static Float:fAngles[3], Float:fDirection[3]
    
pev(iAttackerpev_anglesfAngles)
    
angle_vector(fAnglesANGLEVECTOR_FORWARDfDirection)
    
    
// get fStart
    
static Float:fStart[3], Float:fViewOfs[3]
    
pev(iAttackerpev_originfStart)
    
pev(iAttackerpev_view_ofsfViewOfs)
    
xs_vec_add(fViewOfsfStartfStart)
    
    
// get aimOrigin
    
static iAimOrigin[3], Float:fAimOrigin[3]
    
get_user_origin(iAttackeriAimOrigin3)
    
IVecFVec(iAimOriginfAimOrigin)
    
    
// TraceLine from fStart to AimOrigin
    
static pentrupentru create_tr2() 
    
engfunc(EngFunc_TraceLinefStartfAimOriginDONT_IGNORE_MONSTERSiAttackerpentru)
    static 
pHitpHit get_tr2(pentruTR_pHit)
    static 
iHitgroupiHitgroup get_tr2(pentruTR_iHitgroup)
    static 
Float:fEndPos[3]
    
get_tr2(pentruTR_vecEndPosfEndPos)

    
// get target & body at aiming
    
static iTargetiBody
    get_user_aiming
(iAttackeriTargetiBody)
    
    
// if aiming find target is iVictim then update iHitgroup
    
if (iTarget == iVictim)
    {
        
iHitgroup iBody
    
}
    
    
// if pentru find target not is iVictim
    
else if (pHit != iVictim)
    {
        
// get AimOrigin in iVictim
        
static Float:fVicOrigin[3], Float:fVicViewOfs[3], Float:fAimInVictim[3]
        
pev(iVictimpev_originfVicOrigin)
        
pev(iVictimpev_view_ofsfVicViewOfs
        
xs_vec_add(fVicViewOfsfVicOriginfAimInVictim)
        
fAimInVictim[2] = fStart[2]
        
fAimInVictim[2] += get_distance_f(fStartfAimInVictim) * floattanfAngles[0] * 2.0degrees )
        
        
// check aim in size of iVictim
        
static iAngleToVictimiAngleToVictim get_angle_to_target(iAttackerfVicOrigin)
        
iAngleToVictim abs(iAngleToVictim)
        static 
Float:fDisfDis 2.0 get_distance_f(fStartfAimInVictim) * floatsinfloat(iAngleToVictim) * 0.5degrees )
        static 
Float:fVicSize[3]
        
pev(iVictimpev_size fVicSize)
        if ( 
fDis <= fVicSize[0] * 0.5 )
        {
            
// TraceLine from fStart to aimOrigin in iVictim
            
static ptr2ptr2 create_tr2() 
            
engfunc(EngFunc_TraceLinefStartfAimInVictimDONT_IGNORE_MONSTERSiAttackerptr2)
            static 
pHit2pHit2 get_tr2(ptr2TR_pHit)
            static 
iHitgroup2iHitgroup2 get_tr2(ptr2TR_iHitgroup)
            
            
// if ptr2 find target is iVictim
            
if ( pHit2 == iVictim && (iHitgroup2 != HIT_HEAD || fDis <= fVicSize[0] * 0.25) )
            {
                
pHit iVictim
                iHitgroup 
iHitgroup2
                get_tr2
(ptr2TR_vecEndPosfEndPos)
            }
            
            
free_tr2(ptr2)
        }
        
        
// if pHit still not is iVictim then set default HitGroup
        
if (pHit != iVictim)
        {
            
// set default iHitgroup
            
iHitgroup HIT_GENERIC
            
            
static ptr3ptr3 create_tr2() 
            
engfunc(EngFunc_TraceLinefStartfVicOriginDONT_IGNORE_MONSTERSiAttackerptr3)
            
get_tr2(ptr3TR_vecEndPosfEndPos)
            
            
// free ptr3
            
free_tr2(ptr3)
        }
    }
    
    
// set new Hit & Hitgroup & EndPos
    
set_tr2(pentruTR_pHitiVictim)
    
set_tr2(pentruTR_iHitgroupiHitgroup)
    
set_tr2(pentruTR_vecEndPosfEndPos)

    
// ExecuteHam
    
fake_trake_attack(iAttackeriVictimfDamagefDirectionpentru)
    
    
// free pentru
    
free_tr2(pentru)
}

stock fake_trake_attack(iAttackeriVictimFloat:fDamageFloat:fDirection[3], iTraceHandleiDamageBit = (DMG_NEVERGIB DMG_BULLET))
{
    
ExecuteHamB(Ham_TraceAttackiVictimiAttackerfDamagefDirectioniTraceHandleiDamageBit)
}

stock fake_take_damage(iAttackeriVictimFloat:fDamageiInflictoriDamageBit = (DMG_NEVERGIB DMG_BULLET))
{
    
ExecuteHamB(Ham_TakeDamageiVictimiInflictoriAttackerfDamageiDamageBit)
}

stock get_angle_to_target(id, const Float:fTarget[3], Float:TargetSize 0.0)
{
    static 
Float:fOrigin[3], iAimOrigin[3], Float:fAimOrigin[3], Float:fV1[3]
    
pev(idpev_originfOrigin)
    
get_user_origin(idiAimOrigin3// end position from eyes
    
IVecFVec(iAimOriginfAimOrigin)
    
xs_vec_sub(fAimOriginfOriginfV1)
    
    static 
Float:fV2[3]
    
xs_vec_sub(fTargetfOriginfV2)
    
    static 
iResultiResult get_angle_between_vectors(fV1fV2)
    
    if (
TargetSize 0.0)
    {
        static 
Float:fTanfTan TargetSize get_distance_f(fOriginfTarget)
        static 
fAngleToTargetSizefAngleToTargetSize floatroundfloatatan(fTandegrees) )
        
iResult -= (iResult 0) ? fAngleToTargetSize : -fAngleToTargetSize
    
}
    
    return 
iResult
}

stock get_angle_between_vectors(const Float:fV1[3], const Float:fV2[3])
{
    static 
Float:fA1[3], Float:fA2[3]
    
engfunc(EngFunc_VecToAnglesfV1fA1)
    
engfunc(EngFunc_VecToAnglesfV2fA2)
    
    static 
iResultiResult floatround(fA1[1] - fA2[1])
    
iResult iResult 360
    iResult 
= (iResult 180) ? (iResult 360) : iResult
    
    
return iResult
Аватара пользователя
Anderykys
 
Сообщения: 1
Зарегистрирован: 18 июн 2017, 17:52
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.

Re: Furien Mod не выдаётся оружие в начале раунда

Сообщение tato » 19 июн 2017, 21:13

162 строчка смотри её!
Проблема думаю в том что сам мод отнимает при спауне все оружие у Т и КТ и выдает опять же!
В этом плагине при спауне сразу выдает оружие!
Думаю поможет даже небольшой set_task хотя бы на 1 секунду!
Ну это при условии что плагин вообще рабочий)
Вижу что можно через админку проверить -
Код: Выделить всё
register_clcmd("admin_get_bow""Get_CompoundBow"

просто хотелось бы побольше информации плагин вообще уверен то что работает на твоем сервере!
А так если работает поставь set_task при спауне)) или выдавай через другой аргумент(твоя фантазия)!
Аватара пользователя
tato
 
Сообщения: 26
Зарегистрирован: 07 май 2017, 12:35
Забанен
Благодарил (а): 3 раз.
Поблагодарили: 6 раз.
Языки программирования: Pawn
SourcePawn
C++
Php
Ruby
Python
C#


Вернуться в Вопросы по AMXX и его плагинам

Кто сейчас на конференции

Сейчас этот форум просматривают: Yandex [Bot] и гости: 9