 |
|

05.08.2020, 15:43
|
|
Участник форума
Регистрация: 14.04.2018
Сообщений: 122
С нами:
4254200
Репутация:
98
|
|
Сообщение от KiN4StAt
Ща посчитал оффсет для R1,вышло 3C5 вместо 3D5. Попробуй(нет возможности на R1 протестить сейчас)
еще можешь попробовать 3C9.
Спасибо, реально беды с оффсетами, просто 3D5 в интернале у меня работал, я думал всё ок
|
|
|

05.08.2020, 17:32
|
|
Познающий
Регистрация: 06.11.2015
Сообщений: 95
С нами:
5535607
Репутация:
58
|
|
Сообщение от #Babon
Можете описать пару способов экспорта и импорта значений переменных?
Вот подобный код на LUA:
Сообщение от Спойлер
Lua:
Код:
local
defaults
=
{
sets
=
{
arg1
=
113
,
arg2
=
1
,
arg3
=
50
,
notification
=
true
}
}
local
ini
=
inicfg
.
load
(
defaults
,
'Kavo.ini'
)
local
sets
=
ini
.
sets
function
arg3
(
arg
)
if
type
(
tonumber
(
arg
)
)
==
'number'
then
sets
.
arg3
=
arg
inicfg
.
save
(
ini
,
'Kavo.ini'
)
printString
(
'~y~ updated'
,
1000
)
addOneOffSound
(
0
,
0
,
0
,
1150
)
else
printString
(
'~r~ error'
,
1000
)
addOneOffSound
(
0
,
0
,
0
,
1055
)
end
end
-- пример использования
if
wasKeyPressed
(
sets
.
arg1
)
then
work
=
not
work
if
work
then
printString
(
'~p~ON'
,
1000
)
else
printString
(
'OFF'
,
1000
)
end
end
Я не настаиваю на текстовике, может есть какие то ещё варианты? Реестр может, или какие-то ещё файлы/директории
Актуально
|
|
|

07.08.2020, 17:52
|
|
Познающий
Регистрация: 03.05.2016
Сообщений: 64
С нами:
5277893
Репутация:
56
|
|
Как включить курсор Windows и заморозить управление? Подобно когда заходишь в меню паузы.
|
|
|

07.08.2020, 18:33
|
|
Флудер
Регистрация: 06.11.2017
Сообщений: 2,759
С нами:
4483143
Репутация:
183
|
|
Сообщение от SKIC
Как включить курсор Windows и заморозить управление? Подобно когда заходишь в меню паузы.
C++:
Код:
// SAMP 0.3.7-R1
#define SAMP_MISC_INFO = 0x21A10C
#define SAMP_FUNC_TOGGLECURSOR = 0x9BD30
#define SAMP_FUNC_CURSORUNLOCKACTORCAM = 0x9BC10
void
ToggleCursor
(
bool
state
)
{
//state - 1 on; 0 off
if
(
iInputEnabled
)
//is Input Active Check
return
;
void
*
obj
=
*
(
void
*
*
)
(
dwSAMPAddr
+
SAMP_MISC_INFO
)
;
(
(
void
(
__thiscall
*
)
(
void
*
,
int
,
bool
)
)
(
dwSAMPAddr
+
SAMP_TOGGLECURSOR
)
)
(
obj
,
state
?
3
:
0
,
!
state
)
;
if
(
!
state
)
(
(
void
(
__thiscall
*
)
(
void
*
)
)
(
dwSAMPAddr
+
SAMP_CURSORUNLOCKACTORCAM
)
)
(
obj
)
;
}
Для блокировки управления в wndProc добавить return
|
|
|

07.08.2020, 18:42
|
|
Познающий
Регистрация: 03.05.2016
Сообщений: 64
С нами:
5277893
Репутация:
56
|
|
Сообщение от KiN4StAt
C++:
Код:
// SAMP 0.3.7-R1
#define SAMP_MISC_INFO = 0x21A10C
#define SAMP_FUNC_TOGGLECURSOR = 0x9BD30
#define SAMP_FUNC_CURSORUNLOCKACTORCAM = 0x9BC10
void
ToggleCursor
(
bool
state
)
{
//state - 1 on; 0 off
if
(
iInputEnabled
)
//is Input Active Check
return
;
void
*
obj
=
*
(
void
*
*
)
(
dwSAMPAddr
+
SAMP_MISC_INFO
)
;
(
(
void
(
__thiscall
*
)
(
void
*
,
int
,
bool
)
)
(
dwSAMPAddr
+
SAMP_TOGGLECURSOR
)
)
(
obj
,
state
?
3
:
0
,
!
state
)
;
if
(
!
state
)
(
(
void
(
__thiscall
*
)
(
void
*
)
)
(
dwSAMPAddr
+
SAMP_CURSORUNLOCKACTORCAM
)
)
(
obj
)
;
}
Для блокировки управления в wndProc добавить return
Это для SAMP а мне для одиночки.
@FYP, можешь пожалуйста дать код своего showCursor из moonloader. ну пожалуйста.
|
|
|

07.08.2020, 22:06
|
|
Флудер
Регистрация: 17.06.2013
Сообщений: 3,635
С нами:
6791977
Репутация:
183
|
|
Сообщение от SKIC
Это для SAMP а мне для одиночки.
@FYP, можешь пожалуйста дать код своего showCursor из moonloader. ну пожалуйста.
Псевдокод функции включения курсора SA-MP'a.:
Код:
int
__thiscall
ToggleCursor
(
stMiscInfo
*
this
,
int
cursorMode
,
int
hideCursor
?
)
{
int
result
;
// eax
stMiscInfo
*
v4
;
// esi
result
=
cursorMode
;
v4
=
this
;
switch
(
cursorMode
)
{
case
2
:
UnProtectMemmory
(
(
void
*
)
0x541DF5
,
5
)
;
MEMORY
[
0x541DF5
]
=
0x90909090
;
MEMORY
[
0x541DF9
]
=
0x90u
;
GTA
::
patch
::
enableCursor
(
)
;
MEMORY
[
0xB73424
]
=
0
;
MEMORY
[
0xB73428
]
=
0
;
MEMORY
[
0x541BD0
]
(
)
;
MEMORY
[
0x541DD0
]
(
)
;
UnProtectMemmory
(
(
void
*
)
0x6194A0
,
1
)
;
MEMORY
[
0x6194A0
]
=
0xC3u
;
result
=
(
(
int
(
__stdcall
*
)
(
IDirect3DDevice9
*
,
signed
int
)
)
pDevice
->
vtbl
->
ShowCursor
)
(
pDevice
,
1
)
;
v4
->
iCursorMode
=
2
;
break
;
case
1
:
if
(
this
->
iCursorMode
!=
1
)
{
UnProtectMemmory
(
(
void
*
)
0x541DF5
,
5
)
;
result
=
0x90909090
;
MEMORY
[
0x541DF5
]
=
0x90909090
;
MEMORY
[
0x541DF9
]
=
0x90u
;
v4
->
iCursorMode
=
1
;
}
break
;
case
3
:
if
(
this
->
iCursorMode
!=
3
)
{
GTA
::
patch
::
enableCursor
(
)
;
MEMORY
[
0xB73424
]
=
0
;
MEMORY
[
0xB73428
]
=
0
;
MEMORY
[
0x541BD0
]
(
)
;
MEMORY
[
0x541DD0
]
(
)
;
UnProtectMemmory
(
(
void
*
)
0x6194A0
,
1
)
;
MEMORY
[
0x6194A0
]
=
0xC3u
;
result
=
(
(
int
(
__stdcall
*
)
(
IDirect3DDevice9
*
,
signed
int
)
)
pDevice
->
vtbl
->
ShowCursor
)
(
pDevice
,
1
)
;
v4
->
iCursorMode
=
3
;
}
break
;
case
4
:
if
(
this
->
iCursorMode
!=
4
)
{
sub_1009BB20
(
)
;
MEMORY
[
0xB73424
]
=
0
;
MEMORY
[
0xB73428
]
=
0
;
MEMORY
[
0x541BD0
]
(
)
;
MEMORY
[
0x541DD0
]
(
)
;
result
=
UnProtectMemmory
(
(
void
*
)
0x6194A0
,
1
)
;
MEMORY
[
0x6194A0
]
=
0xC3u
;
v4
->
iCursorMode
=
4
;
}
break
;
default
:
if
(
!
cursorMode
&&
this
->
iCursorMode
)
{
this
->
field_59
=
hideCursor
?
!=
0
?
0
:
0xA
;
result
=
(
(
int
(
__stdcall
*
)
(
IDirect3DDevice9
*
,
_DWORD
)
)
pDevice
->
vtbl
->
ShowCursor
)
(
pDevice
,
0
)
;
v4
->
iCursorMode
=
0
;
}
break
;
}
return
result
;
}
|
|
|

08.08.2020, 02:08
|
|
Новичок
Регистрация: 08.08.2020
Сообщений: 1
С нами:
3035061
Репутация:
1
|
|
1) Не могли бы подсказать в чем ошибка? (Суть скрипта, чтобы при виде пикапа(иконки зеленого домика"1273" нажимал alt+enter)
В каком формате закидывать в корень? .lua?
Код:
void CalcScreenCoors(D3DXVECTOR3* vecWorld, D3DXVECTOR3* vecScreen)
{
D3DXMATRIX m((float*)(0xB6FA2C));
DWORD* dwLenX = (DWORD*)(0xC17044);
DWORD* dwLenY = (DWORD*)(0xC17048);
vecScreen->x = (vecWorld->z * m._31) + (vecWorld->y * m._21) + (vecWorld->x * m._11) + m._41;
vecScreen->y = (vecWorld->z * m._32) + (vecWorld->y * m._22) + (vecWorld->x * m._12) + m._42;
vecScreen->z = (vecWorld->z * m._33) + (vecWorld->y * m._23) + (vecWorld->x * m._13) + m._43;
double fRecip = (double)1.0 / vecScreen->z;
vecScreen->x *= (float)(fRecip * (*dwLenX));
vecScreen->y *= (float)(fRecip * (*dwLenY));
}
bool IsPickOnScreen(int p)
{
D3DXVECTOR3 vecPos;
vecPos.x = SF->getSAMP()->getInfo()->pPools->pPickup->pickup[p].fPosition[0];
vecPos.y = SF->getSAMP()->getInfo()->pPools->pPickup->pickup[p].fPosition[1];
vecPos.z = SF->getSAMP()->getInfo()->pPools->pPickup->pickup[p].fPosition[2];
D3DXVECTOR3 screenPos;
CalcScreenCoors(&vecPos, &screenPos);
if (screenPos.z
|
|
|

08.08.2020, 17:19
|
|
Флудер
Регистрация: 05.02.2015
Сообщений: 2,141
С нами:
5929676
Репутация:
183
|
|
[QUOTE="sqdxi"]
1) Не могли бы подсказать в чем ошибка? (Суть скрипта, чтобы при виде пикапа(иконки зеленого домика"1273" нажимал alt+enter)
В каком формате закидывать в корень? .lua?
Код:
void CalcScreenCoors(D3DXVECTOR3* vecWorld, D3DXVECTOR3* vecScreen)
{
D3DXMATRIX m((float*)(0xB6FA2C));
DWORD* dwLenX = (DWORD*)(0xC17044);
DWORD* dwLenY = (DWORD*)(0xC17048);
vecScreen->x = (vecWorld->z * m._31) + (vecWorld->y * m._21) + (vecWorld->x * m._11) + m._41;
vecScreen->y = (vecWorld->z * m._32) + (vecWorld->y * m._22) + (vecWorld->x * m._12) + m._42;
vecScreen->z = (vecWorld->z * m._33) + (vecWorld->y * m._23) + (vecWorld->x * m._13) + m._43;
double fRecip = (double)1.0 / vecScreen->z;
vecScreen->x *= (float)(fRecip * (*dwLenX));
vecScreen->y *= (float)(fRecip * (*dwLenY));
}
bool IsPickOnScreen(int p)
{
D3DXVECTOR3 vecPos;
vecPos.x = SF->getSAMP()->getInfo()->pPools->pPickup->pickup[p].fPosition[0];
vecPos.y = SF->getSAMP()->getInfo()->pPools->pPickup->pickup[p].fPosition[1];
vecPos.z = SF->getSAMP()->getInfo()->pPools->pPickup->pickup[p].fPosition[2];
D3DXVECTOR3 screenPos;
CalcScreenCoors(&vecPos, &screenPos);
if (screenPos.z
|
|
|

09.08.2020, 00:21
|
|
Познающий
Регистрация: 06.11.2015
Сообщений: 95
С нами:
5535607
Репутация:
58
|
|
В попытках работы с .ini пробую такой код:
Сообщение от Спойлер
C++:
Код:
void
CALLBACK
testik
(
std
::
string param
)
{
SF
->
getSAMP
(
)
->
getChat
(
)
->
AddChatMessage
(
D3DCOLOR_XRGB
(
0
,
0xAA
,
0
)
,
"Start"
)
;
std
::
fstream
sets
(
"settings.ini"
,
std
::
ios
::
out
)
;
SF
->
getSAMP
(
)
->
getChat
(
)
->
AddChatMessage
(
-
1
,
"Файл открыт"
)
;
sets
getSAMP
(
)
->
getChat
(
)
->
AddChatMessage
(
-
1
,
"Записан аргумент"
)
;
sets
.
close
(
)
;
SF
->
getSAMP
(
)
->
getChat
(
)
->
AddChatMessage
(
-
1
,
"Файл закрыт"
)
;
SF
->
getSAMP
(
)
->
getChat
(
)
->
AddChatMessage
(
D3DCOLOR_XRGB
(
0
,
0xAA
,
0
)
,
"End"
)
;
}
Сообщение от Спойлер
C++:
Код:
SF
->
getSAMP
(
)
->
registerChatCommand
(
"test"
,
testik
)
;
Но ничего не работает, краша нет, всё выводиться что должно в сампе, но файл не заполняется.
Хочу услышать любые советы и предположения, сразу говорю что в Cpp я не так давно, и многие локальные фразы могу не понять
|
|
|

09.08.2020, 00:23
|
|
Постоянный
Регистрация: 24.07.2017
Сообщений: 867
С нами:
4633764
Репутация:
148
|
|
лови
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|