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

[ZP] Addon: Nemesis SuperDeimos: смена клавиши способности  [Решено]

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

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

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

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

[ZP] Addon: Nemesis SuperDeimos: смена клавиши способности

Сообщение Kedrix » 04 авг 2017, 16:02

Привет всем, немогу найти как изменить клавишу способности, способность работает на G, хочу сменить на F но не знаю название клавиши

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

#define PLUGIN "[ZP] Addon: Nemesis SuperDeimos"
#define VERSION "1.0"
#define AUTHOR "Zombie-rus"
 
#define MAX_WEAPONS    32 // HL SDK::dlls/weapons.h

new spr_skill[] = "g_tentacle"
new const light_classname[] = "nst_deimos_skill"

new sprites_exp_index, sprites_trail_index

new g_wait
[33], g_cooldown[33], g_check[33], g_useskill[33], g_msgStatusIcon, g_msgScreenFade, g_msgScreenShake

const WPN_NOT_DROP 
= ((1<<2)|(1<<CSW_HEGRENADE)|(1<<CSW_SMOKEGRENADE)|(1<<CSW_FLASHBANG)|(1<<CSW_KNIFE)|(1<<CSW_C4))

enum (+= 100)
{
    TASK_WAIT = 2000,
    TASK_ATTACK,
    TASK_BOT_USE_SKILL,
    TASK_USE_SKILL,
    TASK_COOLDOWN
}

#define ID_WAIT (taskid - TASK_WAIT)
#define ID_ATTACK (taskid - TASK_ATTACK)
#define ID_BOT_USE_SKILL (taskid - TASK_BOT_USE_SKILL)
#define ID_USE_SKILL (taskid - TASK_USE_SKILL)

new const sprites_exp[] = "sprites/deimosexp.spr"
new const sprites_trail[] = "sprites/trail.spr"

new const sound_skill_start[] = "classBoss/deimos_skill_start.wav"
new const sound_skill_hit[] = "classBoss/deimos_skill_hit.wav"

const skill_dmg = 0
const skill_anim 
= 2
const Float
:skill_time_wait = 9.0

const FFADE_IN 
=         0x0000

public plugin_init
()
{
    register_plugin(PLUGIN, VERSION, AUTHOR)

    g_msgStatusIcon = get_user_msgid("StatusIcon")

    register_logevent("logevent_round_start",2, "1=Round_Start")
    register_event("HLTV", "event_round_start", "a", "1=0", "2=0")
    register_event("DeathMsg", "Death", "a")

    register_forward(FM_CmdStart, "fw_CmdStart")
    register_forward(FM_Touch, "fw_Touch")

    register_clcmd("drop", "use_skill")
    g_msgScreenFade = get_user_msgid("ScreenFade")
    g_msgScreenShake = get_user_msgid("ScreenShake")
}

public plugin_precache()
{
    sprites_exp_index = precache_model(sprites_exp)
    sprites_trail_index = precache_model(sprites_trail)

    precache_sound(sound_skill_start)
    precache_sound(sound_skill_hit)
}

public event_round_start()
{
    for (new id=1; id<33; id++)
    {
        if (!is_user_connected(id)) continue;
        
        reset_value_player
(id)
            
        StatusIcon
(id, spr_skill, 0)
    }
}

public logevent_round_start()
{
    for (new id=1; id<33; id++)
    {
        if (!is_user_connected(id)) continue;

        if (is_user_bot(id))
        {
            if (task_exists(id+TASK_BOT_USE_SKILL)) remove_task(id+TASK_BOT_USE_SKILL)
            set_task(float(random_num(5, 15)), "bot_use_skill", id+TASK_BOT_USE_SKILL)
        }
    }
}

public Death()
{
    new victim = read_data(2) 
    StatusIcon
(victim, spr_skill, 0)
    reset_value_player(victim)
}

public client_connect(id)
{
    reset_value_player(id)
}

public client_disconnect(id)
{
    reset_value_player(id)
}

reset_value_player(id)
{
    if (task_exists(id+TASK_WAIT)) remove_task(id+TASK_WAIT)
    if (task_exists(id+TASK_BOT_USE_SKILL)) remove_task(id+TASK_BOT_USE_SKILL)

    g_wait[id] = 0
    g_check
[id] = 0
    g_useskill
[id] = 0
}

public bot_use_skill(taskid)
{
    new id = ID_BOT_USE_SKILL
    if 
(!is_user_bot(id)) return;

    use_skill(id)
    if (task_exists(taskid)) remove_task(taskid)
    set_task(float(random_num(5,15)), "bot_use_skill", id+TASK_BOT_USE_SKILL)
}

public use_skill(id)
{
    if (!is_user_alive(id)) return PLUGIN_CONTINUE
    
    new health 
= get_user_health(id) - skill_dmg
    if 
(zp_get_user_nemesis(id) && (!g_wait[id]) && (!g_cooldown[id]) && (health>0) && (get_user_weapon(id)==CSW_KNIFE))
    {
        g_useskill[id] = 1

        fm_set_user_health
(id, health)

        new Float:timewait = skill_time_wait
        
        g_wait
[id] = 1
        
        g_cooldown
[id] = 15
        set_task
(1.0, "RemoveCooldown", id+TASK_COOLDOWN, _, _, "a",g_cooldown[id])

        if (task_exists(id+TASK_WAIT))
            remove_task(id+TASK_WAIT)

        set_task(timewait, "RemoveWait", id+TASK_WAIT)

        return PLUGIN_HANDLED
    
}
    
    return PLUGIN_CONTINUE
}


public RemoveCooldown(taskid)
{
    new id = taskid - TASK_COOLDOWN
    
    if
(is_user_alive(id))
    {
        g_cooldown[id]--
        if (g_cooldown[id] == 0)
        {
            client_print(id, print_center, "[ZO] РЎРєРёР»Р» Р±РѕСЃСЃР° РіРѕС‚РѕРІ!")
            g_wait[id] = 0
            remove_task
(id+TASK_COOLDOWN)
        }
        set_hudmessage(200, 100, 0, 0.75, 0.92, 0, 1.0, 1.1, 0.0, 0.0, -1)
        show_hudmessage(id, "Cooldown: %d",g_cooldown[id])
    }else{
        remove_task(id+TASK_COOLDOWN)
    }
}

public task_use_skill(taskid)
{
    new id = ID_USE_SKILL

    play_weapon_anim
(id, 2)

    set_weapons_timeidle(id, skill_time_wait)

    set_player_nextattack(id, 0.5)

    PlayEmitSound(id, sound_skill_start)

    entity_set_int(id, EV_INT_sequence, skill_anim)

    if (task_exists(id+TASK_ATTACK)) remove_task(id+TASK_ATTACK)

    set_task(0.5, "launch_light", id+TASK_ATTACK)
}

public launch_light(taskid)
{
    new id = ID_ATTACK
    if 
(task_exists(id+TASK_ATTACK)) remove_task(id+TASK_ATTACK)
    
    if 
(!is_user_alive(id)) return;

    new Float: fOrigin[3], Float:fAngle[3],Float: fVelocity[3]
    pev(id, pev_origin, fOrigin)
    pev(id, pev_view_ofs, fAngle)
    fm_velocity_by_aim(id, 2.0, fVelocity, fAngle)
    fAngle[0] *= -1.0

    new ent 
= engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, "info_target"))
    set_pev(ent, pev_classname, light_classname)
    engfunc(EngFunc_SetModel, ent, "models/w_hegrenade.mdl")
    set_pev(ent, pev_mins, Float:{-1.0, -1.0, -1.0})
    set_pev(ent, pev_maxs, Float:{1.0, 1.0, 1.0})
    set_pev(ent, pev_origin, fOrigin)
    fOrigin[0] += fVelocity[0]
    fOrigin[1] += fVelocity[1]
    fOrigin[2] += fVelocity[2]
    set_pev(ent, pev_movetype, MOVETYPE_BOUNCE)
    set_pev(ent, pev_gravity, 0.01)
    fVelocity[0] *= 1000
    fVelocity
[1] *= 1000
    fVelocity
[2] *= 1000
    set_pev
(ent, pev_velocity, fVelocity)
    set_pev(ent, pev_owner, id)
    set_pev(ent, pev_angles, fAngle)
    set_pev(ent, pev_solid, SOLID_BBOX)

    fm_set_rendering(ent, kRenderFxGlowShell, 0, 0, 0, kRenderTransAlpha, 0)

    message_begin( MSG_BROADCAST, SVC_TEMPENTITY )
    write_byte(TE_BEAMFOLLOW)
    write_short(ent)                //entity
    write_short(sprites_trail_index)        //model
    write_byte(5)        //10)//life
    write_byte(3)        //5)//width
    write_byte(85)                    //r, hegrenade
    write_byte(107)                    //g, gas-grenade
    write_byte(47)                    //b
    write_byte(200)        //brightness
    message_end()

    return;
}

public fw_Touch(ent, victim)
{
    if (!pev_valid(ent)) return FMRES_IGNORED
    
    new EntClassName
[32]
    entity_get_string(ent, EV_SZ_classname, EntClassName, charsmax(EntClassName))
    
    if 
(equal(EntClassName, light_classname)) 
    
{
        light_exp(ent, victim)
        remove_entity(ent)
        
        return FMRES_IGNORED
    
    
}
    
    return FMRES_IGNORED
}

light_exp(ent, victim)
{
    if (!pev_valid(ent)) return;

    new attacker = pev(ent, pev_owner)
    if (is_user_alive(victim) && !zp_get_user_survivor(victim) && (zp_get_user_nemesis(attacker) != zp_get_user_zombie(victim)) && (zp_get_user_nemesis(attacker) != zp_get_user_nemesis(victim)))
    {
        new wpn, wpnname[32]
        wpn = get_user_weapon(victim)
        if ( wpn < 1 || wpn > MAX_WEAPONS )
        {
            return;
        }
        
        if
( !(WPN_NOT_DROP & (1<<wpn)) && get_weaponname(wpn, wpnname, charsmax(wpnname)) )
        {
            engclient_cmd(victim, "drop", wpnname)
            screen_effects(victim)
        }
    }

    static Float:origin[3];
    pev(ent, pev_origin, origin);
    message_begin(MSG_BROADCAST,SVC_TEMPENTITY); 
    write_byte
(TE_EXPLOSION); // TE_EXPLOSION
    write_coord(floatround(origin[0])); // origin x
    write_coord(floatround(origin[1])); // origin y
    write_coord(floatround(origin[2])); // origin z
    write_short(sprites_exp_index); // sprites
    write_byte(40); // scale in 0.1's
    write_byte(30); // framerate
    write_byte(14); // flags 
    message_end(); // message end

    PlayEmitSound(ent, sound_skill_hit)
}

public RemoveWait(taskid)
{
    new id = ID_WAIT
    g_wait
[id] = 0
    if 
(task_exists(taskid)) remove_task(taskid)
}

public fw_CmdStart(id, uc_handle, seed)
{
    if (!is_user_alive(id)) return FMRES_IGNORED
    
    if 
(zp_get_user_nemesis(id))
    {
        if (g_wait[id] && g_check[id] != 2)
        {
            g_check[id] = 2
            StatusIcon
(id, spr_skill, 2)
        }
        else if (!g_wait[id] && g_check[id] != 1)
        {
            g_check[id] = 1
            StatusIcon
(id, spr_skill, 1)
        }

        if (g_useskill[id])
        {
            set_uc(uc_handle, UC_Buttons, IN_ATTACK2)
            g_useskill[id] = 0
            entity_set_int
(id, EV_INT_sequence, skill_anim)
            
            if 
(task_exists(id+TASK_USE_SKILL)) remove_task(id+TASK_USE_SKILL)
            set_task(0.0, "task_use_skill", id+TASK_USE_SKILL)
        }
    }
    else if (g_check[id])
    {

        g_check[id] = 0
        StatusIcon
(id, spr_skill, 0)
    }

    return FMRES_IGNORED
}

PlayEmitSound(id, const sound[])
{
    emit_sound(id, CHAN_WEAPON, sound, 1.0, ATTN_NORM, 0, PITCH_NORM)
}

StatusIcon(id, sprname[], run)
{
    
    if 
(!is_user_connected(id)) return;
    
    message_begin
(MSG_ONE, g_msgStatusIcon, {0,0,0}, id);
    write_byte(run); // status (0=hide, 1=show, 2=flash)
    write_string(sprname); // sprite name
    message_end();
}

play_weapon_anim(player, anim)
{
    set_pev(player, pev_weaponanim, anim)
    message_begin(MSG_ONE, SVC_WEAPONANIM, {0, 0, 0}, player)
    write_byte(anim)
    write_byte(pev(player, pev_body))
    message_end()
}

fm_velocity_by_aim(iIndex, Float:fDistance, Float:fVelocity[3], Float:fViewAngle[3])
{
    //new Float:fViewAngle[3]
    pev(iIndex, pev_v_angle, fViewAngle)
    fVelocity[0] = floatcos(fViewAngle[1], degrees) * fDistance
    fVelocity
[1] = floatsin(fViewAngle[1], degrees) * fDistance
    fVelocity
[2] = floatcos(fViewAngle[0]+90.0, degrees) * fDistance
    return 1
}

get_weapon_ent(id, weaponid)
{
    static wname[32], weapon_ent
    get_weaponname
(weaponid, wname, charsmax(wname))
    weapon_ent = fm_find_ent_by_owner(-1, wname, id)
    return weapon_ent
}

set_weapons_timeidle(id, Float:timeidle)
{
    new entwpn = get_weapon_ent(id, get_user_weapon(id))
    if (pev_valid(entwpn)) set_pdata_float(entwpn, 48, timeidle+3.0, 4)
}

set_player_nextattack(id, Float:nexttime)
{
    set_pdata_float(id, 83, nexttime, 4)
}


screen_effects(victim)
{
    // Screen Fade
    message_begin(MSG_ONE_UNRELIABLE, g_msgScreenFade, _, victim)
    write_short ( 1<<13 ) // Duration
    write_short ( 1<<14 ) // Hold Time
    write_short ( FFADE_IN ) // Fade type
    write_byte ( random_num ( 50, 200 ) ) // Red amount
    write_byte ( random_num ( 50, 200 ) ) // Green amount
    write_byte ( random_num ( 50, 200 ) ) // Blue amount
    write_byte ( random_num ( 50, 200 ) ) // Alpha
    message_end ( )
    // Screen Shake
    message_begin(MSG_ONE_UNRELIABLE, g_msgScreenShake, _, victim)
    write_short ( 0xFFFF ) // Amplitude
    write_short ( 1<<13 ) // Duration
    write_short ( 0xFFFF ) // Frequency
    message_end ( )

Название темы скорректировано // Subb98
Аватара пользователя
Kedrix
 
Сообщения: 39
Зарегистрирован: 19 июл 2017, 18:22
Благодарил (а): 8 раз.
Поблагодарили: 0 раз.
Опыт программирования: Около 3 месяцев
Языки программирования: Pawn
SourcePawn
C++
Php
Ruby
Python
C#

Re: [ZP] Addon: Nemesis SuperDeimos: смена клавиши способнос

Сообщение Данил Ельцин » 05 авг 2017, 09:10

register_clcmd("drop", "use_skill")

"drop" меняешь на нужное тебе
Аватара пользователя
Данил Ельцин
 
Сообщения: 3
Зарегистрирован: 04 авг 2017, 23:54
Благодарил (а): 0 раз.
Поблагодарили: 1 раз.
Опыт программирования: Меньше недели

Re: [ZP] Addon: Nemesis SuperDeimos: смена клавиши способнос  [Решено]

Сообщение flymic24 » 05 авг 2017, 10:00

Код: Выделить всё
register_clcmd("drop""use_skill"

-->
Код: Выделить всё
register_impulse(100"use_skill"
Аватара пользователя
flymic24
 
Сообщения: 209
Зарегистрирован: 05 окт 2012, 17:29
Откуда: Bryansk
Благодарил (а): 4 раз.
Поблагодарили: 76 раз.
Опыт программирования: Около года
Языки программирования: Counter-Strike 1.6


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

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

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