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

Установить лимит на использование маркера

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

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

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

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

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

Установить лимит на использование маркера

Сообщение Real_man » 26 дек 2016, 11:59

Доброй ночи всем хотел спросить,такая ситуация есть код маркера,после того как используешь весь маркер,то спрайт хука не отображается возможно ли как то поставить лимит на маркер?
что бы при этом хватало на отображения хука
Извините если не внятно объяснил не знаю как толком мысль сформировать

Код: Выделить всё
register_clcmd("+paint", "ClCmd_ConsPaint");
    register_clcmd("-paint", "ClCmd_ConsPaint");
    
    public ClCmd_ConsPaint
(client) {
    if(!IsSetBit(g_iBitUserDuel, client) && g_iDayMode != 3 && IsSetBit(g_iBitUserAlive, client) && g_iChiefId == client) {
        static cmd[2];
        read_argv(0, cmd, 1);

        switch(cmd[0]) {
            case '+': is_drawing[client] = true;
            case '-': is_drawing[client] = false;
        }
    } else return PLUGIN_HANDLED;
    return PLUGIN_HANDLED;
}

public FakeMeta_PreThink(id)
{
    if(prethink_counter[id]++ > 5)
    {
        if(g_iChiefId == id && is_drawing[id] && !is_aiming_at_sky(id))
        {
            static Float:cur_origin[3], Float:distance;

            cur_origin = origin[id];
            
            if
(!is_holding[id])
            {
                fm_get_aim_origin(id, origin[id]);
                move_toward_client(id, origin[id]);
                is_holding[id] = true;
                
                return FMRES_IGNORED
;
            }
            
            fm_get_aim_origin
(id, origin[id]);
            move_toward_client(id, origin[id]);
            
            distance 
= get_distance_f(origin[id], cur_origin);
            
            if
(distance > 2)
            {
                draw_line(origin[id], cur_origin);
            }
        }
        else
        
{
            is_holding[id] = false;
        }
        prethink_counter[id] = 0;
    }
    
    return FMRES_IGNORED
;
}

stock draw_line(Float:origin1[3], Float:origin2[3])
{
    message_begin(MSG_BROADCAST, SVC_TEMPENTITY);
    write_byte(TE_BEAMPOINTS);
    engfunc(EngFunc_WriteCoord, origin1[0]);
    engfunc(EngFunc_WriteCoord, origin1[1]);
    engfunc(EngFunc_WriteCoord, origin1[2]);
    engfunc(EngFunc_WriteCoord, origin2[0]);
    engfunc(EngFunc_WriteCoord, origin2[1]);
    engfunc(EngFunc_WriteCoord, origin2[2]);
    write_short(g_pSpritePaint);
    write_byte(0);
    write_byte(15); 
    write_byte
(255);
    write_byte(100);
    write_byte(0);
    write_byte(255); // R
    write_byte(89); // G
    write_byte(233); // B
    write_byte(255);
    write_byte(0);
    message_end();
}

stock fm_get_aim_origin(index, Float:origin[3])
{
    static Float:start[3], Float:view_ofs[3];
    pev(index, pev_origin, start);
    pev(index, pev_view_ofs, view_ofs);
    xs_vec_add(start, view_ofs, start);
    
    static Float
:dest[3];
    pev(index, pev_v_angle, dest);
    engfunc(EngFunc_MakeVectors, dest);
    global_get(glb_v_forward, dest);
    xs_vec_mul_scalar(dest, 9999.0, dest);
    xs_vec_add(start, dest, dest);
    
    engfunc
(EngFunc_TraceLine, start, dest, 0, index, 0);
    get_tr2(0, TR_vecEndPos, origin);
    
    return 1
;
}

stock move_toward_client(id, Float:origin[3])
{
        
    static Float
:player_origin[3];
    
    pev
(id, pev_origin, player_origin);
    
    origin
[0] += (player_origin[0] > origin[0]) ? 1.0 : -1.0;
    origin[1] += (player_origin[1] > origin[1]) ? 1.0 : -1.0;
    origin[2] += (player_origin[2] > origin[2]) ? 1.0 : -1.0;
}

bool:is_aiming_at_sky(index)
{
    new Float:origin[3];
    fm_get_aim_origin(index, origin);

    return engfunc(EngFunc_PointContents, origin) == CONTENTS_SKY;
Аватара пользователя
Real_man
 
Сообщения: 74
Зарегистрирован: 14 авг 2014, 21:45
Забанен
Благодарил (а): 23 раз.
Поблагодарили: 0 раз.

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

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

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