Правила форума Гаранты форума
Размещение рекламы AMX-X компилятор

Здравствуйте, гость Вход | Регистрация

Наши новости:

14-дек
24-апр
10-апр
11-апр

> Правила раздела

Перед созданием новой темы убедитесь, не искал ли кто-нибудь подобный плагин до вас, для этого следует воспользоваться поиском.

Все вновь созданные темы, с названием типа "Помогите найти", "А что это за плагин", "Ищу плагин", "Нужен плагин", "Подскажите пожалуйста название плагина" - будут удалены.
При создании темы постарайтесь максимально понятно сформулировать её заголовок так, чтобы он соответствовал функциям плагина который Вы ищите. В том случае, если Вам не удается сформулировать мысль и правильно расписать всё в теме, воспользуйтесь графическим редактором, к примеру Paint, что бы примерно изобразить функции нужного Вам плагина.

CSDM Classes

Статус пользователя E1zy
сообщение 11.11.2016, 12:31
Сообщение #1
Стаж: 9 лет 6 месяцев

Сообщений: 21
Благодарностей: 1
Полезность: 33

Привет всем! Ищу плагин КСДМ классы игроков. В нём есть 4 класса.
1ый: Вор
2ой: Скользкий
3ий: Целитель
4ый: VIP

P.s качал из интернета, почему-то не работает. Само меню показывает, но ни скорости, ни гравитации нет.
Код скаченного мною плагина

Код
#include <amxmodx>
#include <amxmisc>
#include <hamsandwich>
#include <fakemeta>
#include <fun>
#include <cstrike>

#define ACCESS_VIP ADMIN_LEVEL_H
#define is_user_valid_alive(%1) (1 <= %1 <= g_maxplayers && is_user_alive(%1))
#define RADIUS 400.0

const KEYSMENU = MENU_KEY_1|MENU_KEY_2|MENU_KEY_3|MENU_KEY_4|MENU_KEY_5|MENU_KEY_6|MENU_KEY_7|MEN
U_KEY_8|MENU_KEY_9|MENU_KEY_0

enum
{
    NOSELECT = 0,
    THIEF,
    SLIMY,
    MEDIC,
    VIP
}

new Float:speed_start    =    270.0
new Float:speed_add        =    10.0

new Float:gravity_start    =    0.9
new Float:gravity_add    =    0.12

new Float:dmg_start        =    1.5
new Float:dmg_add        =    0.1

new money_start            =    30
new money_add            =    10

new health_start        =    25
new health_add            =    10

new level_max            =    5
new kills_1st_lvl         =    10
new kills_step             =     15

new g_level[33], g_kills[33]
new Float:lvl_speed[33], Float:lvl_gravity[33], Float:lvl_dmg[33], lvl_money[33], lvl_health[33]
new next_lvl[33]

new g_class[33]

new g_maxplayers, g_msgSayText
new g_wave_sprite

public plugin_init()
{
    register_plugin("CSDM Classes", "1.0", "ill")
    
    register_clcmd("class_menu", "show_class_menu")
    
    register_menu("Class Menu", KEYSMENU, "class_menu")
    
    RegisterHam(Ham_Killed, "player", "fw_Killed")
    RegisterHam(Ham_TakeDamage, "player", "fw_TakeDamage")
    
    register_forward(FM_PlayerPreThink, "fw_PlayerPreThink")
    
    g_maxplayers = get_maxplayers()
    g_msgSayText = get_user_msgid("SayText")
}
public plugin_precache()
    g_wave_sprite = precache_model("sprites/shockwave.spr")
    
public client_connect(id)
{
    reset_level(id)
    
    g_class[id] = random(3)
}

public reset_level(id)
{
    g_kills[id] = 0
    g_level[id] = 0
    lvl_speed[id] = 250.0
    lvl_gravity[id] = 1.0
    lvl_money[id] = 30
    lvl_dmg[id] = 1.5
    lvl_health[id] = 50
    remove_task(id)
    
    next_lvl[id] = kills_1st_lvl
}

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

    set_pev(id, pev_maxspeed, lvl_speed[id])
    set_pev(id, pev_gravity, lvl_gravity[id])
}

public fw_TakeDamage(victim, inflictor, attacker, Float:damage, damage_type)
{
    if(!is_user_connected(victim) || !is_user_connected(attacker))
        return
        
    if(g_class[attacker] == THIEF && get_user_team(victim) != get_user_team(attacker))
    {
        cs_set_user_money(attacker, cs_get_user_money(attacker) + lvl_money[attacker])
        cs_set_user_money(victim, cs_get_user_money(victim) - lvl_money[attacker])
    }
    else if(g_class[attacker] == VIP)
    {
        SetHamParamFloat(4, damage * lvl_dmg[attacker])
    }
}

public fw_Killed(victim, attacker, corpse)
{
    if(!is_user_connected(victim) || !is_user_connected(attacker) || victim == attacker)
        return
    
    if(g_level[attacker] >= level_max)
        return

    g_kills[attacker]++

    if(g_kills[attacker] >= next_lvl[attacker]) {
        next_lvl[attacker] += kills_step
        g_level[attacker]++
        
        colored_print(attacker, "^x01[^x04Информация^x01] Вы достигли^x04 %d ^x01уровня. Следующий через^x04 %d ^x01убийств.", g_level[attacker], next_lvl[attacker])
    
        g_kills[attacker] = 0
        
        switch(g_class[attacker])
        {
            case THIEF:
            {
                lvl_money[attacker] += money_add
            }
            case SLIMY:
            {
                lvl_speed[attacker] += speed_add
                lvl_gravity[attacker] -= gravity_add
            }
            case MEDIC:
            {
                lvl_health[attacker] += health_add
            }
            case VIP:
            {
                lvl_gravity[attacker] -= gravity_add
                lvl_dmg[attacker] += dmg_add
            }
        }
    }
    
}

public show_class_menu(id)
{
    static menu[450], len
    len = 0
    
    len += formatex(menu[len], charsmax(menu) - len, "\yВыберите класс^n^n")
    
    if(g_class[id] == THIEF)
        len += formatex(menu[len], charsmax(menu) - len, "\r1.\d Вор [\rворует деньги\d]^n")
    else                                                                      
        len += formatex(menu[len], charsmax(menu) - len, "\r1.\w Вор [\rворует деньги\w]^n")
    
    if(g_class[id] == SLIMY)
        len += formatex(menu[len], charsmax(menu) - len, "\r2.\d Скользкий [\rскорость/гравити\d]^n")
    else
        len += formatex(menu[len], charsmax(menu) - len, "\r2.\w Скользкий [\rскорость/гравити\w]^n")
        
    if(g_class[id] == MEDIC)    
        len += formatex(menu[len], charsmax(menu) - len, "\r3.\d Целитель [\rлечит игроков\d]^n")
    else
        len += formatex(menu[len], charsmax(menu) - len, "\r3.\w Целитель [\rлечит игроков\w]^n")
    
    if(g_class[id] == VIP || !(get_user_flags(id) & ACCESS_VIP))
        len += formatex(menu[len], charsmax(menu) - len, "\r4.\d VIP [\rурон/гравитация\d]^n")
    else
        len += formatex(menu[len], charsmax(menu) - len, "\r4.\w VIP [\rурон/гравитация\w]^n")
        
    len += formatex(menu[len], charsmax(menu) - len, "^n\r0.\w Выход")
    
    show_menu(id, KEYSMENU, menu, -1, "Class Menu")
}

public class_menu(id, key)
{
    switch (key)
    {
        case 0:
        {
            if(g_class[id] == THIEF)
            {
                show_class_menu(id)
                return
            }
            
            g_class[id] = THIEF
            reset_level(id)
            
            lvl_money[id] = money_start
            
            colored_print(id, "^x01[^x04Информация^x01] Вы выбрали класс: ^x03Вор^x01.")
            colored_print(id, "^x01[^x04Информация^x01] Этот класс ^x04ворует деньги при каждом попадании^x01.")
        }
        case 1:
        {
            if(g_class[id] == SLIMY)
            {
                show_class_menu(id)
                return
            }
            
            g_class[id] = SLIMY
            reset_level(id)
            
            lvl_speed[id] = speed_start
            lvl_gravity[id] = gravity_start
            
            colored_print(id, "^x01[^x04Информация^x01] Вы выбрали класс: ^x03Скользкий^x01.")
            colored_print(id, "^x01[^x04Информация^x01] Этот класс имеет ^x04повышенную скорость и гравитацию^x01.")
        }
        case 2:
        {
            if(g_class[id] == MEDIC)
            {
                show_class_menu(id)
                return
            }
            
            g_class[id] = MEDIC
            reset_level(id)
            
            lvl_health[id] = health_start
            client_print(id, print_chat, "[debug] lvl_health[id] = %d", lvl_health[id])
            set_task(15.0, "healing", id, _, _, "b")
            
            colored_print(id, "^x01[^x04Информация^x01] Вы выбрали класс: ^x03Целитель^x01.")
            colored_print(id, "^x01[^x04Информация^x01] Этот класс может ^x04исцелять себя и союзников которые рядом с вами^x01.")
        }
        case 3:
        {
            if(g_class[id] == VIP)
            {
                show_class_menu(id)
                return
            }
            
            if(!(get_user_flags(id) & ACCESS_VIP))
            {
                show_class_menu(id)    
                colored_print(id, "^x01[^x04Информация^x01] Этот класс только для ^x04VIP клиентов^x01.")
                return
            }
            
            g_class[id] = VIP
            reset_level(id)
            
            lvl_gravity[id] = gravity_start
            lvl_dmg[id] = dmg_start
            
            colored_print(id, "^x01[^x04Информация^x01] Вы выбрали класс: ^x03VIP^x01.")
            colored_print(id, "^x01[^x04Информация^x01] Этот класс имеет ^x04увеличенный урон и гравитацию^x01.")
        }
    }
}

public healing(id)
{
    
    
    if(!is_user_alive(id))
        return
        
    static Float:originF[3], victim = -1
    pev(id, pev_origin, originF)
    
    create_ring(originF, RADIUS, 4, 65, 0, 234, 0)    
    
    while ((victim = engfunc(EngFunc_FindEntityInSphere, victim, originF, RADIUS)) != 0)
    {
        if (!is_user_valid_alive(victim))
            continue;
            
        if(get_user_team(id) != get_user_team(victim))
            continue;
        
        new newhp = get_user_health(victim) + lvl_health[id]
        new limit = 150
        if(newhp < limit)
            set_user_health(victim, newhp)
        else
            set_user_health(victim, limit)
    }
}

stock colored_print( target, const message[],  any:... )
{
    static buffer[ 512 ]

    if( !target )
    {
        static player
        for( player = 1; player <= g_maxplayers; player++ )
        {
            if ( !is_user_connected( player ) )
            continue;

            vformat( buffer, charsmax( buffer ), message, 3 )

            message_begin( MSG_ONE_UNRELIABLE, g_msgSayText, _, player )
            write_byte( player )
            write_string( buffer )
            message_end()
        }
    }

    else
    {
        vformat( buffer, charsmax( buffer ), message, 3 )

        message_begin( MSG_ONE, g_msgSayText, _, target )
        write_byte( target )
        write_string( buffer )
        message_end()
    }
}

create_ring(const Float:flOrigin[3], Float:radius, life, width, r, g, b)
{
    engfunc(EngFunc_MessageBegin, MSG_PVS, SVC_TEMPENTITY, flOrigin, 0)
    write_byte(TE_BEAMCYLINDER) // TE id
    engfunc(EngFunc_WriteCoord, flOrigin[0]) // x
    engfunc(EngFunc_WriteCoord, flOrigin[1]) // y
    engfunc(EngFunc_WriteCoord, flOrigin[2] - 25.0) // z
    engfunc(EngFunc_WriteCoord, flOrigin[0]) // x axis
    engfunc(EngFunc_WriteCoord, flOrigin[1]) // y axis
    engfunc(EngFunc_WriteCoord, flOrigin[2] + radius) // z axis
    write_short(g_wave_sprite) // sprite
    write_byte(0) // startframe
    write_byte(0) // framerate
    write_byte(life) // life
    write_byte(width) // width
    write_byte(0) // noise
    write_byte(r) // red
    write_byte(g) // green
    write_byte(b) // blue
    write_byte(200) // brightness
    write_byte(0) // speed
    message_end()
}

Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   Цитировать сообщение
  Ответить в данную темуНачать новую тему
 
0 пользователей и 1 гостей читают эту тему: