 |
|

10.01.2019, 02:22
|
|
Участник форума
Регистрация: 12.10.2014
Сообщений: 156
С нами:
6096955
Репутация:
78
|
|
Сообщение от Jenecheque
в имгуи можно как то сменить цвет этих стрелочек на затрагивая цвет текста?
это в функции BeginMenu
|
|
|

10.01.2019, 18:22
|
|
Участник форума
Регистрация: 14.01.2018
Сообщений: 192
С нами:
4384333
Репутация:
113
|
|
Как получить координату кости?
|
|
|

10.01.2019, 18:32
|
|
Постоянный
Регистрация: 02.06.2018
Сообщений: 342
С нами:
4183567
Репутация:
133
|
|
Сообщение от SiTrak
Как получить координату кости?
Пример получения кости игрока и отрисовка их. ID костей находятся в CPed.h
Код:
Код:
#pragma region DrawBones
if (enableDrawBones) {
actor_info *actorInfo = SF->getSAMP()->getPlayers()->pRemotePlayer[i]->pPlayerData->pSAMP_Actor->pGTA_Ped;
CPed* Ped = GAME->GetPools()->GetPed((DWORD*)actorInfo);
float posX[15], posY[15];
int counter = 0;
CVector vPos[15];
for (int i = 1; i GetTransformedBonePosition((eBone)i, &vPos[counter]);
counter++;
break;
case 3:
Ped->GetTransformedBonePosition((eBone)i, &vPos[counter]);
counter++;
break;
case 4:
Ped->GetTransformedBonePosition((eBone)i, &vPos[counter]);
counter++;
break;
case 5:
Ped->GetTransformedBonePosition((eBone)i, &vPos[counter]);
counter++;
break;
case 6:
Ped->GetTransformedBonePosition((eBone)i, &vPos[counter]);
counter++;
break;
case 22:
Ped->GetTransformedBonePosition((eBone)i, &vPos[counter]);
counter++;
break;
case 23:
Ped->GetTransformedBonePosition((eBone)i, &vPos[counter]);
counter++;
break;
case 25:
Ped->GetTransformedBonePosition((eBone)i, &vPos[counter]);
counter++;
break;
case 32:
Ped->GetTransformedBonePosition((eBone)i, &vPos[counter]);
counter++;
break;
case 33:
Ped->GetTransformedBonePosition((eBone)i, &vPos[counter]);
counter++;
break;
case 35:
Ped->GetTransformedBonePosition((eBone)i, &vPos[counter]);
counter++;
break;
case 42:
Ped->GetTransformedBonePosition((eBone)i, &vPos[counter]);
counter++;
break;
case 43:
Ped->GetTransformedBonePosition((eBone)i, &vPos[counter]);
counter++;
break;
case 52:
Ped->GetTransformedBonePosition((eBone)i, &vPos[counter]);
counter++;
break;
case 53:
Ped->GetTransformedBonePosition((eBone)i, &vPos[counter]);
counter++;
break;
}
}
for (int i = 0; i getGame()->convert3DCoordsToScreen(vPos[i].fX, vPos[i].fY, vPos[i].fZ, &posX[i], &posY[i]);
SF->getRender()->DrawLine(posX[0], posY[0], posX[1], posY[1], 1, 0xFFFFFFFF);
SF->getRender()->DrawLine(posX[0], posY[0], posX[11], posY[11], 1, 0xFFFFFFFF);
SF->getRender()->DrawLine(posX[0], posY[0], posX[13], posY[13], 1, 0xFFFFFFFF);
SF->getRender()->DrawLine(posX[1], posY[1], posX[2], posY[2], 1, 0xFFFFFFFF);
SF->getRender()->DrawLine(posX[2], posY[2], posX[5], posY[5], 1, 0xFFFFFFFF);
SF->getRender()->DrawLine(posX[2], posY[2], posX[8], posY[8], 1, 0xFFFFFFFF);
SF->getRender()->DrawLine(posX[2], posY[2], posX[3], posY[3], 1, 0xFFFFFFFF);
SF->getRender()->DrawLine(posX[3], posY[3], posX[4], posY[4], 1, 0xFFFFFFFF);
SF->getRender()->DrawLine(posX[5], posY[5], posX[6], posY[6], 1, 0xFFFFFFFF);
SF->getRender()->DrawLine(posX[6], posY[6], posX[7], posY[7], 1, 0xFFFFFFFF);
SF->getRender()->DrawLine(posX[8], posY[8], posX[9], posY[9], 1, 0xFFFFFFFF);
SF->getRender()->DrawLine(posX[9], posY[9], posX[10], posY[10], 1, 0xFFFFFFFF);
}
#pragma endregion DrawBones
|
|
|

10.01.2019, 19:25
|
|
Участник форума
Регистрация: 12.10.2014
Сообщений: 156
С нами:
6096955
Репутация:
78
|
|
Сообщение от Rjx13
Пример получения кости игрока и отрисовка их. ID костей находятся в CPed.h
Код:
Код:
#pragma region DrawBones
if (enableDrawBones) {
actor_info *actorInfo = SF->getSAMP()->getPlayers()->pRemotePlayer[i]->pPlayerData->pSAMP_Actor->pGTA_Ped;
CPed* Ped = GAME->GetPools()->GetPed((DWORD*)actorInfo);
float posX[15], posY[15];
int counter = 0;
CVector vPos[15];
for (int i = 1; i GetTransformedBonePosition((eBone)i, &vPos[counter]);
counter++;
break;
case 3:
Ped->GetTransformedBonePosition((eBone)i, &vPos[counter]);
counter++;
break;
case 4:
Ped->GetTransformedBonePosition((eBone)i, &vPos[counter]);
counter++;
break;
case 5:
Ped->GetTransformedBonePosition((eBone)i, &vPos[counter]);
counter++;
break;
case 6:
Ped->GetTransformedBonePosition((eBone)i, &vPos[counter]);
counter++;
break;
case 22:
Ped->GetTransformedBonePosition((eBone)i, &vPos[counter]);
counter++;
break;
case 23:
Ped->GetTransformedBonePosition((eBone)i, &vPos[counter]);
counter++;
break;
case 25:
Ped->GetTransformedBonePosition((eBone)i, &vPos[counter]);
counter++;
break;
case 32:
Ped->GetTransformedBonePosition((eBone)i, &vPos[counter]);
counter++;
break;
case 33:
Ped->GetTransformedBonePosition((eBone)i, &vPos[counter]);
counter++;
break;
case 35:
Ped->GetTransformedBonePosition((eBone)i, &vPos[counter]);
counter++;
break;
case 42:
Ped->GetTransformedBonePosition((eBone)i, &vPos[counter]);
counter++;
break;
case 43:
Ped->GetTransformedBonePosition((eBone)i, &vPos[counter]);
counter++;
break;
case 52:
Ped->GetTransformedBonePosition((eBone)i, &vPos[counter]);
counter++;
break;
case 53:
Ped->GetTransformedBonePosition((eBone)i, &vPos[counter]);
counter++;
break;
}
}
for (int i = 0; i getGame()->convert3DCoordsToScreen(vPos[i].fX, vPos[i].fY, vPos[i].fZ, &posX[i], &posY[i]);
SF->getRender()->DrawLine(posX[0], posY[0], posX[1], posY[1], 1, 0xFFFFFFFF);
SF->getRender()->DrawLine(posX[0], posY[0], posX[11], posY[11], 1, 0xFFFFFFFF);
SF->getRender()->DrawLine(posX[0], posY[0], posX[13], posY[13], 1, 0xFFFFFFFF);
SF->getRender()->DrawLine(posX[1], posY[1], posX[2], posY[2], 1, 0xFFFFFFFF);
SF->getRender()->DrawLine(posX[2], posY[2], posX[5], posY[5], 1, 0xFFFFFFFF);
SF->getRender()->DrawLine(posX[2], posY[2], posX[8], posY[8], 1, 0xFFFFFFFF);
SF->getRender()->DrawLine(posX[2], posY[2], posX[3], posY[3], 1, 0xFFFFFFFF);
SF->getRender()->DrawLine(posX[3], posY[3], posX[4], posY[4], 1, 0xFFFFFFFF);
SF->getRender()->DrawLine(posX[5], posY[5], posX[6], posY[6], 1, 0xFFFFFFFF);
SF->getRender()->DrawLine(posX[6], posY[6], posX[7], posY[7], 1, 0xFFFFFFFF);
SF->getRender()->DrawLine(posX[8], posY[8], posX[9], posY[9], 1, 0xFFFFFFFF);
SF->getRender()->DrawLine(posX[9], posY[9], posX[10], posY[10], 1, 0xFFFFFFFF);
}
#pragma endregion DrawBones
кто тебя учил плюсам?
|
|
|

10.01.2019, 19:49
|
|
Познавший АНТИЧАТ
Регистрация: 09.08.2015
Сообщений: 1,213
С нами:
5663255
Репутация:
183
|
|
Сообщение от Rjx13
case 1: Ped->GetTransformedBonePosition((eBone)i, &vPos[counter]); counter++; break; case 3: Ped->GetTransformedBonePosition((eBone)i, &vPos[counter]); counter++; break; case 4: Ped->GetTransformedBonePosition((eBone)i, &vPos[counter]); counter++; break; case 5: Ped->GetTransformedBonePosition((eBone)i, &vPos[counter]); counter++; break; case 6: Ped->GetTransformedBonePosition((eBone)i, &vPos[counter]); counter++; break; case 22: Ped->GetTransformedBonePosition((eBone)i, &vPos[counter]); counter++; break; case 23: Ped->GetTransformedBonePosition((eBone)i, &vPos[counter]); counter++; break; case 25: Ped->GetTransformedBonePosition((eBone)i, &vPos[counter]); counter++; break; case 32: Ped->GetTransformedBonePosition((eBone)i, &vPos[counter]); counter++; break; case 33: Ped->GetTransformedBonePosition((eBone)i, &vPos[counter]); counter++; break; case 35: Ped->GetTransformedBonePosition((eBone)i, &vPos[counter]); counter++; break; case 42: Ped->GetTransformedBonePosition((eBone)i, &vPos[counter]); counter++; break; case 43: Ped->GetTransformedBonePosition((eBone)i, &vPos[counter]); counter++; break; case 52: Ped->GetTransformedBonePosition((eBone)i, &vPos[counter]); counter++; break; case 53: Ped->GetTransformedBonePosition((eBone)i, &vPos[counter]); counter++; break;
Че за ...?
Перечисляй так:
C++:
Код:
case
1
:
case
3
:
case
4
:
case
5
:
case
6
:
case
22
:
// ...
Ped
->
GetTransformedBonePosition
(
(
eBone
)
i
,
&
vPos
[
counter
]
)
;
counter
++
;
break
;
|
|
|

10.01.2019, 19:51
|
|
Постоянный
Регистрация: 02.06.2018
Сообщений: 342
С нами:
4183567
Репутация:
133
|
|
|
|
|

11.01.2019, 00:07
|
|
Участник форума
Регистрация: 07.03.2015
Сообщений: 233
С нами:
5887139
Репутация:
18
|
|
Вынес за блок init, но уведомляет об оружии в руке только при загрузке скрипта. Почему лишь при загрузке?
C++:
Код:
void
CALLBACK
mainloop
(
)
{
static
bool
init
=
false
;
if
(
!
init
)
{
if
(
GAME
==
nullptr
)
return
;
if
(
GAME
->
GetSystemState
(
)
!=
eSystemState
::
GS_PLAYING_GAME
)
return
;
if
(
!
SF
->
getSAMP
(
)
->
IsInitialized
(
)
)
return
;
SF
->
getSAMP
(
)
->
getChat
(
)
->
AddChatMessage
(
-
1
,
"{FFFFFF}• {FFDA44}[SAMPFUNCS]: {FFFFFF}Loaded."
)
;
init
=
true
;
}
// Уведомляет только 1 раз, держа оружие в руке при подгрузке скрипта. без использования static флудит в чат, пытался исправить установкой 0 значения - сразу же заменяет, return'нить - не помогло.
static
int
current_weapon
=
SF
->
getSAMP
(
)
->
getPlayers
(
)
->
pLocalPlayer
->
byteCurrentWeapon
;
if
(
current_weapon
==
31
)
{
SF
->
getSAMP
(
)
->
getChat
(
)
->
AddChatMessage
(
-
1
,
"{FFFFFF}• {FFDA44}[SAMPFUNCS]: {FFFFFF}M4A1 at your right hand."
)
;
current_weapon
=
0
;
}
}
|
|
|

11.01.2019, 00:41
|
|
Постоянный
Регистрация: 21.11.2014
Сообщений: 540
С нами:
6039222
Репутация:
163
|
|
Сообщение от Harryss
Вынес за блок init, но уведомляет об оружии в руке только при загрузке скрипта. Почему лишь при загрузке?
C++:
Код:
void
CALLBACK
mainloop
(
)
{
static
bool
init
=
false
;
if
(
!
init
)
{
if
(
GAME
==
nullptr
)
return
;
if
(
GAME
->
GetSystemState
(
)
!=
eSystemState
::
GS_PLAYING_GAME
)
return
;
if
(
!
SF
->
getSAMP
(
)
->
IsInitialized
(
)
)
return
;
SF
->
getSAMP
(
)
->
getChat
(
)
->
AddChatMessage
(
-
1
,
"{FFFFFF}• {FFDA44}[SAMPFUNCS]: {FFFFFF}Loaded."
)
;
init
=
true
;
}
// Уведомляет только 1 раз, держа оружие в руке при подгрузке скрипта. без использования static флудит в чат, пытался исправить установкой 0 значения - сразу же заменяет, return'нить - не помогло.
static
int
current_weapon
=
SF
->
getSAMP
(
)
->
getPlayers
(
)
->
pLocalPlayer
->
byteCurrentWeapon
;
if
(
current_weapon
==
31
)
{
SF
->
getSAMP
(
)
->
getChat
(
)
->
AddChatMessage
(
-
1
,
"{FFFFFF}• {FFDA44}[SAMPFUNCS]: {FFFFFF}M4A1 at your right hand."
)
;
current_weapon
=
0
;
}
}
статик это круто
|
|
|

11.01.2019, 07:08
|
|
Участник форума
Регистрация: 12.10.2014
Сообщений: 156
С нами:
6096955
Репутация:
78
|
|
Сообщение от Rinat_Namazov
Че за ...?
Перечисляй так:
C++:
Код:
case
1
:
case
3
:
case
4
:
case
5
:
case
6
:
case
22
:
// ...
Ped
->
GetTransformedBonePosition
(
(
eBone
)
i
,
&
vPos
[
counter
]
)
;
counter
++
;
break
;
нахуя здесь свитч обьясните, если можно сразу вызвать функу какую он хочет перед этим поставив проверку на число
|
|
|

11.01.2019, 17:39
|
|
Новичок
Регистрация: 03.01.2019
Сообщений: 4
С нами:
3873616
Репутация:
0
|
|
Попытался сделать получение координат кости и рисовать на них, но чё то не то
C++:
Код:
#define _SILENCE_STDEXT_HASH_DEPRECATION_WARNINGS
#include
#include
#include
#include
#define FUNC_IsVisible 0x536BC0
#include "SAMPFUNCS_API.h"
#include "game_api\game_api.h"
SAMPFUNCS
*
SF
=
new
SAMPFUNCS
(
)
;
bool
CALLBACK
Present
(
CONST RECT
*
pSourceRect
,
CONST RECT
*
pDestRect
,
HWND hDestWindowOverride
,
CONST RGNDATA
*
pDirtyRegion
)
{
if
(
SUCCEEDED
(
SF
->
getRender
(
)
->
BeginRender
(
)
)
)
// если рендерер готов к рисованию
{
for
(
int
i
=
0
;
i
getSAMP
(
)
->
getPlayers
(
)
->
pRemotePlayer
[
i
]
->
pPlayerData
->
pSAMP_Actor
->
pGTA_Ped
;
CPed
*
Ped
=
GAME
->
GetPools
(
)
->
GetPed
(
(
DWORD
*
)
actorInfo
)
;
float
posX
[
15
]
,
posY
[
15
]
;
int
counter
=
0
;
CVector vPos
[
15
]
;
for
(
int
i
=
1
;
i
GetTransformedBonePosition
(
(
eBone
)
i
,
&
vPos
[
counter
]
)
;
counter
++
;
case
3
:
Ped
->
GetTransformedBonePosition
(
(
eBone
)
i
,
&
vPos
[
counter
]
)
;
counter
++
;
case
4
:
Ped
->
GetTransformedBonePosition
(
(
eBone
)
i
,
&
vPos
[
counter
]
)
;
counter
++
;
case
5
:
Ped
->
GetTransformedBonePosition
(
(
eBone
)
i
,
&
vPos
[
counter
]
)
;
counter
++
;
case
6
:
Ped
->
GetTransformedBonePosition
(
(
eBone
)
i
,
&
vPos
[
counter
]
)
;
counter
++
;
case
22
:
Ped
->
GetTransformedBonePosition
(
(
eBone
)
i
,
&
vPos
[
counter
]
)
;
counter
++
;
case
23
:
Ped
->
GetTransformedBonePosition
(
(
eBone
)
i
,
&
vPos
[
counter
]
)
;
counter
++
;
case
25
:
Ped
->
GetTransformedBonePosition
(
(
eBone
)
i
,
&
vPos
[
counter
]
)
;
counter
++
;
case
32
:
Ped
->
GetTransformedBonePosition
(
(
eBone
)
i
,
&
vPos
[
counter
]
)
;
counter
++
;
case
33
:
Ped
->
GetTransformedBonePosition
(
(
eBone
)
i
,
&
vPos
[
counter
]
)
;
counter
++
;
case
35
:
Ped
->
GetTransformedBonePosition
(
(
eBone
)
i
,
&
vPos
[
counter
]
)
;
counter
++
;
case
42
:
Ped
->
GetTransformedBonePosition
(
(
eBone
)
i
,
&
vPos
[
counter
]
)
;
counter
++
;
case
43
:
Ped
->
GetTransformedBonePosition
(
(
eBone
)
i
,
&
vPos
[
counter
]
)
;
counter
++
;
case
52
:
Ped
->
GetTransformedBonePosition
(
(
eBone
)
i
,
&
vPos
[
counter
]
)
;
counter
++
;
case
53
:
Ped
->
GetTransformedBonePosition
(
(
eBone
)
i
,
&
vPos
[
counter
]
)
;
counter
++
;
}
}
if
(
Ped
->
IsOnScreen
(
)
)
{
for
(
int
i
=
0
;
i
getGame
(
)
->
convert3DCoordsToScreen
(
vPos
[
i
]
.
fX
,
vPos
[
i
]
.
fY
,
vPos
[
i
]
.
fZ
,
&
posX
[
i
]
,
&
posY
[
i
]
)
;
SF
->
getRender
(
)
->
DrawLine
(
posX
[
0
]
,
posY
[
0
]
,
posX
[
1
]
,
posY
[
1
]
,
2
,
0xFFFFFFFF
)
;
SF
->
getRender
(
)
->
DrawLine
(
posX
[
0
]
,
posY
[
0
]
,
posX
[
11
]
,
posY
[
11
]
,
2
,
0xFFFFFFFF
)
;
SF
->
getRender
(
)
->
DrawLine
(
posX
[
0
]
,
posY
[
0
]
,
posX
[
13
]
,
posY
[
13
]
,
2
,
0xFFFFFFFF
)
;
SF
->
getRender
(
)
->
DrawLine
(
posX
[
1
]
,
posY
[
1
]
,
posX
[
2
]
,
posY
[
2
]
,
2
,
0xFFFFFFFF
)
;
SF
->
getRender
(
)
->
DrawLine
(
posX
[
2
]
,
posY
[
2
]
,
posX
[
5
]
,
posY
[
5
]
,
2
,
0xFFFFFFFF
)
;
SF
->
getRender
(
)
->
DrawLine
(
posX
[
2
]
,
posY
[
2
]
,
posX
[
8
]
,
posY
[
8
]
,
2
,
0xFFFFFFFF
)
;
SF
->
getRender
(
)
->
DrawLine
(
posX
[
2
]
,
posY
[
2
]
,
posX
[
3
]
,
posY
[
3
]
,
2
,
0xFFFFFFFF
)
;
SF
->
getRender
(
)
->
DrawLine
(
posX
[
3
]
,
posY
[
3
]
,
posX
[
4
]
,
posY
[
4
]
,
2
,
0xFFFFFFFF
)
;
SF
->
getRender
(
)
->
DrawLine
(
posX
[
5
]
,
posY
[
5
]
,
posX
[
6
]
,
posY
[
6
]
,
2
,
0xFFFFFFFF
)
;
SF
->
getRender
(
)
->
DrawLine
(
posX
[
6
]
,
posY
[
6
]
,
posX
[
7
]
,
posY
[
7
]
,
2
,
0xFFFFFFFF
)
;
SF
->
getRender
(
)
->
DrawLine
(
posX
[
8
]
,
posY
[
8
]
,
posX
[
9
]
,
posY
[
9
]
,
2
,
0xFFFFFFFF
)
;
SF
->
getRender
(
)
->
DrawLine
(
posX
[
9
]
,
posY
[
9
]
,
posX
[
10
]
,
posY
[
10
]
,
2
,
0xFFFFFFFF
)
;
}
SF
->
getRender
(
)
->
EndRender
(
)
;
// завершаем рисование
}
}
;
return
true
;
// возвращаем положительный результат
}
;
void
CALLBACK
mainloop
(
)
{
static
bool
init
=
false
;
if
(
!
init
)
{
if
(
GAME
==
nullptr
)
return
;
if
(
GAME
->
GetSystemState
(
)
!=
eSystemState
::
GS_PLAYING_GAME
)
return
;
if
(
!
SF
->
getSAMP
(
)
->
IsInitialized
(
)
)
return
;
//SF->getSAMP()->registerChatCommand("stillobj", sasas);
init
=
true
;
}
}
BOOL APIENTRY
DllMain
(
HMODULE hModule
,
DWORD dwReasonForCall
,
LPVOID lpReserved
)
{
switch
(
dwReasonForCall
)
{
case
DLL_PROCESS_ATTACH
:
SF
->
initPlugin
(
mainloop
,
hModule
)
;
break
;
case
DLL_THREAD_ATTACH
:
case
DLL_THREAD_DETACH
:
case
DLL_PROCESS_DETACH
:
break
;
}
return
TRUE
;
}
В чём ошибка?
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|