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

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

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

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

Не исчезает StatusIcon после захвата флага игроком

Статус пользователя jaxix
сообщение 9.9.2016, 9:11
Сообщение #1
Стаж: 9 лет

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

Cкрытый текст

Ребята помогите исправить в плагине небольшой косяк,когда захватываешь флаг мигает в левом углу иконка dmg_shock но после того как флаг захвачен она должна исчезать но на самом деле она так и продолжает мигать пока не произойдет килл.Сам исправить не магу так как нету не знания не опыта...
Спасибо за внимание ))

Код:
Код
#include <amxmodx>
#include <fakemeta>
#include <engine>
#include dm_chat

native dm_set_user_money(id, set)
native dm_get_user_money(id)
native privilege_get(id)

#define Model_Flag "models/test/flag.mdl"

new g_iAllocInfoTarget, g_iAllocInfoTarget2
new g_szConfigFile[128];

new g_CT_Flags, g_T_Flags

new g_iCvar[5]

public plugin_init()
{
    register_clcmd("say !2", "clcmd_test")
    
    register_touch("Flag_Trigger", "player", "touch_flag")
    
    g_iCvar[0]=register_cvar("f_time_reward", "60")
    g_iCvar[1]=register_cvar("f_reward", "200")
    g_iCvar[2]=register_cvar("f_time_capture", "20")
    
    
    set_task(get_pcvar_float(g_iCvar[0]), "Task_Reward", 7738,_,_,"b")
}

public plugin_precache()
{
    precache_model(Model_Flag)
}

public Task_Reward()
{
    new id, reward=get_pcvar_num(g_iCvar[1])
    for (id = 0; id <= 32; id++)
    {
        if(!is_user_connected(id))continue
        reward=get_pcvar_num(g_iCvar[1])
        
        if(fm_cs_get_user_team(id)==2&&g_CT_Flags)
        {
            reward*=g_CT_Flags
            dm_set_user_money(id, dm_get_user_money(id)+reward)
        }
        else if(fm_cs_get_user_team(id)==1&&g_T_Flags)
        {
            reward*=g_T_Flags
            dm_set_user_money(id, dm_get_user_money(id)+reward)
        }
    }
}

public clcmd_test(id)
{
    if(privilege_get(id)!=3) return
    new Float:origin[3]
    pev(id, pev_origin, origin)
    origin[2]-=7.0
    new ent=spawn_flag(origin, "Новое место")
    Save_Flags(ent)
}

public plugin_cfg()
{
    g_iAllocInfoTarget = engfunc(EngFunc_AllocString, "cycler_sprite")
    g_iAllocInfoTarget2 = engfunc(EngFunc_AllocString, "trigger_multiple")
    
    new file[128]; get_localinfo("amxx_configsdir",file,63)
    format(file, 127, "%s/test_cvars/flags.cfg", file)
    if(file_exists(file)) server_cmd("exec %s", file), server_exec()
    
    load_flags()
}

public load_flags()
{
    new szMapName[32]
    get_mapname(szMapName, 31)
    strtolower(szMapName)
    
    formatex(g_szConfigFile, 127, "addons/amxmodx/configs/flags")
    
    if( !dir_exists(g_szConfigFile))
    {
        mkdir(g_szConfigFile)
        format(g_szConfigFile, 127, "%s/%s.txt", g_szConfigFile, szMapName )
        return
    }
    
    format(g_szConfigFile, 127, "%s/%s.txt", g_szConfigFile, szMapName)
    if(!file_exists(g_szConfigFile))
    {
        fopen(g_szConfigFile, "at")
        return
    }
    
    new iFile = fopen( g_szConfigFile, "rt" )
    if(!iFile) return
    
    new x[16], y[16], z[16], szDesc[32], szData[charsmax(x) + charsmax(y) + charsmax(z) + charsmax(szDesc)]
    
    new Float:vOrigin[3]
    
    while(!feof(iFile))
    {
        fgets(iFile, szData, charsmax(szData))
        trim(szData)
        
        if(!szData[0]) continue;
        
        parse(szData, x, 15, y, 15, z, 15, szDesc, 31)
        
        vOrigin[0] = str_to_float(x)
        vOrigin[1] = str_to_float(y)
        vOrigin[2] = str_to_float(z)
        
        spawn_flag(vOrigin, szDesc)
    }
    
    fclose( iFile )
}

Save_Flags(ent)
{
    new iFile = fopen(g_szConfigFile, "at")
    
    if(!iFile) return
    
    new Float:vOrigin[3]
    pev(ent, pev_origin, vOrigin)

    fprintf(iFile, "%f %f %f ^"Новое место^"^n", vOrigin[0], vOrigin[1], vOrigin[2])
    fclose(iFile)
}

public spawn_flag(const Float:vOrigin[3], const Desc[])
{
    new ent = engfunc(EngFunc_CreateNamedEntity, g_iAllocInfoTarget);
    
    if(!ent)return 0
    
    engfunc(EngFunc_SetOrigin, ent, vOrigin)
    
    entity_set_string(ent, EV_SZ_classname, "Flag_Ent")
    
    engfunc(EngFunc_SetModel, ent, Model_Flag)
    
    entity_set_size(ent, Float: {0.0, 0.0, 0.0}, Float: {0.0, 0.0, 0.0})
    
    entity_set_float(ent, EV_FL_framerate, 1.0)
    entity_set_int(ent, EV_INT_sequence, 0)
        entity_set_float(ent, EV_FL_animtime, halflife_time())
        set_pev(ent, pev_body, 0)
        
        entity_set_string(ent, EV_SZ_targetname, Desc)
        
        new entity = engfunc(EngFunc_CreateNamedEntity, g_iAllocInfoTarget2)
    
    if(!entity)return 0
    
    engfunc(EngFunc_SetOrigin, entity, vOrigin)
    
    entity_set_string(entity, EV_SZ_classname, "Flag_Trigger")
    
    entity_set_size(entity, Float: {-15.0, -15.0, 0.0}, Float: {15.0, 15.0, 64.0})
        
        entity_set_int(entity, EV_INT_solid, SOLID_TRIGGER)
        entity_set_int(entity, EV_INT_movetype, MOVETYPE_FLY)
    
    set_pev(entity, pev_euser1, ent)
    
    return ent
}
public touch_flag(entity, id)
{
    new ent=pev(entity, pev_euser1)
    
    if(fm_cs_get_user_team(id)==pev(ent, pev_body))return
    
    if(pev(ent, pev_iuser1))return
    
    message_begin(MSG_ONE,get_user_msgid("StatusIcon"),_,id)
    write_byte(2)
    write_string("dmg_shock")
    write_byte(20)
    write_byte(20)
    write_byte(240)
    message_end()
    
    set_pev(ent, pev_iuser1, get_pcvar_num(g_iCvar[2]))
    
    message_begin(MSG_ONE, 108, _, id)
    write_byte(get_pcvar_num(g_iCvar[2]))
    write_byte(0)
    message_end()
    
    new info[2]
    info[0] = ent
    info[1] = id
    
    set_task(1.0, "flag_refresh", ent+636, info, 2, "b")
}

public flag_refresh(const info[])
{
    new ent=info[0]
    new id=info[1]
    
    if(!is_user_connected(id)){
        remove_task(ent+636)
        set_pev(ent, pev_iuser1, 0)
        return
    }
    
    new Float:flOrigin[3], Float:flOrigin2[3]
    pev(id, pev_origin, flOrigin)
    pev(ent, pev_origin, flOrigin2)
        
    new Float:flDistance = get_distance_f(flOrigin, flOrigin2)
    
    if(flDistance>80.0||!is_user_alive(id)){
        message_begin(MSG_ONE, 108, _, id)
        write_byte(0)
        write_byte(0)
        message_end()
        
        message_begin(MSG_ONE,get_user_msgid("StatusIcon"),_,id)
        write_byte(0)
        write_string("dmg_shock")
        write_byte(20)
        write_byte(20)
        write_byte(240)
        message_end()
        
        remove_task(ent+636)
        set_pev(ent, pev_iuser1, 0)
        return
    }
    
    set_pev(ent, pev_iuser1, pev(ent, pev_iuser1)-1)
    
    if(!pev(ent, pev_iuser1)){
        new szDesc[32]
        pev(ent, pev_targetname, szDesc, charsmax(szDesc))
        
        if(fm_cs_get_user_team(id)==2){
            if(pev(ent, pev_body))g_T_Flags--
            g_CT_Flags++
        }else{
            g_T_Flags++
            if(pev(ent, pev_body))g_CT_Flags--
        }
        
        set_pev(ent, pev_body, fm_cs_get_user_team(id))
        
        for(new i=0;i<33;i++)
        {
            if(!is_user_connected(i)) continue
            if(i==id) colored_print(i, "!gВы!t захватили флаг !g(%s)", szDesc)
            else colored_print(i, "!g%s!t захватили флаг !g(%s)", fm_cs_get_user_team(id)==2?"Контр Террористы":"Террористы", szDesc)
        }
        
        remove_task(ent+636)
    }
}

stock fm_cs_get_user_team(id)
{
    if (pev_valid(id) != 2) return 0
    
    return get_pdata_int(id, 114, 5)
}


test_flags.sma

Отредактировал: iShot, - 9.9.2016, 10:06
Причина: скриншоты в спойлер
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   Цитировать сообщение
Статус пользователя Unknown
сообщение 9.9.2016, 10:16
Сообщение #2
Стаж: 10 лет

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

все время до захвата мигает или должен мигать несколько секунд когда захватываешь флаг


Аткажитесъ от плагенов бес исходника.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя jaxix
сообщение 9.9.2016, 10:32
Сообщение #3
Стаж: 9 лет

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

Цитата(Unknown @ 9.9.2016, 19:16) *
все время до захвата мигает или должен мигать несколько секунд когда захватываешь флаг

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