Анимация спрайта на ентити

Статус
В этой теме нельзя размещать новые ответы.

ArKaNeMaN

Квалифицированный специалист по VipModular
Сообщения
433
Реакции
293
Помог
5 раз(а)
Люди добрые, как проигрывать анимацию спрайта у ентити?

И вообще... Где найти хотя бы краткое описание pev_ параметров?
 
Сообщения
1,698
Реакции
1,510
Помог
26 раз(а)
C++:
typedef struct entvars_s
{
    string_t classname;
    string_t globalname;

    Vector origin;
    Vector oldorigin;
    Vector velocity;
    Vector basevelocity;
    Vector clbasevelocity;        // Base velocity that was passed in to server physics so
                    // client can predict conveyors correctly.  Server zeroes it, so we need to store here, too.
    Vector movedir;
    Vector angles;            // Model angles
    Vector avelocity;        // angle velocity (degrees per second)
    Vector punchangle;        // auto-decaying view angle adjustment
    Vector v_angle;            // Viewing angle (player only)

    Vector endpos;
    Vector startpos;
    float impacttime;
    float starttime;
    int fixangle;            // 0:nothing, 1:force view angles, 2:add avelocity
    float idealpitch;
    float pitch_speed;
    float ideal_yaw;
    float yaw_speed;

    int modelindex;
    string_t model;
    string_t viewmodel;        // player's viewmodel
    string_t weaponmodel;    // what other players see

    Vector absmin;            // BB max translated to world coord
    Vector absmax;            // BB max translated to world coord
    Vector mins;            // local BB min
    Vector maxs;            // local BB max
    Vector size;            // maxs - mins

    float ltime;
    float nextthink;
    int movetype;
    int solid;
    int skin;
    int body;            // sub-model selection for studiomodels
    int effects;
    float gravity;            // % of "normal" gravity
    float friction;            // inverse elasticity of MOVETYPE_BOUNCE
    int light_level;
    int sequence;            // animation sequence
    int gaitsequence;        // movement animation sequence for player (0 for none)
    float frame;            // % playback position in animation sequences (0..255)
    float animtime;            // world time when frame was set
    float framerate;        // animation playback rate (-8x to 8x)
    byte controller[4];        // bone controller setting (0..255)
    byte blending[2];        // blending amount between sub-sequences (0..255)

    float scale;            // sprite rendering scale (0..255)
    int rendermode;
    float renderamt;
    Vector rendercolor;
    int renderfx;
    float health;
    float frags;
    int weapons;            // bit mask for available weapons
    float takedamage;

    int deadflag;
    Vector view_ofs;        // eye position
    int button;
    int impulse;

    edict_t *chain;            // Entity pointer when linked into a linked list
    edict_t *dmg_inflictor;
    edict_t *enemy;
    edict_t *aiment;        // entity pointer when MOVETYPE_FOLLOW
    edict_t *owner;
    edict_t *groundentity;

    int spawnflags;
    int flags;
    int colormap;            // lowbyte topcolor, highbyte bottomcolor
    int team;
    float max_health;
    float teleport_time;
    float armortype;
    float armorvalue;
    int waterlevel;
    int watertype;

    string_t target;
    string_t targetname;
    string_t netname;
    string_t message;

    float dmg_take;
    float dmg_save;
    float dmg;
    float dmgtime;

    string_t noise;
    string_t noise1;
    string_t noise2;
    string_t noise3;

    float speed;
    float air_finished;
    float pain_finished;
    float radsuit_finished;

    edict_t *pContainingEntity;

    int playerclass;
    float maxspeed;
    float fov;
    int weaponanim;
    int pushmsec;
    int bInDuck;
    int flTimeStepSound;
    int flSwimTime;
    int flDuckTime;
    int iStepLeft;
    float flFallVelocity;

    int gamestate;
    int oldbuttons;
    int groupinfo;

    // For mods
    int iuser1;
    int iuser2;
    int iuser3;
    int iuser4;
    float fuser1;
    float fuser2;
    float fuser3;
    float fuser4;
    Vector vuser1;
    Vector vuser2;
    Vector vuser3;
    Vector vuser4;
    edict_t *euser1;
    edict_t *euser2;
    edict_t *euser3;
    edict_t *euser4;
} entvars_t;
 

ArKaNeMaN

Квалифицированный специалист по VipModular
Сообщения
433
Реакции
293
Помог
5 раз(а)
fl0wer, благодарствую :)
22 Июл 2018
Так... Ладно... А НЕ добрые люди шарят за анимацию? XD
Уже задолбался гуглить... Ничего там нету...
Нашёл разве что такой вариант:
C++:
set_pev(ent, pev_framerate, 0.1);
set_pev(ent, pev_spawnflags, SF_SPRITE_STARTON);
dllfunc(DLLFunc_Spawn, ent);
Но он не работает :(
 
Последнее редактирование модератором:
Сообщения
212
Реакции
335
Помог
3 раз(а)
ArKaNeMaN, потому что надо создать ентити, у которого поддерживается анимация спрайтов движком (env_sprite, например)
 

ArKaNeMaN

Квалифицированный специалист по VipModular
Сообщения
433
Реакции
293
Помог
5 раз(а)
Xelson, Всё так и есть...
C++:
static ent, a; a = engfunc(EngFunc_AllocString, "env_sprite"); ent = engfunc(EngFunc_CreateNamedEntity, a);
 
Сообщения
212
Реакции
335
Помог
3 раз(а)
ArKaNeMaN, в коде утечка памяти.
Код:
static ent, a;
if(!a) a = engfunc(EngFunc_AllocString, "env_sprite");
ent = engfunc(EngFunc_CreateNamedEntity, a);
Поставьте framerate на 1.0, для теста
23 Июл 2018
А еще надо установить объекту pev_modelindex, чтобы инициализировалось значение максимального количества кадров:
https://github.com/s1lentq/ReGameDL...8fbf680840a2/regamedll/dlls/effects.cpp#L1192
Так как:
https://github.com/s1lentq/ReGameDL...8fbf680840a2/regamedll/dlls/effects.cpp#L1333
 
Сообщения
1,698
Реакции
1,510
Помог
26 раз(а)
Достаточно поставить var_model, var_spawnflags, var_framerate и вызвать Spawn.
А еще надо установить объекту pev_modelindex, чтобы инициализировалось значение максимального количества кадров:
Не надо.
 

ArKaNeMaN

Квалифицированный специалист по VipModular
Сообщения
433
Реакции
293
Помог
5 раз(а)
fl0wer, Так?
C++:
set_pev(ent, pev_model, sprite);
set_pev(ent, pev_framerate, 1.0);
set_pev(ent, pev_spawnflags, SF_SPRITE_STARTON);
dllfunc(DLLFunc_Spawn, ent);
P.S. Не работает :(
 
Последнее редактирование:
Сообщения
839
Реакции
519
Помог
12 раз(а)
я ставлю так
PHP:
engfunc(EngFunc_SetModel, pEnt, g_sprite_fire);
set_entvar(pEnt, var_animtime, get_gametime());
set_entvar(pEnt, var_framerate, random_float(10.0, 20.0));

set_entvar(pEnt, var_spawnflags, SF_SPRITE_STARTON);
ExecuteHam(Ham_Spawn, pEnt);
Никогда не пользуюсь таким способом установки модели
Код:
set_pev(ent, pev_model, sprite);
 

ArKaNeMaN

Квалифицированный специалист по VipModular
Сообщения
433
Реакции
293
Помог
5 раз(а)
BalbuR, В чём разница между set_entvar и set_pev? Кроме модуля
 
Сообщения
1,698
Реакции
1,510
Помог
26 раз(а)
Никогда не пользуюсь таким способом установки модели
Код:
set_pev(ent, pev_model, sprite);
Ну там в спавне env_sprite такое жеж:
SET_MODEL(ENT(pev), STRING(pev->model));
23 Июл 2018
fl0wer, Так?
C++:
set_pev(ent, pev_model, sprite);
set_pev(ent, pev_framerate, 1.0);
set_pev(ent, pev_spawnflags, SF_SPRITE_STARTON);
dllfunc(DLLFunc_Spawn, ent);
P.S. Не работает :(
Полностью код создания покажи.
 
Сообщения
839
Реакции
519
Помог
12 раз(а)
fl0wer, а в других типах? "по протоптанной хожу"
23 Июл 2018
ArKaNeMaN, entvar = reapi модуль
Фактически? ничем, делай как тебе удобнее
 

ArKaNeMaN

Квалифицированный специалист по VipModular
Сообщения
433
Реакции
293
Помог
5 раз(а)
Полностью код создания покажи.
Код:
set_pev(ent, pev_classname, classname);

engfunc(EngFunc_SetModel, ent, sprite);

set_pev(ent, pev_owner, victim);
set_pev(ent, pev_movetype, MOVETYPE_NONE);
set_pev(ent, pev_solid, SOLID_NOT);

if(get_pcvar_num(pCvars[cPlayerLight])) set_pev(ent, pev_effects, EF_BRIGHTLIGHT);
set_pev(ent, pev_rendermode, kRenderTransAdd);
set_pev(ent, pev_renderamt, 200.0);

set_pev(ent, pev_animtime, get_gametime());
set_pev(ent, pev_framerate, 1.0);
set_pev(ent, pev_spawnflags, SF_SPRITE_STARTON);
ExecuteHam(Ham_Spawn, ent);

set_pev(ent, pev_nextthink, get_gametime()+0.1);
 
Сообщения
839
Реакции
519
Помог
12 раз(а)
set_pev(ent, pev_nextthink, get_gametime()+0.1);
set_pev(ent, pev_spawnflags, SF_SPRITE_STARTON);

это так не работает)
некст синк закомментируй пока что
 
Сообщения
1,698
Реакции
1,510
Помог
26 раз(а)
[Скрытый контент]
Мне что, теперь каждую энтити ради тебя смотреть и говорить где такое возможно, а где нет?
23 Июл 2018
ArKaNeMaN,
Код:
set_pev(ent, pev_classname, classname);

//engfunc(EngFunc_SetModel, ent, sprite);
set_pev(ent, pev_model, sprite);

set_pev(ent, pev_owner, victim);

// set's in spawn
//set_pev(ent, pev_movetype, MOVETYPE_NONE);
//set_pev(ent, pev_solid, SOLID_NOT);

if(get_pcvar_num(pCvars[cPlayerLight])) set_pev(ent, pev_effects, EF_BRIGHTLIGHT);
set_pev(ent, pev_rendermode, kRenderTransAdd);
set_pev(ent, pev_renderamt, 200.0);

//set_pev(ent, pev_animtime, get_gametime());
set_pev(ent, pev_framerate, 1.0);
set_pev(ent, pev_spawnflags, SF_SPRITE_STARTON);
ExecuteHam(Ham_Spawn, ent);

// mistake
//set_pev(ent, pev_nextthink, get_gametime()+0.1);
 

ArKaNeMaN

Квалифицированный специалист по VipModular
Сообщения
433
Реакции
293
Помог
5 раз(а)
fl0wer, Всё ровно нет анимации :(
23 Июл 2018
И без nextthink как двигать ентити за игроком?
 
Статус
В этой теме нельзя размещать новые ответы.

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

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