Skocz do zawartości

Nowy szablon forum

mygo.pl

Stworzyliśmy dla Was nowy wygląd forum. Z pewnością znajdziesz rzeczy, które wg Ciebie mogą zostać zmienione - wspomnij o tym w specjalnym wątku.

Czytaj więcej

Jak założyć własną sieć

serwerów CS

Zastanawiasz się nad prowadzeniem własnej sieci serwerów? Przeczytaj podstawowe informacje, na które należy zwrócić uwagę, przy takim projekcie.

Czytaj więcej

Tworzymy spis sieci

dodaj swoją

Dodaj sieć do której należysz, pozwoli to na promocję i budowę ogólnopolskiej bazy sieci CS.

Czytaj więcej

RSSImproving this plugin


MYGO.pl
 Udostępnij

Rekomendowane odpowiedzi

  • RSSy
Hello, can someone fix this thing? It causes tryalloc error in my server, I don't know why.

PHP Code:

#include <amxmodx>
#include <engine>
#include <fakemeta>
#include <fakemeta_util>
#include <hamsandwich>
#include <xs>
#include <zp50_core>
#include <reapi>
#include <crxknives>

#define PLUGIN "[ZP] Knife: Miracle Prism Sword"
#define VERSION "1.2"
#define AUTHOR "Asdian DX"

#define CSW_MAGICKNIFE CSW_KNIFE
#define weapon_magicknife "weapon_knife"

#define v_model "models/gcg_csze/v_magicknife.mdl"
#define p_model "models/gcg_csze/p_magicknife.mdl"
#define spr_wpn    "knife_magicknife"

new const weapon_sound[][] =
{
    
"weapons/magicknife_slash1.wav",    // 0
    
"weapons/magicknife_slash2.wav",    // 1
    
"weapons/magicknife_slash3.wav",    // 2
    
"weapons/magicknife_slash4.wav",    // 3
    
"weapons/magicknife_slash_end.wav",    // 4
    
"weapons/magicknife_draw.wav",        // 5
    
    
"weapons/magicknife_charge_start.wav",        // 6
    
"weapons/magicknife_charge_idle2_1.wav",    // 7
    
"weapons/magicknife_charge_idle2_2.wav",    // 8
    
"weapons/magicknife_charge_finish.wav",        // 9
    
"weapons/magicknife_charge_attack2.wav",    // 10
    
    
"weapons/magicknife_magic_start.wav",    // 11
    
"weapons/magicknife_magic_end.wav",    // 12
    
"weapons/magicknife_magic_hit.wav",    // 13
    
"weapons/magicknife_magic_end.wav",    // 14
    
    
"weapons/tomahawk_slash1_hit.wav",    // 15
    
"weapons/tomahawk_slash2_hit.wav",    // 16
    
"weapons/combatknife_wall.wav"        // 17
    
}

new const 
chara_specialsound[][] = 
{
    
"weapons/buffclass19s3ct/skill/miracleprismsword1.wav",
    
"weapons/buffclass19s3ct/skill/miracleprismsword2.wav",
    
    
"weapons/buffclass19s3tr/skill/miracleprismsword1.wav",
    
"weapons/buffclass19s3tr/skill/miracleprismsword2.wav"
}

new const 
szMagicSprites[][] =
{
    
"sprites/gcg_csze/ef_mgknife_start.spr",    //0
    
"sprites/gcg_csze/ef_mgknife_loop.spr",    //1
    
"sprites/gcg_csze/ef_mgknife_end.spr",    //2
    
"sprites/gcg_csze/ef_mgknife_exp01.spr",    //3
    
"sprites/gcg_csze/ef_mgknife_exp02.spr"    //4
}

//SLASH
#define    SLASH_ANGLE            120.0
#define SLASH_DAMAGE            random_float(300.0,350.0)
#define SLASH_RANGE            130.0
#define SLASH_KNOCKBACK         3.0        

//CHARGE
#define CHARGE_DAMAGE            random_float(600.0,650.0)    
#define    CHARGE_RANGE            160.0
#define    CHARGE_ANGLE            179.0
#define CHARGE_KNOCKBACK         1000.0                

//MAGIC
#define MAGIC_EXPLOSION_DAMAGE        2000.0
#define MAGIC_SLASH_DAMAGE        1000.0

//Hit
#define    RESULT_HIT_NONE             0
#define    RESULT_HIT_PLAYER            1
#define    RESULT_HIT_WORLD            2

new g_had_magicknife[33], g_freezetime
new spr_blood_sprayspr_blood_drop

new const ATTRIBUTE_BONUS_XP[] = "MAGIC"

public plugin_init() 
{
    
register_plugin(PLUGINVERSIONAUTHOR)
    
    
register_logevent("LogEvent_Round_Start",2"1=Round_Start")
    
register_event("HLTV","Event_HLTV","a","1=0","2=0")
    
register_event("CurWeapon""Event_CurWeapon""be""1=1")
    
register_message(get_user_msgid("DeathMsg"), "message_DeathMsg")
    
    
RegisterHam(Ham_Think"info_target""MagicThink")
    
RegisterHam(Ham_Item_PostFrameweapon_magicknife"fw_Item_PostFrame")
    
    
register_clcmd(spr_wpn"hook_rb")
}

public 
plugin_precache()
{
    
precache_model(v_model)
    
precache_model(p_model)
    
    new 
i
    
for(0sizeof(chara_specialsound); i++)
        
precache_sound(chara_specialsound[i])
    for(
0sizeof(weapon_sound); i++)
        
precache_sound(weapon_sound[i])
    for(
0sizeof(szMagicSprites); i++)
        
engfunc(EngFunc_PrecacheModelszMagicSprites[i])
    
    
spr_blood_spray precache_model("sprites/bloodspray.spr")
    
spr_blood_drop precache_model("sprites/blood.spr")
    
    new 
Txt[32]
    
format(Txt31"sprites/gcg_csze/%s.txt"spr_wpn)
    
engfunc(EngFunc_PrecacheGenericTxt)
}

public 
hook_rb(id)
{
    
engclient_cmd(idweapon_magicknife)
    return 
PLUGIN_HANDLED
}

public 
crxknives_knife_updated(idiKnifebool:bOnConnect)
{
    static 
iValue

    
if(crxknives_get_attribute_int(idATTRIBUTE_BONUS_XPiValue) && iValue == 1)
    {
        
get_magicknife(id)
    }
    else
    {
        
g_had_magicknife[id] = 0
    
}
}

public 
zp_fw_core_infect_post(idremove_crow9(id)
public 
zp_fw_core_cure_post(idremove_crow9(id)

public 
get_magicknife(id)
{
    if (!
is_user_alive(id))
        return

    
g_had_magicknife[id] = 1
    
    
if (get_user_weapon(id) == CSW_MAGICKNIFEEvent_CurWeapon(id)
    else 
engclient_cmd(id,weapon_magicknife)
    
    
message_begin(MSG_ONE_UNRELIABLEget_user_msgid("WeaponList"), _id)
    
write_string(g_had_magicknife[id] == spr_wpn weapon_magicknife)
    
write_byte(-1)
    
write_byte(-1)
    
write_byte(-1)
    
write_byte(-1)
    
write_byte(2)
    
write_byte(1)
    
write_byte(CSW_MAGICKNIFE)
    
write_byte(0)
    
message_end()
}

public 
remove_crow9(id)
{
    
g_had_magicknife[id] = 0
}

public 
Event_HLTV() g_freezetime 1
public LogEvent_Round_Start() g_freezetime 0

public Event_CurWeapon(id)
{
    if(!
is_user_alive(id))
        return 
1
    
if(get_user_weapon(id) != CSW_MAGICKNIFE)
        return 
1
    
if(!g_had_magicknife[id])
        return 
1
        
    set_pev
(idpev_viewmodel2v_model)
    
set_pev(idpev_weaponmodel2p_model)
    
    
Set_WeaponAnim(id6)
    
    static 
iEntiEnt fm_get_user_weapon_entity(idCSW_MAGICKNIFE)
    if(!
pev_valid(iEnt)) return 1
    
    set_pdata_float
(id831.0)
    
set_pdata_float(iEnt461.03);
    
set_pdata_float(iEnt471.03);
    
set_pdata_float(iEnt481.03);
    
    
set_pev(iEntpev_iuser10)
    
set_pev(iEntpev_iuser20)
    
set_pev(iEntpev_iuser30)
            
    return 
0
}

public 
message_DeathMsg(msg_idmsg_destmsg_ent)
{
    new 
szWeapon[64]
    
get_msg_arg_string(4szWeaponcharsmax(szWeapon))
    
    if (
strcmp(szWeapon"knife"))
        return 
PLUGIN_CONTINUE

    
new iEntity get_pdata_cbase(get_msg_arg_int(1), 373)
    if (!
pev_valid(iEntity) || get_pdata_int(iEntity434) != CSW_MAGICKNIFE || !g_had_magicknife[get_msg_arg_int(1)])
        return 
PLUGIN_CONTINUE

    set_msg_arg_string
(4"magicknife")
    return 
PLUGIN_CONTINUE
}

public 
fw_Item_PostFrame(ent)
{
    new 
id pev(entpev_owner)
    
    if(!
is_user_connected(id))
        return 
HAM_IGNORED
    
if(get_user_weapon(id) != CSW_MAGICKNIFE || !g_had_magicknife[id])
        return 
HAM_IGNORED

    
new iButton pev(id,pev_button)
    return 
AurezLegendOfBotac(identiButton)
}

public 
AurezLegendOfBotac(idiEntiButton)
{
    if(
g_freezetime) return HAM_IGNORED
    
    
new iSnd pev(iEntpev_iuser2);
    new 
iState pev(iEntpev_iuser3)
    
//new IsSpec = (bStab == 2)
    
    
if(!(iButton IN_ATTACK) && get_pdata_float(iEnt484) <= 0.0 && iSnd == 1)
    {
        
set_pdata_float(iEnt460.83,4);
        
set_pdata_float(iEnt470.83,4);
        
set_pdata_float(iEnt480.85,4);
        
        
Set_WeaponAnim(id5)
        
set_pev(iEntpev_iuser10)
        
set_pev(iEntpev_iuser20)
    }
    
    if(!(
iButton IN_ATTACK2))
    {
        if(
iState == || iState == 3)
        {
            
set_pev(iEntpev_iuser30)
            
Set_WeaponAnim(id11)
                
            
set_pdata_float(id830.3)
            
set_pdata_float(iEnt462.16);
            
set_pdata_float(iEnt472.16);
            
set_pdata_float(iEnt482.16)    
            
            
set_pev(iEntpev_iuser11)
            
set_pev(iEntpev_iuser22)
            
set_pev(iEntpev_fuser4get_gametime() + get_pdata_float(id83))
        }
        
        if(
iState == 4)
        {
            
set_pev(iEntpev_iuser30)
            
Set_WeaponAnim(id12)
            
            
set_pdata_float(id830.3)
            
set_pdata_float(iEnt462.16);
            
set_pdata_float(iEnt472.16);
            
set_pdata_float(iEnt482.16)    
            
            
set_pev(iEntpev_iuser11)
            
set_pev(iEntpev_iuser23)
            
set_pev(iEntpev_fuser4get_gametime() + get_pdata_float(id83))

            
client_cmd(id"spk weapons/buffclass19s3ct/skill/miracleprismsword1.wav")
            
client_cmd(id"spk weapons/buffclass19s3tr/skill/miracleprismsword1.wav")
        }
    }
    
    if (
get_pdata_float(id83) <= 0.0 && pev(iEntpev_iuser1))
    {
        new 
Float:Damage[4]
        
Damage[0] = SLASH_RANGE
        Damage
[1] = SLASH_ANGLE
        Damage
[2] = SLASH_DAMAGE
        Damage
[3] = SLASH_KNOCKBACK
        
        
new iHitResult KnifeAttack_Global(id0Damage[0], Damage[1], Damage[2], Damage[3])
        switch (
iHitResult)
        {
            case 
RESULT_HIT_PLAYER SendSound(idCHAN_VOICEweapon_sound[random_num(1516)])
            case 
RESULT_HIT_WORLD SendSound(idCHAN_VOICEweapon_sound[17])
        }
        
        if(
iSnd == 2SendSound(idCHAN_WEAPONweapon_sound[random_num(0,3)])
        if(
iSnd == 3) { SendSound(idCHAN_WEAPONweapon_sound[10]); DoMagic(id); }
            
        
set_pev(iEntpev_iuser10);
        if(
iSnd 1set_pev(iEntpev_iuser20)
    }
    
    if((
iButton IN_ATTACK2) && iState == 4)
    {
        new 
Float:fTimer1pev(iEntpev_fuser1fTimer1)
        if(
fTimer1 && fTimer1 get_gametime())
        {
            
SendSound(idCHAN_WEAPONweapon_sound[8])
            
set_pev(iEntpev_fuser1get_gametime() + 3.31)
        }
    }
    
    if(
get_pdata_float(iEnt46) > 0.0)
        return 
HAM_IGNORED
    
    
if(iButton IN_ATTACK)
    {
        new 
iAnim pev(iEntpev_iuser4)
    
        
set_pdata_float(id830.05)
        
set_pdata_float(iEnt460.35,4);
        
set_pdata_float(iEnt470.35,4);
        
set_pdata_float(iEnt480.45,4);

        
set_pev(iEntpev_iuser11)
        
set_pev(iEntpev_iuser21)
        
set_pev(iEntpev_fuser4get_gametime() + get_pdata_float(id83))
        
        
Set_WeaponAnim(idiAnim)
        
SendSound(idCHAN_WEAPONweapon_sound[iAnim])
        
        if(
iAnim 2iAnim 0
        
else iAnim++
        
set_pev(iEntpev_iuser4iAnim)
    }

    if((
iButton IN_ATTACK2) && !iSnd)
    {
        switch(
iState)
        {
            case 
0:
            {
                
Set_WeaponAnim(id13)
                
                
set_pdata_float(iEnt460.6)
                
set_pdata_float(iEnt470.6)
                
set_pdata_float(iEnt480.65)
                
                
set_pev(iEntpev_iuser31)
            }
            case 
1:
            {
                
Set_WeaponAnim(id7)
                
SendSound2(idweapon_sound[6])
                
                
set_pdata_float(iEnt460.36);
                
set_pdata_float(iEnt470.36);
                
set_pdata_float(iEnt480.36);

                
set_pev(iEntpev_iuser32)
            }
            case 
2:
            {
                
Set_WeaponAnim(id9)
                
set_pdata_float(iEnt461.03);
                
set_pdata_float(iEnt471.03);
                
set_pdata_float(iEnt481.03);
                
                
set_pev(iEntpev_iuser33)
            }
            case 
3:
            {
                
Set_WeaponAnim(id8)
                
set_pdata_float(iEnt460.36);
                
set_pdata_float(iEnt470.36);
                
set_pdata_float(iEnt480.36);

                
set_pev(iEntpev_iuser34)
                
set_pev(iEntpev_fuser1get_gametime() + 0.01)
                
                
client_cmd(id"spk weapons/buffclass19s3ct/skill/miracleprismsword1.wav")
                
client_cmd(id"spk weapons/buffclass19s3tr/skill/miracleprismsword2.wav")
            }
            case 
4:
            {
                
set_pdata_float(iEnt460.93);
                
set_pdata_float(iEnt470.93);
                
set_pdata_float(iEnt480.93);
                
                
Set_WeaponAnim(id10)
                
set_pev(iEntpev_iuser34)
                
                
MagicInit(id)
            }
        }
    } else {
        if(
iState == 1)
        {
            
set_pev(iEntpev_iuser30)
            
            
set_pdata_float(id830.2)
            
set_pdata_float(iEnt461.0)
            
set_pdata_float(iEnt471.0)
            
set_pdata_float(iEnt482.6)    
            
            
set_pev(iEntpev_iuser11)
            
set_pev(iEntpev_iuser22)
            
set_pev(iEntpev_fuser4get_gametime() + get_pdata_float(id83))
        }
    }
    
    
iButton &= ~IN_ATTACK;
    
iButton &= ~IN_ATTACK2;
    
set_pev(idpev_buttoniButton);
    return 
HAM_IGNORED
}

public 
MagicInit(id)
{
    static 
Float:vOrigin[3], Float:pOrigin[3]
    
pev(idpev_originvOrigin)
    
    for(new 
0get_maxplayers(); ++)
    {
        if(!
is_user_connected(x) || !is_user_alive(x) || !zp_core_is_zombie(x))
            continue;
            
        
pev(xpev_originpOrigin);
        
        if(
isClearLine(pOriginvOrigin) && vector_distance(pOriginvOrigin) <= 650.0 && !isLocked(xid))
            
MakeMagic(idx)
    }
}

public 
MakeMagic(pevAttackeriVictim)
{
    static 
Float:pOrigin[3], Float:vOrigin[3], Float:vDir[3], Float:vAngle[3];
    
pev(iVictimpev_originvOrigin);
    
pev(pevAttackerpev_originpOrigin);
    
    
xs_vec_sub(vOriginpOriginvDir);
    
xs_vec_normalize(vDirvDir);
    
    static 
EntEnt engfunc(EngFunc_CreateNamedEntityengfunc(EngFunc_AllocString"info_target"));
    
dllfunc(DLLFunc_SpawnEnt);
    
    
engfunc(EngFunc_SetModelEntszMagicSprites[0])
    
set_pev(Entpev_originvOrigin);
    
set_pev(Entpev_classname"magicknife_magic")
    
set_pev(Entpev_ownerpevAttacker);
    
set_pev(Entpev_rendermodekRenderTransAdd);
    
set_pev(Entpev_renderamt255.0);
    
set_pev(Entpev_scale0.57);
    
set_pev(Entpev_iuser10);
    
set_pev(Entpev_iuser20);
    
set_pev(Entpev_iuser30);
    
set_pev(Entpev_frame0.0);
    
    
vector_to_angle(vDirvAngle);
    
set_pev(Entpev_anglesvAngle);
    
    
set_pev(Entpev_enemyiVictim);
    
set_pev(Entpev_nextthinkget_gametime());
    
    
engfunc(EngFunc_EmitAmbientSoundEntvOriginweapon_sound[11], 1.00.80100);
}

public 
DoMagic(id)
{
    new 
pEnt = -1
    
while(( pEnt engfunc(EngFunc_FindEntityByStringpEnt"classname""magicknife_magic")) != 0)
    {
        if(!
pev_valid(pEnt) || pev(pEntpev_owner) != id)
            continue;
        
        if(
pev(pEntpev_iuser2) == 0)
            
set_pev(pEntpev_iuser14);
    }
}

public 
MagicThink(Ent)
{
    if(!
isMagic(Ent))
        return;
        
    new 
Float:pOrigin[3], Float:vOrigin[3], Float:vDir[3], Float:vAngle[3], Float:flFrameiModeiCheckiVictimpevAttacker;
    static 
iStatiStat 0
    
    pev
(Entpev_originvOrigin);
    
iMode pev(Entpev_iuser1)
    
iCheck pev(Entpev_iuser2)
    
    switch(
iMode)
    {
        case 
1:
        {
            
pev(Entpev_frameflFrame);
            
flFrame += 1.0
            
if(flFrame >= 14.0flFrame 0.0
            set_pev
(Entpev_frameflFrame);
        }
        case 
2// removed
        
{
            
engfunc(EngFunc_SetModelEntszMagicSprites[2])
            
set_pev(Entpev_iuser13);
            
set_pev(Entpev_iuser21);
            
set_pev(Entpev_frame0.0);
            
engfunc(EngFunc_EmitAmbientSoundEntvOriginweapon_sound[12], 1.00.80100);
        }
        case 
3:
        {
            
pev(Entpev_frameflFrame);
            
flFrame floatmin(44.0flFrame+1.0);
            
            if(
flFrame >= 44.0)
            {
                
engfunc(EngFunc_RemoveEntityEnt);
                return;
            }
            
            
set_pev(Entpev_frameflFrame);
        }
        case 
4// hit
        
{
            
engfunc(EngFunc_SetModelEntszMagicSprites[3])
            
set_pev(Entpev_frame0.0);
            
set_pev(Entpev_iuser15);
            
set_pev(Entpev_iuser22);
            
engfunc(EngFunc_EmitAmbientSoundEntvOriginweapon_sound[13], 1.00.60100);
            
            
iStat 1
        
}
        case 
5:
        {
            
pev(Entpev_frameflFrame);
            
flFrame floatmin(34.0flFrame+0.8);
            
            if(
flFrame >= 12.0 && pev(Entpev_iuser3) != 1
            {
                
iStat 2
                
                set_pev
(Entpev_iuser31);
                
engfunc(EngFunc_EmitAmbientSoundEntvOriginweapon_sound[14], 1.00.60100);
            }
            
            if(
flFrame >= 34.0)
            {
                
set_pev(Entpev_iuser16);
                
engfunc(EngFunc_SetModelEntszMagicSprites[4])
                
flFrame 0.0
            
}
            
            
set_pev(Entpev_frameflFrame);
        }
        case 
6:
        {
            
pev(Entpev_frameflFrame);
            
flFrame floatmin(34.0flFrame+1.0);
            
            if(
flFrame >= 34.0)
            {
                
engfunc(EngFunc_RemoveEntityEnt);
                return;
            }
            
            
set_pev(Entpev_frameflFrame);
        }
        default: 
        {
            
pev(Entpev_frameflFrame);
            
flFrame floatmin(44.0flFrame 0.8);
            
            if(
flFrame >= 44.0)
            {
                
set_pev(Entpev_iuser11);
                
engfunc(EngFunc_SetModelEntszMagicSprites[1])
                
flFrame 0.0
            
}
            
            
set_pev(Entpev_frameflFrame);
        }
    }
    
    
set_pev(Entpev_nextthinkget_gametime());
    
    
pevAttacker pev(Entpev_owner);
    
iVictim pev(Entpev_enemy);

    if(!
is_user_connected(pevAttacker) || !is_user_alive(pevAttacker))
    {
        
engfunc(EngFunc_RemoveEntityEnt);
        return;    
    }
    
    if(
iCheck == 1)
        return;
    
    
pev(pevAttackerpev_originpOrigin);
    
pev(iVictimpev_originvOrigin);
    
    
xs_vec_sub(vOriginpOriginvDir);
    
xs_vec_normalize(vDirvDir);
    
    
vector_to_angle(vDirvAngle);
    
    if(!
iCheck)
    {
        
vAngle[0] = 0.0
        set_pev
(Entpev_anglesvAngle);
        
set_pev(Entpev_originvOrigin);
    }
    
    if(
zp_core_is_zombie(pevAttacker) || (get_user_weapon(pevAttacker) != CSW_KNIFE || !g_had_magicknife[pevAttacker]) || !is_user_alive(iVictim) || !is_user_connected(iVictim))
    {
        if(
iMode != && iCheck != 2)
            
set_pev(Entpev_iuser12);
        
        return;
    }
    
    if((
vector_distance(vOriginpOrigin) > 650.0 || !isClearLine(vOriginpOrigin)) && iMode != && iCheck != 2)
    {
        
set_pev(Entpev_iuser12);
        return;
    }
    
    if(
iStat == 1ShootTraceAttack(pevAttackervOriginMAGIC_SLASH_DAMAGE)
    else if(
iStat == 2)
    {
        
ExecuteHamB(Ham_TakeDamageiVictimpevAttackerpevAttackerMAGIC_EXPLOSION_DAMAGEDMG_CLUB);
        
HoldUp(iVictim)
    } 
HoldUp(iVictim0.6)
}

stock isLocked(EntpevAttacker)
{
    new 
pEnt = -1
    
while(( pEnt engfunc(EngFunc_FindEntityByStringpEnt"classname""magicknife_magic")) != 0)
    {
        if(!
pev_valid(pEnt) || pev(pEntpev_owner) != pevAttacker)
            continue;
            
        if(
pev(pEntpev_enemy) == Ent && pev(pEntpev_iuser2) == 0)
            return 
1;
    }
    return 
0;
}

stock isMagic(Ent)
{
    if(!
pev_valid(Ent)) return 0;
    
    static 
szClassName[32]; pev(Entpev_classname,szClassName31);
    return (
equal(szClassName"magicknife_magic"))
}

stock isClearLine(Float:vOrigin1[3], Float:vOrigin2[3])
{
    new 
Float:flFraction;
    
engfunc(EngFunc_TraceLinevOrigin1vOrigin2IGNORE_MONSTERS00);
    
get_tr2(0TR_flFractionflFraction)
    
    if (
flFraction 1.0) return 0;

    return 
1;
}

stock ShootTraceAttack(idFloat:vTarget[3], Float:flDamageiDamageBits DMG_BULLET)
{
    new 
Float:vecSrc[3], Float:vecEnd[3], Float:vDir[3], Float:vForward[3]
    
GetGunPosition(idvecSrc);
    
    
xs_vec_sub(vTargetvecSrcvDir);
    
xs_vec_normalize(vDirvDir);
    
    
xs_vec_mul_scalar(vDir8192.0vForward);
    
xs_vec_add(vecEndvForwardvecEnd);
    
    new 
tr create_tr2();
    
engfunc(EngFunc_TraceLinevecSrcvecEnd0idtr);
    
    new 
Float:flFractionget_tr2(trTR_flFractionflFraction);
    if (
flFraction >= 1.0engfunc(EngFunc_TraceHullvecSrcvecEnd03idtr);
    
    
get_tr2(trTR_flFractionflFraction);
    
    if (
flFraction 1.0)
    {
        new 
pEnt get_tr2(trTR_pHit);
        if (
pev_valid(pEnt))
        {
            
rg_multidmg_clear();
            
ExecuteHamB(Ham_TraceAttackpEntidflDamagevDirtriDamageBits);
            
rg_multidmg_apply(idid);
        }
    }
    
free_tr2(tr)
}

stock HoldUp(iEntFloat:flMultiple 0.1)
{
    static 
Float:vecVelocity[3];
    
pev(iEntpev_velocityvecVelocity);
    
vecVelocity[0] *= flMultiple
    vecVelocity
[1] *= flMultiple
    set_pev
(iEntpev_velocityvecVelocity);
}

stock SendSound(idchansample[]) emit_sound(idchansampleVOL_NORMATTN_NORM0PITCH_NORM)
stock SendSound2(idsample[]) client_cmd(id"spk %s"sample)

stock KnifeAttack_Global(idbStabFloat:flRangeFloat:fAngleFloat:flDamageFloat:flKnockBack)
{
    new 
iHitResult
    
if(fAngle 0.0iHitResult KnifeAttack2(idbStabFloat:flRangeFloat:fAngleFloat:flDamageFloat:flKnockBack)
    else 
iHitResult KnifeAttack(idbStabFloat:flRangeFloat:flDamageFloat:flKnockBack)

    return 
iHitResult
}

stock KnifeAttack(idbStabFloat:flRangeFloat:flDamageFloat:flKnockBackiHitgroup = -1bitsDamageType DMG_NEVERGIB DMG_CLUB)
{
    new 
Float:vecSrc[3], Float:vecEnd[3], Float:v_angle[3], Float:vecForward[3];
    
GetGunPosition(idvecSrc);

    
pev(idpev_v_anglev_angle);
    
engfunc(EngFunc_MakeVectorsv_angle);

    
global_get(glb_v_forwardvecForward);
    
xs_vec_mul_scalar(vecForwardflRangevecForward);
    
xs_vec_add(vecSrcvecForwardvecEnd);

    new 
tr create_tr2();
    
engfunc(EngFunc_TraceLinevecSrcvecEnd0idtr);

    new 
Float:flFractionget_tr2(trTR_flFractionflFraction);
    if (
flFraction >= 1.0engfunc(EngFunc_TraceHullvecSrcvecEnd03idtr);
    
    
get_tr2(trTR_flFractionflFraction);

    new 
Float:EndPos2[3]
    
get_tr2(trTR_vecEndPosEndPos2)
    
    new 
iHitResult RESULT_HIT_NONE;
    
    if (
flFraction 1.0)
    {
        new 
pEntity get_tr2(trTR_pHit);
        
iHitResult RESULT_HIT_WORLD;
        
        if (
pev_valid(pEntity) && (IsPlayer(pEntity) || IsHostage(pEntity)))
        {
            if (
CheckBack(idpEntity) && bStab && iHitgroup == -1)
                
flDamage *= 3.0;

            
iHitResult RESULT_HIT_PLAYER;
        }

        if (
pev_valid(pEntity))
        {
            
engfunc(EngFunc_MakeVectorsv_angle);
            
global_get(glb_v_forwardvecForward);

            if (
iHitgroup != -1)
                
set_tr2(trTR_iHitgroupiHitgroup);

            
Stock_Fake_KnockBack(idpEntityflKnockBack)

            
rg_multidmg_clear();
            
ExecuteHamB(Ham_TraceAttackpEntityidflDamagevecForwardtrbitsDamageType);
            
rg_multidmg_apply(idid);
            
            if (
IsAlive(pEntity))
            {
                
free_tr2(tr);
                return 
iHitResult;
            }
        }
    }
    
free_tr2(tr);
    return 
iHitResult;
}

stock KnifeAttack2(idbStabFloat:flRangeFloat:fAngleFloat:flDamageFloat:flKnockBackiHitgroup = -1bNoTraceCheck 0bitsDamageType DMG_NEVERGIB DMG_CLUB)
{
    new 
Float:vecOrigin[3], Float:vecSrc[3], Float:vecEnd[3], Float:v_angle[3], Float:vecForward[3];
    
pev(idpev_originvecOrigin);

    new 
iHitResult RESULT_HIT_NONE;
    
GetGunPosition(idvecSrc);

    
pev(idpev_v_anglev_angle);
    
engfunc(EngFunc_MakeVectorsv_angle);

    
global_get(glb_v_forwardvecForward);
    
xs_vec_mul_scalar(vecForwardflRangevecForward);
    
xs_vec_add(vecSrcvecForwardvecEnd);

    new 
tr create_tr2();
    
engfunc(EngFunc_TraceLinevecSrcvecEnd0idtr);
    
    new 
Float:EndPos2[3]
    
get_tr2(trTR_vecEndPosEndPos2)
    
    new 
Float:flFractionget_tr2(trTR_flFractionflFraction);
    if (
flFraction 1.0iHitResult RESULT_HIT_WORLD;
    
    new 
Float:vecEndZ vecEnd[2];
    
    new 
pEntity = -1;
    while ((
pEntity engfunc(EngFunc_FindEntityInSpherepEntityvecOriginflRange)) != 0)
    {
        if (!
pev_valid(pEntity))
            continue;
        if (
id == pEntity)
            continue;
        if (!
IsAlive(pEntity))
            continue;
        if (!
CheckAngle(idpEntityfAngle))
            continue;

        
GetGunPosition(idvecSrc);
        
Stock_Get_Origin(pEntityvecEnd);
        
        
vecEnd[2] = vecSrc[2] + (vecEndZ vecSrc[2]) * (get_distance_f(vecSrcvecEnd) / flRange);

        
xs_vec_sub(vecEndvecSrcvecForward);
        
xs_vec_normalize(vecForwardvecForward);
        
xs_vec_mul_scalar(vecForwardflRangevecForward);
        
xs_vec_add(vecSrcvecForwardvecEnd);

        
engfunc(EngFunc_TraceLinevecSrcvecEnd0idtr);
        
get_tr2(trTR_flFractionflFraction);

        if (
flFraction >= 1.0engfunc(EngFunc_TraceHullvecSrcvecEnd03idtr);

        
get_tr2(trTR_flFractionflFraction);
        
        if (
flFraction 1.0)
        {
            if (
IsPlayer(pEntity) || IsHostage(pEntity))
            {
                
iHitResult RESULT_HIT_PLAYER;
                
                if (
CheckBack(idpEntity) && bStab && iHitgroup == -1)
                    
flDamage *= 3.0;
            }

            if (
get_tr2(trTR_pHit) == pEntity || bNoTraceCheck)
            {
                
engfunc(EngFunc_MakeVectorsv_angle);
                
global_get(glb_v_forwardvecForward);

                if (
iHitgroup != -1set_tr2(trTR_iHitgroupiHitgroup);

                
Stock_Fake_KnockBack(idpEntityflKnockBack)

                
rg_multidmg_clear();
                
ExecuteHamB(Ham_TraceAttackpEntityidflDamagevecForwardtrbitsDamageType);
                
rg_multidmg_apply(idid);
            }
        }
        
free_tr2(tr);
    }
    return 
iHitResult;
}

stock Set_WeaponAnim(idanim)
{
    
set_pev(idpev_weaponanimanim)
    
    
message_begin(MSG_ONE_UNRELIABLESVC_WEAPONANIM, {000}, id)
    
write_byte(anim)
    
write_byte(pev(idpev_body))
    
message_end()
}

stock Set_WeaponIdleTime(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_PlayerNextAttack(idFloat:nexttime)
{
    
set_pdata_float(id83nexttime5)
}

stock Stock_Get_Postion(id,Float:forw,Float:right,Float:up,Float: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)
    
xs_vec_add(vOrigin,vUp,vOrigin)
    
pev(idpev_v_anglevAngle)
    
    
engfunc(EngFunc_AngleVectorsvAnglevForwardvRightvUp)
    
    
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 IsPlayer(pEntity) return is_user_connected(pEntity)

stock IsHostage(pEntity)
{
    new 
classname[32]; pev(pEntitypev_classnameclassnamecharsmax(classname))
    return 
equal(classname"hostage_entity")
}

stock IsAlive(pEntity)
{
    if (
pEntity 1) return 0
    
return (pev(pEntitypev_deadflag) == DEAD_NO && pev(pEntitypev_health) > 0)
}

stock GetGunPosition(idFloat:vecScr[3])
{
    new 
Float:vecViewOfs[3]
    
pev(idpev_originvecScr)
    
pev(idpev_view_ofsvecViewOfs)
    
xs_vec_add(vecScrvecViewOfsvecScr)
}

stock CheckBack(iEnemy,id)
{
    new 
Float:anglea[3], Float:anglev[3]
    
pev(iEnemypev_v_angleanglea)
    
pev(idpev_v_angleanglev)
    new 
Float:angle anglea[1] - anglev[1
    if (
angle < -180.0angle += 360.0
    
if (angle <= 45.0 && angle >= -45.0) return 1
    
return 0
}

stock CheckAngle(iAttackeriVictimFloat:fAngle)  return(Stock_CheckAngle(iAttackeriVictim) > floatcos(fAngle,degrees))

stock Float:Stock_CheckAngle(id,iTarget)
{
    new 
Float:vOricross[2],Float:fRad,Float:vId_ori[3],Float:vTar_ori[3],Float:vId_ang[3],Float:fLength,Float:vForward[3]
    
Stock_Get_Origin(idvId_ori)
    
Stock_Get_Origin(iTargetvTar_ori)
    
    
pev(id,pev_angles,vId_ang)
    for(new 
i=0;i<2;i++) vOricross[i] = vTar_ori[i] - vId_ori[i]
    
    
fLength floatsqroot(vOricross[0]*vOricross[0] + vOricross[1]*vOricross[1])
    
    if (
fLength<=0.0)
    {
        
vOricross[0]=0.0
        vOricross
[1]=0.0
    
} else {
        
vOricross[0]=vOricross[0]*(1.0/fLength)
        
vOricross[1]=vOricross[1]*(1.0/fLength)
    }
    
    
engfunc(EngFunc_MakeVectors,vId_ang)
    
global_get(glb_v_forward,vForward)
    
    
fRad vOricross[0]*vForward[0]+vOricross[1]*vForward[1]
    
    return 
fRad   //->   RAD 90' = 0.5rad
}

stock Stock_Get_Origin(idFloat:origin[3])
{
    new 
Float:maxs[3],Float:mins[3]
    if (
pev(idpev_solid) == SOLID_BSP)
    {
        
pev(id,pev_maxs,maxs)
        
pev(id,pev_mins,mins)
        
origin[0] = (maxs[0] - mins[0]) / mins[0]
        
origin[1] = (maxs[1] - mins[1]) / mins[1]
        
origin[2] = (maxs[2] - mins[2]) / mins[2]
    } else 
pev(idpev_originorigin)
}

stock SpawnBlood(const Float:vecOrigin[3], iColoriAmount)
{
    if(
iAmount == 0)
    return

    if (!
iColor)
    return

    
iAmount *= 2
    
if(iAmount 255iAmount 255
    engfunc
(EngFunc_MessageBeginMSG_PVSSVC_TEMPENTITYvecOrigin)
    
write_byte(TE_BLOODSPRITE)
    
engfunc(EngFunc_WriteCoordvecOrigin[0])
    
engfunc(EngFunc_WriteCoordvecOrigin[1])
    
engfunc(EngFunc_WriteCoordvecOrigin[2])
    
write_short(spr_blood_spray)
    
write_short(spr_blood_drop)
    
write_byte(iColor)
    
write_byte(min(max(3iAmount 10), 16))
    
message_end()
}

public 
Stock_Fake_KnockBack(idiVicFloat:iKb)
{
    if(
iVic 32) return
    
    new 
Float:vAttacker[3], Float:vVictim[3], Float:vVelocity[3], flags
    pev
(idpev_originvAttacker)
    
pev(iVicpev_originvVictim)
    
vAttacker[2] = vVictim[2] = 0.0
    flags 
pev(idpev_flags)
    
    
xs_vec_sub(vVictimvAttackervVictim)
    new 
Float:fDistance
    fDistance 
xs_vec_len(vVictim)
    
xs_vec_mul_scalar(vVictimfDistancevVictim)
    
    
pev(iVicpev_velocityvVelocity)
    
xs_vec_mul_scalar(vVictimiKbvVictim)
    
xs_vec_mul_scalar(vVictim50.0vVictim)
    
vVictim[2] = xs_vec_len(vVictim) * 0.15
    
    
if(flags &~ FL_ONGROUND)
    {
        
xs_vec_mul_scalar(vVictim1.2vVictim)
        
vVictim[2] *= 0.4
    
}
    if(
xs_vec_len(vVictim) > xs_vec_len(vVelocity)) set_pev(iVicpev_velocityvVictim)
}    

stock Float:Stock_Get_Body_Dmg(iBody)
{
    switch (
iBody)
    {
        case 
HIT_GENERIC: return 0.75
        
case 1: return 4.0
        
case 2: return 1.0
        
case 3: return 1.25
        
case 4,5,6,7: return 0.75
        
default: return 0.75
    
}
    return 
1.0
}

stock Stock_BloodEffect(Float:vecOri[3], scale)
{
    
message_begin(MSG_BROADCASTSVC_TEMPENTITY
    
write_byte(TE_BLOODSPRITE)
    
engfunc(EngFunc_WriteCoord,vecOri[0])
    
engfunc(EngFunc_WriteCoord,vecOri[1])
    
engfunc(EngFunc_WriteCoord,vecOri[2])
    
write_short(spr_blood_spray)
    
write_short(spr_blood_drop)
    
write_byte(75)
    
write_byte(scale)
    
message_end()
}

stock can_damage(id1id2)
{
    if(
id1 <= || id1 >= 33 || id2 <= || id2 >= 33)
        return 
1
        
    
// Check team
    
return(get_pdata_int(id1114) != get_pdata_int(id2114))


Przeczytaj cały wpis

Odnośnik do komentarza
Udostępnij na innych stronach

Gość
Ten temat został zamknięty. Brak możliwości dodania odpowiedzi.
 Udostępnij

  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...