• Уважаемые пользователи!
    За решением проблем с работой плагинов, компиляцией, падением сервера и прочими обращайтесь в раздел Помощи!
    Данная тема предназначена для обсуждения плагина, его функционала, принципа работы и предложений.

Как прописать определенный флаг на плагин khife_mod

Статус
В этой теме нельзя размещать новые ответы.
Если хотите открыть тему, нажмите кнопку Жалоба в первом сообщении.

Mazau

Участник
Сообщения
15
Реакции
4
Баллы
3
Решение вопросов осуществляется в теме Помощи!
Привет, помогите сделать плагин под определенный флаг

#include <amxmodx>
#include <amxmisc>
#include <engine>
#include <vault>
#include <fun>

#define PLUGIN "Knife Mod"
#define VERSION "1.0"
#define AUTHOR "spunko"

#define TASK_INTERVAL 4.0
#define MAX_HEALTH 255

new knife_model[33]
new g_Menu

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

public plugin_init() {

register_plugin(PLUGIN, VERSION, AUTHOR)

register_event( "Damage", "event_damage", "be" )
register_event("CurWeapon","CurWeapon","be","1=1")

g_Menu = register_menuid("Knife Mod")
register_menucmd(g_Menu, 1023, "knifemenu")

register_clcmd("knife", "display_knife")

CVAR_HIGHSPEED = register_cvar("km_highspeed","340")
CVAR_LOWSPEED = register_cvar("km_lowspeed","170")
CVAR_HEALTH_ADD = register_cvar("km_addhealth", "3")
CVAR_HEALTH_MAX = register_cvar("km_maxhealth", "75")
CVAR_DAMAGE = register_cvar("km_damage", "2")
CVAR_LOWGRAV = register_cvar("km_lowgravity" , "400")
CVAR_NORMGRAV = get_cvar_pointer("sv_gravity")

set_task(480.0, "kmodmsg", 0, _, _, "b")
}

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_machete.mdl")
precache_model("models/knife-mod/p_machete.mdl")
precache_model("models/knife-mod/v_bak.mdl")
precache_model("models/knife-mod/p_bak.mdl")
precache_model("models/knife-mod/v_pocket.mdl")
precache_model("models/knife-mod/p_pocket.mdl")
precache_model("models/v_knife.mdl")
precache_model("models/p_knife.mdl")
}

public display_knife(id) {
new menuBody[512]
add(menuBody, 511, "\rKnife Mod\w^n^n")
add(menuBody, 511, "1. Machete \y(More Damage/Low Speed)\w^n")
add(menuBody, 511, "2. Bak Knife \y(No Footsteps)\w^n")
add(menuBody, 511, "3. Pocket Knife \y(High Speed)\w^n")
add(menuBody, 511, "4. Butcher Knife \y(Low Gravity)\w^n")
add(menuBody, 511, "5. Default Knife \y(Health Regeneration)\w^n^n")
add(menuBody, 511, "0. Exit^n")

new keys = ( 1<<0 | 1<<1 | 1<<2 | 1<<3 | 1<<4 | 1<<9 )
show_menu(id, keys, menuBody, -1, "Knife Mod")
}

public knifemenu(id, key) {
switch(key)
{
case 0: SetKnife(id , 4)
case 1: SetKnife(id , 2)
case 2: SetKnife(id , 3)
case 3: SetKnife(id , 1)
case 4: SetKnife(id , 0)
default: return PLUGIN_HANDLED
}
SaveData(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_butcher.mdl")
format(pModel,55,"models/knife-mod/p_butcher.mdl")
}
case 2: {
format(vModel,55,"models/knife-mod/v_bak.mdl")
format(pModel,55,"models/knife-mod/p_bak.mdl")
}
case 3: {
format(vModel,55,"models/knife-mod/v_pocket.mdl")
format(pModel,55,"models/knife-mod/p_pocket.mdl")
}
case 4: {
format(vModel,55,"models/knife-mod/v_machete.mdl")
format(pModel,55,"models/knife-mod/p_machete.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] == 4 ) {

if( floatround(damage) >= health ) {
if( victim_id == attacker_id ) {
return PLUGIN_CONTINUE
}else{
log_kill( attacker_id, victim_id, "knife", 0 );
}

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)

// 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
set_user_gravity(id , Gravity)

// Speed
new Float:Speed
if(Weapon != CSW_KNIFE || knife_model[id] < 3)
return PLUGIN_CONTINUE
else if(knife_model[id] == 3)
Speed = get_pcvar_float(CVAR_HIGHSPEED)
else if(knife_model[id] == 4)
Speed = get_pcvar_float(CVAR_LOWSPEED)

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,"<< !!HEAL IN PROGRESS!! >>")
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 kmodmsg() {

client_print(0,print_chat,"[AMXX] Type /knife to change your knife skins")
}

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)

}
/* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
*{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1033\\ f0\\ fs16 \n\\ par }
*/
 
Mazau,
C++:
#include <amxmodx>
#include <amxmisc>
#include <engine>
#include <vault>
#include <fun>

#define PLUGIN "Knife Mod"
#define VERSION "1.0"
#define AUTHOR "spunko"

#define TASK_INTERVAL 4.0
#define MAX_HEALTH 255

#define FLAG_ACCESS ADMIN_LEVEL_H    // Флаг доступа для меню. (На данный момент флаг "t")

new knife_model[33]
new g_Menu

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

public plugin_init() {

    register_plugin(PLUGIN, VERSION, AUTHOR)

    register_event( "Damage", "event_damage", "be" )
    register_event("CurWeapon","CurWeapon","be","1=1")

    g_Menu = register_menuid("Knife Mod")
    register_menucmd(g_Menu, 1023, "knifemenu")

    register_clcmd("knife", "display_knife")

    CVAR_HIGHSPEED = register_cvar("km_highspeed","340")
    CVAR_LOWSPEED = register_cvar("km_lowspeed","170")
    CVAR_HEALTH_ADD = register_cvar("km_addhealth", "3")
    CVAR_HEALTH_MAX = register_cvar("km_maxhealth", "75")
    CVAR_DAMAGE = register_cvar("km_damage", "2")
    CVAR_LOWGRAV = register_cvar("km_lowgravity" , "400")
    CVAR_NORMGRAV = get_cvar_pointer("sv_gravity")

    set_task(480.0, "kmodmsg", 0, _, _, "b")
}

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_machete.mdl")
    precache_model("models/knife-mod/p_machete.mdl")
    precache_model("models/knife-mod/v_bak.mdl")
    precache_model("models/knife-mod/p_bak.mdl")
    precache_model("models/knife-mod/v_pocket.mdl")
    precache_model("models/knife-mod/p_pocket.mdl")
    precache_model("models/v_knife.mdl")
    precache_model("models/p_knife.mdl")
}

public display_knife(id) {
    if(get_user_flags(id) & FLAG_ACCESS)
    {
        new menuBody[512]
        add(menuBody, 511, "\rKnife Mod\w^n^n")
        add(menuBody, 511, "1. Machete \y(More Damage/Low Speed)\w^n")
        add(menuBody, 511, "2. Bak Knife \y(No Footsteps)\w^n")
        add(menuBody, 511, "3. Pocket Knife \y(High Speed)\w^n")
        add(menuBody, 511, "4. Butcher Knife \y(Low Gravity)\w^n")
        add(menuBody, 511, "5. Default Knife \y(Health Regeneration)\w^n^n")
        add(menuBody, 511, "0. Exit^n")

        new keys = ( 1<<0 | 1<<1 | 1<<2 | 1<<3 | 1<<4 | 1<<9 )
        show_menu(id, keys, menuBody, -1, "Knife Mod")
    } else {
        client_print_color(id, 0, "^3[^4Knife^3] ^1У Вас нет доступа к данному меню.")
    }
}

public knifemenu(id, key) {
    switch(key)
    {
    case 0: SetKnife(id , 4)
    case 1: SetKnife(id , 2)
    case 2: SetKnife(id , 3)
    case 3: SetKnife(id , 1)
    case 4: SetKnife(id , 0)
    default: return PLUGIN_HANDLED
    }
    SaveData(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_butcher.mdl")
            format(pModel,55,"models/knife-mod/p_butcher.mdl")
        }
    case 2: {
            format(vModel,55,"models/knife-mod/v_bak.mdl")
            format(pModel,55,"models/knife-mod/p_bak.mdl")
        }
    case 3: {
            format(vModel,55,"models/knife-mod/v_pocket.mdl")
            format(pModel,55,"models/knife-mod/p_pocket.mdl")
        }
    case 4: {
            format(vModel,55,"models/knife-mod/v_machete.mdl")
            format(pModel,55,"models/knife-mod/p_machete.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] == 4 ) {

        if( floatround(damage) >= health ) {
            if( victim_id == attacker_id ) {
                return PLUGIN_CONTINUE
            }else{
                log_kill( attacker_id, victim_id, "knife", 0 );
            }

            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)

    // 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
    set_user_gravity(id , Gravity)

    // Speed
    new Float:Speed
    if(Weapon != CSW_KNIFE || knife_model[id] < 3)
    return PLUGIN_CONTINUE
    else if(knife_model[id] == 3)
    Speed = get_pcvar_float(CVAR_HIGHSPEED)
    else if(knife_model[id] == 4)
    Speed = get_pcvar_float(CVAR_LOWSPEED)

    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,"<< !!HEAL IN PROGRESS!! >>")
        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 kmodmsg() {

    client_print(0,print_chat,"[AMXX] Type /knife to change your knife skins")
}

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)

}
/* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
*{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1033\\ f0\\ fs16 \n\\ par }
*/
 
Mazau,
C++:
#include <amxmodx>
#include <amxmisc>
#include <engine>
#include <vault>
#include <fun>

#define PLUGIN "Knife Mod"
#define VERSION "1.0"
#define AUTHOR "spunko"

#define TASK_INTERVAL 4.0
#define MAX_HEALTH 255

#define FLAG_ACCESS ADMIN_LEVEL_H    // Флаг доступа для меню. (На данный момент флаг "t")

new knife_model[33]
new g_Menu

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

public plugin_init() {

    register_plugin(PLUGIN, VERSION, AUTHOR)

    register_event( "Damage", "event_damage", "be" )
    register_event("CurWeapon","CurWeapon","be","1=1")

    g_Menu = register_menuid("Knife Mod")
    register_menucmd(g_Menu, 1023, "knifemenu")

    register_clcmd("knife", "display_knife")

    CVAR_HIGHSPEED = register_cvar("km_highspeed","340")
    CVAR_LOWSPEED = register_cvar("km_lowspeed","170")
    CVAR_HEALTH_ADD = register_cvar("km_addhealth", "3")
    CVAR_HEALTH_MAX = register_cvar("km_maxhealth", "75")
    CVAR_DAMAGE = register_cvar("km_damage", "2")
    CVAR_LOWGRAV = register_cvar("km_lowgravity" , "400")
    CVAR_NORMGRAV = get_cvar_pointer("sv_gravity")

    set_task(480.0, "kmodmsg", 0, _, _, "b")
}

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_machete.mdl")
    precache_model("models/knife-mod/p_machete.mdl")
    precache_model("models/knife-mod/v_bak.mdl")
    precache_model("models/knife-mod/p_bak.mdl")
    precache_model("models/knife-mod/v_pocket.mdl")
    precache_model("models/knife-mod/p_pocket.mdl")
    precache_model("models/v_knife.mdl")
    precache_model("models/p_knife.mdl")
}

public display_knife(id) {
    if(get_user_flags(id) & FLAG_ACCESS)
    {
        new menuBody[512]
        add(menuBody, 511, "\rKnife Mod\w^n^n")
        add(menuBody, 511, "1. Machete \y(More Damage/Low Speed)\w^n")
        add(menuBody, 511, "2. Bak Knife \y(No Footsteps)\w^n")
        add(menuBody, 511, "3. Pocket Knife \y(High Speed)\w^n")
        add(menuBody, 511, "4. Butcher Knife \y(Low Gravity)\w^n")
        add(menuBody, 511, "5. Default Knife \y(Health Regeneration)\w^n^n")
        add(menuBody, 511, "0. Exit^n")

        new keys = ( 1<<0 | 1<<1 | 1<<2 | 1<<3 | 1<<4 | 1<<9 )
        show_menu(id, keys, menuBody, -1, "Knife Mod")
    } else {
        client_print_color(id, 0, "^3[^4Knife^3] ^1У Вас нет доступа к данному меню.")
    }
}

public knifemenu(id, key) {
    switch(key)
    {
    case 0: SetKnife(id , 4)
    case 1: SetKnife(id , 2)
    case 2: SetKnife(id , 3)
    case 3: SetKnife(id , 1)
    case 4: SetKnife(id , 0)
    default: return PLUGIN_HANDLED
    }
    SaveData(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_butcher.mdl")
            format(pModel,55,"models/knife-mod/p_butcher.mdl")
        }
    case 2: {
            format(vModel,55,"models/knife-mod/v_bak.mdl")
            format(pModel,55,"models/knife-mod/p_bak.mdl")
        }
    case 3: {
            format(vModel,55,"models/knife-mod/v_pocket.mdl")
            format(pModel,55,"models/knife-mod/p_pocket.mdl")
        }
    case 4: {
            format(vModel,55,"models/knife-mod/v_machete.mdl")
            format(pModel,55,"models/knife-mod/p_machete.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] == 4 ) {

        if( floatround(damage) >= health ) {
            if( victim_id == attacker_id ) {
                return PLUGIN_CONTINUE
            }else{
                log_kill( attacker_id, victim_id, "knife", 0 );
            }

            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)

    // 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
    set_user_gravity(id , Gravity)

    // Speed
    new Float:Speed
    if(Weapon != CSW_KNIFE || knife_model[id] < 3)
    return PLUGIN_CONTINUE
    else if(knife_model[id] == 3)
    Speed = get_pcvar_float(CVAR_HIGHSPEED)
    else if(knife_model[id] == 4)
    Speed = get_pcvar_float(CVAR_LOWSPEED)

    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,"<< !!HEAL IN PROGRESS!! >>")
        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 kmodmsg() {

    client_print(0,print_chat,"[AMXX] Type /knife to change your knife skins")
}

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)

}
/* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
*{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1033\\ f0\\ fs16 \n\\ par }
*/
спасибо, проверю отпишусь)
 
Статус
В этой теме нельзя размещать новые ответы.
Если хотите открыть тему, нажмите кнопку Жалоба в первом сообщении.
Назад
Сверху