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

Как изменить гравитацию ножа в Knife-Mod Deathrun

Все вопросы по скриптингу для AMXX, помощь в редактировании плагинов.

Модераторы: Subb98, liFe iS GoOD

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

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

Правила при создании новой темы:
1. При вставке кода плагина необходимо использовать тег [code=php].
2. Любые изображения должны быть загружены, как вложения к вашему сообщению.
3. При описании проблемы или запросе на помощь в редактировании плагина обязательно выкладывайте исходник sma плагина.

Как изменить гравитацию ножа в Knife-Mod Deathrun

Сообщение ArtaKey » 05 май 2022, 01:39

Здравствуйте всем. Я плохо понимаю сам скриптинг, так что извините. На данное время, как то смог добавить Мясной Нож на плагине. Оригинал
Код: Выделить всё
#include <amxmodx>
#include <amxmisc>
#include <engine> 
#include < hamsandwich >
#include <vault>
#include <fun>
#include <fakemeta>

#define PLUGIN "Knife Mod"
#define VERSION "2.0" 
#define AUTHOR "FReeMan & CaNiBaL"

#define TASK_INTERVAL 4.0  
#define MAX_HEALTH 255 

#pragma tabsize 0

new  knife_grav[33]

new knife_model[33] 
new g_Menu
new grav_knife
[33]

new CVAR_HIGHSPEED
new CVAR_LOWSPEED
new CVAR_MINSPEED
new CVAR_LOWGRAV
new CVAR_NORMGRAV
new CVAR_HEALTH_ADD
new CVAR_HEALTH_MAX
new CVAR_DAMAGE 

new cvar_knife

public plugin_init
() { 
    
    register_plugin
(PLUGIN, VERSION, AUTHOR) 
    
    register_event
("CurWeapon","CurWeapon","be","1=1") 
    register_event
( "Damage", "event_damage", "be" )
    
    g_Menu 
= register_menuid("Knife Mod")
    register_menucmd(g_Menu, 1023, "knifemenu")
    register_forward(FM_EmitSound, "sound_emit")
    
    register_clcmd
("say /knife", "display_knife")
    register_clcmd("knifes", "display_knife")
    
    CVAR_HIGHSPEED 
= register_cvar("km_highspeed","340")
    CVAR_LOWSPEED = register_cvar("km_lowspeed","250")
    CVAR_MINSPEED = register_cvar("km_lowspeed","230")
    CVAR_HEALTH_ADD = register_cvar("km_addhealth", "5")
    CVAR_DAMAGE = register_cvar("km_damage", "4")
    CVAR_HEALTH_MAX = register_cvar("km_maxhealth", "100")
    CVAR_LOWGRAV = register_cvar("km_lowgravity" , "550")
    CVAR_NORMGRAV = get_cvar_pointer("sv_gravity")

    cvar_knife = register_cvar("knife_enable","1")
}
public sound_emit(id, channel, sample[])
{
    if(is_user_alive(id) )
    {
    if (sample[8] == 'k' && sample[9] == 'n' && sample[10] == 'i')
    {
        if(knife_model[id] == 0)
        return FMRES_IGNORED
        if 
(sample[14] == 'h')
        {
                if (sample[17] == 'w')
                {
                if(knife_model[id] == 5)
                emit_sound(id, CHAN_WEAPON, "weapons/knife_sound/knife1/3.wav", random_float(0.5, 1.0), ATTN_NORM, 0, PITCH_NORM)
                if(knife_model[id] == 4)
                emit_sound(id, CHAN_WEAPON, "weapons/knife_sound/knife4/3.wav", random_float(0.5, 1.0), ATTN_NORM, 0, PITCH_NORM)
                if(knife_model[id] == 2)
                emit_sound(id, CHAN_WEAPON, "weapons/knife_sound/knife2/3.wav", random_float(0.5, 1.0), ATTN_NORM, 0, PITCH_NORM)
                if(knife_model[id] == 3)
                emit_sound(id, CHAN_WEAPON, "weapons/knife_sound/knife3/3.wav", random_float(0.5, 1.0), ATTN_NORM, 0, PITCH_NORM)
                if(knife_model[id] == 1)
                emit_sound(id, CHAN_WEAPON, "weapons/knife_sound/knife1/3.wav", random_float(0.5, 1.0), ATTN_NORM, 0, PITCH_NORM)
                }
                else
                
{
                if(knife_model[id] == 5)
                emit_sound(id, CHAN_WEAPON, "weapons/knife_sound/knife1/1.wav", random_float(0.5, 1.0), ATTN_NORM, 0, PITCH_NORM)
                if(knife_model[id] == 4)
                emit_sound(id, CHAN_WEAPON, "weapons/knife_sound/knife4/1.wav", random_float(0.5, 1.0), ATTN_NORM, 0, PITCH_NORM)
                if(knife_model[id] == 2)
                emit_sound(id, CHAN_WEAPON, "weapons/knife_sound/knife2/1.wav", random_float(0.5, 1.0), ATTN_NORM, 0, PITCH_NORM)
                if(knife_model[id] == 3)
                emit_sound(id, CHAN_WEAPON, "weapons/knife_sound/knife3/1.wav", random_float(0.5, 1.0), ATTN_NORM, 0, PITCH_NORM)
                if(knife_model[id] == 1)
                emit_sound(id, CHAN_WEAPON, "weapons/knife_sound/knife1/1.wav", random_float(0.5, 1.0), ATTN_NORM, 0, PITCH_NORM)
                }

        }
        else 
        
{
                if (sample[15] == 'l')
                {
                if(knife_model[id] == 5)
                emit_sound(id, CHAN_WEAPON, "weapons/knife_sound/knife1/4.wav", random_float(0.5, 1.0), ATTN_NORM, 0, PITCH_NORM)
                if(knife_model[id] == 4)
                emit_sound(id, CHAN_WEAPON, "weapons/knife_sound/knife4/4.wav", random_float(0.5, 1.0), ATTN_NORM, 0, PITCH_NORM)
                if(knife_model[id] == 2)
                emit_sound(id, CHAN_WEAPON, "weapons/knife_sound/knife2/4.wav", random_float(0.5, 1.0), ATTN_NORM, 0, PITCH_NORM)
                if(knife_model[id] == 3)
                emit_sound(id, CHAN_WEAPON, "weapons/knife_sound/knife3/4.wav", random_float(0.5, 1.0), ATTN_NORM, 0, PITCH_NORM)
                if(knife_model[id] == 1)
                emit_sound(id, CHAN_WEAPON, "weapons/knife_sound/knife1/4.wav", random_float(0.5, 1.0), ATTN_NORM, 0, PITCH_NORM)
                }
                else if(sample[17] == 'b')
                {
                if(knife_model[id] == 5)
                emit_sound(id, CHAN_WEAPON, "weapons/knife_sound/knife1/2.wav", random_float(0.5, 1.0), ATTN_NORM, 0, PITCH_NORM)
                if(knife_model[id] == 4)
                emit_sound(id, CHAN_WEAPON, "weapons/knife_sound/knife4/2.wav", random_float(0.5, 1.0), ATTN_NORM, 0, PITCH_NORM)
                if(knife_model[id] == 2)
                emit_sound(id, CHAN_WEAPON, "weapons/knife_sound/knife2/2.wav", random_float(0.5, 1.0), ATTN_NORM, 0, PITCH_NORM)
                if(knife_model[id] == 3)
                emit_sound(id, CHAN_WEAPON, "weapons/knife_sound/knife3/2.wav", random_float(0.5, 1.0), ATTN_NORM, 0, PITCH_NORM)
                if(knife_model[id] == 1)
                emit_sound(id, CHAN_WEAPON, "weapons/knife_sound/knife1/2.wav", random_float(0.5, 1.0), ATTN_NORM, 0, PITCH_NORM)
                }
        }
        return FMRES_SUPERCEDE
    
}
    
    
}
    return FMRES_IGNORED
}

public plugin_natives()
{
   register_library("knife")
   register_native("knife_grav", "_grav_knife", 1)
}

public _grav_knife(id, num)
knife_grav[id] = num
    
public plugin_precache
() { 
    precache_model
("models/knife-mod/v_combat_knife.mdl") 
    precache_model
("models/knife-mod/p_combat_knife.mdl") 
    precache_model
("models/knife-mod/v_admin_knife.mdl")
    precache_model("models/knife-mod/p_admin_knife.mdl")
    precache_model("models/knife-mod/v_tixon.mdl")
    precache_model("models/knife-mod/p_tixon.mdl")
    precache_model("models/knife-mod/v_crowbars.mdl")
    precache_model("models/knife-mod/p_crowbars.mdl")
    precache_model("models/knife-mod/v_1.mdl")
    precache_model("models/knife-mod/p_1.mdl")
    precache_model("models/v_knife.mdl") 
    precache_sound
("weapons/knife_sound/knife1/4.wav")
    precache_sound("weapons/knife_sound/knife2/4.wav")
    precache_sound("weapons/knife_sound/knife3/4.wav")
    precache_sound("weapons/knife_sound/knife4/4.wav")
    precache_sound("weapons/knife_sound/current4.wav")
    precache_sound("weapons/knife_sound/current3.wav")
    precache_sound("weapons/knife_sound/current1.wav")
    precache_sound("weapons/knife_sound/knife1/1.wav")
    precache_sound("weapons/knife_sound/knife1/2.wav")
    precache_sound("weapons/knife_sound/knife1/3.wav")
    precache_sound("weapons/knife_sound/knife2/1.wav")
    precache_sound("weapons/knife_sound/knife2/2.wav")
    precache_sound("weapons/knife_sound/knife2/3.wav")
    precache_sound("weapons/knife_sound/knife3/1.wav")
    precache_sound("weapons/knife_sound/knife3/2.wav")
    precache_sound("weapons/knife_sound/knife3/3.wav")
    precache_sound("weapons/knife_sound/knife4/1.wav")
    precache_sound("weapons/knife_sound/knife4/2.wav")
    precache_sound("weapons/knife_sound/knife4/3.wav")

}
 

public Hook_WeaponList
( iPlayer )
{
    engclient_cmd( iPlayer, "weapon_knife" )
    return PLUGIN_HANDLED
}

public display_knife(id) 
{
    if(!(get_pcvar_num(cvar_knife)))
    return PLUGIN_CONTINUE

    new menuBody
[512]
    add(menuBody, 511, "\yВыбирете нож!\w^n^n")
    if(get_user_flags(id) & ADMIN_LEVEL_C)
    {
        add(menuBody, 511, "\r1. \wСерп \d(\rAdmin\d)\w^n")
    }
    else
    
{
        add(menuBody, 511, "\d1. Серп \d(\rAdmin\y/\rVIP\d)\w^n")
    }
    add(menuBody, 511, "\r2. \wКросбарс \d(\rНе слышно шагов\d)\w^n")
    add(menuBody, 511, "\r3. \wСтронг \r(Speed \y+++\d)\w^n")
    add(menuBody, 511, "\r4. \wКомбат \d(\rGrav \y++\d)\w^n")
    add(menuBody, 511, "\r5. \wСтандартный нож \d(\rRegen HP \y++\d)\w^n")
    add(menuBody, 511, "\r6. \wСильний \d(\r4х урон \y++\d)\w^n^n")

    add(menuBody, 511, "\r0. \wВыход^n")

    new keys = ( 1<<| 1<<| 1<<| 1<<| 1<<| 1<<|1<<)
    show_menu(id, keys, menuBody, -1, "Knife Mod")
    return PLUGIN_HANDLED
}

public knifemenu(id, key) 
{
    switch(key) 
    
{
        case 0: 
        
{
            if(get_user_flags(id) & ADMIN_LEVEL_C)
            {
                SetKnife(id , 4)
                display_knife(id)
            }
            else
            
{
                display_knife(id)
                return PLUGIN_HANDLED
            
}
        }
        case 1: 
        
{
                SetKnife(id , 2)
                display_knife(id)
        }
        case 2: 
        
{
                SetKnife(id , 3)
                display_knife(id)
        }
        case 3: 
        
{
                SetKnife(id , 1)
                display_knife(id)
        }
        case 4: 
        
{
                SetKnife(id , 0)
                display_knife(id)
        }
        case 5:
        {
                SetKnife(id, 5)
                display_knife(id)
        }
        default: return PLUGIN_HANDLED
    
}
    SaveData(id)

    if( get_user_weapon ( id ) != CSW_KNIFE ) return PLUGIN_HANDLED;

    ExecuteHamB( Ham_Item_Deploy , get_pdata_cbase( id , 373 ) )

    CurWeapon(id)    
    return PLUGIN_HANDLED
} 

public SetKnife
(id , Knife) {
    knife_model[id] = Knife
    
    new Clip
, Ammo, Weapon = get_user_weapon(id, Clip, Ammo) 
    if 
( Weapon != CSW_KNIFE )
        return PLUGIN_HANDLED
    
    new vModel
[56],pModel[56]
    
    switch
(Knife)
    {
        case 0: {
            format(vModel,55,"models/v_knife.mdl")
            format(pModel,55,"models/p_knife.mdl")
        }
        case 1: {
            format(vModel,55,"models/knife-mod/v_combat_knife.mdl")
            format(pModel,55,"models/knife-mod/p_combat_knife.mdl")
        }
        case 2: {
            format(vModel,55,"models/knife-mod/v_tixon.mdl")
            format(pModel,55,"models/knife-mod/p_tixon.mdl")
        }
        case 3: {
            format(vModel,55,"models/knife-mod/v_crowbars.mdl")
            format(pModel,55,"models/knife-mod/p_crowbars.mdl")
        }
        case 4: {
            format(vModel,55,"models/knife-mod/v_admin_knife.mdl")
            format(pModel,55,"models/knife-mod/p_admin_knife.mdl")
        }
        case 5: {
            format(vModel,55,"models/knife-mod/v_1.mdl")
            format(pModel,55,"models/knife-mod/p_1.mdl")
        }
    } 
    
    entity_set_string
(id, EV_SZ_viewmodel, vModel)
    entity_set_string(id, EV_SZ_weaponmodel, pModel)
    
    return PLUGIN_HANDLED
;  
}

public event_damage( id ) {
    
    new victim_id 
= id;
    if( !is_user_connected( victim_id ) ) return PLUGIN_CONTINUE
    new dmg_take 
= read_data( 2 );
    new dmgtype = read_data( 3 );
    new Float:multiplier = get_pcvar_float(CVAR_DAMAGE);
    new Float:damage = dmg_take * multiplier;
    new health = get_user_health( victim_id );
    
    new iWeapID
, attacker_id = get_user_attacker( victim_id, iWeapID );
    
    if
( !is_user_connected( attacker_id ) || !is_user_alive( victim_id ) ) {
        return PLUGIN_HANDLED
    
}
    
    if
( iWeapID == CSW_KNIFE && knife_model[attacker_id] == 5  || iWeapID == CSW_KNIFE && knife_model[attacker_id] == 4) {
        
        if
( floatround(damage) >= health ) {
            if( victim_id == attacker_id ) {
                return PLUGIN_CONTINUE
                
}else{
                log_kill( attacker_id, victim_id, "knife", 1 );
            }
            
            return PLUGIN_CONTINUE
            
}else {
            if( victim_id == attacker_id ) return PLUGIN_CONTINUE
            
            fakedamage
( victim_id, "weapon_knife", damage, dmgtype );
        }
    }
    return PLUGIN_CONTINUE
}


public CurWeapon(id)
{
    new Weapon = read_data(2)
    
    if
(knife_model[id] == 4 && Weapon == CSW_KNIFE)
    client_cmd(id,"spk sound/weapons/knife_bublik/current4.wav")

    if(knife_model[id] == 3 && Weapon == CSW_KNIFE)
    client_cmd(id,"spk sound/weapons/knife_bublik/current3.wav")

    if(knife_model[id] == 4 && !(is_user_admin(id)))
    knife_model[id] = 1

    if
(knife_model[id] == 1 && Weapon == CSW_KNIFE)
    client_cmd(id,"spk sound/weapons/knife_bublik/current1.wav")

    if(knife_model[id] == 5 && Weapon == CSW_KNIFE)
    client_cmd(id,"spk sound/weapons/knife_bublik/current3.wav")

    // Set Knife Model
    SetKnife(id, knife_model[id])   
    
    
// Task Options
    
    if
(knife_model[id] == 0 && !task_exists(id) && Weapon == CSW_KNIFE)
        set_task(TASK_INTERVAL , "task_healing",id,_,_,"b")
    else if(task_exists(id))
        remove_task(id)
    
    
// Abilities
    set_user_footsteps(id , ( (knife_model[id] == 2 && Weapon == CSW_KNIFE) ? 1 : 0) )
    

    new Float
:Gravity = ((knife_model[id] == 1 && Weapon == CSW_KNIFE)? get_pcvar_float(CVAR_LOWGRAV) : get_pcvar_float(CVAR_NORMGRAV)) / 800.0
    if
(grav_knife[id] >= 1)
    {
    //
    }
    else
    
{
    set_user_gravity(id , Gravity)
    }

    
    
// Speed
    new Float:Speed
    if
(Weapon != CSW_KNIFE)
        return PLUGIN_CONTINUE
    else if
(knife_model[id] == 3)
        Speed = get_pcvar_float(CVAR_HIGHSPEED)
    else if(knife_model[id] == 2)
        Speed = get_pcvar_float(CVAR_LOWSPEED)
    else if(knife_model[id] == 1)
        Speed = get_pcvar_float(CVAR_LOWSPEED)
    else if(knife_model[id] == 0)
        Speed = get_pcvar_float(CVAR_LOWSPEED)
    else if(knife_model[id] == 5)
        Speed = get_pcvar_float(CVAR_MINSPEED)
    else if(knife_model[id] == 4 && Weapon == CSW_KNIFE)
    {
        Speed = get_pcvar_float(CVAR_HIGHSPEED)
        if(grav_knife[id] >= 1)
        {
        //
        }
        else
        
{
            set_user_gravity(id , 0.6)
            set_user_footsteps(id ,1)
            set_user_maxspeed(id , 450.0)
        }
        return PLUGIN_CONTINUE
    
}
    else
    
{
    
    if
(grav_knife[id] >= 1)
    {
    //
    }
    else
    
{
        set_user_gravity(id , 1.0)
        set_user_footsteps(id ,0)
        set_user_maxspeed(id , 250.0)
    }
    return PLUGIN_CONTINUE
    
}    
    set_user_maxspeed
(id, Speed)
    
    return PLUGIN_HANDLED   
    
}

stock log_kill(killer, victim, weapon[],headshot) {
    user_silentkill( victim );
    
    message_begin
( MSG_ALL, get_user_msgid( "DeathMsg" ), {0,0,0}, 0 );
    write_byte( killer );
    write_byte( victim );
    write_byte( headshot );
    write_string( weapon );
    message_end();
    
    new kfrags 
= get_user_frags( killer );
    set_user_frags( killer, kfrags++ );
    new vfrags = get_user_frags( victim );
    set_user_frags( victim, vfrags++ );
    
    return  PLUGIN_CONTINUE
} 


public task_healing
(id) {  
    new addhealth 
= get_pcvar_num(CVAR_HEALTH_ADD)  
    if 
(!addhealth)
        return  
    
    new maxhealth 
= get_pcvar_num(CVAR_HEALTH_MAX)  
    if 
(maxhealth > MAX_HEALTH) { 
        set_pcvar_num
(CVAR_HEALTH_MAX, MAX_HEALTH)  
        maxhealth 
= MAX_HEALTH 
    
}  
    
    new health 
= get_user_health(id)   
    
    if 
(is_user_alive(id) && (health < maxhealth)) { 
        set_user_health
(id, health + addhealth)
        set_hudmessage(0, 255, 0, -1.0, 0.25, 0, 1.0, 2.0, 0.1, 0.1, 4)
        show_hudmessage(id,"|Восстановление HP|")
        message_begin(MSG_ONE, get_user_msgid("ScreenFade"), {0,0,0}, id)
        write_short(1<<10)
        write_short(1<<10)
        write_short(0x0000)
        write_byte(0)
        write_byte(200)
        write_byte(0)
        write_byte(75)
        message_end()
    }
    
    else 
{
        if (is_user_alive(id) && (health > maxhealth))
            remove_task(id)
    }
}
  

public client_disconnect
(id) {  
    if
(task_exists(id)) remove_task(id)  
}   

public client_authorized
(id)
    {
    LoadData(id)
}

SaveData(id)
{
 
    
    new authid
[32]
    get_user_authid(id, authid, 31)
    
    new vaultkey
[64]
    new vaultdata[64]
    
    format
(vaultkey, 63, "KMOD_%s", authid)
    format(vaultdata, 63, "%d", knife_model[id])
    set_vaultdata(vaultkey, vaultdata)
}

LoadData(id) 
{ 
    new authid
[32] 
    get_user_authid
(id,authid,31)
    
    new vaultkey
[64], vaultdata[64]
    
    format
(vaultkey, 63, "KMOD_%s", authid)
    get_vaultdata(vaultkey, vaultdata, 63)
    knife_model[id] = str_to_num(vaultdata)
    

Добавил свой нож, но как своему ножу дать такую же способность как у комбата с пониженой гравитацией?
Код: Выделить всё
#include <amxmodx>
#include <amxmisc>
#include <engine> 
#include < hamsandwich >
#include <vault>
#include <fun>
#include <fakemeta>

#define PLUGIN "Knife Mod"
#define VERSION "2.0" 
#define AUTHOR "FReeMan & CaNiBaL"

#define TASK_INTERVAL 4.0  
#define MAX_HEALTH 255 

#pragma tabsize 0

new  knife_grav[33]

new knife_model[33] 
new g_Menu
new grav_knife
[33]

new CVAR_HIGHSPEED
new CVAR_LOWSPEED
new CVAR_MINSPEED
new CVAR_LOWGRAV
new CVAR_NORMGRAV
new CVAR_HEALTH_ADD
new CVAR_HEALTH_MAX
new CVAR_DAMAGE 

new cvar_knife

public plugin_init
() { 
    
    register_plugin
(PLUGIN, VERSION, AUTHOR) 
    
    register_event
("CurWeapon","CurWeapon","be","1=1") 
    register_event
( "Damage", "event_damage", "be" )
    
    g_Menu 
= register_menuid("Knife Mod")
    register_menucmd(g_Menu, 1023, "knifemenu")
    register_forward(FM_EmitSound, "sound_emit")
    
    register_clcmd
("say /knife", "display_knife")
    register_clcmd("knifes", "display_knife")
    
    CVAR_HIGHSPEED 
= register_cvar("km_highspeed","340")
    CVAR_LOWSPEED = register_cvar("km_lowspeed","250")
    CVAR_MINSPEED = register_cvar("km_lowspeed","230")
    CVAR_HEALTH_ADD = register_cvar("km_addhealth", "5")
    CVAR_DAMAGE = register_cvar("km_damage", "4")
    CVAR_HEALTH_MAX = register_cvar("km_maxhealth", "100")
    CVAR_LOWGRAV = register_cvar("km_lowgravity" , "550")
    CVAR_NORMGRAV = get_cvar_pointer("sv_gravity")

    cvar_knife = register_cvar("knife_enable","1")
}
public sound_emit(id, channel, sample[])
{
    if(is_user_alive(id) )
    {
    if (sample[8] == 'k' && sample[9] == 'n' && sample[10] == 'i')
    {
        if(knife_model[id] == 0)
        return FMRES_IGNORED
        if 
(sample[14] == 'h')
        {
                if (sample[17] == 'w')
                {
                if(knife_model[id] == 5)
                emit_sound(id, CHAN_WEAPON, "weapons/knife_sound/knife1/3.wav", random_float(0.5, 1.0), ATTN_NORM, 0, PITCH_NORM)
                if(knife_model[id] == 4)
                emit_sound(id, CHAN_WEAPON, "weapons/knife_sound/knife4/3.wav", random_float(0.5, 1.0), ATTN_NORM, 0, PITCH_NORM)
                if(knife_model[id] == 2)
                emit_sound(id, CHAN_WEAPON, "weapons/knife_sound/knife2/3.wav", random_float(0.5, 1.0), ATTN_NORM, 0, PITCH_NORM)
                if(knife_model[id] == 3)
                emit_sound(id, CHAN_WEAPON, "weapons/knife_sound/knife3/3.wav", random_float(0.5, 1.0), ATTN_NORM, 0, PITCH_NORM)
                if(knife_model[id] == 1)
                emit_sound(id, CHAN_WEAPON, "weapons/knife_sound/knife1/3.wav", random_float(0.5, 1.0), ATTN_NORM, 0, PITCH_NORM)
                }
                else
                
{
                if(knife_model[id] == 5)
                emit_sound(id, CHAN_WEAPON, "weapons/knife_sound/knife1/1.wav", random_float(0.5, 1.0), ATTN_NORM, 0, PITCH_NORM)
                if(knife_model[id] == 4)
                emit_sound(id, CHAN_WEAPON, "weapons/knife_sound/knife4/1.wav", random_float(0.5, 1.0), ATTN_NORM, 0, PITCH_NORM)
                if(knife_model[id] == 2)
                emit_sound(id, CHAN_WEAPON, "weapons/knife_sound/knife2/1.wav", random_float(0.5, 1.0), ATTN_NORM, 0, PITCH_NORM)
                if(knife_model[id] == 3)
                emit_sound(id, CHAN_WEAPON, "weapons/knife_sound/knife3/1.wav", random_float(0.5, 1.0), ATTN_NORM, 0, PITCH_NORM)
                if(knife_model[id] == 1)
                emit_sound(id, CHAN_WEAPON, "weapons/knife_sound/knife1/1.wav", random_float(0.5, 1.0), ATTN_NORM, 0, PITCH_NORM)
                }

        }
        else 
        
{
                if (sample[15] == 'l')
                {
                if(knife_model[id] == 5)
                emit_sound(id, CHAN_WEAPON, "weapons/knife_sound/knife1/4.wav", random_float(0.5, 1.0), ATTN_NORM, 0, PITCH_NORM)
                if(knife_model[id] == 4)
                emit_sound(id, CHAN_WEAPON, "weapons/knife_sound/knife4/4.wav", random_float(0.5, 1.0), ATTN_NORM, 0, PITCH_NORM)
                if(knife_model[id] == 2)
                emit_sound(id, CHAN_WEAPON, "weapons/knife_sound/knife2/4.wav", random_float(0.5, 1.0), ATTN_NORM, 0, PITCH_NORM)
                if(knife_model[id] == 3)
                emit_sound(id, CHAN_WEAPON, "weapons/knife_sound/knife3/4.wav", random_float(0.5, 1.0), ATTN_NORM, 0, PITCH_NORM)
                if(knife_model[id] == 1)
                emit_sound(id, CHAN_WEAPON, "weapons/knife_sound/knife1/4.wav", random_float(0.5, 1.0), ATTN_NORM, 0, PITCH_NORM)
                }
                else if(sample[17] == 'b')
                {
                if(knife_model[id] == 5)
                emit_sound(id, CHAN_WEAPON, "weapons/knife_sound/knife1/2.wav", random_float(0.5, 1.0), ATTN_NORM, 0, PITCH_NORM)
                if(knife_model[id] == 4)
                emit_sound(id, CHAN_WEAPON, "weapons/knife_sound/knife4/2.wav", random_float(0.5, 1.0), ATTN_NORM, 0, PITCH_NORM)
                if(knife_model[id] == 2)
                emit_sound(id, CHAN_WEAPON, "weapons/knife_sound/knife2/2.wav", random_float(0.5, 1.0), ATTN_NORM, 0, PITCH_NORM)
                if(knife_model[id] == 3)
                emit_sound(id, CHAN_WEAPON, "weapons/knife_sound/knife3/2.wav", random_float(0.5, 1.0), ATTN_NORM, 0, PITCH_NORM)
                if(knife_model[id] == 1)
                emit_sound(id, CHAN_WEAPON, "weapons/knife_sound/knife1/2.wav", random_float(0.5, 1.0), ATTN_NORM, 0, PITCH_NORM)
                }
        }
        return FMRES_SUPERCEDE
    
}
    
    
}
    return FMRES_IGNORED
}

public plugin_natives()
{
   register_library("knife")
   register_native("knife_grav", "_grav_knife", 1)
}

public _grav_knife(id, num)
knife_grav[id] = num
    
public plugin_precache
() { 
    precache_model
("models/knife-mod/v_butcher.mdl") 
    precache_model
("models/knife-mod/p_butcher.mdl") 
    precache_model
("models/knife-mod/v_combat_knife.mdl") 
    precache_model
("models/knife-mod/p_combat_knife.mdl") 
    precache_model
("models/knife-mod/v_admin_knife.mdl")
    precache_model("models/knife-mod/p_admin_knife.mdl")
    precache_model("models/knife-mod/v_tixon.mdl")
    precache_model("models/knife-mod/p_tixon.mdl")
    precache_model("models/knife-mod/v_crowbars.mdl")
    precache_model("models/knife-mod/p_crowbars.mdl")
    precache_model("models/knife-mod/v_1.mdl")
    precache_model("models/knife-mod/p_1.mdl")
    precache_model("models/v_knife.mdl") 
    precache_sound
("weapons/knife_sound/knife1/4.wav")
    precache_sound("weapons/knife_sound/knife2/4.wav")
    precache_sound("weapons/knife_sound/knife3/4.wav")
    precache_sound("weapons/knife_sound/knife4/4.wav")
    precache_sound("weapons/knife_sound/current4.wav")
    precache_sound("weapons/knife_sound/current3.wav")
    precache_sound("weapons/knife_sound/current1.wav")
    precache_sound("weapons/knife_sound/knife1/1.wav")
    precache_sound("weapons/knife_sound/knife1/2.wav")
    precache_sound("weapons/knife_sound/knife1/3.wav")
    precache_sound("weapons/knife_sound/knife2/1.wav")
    precache_sound("weapons/knife_sound/knife2/2.wav")
    precache_sound("weapons/knife_sound/knife2/3.wav")
    precache_sound("weapons/knife_sound/knife3/1.wav")
    precache_sound("weapons/knife_sound/knife3/2.wav")
    precache_sound("weapons/knife_sound/knife3/3.wav")
    precache_sound("weapons/knife_sound/knife4/1.wav")
    precache_sound("weapons/knife_sound/knife4/2.wav")
    precache_sound("weapons/knife_sound/knife4/3.wav")

}
 

public Hook_WeaponList
( iPlayer )
{
    engclient_cmd( iPlayer, "weapon_knife" )
    return PLUGIN_HANDLED
}

public display_knife(id) 
{
    if(!(get_pcvar_num(cvar_knife)))
    return PLUGIN_CONTINUE

    new menuBody
[512]
    add(menuBody, 511, "\yВыбирете нож!\w^n^n")
    if(get_user_flags(id) & ADMIN_LEVEL_C)
    {
        add(menuBody, 511, "\r1. \wСерп \d(\rАдмин\d)\w^n")
    }
    else
    
{
        add(menuBody, 511, "\d1. Админский нож \d(\rАдмин\y/\rВИП\d)\w^n")
    }
    add(menuBody, 511, "\r2. \wКросбарс \d(\rНе слышно шагов\d)\w^n")
    add(menuBody, 511, "\r3. \wСтронг \r(Скорость \y+\d)\w^n")
    add(menuBody, 511, "\r4. \wКомбат \d(\rГравитация \y+\d)\w^n")
    add(menuBody, 511, "\r5. \wСтандартный нож \d(\rВозобновление HP \y+\d)\w^n")
    add(menuBody, 511, "\r6. \wСильний \d(\rБольшой урон \y+\d)\w^n^n")
    add(menuBody, 511, "\r7. \wМясной Нож \d(\rГравитация \y+\d)\w^n")

    add(menuBody, 511, "\r0. \wВыход^n")

    new keys = ( 1<<| 1<<| 1<<| 1<<| 1<<| 1<<| 1<<| 1<<)
    show_menu(id, keys, menuBody, -1, "Knife Mod")
    return PLUGIN_HANDLED
}

public knifemenu(id, key) 
{
    switch(key) 
    
{
        case 0: 
        
{
            if(get_user_flags(id) & ADMIN_LEVEL_C)
            {
                SetKnife(id , 4)
                display_knife(id)
            }
            else
            
{
                display_knife(id)
                return PLUGIN_HANDLED
            
}
        }
        case 1: 
        
{
                SetKnife(id , 2)
                display_knife(id)
        }
        case 2: 
        
{
                SetKnife(id , 3)
                display_knife(id)
        }
        case 3: 
        
{
                SetKnife(id , 1)
                display_knife(id)
        }
        case 4: 
        
{
                SetKnife(id , 0)
                display_knife(id)
        }
        case 5:
        {
                SetKnife(id, 5)
                display_knife(id)
        }
        case 6: 
        
{
                SetKnife(id, 6)
                display_knife(id)
        }        
        default
: return PLUGIN_HANDLED
    
}
    SaveData(id)

    if( get_user_weapon ( id ) != CSW_KNIFE ) return PLUGIN_HANDLED;

    ExecuteHamB( Ham_Item_Deploy , get_pdata_cbase( id , 373 ) )

    CurWeapon(id)    
    return PLUGIN_HANDLED
} 

public SetKnife
(id , Knife) {
    knife_model[id] = Knife
    
    new Clip
, Ammo, Weapon = get_user_weapon(id, Clip, Ammo) 
    if 
( Weapon != CSW_KNIFE )
        return PLUGIN_HANDLED
    
    new vModel
[56],pModel[56]
    
    switch
(Knife)
    {
        case 0: {
            format(vModel,55,"models/v_knife.mdl")
            format(pModel,55,"models/p_knife.mdl")
        }
        case 1: {
            format(vModel,55,"models/knife-mod/v_combat_knife.mdl")
            format(pModel,55,"models/knife-mod/p_combat_knife.mdl")
        }
        case 2: {
            format(vModel,55,"models/knife-mod/v_tixon.mdl")
            format(pModel,55,"models/knife-mod/p_tixon.mdl")
        }
        case 3: {
            format(vModel,55,"models/knife-mod/v_crowbars.mdl")
            format(pModel,55,"models/knife-mod/p_crowbars.mdl")
        }
        case 4: {
            format(vModel,55,"models/knife-mod/v_admin_knife.mdl")
            format(pModel,55,"models/knife-mod/p_admin_knife.mdl")
        }
        case 5: {
            format(vModel,55,"models/knife-mod/v_1.mdl")
            format(pModel,55,"models/knife-mod/p_1.mdl")
        }
        case 6: {
            format(vModel,55,"models/knife-mod/v_butcher.mdl")
            format(pModel,55,"models/knife-mod/p_butcher.mdl")
        }            
    
} 
    
    entity_set_string
(id, EV_SZ_viewmodel, vModel)
    entity_set_string(id, EV_SZ_weaponmodel, pModel)
    
    return PLUGIN_HANDLED
;  
}

public event_damage( id ) {
    
    new victim_id 
= id;
    if( !is_user_connected( victim_id ) ) return PLUGIN_CONTINUE
    new dmg_take 
= read_data( 2 );
    new dmgtype = read_data( 3 );
    new Float:multiplier = get_pcvar_float(CVAR_DAMAGE);
    new Float:damage = dmg_take * multiplier;
    new health = get_user_health( victim_id );
    
    new iWeapID
, attacker_id = get_user_attacker( victim_id, iWeapID );
    
    if
( !is_user_connected( attacker_id ) || !is_user_alive( victim_id ) ) {
        return PLUGIN_HANDLED
    
}
    
    if
( iWeapID == CSW_KNIFE && knife_model[attacker_id] == 5  || iWeapID == CSW_KNIFE && knife_model[attacker_id] == 4) {
        
        if
( floatround(damage) >= health ) {
            if( victim_id == attacker_id ) {
                return PLUGIN_CONTINUE
                
}else{
                log_kill( attacker_id, victim_id, "knife", 1 );
            }
            
            return PLUGIN_CONTINUE
            
}else {
            if( victim_id == attacker_id ) return PLUGIN_CONTINUE
            
            fakedamage
( victim_id, "weapon_knife", damage, dmgtype );
        }
    }
    return PLUGIN_CONTINUE
}


public CurWeapon(id)
{
    new Weapon = read_data(2)
    
    if
(knife_model[id] == 4 && Weapon == CSW_KNIFE)
    client_cmd(id,"spk sound/weapons/knife_bublik/current4.wav")

    if(knife_model[id] == 3 && Weapon == CSW_KNIFE)
    client_cmd(id,"spk sound/weapons/knife_bublik/current3.wav")

    if(knife_model[id] == 4 && !(is_user_admin(id)))
    knife_model[id] = 1

    if
(knife_model[id] == 1 && Weapon == CSW_KNIFE)
    client_cmd(id,"spk sound/weapons/knife_bublik/current1.wav")

    if(knife_model[id] == 5 && Weapon == CSW_KNIFE)
    client_cmd(id,"spk sound/weapons/knife_bublik/current3.wav")

    // Set Knife Model
    SetKnife(id, knife_model[id])   
    
    
// Task Options
    
    if
(knife_model[id] == 0 && !task_exists(id) && Weapon == CSW_KNIFE)
        set_task(TASK_INTERVAL , "task_healing",id,_,_,"b")
    else if(task_exists(id))
        remove_task(id)
    
    
// Abilities
    set_user_footsteps(id , ( (knife_model[id] == 2 && Weapon == CSW_KNIFE) ? 1 : 0) )
    

    new Float
:Gravity = ((knife_model[id] == 1 && Weapon == CSW_KNIFE)? get_pcvar_float(CVAR_LOWGRAV) : get_pcvar_float(CVAR_NORMGRAV)) / 800.0
    if
(grav_knife[id] >= 1)
    {
    //
    }
    else
    
{
    set_user_gravity(id , Gravity)
    }
    /*
    something ? ok : else

    ===

    if (something) {
    ok
    } else {
    else
    }
    */

    
    
// Speed
    new Float:Speed
    if
(Weapon != CSW_KNIFE)
        return PLUGIN_CONTINUE
    else if
(knife_model[id] == 3)
        Speed = get_pcvar_float(CVAR_HIGHSPEED)
    else if(knife_model[id] == 2)
        Speed = get_pcvar_float(CVAR_LOWSPEED)
    else if(knife_model[id] == 1)
        Speed = get_pcvar_float(CVAR_LOWSPEED)
    else if(knife_model[id] == 0)
        Speed = get_pcvar_float(CVAR_LOWSPEED)
    else if(knife_model[id] == 5)
        Speed = get_pcvar_float(CVAR_MINSPEED)
    else if(knife_model[id] == 4 && Weapon == CSW_KNIFE)
    {
        Speed = get_pcvar_float(CVAR_HIGHSPEED)
        if(grav_knife[id] >= 1)
        {
        //
        }
        else
        
{
            set_user_gravity(id , 0.6)
            set_user_footsteps(id ,1)
            set_user_maxspeed(id , 450.0)
        }
        return PLUGIN_CONTINUE
    
}
    else
    
{
    
    if
(grav_knife[id] >= 1)
    {
    //
    }
    else
    
{
        set_user_gravity(id , 1.0)
        set_user_footsteps(id ,0)
        set_user_maxspeed(id , 250.0)
    }
    return PLUGIN_CONTINUE
    
}    
    set_user_maxspeed
(id, Speed)
    
    return PLUGIN_HANDLED   
    
}

stock log_kill(killer, victim, weapon[],headshot) {
    user_silentkill( victim );
    
    message_begin
( MSG_ALL, get_user_msgid( "DeathMsg" ), {0,0,0}, 0 );
    write_byte( killer );
    write_byte( victim );
    write_byte( headshot );
    write_string( weapon );
    message_end();
    
    new kfrags 
= get_user_frags( killer );
    set_user_frags( killer, kfrags++ );
    new vfrags = get_user_frags( victim );
    set_user_frags( victim, vfrags++ );
    
    return  PLUGIN_CONTINUE
} 


public task_healing
(id) {  
    new addhealth 
= get_pcvar_num(CVAR_HEALTH_ADD)  
    if 
(!addhealth)
        return  
    
    new maxhealth 
= get_pcvar_num(CVAR_HEALTH_MAX)  
    if 
(maxhealth > MAX_HEALTH) { 
        set_pcvar_num
(CVAR_HEALTH_MAX, MAX_HEALTH)  
        maxhealth 
= MAX_HEALTH 
    
}  
    
    new health 
= get_user_health(id)   
    
    if 
(is_user_alive(id) && (health < maxhealth)) { 
        set_user_health
(id, health + addhealth)
        set_hudmessage(0, 255, 0, -1.0, 0.25, 0, 1.0, 2.0, 0.1, 0.1, 4)
        show_hudmessage(id,"|Восстановление HP|")
        message_begin(MSG_ONE, get_user_msgid("ScreenFade"), {0,0,0}, id)
        write_short(1<<10)
        write_short(1<<10)
        write_short(0x0000)
        write_byte(0)
        write_byte(200)
        write_byte(0)
        write_byte(75)
        message_end()
    }
    
    else 
{
        if (is_user_alive(id) && (health > maxhealth))
            remove_task(id)
    }
}
  

public client_disconnect
(id) {  
    if
(task_exists(id)) remove_task(id)  
}   

public client_authorized
(id)
    {
    LoadData(id)
}

SaveData(id)
{
 
    
    new authid
[32]
    get_user_authid(id, authid, 31)
    
    new vaultkey
[64]
    new vaultdata[64]
    
    format
(vaultkey, 63, "KMOD_%s", authid)
    format(vaultdata, 63, "%d", knife_model[id])
    set_vaultdata(vaultkey, vaultdata)
}

LoadData(id) 
{ 
    new authid
[32] 
    get_user_authid
(id,authid,31)
    
    new vaultkey
[64], vaultdata[64]
    
    format
(vaultkey, 63, "KMOD_%s", authid)
    get_vaultdata(vaultkey, vaultdata, 63)
    knife_model[id] = str_to_num(vaultdata)
    
Аватара пользователя
ArtaKey
 
Сообщения: 8
Зарегистрирован: 28 янв 2022, 02:09
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Языки программирования: Я ничего не знаю

Re: Как изменить гравитацию ножа в Knife-Mod Deathrun

Сообщение [N][E][M][E][C] » 05 май 2022, 10:37

Код: Выделить всё
new Float:Gravity = ((knife_model[id] == 1 || knife_model[id] == 5) ........) 

Если не сделать вторую проверку, то будет стандартная гравитация
Аватара пользователя
[N][E][M][E][C]
Скриптер
 
Сообщения: 505
Зарегистрирован: 14 фев 2021, 10:48
Благодарил (а): 44 раз.
Поблагодарили: 64 раз.
Опыт программирования: Около года
Языки программирования: Нуждаюсь в помощи

Re: Как изменить гравитацию ножа в Knife-Mod Deathrun

Сообщение ArtaKey » 05 май 2022, 14:44

Я извиняюсь но что писать в точках?
Код: Выделить всё
 new Float:Gravity = ((knife_model[id] == || knife_model[id] == 5) ........) && Weapon == CSW_KNIFE)? get_pcvar_float(CVAR_LOWGRAV) : get_pcvar_float(CVAR_NORMGRAV)) / 800.0
Аватара пользователя
ArtaKey
 
Сообщения: 8
Зарегистрирован: 28 янв 2022, 02:09
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Языки программирования: Я ничего не знаю

Re: Как изменить гравитацию ножа в Knife-Mod Deathrun

Сообщение [N][E][M][E][C] » 05 май 2022, 14:54

У тебя есть в функции CurWeapon условие, при котором ты в переменную Float записывать значение гравитации с помощью тернарного условия, допиши там условие
Тебе точки не надо, убери их, раставь где нужно скобки
Тебе нужно только knife_model[id] == 5 добавить
Это если закрыть глаза на существование этого кода))))
Аватара пользователя
[N][E][M][E][C]
Скриптер
 
Сообщения: 505
Зарегистрирован: 14 фев 2021, 10:48
Благодарил (а): 44 раз.
Поблагодарили: 64 раз.
Опыт программирования: Около года
Языки программирования: Нуждаюсь в помощи

Re: Как изменить гравитацию ножа в Knife-Mod Deathrun

Сообщение ArtaKey » 06 май 2022, 14:22

Когда я писал всё что нужно.
Код: Выделить всё
    set_user_footsteps(id , ( (knife_model[id] == 2 && Weapon == CSW_KNIFE) ? 1 : 0) )
    

    new Float
:Gravity = ((knife_model[id] == 1 | | knife_model[id] == 5) && Weapon == CSW_KNIFE)? get_pcvar_float(CVAR_LOWGRAV) : get_pcvar_float(CVAR_NORMGRAV)) / 800.0
    if
(grav_knife[id] >= 1)              
    
{
    //
    }
    else
    
{
    set_user_gravity(id , Gravity)
    

То у меня ошибка компиляций, assumed zero.
Делал так и так, кажись правильно. Но не компилирует хоть как пытался.
Аватара пользователя
ArtaKey
 
Сообщения: 8
Зарегистрирован: 28 янв 2022, 02:09
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Языки программирования: Я ничего не знаю

Re: Как изменить гравитацию ножа в Knife-Mod Deathrun

Сообщение [N][E][M][E][C] » 06 май 2022, 15:33

Первое. Не | | а ||
Второе проверь скобки, и роставь правильно
Аватара пользователя
[N][E][M][E][C]
Скриптер
 
Сообщения: 505
Зарегистрирован: 14 фев 2021, 10:48
Благодарил (а): 44 раз.
Поблагодарили: 64 раз.
Опыт программирования: Около года
Языки программирования: Нуждаюсь в помощи

Re: Как изменить гравитацию ножа в Knife-Mod Deathrun

Сообщение ArtaKey » 07 май 2022, 19:31

Всё считая сделал, и кажись всё зашибись. Но блин
Код: Выделить всё
Строка: (389) : error 001: expected token: ";", but found ")" 
Строка
: (389) : error 001: expected token: ";", but found ")"
Строка: (389) : error 029: invalid expression, assumed zero
Строка
: (389) : error 029: invalid expression, assumed zero
Строка
: (389) : fatal error 107: too many error messages on one line


Прописал, как сказали вот-так
Код: Выделить всё
    new Float:Gravity = ((knife_model[id] == 1 || knife_model[id] == 5)) && Weapon == CSW_KNIFE)? get_pcvar_float(CVAR_LOWGRAV) : get_pcvar_float(CVAR_NORMGRAV)) / 800.0
    if
(grav_knife[id] >= 1


Добавлено спустя 21 минуту 12 секунд:
Я нашёл проблему, двойная скобка в конце. С компилировал и что у комбата была гравитация, теперь сильно повышена не прыгает вовсе. А то что мясному хотел дать, нету.
Аватара пользователя
ArtaKey
 
Сообщения: 8
Зарегистрирован: 28 янв 2022, 02:09
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Языки программирования: Я ничего не знаю

Re: Как изменить гравитацию ножа в Knife-Mod Deathrun

Сообщение [N][E][M][E][C] » 07 май 2022, 23:40

Я вот не понимаю этих манипуляций
Код: Выделить всё
    if(grav_knife[id] >= 1)
    {
    //
    }
    else
    
{
    set_user_gravity(id , Gravity)
    }

Ваще код в топку!!!! Я покажу пример, один из десятков с этого кода
Код: Выделить всё
public SetKnife(id , Knife) {
    knife_model[id] = Knife
    
    new Clip
, Ammo, Weapon = get_user_weapon(id, Clip, Ammo) 
    if 
( Weapon != CSW_KNIFE )
        return PLUGIN_HANDLED
    
    new vModel
[56],pModel[56]
    
    switch
(Knife)
    {
        case 0: {
            format(vModel,55,"models/v_knife.mdl")
            format(pModel,55,"models/p_knife.mdl")
        }
        case 1: {
            format(vModel,55,"models/knife-mod/v_combat_knife.mdl")
            format(pModel,55,"models/knife-mod/p_combat_knife.mdl")
        }
        case 2: {
            format(vModel,55,"models/knife-mod/v_tixon.mdl")
            format(pModel,55,"models/knife-mod/p_tixon.mdl")
        }
        case 3: {
            format(vModel,55,"models/knife-mod/v_crowbars.mdl")
            format(pModel,55,"models/knife-mod/p_crowbars.mdl")
        }
        case 4: {
            format(vModel,55,"models/knife-mod/v_admin_knife.mdl")
            format(pModel,55,"models/knife-mod/p_admin_knife.mdl")
        }
        case 5: {
            format(vModel,55,"models/knife-mod/v_1.mdl")
            format(pModel,55,"models/knife-mod/p_1.mdl")
        }
        case 6: {
            format(vModel,55,"models/knife-mod/v_butcher.mdl")
            format(pModel,55,"models/knife-mod/p_butcher.mdl")
        }            
    
} 
    
    entity_set_string
(id, EV_SZ_viewmodel, vModel)
    entity_set_string(id, EV_SZ_weaponmodel, pModel)
    
    return PLUGIN_HANDLED
;  

==== >>>
Код: Выделить всё
public SetKnife(id, Knife) {
    new Clip, Ammo, Weapon = get_user_weapon(id, Clip, Ammo); 
                           
    if
(Weapon != CSW_KNIFE)
        return;
     
    knife_model
[id] = Knife;       
    
    new const szModel
[][][] = {                 
        
{"models/v_knife.mdl", "models/p_knife.mdl"},   
        
{"models/knife-mod/v_combat_knife.mdl", "models/knife-mod/p_combat_knife.mdl"},
        {"models/knife-mod/v_tixon.mdl", "models/knife-mod/p_tixon.mdl"},
        {"models/knife-mod/v_crowbars.mdl", "models/knife-mod/p_crowbars.mdl"},
        {"models/knife-mod/v_admin_knife.mdl", "models/knife-mod/p_admin_knife.mdl"},
        {"models/knife-mod/v_1.mdl", "models/knife-mod/p_1.mdl"},
        {"models/knife-mod/v_butcher.mdl", "models/knife-mod/p_butcher.mdl"}
    };                             
                                                             
    entity_set_string
(id, EV_SZ_viewmodel, szModel[Knife][0]);
    entity_set_string(id, EV_SZ_weaponmodel, szModel[Knife][1]);
}

одно и тоже
Аватара пользователя
[N][E][M][E][C]
Скриптер
 
Сообщения: 505
Зарегистрирован: 14 фев 2021, 10:48
Благодарил (а): 44 раз.
Поблагодарили: 64 раз.
Опыт программирования: Около года
Языки программирования: Нуждаюсь в помощи

Re: Как изменить гравитацию ножа в Knife-Mod Deathrun

Сообщение ArtaKey » 08 май 2022, 11:01

Я не понял что нужно было сделать, но я скопировал и вставил.
Код: Выделить всё
#include <amxmodx>
#include <amxmisc>
#include <engine> 
#include < hamsandwich >
#include <vault>
#include <fun>
#include <fakemeta>

#define PLUGIN "Knife Mod"
#define VERSION "2.0" 
#define AUTHOR "FReeMan & CaNiBaL"

#define TASK_INTERVAL 4.0  
#define MAX_HEALTH 255 

#pragma tabsize 0

new  knife_grav[33]

new knife_model[33] 
new g_Menu
new grav_knife
[33]

new CVAR_HIGHSPEED
new CVAR_LOWSPEED
new CVAR_MINSPEED
new CVAR_LOWGRAV
new CVAR_NORMGRAV
new CVAR_HEALTH_ADD
new CVAR_HEALTH_MAX
new CVAR_DAMAGE 

new cvar_knife

public plugin_init
() { 
    
    register_plugin
(PLUGIN, VERSION, AUTHOR) 
    
    register_event
("CurWeapon","CurWeapon","be","1=1") 
    register_event
( "Damage", "event_damage", "be" )
    
    g_Menu 
= register_menuid("Knife Mod")
    register_menucmd(g_Menu, 1023, "knifemenu")
    register_forward(FM_EmitSound, "sound_emit")
    
    register_clcmd
("say /knife", "display_knife")
    register_clcmd("knifes", "display_knife")
    
    CVAR_HIGHSPEED 
= register_cvar("km_highspeed","340")
    CVAR_LOWSPEED = register_cvar("km_lowspeed","250")
    CVAR_MINSPEED = register_cvar("km_lowspeed","230")
    CVAR_HEALTH_ADD = register_cvar("km_addhealth", "5")
    CVAR_DAMAGE = register_cvar("km_damage", "4")
    CVAR_HEALTH_MAX = register_cvar("km_maxhealth", "100")
    CVAR_LOWGRAV = register_cvar("km_lowgravity" , "550")
    CVAR_NORMGRAV = get_cvar_pointer("sv_gravity")

    cvar_knife = register_cvar("knife_enable","1")
}
public sound_emit(id, channel, sample[])
{
    if(is_user_alive(id) )
    {
    if (sample[8] == 'k' && sample[9] == 'n' && sample[10] == 'i')
    {
        if(knife_model[id] == 0)
        return FMRES_IGNORED
        if 
(sample[14] == 'h')
        {
                if (sample[17] == 'w')
                {
                if(knife_model[id] == 5)
                emit_sound(id, CHAN_WEAPON, "weapons/knife_sound/knife1/3.wav", random_float(0.5, 1.0), ATTN_NORM, 0, PITCH_NORM)
                if(knife_model[id] == 4)
                emit_sound(id, CHAN_WEAPON, "weapons/knife_sound/knife4/3.wav", random_float(0.5, 1.0), ATTN_NORM, 0, PITCH_NORM)
                if(knife_model[id] == 2)
                emit_sound(id, CHAN_WEAPON, "weapons/knife_sound/knife2/3.wav", random_float(0.5, 1.0), ATTN_NORM, 0, PITCH_NORM)
                if(knife_model[id] == 3)
                emit_sound(id, CHAN_WEAPON, "weapons/knife_sound/knife3/3.wav", random_float(0.5, 1.0), ATTN_NORM, 0, PITCH_NORM)
                if(knife_model[id] == 1)
                emit_sound(id, CHAN_WEAPON, "weapons/knife_sound/knife1/3.wav", random_float(0.5, 1.0), ATTN_NORM, 0, PITCH_NORM)
                }
                else
                
{
                if(knife_model[id] == 5)
                emit_sound(id, CHAN_WEAPON, "weapons/knife_sound/knife1/1.wav", random_float(0.5, 1.0), ATTN_NORM, 0, PITCH_NORM)
                if(knife_model[id] == 4)
                emit_sound(id, CHAN_WEAPON, "weapons/knife_sound/knife4/1.wav", random_float(0.5, 1.0), ATTN_NORM, 0, PITCH_NORM)
                if(knife_model[id] == 2)
                emit_sound(id, CHAN_WEAPON, "weapons/knife_sound/knife2/1.wav", random_float(0.5, 1.0), ATTN_NORM, 0, PITCH_NORM)
                if(knife_model[id] == 3)
                emit_sound(id, CHAN_WEAPON, "weapons/knife_sound/knife3/1.wav", random_float(0.5, 1.0), ATTN_NORM, 0, PITCH_NORM)
                if(knife_model[id] == 1)
                emit_sound(id, CHAN_WEAPON, "weapons/knife_sound/knife1/1.wav", random_float(0.5, 1.0), ATTN_NORM, 0, PITCH_NORM)
                }

        }
        else 
        
{
                if (sample[15] == 'l')
                {
                if(knife_model[id] == 5)
                emit_sound(id, CHAN_WEAPON, "weapons/knife_sound/knife1/4.wav", random_float(0.5, 1.0), ATTN_NORM, 0, PITCH_NORM)
                if(knife_model[id] == 4)
                emit_sound(id, CHAN_WEAPON, "weapons/knife_sound/knife4/4.wav", random_float(0.5, 1.0), ATTN_NORM, 0, PITCH_NORM)
                if(knife_model[id] == 2)
                emit_sound(id, CHAN_WEAPON, "weapons/knife_sound/knife2/4.wav", random_float(0.5, 1.0), ATTN_NORM, 0, PITCH_NORM)
                if(knife_model[id] == 3)
                emit_sound(id, CHAN_WEAPON, "weapons/knife_sound/knife3/4.wav", random_float(0.5, 1.0), ATTN_NORM, 0, PITCH_NORM)
                if(knife_model[id] == 1)
                emit_sound(id, CHAN_WEAPON, "weapons/knife_sound/knife1/4.wav", random_float(0.5, 1.0), ATTN_NORM, 0, PITCH_NORM)
                }
                else if(sample[17] == 'b')
                {
                if(knife_model[id] == 5)
                emit_sound(id, CHAN_WEAPON, "weapons/knife_sound/knife1/2.wav", random_float(0.5, 1.0), ATTN_NORM, 0, PITCH_NORM)
                if(knife_model[id] == 4)
                emit_sound(id, CHAN_WEAPON, "weapons/knife_sound/knife4/2.wav", random_float(0.5, 1.0), ATTN_NORM, 0, PITCH_NORM)
                if(knife_model[id] == 2)
                emit_sound(id, CHAN_WEAPON, "weapons/knife_sound/knife2/2.wav", random_float(0.5, 1.0), ATTN_NORM, 0, PITCH_NORM)
                if(knife_model[id] == 3)
                emit_sound(id, CHAN_WEAPON, "weapons/knife_sound/knife3/2.wav", random_float(0.5, 1.0), ATTN_NORM, 0, PITCH_NORM)
                if(knife_model[id] == 1)
                emit_sound(id, CHAN_WEAPON, "weapons/knife_sound/knife1/2.wav", random_float(0.5, 1.0), ATTN_NORM, 0, PITCH_NORM)
                }
        }
        return FMRES_SUPERCEDE
    
}
    
    
}
    return FMRES_IGNORED
}

public plugin_natives()
{
   register_library("knife")
   register_native("knife_grav", "_grav_knife", 1)
}

public _grav_knife(id, num)
knife_grav[id] = num
    
public plugin_precache
() { 
    precache_model
("models/knife-mod/v_butcher.mdl") 
    precache_model
("models/knife-mod/p_butcher.mdl") 
    precache_model
("models/knife-mod/v_combat_knife.mdl") 
    precache_model
("models/knife-mod/p_combat_knife.mdl") 
    precache_model
("models/knife-mod/v_admin_knife.mdl")
    precache_model("models/knife-mod/p_admin_knife.mdl")
    precache_model("models/knife-mod/v_tixon.mdl")
    precache_model("models/knife-mod/p_tixon.mdl")
    precache_model("models/knife-mod/v_crowbars.mdl")
    precache_model("models/knife-mod/p_crowbars.mdl")
    precache_model("models/knife-mod/v_1.mdl")
    precache_model("models/knife-mod/p_1.mdl")
    precache_model("models/v_knife.mdl") 
    precache_sound
("weapons/knife_sound/knife1/4.wav")
    precache_sound("weapons/knife_sound/knife2/4.wav")
    precache_sound("weapons/knife_sound/knife3/4.wav")
    precache_sound("weapons/knife_sound/knife4/4.wav")
    precache_sound("weapons/knife_sound/current4.wav")
    precache_sound("weapons/knife_sound/current3.wav")
    precache_sound("weapons/knife_sound/current1.wav")
    precache_sound("weapons/knife_sound/knife1/1.wav")
    precache_sound("weapons/knife_sound/knife1/2.wav")
    precache_sound("weapons/knife_sound/knife1/3.wav")
    precache_sound("weapons/knife_sound/knife2/1.wav")
    precache_sound("weapons/knife_sound/knife2/2.wav")
    precache_sound("weapons/knife_sound/knife2/3.wav")
    precache_sound("weapons/knife_sound/knife3/1.wav")
    precache_sound("weapons/knife_sound/knife3/2.wav")
    precache_sound("weapons/knife_sound/knife3/3.wav")
    precache_sound("weapons/knife_sound/knife4/1.wav")
    precache_sound("weapons/knife_sound/knife4/2.wav")
    precache_sound("weapons/knife_sound/knife4/3.wav")

}
 

public Hook_WeaponList
( iPlayer )
{
    engclient_cmd( iPlayer, "weapon_knife" )
    return PLUGIN_HANDLED
}

public display_knife(id) 
{
    if(!(get_pcvar_num(cvar_knife)))
    return PLUGIN_CONTINUE

    new menuBody
[512]
    add(menuBody, 511, "\yВыбирете нож!\w^n^n")
    if(get_user_flags(id) & ADMIN_LEVEL_C)
    {
        add(menuBody, 511, "\r1. \wСерп \d(\rАдмин\d)\w^n")
    }
    else
    
{
        add(menuBody, 511, "\d1. Админский нож \d(\rАдмин\y/\rВИП\d)\w^n")
    }
    add(menuBody, 511, "\r2. \wКросбарс \d(\rНе слышно шагов\d)\w^n")
    add(menuBody, 511, "\r3. \wСтронг \r(Скорость \y+\d)\w^n")
    add(menuBody, 511, "\r4. \wКомбат \d(\rГравитация \y+\d)\w^n")
    add(menuBody, 511, "\r5. \wСтандартный нож \d(\rВозобновление HP \y+\d)\w^n")
    add(menuBody, 511, "\r6. \wСильний \d(\rБольшой урон \y+\d)\w^n^n")
    add(menuBody, 511, "\r7. \wМясной Нож \d(\rГравитация \y+\d)\w^n")

    add(menuBody, 511, "\r0. \wВыход^n")

    new keys = ( 1<<| 1<<| 1<<| 1<<| 1<<| 1<<| 1<<| 1<<)
    show_menu(id, keys, menuBody, -1, "Knife Mod")
    return PLUGIN_HANDLED
}

public knifemenu(id, key) 
{
    switch(key) 
    
{
        case 0: 
        
{
            if(get_user_flags(id) & ADMIN_LEVEL_C)
            {
                SetKnife(id , 4)
                display_knife(id)
            }
            else
            
{
                display_knife(id)
                return PLUGIN_HANDLED
            
}
        }
        case 1: 
        
{
                SetKnife(id , 2)
                display_knife(id)
        }
        case 2: 
        
{
                SetKnife(id , 3)
                display_knife(id)
        }
        case 3: 
        
{
                SetKnife(id , 1)
                display_knife(id)
        }
        case 4: 
        
{
                SetKnife(id , 0)
                display_knife(id)
        }
        case 5:
        {
                SetKnife(id, 5)
                display_knife(id)
        }
        case 6: 
        
{
                SetKnife(id, 6)
                display_knife(id)
        }        
        default
: return PLUGIN_HANDLED
    
}
    SaveData(id)

    if( get_user_weapon ( id ) != CSW_KNIFE ) return PLUGIN_HANDLED;

    ExecuteHamB( Ham_Item_Deploy , get_pdata_cbase( id , 373 ) )

    CurWeapon(id)    
    return PLUGIN_HANDLED
} 

    public SetKnife
(id, Knife) {
        new Clip, Ammo, Weapon = get_user_weapon(id, Clip, Ammo); 
                           
        if
(Weapon != CSW_KNIFE)
            return;
     
        knife_model
[id] = Knife;       
    
        new const szModel
[][][] = {                 
            
{"models/v_knife.mdl", "models/p_knife.mdl"},   
            
{"models/knife-mod/v_combat_knife.mdl", "models/knife-mod/p_combat_knife.mdl"},
            {"models/knife-mod/v_tixon.mdl", "models/knife-mod/p_tixon.mdl"},
            {"models/knife-mod/v_crowbars.mdl", "models/knife-mod/p_crowbars.mdl"},
            {"models/knife-mod/v_admin_knife.mdl", "models/knife-mod/p_admin_knife.mdl"},
            {"models/knife-mod/v_1.mdl", "models/knife-mod/p_1.mdl"},
            {"models/knife-mod/v_butcher.mdl", "models/knife-mod/p_butcher.mdl"}
    };                             
                                                             
    entity_set_string
(id, EV_SZ_viewmodel, szModel[Knife][0]);
    entity_set_string(id, EV_SZ_weaponmodel, szModel[Knife][1]);
    }

public event_damage( id ) {
    
    new victim_id 
= id;
    if( !is_user_connected( victim_id ) ) return PLUGIN_CONTINUE
    new dmg_take 
= read_data( 2 );
    new dmgtype = read_data( 3 );
    new Float:multiplier = get_pcvar_float(CVAR_DAMAGE);
    new Float:damage = dmg_take * multiplier;
    new health = get_user_health( victim_id );
    
    new iWeapID
, attacker_id = get_user_attacker( victim_id, iWeapID );
    
    if
( !is_user_connected( attacker_id ) || !is_user_alive( victim_id ) ) {
        return PLUGIN_HANDLED
    
}
    
    if
( iWeapID == CSW_KNIFE && knife_model[attacker_id] == 5  || iWeapID == CSW_KNIFE && knife_model[attacker_id] == 4) {
        
        if
( floatround(damage) >= health ) {
            if( victim_id == attacker_id ) {
                return PLUGIN_CONTINUE
                
}else{
                log_kill( attacker_id, victim_id, "knife", 1 );
            }
            
            return PLUGIN_CONTINUE
            
}else {
            if( victim_id == attacker_id ) return PLUGIN_CONTINUE
            
            fakedamage
( victim_id, "weapon_knife", damage, dmgtype );
        }
    }
    return PLUGIN_CONTINUE
}


public CurWeapon(id)
{
    new Weapon = read_data(2)
    
    if
(knife_model[id] == 4 && Weapon == CSW_KNIFE)
    client_cmd(id,"spk sound/weapons/knife_bublik/current4.wav")

    if(knife_model[id] == 3 && Weapon == CSW_KNIFE)
    client_cmd(id,"spk sound/weapons/knife_bublik/current3.wav")

    if(knife_model[id] == 4 && !(is_user_admin(id)))
    knife_model[id] = 1

    if
(knife_model[id] == 1 && Weapon == CSW_KNIFE)
    client_cmd(id,"spk sound/weapons/knife_bublik/current1.wav")

    if(knife_model[id] == 5 && Weapon == CSW_KNIFE)
    client_cmd(id,"spk sound/weapons/knife_bublik/current3.wav")

    // Set Knife Model
    SetKnife(id, knife_model[id])   
    
    
// Task Options
    
    if
(knife_model[id] == 0 && !task_exists(id) && Weapon == CSW_KNIFE)
        set_task(TASK_INTERVAL , "task_healing",id,_,_,"b")
    else if(task_exists(id))
        remove_task(id)
    
    
// Abilities
    set_user_footsteps(id , ( (knife_model[id] == 1 && Weapon == CSW_KNIFE) ? 1 : 0) )
    

    new Float
:Gravity = ((knife_model[id] == 1 || knife_model[id] == 5) && Weapon == CSW_KNIFE)? get_pcvar_float(CVAR_LOWGRAV) : get_pcvar_float(CVAR_NORMGRAV) / 800.0
    if
(grav_knife[id] >= 1)
    {
    //
    }
    else
    
{
    set_user_gravity(id , Gravity)
    }
    /*
    something ? ok : else

    ===

    if (something) {
    ok
    } else {
    else
    }
    */

    
    
// Speed
    new Float:Speed
    if
(Weapon != CSW_KNIFE)
        return PLUGIN_CONTINUE
    else if
(knife_model[id] == 3)
        Speed = get_pcvar_float(CVAR_HIGHSPEED)
    else if(knife_model[id] == 2)
        Speed = get_pcvar_float(CVAR_LOWSPEED)
    else if(knife_model[id] == 1)
        Speed = get_pcvar_float(CVAR_LOWSPEED)
    else if(knife_model[id] == 0)
        Speed = get_pcvar_float(CVAR_LOWSPEED)
    else if(knife_model[id] == 5)
        Speed = get_pcvar_float(CVAR_MINSPEED)
    else if(knife_model[id] == 4 && Weapon == CSW_KNIFE)
    {
        Speed = get_pcvar_float(CVAR_HIGHSPEED)
        if(grav_knife[id] >= 1)
        {
        //
        }
        else
        
{
            set_user_gravity(id , 0.6)
            set_user_footsteps(id ,1)
            set_user_maxspeed(id , 450.0)
        }
        return PLUGIN_CONTINUE
    
}
    else
    
{
    
    if
(grav_knife[id] >= 1)
    {
    //
    }
    else
    
{
        set_user_gravity(id , 1.0)
        set_user_footsteps(id ,0)
        set_user_maxspeed(id , 250.0)
    }
    return PLUGIN_CONTINUE
    
}    
    set_user_maxspeed
(id, Speed)
    
    return PLUGIN_HANDLED   
    
}

stock log_kill(killer, victim, weapon[],headshot) {
    user_silentkill( victim );
    
    message_begin
( MSG_ALL, get_user_msgid( "DeathMsg" ), {0,0,0}, 0 );
    write_byte( killer );
    write_byte( victim );
    write_byte( headshot );
    write_string( weapon );
    message_end();
    
    new kfrags 
= get_user_frags( killer );
    set_user_frags( killer, kfrags++ );
    new vfrags = get_user_frags( victim );
    set_user_frags( victim, vfrags++ );
    
    return  PLUGIN_CONTINUE
} 


public task_healing
(id) {  
    new addhealth 
= get_pcvar_num(CVAR_HEALTH_ADD)  
    if 
(!addhealth)
        return  
    
    new maxhealth 
= get_pcvar_num(CVAR_HEALTH_MAX)  
    if 
(maxhealth > MAX_HEALTH) { 
        set_pcvar_num
(CVAR_HEALTH_MAX, MAX_HEALTH)  
        maxhealth 
= MAX_HEALTH 
    
}  
    
    new health 
= get_user_health(id)   
    
    if 
(is_user_alive(id) && (health < maxhealth)) { 
        set_user_health
(id, health + addhealth)
        set_hudmessage(0, 255, 0, -1.0, 0.25, 0, 1.0, 2.0, 0.1, 0.1, 4)
        show_hudmessage(id,"|Восстановление HP|")
        message_begin(MSG_ONE, get_user_msgid("ScreenFade"), {0,0,0}, id)
        write_short(1<<10)
        write_short(1<<10)
        write_short(0x0000)
        write_byte(0)
        write_byte(200)
        write_byte(0)
        write_byte(75)
        message_end()
    }
    
    else 
{
        if (is_user_alive(id) && (health > maxhealth))
            remove_task(id)
    }
}
  

public client_disconnect
(id) {  
    if
(task_exists(id)) remove_task(id)  
}   

public client_authorized
(id)
    {
    LoadData(id)
}

SaveData(id)
{
 
    
    new authid
[32]
    get_user_authid(id, authid, 31)
    
    new vaultkey
[64]
    new vaultdata[64]
    
    format
(vaultkey, 63, "KMOD_%s", authid)
    format(vaultdata, 63, "%d", knife_model[id])
    set_vaultdata(vaultkey, vaultdata)
}

LoadData(id) 
{ 
    new authid
[32] 
    get_user_authid
(id,authid,31)
    
    new vaultkey
[64], vaultdata[64]
    
    format
(vaultkey, 63, "KMOD_%s", authid)
    get_vaultdata(vaultkey, vaultdata, 63)
    knife_model[id] = str_to_num(vaultdata)
    

С компилировал и посмотрел, у меня не прыгает, высокая гравитация похоже на 1000 или больше.Это у ножа combat
Аватара пользователя
ArtaKey
 
Сообщения: 8
Зарегистрирован: 28 янв 2022, 02:09
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Языки программирования: Я ничего не знаю

Re: Как изменить гравитацию ножа в Knife-Mod Deathrun

Сообщение [N][E][M][E][C] » 08 май 2022, 12:01

Да не надо копировать, просто я к тому что это код не нудно использовать
Аватара пользователя
[N][E][M][E][C]
Скриптер
 
Сообщения: 505
Зарегистрирован: 14 фев 2021, 10:48
Благодарил (а): 44 раз.
Поблагодарили: 64 раз.
Опыт программирования: Около года
Языки программирования: Нуждаюсь в помощи

След.

Вернуться в Скриптинг

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

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 6

cron