[ Warface ] как получить позицию игрока?

masta copypasta
Участник
Статус
Оффлайн
Регистрация
2 Июн 2017
Сообщения
683
Реакции[?]
253
Поинты[?]
0
впервые работаю с этим движком, не совсем понимаю что к чему

как от актера( перебираю через ActorIterator->Next ), получить позицию?
втейбл функция GetProjectedWorldBBox( 23 ) и транслейт в ворлд не работает

вф x64

Крайслер, Dimedrol, на счет вф могу только на вас расчитывать;)
 
Последнее редактирование:
Новичок
Статус
Оффлайн
Регистрация
3 Сен 2019
Сообщения
1
Реакции[?]
0
Поинты[?]
0
впервые работаю с этим движком, не совсем понимаю что к чему

как от актера( перебираю через ActorIterator->Next ), получить позицию?
втейбл функция GetProjectedWorldBBox( 23 ) и транслейт в ворлд не работает

вф x64

Крайслер, Dimedrol, на счет вф могу только на вас расчитывать;)
Код:
Matrix34 pWorld = pEntit->GetWorldTM();
vPosition = pWorld.GetTranslation(); // You can use it only 1 string, it's only for example
 
Последнее редактирование модератором:
Эксперт
Статус
Оффлайн
Регистрация
12 Июн 2014
Сообщения
999
Реакции[?]
1,209
Поинты[?]
3K
class IEntity:

Код:
    Matrix34  worldTM; //0x0040
    Vec3      vPos; //0x0070
Код:
Vec3       vPos= pIEntity->worldTM.GetTranslation();
Vec3       vPos= pIEntity->vPos;
Код:
template <typename F> struct Matrix34_tpl
{
    F m00, m01, m02, m03;
    F m10, m11, m12, m13;
    F m20, m21, m22, m23;

    ILINE Vector_tpl<F> GetTranslation() const{
        return Vector_tpl<F>(m03, m13, m23);
    }
};
 
masta copypasta
Участник
Статус
Оффлайн
Регистрация
2 Июн 2017
Сообщения
683
Реакции[?]
253
Поинты[?]
0
class IEntity:

Код:
    Matrix34  worldTM; //0x0040
    Vec3      vPos; //0x0070
Код:
Vec3       vPos= pIEntity->worldTM.GetTranslation();
Vec3       vPos= pIEntity->vPos;
Код:
template <typename F> struct Matrix34_tpl
{
    F m00, m01, m02, m03;
    F m10, m11, m12, m13;
    F m20, m21, m22, m23;

    ILINE Vector_tpl<F> GetTranslation() const{
        return Vector_tpl<F>(m03, m13, m23);
    }
};
IEntity, а как понял от ActorIterator->Next я получаю IActor, как от актора получить ентити?
 
Эксперт
Статус
Оффлайн
Регистрация
12 Июн 2014
Сообщения
999
Реакции[?]
1,209
Поинты[?]
3K
masta copypasta
Участник
Статус
Оффлайн
Регистрация
2 Июн 2017
Сообщения
683
Реакции[?]
253
Поинты[?]
0
Код:
class IActor
{
public:
class IEntity* GetEntity() {
        return *(IEntity**)((uintptr_t)this + 16);
    }
};
вывожу позицию - на взгляд все верно, спасибо
оказалось что в2с не работает еще,
ProjectToScreen в ласт дампе - 101

screen.z - валид
x/y по нулям

upd: моя ошибочка, забыл вызвать функция GetViewport;)
вх на оригин плеера - работает

Крайслер, ласт вопрос, хотя ты и так выручил
как тут получить позицию кости?
 
Последнее редактирование:
Эксперт
Статус
Оффлайн
Регистрация
12 Июн 2014
Сообщения
999
Реакции[?]
1,209
Поинты[?]
3K
@@Крайслер, ласт вопрос, хотя ты и так выручил
как тут получить позицию кости?
Код:
Vec3    vGetBone(Matrix34 m_pWorld, ISkeletonPose* m_pSkeleton, const char* szJointName) {
    if (!m_pSkeleton)
        return Vec3{ ZERO };
    __int16 BoneId = m_pSkeleton->GetJointIDByName(szJointName);
    Matrix34 mOut = m_pWorld * Matrix34(m_pSkeleton->GetAbsJointByID(BoneId));
    return mOut.GetTranslation();
}
Vec3    vGetBone(Matrix34 m_pWorld, ISkeletonPose* m_pSkeleton, __int16 BoneId) {
    if (!m_pSkeleton)
        return Vec3{ ZERO };
    Matrix34 mOut = m_pWorld * Matrix34(m_pSkeleton->GetAbsJointByID(BoneId));
    return mOut.GetTranslation();
}
 
Новичок
Статус
Оффлайн
Регистрация
4 Сен 2019
Сообщения
1
Реакции[?]
0
Поинты[?]
0
it’s x86

92 / 8 = 11.5, not vtable index
92 / 4 = 23
Парень, если ты не понимаешь разницу в x86 и x64 зачем пишешь ?
92 и есть индекс ибо ида уже конвертировала его в псевдокоде, лучше думай прежде чем писать. Если уж не знаешь как проверитьб то сам понять должен, что если не делиться значит он такой и есть. Это старый скриншот
 
Эксперт
Статус
Оффлайн
Регистрация
12 Июн 2014
Сообщения
999
Реакции[?]
1,209
Поинты[?]
3K
Парень, если ты не понимаешь разницу в x86 и x64 зачем пишешь ?
92 и есть индекс ибо ида уже конвертировала его в псевдокоде, лучше думай прежде чем писать. Если уж не знаешь как проверитьб то сам понять должен, что если не делиться значит он такой и есть. Это старый скриншот
вообще-то он все правильно привел, а вот тебе бы не следовало выступать там, где знаний нет....
 
Сверху Снизу