PDA

Просмотр полной версии : SAMPFUNCS | API C++


Страницы : 1 2 3 [4] 5 6 7 8

Rorian
08.01.2016, 21:02
Ребят скажите где находятся h файлы в DirectX SDK. Мне нужен файл d3dx9.h для настройки компилятора.


Просто установи его и подключи все к проекту. В настройках проекта

А вообще, есть такая вещь, как поиск по файлам и папкам)

Gabriel__
08.01.2016, 21:14
Просто установи его и подключи все к проекту. В настройках проекта
А вообще, есть такая вещь, как поиск по файлам и папкам)


Я хочу скомпилировать в devcpp там в ручную в каталогах нужно указывать include файлы. А в поиске файлов не нашлось ((((

Woofing Giraffe
09.01.2016, 10:53
Возможно ли в режиме наблюдения активировать радар?

CarLCas
09.01.2016, 11:42
Возможно ли в режиме наблюдения активировать радар?


Немного не понял вопрос, но отобразить радар можно так:

*(PBYTE)0xBAA3FB = 1;

kemperrr
09.01.2016, 12:42
Разобрался кто нить с эмуляцией клавиш? Help me pls

Woofing Giraffe
09.01.2016, 15:14
Немного не понял вопрос, но отобразить радар можно так:
*(PBYTE)0xBAA3FB = 1;


Не, я имею ввиду когда сервер даёт тебе RPC_ScrTogglePlayerSpectating или например просто коннектишся к серверу то худ вырубается

Gabriel__
09.01.2016, 15:31
Как записать значение по адресу памяти игры ?

Woofing Giraffe
09.01.2016, 15:33
Как записать значение по адресу памяти игры ?


*(тип*)адрес = значение;

Gabriel__
09.01.2016, 15:36
*(тип*)адрес = значение;


не понял как приведи пример так что ли *(bool*)0x335FF = 1;

Woofing Giraffe
09.01.2016, 15:45
не понял как приведи пример так что ли *(bool*)0x335FF = 1;


Адрес чёт странный, а так да

Gabriel__
09.01.2016, 15:54
Возможно ли в режиме наблюдения активировать радар?


SF->getCLEO()->callOpcode("0581: enable_radar 1"); - зациклить или адрес памяти юзнуть.

Подскажите как использовать проверку что игрок в транспорте (как опкод 00DF в клео)

Woofing Giraffe
09.01.2016, 16:00
SF->getCLEO()->callOpcode("0581: enable_radar 1"); - зациклить или адрес памяти юзнуть.


Не-а. Крч мне нужен ноп Keep GTA Hud turned on

Tray228
09.01.2016, 17:29
Как можно отправить урон с кулака?

Gabriel__
09.01.2016, 17:42
Как можно отправить урон с кулака?


Отправить через givetake damage и Raklogger в помощь.

Woofing Giraffe
09.01.2016, 18:21
Не-а. Крч мне нужен ноп Keep GTA Hud turned on


Как его вызвать? А то я что-то вообще хз

Gabriel__
09.01.2016, 18:47
Как его вызвать? А то я что-то вообще хз


Я не нашел этот ноп в собейте и в списке ( . Хотя точно помню что такой есть в собейте. Открой исходник собейта в поиске поищи что то подобное.

Woofing Giraffe
09.01.2016, 18:48
Я не нашел этот ноп в собейте и в списке ( . Хотя точно помню что такой есть в собейте. Открой исходник собейта в поиске поищи что то подобное.


В том то и дело что в исходнике не нашёл

Gabriel__
09.01.2016, 18:50
В том то и дело что в исходнике не нашёл


Попробуй в raklogger вычислить этот RPC. Можно в pawn отправлять его.

Woofing Giraffe
09.01.2016, 18:52
Попробуй в raklogger вычислить этот RPC. Можно в pawn отправлять его.


Я в идах пакетов и РПЦ копался, так и не нашёл

Gabriel__
09.01.2016, 18:56
Я в идах пакетов и РПЦ копался, так и не нашёл


У тебя есть pawno ?

Woofing Giraffe
09.01.2016, 18:56
У тебя есть pawno ?


Есть

Gabriel__
09.01.2016, 18:58
Есть


Ну тогда поищи функцию которая отключает худ или радар. И в raklogger поймай rpc

Woofing Giraffe
09.01.2016, 19:01
Ну тогда поищи функцию которая отключает худ или радар. И в raklogger поймай rpc


Через павно нельзя это вроде...

Gabriel__
09.01.2016, 19:04
Через павно нельзя это вроде...


Ну если это нельзя то и rpc такого не существует и сервер не может отключить худ и радар.

P.S Клиент наверно сам отключает худ и радар когда подключаешься и следишь.

Woofing Giraffe
09.01.2016, 19:07
Ну если это нельзя то и rpc такого не существует и сервер не может отключить худ и радар.
P.S Клиент наверно сам отключает худ и радар когда подключаешься и следишь.


Ну ёпт, в собе если это занопить то худ и радар не будет отключаться вообще

Rorian
10.01.2016, 08:11
Разобрался кто нить с эмуляцией клавиш? Help me pls


Функция к сожалению не рабочая

return
11.01.2016, 00:13
помогите сделать такую штуку в виде плагина




PHP:






{
$CLEO
}
{
$INCLUDE
SF
}
0000
:
15
@
=
1
wait
3000
0
BE4
:
raknet setup_incoming_packet_hook @bhop
while
true
wait
0
if
15
@
==
0
then
wait
5000
15
@
=
1
end
end
:
bhop
0
BE5
:
raknet
0
@
=
get_hook_param
PARAM_BITSTREAM
0
BE5
:
raknet
1
@
=
get_hook_param
PARAM_PACKETID
if
1
@
==
PACKET_BULLET_SYNC
then
0
BF3
:
raknet
5
@
=
bit_stream
0
@ get_data_ptr
0
C0C
:
7
@
=
struct
5
@ offset
30
size
4
0
C0C
:
8
@
=
struct
5
@ offset
34
size
4
0
C0C
:
9
@
=
struct
5
@ offset
38
size
4
0
C0C
:
10
@
=
struct
5
@ offset
1
size
2
0
C0C
:
11
@
=
struct
5
@ offset
3
size
1
0
C0C
:
12
@
=
struct
5
@ offset
4
size
2
0
B2B
:
samp
13
@
=
get_player_id_by_actor_handle
$PLAYER_ACTOR
0
B20
:
samp
14
@
=
actor_handle_by_samp_player_id
10
@
if
and
15
@
==
1
11
@
==
1
7
@
==
0.0
8
@
==
0.0
9
@
==
0.5
then
0
B2B
:
samp
13
@
=
get_player_id_by_actor_handle
$PLAYER_ACTOR
0
B20
:
samp
14
@
=
actor_handle_by_samp_player_id
10
@
0
B37
:
samp
27
@
=
get_player_color
10
@
0
B36
:
samp
30
@
=
get_player_nickname
10
@
0
AF8
:
samp add_message_to_chat
" %s[%d]: Возможно Damager"
color
27
@
30
@
10
@
15
@
=
0
end
end
0
BE0
:
raknet hook_ret
true

nikita_cheater
11.01.2016, 03:00
помогите сделать такую штуку в виде плагина



PHP:






{
$CLEO
}
{
$INCLUDE
SF
}
0000
:
15
@
=
1
wait
3000
0
BE4
:
raknet setup_incoming_packet_hook @bhop
while
true
wait
0
if
15
@
==
0
then
wait
5000
15
@
=
1
end
end
:
bhop
0
BE5
:
raknet
0
@
=
get_hook_param
PARAM_BITSTREAM
0
BE5
:
raknet
1
@
=
get_hook_param
PARAM_PACKETID
if
1
@
==
PACKET_BULLET_SYNC
then
0
BF3
:
raknet
5
@
=
bit_stream
0
@ get_data_ptr
0
C0C
:
7
@
=
struct
5
@ offset
30
size
4
0
C0C
:
8
@
=
struct
5
@ offset
34
size
4
0
C0C
:
9
@
=
struct
5
@ offset
38
size
4
0
C0C
:
10
@
=
struct
5
@ offset
1
size
2
0
C0C
:
11
@
=
struct
5
@ offset
3
size
1
0
C0C
:
12
@
=
struct
5
@ offset
4
size
2
0
B2B
:
samp
13
@
=
get_player_id_by_actor_handle
$PLAYER_ACTOR
0
B20
:
samp
14
@
=
actor_handle_by_samp_player_id
10
@
if
and
15
@
==
1
11
@
==
1
7
@
==
0.0
8
@
==
0.0
9
@
==
0.5
then
0
B2B
:
samp
13
@
=
get_player_id_by_actor_handle
$PLAYER_ACTOR
0
B20
:
samp
14
@
=
actor_handle_by_samp_player_id
10
@
0
B37
:
samp
27
@
=
get_player_color
10
@
0
B36
:
samp
30
@
=
get_player_nickname
10
@
0
AF8
:
samp add_message_to_chat
" %s[%d]: Возможно Damager"
color
27
@
30
@
10
@
15
@
=
0
end
end
0
BE0
:
raknet hook_ret
true








https://www.blast.hk/wiki/tutorials:api_lesson_raknet

return
11.01.2016, 06:17
https://www.blast.hk/wiki/tutorials:api_lesson_raknet



как это записать в сф или собейте?

PHP:






0
B2B
:
samp
13
@
=
get_player_id_by_actor_handle
$PLAYER_ACTOR
0
B20
:
samp
14
@
=
actor_handle_by_samp_player_id
10
@




как определить, что есть что?

PHP:






0
C0C
:
7
@
=
struct
5
@ offset
30
size
4
0
C0C
:
8
@
=
struct
5
@ offset
34
size
4
0
C0C
:
9
@
=
struct
5
@ offset
38
size
4
0
C0C
:
10
@
=
struct
5
@ offset
1
size
2
0
C0C
:
11
@
=
struct
5
@ offset
3
size
1
0
C0C
:
12
@
=
struct
5
@ offset
4
size
2
uint8_t byteType
;
uint16_t sTargetID
;
float fOrigin
[
3
]
;
float fTarget
[
3
]
;
float fCenter
[
3
]
;
uint8_t byteWeaponID
;

CarLCas
11.01.2016, 13:08
помогите сделать такую штуку в виде плагина



PHP:






{
$CLEO
}
{
$INCLUDE
SF
}
0000
:
15
@
=
1
wait
3000
0
BE4
:
raknet setup_incoming_packet_hook @bhop
while
true
wait
0
if
15
@
==
0
then
wait
5000
15
@
=
1
end
end
:
bhop
0
BE5
:
raknet
0
@
=
get_hook_param
PARAM_BITSTREAM
0
BE5
:
raknet
1
@
=
get_hook_param
PARAM_PACKETID
if
1
@
==
PACKET_BULLET_SYNC
then
0
BF3
:
raknet
5
@
=
bit_stream
0
@ get_data_ptr
0
C0C
:
7
@
=
struct
5
@ offset
30
size
4
0
C0C
:
8
@
=
struct
5
@ offset
34
size
4
0
C0C
:
9
@
=
struct
5
@ offset
38
size
4
0
C0C
:
10
@
=
struct
5
@ offset
1
size
2
0
C0C
:
11
@
=
struct
5
@ offset
3
size
1
0
C0C
:
12
@
=
struct
5
@ offset
4
size
2
0
B2B
:
samp
13
@
=
get_player_id_by_actor_handle
$PLAYER_ACTOR
0
B20
:
samp
14
@
=
actor_handle_by_samp_player_id
10
@
if
and
15
@
==
1
11
@
==
1
7
@
==
0.0
8
@
==
0.0
9
@
==
0.5
then
0
B2B
:
samp
13
@
=
get_player_id_by_actor_handle
$PLAYER_ACTOR
0
B20
:
samp
14
@
=
actor_handle_by_samp_player_id
10
@
0
B37
:
samp
27
@
=
get_player_color
10
@
0
B36
:
samp
30
@
=
get_player_nickname
10
@
0
AF8
:
samp add_message_to_chat
" %s[%d]: Возможно Damager"
color
27
@
30
@
10
@
15
@
=
0
end
end
0
BE0
:
raknet hook_ret
true








7@-9@ это fCenter[3]

10@ это sTargetID

11@ это byteType

return
11.01.2016, 17:20
7@-9@ это fCenter[3]
10@ это sTargetID
11@ это byteType


как это записать в сф или собейте?

PHP:






0
B2B
:
samp
13
@
=
get_player_id_by_actor_handle
$PLAYER_ACTOR
0
B20
:
samp
14
@
=
actor_handle_by_samp_player_id
10
@

Dark_Knight
11.01.2016, 17:26
Код:






WORD id = 1;
DWORD handle = SF->getSAMP()->getPlayers()->GetActorHandleFromSAMPPlayerID(id);
id = SF->getSAMP()->getPlayers()->GetSAMPPlayerIDFromGTAHandle(handle);

CarLCas
11.01.2016, 17:30
как это записать в сф или собейте?

PHP:






0
B2B
:
samp
13
@
=
get_player_id_by_actor_handle
$PLAYER_ACTOR
0
B20
:
samp
14
@
=
actor_handle_by_samp_player_id
10
@





SF:

int myid=SF->getSAMP()->getPlayers()->sLocalPlayerID;

int handle=SF->getSAMP()->getPlayers()->GetActorHandleFromSAMPPlayerID(sTargetID);

Sob:

g_Players->sLocalPlayerID;

getGTAPedFromSAMPPlayerID(sTargetID);

Gabriel__
11.01.2016, 17:56
Подскажите как проверить что игрок или актер водит транспорт ?

CarLCas
11.01.2016, 19:46
Подскажите как проверить что игрок или актер водит транспорт ?


if (SF->getSAMP()->getPlayers()->pLocalPlayer->pSAMP_Actor->pGTA_Ped->state==ACTOR_STATE_DRIVING)

По аналогии делается и для других игроков

menual
12.01.2016, 20:37
Как узнать или игрок в зоне прорисовки?

CarLCas
12.01.2016, 21:15
Как узнать или игрок в зоне прорисовки?


if (SF->getSAMP()->getPlayers()->IsPlayerDefined(id, true))

Dark_Knight
12.01.2016, 22:31
как сделать чтобы пули летели дальше и попадали в игрока


Может за тебя еще и посрать?

Tray228
12.01.2016, 22:31
Может за тебя еще и посрать?


что? я просто спросил возможно ли?

Dark_Knight
12.01.2016, 23:12
что? я просто спросил возможно ли?


Сначала ты спросил как, потом уже исправил на возможно. да возможно

Tray228
12.01.2016, 23:21
Сначала ты спросил как, потом уже исправил на возможно. да возможно


Извиняюсь, а вот мне нужно буллет дату хукать?

Dark_Knight
12.01.2016, 23:33
от сервера еще зависит

kemperrr
14.01.2016, 21:11
Нашел как эмулировать нажатие игровых клавиш, только вот нужно мне что бы сразу после нажатия клавиши она с эмулировалась еще раз, в mainloop сделал так

Код:






stOnFootData sync; // объявляем объект структуры stOnFootData, в которой хранятся данные.
memset(&sync, 0, sizeof(stOnFootData)); // обнуляем.

sync = SF->getSAMP()->getPlayers()->pLocalPlayer->onFootData;

sync.byteCurrentWeapon = 64;

BitStream bsActorSync;
bsActorSync.Write((BYTE)ID_PLAYER_SYNC);
bsActorSync.Write((PCHAR)&sync, sizeof(stOnFootData));
SF->getRakNet()->SendPacket(&bsActorSync);




Подскажите как сделать что бы клавиша нажималась несколько раз подряд

Tray228
15.01.2016, 22:30
Можно ли увеличить дальность пули?

Dark_Knight
15.01.2016, 23:53
Тебе уже говорили, что да.

Tray228
16.01.2016, 00:59
Тебе уже говорили, что да.


Я имел виду как именно, что нужно отправлять?

Dark_Knight
16.01.2016, 01:09
Я имел виду как именно, что нужно отправлять?


Думай сам уже. У тебя же есть мозги.

kemperrr
17.01.2016, 19:25
Спрошу еще раз, нашел как отправить на сервер пакет о нажатии клавиши, но беда, нажимается только один раз (код находится в mainloop), пытаясь отправить пакет о том что клавиша не нажата так же нажимается 1 раз + теряется соединение с сервером, дак вот более опытные подскажите как сделать что бы не отправлялось столько пакетов(во избежания дисконнектов) и сделать цикличное нажатие одной и той же клавиши дапустим Y ( Y - 64(0x40) , когда не нажата - 0(0x0) )

Код:






stOnFootData sync;
memset(&sync, 0, sizeof(stOnFootData));

sync = SF->getSAMP()->getPlayers()->pLocalPlayer->onFootData;

sync.byteCurrentWeapon = 64; // Y

BitStream bsActorSync;
bsActorSync.Write((BYTE)ID_PLAYER_SYNC);
bsActorSync.Write((PCHAR)&sync, sizeof(stOnFootData));
SF->getRakNet()->SendPacket(&bsActorSync);

return
18.01.2016, 11:41
как мышкой изменять координаты текста на экране?

ну, курсор отобразить я могу, но как управлять текст им?

Dark_Knight
18.01.2016, 20:33
Юзай std::vector и std::find для поиска или циклом фор авто пробегайся по вектору.

nikita_cheater
18.01.2016, 23:39
Спрошу еще раз, нашел как отправить на сервер пакет о нажатии клавиши, но беда, нажимается только один раз (код находится в mainloop), пытаясь отправить пакет о том что клавиша не нажата так же нажимается 1 раз + теряется соединение с сервером, дак вот более опытные подскажите как сделать что бы не отправлялось столько пакетов(во избежания дисконнектов) и сделать цикличное нажатие одной и той же клавиши дапустим Y ( Y - 64(0x40) , когда не нажата - 0(0x0) )

Код:






stOnFootData sync;
memset(&sync, 0, sizeof(stOnFootData));

sync = SF->getSAMP()->getPlayers()->pLocalPlayer->onFootData;

sync.byteCurrentWeapon = 64; // Y

BitStream bsActorSync;
bsActorSync.Write((BYTE)ID_PLAYER_SYNC);
bsActorSync.Write((PCHAR)&sync, sizeof(stOnFootData));
SF->getRakNet()->SendPacket(&bsActorSync);





byteCurrentWeapon - оружие в руке, а не нажатая клавиша

kemperrr
19.01.2016, 13:22
byteCurrentWeapon - оружие в руке, а не нажатая клавиша


RakLogger пиздеть не будет + я же говорю что он 1 раз нажимается

nikita_cheater
19.01.2016, 20:48
RakLogger пиздеть не будет + я же говорю что он 1 раз нажимается


Значит в твоем случае пиздит

kemperrr
19.01.2016, 21:48
Значит в твоем случае пиздит


Говорю еще раз - он 1 раз нажимает клавишу второй раз не хочет, а если после этой клавиши будет другая дапустим N потом Y и так поочередно то работает спокойно, но если же N надо нажать два раза то нажимается 1 раз вместо 2, 3 и так далее

Woofing Giraffe
19.01.2016, 22:18
Где ты взял что Y это 64?

Woofing Giraffe
19.01.2016, 22:56
Говорю еще раз - он 1 раз нажимает клавишу второй раз не хочет, а если после этой клавиши будет другая дапустим N потом Y и так поочередно то работает спокойно, но если же N надо нажать два раза то нажимается 1 раз вместо 2, 3 и так далее



C++:






void
EmulKey
(
int
KeyId
)
{
stOnFootData sync
;
memset
(
&
sync
,
0
,
sizeof
(
stOnFootData
)
)
;
sync
=
SF
->
getSAMP
(
)
->
getPlayers
(
)
->
pLocalPlayer
->
onFootData
;
sync
.
byteCurrentWeapon
=
KeyId
;
BitStream bsActorSync
;
bsActorSync
.
Write
(
(
BYTE
)
ID_PLAYER_SYNC
)
;
bsActorSync
.
Write
(
(
PCHAR
)
&
sync
,
sizeof
(
stOnFootData
)
)
;
SF
->
getRakNet
(
)
->
SendPacket
(
&
bsActorSync
)
;
memset
(
&
bsActorSync
,
0
,
sizeof
(
BitStream
)
)
;
sync
.
byteCurrentWeapon
=
0
;
bsActorSync
.
Write
(
(
BYTE
)
ID_PLAYER_SYNC
)
;
bsActorSync
.
Write
(
(
PCHAR
)
&
sync
,
sizeof
(
stOnFootData
)
)
;
SF
->
getRakNet
(
)
->
SendPacket
(
&
bsActorSync
)
;
}




И в мэин

C++:





[CODE]
for
(
int
i
=
0
;
i

kemperrr
20.01.2016, 10:29
[QUOTE="Woofing Giraffe"]

C++:






void
EmulKey
(
int
KeyId
)
{
stOnFootData sync
;
memset
(
&
sync
,
0
,
sizeof
(
stOnFootData
)
)
;
sync
=
SF
->
getSAMP
(
)
->
getPlayers
(
)
->
pLocalPlayer
->
onFootData
;
sync
.
byteCurrentWeapon
=
KeyId
;
BitStream bsActorSync
;
bsActorSync
.
Write
(
(
BYTE
)
ID_PLAYER_SYNC
)
;
bsActorSync
.
Write
(
(
PCHAR
)
&
sync
,
sizeof
(
stOnFootData
)
)
;
SF
->
getRakNet
(
)
->
SendPacket
(
&
bsActorSync
)
;
memset
(
&
bsActorSync
,
0
,
sizeof
(
BitStream
)
)
;
sync
.
byteCurrentWeapon
=
0
;
bsActorSync
.
Write
(
(
BYTE
)
ID_PLAYER_SYNC
)
;
bsActorSync
.
Write
(
(
PCHAR
)
&
sync
,
sizeof
(
stOnFootData
)
)
;
SF
->
getRakNet
(
)
->
SendPacket
(
&
bsActorSync
)
;
}




И в мэин

C++:





[CODE]
for
(
int
i
=
0
;
i

Dark_Knight
20.01.2016, 12:18
Зачем это ты используешь?

Код:






memset(&bsActorSync, 0, sizeof(BitStream));
sync.byteCurrentWeapon = 0;
bsActorSync.Write((BYTE)ID_PLAYER_SYNC);
bsActorSync.Write((PCHAR)&sync, sizeof(stOnFootData));
SF->getRakNet()->SendPacket(&bsActorSync);

Woofing Giraffe
20.01.2016, 12:22
Обнулить клавишу, оно без этого почему то 2 и более раз 1 и ту же клавишу не отправит

Tray228
21.01.2016, 22:10
есть ли функция конвектора из 3D в 2D

itsLegend
21.01.2016, 22:12
есть ли функция конвектора из 3D в 2D


Ищи в классе SFGame: SF->getGame()

Tray228
21.01.2016, 22:14
Ищи в классе SFGame: SF->getGame()


там только 3D

itsLegend
21.01.2016, 22:15
там только 3D





есть ли функция конвектора из3D в 2D


void convert3DCoordsToScreen( float fX, float fY, float fZ, float *fScreenX, float *fScreenY );

далее: void convertWindowCoordsToGame( float fWX, float fWY, float *fGX, float *fGY );

FordeD
27.01.2016, 00:18
Какими способами можно осуществить написание текста рядом с головой персонажа?

И по определенным никам ...

itsLegend
27.01.2016, 03:09
Какими способами можно осуществить написание текста рядом с головой персонажа?
И по определенным никам ...


Рендером?

FordeD
27.01.2016, 10:16
Рендером?


если не ошибаюсь то да, рендером

By_Surse
27.01.2016, 13:18
как в SF получить ID оружия, который сейчас находится в руке?

itsLegend
27.01.2016, 14:14
как в SF получить ID оружия, который сейчас находится в руке?



C++:






eWeaponSlot slot
=
PEDSELF
->
GetCurrentWeaponSlot
(
)
;
if
(
slot
!=
eWeaponSlot
::
WEAPONSLOT_TYPE_UNARMED
)
{
CWeapon
*
weapon
=
PEDSELF
->
GetWeapon
(
slot
)
;
}

FordeD
27.01.2016, 15:55
Как можно получить свой ID?

itsLegend
27.01.2016, 15:58
SF->getSAMP()->getPlayers()->sLocalPlayerID

By_Surse
27.01.2016, 17:27
C++:






eWeaponSlot slot
=
PEDSELF
->
GetCurrentWeaponSlot
(
)
;
if
(
slot
!=
eWeaponSlot
::
WEAPONSLOT_TYPE_UNARMED
)
{
CWeapon
*
weapon
=
PEDSELF
->
GetWeapon
(
slot
)
;
}





weapon это ID?

Dark_Knight
27.01.2016, 18:03
weapon это ID?


Это класс, в нем уже можно вытащить ид.

By_Surse
28.01.2016, 11:59
как загрузить библиотеку сампа?

Woofing Giraffe
28.01.2016, 15:34
как загрузить библиотеку сампа?


Она по дефолту загружена

By_Surse
28.01.2016, 16:39
Она по дефолту загружена


Я имел ввиду чем можно заменить этот опкод? 0AA2: 30@ = load_library "samp.dll"

Woofing Giraffe
28.01.2016, 16:41
Я имел ввиду чем можно заменить этот опкод? 0AA2: 30@ = load_library "samp.dll"


А что тебе именно надо? Какая функция?

itsLegend
28.01.2016, 20:47
SF->getSAMP()->getSAMPAddr()

FordeD
29.01.2016, 00:23
Спрошу еще раз, может знает кто как над своим персонажем в SAMP вывести 3D текст который будет обновлять позицию если изменяются координаты игрока?

itsLegend
29.01.2016, 00:39
Спрошу еще раз, может знает кто как над своим персонажем в SAMP вывести 3D текст который будет обновлять позицию если изменяются координаты игрока?


Рисуешь рендером.

Получаешь позицию своего педа, рисуешь с помощью созданного шрифта(stFontInfo*). Всё.

FordeD
29.01.2016, 01:12
Рисуешь рендером.
Получаешь позицию своего педа, рисуешь с помощью созданного шрифта(stFontInfo*). Всё.



Вроде как получил координаты, определил шрифт. Все равно работает

Код:

C++:






bool
CALLBACK
Present
(
CONST RECT
*
pSourceRect
,
CONST RECT
*
pDestRect
,
HWND hDestWindowOverride
,
CONST RGNDATA
*
pDirtyRegion
)
{
if
(
SUCCEEDED
(
SF
->
getRender
(
)
->
BeginRender
(
)
)
)
// если девайс готов к рисованию
{
float
fPos
[
]
=
{
PEDSELF
->
GetPosition
(
)
->
fX
,
PEDSELF
->
GetPosition
(
)
->
fY
,
PEDSELF
->
GetPosition
(
)
->
fZ
,
}
;
SF
->
getSAMP
(
)
->
getInfo
(
)
->
pPools
->
pText3D
->
Create3DText
(
100
,
"3D text"
,
D3DCOLOR_ARGB
(
0xFF
,
0xFF
,
0xFF
,
00
)
,
fPos
,
100.0f
,
true
,
-
1
,
-
1
)
;
SF
->
getRender
(
)
->
EndRender
(
)
;
// завершаем рисование
}
;
return
true
;
// возвращаем положительный результат
}
;




И вот вывод:

C++:






pFont
=
SF
->
getRender
(
)
->
CreateNewFont
(
"Tahoma"
,
11
,
FCR_BORDER
)
;
SF
->
getRender
(
)
->
registerD3DCallback
(
eDirect3DDeviceMethods
::
D3DMETHOD_PRESENT
,
HUD
)
;




Строку stFontInfo *pFont; прописал после инклудов

itsLegend
29.01.2016, 01:19
Божечки.

Стирай это всё.

Создай 3д текст.

В цикле просто SF->getSAMP()->getInfo()->pPools->pText3D->textLabel[100]->fPosition[0] = ...

Dark_Knight
29.01.2016, 01:22
В мейнлупе, а не коллбеке рендера.

FordeD
29.01.2016, 01:34
Божечки.
Стирай это всё.

Создай 3д текст.
В цикле просто SF->getSAMP()->getInfo()->pPools->pText3D->textLabel[100]->fPosition[0] = ...


что-то не так ...

C++:






char
textLabel
[
100
]
=
"Yeah!"
;
SF
->
getSAMP
(
)
->
getInfo
(
)
->
pPools
->
pText3D
->
textLabel
[
100
]
->
fPosition
[
0
]
=
PEDSELF
->
GetPosition
(
)
->
fX
;




просто не пережевывает...

Dark_Knight
29.01.2016, 01:47
Всмысле??

FordeD
29.01.2016, 01:52
В мейнлупе, а не коллбеке рендера.


на начало (SF) все время ругается куда не поставь. Вот что я забыл поставить?

C++:






char
textLabel
[
]
=
"Yeah!"
;
SF
->
getSAMP
(
)
->
getInfo
(
)
->
pPools
->
pText3D
->
textLabel
[
100
]
->
fPosition
[
0
]
=
PEDSELF
->
GetPosition
(
)
->
fX
;
SF
->
getSAMP
(
)
->
getInfo
(
)
->
pPools
->
pText3D
->
textLabel
[
100
]
->
fPosition
[
1
]
=
PEDSELF
->
GetPosition
(
)
->
fY
;
SF
->
getSAMP
(
)
->
getInfo
(
)
->
pPools
->
pText3D
->
textLabel
[
100
]
->
fPosition
[
2
]
=
PEDSELF
->
GetPosition
(
)
->
fZ
;




Не могу сообразить..

Dark_Knight
29.01.2016, 02:08
Проверяешь существует ли определенный 3д текст. Если нет - создаешь, иначе редактируешь.

FordeD
29.01.2016, 02:30
Проверяешь существует ли определенный 3д текст. Если нет - создаешь, иначе редактируешь.


попробую проверку завтра написать



Проверяешь существует ли определенный 3д текст. Если нет - создаешь, иначе редактируешь.


не подскажешь какого типа должны быть строки в mainloop

C++:






SF
->
getSAMP
(
)
->
getInfo
(
)
->
pPools
->
pText3D
->
textLabel
[
100
]
->
fPosition
[
0
]
=
PEDSELF
->
GetPosition
(
)
->
fX
;
SF
->
getSAMP
(
)
->
getInfo
(
)
->
pPools
->
pText3D
->
textLabel
[
100
]
->
fPosition
[
1
]
=
PEDSELF
->
GetPosition
(
)
->
fY
;
SF
->
getSAMP
(
)
->
getInfo
(
)
->
pPools
->
pText3D
->
textLabel
[
100
]
->
fPosition
[
2
]
=
PEDSELF
->
GetPosition
(
)
->
fZ
;

By_Surse
29.01.2016, 09:52
C++:






eWeaponSlot slot
=
PEDSELF
->
GetCurrentWeaponSlot
(
)
;
if
(
slot
!=
eWeaponSlot
::
WEAPONSLOT_TYPE_UNARMED
)
{
CWeapon
*
weapon
=
PEDSELF
->
GetWeapon
(
slot
)
;
}








Это класс, в нем уже можно вытащить ид.


как?

FordeD
29.01.2016, 09:59
как?


вообще вроде как я вот таким способом доставал ID:

C++:






int
WeaponID
=
SF
->
getSAMP
(
)
->
getPlayers
(
)
->
pLocalPlayer
->
byteCurrentWeapon
;

By_Surse
29.01.2016, 12:38
как проверить игрок видим или нет?

Dark_Knight
29.01.2016, 14:41
IsPlayerDefined ищи

FordeD
29.01.2016, 15:26
IsPlayerDefined ищи


какого типа должны быть эти строки?

C++:






SF
->
getSAMP
(
)
->
getInfo
(
)
->
pPools
->
pText3D
->
textLabel
[
100
]
->
fPosition
[
0
]
=
PEDSELF
->
GetPosition
(
)
->
fX
;
SF
->
getSAMP
(
)
->
getInfo
(
)
->
pPools
->
pText3D
->
textLabel
[
100
]
->
fPosition
[
1
]
=
PEDSELF
->
GetPosition
(
)
->
fY
;
SF
->
getSAMP
(
)
->
getInfo
(
)
->
pPools
->
pText3D
->
textLabel
[
100
]
->
fPosition
[
2
]
=
PEDSELF
->
GetPosition
(
)
->
fZ
;

Dark_Knight
29.01.2016, 15:54
Тебе компилятор говорит, что за ошибка. Бери и разберись.

By_Surse
30.01.2016, 15:42
как определить находится игрок в зоне стрима или нет?

Dark_Knight
30.01.2016, 15:53
IsPlayerDefined ищи

By_Surse
30.01.2016, 15:58
Код:






float ppos1 = pPlayer->pPlayerData->fOnFootPos[0];
float ppos2 = pPlayer->pPlayerData->fOnFootPos[1];
float ppos3 = pPlayer->pPlayerData->fOnFootPos[2];
if(ppos1 == 0.0,ppos2 == 0.0,ppos3 == 0.0)
{
SF->Log("Игрок вне зоны стрима" );
return;
}




Так можно?

By_Surse
30.01.2016, 16:10
streamed 0 или 1?

Woofing Giraffe
30.01.2016, 16:11
streamed 0 или 1?


0 - в зоне стрима, 1 - проверка есть ли такой на сервере

Woofing Giraffe
30.01.2016, 16:23
Ой бля, наоборот

Dark_Knight
30.01.2016, 17:14
isPlayerDefined проверет игрока в зоне стрима, если второй параметр истина. Если же ложь, то на сервере игрок.

kemperrr
04.02.2016, 12:44
Как отправить пакет на сервер только 1 раз в mainloop, но при этом если нужно еще он отправится опять 1 раз, например если на проверке текста из чата из определенного текста отправляется пакет, и если 2 раза сразу этот текст в чате пакет отправится 2 раза, надеюсь понятно изяснисля

Woofing Giraffe
04.02.2016, 12:59
Как отправить пакет на сервер только 1 раз в mainloop, но при этом если нужно еще он отправится опять 1 раз, например если на проверке текста из чата из определенного текста отправляется пакет, и если 2 раза сразу этот текст в чате пакет отправится 2 раза, надеюсь понятно изяснисля


Не понял

kemperrr
04.02.2016, 18:10
Не понял


Ну дапустим у меня проверка на текст "Привет", когда в чате появляется это слово отправляется пакет 1 раз ( в калбеке mainloop ), что бы не флудил крч, и если два раза подряд отправят слово "Привет" то пакет отправится только 2 раза, опять же чтобы не флудил

Dark_Knight
04.02.2016, 18:40
Блять, выучи граматику сначала, а так делай через перехват RPC ClientMessage

kemperrr
04.02.2016, 19:52
Блять, выучи граматику сначала, а так делай через перехват RPC ClientMessage


Ты меня не понял, я уже сделал проверку на слово "привет", и отправляю пакет RPC ID_PLAYER_SYNC, так как он в mainloop, он флудит, мне же нужно что бы он отправил 1 раз на каждое слово "привет", 1 "привет" - 1 отправка пакета, 3 "привет" - 3 пакета

san0
04.02.2016, 20:12
Ты меня не понял, я уже сделал проверку на слово "привет", и отправляю пакет RPC ID_PLAYER_SYNC, так как он в mainloop, он флудит, мне же нужно что бы он отправил 1 раз на каждое слово "привет", 1 "привет" - 1 отправка пакета, 3 "привет" - 3 пакета


Зачем тебе отправка в mainloop, если есть понятие функций. В общем, нужен код.

Dark_Knight
04.02.2016, 21:02
Ты меня не понял, я уже сделал проверку на слово "привет", и отправляю пакет RPC ID_PLAYER_SYNC, так как он в mainloop, он флудит, мне же нужно что бы он отправил 1 раз на каждое слово "привет", 1 "привет" - 1 отправка пакета, 3 "привет" - 3 пакета


Это ты меня не понял. Засунь свой код в меинлупе в жопу, проверни его там 3 раза и "оставь его там до конца жизни". Делай через хук входящих РПЦ.

kemperrr
04.02.2016, 21:43
Это ты меня не понял. Засунь свой код в меинлупе в жопу, проверни его там 3 раза и "оставь его там до конца жизни". Делай через хук входящих РПЦ.


Вот я олень, сябки

kemperrr
04.02.2016, 22:20
Где мне найти структуру RPC_ScrTextDrawSetString ?

By_Surse
06.02.2016, 14:37
Как получить ID игрока на которого я целюсь?

AWRage
06.02.2016, 17:06
Как работать с памятью игры? Как например считать и записать значение по адресу 0xC81320?

Как работать с .ini файлами? Небольшой примерчик бы.

CarLCas
06.02.2016, 17:56
Как получить ID игрока на которого я целюсь?


SF->getSAMP()->getPlayers()->pLocalPlayer->sTargetPlayerID;

Либо через память

Dark_Knight
06.02.2016, 23:17
Как работать с памятью игры? Как например считать и записать значение по адресу 0xC81320?
Как работать с .ini файлами? Небольшой примерчик бы.


С ини могу дать класс, хотя лучше буст юзать(без опыта в буст и не суйся). На счет чтения с памяти гдето в темке от меня пример был.

AWRage
06.02.2016, 23:20
С ини могу дать класс, хотя лучше буст юзать(без опыта в буст и не суйся). На счет чтения с памяти гдето в темке от меня пример был.


Мне настройки нужно считать с .ini. Если не сложно, дай класс, сам мб что-то попробую.

Dark_Knight
06.02.2016, 23:32
Мне настройки нужно считать с .ini. Если не сложно, дай класс, сам мб что-то попробую.


http://pastebin.com/aXjfnqgQ (https://www.blast.hk/redirect/aHR0cDovL3Bhc3RlYmluLmNvbS9hWGpmbnFnUQ)

AWRage
07.02.2016, 00:06
1. Как получить хп и броню моего игрока? (Решено: PEDSELF->GetHealth and PEDSELF->GetArmor)

2. Когда регистрирую каллбэк, квадрат рисуется постоянно. Как остановить рендер? На примере ниже, пожалуйста.

C++:






bool
CALLBACK HealthBar
(
CONST RECT
*
pSourceRect
,
CONST RECT
*
pDestRect
,
HWND hDestWindowOverride
,
CONST RGNDATA
*
pDirtyRegion
)
{
if
(
SUCCEEDED
(
SF
->
getRender
(
)
->
BeginRender
(
)
)
)
{
SF
->
getRender
(
)
->
DrawBox
(
500
,
500
,
25
,
25
,
D3DCOLOR_ARGB
(
255
,
85
,
170
,
85
)
)
;
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
->
getRender
(
)
->
registerD3DCallback
(
eDirect3DDeviceMethods
::
D3DMETHOD_PRESENT
,
HealthBar
)
;
init
=
true
;
}
int
&
ChatMode
=
SF
->
getSAMP
(
)
->
getChat
(
)
->
iChatWindowMode
;
if
(
ChatMode
==
0
)
;
// Останавливаем рендер.
SF
->
getRender
(
)
->
SetRenderState
(
?
?
?
)
;
else
// Продолжаем рендер.
SF
->
getRender
(
)
->
SetRenderState
(
?
?
?
)
;
}

Dark_Knight
07.02.2016, 00:42
if(SUCCEEDED(SF->getRender()->BeginRender()) && boolVar)

{

SF->getRender()->DrawBox(500, 500, 25, 25, D3DCOLOR_ARGB(255, 85, 170, 85));

SF->getRender()->EndRender();

}

Dark_Knight
07.02.2016, 00:43
Если булвар тру, то рисует и иначе не рисует. Меняешь её с меинлупа.

AWRage
07.02.2016, 00:48
Если булвар тру, то рисует и иначе не рисует. Меняешь её с меинлупа.


Понял, спасибо. Поставил бы реп+, но сук не могу((

Dark_Knight
07.02.2016, 00:50
Понял, спасибо. Поставил бы реп+, но сук не могу((


Это на СМе так. Такого тут нет. Мы за ней не гонимся. Мы и так лучшие.

AWRage
07.02.2016, 02:42
С GetPrivateProfileInt разобрался, а вот как считать с .ini файла float - нет. Что в запишется в переменную a, а что будет в переменной fRadarBarX?

C++:






char
fRadarBarX
[
15
]
;
int
a
=
GetPrivateProfileString
(
"Main"
,
"fRadarBar.X"
,
0
,
fRadarBarX
,
sizeof
(
fRadarBarX
)
,
"sampfuncs\\Head_Up_Display\\Head_Up_Display.ini"
)
;

Dark_Knight
07.02.2016, 02:45
С GetPrivateProfileInt разобрался, а вот как считать с .ini файла float - нет. Что в запишется в переменную a, а что будет в переменной fRadarBarX?

C++:






char
fRadarBarX
[
15
]
;
int
a
=
GetPrivateProfileString
(
"Main"
,
"fRadarBar.X"
,
0
,
fRadarBarX
,
sizeof
(
fRadarBarX
)
,
"sampfuncs\\Head_Up_Display\\Head_Up_Display.ini"
)
;





http://pastebin.com/kq3usPGu (https://www.blast.hk/redirect/aHR0cDovL3Bhc3RlYmluLmNvbS9rcTN1c1BHdQ)

Dark_Knight
07.02.2016, 16:09
А обязательно функцию размещать выше mainloop?


Как удобно. Но лучше их разгрузить и изать их.

AWRage
07.02.2016, 17:51
Как использовать эту функцию? Так компилятор ругается.

C++:






int
a
[
2
]
=
SF
->
getGame
(
)
->
convertGameCoordsToWindow
(
fRadarBarX
,
fRadarBarY
)
;

itsLegend
07.02.2016, 17:58
int a[2];

(..., &a[0], &a[1]);

Тольк по моему там не int, а float

AWRage
07.02.2016, 18:14
int a[2];
(..., &a[0], &a[1]);

Тольк по моему там не int, а float


Да, там float, но почему float, если это экранные координаты, они вроде идут в int? Но скрипт работает, спасибо!

C&J
07.02.2016, 19:33
Здравствуйте.

1.Ваш вопрос :Как можно включить и выключить Ноп 'SendClientMessage',через Asi?

И как сделать запрос,о открытия северного диалога и нажатие на определённую кнопку?

И если вас не затруднит,скиньте пример код.

Woofing Giraffe
07.02.2016, 21:59
Здравствуйте.
1.Ваш вопрос :Как можно включить и выключить Ноп 'SendClientMessage',через Asi?
И как сделать запрос,о открытия северного диалога и нажатие на определённую кнопку?
И если вас не затруднит,скиньте пример код.


Запрос об открытии серверного диалога ты никак не сделаешь. Можно только создать диалог такой же как на сервере, либо, если он например вызывается при поднятии пикапа попробовать отправить фейк данные о положении игрока на сервере. На серверах с хорошим античитом такое не прокатит

AWRage
08.02.2016, 17:57
Как это будет выглядеть в C++? Особенно интересует первая строка.

Cleo:

CLEO:






0AC6:
0@
= label
@font_size
offset
0A8C:
write_memory
0x718D14
size
4
value
0@
virtual_protect
1
0A8C:
write_memory
0x858A10
size
4
value
32.0
virtual_protect
1
0A8C:
write_memory
0x866B70
size
4
value
53.0
virtual_protect
1
0A8C:
write_memory
0x866B78
size
4
value
76.0
virtual_protect
1
0A8C:
write_memory
0x866B74
size
4
value
49.0
virtual_protect
1
:font_size
hex
00
00
20
42
end




C++:

C++:






float
some
=
?
?
*
(
float
*
)
0x718D14
=
some
*
(
float
*
)
0x858A10
=
32.0
*
(
float
*
)
0x866B70
=
53.0
*
(
float
*
)
0x866B78
=
76.0
*
(
float
*
)
0x866B74
=
49.0

Dark_Knight
08.02.2016, 19:08
Так же как и все остальные. В :font_size у тебя храниться цифровое значение во флоате. Узнай его и записывай его указатель.

By_Surse
08.02.2016, 19:31
0A8C: write_memory Ad size 4 value 0x5051FF15 virtual_protect 1

Ad - адрес

как это будет в SF? (size 4)

CarLCas
08.02.2016, 19:37
0A8C: write_memory Ad size 4 value 0x5051FF15 virtual_protect 1
Ad - адрес
как это будет в SF? (size 4)


Пример выше, тоже самое, только адрес записываешь туда, ну и тип 0x5051FF15 соответствующий

SR_team
08.02.2016, 19:41
Как это будет выглядеть в C++? Особенно интересует первая строка.

Cleo:

CLEO:






0AC6:
0@
= label
@font_size
offset
0A8C:
write_memory
0x718D14
size
4
value
0@
virtual_protect
1
0A8C:
write_memory
0x858A10
size
4
value
32.0
virtual_protect
1
0A8C:
write_memory
0x866B70
size
4
value
53.0
virtual_protect
1
0A8C:
write_memory
0x866B78
size
4
value
76.0
virtual_protect
1
0A8C:
write_memory
0x866B74
size
4
value
49.0
virtual_protect
1
:font_size
hex
00
00
20
42
end




C++:

C++:






float
some
=
?
?
*
(
float
*
)
0x718D14
=
some
*
(
float
*
)
0x858A10
=
32.0
*
(
float
*
)
0x866B70
=
53.0
*
(
float
*
)
0x866B78
=
76.0
*
(
float
*
)
0x866B74
=
49.0






C++:






DWORD some
=
0x00002042
*
(
DWORD
*
)
0x718D14
=
some
*
(
float
*
)
0x858A10
=
32.0
*
(
float
*
)
0x866B70
=
53.0
*
(
float
*
)
0x866B78
=
76.0
*
(
float
*
)
0x866B74
=
49.0

By_Surse
08.02.2016, 20:20
Пример выше, тоже самое, только адрес записываешь туда, ну и тип 0x5051FF15 соответствующий


Size 4 это какой тип данных?

AWRage
08.02.2016, 20:27
Size 4 это какой тип данных?


float.

CarLCas
08.02.2016, 20:34
float.


Не обязательно, любой тип данных на 4 байта



Size 4 это какой тип данных?


Скорее всего будет DWORD

AWRage
08.02.2016, 21:11
C++:






DWORD some
=
0x00002042
*
(
DWORD
*
)
0x718D14
=
some
*
(
float
*
)
0x858A10
=
32.0
*
(
float
*
)
0x866B70
=
53.0
*
(
float
*
)
0x866B78
=
76.0
*
(
float
*
)
0x866B74
=
49.0





Не увидел твой ответ. Крашит :(

SR_team
08.02.2016, 21:18
Не увидел твой ответ. Крашит :(


ну без переменной some на прямуб подставь значение. К тому же, у тебя в клео коде используется virtual_protect 1, а в C++ коде не юзаешь

C++:






DWORD VP
=
0
;
VirtualProtect
(
(
void
*
)
Адрес
,
размер_для_тебя_4_байта
,
0x01
,
&
VP
)
;
//запись в память
VirtualProtect
(
(
void
*
)
Адрес
,
размер
,
VP
,
NULL
)
;

itsLegend
08.02.2016, 21:19
C++:






DWORD some
=
0x00002042
*
(
DWORD
*
)
0x718D14
=
some
*
(
float
*
)
0x858A10
=
32.0
*
(
float
*
)
0x866B70
=
53.0
*
(
float
*
)
0x866B78
=
76.0
*
(
float
*
)
0x866B74
=
49.0





Там, по моему, ещё указатель указывается, а не значение.

SR_team
08.02.2016, 21:20
Там, по моему, ещё указатель указывается, а не значение.


Да, точно. 0ac6 указатель отдает.

AWRage
08.02.2016, 22:10
С Vitual Protect крашит еще при загрузке. В остальных случаях текстдравов нет (адрес отвечает за размер текстдравов(?)).

Пробовал так:

C++:






DWORD some
=
0x00002042
;
*
(
PDWORD
*
)
0x718D14
=
&
some
;




И так:

Код:






DWORD some = 0x42200000; // 40.0 = 0x42200000 ?
*(PDWORD*)0x718D14 = &some;




И даже так:

Код:






float some = 40.0;
*(PFLOAT*)0x718D14 = &some;




Вот код Легенд'а: https://www.blast.hk/threads/34/page-153#post-81158



code=cleo]{$CLEO}

{$INCLUDE SF}

0001: wait 0 ms

0662: "by legend2360"

0662: "BlastHack - cheating is art"

0AC6: 0@ = label @font_size offset

0A8C: write_memory 0x0718D14 size 4 value 0@ virtual_protect 1 // записываем новый адрес памяти откуда будет читаться значение

// (gta_sa.exe+318D12 - D8 0D 108A8500 - fmul dword ptr [gta_sa.exe+458A10] | gta_sa.exe+458A10 заменяем на адрес "лейбла")

0A8C: write_memory 0x0858A10 size 4 value 100.0 virtual_protect 1 // Меняем позицию радара

while true

wait 0

end

:font_size // standart

hex

00 00 20 42 // 40.0

end[/code]

[

san0
08.02.2016, 23:32
С Vitual Protect крашит еще при загрузке. В остальных случаях текстдравов нет (адрес отвечает за размер текстдравов(?)).
Пробовал так:

C++:






DWORD some
=
0x00002042
;
*
(
PDWORD
*
)
0x718D14
=
&
some
;




И так:

Код:






DWORD some = 0x42200000; // 40.0 = 0x42200000 ?
*(PDWORD*)0x718D14 = &some;




И даже так:

Код:






float some = 40.0;
*(PFLOAT*)0x718D14 = &some;




Вот код Легенд'а: https://www.blast.hk/threads/34/page-153#post-81158

CLEO:






{$CLEO}
{$INCLUDE SF}
0001:
wait
0
ms
0662:
"by legend2360"
0662:
"BlastHack - cheating is art"
0AC6:
0@
= label
@font_size
offset
0A8C:
write_memory
0x0718D14
size
4
value
0@
virtual_protect
1
// записываем новый адрес памяти откуда будет читаться значение
// (gta_sa.exe+318D12 - D8 0D 108A8500 - fmul dword ptr [gta_sa.exe+458A10] | gta_sa.exe+458A10 заменяем на адрес "лейбла")
0A8C:
write_memory
0x0858A10
size
4
value
100.0
virtual_protect
1
// Меняем позицию радара
while
true
wait
0
end
:font_size
// standart
hex
00
00
20
42
// 40.0
end





По нажатию на нумпад 1 изменяет позиию радара на 100.0

*Внимание на объявление RadarPos.




Код:






#include
#include
#include

#include "SAMPFUNCS_API.h"
#include "game_api\game_api.h"

SAMPFUNCS *SF = new SAMPFUNCS();
float RadarPos = 40.0;

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;
init = true;
}
if (SF->getGame()->isKeyPressed(0x61))
{
*(DWORD*)(0x0718D14) = (DWORD)&RadarPos;
*(float*)(0x0858A10) = 100.0;
}
}

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;
}

itsLegend
08.02.2016, 23:34
С Vitual Protect крашит еще при загрузке. В остальных случаях текстдравов нет (адрес отвечает за размер текстдравов(?)).


Попробуй статическую переменную.

AWRage
08.02.2016, 23:40
По нажатию на нумпад 1 изменяет позиию радара на 100.0
*Внимание на объявление RadarPos.



Код:






#include
#include
#include

#include "SAMPFUNCS_API.h"
#include "game_api\game_api.h"

SAMPFUNCS *SF = new SAMPFUNCS();
float RadarPos = 40.0;

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;
init = true;
}
if (SF->getGame()->isKeyPressed(0x61))
{
*(DWORD*)(0x0718D14) = (DWORD)&RadarPos;
*(float*)(0x0858A10) = 100.0;
}
}

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;
}








Работает. Спасибо! :)

By_Surse
10.02.2016, 12:32
Как проверить выстрелил игрок или нет

Dark_Knight
10.02.2016, 12:41
Какой именно?

By_Surse
10.02.2016, 12:44
Мой

Dark_Knight
10.02.2016, 12:47
Можешь через буллет синхру сделать.

AWRage
12.02.2016, 02:09
Таймер возможно сделать? Не 0001: wait 5000, а именно таймер.

0pc0d3R
12.02.2016, 02:21
Таймер возможно сделать? Не 0001: wait 5000, а именно таймер.


создай новый поток и выполняй код оттуда, тогда сможешь юзать Sleep(задержка); без геймфриза, по моему удобнее.

MISTER_GONWIK
12.02.2016, 02:28
Таймер возможно сделать? Не 0001: wait 5000, а именно таймер.





создай новый поток и выполняй код оттуда, тогда сможешь юзать Sleep(задержка); без геймфриза, по моему удобнее.


GetTickCount же

AWRage
12.02.2016, 17:41
Чет не понял ничего(

0pc0d3R
12.02.2016, 17:42
Чет не понял ничего(


я тож;(

AWRage
12.02.2016, 18:02
я тож;(


Мне нужен таймер, который будет работать как таймеры в SF. Можешь подробнее рассказать о создании нового потока?

Dark_Knight
12.02.2016, 18:13
Таймер тебе на новом потоке на*** не нужен. Делай через GetTicketCount()

0pc0d3R
12.02.2016, 18:21
Мне нужен таймер, который будет работать как таймеры в SF. Можешь подробнее рассказать о создании нового потока?


это уже матчасть С++

return
12.02.2016, 21:48
Как нанести удар с кулака на расстояние?

0pc0d3R
12.02.2016, 22:34
Как нанести удар с кулака на расстояние?


шлёшь пакет онфут синхры с фейк позицией прямо перед челом, и ставишь анимку и флаг удара кулаком.

By_Surse
13.02.2016, 12:49
как вызвать стандартный курсор Windows?

CarLCas
13.02.2016, 13:18
как вызвать стандартный курсор Windows?


SetCursor(LoadCursor(NULL, CursorName));

CursorName - можешь посмотреть по 2ой ссылке

https://msdn.microsoft.com/ru-ru/library/windows/desktop/ms648393(v=vs.85).aspx (https://www.blast.hk/redirect/aHR0cHM6Ly9tc2RuLm1pY3Jvc29mdC5jb20vcnUtcnUvbGlicm FyeS93aW5kb3dzL2Rlc2t0b3AvbXM2NDgzOTModj12cy44NSku YXNweA)

https://msdn.microsoft.com/ru-ru/library/windows/desktop/ms648391(v=vs.85).aspx (https://www.blast.hk/redirect/aHR0cHM6Ly9tc2RuLm1pY3Jvc29mdC5jb20vcnUtcnUvbGlicm FyeS93aW5kb3dzL2Rlc2t0b3AvbXM2NDgzOTEodj12cy44NSku YXNweA)

FordeD
13.02.2016, 18:10
как сделать задержку на 1-2 секунды?

itsLegend
13.02.2016, 18:26
C++:






Sleep
(
)
;




C++:






DWORD dwTickStart
=
GetTickCount
(
)
;
// ...
if
(
GetTickCount
(
)
-
dwTickStart
>
2000
)
{
// action
dwTickStart
=
GetTickCount
(
)
;
}

FordeD
13.02.2016, 22:49
Может кто подсказать в чем проблема? При запуске этого коллбека просто зависает

C++:






if
(
!
SF
->
getSAMP
(
)
)
return
;
while
(
SF
->
getSAMP
(
)
->
getInfo
(
)
->
iGameState
!=
GAMESTATE_CONNECTED
)
;
{
if
(
SF
->
getSAMP
(
)
->
getInfo
(
)
->
iGameState
!=
GAMESTATE_WAIT_CONNECT
)
{
SF
->
getSAMP
(
)
->
disconnect
(
100
)
;
SF
->
getSAMP
(
)
->
getInfo
(
)
->
RestartGame
(
)
;
SF
->
getSAMP
(
)
->
getInfo
(
)
->
iGameState
=
GAMESTATE_WAIT_CONNECT
;
Sleep
(
800
)
;
}
}

Dark_Knight
13.02.2016, 23:12
Конечно. Ты же слип юзаешь.

FordeD
13.02.2016, 23:27
Конечно. Ты же слип юзаешь.


даже без него зависает

AWRage
14.02.2016, 16:31
1. Как создавать текстдравы?

2. Есть ли в SFAPI эквивалент опкоду 0AA5: call .. num_params .. pop ?

3. Как получить server ptr в SFAPI? Структуру саму нашёл, а как её правильно редактировать?

By_Surse
14.02.2016, 16:42
Как создавать текстдравы? Класса не нашел чет.


https://www.blast.hk/wiki/tutorials:api_lesson_render

AWRage
14.02.2016, 16:50
https://www.blast.hk/wiki/tutorials:api_lesson_render


Где там описывается создание текстдрава?

kemperrr
14.02.2016, 22:14
Где там описывается создание текстдрава?


Сам TextDraw наврядли создашь, юзай рендер SF

AWRage
14.02.2016, 23:51
Сам TextDraw наврядли создашь, юзай рендер SF


Рендер SF это не совсем то, что нужно в моей ситуации.

Gabriel__
15.02.2016, 17:09
Как создаются такие диалоги ?

http://s017.radikal.ru/i425/1602/3d/81e928938440.jpg

DarkP1xel
15.02.2016, 17:10
http://anttweakbar.sourceforge.net/doc/ (https://www.blast.hk/redirect/aHR0cDovL2FudHR3ZWFrYmFyLnNvdXJjZWZvcmdlLm5ldC9kb2 Mv)

https://www.blast.hk/threads/10008/

AWRage
15.02.2016, 18:30
Так шо, никто не знает как создать свой Текстдрав?

F_Time
17.02.2016, 20:38
Как проверить всех игроков в радиусе прорисовки?

0pc0d3R
17.02.2016, 20:45
Как проверить всех игроков в радиусе прорисовки?


что именно у них ты хочешь проверить? Или тебе просто нужно получить кол-во всех актёров в своем стриме.

F_Time
17.02.2016, 20:51
что именно у них ты хочешь проверить? Или тебе просто нужно получить кол-во всех актёров в своем стриме.


Смотри, мне нужно найти всех игроков в радиусе прорисовки и присвоить им над головой определенный текст, как подобное осуществить?

F_Time
17.02.2016, 21:00
Или хотя бы просто проверить всех игроков

0pc0d3R
17.02.2016, 21:10
Или хотя бы просто проверить всех игроков


циклом пройдись и в его теле чекай у каждого игрока что надо.

F_Time
17.02.2016, 21:12
циклом пройдись и в его теле чекай у каждого игрока что надо.


Можно пример кода на SF API, я в нем просто не очень шарю

0pc0d3R
17.02.2016, 21:30
Можно пример кода на SF API, я в нем просто не очень шарю


Ну вот пример как циклом доставать инфу с игроков в стриме.

C++:






for
(
unsigned
int
it
=
0
;
it

getSAMP
(
)
->
getPlayers
(
)
->
iIsListed
[
it
]
)
continue
;
if
(
!
SF
->
getSAMP
(
)
->
getPlayers
(
)
->
IsPlayerDefined
(
it
,
true
)
)
continue
;
SF
->
getSAMP
(
)
->
getChat
(
)
->
AddChatMessage
(
D3DCOLOR_XRGB
(
148
,
112
,
255
)
,
"ID игрока: %d | Уровень: %d"
,
it
,
SF
->
getSAMP
(
)
->
getPlayers
(
)
->
pRemotePlayer
[
it
]
->
iScore
)
;
}

AWRage
18.02.2016, 20:47
Есть функция преобразования A, R, G, B в ARGB? Нашёл только ARGB в A, R, G, B, может плохо искал?

SR_team
18.02.2016, 21:09
Есть функция преобразования A, R, G, B в ARGB? Нашёл только ARGB в A, R, G, B, может плохо искал?


плохо искал

AWRage
19.02.2016, 19:55
Есть ли еще какой-то способ редактировать текст текстдрава, кроме как пересоздавать его с нужным текстом? Боюсь, что это не совсем правильно, так как пересоздавать нужно в бесконечном цикле. Пытался еще менять как-то через структуру, но компилятор ругается "expression must be modified lvalue".

C++:






void
_TextDrawMoney
(
)
{
char
str
[
128
]
;
sprintf
(
str
,
"$%i"
,
GAME
->
GetPlayerInfo
(
)
->
GetPlayerMoney
(
)
)
;
SF
->
getSAMP
(
)
->
getInfo
(
)
->
pPools
->
pTextdraw
->
Delete
(
100
)
;
SF
->
getSAMP
(
)
->
getInfo
(
)
->
pPools
->
pTextdraw
->
Create
(
100
,
&
pTextDrawMoney
,
str
)
;
/*
stTextdraw * TD;
TD = SF->getSAMP()->getInfo()->pPools->pTextdraw->GetTextdraw(100);
TD->szString = "Some string?";
SF->getSAMP()->getInfo()->pPools->pTextdraw->textdraw = TD;
*/
return
;
}

Dark_Knight
19.02.2016, 20:18
Получаешь указатель на текстдрав и редактируешь его.

AWRage
19.02.2016, 21:38
Получаешь указатель на текстдрав и редактируешь его.


Что-то не так делаю. Не работает код.

CLEO:






SF->getSAMP()->getInfo()->pPools->pTextdraw->Create(
100
, &pTextDrawMoney,
"test"
);
// создаем текстдрав
stTextdraw *TX = SF->getSAMP()->getInfo()->pPools->pTextdraw->GetTextdraw(
100
);
// получаем указатель на его структуру
*TX->szString =
"$4343"
;
// заменяем текущее значение на новое
//*TX->szText = "$4343" // в этом случае текст меняется, но вместо текста символы

0pc0d3R
19.02.2016, 23:40
Как развернуть себя через матрицу?

san0
20.02.2016, 01:54
Что-то не так делаю. Не работает код.

CLEO:






SF->getSAMP()->getInfo()->pPools->pTextdraw->Create(
100
, &pTextDrawMoney,
"test"
);
// создаем текстдрав
stTextdraw *TX = SF->getSAMP()->getInfo()->pPools->pTextdraw->GetTextdraw(
100
);
// получаем указатель на его структуру
*TX->szString =
"$4343"
;
// заменяем текущее значение на новое
//*TX->szText = "$4343" // в этом случае текст меняется, но вместо текста символы





strcpy

AWRage
20.02.2016, 02:14
strcpy


Заработало :3

Woofing Giraffe
21.02.2016, 14:42
Как поменять цвет ника игрока?

Woofing Giraffe
21.02.2016, 17:48
C++:






void
CALLBACK
cmd
(
std
::
string param
)
{
int
id
;
DWORD Color
;
if
(
sscanf
(
param
.
c_str
(
)
,
"%d %x"
,
&
id
,
&
color
)
)
{
BitStream bsColor
;
bsColor
.
Write
(
id
)
;
bsColor
.
Write
(
color
)
;
SF
->
getRakNet
(
)
->
emulateRecvRPC
(
RPC_ScrSetPlayerColor
,
&
bsColor
)
;
}
}




Почему не работает?

CarLCas
21.02.2016, 19:19
C++:






void
CALLBACK
cmd
(
std
::
string param
)
{
int
id
;
DWORD Color
;
if
(
sscanf
(
param
.
c_str
(
)
,
"%d %x"
,
&
id
,
&
color
)
)
{
BitStream bsColor
;
bsColor
.
Write
(
id
)
;
bsColor
.
Write
(
color
)
;
SF
->
getRakNet
(
)
->
emulateRecvRPC
(
RPC_ScrSetPlayerColor
,
&
bsColor
)
;
}
}




Почему не работает?


SF->getRakNet()->SendRPC(RPC_ScrSetPlayerColor, &bsColor);

Woofing Giraffe
21.02.2016, 21:13
SF->getRakNet()->SendRPC(RPC_ScrSetPlayerColor, &bsColor);


Не подскажешь как цвет нормальный поставить? Пытаюсь поставить зелёный (0x66FF00), выходит красный

NarutoUA
21.02.2016, 21:20
Не подскажешь как цвет нормальный поставить? Пытаюсь поставить зелёный (0x66FF00), выходит красный


0xFF66FF00 надо ставить. (0xFF(-прозрачность)66(-красный)FF(-зеленый)00(-синий)). Или так написать: Color |= 0xFF000000;

Woofing Giraffe
21.02.2016, 22:06
0xFF66FF00 надо ставить. (0xFF(-прозрачность)66(-красный)FF(-зеленый)00(-синий)). Или так написать: Color |= 0xFF000000;


Не, всё равно в красный красит

Woofing Giraffe
22.02.2016, 01:25
Код:






if (params->packetId == ScriptRPCEnumeration::RPC_ScrSetPlayerName)
{
short int id;
char NickName[32];
BYTE Successfull;
params->bitStream->ResetReadPointer();
params->bitStream->Read(id);
params->bitStream->Read(NickName);
params->bitStream->Read(Successfull);
params->bitStream->ResetReadPointer();
SF->getSAMP()->getChat()->AddChatMessage(-1, "%d | %s", id, NickName);
}




Почему не работает вывод ника?

0pc0d3R
22.02.2016, 01:39
Код:






if (params->packetId == ScriptRPCEnumeration::RPC_ScrSetPlayerName)
{
short int id;
char NickName[32];
BYTE Successfull;
params->bitStream->ResetReadPointer();
params->bitStream->Read(id);
params->bitStream->Read(NickName);
params->bitStream->Read(Successfull);
params->bitStream->ResetReadPointer();
SF->getSAMP()->getChat()->AddChatMessage(-1, "%d | %s", id, NickName);
}




Почему не работает вывод ника?


ида там нет, это рпц.

Woofing Giraffe
22.02.2016, 01:40
ида там нет, это рпц.


RPC_ScrSetPlayerName = playerId:ushort, name:string, success:byte

Вроде есть же

0pc0d3R
22.02.2016, 01:41
RPC_ScrSetPlayerName = playerId:ushort, name:string, success:byte
Вроде есть же


рпц которые приходят тебе от сервера не имеют ида. Попробуй без него.

Woofing Giraffe
22.02.2016, 01:43
рпц которые приходят тебе от сервера не имеют ида. Попробуй без него.


Не получается. Я пытался получить ID игрока которому меняется ник

FordeD
22.02.2016, 02:00
можно ли заставить актера двигаться если да то подскажите как?

itsLegend
22.02.2016, 02:14
Почему не работает вывод ника?


Длина ника ещё нужна, скорее всего.

Dark_Knight
22.02.2016, 02:19
RPC_ScrSetPlayerName = playerId:ushort, name:string, success:byte
Вроде есть же


WORD playerID, BYTE strLen, char[] name. Вот какая там структура.

return
22.02.2016, 22:10
Засунул такую фигню в рендер, суть в том, что должен менять цвет, при нажатие клавиши "A".

Он меняет цвет на секунду и сразу же возвращает его на исходный.

Что не так?

PHP:






color
=
D3DCOLOR_ARGB
(
255
,
0
,
0
,
0
)
;
if
(
SF
-
>
getGame
(
)
-
>
isKeyPressed
(
65
)
)
// клавиша A
{
KakoyToCheat
^
=
true
;
if
(
KakoyToCheat
)
{
SF
-
>
getSAMP
(
)
-
>
getChat
(
)
-
>
AddChatMessage
(
D3DCOLOR_XRGB
(
0
,
0xAA
,
0
)
,
"test"
)
;
color
=
D3DCOLOR_ARGB
(
255
,
255
,
0
,
0
)
;
}
}
pFont
-
>
Print
(
"Какой то чит"
,
color
,
500
,
500
,
false
)
;

FYP
22.02.2016, 22:16
C++:






if
(
SF
->
getGame
(
)
->
isKeyPressed
(
65
)
)
// клавиша A
{
KakoyToCheat
^=
true
;
if
(
KakoyToCheat
)
{
SF
->
getSAMP
(
)
->
getChat
(
)
->
AddChatMessage
(
D3DCOLOR_XRGB
(
0
,
0xAA
,
0
)
,
"test"
)
;
}
}
color
=
KakoyToCheat
?
D3DCOLOR_ARGB
(
255
,
255
,
0
,
0
)
:
D3DCOLOR_ARGB
(
255
,
0
,
0
,
0
)
;
pFont
->
Print
(
"Какой то чит"
,
color
,
500
,
500
,
false
)
;

Harch
23.02.2016, 05:49
SF 5.3.1.

Как выйти из игры автоматически? Послать "/q"?

Ещё вопрос:

Код:






SF->getGame()->emulateGTAKey(GTA_KEY_W, 0);
SF->getGame()->emulateGTAKey(GTA_KEY_W, 127);
SF->getGame()->emulateGTAKey(GTA_KEY_W, 255);




Ни один вариант не работает что-то. Как правильно?

Ставил и один раз, и в главном цикле. Тестировал на то, что строка вызывается (непосредственно после неё делал вызов в чат). В чат вызов шёл, на экране никакой реакции. Все три значения пробовал.

Ещё: как выключить/выключить паузу (меню обычное) из игры? Клавиша ESC?

kemperrr
23.02.2016, 12:15
SF 5.3.1.

Как выйти из игры автоматически? Послать "/q"?

Ещё вопрос:

Код:






SF->getGame()->emulateGTAKey(GTA_KEY_W, 0);
SF->getGame()->emulateGTAKey(GTA_KEY_W, 127);
SF->getGame()->emulateGTAKey(GTA_KEY_W, 255);




Ни один вариант не работает что-то. Как правильно?

Ставил и один раз, и в главном цикле. Тестировал на то, что строка вызывается (непосредственно после неё делал вызов в чат). В чат вызов шёл, на экране никакой реакции. Все три значения пробовал.

Ещё: как выключить/выключить паузу (меню обычное) из игры? Клавиша ESC?


1.От куда узнал что клавиша называется GTA_KEY_W?

2.FYP вроде не пофиксил эмуляцию в SF API

0pc0d3R
23.02.2016, 12:27
SF 5.3.1.

Как выйти из игры автоматически? Послать "/q"?

Ещё вопрос:

Код:






SF->getGame()->emulateGTAKey(GTA_KEY_W, 0);
SF->getGame()->emulateGTAKey(GTA_KEY_W, 127);
SF->getGame()->emulateGTAKey(GTA_KEY_W, 255);




Ни один вариант не работает что-то. Как правильно?

Ставил и один раз, и в главном цикле. Тестировал на то, что строка вызывается (непосредственно после неё делал вызов в чат). В чат вызов шёл, на экране никакой реакции. Все три значения пробовал.

Ещё: как выключить/выключить паузу (меню обычное) из игры? Клавиша ESC?



C++:






SF
->
getCLEO
(
)
->
callOpcode
(
"0C8F: samp process_chat_input %s"
,
"/q"
)
;

MISTER_GONWIK
23.02.2016, 12:31
C++:






SF
->
getCLEO
(
)
->
callOpcode
(
"0C8F: samp process_chat_input %s"
,
"/q"
)
;





а зачем форматировать?

C++:






SF
->
getCLEO
(
)
->
callOpcode
(
"0C8F: samp process_chat_input \"/q\""
)
;

0pc0d3R
23.02.2016, 12:31
а зачем форматировать?
SF->getCLEO()->callOpcode("0C8F: samp process_chat_input \"/q\"");


привычка.

Harch
23.02.2016, 13:12
Я читал, что emulateGTAKey пофиксили... В изменениях... Это то, что я жду уже полгода. Послать /q я и без опкодов могу... Мне бы выход на паузу и эмуляцию клавиш...

У меня она GTA_KEY_W, так как я нажимаю W, чтобы идти вперёд, ведь так?

SR_team
23.02.2016, 13:51
C++:






if
(
SF
->
getGame
(
)
->
isKeyPressed
(
65
)
)
// клавиша A
{
KakoyToCheat
^=
true
;
if
(
KakoyToCheat
)
{
SF
->
getSAMP
(
)
->
getChat
(
)
->
AddChatMessage
(
D3DCOLOR_XRGB
(
0
,
0xAA
,
0
)
,
"test"
)
;
}
}
color
=
KakoyToCheat
?
D3DCOLOR_ARGB
(
255
,
255
,
0
,
0
)
:
D3DCOLOR_ARGB
(
255
,
0
,
0
,
0
)
;
pFont
->
Print
(
"Какой то чит"
,
color
,
500
,
500
,
false
)
;





помню в ВУЗе на VBA написал bActive = bActive Xor true, и препод меня потом тапками пиздил, потому что запись bActive = Not bActive короче :D

SR_team
23.02.2016, 13:54
Я читал, что emulateGTAKey пофиксили... В изменениях... Это то, что я жду уже полгода. Послать /q я и без опкодов могу... Мне бы выход на паузу и эмуляцию клавиш...
У меня она GTA_KEY_W, так как я нажимаю W, чтобы идти вперёд, ведь так?


Эмуляцию пофиксили. Для эмуляции используются игровые коды клавишь. В справке SB можешь их глянуть или в классах MTA поискать вперед/назад вроде 1, а лево/право 0

Harch
23.02.2016, 14:18
Эмуляцию пофиксили. Для эмуляции используются игровые коды клавишь. В справке SB можешь их глянуть или в классах MTA поискать вперед/назад вроде 1, а лево/право 0



А как эмулировать нажатия этих игровых кодов клавиш?

Harch
23.02.2016, 14:27
Нашёл. меньше нуля в одну сторону, больше - в другую.

А как уйти/выйти с паузы? Последнее, что мне нужно :)

Просто как-то справки по SF, кроме уроков, я не нашёл :(

На пеший ход работает эмуляция, а на транспорт - нет :( Где узнать, какие коды для транспорта?

SR_team
23.02.2016, 14:49
Нашёл. меньше нуля в одну сторону, больше - в другую.

А как уйти/выйти с паузы? Последнее, что мне нужно :)

Просто как-то справки по SF, кроме уроков, я не нашёл :(

На пеший ход работает эмуляция, а на транспорт - нет :( Где узнать, какие коды для транспорта?


все там же. На транспорте не сильно отличаются кнопки. А вообще у машин есть еще такая залупа

0xB73458 - Start of controls block.


+0x20 = [word] Accelerate:
0 = off

255 = on


+0x22 = [word] Brake

kemperrr
23.02.2016, 14:50
Как обнулить статус нажатия клавиши, что бы сразу после нажатия обнулился статус?

Поправочка, не сразу а через пол секунды

Harch
23.02.2016, 14:54
Методом тыка нашёл, что назад/вперёд для транспорта это 14. Осталось узнать про паузу. Метод тыка не помог. Как уйти или выйти на/с паузу/ы?



Поправочка, не сразу а через пол секунды



Запускаешь таймер, весь этот таймер "нажимаешь" на кнопку, потом прекращаешь нажимать.

kemperrr
23.02.2016, 15:49
Чет какая то херня, юзаю SF->getGame()->emulateGTAKey(11, true) клавиша нажимается 1 раз, для того что бы нажалась еще раз нужно обнулить, SF->getGame()->emulateGTAKey(11, false), в теории если еще раз должна нажаться, но она не нажимается, то есть она не обнуляется, help me pls

SR_team
23.02.2016, 16:14
Чет какая то херня, юзаю SF->getGame()->emulateGTAKey(11, true) клавиша нажимается 1 раз, для того что бы нажалась еще раз нужно обнулить, SF->getGame()->emulateGTAKey(11, false), в теории если еще раз должна нажаться, но она не нажимается, то есть она не обнуляется, help me pls


клавиши сами обнуляются при смене фрейма

AWRage
23.02.2016, 16:33
Как я понял, эта функция возвращает позицию прицела и его статус (on/off). Обычно такие функции требуют указатель на переменную, но в моем случае компилятор ругается.

C++:






bool
Active
;
float
CrossX
,
CrossY
;
GAME
->
GetPlayerInfo
(
)
->
GetCrossHair
(
&
Active
,
&
CrossX
,
&
CrossY
)
;
SF
->
getSAMP
(
)
->
getChat
(
)
->
AddChatMessage
(
D3DCOLOR_XRGB
(
255
,
255
,
255
)
,
"%i, %f and %f"
,
Active
,
CrossX
,
CrossY
)
;

MISTER_GONWIK
23.02.2016, 16:54
Как я понял, эта функция возвращает позицию прицела и его статус (on/off). Обычно такие функции требуют указатель на переменную, но в моем случае компилятор ругается.

C++:






bool
Active
;
float
CrossX
,
CrossY
;
GAME
->
GetPlayerInfo
(
)
->
GetCrossHair
(
&
Active
,
&
CrossX
,
&
CrossY
)
;
SF
->
getSAMP
(
)
->
getChat
(
)
->
AddChatMessage
(
D3DCOLOR_XRGB
(
255
,
255
,
255
)
,
"%i, %f and %f"
,
Active
,
CrossX
,
CrossY
)
;





убери & везде

AWRage
23.02.2016, 17:13
убери & везде


Убрал. Скомпилил, но не работает.




http://i.imgur.com/lUTgNVL.png

MISTER_GONWIK
23.02.2016, 17:25
Убрал. Скомпилил, но не работает.


lUTgNVL.pngMISTER_GONWIK · 23 Фев 2016 в 16:25' data-fancybox="lb-post-102567" data-lb-caption-extra-html="" data-lb-sidebar-href="" data-single-image="1" data-src="/proxy.php?image=http%3A%2F%2Fi.imgur.com%2FlUTgNVL .png&hash=625589cbfed56f10761a1f56d1741950" style="cursor: pointer;" title="lUTgNVL.png">
http://i.imgur.com/lUTgNVL.png





возможно сам класс не рабочий

либо как-то иначе используется

AWRage
23.02.2016, 17:38
возможно сам класс не рабочий
либо как-то иначе используется


Ясно.

BlackGod
23.02.2016, 18:04
Для чата

AWRage
23.02.2016, 18:11
Ясно.


А не знаешь еще способ проверить, прицеливается ли актер (кроме проверки на нажатие ПКМ).

return
23.02.2016, 21:53
потому что void CALLBACK cmd_synchra(std::string str)

CarLCas
23.02.2016, 22:10
Ребят можно сделать плагин чтобы один игрок стрелял , пули его облетали меня и поподали в другого человека по его ид


Можно, но будет видно только тебе

F_Time
24.02.2016, 18:21
C++:






USHORT playerId
=
pID
;
SF
->
getSAMP
(
)
->
getInfo
(
)
->
pPools
->
pText3D
->
Create3DText
(
100
,
"3D text %d"
,
D3DCOLOR_ARGB
(
0xFF
,
0xFF
,
0xFF
,
00
)
,
fPosition
,
100.0f
,
true
,
playerId
,
-
1
)
;




Как сделать так, чтобы в цикле этот 3D текст обновлялся?

unInstance
24.02.2016, 20:59
Почему такие штуки появляются?

wQ1jN29.pngunInstance · 24 Фев 2016 в 19:59' data-fancybox="lb-post-102721" data-lb-caption-extra-html="" data-lb-sidebar-href="" data-single-image="1" data-src="/proxy.php?image=http%3A%2F%2Fi.imgur.com%2FwQ1jN29 .png&hash=e871d85cbdfb1d6dad58a533d1f36a0a" style="cursor: pointer;" title="wQ1jN29.png">
http://i.imgur.com/wQ1jN29.png

Открывать SFPlugin.sln или main.cpp?

F_Time
24.02.2016, 22:18
C++:






USHORT playerId
=
pID
;
SF
->
getSAMP
(
)
->
getInfo
(
)
->
pPools
->
pText3D
->
Create3DText
(
100
,
"3D text %d"
,
D3DCOLOR_ARGB
(
0xFF
,
0xFF
,
0xFF
,
00
)
,
fPosition
,
100.0f
,
true
,
playerId
,
-
1
)
;




Как сделать так, чтобы в цикле этот 3D текст обновлялся?

itsLegend
24.02.2016, 22:33
В смысле обновлялся? Много чего там можно обновить.

F_Time
24.02.2016, 22:37
Информацию, например "3D Text %d" И вот то, что выводится там должно обновляться

itsLegend
24.02.2016, 23:05
Информацию, например "3D Text %d" И вот то, что выводится там должно обновляться


SF->getSAMP()->getInfo()->pPools->pText3D->textLabel[id].pText

Только одна вещь, изменить просто так нельзя. Нужно создавать новый буфер.

Trou
25.02.2016, 02:56
How Can i Check Range a Simply? now i made this;

Код:





[CODE]
if (x > x1 && xy1 && y



But i Didn't test yet.

Dark_Knight
25.02.2016, 03:15
Код:





[CODE]
x2 = x1 +5
y2 = y1 + 5;
if( x > x1 && x y1 && y

Harch
25.02.2016, 07:16
Неужели никто не знает, как на паузу игру поставить из SF? Может, cleo-кодом хотя бы? Буду его вызывать.

Я нашёл, что есть класс CGame, в нём есть функция Pause, но как получить класс CGame (НЕ SFGame!) я так и не нашёл...

MISTER_GONWIK
25.02.2016, 07:20
Неужели никто не знает, как на паузу игру поставить из SF? Может, cleo-кодом хотя бы? Буду его вызывать.


Ты нормально объясни, что тебе нужно? Какая пауза?

Harch
25.02.2016, 07:23
Аналог клавиши ESC из игры. Когда показывается обычное GTA-меню, вроде "Вернуться в игру, Настройки, Выйти из игры".

Нашёл, что функция Pause есть в классе CGame, но как получить его я не понял. Как получить SFGame - знаю (SF->getGame()), а CGame - нет.

MISTER_GONWIK
25.02.2016, 07:35
Аналог клавиши ESC из игры. Когда показывается обычное GTA-меню, вроде "Вернуться в игру, Настройки, Выйти из игры".

Нашёл, что функция Pause есть в классе CGame, но как получить его я не понял. Как получить SFGame - знаю (SF->getGame()), а CGame - нет.


GAME->

Harch
25.02.2016, 08:41
Спасибо большое, заработало! :)

Harch
25.02.2016, 15:25
Как нормально сделать дисконнект? При вызове SF->getSAMP()->disconnect(100); всё зависает.

При добавлении всяких SF->getSAMP()->getInfo()->RestartGame(); или SF->getSAMP()->getInfo()->iGameState = GAMESTATE_WAIT_CONNECT; всё аналогично.

Dark_Knight
25.02.2016, 16:11
Ты хоть слип не юзаезь?

Harch
25.02.2016, 16:14
Нет, ничего не юзаю такого. Просто хочу обычный дисконнект. Вызываю - всё зависает.

Harch
25.02.2016, 16:40
И ещё вопрос. При уходе на паузу GAME->Pause(true); он на паузу-то уходит, но вот другие игроки видят моего игрока постоянно дёргающимся и без надписи "пауза". Как уйти на паузу адекватно? Чтобы машина продолжала ехать, пока я не выйду с паузы и так далее? Ну, как по esc-клавише.

Harch
25.02.2016, 21:30
Как узнать ник своего персонажа в SAMP? Он где-то содержится? И ID тоже хотелось бы.

CarLCas
25.02.2016, 21:33
Как узнать ник своего персонажа в SAMP? Он где-то содержится? И ID тоже хотелось бы.


SF->getSAMP()->getPlayers()->(тут_переменные_где_есть_local Player)

Вы тему полистали бы для начала что ли, тут ответов на такие вопросы куча

SR_team
25.02.2016, 21:35
Как узнать ник своего персонажа в SAMP? Он где-то содержится? И ID тоже хотелось бы.


SF->getSAMP()->getPlayers()->localPlayerID или что-то похожее на это.

Harch
26.02.2016, 10:54
Спасибо, нашёл! :)

А как всё-таки адекватно сделать дисконнект?

Rorian
27.02.2016, 02:49
Спасибо, нашёл! :)
А как всё-таки адекватно сделать дисконнект?


SF->getSAMP()->disconnect(100)