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

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

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

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

> Правила форума

Этот раздел, как вы могли заметить по названию, предназначен для решения вопросов по поводу уже существующих модов и плагинов.
Пожалуйста, если у вас проблема с написанием плагина, не путайте этот раздел с разделом по скриптингу.
Для поиска плагинов и модов существует соответствующий раздел.

Название темы должно соответствовать содержанию. Темы с названием типа "Помогите", "Вопрос", "парни подскажите..." - будут удалены.
Все темы, не относящиеся к "Вопросам по модам и плагинам", будут удалены или перемещены в соответствующий раздел.

Правила оформления темы:
1. Помимо заголовка не забудьте верно сформулировать свой вопрос.
2. Выложите исходник (в тег кода + ) или ссылку на плагин который вызывает у вас вопросы.
3. Выложите лог с ошибками (если имеется) под спойлер

Хук (Hook)

ChKOChKO
сообщение 16.8.2015, 8:49
Сообщение #1
Стаж: 11 лет

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

Есть хук, в нём ограничение, так вот, как сделать чтобы на некоторых картах ограничения не было?
Cкрытый текст
Код
#include <amxmodx>
#include <amxmisc>
#include <engine>
#include <hamsandwich>

new bool:canusehook[32]
new bool:ishooked[32]
new hookorigin[32][3]
new blockhook[33]                                                                  

new Sbeam

public plugin_init()
{
    register_plugin("Tok","1.1","HuKuTu4")
    
    register_dictionary( "hook.txt" );

    RegisterHam(Ham_Spawn, "player", "Spawn_player", 1)

    register_clcmd("+hook","hook_on")
    register_clcmd("-hook","hook_off")

}

public plugin_precache()
{
    precache_sound("hook/hook.wav")
    Sbeam = precache_model("sprites/hook/hook.spr")
}

public Spawn_player(id)
{
    if(is_user_alive(id) && is_user_connected(id))
    {
        blockhook[id] = 0
    }
}

public client_disconnect(id)
{
    remove_hook(id)
}

public client_putinserver(id)
{
    remove_hook(id)
}


public hook_on(id,level,cid)
{

    if(get_user_flags(id) & ADMIN_LEVEL_G) // Флаг доступа для паутинки. ADMIN_LEVEL_G в users.ini флаг - s
    {
        if(!canusehook[id-1] && !cmd_access(id,level,cid,1))
        {
            return PLUGIN_HANDLED
        }

        if(blockhook[id]<15) //Ограничение
        {
            get_user_origin(id,hookorigin[id-1],3)

            ishooked[id-1] = true
            ++blockhook[id]
            emit_sound(id,CHAN_STATIC,"hook/hook.wav",1.0,ATTN_NORM,0,PITCH_NORM)
            set_task(0.1,"hook_task",id,"",0,"ab")
            hook_task(id)
            ChatColor(id,"^1[^4Паутинка^1] Вы использовали %d раз из 15 !", blockhook[id])
        }else{
            ChatColor(id,"^1[^4Паутинка^1] Вы истратили свой лимит в этом раунде.")
            return PLUGIN_HANDLED
        }
    }else{
        ChatColor(id,"^1[^4Паутинка^1] !yУ !teamВас !yнету паутинки, !gчтобы купить стучи в !teamSKYPE: !g- !yстоимость !team50р/мес")

        return PLUGIN_HANDLED
    }        
    return PLUGIN_HANDLED
}

public is_hooked(id)
{
    return ishooked[id-1]
}

public hook_off(id)
{
    if(get_user_flags(id) & ADMIN_LEVEL_F)
    {
        remove_hook(id)
    }
    else
    {
        return PLUGIN_HANDLED
    }
    
    return PLUGIN_HANDLED
}

public hook_task(id)
{
    if(!is_user_connected(id) || !is_user_alive(id))
    {
        remove_hook(id)
    }
    
    remove_beam(id)
    draw_hook(id)
    
    new origin[3], Float:velocity[3]
    get_user_origin(id,origin)
    new distance = get_distance(hookorigin[id-1],origin)
    if(distance > 25)
    {
        velocity[0] = (hookorigin[id-1][0] - origin[0]) * (2.0 * 300 / distance)
        velocity[1] = (hookorigin[id-1][1] - origin[1]) * (2.0 * 300 / distance)
        velocity[2] = (hookorigin[id-1][2] - origin[2]) * (2.0 * 300 / distance)
        
        entity_set_vector(id,EV_VEC_velocity,velocity)
    }
    else
    {
        entity_set_vector(id,EV_VEC_velocity,Float:{0.0,0.0,0.0})
        remove_hook(id)
    }
}

public draw_hook(id)
{
    message_begin(MSG_BROADCAST,SVC_TEMPENTITY)
    write_byte(1)                // TE_BEAMENTPOINT
    write_short(id)                // entid
    write_coord(hookorigin[id-1][0])    // origin
    write_coord(hookorigin[id-1][1])    // origin
    write_coord(hookorigin[id-1][2])    // origin
    write_short(Sbeam)            // sprite index
    write_byte(0)                // start frame
    write_byte(0)                // framerate
    write_byte(100)                // life
    write_byte(41)                // ширина спрайта
    write_byte(0)                // noise
    if(get_user_team(id) == 1)
    {
        write_byte(192) //R //СЕРЫЙ ЦВЕТ (R, G, B)
        write_byte(192) //G
        write_byte(192) //B
    }
    else
    {
        write_byte(192) //R //СЕРЫЙ ЦВЕТ (R, G, B)
        write_byte(192) //G
        write_byte(192) //B
    }
    write_byte(250)                // brightness
    write_byte(5)                // speed
    message_end()
}

public remove_hook(id)
{
    if(task_exists(id))
    {
        remove_task(id)
    }
    remove_beam(id)
    ishooked[id-1] = false
}

public remove_beam(id)
{
    message_begin(MSG_BROADCAST,SVC_TEMPENTITY)
    write_byte(99)
    write_short(id)
    message_end()
}                  

stock ChatColor(const id, const input[], any:...)
{
        new count = 1, players[32]
        static msg[191]
        vformat(msg, 190, input, 3)
      
        replace_all(msg, 190, "!g", "^4") // Green Color
        replace_all(msg, 190, "!y", "^1") // Default Color
        replace_all(msg, 190, "!team", "^3") // Team Color
        replace_all(msg, 190, "!team2", "^0") // Team2 Color
      
        if (id) players[0] = id; else get_players(players, count, "ch")
        {
                for (new i = 0; i < count; i++)
                {
                        if (is_user_connected(players[i]))
                        {
                                message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("SayText"), _, players[i])
                                write_byte(players[i]);
                                write_string(msg);
                                message_end();
                        }
                }
        }
}


Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   Цитировать сообщение
Статус пользователя sexmachine
сообщение 16.8.2015, 9:17
Сообщение #2


Стаж: 10 лет

Сообщений: 170
Благодарностей: 46
Полезность: < 0

павном цветануть не судьба? cbf1b2bfde1a.gif
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
ChKOChKO
сообщение 16.8.2015, 9:44
Сообщение #3
Стаж: 11 лет

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

Цитата(sexmachine @ 16.8.2015, 15:12) *
павном цветануть не судьба? cbf1b2bfde1a.gif


Забыл. Вот с цветанул.

Cкрытый текст
Код:
Код
#include <amxmodx>
#include <amxmisc>
#include <engine>
#include <hamsandwich>

new bool:canusehook[32]
new bool:ishooked[32]
new hookorigin[32][3]
new blockhook[33]                                                                  

new Sbeam

public plugin_init()
{
    register_plugin("Tok","1.1","HuKuTu4")
    
    register_dictionary( "hook.txt" );

    RegisterHam(Ham_Spawn, "player", "Spawn_player", 1)

    register_clcmd("+hook","hook_on")
    register_clcmd("-hook","hook_off")

}

public plugin_precache()
{
    precache_sound("hook/hook.wav")
    Sbeam = precache_model("sprites/hook/hook.spr")
}

public Spawn_player(id)
{
    if(is_user_alive(id) && is_user_connected(id))
    {
        blockhook[id] = 0
    }
}

public client_disconnect(id)
{
    remove_hook(id)
}

public client_putinserver(id)
{
    remove_hook(id)
}


public hook_on(id,level,cid)
{

    if(get_user_flags(id) & ADMIN_LEVEL_G) // Флаг доступа для паутинки. ADMIN_LEVEL_G в users.ini флаг - s
    {
        if(!canusehook[id-1] && !cmd_access(id,level,cid,1))
        {
            return PLUGIN_HANDLED
        }

        if(blockhook[id]<15) //Ограничение
        {
            get_user_origin(id,hookorigin[id-1],3)

            ishooked[id-1] = true
            ++blockhook[id]
            emit_sound(id,CHAN_STATIC,"hook/hook.wav",1.0,ATTN_NORM,0,PITCH_NORM)
            set_task(0.1,"hook_task",id,"",0,"ab")
            hook_task(id)
            ChatColor(id,"^1[^4Паутинка^1] Вы использовали %d раз из 15 !", blockhook[id])
        }else{
            ChatColor(id,"^1[^4Паутинка^1] Вы истратили свой лимит в этом раунде.")
            return PLUGIN_HANDLED
        }
    }else{
        ChatColor(id,"^1[^4Паутинка^1] !yУ !teamВас !yнету паутинки, !gчтобы купить стучи в !teamSKYPE: !g- !yстоимость !team50р/мес")

        return PLUGIN_HANDLED
    }        
    return PLUGIN_HANDLED
}

public is_hooked(id)
{
    return ishooked[id-1]
}

public hook_off(id)
{
    if(get_user_flags(id) & ADMIN_LEVEL_F)
    {
        remove_hook(id)
    }
    else
    {
        return PLUGIN_HANDLED
    }
    
    return PLUGIN_HANDLED
}

public hook_task(id)
{
    if(!is_user_connected(id) || !is_user_alive(id))
    {
        remove_hook(id)
    }
    
    remove_beam(id)
    draw_hook(id)
    
    new origin[3], Float:velocity[3]
    get_user_origin(id,origin)
    new distance = get_distance(hookorigin[id-1],origin)
    if(distance > 25)
    {
        velocity[0] = (hookorigin[id-1][0] - origin[0]) * (2.0 * 300 / distance)
        velocity[1] = (hookorigin[id-1][1] - origin[1]) * (2.0 * 300 / distance)
        velocity[2] = (hookorigin[id-1][2] - origin[2]) * (2.0 * 300 / distance)
        
        entity_set_vector(id,EV_VEC_velocity,velocity)
    }
    else
    {
        entity_set_vector(id,EV_VEC_velocity,Float:{0.0,0.0,0.0})
        remove_hook(id)
    }
}

public draw_hook(id)
{
    message_begin(MSG_BROADCAST,SVC_TEMPENTITY)
    write_byte(1)                // TE_BEAMENTPOINT
    write_short(id)                // entid
    write_coord(hookorigin[id-1][0])    // origin
    write_coord(hookorigin[id-1][1])    // origin
    write_coord(hookorigin[id-1][2])    // origin
    write_short(Sbeam)            // sprite index
    write_byte(0)                // start frame
    write_byte(0)                // framerate
    write_byte(100)                // life
    write_byte(41)                // ширина спрайта
    write_byte(0)                // noise
    if(get_user_team(id) == 1)
    {
        write_byte(192) //R //СЕРЫЙ ЦВЕТ (R, G, B)
        write_byte(192) //G
        write_byte(192) //B
    }
    else
    {
        write_byte(192) //R //СЕРЫЙ ЦВЕТ (R, G, B)
        write_byte(192) //G
        write_byte(192) //B
    }
    write_byte(250)                // brightness
    write_byte(5)                // speed
    message_end()
}

public remove_hook(id)
{
    if(task_exists(id))
    {
        remove_task(id)
    }
    remove_beam(id)
    ishooked[id-1] = false
}

public remove_beam(id)
{
    message_begin(MSG_BROADCAST,SVC_TEMPENTITY)
    write_byte(99)
    write_short(id)
    message_end()
}                  

stock ChatColor(const id, const input[], any:...)
{
        new count = 1, players[32]
        static msg[191]
        vformat(msg, 190, input, 3)
      
        replace_all(msg, 190, "!g", "^4") // Green Color
        replace_all(msg, 190, "!y", "^1") // Default Color
        replace_all(msg, 190, "!team", "^3") // Team Color
        replace_all(msg, 190, "!team2", "^0") // Team2 Color
      
        if (id) players[0] = id; else get_players(players, count, "ch")
        {
                for (new i = 0; i < count; i++)
                {
                        if (is_user_connected(players[i]))
                        {
                                message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("SayText"), _, players[i])
                                write_byte(players[i]);
                                write_string(msg);
                                message_end();
                        }
                }
        }
}
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Immunity
сообщение 16.8.2015, 10:21
Сообщение #4
Стаж: 11 лет

Сообщений: 444
Благодарностей: 119
Полезность: 139

Код:

<!--c1--><div class="codetop">Код</div><div class="codemain"><!--ec1-->#include <amxmodx>
#include <amxmisc>
#include <engine>
#include <hamsandwich>

new bool:canusehook[32]
new bool:ishooked[32]
new hookorigin[32][3]
new blockhook[33]

new Sbeam

public plugin_init()
{
register_plugin("Tok","1.1","HuKuTu4")

register_dictionary( "hook.txt" );

RegisterHam(Ham_Spawn, "player", "Spawn_player", 1)

register_clcmd("+hook","hook_on")
register_clcmd("-hook","hook_off")

}

public plugin_precache()
{
precache_sound("hook/hook.wav")
Sbeam = precache_model("sprites/hook/hook.spr")
}

public Spawn_player(id)
{
if(is_user_alive(id) && is_user_connected(id))
{
blockhook[id] = 0
}
}

public plugin_cfg()
{
new const szDisableMapTypes[][] = {"35hp_", "ka_"}; // Типы карт, на которых плагин не будет работать
new szMapname[32];
get_mapname(szMapname, charsmax(szMapname));
for(new i; i < sizeof szDisableMapTypes; i++)
if(equali(szMapname, szDisableMapTypes[i], strlen(szDisableMapTypes[i]))) pause("ad");
}

public client_disconnect(id)
{
remove_hook(id)
}

public client_putinserver(id)
{
remove_hook(id)
}


public hook_on(id,level,cid)
{

if(get_user_flags(id) & ADMIN_LEVEL_G) // Флаг доступа для паутинки. ADMIN_LEVEL_G в users.ini флаг - s
{
if(!canusehook[id-1] && !cmd_access(id,level,cid,1))
{
return PLUGIN_HANDLED
}

if(blockhook[id]<15) //Ограничение
{
get_user_origin(id,hookorigin[id-1],3)

ishooked[id-1] = true
++blockhook[id]
emit_sound(id,CHAN_STATIC,"hook/hook.wav",1.0,ATTN_NORM,0,PITCH_NORM)
set_task(0.1,"hook_task",id,"",0,"ab")
hook_task(id)
ChatColor(id,"^1[^4Паутинка^1] Вы использовали %d раз из 15 !", blockhook[id])
}else{
ChatColor(id,"^1[^4Паутинка^1] Вы истратили свой лимит в этом раунде.")
return PLUGIN_HANDLED
}
}else{
ChatColor(id,"^1[^4Паутинка^1] !yУ !teamВас !yнету паутинки, !gчтобы купить стучи в !teamSKYPE: !g- !yстоимость !team50р/мес")

return PLUGIN_HANDLED
}
return PLUGIN_HANDLED
}

public is_hooked(id)
{
return ishooked[id-1]
}

public hook_off(id)
{
if(get_user_flags(id) & ADMIN_LEVEL_F)
{
remove_hook(id)
}
else
{
return PLUGIN_HANDLED
}

return PLUGIN_HANDLED
}

public hook_task(id)
{
if(!is_user_connected(id) || !is_user_alive(id))
{
remove_hook(id)
}

remove_beam(id)
draw_hook(id)

new origin[3], Float:velocity[3]
get_user_origin(id,origin)
new distance = get_distance(hookorigin[id-1],origin)
if(distance > 25)
{
velocity[0] = (hookorigin[id-1][0] - origin[0]) * (2.0 * 300 / distance)
velocity[1] = (hookorigin[id-1][1] - origin[1]) * (2.0 * 300 / distance)
velocity[2] = (hookorigin[id-1][2] - origin[2]) * (2.0 * 300 / distance)

entity_set_vector(id,EV_VEC_velocity,velocity)
}
else
{
entity_set_vector(id,EV_VEC_velocity,Float:{0.0,0.0,0.0})
remove_hook(id)
}
}

public draw_hook(id)
{
message_begin(MSG_BROADCAST,SVC_TEMPENTITY)
write_byte(1) // TE_BEAMENTPOINT
write_short(id) // entid
write_coord(hookorigin[id-1][0]) // origin
write_coord(hookorigin[id-1][1]) // origin
write_coord(hookorigin[id-1][2]) // origin
write_short(Sbeam) // sprite index
write_byte(0) // start frame
write_byte(0) // framerate
write_byte(100) // life
write_byte(41) // ширина спрайта
write_byte(0) // noise
if(get_user_team(id) == 1)
{
write_byte(192) //R //СЕРЫЙ ЦВЕТ (R, G, B)
write_byte(192) //G
write_byte(192) //B
}
else
{
write_byte(192) //R //СЕРЫЙ ЦВЕТ (R, G, B)
write_byte(192) //G
write_byte(192) //B
}
write_byte(250) // brightness
write_byte(5) // speed
message_end()
}

public remove_hook(id)
{
if(task_exists(id))
{
remove_task(id)
}
remove_beam(id)
ishooked[id-1] = false
}

public remove_beam(id)
{
message_begin(MSG_BROADCAST,SVC_TEMPENTITY)
write_byte(99)
write_short(id)
message_end()
}

stock ChatColor(const id, const input[], any:...)
{
new count = 1, players[32]
static msg[191]
vformat(msg, 190, input, 3)

replace_all(msg, 190, "!g", "^4") // Green Color
replace_all(msg, 190, "!y", "^1") // Default Color
replace_all(msg, 190, "!team", "^3") // Team Color
replace_all(msg, 190, "!team2", "^0") // Team2 Color

if (id) players[0] = id; else get_players(players, count, "ch")
{
for (new i = 0; i < count; i++)
{
if (is_user_connected(players[i]))
{
message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("SayText"), _, players[i])
write_byte(players[i]);
write_string(msg);
message_end();
}
}
}
}<!--c2--></div><!--ec2-->

Ну или создаёшь в папке configs .ini файл с названием карты и там пишешь hook.amxx disabled.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
ChKOChKO
сообщение 16.8.2015, 11:28
Сообщение #5
Стаж: 11 лет

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

Если делать "Ну или создаёшь в папке configs .ini файл с названием карты и там пишешь hook.amxx disabled.", это получается он выключает его вообще(плагин), правильно?

Отредактировал: Bloo, - 16.8.2015, 11:35
Причина: Выдано устное предупреждение!
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Bloo
сообщение 16.8.2015, 11:35
Сообщение #6


Стаж: 12 лет

Сообщений: 15547
Благодарностей: 6971
Полезность: 1206

ChKOChKO, Да,отключает на определенной карте.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
ChKOChKO
сообщение 16.8.2015, 12:57
Сообщение #7
Стаж: 11 лет

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

Цитата(Bloo @ 16.8.2015, 17:31) *
ChKOChKO, Да,отключает на определенной карте.

Мне такое не нужно, мне нужно чтобы выключался ограничитель.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя STR@TEG
сообщение 16.8.2015, 13:19
Сообщение #8
Стаж: 16 лет

Сообщений: 4186
Благодарностей: 1763
Полезность: 837

Для тех, кто не понял: хук можно использовать 15 раз за один раунд:
Код:
if(blockhook[id]<15)
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
  Ответить в данную темуНачать новую тему
 
0 пользователей и 1 гостей читают эту тему: