Время действия спрайта

Сообщения
36
Реакции
1
Обратите внимание, если вы хотите заключить сделку с этим пользователем, он заблокирован
Есть событие, которое длится допустим 3 сек. И чтобы спрайт, всегда показывался во время него, но он просто за секунду показывается и исчезает. Возможно ли как-нибудь продлить показ спрайта?
 
Сообщения
3,593
Реакции
1,576
Помог
141 раз(а)
cqkjd, код будет? Или гадать надо?
 
Сообщения
36
Реакции
1
Обратите внимание, если вы хотите заключить сделку с этим пользователем, он заблокирован
Nordic Warrior,
C++:
    static origin[3]
    get_user_origin(pID, origin)
    message_begin(MSG_ALL, SVC_TEMPENTITY, origin)
    write_byte(TE_SPRITE)
    write_coord(origin[0])
    write_coord(origin[1])
    write_coord(origin[2]+45)
    write_short(g_stun_spr)
    write_byte(8)
    write_byte(200)
    message_end();
 
Сообщения
1,082
Реакции
58
Помог
11 раз(а)
Посылать спрайт 3 раза, set_task
 
Сообщения
36
Реакции
1
Обратите внимание, если вы хотите заключить сделку с этим пользователем, он заблокирован
Code_0xABC, имеешь ввиду с помощью таска воспроизводить до конца события?(А без него никак?)
 
Сообщения
1,082
Реакции
58
Помог
11 раз(а)
cqkjd,
Код:
display_sprite(const pPlayer)
    set_task(1.0, "sprite", pPlayer, .flags = "a", .repeat = 3);

public sprite(const pPlayer) {
    static origin[3];
    get_user_origin(pPlayer, origin);

    message_begin(MSG_ALL, SVC_TEMPENTITY, origin);
    write_byte(TE_SPRITE);
    write_coord(origin[0]);
    write_coord(origin[1]);
    write_coord(origin[2]+45);
    write_short(g_stun_spr);
    write_byte(8);
    write_byte(200);
    message_end();
}
Если конечно же твой спрайт показывает 1 секунду
 
Сообщения
3,593
Реакции
1,576
Помог
141 раз(а)
cqkjd, можно создать сущность env_sprite и уничтожить её по истечении срока.
 
  • Нравится
Реакции: Arni
Сообщения
272
Реакции
282
Помог
2 раз(а)
Nordic Warrior, та они пытаются сделать всё посложнее, когда решение с сущностью будет куда проще. :sclerosis:
 
Последнее редактирование:
Сообщения
36
Реакции
1
Обратите внимание, если вы хотите заключить сделку с этим пользователем, он заблокирован
Сообщения
36
Реакции
1
Обратите внимание, если вы хотите заключить сделку с этим пользователем, он заблокирован
Nordic Warrior,работает,только вот спрайт стал в чёрном квадрате, не подскажешь из-за чего?(не совсем в чёрном, слегка прозрачным)
 
Сообщения
3,593
Реакции
1,576
Помог
141 раз(а)
cqkjd, там какой-то определенный тип спрайта вроде нужен, я не помню.
 
Сообщения
494
Реакции
341
Помог
11 раз(а)
cqkjd, играться нужно с этими параметрами:
Код:
set_entvar(iEnt, var_rendermode, kRenderTransAdd);
set_entvar(iEnt, var_renderamt, 100.0);
amxconst.inc:
Код:
/**
 * Rendering modes (i.e. for set_user_rendering())
 */
enum
{
    kRenderNormal = 0,      /* src */
    kRenderTransColor,      /* c*a+dest*(1-a) */
    kRenderTransTexture,    /* src*a+dest*(1-a) */
    kRenderGlow,            /* src*a+dest -- No Z buffer checks */
    kRenderTransAlpha,      /* src*srca+dest*(1-srca) */
    kRenderTransAdd,        /* src*a+dest */
};
Если твой спрайт вообще поддерживает режим. Скинь спрайт. Если поддерживает, скажу какие параметры использовать, если нет, то задам спрайту нужные параметры. Впрочем, можешь вникнуть в эту тему сам.
Там упомянуты 3 типа спрайта, есть ещё 2 типа:
FACING_UPRIGHT – крутится вокруг центра карты относительно камеры игрока.
VP_PARALLEL_ORIENTED – статичный спрайт, который не зависит от положения камеры игрока.
 
  • Нравится
Реакции: Arni
Сообщения
1,559
Реакции
1,566
Помог
2 раз(а)
Самым лучшим ( ну это для меня ) является формат спрайта индексальфа..
Кстате,для его вовсе не нужно в коде задавать значения
Код:
_rendermode
_renderamt
Он сразу без фона ( чёрного ) в игре
 
Сообщения
36
Реакции
1
Обратите внимание, если вы хотите заключить сделку с этим пользователем, он заблокирован
Сообщения
494
Реакции
341
Помог
11 раз(а)
cqkjd, нужно задать эти 2 параметра, чтобы поддерживался render mode спрайта "additive":
Код:
set_entvar(iEnt, var_rendermode, kRenderTransAdd);
set_entvar(iEnt, var_renderamt, 255.0);
 
Сообщения
36
Реакции
1
Обратите внимание, если вы хотите заключить сделку с этим пользователем, он заблокирован
@bizon,не помогло,вот код:
C++:
    new iEnt = rg_create_entity("env_sprite");

    set_entvar(iEnt, var_classname, STUN_CLASSNAME);
    set_entvar(iEnt, var_model, STUN_SPRITE);
    set_entvar(iEnt, var_modelindex, g_IconModelIndex);
    set_entvar(iEnt, var_scale, 0.5);
    set_entvar(iEnt, var_rendermode, kRenderTransAdd);
    set_entvar(iEnt, var_renderamt, 255.0);
    set_entvar(iEnt, var_framerate, 10.0);
    set_entvar(iEnt, var_spawnflags, SF_SPRITE_STARTON);
    set_entvar(iEnt, var_aiment, pID);
    set_entvar(iEnt, var_movetype, MOVETYPE_FOLLOW);
    g_iPlayerIcon[pID] = iEnt;
    dllfunc(DLLFunc_Spawn, iEnt);
В скриптинге всего 5-6 дней. Пока энтити для меня не подвластно). Мб поставил пока не достижимую цель...
11 Фев 2023
Вообще, хочу реализовать механику стана(как в доте например), осталось только спрайт, мне надо чтобы был над головой, ну и работал нормально без чёрных квадратов и т.д
 

Пользователи, просматривающие эту тему

Сейчас на форуме нет ни одного пользователя.
Сверху Снизу