 |
|

06.07.2019, 19:51
|
|
Участник форума
Регистрация: 17.12.2017
Сообщений: 110
С нами:
4423953
Репутация:
68
|
|
как сделать альтернативу keyhook_keycombo_pressed из собейта в сф?
|
|
|

06.07.2019, 20:50
|
|
Постоянный
Регистрация: 17.01.2014
Сообщений: 493
С нами:
6483143
Репутация:
93
|
|
Обновляю запрос.
[QUOTE="Спойлер"]
[COLOR="#363940"]
[QUOTE="ishi"]
Есть функция для поиска последовательности строчных символов:
C++:
[CODE]
int
findstring
(
void
*
where_
,
char
*
what
,
int
whereSize
)
{
void
*
temp
=
malloc
(
strlen
(
what
)
+
1
)
;
int
iterator
=
0
;
char
*
yo
=
new
char
[
strlen
(
what
)
+
1
]
;
yo
=
(
char
*
)
temp
;
char
*
tempptr
=
static_cast
(
where_
)
;
while
(
iterator
C++:
[CODE]
int
findstring
(
void
*
where_
,
char
*
what
,
int
whereSize
)
{
void
*
temp
=
malloc
(
strlen
(
what
)
+
1
)
;
int
iterator
=
0
;
char
*
yo
=
static_cast
(
temp
)
+
strlen
(
what
)
+
1
;
char
*
tempptr
=
static_cast
(
where_
)
;
while
(
iterator
Теперь из десяти запусков по 100 вызовов, 8-9 запусков идут без ошибок, а конкретно: ошибка вылетает первые
|
|
|

06.07.2019, 21:46
|
|
Постоянный
Регистрация: 14.11.2017
Сообщений: 319
С нами:
4472205
Репутация:
163
|
|
[QUOTE="ishi"]
Обновляю запрос.
В yo была утечка, исправив слепил это:
C++:
[CODE]
int
findstring
(
void
*
where_
,
char
*
what
,
int
whereSize
)
{
void
*
temp
=
malloc
(
strlen
(
what
)
+
1
)
;
int
iterator
=
0
;
char
*
yo
=
static_cast
(
temp
)
+
strlen
(
what
)
+
1
;
char
*
tempptr
=
static_cast
(
where_
)
;
while
(
iterator
|
|
|

06.07.2019, 21:56
|
|
Участник форума
Регистрация: 06.01.2016
Сообщений: 154
С нами:
5447649
Репутация:
28
|
|
[QUOTE="ishi"]
Обновляю запрос.
В yo была утечка, исправив слепил это:
C++:
[CODE]
int
findstring
(
void
*
where_
,
char
*
what
,
int
whereSize
)
{
void
*
temp
=
malloc
(
strlen
(
what
)
+
1
)
;
int
iterator
=
0
;
char
*
yo
=
static_cast
(
temp
)
+
strlen
(
what
)
+
1
;
char
*
tempptr
=
static_cast
(
where_
)
;
while
(
iterator
C++:
Код:
char
*
yo
=
static_cast
(
temp
)
+
strlen
(
what
)
+
1
;
+ 1 не нужен, так ты будешь получать указатель на конец строки + 1, а это не только может приводить к неправильному результату функции, но и изменять данные в чужой выделенной памяти и приводить к сбою программы
C++:
[CODE]
while
(
iterator
Тут должен быть оператор
C++:
[CODE]
int
findstring
(
void
*
where_
,
char
*
what
,
int
whereSize
)
{
void
*
temp
=
malloc
(
strlen
(
what
)
+
1
)
;
int
iterator
=
0
;
char
*
yo
=
static_cast
(
temp
)
+
strlen
(
what
)
;
char
*
tempptr
=
static_cast
(
where_
)
;
while
(
iterator
И вообще, можно было бы реализовать функцию и без промежуточного буфера temp, не знаю зачем ты это сделал.
Или вовсе использовать strstr, раз уже используешь strcmp.
C++:
[CODE]
int
findstring
(
const
char
*
str1
,
const
char
*
str2
)
{
int
str1_len
=
strlen
(
str1
)
;
int
str2_len
=
strlen
(
str2
)
;
for
(
int
i
=
0
;
i
|
|
|

06.07.2019, 23:34
|
|
Новичок
Регистрация: 13.10.2017
Сообщений: 28
С нами:
4516996
Репутация:
13
|
|
в общем проблема, пытаюсь отрендерить линию от головы до пуза, в итоге линия строится нормально только на первого попавшегося в радиусе стрима актера, на остальных выходит кривота, как исправлять?
Сообщение от Спойлер
C++:
Код:
for
(
int
i
=
0
;
i
GetPlayerPool
(
)
;
CRemotePlayer
*
pRemote
;
if
(
pPlayerPool
->
GetPlayer
(
i
)
)
{
pRemote
=
pPlayerPool
->
GetPlayer
(
i
)
;
if
(
pRemote
->
m_pPed
)
{
SAMP
::
CPed
*
pRemotePed
=
pRemote
->
m_pPed
;
// Handle REMOTE Player
SAMP
::
CPed
*
pLocalPed
=
SAMP
::
pGame
->
m_pPlayerPed
;
// Handle LOCAL Player
if
(
!
pRemotePed
->
IsDead
(
)
||
!
pLocalPed
->
IsDead
(
)
)
{
SAMP
::
CVector pRemoteFirstBoneVector
;
pRemotePed
->
GetBonePosition
(
BONE_HEAD
,
&
pRemoteFirstBoneVector
)
;
SAMP
::
CVector pRemoteSecondBoneVector
;
pRemotePed
->
GetBonePosition
(
BONE_SPINE1
,
&
pRemoteSecondBoneVector
)
;
D3DXVECTOR3 pRemoteFirstBoneDX
;
pRemoteFirstBoneDX
.
x
=
pRemoteFirstBoneVector
.
x
;
pRemoteFirstBoneDX
.
y
=
pRemoteFirstBoneVector
.
y
;
pRemoteFirstBoneDX
.
z
=
pRemoteFirstBoneVector
.
z
;
D3DXVECTOR3 pRemoteSecondBoneDX
;
pRemoteSecondBoneDX
.
x
=
pRemoteSecondBoneVector
.
x
;
pRemoteSecondBoneDX
.
y
=
pRemoteSecondBoneVector
.
y
;
pRemoteSecondBoneDX
.
z
=
pRemoteSecondBoneVector
.
z
;
D3DXVECTOR3 firstCalculated
;
D3DXVECTOR3 secondCalculated
;
CalcScreenCoors
(
&
pRemoteFirstBoneDX
,
&
firstCalculated
)
;
CalcScreenCoors
(
&
pRemoteSecondBoneDX
,
&
secondCalculated
)
;
draw
.
Line
(
firstCalculated
.
x
,
firstCalculated
.
y
,
secondCalculated
.
x
,
secondCalculated
.
y
,
D3DCOLOR_ARGB
(
255
,
255
,
255
,
255
)
)
;
//draw.Text(screenPosEx.x, screenPosEx.y, nickname, fontColor, false, TextAlignment::kCenter);
}
}
}
}
Сообщение от Спойлер
Eu-xFuZUfxU.jpgenziweee · 6 Июл 2019 в 22:34' data-fancybox="lb-post-364267" data-lb-caption-extra-html="" data-lb-sidebar-href="" data-single-image="1" data-src="/proxy.php?image=https%3A%2F%2Fpp.userapi.com%2Fc85 1432%2Fv851432882%2F163f36%2FEu-xFuZUfxU.jpg&hash=708997e6c7b872a49ea3b1d80d772300 " style="cursor: pointer;" title="Eu-xFuZUfxU.jpg">

|
|
|

06.07.2019, 23:54
|
|
Познавший АНТИЧАТ
Регистрация: 16.03.2017
Сообщений: 1,626
С нами:
4821087
Репутация:
133
|
|
Сообщение от enziweee
в общем проблема, пытаюсь отрендерить линию от головы до пуза, в итоге линия строится нормально только на первого попавшегося в радиусе стрима актера, на остальных выходит кривота, как исправлять?
Сообщение от Спойлер
C++:
Код:
for
(
int
i
=
0
;
i
GetPlayerPool
(
)
;
CRemotePlayer
*
pRemote
;
if
(
pPlayerPool
->
GetPlayer
(
i
)
)
{
pRemote
=
pPlayerPool
->
GetPlayer
(
i
)
;
if
(
pRemote
->
m_pPed
)
{
SAMP
::
CPed
*
pRemotePed
=
pRemote
->
m_pPed
;
// Handle REMOTE Player
SAMP
::
CPed
*
pLocalPed
=
SAMP
::
pGame
->
m_pPlayerPed
;
// Handle LOCAL Player
if
(
!
pRemotePed
->
IsDead
(
)
||
!
pLocalPed
->
IsDead
(
)
)
{
SAMP
::
CVector pRemoteFirstBoneVector
;
pRemotePed
->
GetBonePosition
(
BONE_HEAD
,
&
pRemoteFirstBoneVector
)
;
SAMP
::
CVector pRemoteSecondBoneVector
;
pRemotePed
->
GetBonePosition
(
BONE_SPINE1
,
&
pRemoteSecondBoneVector
)
;
D3DXVECTOR3 pRemoteFirstBoneDX
;
pRemoteFirstBoneDX
.
x
=
pRemoteFirstBoneVector
.
x
;
pRemoteFirstBoneDX
.
y
=
pRemoteFirstBoneVector
.
y
;
pRemoteFirstBoneDX
.
z
=
pRemoteFirstBoneVector
.
z
;
D3DXVECTOR3 pRemoteSecondBoneDX
;
pRemoteSecondBoneDX
.
x
=
pRemoteSecondBoneVector
.
x
;
pRemoteSecondBoneDX
.
y
=
pRemoteSecondBoneVector
.
y
;
pRemoteSecondBoneDX
.
z
=
pRemoteSecondBoneVector
.
z
;
D3DXVECTOR3 firstCalculated
;
D3DXVECTOR3 secondCalculated
;
CalcScreenCoors
(
&
pRemoteFirstBoneDX
,
&
firstCalculated
)
;
CalcScreenCoors
(
&
pRemoteSecondBoneDX
,
&
secondCalculated
)
;
draw
.
Line
(
firstCalculated
.
x
,
firstCalculated
.
y
,
secondCalculated
.
x
,
secondCalculated
.
y
,
D3DCOLOR_ARGB
(
255
,
255
,
255
,
255
)
)
;
//draw.Text(screenPosEx.x, screenPosEx.y, nickname, fontColor, false, TextAlignment::kCenter);
}
}
}
}
Сообщение от Спойлер
Eu-xFuZUfxU.jpgrraggerr · 6 Июл 2019 в 22:54' data-fancybox="lb-post-364276" data-lb-caption-extra-html="" data-lb-sidebar-href="" data-single-image="1" data-src="/proxy.php?image=https%3A%2F%2Fpp.userapi.com%2Fc85 1432%2Fv851432882%2F163f36%2FEu-xFuZUfxU.jpg&hash=708997e6c7b872a49ea3b1d80d772300 " style="cursor: pointer;" title="Eu-xFuZUfxU.jpg">

попробуй добавить проверку на
if (CalcScreenCoors)
и на
GetBonePosition
и еще у тебя ошибки, кароче на
C++:
Код:
if
(
pLocalPed
->
IsDead
(
)
)
return
;
for
(
int
i
=
0
;
i
GetPlayerPool
(
)
;
CRemotePlayer
*
pRemote
;
if
(
pPlayerPool
&&
pPlayerPool
->
GetPlayer
(
i
)
)
{
pRemote
=
pPlayerPool
->
GetPlayer
(
i
)
;
if
(
pRemote
->
m_pPed
)
{
SAMP
::
CPed
*
pRemotePed
=
pRemote
->
m_pPed
;
// Handle REMOTE Player
SAMP
::
CPed
*
pLocalPed
=
SAMP
::
pGame
->
m_pPlayerPed
;
// Handle LOCAL Player
if
(
pRemotePed
&&
pLocalPed
&&
!
pRemotePed
->
IsDead
(
)
)
{
SAMP
::
CVector pRemoteFirstBoneVector
;
if
(
!
pRemotePed
->
GetBonePosition
(
BONE_HEAD
,
&
pRemoteFirstBoneVector
)
)
continue
;
SAMP
::
CVector pRemoteSecondBoneVector
;
if
(
!
pRemotePed
->
GetBonePosition
(
BONE_SPINE1
,
&
pRemoteSecondBoneVector
)
)
continue
;
D3DXVECTOR3 pRemoteFirstBoneDX
;
pRemoteFirstBoneDX
.
x
=
pRemoteFirstBoneVector
.
x
;
pRemoteFirstBoneDX
.
y
=
pRemoteFirstBoneVector
.
y
;
pRemoteFirstBoneDX
.
z
=
pRemoteFirstBoneVector
.
z
;
D3DXVECTOR3 pRemoteSecondBoneDX
;
pRemoteSecondBoneDX
.
x
=
pRemoteSecondBoneVector
.
x
;
pRemoteSecondBoneDX
.
y
=
pRemoteSecondBoneVector
.
y
;
pRemoteSecondBoneDX
.
z
=
pRemoteSecondBoneVector
.
z
;
D3DXVECTOR3 firstCalculated
;
D3DXVECTOR3 secondCalculated
;
if
(
!
CalcScreenCoors
(
&
pRemoteFirstBoneDX
,
&
firstCalculated
)
)
continue
;
if
(
CalcScreenCoors
(
&
pRemoteSecondBoneDX
,
&
secondCalculated
)
)
continue
;
draw
.
Line
(
firstCalculated
.
x
,
firstCalculated
.
y
,
secondCalculated
.
x
,
secondCalculated
.
y
,
D3DCOLOR_ARGB
(
255
,
255
,
255
,
255
)
)
;
//draw.Text(screenPosEx.x, screenPosEx.y, nickname, fontColor, false, TextAlignment::kCenter);
}
}
}
}
|
|
|

06.07.2019, 23:58
|
|
Новичок
Регистрация: 13.10.2017
Сообщений: 28
С нами:
4516996
Репутация:
13
|
|
Сообщение от B3JlOM_}I{OTTbI
попробуй добавить проверку на
if (CalcScreenCoors)
и на
GetBonePosition
каким образом................
|
|
|

07.07.2019, 00:01
|
|
Познавший АНТИЧАТ
Регистрация: 16.03.2017
Сообщений: 1,626
С нами:
4821087
Репутация:
133
|
|
Сообщение от enziweee
каким образом................
скопируй код и вставь, я не ебу что у тебя там за сдк, явно не сампфункс
|
|
|

07.07.2019, 00:10
|
|
Новичок
Регистрация: 13.10.2017
Сообщений: 28
С нами:
4516996
Репутация:
13
|
|
Сообщение от B3JlOM_}I{OTTbI
скопируй код и вставь, я не ебу что у тебя там за сдк, явно не сампфункс
лучара сдк
|
|
|

07.07.2019, 14:34
|
|
Новичок
Регистрация: 01.12.2009
Сообщений: 0
С нами:
8654409
Репутация:
0
|
|
C++:
Код:
// Возникает ошибка
string data
;
CHAR szBuffer
[
1024
]
;
strcpy
(
szBuffer
,
"{\"hash\":\"475d03f623908a13b6d8171221119a77\"}"
)
;
data
+=
szBuffer
;
// Не возникает ошибка
string data
;
CHAR szBuffer
[
1024
]
;
strcpy
(
szBuffer
,
"TEST"
)
;
data
+=
szBuffer
;
Хелп
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|