atizoff
01.01.2020, 14:50
Псевдокод, немного подправил, чтобы у вас было хоть какое-то понимание
Для реализации потребуется GetAbsJointByID и GetJointIdByName (ISkeletonPose)
Ну и функция GetBonePosById (в сурсах айкода всё есть, там поиск по имени кости, но переписав 2-3 строчки получится по айди)
Кости не мои, а pCoder`а Марка, helpless, можешь больше не писать мне на UC =)
C++:
v18
=
GetEntityName
(
v54
)
;
if
(
MEMORY
[
0x14162CDF9
]
(
v18
,
"CQBHeavy"
)
||
(
v19
=
GetEntityName
(
v54
)
,
MEMORY
[
0x14162CDF9
]
(
v19
,
"SMGHeavy"
)
)
)
{
qmemcpy
(
&
v125
,
(
const
void
*
)
GetBonePosById
(
&
v140
,
v54
,
13
i64
)
,
0xCu
i64
)
;
qmemcpy
(
&
v161
,
&
v125
,
0xCu
i64
)
;
}
v20
=
GetEntityName
(
v54
)
;
if
(
MEMORY
[
0x14162CDF9
]
(
v20
,
"Destroyer"
)
)
{
qmemcpy
(
&
v126
,
(
const
void
*
)
GetBonePosById
(
&
v141
,
v54
,
3
i64
)
,
0xCu
i64
)
;
qmemcpy
(
&
v161
,
&
v126
,
0xCu
i64
)
;
}
v21
=
GetEntityName
(
v54
)
;
if
(
MEMORY
[
0x14162CDF9
]
(
v21
,
"Cyborg"
)
)
{
qmemcpy
(
&
v127
,
(
const
void
*
)
GetBonePosById
(
&
v142
,
v54
,
3
i64
)
,
0xCu
i64
)
;
qmemcpy
(
&
v161
,
&
v127
,
0xCu
i64
)
;
}
v22
=
GetEntityName
(
v54
)
;
if
(
MEMORY
[
0x14162CDF9
]
(
v22
,
"TurretWall"
)
)
{
qmemcpy
(
&
v128
,
(
const
void
*
)
GetBonePosById
(
&
v138
,
v54
,
47
i64
)
,
0xCu
i64
)
;
qmemcpy
(
&
v161
,
&
v128
,
0xCu
i64
)
;
}
v23
=
GetEntityName
(
v54
)
;
if
(
MEMORY
[
0x14162CDF9
]
(
v23
,
"TurretCeil"
)
)
{
qmemcpy
(
&
v129
,
(
const
void
*
)
GetBonePosById
(
&
v148
,
v54
,
78
i64
)
,
0xCu
i64
)
;
qmemcpy
(
&
v161
,
&
v129
,
0xCu
i64
)
;
}
v24
=
GetEntityName
(
v54
)
;
if
(
MEMORY
[
0x14162CDF9
]
(
v24
,
"TurretFloor_ASR"
)
||
(
v25
=
GetEntityName
(
v54
)
,
MEMORY
[
0x14162CDF9
]
(
v25
,
"Turret_ASR_Target"
)
)
)
{
qmemcpy
(
&
v130
,
(
const
void
*
)
GetBonePosById
(
&
v149
,
v54
,
62
i64
)
,
0xCu
i64
)
;
qmemcpy
(
&
v161
,
&
v130
,
0xCu
i64
)
;
}
v26
=
GetEntityName
(
v54
)
;
if
(
MEMORY
[
0x14162CDF9
]
(
v26
,
"TurretFloor_cqb"
)
||
(
v27
=
GetEntityName
(
v54
)
,
MEMORY
[
0x14162CDF9
]
(
v27
,
"TurretFloor_CQB"
)
)
||
(
v28
=
GetEntityName
(
v54
)
,
MEMORY
[
0x14162CDF9
]
(
v28
,
"TurretHunt_CQB"
)
)
)
{
qmemcpy
(
&
v131
,
(
const
void
*
)
GetBonePosById
(
&
v150
,
v54
,
58
i64
)
,
0xCu
i64
)
;
qmemcpy
(
&
v161
,
&
v131
,
0xCu
i64
)
;
}
v29
=
GetEntityName
(
v54
)
;
if
(
MEMORY
[
0x14162CDF9
]
(
v29
,
"TurretFloor_mg"
)
||
(
v30
=
GetEntityName
(
v54
)
,
MEMORY
[
0x14162CDF9
]
(
v30
,
"TurretFloor_MG"
)
)
||
(
v31
=
GetEntityName
(
v54
)
,
MEMORY
[
0x14162CDF9
]
(
v31
,
"TurretHunt_MG"
)
)
||
(
v32
=
GetEntityName
(
v54
)
,
MEMORY
[
0x14162CDF9
]
(
v32
,
"TurretRail_mg"
)
)
||
(
v33
=
GetEntityName
(
v54
)
,
MEMORY
[
0x14162CDF9
]
(
v33
,
"Turret_MG"
)
)
)
{
qmemcpy
(
&
v119
,
(
const
void
*
)
GetBonePosById
(
&
v151
,
v54
,
68
i64
)
,
0xCu
i64
)
;
qmemcpy
(
&
v161
,
&
v119
,
0xCu
i64
)
;
}
v34
=
GetEntityName
(
v54
)
;
if
(
MEMORY
[
0x14162CDF9
]
(
v34
,
"Crusher"
)
)
{
qmemcpy
(
&
v132
,
(
const
void
*
)
GetBonePosById
(
&
v152
,
v54
,
13
i64
)
,
0xCu
i64
)
;
qmemcpy
(
&
v161
,
&
v132
,
0xCu
i64
)
;
}
v35
=
GetEntityName
(
v54
)
;
if
(
MEMORY
[
0x14162CDF9
]
(
v35
,
"SED_RG"
)
)
{
qmemcpy
(
&
v133
,
(
const
void
*
)
GetBonePosById
(
&
v153
,
v54
,
13
i64
)
,
0xCu
i64
)
;
qmemcpy
(
&
v161
,
&
v133
,
0xCu
i64
)
;
}
v36
=
GetEntityName
(
v54
)
;
if
(
MEMORY
[
0x14162CDF9
]
(
v36
,
"SEDAssault"
)
)
{
qmemcpy
(
&
v134
,
(
const
void
*
)
GetBonePosById
(
&
v154
,
v54
,
60
i64
)
,
0xCu
i64
)
;
qmemcpy
(
&
v161
,
&
v134
,
0xCu
i64
)
;
}
v37
=
GetEntityName
(
v54
)
;
if
(
MEMORY
[
0x14162CDF9
]
(
v37
,
"SEDSoldier"
)
)
{
qmemcpy
(
&
v135
,
(
const
void
*
)
GetBonePosById
(
&
v155
,
v54
,
58
i64
)
,
0xCu
i64
)
;
qmemcpy
(
&
v161
,
&
v135
,
0xCu
i64
)
;
}
v38
=
GetEntityName
(
v54
)
;
if
(
MEMORY
[
0x14162CDF9
]
(
v38
,
"HeavyTurretRail"
)
)
{
qmemcpy
(
&
v136
,
(
const
void
*
)
GetBonePosById
(
&
v156
,
v54
,
52
i64
)
,
0xCu
i64
)
;
qmemcpy
(
&
v161
,
&
v136
,
0xCu
i64
)
;
}
v39
=
GetEntityName
(
v54
)
;
if
(
MEMORY
[
0x14162CDF9
]
(
v39
,
"Drone"
)
)
{
qmemcpy
(
&
v137
,
(
const
void
*
)
GetBonePosById
(
&
v157
,
v54
,
12
i64
)
,
0xCu
i64
)
;
qmemcpy
(
&
v161
,
&
v137
,
0xCu
i64
)
;
}
v40
=
GetEntityName
(
v54
)
;
if
(
MEMORY
[
0x14162CDF9
]
(
v40
,
"HeavyDroid"
)
)
{
qmemcpy
(
&
v104
,
(
const
void
*
)
GetBonePosById
(
&
v158
,
v54
,
61
i64
)
,
0xCu
i64
)
;
qmemcpy
(
&
v161
,
&
v104
,
0xCu
i64
)
;
}
v41
=
GetEntityName
(
v54
)
;
if
(
MEMORY
[
0x14162CDF9
]
(
v41
,
"IronMan"
)
)
{
qmemcpy
(
&
v105
,
(
const
void
*
)
GetBonePosById
(
&
v159
,
v54
,
7
i64
)
,
0xCu
i64
)
;
qmemcpy
(
&
v161
,
&
v105
,
0xCu
i64
)
;
}
v42
=
GetEntityName
(
v54
)
;
if
(
MEMORY
[
0x14162CDF9
]
(
v42
,
"JP_Flamethrower"
)
)
{
qmemcpy
(
&
v106
,
(
const
void
*
)
GetBonePosById
(
&
v160
,
v54
,
13
i64
)
,
0xCu
i64
)
;
qmemcpy
(
&
v161
,
&
v106
,
0xCu
i64
)
;
}
powered by SL Team
Для реализации потребуется GetAbsJointByID и GetJointIdByName (ISkeletonPose)
Ну и функция GetBonePosById (в сурсах айкода всё есть, там поиск по имени кости, но переписав 2-3 строчки получится по айди)
Кости не мои, а pCoder`а Марка, helpless, можешь больше не писать мне на UC =)
C++:
v18
=
GetEntityName
(
v54
)
;
if
(
MEMORY
[
0x14162CDF9
]
(
v18
,
"CQBHeavy"
)
||
(
v19
=
GetEntityName
(
v54
)
,
MEMORY
[
0x14162CDF9
]
(
v19
,
"SMGHeavy"
)
)
)
{
qmemcpy
(
&
v125
,
(
const
void
*
)
GetBonePosById
(
&
v140
,
v54
,
13
i64
)
,
0xCu
i64
)
;
qmemcpy
(
&
v161
,
&
v125
,
0xCu
i64
)
;
}
v20
=
GetEntityName
(
v54
)
;
if
(
MEMORY
[
0x14162CDF9
]
(
v20
,
"Destroyer"
)
)
{
qmemcpy
(
&
v126
,
(
const
void
*
)
GetBonePosById
(
&
v141
,
v54
,
3
i64
)
,
0xCu
i64
)
;
qmemcpy
(
&
v161
,
&
v126
,
0xCu
i64
)
;
}
v21
=
GetEntityName
(
v54
)
;
if
(
MEMORY
[
0x14162CDF9
]
(
v21
,
"Cyborg"
)
)
{
qmemcpy
(
&
v127
,
(
const
void
*
)
GetBonePosById
(
&
v142
,
v54
,
3
i64
)
,
0xCu
i64
)
;
qmemcpy
(
&
v161
,
&
v127
,
0xCu
i64
)
;
}
v22
=
GetEntityName
(
v54
)
;
if
(
MEMORY
[
0x14162CDF9
]
(
v22
,
"TurretWall"
)
)
{
qmemcpy
(
&
v128
,
(
const
void
*
)
GetBonePosById
(
&
v138
,
v54
,
47
i64
)
,
0xCu
i64
)
;
qmemcpy
(
&
v161
,
&
v128
,
0xCu
i64
)
;
}
v23
=
GetEntityName
(
v54
)
;
if
(
MEMORY
[
0x14162CDF9
]
(
v23
,
"TurretCeil"
)
)
{
qmemcpy
(
&
v129
,
(
const
void
*
)
GetBonePosById
(
&
v148
,
v54
,
78
i64
)
,
0xCu
i64
)
;
qmemcpy
(
&
v161
,
&
v129
,
0xCu
i64
)
;
}
v24
=
GetEntityName
(
v54
)
;
if
(
MEMORY
[
0x14162CDF9
]
(
v24
,
"TurretFloor_ASR"
)
||
(
v25
=
GetEntityName
(
v54
)
,
MEMORY
[
0x14162CDF9
]
(
v25
,
"Turret_ASR_Target"
)
)
)
{
qmemcpy
(
&
v130
,
(
const
void
*
)
GetBonePosById
(
&
v149
,
v54
,
62
i64
)
,
0xCu
i64
)
;
qmemcpy
(
&
v161
,
&
v130
,
0xCu
i64
)
;
}
v26
=
GetEntityName
(
v54
)
;
if
(
MEMORY
[
0x14162CDF9
]
(
v26
,
"TurretFloor_cqb"
)
||
(
v27
=
GetEntityName
(
v54
)
,
MEMORY
[
0x14162CDF9
]
(
v27
,
"TurretFloor_CQB"
)
)
||
(
v28
=
GetEntityName
(
v54
)
,
MEMORY
[
0x14162CDF9
]
(
v28
,
"TurretHunt_CQB"
)
)
)
{
qmemcpy
(
&
v131
,
(
const
void
*
)
GetBonePosById
(
&
v150
,
v54
,
58
i64
)
,
0xCu
i64
)
;
qmemcpy
(
&
v161
,
&
v131
,
0xCu
i64
)
;
}
v29
=
GetEntityName
(
v54
)
;
if
(
MEMORY
[
0x14162CDF9
]
(
v29
,
"TurretFloor_mg"
)
||
(
v30
=
GetEntityName
(
v54
)
,
MEMORY
[
0x14162CDF9
]
(
v30
,
"TurretFloor_MG"
)
)
||
(
v31
=
GetEntityName
(
v54
)
,
MEMORY
[
0x14162CDF9
]
(
v31
,
"TurretHunt_MG"
)
)
||
(
v32
=
GetEntityName
(
v54
)
,
MEMORY
[
0x14162CDF9
]
(
v32
,
"TurretRail_mg"
)
)
||
(
v33
=
GetEntityName
(
v54
)
,
MEMORY
[
0x14162CDF9
]
(
v33
,
"Turret_MG"
)
)
)
{
qmemcpy
(
&
v119
,
(
const
void
*
)
GetBonePosById
(
&
v151
,
v54
,
68
i64
)
,
0xCu
i64
)
;
qmemcpy
(
&
v161
,
&
v119
,
0xCu
i64
)
;
}
v34
=
GetEntityName
(
v54
)
;
if
(
MEMORY
[
0x14162CDF9
]
(
v34
,
"Crusher"
)
)
{
qmemcpy
(
&
v132
,
(
const
void
*
)
GetBonePosById
(
&
v152
,
v54
,
13
i64
)
,
0xCu
i64
)
;
qmemcpy
(
&
v161
,
&
v132
,
0xCu
i64
)
;
}
v35
=
GetEntityName
(
v54
)
;
if
(
MEMORY
[
0x14162CDF9
]
(
v35
,
"SED_RG"
)
)
{
qmemcpy
(
&
v133
,
(
const
void
*
)
GetBonePosById
(
&
v153
,
v54
,
13
i64
)
,
0xCu
i64
)
;
qmemcpy
(
&
v161
,
&
v133
,
0xCu
i64
)
;
}
v36
=
GetEntityName
(
v54
)
;
if
(
MEMORY
[
0x14162CDF9
]
(
v36
,
"SEDAssault"
)
)
{
qmemcpy
(
&
v134
,
(
const
void
*
)
GetBonePosById
(
&
v154
,
v54
,
60
i64
)
,
0xCu
i64
)
;
qmemcpy
(
&
v161
,
&
v134
,
0xCu
i64
)
;
}
v37
=
GetEntityName
(
v54
)
;
if
(
MEMORY
[
0x14162CDF9
]
(
v37
,
"SEDSoldier"
)
)
{
qmemcpy
(
&
v135
,
(
const
void
*
)
GetBonePosById
(
&
v155
,
v54
,
58
i64
)
,
0xCu
i64
)
;
qmemcpy
(
&
v161
,
&
v135
,
0xCu
i64
)
;
}
v38
=
GetEntityName
(
v54
)
;
if
(
MEMORY
[
0x14162CDF9
]
(
v38
,
"HeavyTurretRail"
)
)
{
qmemcpy
(
&
v136
,
(
const
void
*
)
GetBonePosById
(
&
v156
,
v54
,
52
i64
)
,
0xCu
i64
)
;
qmemcpy
(
&
v161
,
&
v136
,
0xCu
i64
)
;
}
v39
=
GetEntityName
(
v54
)
;
if
(
MEMORY
[
0x14162CDF9
]
(
v39
,
"Drone"
)
)
{
qmemcpy
(
&
v137
,
(
const
void
*
)
GetBonePosById
(
&
v157
,
v54
,
12
i64
)
,
0xCu
i64
)
;
qmemcpy
(
&
v161
,
&
v137
,
0xCu
i64
)
;
}
v40
=
GetEntityName
(
v54
)
;
if
(
MEMORY
[
0x14162CDF9
]
(
v40
,
"HeavyDroid"
)
)
{
qmemcpy
(
&
v104
,
(
const
void
*
)
GetBonePosById
(
&
v158
,
v54
,
61
i64
)
,
0xCu
i64
)
;
qmemcpy
(
&
v161
,
&
v104
,
0xCu
i64
)
;
}
v41
=
GetEntityName
(
v54
)
;
if
(
MEMORY
[
0x14162CDF9
]
(
v41
,
"IronMan"
)
)
{
qmemcpy
(
&
v105
,
(
const
void
*
)
GetBonePosById
(
&
v159
,
v54
,
7
i64
)
,
0xCu
i64
)
;
qmemcpy
(
&
v161
,
&
v105
,
0xCu
i64
)
;
}
v42
=
GetEntityName
(
v54
)
;
if
(
MEMORY
[
0x14162CDF9
]
(
v42
,
"JP_Flamethrower"
)
)
{
qmemcpy
(
&
v106
,
(
const
void
*
)
GetBonePosById
(
&
v160
,
v54
,
13
i64
)
,
0xCu
i64
)
;
qmemcpy
(
&
v161
,
&
v106
,
0xCu
i64
)
;
}
powered by SL Team